diff options
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp index b362285d4f16..803b9b81045c 100644 --- a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp +++ b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp @@ -59,6 +59,10 @@ static cl::opt<bool> DisableHCP("disable-hcp", cl::Hidden, cl::desc("Disable Hexagon constant propagation")); +static cl::opt<bool> DisableHexagonMask( + "disable-mask", cl::Hidden, + cl::desc("Disable Hexagon specific Mask generation pass")); + static cl::opt<bool> DisableStoreWidening("disable-store-widen", cl::Hidden, cl::init(false), cl::desc("Disable store widening")); @@ -180,6 +184,8 @@ void initializeHexagonGenMuxPass(PassRegistry &); void initializeHexagonHardwareLoopsPass(PassRegistry &); void initializeHexagonLoopIdiomRecognizeLegacyPassPass(PassRegistry &); void initializeHexagonLoopAlignPass(PassRegistry &); +void initializeHexagonMaskPass(PassRegistry &); +void initializeHexagonMergeActivateWeightPass(PassRegistry &); void initializeHexagonNewValueJumpPass(PassRegistry &); void initializeHexagonOptAddrModePass(PassRegistry &); void initializeHexagonPacketizerPass(PassRegistry &); @@ -213,6 +219,8 @@ FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM, CodeGenOptLevel OptLevel); FunctionPass *createHexagonLoopAlign(); FunctionPass *createHexagonLoopRescheduling(); +FunctionPass *createHexagonMask(); +FunctionPass *createHexagonMergeActivateWeight(); FunctionPass *createHexagonNewValueJump(); FunctionPass *createHexagonOptAddrMode(); FunctionPass *createHexagonOptimizeSZextends(); @@ -474,10 +482,13 @@ void HexagonPassConfig::addPostRegAlloc() { } void HexagonPassConfig::addPreSched2() { + bool NoOpt = (getOptLevel() == CodeGenOptLevel::None); addPass(createHexagonCopyToCombine()); if (getOptLevel() != CodeGenOptLevel::None) addPass(&IfConverterID); addPass(createHexagonSplitConst32AndConst64()); + if (!NoOpt && !DisableHexagonMask) + addPass(createHexagonMask()); } void HexagonPassConfig::addPreEmitPass() { |
