]>
Commit | Line | Data |
---|---|---|
76c7f98f | 1 | /* { dg-do compile } */ |
7909149d | 2 | /* { dg-options "-mcpu=8540 -mspe -mabi=spe -mfloat-gprs=single -O0" } */ |
76c7f98f | 3 | /* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */ |
d4b291dc | 4 | |
5 | /* (Test with -O0 so we don't optimize any of them away). */ | |
6 | ||
7 | #include <spe.h> | |
8 | ||
9 | /* Test PowerPC SPE extensions. */ | |
10 | ||
11 | #define vector __attribute__((vector_size(8))) | |
12 | ||
13 | vector int a, b, c, *ap; | |
14 | vector float f, g, h; | |
15 | unsigned int *uip; | |
16 | unsigned short *usp; | |
17 | int i, j, *ip; | |
18 | uint64_t ull; | |
19 | int64_t sll; | |
20 | unsigned ui; | |
21 | float fl; | |
22 | uint16_t u16; | |
23 | int16_t s16; | |
24 | ||
2fbe7a32 | 25 | /* These are the only documented/supported accessor functions for the |
d4b291dc | 26 | SPE builtins. */ |
27 | void | |
28 | test_api () | |
29 | { | |
ff7c949a | 30 | c = __ev_addw (a, b); |
31 | c = __ev_addiw (a, 8); | |
32 | c = __ev_subfw (a, b); | |
33 | c = __ev_subifw (8, a); | |
34 | c = __ev_abs (a); | |
35 | c = __ev_neg (a); | |
36 | c = __ev_extsb (a); | |
37 | c = __ev_extsh (a); | |
38 | c = __ev_and (a, b); | |
39 | c = __ev_or (a, b); | |
40 | c = __ev_xor (a, b); | |
41 | c = __ev_nand (a, b); | |
42 | c = __ev_nor (a, b); | |
43 | c = __ev_eqv (a, b); | |
44 | c = __ev_andc (a, b); | |
45 | c = __ev_orc (a, b); | |
46 | c = __ev_rlw (a, b); | |
47 | c = __ev_rlwi (a, 8); | |
48 | c = __ev_slw (a, b); | |
49 | c = __ev_slwi (a, 8); | |
50 | c = __ev_srws (a, b); | |
51 | c = __ev_srwu (a, b); | |
52 | c = __ev_srwis (a, 8); | |
53 | c = __ev_srwiu (a, 8); | |
54 | c = __ev_cntlzw (a); | |
55 | c = __ev_cntlsw (a); | |
56 | c = __ev_rndw (a); | |
57 | c = __ev_mergehi (a, b); | |
58 | c = __ev_mergelo (a, b); | |
59 | c = __ev_mergelohi (a, b); | |
60 | c = __ev_mergehilo (a, b); | |
61 | c = __ev_splati (5); | |
62 | c = __ev_splatfi (6); | |
63 | c = __ev_divws (a, b); | |
64 | c = __ev_divwu (a, b); | |
65 | c = __ev_mra (a); | |
66 | i = __brinc (5, 6); | |
d4b291dc | 67 | |
68 | /* Loads. */ | |
ff7c949a | 69 | c = __ev_lddx (ap, i); |
70 | c = __ev_ldwx (ap, i); | |
71 | c = __ev_ldhx (ap, i); | |
72 | ||
73 | c = __ev_lwhex (uip, i); | |
74 | c = __ev_lwhoux (uip, i); | |
75 | c = __ev_lwhosx (uip, i); | |
76 | c = __ev_lwwsplatx (uip, i); | |
77 | c = __ev_lwhsplatx (uip, i); | |
78 | ||
79 | c = __ev_lhhesplatx (usp, i); | |
80 | c = __ev_lhhousplatx (usp, i); | |
81 | c = __ev_lhhossplatx (usp, i); | |
82 | ||
83 | c = __ev_ldd (ap, 5); | |
84 | c = __ev_ldw (ap, 6); | |
85 | c = __ev_ldh (ap, 7); | |
86 | c = __ev_lwhe (uip, 6); | |
87 | c = __ev_lwhou (uip, 6); | |
88 | c = __ev_lwhos (uip, 7); | |
89 | c = __ev_lwwsplat (uip, 7); | |
90 | c = __ev_lwhsplat (uip, 7); | |
91 | c = __ev_lhhesplat (usp, 7); | |
92 | c = __ev_lhhousplat (usp, 7); | |
93 | c = __ev_lhhossplat (usp, 7); | |
d4b291dc | 94 | |
95 | /* Stores. */ | |
96 | __ev_stddx (a, ap, 9); | |
97 | __ev_stdwx (a, ap, 9); | |
98 | __ev_stdhx (a, ap, 9); | |
99 | __ev_stwwex (a, uip, 9); | |
100 | __ev_stwwox (a, uip, 9); | |
101 | __ev_stwhex (a, uip, 9); | |
102 | __ev_stwhox (a, uip, 9); | |
103 | __ev_stdd (a, ap, 9); | |
104 | __ev_stdw (a, ap, 9); | |
105 | __ev_stdh (a, ap, 9); | |
106 | __ev_stwwe (a, uip, 9); | |
107 | __ev_stwwo (a, uip, 9); | |
108 | __ev_stwhe (a, uip, 9); | |
109 | __ev_stwho (a, uip, 9); | |
110 | ||
111 | /* Fixed point complex. */ | |
ff7c949a | 112 | c = __ev_mhossf (a, b); |
113 | c = __ev_mhosmf (a, b); | |
114 | c = __ev_mhosmi (a, b); | |
115 | c = __ev_mhoumi (a, b); | |
116 | c = __ev_mhessf (a, b); | |
117 | c = __ev_mhesmf (a, b); | |
118 | c = __ev_mhesmi (a, b); | |
119 | c = __ev_mheumi (a, b); | |
120 | c = __ev_mhossfa (a, b); | |
121 | c = __ev_mhosmfa (a, b); | |
122 | c = __ev_mhosmia (a, b); | |
123 | c = __ev_mhoumia (a, b); | |
124 | c = __ev_mhessfa (a, b); | |
125 | c = __ev_mhesmfa (a, b); | |
126 | c = __ev_mhesmia (a, b); | |
127 | c = __ev_mheumia (a, b); | |
d4b291dc | 128 | |
129 | c = __ev_mhoumf (a, b); | |
130 | c = __ev_mheumf (a, b); | |
131 | c = __ev_mhoumfa (a, b); | |
132 | c = __ev_mheumfa (a, b); | |
133 | ||
ff7c949a | 134 | c = __ev_mhossfaaw (a, b); |
135 | c = __ev_mhossiaaw (a, b); | |
136 | c = __ev_mhosmfaaw (a, b); | |
137 | c = __ev_mhosmiaaw (a, b); | |
138 | c = __ev_mhousiaaw (a, b); | |
139 | c = __ev_mhoumiaaw (a, b); | |
140 | c = __ev_mhessfaaw (a, b); | |
141 | c = __ev_mhessiaaw (a, b); | |
142 | c = __ev_mhesmfaaw (a, b); | |
143 | c = __ev_mhesmiaaw (a, b); | |
144 | c = __ev_mheusiaaw (a, b); | |
145 | c = __ev_mheumiaaw (a, b); | |
d4b291dc | 146 | |
147 | c = __ev_mhousfaaw (a, b); | |
148 | c = __ev_mhoumfaaw (a, b); | |
149 | c = __ev_mheusfaaw (a, b); | |
150 | c = __ev_mheumfaaw (a, b); | |
151 | ||
ff7c949a | 152 | c = __ev_mhossfanw (a, b); |
153 | c = __ev_mhossianw (a, b); | |
154 | c = __ev_mhosmfanw (a, b); | |
155 | c = __ev_mhosmianw (a, b); | |
156 | c = __ev_mhousianw (a, b); | |
157 | c = __ev_mhoumianw (a, b); | |
158 | c = __ev_mhessfanw (a, b); | |
159 | c = __ev_mhessianw (a, b); | |
160 | c = __ev_mhesmfanw (a, b); | |
161 | c = __ev_mhesmianw (a, b); | |
162 | c = __ev_mheusianw (a, b); | |
163 | c = __ev_mheumianw (a, b); | |
d4b291dc | 164 | |
165 | c = __ev_mhousfanw (a, b); | |
166 | c = __ev_mhoumfanw (a, b); | |
167 | c = __ev_mheusfanw (a, b); | |
168 | c = __ev_mheumfanw (a, b); | |
169 | ||
ff7c949a | 170 | c = __ev_mhogsmfaa (a, b); |
171 | c = __ev_mhogsmiaa (a, b); | |
172 | c = __ev_mhogumiaa (a, b); | |
173 | c = __ev_mhegsmfaa (a, b); | |
174 | c = __ev_mhegsmiaa (a, b); | |
175 | c = __ev_mhegumiaa (a, b); | |
d4b291dc | 176 | |
177 | c = __ev_mhogumfaa (a, b); | |
178 | c = __ev_mhegumfaa (a, b); | |
179 | ||
ff7c949a | 180 | c = __ev_mhogsmfan (a, b); |
181 | c = __ev_mhogsmian (a, b); | |
182 | c = __ev_mhogumian (a, b); | |
183 | c = __ev_mhegsmfan (a, b); | |
184 | c = __ev_mhegsmian (a, b); | |
185 | c = __ev_mhegumian (a, b); | |
d4b291dc | 186 | |
187 | c = __ev_mhogumfan (a, b); | |
188 | c = __ev_mhegumfan (a, b); | |
189 | ||
ff7c949a | 190 | c = __ev_mwhssf (a, b); |
191 | c = __ev_mwhsmf (a, b); | |
192 | c = __ev_mwhsmi (a, b); | |
193 | c = __ev_mwhumi (a, b); | |
194 | c = __ev_mwhssfa (a, b); | |
195 | c = __ev_mwhsmfa (a, b); | |
196 | c = __ev_mwhsmia (a, b); | |
197 | c = __ev_mwhumia (a, b); | |
d4b291dc | 198 | |
199 | c = __ev_mwhumf (a, b); | |
200 | c = __ev_mwhumfa (a, b); | |
201 | ||
ff7c949a | 202 | c = __ev_mwlumi (a, b); |
203 | c = __ev_mwlumia (a, b); | |
204 | c = __ev_mwlumiaaw (a, b); | |
d4b291dc | 205 | |
ff7c949a | 206 | c = __ev_mwlssiaaw (a, b); |
207 | c = __ev_mwlsmiaaw (a, b); | |
208 | c = __ev_mwlusiaaw (a, b); | |
209 | c = __ev_mwlusiaaw (a, b); | |
d4b291dc | 210 | |
ff7c949a | 211 | c = __ev_mwlssianw (a, b); |
212 | c = __ev_mwlsmianw (a, b); | |
213 | c = __ev_mwlusianw (a, b); | |
214 | c = __ev_mwlumianw (a, b); | |
d4b291dc | 215 | |
216 | c = __ev_mwssf (a, b); | |
217 | c = __ev_mwsmf (a, b); | |
218 | c = __ev_mwsmi (a, b); | |
219 | c = __ev_mwumi (a, b); | |
220 | c = __ev_mwssfa (a, b); | |
221 | c = __ev_mwsmfa (a, b); | |
222 | c = __ev_mwsmia (a, b); | |
223 | c = __ev_mwumia (a, b); | |
224 | c = __ev_mwumf (a, b); | |
225 | c = __ev_mwumfa (a, b); | |
226 | c = __ev_mwssfaa (a, b); | |
227 | c = __ev_mwsmfaa (a, b); | |
228 | c = __ev_mwsmiaa (a, b); | |
229 | c = __ev_mwumiaa (a, b); | |
230 | c = __ev_mwumfaa (a, b); | |
231 | c = __ev_mwssfan (a, b); | |
232 | c = __ev_mwsmfan (a, b); | |
233 | c = __ev_mwsmian (a, b); | |
234 | c = __ev_mwumian (a, b); | |
235 | c = __ev_mwumfan (a, b); | |
236 | c = __ev_addssiaaw (a); | |
237 | c = __ev_addsmiaaw (a); | |
238 | c = __ev_addusiaaw (a); | |
239 | c = __ev_addumiaaw (a); | |
240 | c = __ev_addusfaaw (a); | |
241 | c = __ev_addumfaaw (a); | |
242 | c = __ev_addsmfaaw (a); | |
243 | c = __ev_addssfaaw (a); | |
244 | c = __ev_subfssiaaw (a); | |
245 | c = __ev_subfsmiaaw (a); | |
246 | c = __ev_subfusiaaw (a); | |
247 | c = __ev_subfumiaaw (a); | |
248 | c = __ev_subfusfaaw (a); | |
249 | c = __ev_subfumfaaw (a); | |
250 | c = __ev_subfsmfaaw (a); | |
251 | c = __ev_subfssfaaw (a); | |
252 | ||
253 | /* Floating point SIMD instructions. */ | |
254 | c = __ev_fsabs (a); | |
255 | c = __ev_fsnabs (a); | |
256 | c = __ev_fsneg (a); | |
257 | c = __ev_fsadd (a, b); | |
258 | c = __ev_fssub (a, b); | |
259 | c = __ev_fsmul (a, b); | |
260 | c = __ev_fsdiv (a, b); | |
261 | c = __ev_fscfui (a); | |
262 | c = __ev_fscfsi (a); | |
263 | c = __ev_fscfuf (a); | |
264 | c = __ev_fscfsf (a); | |
265 | c = __ev_fsctui (a); | |
266 | c = __ev_fsctsi (a); | |
267 | c = __ev_fsctuf (a); | |
268 | c = __ev_fsctsf (a); | |
269 | c = __ev_fsctuiz (a); | |
270 | c = __ev_fsctsiz (a); | |
271 | ||
272 | /* Non supported sythetic instructions made from two instructions. */ | |
273 | ||
274 | c = __ev_mwhssfaaw (a, b); | |
275 | c = __ev_mwhssiaaw (a, b); | |
276 | c = __ev_mwhsmfaaw (a, b); | |
277 | c = __ev_mwhsmiaaw (a, b); | |
278 | c = __ev_mwhusiaaw (a, b); | |
279 | c = __ev_mwhumiaaw (a, b); | |
280 | c = __ev_mwhusfaaw (a, b); | |
281 | c = __ev_mwhumfaaw (a, b); | |
282 | c = __ev_mwhssfanw (a, b); | |
283 | c = __ev_mwhssianw (a, b); | |
284 | c = __ev_mwhsmfanw (a, b); | |
285 | c = __ev_mwhsmianw (a, b); | |
286 | c = __ev_mwhusianw (a, b); | |
287 | c = __ev_mwhumianw (a, b); | |
288 | c = __ev_mwhusfanw (a, b); | |
289 | c = __ev_mwhumfanw (a, b); | |
290 | ||
291 | c = __ev_mwhgssfaa (a, b); | |
292 | c = __ev_mwhgsmfaa (a, b); | |
293 | c = __ev_mwhgsmiaa (a, b); | |
294 | c = __ev_mwhgumiaa (a, b); | |
295 | c = __ev_mwhgssfan (a, b); | |
296 | c = __ev_mwhgsmfan (a, b); | |
297 | c = __ev_mwhgsmian (a, b); | |
298 | c = __ev_mwhgumian (a, b); | |
299 | ||
300 | /* Creating, insertion, and extraction. */ | |
301 | ||
302 | a = __ev_create_u64 ((uint64_t) 55); | |
303 | a = __ev_create_s64 ((int64_t) 66); | |
304 | a = __ev_create_fs (3.14F, 2.18F); | |
305 | a = __ev_create_u32 ((uint32_t) 5, (uint32_t) i); | |
306 | a = __ev_create_s32 ((int32_t) 5, (int32_t) 6); | |
307 | a = __ev_create_u16 ((uint16_t) 6, (uint16_t) 6, (uint16_t) 7, (uint16_t) 1); | |
308 | a = __ev_create_s16 ((int16_t) 6, (int16_t) 6, (int16_t) 7, (int16_t) 9); | |
309 | a = __ev_create_sfix32_fs (3.0F, 2.0F); | |
310 | a = __ev_create_ufix32_fs (3.0F, 2.0F); | |
311 | a = __ev_create_ufix32_u32 (3U, 5U); | |
312 | a = __ev_create_sfix32_s32 (6, 9); | |
313 | ull = __ev_convert_u64 (a); | |
314 | sll = __ev_convert_s64 (a); | |
315 | i = __ev_get_upper_u32 (a); | |
316 | ui = __ev_get_lower_u32 (a); | |
317 | i = __ev_get_upper_s32 (a); | |
318 | i = __ev_get_lower_s32 (a); | |
319 | fl = __ev_get_upper_fs (a); | |
320 | fl = __ev_get_lower_fs (a); | |
321 | u16 = __ev_get_u16 (a, 5U); | |
322 | s16 = __ev_get_s16 (a, 5U); | |
323 | ui = __ev_get_upper_ufix32_u32 (a); | |
324 | ui = __ev_get_lower_ufix32_u32 (a); | |
325 | i = __ev_get_upper_sfix32_s32 (a); | |
326 | i = __ev_get_lower_sfix32_s32 (a); | |
327 | fl = __ev_get_upper_sfix32_fs (a); | |
328 | fl = __ev_get_lower_sfix32_fs (a); | |
329 | fl = __ev_get_upper_ufix32_fs (a); | |
330 | fl = __ev_get_lower_ufix32_fs (a); | |
331 | a = __ev_set_upper_u32 (a, 5U); | |
332 | a = __ev_set_lower_u32 (a, 5U); | |
333 | a = __ev_set_upper_s32 (a, 5U); | |
334 | a = __ev_set_lower_s32 (a, 6U); | |
335 | a = __ev_set_upper_fs (a, 6U); | |
336 | a = __ev_set_lower_fs (a, fl); | |
337 | a = __ev_set_upper_ufix32_u32 (a, 5U); | |
338 | a = __ev_set_lower_ufix32_u32 (a, 5U); | |
339 | a = __ev_set_upper_sfix32_s32 (a, 5); | |
340 | a = __ev_set_lower_sfix32_s32 (a, 5); | |
341 | a = __ev_set_upper_sfix32_fs (a, fl); | |
342 | a = __ev_set_lower_sfix32_fs (a, fl); | |
343 | a = __ev_set_upper_ufix32_fs (a, fl); | |
344 | a = __ev_set_lower_ufix32_fs (a, fl); | |
345 | a = __ev_set_acc_u64 ((uint64_t) 640); | |
346 | a = __ev_set_acc_s64 ((int64_t) 460); | |
347 | a = __ev_set_acc_vec64 (b); | |
348 | a = __ev_set_u32 (a, 5, 6); | |
349 | a = __ev_set_s32 (a, 5, 6); | |
350 | a = __ev_set_fs (a, fl, 5); | |
351 | a = __ev_set_u16 (a, 5U, 3); | |
352 | a = __ev_set_s16 (a, 5, 6); | |
353 | a = __ev_set_ufix32_u32 (a, 5U, 6U); | |
354 | a = __ev_set_sfix32_s32 (a, 3, 6); | |
355 | a = __ev_set_ufix32_fs (a, fl, 5); | |
356 | a = __ev_set_sfix32_fs (a, fl, 5); | |
357 | ui = __ev_get_u32 (a, 1); | |
358 | i = __ev_get_s32 (a, 0); | |
359 | fl = __ev_get_fs (a, 1); | |
360 | u16 = __ev_get_u16 (a, 2); | |
361 | s16 = __ev_get_s16 (a, 2); | |
362 | ui = __ev_get_ufix32_u32 (a, 1); | |
363 | i = __ev_get_sfix32_s32 (a, 0); | |
364 | fl = __ev_get_ufix32_fs (a, 1); | |
365 | fl = __ev_get_sfix32_fs (a, 0); | |
366 | ||
367 | /* Predicates. */ | |
368 | i = __ev_any_gts (a, b); | |
369 | i = __ev_all_gts (a, b); | |
370 | i = __ev_upper_gts (a, b); | |
371 | i = __ev_lower_gts (a, b); | |
372 | a = __ev_select_gts (a, b, c, c); | |
373 | ||
374 | i = __ev_any_gtu (a, b); | |
375 | i = __ev_all_gtu (a, b); | |
376 | i = __ev_upper_gtu (a, b); | |
377 | i = __ev_lower_gtu (a, b); | |
378 | a = __ev_select_gtu (a, b, c, c); | |
379 | ||
380 | i = __ev_any_lts (a, b); | |
381 | i = __ev_all_lts (a, b); | |
382 | i = __ev_upper_lts (a, b); | |
383 | i = __ev_lower_lts (a, b); | |
384 | a = __ev_select_lts (a, b, c, c); | |
385 | ||
386 | i = __ev_any_ltu (a, b); | |
387 | i = __ev_all_ltu (a, b); | |
388 | i = __ev_upper_ltu (a, b); | |
389 | i = __ev_lower_ltu (a, b); | |
390 | a = __ev_select_ltu (a, b, c, c); | |
391 | ||
392 | i = __ev_any_eq (a, b); | |
393 | i = __ev_all_eq (a, b); | |
394 | i = __ev_upper_eq (a, b); | |
395 | i = __ev_lower_eq (a, b); | |
396 | a = __ev_select_eq (a, b, c, c); | |
397 | ||
398 | i = __ev_any_fs_gt (a, b); | |
399 | i = __ev_all_fs_gt (a, b); | |
400 | i = __ev_upper_fs_gt (a, b); | |
401 | i = __ev_lower_fs_gt (a, b); | |
402 | a = __ev_select_fs_gt (a, b, c, c); | |
403 | ||
404 | i = __ev_any_fs_lt (a, b); | |
405 | i = __ev_all_fs_lt (a, b); | |
406 | i = __ev_upper_fs_lt (a, b); | |
407 | i = __ev_lower_fs_lt (a, b); | |
408 | a = __ev_select_fs_lt (a, b, c, b); | |
409 | ||
410 | i = __ev_any_fs_eq (a, b); | |
411 | i = __ev_all_fs_eq (a, b); | |
412 | i = __ev_upper_fs_eq (a, b); | |
413 | i = __ev_lower_fs_eq (a, b); | |
414 | a = __ev_select_fs_eq (a, b, c, c); | |
415 | ||
416 | i = __ev_any_fs_tst_gt (a, b); | |
417 | i = __ev_all_fs_tst_gt (a, b); | |
418 | i = __ev_upper_fs_tst_gt (a, b); | |
419 | i = __ev_lower_fs_tst_gt (a, b); | |
420 | a = __ev_select_fs_tst_gt (a, b, c, c); | |
421 | ||
422 | i = __ev_any_fs_tst_lt (a, b); | |
423 | i = __ev_all_fs_tst_lt (a, b); | |
424 | i = __ev_upper_fs_tst_lt (a, b); | |
425 | i = __ev_lower_fs_tst_lt (a, b); | |
426 | a = __ev_select_fs_tst_lt (a, b, c, c); | |
427 | ||
428 | i = __ev_any_fs_tst_eq (a, b); | |
429 | i = __ev_all_fs_tst_eq (a, b); | |
430 | i = __ev_upper_fs_tst_eq (a, b); | |
431 | i = __ev_lower_fs_tst_eq (a, b); | |
432 | a = __ev_select_fs_tst_eq (a, b, c, c); | |
433 | } | |
434 | ||
435 | int | |
436 | main (void) | |
437 | { | |
438 | /* Generic binary operations. */ | |
439 | c = __builtin_spe_evaddw (a, b); | |
440 | c = __builtin_spe_evand (a, b); | |
441 | c = __builtin_spe_evandc (a, b); | |
442 | c = __builtin_spe_evdivws (a, b); | |
443 | c = __builtin_spe_evdivwu (a, b); | |
444 | c = __builtin_spe_eveqv (a, b); | |
445 | h = __builtin_spe_evfsadd (f, g); | |
446 | h = __builtin_spe_evfsdiv (f, g); | |
447 | h = __builtin_spe_evfsmul (f, g); | |
448 | h = __builtin_spe_evfssub (f, g); | |
449 | c = __builtin_spe_evlddx (ap, j); | |
450 | c = __builtin_spe_evldhx (ap, j); | |
451 | c = __builtin_spe_evldwx (ap, j); | |
452 | c = __builtin_spe_evlhhesplatx (usp, j); | |
453 | c = __builtin_spe_evlhhossplatx (usp, j); | |
454 | c = __builtin_spe_evlhhousplatx (usp, j); | |
455 | c = __builtin_spe_evlwhex (uip, j); | |
456 | c = __builtin_spe_evlwhosx (uip, j); | |
457 | c = __builtin_spe_evlwhoux (uip, j); | |
458 | c = __builtin_spe_evlwhsplatx (uip, j); | |
459 | c = __builtin_spe_evlwwsplatx (uip, j); | |
460 | c = __builtin_spe_evmergehi (a, b); | |
461 | c = __builtin_spe_evmergehilo (a, b); | |
462 | c = __builtin_spe_evmergelo (a, b); | |
463 | c = __builtin_spe_evmergelohi (a, b); | |
464 | c = __builtin_spe_evmhegsmfaa (a, b); | |
465 | c = __builtin_spe_evmhegsmfan (a, b); | |
466 | c = __builtin_spe_evmhegsmiaa (a, b); | |
467 | c = __builtin_spe_evmhegsmian (a, b); | |
468 | c = __builtin_spe_evmhegumiaa (a, b); | |
469 | c = __builtin_spe_evmhegumian (a, b); | |
470 | c = __builtin_spe_evmhesmf (a, b); | |
471 | c = __builtin_spe_evmhesmfa (a, b); | |
472 | c = __builtin_spe_evmhesmfaaw (a, b); | |
473 | c = __builtin_spe_evmhesmfanw (a, b); | |
474 | c = __builtin_spe_evmhesmi (a, b); | |
475 | c = __builtin_spe_evmhesmia (a, b); | |
476 | c = __builtin_spe_evmhesmiaaw (a, b); | |
477 | c = __builtin_spe_evmhesmianw (a, b); | |
478 | c = __builtin_spe_evmhessf (a, b); | |
479 | c = __builtin_spe_evmhessfa (a, b); | |
480 | c = __builtin_spe_evmhessfaaw (a, b); | |
481 | c = __builtin_spe_evmhessfanw (a, b); | |
482 | c = __builtin_spe_evmhessiaaw (a, b); | |
483 | c = __builtin_spe_evmhessianw (a, b); | |
484 | c = __builtin_spe_evmheumi (a, b); | |
485 | c = __builtin_spe_evmheumia (a, b); | |
486 | c = __builtin_spe_evmheumiaaw (a, b); | |
487 | c = __builtin_spe_evmheumianw (a, b); | |
488 | c = __builtin_spe_evmheusiaaw (a, b); | |
489 | c = __builtin_spe_evmheusianw (a, b); | |
490 | c = __builtin_spe_evmhogsmfaa (a, b); | |
491 | c = __builtin_spe_evmhogsmfan (a, b); | |
492 | c = __builtin_spe_evmhogsmiaa (a, b); | |
493 | c = __builtin_spe_evmhogsmian (a, b); | |
494 | c = __builtin_spe_evmhogumiaa (a, b); | |
495 | c = __builtin_spe_evmhogumian (a, b); | |
496 | c = __builtin_spe_evmhosmf (a, b); | |
497 | c = __builtin_spe_evmhosmfa (a, b); | |
498 | c = __builtin_spe_evmhosmfaaw (a, b); | |
499 | c = __builtin_spe_evmhosmfanw (a, b); | |
500 | c = __builtin_spe_evmhosmi (a, b); | |
501 | c = __builtin_spe_evmhosmia (a, b); | |
502 | c = __builtin_spe_evmhosmiaaw (a, b); | |
503 | c = __builtin_spe_evmhosmianw (a, b); | |
504 | c = __builtin_spe_evmhossf (a, b); | |
505 | c = __builtin_spe_evmhossfa (a, b); | |
506 | c = __builtin_spe_evmhossfaaw (a, b); | |
507 | c = __builtin_spe_evmhossfanw (a, b); | |
508 | c = __builtin_spe_evmhossiaaw (a, b); | |
509 | c = __builtin_spe_evmhossianw (a, b); | |
510 | c = __builtin_spe_evmhoumi (a, b); | |
511 | c = __builtin_spe_evmhoumia (a, b); | |
512 | c = __builtin_spe_evmhoumiaaw (a, b); | |
513 | c = __builtin_spe_evmhoumianw (a, b); | |
514 | c = __builtin_spe_evmhousiaaw (a, b); | |
515 | c = __builtin_spe_evmhousianw (a, b); | |
516 | c = __builtin_spe_evmwhsmf (a, b); | |
517 | c = __builtin_spe_evmwhsmfa (a, b); | |
518 | c = __builtin_spe_evmwhsmi (a, b); | |
519 | c = __builtin_spe_evmwhsmia (a, b); | |
520 | c = __builtin_spe_evmwhssf (a, b); | |
521 | c = __builtin_spe_evmwhssfa (a, b); | |
522 | c = __builtin_spe_evmwhumi (a, b); | |
523 | c = __builtin_spe_evmwhumia (a, b); | |
d4b291dc | 524 | c = __builtin_spe_evmwlsmiaaw (a, b); |
525 | c = __builtin_spe_evmwlsmianw (a, b); | |
d4b291dc | 526 | c = __builtin_spe_evmwlssiaaw (a, b); |
527 | c = __builtin_spe_evmwlssianw (a, b); | |
528 | c = __builtin_spe_evmwlumi (a, b); | |
529 | c = __builtin_spe_evmwlumia (a, b); | |
530 | c = __builtin_spe_evmwlumiaaw (a, b); | |
531 | c = __builtin_spe_evmwlumianw (a, b); | |
532 | c = __builtin_spe_evmwlusiaaw (a, b); | |
533 | c = __builtin_spe_evmwlusianw (a, b); | |
534 | c = __builtin_spe_evmwsmf (a, b); | |
535 | c = __builtin_spe_evmwsmfa (a, b); | |
536 | c = __builtin_spe_evmwsmfaa (a, b); | |
537 | c = __builtin_spe_evmwsmfan (a, b); | |
538 | c = __builtin_spe_evmwsmi (a, b); | |
539 | c = __builtin_spe_evmwsmia (a, b); | |
540 | c = __builtin_spe_evmwsmiaa (a, b); | |
541 | c = __builtin_spe_evmwsmian (a, b); | |
542 | c = __builtin_spe_evmwssf (a, b); | |
543 | c = __builtin_spe_evmwssfa (a, b); | |
544 | c = __builtin_spe_evmwssfaa (a, b); | |
545 | c = __builtin_spe_evmwssfan (a, b); | |
546 | c = __builtin_spe_evmwumi (a, b); | |
547 | c = __builtin_spe_evmwumia (a, b); | |
548 | c = __builtin_spe_evmwumiaa (a, b); | |
549 | c = __builtin_spe_evmwumian (a, b); | |
550 | c = __builtin_spe_evnand (a, b); | |
551 | c = __builtin_spe_evnor (a, b); | |
552 | c = __builtin_spe_evor (a, b); | |
553 | c = __builtin_spe_evorc (a, b); | |
554 | c = __builtin_spe_evrlw (a, b); | |
555 | c = __builtin_spe_evslw (a, b); | |
556 | c = __builtin_spe_evsrws (a, b); | |
557 | c = __builtin_spe_evsrwu (a, b); | |
558 | c = __builtin_spe_evsubfw (a, b); | |
559 | c = __builtin_spe_evxor (a, b); | |
ff7c949a | 560 | |
d4b291dc | 561 | c = __builtin_spe_evmwhssfaa (a, b); |
562 | c = __builtin_spe_evmwhssmaa (a, b); | |
563 | c = __builtin_spe_evmwhsmfaa (a, b); | |
564 | c = __builtin_spe_evmwhsmiaa (a, b); | |
565 | c = __builtin_spe_evmwhusiaa (a, b); | |
566 | c = __builtin_spe_evmwhumiaa (a, b); | |
567 | c = __builtin_spe_evmwhssfan (a, b); | |
568 | c = __builtin_spe_evmwhssian (a, b); | |
569 | c = __builtin_spe_evmwhsmfan (a, b); | |
570 | c = __builtin_spe_evmwhsmian (a, b); | |
571 | c = __builtin_spe_evmwhusian (a, b); | |
572 | c = __builtin_spe_evmwhumian (a, b); | |
573 | c = __builtin_spe_evmwhgssfaa (a, b); | |
574 | c = __builtin_spe_evmwhgsmfaa (a, b); | |
575 | c = __builtin_spe_evmwhgsmiaa (a, b); | |
576 | c = __builtin_spe_evmwhgumiaa (a, b); | |
577 | c = __builtin_spe_evmwhgssfan (a, b); | |
578 | c = __builtin_spe_evmwhgsmfan (a, b); | |
579 | c = __builtin_spe_evmwhgsmian (a, b); | |
580 | c = __builtin_spe_evmwhgumian (a, b); | |
d4b291dc | 581 | i = __builtin_spe_brinc (i, j); |
582 | ||
583 | /* Generic unary operations. */ | |
584 | a = __builtin_spe_evabs (b); | |
585 | a = __builtin_spe_evaddsmiaaw (b); | |
586 | a = __builtin_spe_evaddssiaaw (b); | |
587 | a = __builtin_spe_evaddumiaaw (b); | |
588 | a = __builtin_spe_evaddusiaaw (b); | |
589 | a = __builtin_spe_evcntlsw (b); | |
590 | a = __builtin_spe_evcntlzw (b); | |
591 | a = __builtin_spe_evextsb (b); | |
592 | a = __builtin_spe_evextsh (b); | |
593 | f = __builtin_spe_evfsabs (g); | |
594 | f = __builtin_spe_evfscfsf (g); | |
595 | a = __builtin_spe_evfscfsi (g); | |
596 | f = __builtin_spe_evfscfuf (g); | |
597 | f = __builtin_spe_evfscfui (a); | |
598 | f = __builtin_spe_evfsctsf (g); | |
599 | a = __builtin_spe_evfsctsi (g); | |
600 | a = __builtin_spe_evfsctsiz (g); | |
601 | f = __builtin_spe_evfsctuf (g); | |
602 | a = __builtin_spe_evfsctui (g); | |
603 | a = __builtin_spe_evfsctuiz (g); | |
604 | f = __builtin_spe_evfsnabs (g); | |
605 | f = __builtin_spe_evfsneg (g); | |
606 | a = __builtin_spe_evmra (b); | |
607 | a = __builtin_spe_evneg (b); | |
608 | a = __builtin_spe_evrndw (b); | |
609 | a = __builtin_spe_evsubfsmiaaw (b); | |
610 | a = __builtin_spe_evsubfssiaaw (b); | |
611 | a = __builtin_spe_evsubfumiaaw (b); | |
612 | a = __builtin_spe_evsubfusiaaw (b); | |
613 | ||
614 | /* Unary operations of the form: X = foo (5_bit_signed_immediate). */ | |
615 | a = __builtin_spe_evsplatfi (5); | |
616 | a = __builtin_spe_evsplati (5); | |
617 | ||
618 | /* Binary operations of the form: X = foo(Y, 5_bit_immediate). */ | |
619 | a = __builtin_spe_evaddiw (b, 13); | |
620 | a = __builtin_spe_evldd (ap, 13); | |
621 | a = __builtin_spe_evldh (ap, 13); | |
622 | a = __builtin_spe_evldw (ap, 13); | |
623 | a = __builtin_spe_evlhhesplat (usp, 13); | |
624 | a = __builtin_spe_evlhhossplat (usp, 13); | |
625 | a = __builtin_spe_evlhhousplat (usp, 13); | |
626 | a = __builtin_spe_evlwhe (uip, 13); | |
627 | a = __builtin_spe_evlwhos (uip, 13); | |
628 | a = __builtin_spe_evlwhou (uip, 13); | |
629 | a = __builtin_spe_evlwhsplat (uip, 13); | |
630 | a = __builtin_spe_evlwwsplat (uip, 13); | |
631 | ||
632 | a = __builtin_spe_evrlwi (b, 13); | |
633 | a = __builtin_spe_evslwi (b, 13); | |
634 | a = __builtin_spe_evsrwis (b, 13); | |
635 | a = __builtin_spe_evsrwiu (b, 13); | |
636 | a = __builtin_spe_evsubifw (b, 13); | |
637 | ||
638 | /* Store indexed builtins. */ | |
639 | __builtin_spe_evstddx (b, ap, j); | |
640 | __builtin_spe_evstdhx (b, ap, j); | |
641 | __builtin_spe_evstdwx (b, ap, j); | |
642 | __builtin_spe_evstwhex (b, uip, j); | |
643 | __builtin_spe_evstwhox (b, uip, j); | |
644 | __builtin_spe_evstwwex (b, uip, j); | |
645 | __builtin_spe_evstwwox (b, uip, j); | |
646 | ||
647 | /* Store indexed immediate builtins. */ | |
648 | __builtin_spe_evstdd (b, ap, 5); | |
649 | __builtin_spe_evstdh (b, ap, 5); | |
650 | __builtin_spe_evstdw (b, ap, 5); | |
651 | __builtin_spe_evstwhe (b, uip, 5); | |
652 | __builtin_spe_evstwho (b, uip, 5); | |
653 | __builtin_spe_evstwwe (b, uip, 5); | |
654 | __builtin_spe_evstwwo (b, uip, 5); | |
655 | ||
656 | /* SPEFSCR builtins. */ | |
657 | i = __builtin_spe_mfspefscr (); | |
658 | __builtin_spe_mtspefscr (j); | |
659 | ||
660 | test_api (); | |
661 | ||
662 | return 0; | |
663 | } |