[llvm-branch-commits] [llvm] AMDGPU/GlobalISel: Legalize atomicrmw fmin/fmax (PR #97048)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jun 28 06:17:48 PDT 2024
================
@@ -1670,10 +1670,22 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo(const GCNSubtarget &ST_,
if (ST.hasAtomicFlatPkAdd16Insts())
Atomic.legalFor({{V2F16, FlatPtr}, {V2BF16, FlatPtr}});
- // FIXME: Handle flat, global and buffer cases.
- getActionDefinitionsBuilder({G_ATOMICRMW_FMIN, G_ATOMICRMW_FMAX})
+
+ // Most of the legalization work here is done by AtomicExpand. We could
+ // probably use a simpler legality rule that just assumes anything is OK.
+ auto &AtomicFMinFMax =
+ getActionDefinitionsBuilder({G_ATOMICRMW_FMIN, G_ATOMICRMW_FMAX})
.legalFor({{F32, LocalPtr}, {F64, LocalPtr}});
+ if (ST.hasAtomicFMinFMaxF32GlobalInsts())
+ AtomicFMinFMax.legalFor({{F32, GlobalPtr},{F32, BufferFatPtr}});
----------------
arsenm wrote:
Yes, it works for the fmin/fmax case. The fadd had some has-global-no-buffer cases
https://github.com/llvm/llvm-project/pull/97048
More information about the llvm-branch-commits
mailing list