Test source: git
Source: <stdin> ---------------------------------------- define <4 x float> @simple_select(<4 x float> %a, <4 x float> %b, <4 x i32> %c) { %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) { %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!
+ : 'RUN: at line 2' + /tmp/nlopes/llvm/build/bin/FileCheck /tmp/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/insert-element-build-vector-const-undef.ll + /home/nlopes/alive2/build/opt-alive.sh -S -slp-vectorizer -slp-threshold=0 FileCheck error: '<stdin>' is empty. FileCheck command line: /tmp/nlopes/llvm/build/bin/FileCheck /tmp/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/insert-element-build-vector-const-undef.ll