X86InstrInfo.h revision 33f53b554acfff0b15f08d551fce5b0701b443c0
1//===- X86InstructionInfo.h - X86 Instruction Information ---------*-C++-*-===// 2// 3// This file contains the X86 implementation of the MachineInstrInfo class. 4// 5//===----------------------------------------------------------------------===// 6 7#ifndef X86INSTRUCTIONINFO_H 8#define X86INSTRUCTIONINFO_H 9 10#include "llvm/Target/MachineInstrInfo.h" 11#include "X86RegisterInfo.h" 12 13class X86InstructionInfo : public MachineInstrInfo { 14 const X86RegisterInfo RI; 15public: 16 X86InstructionInfo(); 17 18 /// getRegisterInfo - MachineInstrInfo is a superset of MRegister info. As 19 /// such, whenever a client has an instance of instruction info, it should 20 /// always be able to get register info as well (through this method). 21 /// 22 virtual const MRegisterInfo &getRegisterInfo() const { return RI; } 23 24 /// print - Print out an x86 instruction in GAS syntax 25 /// 26 virtual void print(const MachineInstr *MI, std::ostream &O) const; 27 28 29 //===--------------------------------------------------------------------===// 30 // 31 // These are stubs for pure virtual methods that should be factored out of 32 // MachineInstrInfo. We never call them, we don't want them, but we need 33 // stubs so that we can instatiate our class. 34 // 35 MachineOpCode getNOPOpCode() const { abort(); } 36 void CreateCodeToLoadConst(const TargetMachine& target, Function* F, 37 Value *V, Instruction *I, 38 std::vector<MachineInstr*>& mvec, 39 MachineCodeForInstruction& mcfi) const { abort(); } 40 void CreateCodeToCopyIntToFloat(const TargetMachine& target, 41 Function* F, Value* val, Instruction* dest, 42 std::vector<MachineInstr*>& mvec, 43 MachineCodeForInstruction& mcfi) const { 44 abort(); 45 } 46 void CreateCodeToCopyFloatToInt(const TargetMachine& target, Function* F, 47 Value* val, Instruction* dest, 48 std::vector<MachineInstr*>& mvec, 49 MachineCodeForInstruction& mcfi)const { 50 abort(); 51 } 52 void CreateCopyInstructionsByType(const TargetMachine& target, 53 Function* F, Value* src, 54 Instruction* dest, 55 std::vector<MachineInstr*>& mvec, 56 MachineCodeForInstruction& mcfi)const { 57 abort(); 58 } 59 60 void CreateSignExtensionInstructions(const TargetMachine& target, 61 Function* F, Value* srcVal, 62 Value* destVal, unsigned numLowBits, 63 std::vector<MachineInstr*>& mvec, 64 MachineCodeForInstruction& mcfi) const { 65 abort(); 66 } 67 68 void CreateZeroExtensionInstructions(const TargetMachine& target, 69 Function* F, Value* srcVal, 70 Value* destVal, unsigned srcSizeInBits, 71 std::vector<MachineInstr*>& mvec, 72 MachineCodeForInstruction& mcfi) const { 73 abort(); 74 } 75}; 76 77 78#endif 79