Test Failure: Transforms/SLPVectorizer/X86/insert-element-build-vector-const-undef.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define <4 x float> @simple_select(<4 x float> %a, <4 x float> %b, <4 x i32> %c) denormal-fp-math=ieee,ieee {
%0:
  %c0 = extractelement <4 x i32> %c, i32 0
  %c1 = extractelement <4 x i32> %c, i32 1
  %a0 = extractelement <4 x float> %a, i32 0
  %a1 = extractelement <4 x float> %a, i32 1
  %b0 = extractelement <4 x float> %b, i32 0
  %b1 = extractelement <4 x float> %b, i32 1
  %cmp0 = icmp ne i32 %c0, 0
  %cmp1 = icmp ne i32 %c1, 0
  %s0 = select i1 %cmp0, float %a0, float %b0
  %s1 = select i1 %cmp1, float %a1, float %b1
  %ra = insertelement <4 x float> { poison, poison, undef, undef }, float %s0, i32 0
  %rb = insertelement <4 x float> %ra, float %s1, i32 1
  ret <4 x float> %rb
}
=>
define <4 x float> @simple_select(<4 x float> %a, <4 x float> %b, <4 x i32> %c) denormal-fp-math=ieee,ieee {
%0:
  %c0 = extractelement <4 x i32> %c, i32 0
  %c1 = extractelement <4 x i32> %c, i32 1
  %a0 = extractelement <4 x float> %a, i32 0
  %a1 = extractelement <4 x float> %a, i32 1
  %b0 = extractelement <4 x float> %b, i32 0
  %b1 = extractelement <4 x float> %b, i32 1
  %1 = insertelement <2 x i32> poison, i32 %c0, i32 0
  %2 = insertelement <2 x i32> %1, i32 %c1, i32 1
  %3 = icmp ne <2 x i32> %2, { 0, 0 }
  %4 = insertelement <2 x float> poison, float %a0, i32 0
  %5 = insertelement <2 x float> %4, float %a1, i32 1
  %6 = insertelement <2 x float> poison, float %b0, i32 0
  %7 = insertelement <2 x float> %6, float %b1, i32 1
  %8 = select <2 x i1> %3, <2 x float> %5, <2 x float> %7
  %9 = shufflevector <2 x float> %8, <2 x float> poison, 0, 1, 4294967295, 4294967295
  ret <4 x float> %9
}
Transformation doesn't verify!
ERROR: Target is more poisonous than source

Example:
<4 x float> %a = < poison, poison, poison, poison >
<4 x float> %b = < poison, poison, poison, poison >
<4 x i32> %c = < poison, poison, poison, poison >

Source:
i32 %c0 = poison
i32 %c1 = poison
float %a0 = poison
float %a1 = poison
float %b0 = poison
float %b1 = poison
i1 %cmp0 = poison
i1 %cmp1 = poison
float %s0 = poison
float %s1 = poison
<4 x float> %ra = < poison, poison, NaN	[based on undef value], NaN >
<4 x float> %rb = < poison, poison, NaN, NaN >

Target:
i32 %c0 = poison
i32 %c1 = poison
float %a0 = poison
float %a1 = poison
float %b0 = poison
float %b1 = poison
<2 x i32> %1 = < poison, poison >
<2 x i32> %2 = < poison, poison >
<2 x i1> %3 = < poison, poison >
<2 x float> %4 = < poison, poison >
<2 x float> %5 = < poison, poison >
<2 x float> %6 = < poison, poison >
<2 x float> %7 = < poison, poison >
<2 x float> %8 = < poison, poison >
<4 x float> %9 = < poison, poison, poison, poison >
Source value: < poison, poison, NaN, NaN >
Target value: < poison, poison, poison, poison >


------------------- SMT STATS -------------------
Num queries: 54
Num invalid: 0
Num skips:   0
Num trivial: 8 (12.9%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     54 (100.0%)
Num UNSAT:   0 (0.0%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 2'
+ /home/nlopes/alive2/build/opt-alive.sh -S -slp-vectorizer -slp-threshold=0
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/insert-element-build-vector-const-undef.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/insert-element-build-vector-const-undef.ll

 

<-- Back