62 Subtarget(TT, CPU, FS, isLittle, RM, this),
64 (Subtarget.isABI_N64() ?
65 "e-p:64:64:64-i8:8:32-i16:16:32-i64:64:64-f128:128:128-"
67 "e-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-n32-S64") :
68 (Subtarget.isABI_N64() ?
69 "E-p:64:64:64-i8:8:32-i16:16:32-i64:64:64-f128:128:128-"
71 "E-p:32:32:32-i8:8:32-i16:16:32-i64:64:64-n32-S64")),
75 InstrItins(Subtarget.getInstrItineraryData()), JITInfo() {
81 InstrInfoSE.swap(InstrInfo);
82 FrameLoweringSE.swap(FrameLowering);
83 TLInfoSE.swap(TLInfo);
89 InstrInfo16.swap(InstrInfo);
90 FrameLowering16.swap(FrameLowering);
91 TLInfo16.swap(TLInfo);
93 assert(TLInfo &&
"null target lowering 16");
94 assert(InstrInfo &&
"null instr info 16");
95 assert(FrameLowering &&
"null frame lowering 16");
99 InstrInfo16.swap(InstrInfo);
100 FrameLowering16.swap(FrameLowering);
101 TLInfo16.swap(TLInfo);
107 InstrInfoSE.swap(InstrInfo);
108 FrameLoweringSE.swap(FrameLowering);
109 TLInfoSE.swap(TLInfo);
111 assert(TLInfo &&
"null target lowering in SE");
112 assert(InstrInfo &&
"null instr info SE");
113 assert(FrameLowering &&
"null frame lowering SE");
115 void MipsebTargetMachine::anchor() { }
124 void MipselTargetMachine::anchor() { }
143 EnableTailMerge = !getMipsSubtarget().enableLongBranchPass();
147 return getTM<MipsTargetMachine>();
151 return *getMipsTargetMachine().getSubtargetImpl();
154 virtual void addIRPasses();
155 virtual bool addInstSelector();
156 virtual bool addPreEmitPass();
161 return new MipsPassConfig(
this, PM);
164 void MipsPassConfig::addIRPasses() {
166 if (getMipsSubtarget().os16())
168 if (getMipsSubtarget().inMips16HardFloat())
174 bool MipsPassConfig::addInstSelector() {
175 if (getMipsSubtarget().allowMixed16_32()) {
195 DEBUG(
errs() <<
"Target Transform Info Pass Added\n");
201 bool MipsPassConfig::addPreEmitPass() {
virtual void addIRPasses()
static const MipsInstrInfo * create(MipsTargetMachine &TM)
FunctionPass * createMipsISelDag(MipsTargetMachine &TM)
FunctionPass * createMipsSEISelDag(MipsTargetMachine &TM)
ModulePass * createMips16HardFloat(MipsTargetMachine &TM)
virtual void addAnalysisPasses(PassManagerBase &PM)
Register analysis passes for this target with a pass manager.
virtual bool addCodeEmitter(PassManagerBase &PM, JITCodeEmitter &JCE)
MipsTargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL, bool isLittle)
void setHelperClassesMips16()
FunctionPass * createMipsLongBranchPass(MipsTargetMachine &TM)
bool inMips16Mode() const
FunctionPass * createMipsJITCodeEmitterPass(MipsTargetMachine &TM, JITCodeEmitter &JCE)
FunctionPass * createMipsModuleISelDag(MipsTargetMachine &TM)
void setHelperClassesMipsSE()
ModulePass * createMipsOs16(MipsTargetMachine &TM)
const STC & getSubtarget() const
virtual void addAnalysisPasses(PassManagerBase &PM)
Register analysis passes for this target with a pass manager.
FunctionPass * createMipsDelaySlotFillerPass(MipsTargetMachine &TM)
FunctionPass * createMipsConstantIslandPass(MipsTargetMachine &tm)
virtual TargetPassConfig * createPassConfig(PassManagerBase &PM)
FunctionPass * createPartiallyInlineLibCallsPass()
bool allowMixed16_32() const
static const MipsTargetLowering * create(MipsTargetMachine &TM)
MipselTargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
bool enableLongBranchPass() const
static const MipsFrameLowering * create(MipsTargetMachine &TM, const MipsSubtarget &ST)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml","ocaml 3.10-compatible collector")
FunctionPass * createMips16ISelDag(MipsTargetMachine &TM)
static RegisterPass< NVPTXAllocaHoisting > X("alloca-hoisting","Hoisting alloca instructions in non-entry ""blocks to the entry block")
void LLVMInitializeMipsTarget()
MipsebTargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
ImmutablePass * createNoTargetTransformInfoPass()
Create the base case instance of a pass in the TTI analysis group.