blob: b76ab035abb16e5700ecf9390b2c9cec14fcfe7b [file] [log] [blame]
Brian Gaekee785e532004-02-25 19:28:19 +00001//===- SparcV8InstrInfo.h - SparcV8 Instruction Information -----*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file was developed by the LLVM research group and is distributed under
6// the University of Illinois Open Source License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file contains the SparcV8 implementation of the TargetInstrInfo class.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef SPARCV8INSTRUCTIONINFO_H
15#define SPARCV8INSTRUCTIONINFO_H
16
17#include "llvm/Target/TargetInstrInfo.h"
18#include "SparcV8RegisterInfo.h"
19
20namespace llvm {
21
22class SparcV8InstrInfo : public TargetInstrInfo {
23 const SparcV8RegisterInfo RI;
24public:
25 SparcV8InstrInfo();
26
27 /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As
28 /// such, whenever a client has an instance of instruction info, it should
29 /// always be able to get register info as well (through this method).
30 ///
31 virtual const MRegisterInfo &getRegisterInfo() const { return RI; }
32
33 /// createNOPinstr - returns the target's implementation of NOP, which is
34 /// usually a pseudo-instruction, implemented by a degenerate version of
35 /// another instruction.
36 ///
37 MachineInstr* createNOPinstr() const;
38
39 /// isNOPinstr - not having a special NOP opcode, we need to know if a given
40 /// instruction is interpreted as an `official' NOP instr, i.e., there may be
41 /// more than one way to `do nothing' but only one canonical way to slack off.
42 ///
43 bool isNOPinstr(const MachineInstr &MI) const;
44};
45
46}
47
48#endif