blob: 0987e2b5beccd9cf9d316fd85c0c2b50be339369 [file] [log] [blame]
Scott Michel0e5665b2007-12-19 21:17:42 +00001; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s
Scott Michel7a1c9e92008-11-22 23:50:42 +00002; RUN: grep shufb %t1.s | count 39
Scott Michel104de432008-11-24 17:11:17 +00003; RUN: grep ilhu %t1.s | count 27
4; RUN: grep iohl %t1.s | count 27
Scott Michel7a1c9e92008-11-22 23:50:42 +00005; RUN: grep lqa %t1.s | count 10
Scott Michel104de432008-11-24 17:11:17 +00006; RUN: grep shlqbyi %t1.s | count 12
7; RUN: grep 515 %t1.s | count 1
Scott Michel7a1c9e92008-11-22 23:50:42 +00008; RUN: grep 1029 %t1.s | count 2
9; RUN: grep 1543 %t1.s | count 2
10; RUN: grep 2057 %t1.s | count 2
11; RUN: grep 2571 %t1.s | count 2
12; RUN: grep 3085 %t1.s | count 2
13; RUN: grep 3599 %t1.s | count 2
14; RUN: grep 32768 %t1.s | count 1
15; RUN: grep 32769 %t1.s | count 1
16; RUN: grep 32770 %t1.s | count 1
17; RUN: grep 32771 %t1.s | count 1
18; RUN: grep 32772 %t1.s | count 1
19; RUN: grep 32773 %t1.s | count 1
20; RUN: grep 32774 %t1.s | count 1
21; RUN: grep 32775 %t1.s | count 1
22; RUN: grep 32776 %t1.s | count 1
23; RUN: grep 32777 %t1.s | count 1
24; RUN: grep 32778 %t1.s | count 1
25; RUN: grep 32779 %t1.s | count 1
26; RUN: grep 32780 %t1.s | count 1
27; RUN: grep 32781 %t1.s | count 1
28; RUN: grep 32782 %t1.s | count 1
29; RUN: grep 32783 %t1.s | count 1
30; RUN: grep 32896 %t1.s | count 24
Bill Wendling39ccca32008-11-25 00:56:34 +000031; XFAIL: *
Scott Michel7a1c9e92008-11-22 23:50:42 +000032
Scott Michel9de5d0d2008-01-11 02:53:15 +000033target 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"
34target triple = "spu"
Scott Michel0e5665b2007-12-19 21:17:42 +000035
36define i32 @i32_extract_0(<4 x i32> %v) {
37entry:
38 %a = extractelement <4 x i32> %v, i32 0
39 ret i32 %a
40}
41
42define i32 @i32_extract_1(<4 x i32> %v) {
43entry:
44 %a = extractelement <4 x i32> %v, i32 1
45 ret i32 %a
46}
47
48define i32 @i32_extract_2(<4 x i32> %v) {
49entry:
50 %a = extractelement <4 x i32> %v, i32 2
51 ret i32 %a
52}
53
54define i32 @i32_extract_3(<4 x i32> %v) {
55entry:
56 %a = extractelement <4 x i32> %v, i32 3
57 ret i32 %a
58}
59
60define i16 @i16_extract_0(<8 x i16> %v) {
61entry:
62 %a = extractelement <8 x i16> %v, i32 0
63 ret i16 %a
64}
65
66define i16 @i16_extract_1(<8 x i16> %v) {
67entry:
68 %a = extractelement <8 x i16> %v, i32 1
69 ret i16 %a
70}
71
72define i16 @i16_extract_2(<8 x i16> %v) {
73entry:
74 %a = extractelement <8 x i16> %v, i32 2
75 ret i16 %a
76}
77
78define i16 @i16_extract_3(<8 x i16> %v) {
79entry:
80 %a = extractelement <8 x i16> %v, i32 3
81 ret i16 %a
82}
83
84define i16 @i16_extract_4(<8 x i16> %v) {
85entry:
86 %a = extractelement <8 x i16> %v, i32 4
87 ret i16 %a
88}
89
90define i16 @i16_extract_5(<8 x i16> %v) {
91entry:
92 %a = extractelement <8 x i16> %v, i32 5
93 ret i16 %a
94}
95
96define i16 @i16_extract_6(<8 x i16> %v) {
97entry:
98 %a = extractelement <8 x i16> %v, i32 6
99 ret i16 %a
100}
101
102define i16 @i16_extract_7(<8 x i16> %v) {
103entry:
104 %a = extractelement <8 x i16> %v, i32 7
105 ret i16 %a
106}
107
108define i8 @i8_extract_0(<16 x i8> %v) {
109entry:
110 %a = extractelement <16 x i8> %v, i32 0
111 ret i8 %a
112}
113
114define i8 @i8_extract_1(<16 x i8> %v) {
115entry:
116 %a = extractelement <16 x i8> %v, i32 1
117 ret i8 %a
118}
119
120define i8 @i8_extract_2(<16 x i8> %v) {
121entry:
122 %a = extractelement <16 x i8> %v, i32 2
123 ret i8 %a
124}
125
126define i8 @i8_extract_3(<16 x i8> %v) {
127entry:
128 %a = extractelement <16 x i8> %v, i32 3
129 ret i8 %a
130}
131
132define i8 @i8_extract_4(<16 x i8> %v) {
133entry:
134 %a = extractelement <16 x i8> %v, i32 4
135 ret i8 %a
136}
137
138define i8 @i8_extract_5(<16 x i8> %v) {
139entry:
140 %a = extractelement <16 x i8> %v, i32 5
141 ret i8 %a
142}
143
144define i8 @i8_extract_6(<16 x i8> %v) {
145entry:
146 %a = extractelement <16 x i8> %v, i32 6
147 ret i8 %a
148}
149
150define i8 @i8_extract_7(<16 x i8> %v) {
151entry:
152 %a = extractelement <16 x i8> %v, i32 7
153 ret i8 %a
154}
155
156define i8 @i8_extract_8(<16 x i8> %v) {
157entry:
158 %a = extractelement <16 x i8> %v, i32 8
159 ret i8 %a
160}
161
162define i8 @i8_extract_9(<16 x i8> %v) {
163entry:
164 %a = extractelement <16 x i8> %v, i32 9
165 ret i8 %a
166}
167
168define i8 @i8_extract_10(<16 x i8> %v) {
169entry:
170 %a = extractelement <16 x i8> %v, i32 10
171 ret i8 %a
172}
173
174define i8 @i8_extract_11(<16 x i8> %v) {
175entry:
176 %a = extractelement <16 x i8> %v, i32 11
177 ret i8 %a
178}
179
180define i8 @i8_extract_12(<16 x i8> %v) {
181entry:
182 %a = extractelement <16 x i8> %v, i32 12
183 ret i8 %a
184}
185
186define i8 @i8_extract_13(<16 x i8> %v) {
187entry:
188 %a = extractelement <16 x i8> %v, i32 13
189 ret i8 %a
190}
191
192define i8 @i8_extract_14(<16 x i8> %v) {
193entry:
194 %a = extractelement <16 x i8> %v, i32 14
195 ret i8 %a
196}
197
198define i8 @i8_extract_15(<16 x i8> %v) {
199entry:
200 %a = extractelement <16 x i8> %v, i32 15
201 ret i8 %a
202}
Scott Michel7a1c9e92008-11-22 23:50:42 +0000203
204;;--------------------------------------------------------------------------
205;; extract element, variable index:
206;;--------------------------------------------------------------------------
207
208define i8 @extract_varadic_i8(i32 %i) nounwind readnone {
209entry:
210 %0 = extractelement <16 x i8> < i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, i32 %i
211 ret i8 %0
212}
213
214define i8 @extract_varadic_i8_1(<16 x i8> %v, i32 %i) nounwind readnone {
215entry:
216 %0 = extractelement <16 x i8> %v, i32 %i
217 ret i8 %0
218}
219
220define i16 @extract_varadic_i16(i32 %i) nounwind readnone {
221entry:
222 %0 = extractelement <8 x i16> < i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, i32 %i
223 ret i16 %0
224}
225
226define i16 @extract_varadic_i16_1(<8 x i16> %v, i32 %i) nounwind readnone {
227entry:
228 %0 = extractelement <8 x i16> %v, i32 %i
229 ret i16 %0
230}
231
232define i32 @extract_varadic_i32(i32 %i) nounwind readnone {
233entry:
234 %0 = extractelement <4 x i32> < i32 0, i32 1, i32 2, i32 3>, i32 %i
235 ret i32 %0
236}
237
238define i32 @extract_varadic_i32_1(<4 x i32> %v, i32 %i) nounwind readnone {
239entry:
240 %0 = extractelement <4 x i32> %v, i32 %i
241 ret i32 %0
242}
243
244define float @extract_varadic_f32(i32 %i) nounwind readnone {
245entry:
246 %0 = extractelement <4 x float> < float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00 >, i32 %i
247 ret float %0
248}
249
250define float @extract_varadic_f32_1(<4 x float> %v, i32 %i) nounwind readnone {
251entry:
252 %0 = extractelement <4 x float> %v, i32 %i
253 ret float %0
254}
255
256define i64 @extract_varadic_i64(i32 %i) nounwind readnone {
257entry:
258 %0 = extractelement <2 x i64> < i64 0, i64 1>, i32 %i
259 ret i64 %0
260}
261
262define i64 @extract_varadic_i64_1(<2 x i64> %v, i32 %i) nounwind readnone {
263entry:
264 %0 = extractelement <2 x i64> %v, i32 %i
265 ret i64 %0
266}
267
268define double @extract_varadic_f64(i32 %i) nounwind readnone {
269entry:
270 %0 = extractelement <2 x double> < double 1.000000e+00, double 2.000000e+00>, i32 %i
271 ret double %0
272}
273
274define double @extract_varadic_f64_1(<2 x double> %v, i32 %i) nounwind readnone {
275entry:
276 %0 = extractelement <2 x double> %v, i32 %i
277 ret double %0
278}