1*9880d681SAndroid Build Coastguard Worker //===-- MSP430Subtarget.h - Define Subtarget for the MSP430 ----*- C++ -*--===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker // 10*9880d681SAndroid Build Coastguard Worker // This file declares the MSP430 specific subclass of TargetSubtargetInfo. 11*9880d681SAndroid Build Coastguard Worker // 12*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_MSP430_MSP430SUBTARGET_H 15*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_MSP430_MSP430SUBTARGET_H 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker #include "MSP430FrameLowering.h" 18*9880d681SAndroid Build Coastguard Worker #include "MSP430ISelLowering.h" 19*9880d681SAndroid Build Coastguard Worker #include "MSP430InstrInfo.h" 20*9880d681SAndroid Build Coastguard Worker #include "MSP430RegisterInfo.h" 21*9880d681SAndroid Build Coastguard Worker #include "llvm/CodeGen/SelectionDAGTargetInfo.h" 22*9880d681SAndroid Build Coastguard Worker #include "llvm/IR/DataLayout.h" 23*9880d681SAndroid Build Coastguard Worker #include "llvm/Target/TargetSubtargetInfo.h" 24*9880d681SAndroid Build Coastguard Worker #include <string> 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker #define GET_SUBTARGETINFO_HEADER 27*9880d681SAndroid Build Coastguard Worker #include "MSP430GenSubtargetInfo.inc" 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker namespace llvm { 30*9880d681SAndroid Build Coastguard Worker class StringRef; 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker class MSP430Subtarget : public MSP430GenSubtargetInfo { 33*9880d681SAndroid Build Coastguard Worker virtual void anchor(); 34*9880d681SAndroid Build Coastguard Worker bool ExtendedInsts; 35*9880d681SAndroid Build Coastguard Worker MSP430FrameLowering FrameLowering; 36*9880d681SAndroid Build Coastguard Worker MSP430InstrInfo InstrInfo; 37*9880d681SAndroid Build Coastguard Worker MSP430TargetLowering TLInfo; 38*9880d681SAndroid Build Coastguard Worker SelectionDAGTargetInfo TSInfo; 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker public: 41*9880d681SAndroid Build Coastguard Worker /// This constructor initializes the data members to match that 42*9880d681SAndroid Build Coastguard Worker /// of the specified triple. 43*9880d681SAndroid Build Coastguard Worker /// 44*9880d681SAndroid Build Coastguard Worker MSP430Subtarget(const Triple &TT, const std::string &CPU, 45*9880d681SAndroid Build Coastguard Worker const std::string &FS, const TargetMachine &TM); 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker MSP430Subtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS); 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker /// ParseSubtargetFeatures - Parses features string setting specified 50*9880d681SAndroid Build Coastguard Worker /// subtarget options. Definition of function is auto generated by tblgen. 51*9880d681SAndroid Build Coastguard Worker void ParseSubtargetFeatures(StringRef CPU, StringRef FS); 52*9880d681SAndroid Build Coastguard Worker getFrameLowering()53*9880d681SAndroid Build Coastguard Worker const TargetFrameLowering *getFrameLowering() const override { 54*9880d681SAndroid Build Coastguard Worker return &FrameLowering; 55*9880d681SAndroid Build Coastguard Worker } getInstrInfo()56*9880d681SAndroid Build Coastguard Worker const MSP430InstrInfo *getInstrInfo() const override { return &InstrInfo; } getRegisterInfo()57*9880d681SAndroid Build Coastguard Worker const TargetRegisterInfo *getRegisterInfo() const override { 58*9880d681SAndroid Build Coastguard Worker return &InstrInfo.getRegisterInfo(); 59*9880d681SAndroid Build Coastguard Worker } getTargetLowering()60*9880d681SAndroid Build Coastguard Worker const MSP430TargetLowering *getTargetLowering() const override { 61*9880d681SAndroid Build Coastguard Worker return &TLInfo; 62*9880d681SAndroid Build Coastguard Worker } getSelectionDAGInfo()63*9880d681SAndroid Build Coastguard Worker const SelectionDAGTargetInfo *getSelectionDAGInfo() const override { 64*9880d681SAndroid Build Coastguard Worker return &TSInfo; 65*9880d681SAndroid Build Coastguard Worker } 66*9880d681SAndroid Build Coastguard Worker }; 67*9880d681SAndroid Build Coastguard Worker } // End llvm namespace 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker #endif // LLVM_TARGET_MSP430_SUBTARGET_H 70