Changeset View
Changeset View
Standalone View
Standalone View
contrib/llvm/lib/Target/X86/X86TargetMachine.cpp
Show First 20 Lines • Show All 299 Lines • ▼ Show 20 Lines | #ifdef LLVM_BUILD_GLOBAL_ISEL | ||||
bool addRegBankSelect() override; | bool addRegBankSelect() override; | ||||
bool addGlobalInstructionSelect() override; | bool addGlobalInstructionSelect() override; | ||||
#endif | #endif | ||||
bool addILPOpts() override; | bool addILPOpts() override; | ||||
bool addPreISel() override; | bool addPreISel() override; | ||||
void addPreRegAlloc() override; | void addPreRegAlloc() override; | ||||
void addPostRegAlloc() override; | void addPostRegAlloc() override; | ||||
void addPreEmitPass() override; | void addPreEmitPass() override; | ||||
void addPreEmitPass2() override; | |||||
void addPreSched2() override; | void addPreSched2() override; | ||||
}; | }; | ||||
class X86ExecutionDepsFix : public ExecutionDepsFix { | class X86ExecutionDepsFix : public ExecutionDepsFix { | ||||
public: | public: | ||||
static char ID; | static char ID; | ||||
X86ExecutionDepsFix() : ExecutionDepsFix(ID, X86::VR128XRegClass) {} | X86ExecutionDepsFix() : ExecutionDepsFix(ID, X86::VR128XRegClass) {} | ||||
StringRef getPassName() const override { | StringRef getPassName() const override { | ||||
Show All 13 Lines | |||||
void X86PassConfig::addIRPasses() { | void X86PassConfig::addIRPasses() { | ||||
addPass(createAtomicExpandPass()); | addPass(createAtomicExpandPass()); | ||||
TargetPassConfig::addIRPasses(); | TargetPassConfig::addIRPasses(); | ||||
if (TM->getOptLevel() != CodeGenOpt::None) | if (TM->getOptLevel() != CodeGenOpt::None) | ||||
addPass(createInterleavedAccessPass()); | addPass(createInterleavedAccessPass()); | ||||
// Add passes that handle indirect branch removal and insertion of a retpoline | |||||
// thunk. These will be a no-op unless a function subtarget has the retpoline | |||||
// feature enabled. | |||||
addPass(createIndirectBrExpandPass()); | |||||
} | } | ||||
bool X86PassConfig::addInstSelector() { | bool X86PassConfig::addInstSelector() { | ||||
// Install an instruction selector. | // Install an instruction selector. | ||||
addPass(createX86ISelDag(getX86TargetMachine(), getOptLevel())); | addPass(createX86ISelDag(getX86TargetMachine(), getOptLevel())); | ||||
// For ELF, cleanup any local-dynamic TLS accesses. | // For ELF, cleanup any local-dynamic TLS accesses. | ||||
if (TM->getTargetTriple().isOSBinFormatELF() && | if (TM->getTargetTriple().isOSBinFormatELF() && | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | if (UseVZeroUpper) | ||||
addPass(createX86IssueVZeroUpperPass()); | addPass(createX86IssueVZeroUpperPass()); | ||||
if (getOptLevel() != CodeGenOpt::None) { | if (getOptLevel() != CodeGenOpt::None) { | ||||
addPass(createX86FixupBWInsts()); | addPass(createX86FixupBWInsts()); | ||||
addPass(createX86PadShortFunctions()); | addPass(createX86PadShortFunctions()); | ||||
addPass(createX86FixupLEAs()); | addPass(createX86FixupLEAs()); | ||||
addPass(createX86EvexToVexInsts()); | addPass(createX86EvexToVexInsts()); | ||||
} | } | ||||
} | |||||
void X86PassConfig::addPreEmitPass2() { | |||||
addPass(createX86RetpolineThunksPass()); | |||||
} | } |