[llvm] dcabd3f - [NFC][InstCombine] Simplify miscompile testcase

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 16 18:19:52 PST 2022


Author: Roman Lebedev
Date: 2022-12-17T05:18:54+03:00
New Revision: dcabd3f01ab046670898369ddaf68a72aa767d3f

URL: https://github.com/llvm/llvm-project/commit/dcabd3f01ab046670898369ddaf68a72aa767d3f
DIFF: https://github.com/llvm/llvm-project/commit/dcabd3f01ab046670898369ddaf68a72aa767d3f.diff

LOG: [NFC][InstCombine] Simplify miscompile testcase

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/D139275_c4001580.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/D139275_c4001580.ll b/llvm/test/Transforms/InstCombine/D139275_c4001580.ll
index 427ef6780abb6..378d87153a160 100644
--- a/llvm/test/Transforms/InstCombine/D139275_c4001580.ll
+++ b/llvm/test/Transforms/InstCombine/D139275_c4001580.ll
@@ -3,25 +3,15 @@
 
 ; Based on reproduced from https://reviews.llvm.org/D139275#4001580
 ; FIXME: this is a miscompile.
-define float @D139275_c4001580(float %arg) {
+define i8 @D139275_c4001580(i1 %c0, i1 %c1, i1 %c2, i8 %inner.sel.trueval, i8 %inner.sel.falseval, i8 %outer.sel.trueval) {
 ; CHECK-LABEL: @D139275_c4001580(
-; CHECK-NEXT:    [[I:%.*]] = fcmp ugt float [[ARG:%.*]], 0.000000e+00
-; CHECK-NEXT:    [[I1:%.*]] = fcmp ult float [[ARG]], 1.000000e+00
-; CHECK-NEXT:    [[I2:%.*]] = and i1 [[I]], [[I1]]
-; CHECK-NEXT:    [[I3:%.*]] = fcmp uge float [[ARG]], 0x3FB99999A0000000
-; CHECK-NEXT:    [[I7:%.*]] = fadd float [[ARG]], 0xBFB99999A0000000
-; CHECK-NEXT:    [[I5:%.*]] = select i1 [[I3]], float [[I7]], float 0x3FB99999A0000000
-; CHECK-NEXT:    [[I8:%.*]] = select i1 [[I2]], float [[I5]], float 0.000000e+00
-; CHECK-NEXT:    ret float [[I8]]
+; CHECK-NEXT:    [[INNER_SEL:%.*]] = select i1 [[C2:%.*]], i8 [[OUTER_SEL_TRUEVAL:%.*]], i8 [[INNER_SEL_TRUEVAL:%.*]]
+; CHECK-NEXT:    [[OUTER_SEL:%.*]] = select i1 [[C1:%.*]], i8 [[INNER_SEL]], i8 [[INNER_SEL_FALSEVAL:%.*]]
+; CHECK-NEXT:    ret i8 [[OUTER_SEL]]
 ;
-  %i = fcmp ugt float %arg, 0.000000e+00
-  %i1 = fcmp ult float %arg, 1.000000e+00
-  %i2 = and i1 %i, %i1
-  %i3 = fcmp uge float %arg, 0x3FB99999A0000000
-  %i4 = xor i1 %i, %i2
-  %i5 = select i1 %i4, float 0x3FB99999A0000000, float 0.000000e+00
-  %i6 = and i1 %i3, %i2
-  %i7 = fadd float %arg, 0xBFB99999A0000000
-  %i8 = select i1 %i6, float %i7, float %i5
-  ret float %i8
+  %inner.cond = xor i1 %c0, %c1
+  %outer.cond = and i1 %c2, %c1
+  %inner.sel = select i1 %inner.cond, i8 %inner.sel.trueval, i8 %inner.sel.falseval
+  %outer.sel = select i1 %outer.cond, i8 %outer.sel.trueval, i8 %inner.sel
+  ret i8 %outer.sel
 }


        


More information about the llvm-commits mailing list