================ @@ -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 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits