Test Failure: Transforms/InstCombine/modulo.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define i32 @modulo2(i32 %x) {
%0:
  %rem.i = srem i32 %x, 2
  %cmp.i = icmp slt i32 %rem.i, 0
  %add.i = select i1 %cmp.i, i32 2, i32 0
  %ret.i = add nsw i32 %add.i, %rem.i
  ret i32 %ret.i
}
=>
define i32 @modulo2(i32 %x) {
%0:
  %rem.i = srem i32 %x, 2
  %1 = and i32 %rem.i, 2
  %ret.i = add nsw i32 %1, %rem.i
  ret i32 %ret.i
}
Transformation seems to be correct!


----------------------------------------
define <2 x i32> @modulo2_vec(<2 x i32> %x) {
%0:
  %rem.i = srem <2 x i32> %x, { 2, 2 }
  %cmp.i = icmp slt <2 x i32> %rem.i, { 0, 0 }
  %add.i = select <2 x i1> %cmp.i, <2 x i32> { 2, 2 }, <2 x i32> { 0, 0 }
  %ret.i = add nsw <2 x i32> %add.i, %rem.i
  ret <2 x i32> %ret.i
}
=>
define <2 x i32> @modulo2_vec(<2 x i32> %x) {
%0:
  %rem.i = srem <2 x i32> %x, { 2, 2 }
  %1 = and <2 x i32> %rem.i, { 2, 2 }
  %ret.i = add nsw <2 x i32> %1, %rem.i
  ret <2 x i32> %ret.i
}
Transformation doesn't verify!
ERROR: Target is more poisonous than source

Example:
<2 x i32> %x = < poison, #x00000001 (1) >

Source:
<2 x i32> %rem.i = < poison, #x00000001 (1) >
<2 x i1> %cmp.i = < poison, #x0 (0) >
<2 x i32> %add.i = < poison, #x00000000 (0) >
<2 x i32> %ret.i = < poison, #x00000001 (1) >

Target:
<2 x i32> %rem.i = < poison, #x00000001 (1) >
<2 x i32> %1 = < poison, poison >
<2 x i32> %ret.i = < poison, poison >
Source value: < poison, #x00000001 (1) >
Target value: < poison, poison >


------------------- SMT STATS -------------------
Num queries: 17
Num invalid: 0
Num skips:   0
Num trivial: 12 (41.4%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     14 (82.4%)
Num UNSAT:   3 (17.6%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 2'
+ /home/nuno/llvm/build/bin/FileCheck /home/nuno/llvm/llvm/test/Transforms/InstCombine/modulo.ll
+ /home/nuno/alive2/build/opt-alive.sh -S -passes=instcombine

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/nuno/llvm/build/bin/FileCheck /home/nuno/llvm/llvm/test/Transforms/InstCombine/modulo.ll

 

<-- Back