altivec.h revision 132718
1/* PowerPC AltiVec include file. 2 Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. 3 Contributed by Aldy Hernandez (aldyh@redhat.com). 4 5 This file is part of GCC. 6 7 GCC is free software; you can redistribute it and/or modify it 8 under the terms of the GNU General Public License as published 9 by the Free Software Foundation; either version 2, or (at your 10 option) any later version. 11 12 GCC is distributed in the hope that it will be useful, but WITHOUT 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 15 License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GCC; see the file COPYING. If not, write to the 19 Free Software Foundation, 59 Temple Place - Suite 330, Boston, 20 MA 02111-1307, USA. */ 21 22/* As a special exception, if you include this header file into source 23 files compiled by GCC, this header file does not by itself cause 24 the resulting executable to be covered by the GNU General Public 25 License. This exception does not however invalidate any other 26 reasons why the executable file might be covered by the GNU General 27 Public License. */ 28 29/* Implemented to conform to the specification included in the AltiVec 30 Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0). */ 31 32#ifndef _ALTIVEC_H 33#define _ALTIVEC_H 1 34 35/* Required by Motorola specs. */ 36#define __VEC__ 10206 37 38#ifndef __ALTIVEC__ 39#define __ALTIVEC__ 1 40#endif 41 42#define __vector __attribute__((vector_size(16))) 43 44/* You are allowed to undef this for C++ compatibility. */ 45#define vector __vector 46 47#define bool signed 48#define pixel unsigned short 49#define __pixel unsigned short 50 51/* Dummy prototype. */ 52extern int __altivec_link_error_invalid_argument (); 53 54/* Helper macros. */ 55 56#define __CR6_EQ 0 57#define __CR6_EQ_REV 1 58#define __CR6_LT 2 59#define __CR6_LT_REV 3 60 61#define __bin_args_eq(xtype, x, ytype, y) \ 62 (__builtin_types_compatible_p (xtype, typeof (x)) \ 63 && __builtin_types_compatible_p (ytype, typeof (y))) 64 65#define __un_args_eq(xtype, x) \ 66 __builtin_types_compatible_p (xtype, typeof (x)) 67 68#define __tern_args_eq(xtype, x, ytype, y, ztype, z) \ 69 (__builtin_types_compatible_p (xtype, typeof (x)) \ 70 && __builtin_types_compatible_p (ytype, typeof (y)) \ 71 && __builtin_types_compatible_p (ztype, typeof (z))) 72 73#define __ch(x, y, z) __builtin_choose_expr (x, y, z) 74 75/* These are easy... Same exact arguments. */ 76 77#define vec_vaddcuw vec_addc 78#define vec_vand vec_and 79#define vec_vandc vec_andc 80#define vec_vrfip vec_ceil 81#define vec_vcmpbfp vec_cmpb 82#define vec_vcmpgefp vec_cmpge 83#define vec_vctsxs vec_cts 84#define vec_vctuxs vec_ctu 85#define vec_vexptefp vec_expte 86#define vec_vrfim vec_floor 87#define vec_lvx vec_ld 88#define vec_lvxl vec_ldl 89#define vec_vlogefp vec_loge 90#define vec_vmaddfp vec_madd 91#define vec_vmhaddshs vec_madds 92#define vec_vmladduhm vec_mladd 93#define vec_vmhraddshs vec_mradds 94#define vec_vnmsubfp vec_nmsub 95#define vec_vnor vec_nor 96#define vec_vor vec_or 97#define vec_vpkpx vec_packpx 98#define vec_vperm vec_perm 99#define vec_vrefp vec_re 100#define vec_vrfin vec_round 101#define vec_vrsqrtefp vec_rsqrte 102#define vec_vsel vec_sel 103#define vec_vsldoi vec_sld 104#define vec_vsl vec_sll 105#define vec_vslo vec_slo 106#define vec_vspltisb vec_splat_s8 107#define vec_vspltish vec_splat_s16 108#define vec_vspltisw vec_splat_s32 109#define vec_vsr vec_srl 110#define vec_vsro vec_sro 111#define vec_stvx vec_st 112#define vec_stvxl vec_stl 113#define vec_vsubcuw vec_subc 114#define vec_vsum2sws vec_sum2s 115#define vec_vsumsws vec_sums 116#define vec_vrfiz vec_trunc 117#define vec_vxor vec_xor 118 119#ifdef __cplusplus 120 121extern "C++" { 122 123/* Prototypes for builtins that take literals and must always be 124 inlined. */ 125inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline)); 126inline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline)); 127inline vector float vec_vcfsx (vector signed int a1, const char a2) __attribute__ ((always_inline)); 128inline vector float vec_vcfux (vector unsigned int a1, const char a2) __attribute__ ((always_inline)); 129inline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline)); 130inline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline)); 131inline void vec_dss (const char) __attribute__ ((always_inline)); 132 133inline void vec_dst (vector unsigned char *, int, const char) __attribute__ ((always_inline)); 134inline void vec_dst (vector signed char *, int, const char) __attribute__ ((always_inline)); 135inline void vec_dst (vector unsigned short *, int, const char) __attribute__ ((always_inline)); 136inline void vec_dst (vector signed short *, int, const char) __attribute__ ((always_inline)); 137inline void vec_dst (vector unsigned int *, int, const char) __attribute__ ((always_inline)); 138inline void vec_dst (vector signed int *, int, const char) __attribute__ ((always_inline)); 139inline void vec_dst (vector float *, int, const char) __attribute__ ((always_inline)); 140inline void vec_dst (unsigned char *, int, const char) __attribute__ ((always_inline)); 141inline void vec_dst (signed char *, int, const char) __attribute__ ((always_inline)); 142inline void vec_dst (unsigned short *, int, const char) __attribute__ ((always_inline)); 143inline void vec_dst (signed short *, int, const char) __attribute__ ((always_inline)); 144inline void vec_dst (unsigned int *, int, const char) __attribute__ ((always_inline)); 145inline void vec_dst (signed int *, int, const char) __attribute__ ((always_inline)); 146inline void vec_dst (unsigned long *, int, const char) __attribute__ ((always_inline)); 147inline void vec_dst (signed long *, int, const char) __attribute__ ((always_inline)); 148inline void vec_dst (float *, int, const char) __attribute__ ((always_inline)); 149 150inline void vec_dstst (vector unsigned char *, int, const char) __attribute__ ((always_inline)); 151inline void vec_dstst (vector signed char *, int, const char) __attribute__ ((always_inline)); 152inline void vec_dstst (vector unsigned short *, int, const char) __attribute__ ((always_inline)); 153inline void vec_dstst (vector signed short *, int, const char) __attribute__ ((always_inline)); 154inline void vec_dstst (vector unsigned int *, int, const char) __attribute__ ((always_inline)); 155inline void vec_dstst (vector signed int *, int, const char) __attribute__ ((always_inline)); 156inline void vec_dstst (vector float *, int, const char) __attribute__ ((always_inline)); 157inline void vec_dstst (unsigned char *, int, const char) __attribute__ ((always_inline)); 158inline void vec_dstst (signed char *, int, const char) __attribute__ ((always_inline)); 159inline void vec_dstst (unsigned short *, int, const char) __attribute__ ((always_inline)); 160inline void vec_dstst (signed short *, int, const char) __attribute__ ((always_inline)); 161inline void vec_dstst (unsigned int *, int, const char) __attribute__ ((always_inline)); 162inline void vec_dstst (signed int *, int, const char) __attribute__ ((always_inline)); 163inline void vec_dstst (unsigned long *, int, const char) __attribute__ ((always_inline)); 164inline void vec_dstst (signed long *, int, const char) __attribute__ ((always_inline)); 165inline void vec_dstst (float *, int, const char) __attribute__ ((always_inline)); 166 167inline void vec_dststt (vector unsigned char *, int, const char) __attribute__ ((always_inline)); 168inline void vec_dststt (vector signed char *, int, const char) __attribute__ ((always_inline)); 169inline void vec_dststt (vector unsigned short *, int, const char) __attribute__ ((always_inline)); 170inline void vec_dststt (vector signed short *, int, const char) __attribute__ ((always_inline)); 171inline void vec_dststt (vector unsigned int *, int, const char) __attribute__ ((always_inline)); 172inline void vec_dststt (vector signed int *, int, const char) __attribute__ ((always_inline)); 173inline void vec_dststt (vector float *, int, const char) __attribute__ ((always_inline)); 174inline void vec_dststt (unsigned char *, int, const char) __attribute__ ((always_inline)); 175inline void vec_dststt (signed char *, int, const char) __attribute__ ((always_inline)); 176inline void vec_dststt (unsigned short *, int, const char) __attribute__ ((always_inline)); 177inline void vec_dststt (signed short *, int, const char) __attribute__ ((always_inline)); 178inline void vec_dststt (unsigned int *, int, const char) __attribute__ ((always_inline)); 179inline void vec_dststt (signed int *, int, const char) __attribute__ ((always_inline)); 180inline void vec_dststt (unsigned long *, int, const char) __attribute__ ((always_inline)); 181inline void vec_dststt (signed long *, int, const char) __attribute__ ((always_inline)); 182inline void vec_dststt (float *, int, const char) __attribute__ ((always_inline)); 183 184inline void vec_dstt (vector unsigned char *, int, const char) __attribute__ ((always_inline)); 185inline void vec_dstt (vector signed char *, int, const char) __attribute__ ((always_inline)); 186inline void vec_dstt (vector unsigned short *, int, const char) __attribute__ ((always_inline)); 187inline void vec_dstt (vector signed short *, int, const char) __attribute__ ((always_inline)); 188inline void vec_dstt (vector unsigned int *, int, const char) __attribute__ ((always_inline)); 189inline void vec_dstt (vector signed int *, int, const char) __attribute__ ((always_inline)); 190inline void vec_dstt (vector float *, int, const char) __attribute__ ((always_inline)); 191inline void vec_dstt (unsigned char *, int, const char) __attribute__ ((always_inline)); 192inline void vec_dstt (signed char *, int, const char) __attribute__ ((always_inline)); 193inline void vec_dstt (unsigned short *, int, const char) __attribute__ ((always_inline)); 194inline void vec_dstt (signed short *, int, const char) __attribute__ ((always_inline)); 195inline void vec_dstt (unsigned int *, int, const char) __attribute__ ((always_inline)); 196inline void vec_dstt (signed int *, int, const char) __attribute__ ((always_inline)); 197inline void vec_dstt (unsigned long *, int, const char) __attribute__ ((always_inline)); 198inline void vec_dstt (signed long *, int, const char) __attribute__ ((always_inline)); 199inline void vec_dstt (float *, int, const char) __attribute__ ((always_inline)); 200 201inline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline)); 202inline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline)); 203inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline)); 204inline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline)); 205inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline)); 206inline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline)); 207inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline)); 208inline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline)); 209inline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline)); 210inline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline)); 211inline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline)); 212inline vector float vec_splat (vector float, const char) __attribute__ ((always_inline)); 213inline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline)); 214inline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline)); 215inline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline)); 216inline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline)); 217inline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline)); 218inline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline)); 219inline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline)); 220inline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline)); 221inline vector float vec_vspltw (vector float a1, const char a2) __attribute__ ((always_inline)); 222inline vector signed int vec_vspltw (vector signed int a1, const char a2) __attribute__ ((always_inline)); 223inline vector unsigned int vec_vspltw (vector unsigned int a1, const char a2) __attribute__ ((always_inline)); 224inline vector signed short vec_vsplth (vector signed short a1, const char a2) __attribute__ ((always_inline)); 225inline vector unsigned short vec_vsplth (vector unsigned short a1, const char a2) __attribute__ ((always_inline)); 226inline vector signed char vec_vspltb (vector signed char a1, const char a2) __attribute__ ((always_inline)); 227inline vector unsigned char vec_vspltb (vector unsigned char a1, const char a2) __attribute__ ((always_inline)); 228 229/* vec_abs */ 230 231inline vector signed char 232vec_abs (vector signed char a1) 233{ 234 return __builtin_altivec_abs_v16qi (a1); 235} 236 237inline vector signed short 238vec_abs (vector signed short a1) 239{ 240 return __builtin_altivec_abs_v8hi (a1); 241} 242 243inline vector signed int 244vec_abs (vector signed int a1) 245{ 246 return __builtin_altivec_abs_v4si (a1); 247} 248 249inline vector float 250vec_abs (vector float a1) 251{ 252 return __builtin_altivec_abs_v4sf (a1); 253} 254 255/* vec_abss */ 256 257inline vector signed char 258vec_abss (vector signed char a1) 259{ 260 return __builtin_altivec_abss_v16qi (a1); 261} 262 263inline vector signed short 264vec_abss (vector signed short a1) 265{ 266 return __builtin_altivec_abss_v8hi (a1); 267} 268 269inline vector signed int 270vec_abss (vector signed int a1) 271{ 272 return __builtin_altivec_abss_v4si (a1); 273} 274 275/* vec_add */ 276 277inline vector signed char 278vec_add (vector signed char a1, vector signed char a2) 279{ 280 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 281} 282 283inline vector unsigned char 284vec_add (vector signed char a1, vector unsigned char a2) 285{ 286 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 287} 288 289inline vector unsigned char 290vec_add (vector unsigned char a1, vector signed char a2) 291{ 292 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 293} 294 295inline vector unsigned char 296vec_add (vector unsigned char a1, vector unsigned char a2) 297{ 298 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 299} 300 301inline vector signed short 302vec_add (vector signed short a1, vector signed short a2) 303{ 304 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 305} 306 307inline vector unsigned short 308vec_add (vector signed short a1, vector unsigned short a2) 309{ 310 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 311} 312 313inline vector unsigned short 314vec_add (vector unsigned short a1, vector signed short a2) 315{ 316 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 317} 318 319inline vector unsigned short 320vec_add (vector unsigned short a1, vector unsigned short a2) 321{ 322 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 323} 324 325inline vector signed int 326vec_add (vector signed int a1, vector signed int a2) 327{ 328 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 329} 330 331inline vector unsigned int 332vec_add (vector signed int a1, vector unsigned int a2) 333{ 334 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 335} 336 337inline vector unsigned int 338vec_add (vector unsigned int a1, vector signed int a2) 339{ 340 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 341} 342 343inline vector unsigned int 344vec_add (vector unsigned int a1, vector unsigned int a2) 345{ 346 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 347} 348 349inline vector float 350vec_add (vector float a1, vector float a2) 351{ 352 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2); 353} 354 355/* vec_vaddfp */ 356 357inline vector float 358vec_vaddfp (vector float a1, vector float a2) 359{ 360 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2); 361} 362 363/* vec_vadduwm */ 364 365inline vector signed int 366vec_vadduwm (vector signed int a1, vector signed int a2) 367{ 368 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 369} 370 371inline vector unsigned int 372vec_vadduwm (vector signed int a1, vector unsigned int a2) 373{ 374 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 375} 376 377inline vector unsigned int 378vec_vadduwm (vector unsigned int a1, vector signed int a2) 379{ 380 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 381} 382 383inline vector unsigned int 384vec_vadduwm (vector unsigned int a1, vector unsigned int a2) 385{ 386 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 387} 388 389/* vec_vadduhm */ 390 391inline vector signed short 392vec_vadduhm (vector signed short a1, vector signed short a2) 393{ 394 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 395} 396 397inline vector unsigned short 398vec_vadduhm (vector signed short a1, vector unsigned short a2) 399{ 400 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 401} 402 403inline vector unsigned short 404vec_vadduhm (vector unsigned short a1, vector signed short a2) 405{ 406 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 407} 408 409inline vector unsigned short 410vec_vadduhm (vector unsigned short a1, vector unsigned short a2) 411{ 412 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 413} 414 415/* vec_vaddubm */ 416 417inline vector signed char 418vec_vaddubm (vector signed char a1, vector signed char a2) 419{ 420 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 421} 422 423inline vector unsigned char 424vec_vaddubm (vector signed char a1, vector unsigned char a2) 425{ 426 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 427} 428 429inline vector unsigned char 430vec_vaddubm (vector unsigned char a1, vector signed char a2) 431{ 432 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 433} 434 435inline vector unsigned char 436vec_vaddubm (vector unsigned char a1, vector unsigned char a2) 437{ 438 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 439} 440 441/* vec_addc */ 442 443inline vector unsigned int 444vec_addc (vector unsigned int a1, vector unsigned int a2) 445{ 446 return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2); 447} 448 449/* vec_adds */ 450 451inline vector unsigned char 452vec_adds (vector signed char a1, vector unsigned char a2) 453{ 454 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 455} 456 457inline vector unsigned char 458vec_adds (vector unsigned char a1, vector signed char a2) 459{ 460 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 461} 462 463inline vector unsigned char 464vec_adds (vector unsigned char a1, vector unsigned char a2) 465{ 466 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 467} 468 469inline vector signed char 470vec_adds (vector signed char a1, vector signed char a2) 471{ 472 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2); 473} 474 475inline vector unsigned short 476vec_adds (vector signed short a1, vector unsigned short a2) 477{ 478 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 479} 480 481inline vector unsigned short 482vec_adds (vector unsigned short a1, vector signed short a2) 483{ 484 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 485} 486 487inline vector unsigned short 488vec_adds (vector unsigned short a1, vector unsigned short a2) 489{ 490 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 491} 492 493inline vector signed short 494vec_adds (vector signed short a1, vector signed short a2) 495{ 496 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2); 497} 498 499inline vector unsigned int 500vec_adds (vector signed int a1, vector unsigned int a2) 501{ 502 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 503} 504 505inline vector unsigned int 506vec_adds (vector unsigned int a1, vector signed int a2) 507{ 508 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 509} 510 511inline vector unsigned int 512vec_adds (vector unsigned int a1, vector unsigned int a2) 513{ 514 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 515} 516 517inline vector signed int 518vec_adds (vector signed int a1, vector signed int a2) 519{ 520 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2); 521} 522 523/* vec_vaddsws */ 524 525inline vector signed int 526vec_vaddsws (vector signed int a1, vector signed int a2) 527{ 528 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2); 529} 530 531/* vec_vadduws */ 532 533inline vector unsigned int 534vec_vadduws (vector signed int a1, vector unsigned int a2) 535{ 536 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 537} 538 539inline vector unsigned int 540vec_vadduws (vector unsigned int a1, vector signed int a2) 541{ 542 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 543} 544 545inline vector unsigned int 546vec_vadduws (vector unsigned int a1, vector unsigned int a2) 547{ 548 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 549} 550 551/* vec_vaddshs */ 552inline vector signed short 553vec_vaddshs (vector signed short a1, vector signed short a2) 554{ 555 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2); 556} 557 558/* vec_vadduhs */ 559 560inline vector unsigned short 561vec_vadduhs (vector signed short a1, vector unsigned short a2) 562{ 563 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 564} 565 566inline vector unsigned short 567vec_vadduhs (vector unsigned short a1, vector signed short a2) 568{ 569 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 570} 571 572inline vector unsigned short 573vec_vadduhs (vector unsigned short a1, vector unsigned short a2) 574{ 575 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 576} 577 578/* vec_vaddsbs */ 579 580inline vector signed char 581vec_vaddsbs (vector signed char a1, vector signed char a2) 582{ 583 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2); 584} 585 586/* vec_vaddubs */ 587 588inline vector unsigned char 589vec_vaddubs (vector signed char a1, vector unsigned char a2) 590{ 591 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 592} 593 594inline vector unsigned char 595vec_vaddubs (vector unsigned char a1, vector signed char a2) 596{ 597 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 598} 599 600inline vector unsigned char 601vec_vaddubs (vector unsigned char a1, vector unsigned char a2) 602{ 603 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 604} 605 606/* vec_and */ 607 608inline vector float 609vec_and (vector float a1, vector float a2) 610{ 611 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 612} 613 614inline vector float 615vec_and (vector float a1, vector signed int a2) 616{ 617 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 618} 619 620inline vector float 621vec_and (vector signed int a1, vector float a2) 622{ 623 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 624} 625 626inline vector signed int 627vec_and (vector signed int a1, vector signed int a2) 628{ 629 return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 630} 631 632inline vector unsigned int 633vec_and (vector signed int a1, vector unsigned int a2) 634{ 635 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 636} 637 638inline vector unsigned int 639vec_and (vector unsigned int a1, vector signed int a2) 640{ 641 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 642} 643 644inline vector unsigned int 645vec_and (vector unsigned int a1, vector unsigned int a2) 646{ 647 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 648} 649 650inline vector signed short 651vec_and (vector signed short a1, vector signed short a2) 652{ 653 return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 654} 655 656inline vector unsigned short 657vec_and (vector signed short a1, vector unsigned short a2) 658{ 659 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 660} 661 662inline vector unsigned short 663vec_and (vector unsigned short a1, vector signed short a2) 664{ 665 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 666} 667 668inline vector unsigned short 669vec_and (vector unsigned short a1, vector unsigned short a2) 670{ 671 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 672} 673 674inline vector signed char 675vec_and (vector signed char a1, vector signed char a2) 676{ 677 return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 678} 679 680inline vector unsigned char 681vec_and (vector signed char a1, vector unsigned char a2) 682{ 683 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 684} 685 686inline vector unsigned char 687vec_and (vector unsigned char a1, vector signed char a2) 688{ 689 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 690} 691 692inline vector unsigned char 693vec_and (vector unsigned char a1, vector unsigned char a2) 694{ 695 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 696} 697 698/* vec_andc */ 699 700inline vector float 701vec_andc (vector float a1, vector float a2) 702{ 703 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 704} 705 706inline vector float 707vec_andc (vector float a1, vector signed int a2) 708{ 709 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 710} 711 712inline vector float 713vec_andc (vector signed int a1, vector float a2) 714{ 715 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 716} 717 718inline vector signed int 719vec_andc (vector signed int a1, vector signed int a2) 720{ 721 return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 722} 723 724inline vector unsigned int 725vec_andc (vector signed int a1, vector unsigned int a2) 726{ 727 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 728} 729 730inline vector unsigned int 731vec_andc (vector unsigned int a1, vector signed int a2) 732{ 733 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 734} 735 736inline vector unsigned int 737vec_andc (vector unsigned int a1, vector unsigned int a2) 738{ 739 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 740} 741 742inline vector signed short 743vec_andc (vector signed short a1, vector signed short a2) 744{ 745 return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 746} 747 748inline vector unsigned short 749vec_andc (vector signed short a1, vector unsigned short a2) 750{ 751 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 752} 753 754inline vector unsigned short 755vec_andc (vector unsigned short a1, vector signed short a2) 756{ 757 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 758} 759 760inline vector unsigned short 761vec_andc (vector unsigned short a1, vector unsigned short a2) 762{ 763 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 764} 765 766inline vector signed char 767vec_andc (vector signed char a1, vector signed char a2) 768{ 769 return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 770} 771 772inline vector unsigned char 773vec_andc (vector signed char a1, vector unsigned char a2) 774{ 775 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 776} 777 778inline vector unsigned char 779vec_andc (vector unsigned char a1, vector signed char a2) 780{ 781 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 782} 783 784inline vector unsigned char 785vec_andc (vector unsigned char a1, vector unsigned char a2) 786{ 787 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 788} 789 790/* vec_avg */ 791 792inline vector unsigned char 793vec_avg (vector unsigned char a1, vector unsigned char a2) 794{ 795 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2); 796} 797 798inline vector signed char 799vec_avg (vector signed char a1, vector signed char a2) 800{ 801 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2); 802} 803 804inline vector unsigned short 805vec_avg (vector unsigned short a1, vector unsigned short a2) 806{ 807 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2); 808} 809 810inline vector signed short 811vec_avg (vector signed short a1, vector signed short a2) 812{ 813 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2); 814} 815 816inline vector unsigned int 817vec_avg (vector unsigned int a1, vector unsigned int a2) 818{ 819 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2); 820} 821 822inline vector signed int 823vec_avg (vector signed int a1, vector signed int a2) 824{ 825 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2); 826} 827 828/* vec_vavgsw */ 829 830inline vector signed int 831vec_vavgsw (vector signed int a1, vector signed int a2) 832{ 833 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2); 834} 835 836/* vec_vavguw */ 837 838inline vector unsigned int 839vec_vavguw (vector unsigned int a1, vector unsigned int a2) 840{ 841 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2); 842} 843 844/* vec_vavgsh */ 845 846inline vector signed short 847vec_vavgsh (vector signed short a1, vector signed short a2) 848{ 849 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2); 850} 851 852/* vec_vavguh */ 853 854inline vector unsigned short 855vec_vavguh (vector unsigned short a1, vector unsigned short a2) 856{ 857 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2); 858} 859 860/* vec_vavgsb */ 861 862inline vector signed char 863vec_vavgsb (vector signed char a1, vector signed char a2) 864{ 865 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2); 866} 867 868/* vec_vavgub */ 869 870inline vector unsigned char 871vec_vavgub (vector unsigned char a1, vector unsigned char a2) 872{ 873 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2); 874} 875 876/* vec_ceil */ 877 878inline vector float 879vec_ceil (vector float a1) 880{ 881 return (vector float) __builtin_altivec_vrfip ((vector float) a1); 882} 883 884/* vec_cmpb */ 885 886inline vector signed int 887vec_cmpb (vector float a1, vector float a2) 888{ 889 return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2); 890} 891 892/* vec_cmpeq */ 893 894inline vector signed char 895vec_cmpeq (vector signed char a1, vector signed char a2) 896{ 897 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); 898} 899 900inline vector signed char 901vec_cmpeq (vector unsigned char a1, vector unsigned char a2) 902{ 903 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); 904} 905 906inline vector signed short 907vec_cmpeq (vector signed short a1, vector signed short a2) 908{ 909 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); 910} 911 912inline vector signed short 913vec_cmpeq (vector unsigned short a1, vector unsigned short a2) 914{ 915 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); 916} 917 918inline vector signed int 919vec_cmpeq (vector signed int a1, vector signed int a2) 920{ 921 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); 922} 923 924inline vector signed int 925vec_cmpeq (vector unsigned int a1, vector unsigned int a2) 926{ 927 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); 928} 929 930inline vector signed int 931vec_cmpeq (vector float a1, vector float a2) 932{ 933 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); 934} 935 936/* vec_vcmpeqfp */ 937 938inline vector signed int 939vec_vcmpeqfp (vector float a1, vector float a2) 940{ 941 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); 942} 943 944/* vec_vcmpequw */ 945 946inline vector signed int 947vec_vcmpequw (vector signed int a1, vector signed int a2) 948{ 949 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); 950} 951 952inline vector signed int 953vec_vcmpequw (vector unsigned int a1, vector unsigned int a2) 954{ 955 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); 956} 957 958/* vec_vcmpequh */ 959 960inline vector signed short 961vec_vcmpequh (vector signed short a1, vector signed short a2) 962{ 963 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); 964} 965 966inline vector signed short 967vec_vcmpequh (vector unsigned short a1, vector unsigned short a2) 968{ 969 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); 970} 971 972/* vec_vcmpequb */ 973 974inline vector signed char 975vec_vcmpequb (vector signed char a1, vector signed char a2) 976{ 977 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); 978} 979 980inline vector signed char 981vec_vcmpequb (vector unsigned char a1, vector unsigned char a2) 982{ 983 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); 984} 985 986/* vec_cmpge */ 987 988inline vector signed int 989vec_cmpge (vector float a1, vector float a2) 990{ 991 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2); 992} 993 994/* vec_cmpgt */ 995 996inline vector signed char 997vec_cmpgt (vector unsigned char a1, vector unsigned char a2) 998{ 999 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); 1000} 1001 1002inline vector signed char 1003vec_cmpgt (vector signed char a1, vector signed char a2) 1004{ 1005 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2); 1006} 1007 1008inline vector signed short 1009vec_cmpgt (vector unsigned short a1, vector unsigned short a2) 1010{ 1011 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); 1012} 1013 1014inline vector signed short 1015vec_cmpgt (vector signed short a1, vector signed short a2) 1016{ 1017 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); 1018} 1019 1020inline vector signed int 1021vec_cmpgt (vector unsigned int a1, vector unsigned int a2) 1022{ 1023 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); 1024} 1025 1026inline vector signed int 1027vec_cmpgt (vector signed int a1, vector signed int a2) 1028{ 1029 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2); 1030} 1031 1032inline vector signed int 1033vec_cmpgt (vector float a1, vector float a2) 1034{ 1035 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); 1036} 1037 1038/* vec_vcmpgtfp */ 1039 1040inline vector signed int 1041vec_vcmpgtfp (vector float a1, vector float a2) 1042{ 1043 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); 1044} 1045 1046/* vec_vcmpgtsw */ 1047 1048inline vector signed int 1049vec_vcmpgtsw (vector signed int a1, vector signed int a2) 1050{ 1051 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2); 1052} 1053 1054/* vec_vcmpgtuw */ 1055 1056inline vector signed int 1057vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2) 1058{ 1059 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); 1060} 1061 1062/* vec_vcmpgtsh */ 1063 1064inline vector signed short 1065vec_cmpgtsh (vector signed short a1, vector signed short a2) 1066{ 1067 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); 1068} 1069 1070/* vec_vcmpgtuh */ 1071 1072inline vector signed short 1073vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2) 1074{ 1075 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); 1076} 1077 1078/* vec_vcmpgtsb */ 1079 1080inline vector signed char 1081vec_vcmpgtsb (vector signed char a1, vector signed char a2) 1082{ 1083 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2); 1084} 1085 1086/* vec_vcmpgtub */ 1087 1088inline vector signed char 1089vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2) 1090{ 1091 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); 1092} 1093 1094/* vec_cmple */ 1095 1096inline vector signed int 1097vec_cmple (vector float a1, vector float a2) 1098{ 1099 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a2, (vector float) a1); 1100} 1101 1102/* vec_cmplt */ 1103 1104inline vector signed char 1105vec_cmplt (vector unsigned char a1, vector unsigned char a2) 1106{ 1107 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1); 1108} 1109 1110inline vector signed char 1111vec_cmplt (vector signed char a1, vector signed char a2) 1112{ 1113 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1); 1114} 1115 1116inline vector signed short 1117vec_cmplt (vector unsigned short a1, vector unsigned short a2) 1118{ 1119 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1); 1120} 1121 1122inline vector signed short 1123vec_cmplt (vector signed short a1, vector signed short a2) 1124{ 1125 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1); 1126} 1127 1128inline vector signed int 1129vec_cmplt (vector unsigned int a1, vector unsigned int a2) 1130{ 1131 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1); 1132} 1133 1134inline vector signed int 1135vec_cmplt (vector signed int a1, vector signed int a2) 1136{ 1137 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1); 1138} 1139 1140inline vector signed int 1141vec_cmplt (vector float a1, vector float a2) 1142{ 1143 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1); 1144} 1145 1146/* vec_ctf */ 1147 1148inline vector float 1149vec_ctf (vector unsigned int a1, const char a2) 1150{ 1151 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2); 1152} 1153 1154inline vector float 1155vec_ctf (vector signed int a1, const char a2) 1156{ 1157 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2); 1158} 1159 1160/* vec_vcfsx */ 1161 1162inline vector float 1163vec_vcfsx (vector signed int a1, const char a2) 1164{ 1165 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2); 1166} 1167 1168/* vec_vcfux */ 1169 1170inline vector float 1171vec_vcfux (vector unsigned int a1, const char a2) 1172{ 1173 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2); 1174} 1175 1176/* vec_cts */ 1177 1178inline vector signed int 1179vec_cts (vector float a1, const char a2) 1180{ 1181 return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2); 1182} 1183 1184/* vec_ctu */ 1185 1186inline vector unsigned int 1187vec_ctu (vector float a1, const char a2) 1188{ 1189 return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2); 1190} 1191 1192/* vec_dss */ 1193 1194inline void 1195vec_dss (const char a1) 1196{ 1197 __builtin_altivec_dss (a1); 1198} 1199 1200/* vec_dssall */ 1201 1202inline void 1203vec_dssall (void) 1204{ 1205 __builtin_altivec_dssall (); 1206} 1207 1208/* vec_dst */ 1209 1210inline void 1211vec_dst (vector unsigned char *a1, int a2, const char a3) 1212{ 1213 __builtin_altivec_dst ((void *) a1, a2, a3); 1214} 1215 1216inline void 1217vec_dst (vector signed char *a1, int a2, const char a3) 1218{ 1219 __builtin_altivec_dst ((void *) a1, a2, a3); 1220} 1221 1222inline void 1223vec_dst (vector unsigned short *a1, int a2, const char a3) 1224{ 1225 __builtin_altivec_dst ((void *) a1, a2, a3); 1226} 1227 1228inline void 1229vec_dst (vector signed short *a1, int a2, const char a3) 1230{ 1231 __builtin_altivec_dst ((void *) a1, a2, a3); 1232} 1233 1234inline void 1235vec_dst (vector unsigned int *a1, int a2, const char a3) 1236{ 1237 __builtin_altivec_dst ((void *) a1, a2, a3); 1238} 1239 1240inline void 1241vec_dst (vector signed int *a1, int a2, const char a3) 1242{ 1243 __builtin_altivec_dst ((void *) a1, a2, a3); 1244} 1245 1246inline void 1247vec_dst (vector float *a1, int a2, const char a3) 1248{ 1249 __builtin_altivec_dst ((void *) a1, a2, a3); 1250} 1251 1252inline void 1253vec_dst (unsigned char *a1, int a2, const char a3) 1254{ 1255 __builtin_altivec_dst ((void *) a1, a2, a3); 1256} 1257 1258inline void 1259vec_dst (signed char *a1, int a2, const char a3) 1260{ 1261 __builtin_altivec_dst ((void *) a1, a2, a3); 1262} 1263 1264inline void 1265vec_dst (unsigned short *a1, int a2, const char a3) 1266{ 1267 __builtin_altivec_dst ((void *) a1, a2, a3); 1268} 1269 1270inline void 1271vec_dst (signed short *a1, int a2, const char a3) 1272{ 1273 __builtin_altivec_dst ((void *) a1, a2, a3); 1274} 1275 1276inline void 1277vec_dst (unsigned int *a1, int a2, const char a3) 1278{ 1279 __builtin_altivec_dst ((void *) a1, a2, a3); 1280} 1281 1282inline void 1283vec_dst (signed int *a1, int a2, const char a3) 1284{ 1285 __builtin_altivec_dst ((void *) a1, a2, a3); 1286} 1287 1288inline void 1289vec_dst (unsigned long *a1, int a2, const char a3) 1290{ 1291 __builtin_altivec_dst ((void *) a1, a2, a3); 1292} 1293 1294inline void 1295vec_dst (signed long *a1, int a2, const char a3) 1296{ 1297 __builtin_altivec_dst ((void *) a1, a2, a3); 1298} 1299 1300inline void 1301vec_dst (float *a1, int a2, const char a3) 1302{ 1303 __builtin_altivec_dst ((void *) a1, a2, a3); 1304} 1305 1306/* vec_dstst */ 1307 1308inline void 1309vec_dstst (vector unsigned char *a1, int a2, const char a3) 1310{ 1311 __builtin_altivec_dstst ((void *) a1, a2, a3); 1312} 1313 1314inline void 1315vec_dstst (vector signed char *a1, int a2, const char a3) 1316{ 1317 __builtin_altivec_dstst ((void *) a1, a2, a3); 1318} 1319 1320inline void 1321vec_dstst (vector unsigned short *a1, int a2, const char a3) 1322{ 1323 __builtin_altivec_dstst ((void *) a1, a2, a3); 1324} 1325 1326inline void 1327vec_dstst (vector signed short *a1, int a2, const char a3) 1328{ 1329 __builtin_altivec_dstst ((void *) a1, a2, a3); 1330} 1331 1332inline void 1333vec_dstst (vector unsigned int *a1, int a2, const char a3) 1334{ 1335 __builtin_altivec_dstst ((void *) a1, a2, a3); 1336} 1337 1338inline void 1339vec_dstst (vector signed int *a1, int a2, const char a3) 1340{ 1341 __builtin_altivec_dstst ((void *) a1, a2, a3); 1342} 1343 1344inline void 1345vec_dstst (vector float *a1, int a2, const char a3) 1346{ 1347 __builtin_altivec_dstst ((void *) a1, a2, a3); 1348} 1349 1350inline void 1351vec_dstst (unsigned char *a1, int a2, const char a3) 1352{ 1353 __builtin_altivec_dstst ((void *) a1, a2, a3); 1354} 1355 1356inline void 1357vec_dstst (signed char *a1, int a2, const char a3) 1358{ 1359 __builtin_altivec_dstst ((void *) a1, a2, a3); 1360} 1361 1362inline void 1363vec_dstst (unsigned short *a1, int a2, const char a3) 1364{ 1365 __builtin_altivec_dstst ((void *) a1, a2, a3); 1366} 1367 1368inline void 1369vec_dstst (signed short *a1, int a2, const char a3) 1370{ 1371 __builtin_altivec_dstst ((void *) a1, a2, a3); 1372} 1373 1374inline void 1375vec_dstst (unsigned int *a1, int a2, const char a3) 1376{ 1377 __builtin_altivec_dstst ((void *) a1, a2, a3); 1378} 1379 1380inline void 1381vec_dstst (signed int *a1, int a2, const char a3) 1382{ 1383 __builtin_altivec_dstst ((void *) a1, a2, a3); 1384} 1385 1386inline void 1387vec_dstst (unsigned long *a1, int a2, const char a3) 1388{ 1389 __builtin_altivec_dstst ((void *) a1, a2, a3); 1390} 1391 1392inline void 1393vec_dstst (signed long *a1, int a2, const char a3) 1394{ 1395 __builtin_altivec_dstst ((void *) a1, a2, a3); 1396} 1397 1398inline void 1399vec_dstst (float *a1, int a2, const char a3) 1400{ 1401 __builtin_altivec_dstst ((void *) a1, a2, a3); 1402} 1403 1404/* vec_dststt */ 1405 1406inline void 1407vec_dststt (vector unsigned char *a1, int a2, const char a3) 1408{ 1409 __builtin_altivec_dststt ((void *) a1, a2, a3); 1410} 1411 1412inline void 1413vec_dststt (vector signed char *a1, int a2, const char a3) 1414{ 1415 __builtin_altivec_dststt ((void *) a1, a2, a3); 1416} 1417 1418inline void 1419vec_dststt (vector unsigned short *a1, int a2, const char a3) 1420{ 1421 __builtin_altivec_dststt ((void *) a1, a2, a3); 1422} 1423 1424inline void 1425vec_dststt (vector signed short *a1, int a2, const char a3) 1426{ 1427 __builtin_altivec_dststt ((void *) a1, a2, a3); 1428} 1429 1430inline void 1431vec_dststt (vector unsigned int *a1, int a2, const char a3) 1432{ 1433 __builtin_altivec_dststt ((void *) a1, a2, a3); 1434} 1435 1436inline void 1437vec_dststt (vector signed int *a1, int a2, const char a3) 1438{ 1439 __builtin_altivec_dststt ((void *) a1, a2, a3); 1440} 1441 1442inline void 1443vec_dststt (vector float *a1, int a2, const char a3) 1444{ 1445 __builtin_altivec_dststt ((void *) a1, a2, a3); 1446} 1447 1448inline void 1449vec_dststt (unsigned char *a1, int a2, const char a3) 1450{ 1451 __builtin_altivec_dststt ((void *) a1, a2, a3); 1452} 1453 1454inline void 1455vec_dststt (signed char *a1, int a2, const char a3) 1456{ 1457 __builtin_altivec_dststt ((void *) a1, a2, a3); 1458} 1459 1460inline void 1461vec_dststt (unsigned short *a1, int a2, const char a3) 1462{ 1463 __builtin_altivec_dststt ((void *) a1, a2, a3); 1464} 1465 1466inline void 1467vec_dststt (signed short *a1, int a2, const char a3) 1468{ 1469 __builtin_altivec_dststt ((void *) a1, a2, a3); 1470} 1471 1472inline void 1473vec_dststt (unsigned int *a1, int a2, const char a3) 1474{ 1475 __builtin_altivec_dststt ((void *) a1, a2, a3); 1476} 1477 1478inline void 1479vec_dststt (signed int *a1, int a2, const char a3) 1480{ 1481 __builtin_altivec_dststt ((void *) a1, a2, a3); 1482} 1483 1484inline void 1485vec_dststt (unsigned long *a1, int a2, const char a3) 1486{ 1487 __builtin_altivec_dststt ((void *) a1, a2, a3); 1488} 1489 1490inline void 1491vec_dststt (signed long *a1, int a2, const char a3) 1492{ 1493 __builtin_altivec_dststt ((void *) a1, a2, a3); 1494} 1495 1496inline void 1497vec_dststt (float *a1, int a2, const char a3) 1498{ 1499 __builtin_altivec_dststt ((void *) a1, a2, a3); 1500} 1501 1502/* vec_dstt */ 1503 1504inline void 1505vec_dstt (vector unsigned char *a1, int a2, const char a3) 1506{ 1507 __builtin_altivec_dstt ((void *) a1, a2, a3); 1508} 1509 1510inline void 1511vec_dstt (vector signed char *a1, int a2, const char a3) 1512{ 1513 __builtin_altivec_dstt ((void *) a1, a2, a3); 1514} 1515 1516inline void 1517vec_dstt (vector unsigned short *a1, int a2, const char a3) 1518{ 1519 __builtin_altivec_dstt ((void *) a1, a2, a3); 1520} 1521 1522inline void 1523vec_dstt (vector signed short *a1, int a2, const char a3) 1524{ 1525 __builtin_altivec_dstt ((void *) a1, a2, a3); 1526} 1527 1528inline void 1529vec_dstt (vector unsigned int *a1, int a2, const char a3) 1530{ 1531 __builtin_altivec_dstt ((void *) a1, a2, a3); 1532} 1533 1534inline void 1535vec_dstt (vector signed int *a1, int a2, const char a3) 1536{ 1537 __builtin_altivec_dstt ((void *) a1, a2, a3); 1538} 1539 1540inline void 1541vec_dstt (vector float *a1, int a2, const char a3) 1542{ 1543 __builtin_altivec_dstt ((void *) a1, a2, a3); 1544} 1545 1546inline void 1547vec_dstt (unsigned char *a1, int a2, const char a3) 1548{ 1549 __builtin_altivec_dstt ((void *) a1, a2, a3); 1550} 1551 1552inline void 1553vec_dstt (signed char *a1, int a2, const char a3) 1554{ 1555 __builtin_altivec_dstt ((void *) a1, a2, a3); 1556} 1557 1558inline void 1559vec_dstt (unsigned short *a1, int a2, const char a3) 1560{ 1561 __builtin_altivec_dstt ((void *) a1, a2, a3); 1562} 1563 1564inline void 1565vec_dstt (signed short *a1, int a2, const char a3) 1566{ 1567 __builtin_altivec_dstt ((void *) a1, a2, a3); 1568} 1569 1570inline void 1571vec_dstt (unsigned int *a1, int a2, const char a3) 1572{ 1573 __builtin_altivec_dstt ((void *) a1, a2, a3); 1574} 1575 1576inline void 1577vec_dstt (signed int *a1, int a2, const char a3) 1578{ 1579 __builtin_altivec_dstt ((void *) a1, a2, a3); 1580} 1581 1582inline void 1583vec_dstt (unsigned long *a1, int a2, const char a3) 1584{ 1585 __builtin_altivec_dstt ((void *) a1, a2, a3); 1586} 1587 1588inline void 1589vec_dstt (signed long *a1, int a2, const char a3) 1590{ 1591 __builtin_altivec_dstt ((void *) a1, a2, a3); 1592} 1593 1594inline void 1595vec_dstt (float *a1, int a2, const char a3) 1596{ 1597 __builtin_altivec_dstt ((void *) a1, a2, a3); 1598} 1599 1600/* vec_expte */ 1601 1602inline vector float 1603vec_expte (vector float a1) 1604{ 1605 return (vector float) __builtin_altivec_vexptefp ((vector float) a1); 1606} 1607 1608/* vec_floor */ 1609 1610inline vector float 1611vec_floor (vector float a1) 1612{ 1613 return (vector float) __builtin_altivec_vrfim ((vector float) a1); 1614} 1615 1616/* vec_ld */ 1617 1618inline vector float 1619vec_ld (int a1, vector float *a2) 1620{ 1621 return (vector float) __builtin_altivec_lvx (a1, (void *) a2); 1622} 1623 1624inline vector float 1625vec_ld (int a1, float *a2) 1626{ 1627 return (vector float) __builtin_altivec_lvx (a1, (void *) a2); 1628} 1629 1630inline vector signed int 1631vec_ld (int a1, vector signed int *a2) 1632{ 1633 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); 1634} 1635 1636inline vector signed int 1637vec_ld (int a1, signed int *a2) 1638{ 1639 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); 1640} 1641 1642inline vector signed int 1643vec_ld (int a1, signed long *a2) 1644{ 1645 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); 1646} 1647 1648inline vector unsigned int 1649vec_ld (int a1, vector unsigned int *a2) 1650{ 1651 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); 1652} 1653 1654inline vector unsigned int 1655vec_ld (int a1, unsigned int *a2) 1656{ 1657 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); 1658} 1659 1660inline vector unsigned int 1661vec_ld (int a1, unsigned long *a2) 1662{ 1663 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); 1664} 1665 1666inline vector signed short 1667vec_ld (int a1, vector signed short *a2) 1668{ 1669 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); 1670} 1671 1672inline vector signed short 1673vec_ld (int a1, signed short *a2) 1674{ 1675 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); 1676} 1677 1678inline vector unsigned short 1679vec_ld (int a1, vector unsigned short *a2) 1680{ 1681 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); 1682} 1683 1684inline vector unsigned short 1685vec_ld (int a1, unsigned short *a2) 1686{ 1687 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); 1688} 1689 1690inline vector signed char 1691vec_ld (int a1, vector signed char *a2) 1692{ 1693 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); 1694} 1695 1696inline vector signed char 1697vec_ld (int a1, signed char *a2) 1698{ 1699 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); 1700} 1701 1702inline vector unsigned char 1703vec_ld (int a1, vector unsigned char *a2) 1704{ 1705 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); 1706} 1707 1708inline vector unsigned char 1709vec_ld (int a1, unsigned char *a2) 1710{ 1711 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); 1712} 1713 1714/* vec_lde */ 1715 1716inline vector signed char 1717vec_lde (int a1, signed char *a2) 1718{ 1719 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); 1720} 1721 1722inline vector unsigned char 1723vec_lde (int a1, unsigned char *a2) 1724{ 1725 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); 1726} 1727 1728inline vector signed short 1729vec_lde (int a1, signed short *a2) 1730{ 1731 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); 1732} 1733 1734inline vector unsigned short 1735vec_lde (int a1, unsigned short *a2) 1736{ 1737 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); 1738} 1739 1740inline vector float 1741vec_lde (int a1, float *a2) 1742{ 1743 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2); 1744} 1745 1746inline vector signed int 1747vec_lde (int a1, signed int *a2) 1748{ 1749 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); 1750} 1751 1752inline vector unsigned int 1753vec_lde (int a1, unsigned int *a2) 1754{ 1755 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); 1756} 1757 1758inline vector signed int 1759vec_lde (int a1, signed long *a2) 1760{ 1761 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); 1762} 1763 1764inline vector unsigned int 1765vec_lde (int a1, unsigned long *a2) 1766{ 1767 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); 1768} 1769 1770/* vec_lvewx */ 1771 1772inline vector float 1773vec_lvewx (int a1, float *a2) 1774{ 1775 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2); 1776} 1777 1778inline vector signed int 1779vec_lvewx (int a1, signed int *a2) 1780{ 1781 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); 1782} 1783 1784inline vector unsigned int 1785vec_lvewx (int a1, unsigned int *a2) 1786{ 1787 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); 1788} 1789 1790inline vector signed int 1791vec_lvewx (int a1, signed long *a2) 1792{ 1793 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); 1794} 1795 1796inline vector unsigned int 1797vec_lvewx (int a1, unsigned long *a2) 1798{ 1799 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); 1800} 1801 1802/* vec_lvehx */ 1803 1804inline vector signed short 1805vec_lvehx (int a1, signed short *a2) 1806{ 1807 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); 1808} 1809 1810inline vector unsigned short 1811vec_lvehx (int a1, unsigned short *a2) 1812{ 1813 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); 1814} 1815 1816/* vec_lvebx */ 1817 1818inline vector signed char 1819vec_lvebx (int a1, signed char *a2) 1820{ 1821 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); 1822} 1823 1824inline vector unsigned char 1825vec_lvebx (int a1, unsigned char *a2) 1826{ 1827 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); 1828} 1829 1830/* vec_ldl */ 1831 1832inline vector float 1833vec_ldl (int a1, vector float *a2) 1834{ 1835 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); 1836} 1837 1838inline vector float 1839vec_ldl (int a1, float *a2) 1840{ 1841 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); 1842} 1843 1844inline vector signed int 1845vec_ldl (int a1, vector signed int *a2) 1846{ 1847 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); 1848} 1849 1850inline vector signed int 1851vec_ldl (int a1, signed int *a2) 1852{ 1853 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); 1854} 1855 1856inline vector signed int 1857vec_ldl (int a1, signed long *a2) 1858{ 1859 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); 1860} 1861 1862inline vector unsigned int 1863vec_ldl (int a1, vector unsigned int *a2) 1864{ 1865 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); 1866} 1867 1868inline vector unsigned int 1869vec_ldl (int a1, unsigned int *a2) 1870{ 1871 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); 1872} 1873 1874inline vector unsigned int 1875vec_ldl (int a1, unsigned long *a2) 1876{ 1877 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); 1878} 1879 1880inline vector signed short 1881vec_ldl (int a1, vector signed short *a2) 1882{ 1883 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); 1884} 1885 1886inline vector signed short 1887vec_ldl (int a1, signed short *a2) 1888{ 1889 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); 1890} 1891 1892inline vector unsigned short 1893vec_ldl (int a1, vector unsigned short *a2) 1894{ 1895 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); 1896} 1897 1898inline vector unsigned short 1899vec_ldl (int a1, unsigned short *a2) 1900{ 1901 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); 1902} 1903 1904inline vector signed char 1905vec_ldl (int a1, vector signed char *a2) 1906{ 1907 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); 1908} 1909 1910inline vector signed char 1911vec_ldl (int a1, signed char *a2) 1912{ 1913 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); 1914} 1915 1916inline vector unsigned char 1917vec_ldl (int a1, vector unsigned char *a2) 1918{ 1919 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); 1920} 1921 1922inline vector unsigned char 1923vec_ldl (int a1, unsigned char *a2) 1924{ 1925 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); 1926} 1927 1928/* vec_loge */ 1929 1930inline vector float 1931vec_loge (vector float a1) 1932{ 1933 return (vector float) __builtin_altivec_vlogefp ((vector float) a1); 1934} 1935 1936/* vec_lvsl */ 1937 1938inline vector unsigned char 1939vec_lvsl (int a1, unsigned char *a2) 1940{ 1941 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1942} 1943 1944inline vector unsigned char 1945vec_lvsl (int a1, signed char *a2) 1946{ 1947 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1948} 1949 1950inline vector unsigned char 1951vec_lvsl (int a1, unsigned short *a2) 1952{ 1953 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1954} 1955 1956inline vector unsigned char 1957vec_lvsl (int a1, signed short *a2) 1958{ 1959 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1960} 1961 1962inline vector unsigned char 1963vec_lvsl (int a1, unsigned int *a2) 1964{ 1965 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1966} 1967 1968inline vector unsigned char 1969vec_lvsl (int a1, signed int *a2) 1970{ 1971 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1972} 1973 1974inline vector unsigned char 1975vec_lvsl (int a1, unsigned long *a2) 1976{ 1977 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1978} 1979 1980inline vector unsigned char 1981vec_lvsl (int a1, signed long *a2) 1982{ 1983 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1984} 1985 1986inline vector unsigned char 1987vec_lvsl (int a1, float *a2) 1988{ 1989 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 1990} 1991 1992/* vec_lvsr */ 1993 1994inline vector unsigned char 1995vec_lvsr (int a1, unsigned char *a2) 1996{ 1997 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 1998} 1999 2000inline vector unsigned char 2001vec_lvsr (int a1, signed char *a2) 2002{ 2003 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 2004} 2005 2006inline vector unsigned char 2007vec_lvsr (int a1, unsigned short *a2) 2008{ 2009 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 2010} 2011 2012inline vector unsigned char 2013vec_lvsr (int a1, signed short *a2) 2014{ 2015 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 2016} 2017 2018inline vector unsigned char 2019vec_lvsr (int a1, unsigned int *a2) 2020{ 2021 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 2022} 2023 2024inline vector unsigned char 2025vec_lvsr (int a1, signed int *a2) 2026{ 2027 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 2028} 2029 2030inline vector unsigned char 2031vec_lvsr (int a1, unsigned long *a2) 2032{ 2033 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 2034} 2035 2036inline vector unsigned char 2037vec_lvsr (int a1, signed long *a2) 2038{ 2039 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 2040} 2041 2042inline vector unsigned char 2043vec_lvsr (int a1, float *a2) 2044{ 2045 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 2046} 2047 2048/* vec_madd */ 2049 2050inline vector float 2051vec_madd (vector float a1, vector float a2, vector float a3) 2052{ 2053 return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3); 2054} 2055 2056 2057/* vec_madds */ 2058 2059inline vector signed short 2060vec_madds (vector signed short a1, vector signed short a2, vector signed short a3) 2061{ 2062 return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 2063} 2064 2065/* vec_max */ 2066 2067inline vector unsigned char 2068vec_max (vector signed char a1, vector unsigned char a2) 2069{ 2070 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 2071} 2072 2073inline vector unsigned char 2074vec_max (vector unsigned char a1, vector signed char a2) 2075{ 2076 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 2077} 2078 2079inline vector unsigned char 2080vec_max (vector unsigned char a1, vector unsigned char a2) 2081{ 2082 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 2083} 2084 2085inline vector signed char 2086vec_max (vector signed char a1, vector signed char a2) 2087{ 2088 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2); 2089} 2090 2091inline vector unsigned short 2092vec_max (vector signed short a1, vector unsigned short a2) 2093{ 2094 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 2095} 2096 2097inline vector unsigned short 2098vec_max (vector unsigned short a1, vector signed short a2) 2099{ 2100 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 2101} 2102 2103inline vector unsigned short 2104vec_max (vector unsigned short a1, vector unsigned short a2) 2105{ 2106 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 2107} 2108 2109inline vector signed short 2110vec_max (vector signed short a1, vector signed short a2) 2111{ 2112 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2); 2113} 2114 2115inline vector unsigned int 2116vec_max (vector signed int a1, vector unsigned int a2) 2117{ 2118 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 2119} 2120 2121inline vector unsigned int 2122vec_max (vector unsigned int a1, vector signed int a2) 2123{ 2124 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 2125} 2126 2127inline vector unsigned int 2128vec_max (vector unsigned int a1, vector unsigned int a2) 2129{ 2130 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 2131} 2132 2133inline vector signed int 2134vec_max (vector signed int a1, vector signed int a2) 2135{ 2136 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2); 2137} 2138 2139inline vector float 2140vec_max (vector float a1, vector float a2) 2141{ 2142 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2); 2143} 2144 2145/* vec_vmaxfp */ 2146 2147inline vector float 2148vec_vmaxfp (vector float a1, vector float a2) 2149{ 2150 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2); 2151} 2152 2153/* vec_vmaxsw */ 2154 2155inline vector signed int 2156vec_vmaxsw (vector signed int a1, vector signed int a2) 2157{ 2158 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2); 2159} 2160 2161/* vec_vmaxuw */ 2162 2163inline vector unsigned int 2164vec_vmaxuw (vector signed int a1, vector unsigned int a2) 2165{ 2166 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 2167} 2168 2169inline vector unsigned int 2170vec_vmaxuw (vector unsigned int a1, vector signed int a2) 2171{ 2172 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 2173} 2174 2175inline vector unsigned int 2176vec_vmaxuw (vector unsigned int a1, vector unsigned int a2) 2177{ 2178 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 2179} 2180 2181/* vec_vmaxsh */ 2182 2183inline vector signed short 2184vec_vmaxsh (vector signed short a1, vector signed short a2) 2185{ 2186 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2); 2187} 2188 2189/* vec_vmaxuh */ 2190 2191inline vector unsigned short 2192vec_vmaxuh (vector signed short a1, vector unsigned short a2) 2193{ 2194 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 2195} 2196 2197inline vector unsigned short 2198vec_vmaxuh (vector unsigned short a1, vector signed short a2) 2199{ 2200 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 2201} 2202 2203inline vector unsigned short 2204vec_vmaxuh (vector unsigned short a1, vector unsigned short a2) 2205{ 2206 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 2207} 2208 2209/* vec_vmaxsb */ 2210 2211inline vector signed char 2212vec_vmaxsb (vector signed char a1, vector signed char a2) 2213{ 2214 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2); 2215} 2216 2217/* vec_vmaxub */ 2218 2219inline vector unsigned char 2220vec_vmaxub (vector signed char a1, vector unsigned char a2) 2221{ 2222 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 2223} 2224 2225inline vector unsigned char 2226vec_vmaxub (vector unsigned char a1, vector signed char a2) 2227{ 2228 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 2229} 2230 2231inline vector unsigned char 2232vec_vmaxub (vector unsigned char a1, vector unsigned char a2) 2233{ 2234 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 2235} 2236 2237/* vec_mergeh */ 2238 2239inline vector signed char 2240vec_mergeh (vector signed char a1, vector signed char a2) 2241{ 2242 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); 2243} 2244 2245inline vector unsigned char 2246vec_mergeh (vector unsigned char a1, vector unsigned char a2) 2247{ 2248 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); 2249} 2250 2251inline vector signed short 2252vec_mergeh (vector signed short a1, vector signed short a2) 2253{ 2254 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); 2255} 2256 2257inline vector unsigned short 2258vec_mergeh (vector unsigned short a1, vector unsigned short a2) 2259{ 2260 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); 2261} 2262 2263inline vector float 2264vec_mergeh (vector float a1, vector float a2) 2265{ 2266 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 2267} 2268 2269inline vector signed int 2270vec_mergeh (vector signed int a1, vector signed int a2) 2271{ 2272 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 2273} 2274 2275inline vector unsigned int 2276vec_mergeh (vector unsigned int a1, vector unsigned int a2) 2277{ 2278 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 2279} 2280 2281/* vec_vmrghw */ 2282 2283inline vector float 2284vec_vmrghw (vector float a1, vector float a2) 2285{ 2286 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 2287} 2288 2289inline vector signed int 2290vec_vmrghw (vector signed int a1, vector signed int a2) 2291{ 2292 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 2293} 2294 2295inline vector unsigned int 2296vec_vmrghw (vector unsigned int a1, vector unsigned int a2) 2297{ 2298 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 2299} 2300 2301/* vec_vmrghh */ 2302 2303inline vector signed short 2304vec_vmrghh (vector signed short a1, vector signed short a2) 2305{ 2306 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); 2307} 2308 2309inline vector unsigned short 2310vec_vmrghh (vector unsigned short a1, vector unsigned short a2) 2311{ 2312 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); 2313} 2314 2315/* vec_vmrghb */ 2316 2317inline vector signed char 2318vec_vmrghb (vector signed char a1, vector signed char a2) 2319{ 2320 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); 2321} 2322 2323inline vector unsigned char 2324vec_vmrghb (vector unsigned char a1, vector unsigned char a2) 2325{ 2326 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); 2327} 2328 2329/* vec_mergel */ 2330 2331inline vector signed char 2332vec_mergel (vector signed char a1, vector signed char a2) 2333{ 2334 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); 2335} 2336 2337inline vector unsigned char 2338vec_mergel (vector unsigned char a1, vector unsigned char a2) 2339{ 2340 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); 2341} 2342 2343inline vector signed short 2344vec_mergel (vector signed short a1, vector signed short a2) 2345{ 2346 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); 2347} 2348 2349inline vector unsigned short 2350vec_mergel (vector unsigned short a1, vector unsigned short a2) 2351{ 2352 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); 2353} 2354 2355inline vector float 2356vec_mergel (vector float a1, vector float a2) 2357{ 2358 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 2359} 2360 2361inline vector signed int 2362vec_mergel (vector signed int a1, vector signed int a2) 2363{ 2364 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 2365} 2366 2367inline vector unsigned int 2368vec_mergel (vector unsigned int a1, vector unsigned int a2) 2369{ 2370 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 2371} 2372 2373/* vec_vmrglw */ 2374 2375inline vector float 2376vec_vmrglw (vector float a1, vector float a2) 2377{ 2378 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 2379} 2380 2381inline vector signed int 2382vec_vmrglw (vector signed int a1, vector signed int a2) 2383{ 2384 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 2385} 2386 2387inline vector unsigned int 2388vec_vmrglw (vector unsigned int a1, vector unsigned int a2) 2389{ 2390 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 2391} 2392 2393/* vec_vmrglh */ 2394 2395inline vector signed short 2396vec_vmrglh (vector signed short a1, vector signed short a2) 2397{ 2398 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); 2399} 2400 2401inline vector unsigned short 2402vec_vmrglh (vector unsigned short a1, vector unsigned short a2) 2403{ 2404 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); 2405} 2406 2407/* vec_vmrglb */ 2408 2409inline vector signed char 2410vec_vmrglb (vector signed char a1, vector signed char a2) 2411{ 2412 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); 2413} 2414 2415inline vector unsigned char 2416vec_vmrglb (vector unsigned char a1, vector unsigned char a2) 2417{ 2418 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); 2419} 2420 2421/* vec_mfvscr */ 2422 2423inline vector unsigned short 2424vec_mfvscr (void) 2425{ 2426 return (vector unsigned short) __builtin_altivec_mfvscr (); 2427} 2428 2429/* vec_min */ 2430 2431inline vector unsigned char 2432vec_min (vector signed char a1, vector unsigned char a2) 2433{ 2434 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 2435} 2436 2437inline vector unsigned char 2438vec_min (vector unsigned char a1, vector signed char a2) 2439{ 2440 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 2441} 2442 2443inline vector unsigned char 2444vec_min (vector unsigned char a1, vector unsigned char a2) 2445{ 2446 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 2447} 2448 2449inline vector signed char 2450vec_min (vector signed char a1, vector signed char a2) 2451{ 2452 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2); 2453} 2454 2455inline vector unsigned short 2456vec_min (vector signed short a1, vector unsigned short a2) 2457{ 2458 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 2459} 2460 2461inline vector unsigned short 2462vec_min (vector unsigned short a1, vector signed short a2) 2463{ 2464 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 2465} 2466 2467inline vector unsigned short 2468vec_min (vector unsigned short a1, vector unsigned short a2) 2469{ 2470 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 2471} 2472 2473inline vector signed short 2474vec_min (vector signed short a1, vector signed short a2) 2475{ 2476 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2); 2477} 2478 2479inline vector unsigned int 2480vec_min (vector signed int a1, vector unsigned int a2) 2481{ 2482 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 2483} 2484 2485inline vector unsigned int 2486vec_min (vector unsigned int a1, vector signed int a2) 2487{ 2488 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 2489} 2490 2491inline vector unsigned int 2492vec_min (vector unsigned int a1, vector unsigned int a2) 2493{ 2494 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 2495} 2496 2497inline vector signed int 2498vec_min (vector signed int a1, vector signed int a2) 2499{ 2500 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2); 2501} 2502 2503inline vector float 2504vec_min (vector float a1, vector float a2) 2505{ 2506 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2); 2507} 2508 2509/* vec_vminfp */ 2510 2511inline vector float 2512vec_vminfp (vector float a1, vector float a2) 2513{ 2514 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2); 2515} 2516 2517/* vec_vminsw */ 2518 2519inline vector signed int 2520vec_vminsw (vector signed int a1, vector signed int a2) 2521{ 2522 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2); 2523} 2524 2525/* vec_vminuw */ 2526 2527inline vector unsigned int 2528vec_vminuw (vector signed int a1, vector unsigned int a2) 2529{ 2530 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 2531} 2532 2533inline vector unsigned int 2534vec_vminuw (vector unsigned int a1, vector signed int a2) 2535{ 2536 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 2537} 2538 2539inline vector unsigned int 2540vec_vminuw (vector unsigned int a1, vector unsigned int a2) 2541{ 2542 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 2543} 2544 2545/* vec_vminsh */ 2546 2547inline vector signed short 2548vec_vminsh (vector signed short a1, vector signed short a2) 2549{ 2550 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2); 2551} 2552 2553/* vec_vminuh */ 2554 2555inline vector unsigned short 2556vec_vminuh (vector signed short a1, vector unsigned short a2) 2557{ 2558 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 2559} 2560 2561inline vector unsigned short 2562vec_vminuh (vector unsigned short a1, vector signed short a2) 2563{ 2564 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 2565} 2566 2567inline vector unsigned short 2568vec_vminuh (vector unsigned short a1, vector unsigned short a2) 2569{ 2570 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 2571} 2572 2573/* vec_vminsb */ 2574 2575inline vector signed char 2576vec_vminsb (vector signed char a1, vector signed char a2) 2577{ 2578 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2); 2579} 2580 2581/* vec_vminub */ 2582 2583inline vector unsigned char 2584vec_vminub (vector signed char a1, vector unsigned char a2) 2585{ 2586 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 2587} 2588 2589inline vector unsigned char 2590vec_vminub (vector unsigned char a1, vector signed char a2) 2591{ 2592 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 2593} 2594 2595inline vector unsigned char 2596vec_vminub (vector unsigned char a1, vector unsigned char a2) 2597{ 2598 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 2599} 2600 2601/* vec_mladd */ 2602 2603inline vector signed short 2604vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3) 2605{ 2606 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 2607} 2608 2609inline vector signed short 2610vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3) 2611{ 2612 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 2613} 2614 2615inline vector signed short 2616vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3) 2617{ 2618 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 2619} 2620 2621inline vector unsigned short 2622vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3) 2623{ 2624 return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 2625} 2626 2627/* vec_mradds */ 2628 2629inline vector signed short 2630vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3) 2631{ 2632 return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 2633} 2634 2635/* vec_msum */ 2636 2637inline vector unsigned int 2638vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3) 2639{ 2640 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); 2641} 2642 2643inline vector signed int 2644vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3) 2645{ 2646 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); 2647} 2648 2649inline vector unsigned int 2650vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) 2651{ 2652 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 2653} 2654 2655inline vector signed int 2656vec_msum (vector signed short a1, vector signed short a2, vector signed int a3) 2657{ 2658 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 2659} 2660 2661/* vec_vmsumshm */ 2662 2663inline vector signed int 2664vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3) 2665{ 2666 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 2667} 2668 2669/* vec_vmsumuhm */ 2670 2671inline vector unsigned int 2672vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) 2673{ 2674 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 2675} 2676 2677/* vec_vmsummbm */ 2678 2679inline vector signed int 2680vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3) 2681{ 2682 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); 2683} 2684 2685/* vec_vmsumubm */ 2686 2687inline vector unsigned int 2688vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3) 2689{ 2690 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); 2691} 2692 2693/* vec_msums */ 2694 2695inline vector unsigned int 2696vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) 2697{ 2698 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 2699} 2700 2701inline vector signed int 2702vec_msums (vector signed short a1, vector signed short a2, vector signed int a3) 2703{ 2704 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 2705} 2706 2707/* vec_vmsumshs */ 2708 2709inline vector signed int 2710vec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3) 2711{ 2712 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 2713} 2714 2715/* vec_vmsumuhs */ 2716 2717inline vector unsigned int 2718vec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) 2719{ 2720 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 2721} 2722 2723/* vec_mtvscr */ 2724 2725inline void 2726vec_mtvscr (vector signed int a1) 2727{ 2728 __builtin_altivec_mtvscr ((vector signed int) a1); 2729} 2730 2731inline void 2732vec_mtvscr (vector unsigned int a1) 2733{ 2734 __builtin_altivec_mtvscr ((vector signed int) a1); 2735} 2736 2737inline void 2738vec_mtvscr (vector signed short a1) 2739{ 2740 __builtin_altivec_mtvscr ((vector signed int) a1); 2741} 2742 2743inline void 2744vec_mtvscr (vector unsigned short a1) 2745{ 2746 __builtin_altivec_mtvscr ((vector signed int) a1); 2747} 2748 2749inline void 2750vec_mtvscr (vector signed char a1) 2751{ 2752 __builtin_altivec_mtvscr ((vector signed int) a1); 2753} 2754 2755inline void 2756vec_mtvscr (vector unsigned char a1) 2757{ 2758 __builtin_altivec_mtvscr ((vector signed int) a1); 2759} 2760 2761/* vec_mule */ 2762 2763inline vector unsigned short 2764vec_mule (vector unsigned char a1, vector unsigned char a2) 2765{ 2766 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2); 2767} 2768 2769inline vector signed short 2770vec_mule (vector signed char a1, vector signed char a2) 2771{ 2772 return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2); 2773} 2774 2775inline vector unsigned int 2776vec_mule (vector unsigned short a1, vector unsigned short a2) 2777{ 2778 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2); 2779} 2780 2781inline vector signed int 2782vec_mule (vector signed short a1, vector signed short a2) 2783{ 2784 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2); 2785} 2786 2787/* vec_vmulesh */ 2788 2789inline vector signed int 2790vec_vmulesh (vector signed short a1, vector signed short a2) 2791{ 2792 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2); 2793} 2794 2795/* vec_vmuleuh */ 2796 2797inline vector unsigned int 2798vec_vmuleuh (vector unsigned short a1, vector unsigned short a2) 2799{ 2800 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2); 2801} 2802 2803/* vec_vmuleub */ 2804inline vector unsigned short 2805vec_vmuleub (vector unsigned char a1, vector unsigned char a2) 2806{ 2807 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2); 2808} 2809 2810/* vec_mulo */ 2811 2812inline vector unsigned short 2813vec_mulo (vector unsigned char a1, vector unsigned char a2) 2814{ 2815 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2); 2816} 2817 2818inline vector signed short 2819vec_mulo (vector signed char a1, vector signed char a2) 2820{ 2821 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2); 2822} 2823 2824inline vector unsigned int 2825vec_mulo (vector unsigned short a1, vector unsigned short a2) 2826{ 2827 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2); 2828} 2829 2830inline vector signed int 2831vec_mulo (vector signed short a1, vector signed short a2) 2832{ 2833 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2); 2834} 2835 2836/* vec_vmulosh */ 2837 2838inline vector signed int 2839vec_vmulosh (vector signed short a1, vector signed short a2) 2840{ 2841 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2); 2842} 2843 2844/* vec_vmulouh */ 2845 2846inline vector unsigned int 2847vec_vmulouh (vector unsigned short a1, vector unsigned short a2) 2848{ 2849 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2); 2850} 2851 2852/* vec_vmulosb */ 2853 2854inline vector signed short 2855vec_vmulosb (vector signed char a1, vector signed char a2) 2856{ 2857 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2); 2858} 2859 2860/* vec_vmuloub */ 2861 2862inline vector unsigned short 2863vec_vmuloub (vector unsigned char a1, vector unsigned char a2) 2864{ 2865 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2); 2866} 2867 2868/* vec_nmsub */ 2869 2870inline vector float 2871vec_nmsub (vector float a1, vector float a2, vector float a3) 2872{ 2873 return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3); 2874} 2875 2876/* vec_nor */ 2877 2878inline vector float 2879vec_nor (vector float a1, vector float a2) 2880{ 2881 return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 2882} 2883 2884inline vector signed int 2885vec_nor (vector signed int a1, vector signed int a2) 2886{ 2887 return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 2888} 2889 2890inline vector unsigned int 2891vec_nor (vector unsigned int a1, vector unsigned int a2) 2892{ 2893 return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 2894} 2895 2896inline vector signed short 2897vec_nor (vector signed short a1, vector signed short a2) 2898{ 2899 return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 2900} 2901 2902inline vector unsigned short 2903vec_nor (vector unsigned short a1, vector unsigned short a2) 2904{ 2905 return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 2906} 2907 2908inline vector signed char 2909vec_nor (vector signed char a1, vector signed char a2) 2910{ 2911 return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 2912} 2913 2914inline vector unsigned char 2915vec_nor (vector unsigned char a1, vector unsigned char a2) 2916{ 2917 return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 2918} 2919 2920/* vec_or */ 2921 2922inline vector float 2923vec_or (vector float a1, vector float a2) 2924{ 2925 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2926} 2927 2928inline vector float 2929vec_or (vector float a1, vector signed int a2) 2930{ 2931 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2932} 2933 2934inline vector float 2935vec_or (vector signed int a1, vector float a2) 2936{ 2937 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2938} 2939 2940inline vector signed int 2941vec_or (vector signed int a1, vector signed int a2) 2942{ 2943 return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2944} 2945 2946inline vector unsigned int 2947vec_or (vector signed int a1, vector unsigned int a2) 2948{ 2949 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2950} 2951 2952inline vector unsigned int 2953vec_or (vector unsigned int a1, vector signed int a2) 2954{ 2955 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2956} 2957 2958inline vector unsigned int 2959vec_or (vector unsigned int a1, vector unsigned int a2) 2960{ 2961 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2962} 2963 2964inline vector signed short 2965vec_or (vector signed short a1, vector signed short a2) 2966{ 2967 return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2968} 2969 2970inline vector unsigned short 2971vec_or (vector signed short a1, vector unsigned short a2) 2972{ 2973 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2974} 2975 2976inline vector unsigned short 2977vec_or (vector unsigned short a1, vector signed short a2) 2978{ 2979 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2980} 2981 2982inline vector unsigned short 2983vec_or (vector unsigned short a1, vector unsigned short a2) 2984{ 2985 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2986} 2987 2988inline vector signed char 2989vec_or (vector signed char a1, vector signed char a2) 2990{ 2991 return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2992} 2993 2994inline vector unsigned char 2995vec_or (vector signed char a1, vector unsigned char a2) 2996{ 2997 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 2998} 2999 3000inline vector unsigned char 3001vec_or (vector unsigned char a1, vector signed char a2) 3002{ 3003 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 3004} 3005 3006inline vector unsigned char 3007vec_or (vector unsigned char a1, vector unsigned char a2) 3008{ 3009 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 3010} 3011 3012/* vec_pack */ 3013 3014inline vector signed char 3015vec_pack (vector signed short a1, vector signed short a2) 3016{ 3017 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); 3018} 3019 3020inline vector unsigned char 3021vec_pack (vector unsigned short a1, vector unsigned short a2) 3022{ 3023 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); 3024} 3025 3026inline vector signed short 3027vec_pack (vector signed int a1, vector signed int a2) 3028{ 3029 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); 3030} 3031 3032inline vector unsigned short 3033vec_pack (vector unsigned int a1, vector unsigned int a2) 3034{ 3035 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); 3036} 3037 3038/* vec_vpkuwum */ 3039 3040inline vector signed short 3041vec_vpkuwum (vector signed int a1, vector signed int a2) 3042{ 3043 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); 3044} 3045 3046inline vector unsigned short 3047vec_vpkuwum (vector unsigned int a1, vector unsigned int a2) 3048{ 3049 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); 3050} 3051 3052/* vec_vpkuhum */ 3053 3054inline vector signed char 3055vec_vpkuhum (vector signed short a1, vector signed short a2) 3056{ 3057 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); 3058} 3059 3060inline vector unsigned char 3061vec_vpkuhum (vector unsigned short a1, vector unsigned short a2) 3062{ 3063 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); 3064} 3065 3066/* vec_packpx */ 3067 3068inline vector unsigned short 3069vec_packpx (vector unsigned int a1, vector unsigned int a2) 3070{ 3071 return (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2); 3072} 3073 3074/* vec_packs */ 3075 3076inline vector unsigned char 3077vec_packs (vector unsigned short a1, vector unsigned short a2) 3078{ 3079 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2); 3080} 3081 3082inline vector signed char 3083vec_packs (vector signed short a1, vector signed short a2) 3084{ 3085 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2); 3086} 3087 3088inline vector unsigned short 3089vec_packs (vector unsigned int a1, vector unsigned int a2) 3090{ 3091 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2); 3092} 3093 3094inline vector signed short 3095vec_packs (vector signed int a1, vector signed int a2) 3096{ 3097 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2); 3098} 3099 3100/* vec_vpkswss */ 3101 3102inline vector signed short 3103vec_vpkswss (vector signed int a1, vector signed int a2) 3104{ 3105 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2); 3106} 3107 3108/* vec_vpkuwus */ 3109 3110inline vector unsigned short 3111vec_vpkuwus (vector unsigned int a1, vector unsigned int a2) 3112{ 3113 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2); 3114} 3115 3116/* vec_vpkshss */ 3117 3118inline vector signed char 3119vec_vpkshss (vector signed short a1, vector signed short a2) 3120{ 3121 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2); 3122} 3123 3124/* vec_vpkuhus */ 3125 3126inline vector unsigned char 3127vec_vpkuhus (vector unsigned short a1, vector unsigned short a2) 3128{ 3129 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2); 3130} 3131 3132/* vec_packsu */ 3133 3134inline vector unsigned char 3135vec_packsu (vector unsigned short a1, vector unsigned short a2) 3136{ 3137 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2); 3138} 3139 3140inline vector unsigned char 3141vec_packsu (vector signed short a1, vector signed short a2) 3142{ 3143 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2); 3144} 3145 3146inline vector unsigned short 3147vec_packsu (vector unsigned int a1, vector unsigned int a2) 3148{ 3149 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2); 3150} 3151 3152inline vector unsigned short 3153vec_packsu (vector signed int a1, vector signed int a2) 3154{ 3155 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2); 3156} 3157 3158/* vec_vpkswus */ 3159 3160inline vector unsigned short 3161vec_vpkswus (vector signed int a1, vector signed int a2) 3162{ 3163 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2); 3164} 3165 3166/* vec_vpkshus */ 3167 3168inline vector unsigned char 3169vec_vpkshus (vector signed short a1, vector signed short a2) 3170{ 3171 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2); 3172} 3173 3174/* vec_perm */ 3175 3176inline vector float 3177vec_perm (vector float a1, vector float a2, vector unsigned char a3) 3178{ 3179 return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 3180} 3181 3182inline vector signed int 3183vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3) 3184{ 3185 return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 3186} 3187 3188inline vector unsigned int 3189vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3) 3190{ 3191 return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 3192} 3193 3194inline vector signed short 3195vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3) 3196{ 3197 return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 3198} 3199 3200inline vector unsigned short 3201vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3) 3202{ 3203 return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 3204} 3205 3206inline vector signed char 3207vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3) 3208{ 3209 return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 3210} 3211 3212inline vector unsigned char 3213vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3) 3214{ 3215 return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 3216} 3217 3218/* vec_re */ 3219 3220inline vector float 3221vec_re (vector float a1) 3222{ 3223 return (vector float) __builtin_altivec_vrefp ((vector float) a1); 3224} 3225 3226/* vec_rl */ 3227 3228inline vector signed char 3229vec_rl (vector signed char a1, vector unsigned char a2) 3230{ 3231 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); 3232} 3233 3234inline vector unsigned char 3235vec_rl (vector unsigned char a1, vector unsigned char a2) 3236{ 3237 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); 3238} 3239 3240inline vector signed short 3241vec_rl (vector signed short a1, vector unsigned short a2) 3242{ 3243 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); 3244} 3245 3246inline vector unsigned short 3247vec_rl (vector unsigned short a1, vector unsigned short a2) 3248{ 3249 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); 3250} 3251 3252inline vector signed int 3253vec_rl (vector signed int a1, vector unsigned int a2) 3254{ 3255 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); 3256} 3257 3258inline vector unsigned int 3259vec_rl (vector unsigned int a1, vector unsigned int a2) 3260{ 3261 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); 3262} 3263 3264/* vec_vrlw */ 3265 3266inline vector signed int 3267vec_vrlw (vector signed int a1, vector unsigned int a2) 3268{ 3269 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); 3270} 3271 3272inline vector unsigned int 3273vec_vrlw (vector unsigned int a1, vector unsigned int a2) 3274{ 3275 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); 3276} 3277 3278/* vec_vrlh */ 3279 3280inline vector signed short 3281vec_vrlh (vector signed short a1, vector unsigned short a2) 3282{ 3283 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); 3284} 3285 3286inline vector unsigned short 3287vec_vrlh (vector unsigned short a1, vector unsigned short a2) 3288{ 3289 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); 3290} 3291 3292/* vec_vrlb */ 3293 3294inline vector signed char 3295vec_vrlb (vector signed char a1, vector unsigned char a2) 3296{ 3297 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); 3298} 3299 3300inline vector unsigned char 3301vec_vrlb (vector unsigned char a1, vector unsigned char a2) 3302{ 3303 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); 3304} 3305 3306/* vec_round */ 3307 3308inline vector float 3309vec_round (vector float a1) 3310{ 3311 return (vector float) __builtin_altivec_vrfin ((vector float) a1); 3312} 3313 3314/* vec_rsqrte */ 3315 3316inline vector float 3317vec_rsqrte (vector float a1) 3318{ 3319 return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1); 3320} 3321 3322/* vec_sel */ 3323 3324inline vector float 3325vec_sel (vector float a1, vector float a2, vector signed int a3) 3326{ 3327 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3328} 3329 3330inline vector float 3331vec_sel (vector float a1, vector float a2, vector unsigned int a3) 3332{ 3333 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3334} 3335 3336inline vector signed int 3337vec_sel (vector signed int a1, vector signed int a2, vector signed int a3) 3338{ 3339 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3340} 3341 3342inline vector signed int 3343vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3) 3344{ 3345 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3346} 3347 3348inline vector unsigned int 3349vec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3) 3350{ 3351 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3352} 3353 3354inline vector unsigned int 3355vec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3) 3356{ 3357 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3358} 3359 3360inline vector signed short 3361vec_sel (vector signed short a1, vector signed short a2, vector signed short a3) 3362{ 3363 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3364} 3365 3366inline vector signed short 3367vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3) 3368{ 3369 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3370} 3371 3372inline vector unsigned short 3373vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3) 3374{ 3375 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3376} 3377 3378inline vector unsigned short 3379vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3) 3380{ 3381 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3382} 3383 3384inline vector signed char 3385vec_sel (vector signed char a1, vector signed char a2, vector signed char a3) 3386{ 3387 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3388} 3389 3390inline vector signed char 3391vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3) 3392{ 3393 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3394} 3395 3396inline vector unsigned char 3397vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3) 3398{ 3399 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3400} 3401 3402inline vector unsigned char 3403vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3) 3404{ 3405 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 3406} 3407 3408/* vec_sl */ 3409 3410inline vector signed char 3411vec_sl (vector signed char a1, vector unsigned char a2) 3412{ 3413 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); 3414} 3415 3416inline vector unsigned char 3417vec_sl (vector unsigned char a1, vector unsigned char a2) 3418{ 3419 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); 3420} 3421 3422inline vector signed short 3423vec_sl (vector signed short a1, vector unsigned short a2) 3424{ 3425 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); 3426} 3427 3428inline vector unsigned short 3429vec_sl (vector unsigned short a1, vector unsigned short a2) 3430{ 3431 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); 3432} 3433 3434inline vector signed int 3435vec_sl (vector signed int a1, vector unsigned int a2) 3436{ 3437 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); 3438} 3439 3440inline vector unsigned int 3441vec_sl (vector unsigned int a1, vector unsigned int a2) 3442{ 3443 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); 3444} 3445 3446/* vec_vslw */ 3447 3448inline vector signed int 3449vec_vslw (vector signed int a1, vector unsigned int a2) 3450{ 3451 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); 3452} 3453 3454inline vector unsigned int 3455vec_vslw (vector unsigned int a1, vector unsigned int a2) 3456{ 3457 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); 3458} 3459 3460/* vec_vslh */ 3461 3462inline vector signed short 3463vec_vslh (vector signed short a1, vector unsigned short a2) 3464{ 3465 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); 3466} 3467 3468inline vector unsigned short 3469vec_vslh (vector unsigned short a1, vector unsigned short a2) 3470{ 3471 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); 3472} 3473 3474/* vec_vslb */ 3475 3476inline vector signed char 3477vec_vslb (vector signed char a1, vector unsigned char a2) 3478{ 3479 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); 3480} 3481 3482inline vector unsigned char 3483vec_vslb (vector unsigned char a1, vector unsigned char a2) 3484{ 3485 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); 3486} 3487 3488/* vec_sld */ 3489 3490inline vector float 3491vec_sld (vector float a1, vector float a2, const char a3) 3492{ 3493 return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 3494} 3495 3496inline vector signed int 3497vec_sld (vector signed int a1, vector signed int a2, const char a3) 3498{ 3499 return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 3500} 3501 3502inline vector unsigned int 3503vec_sld (vector unsigned int a1, vector unsigned int a2, const char a3) 3504{ 3505 return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 3506} 3507 3508inline vector signed short 3509vec_sld (vector signed short a1, vector signed short a2, const char a3) 3510{ 3511 return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 3512} 3513 3514inline vector unsigned short 3515vec_sld (vector unsigned short a1, vector unsigned short a2, const char a3) 3516{ 3517 return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 3518} 3519 3520inline vector signed char 3521vec_sld (vector signed char a1, vector signed char a2, const char a3) 3522{ 3523 return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 3524} 3525 3526inline vector unsigned char 3527vec_sld (vector unsigned char a1, vector unsigned char a2, const char a3) 3528{ 3529 return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 3530} 3531 3532/* vec_sll */ 3533 3534inline vector signed int 3535vec_sll (vector signed int a1, vector unsigned int a2) 3536{ 3537 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3538} 3539 3540inline vector signed int 3541vec_sll (vector signed int a1, vector unsigned short a2) 3542{ 3543 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3544} 3545 3546inline vector signed int 3547vec_sll (vector signed int a1, vector unsigned char a2) 3548{ 3549 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3550} 3551 3552inline vector unsigned int 3553vec_sll (vector unsigned int a1, vector unsigned int a2) 3554{ 3555 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3556} 3557 3558inline vector unsigned int 3559vec_sll (vector unsigned int a1, vector unsigned short a2) 3560{ 3561 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3562} 3563 3564inline vector unsigned int 3565vec_sll (vector unsigned int a1, vector unsigned char a2) 3566{ 3567 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3568} 3569 3570inline vector signed short 3571vec_sll (vector signed short a1, vector unsigned int a2) 3572{ 3573 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3574} 3575 3576inline vector signed short 3577vec_sll (vector signed short a1, vector unsigned short a2) 3578{ 3579 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3580} 3581 3582inline vector signed short 3583vec_sll (vector signed short a1, vector unsigned char a2) 3584{ 3585 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3586} 3587 3588inline vector unsigned short 3589vec_sll (vector unsigned short a1, vector unsigned int a2) 3590{ 3591 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3592} 3593 3594inline vector unsigned short 3595vec_sll (vector unsigned short a1, vector unsigned short a2) 3596{ 3597 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3598} 3599 3600inline vector unsigned short 3601vec_sll (vector unsigned short a1, vector unsigned char a2) 3602{ 3603 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3604} 3605 3606inline vector signed char 3607vec_sll (vector signed char a1, vector unsigned int a2) 3608{ 3609 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3610} 3611 3612inline vector signed char 3613vec_sll (vector signed char a1, vector unsigned short a2) 3614{ 3615 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3616} 3617 3618inline vector signed char 3619vec_sll (vector signed char a1, vector unsigned char a2) 3620{ 3621 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3622} 3623 3624inline vector unsigned char 3625vec_sll (vector unsigned char a1, vector unsigned int a2) 3626{ 3627 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3628} 3629 3630inline vector unsigned char 3631vec_sll (vector unsigned char a1, vector unsigned short a2) 3632{ 3633 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3634} 3635 3636inline vector unsigned char 3637vec_sll (vector unsigned char a1, vector unsigned char a2) 3638{ 3639 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 3640} 3641 3642/* vec_slo */ 3643 3644inline vector float 3645vec_slo (vector float a1, vector signed char a2) 3646{ 3647 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3648} 3649 3650inline vector float 3651vec_slo (vector float a1, vector unsigned char a2) 3652{ 3653 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3654} 3655 3656inline vector signed int 3657vec_slo (vector signed int a1, vector signed char a2) 3658{ 3659 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3660} 3661 3662inline vector signed int 3663vec_slo (vector signed int a1, vector unsigned char a2) 3664{ 3665 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3666} 3667 3668inline vector unsigned int 3669vec_slo (vector unsigned int a1, vector signed char a2) 3670{ 3671 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3672} 3673 3674inline vector unsigned int 3675vec_slo (vector unsigned int a1, vector unsigned char a2) 3676{ 3677 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3678} 3679 3680inline vector signed short 3681vec_slo (vector signed short a1, vector signed char a2) 3682{ 3683 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3684} 3685 3686inline vector signed short 3687vec_slo (vector signed short a1, vector unsigned char a2) 3688{ 3689 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3690} 3691 3692inline vector unsigned short 3693vec_slo (vector unsigned short a1, vector signed char a2) 3694{ 3695 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3696} 3697 3698inline vector unsigned short 3699vec_slo (vector unsigned short a1, vector unsigned char a2) 3700{ 3701 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3702} 3703 3704inline vector signed char 3705vec_slo (vector signed char a1, vector signed char a2) 3706{ 3707 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3708} 3709 3710inline vector signed char 3711vec_slo (vector signed char a1, vector unsigned char a2) 3712{ 3713 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3714} 3715 3716inline vector unsigned char 3717vec_slo (vector unsigned char a1, vector signed char a2) 3718{ 3719 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3720} 3721 3722inline vector unsigned char 3723vec_slo (vector unsigned char a1, vector unsigned char a2) 3724{ 3725 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 3726} 3727 3728/* vec_splat */ 3729 3730inline vector signed char 3731vec_splat (vector signed char a1, const char a2) 3732{ 3733 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2); 3734} 3735 3736inline vector unsigned char 3737vec_splat (vector unsigned char a1, const char a2) 3738{ 3739 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2); 3740} 3741 3742inline vector signed short 3743vec_splat (vector signed short a1, const char a2) 3744{ 3745 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2); 3746} 3747 3748inline vector unsigned short 3749vec_splat (vector unsigned short a1, const char a2) 3750{ 3751 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2); 3752} 3753 3754inline vector float 3755vec_splat (vector float a1, const char a2) 3756{ 3757 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2); 3758} 3759 3760inline vector signed int 3761vec_splat (vector signed int a1, const char a2) 3762{ 3763 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2); 3764} 3765 3766inline vector unsigned int 3767vec_splat (vector unsigned int a1, const char a2) 3768{ 3769 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2); 3770} 3771 3772/* vec_vspltw */ 3773 3774inline vector float 3775vec_vspltw (vector float a1, const char a2) 3776{ 3777 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2); 3778} 3779 3780inline vector signed int 3781vec_vspltw (vector signed int a1, const char a2) 3782{ 3783 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2); 3784} 3785 3786inline vector unsigned int 3787vec_vspltw (vector unsigned int a1, const char a2) 3788{ 3789 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2); 3790} 3791 3792/* vec_vsplth */ 3793 3794inline vector signed short 3795vec_vsplth (vector signed short a1, const char a2) 3796{ 3797 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2); 3798} 3799 3800inline vector unsigned short 3801vec_vsplth (vector unsigned short a1, const char a2) 3802{ 3803 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2); 3804} 3805 3806/* vec_vspltb */ 3807 3808inline vector signed char 3809vec_vspltb (vector signed char a1, const char a2) 3810{ 3811 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2); 3812} 3813 3814inline vector unsigned char 3815vec_vspltb (vector unsigned char a1, const char a2) 3816{ 3817 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2); 3818} 3819 3820/* vec_splat_s8 */ 3821 3822inline vector signed char 3823vec_splat_s8 (const char a1) 3824{ 3825 return (vector signed char) __builtin_altivec_vspltisb (a1); 3826} 3827 3828/* vec_splat_s16 */ 3829 3830inline vector signed short 3831vec_splat_s16 (const char a1) 3832{ 3833 return (vector signed short) __builtin_altivec_vspltish (a1); 3834} 3835 3836/* vec_splat_s32 */ 3837 3838inline vector signed int 3839vec_splat_s32 (const char a1) 3840{ 3841 return (vector signed int) __builtin_altivec_vspltisw (a1); 3842} 3843 3844/* vec_splat_u8 */ 3845 3846inline vector unsigned char 3847vec_splat_u8 (const char a1) 3848{ 3849 return (vector unsigned char) __builtin_altivec_vspltisb (a1); 3850} 3851 3852/* vec_splat_u16 */ 3853 3854inline vector unsigned short 3855vec_splat_u16 (const char a1) 3856{ 3857 return (vector unsigned short) __builtin_altivec_vspltish (a1); 3858} 3859 3860/* vec_splat_u32 */ 3861 3862inline vector unsigned int 3863vec_splat_u32 (const char a1) 3864{ 3865 return (vector unsigned int) __builtin_altivec_vspltisw (a1); 3866} 3867 3868/* vec_sr */ 3869 3870inline vector signed char 3871vec_sr (vector signed char a1, vector unsigned char a2) 3872{ 3873 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); 3874} 3875 3876inline vector unsigned char 3877vec_sr (vector unsigned char a1, vector unsigned char a2) 3878{ 3879 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); 3880} 3881 3882inline vector signed short 3883vec_sr (vector signed short a1, vector unsigned short a2) 3884{ 3885 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); 3886} 3887 3888inline vector unsigned short 3889vec_sr (vector unsigned short a1, vector unsigned short a2) 3890{ 3891 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); 3892} 3893 3894inline vector signed int 3895vec_sr (vector signed int a1, vector unsigned int a2) 3896{ 3897 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); 3898} 3899 3900inline vector unsigned int 3901vec_sr (vector unsigned int a1, vector unsigned int a2) 3902{ 3903 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); 3904} 3905 3906/* vec_vsrw */ 3907 3908inline vector signed int 3909vec_vsrw (vector signed int a1, vector unsigned int a2) 3910{ 3911 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); 3912} 3913 3914inline vector unsigned int 3915vec_vsrw (vector unsigned int a1, vector unsigned int a2) 3916{ 3917 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); 3918} 3919 3920/* vec_vsrh */ 3921 3922inline vector signed short 3923vec_vsrh (vector signed short a1, vector unsigned short a2) 3924{ 3925 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); 3926} 3927 3928inline vector unsigned short 3929vec_vsrh (vector unsigned short a1, vector unsigned short a2) 3930{ 3931 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); 3932} 3933 3934/* vec_vsrb */ 3935 3936inline vector signed char 3937vec_vsrb (vector signed char a1, vector unsigned char a2) 3938{ 3939 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); 3940} 3941 3942inline vector unsigned char 3943vec_vsrb (vector unsigned char a1, vector unsigned char a2) 3944{ 3945 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); 3946} 3947 3948/* vec_sra */ 3949 3950inline vector signed char 3951vec_sra (vector signed char a1, vector unsigned char a2) 3952{ 3953 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); 3954} 3955 3956inline vector unsigned char 3957vec_sra (vector unsigned char a1, vector unsigned char a2) 3958{ 3959 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); 3960} 3961 3962inline vector signed short 3963vec_sra (vector signed short a1, vector unsigned short a2) 3964{ 3965 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); 3966} 3967 3968inline vector unsigned short 3969vec_sra (vector unsigned short a1, vector unsigned short a2) 3970{ 3971 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); 3972} 3973 3974inline vector signed int 3975vec_sra (vector signed int a1, vector unsigned int a2) 3976{ 3977 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); 3978} 3979 3980inline vector unsigned int 3981vec_sra (vector unsigned int a1, vector unsigned int a2) 3982{ 3983 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); 3984} 3985 3986/* vec_vsraw */ 3987 3988inline vector signed int 3989vec_vsraw (vector signed int a1, vector unsigned int a2) 3990{ 3991 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); 3992} 3993 3994inline vector unsigned int 3995vec_vsraw (vector unsigned int a1, vector unsigned int a2) 3996{ 3997 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); 3998} 3999 4000/* vec_vsrah */ 4001 4002inline vector signed short 4003vec_vsrah (vector signed short a1, vector unsigned short a2) 4004{ 4005 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); 4006} 4007 4008inline vector unsigned short 4009vec_vsrah (vector unsigned short a1, vector unsigned short a2) 4010{ 4011 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); 4012} 4013 4014/* vec_vsrab */ 4015 4016inline vector signed char 4017vec_vsrab (vector signed char a1, vector unsigned char a2) 4018{ 4019 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); 4020} 4021 4022inline vector unsigned char 4023vec_vsrab (vector unsigned char a1, vector unsigned char a2) 4024{ 4025 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); 4026} 4027 4028/* vec_srl */ 4029 4030inline vector signed int 4031vec_srl (vector signed int a1, vector unsigned int a2) 4032{ 4033 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4034} 4035 4036inline vector signed int 4037vec_srl (vector signed int a1, vector unsigned short a2) 4038{ 4039 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4040} 4041 4042inline vector signed int 4043vec_srl (vector signed int a1, vector unsigned char a2) 4044{ 4045 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4046} 4047 4048inline vector unsigned int 4049vec_srl (vector unsigned int a1, vector unsigned int a2) 4050{ 4051 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4052} 4053 4054inline vector unsigned int 4055vec_srl (vector unsigned int a1, vector unsigned short a2) 4056{ 4057 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4058} 4059 4060inline vector unsigned int 4061vec_srl (vector unsigned int a1, vector unsigned char a2) 4062{ 4063 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4064} 4065 4066inline vector signed short 4067vec_srl (vector signed short a1, vector unsigned int a2) 4068{ 4069 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4070} 4071 4072inline vector signed short 4073vec_srl (vector signed short a1, vector unsigned short a2) 4074{ 4075 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4076} 4077 4078inline vector signed short 4079vec_srl (vector signed short a1, vector unsigned char a2) 4080{ 4081 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4082} 4083 4084inline vector unsigned short 4085vec_srl (vector unsigned short a1, vector unsigned int a2) 4086{ 4087 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4088} 4089 4090inline vector unsigned short 4091vec_srl (vector unsigned short a1, vector unsigned short a2) 4092{ 4093 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4094} 4095 4096inline vector unsigned short 4097vec_srl (vector unsigned short a1, vector unsigned char a2) 4098{ 4099 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4100} 4101 4102inline vector signed char 4103vec_srl (vector signed char a1, vector unsigned int a2) 4104{ 4105 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4106} 4107 4108inline vector signed char 4109vec_srl (vector signed char a1, vector unsigned short a2) 4110{ 4111 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4112} 4113 4114inline vector signed char 4115vec_srl (vector signed char a1, vector unsigned char a2) 4116{ 4117 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4118} 4119 4120inline vector unsigned char 4121vec_srl (vector unsigned char a1, vector unsigned int a2) 4122{ 4123 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4124} 4125 4126inline vector unsigned char 4127vec_srl (vector unsigned char a1, vector unsigned short a2) 4128{ 4129 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4130} 4131 4132inline vector unsigned char 4133vec_srl (vector unsigned char a1, vector unsigned char a2) 4134{ 4135 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 4136} 4137 4138/* vec_sro */ 4139 4140inline vector float 4141vec_sro (vector float a1, vector signed char a2) 4142{ 4143 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4144} 4145 4146inline vector float 4147vec_sro (vector float a1, vector unsigned char a2) 4148{ 4149 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4150} 4151 4152inline vector signed int 4153vec_sro (vector signed int a1, vector signed char a2) 4154{ 4155 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4156} 4157 4158inline vector signed int 4159vec_sro (vector signed int a1, vector unsigned char a2) 4160{ 4161 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4162} 4163 4164inline vector unsigned int 4165vec_sro (vector unsigned int a1, vector signed char a2) 4166{ 4167 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4168} 4169 4170inline vector unsigned int 4171vec_sro (vector unsigned int a1, vector unsigned char a2) 4172{ 4173 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4174} 4175 4176inline vector signed short 4177vec_sro (vector signed short a1, vector signed char a2) 4178{ 4179 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4180} 4181 4182inline vector signed short 4183vec_sro (vector signed short a1, vector unsigned char a2) 4184{ 4185 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4186} 4187 4188inline vector unsigned short 4189vec_sro (vector unsigned short a1, vector signed char a2) 4190{ 4191 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4192} 4193 4194inline vector unsigned short 4195vec_sro (vector unsigned short a1, vector unsigned char a2) 4196{ 4197 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4198} 4199 4200inline vector signed char 4201vec_sro (vector signed char a1, vector signed char a2) 4202{ 4203 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4204} 4205 4206inline vector signed char 4207vec_sro (vector signed char a1, vector unsigned char a2) 4208{ 4209 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4210} 4211 4212inline vector unsigned char 4213vec_sro (vector unsigned char a1, vector signed char a2) 4214{ 4215 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4216} 4217 4218inline vector unsigned char 4219vec_sro (vector unsigned char a1, vector unsigned char a2) 4220{ 4221 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 4222} 4223 4224/* vec_st */ 4225 4226inline void 4227vec_st (vector float a1, int a2, void *a3) 4228{ 4229 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 4230} 4231 4232inline void 4233vec_st (vector signed int a1, int a2, void *a3) 4234{ 4235 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 4236} 4237 4238inline void 4239vec_st (vector unsigned int a1, int a2, void *a3) 4240{ 4241 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 4242} 4243 4244inline void 4245vec_st (vector signed short a1, int a2, void *a3) 4246{ 4247 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 4248} 4249 4250inline void 4251vec_st (vector unsigned short a1, int a2, void *a3) 4252{ 4253 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 4254} 4255 4256inline void 4257vec_st (vector signed char a1, int a2, void *a3) 4258{ 4259 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 4260} 4261 4262inline void 4263vec_st (vector unsigned char a1, int a2, void *a3) 4264{ 4265 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 4266} 4267 4268/* vec_ste */ 4269 4270inline void 4271vec_ste (vector signed char a1, int a2, void *a3) 4272{ 4273 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); 4274} 4275 4276inline void 4277vec_ste (vector unsigned char a1, int a2, void *a3) 4278{ 4279 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); 4280} 4281 4282inline void 4283vec_ste (vector signed short a1, int a2, void *a3) 4284{ 4285 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); 4286} 4287 4288inline void 4289vec_ste (vector unsigned short a1, int a2, void *a3) 4290{ 4291 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); 4292} 4293 4294inline void 4295vec_ste (vector float a1, int a2, void *a3) 4296{ 4297 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 4298} 4299 4300inline void 4301vec_ste (vector signed int a1, int a2, void *a3) 4302{ 4303 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 4304} 4305 4306inline void 4307vec_ste (vector unsigned int a1, int a2, void *a3) 4308{ 4309 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 4310} 4311 4312/* vec_stvewx */ 4313 4314inline void 4315vec_stvewx (vector float a1, int a2, void *a3) 4316{ 4317 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 4318} 4319 4320inline void 4321vec_stvewx (vector signed int a1, int a2, void *a3) 4322{ 4323 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 4324} 4325 4326inline void 4327vec_stvewx (vector unsigned int a1, int a2, void *a3) 4328{ 4329 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 4330} 4331 4332/* vec_stvehx */ 4333 4334inline void 4335vec_stvehx (vector signed short a1, int a2, void *a3) 4336{ 4337 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); 4338} 4339 4340inline void 4341vec_stvehx (vector unsigned short a1, int a2, void *a3) 4342{ 4343 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); 4344} 4345 4346/* vec_stvebx */ 4347 4348inline void 4349vec_stvebx (vector signed char a1, int a2, void *a3) 4350{ 4351 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); 4352} 4353 4354inline void 4355vec_stvebx (vector unsigned char a1, int a2, void *a3) 4356{ 4357 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); 4358} 4359 4360/* vec_stl */ 4361 4362inline void 4363vec_stl (vector float a1, int a2, void *a3) 4364{ 4365 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 4366} 4367 4368inline void 4369vec_stl (vector signed int a1, int a2, void *a3) 4370{ 4371 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 4372} 4373 4374inline void 4375vec_stl (vector unsigned int a1, int a2, void *a3) 4376{ 4377 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 4378} 4379 4380inline void 4381vec_stl (vector signed short a1, int a2, void *a3) 4382{ 4383 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 4384} 4385 4386inline void 4387vec_stl (vector unsigned short a1, int a2, void *a3) 4388{ 4389 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 4390} 4391 4392inline void 4393vec_stl (vector signed char a1, int a2, void *a3) 4394{ 4395 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 4396} 4397 4398inline void 4399vec_stl (vector unsigned char a1, int a2, void *a3) 4400{ 4401 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 4402} 4403 4404/* vec_sub */ 4405 4406inline vector signed char 4407vec_sub (vector signed char a1, vector signed char a2) 4408{ 4409 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 4410} 4411 4412inline vector unsigned char 4413vec_sub (vector signed char a1, vector unsigned char a2) 4414{ 4415 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 4416} 4417 4418inline vector unsigned char 4419vec_sub (vector unsigned char a1, vector signed char a2) 4420{ 4421 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 4422} 4423 4424inline vector unsigned char 4425vec_sub (vector unsigned char a1, vector unsigned char a2) 4426{ 4427 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 4428} 4429 4430inline vector signed short 4431vec_sub (vector signed short a1, vector signed short a2) 4432{ 4433 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 4434} 4435 4436inline vector unsigned short 4437vec_sub (vector signed short a1, vector unsigned short a2) 4438{ 4439 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 4440} 4441 4442inline vector unsigned short 4443vec_sub (vector unsigned short a1, vector signed short a2) 4444{ 4445 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 4446} 4447 4448inline vector unsigned short 4449vec_sub (vector unsigned short a1, vector unsigned short a2) 4450{ 4451 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 4452} 4453 4454inline vector signed int 4455vec_sub (vector signed int a1, vector signed int a2) 4456{ 4457 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 4458} 4459 4460inline vector unsigned int 4461vec_sub (vector signed int a1, vector unsigned int a2) 4462{ 4463 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 4464} 4465 4466inline vector unsigned int 4467vec_sub (vector unsigned int a1, vector signed int a2) 4468{ 4469 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 4470} 4471 4472inline vector unsigned int 4473vec_sub (vector unsigned int a1, vector unsigned int a2) 4474{ 4475 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 4476} 4477 4478inline vector float 4479vec_sub (vector float a1, vector float a2) 4480{ 4481 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2); 4482} 4483 4484/* vec_vsubfp */ 4485 4486inline vector float 4487vec_vsubfp (vector float a1, vector float a2) 4488{ 4489 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2); 4490} 4491 4492/* vec_vsubuwm */ 4493 4494inline vector signed int 4495vec_vsubuwm (vector signed int a1, vector signed int a2) 4496{ 4497 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 4498} 4499 4500inline vector unsigned int 4501vec_vsubuwm (vector signed int a1, vector unsigned int a2) 4502{ 4503 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 4504} 4505 4506inline vector unsigned int 4507vec_vsubuwm (vector unsigned int a1, vector signed int a2) 4508{ 4509 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 4510} 4511 4512inline vector unsigned int 4513vec_vsubuwm (vector unsigned int a1, vector unsigned int a2) 4514{ 4515 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 4516} 4517 4518/* vec_vsubuhm */ 4519 4520inline vector signed short 4521vec_vsubuhm (vector signed short a1, vector signed short a2) 4522{ 4523 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 4524} 4525 4526inline vector unsigned short 4527vec_vsubuhm (vector signed short a1, vector unsigned short a2) 4528{ 4529 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 4530} 4531 4532inline vector unsigned short 4533vec_vsubuhm (vector unsigned short a1, vector signed short a2) 4534{ 4535 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 4536} 4537 4538inline vector unsigned short 4539vec_vsubuhm (vector unsigned short a1, vector unsigned short a2) 4540{ 4541 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 4542} 4543 4544/* vec_vsububm */ 4545 4546inline vector signed char 4547vec_vsububm (vector signed char a1, vector signed char a2) 4548{ 4549 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 4550} 4551 4552inline vector unsigned char 4553vec_vsububm (vector signed char a1, vector unsigned char a2) 4554{ 4555 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 4556} 4557 4558inline vector unsigned char 4559vec_vsububm (vector unsigned char a1, vector signed char a2) 4560{ 4561 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 4562} 4563 4564inline vector unsigned char 4565vec_vsububm (vector unsigned char a1, vector unsigned char a2) 4566{ 4567 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 4568} 4569 4570/* vec_subc */ 4571 4572inline vector unsigned int 4573vec_subc (vector unsigned int a1, vector unsigned int a2) 4574{ 4575 return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2); 4576} 4577 4578/* vec_subs */ 4579 4580inline vector unsigned char 4581vec_subs (vector signed char a1, vector unsigned char a2) 4582{ 4583 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 4584} 4585 4586inline vector unsigned char 4587vec_subs (vector unsigned char a1, vector signed char a2) 4588{ 4589 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 4590} 4591 4592inline vector unsigned char 4593vec_subs (vector unsigned char a1, vector unsigned char a2) 4594{ 4595 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 4596} 4597 4598inline vector signed char 4599vec_subs (vector signed char a1, vector signed char a2) 4600{ 4601 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2); 4602} 4603 4604inline vector unsigned short 4605vec_subs (vector signed short a1, vector unsigned short a2) 4606{ 4607 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 4608} 4609 4610inline vector unsigned short 4611vec_subs (vector unsigned short a1, vector signed short a2) 4612{ 4613 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 4614} 4615 4616inline vector unsigned short 4617vec_subs (vector unsigned short a1, vector unsigned short a2) 4618{ 4619 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 4620} 4621 4622inline vector signed short 4623vec_subs (vector signed short a1, vector signed short a2) 4624{ 4625 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2); 4626} 4627 4628inline vector unsigned int 4629vec_subs (vector signed int a1, vector unsigned int a2) 4630{ 4631 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 4632} 4633 4634inline vector unsigned int 4635vec_subs (vector unsigned int a1, vector signed int a2) 4636{ 4637 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 4638} 4639 4640inline vector unsigned int 4641vec_subs (vector unsigned int a1, vector unsigned int a2) 4642{ 4643 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 4644} 4645 4646inline vector signed int 4647vec_subs (vector signed int a1, vector signed int a2) 4648{ 4649 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2); 4650} 4651 4652/* vec_vsubsws */ 4653 4654inline vector signed int 4655vec_vsubsws (vector signed int a1, vector signed int a2) 4656{ 4657 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2); 4658} 4659 4660/* vec_vsubuws */ 4661 4662inline vector unsigned int 4663vec_vsubuws (vector signed int a1, vector unsigned int a2) 4664{ 4665 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 4666} 4667 4668inline vector unsigned int 4669vec_vsubuws (vector unsigned int a1, vector signed int a2) 4670{ 4671 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 4672} 4673 4674inline vector unsigned int 4675vec_vsubuws (vector unsigned int a1, vector unsigned int a2) 4676{ 4677 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 4678} 4679 4680/* vec_vsubshs */ 4681 4682inline vector signed short 4683vec_vsubshs (vector signed short a1, vector signed short a2) 4684{ 4685 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2); 4686} 4687 4688/* vec_vsubuhs */ 4689 4690inline vector unsigned short 4691vec_vsubuhs (vector signed short a1, vector unsigned short a2) 4692{ 4693 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 4694} 4695 4696inline vector unsigned short 4697vec_vsubuhs (vector unsigned short a1, vector signed short a2) 4698{ 4699 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 4700} 4701 4702inline vector unsigned short 4703vec_vsubuhs (vector unsigned short a1, vector unsigned short a2) 4704{ 4705 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 4706} 4707 4708/* vec_vsubsbs */ 4709 4710inline vector signed char 4711vec_vsubsbs (vector signed char a1, vector signed char a2) 4712{ 4713 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2); 4714} 4715 4716/* vec_vsububs */ 4717 4718inline vector unsigned char 4719vec_vsububs (vector signed char a1, vector unsigned char a2) 4720{ 4721 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 4722} 4723 4724inline vector unsigned char 4725vec_vsububs (vector unsigned char a1, vector signed char a2) 4726{ 4727 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 4728} 4729 4730inline vector unsigned char 4731vec_vsububs (vector unsigned char a1, vector unsigned char a2) 4732{ 4733 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 4734} 4735 4736/* vec_sum4s */ 4737 4738inline vector unsigned int 4739vec_sum4s (vector unsigned char a1, vector unsigned int a2) 4740{ 4741 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2); 4742} 4743 4744inline vector signed int 4745vec_sum4s (vector signed char a1, vector signed int a2) 4746{ 4747 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2); 4748} 4749 4750inline vector signed int 4751vec_sum4s (vector signed short a1, vector signed int a2) 4752{ 4753 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2); 4754} 4755 4756/* vec_vsum4shs */ 4757 4758inline vector signed int 4759vec_vsum4shss (vector signed short a1, vector signed int a2) 4760{ 4761 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2); 4762} 4763 4764/* vec_vsum4sbs */ 4765 4766inline vector signed int 4767vec_vsum4sbs (vector signed char a1, vector signed int a2) 4768{ 4769 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2); 4770} 4771 4772/* vec_vsum4ubs */ 4773 4774inline vector unsigned int 4775vec_vsum4ubs (vector unsigned char a1, vector unsigned int a2) 4776{ 4777 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2); 4778} 4779 4780/* vec_sum2s */ 4781 4782inline vector signed int 4783vec_sum2s (vector signed int a1, vector signed int a2) 4784{ 4785 return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2); 4786} 4787 4788/* vec_sums */ 4789 4790inline vector signed int 4791vec_sums (vector signed int a1, vector signed int a2) 4792{ 4793 return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2); 4794} 4795 4796/* vec_trunc */ 4797 4798inline vector float 4799vec_trunc (vector float a1) 4800{ 4801 return (vector float) __builtin_altivec_vrfiz ((vector float) a1); 4802} 4803 4804/* vec_unpackh */ 4805 4806inline vector signed short 4807vec_unpackh (vector signed char a1) 4808{ 4809 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1); 4810} 4811 4812inline vector signed int 4813vec_unpackh (vector signed short a1) 4814{ 4815 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1); 4816} 4817 4818inline vector unsigned int 4819vec_unpackh (vector unsigned short a1) 4820{ 4821 return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1); 4822} 4823 4824/* vec_vupkhsh */ 4825 4826inline vector signed int 4827vec_vupkhsh (vector signed short a1) 4828{ 4829 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1); 4830} 4831 4832/* vec_vupkhpx */ 4833 4834inline vector unsigned int 4835vec_vupkhpx (vector unsigned short a1) 4836{ 4837 return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1); 4838} 4839 4840/* vec_vupkhsb */ 4841 4842inline vector signed short 4843vec_vupkhsb (vector signed char a1) 4844{ 4845 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1); 4846} 4847 4848/* vec_unpackl */ 4849 4850inline vector signed short 4851vec_unpackl (vector signed char a1) 4852{ 4853 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1); 4854} 4855 4856inline vector unsigned int 4857vec_unpackl (vector unsigned short a1) 4858{ 4859 return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1); 4860} 4861 4862inline vector signed int 4863vec_unpackl (vector signed short a1) 4864{ 4865 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1); 4866} 4867 4868/* vec_vupklpx */ 4869 4870inline vector unsigned int 4871vec_vupklpx (vector unsigned short a1) 4872{ 4873 return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1); 4874} 4875 4876/* vec_upklsh */ 4877 4878inline vector signed int 4879vec_vupklsh (vector signed short a1) 4880{ 4881 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1); 4882} 4883 4884/* vec_vupklsb */ 4885 4886inline vector signed short 4887vec_vupklsb (vector signed char a1) 4888{ 4889 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1); 4890} 4891 4892/* vec_xor */ 4893 4894inline vector float 4895vec_xor (vector float a1, vector float a2) 4896{ 4897 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4898} 4899 4900inline vector float 4901vec_xor (vector float a1, vector signed int a2) 4902{ 4903 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4904} 4905 4906inline vector float 4907vec_xor (vector signed int a1, vector float a2) 4908{ 4909 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4910} 4911 4912inline vector signed int 4913vec_xor (vector signed int a1, vector signed int a2) 4914{ 4915 return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4916} 4917 4918inline vector unsigned int 4919vec_xor (vector signed int a1, vector unsigned int a2) 4920{ 4921 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4922} 4923 4924inline vector unsigned int 4925vec_xor (vector unsigned int a1, vector signed int a2) 4926{ 4927 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4928} 4929 4930inline vector unsigned int 4931vec_xor (vector unsigned int a1, vector unsigned int a2) 4932{ 4933 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4934} 4935 4936inline vector signed short 4937vec_xor (vector signed short a1, vector signed short a2) 4938{ 4939 return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4940} 4941 4942inline vector unsigned short 4943vec_xor (vector signed short a1, vector unsigned short a2) 4944{ 4945 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4946} 4947 4948inline vector unsigned short 4949vec_xor (vector unsigned short a1, vector signed short a2) 4950{ 4951 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4952} 4953 4954inline vector unsigned short 4955vec_xor (vector unsigned short a1, vector unsigned short a2) 4956{ 4957 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4958} 4959 4960inline vector signed char 4961vec_xor (vector signed char a1, vector signed char a2) 4962{ 4963 return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4964} 4965 4966inline vector unsigned char 4967vec_xor (vector signed char a1, vector unsigned char a2) 4968{ 4969 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4970} 4971 4972inline vector unsigned char 4973vec_xor (vector unsigned char a1, vector signed char a2) 4974{ 4975 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4976} 4977 4978inline vector unsigned char 4979vec_xor (vector unsigned char a1, vector unsigned char a2) 4980{ 4981 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 4982} 4983 4984/* vec_all_eq */ 4985 4986inline int 4987vec_all_eq (vector signed char a1, vector unsigned char a2) 4988{ 4989 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2); 4990} 4991 4992inline int 4993vec_all_eq (vector signed char a1, vector signed char a2) 4994{ 4995 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2); 4996} 4997 4998inline int 4999vec_all_eq (vector unsigned char a1, vector signed char a2) 5000{ 5001 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 5002} 5003 5004inline int 5005vec_all_eq (vector unsigned char a1, vector unsigned char a2) 5006{ 5007 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 5008} 5009 5010inline int 5011vec_all_eq (vector signed short a1, vector unsigned short a2) 5012{ 5013 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 5014} 5015 5016inline int 5017vec_all_eq (vector signed short a1, vector signed short a2) 5018{ 5019 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 5020} 5021 5022inline int 5023vec_all_eq (vector unsigned short a1, vector signed short a2) 5024{ 5025 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 5026} 5027 5028inline int 5029vec_all_eq (vector unsigned short a1, vector unsigned short a2) 5030{ 5031 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 5032} 5033 5034inline int 5035vec_all_eq (vector signed int a1, vector unsigned int a2) 5036{ 5037 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 5038} 5039 5040inline int 5041vec_all_eq (vector signed int a1, vector signed int a2) 5042{ 5043 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 5044} 5045 5046inline int 5047vec_all_eq (vector unsigned int a1, vector signed int a2) 5048{ 5049 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 5050} 5051 5052inline int 5053vec_all_eq (vector unsigned int a1, vector unsigned int a2) 5054{ 5055 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 5056} 5057 5058inline int 5059vec_all_eq (vector float a1, vector float a2) 5060{ 5061 return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2); 5062} 5063 5064/* vec_all_ge */ 5065 5066inline int 5067vec_all_ge (vector signed char a1, vector unsigned char a2) 5068{ 5069 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); 5070} 5071 5072inline int 5073vec_all_ge (vector unsigned char a1, vector signed char a2) 5074{ 5075 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); 5076} 5077 5078inline int 5079vec_all_ge (vector unsigned char a1, vector unsigned char a2) 5080{ 5081 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); 5082} 5083 5084inline int 5085vec_all_ge (vector signed char a1, vector signed char a2) 5086{ 5087 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); 5088} 5089 5090inline int 5091vec_all_ge (vector signed short a1, vector unsigned short a2) 5092{ 5093 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); 5094} 5095 5096inline int 5097vec_all_ge (vector unsigned short a1, vector signed short a2) 5098{ 5099 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); 5100} 5101 5102inline int 5103vec_all_ge (vector unsigned short a1, vector unsigned short a2) 5104{ 5105 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); 5106} 5107 5108inline int 5109vec_all_ge (vector signed short a1, vector signed short a2) 5110{ 5111 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); 5112} 5113 5114inline int 5115vec_all_ge (vector signed int a1, vector unsigned int a2) 5116{ 5117 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); 5118} 5119 5120inline int 5121vec_all_ge (vector unsigned int a1, vector signed int a2) 5122{ 5123 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); 5124} 5125 5126inline int 5127vec_all_ge (vector unsigned int a1, vector unsigned int a2) 5128{ 5129 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); 5130} 5131 5132inline int 5133vec_all_ge (vector signed int a1, vector signed int a2) 5134{ 5135 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); 5136} 5137 5138inline int 5139vec_all_ge (vector float a1, vector float a2) 5140{ 5141 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a1, a2); 5142} 5143 5144/* vec_all_gt */ 5145 5146inline int 5147vec_all_gt (vector signed char a1, vector unsigned char a2) 5148{ 5149 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 5150} 5151 5152inline int 5153vec_all_gt (vector unsigned char a1, vector signed char a2) 5154{ 5155 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 5156} 5157 5158inline int 5159vec_all_gt (vector unsigned char a1, vector unsigned char a2) 5160{ 5161 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 5162} 5163 5164inline int 5165vec_all_gt (vector signed char a1, vector signed char a2) 5166{ 5167 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 5168} 5169 5170inline int 5171vec_all_gt (vector signed short a1, vector unsigned short a2) 5172{ 5173 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 5174} 5175 5176inline int 5177vec_all_gt (vector unsigned short a1, vector signed short a2) 5178{ 5179 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 5180} 5181 5182inline int 5183vec_all_gt (vector unsigned short a1, vector unsigned short a2) 5184{ 5185 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 5186} 5187 5188inline int 5189vec_all_gt (vector signed short a1, vector signed short a2) 5190{ 5191 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 5192} 5193 5194inline int 5195vec_all_gt (vector signed int a1, vector unsigned int a2) 5196{ 5197 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 5198} 5199 5200inline int 5201vec_all_gt (vector unsigned int a1, vector signed int a2) 5202{ 5203 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 5204} 5205 5206inline int 5207vec_all_gt (vector unsigned int a1, vector unsigned int a2) 5208{ 5209 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 5210} 5211 5212inline int 5213vec_all_gt (vector signed int a1, vector signed int a2) 5214{ 5215 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 5216} 5217 5218inline int 5219vec_all_gt (vector float a1, vector float a2) 5220{ 5221 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2); 5222} 5223 5224/* vec_all_in */ 5225 5226inline int 5227vec_all_in (vector float a1, vector float a2) 5228{ 5229 return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2); 5230} 5231 5232/* vec_all_le */ 5233 5234inline int 5235vec_all_le (vector signed char a1, vector unsigned char a2) 5236{ 5237 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 5238} 5239 5240inline int 5241vec_all_le (vector unsigned char a1, vector signed char a2) 5242{ 5243 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 5244} 5245 5246inline int 5247vec_all_le (vector unsigned char a1, vector unsigned char a2) 5248{ 5249 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 5250} 5251 5252inline int 5253vec_all_le (vector signed char a1, vector signed char a2) 5254{ 5255 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 5256} 5257 5258inline int 5259vec_all_le (vector signed short a1, vector unsigned short a2) 5260{ 5261 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 5262} 5263 5264inline int 5265vec_all_le (vector unsigned short a1, vector signed short a2) 5266{ 5267 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 5268} 5269 5270inline int 5271vec_all_le (vector unsigned short a1, vector unsigned short a2) 5272{ 5273 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 5274} 5275 5276inline int 5277vec_all_le (vector signed short a1, vector signed short a2) 5278{ 5279 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 5280} 5281 5282inline int 5283vec_all_le (vector signed int a1, vector unsigned int a2) 5284{ 5285 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 5286} 5287 5288inline int 5289vec_all_le (vector unsigned int a1, vector signed int a2) 5290{ 5291 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 5292} 5293 5294inline int 5295vec_all_le (vector unsigned int a1, vector unsigned int a2) 5296{ 5297 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 5298} 5299 5300inline int 5301vec_all_le (vector signed int a1, vector signed int a2) 5302{ 5303 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 5304} 5305 5306inline int 5307vec_all_le (vector float a1, vector float a2) 5308{ 5309 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1); 5310} 5311 5312/* vec_all_lt */ 5313 5314inline int 5315vec_all_lt (vector signed char a1, vector unsigned char a2) 5316{ 5317 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); 5318} 5319 5320inline int 5321vec_all_lt (vector unsigned char a1, vector signed char a2) 5322{ 5323 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); 5324} 5325 5326inline int 5327vec_all_lt (vector unsigned char a1, vector unsigned char a2) 5328{ 5329 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); 5330} 5331 5332inline int 5333vec_all_lt (vector signed char a1, vector signed char a2) 5334{ 5335 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); 5336} 5337 5338inline int 5339vec_all_lt (vector signed short a1, vector unsigned short a2) 5340{ 5341 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); 5342} 5343 5344inline int 5345vec_all_lt (vector unsigned short a1, vector signed short a2) 5346{ 5347 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); 5348} 5349 5350inline int 5351vec_all_lt (vector unsigned short a1, vector unsigned short a2) 5352{ 5353 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); 5354} 5355 5356inline int 5357vec_all_lt (vector signed short a1, vector signed short a2) 5358{ 5359 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); 5360} 5361 5362inline int 5363vec_all_lt (vector signed int a1, vector unsigned int a2) 5364{ 5365 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); 5366} 5367 5368inline int 5369vec_all_lt (vector unsigned int a1, vector signed int a2) 5370{ 5371 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); 5372} 5373 5374inline int 5375vec_all_lt (vector unsigned int a1, vector unsigned int a2) 5376{ 5377 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); 5378} 5379 5380inline int 5381vec_all_lt (vector signed int a1, vector signed int a2) 5382{ 5383 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); 5384} 5385 5386inline int 5387vec_all_lt (vector float a1, vector float a2) 5388{ 5389 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1); 5390} 5391 5392/* vec_all_nan */ 5393 5394inline int 5395vec_all_nan (vector float a1) 5396{ 5397 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1); 5398} 5399 5400/* vec_all_ne */ 5401 5402inline int 5403vec_all_ne (vector signed char a1, vector unsigned char a2) 5404{ 5405 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 5406} 5407 5408inline int 5409vec_all_ne (vector signed char a1, vector signed char a2) 5410{ 5411 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 5412} 5413 5414inline int 5415vec_all_ne (vector unsigned char a1, vector signed char a2) 5416{ 5417 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 5418} 5419 5420inline int 5421vec_all_ne (vector unsigned char a1, vector unsigned char a2) 5422{ 5423 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 5424} 5425 5426inline int 5427vec_all_ne (vector signed short a1, vector unsigned short a2) 5428{ 5429 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 5430} 5431 5432inline int 5433vec_all_ne (vector signed short a1, vector signed short a2) 5434{ 5435 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 5436} 5437 5438inline int 5439vec_all_ne (vector unsigned short a1, vector signed short a2) 5440{ 5441 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 5442} 5443 5444inline int 5445vec_all_ne (vector unsigned short a1, vector unsigned short a2) 5446{ 5447 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 5448} 5449 5450inline int 5451vec_all_ne (vector signed int a1, vector unsigned int a2) 5452{ 5453 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 5454} 5455 5456inline int 5457vec_all_ne (vector signed int a1, vector signed int a2) 5458{ 5459 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 5460} 5461 5462inline int 5463vec_all_ne (vector unsigned int a1, vector signed int a2) 5464{ 5465 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 5466} 5467 5468inline int 5469vec_all_ne (vector unsigned int a1, vector unsigned int a2) 5470{ 5471 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 5472} 5473 5474inline int 5475vec_all_ne (vector float a1, vector float a2) 5476{ 5477 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2); 5478} 5479 5480/* vec_all_nge */ 5481 5482inline int 5483vec_all_nge (vector float a1, vector float a2) 5484{ 5485 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2); 5486} 5487 5488/* vec_all_ngt */ 5489 5490inline int 5491vec_all_ngt (vector float a1, vector float a2) 5492{ 5493 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2); 5494} 5495 5496/* vec_all_nle */ 5497 5498inline int 5499vec_all_nle (vector float a1, vector float a2) 5500{ 5501 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1); 5502} 5503 5504/* vec_all_nlt */ 5505 5506inline int 5507vec_all_nlt (vector float a1, vector float a2) 5508{ 5509 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1); 5510} 5511 5512/* vec_all_numeric */ 5513 5514inline int 5515vec_all_numeric (vector float a1) 5516{ 5517 return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1); 5518} 5519 5520/* vec_any_eq */ 5521 5522inline int 5523vec_any_eq (vector signed char a1, vector unsigned char a2) 5524{ 5525 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 5526} 5527 5528inline int 5529vec_any_eq (vector signed char a1, vector signed char a2) 5530{ 5531 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 5532} 5533 5534inline int 5535vec_any_eq (vector unsigned char a1, vector signed char a2) 5536{ 5537 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 5538} 5539 5540inline int 5541vec_any_eq (vector unsigned char a1, vector unsigned char a2) 5542{ 5543 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 5544} 5545 5546inline int 5547vec_any_eq (vector signed short a1, vector unsigned short a2) 5548{ 5549 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 5550} 5551 5552inline int 5553vec_any_eq (vector signed short a1, vector signed short a2) 5554{ 5555 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 5556} 5557 5558inline int 5559vec_any_eq (vector unsigned short a1, vector signed short a2) 5560{ 5561 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 5562} 5563 5564inline int 5565vec_any_eq (vector unsigned short a1, vector unsigned short a2) 5566{ 5567 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 5568} 5569 5570inline int 5571vec_any_eq (vector signed int a1, vector unsigned int a2) 5572{ 5573 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 5574} 5575 5576inline int 5577vec_any_eq (vector signed int a1, vector signed int a2) 5578{ 5579 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 5580} 5581 5582inline int 5583vec_any_eq (vector unsigned int a1, vector signed int a2) 5584{ 5585 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 5586} 5587 5588inline int 5589vec_any_eq (vector unsigned int a1, vector unsigned int a2) 5590{ 5591 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 5592} 5593 5594inline int 5595vec_any_eq (vector float a1, vector float a2) 5596{ 5597 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2); 5598} 5599 5600/* vec_any_ge */ 5601 5602inline int 5603vec_any_ge (vector signed char a1, vector unsigned char a2) 5604{ 5605 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); 5606} 5607 5608inline int 5609vec_any_ge (vector unsigned char a1, vector signed char a2) 5610{ 5611 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); 5612} 5613 5614inline int 5615vec_any_ge (vector unsigned char a1, vector unsigned char a2) 5616{ 5617 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); 5618} 5619 5620inline int 5621vec_any_ge (vector signed char a1, vector signed char a2) 5622{ 5623 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); 5624} 5625 5626inline int 5627vec_any_ge (vector signed short a1, vector unsigned short a2) 5628{ 5629 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); 5630} 5631 5632inline int 5633vec_any_ge (vector unsigned short a1, vector signed short a2) 5634{ 5635 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); 5636} 5637 5638inline int 5639vec_any_ge (vector unsigned short a1, vector unsigned short a2) 5640{ 5641 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); 5642} 5643 5644inline int 5645vec_any_ge (vector signed short a1, vector signed short a2) 5646{ 5647 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); 5648} 5649 5650inline int 5651vec_any_ge (vector signed int a1, vector unsigned int a2) 5652{ 5653 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); 5654} 5655 5656inline int 5657vec_any_ge (vector unsigned int a1, vector signed int a2) 5658{ 5659 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); 5660} 5661 5662inline int 5663vec_any_ge (vector unsigned int a1, vector unsigned int a2) 5664{ 5665 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); 5666} 5667 5668inline int 5669vec_any_ge (vector signed int a1, vector signed int a2) 5670{ 5671 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); 5672} 5673 5674inline int 5675vec_any_ge (vector float a1, vector float a2) 5676{ 5677 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2); 5678} 5679 5680/* vec_any_gt */ 5681 5682inline int 5683vec_any_gt (vector signed char a1, vector unsigned char a2) 5684{ 5685 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 5686} 5687 5688inline int 5689vec_any_gt (vector unsigned char a1, vector signed char a2) 5690{ 5691 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 5692} 5693 5694inline int 5695vec_any_gt (vector unsigned char a1, vector unsigned char a2) 5696{ 5697 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 5698} 5699 5700inline int 5701vec_any_gt (vector signed char a1, vector signed char a2) 5702{ 5703 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 5704} 5705 5706inline int 5707vec_any_gt (vector signed short a1, vector unsigned short a2) 5708{ 5709 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 5710} 5711 5712inline int 5713vec_any_gt (vector unsigned short a1, vector signed short a2) 5714{ 5715 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 5716} 5717 5718inline int 5719vec_any_gt (vector unsigned short a1, vector unsigned short a2) 5720{ 5721 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 5722} 5723 5724inline int 5725vec_any_gt (vector signed short a1, vector signed short a2) 5726{ 5727 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 5728} 5729 5730inline int 5731vec_any_gt (vector signed int a1, vector unsigned int a2) 5732{ 5733 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 5734} 5735 5736inline int 5737vec_any_gt (vector unsigned int a1, vector signed int a2) 5738{ 5739 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 5740} 5741 5742inline int 5743vec_any_gt (vector unsigned int a1, vector unsigned int a2) 5744{ 5745 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 5746} 5747 5748inline int 5749vec_any_gt (vector signed int a1, vector signed int a2) 5750{ 5751 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 5752} 5753 5754inline int 5755vec_any_gt (vector float a1, vector float a2) 5756{ 5757 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2); 5758} 5759 5760/* vec_any_le */ 5761 5762inline int 5763vec_any_le (vector signed char a1, vector unsigned char a2) 5764{ 5765 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 5766} 5767 5768inline int 5769vec_any_le (vector unsigned char a1, vector signed char a2) 5770{ 5771 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 5772} 5773 5774inline int 5775vec_any_le (vector unsigned char a1, vector unsigned char a2) 5776{ 5777 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 5778} 5779 5780inline int 5781vec_any_le (vector signed char a1, vector signed char a2) 5782{ 5783 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 5784} 5785 5786inline int 5787vec_any_le (vector signed short a1, vector unsigned short a2) 5788{ 5789 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 5790} 5791 5792inline int 5793vec_any_le (vector unsigned short a1, vector signed short a2) 5794{ 5795 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 5796} 5797 5798inline int 5799vec_any_le (vector unsigned short a1, vector unsigned short a2) 5800{ 5801 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 5802} 5803 5804inline int 5805vec_any_le (vector signed short a1, vector signed short a2) 5806{ 5807 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 5808} 5809 5810inline int 5811vec_any_le (vector signed int a1, vector unsigned int a2) 5812{ 5813 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 5814} 5815 5816inline int 5817vec_any_le (vector unsigned int a1, vector signed int a2) 5818{ 5819 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 5820} 5821 5822inline int 5823vec_any_le (vector unsigned int a1, vector unsigned int a2) 5824{ 5825 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 5826} 5827 5828inline int 5829vec_any_le (vector signed int a1, vector signed int a2) 5830{ 5831 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 5832} 5833 5834inline int 5835vec_any_le (vector float a1, vector float a2) 5836{ 5837 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a2, a1); 5838} 5839 5840/* vec_any_lt */ 5841 5842inline int 5843vec_any_lt (vector signed char a1, vector unsigned char a2) 5844{ 5845 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); 5846} 5847 5848inline int 5849vec_any_lt (vector unsigned char a1, vector signed char a2) 5850{ 5851 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); 5852} 5853 5854inline int 5855vec_any_lt (vector unsigned char a1, vector unsigned char a2) 5856{ 5857 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); 5858} 5859 5860inline int 5861vec_any_lt (vector signed char a1, vector signed char a2) 5862{ 5863 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); 5864} 5865 5866inline int 5867vec_any_lt (vector signed short a1, vector unsigned short a2) 5868{ 5869 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); 5870} 5871 5872inline int 5873vec_any_lt (vector unsigned short a1, vector signed short a2) 5874{ 5875 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); 5876} 5877 5878inline int 5879vec_any_lt (vector unsigned short a1, vector unsigned short a2) 5880{ 5881 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); 5882} 5883 5884inline int 5885vec_any_lt (vector signed short a1, vector signed short a2) 5886{ 5887 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); 5888} 5889 5890inline int 5891vec_any_lt (vector signed int a1, vector unsigned int a2) 5892{ 5893 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); 5894} 5895 5896inline int 5897vec_any_lt (vector unsigned int a1, vector signed int a2) 5898{ 5899 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); 5900} 5901 5902inline int 5903vec_any_lt (vector unsigned int a1, vector unsigned int a2) 5904{ 5905 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); 5906} 5907 5908inline int 5909vec_any_lt (vector signed int a1, vector signed int a2) 5910{ 5911 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); 5912} 5913 5914inline int 5915vec_any_lt (vector float a1, vector float a2) 5916{ 5917 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1); 5918} 5919 5920/* vec_any_nan */ 5921 5922inline int 5923vec_any_nan (vector float a1) 5924{ 5925 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1); 5926} 5927 5928/* vec_any_ne */ 5929 5930inline int 5931vec_any_ne (vector signed char a1, vector unsigned char a2) 5932{ 5933 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 5934} 5935 5936inline int 5937vec_any_ne (vector signed char a1, vector signed char a2) 5938{ 5939 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 5940} 5941 5942inline int 5943vec_any_ne (vector unsigned char a1, vector signed char a2) 5944{ 5945 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 5946} 5947 5948inline int 5949vec_any_ne (vector unsigned char a1, vector unsigned char a2) 5950{ 5951 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 5952} 5953 5954inline int 5955vec_any_ne (vector signed short a1, vector unsigned short a2) 5956{ 5957 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 5958} 5959 5960inline int 5961vec_any_ne (vector signed short a1, vector signed short a2) 5962{ 5963 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 5964} 5965 5966inline int 5967vec_any_ne (vector unsigned short a1, vector signed short a2) 5968{ 5969 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 5970} 5971 5972inline int 5973vec_any_ne (vector unsigned short a1, vector unsigned short a2) 5974{ 5975 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 5976} 5977 5978inline int 5979vec_any_ne (vector signed int a1, vector unsigned int a2) 5980{ 5981 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 5982} 5983 5984inline int 5985vec_any_ne (vector signed int a1, vector signed int a2) 5986{ 5987 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 5988} 5989 5990inline int 5991vec_any_ne (vector unsigned int a1, vector signed int a2) 5992{ 5993 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 5994} 5995 5996inline int 5997vec_any_ne (vector unsigned int a1, vector unsigned int a2) 5998{ 5999 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 6000} 6001 6002inline int 6003vec_any_ne (vector float a1, vector float a2) 6004{ 6005 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2); 6006} 6007 6008/* vec_any_nge */ 6009 6010inline int 6011vec_any_nge (vector float a1, vector float a2) 6012{ 6013 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2); 6014} 6015 6016/* vec_any_ngt */ 6017 6018inline int 6019vec_any_ngt (vector float a1, vector float a2) 6020{ 6021 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2); 6022} 6023 6024/* vec_any_nle */ 6025 6026inline int 6027vec_any_nle (vector float a1, vector float a2) 6028{ 6029 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1); 6030} 6031 6032/* vec_any_nlt */ 6033 6034inline int 6035vec_any_nlt (vector float a1, vector float a2) 6036{ 6037 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1); 6038} 6039 6040/* vec_any_numeric */ 6041 6042inline int 6043vec_any_numeric (vector float a1) 6044{ 6045 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1); 6046} 6047 6048/* vec_any_out */ 6049 6050inline int 6051vec_any_out (vector float a1, vector float a2) 6052{ 6053 return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2); 6054} 6055 6056/* vec_step */ 6057 6058template<typename _Tp> 6059struct __vec_step_help 6060{ 6061 // All proper vector types will specialize _S_elem. 6062}; 6063 6064template<> 6065struct __vec_step_help<vector signed short> 6066{ 6067 static const int _S_elem = 8; 6068}; 6069 6070template<> 6071struct __vec_step_help<vector unsigned short> 6072{ 6073 static const int _S_elem = 8; 6074}; 6075 6076template<> 6077struct __vec_step_help<vector signed int> 6078{ 6079 static const int _S_elem = 4; 6080}; 6081 6082template<> 6083struct __vec_step_help<vector unsigned int> 6084{ 6085 static const int _S_elem = 4; 6086}; 6087 6088template<> 6089struct __vec_step_help<vector unsigned char> 6090{ 6091 static const int _S_elem = 16; 6092}; 6093 6094template<> 6095struct __vec_step_help<vector signed char> 6096{ 6097 static const int _S_elem = 16; 6098}; 6099 6100template<> 6101struct __vec_step_help<vector float> 6102{ 6103 static const int _S_elem = 4; 6104}; 6105 6106#define vec_step(t) __vec_step_help<typeof(t)>::_S_elem 6107 6108}//extern "C++" 6109 6110#else /* not C++ */ 6111 6112/* "... and so I think no man in a century will suffer as greatly as 6113 you will." */ 6114 6115#define vec_abs(a) \ 6116 __ch (__un_args_eq (vector signed char, (a)), \ 6117 ((vector signed char) __builtin_altivec_abs_v16qi ((vector signed char) (a))), \ 6118 __ch (__un_args_eq (vector signed short, (a)), \ 6119 ((vector signed short) __builtin_altivec_abs_v8hi ((vector signed short) (a))), \ 6120 __ch (__un_args_eq (vector signed int, (a)), \ 6121 ((vector signed int) __builtin_altivec_abs_v4si ((vector signed int) (a))), \ 6122 __ch (__un_args_eq (vector float, (a)), \ 6123 ((vector float) __builtin_altivec_abs_v4sf ((vector float) (a))), \ 6124 __altivec_link_error_invalid_argument ())))) 6125 6126#define vec_abss(a) \ 6127 __ch (__un_args_eq (vector signed char, (a)), \ 6128 ((vector signed char) __builtin_altivec_abss_v16qi ((vector signed char) (a))), \ 6129 __ch (__un_args_eq (vector signed short, (a)), \ 6130 ((vector signed short) __builtin_altivec_abss_v8hi ((vector signed short) (a))), \ 6131 __ch (__un_args_eq (vector signed int, (a)), \ 6132 ((vector signed int) __builtin_altivec_abss_v4si ((vector signed int) (a))), \ 6133 __altivec_link_error_invalid_argument ()))) 6134 6135#define vec_step(t) \ 6136 __ch (__builtin_types_compatible_p (typeof (t), vector signed int), 4, \ 6137 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned int), 4, \ 6138 __ch (__builtin_types_compatible_p (typeof (t), vector signed short), 8, \ 6139 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 8, \ 6140 __ch (__builtin_types_compatible_p (typeof (t), vector signed char), 16, \ 6141 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned char), 16, \ 6142 __ch (__builtin_types_compatible_p (typeof (t), vector float), 4, \ 6143 __altivec_link_error_invalid_argument ()))))))) 6144 6145#define vec_vaddubm(a1, a2) \ 6146__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6147 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 6148__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 6149 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 6150__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6151 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 6152__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6153 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 6154 __altivec_link_error_invalid_argument ())))) 6155 6156#define vec_vadduhm(a1, a2) \ 6157__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6158 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 6159__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6160 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 6161__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6162 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 6163__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6164 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 6165 __altivec_link_error_invalid_argument ())))) 6166 6167#define vec_vadduwm(a1, a2) \ 6168__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6169 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 6170__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 6171 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 6172__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 6173 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 6174__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6175 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 6176 __altivec_link_error_invalid_argument ())))) 6177 6178#define vec_vaddfp(a1, a2) \ 6179__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6180 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \ 6181 __altivec_link_error_invalid_argument ()) 6182 6183#define vec_add(a1, a2) \ 6184__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6185 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 6186__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 6187 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 6188__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6189 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 6190__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6191 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 6192__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6193 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 6194__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6195 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 6196__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6197 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 6198__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6199 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 6200__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6201 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 6202__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 6203 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 6204__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 6205 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 6206__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6207 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 6208__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6209 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \ 6210 __altivec_link_error_invalid_argument ()))))))))))))) 6211 6212#define vec_addc(a1, a2) \ 6213__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6214 ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6215 __altivec_link_error_invalid_argument ()) 6216 6217#define vec_adds(a1, a2) \ 6218__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 6219 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 6220__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6221 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 6222__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6223 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 6224__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6225 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \ 6226__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6227 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 6228__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6229 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 6230__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6231 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 6232__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6233 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \ 6234__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 6235 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 6236__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 6237 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 6238__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6239 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 6240__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6241 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \ 6242 __altivec_link_error_invalid_argument ())))))))))))) 6243 6244#define vec_vaddsws(a1, a2) \ 6245__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6246 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \ 6247 __altivec_link_error_invalid_argument ()) 6248 6249#define vec_vadduws(a1, a2) \ 6250__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 6251 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 6252__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 6253 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 6254__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6255 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 6256 __altivec_link_error_invalid_argument ()))) 6257 6258#define vec_vaddshs(a1, a2) \ 6259__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6260 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \ 6261 __altivec_link_error_invalid_argument ()) 6262 6263#define vec_vadduhs(a1, a2) \ 6264__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6265 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 6266__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6267 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 6268__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6269 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 6270 __altivec_link_error_invalid_argument ()))) 6271 6272#define vec_vaddsbs(a1, a2) \ 6273__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6274 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \ 6275 __altivec_link_error_invalid_argument ()) 6276 6277#define vec_vaddubs(a1, a2) \ 6278__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 6279 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 6280__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6281 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 6282__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6283 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 6284 __altivec_link_error_invalid_argument ()))) 6285 6286#define vec_and(a1, a2) \ 6287__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6288 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6289__ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \ 6290 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6291__ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \ 6292 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6293__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6294 ((vector signed int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6295__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 6296 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6297__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 6298 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6299__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6300 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6301__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6302 ((vector signed short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6303__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6304 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6305__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6306 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6307__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6308 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6309__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6310 ((vector signed char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6311__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 6312 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6313__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6314 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6315__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6316 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 6317 __altivec_link_error_invalid_argument ()))))))))))))))) 6318 6319#define vec_andc(a1, a2) \ 6320__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6321 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6322__ch (__bin_args_eq (vector float, (a1), vector unsigned int, (a2)), \ 6323 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6324__ch (__bin_args_eq (vector unsigned int, (a1), vector float, (a2)), \ 6325 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6326__ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \ 6327 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6328__ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \ 6329 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6330__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 6331 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6332__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6333 ((vector signed int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6334__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 6335 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6336__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6337 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6338__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6339 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6340__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6341 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6342__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6343 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6344__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6345 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6346__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6347 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6348__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6349 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6350__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6351 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6352__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6353 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6354__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6355 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6356__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 6357 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6358__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6359 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6360__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6361 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6362__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6363 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6364__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6365 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 6366 __altivec_link_error_invalid_argument ()))))))))))))))))))))))) 6367 6368#define vec_avg(a1, a2) \ 6369__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6370 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \ 6371__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6372 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \ 6373__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6374 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \ 6375__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6376 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \ 6377__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6378 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \ 6379__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6380 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \ 6381 __altivec_link_error_invalid_argument ())))))) 6382 6383#define vec_vavgsw(a1, a2) \ 6384__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6385 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \ 6386 __altivec_link_error_invalid_argument ()) 6387 6388#define vec_vavguw(a1, a2) \ 6389__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6390 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \ 6391 __altivec_link_error_invalid_argument ()) 6392 6393#define vec_vavgsh(a1, a2) \ 6394__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6395 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \ 6396 __altivec_link_error_invalid_argument ()) 6397 6398#define vec_vavguh(a1, a2) \ 6399__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6400 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \ 6401 __altivec_link_error_invalid_argument ()) 6402 6403#define vec_vavgsb(a1, a2) \ 6404__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6405 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \ 6406 __altivec_link_error_invalid_argument ()) 6407 6408#define vec_vavgub(a1, a2) \ 6409__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6410 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \ 6411 __altivec_link_error_invalid_argument ()) 6412 6413#define vec_ceil(a1) __builtin_altivec_vrfip ((a1)) 6414 6415#define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2)) 6416 6417#define vec_cmpeq(a1, a2) \ 6418__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6419 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ 6420__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6421 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ 6422__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6423 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ 6424__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6425 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ 6426__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6427 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ 6428__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6429 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ 6430__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6431 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \ 6432 __altivec_link_error_invalid_argument ()))))))) 6433 6434#define vec_vcmpeqfp(a1, a2) \ 6435__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6436 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \ 6437 __altivec_link_error_invalid_argument ()) 6438 6439#define vec_vcmpequw(a1, a2) \ 6440__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6441 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ 6442__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6443 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ 6444 __altivec_link_error_invalid_argument ())) 6445 6446#define vec_vcmpequh(a1, a2) \ 6447__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6448 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ 6449__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6450 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ 6451 __altivec_link_error_invalid_argument ())) 6452 6453#define vec_vcmpequb(a1, a2) \ 6454__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6455 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ 6456__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6457 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ 6458 __altivec_link_error_invalid_argument ())) 6459 6460#define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2)) 6461 6462#define vec_cmpgt(a1, a2) \ 6463__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6464 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \ 6465__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6466 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \ 6467__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6468 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6469__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6470 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \ 6471__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6472 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6473__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6474 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ 6475__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6476 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ 6477 __altivec_link_error_invalid_argument ()))))))) 6478 6479#define vec_vcmpgtfp(a1, a2) \ 6480__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6481 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ 6482 __altivec_link_error_invalid_argument ()) 6483 6484#define vec_vcmpgtsw(a1, a2) \ 6485__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6486 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ 6487 __altivec_link_error_invalid_argument ()) 6488 6489#define vec_vcmpgtuw(a1, a2) \ 6490__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6491 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6492 __altivec_link_error_invalid_argument ()) 6493 6494#define vec_vcmpgtsh(a1, a2) \ 6495__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6496 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \ 6497 __altivec_link_error_invalid_argument ()) 6498 6499#define vec_vcmpgtuh(a1, a2) \ 6500__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6501 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6502 __altivec_link_error_invalid_argument ()) 6503 6504#define vec_vcmpgtsb(a1, a2) \ 6505__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6506 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \ 6507 __altivec_link_error_invalid_argument ()) 6508 6509#define vec_vcmpgtub(a1, a2) \ 6510__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6511 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \ 6512 __altivec_link_error_invalid_argument ()) 6513 6514#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a2), (a1)) 6515 6516#define vec_cmplt(a2, a1) \ 6517__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6518 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \ 6519__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6520 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \ 6521__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6522 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6523__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6524 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \ 6525__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6526 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6527__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6528 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ 6529__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6530 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ 6531 __altivec_link_error_invalid_argument ()))))))) 6532 6533#define vec_ctf(a1, a2) \ 6534__ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \ 6535 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ 6536__ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \ 6537 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ 6538__ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \ 6539 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ 6540__ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \ 6541 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ 6542 __altivec_link_error_invalid_argument ())))) 6543 6544#define vec_vcfsx(a1, a2) \ 6545__ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \ 6546 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ 6547__ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \ 6548 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ 6549 __altivec_link_error_invalid_argument ())) 6550 6551#define vec_vcfux(a1, a2) \ 6552__ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \ 6553 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ 6554__ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \ 6555 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ 6556 __altivec_link_error_invalid_argument ())) 6557 6558#define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2)) 6559 6560#define vec_ctu(a1, a2) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2)) 6561 6562#define vec_dss(a1) __builtin_altivec_dss ((a1)) 6563 6564#define vec_dssall() __builtin_altivec_dssall () 6565 6566#define vec_dst(a1, a2, a3) \ 6567__ch (__un_args_eq (vector unsigned char, *(a1)), \ 6568 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6569__ch (__un_args_eq (vector signed char, *(a1)), \ 6570 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6571__ch (__un_args_eq (vector unsigned short, *(a1)), \ 6572 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6573__ch (__un_args_eq (vector signed short, *(a1)), \ 6574 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6575__ch (__un_args_eq (vector unsigned int, *(a1)), \ 6576 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6577__ch (__un_args_eq (vector signed int, *(a1)), \ 6578 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6579__ch (__un_args_eq (vector float, *(a1)), \ 6580 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6581__ch (__un_args_eq (unsigned char, *(a1)), \ 6582 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6583__ch (__un_args_eq (signed char, *(a1)), \ 6584 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6585__ch (__un_args_eq (unsigned short, *(a1)), \ 6586 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6587__ch (__un_args_eq (signed short, *(a1)), \ 6588 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6589__ch (__un_args_eq (unsigned int, *(a1)), \ 6590 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6591__ch (__un_args_eq (signed int, *(a1)), \ 6592 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6593__ch (__un_args_eq (unsigned long, *(a1)), \ 6594 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6595__ch (__un_args_eq (signed long, *(a1)), \ 6596 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6597__ch (__un_args_eq (float, *(a1)), \ 6598 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ 6599 __altivec_link_error_invalid_argument ())))))))))))))))) 6600 6601#define vec_dstst(a1, a2, a3) \ 6602__ch (__un_args_eq (vector unsigned char, *(a1)), \ 6603 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6604__ch (__un_args_eq (vector signed char, *(a1)), \ 6605 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6606__ch (__un_args_eq (vector unsigned short, *(a1)), \ 6607 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6608__ch (__un_args_eq (vector signed short, *(a1)), \ 6609 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6610__ch (__un_args_eq (vector unsigned int, *(a1)), \ 6611 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6612__ch (__un_args_eq (vector signed int, *(a1)), \ 6613 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6614__ch (__un_args_eq (vector float, *(a1)), \ 6615 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6616__ch (__un_args_eq (unsigned char, *(a1)), \ 6617 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6618__ch (__un_args_eq (signed char, *(a1)), \ 6619 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6620__ch (__un_args_eq (unsigned short, *(a1)), \ 6621 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6622__ch (__un_args_eq (signed short, *(a1)), \ 6623 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6624__ch (__un_args_eq (unsigned int, *(a1)), \ 6625 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6626__ch (__un_args_eq (signed int, *(a1)), \ 6627 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6628__ch (__un_args_eq (unsigned long, *(a1)), \ 6629 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6630__ch (__un_args_eq (signed long, *(a1)), \ 6631 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6632__ch (__un_args_eq (float, *(a1)), \ 6633 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ 6634 __altivec_link_error_invalid_argument ())))))))))))))))) 6635 6636#define vec_dststt(a1, a2, a3) \ 6637__ch (__un_args_eq (vector unsigned char, *(a1)), \ 6638 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6639__ch (__un_args_eq (vector signed char, *(a1)), \ 6640 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6641__ch (__un_args_eq (vector unsigned short, *(a1)), \ 6642 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6643__ch (__un_args_eq (vector signed short, *(a1)), \ 6644 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6645__ch (__un_args_eq (vector unsigned int, *(a1)), \ 6646 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6647__ch (__un_args_eq (vector signed int, *(a1)), \ 6648 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6649__ch (__un_args_eq (vector float, *(a1)), \ 6650 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6651__ch (__un_args_eq (unsigned char, *(a1)), \ 6652 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6653__ch (__un_args_eq (signed char, *(a1)), \ 6654 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6655__ch (__un_args_eq (unsigned short, *(a1)), \ 6656 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6657__ch (__un_args_eq (signed short, *(a1)), \ 6658 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6659__ch (__un_args_eq (unsigned int, *(a1)), \ 6660 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6661__ch (__un_args_eq (signed int, *(a1)), \ 6662 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6663__ch (__un_args_eq (unsigned long, *(a1)), \ 6664 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6665__ch (__un_args_eq (signed long, *(a1)), \ 6666 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6667__ch (__un_args_eq (float, *(a1)), \ 6668 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ 6669 __altivec_link_error_invalid_argument ())))))))))))))))) 6670 6671#define vec_dstt(a1, a2, a3) \ 6672__ch (__un_args_eq (vector unsigned char, *(a1)), \ 6673 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6674__ch (__un_args_eq (vector signed char, *(a1)), \ 6675 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6676__ch (__un_args_eq (vector unsigned short, *(a1)), \ 6677 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6678__ch (__un_args_eq (vector signed short, *(a1)), \ 6679 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6680__ch (__un_args_eq (vector unsigned int, *(a1)), \ 6681 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6682__ch (__un_args_eq (vector signed int, *(a1)), \ 6683 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6684__ch (__un_args_eq (vector float, *(a1)), \ 6685 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6686__ch (__un_args_eq (unsigned char, *(a1)), \ 6687 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6688__ch (__un_args_eq (signed char, *(a1)), \ 6689 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6690__ch (__un_args_eq (unsigned short, *(a1)), \ 6691 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6692__ch (__un_args_eq (signed short, *(a1)), \ 6693 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6694__ch (__un_args_eq (unsigned int, *(a1)), \ 6695 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6696__ch (__un_args_eq (signed int, *(a1)), \ 6697 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6698__ch (__un_args_eq (unsigned long, *(a1)), \ 6699 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6700__ch (__un_args_eq (signed long, *(a1)), \ 6701 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6702__ch (__un_args_eq (float, *(a1)), \ 6703 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ 6704 __altivec_link_error_invalid_argument ())))))))))))))))) 6705 6706#define vec_expte(a1) __builtin_altivec_vexptefp ((a1)) 6707 6708#define vec_floor(a1) __builtin_altivec_vrfim (a1) 6709 6710#define vec_ld(a, b) \ 6711__ch (__un_args_eq (vector unsigned char, *(b)), \ 6712 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ 6713__ch (__un_args_eq (unsigned char, *(b)), \ 6714 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ 6715__ch (__un_args_eq (vector signed char, *(b)), \ 6716 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \ 6717__ch (__un_args_eq (signed char, *(b)), \ 6718 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \ 6719__ch (__un_args_eq (vector unsigned short, *(b)), \ 6720 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ 6721__ch (__un_args_eq (unsigned short, *(b)), \ 6722 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ 6723__ch (__un_args_eq (vector signed short, *(b)), \ 6724 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \ 6725__ch (__un_args_eq (signed short, *(b)), \ 6726 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \ 6727__ch (__un_args_eq (vector unsigned int, *(b)), \ 6728 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ 6729__ch (__un_args_eq (unsigned int, *(b)), \ 6730 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ 6731__ch (__un_args_eq (unsigned long, *(b)), \ 6732 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ 6733__ch (__un_args_eq (vector signed int, *(b)), \ 6734 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ 6735__ch (__un_args_eq (signed int, *(b)), \ 6736 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ 6737__ch (__un_args_eq (signed long, *(b)), \ 6738 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ 6739__ch (__un_args_eq (vector float, *(b)), \ 6740 ((vector float) __builtin_altivec_lvx ((a), (b))), \ 6741__ch (__un_args_eq (float, *(b)), \ 6742 ((vector float) __builtin_altivec_lvx ((a), (b))), \ 6743__altivec_link_error_invalid_argument ())))))))))))))))) 6744 6745#define vec_lde(a, b) \ 6746__ch (__un_args_eq (unsigned char, *(b)), \ 6747 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ 6748__ch (__un_args_eq (signed char, *(b)), \ 6749 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \ 6750__ch (__un_args_eq (unsigned short, *(b)), \ 6751 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ 6752__ch (__un_args_eq (signed short, *(b)), \ 6753 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \ 6754__ch (__un_args_eq (unsigned long, *(b)), \ 6755 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ 6756__ch (__un_args_eq (signed long, *(b)), \ 6757 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ 6758__ch (__un_args_eq (unsigned int, *(b)), \ 6759 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ 6760__ch (__un_args_eq (signed int, *(b)), \ 6761 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ 6762__ch (__un_args_eq (float, *(b)), \ 6763 ((vector float) __builtin_altivec_lvewx ((a), (b))), \ 6764__altivec_link_error_invalid_argument ()))))))))) 6765 6766#define vec_lvewx(a, b) \ 6767__ch (__un_args_eq (unsigned int, *(b)), \ 6768 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ 6769__ch (__un_args_eq (signed int, *(b)), \ 6770 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ 6771__ch (__un_args_eq (unsigned long, *(b)), \ 6772 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ 6773__ch (__un_args_eq (signed long, *(b)), \ 6774 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ 6775__ch (__un_args_eq (float, *(b)), \ 6776 ((vector float) __builtin_altivec_lvewx ((a), (b))), \ 6777__altivec_link_error_invalid_argument ()))))) 6778 6779#define vec_lvehx(a, b) \ 6780__ch (__un_args_eq (unsigned short, *(b)), \ 6781 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ 6782__ch (__un_args_eq (signed short, *(b)), \ 6783 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \ 6784__altivec_link_error_invalid_argument ())) 6785 6786#define vec_lvebx(a, b) \ 6787__ch (__un_args_eq (unsigned char, *(b)), \ 6788 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ 6789__ch (__un_args_eq (signed char, *(b)), \ 6790 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \ 6791__altivec_link_error_invalid_argument ())) 6792 6793#define vec_ldl(a, b) \ 6794__ch (__un_args_eq (vector unsigned char, *(b)), \ 6795 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ 6796__ch (__un_args_eq (unsigned char, *(b)), \ 6797 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ 6798__ch (__un_args_eq (vector signed char, *(b)), \ 6799 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \ 6800__ch (__un_args_eq (signed char, *(b)), \ 6801 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \ 6802__ch (__un_args_eq (vector unsigned short, *(b)), \ 6803 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ 6804__ch (__un_args_eq (unsigned short, *(b)), \ 6805 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ 6806__ch (__un_args_eq (vector signed short, *(b)), \ 6807 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \ 6808__ch (__un_args_eq (signed short, *(b)), \ 6809 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \ 6810__ch (__un_args_eq (vector unsigned int, *(b)), \ 6811 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ 6812__ch (__un_args_eq (unsigned int, *(b)), \ 6813 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ 6814__ch (__un_args_eq (unsigned long, *(b)), \ 6815 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ 6816__ch (__un_args_eq (vector signed int, *(b)), \ 6817 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ 6818__ch (__un_args_eq (signed int, *(b)), \ 6819 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ 6820__ch (__un_args_eq (signed long, *(b)), \ 6821 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ 6822__ch (__un_args_eq (vector float, *(b)), \ 6823 ((vector float) __builtin_altivec_lvxl ((a), (b))), \ 6824__ch (__un_args_eq (float, *(b)), \ 6825 ((vector float) __builtin_altivec_lvxl ((a), (b))), \ 6826__altivec_link_error_invalid_argument ())))))))))))))))) 6827 6828#define vec_loge(a1) __builtin_altivec_vlogefp ((a1)) 6829 6830#define vec_lvsl(a1, a2) \ 6831__ch (__un_args_eq (unsigned char, *(a2)), \ 6832 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6833__ch (__un_args_eq (signed char, *(a2)), \ 6834 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6835__ch (__un_args_eq (unsigned short, *(a2)), \ 6836 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6837__ch (__un_args_eq (signed short, *(a2)), \ 6838 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6839__ch (__un_args_eq (unsigned int, *(a2)), \ 6840 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6841__ch (__un_args_eq (signed int, *(a2)), \ 6842 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6843__ch (__un_args_eq (unsigned long, *(a2)), \ 6844 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6845__ch (__un_args_eq (signed long, *(a2)), \ 6846 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6847__ch (__un_args_eq (float, *(a2)), \ 6848 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ 6849__altivec_link_error_invalid_argument ()))))))))) 6850 6851#define vec_lvsr(a1, a2) \ 6852__ch (__un_args_eq (unsigned char, *(a2)), \ 6853 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6854__ch (__un_args_eq (signed char, *(a2)), \ 6855 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6856__ch (__un_args_eq (unsigned short, *(a2)), \ 6857 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6858__ch (__un_args_eq (signed short, *(a2)), \ 6859 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6860__ch (__un_args_eq (unsigned int, *(a2)), \ 6861 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6862__ch (__un_args_eq (signed int, *(a2)), \ 6863 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6864__ch (__un_args_eq (unsigned long, *(a2)), \ 6865 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6866__ch (__un_args_eq (signed long, *(a2)), \ 6867 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6868__ch (__un_args_eq (float, *(a2)), \ 6869 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ 6870__altivec_link_error_invalid_argument ()))))))))) 6871 6872#define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3))) 6873 6874#define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3)) 6875 6876#define vec_max(a1, a2) \ 6877__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 6878 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 6879__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6880 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 6881__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6882 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 6883__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6884 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \ 6885__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6886 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6887__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6888 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6889__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6890 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6891__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6892 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \ 6893__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 6894 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6895__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 6896 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6897__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6898 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6899__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6900 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \ 6901__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6902 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \ 6903 __altivec_link_error_invalid_argument ()))))))))))))) 6904 6905#define vec_vmaxfp(a1, a2) \ 6906__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6907 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \ 6908__altivec_link_error_invalid_argument ()) 6909 6910#define vec_vmaxsw(a1, a2) \ 6911__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6912 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \ 6913__altivec_link_error_invalid_argument ()) 6914 6915#define vec_vmaxuw(a1, a2) \ 6916__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 6917 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6918__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 6919 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6920__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6921 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 6922__altivec_link_error_invalid_argument ()))) 6923 6924#define vec_vmaxsh(a1, a2) \ 6925__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6926 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \ 6927__altivec_link_error_invalid_argument ()) 6928 6929#define vec_vmaxuh(a1, a2) \ 6930__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 6931 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6932__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 6933 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6934__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6935 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 6936__altivec_link_error_invalid_argument ()))) 6937 6938#define vec_vmaxsb(a1, a2) \ 6939__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6940 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \ 6941__altivec_link_error_invalid_argument ()) 6942 6943#define vec_vmaxub(a1, a2) \ 6944__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 6945 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 6946__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 6947 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 6948__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6949 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 6950__altivec_link_error_invalid_argument ()))) 6951 6952#define vec_mergeh(a1, a2) \ 6953__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6954 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \ 6955__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6956 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \ 6957__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6958 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ 6959__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6960 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ 6961__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6962 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 6963__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6964 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 6965__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6966 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 6967 __altivec_link_error_invalid_argument ()))))))) 6968 6969#define vec_vmrghw(a1, a2) \ 6970__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 6971 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 6972__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 6973 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 6974__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 6975 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 6976__altivec_link_error_invalid_argument ()))) 6977 6978#define vec_vmrghh(a1, a2) \ 6979__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6980 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ 6981__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 6982 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ 6983__altivec_link_error_invalid_argument ())) 6984 6985#define vec_vmrghb(a1, a2) \ 6986__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6987 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \ 6988__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6989 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \ 6990__altivec_link_error_invalid_argument ())) 6991 6992#define vec_mergel(a1, a2) \ 6993__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 6994 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \ 6995__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 6996 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \ 6997__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 6998 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ 6999__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7000 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ 7001__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 7002 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 7003__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7004 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 7005__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7006 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 7007 __altivec_link_error_invalid_argument ()))))))) 7008 7009#define vec_vmrglw(a1, a2) \ 7010__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 7011 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 7012__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7013 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 7014__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7015 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 7016__altivec_link_error_invalid_argument ()))) 7017 7018#define vec_vmrglh(a1, a2) \ 7019__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7020 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ 7021__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7022 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ 7023__altivec_link_error_invalid_argument ())) 7024 7025#define vec_vmrglb(a1, a2) \ 7026__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7027 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \ 7028__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7029 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \ 7030__altivec_link_error_invalid_argument ())) 7031 7032#define vec_mfvscr() (((vector unsigned short) __builtin_altivec_mfvscr ())) 7033 7034#define vec_min(a1, a2) \ 7035__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7036 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 7037__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 7038 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 7039__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7040 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 7041__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7042 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \ 7043__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7044 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 7045__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 7046 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 7047__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7048 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 7049__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7050 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \ 7051__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7052 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 7053__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 7054 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 7055__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7056 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 7057__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7058 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \ 7059__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 7060 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \ 7061 __altivec_link_error_invalid_argument ()))))))))))))) 7062 7063#define vec_vminfp(a1, a2) \ 7064__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 7065 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \ 7066__altivec_link_error_invalid_argument ()) 7067 7068#define vec_vminsw(a1, a2) \ 7069__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7070 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \ 7071__altivec_link_error_invalid_argument ()) 7072 7073#define vec_vminuw(a1, a2) \ 7074__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7075 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 7076__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 7077 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 7078__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7079 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 7080__altivec_link_error_invalid_argument ()))) 7081 7082#define vec_vminsh(a1, a2) \ 7083__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7084 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \ 7085__altivec_link_error_invalid_argument ()) 7086 7087#define vec_vminuh(a1, a2) \ 7088__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7089 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 7090__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 7091 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 7092__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7093 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 7094__altivec_link_error_invalid_argument ()))) 7095 7096#define vec_vminsb(a1, a2) \ 7097__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7098 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \ 7099__altivec_link_error_invalid_argument ()) 7100 7101#define vec_vminub(a1, a2) \ 7102__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7103 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 7104__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 7105 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 7106__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7107 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 7108__altivec_link_error_invalid_argument ()))) 7109 7110#define vec_mladd(a1, a2, a3) \ 7111__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \ 7112 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \ 7113__ch (__tern_args_eq (vector signed short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \ 7114 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \ 7115__ch (__tern_args_eq (vector unsigned short, (a1), vector signed short, (a2), vector signed short, (a3)), \ 7116 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \ 7117__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \ 7118 ((vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \ 7119 __altivec_link_error_invalid_argument ())))) 7120 7121#define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((a1), (a2), (a3)) 7122 7123#define vec_msum(a1, a2, a3) \ 7124__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \ 7125 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \ 7126__ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \ 7127 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \ 7128__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \ 7129 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 7130__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \ 7131 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 7132 __altivec_link_error_invalid_argument ())))) 7133 7134#define vec_vmsumshm(a1, a2, a3) \ 7135__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \ 7136 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 7137__altivec_link_error_invalid_argument ()) 7138 7139#define vec_vmsumuhm(a1, a2, a3) \ 7140__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \ 7141 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 7142__altivec_link_error_invalid_argument ()) 7143 7144#define vec_vmsummbm(a1, a2, a3) \ 7145__ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \ 7146 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \ 7147__altivec_link_error_invalid_argument ()) 7148 7149#define vec_vmsumubm(a1, a2, a3) \ 7150__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \ 7151 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \ 7152__altivec_link_error_invalid_argument ()) 7153 7154#define vec_msums(a1, a2, a3) \ 7155__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \ 7156 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 7157__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \ 7158 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 7159 __altivec_link_error_invalid_argument ())) 7160 7161#define vec_vmsumshs(a1, a2, a3) \ 7162__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \ 7163 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 7164__altivec_link_error_invalid_argument ()) 7165 7166#define vec_vmsumuhs(a1, a2, a3) \ 7167__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \ 7168 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 7169__altivec_link_error_invalid_argument ()) 7170 7171#define vec_mtvscr(a1) \ 7172__ch (__un_args_eq (vector signed int, (a1)), \ 7173 __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 7174__ch (__un_args_eq (vector unsigned int, (a1)), \ 7175 __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 7176__ch (__un_args_eq (vector signed short, (a1)), \ 7177 __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 7178__ch (__un_args_eq (vector unsigned short, (a1)), \ 7179 __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 7180__ch (__un_args_eq (vector signed char, (a1)), \ 7181 __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 7182__ch (__un_args_eq (vector unsigned char, (a1)), \ 7183 __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 7184 __altivec_link_error_invalid_argument ())))))) 7185 7186#define vec_mule(a1, a2) \ 7187__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7188 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \ 7189__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7190 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \ 7191__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7192 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \ 7193__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7194 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \ 7195 __altivec_link_error_invalid_argument ())))) 7196 7197#define vec_vmulesh(a1, a2) \ 7198__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7199 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \ 7200__altivec_link_error_invalid_argument ()) 7201 7202#define vec_vmuleuh(a1, a2) \ 7203__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7204 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \ 7205__altivec_link_error_invalid_argument ()) 7206 7207#define vec_vmulesb(a1, a2) \ 7208__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7209 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \ 7210__altivec_link_error_invalid_argument ()) 7211 7212#define vec_vmuleub(a1, a2) \ 7213__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7214 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \ 7215__altivec_link_error_invalid_argument ()) 7216 7217#define vec_mulo(a1, a2) \ 7218__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7219 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \ 7220__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7221 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \ 7222__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7223 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \ 7224__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7225 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \ 7226 __altivec_link_error_invalid_argument ())))) 7227 7228#define vec_vmulosh(a1, a2) \ 7229__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7230 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \ 7231__altivec_link_error_invalid_argument ()) 7232 7233#define vec_vmulouh(a1, a2) \ 7234__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7235 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \ 7236__altivec_link_error_invalid_argument ()) 7237 7238#define vec_vmulosb(a1, a2) \ 7239__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7240 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \ 7241__altivec_link_error_invalid_argument ()) 7242 7243#define vec_vmuloub(a1, a2) \ 7244__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7245 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \ 7246__altivec_link_error_invalid_argument ()) 7247 7248#define vec_nmsub(a1, a2, a3) \ 7249__ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \ 7250 ((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \ 7251 __altivec_link_error_invalid_argument ()) 7252 7253#define vec_nor(a1, a2) \ 7254__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 7255 ((vector float) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 7256__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7257 ((vector signed int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 7258__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7259 ((vector unsigned int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 7260__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7261 ((vector signed short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 7262__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7263 ((vector unsigned short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 7264__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7265 ((vector signed char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 7266__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7267 ((vector unsigned char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 7268 __altivec_link_error_invalid_argument ()))))))) 7269 7270#define vec_or(a1, a2) \ 7271__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 7272 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7273__ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \ 7274 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7275__ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \ 7276 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7277__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7278 ((vector signed int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7279__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7280 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7281__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 7282 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7283__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7284 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7285__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7286 ((vector signed short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7287__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7288 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7289__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 7290 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7291__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7292 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7293__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7294 ((vector signed char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7295__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7296 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7297__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 7298 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7299__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7300 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 7301 __altivec_link_error_invalid_argument ()))))))))))))))) 7302 7303#define vec_pack(a1, a2) \ 7304__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7305 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \ 7306__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7307 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \ 7308__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7309 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \ 7310__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7311 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \ 7312 __altivec_link_error_invalid_argument ())))) 7313 7314#define vec_vpkuwum(a1, a2) \ 7315__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7316 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \ 7317__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7318 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \ 7319__altivec_link_error_invalid_argument ())) 7320 7321#define vec_vpkuhum(a1, a2) \ 7322__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7323 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \ 7324__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7325 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \ 7326__altivec_link_error_invalid_argument ())) 7327 7328#define vec_packpx(a1, a2) \ 7329__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7330 (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) (a1), (vector signed int) (a2)), \ 7331__altivec_link_error_invalid_argument ()) 7332 7333#define vec_packs(a1, a2) \ 7334__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7335 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \ 7336__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7337 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \ 7338__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7339 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \ 7340__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7341 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \ 7342 __altivec_link_error_invalid_argument ())))) 7343 7344#define vec_vpkswss(a1, a2) \ 7345__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7346 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \ 7347__altivec_link_error_invalid_argument ()) 7348 7349#define vec_vpkuwus(a1, a2) \ 7350__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7351 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \ 7352__altivec_link_error_invalid_argument ()) 7353 7354#define vec_vpkshss(a1, a2) \ 7355__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7356 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \ 7357__altivec_link_error_invalid_argument ()) 7358 7359#define vec_vpkuhus(a1, a2) \ 7360__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7361 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \ 7362__altivec_link_error_invalid_argument ()) 7363 7364#define vec_packsu(a1, a2) \ 7365__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7366 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \ 7367__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7368 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \ 7369__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7370 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \ 7371__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7372 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \ 7373 __altivec_link_error_invalid_argument ())))) 7374 7375#define vec_vpkswus(a1, a2) \ 7376__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7377 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \ 7378__altivec_link_error_invalid_argument ()) 7379 7380#define vec_vpkshus(a1, a2) \ 7381__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7382 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \ 7383__altivec_link_error_invalid_argument ()) 7384 7385#define vec_perm(a1, a2, a3) \ 7386__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \ 7387 ((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 7388__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned char, (a3)), \ 7389 ((vector signed int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 7390__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned char, (a3)), \ 7391 ((vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 7392__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned char, (a3)), \ 7393 ((vector signed short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 7394__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned char, (a3)), \ 7395 ((vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 7396__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \ 7397 ((vector signed char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 7398__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \ 7399 ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 7400 __altivec_link_error_invalid_argument ()))))))) 7401 7402#define vec_re(a1) __builtin_altivec_vrefp ((a1)) 7403 7404#define vec_rl(a1, a2) \ 7405__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7406 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \ 7407__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7408 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \ 7409__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7410 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \ 7411__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7412 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \ 7413__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7414 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \ 7415__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7416 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \ 7417 __altivec_link_error_invalid_argument ())))))) 7418 7419#define vec_vrlw(a1, a2) \ 7420__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7421 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \ 7422__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7423 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \ 7424__altivec_link_error_invalid_argument ())) 7425 7426#define vec_vrlh(a1, a2) \ 7427__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7428 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \ 7429__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7430 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \ 7431__altivec_link_error_invalid_argument ())) 7432 7433#define vec_vrlb(a1, a2) \ 7434__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7435 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \ 7436__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7437 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \ 7438__altivec_link_error_invalid_argument ())) 7439 7440#define vec_round(a1) __builtin_altivec_vrfin ((a1)) 7441 7442#define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1)) 7443 7444#define vec_sel(a1, a2, a3) \ 7445__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector signed int, (a3)), \ 7446 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7447__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned int, (a3)), \ 7448 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7449__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector signed int, (a3)), \ 7450 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7451__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned int, (a3)), \ 7452 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7453__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector signed int, (a3)), \ 7454 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7455__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned int, (a3)), \ 7456 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7457__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \ 7458 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7459__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned short, (a3)), \ 7460 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7461__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector signed short, (a3)), \ 7462 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7463__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \ 7464 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7465__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector signed char, (a3)), \ 7466 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7467__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \ 7468 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7469__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector signed char, (a3)), \ 7470 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7471__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \ 7472 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 7473 __altivec_link_error_invalid_argument ())))))))))))))) 7474 7475#define vec_sl(a1, a2) \ 7476__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7477 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \ 7478__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7479 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \ 7480__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7481 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \ 7482__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7483 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \ 7484__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7485 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \ 7486__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7487 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \ 7488 __altivec_link_error_invalid_argument ())))))) 7489 7490#define vec_vslw(a1, a2) \ 7491__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7492 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \ 7493__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7494 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \ 7495__altivec_link_error_invalid_argument ())) 7496 7497#define vec_vslh(a1, a2) \ 7498__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7499 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \ 7500__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7501 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \ 7502__altivec_link_error_invalid_argument ())) 7503 7504#define vec_vslb(a1, a2) \ 7505__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7506 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \ 7507__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7508 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \ 7509__altivec_link_error_invalid_argument ())) 7510 7511#define vec_sld(a1, a2, a3) \ 7512__ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \ 7513 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7514__ch (__tern_args_eq (vector float, (a1), vector float, (a2), unsigned int, (a3)), \ 7515 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7516__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), int, (a3)), \ 7517 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7518__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), unsigned int, (a3)), \ 7519 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7520__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), int, (a3)), \ 7521 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7522__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), unsigned int, (a3)), \ 7523 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7524__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), int, (a3)), \ 7525 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7526__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), unsigned int, (a3)), \ 7527 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7528__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), int, (a3)), \ 7529 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7530__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), unsigned int, (a3)), \ 7531 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7532__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), int, (a3)), \ 7533 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7534__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), unsigned int, (a3)), \ 7535 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7536__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), int, (a3)), \ 7537 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7538__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), unsigned int, (a3)), \ 7539 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 7540 __altivec_link_error_invalid_argument ())))))))))))))) 7541 7542#define vec_sll(a1, a2) \ 7543__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7544 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7545__ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \ 7546 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7547__ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \ 7548 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7549__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7550 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7551__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \ 7552 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7553__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \ 7554 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7555__ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \ 7556 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7557__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7558 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7559__ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \ 7560 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7561__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \ 7562 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7563__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7564 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7565__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \ 7566 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7567__ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \ 7568 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7569__ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \ 7570 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7571__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7572 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7573__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \ 7574 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7575__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \ 7576 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7577__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7578 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 7579 __altivec_link_error_invalid_argument ())))))))))))))))))) 7580 7581#define vec_slo(a1, a2) \ 7582__ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \ 7583 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7584__ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \ 7585 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7586__ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \ 7587 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7588__ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \ 7589 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7590__ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \ 7591 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7592__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \ 7593 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7594__ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \ 7595 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7596__ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \ 7597 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7598__ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \ 7599 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7600__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \ 7601 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7602__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7603 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7604__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7605 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7606__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 7607 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7608__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7609 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 7610 __altivec_link_error_invalid_argument ())))))))))))))) 7611 7612#define vec_splat(a1, a2) \ 7613__ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \ 7614 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 7615__ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \ 7616 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 7617__ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \ 7618 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 7619__ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \ 7620 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 7621__ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \ 7622 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 7623__ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \ 7624 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 7625__ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \ 7626 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 7627__ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \ 7628 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 7629__ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \ 7630 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 7631__ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \ 7632 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 7633__ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \ 7634 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 7635__ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \ 7636 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 7637__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \ 7638 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ 7639__ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \ 7640 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ 7641 __altivec_link_error_invalid_argument ())))))))))))))) 7642 7643#define vec_vspltw(a1, a2) \ 7644__ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \ 7645 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 7646__ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \ 7647 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 7648__ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \ 7649 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 7650__ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \ 7651 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 7652__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \ 7653 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ 7654__ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \ 7655 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ 7656__altivec_link_error_invalid_argument ())))))) 7657 7658#define vec_vsplth(a1, a2) \ 7659__ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \ 7660 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 7661__ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \ 7662 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 7663__ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \ 7664 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 7665__ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \ 7666 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 7667__altivec_link_error_invalid_argument ())))) 7668 7669#define vec_vspltb(a1, a2) \ 7670__ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \ 7671 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 7672__ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \ 7673 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 7674__ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \ 7675 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 7676__ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \ 7677 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 7678__altivec_link_error_invalid_argument ())))) 7679 7680#define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1)) 7681 7682#define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1)) 7683 7684#define vec_splat_s32(a1) __builtin_altivec_vspltisw ((a1)) 7685 7686#define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb ((a1))) 7687 7688#define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((a1))) 7689 7690#define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw ((a1))) 7691 7692#define vec_sr(a1, a2) \ 7693__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7694 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \ 7695__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7696 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \ 7697__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7698 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \ 7699__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7700 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \ 7701__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7702 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \ 7703__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7704 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \ 7705 __altivec_link_error_invalid_argument ())))))) 7706 7707#define vec_vsrw(a1, a2) \ 7708__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7709 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \ 7710__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7711 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \ 7712__altivec_link_error_invalid_argument ())) 7713 7714#define vec_vsrh(a1, a2) \ 7715__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7716 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \ 7717__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7718 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \ 7719__altivec_link_error_invalid_argument ())) 7720 7721#define vec_vsrb(a1, a2) \ 7722__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7723 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \ 7724__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7725 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \ 7726__altivec_link_error_invalid_argument ())) 7727 7728#define vec_sra(a1, a2) \ 7729__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7730 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \ 7731__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7732 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \ 7733__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7734 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \ 7735__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7736 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \ 7737__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7738 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \ 7739__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7740 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \ 7741 __altivec_link_error_invalid_argument ())))))) 7742 7743#define vec_vsraw(a1, a2) \ 7744__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7745 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \ 7746__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7747 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \ 7748__altivec_link_error_invalid_argument ())) 7749 7750#define vec_vsrah(a1, a2) \ 7751__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7752 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \ 7753__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7754 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \ 7755__altivec_link_error_invalid_argument ())) 7756 7757#define vec_vsrab(a1, a2) \ 7758__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7759 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \ 7760__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7761 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \ 7762__altivec_link_error_invalid_argument ())) 7763 7764#define vec_srl(a1, a2) \ 7765__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7766 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7767__ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \ 7768 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7769__ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \ 7770 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7771__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7772 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7773__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \ 7774 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7775__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \ 7776 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7777__ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \ 7778 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7779__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7780 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7781__ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \ 7782 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7783__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \ 7784 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7785__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7786 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7787__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \ 7788 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7789__ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \ 7790 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7791__ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \ 7792 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7793__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7794 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7795__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \ 7796 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7797__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \ 7798 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7799__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7800 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 7801 __altivec_link_error_invalid_argument ())))))))))))))))))) 7802 7803#define vec_sro(a1, a2) \ 7804__ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \ 7805 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7806__ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \ 7807 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7808__ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \ 7809 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7810__ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \ 7811 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7812__ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \ 7813 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7814__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \ 7815 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7816__ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \ 7817 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7818__ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \ 7819 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7820__ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \ 7821 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7822__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \ 7823 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7824__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7825 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7826__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7827 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7828__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 7829 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7830__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7831 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 7832 __altivec_link_error_invalid_argument ())))))))))))))) 7833 7834#define vec_st(a1, a2, a3) \ 7835 __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3)) 7836 7837#define vec_stl(a1, a2, a3) \ 7838 __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3)) 7839 7840#define vec_ste(a, b, c) \ 7841__ch (__un_args_eq (vector unsigned char, (a)), \ 7842 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ 7843__ch (__un_args_eq (vector signed char, (a)), \ 7844 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ 7845__ch (__un_args_eq (vector unsigned short, (a)), \ 7846 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ 7847__ch (__un_args_eq (vector signed short, (a)), \ 7848 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ 7849__ch (__un_args_eq (vector unsigned int, (a)), \ 7850 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 7851__ch (__un_args_eq (vector signed int, (a)), \ 7852 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 7853__ch (__un_args_eq (vector float, (a)), \ 7854 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 7855 __altivec_link_error_invalid_argument ()))))))) 7856 7857#define vec_stvewx(a, b, c) \ 7858__ch (__un_args_eq (vector unsigned int, (a)), \ 7859 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 7860__ch (__un_args_eq (vector signed int, (a)), \ 7861 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 7862__ch (__un_args_eq (vector float, (a)), \ 7863 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 7864__altivec_link_error_invalid_argument ()))) 7865 7866#define vec_stvehx(a, b, c) \ 7867__ch (__un_args_eq (vector unsigned short, (a)), \ 7868 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ 7869__ch (__un_args_eq (vector signed short, (a)), \ 7870 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ 7871__altivec_link_error_invalid_argument ())) 7872 7873#define vec_stvebx(a, b, c) \ 7874__ch (__un_args_eq (vector unsigned char, (a)), \ 7875 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ 7876__ch (__un_args_eq (vector signed char, (a)), \ 7877 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ 7878__altivec_link_error_invalid_argument ())) 7879 7880#define vec_sub(a1, a2) \ 7881__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7882 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 7883__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7884 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 7885__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 7886 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 7887__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7888 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 7889__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7890 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 7891__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7892 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 7893__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 7894 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 7895__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7896 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 7897__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7898 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 7899__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7900 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 7901__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 7902 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 7903__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7904 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 7905__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 7906 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \ 7907 __altivec_link_error_invalid_argument ()))))))))))))) 7908 7909#define vec_vsubfp(a1, a2) \ 7910__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 7911 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \ 7912__altivec_link_error_invalid_argument ()) 7913 7914#define vec_vsubuwm(a1, a2) \ 7915__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7916 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 7917__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7918 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 7919__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 7920 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 7921__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7922 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 7923__altivec_link_error_invalid_argument ())))) 7924 7925#define vec_vsubuhm(a1, a2) \ 7926__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7927 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 7928__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7929 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 7930__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 7931 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 7932__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7933 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 7934__altivec_link_error_invalid_argument ())))) 7935 7936#define vec_vsububm(a1, a2) \ 7937__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7938 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 7939__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7940 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 7941__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 7942 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 7943__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7944 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 7945__altivec_link_error_invalid_argument ())))) 7946 7947#define vec_subc(a1, a2) \ 7948__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7949 ((vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) (a1), (vector signed int) (a2))), \ 7950__altivec_link_error_invalid_argument ()) 7951 7952#define vec_subs(a1, a2) \ 7953__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 7954 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 7955__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 7956 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 7957__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 7958 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 7959__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 7960 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \ 7961__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 7962 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 7963__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 7964 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 7965__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 7966 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 7967__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7968 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \ 7969__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7970 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 7971__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 7972 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 7973__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7974 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 7975__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7976 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \ 7977 __altivec_link_error_invalid_argument ())))))))))))) 7978 7979#define vec_vsubsws(a1, a2) \ 7980__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 7981 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \ 7982__altivec_link_error_invalid_argument ()) 7983 7984#define vec_vsubuws(a1, a2) \ 7985__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 7986 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 7987__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 7988 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 7989__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 7990 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 7991__altivec_link_error_invalid_argument ()))) 7992 7993#define vec_vsubshs(a1, a2) \ 7994__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 7995 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \ 7996__altivec_link_error_invalid_argument ()) 7997 7998#define vec_vsubuhs(a1, a2) \ 7999__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8000 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 8001__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8002 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 8003__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8004 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 8005__altivec_link_error_invalid_argument ()))) 8006 8007#define vec_vsubsbs(a1, a2) \ 8008__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8009 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \ 8010__altivec_link_error_invalid_argument ()) 8011 8012#define vec_vsububs(a1, a2) \ 8013__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8014 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 8015__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8016 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 8017__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8018 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 8019__altivec_link_error_invalid_argument ()))) 8020 8021#define vec_sum4s(a1, a2) \ 8022__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \ 8023 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \ 8024__ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \ 8025 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \ 8026__ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \ 8027 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \ 8028 __altivec_link_error_invalid_argument ()))) 8029 8030#define vec_vsum4shs(a1, a2) \ 8031__ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \ 8032 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \ 8033__altivec_link_error_invalid_argument ()) 8034 8035#define vec_vsum4sbs(a1, a2) \ 8036__ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \ 8037 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \ 8038__altivec_link_error_invalid_argument ()) 8039 8040#define vec_vsum4ubs(a1, a2) \ 8041__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \ 8042 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \ 8043__altivec_link_error_invalid_argument ()) 8044 8045#define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2)) 8046 8047#define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2)) 8048 8049#define vec_trunc(a1) __builtin_altivec_vrfiz ((a1)) 8050 8051#define vec_unpackh(a1) \ 8052__ch (__un_args_eq (vector signed char, (a1)), \ 8053 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \ 8054__ch (__un_args_eq (vector unsigned short, (a1)), \ 8055 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \ 8056__ch (__un_args_eq (vector signed short, (a1)), \ 8057 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \ 8058 __altivec_link_error_invalid_argument ()))) 8059 8060#define vec_vupkhsh(a1) \ 8061__ch (__un_args_eq (vector signed short, (a1)), \ 8062 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \ 8063__altivec_link_error_invalid_argument ()) 8064 8065#define vec_vupkhpx(a1) \ 8066__ch (__un_args_eq (vector unsigned short, (a1)), \ 8067 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \ 8068__altivec_link_error_invalid_argument ()) 8069 8070#define vec_vupkhsb(a1) \ 8071__ch (__un_args_eq (vector signed char, (a1)), \ 8072 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \ 8073__altivec_link_error_invalid_argument ()) 8074 8075#define vec_unpackl(a1) \ 8076__ch (__un_args_eq (vector signed char, (a1)), \ 8077 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \ 8078__ch (__un_args_eq (vector unsigned short, (a1)), \ 8079 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \ 8080__ch (__un_args_eq (vector signed short, (a1)), \ 8081 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \ 8082 __altivec_link_error_invalid_argument ()))) 8083 8084#define vec_vupklsh(a1) \ 8085__ch (__un_args_eq (vector signed short, (a1)), \ 8086 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \ 8087__altivec_link_error_invalid_argument ()) 8088 8089#define vec_vupklpx(a1) \ 8090__ch (__un_args_eq (vector unsigned short, (a1)), \ 8091 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \ 8092__altivec_link_error_invalid_argument ()) 8093 8094#define vec_vupklsb(a1) \ 8095__ch (__un_args_eq (vector signed char, (a1)), \ 8096 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \ 8097__altivec_link_error_invalid_argument ()) 8098 8099#define vec_xor(a1, a2) \ 8100__ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \ 8101 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8102__ch (__bin_args_eq (vector float, ((a1)), vector unsigned int, ((a2))), \ 8103 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8104__ch (__bin_args_eq (vector unsigned int, ((a1)), vector float, ((a2))), \ 8105 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8106__ch (__bin_args_eq (vector signed int, ((a1)), vector float, ((a2))), \ 8107 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8108__ch (__bin_args_eq (vector float, ((a1)), vector signed int, ((a2))), \ 8109 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8110__ch (__bin_args_eq (vector signed int, ((a1)), vector signed int, ((a2))), \ 8111 ((vector signed int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8112__ch (__bin_args_eq (vector signed int, ((a1)), vector unsigned int, ((a2))), \ 8113 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8114__ch (__bin_args_eq (vector unsigned int, ((a1)), vector signed int, ((a2))), \ 8115 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8116__ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \ 8117 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8118__ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \ 8119 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8120__ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \ 8121 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8122__ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \ 8123 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8124__ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \ 8125 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8126__ch (__bin_args_eq (vector signed short, ((a1)), vector signed short, ((a2))), \ 8127 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8128__ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \ 8129 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8130__ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \ 8131 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8132__ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \ 8133 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8134__ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \ 8135 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8136__ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \ 8137 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8138__ch (__bin_args_eq (vector signed char, ((a1)), vector signed char, ((a2))), \ 8139 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8140__ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \ 8141 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8142__ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \ 8143 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8144__ch (__bin_args_eq (vector unsigned char, ((a1)), vector signed char, ((a2))), \ 8145 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 8146 __altivec_link_error_invalid_argument ()))))))))))))))))))))))) 8147 8148/* Predicates. */ 8149 8150#define vec_all_eq(a1, a2) \ 8151__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8152 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 8153__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8154 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 8155__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8156 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 8157__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8158 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 8159__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8160 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 8161__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8162 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 8163__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8164 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 8165__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8166 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 8167__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8168 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 8169__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8170 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 8171__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8172 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 8173__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8174 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 8175__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8176 __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \ 8177 __altivec_link_error_invalid_argument ()))))))))))))) 8178 8179#define vec_all_ge(a1, a2) \ 8180__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8181 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \ 8182__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8183 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \ 8184__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8185 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \ 8186__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8187 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \ 8188__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8189 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \ 8190__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8191 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \ 8192__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8193 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \ 8194__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8195 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \ 8196__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8197 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \ 8198__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8199 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \ 8200__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8201 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \ 8202__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8203 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \ 8204__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8205 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \ 8206 __altivec_link_error_invalid_argument ()))))))))))))) 8207 8208#define vec_all_gt(a1, a2) \ 8209__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8210 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 8211__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8212 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 8213__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8214 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 8215__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8216 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 8217__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8218 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 8219__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8220 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 8221__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8222 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 8223__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8224 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 8225__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8226 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 8227__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8228 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 8229__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8230 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 8231__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8232 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 8233__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8234 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \ 8235 __altivec_link_error_invalid_argument ()))))))))))))) 8236 8237#define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2)) 8238 8239#define vec_all_le(a1, a2) \ 8240__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8241 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 8242__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8243 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 8244__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8245 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 8246__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8247 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 8248__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8249 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 8250__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8251 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 8252__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8253 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 8254__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8255 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 8256__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8257 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 8258__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8259 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 8260__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8261 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 8262__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8263 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 8264__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8265 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \ 8266 __altivec_link_error_invalid_argument ()))))))))))))) 8267 8268#define vec_all_lt(a1, a2) \ 8269__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8270 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \ 8271__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8272 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \ 8273__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8274 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \ 8275__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8276 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \ 8277__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8278 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \ 8279__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8280 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \ 8281__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8282 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \ 8283__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8284 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \ 8285__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8286 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \ 8287__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8288 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \ 8289__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8290 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \ 8291__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8292 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \ 8293__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8294 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \ 8295 __altivec_link_error_invalid_argument ()))))))))))))) 8296 8297#define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1)) 8298 8299#define vec_all_ne(a1, a2) \ 8300__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8301 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 8302__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8303 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 8304__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8305 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 8306__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8307 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 8308__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8309 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 8310__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8311 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 8312__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8313 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 8314__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8315 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 8316__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8317 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 8318__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8319 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 8320__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8321 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 8322__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8323 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 8324__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8325 __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \ 8326 __altivec_link_error_invalid_argument ()))))))))))))) 8327 8328#define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2)) 8329 8330#define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2)) 8331 8332#define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1)) 8333 8334#define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1)) 8335 8336#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1)) 8337 8338#define vec_any_eq(a1, a2) \ 8339__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8340 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8341__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8342 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8343__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8344 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8345__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8346 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8347__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8348 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8349__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8350 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8351__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8352 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8353__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8354 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8355__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8356 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8357__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8358 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8359__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8360 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8361__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8362 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8363__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8364 __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \ 8365 __altivec_link_error_invalid_argument ()))))))))))))) 8366 8367#define vec_any_ge(a1, a2) \ 8368__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8369 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 8370__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8371 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 8372__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8373 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 8374__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8375 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 8376__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8377 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 8378__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8379 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 8380__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8381 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 8382__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8383 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 8384__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8385 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 8386__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8387 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 8388__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8389 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 8390__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8391 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 8392__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8393 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \ 8394 __altivec_link_error_invalid_argument ()))))))))))))) 8395 8396#define vec_any_gt(a1, a2) \ 8397__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8398 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8399__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8400 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8401__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8402 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8403__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8404 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8405__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8406 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8407__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8408 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8409__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8410 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8411__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8412 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8413__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8414 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8415__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8416 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8417__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8418 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8419__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8420 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8421__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8422 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \ 8423 __altivec_link_error_invalid_argument ()))))))))))))) 8424 8425#define vec_any_le(a1, a2) \ 8426__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8427 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8428__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8429 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8430__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8431 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8432__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8433 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8434__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8435 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8436__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8437 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8438__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8439 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8440__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8441 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8442__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8443 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8444__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8445 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8446__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8447 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8448__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8449 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8450__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8451 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \ 8452 __altivec_link_error_invalid_argument ()))))))))))))) 8453 8454#define vec_any_lt(a1, a2) \ 8455__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8456 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 8457__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8458 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 8459__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8460 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 8461__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8462 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 8463__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8464 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 8465__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8466 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 8467__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8468 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 8469__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8470 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 8471__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8472 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 8473__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8474 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 8475__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8476 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 8477__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8478 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 8479__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8480 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \ 8481 __altivec_link_error_invalid_argument ()))))))))))))) 8482 8483#define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1) 8484 8485#define vec_any_ne(a1, a2) \ 8486__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 8487 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8488__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 8489 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8490__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 8491 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8492__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 8493 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 8494__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 8495 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8496__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 8497 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8498__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 8499 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8500__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 8501 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 8502__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 8503 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8504__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 8505 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8506__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 8507 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8508__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 8509 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 8510__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 8511 __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (vector float) (a1), (vector float) (a2)), \ 8512 __altivec_link_error_invalid_argument ()))))))))))))) 8513 8514#define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2)) 8515 8516#define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2)) 8517 8518#define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1)) 8519 8520#define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1)) 8521 8522#define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1)) 8523 8524#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2)) 8525 8526 8527#endif /* __cplusplus */ 8528 8529#endif /* _ALTIVEC_H */ 8530