Test source: git
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!
+ : '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