31 void X86_32TargetMachine::anchor() { }
39 DL(getSubtargetImpl()->isTargetDarwin() ?
40 "e-p:32:32-f64:32:64-i64:32:64-f80:128:128-f128:128:128-"
42 (getSubtargetImpl()->isTargetCygMing() ||
43 getSubtargetImpl()->isTargetWindows()) ?
44 "e-p:32:32-f64:64:64-i64:64:64-f80:32:32-f128:128:128-"
46 "e-p:32:32-f64:32:64-i64:32:64-f80:32:32-f128:128:128-"
55 void X86_64TargetMachine::anchor() { }
64 DL(getSubtargetImpl()->isTarget64BitILP32() ?
65 "e-p:32:32-s:64-f64:64:64-i64:64:64-f80:128:128-f128:128:128-"
67 "e-p:64:64-s:64-f64:64:64-i64:64:64-f80:128:128-f128:128:128-"
85 Subtarget(TT, CPU, FS, Options.StackAlignmentOverride, is64Bit),
86 FrameLowering(*this, Subtarget),
87 InstrItins(Subtarget.getInstrItineraryData()){
92 }
else if (Subtarget.
is64Bit()) {
118 cl::desc(
"Minimize AVX to SSE transition penalty"),
125 cl::desc(
"Enable early if-conversion on X86"));
152 return getTM<X86TargetMachine>();
156 return *getX86TargetMachine().getSubtargetImpl();
159 virtual bool addInstSelector();
160 virtual bool addILPOpts();
161 virtual bool addPreRegAlloc();
162 virtual bool addPostRegAlloc();
163 virtual bool addPreEmitPass();
168 return new X86PassConfig(
this, PM);
171 bool X86PassConfig::addInstSelector() {
180 if (!getX86Subtarget().is64Bit())
186 bool X86PassConfig::addILPOpts() {
194 bool X86PassConfig::addPreRegAlloc() {
198 bool X86PassConfig::addPostRegAlloc() {
203 bool X86PassConfig::addPreEmitPass() {
204 bool ShouldPrint =
false;
216 getX86Subtarget().padShortFunctions()) {
221 getX86Subtarget().LEAusesAG()){
void LLVMInitializeX86Target()
FunctionPass * createX86JITCodeEmitterPass(X86TargetMachine &TM, JITCodeEmitter &JCE)
Reloc::Model getRelocationModel() const
X86_64TargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
virtual TargetPassConfig * createPassConfig(PassManagerBase &PM)
ImmutablePass * createBasicTargetTransformInfoPass(const TargetMachine *TM)
Create a basic TargetTransformInfo analysis pass.
void setPICStyle(PICStyles::Style Style)
char & EarlyIfConverterID
virtual bool addCodeEmitter(PassManagerBase &PM, JITCodeEmitter &JCE)
FunctionPass * createX86IssueVZeroUpperPass()
bool isTargetDarwin() const
FunctionPass * createX86PadShortFunctions()
FunctionPass * createGlobalBaseRegPass()
virtual void addAnalysisPasses(PassManagerBase &PM)
Register X86 analysis passes with a pass manager.
bool is64Bit() const
Is this x86_64? (disregarding specific ABI / programming model)
FunctionPass * createX86FixupLEAs()
X86TargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL, bool is64Bit)
initializer< Ty > init(const Ty &Val)
bool isTargetCOFF() const
FunctionPass * createExecutionDependencyFixPass(const TargetRegisterClass *RC)
static cl::opt< bool > X86EarlyIfConv("x86-early-ifcvt", cl::Hidden, cl::desc("Enable early if-conversion on X86"))
FunctionPass * createX86FloatingPointStackifierPass()
static cl::opt< bool > UseVZeroUpper("x86-use-vzeroupper", cl::Hidden, cl::desc("Minimize AVX to SSE transition penalty"), cl::init(true))
FunctionPass * createX86ISelDag(X86TargetMachine &TM, CodeGenOpt::Level OptLevel)
ImmutablePass * createX86TargetTransformInfoPass(const X86TargetMachine *TM)
Creates an X86-specific Target Transformation Info pass.
X86_32TargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml","ocaml 3.10-compatible collector")
FunctionPass * createCleanupLocalDynamicTLSPass()
static RegisterPass< NVPTXAllocaHoisting > X("alloca-hoisting","Hoisting alloca instructions in non-entry ""blocks to the entry block")
FloatABI::ABIType FloatABIType