Resolve bug 2947: vararg-marked functions must spill registers R3-R79 to stack
[oota-llvm.git] / test / CodeGen / CellSPU / extract_elt.ll
1 ; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s
2 ; RUN: llvm-as -o - %s | llc -march=cellspu -mattr=large_mem > %t2.s
3 ; RUN: grep shufb %t1.s | count 27
4 ; RUN: grep   lqa %t1.s | count 27
5 ; RUN: grep   lqd %t2.s | count 27
6 ; RUN: grep space %t1.s | count 8
7 ; RUN: grep  byte %t1.s | count 424
8 target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128"
9 target triple = "spu"
10
11 define i32 @i32_extract_0(<4 x i32> %v) {
12 entry:
13   %a = extractelement <4 x i32> %v, i32 0
14   ret i32 %a
15 }
16
17 define i32 @i32_extract_1(<4 x i32> %v) {
18 entry:
19   %a = extractelement <4 x i32> %v, i32 1
20   ret i32 %a
21 }
22
23 define i32 @i32_extract_2(<4 x i32> %v) {
24 entry:
25   %a = extractelement <4 x i32> %v, i32 2
26   ret i32 %a
27 }
28
29 define i32 @i32_extract_3(<4 x i32> %v) {
30 entry:
31   %a = extractelement <4 x i32> %v, i32 3
32   ret i32 %a
33 }
34
35 define i16 @i16_extract_0(<8 x i16> %v) {
36 entry:
37   %a = extractelement <8 x i16> %v, i32 0
38   ret i16 %a
39 }
40
41 define i16 @i16_extract_1(<8 x i16> %v) {
42 entry:
43   %a = extractelement <8 x i16> %v, i32 1
44   ret i16 %a
45 }
46
47 define i16 @i16_extract_2(<8 x i16> %v) {
48 entry:
49   %a = extractelement <8 x i16> %v, i32 2
50   ret i16 %a
51 }
52
53 define i16 @i16_extract_3(<8 x i16> %v) {
54 entry:
55   %a = extractelement <8 x i16> %v, i32 3
56   ret i16 %a
57 }
58
59 define i16 @i16_extract_4(<8 x i16> %v) {
60 entry:
61   %a = extractelement <8 x i16> %v, i32 4
62   ret i16 %a
63 }
64
65 define i16 @i16_extract_5(<8 x i16> %v) {
66 entry:
67   %a = extractelement <8 x i16> %v, i32 5
68   ret i16 %a
69 }
70
71 define i16 @i16_extract_6(<8 x i16> %v) {
72 entry:
73   %a = extractelement <8 x i16> %v, i32 6
74   ret i16 %a
75 }
76
77 define i16 @i16_extract_7(<8 x i16> %v) {
78 entry:
79   %a = extractelement <8 x i16> %v, i32 7
80   ret i16 %a
81 }
82
83 define i8 @i8_extract_0(<16 x i8> %v) {
84 entry:
85   %a = extractelement <16 x i8> %v, i32 0
86   ret i8 %a
87 }
88
89 define i8 @i8_extract_1(<16 x i8> %v) {
90 entry:
91   %a = extractelement <16 x i8> %v, i32 1
92   ret i8 %a
93 }
94
95 define i8 @i8_extract_2(<16 x i8> %v) {
96 entry:
97   %a = extractelement <16 x i8> %v, i32 2
98   ret i8 %a
99 }
100
101 define i8 @i8_extract_3(<16 x i8> %v) {
102 entry:
103   %a = extractelement <16 x i8> %v, i32 3
104   ret i8 %a
105 }
106
107 define i8 @i8_extract_4(<16 x i8> %v) {
108 entry:
109   %a = extractelement <16 x i8> %v, i32 4
110   ret i8 %a
111 }
112
113 define i8 @i8_extract_5(<16 x i8> %v) {
114 entry:
115   %a = extractelement <16 x i8> %v, i32 5
116   ret i8 %a
117 }
118
119 define i8 @i8_extract_6(<16 x i8> %v) {
120 entry:
121   %a = extractelement <16 x i8> %v, i32 6
122   ret i8 %a
123 }
124
125 define i8 @i8_extract_7(<16 x i8> %v) {
126 entry:
127   %a = extractelement <16 x i8> %v, i32 7
128   ret i8 %a
129 }
130
131 define i8 @i8_extract_8(<16 x i8> %v) {
132 entry:
133   %a = extractelement <16 x i8> %v, i32 8
134   ret i8 %a
135 }
136
137 define i8 @i8_extract_9(<16 x i8> %v) {
138 entry:
139   %a = extractelement <16 x i8> %v, i32 9
140   ret i8 %a
141 }
142
143 define i8 @i8_extract_10(<16 x i8> %v) {
144 entry:
145   %a = extractelement <16 x i8> %v, i32 10
146   ret i8 %a
147 }
148
149 define i8 @i8_extract_11(<16 x i8> %v) {
150 entry:
151   %a = extractelement <16 x i8> %v, i32 11
152   ret i8 %a
153 }
154
155 define i8 @i8_extract_12(<16 x i8> %v) {
156 entry:
157   %a = extractelement <16 x i8> %v, i32 12
158   ret i8 %a
159 }
160
161 define i8 @i8_extract_13(<16 x i8> %v) {
162 entry:
163   %a = extractelement <16 x i8> %v, i32 13
164   ret i8 %a
165 }
166
167 define i8 @i8_extract_14(<16 x i8> %v) {
168 entry:
169   %a = extractelement <16 x i8> %v, i32 14
170   ret i8 %a
171 }
172
173 define i8 @i8_extract_15(<16 x i8> %v) {
174 entry:
175   %a = extractelement <16 x i8> %v, i32 15
176   ret i8 %a
177 }