Test Failure: Transforms/InstCombine/minmax-fold.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define i64 @t1(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 5
  %2 = select i1 %1, i32 %a, i32 5
  %3 = sext i32 %2 to i64
  ret i64 %3
}
=>
define i64 @t1(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 5
  %2 = select i1 %1, i32 %a, i32 5
  %3 = sext i32 %2 to i64
  ret i64 %3
}
Transformation seems to be correct!


----------------------------------------
define i64 @t2(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 5
  %2 = sext i32 %a to i64
  %3 = select i1 %1, i64 %2, i64 5
  ret i64 %3
}
=>
define i64 @t2(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 5
  %narrow = select i1 %1, i32 %a, i32 5
  %2 = sext i32 %narrow to i64
  ret i64 %2
}
Transformation seems to be correct!


----------------------------------------
define i64 @t3(i32 %a) {
%0:
  %1 = icmp ult i32 %a, 5
  %2 = zext i32 %a to i64
  %3 = select i1 %1, i64 5, i64 %2
  ret i64 %3
}
=>
define i64 @t3(i32 %a) {
%0:
  %1 = icmp ugt i32 %a, 5
  %narrow = select i1 %1, i32 %a, i32 5
  %2 = zext i32 %narrow to i64
  ret i64 %2
}
Transformation seems to be correct!


