[llvm] [AMDGPU] Fix fmed3 constant-fold sign-of-zero miscompile (PR #201896)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 8 06:22:39 PDT 2026


================
@@ -54,14 +54,14 @@ static APFloat fmed3AMDGCN(const APFloat &Src0, const APFloat &Src1,
                            const APFloat &Src2) {
   APFloat Max3 = maxnum(maxnum(Src0, Src1), Src2);
 
-  APFloat::cmpResult Cmp0 = Max3.compare(Src0);
-  assert(Cmp0 != APFloat::cmpUnordered && "nans handled separately");
-  if (Cmp0 == APFloat::cmpEqual)
+  assert(Max3.compare(Src0) != APFloat::cmpUnordered &&
----------------
jayfoad wrote:

It's a bit strange to call `compare` just to detect nans. Instead, maybe have a single `assert(!Src0.isNaN() && !Src1.isNaN() && !Src2.isNaN())` at the start of this function.

https://github.com/llvm/llvm-project/pull/201896


More information about the llvm-commits mailing list