1/* { dg-do compile } */ 2/* { dg-options "-mcpu=8540 -mspe -mabi=spe -mfloat-gprs=single -O0" } */ 3/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */ 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 13vector int a, b, c, *ap; 14vector float f, g, h; 15unsigned int *uip; 16unsigned short *usp; 17int i, j, *ip; 18uint64_t ull; 19int64_t sll; 20unsigned ui; 21float fl; 22uint16_t u16; 23int16_t s16; 24 25/* These are the only documented/supported accesor functions for the 26 SPE builtins. */ 27void 28test_api () 29{ 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); 67 68 /* Loads. */ 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); 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. */ 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); 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 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); 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 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); 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 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); 176 177 c = __ev_mhogumfaa (a, b); 178 c = __ev_mhegumfaa (a, b); 179 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); 186 187 c = __ev_mhogumfan (a, b); 188 c = __ev_mhegumfan (a, b); 189 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); 198 199 c = __ev_mwhumf (a, b); 200 c = __ev_mwhumfa (a, b); 201 202 c = __ev_mwlumi (a, b); 203 c = __ev_mwlumia (a, b); 204 c = __ev_mwlumiaaw (a, b); 205 206 c = __ev_mwlssiaaw (a, b); 207 c = __ev_mwlsmiaaw (a, b); 208 c = __ev_mwlusiaaw (a, b); 209 c = __ev_mwlusiaaw (a, b); 210 211 c = __ev_mwlssianw (a, b); 212 c = __ev_mwlsmianw (a, b); 213 c = __ev_mwlusianw (a, b); 214 c = __ev_mwlumianw (a, b); 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 435int 436main (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); 524 c = __builtin_spe_evmwlsmiaaw (a, b); 525 c = __builtin_spe_evmwlsmianw (a, b); 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); 560 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); 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} 664