Test Failure: Transforms/InstCombine/vector-xor.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define <4 x i32> @test_v4i32_xor_repeated_and_0(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
%0:
  %1 = and <4 x i32> %a, %b
  %2 = and <4 x i32> %a, %c
  %3 = xor <4 x i32> %1, %2
  ret <4 x i32> %3
}
=>
define <4 x i32> @test_v4i32_xor_repeated_and_0(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
%0:
  %1 = xor <4 x i32> %b, %c
  %2 = and <4 x i32> %1, %a
  ret <4 x i32> %2
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @test_v4i32_xor_repeated_and_1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
%0:
  %1 = and <4 x i32> %a, %b
  %2 = and <4 x i32> %c, %a
  %3 = xor <4 x i32> %1, %2
  ret <4 x i32> %3
}
=>
define <4 x i32> @test_v4i32_xor_repeated_and_1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
%0:
  %1 = xor <4 x i32> %b, %c
  %2 = and <4 x i32> %1, %a
  ret <4 x i32> %2
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @test_v4i32_xor_bswap_splatconst(<4 x i32> %a0) {
%0:
  %1 = bswap <4 x i32> %a0
  %2 = xor <4 x i32> %1, { 255, 255, 255, 255 }
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_xor_bswap_splatconst(<4 x i32> %a0) {
%0:
  %1 = xor <4 x i32> %a0, { 4278190080, 4278190080, 4278190080, 4278190080 }
  %2 = bswap <4 x i32> %1
  ret <4 x i32> %2
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @test_v4i32_xor_bswap_const(<4 x i32> %a0) {
%0:
  %1 = bswap <4 x i32> %a0
  %2 = xor <4 x i32> %1, { 0, 4278190080, 2, 3 }
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_xor_bswap_const(<4 x i32> %a0) {
%0:
  %1 = bswap <4 x i32> %a0
  %2 = xor <4 x i32> %1, { 0, 4278190080, 2, 3 }
  ret <4 x i32> %2
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @test_v4i32_xor_bswap_const_undef(<4 x i32> %a0) {
%0:
  %1 = bswap <4 x i32> %a0
  %2 = xor <4 x i32> %1, { undef, 0, 2, 3 }
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_xor_bswap_const_undef(<4 x i32> %a0) {
%0:
  %1 = bswap <4 x i32> %a0
  %2 = xor <4 x i32> %1, { undef, 0, 2, 3 }
  ret <4 x i32> %2
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @test_v4i32_demorgan_and(<4 x i32> %x, <4 x i32> %y) {
%0:
  %1 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %x
  %2 = and <4 x i32> %1, %y
  %3 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %2
  ret <4 x i32> %3
}
=>
define <4 x i32> @test_v4i32_demorgan_and(<4 x i32> %x, <4 x i32> %y) {
%0:
  %y.not = xor <4 x i32> %y, { 4294967295, 4294967295, 4294967295, 4294967295 }
  %1 = or <4 x i32> %y.not, %x
  ret <4 x i32> %1
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @test_v4i32_demorgan_or(<4 x i32> %x, <4 x i32> %y) {
%0:
  %1 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %x
  %2 = or <4 x i32> %1, %y
  %3 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %2
  ret <4 x i32> %3
}
=>
define <4 x i32> @test_v4i32_demorgan_or(<4 x i32> %x, <4 x i32> %y) {
%0:
  %y.not = xor <4 x i32> %y, { 4294967295, 4294967295, 4294967295, 4294967295 }
  %1 = and <4 x i32> %y.not, %x
  ret <4 x i32> %1
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @test_v4i32_not_ashr_not(<4 x i32> %x, <4 x i32> %y) {
%0:
  %1 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %x
  %2 = ashr <4 x i32> %1, %y
  %3 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %2
  ret <4 x i32> %3
}
=>
define <4 x i32> @test_v4i32_not_ashr_not(<4 x i32> %x, <4 x i32> %y) {
%0:
  %1 = ashr <4 x i32> %x, %y
  ret <4 x i32> %1
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @test_v4i32_not_ashr_not_undef(<4 x i32> %x, <4 x i32> %y) {
%0:
  %1 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, undef }, %x
  %2 = ashr <4 x i32> %1, %y
  %3 = xor <4 x i32> { 4294967295, 4294967295, undef, 4294967295 }, %2
  ret <4 x i32> %3
}
=>
define <4 x i32> @test_v4i32_not_ashr_not_undef(<4 x i32> %x, <4 x i32> %y) {
%0:
  %1 = ashr <4 x i32> %x, %y
  ret <4 x i32> %1
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @test_v4i32_not_ashr_negative_splatconst(<4 x i32> %a0) {
%0:
  %1 = ashr <4 x i32> { 4294967293, 4294967293, 4294967293, 4294967293 }, %a0
  %2 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %1
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_not_ashr_negative_splatconst(<4 x i32> %a0) {
%0:
  %1 = lshr <4 x i32> { 2, 2, 2, 2 }, %a0
  ret <4 x i32> %1
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @test_v4i32_not_ashr_negative_const(<4 x i32> %a0) {
%0:
  %1 = ashr <4 x i32> { 4294967293, 4294967291, 4294967289, 4294967287 }, %a0
  %2 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %1
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_not_ashr_negative_const(<4 x i32> %a0) {
%0:
  %1 = lshr <4 x i32> { 2, 4, 6, 8 }, %a0
  ret <4 x i32> %1
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @test_v4i32_not_ashr_negative_const_undef(<4 x i32> %a0) {
%0:
  %1 = ashr <4 x i32> { 4294967293, 4294967291, undef, 4294967287 }, %a0
  %2 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, undef }, %1
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_not_ashr_negative_const_undef(<4 x i32> %a0) {
%0:
  %1 = lshr <4 x i32> { 2, 4, 0, 8 }, %a0
  ret <4 x i32> %1
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @test_v4i32_not_lshr_nonnegative_splatconst(<4 x i32> %a0) {
%0:
  %1 = lshr <4 x i32> { 3, 3, 3, 3 }, %a0
  %2 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %1
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_not_lshr_nonnegative_splatconst(<4 x i32> %a0) {
%0:
  %1 = ashr <4 x i32> { 4294967292, 4294967292, 4294967292, 4294967292 }, %a0
  ret <4 x i32> %1
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @test_v4i32_not_lshr_nonnegative_const(<4 x i32> %a0) {
%0:
  %1 = lshr <4 x i32> { 3, 5, 7, 9 }, %a0
  %2 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, 4294967295 }, %1
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_not_lshr_nonnegative_const(<4 x i32> %a0) {
%0:
  %1 = ashr <4 x i32> { 4294967292, 4294967290, 4294967288, 4294967286 }, %a0
  ret <4 x i32> %1
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @test_v4i32_not_lshr_nonnegative_const_undef(<4 x i32> %a0) {
%0:
  %1 = lshr <4 x i32> { 3, 5, undef, 9 }, %a0
  %2 = xor <4 x i32> { 4294967295, 4294967295, 4294967295, undef }, %1
  ret <4 x i32> %2
}
=>
define <4 x i32> @test_v4i32_not_lshr_nonnegative_const_undef(<4 x i32> %a0) {
%0:
  %1 = ashr <4 x i32> { 4294967292, 4294967290, undef, 4294967286 }, %a0
  ret <4 x i32> %1
}
Transformation doesn't verify!
ERROR: Value mismatch

Example:
<4 x i32> %a0 = < #x00000000 (0), #xfffffffe (4294967294, -2), #x0000001f (31), #xfffffffe (4294967294, -2) >

Source:
<4 x i32> %1 = < #x00000003 (3), poison, #x00000000 (0)	[based on undef value], poison >
<4 x i32> %2 = < #xfffffffc (4294967292, -4), poison, #xffffffff (4294967295, -1), poison >

Target:
<4 x i32> %1 = < #xfffffffc (4294967292, -4), poison, #x00000000 (0), poison >
Source value: < #xfffffffc (4294967292, -4), poison, #xffffffff (4294967295, -1), poison >
Target value: < #xfffffffc (4294967292, -4), poison, #x00000000 (0), poison >


------------------- SMT STATS -------------------
Num queries: 39
Num invalid: 0
Num skips:   0
Num trivial: 30 (43.5%)
Num timeout: 6 (15.4%)
Num errors:  0 (0.0%)
Num SAT:     17 (43.6%)
Num UNSAT:   16 (41.0%)

stderr:

+ : 'RUN: at line 2'
+ /home/nlopes/alive2/scripts/opt-alive.sh -instcombine -S
+ /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/vector-xor.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/vector-xor.ll

 

<-- Back