From 2da670aea3bef874a2a43dddeb9c01aacf07de8f Mon Sep 17 00:00:00 2001 From: Paul Bowen-Huggett Date: Tue, 7 Jan 2025 09:43:27 +0100 Subject: [PATCH 1/2] [NFC] Make AMDGPUCombinerHelper methods const This is a follow-up to a previous commit (ee7ca0d) which eliminated several "TODO: make CombinerHelper methods const" remarks. As promised in that ealier commit, this change completes the set by also making the methods of AMDGPUCombinerHelper const so that the Helper member of AMDGPUPreLegalizerCombinerImpl can be const rather than explicitly mutable. --- llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.cpp | 10 +++++----- llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.h | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.cpp b/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.cpp index f6f9f4bc0fb1b..46194ab46ff6a 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.cpp @@ -197,7 +197,7 @@ static unsigned inverseMinMax(unsigned Opc) { } bool AMDGPUCombinerHelper::matchFoldableFneg(MachineInstr &MI, - MachineInstr *&MatchInfo) { + MachineInstr *&MatchInfo) const { Register Src = MI.getOperand(1).getReg(); MatchInfo = MRI.getVRegDef(Src); @@ -266,7 +266,7 @@ bool AMDGPUCombinerHelper::matchFoldableFneg(MachineInstr &MI, } void AMDGPUCombinerHelper::applyFoldableFneg(MachineInstr &MI, - MachineInstr *&MatchInfo) { + MachineInstr *&MatchInfo) const { // Transform: // %A = inst %Op1, ... // %B = fneg %A @@ -425,7 +425,7 @@ static bool isFPExtFromF16OrConst(const MachineRegisterInfo &MRI, bool AMDGPUCombinerHelper::matchExpandPromotedF16FMed3(MachineInstr &MI, Register Src0, Register Src1, - Register Src2) { + Register Src2) const { assert(MI.getOpcode() == TargetOpcode::G_FPTRUNC); Register SrcReg = MI.getOperand(1).getReg(); if (!MRI.hasOneNonDBGUse(SrcReg) || MRI.getType(SrcReg) != LLT::scalar(32)) @@ -438,7 +438,7 @@ bool AMDGPUCombinerHelper::matchExpandPromotedF16FMed3(MachineInstr &MI, void AMDGPUCombinerHelper::applyExpandPromotedF16FMed3(MachineInstr &MI, Register Src0, Register Src1, - Register Src2) { + Register Src2) const { // We expect fptrunc (fpext x) to fold out, and to constant fold any constant // sources. Src0 = Builder.buildFPTrunc(LLT::scalar(16), Src0).getReg(0); @@ -455,7 +455,7 @@ void AMDGPUCombinerHelper::applyExpandPromotedF16FMed3(MachineInstr &MI, bool AMDGPUCombinerHelper::matchCombineFmulWithSelectToFldexp( MachineInstr &MI, MachineInstr &Sel, - std::function &MatchInfo) { + std::function &MatchInfo) const { assert(MI.getOpcode() == TargetOpcode::G_FMUL); assert(Sel.getOpcode() == TargetOpcode::G_SELECT); assert(MI.getOperand(2).getReg() == Sel.getOperand(0).getReg()); diff --git a/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.h b/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.h index 893b3f5415f8c..bc3d9daef87c5 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.h @@ -32,17 +32,17 @@ class AMDGPUCombinerHelper : public CombinerHelper { MachineDominatorTree *MDT, const LegalizerInfo *LI, const GCNSubtarget &STI); - bool matchFoldableFneg(MachineInstr &MI, MachineInstr *&MatchInfo); - void applyFoldableFneg(MachineInstr &MI, MachineInstr *&MatchInfo); + bool matchFoldableFneg(MachineInstr &MI, MachineInstr *&MatchInfo) const; + void applyFoldableFneg(MachineInstr &MI, MachineInstr *&MatchInfo) const; bool matchExpandPromotedF16FMed3(MachineInstr &MI, Register Src0, - Register Src1, Register Src2); + Register Src1, Register Src2) const; void applyExpandPromotedF16FMed3(MachineInstr &MI, Register Src0, - Register Src1, Register Src2); + Register Src1, Register Src2) const; bool matchCombineFmulWithSelectToFldexp( MachineInstr &MI, MachineInstr &Sel, - std::function &MatchInfo); + std::function &MatchInfo) const; }; } // namespace llvm From 5e9eefe8c1f9244a4475e04116ca16ada56ea5c1 Mon Sep 17 00:00:00 2001 From: Paul Bowen-Huggett Date: Fri, 10 Jan 2025 09:53:10 +0100 Subject: [PATCH 2/2] We can now make the Helper member const. This removes a TODO remark and the need to make Helper explicitly mutable. --- llvm/lib/Target/AMDGPU/AMDGPUPreLegalizerCombiner.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPreLegalizerCombiner.cpp b/llvm/lib/Target/AMDGPU/AMDGPUPreLegalizerCombiner.cpp index e1564d5de415d..52c6e5274ae5b 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUPreLegalizerCombiner.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUPreLegalizerCombiner.cpp @@ -45,8 +45,7 @@ class AMDGPUPreLegalizerCombinerImpl : public Combiner { protected: const AMDGPUPreLegalizerCombinerImplRuleConfig &RuleConfig; const GCNSubtarget &STI; - // TODO: Make CombinerHelper methods const. - mutable AMDGPUCombinerHelper Helper; + const AMDGPUCombinerHelper Helper; public: AMDGPUPreLegalizerCombinerImpl(