Test source: git
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 = < undef, undef > <2 x i64> %b = < #x0000000080100000 (2148532224), #x7f80100084400000 (9187360834240643072) > Source: <4 x float> %t0 = < #x00000000 (+0.0) [based on undef value], #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) > <4 x float> %t1 = < #x80100000 (-0.000000000000?), #x00000000 (+0.0), #x84400000 (-0.000000000000?), NaN > <4 x i1> %t2 = < #x1 (1), #x0 (0), #x1 (1), #x0 (0) > <4 x i32> %t3 = < undef, undef, undef, undef > <4 x i32> %t4 = < #x80100000 (2148532224, -2146435072), #x00000000 (0), #x84400000 (2218786816, -2076180480), #x7f801000 (2139099136) > <4 x i32> %t5 = < undef, #x00000000 (0), undef, #x7f801000 (2139099136) > Target: <4 x float> %t0 = < #x40a00010 (5.000007629394?), #x80a03308 (-0.000000000000?), #x21410001 (0.000000000000?), #x760658e4 (681221381943204591298208197509120) > <4 x float> %t1 = < #x80100000 (-0.000000000000?), #x00000000 (+0.0), #x84400000 (-0.000000000000?), NaN > <4 x i1> %t2 = < #x1 (1), #x0 (0), #x1 (1), #x0 (0) > <4 x float> %1 = < #x00000800 (0.000000000000?), #x00000000 (+0.0), #x00000000 (+0.0), NaN > <4 x i32> %t5 = < #x00000800 (2048), #x00000000 (0), #x00000000 (0), #x7f800020 (2139095072) > Source value: < undef, #x00000000 (0), undef, #x7f801000 (2139099136) > Target value: < #x00000800 (2048), #x00000000 (0), #x00000000 (0), #x7f800020 (2139095072) > ------------------- SMT STATS ------------------- Num queries: 34 Num invalid: 0 Num skips: 0 Num trivial: 42 (55.3%) Num timeout: 5 (14.7%) Num errors: 0 (0.0%) Num SAT: 13 (38.2%) Num UNSAT: 16 (47.1%)
+ : '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