Test source: git
Comments: Alive2: no support for "vector-function-abi-variant"
Source: /home/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/vectorizable-functions.ll ---------------------------------------- define <4 x float> @memread_4x(* %a) { %entry: %0 = load <4 x float>, * %a, align 16 %vecext = extractelement <4 x float> %0, i32 0 %1 = call float @memread(float %vecext) nowrite NNaN nofree %vecins = insertelement <4 x float> undef, float %1, i32 0 %vecext.1 = extractelement <4 x float> %0, i32 1 %2 = call float @memread(float %vecext.1) nowrite NNaN nofree %vecins.1 = insertelement <4 x float> %vecins, float %2, i32 1 %vecext.2 = extractelement <4 x float> %0, i32 2 %3 = call float @memread(float %vecext.2) nowrite NNaN nofree %vecins.2 = insertelement <4 x float> %vecins.1, float %3, i32 2 %vecext.3 = extractelement <4 x float> %0, i32 3 %4 = call float @memread(float %vecext.3) nowrite NNaN nofree %vecins.3 = insertelement <4 x float> %vecins.2, float %4, i32 3 ret <4 x float> %vecins.3 } => define <4 x float> @memread_4x(* %a) { %entry: %0 = load <4 x float>, * %a, align 16 %1 = call <4 x float> @vmemread(<4 x float> %0) NNaN %2 = extractelement <4 x float> %1, i32 0 %vecins = insertelement <4 x float> undef, float %2, i32 0 %3 = extractelement <4 x float> %1, i32 1 %vecins.1 = insertelement <4 x float> %vecins, float %3, i32 1 %4 = extractelement <4 x float> %1, i32 2 %vecins.2 = insertelement <4 x float> %vecins.1, float %4, i32 2 %5 = extractelement <4 x float> %1, i32 3 %vecins.3 = insertelement <4 x float> %vecins.2, float %5, i32 3 ret <4 x float> %vecins.3 } Transformation doesn't verify! ERROR: Source is more defined than target Example: * %a = pointer(non-local, block_id=1, offset=96) Source: <4 x float> %0 = < #x00000002 (0.000000000000?), #x40000000 (2), #x00000001 (0.000000000000?), #x00000000 (+0.0) > float %vecext = #x00000002 (0.000000000000?) float %1 = #x00000001 (0.000000000000?) <4 x float> %vecins = < #x00000001 (0.000000000000?), #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) > float %vecext.1 = #x40000000 (2) float %2 = #x00000001 (0.000000000000?) <4 x float> %vecins.1 = < #x00000001 (0.000000000000?), #x00000001 (0.000000000000?), #x00000000 (+0.0), #x00000000 (+0.0) > float %vecext.2 = #x00000001 (0.000000000000?) float %3 = #x00000001 (0.000000000000?) <4 x float> %vecins.2 = < #x00000001 (0.000000000000?), #x00000001 (0.000000000000?), #x00000001 (0.000000000000?), #x00000000 (+0.0) > float %vecext.3 = #x00000000 (+0.0) float %4 = #x00000001 (0.000000000000?) <4 x float> %vecins.3 = < #x00000001 (0.000000000000?), #x00000001 (0.000000000000?), #x00000001 (0.000000000000?), #x00000001 (0.000000000000?) > SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 Block 1 > size: 128 align: 16 alloc type: 0 Block 2 > align: 2 alloc type: 0 Target: <4 x float> %0 = < #x00000002 (0.000000000000?), #x40000000 (2), #x00000001 (0.000000000000?), #x00000000 (+0.0) > <4 x float> %1 = < #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) > float %2 = #x00000000 (+0.0) <4 x float> %vecins = < #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) > float %3 = #x00000000 (+0.0) <4 x float> %vecins.1 = < #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) > float %4 = #x00000000 (+0.0) <4 x float> %vecins.2 = < #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) > float %5 = #x00000000 (+0.0) <4 x float> %vecins.3 = < #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0), #x00000000 (+0.0) > ------------------- SMT STATS ------------------- Num queries: 2 Num invalid: 0 Num skips: 0 Num trivial: 0 (0.0%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 2 (100.0%) Num UNSAT: 0 (0.0%)
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -slp-vectorizer -S /home/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/vectorizable-functions.ll + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/vectorizable-functions.ll Alive2: Transform doesn't verify; aborting! FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/vectorizable-functions.ll