Test Failure: Transforms/VectorCombine/X86/select-shuffle.ll

Test source: git

Log:

Source: <stdin>
-- 1. ModuleToFunctionPassAdaptor
-- 1. PassManager<Function> : Skipping NOP
-- 2. VectorCombinePass

----------------------------------------
define <4 x double> @PR60649() {
%entry:
  br label %end

%unreachable:
  br label %end

%end:
  %t0 = phi <4 x double> [ { 0.000000, 0.000000, 0.000000, 0.000000 }, %entry ], [ { 0.000000, 0.000000, 0.000000, 0.000000 }, %unreachable ]
  %t1 = phi <4 x double> [ { 0.000000, 0.000000, 0.000000, 0.000000 }, %entry ], [ { 0.000000, 0.000000, 0.000000, 0.000000 }, %unreachable ]
  %t2 = shufflevector <4 x double> { 0.000000, 0.000000, 0.000000, 0.000000 }, <4 x double> { 0.000000, 0.000000, 0.000000, 0.000000 }, 0, 0, 1, 1
  %t3 = fdiv <4 x double> %t0, %t2
  %t4 = fmul <4 x double> %t0, %t2
  %t5 = shufflevector <4 x double> %t3, <4 x double> %t4, 0, 1, 6, 7
  ret <4 x double> %t5
}
Transformation seems to be correct! (syntactically equal)

-- 3. VectorCombinePass

----------------------------------------
define <4 x double> @PR60649() {
%entry:
  br label %end

%end:
  %t0 = phi <4 x double> [ { 0.000000, 0.000000, 0.000000, 0.000000 }, %entry ]
  %t2 = shufflevector <4 x double> { 0.000000, 0.000000, 0.000000, 0.000000 }, <4 x double> { 0.000000, 0.000000, 0.000000, 0.000000 }, 0, 0, 1, 1
  %t3 = fdiv <4 x double> %t0, %t2
  %t4 = fmul <4 x double> %t0, %t2
  %t5 = shufflevector <4 x double> %t3, <4 x double> %t4, 0, 1, 6, 7
  ret <4 x double> %t5
}
=>
define <4 x double> @PR60649() {
%entry:
  br label %end

%end:
  %t0 = phi <4 x double> [ { 0.000000, 0.000000, 0.000000, 0.000000 }, %entry ]
  %0 = shufflevector <4 x double> %t0, <4 x double> %t0, 2, 3, 4294967295, 4294967295
  %1 = shufflevector <4 x double> %t0, <4 x double> %t0, 0, 1, 4294967295, 4294967295
  %2 = fdiv <4 x double> %1, { 0.000000, 0.000000, undef, undef }
  %3 = fmul <4 x double> %0, { 0.000000, 0.000000, undef, undef }
  %t5 = shufflevector <4 x double> %2, <4 x double> %3, 0, 1, 4, 5
  ret <4 x double> %t5
}
Transformation doesn't verify! (unsound)
ERROR: Target's return value is more undefined

Example:

Source:
  >> Jump to %end
<4 x double> %t0 = < #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >
<4 x double> %t2 = < #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >
<4 x double> %t3 = < #x7ff0000000000000 (+oo), #x7ff0000000000000 (+oo), #x7ff0000000000000 (+oo), #x7ff0000000000000 (+oo) >
<4 x double> %t4 = < #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >
<4 x double> %t5 = < #x7ff0000000000000 (+oo), #x7ff0000000000000 (+oo), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >

Target:
  >> Jump to %end
<4 x double> %t0 = < #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >
<4 x double> %0 = < #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), poison, poison >
<4 x double> %1 = < #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), poison, poison >
<4 x double> %2 = < #x7ff0000000010000 (SNaN), #x7ff0004000000000 (SNaN), poison, poison >
<4 x double> %3 = < #x0000000000000000 (+0.0), #x0000000000000000 (+0.0), poison, poison >
<4 x double> %t5 = < #x7ff0000000010000 (SNaN), #x7ff0004000000000 (SNaN), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >
Source value: < #x7ff0000000000000 (+oo), #x7ff0000000000000 (+oo), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >
Target value: < #x7ff0000000010000 (SNaN), #x7ff0004000000000 (SNaN), #x0000000000000000 (+0.0), #x0000000000000000 (+0.0) >

Pass: VectorCombinePass
Command line: '/home/nlopes/llvm/build/bin/opt' '-load=/home/nlopes/alive2/build/tv/tv.so' '-load-pass-plugin=/home/nlopes/alive2/build/tv/tv.so' '-tv-exit-on-error' '-passes=vector-combine' '-S' '-mtriple=x86_64--' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'
Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_rh8DrEA0_WlUq.bc"


------------------- SMT STATS -------------------
Num queries: 4
Num invalid: 0
Num skips:   0
Num trivial: 47 (92.2%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     4 (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 -passes=vector-combine -S -mtriple=x86_64--
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/VectorCombine/X86/select-shuffle.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/VectorCombine/X86/select-shuffle.ll

 

<-- Back