LLVM API Documentation
00001 //===- ARMInstrInfo.h - ARM Instruction Information --------------*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file was developed by the "Instituto Nokia de Tecnologia" and 00006 // is distributed under the University of Illinois Open Source 00007 // License. See LICENSE.TXT for details. 00008 // 00009 //===----------------------------------------------------------------------===// 00010 // 00011 // This file contains the ARM implementation of the TargetInstrInfo class. 00012 // 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef ARMINSTRUCTIONINFO_H 00016 #define ARMINSTRUCTIONINFO_H 00017 00018 #include "llvm/Target/TargetInstrInfo.h" 00019 #include "ARMRegisterInfo.h" 00020 00021 namespace llvm { 00022 00023 class ARMInstrInfo : public TargetInstrInfo { 00024 const ARMRegisterInfo RI; 00025 public: 00026 ARMInstrInfo(); 00027 00028 /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As 00029 /// such, whenever a client has an instance of instruction info, it should 00030 /// always be able to get register info as well (through this method). 00031 /// 00032 virtual const MRegisterInfo &getRegisterInfo() const { return RI; } 00033 00034 /// Return true if the instruction is a register to register move and 00035 /// leave the source and dest operands in the passed parameters. 00036 /// 00037 virtual bool isMoveInstr(const MachineInstr &MI, 00038 unsigned &SrcReg, unsigned &DstReg) const; 00039 }; 00040 00041 } 00042 00043 #endif