Lines Matching +full:align +full:- +full:end
1 //===----- HexagonLoopAlign.cpp - Generate loop alignment directives -----===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
12 #define DEBUG_TYPE "hexagon-loop-align"
23 DisableLoopAlign("disable-hexagon-loop-align", cl::Hidden,
27 "hexagon-hvx-loop-align-limit-ub", cl::Hidden, cl::init(16),
28 cl::desc("Set hexagon hvx loop upper bound align limit"));
31 "hexagon-tiny-loop-align-limit-ub", cl::Hidden, cl::init(16),
32 cl::desc("Set hexagon tiny-core loop upper bound align limit"));
35 LoopAlignLimitUB("hexagon-loop-align-limit-ub", cl::Hidden, cl::init(8),
36 cl::desc("Set hexagon loop upper bound align limit"));
39 LoopAlignLimitLB("hexagon-loop-align-limit-lb", cl::Hidden, cl::init(4),
40 cl::desc("Set hexagon loop lower bound align limit"));
43 LoopBndlAlignLimit("hexagon-loop-bundle-align-limit", cl::Hidden,
45 cl::desc("Set hexagon loop align bundle limit"));
48 "hexagon-tiny-loop-bundle-align-limit", cl::Hidden, cl::init(8),
49 cl::desc("Set hexagon tiny-core loop align bundle limit"));
52 LoopEdgeThreshold("hexagon-loop-edge-threshold", cl::Hidden, cl::init(7500),
53 cl::desc("Set hexagon loop align edge theshold"));
98 // End if the instruction is endloop. in shouldBalignLoop()
99 if (HII->isEndLoopN(II->getOpcode())) in shouldBalignLoop()
102 if (II->isBundle()) { in shouldBalignLoop()
107 if (II->isDebugInstr()) in shouldBalignLoop()
110 isVec |= HII->isHVXVec(*II); in shouldBalignLoop()
123 if (HST->isTinyCore()) { in shouldBalignLoop()
156 BlockFrequency BlockFreq = MBFI->getBlockFreq(&MBB); in attemptToBalignSmallLoop()
157 BranchProbability BrProb = MBPI->getEdgeProbability(&MBB, &MBB); in attemptToBalignSmallLoop()
160 dbgs() << "Loop Align Pass:\n"; in attemptToBalignSmallLoop()
167 MBB.setAlignment(llvm::Align(1 << 5)); in attemptToBalignSmallLoop()
179 HII = HST->getInstrInfo(); in runOnMachineFunction()
188 // i) -O2 and above, and when the loop has a HVX instruction. in runOnMachineFunction()
189 // ii) -O3 in runOnMachineFunction()
190 if (HST->useHVXOps()) { in runOnMachineFunction()
191 if (HTM->getOptLevel() < CodeGenOptLevel::Default) in runOnMachineFunction()
194 if (HTM->getOptLevel() < CodeGenOptLevel::Aggressive) in runOnMachineFunction()
199 for (MachineFunction::iterator MBBi = MF.begin(), MBBe = MF.end(); in runOnMachineFunction()
209 INITIALIZE_PASS(HexagonLoopAlign, "hexagon-loop-align",
212 //===----------------------------------------------------------------------===//
214 //===----------------------------------------------------------------------===//