LLVM API Documentation
00001 //===- IA64InstrInfo.h - IA64 Instruction Information ----------*- C++ -*- ===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file was developed by Duraid Madina and is distributed under the 00006 // University of Illinois Open Source License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file contains the IA64 implementation of the TargetInstrInfo class. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef IA64INSTRUCTIONINFO_H 00015 #define IA64INSTRUCTIONINFO_H 00016 00017 #include "llvm/Target/TargetInstrInfo.h" 00018 #include "IA64RegisterInfo.h" 00019 00020 namespace llvm { 00021 00022 /// IA64II - This namespace holds all of the target specific flags that 00023 /// instruction info tracks. 00024 /// FIXME: now gone! 00025 00026 class IA64InstrInfo : public TargetInstrInfo { 00027 const IA64RegisterInfo RI; 00028 public: 00029 IA64InstrInfo(); 00030 00031 /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As 00032 /// such, whenever a client has an instance of instruction info, it should 00033 /// always be able to get register info as well (through this method). 00034 /// 00035 virtual const MRegisterInfo &getRegisterInfo() const { return RI; } 00036 00037 // 00038 // Return true if the instruction is a register to register move and 00039 // leave the source and dest operands in the passed parameters. 00040 // 00041 virtual bool isMoveInstr(const MachineInstr& MI, 00042 unsigned& sourceReg, 00043 unsigned& destReg) const; 00044 00045 }; 00046 00047 } // End llvm namespace 00048 00049 #endif 00050