MSP430InstrInfo.h revision f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8
1f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===- MSP430InstrInfo.h - MSP430 Instruction Information -------*- C++ -*-===// 2f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 3f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// The LLVM Compiler Infrastructure 4f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 5f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// This file is distributed under the University of Illinois Open Source 6f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// License. See LICENSE.TXT for details. 7f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 8f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===// 9f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 10f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// This file contains the MSP430 implementation of the TargetInstrInfo class. 11f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 12f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===// 13f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 14f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#ifndef LLVM_TARGET_MSP430INSTRINFO_H 15f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#define LLVM_TARGET_MSP430INSTRINFO_H 16f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 17f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "llvm/Target/TargetInstrInfo.h" 18f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "MSP430RegisterInfo.h" 19f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 20f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovnamespace llvm { 21f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 22f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovclass MSP430TargetMachine; 23f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 24f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovclass MSP430InstrInfo : public TargetInstrInfoImpl { 25f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov const MSP430RegisterInfo RI; 26f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov MSP430TargetMachine &TM; 27f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovpublic: 28f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov explicit MSP430InstrInfo(MSP430TargetMachine &TM); 29f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 30f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As 31f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov /// such, whenever a client has an instance of instruction info, it should 32f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov /// always be able to get register info as well (through this method). 33f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov /// 34f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov virtual const TargetRegisterInfo &getRegisterInfo() const { return RI; } 35f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}; 36f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 37f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov} 38f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 39f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#endif 40