Test Failure: Transforms/InstCombine/insert-const-shuf.ll

Test source: git

Comments: LLVM PR44185

Log:

Source: /tmp/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll

----------------------------------------
define <4 x float> @PR29126(<4 x float> %x) {
%0:
  %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, undef }, 0, 5, 6, 3
  %ins = insertelement <4 x float> %shuf, float 42.000000, i32 3
  ret <4 x float> %ins
}
=>
define <4 x float> @PR29126(<4 x float> %x) {
%0:
  %ins = shufflevector <4 x float> %x, <4 x float> { poison, 1.000000, 2.000000, 42.000000 }, 0, 5, 6, 7
  ret <4 x float> %ins
}
Transformation seems to be correct!


----------------------------------------
define <4 x float> @twoInserts(<4 x float> %x) {
%0:
  %shuf = shufflevector <4 x float> %x, <4 x float> { 0.000000, 0.000000, 0.000000, 0.000000 }, 0, 5, 6, 3
  %ins1 = insertelement <4 x float> %shuf, float 42.000000, i32 2
  %ins2 = insertelement <4 x float> %ins1, float 11.000000, i32 3
  ret <4 x float> %ins2
}
=>
define <4 x float> @twoInserts(<4 x float> %x) {
%0:
  %ins2 = shufflevector <4 x float> %x, <4 x float> { poison, 0.000000, 42.000000, 11.000000 }, 0, 5, 6, 7
  ret <4 x float> %ins2
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @shuffleRetain(<4 x i32> %base) {
%0:
  %shuf = shufflevector <4 x i32> %base, <4 x i32> { 4, 3, 2, 1 }, 1, 2, 4294967295, 7
  ret <4 x i32> %shuf
}
=>
define <4 x i32> @shuffleRetain(<4 x i32> %base) {
%0:
  %shuf = shufflevector <4 x i32> %base, <4 x i32> { poison, poison, poison, 1 }, 1, 2, 4294967295, 7
  ret <4 x i32> %shuf
}
Transformation seems to be correct!


----------------------------------------
define <4 x float> @disguisedSelect(<4 x float> %x) {
%0:
  %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, 3.000000 }, 7, 6, 5, 3
  %ins = insertelement <4 x float> %shuf, float 4.000000, i32 0
  ret <4 x float> %ins
}
=>
define <4 x float> @disguisedSelect(<4 x float> %x) {
%0:
  %shuf = shufflevector <4 x float> %x, <4 x float> { poison, 1.000000, 2.000000, poison }, 4294967295, 6, 5, 3
  %ins = insertelement <4 x float> %shuf, float 4.000000, i64 0
  ret <4 x float> %ins
}
Transformation seems to be correct!


----------------------------------------
define <4 x float> @notSelectButNoMaskDifference(<4 x float> %x) {
%0:
  %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, 3.000000 }, 1, 5, 6, 3
  %ins = insertelement <4 x float> %shuf, float 4.000000, i32 3
  ret <4 x float> %ins
}
=>
define <4 x float> @notSelectButNoMaskDifference(<4 x float> %x) {
%0:
  %shuf = shufflevector <4 x float> %x, <4 x float> { poison, 1.000000, 2.000000, poison }, 1, 5, 6, 4294967295
  %ins = insertelement <4 x float> %shuf, float 4.000000, i64 3
  ret <4 x float> %ins
}
Transformation seems to be correct!


----------------------------------------
define <4 x float> @tooRisky(<4 x float> %x) {
%0:
  %shuf = shufflevector <4 x float> %x, <4 x float> { 1.000000, undef, undef, undef }, 1, 4, 4, 4
  %ins = insertelement <4 x float> %shuf, float 4.000000, i32 3
  ret <4 x float> %ins
}
=>
define <4 x float> @tooRisky(<4 x float> %x) {
%0:
  %shuf = shufflevector <4 x float> %x, <4 x float> { 1.000000, poison, poison, poison }, 1, 4, 4, 4294967295
  %ins = insertelement <4 x float> %shuf, float 4.000000, i64 3
  ret <4 x float> %ins
}
Transformation seems to be correct!


----------------------------------------
define <3 x float> @twoShufUses(<3 x float> %x) {
%0:
  %shuf = shufflevector <3 x float> %x, <3 x float> { undef, 1.000000, 2.000000 }, 0, 4, 5
  %ins = insertelement <3 x float> %shuf, float 42.000000, i2 1
  %add = fadd <3 x float> %shuf, %ins, exceptions=ignore
  ret <3 x float> %add
}
=>
define <3 x float> @twoShufUses(<3 x float> %x) {
%0:
  %shuf = shufflevector <3 x float> %x, <3 x float> { poison, 1.000000, 2.000000 }, 0, 4, 5
  %ins = insertelement <3 x float> %shuf, float 42.000000, i64 1
  %add = fadd <3 x float> %shuf, %ins, exceptions=ignore
  ret <3 x float> %add
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <5 x i8> @longerMask(<3 x i8> %x) {
%0:
  %shuf = shufflevector <3 x i8> %x, <3 x i8> { undef, 1, 2 }, 2, 1, 4, 3, 0
  %ins = insertelement <5 x i8> %shuf, i8 42, i17 4
  ret <5 x i8> %ins
}
=>
define <5 x i8> @longerMask(<3 x i8> %x) {
%0:
  %shuf = shufflevector <3 x i8> %x, <3 x i8> { poison, 1, poison }, 2, 1, 4, 4294967295, 4294967295
  %ins = insertelement <5 x i8> %shuf, i8 42, i64 4
  ret <5 x i8> %ins
}
Transformation doesn't verify!
ERROR: Target is more poisonous than source

Example:
<3 x i8> %x = < poison, poison, poison >

Source:
<5 x i8> %shuf = < poison, poison, #x01 (1), #x00 (0)	[based on undef value], poison >
<5 x i8> %ins = < poison, poison, #x01 (1), #x00 (0), #x2a (42) >

Target:
<5 x i8> %shuf = < poison, poison, #x01 (1), poison, poison >
<5 x i8> %ins = < poison, poison, #x01 (1), poison, #x2a (42) >
Source value: < poison, poison, #x01 (1), #x00 (0), #x2a (42) >
Target value: < poison, poison, #x01 (1), poison, #x2a (42) >


------------------- SMT STATS -------------------
Num queries: 57
Num invalid: 0
Num skips:   0
Num trivial: 40 (41.2%)
Num timeout: 1 (1.8%)
Num errors:  0 (0.0%)
Num SAT:     41 (71.9%)
Num UNSAT:   15 (26.3%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 2'
+ /tmp/nlopes/llvm/build/bin/FileCheck /tmp/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll
+ /home/nlopes/alive2/build/opt-alive.sh -S -passes=instcombine /tmp/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /tmp/nlopes/llvm/build/bin/FileCheck /tmp/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll

 

<-- Back