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