Test Failure: Transforms/SLPVectorizer/AMDGPU/crash_extract_subvector_cost.ll

Test source: git

Log:

Source: /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/AMDGPU/crash_extract_subvector_cost.ll
-- 1. ModuleToFunctionPassAdaptor
-- 1. PassManager<Function> : Skipping NOP
-- 2. SLPVectorizerPass

----------------------------------------
define <2 x i16> @uadd_sat_v9i16_combine_vi16(<9 x i16> %arg0, <9 x i16> %arg1) {
%bb:
  %arg0.1 = extractelement <9 x i16> undef, i64 7
  %arg0.2 = extractelement <9 x i16> %arg0, i64 8
  %arg1.1 = extractelement <9 x i16> %arg1, i64 7
  %arg1.2 = extractelement <9 x i16> %arg1, i64 8
  %add.1 = uadd_sat i16 %arg0.1, %arg1.1
  %add.2 = uadd_sat i16 %arg0.2, %arg1.2
  %ins.1 = insertelement <2 x i16> undef, i16 %add.1, i64 0
  %ins.2 = insertelement <2 x i16> %ins.1, i16 %add.2, i64 1
  ret <2 x i16> %ins.2
}
Transformation seems to be correct! (syntactically equal)

-- 3. SLPVectorizerPass

----------------------------------------
define <2 x i16> @uadd_sat_v9i16_combine_vi16(<9 x i16> %arg0, <9 x i16> %arg1) {
%bb:
  %arg0.1 = extractelement <9 x i16> undef, i64 7
  %arg0.2 = extractelement <9 x i16> %arg0, i64 8
  %arg1.1 = extractelement <9 x i16> %arg1, i64 7
  %arg1.2 = extractelement <9 x i16> %arg1, i64 8
  %add.1 = uadd_sat i16 %arg0.1, %arg1.1
  %add.2 = uadd_sat i16 %arg0.2, %arg1.2
  %ins.1 = insertelement <2 x i16> undef, i16 %add.1, i64 0
  %ins.2 = insertelement <2 x i16> %ins.1, i16 %add.2, i64 1
  ret <2 x i16> %ins.2
}
=>
define <2 x i16> @uadd_sat_v9i16_combine_vi16(<9 x i16> %arg0, <9 x i16> %arg1) {
%bb:
  %0 = shufflevector <9 x i16> %arg0, <9 x i16> poison, 4294967295, 8
  %1 = shufflevector <9 x i16> %arg1, <9 x i16> poison, 7, 8
  %2 = uadd_sat <2 x i16> %0, %1
  ret <2 x i16> %2
}
Transformation doesn't verify! (unsound)
ERROR: Target is more poisonous than source

Example:
<9 x i16> %arg0 = < poison, poison, poison, poison, poison, poison, poison, poison, poison >
<9 x i16> %arg1 = < poison, poison, poison, poison, poison, poison, poison, #x0000 (0)	[based on undef value], poison >

Source:
i16 %arg0.1 = #x0000 (0)	[based on undef value]
i16 %arg0.2 = poison
i16 %arg1.1 = #x0000 (0)
i16 %arg1.2 = poison
i16 %add.1 = #x0000 (0)
i16 %add.2 = poison
<2 x i16> %ins.1 = < #x0000 (0), #x0000 (0) >
<2 x i16> %ins.2 = < #x0000 (0), poison >

Target:
<2 x i16> %0 = < poison, poison >
<2 x i16> %1 = < #x0000 (0), poison >
<2 x i16> %2 = < poison, poison >
Source value: < #x0000 (0), poison >
Target value: < poison, poison >

Pass: SLPVectorizerPass
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' '-S' '-mtriple=amdgcn-amd-amdhsa' '-mcpu=gfx900' '-passes=slp-vectorizer' '/bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/AMDGPU/crash_extract_subvector_cost.ll' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'
Wrote bitcode to: "/home/nlopes/alive2/build/logs/crash_extract_subvector_cost_fVoED4jV_ULt2.bc"


------------------- SMT STATS -------------------
Num queries: 31
Num invalid: 0
Num skips:   0
Num trivial: 11 (26.2%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     31 (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 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -passes=slp-vectorizer /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/AMDGPU/crash_extract_subvector_cost.ll
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/AMDGPU/crash_extract_subvector_cost.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/AMDGPU/crash_extract_subvector_cost.ll

 

<-- Back