----------------------------------------
define i32 @t4(i64 %a) {
%0:
  %1 = icmp slt i64 %a, 5
  %2 = trunc i64 %a to i32
  %3 = select i1 %1, i32 %2, i32 5
  ret i32 %3
}
=>
define i32 @t4(i64 %a) {
%0:
  %1 = icmp slt i64 %a, 5
  %2 = select i1 %1, i64 %a, i64 5
  %3 = trunc i64 %2 to i32
  ret i32 %3
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define i64 @t5(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 5
  %2 = zext i32 %a to i64
  %3 = select i1 %1, i64 5, i64 %2
  ret i64 %3
}
=>
define i64 @t5(i32 %a) {
%0:
  %1 = icmp sgt i32 %a, 5
  %narrow = select i1 %1, i32 %a, i32 5
  %2 = zext i32 %narrow to i64
  ret i64 %2
}
Transformation seems to be correct!


----------------------------------------
define float @t6(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 0
  %2 = select i1 %1, i32 %a, i32 0
  %3 = sitofp i32 %2 to float
  ret float %3
}
=>
define float @t6(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 0
  %2 = select i1 %1, i32 %a, i32 0
  %3 = sitofp i32 %2 to float
  ret float %3
}
Transformation seems to be correct!


----------------------------------------
define i16 @t7(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 4294934528
  %2 = trunc i32 %a to i16
  %3 = select i1 %1, i16 %2, i16 32768
  ret i16 %3
}
=>
define i16 @t7(i32 %a) {
%0:
  %1 = icmp slt i32 %a, 4294934528
  %2 = select i1 %1, i32 %a, i32 4294934528
  %3 = trunc i32 %2 to i16
  ret i16 %3
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define i32 @t8(i64 %a, i32 %b) {
%0:
  %1 = icmp slt i64 %a, -32767
  %2 = select i1 %1, i64 %a, i64 -32767
  %3 = trunc i64 %2 to i32
  %4 = icmp slt i32 %b, 42
  %5 = select i1 %4, i32 42, i32 %3
  %6 = icmp ne i32 %5, %b
  %7 = zext i1 %6 to i32
  ret i32 %7
}
=>
define i32 @t8(i64 %a, i32 %b) {
%0:
  %1 = icmp slt i64 %a, -32767
  %2 = select i1 %1, i64 %a, i64 -32767
  %3 = trunc i64 %2 to i32
  %4 = icmp slt i32 %b, 42
  %5 = select i1 %4, i32 42, i32 %3
  %6 = icmp ne i32 %5, %b
  %7 = zext i1 %6 to i32
  ret i32 %7
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define i64 @t9(i32 %a) {
%0:
  %1 = icmp sgt i32 %a, 4294967295
  %2 = sext i32 %a to i64
  %3 = select i1 %1, i64 %2, i64 4294967295
  ret i64 %3
}
=>
define i64 @t9(i32 %a) {
%0:
  %1 = icmp sgt i32 %a, 4294967295
  %2 = sext i32 %a to i64
  %3 = select i1 %1, i64 %2, i64 4294967295
  ret i64 %3
}
Transformation seems to be correct!


----------------------------------------
define float @t10(i32 %x) {
%0:
  %f_x = sitofp i32 %x to float
  %cmp = icmp sgt i32 %x, 255
  %r = select i1 %cmp, float %f_x, float 255.000000
  ret float %r
}
=>
define float @t10(i32 %x) {
%0:
  %1 = icmp sgt i32 %x, 255
  %r1 = select i1 %1, i32 %x, i32 255
  %2 = sitofp i32 %r1 to float
  ret float %2
}
Transformation seems to be correct!


----------------------------------------
define float @t11(i64 %x) {
%0:
  %f_x = sitofp i64 %x to float
  %cmp = icmp sgt i64 %x, 255
  %r = select i1 %cmp, float %f_x, float 255.000000
  ret float %r
}
=>
define float @t11(i64 %x) {
%0:
  %1 = icmp sgt i64 %x, 255
  %r1 = select i1 %1, i64 %x, i64 255
  %2 = sitofp i64 %r1 to float
  ret float %2
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @bitcasts_fcmp_1(<2 x i64> %a, <2 x i64> %b) {
%0:
  %t0 = bitcast <2 x i64> %a to <4 x float>
  %t1 = bitcast <2 x i64> %b to <4 x float>
  %t2 = fcmp olt <4 x float> %t1, %t0
  %t3 = bitcast <2 x i64> %a to <4 x i32>
  %t4 = bitcast <2 x i64> %b to <4 x i32>
  %t5 = select <4 x i1> %t2, <4 x i32> %t3, <4 x i32> %t4
  ret <4 x i32> %t5
}
=>
define <4 x i32> @bitcasts_fcmp_1(<2 x i64> %a, <2 x i64> %b) {
%0:
  %t0 = bitcast <2 x i64> %a to <4 x float>
  %t1 = bitcast <2 x i64> %b to <4 x float>
  %t2 = fcmp olt <4 x float> %t1, %t0
  %1 = select <4 x i1> %t2, <4 x float> %t0, <4 x float> %t1
  %t5 = bitcast <4 x float> %1 to <4 x i32>
  ret <4 x i32> %t5
}
Transformation doesn't verify!
ERROR: Value mismatch

Example:
<2 x i64> %a = < #x0000000000000000 (0), #x0000000000000000 (0) >
<2 x i64> %b = < #x800000207f873251 (9223372176433295953, -9223371897276255663), #x8400000181000080 (9511602419465715840, -8935141654243835776) >

Source:
<4 x float> %t0 = < #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) >
<4 x float> %t1 = < NaN, #x80000020 (-0.000000000000?), #x81000080 (-0.000000000000?), #x84000001 (-0.000000000000?) >
<4 x i1> %t2 = < #x0 (0), #x1 (1), #x1 (1), #x1 (1) >
<4 x i32> %t3 = < #x00000000 (0), #x00000000 (0), #x00000000 (0), #x00000000 (0) >
<4 x i32> %t4 = < #x7f873251 (2139566673), #x80000020 (2147483680, -2147483616), #x81000080 (2164260992, -2130706304), #x84000001 (2214592513, -2080374783) >
<4 x i32> %t5 = < #x7f873251 (2139566673), #x00000000 (0), #x00000000 (0), #x00000000 (0) >

Target:
<4 x float> %t0 = < #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) >
<4 x float> %t1 = < NaN, #x80000020 (-0.000000000000?), #x81000080 (-0.000000000000?), #x84000001 (-0.000000000000?) >
<4 x i1> %t2 = < #x0 (0), #x1 (1), #x1 (1), #x1 (1) >
<4 x float> %1 = < NaN, #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) >
<4 x i32> %t5 = < #x7f800008 (2139095048), #x00000000 (0), #x00000000 (0), #x00000000 (0) >
Source value: < #x7f873251 (2139566673), #x00000000 (0), #x00000000 (0), #x00000000 (0) >
Target value: < #x7f800008 (2139095048), #x00000000 (0), #x00000000 (0), #x00000000 (0) >


------------------- SMT STATS -------------------
Num queries: 25
Num invalid: 0
Num skips:   0
Num trivial: 42 (62.7%)
Num timeout: 4 (16.0%)
Num errors:  0 (0.0%)
Num SAT:     13 (52.0%)
Num UNSAT:   8 (32.0%)

stderr:

+ : 'RUN: at line 2'
+ /home/nlopes/alive2/scripts/opt-alive.sh -S -instcombine
+ /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/minmax-fold.ll

Alive2: Transform doesn't verify; aborting!
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/minmax-fold.ll

 

<-- Back