blob: ee16cc04b22f523891376e8cc13bad31f0bd8935 [file] [log] [blame]
Chris Lattner6bf97912006-03-22 19:12:46 +00001; Test that vectors are scalarized/lowered correctly.
2; RUN: llvm-as < %s | llc -march=ppc32 -mcpu=g5 | grep vspltw | wc -l | grep 2 &&
3; RUN: llvm-as < %s | llc -march=ppc32 -mcpu=g3 | grep stfs | wc -l | grep 4
Chris Lattnerb45854f2006-03-25 06:11:56 +00004; RUN: llvm-as < %s | llc -march=ppc32 -mcpu=g5 | grep vsplti | wc -l | grep 2
Chris Lattner6bf97912006-03-22 19:12:46 +00005
6%f4 = type <4 x float>
7%i4 = type <4 x int>
8
9implementation
10
11void %splat(%f4* %P, %f4* %Q, float %X) {
12 %tmp = insertelement %f4 undef, float %X, uint 0
13 %tmp2 = insertelement %f4 %tmp, float %X, uint 1
14 %tmp4 = insertelement %f4 %tmp2, float %X, uint 2
15 %tmp6 = insertelement %f4 %tmp4, float %X, uint 3
16 %q = load %f4* %Q
17 %R = add %f4 %q, %tmp6
18 store %f4 %R, %f4* %P
19 ret void
20}
21
22void %splat_i4(%i4* %P, %i4* %Q, int %X) {
23 %tmp = insertelement %i4 undef, int %X, uint 0
24 %tmp2 = insertelement %i4 %tmp, int %X, uint 1
25 %tmp4 = insertelement %i4 %tmp2, int %X, uint 2
26 %tmp6 = insertelement %i4 %tmp4, int %X, uint 3
27 %q = load %i4* %Q
28 %R = add %i4 %q, %tmp6
29 store %i4 %R, %i4* %P
30 ret void
31}
32
Chris Lattnerb45854f2006-03-25 06:11:56 +000033void %splat_imm_i32(%i4* %P, %i4* %Q, int %X) {
34 %q = load %i4* %Q
35 %R = add %i4 %q, <int -1, int -1, int -1, int -1>
36 store %i4 %R, %i4* %P
37 ret void
38}
39
40void %splat_imm_i16(%i4* %P, %i4* %Q, int %X) {
41 %q = load %i4* %Q
42 %R = add %i4 %q, <int 65537, int 65537, int 65537, int 65537>
43 store %i4 %R, %i4* %P
44 ret void
45}
46