[llvm] [AMDGPU][SIPreEmitPeephole] mustRetainExeczBranch: use BranchProbability and TargetSchedmodel (PR #109818)
Juan Manuel Martinez CaamaƱo via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 25 01:26:24 PDT 2024
================
@@ -305,10 +310,53 @@ bool SIPreEmitPeephole::getBlockDestinations(
}
bool SIPreEmitPeephole::mustRetainExeczBranch(
- const MachineBasicBlock &From, const MachineBasicBlock &To) const {
+ const MachineBasicBlock &Head, const MachineBasicBlock &From,
+ const MachineBasicBlock &To) const {
+
+ auto FromIt = find(Head.successors(), &From);
+ assert(FromIt != Head.succ_end());
+ BranchProbability ExecNZProb = Head.getSuccProbability(FromIt);
+
unsigned NumInstr = 0;
- const MachineFunction *MF = From.getParent();
+ unsigned long ExecNZBranchCost = 0;
+ unsigned long UnconditionalBranchCost = 0;
+ unsigned long N = 0;
+ unsigned long D = 0;
+ unsigned long ThenCyclesCost = 0;
+
+ std::function<bool(const MachineInstr &)> IsProfitable =
----------------
jmmartinez wrote:
I moved the functions into 2 classes + base since there is some payload for each cost function.
Alternatively, I can move it to 2 classes and use an `std::variant` for dispatching instead of a virtual method.
https://github.com/llvm/llvm-project/pull/109818
More information about the llvm-commits
mailing list