X86InstrInfo.h revision 9d17740295838f94120646ef619b2e187f2d71bd
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 13/// X86II - This namespace holds all of the target specific flags that 14/// instruction info tracks. 15/// 16namespace X86II { 17 enum { 18 Void = 1 << 0, // Set if this instruction produces no value 19 }; 20} 21 22class X86InstrInfo : public MachineInstrInfo { 23 const X86RegisterInfo RI; 24public: 25 X86InstrInfo(); 26 27 /// getRegisterInfo - MachineInstrInfo 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 /// print - Print out an x86 instruction in GAS syntax 34 /// 35 virtual void print(const MachineInstr *MI, std::ostream &O) const; 36 37 38 //===--------------------------------------------------------------------===// 39 // 40 // These are stubs for pure virtual methods that should be factored out of 41 // MachineInstrInfo. We never call them, we don't want them, but we need 42 // stubs so that we can instatiate our class. 43 // 44 MachineOpCode getNOPOpCode() const { abort(); } 45 void CreateCodeToLoadConst(const TargetMachine& target, Function* F, 46 Value *V, Instruction *I, 47 std::vector<MachineInstr*>& mvec, 48 MachineCodeForInstruction& mcfi) const { abort(); } 49 void CreateCodeToCopyIntToFloat(const TargetMachine& target, 50 Function* F, Value* val, Instruction* dest, 51 std::vector<MachineInstr*>& mvec, 52 MachineCodeForInstruction& mcfi) const { 53 abort(); 54 } 55 void CreateCodeToCopyFloatToInt(const TargetMachine& target, Function* F, 56 Value* val, Instruction* dest, 57 std::vector<MachineInstr*>& mvec, 58 MachineCodeForInstruction& mcfi)const { 59 abort(); 60 } 61 void CreateCopyInstructionsByType(const TargetMachine& target, 62 Function* F, Value* src, 63 Instruction* dest, 64 std::vector<MachineInstr*>& mvec, 65 MachineCodeForInstruction& mcfi)const { 66 abort(); 67 } 68 69 void CreateSignExtensionInstructions(const TargetMachine& target, 70 Function* F, Value* srcVal, 71 Value* destVal, unsigned numLowBits, 72 std::vector<MachineInstr*>& mvec, 73 MachineCodeForInstruction& mcfi) const { 74 abort(); 75 } 76 77 void CreateZeroExtensionInstructions(const TargetMachine& target, 78 Function* F, Value* srcVal, 79 Value* destVal, unsigned srcSizeInBits, 80 std::vector<MachineInstr*>& mvec, 81 MachineCodeForInstruction& mcfi) const { 82 abort(); 83 } 84}; 85 86 87#endif 88