Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/rs6000/rs6000-c.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 /* Subroutines for the C front end on the PowerPC architecture. | 1 /* Subroutines for the C front end on the PowerPC architecture. |
2 Copyright (C) 2002-2017 Free Software Foundation, Inc. | 2 Copyright (C) 2002-2018 Free Software Foundation, Inc. |
3 | 3 |
4 Contributed by Zack Weinberg <zack@codesourcery.com> | 4 Contributed by Zack Weinberg <zack@codesourcery.com> |
5 and Paolo Bonzini <bonzini@gnu.org> | 5 and Paolo Bonzini <bonzini@gnu.org> |
6 | 6 |
7 This file is part of GCC. | 7 This file is part of GCC. |
17 License for more details. | 17 License for more details. |
18 | 18 |
19 You should have received a copy of the GNU General Public License | 19 You should have received a copy of the GNU General Public License |
20 along with GCC; see the file COPYING3. If not see | 20 along with GCC; see the file COPYING3. If not see |
21 <http://www.gnu.org/licenses/>. */ | 21 <http://www.gnu.org/licenses/>. */ |
22 | |
23 #define IN_TARGET_CODE 1 | |
22 | 24 |
23 #include "config.h" | 25 #include "config.h" |
24 #include "system.h" | 26 #include "system.h" |
25 #include "coretypes.h" | 27 #include "coretypes.h" |
26 #include "target.h" | 28 #include "target.h" |
216 we allow the normal handling, this module will be called recursively, | 218 we allow the normal handling, this module will be called recursively, |
217 and the vector will be skipped.; */ | 219 and the vector will be skipped.; */ |
218 else if (ident && (ident != C_CPP_HASHNODE (__vector_keyword))) | 220 else if (ident && (ident != C_CPP_HASHNODE (__vector_keyword))) |
219 { | 221 { |
220 enum rid rid_code = (enum rid)(ident->rid_code); | 222 enum rid rid_code = (enum rid)(ident->rid_code); |
221 enum node_type itype = ident->type; | 223 bool is_macro = cpp_macro_p (ident); |
224 | |
222 /* If there is a function-like macro, check if it is going to be | 225 /* If there is a function-like macro, check if it is going to be |
223 invoked with or without arguments. Without following ( treat | 226 invoked with or without arguments. Without following ( treat |
224 it like non-macro, otherwise the following cpp_get_token eats | 227 it like non-macro, otherwise the following cpp_get_token eats |
225 what should be preserved. */ | 228 what should be preserved. */ |
226 if (itype == NT_MACRO && cpp_fun_like_macro_p (ident)) | 229 if (is_macro && cpp_fun_like_macro_p (ident)) |
227 { | 230 { |
228 int idx2 = idx; | 231 int idx2 = idx; |
229 do | 232 do |
230 tok = cpp_peek_token (pfile, idx2++); | 233 tok = cpp_peek_token (pfile, idx2++); |
231 while (tok->type == CPP_PADDING); | 234 while (tok->type == CPP_PADDING); |
232 if (tok->type != CPP_OPEN_PAREN) | 235 if (tok->type != CPP_OPEN_PAREN) |
233 itype = NT_VOID; | 236 is_macro = false; |
234 } | 237 } |
235 if (itype == NT_MACRO) | 238 |
239 if (is_macro) | |
236 { | 240 { |
237 do | 241 do |
238 (void) cpp_get_token (pfile); | 242 (void) cpp_get_token (pfile); |
239 while (--idx > 0); | 243 while (--idx > 0); |
240 do | 244 do |
448 rs6000_define_or_undefine_macro (define_p, "_SOFT_FLOAT"); | 452 rs6000_define_or_undefine_macro (define_p, "_SOFT_FLOAT"); |
449 if ((flags & OPTION_MASK_RECIP_PRECISION) != 0) | 453 if ((flags & OPTION_MASK_RECIP_PRECISION) != 0) |
450 rs6000_define_or_undefine_macro (define_p, "__RECIP_PRECISION__"); | 454 rs6000_define_or_undefine_macro (define_p, "__RECIP_PRECISION__"); |
451 /* Note that the OPTION_MASK_ALTIVEC flag is automatically turned on | 455 /* Note that the OPTION_MASK_ALTIVEC flag is automatically turned on |
452 in any of the following conditions: | 456 in any of the following conditions: |
453 1. The command line specifies either -maltivec=le or -maltivec=be. | 457 1. The operating system is Darwin and it is configured for 64 |
454 2. The operating system is Darwin and it is configured for 64 | |
455 bit. (See darwin_rs6000_override_options.) | 458 bit. (See darwin_rs6000_override_options.) |
456 3. The operating system is Darwin and the operating system | 459 2. The operating system is Darwin and the operating system |
457 version is 10.5 or higher and the user has not explicitly | 460 version is 10.5 or higher and the user has not explicitly |
458 disabled ALTIVEC by specifying -mcpu=G3 or -mno-altivec and | 461 disabled ALTIVEC by specifying -mcpu=G3 or -mno-altivec and |
459 the compiler is not producing code for integration within the | 462 the compiler is not producing code for integration within the |
460 kernel. (See darwin_rs6000_override_options.) | 463 kernel. (See darwin_rs6000_override_options.) |
461 Note that the OPTION_MASK_ALTIVEC flag is automatically turned | 464 Note that the OPTION_MASK_ALTIVEC flag is automatically turned |
486 flag is considered to have been explicitly turned on. | 489 flag is considered to have been explicitly turned on. |
487 Note that the OPTION_MASK_VSX flag is automatically turned off in | 490 Note that the OPTION_MASK_VSX flag is automatically turned off in |
488 the following conditions: | 491 the following conditions: |
489 1. The operating system does not support saving of AltiVec | 492 1. The operating system does not support saving of AltiVec |
490 registers (OS_MISSING_ALTIVEC). | 493 registers (OS_MISSING_ALTIVEC). |
491 2. If any of the options TARGET_HARD_FLOAT, TARGET_SINGLE_FLOAT, | 494 2. If the option TARGET_HARD_FLOAT is turned off. Hereafter, the |
492 or TARGET_DOUBLE_FLOAT are turned off. Hereafter, the | |
493 OPTION_MASK_VSX flag is considered to have been turned off | 495 OPTION_MASK_VSX flag is considered to have been turned off |
494 explicitly. | 496 explicitly. |
495 3. If TARGET_PAIRED_FLOAT was enabled. Hereafter, the | 497 3. If TARGET_AVOID_XFORM is turned on explicitly at the outermost |
496 OPTION_MASK_VSX flag is considered to have been turned off | |
497 explicitly. | |
498 4. If TARGET_AVOID_XFORM is turned on explicitly at the outermost | |
499 compilation context, or if it is turned on by any means in an | 498 compilation context, or if it is turned on by any means in an |
500 inner compilation context. Hereafter, the OPTION_MASK_VSX | 499 inner compilation context. Hereafter, the OPTION_MASK_VSX |
501 flag is considered to have been turned off explicitly. | 500 flag is considered to have been turned off explicitly. |
502 5. If TARGET_ALTIVEC was explicitly disabled. Hereafter, the | 501 4. If TARGET_ALTIVEC was explicitly disabled. Hereafter, the |
503 OPTION_MASK_VSX flag is considered to have been turned off | 502 OPTION_MASK_VSX flag is considered to have been turned off |
504 explicitly. | 503 explicitly. |
505 6. If an inner context (as introduced by | 504 5. If an inner context (as introduced by |
506 __attribute__((__target__())) or #pragma GCC target() | 505 __attribute__((__target__())) or #pragma GCC target() |
507 requests a target that normally enables the | 506 requests a target that normally enables the |
508 OPTION_MASK_VSX flag but the outer-most "main target" | 507 OPTION_MASK_VSX flag but the outer-most "main target" |
509 does not support the rs6000_altivec_abi, this flag is | 508 does not support the rs6000_altivec_abi, this flag is |
510 turned off for the inner context unless OPTION_MASK_VSX | 509 turned off for the inner context unless OPTION_MASK_VSX |
586 via the target attribute/pragma. */ | 585 via the target attribute/pragma. */ |
587 if ((flags & OPTION_MASK_FLOAT128_HW) != 0) | 586 if ((flags & OPTION_MASK_FLOAT128_HW) != 0) |
588 rs6000_define_or_undefine_macro (define_p, "__FLOAT128_HARDWARE__"); | 587 rs6000_define_or_undefine_macro (define_p, "__FLOAT128_HARDWARE__"); |
589 | 588 |
590 /* options from the builtin masks. */ | 589 /* options from the builtin masks. */ |
591 /* Note that RS6000_BTM_PAIRED is enabled only if | |
592 TARGET_PAIRED_FLOAT is enabled (e.g. -mpaired). */ | |
593 if ((bu_mask & RS6000_BTM_PAIRED) != 0) | |
594 rs6000_define_or_undefine_macro (define_p, "__PAIRED__"); | |
595 /* Note that RS6000_BTM_CELL is enabled only if (rs6000_cpu == | 590 /* Note that RS6000_BTM_CELL is enabled only if (rs6000_cpu == |
596 PROCESSOR_CELL) (e.g. -mcpu=cell). */ | 591 PROCESSOR_CELL) (e.g. -mcpu=cell). */ |
597 if ((bu_mask & RS6000_BTM_CELL) != 0) | 592 if ((bu_mask & RS6000_BTM_CELL) != 0) |
598 rs6000_define_or_undefine_macro (define_p, "__PPU__"); | 593 rs6000_define_or_undefine_macro (define_p, "__PPU__"); |
599 } | 594 } |
613 builtin_define ("__RSQRTE__"); | 608 builtin_define ("__RSQRTE__"); |
614 if (TARGET_FRSQRTES) | 609 if (TARGET_FRSQRTES) |
615 builtin_define ("__RSQRTEF__"); | 610 builtin_define ("__RSQRTEF__"); |
616 if (TARGET_FLOAT128_TYPE) | 611 if (TARGET_FLOAT128_TYPE) |
617 builtin_define ("__FLOAT128_TYPE__"); | 612 builtin_define ("__FLOAT128_TYPE__"); |
618 if (TARGET_LONG_DOUBLE_128 && FLOAT128_IBM_P (TFmode)) | |
619 builtin_define ("__ibm128=long double"); | |
620 #ifdef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB | 613 #ifdef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB |
621 builtin_define ("__BUILTIN_CPU_SUPPORTS__"); | 614 builtin_define ("__BUILTIN_CPU_SUPPORTS__"); |
622 #endif | 615 #endif |
623 | 616 |
624 if (TARGET_EXTRA_BUILTINS && cpp_get_options (pfile)->lang != CLK_ASM) | 617 if (TARGET_EXTRA_BUILTINS && cpp_get_options (pfile)->lang != CLK_ASM) |
638 | 631 |
639 /* Enable context-sensitive macros. */ | 632 /* Enable context-sensitive macros. */ |
640 cpp_get_callbacks (pfile)->macro_to_expand = rs6000_macro_to_expand; | 633 cpp_get_callbacks (pfile)->macro_to_expand = rs6000_macro_to_expand; |
641 } | 634 } |
642 } | 635 } |
643 if (!TARGET_HARD_FLOAT | 636 if (!TARGET_HARD_FLOAT) |
644 || (TARGET_HARD_FLOAT && !TARGET_DOUBLE_FLOAT)) | |
645 builtin_define ("_SOFT_DOUBLE"); | 637 builtin_define ("_SOFT_DOUBLE"); |
646 /* Used by lwarx/stwcx. errata work-around. */ | 638 /* Used by lwarx/stwcx. errata work-around. */ |
647 if (rs6000_cpu == PROCESSOR_PPC405) | 639 if (rs6000_cpu == PROCESSOR_PPC405) |
648 builtin_define ("__PPC405__"); | 640 builtin_define ("__PPC405__"); |
649 /* Used by libstdc++. */ | 641 /* Used by libstdc++. */ |
681 builtin_define ("__builtin_vsx_xvnmsubmdp=__builtin_vsx_xvnmsubdp"); | 673 builtin_define ("__builtin_vsx_xvnmsubmdp=__builtin_vsx_xvnmsubdp"); |
682 builtin_define ("__builtin_vsx_xvnmsubasp=__builtin_vsx_xvnmsubsp"); | 674 builtin_define ("__builtin_vsx_xvnmsubasp=__builtin_vsx_xvnmsubsp"); |
683 builtin_define ("__builtin_vsx_xvnmsubmsp=__builtin_vsx_xvnmsubsp"); | 675 builtin_define ("__builtin_vsx_xvnmsubmsp=__builtin_vsx_xvnmsubsp"); |
684 } | 676 } |
685 | 677 |
678 /* Map the old _Float128 'q' builtins into the new 'f128' builtins. */ | |
679 if (TARGET_FLOAT128_TYPE) | |
680 { | |
681 builtin_define ("__builtin_fabsq=__builtin_fabsf128"); | |
682 builtin_define ("__builtin_copysignq=__builtin_copysignf128"); | |
683 builtin_define ("__builtin_nanq=__builtin_nanf128"); | |
684 builtin_define ("__builtin_nansq=__builtin_nansf128"); | |
685 builtin_define ("__builtin_infq=__builtin_inff128"); | |
686 builtin_define ("__builtin_huge_valq=__builtin_huge_valf128"); | |
687 } | |
688 | |
686 /* Tell users they can use __builtin_bswap{16,64}. */ | 689 /* Tell users they can use __builtin_bswap{16,64}. */ |
687 builtin_define ("__HAVE_BSWAP__"); | 690 builtin_define ("__HAVE_BSWAP__"); |
688 | 691 |
689 /* May be overridden by target configuration. */ | 692 /* May be overridden by target configuration. */ |
690 RS6000_CPU_CPP_ENDIAN_BUILTINS(); | 693 RS6000_CPU_CPP_ENDIAN_BUILTINS(); |
693 { | 696 { |
694 builtin_define ("__LONG_DOUBLE_128__"); | 697 builtin_define ("__LONG_DOUBLE_128__"); |
695 builtin_define ("__LONGDOUBLE128"); | 698 builtin_define ("__LONGDOUBLE128"); |
696 | 699 |
697 if (TARGET_IEEEQUAD) | 700 if (TARGET_IEEEQUAD) |
698 builtin_define ("__LONG_DOUBLE_IEEE128__"); | 701 { |
702 /* Older versions of GLIBC used __attribute__((__KC__)) to create the | |
703 IEEE 128-bit floating point complex type for C++ (which does not | |
704 support _Float128 _Complex). If the default for long double is | |
705 IEEE 128-bit mode, the library would need to use | |
706 __attribute__((__TC__)) instead. Defining __KF__ and __KC__ | |
707 is a stop-gap to build with the older libraries, until we | |
708 get an updated library. */ | |
709 builtin_define ("__LONG_DOUBLE_IEEE128__"); | |
710 builtin_define ("__KF__=__TF__"); | |
711 builtin_define ("__KC__=__TC__"); | |
712 } | |
699 else | 713 else |
700 builtin_define ("__LONG_DOUBLE_IBM128__"); | 714 builtin_define ("__LONG_DOUBLE_IBM128__"); |
701 } | 715 } |
702 | 716 |
703 switch (TARGET_CMODEL) | 717 switch (TARGET_CMODEL) |
733 default: | 747 default: |
734 break; | 748 break; |
735 } | 749 } |
736 | 750 |
737 /* Vector element order. */ | 751 /* Vector element order. */ |
738 if (BYTES_BIG_ENDIAN || (rs6000_altivec_element_order == 2)) | 752 if (BYTES_BIG_ENDIAN) |
739 builtin_define ("__VEC_ELEMENT_REG_ORDER__=__ORDER_BIG_ENDIAN__"); | 753 builtin_define ("__VEC_ELEMENT_REG_ORDER__=__ORDER_BIG_ENDIAN__"); |
740 else | 754 else |
741 builtin_define ("__VEC_ELEMENT_REG_ORDER__=__ORDER_LITTLE_ENDIAN__"); | 755 builtin_define ("__VEC_ELEMENT_REG_ORDER__=__ORDER_LITTLE_ENDIAN__"); |
742 | 756 |
743 /* Let the compiled code know if 'f' class registers will not be available. */ | 757 /* Let the compiled code know if 'f' class registers will not be available. */ |
748 if their alignment is 16 bytes or larger. */ | 762 if their alignment is 16 bytes or larger. */ |
749 if ((TARGET_MACHO && rs6000_darwin64_abi) | 763 if ((TARGET_MACHO && rs6000_darwin64_abi) |
750 || DEFAULT_ABI == ABI_ELFv2 | 764 || DEFAULT_ABI == ABI_ELFv2 |
751 || (DEFAULT_ABI == ABI_AIX && !rs6000_compat_align_parm)) | 765 || (DEFAULT_ABI == ABI_AIX && !rs6000_compat_align_parm)) |
752 builtin_define ("__STRUCT_PARM_ALIGN__=16"); | 766 builtin_define ("__STRUCT_PARM_ALIGN__=16"); |
753 | |
754 /* Generate defines for Xilinx FPU. */ | |
755 if (rs6000_xilinx_fpu) | |
756 { | |
757 builtin_define ("_XFPU"); | |
758 if (rs6000_single_float && ! rs6000_double_float) | |
759 { | |
760 if (rs6000_simple_fpu) | |
761 builtin_define ("_XFPU_SP_LITE"); | |
762 else | |
763 builtin_define ("_XFPU_SP_FULL"); | |
764 } | |
765 if (rs6000_double_float) | |
766 { | |
767 if (rs6000_simple_fpu) | |
768 builtin_define ("_XFPU_DP_LITE"); | |
769 else | |
770 builtin_define ("_XFPU_DP_FULL"); | |
771 } | |
772 } | |
773 } | 767 } |
774 | 768 |
775 | 769 |
776 struct altivec_builtin_types | 770 struct altivec_builtin_types |
777 { | 771 { |
871 RS6000_BTI_V2DI, RS6000_BTI_V4SI, 0, 0 }, | 865 RS6000_BTI_V2DI, RS6000_BTI_V4SI, 0, 0 }, |
872 { ALTIVEC_BUILTIN_VEC_UNPACKH, P8V_BUILTIN_VUPKHSW, | 866 { ALTIVEC_BUILTIN_VEC_UNPACKH, P8V_BUILTIN_VUPKHSW, |
873 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V4SI, 0, 0 }, | 867 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V4SI, 0, 0 }, |
874 { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHPX, | 868 { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHPX, |
875 RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, | 869 RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, |
870 { ALTIVEC_BUILTIN_VEC_UNPACKH, VSX_BUILTIN_DOUBLEH_V4SF, | |
871 RS6000_BTI_V2DF, RS6000_BTI_V4SF, 0, 0 }, | |
876 { ALTIVEC_BUILTIN_VEC_VUPKHSH, ALTIVEC_BUILTIN_VUPKHSH, | 872 { ALTIVEC_BUILTIN_VEC_VUPKHSH, ALTIVEC_BUILTIN_VUPKHSH, |
877 RS6000_BTI_V4SI, RS6000_BTI_V8HI, 0, 0 }, | 873 RS6000_BTI_V4SI, RS6000_BTI_V8HI, 0, 0 }, |
878 { ALTIVEC_BUILTIN_VEC_VUPKHSH, ALTIVEC_BUILTIN_VUPKHSH, | 874 { ALTIVEC_BUILTIN_VEC_VUPKHSH, ALTIVEC_BUILTIN_VUPKHSH, |
879 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V8HI, 0, 0 }, | 875 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V8HI, 0, 0 }, |
880 { ALTIVEC_BUILTIN_VEC_VUPKHSH, P8V_BUILTIN_VUPKHSW, | 876 { ALTIVEC_BUILTIN_VEC_VUPKHSH, P8V_BUILTIN_VUPKHSW, |
901 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V8HI, 0, 0 }, | 897 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V8HI, 0, 0 }, |
902 { ALTIVEC_BUILTIN_VEC_UNPACKL, P8V_BUILTIN_VUPKLSW, | 898 { ALTIVEC_BUILTIN_VEC_UNPACKL, P8V_BUILTIN_VUPKLSW, |
903 RS6000_BTI_V2DI, RS6000_BTI_V4SI, 0, 0 }, | 899 RS6000_BTI_V2DI, RS6000_BTI_V4SI, 0, 0 }, |
904 { ALTIVEC_BUILTIN_VEC_UNPACKL, P8V_BUILTIN_VUPKLSW, | 900 { ALTIVEC_BUILTIN_VEC_UNPACKL, P8V_BUILTIN_VUPKLSW, |
905 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V4SI, 0, 0 }, | 901 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V4SI, 0, 0 }, |
902 { ALTIVEC_BUILTIN_VEC_UNPACKL, VSX_BUILTIN_DOUBLEL_V4SF, | |
903 RS6000_BTI_V2DF, RS6000_BTI_V4SF, 0, 0 }, | |
906 { ALTIVEC_BUILTIN_VEC_VUPKLPX, ALTIVEC_BUILTIN_VUPKLPX, | 904 { ALTIVEC_BUILTIN_VEC_VUPKLPX, ALTIVEC_BUILTIN_VUPKLPX, |
907 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0, 0 }, | 905 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0, 0 }, |
908 { ALTIVEC_BUILTIN_VEC_VUPKLPX, ALTIVEC_BUILTIN_VUPKLPX, | 906 { ALTIVEC_BUILTIN_VEC_VUPKLPX, ALTIVEC_BUILTIN_VUPKLPX, |
909 RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, | 907 RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, |
910 { ALTIVEC_BUILTIN_VEC_VUPKLSH, ALTIVEC_BUILTIN_VUPKLSH, | 908 { ALTIVEC_BUILTIN_VEC_VUPKLSH, ALTIVEC_BUILTIN_VUPKLSH, |
1146 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, | 1144 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, |
1147 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, 0 }, | 1145 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, 0 }, |
1148 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, | 1146 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, |
1149 RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, | 1147 RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, |
1150 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, | 1148 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, |
1149 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 }, | |
1150 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, | |
1151 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, | 1151 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, |
1152 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, | 1152 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, |
1153 RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, | 1153 RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, |
1154 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, | 1154 { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, |
1155 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, | 1155 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, 0 }, |
1375 RS6000_BTI_bool_V2DI, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, | 1375 RS6000_BTI_bool_V2DI, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, |
1376 { ALTIVEC_BUILTIN_VEC_VCMPGTFP, ALTIVEC_BUILTIN_VCMPGTFP, | 1376 { ALTIVEC_BUILTIN_VEC_VCMPGTFP, ALTIVEC_BUILTIN_VCMPGTFP, |
1377 RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, | 1377 RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, |
1378 { ALTIVEC_BUILTIN_VEC_VCMPGTSW, ALTIVEC_BUILTIN_VCMPGTSW, | 1378 { ALTIVEC_BUILTIN_VEC_VCMPGTSW, ALTIVEC_BUILTIN_VCMPGTSW, |
1379 RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 1379 RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
1380 { ALTIVEC_BUILTIN_VEC_VCMPGTSW, ALTIVEC_BUILTIN_VCMPGTSW, | |
1381 RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | |
1382 { ALTIVEC_BUILTIN_VEC_VCMPGTUW, ALTIVEC_BUILTIN_VCMPGTUW, | |
1383 RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, | |
1384 { ALTIVEC_BUILTIN_VEC_VCMPGTUW, ALTIVEC_BUILTIN_VCMPGTUW, | 1380 { ALTIVEC_BUILTIN_VEC_VCMPGTUW, ALTIVEC_BUILTIN_VCMPGTUW, |
1385 RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, | 1381 RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, |
1386 { ALTIVEC_BUILTIN_VEC_VCMPGTSH, ALTIVEC_BUILTIN_VCMPGTSH, | 1382 { ALTIVEC_BUILTIN_VEC_VCMPGTSH, ALTIVEC_BUILTIN_VCMPGTSH, |
1387 RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | 1383 RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, |
1388 { ALTIVEC_BUILTIN_VEC_VCMPGTSH, ALTIVEC_BUILTIN_VCMPGTSH, | |
1389 RS6000_BTI_bool_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | |
1390 { ALTIVEC_BUILTIN_VEC_VCMPGTUH, ALTIVEC_BUILTIN_VCMPGTUH, | |
1391 RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | |
1392 { ALTIVEC_BUILTIN_VEC_VCMPGTUH, ALTIVEC_BUILTIN_VCMPGTUH, | 1384 { ALTIVEC_BUILTIN_VEC_VCMPGTUH, ALTIVEC_BUILTIN_VCMPGTUH, |
1393 RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | 1385 RS6000_BTI_bool_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, |
1394 { ALTIVEC_BUILTIN_VEC_VCMPGTSB, ALTIVEC_BUILTIN_VCMPGTSB, | 1386 { ALTIVEC_BUILTIN_VEC_VCMPGTSB, ALTIVEC_BUILTIN_VCMPGTSB, |
1395 RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | 1387 RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, |
1396 { ALTIVEC_BUILTIN_VEC_VCMPGTSB, ALTIVEC_BUILTIN_VCMPGTSB, | |
1397 RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | |
1398 { ALTIVEC_BUILTIN_VEC_VCMPGTUB, ALTIVEC_BUILTIN_VCMPGTUB, | |
1399 RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | |
1400 { ALTIVEC_BUILTIN_VEC_VCMPGTUB, ALTIVEC_BUILTIN_VCMPGTUB, | 1388 { ALTIVEC_BUILTIN_VEC_VCMPGTUB, ALTIVEC_BUILTIN_VCMPGTUB, |
1401 RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | 1389 RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, |
1402 { ALTIVEC_BUILTIN_VEC_CMPLE, ALTIVEC_BUILTIN_VCMPGEFP, | 1390 { ALTIVEC_BUILTIN_VEC_CMPLE, ALTIVEC_BUILTIN_VCMPGEFP, |
1403 RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, | 1391 RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, |
1404 { ALTIVEC_BUILTIN_VEC_CMPLE, VSX_BUILTIN_XVCMPGEDP, | 1392 { ALTIVEC_BUILTIN_VEC_CMPLE, VSX_BUILTIN_XVCMPGEDP, |
1510 | 1498 |
1511 { VSX_BUILTIN_VEC_FLOAT, VSX_BUILTIN_XVCVSXWSP_V4SF, | 1499 { VSX_BUILTIN_VEC_FLOAT, VSX_BUILTIN_XVCVSXWSP_V4SF, |
1512 RS6000_BTI_V4SF, RS6000_BTI_V4SI, 0, 0 }, | 1500 RS6000_BTI_V4SF, RS6000_BTI_V4SI, 0, 0 }, |
1513 { VSX_BUILTIN_VEC_FLOAT, VSX_BUILTIN_XVCVUXWSP_V4SF, | 1501 { VSX_BUILTIN_VEC_FLOAT, VSX_BUILTIN_XVCVUXWSP_V4SF, |
1514 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, 0, 0 }, | 1502 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, 0, 0 }, |
1515 { VSX_BUILTIN_VEC_FLOAT2, VSX_BUILTIN_FLOAT2_V2DI, | 1503 { P8V_BUILTIN_VEC_FLOAT2, P8V_BUILTIN_FLOAT2_V2DF, |
1504 RS6000_BTI_V4SF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, | |
1505 { P8V_BUILTIN_VEC_FLOAT2, P8V_BUILTIN_FLOAT2_V2DI, | |
1516 RS6000_BTI_V4SF, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, | 1506 RS6000_BTI_V4SF, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, |
1517 { VSX_BUILTIN_VEC_FLOAT2, VSX_BUILTIN_UNS_FLOAT2_V2DI, | 1507 { P8V_BUILTIN_VEC_FLOAT2, P8V_BUILTIN_UNS_FLOAT2_V2DI, |
1518 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V2DI, | 1508 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V2DI, |
1519 RS6000_BTI_unsigned_V2DI, 0 }, | 1509 RS6000_BTI_unsigned_V2DI, 0 }, |
1520 { VSX_BUILTIN_VEC_FLOATE, VSX_BUILTIN_FLOATE_V2DF, | 1510 { VSX_BUILTIN_VEC_FLOATE, VSX_BUILTIN_FLOATE_V2DF, |
1521 RS6000_BTI_V4SF, RS6000_BTI_V2DF, 0, 0 }, | 1511 RS6000_BTI_V4SF, RS6000_BTI_V2DF, 0, 0 }, |
1522 { VSX_BUILTIN_VEC_FLOATE, VSX_BUILTIN_FLOATE_V2DI, | 1512 { VSX_BUILTIN_VEC_FLOATE, VSX_BUILTIN_FLOATE_V2DI, |
1527 RS6000_BTI_V4SF, RS6000_BTI_V2DF, 0, 0 }, | 1517 RS6000_BTI_V4SF, RS6000_BTI_V2DF, 0, 0 }, |
1528 { VSX_BUILTIN_VEC_FLOATO, VSX_BUILTIN_FLOATO_V2DI, | 1518 { VSX_BUILTIN_VEC_FLOATO, VSX_BUILTIN_FLOATO_V2DI, |
1529 RS6000_BTI_V4SF, RS6000_BTI_V2DI, 0, 0 }, | 1519 RS6000_BTI_V4SF, RS6000_BTI_V2DI, 0, 0 }, |
1530 { VSX_BUILTIN_VEC_FLOATO, VSX_BUILTIN_UNS_FLOATO_V2DI, | 1520 { VSX_BUILTIN_VEC_FLOATO, VSX_BUILTIN_UNS_FLOATO_V2DI, |
1531 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V2DI, 0, 0 }, | 1521 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V2DI, 0, 0 }, |
1522 | |
1523 { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V1TI, | |
1524 RS6000_BTI_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_V1TI, 0 }, | |
1525 { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V1TI, | |
1526 RS6000_BTI_unsigned_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V1TI, 0 }, | |
1527 { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V1TI, | |
1528 RS6000_BTI_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_INTTI, 0 }, | |
1529 { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V1TI, | |
1530 RS6000_BTI_unsigned_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTTI, 0 }, | |
1532 | 1531 |
1533 { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DF, | 1532 { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DF, |
1534 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, | 1533 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, |
1535 { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI, | 1534 { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI, |
1536 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, | 1535 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, |
1613 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, | 1612 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, |
1614 { ALTIVEC_BUILTIN_VEC_LVEBX, ALTIVEC_BUILTIN_LVEBX, | 1613 { ALTIVEC_BUILTIN_VEC_LVEBX, ALTIVEC_BUILTIN_LVEBX, |
1615 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, | 1614 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, |
1616 { ALTIVEC_BUILTIN_VEC_LVEBX, ALTIVEC_BUILTIN_LVEBX, | 1615 { ALTIVEC_BUILTIN_VEC_LVEBX, ALTIVEC_BUILTIN_LVEBX, |
1617 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, | 1616 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, |
1617 | |
1618 /* vector float vec_ldl (int, vector float *); | |
1619 vector float vec_ldl (int, float *); */ | |
1618 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SF, | 1620 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SF, |
1619 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, | 1621 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, |
1620 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SF, | 1622 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SF, |
1621 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, | 1623 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, |
1624 | |
1625 /* vector bool int vec_ldl (int, vector bool int *); | |
1626 vector bool int vec_ldl (int, bool int *); | |
1627 vector int vec_ldl (int, vector int *); | |
1628 vector int vec_ldl (int, int *); | |
1629 vector unsigned int vec_ldl (int, vector unsigned int *); | |
1630 vector unsigned int vec_ldl (int, unsigned int *); */ | |
1622 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, | 1631 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, |
1623 RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI, 0 }, | 1632 RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI, 0 }, |
1633 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, | |
1634 RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_int, 0 }, | |
1624 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, | 1635 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, |
1625 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 }, | 1636 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 }, |
1626 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, | 1637 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, |
1627 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, | 1638 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, |
1628 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, | 1639 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, |
1629 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_long, 0 }, | |
1630 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, | |
1631 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 }, | 1640 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 }, |
1632 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, | 1641 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, |
1633 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, | 1642 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, |
1634 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V4SI, | 1643 |
1635 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long, 0 }, | 1644 /* vector bool short vec_ldl (int, vector bool short *); |
1645 vector bool short vec_ldl (int, bool short *); | |
1646 vector pixel vec_ldl (int, vector pixel *); | |
1647 vector short vec_ldl (int, vector short *); | |
1648 vector short vec_ldl (int, short *); | |
1649 vector unsigned short vec_ldl (int, vector unsigned short *); | |
1650 vector unsigned short vec_ldl (int, unsigned short *); */ | |
1636 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, | 1651 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, |
1637 RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI, 0 }, | 1652 RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI, 0 }, |
1653 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, | |
1654 RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_short, 0 }, | |
1638 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, | 1655 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, |
1639 RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI, 0 }, | 1656 RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI, 0 }, |
1640 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, | 1657 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, |
1641 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 }, | 1658 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 }, |
1642 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, | 1659 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, |
1643 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, | 1660 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, |
1644 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, | 1661 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, |
1645 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 }, | 1662 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 }, |
1646 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, | 1663 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V8HI, |
1647 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, | 1664 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, |
1665 | |
1666 /* vector bool char vec_ldl (int, vector bool char *); | |
1667 vector bool char vec_ldl (int, bool char *); | |
1668 vector char vec_ldl (int, vector char *); | |
1669 vector char vec_ldl (int, char *); | |
1670 vector unsigned char vec_ldl (int, vector unsigned char *); | |
1671 vector unsigned char vec_ldl (int, unsigned char *); */ | |
1648 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, | 1672 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, |
1649 RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI, 0 }, | 1673 RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI, 0 }, |
1674 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, | |
1675 RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_char, 0 }, | |
1650 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, | 1676 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, |
1651 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 }, | 1677 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 }, |
1652 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, | 1678 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, |
1653 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, | 1679 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, |
1654 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, | 1680 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, |
1655 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, | 1681 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, |
1656 ~RS6000_BTI_unsigned_V16QI, 0 }, | 1682 ~RS6000_BTI_unsigned_V16QI, 0 }, |
1657 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, | 1683 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V16QI, |
1658 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, | 1684 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, |
1685 | |
1686 /* vector double vec_ldl (int, vector double *); | |
1687 vector double vec_ldl (int, double *); */ | |
1659 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DF, | 1688 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DF, |
1660 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, | 1689 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, |
1690 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DF, | |
1691 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double, 0 }, | |
1692 | |
1693 /* vector long long vec_ldl (int, vector long long *); | |
1694 vector long long vec_ldl (int, long long *); | |
1695 vector unsigned long long vec_ldl (int, vector unsigned long long *); | |
1696 vector unsigned long long vec_ldl (int, unsigned long long *); | |
1697 vector bool long long vec_ldl (int, vector bool long long *); | |
1698 vector bool long long vec_ldl (int, bool long long *); */ | |
1661 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, | 1699 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, |
1662 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, | 1700 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, |
1701 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, | |
1702 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long, 0 }, | |
1663 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, | 1703 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, |
1664 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | 1704 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, |
1665 ~RS6000_BTI_unsigned_V2DI, 0 }, | 1705 ~RS6000_BTI_unsigned_V2DI, 0 }, |
1666 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, | 1706 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, |
1707 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | |
1708 ~RS6000_BTI_unsigned_long_long, 0 }, | |
1709 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, | |
1667 RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V2DI, 0 }, | 1710 RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V2DI, 0 }, |
1711 { ALTIVEC_BUILTIN_VEC_LDL, ALTIVEC_BUILTIN_LVXL_V2DI, | |
1712 RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_long_long, 0 }, | |
1713 | |
1668 { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, | 1714 { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, |
1669 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, | 1715 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, |
1670 { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, | 1716 { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, |
1671 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, | 1717 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, |
1672 { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, | 1718 { ALTIVEC_BUILTIN_VEC_LVSL, ALTIVEC_BUILTIN_LVSL, |
2197 RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | 2243 RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, |
2198 { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULEUH, | 2244 { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULEUH, |
2199 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | 2245 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, |
2200 { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULESH, | 2246 { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULESH, |
2201 RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | 2247 RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, |
2202 { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULESW, | 2248 { ALTIVEC_BUILTIN_VEC_MULE, P8V_BUILTIN_VMULESW, |
2203 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2249 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2204 { ALTIVEC_BUILTIN_VEC_MULE, ALTIVEC_BUILTIN_VMULEUW, | 2250 { ALTIVEC_BUILTIN_VEC_MULE, P8V_BUILTIN_VMULEUW, |
2205 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V4SI, | 2251 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V4SI, |
2206 RS6000_BTI_unsigned_V4SI, 0 }, | 2252 RS6000_BTI_unsigned_V4SI, 0 }, |
2207 { ALTIVEC_BUILTIN_VEC_VMULEUB, ALTIVEC_BUILTIN_VMULEUB, | 2253 { ALTIVEC_BUILTIN_VEC_VMULEUB, ALTIVEC_BUILTIN_VMULEUB, |
2208 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | 2254 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, |
2209 { ALTIVEC_BUILTIN_VEC_VMULESB, ALTIVEC_BUILTIN_VMULESB, | 2255 { ALTIVEC_BUILTIN_VEC_VMULESB, ALTIVEC_BUILTIN_VMULESB, |
2210 RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | 2256 RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, |
2211 { ALTIVEC_BUILTIN_VEC_VMULEUH, ALTIVEC_BUILTIN_VMULEUH, | 2257 { ALTIVEC_BUILTIN_VEC_VMULEUH, ALTIVEC_BUILTIN_VMULEUH, |
2212 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | 2258 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, |
2213 { ALTIVEC_BUILTIN_VEC_VMULESH, ALTIVEC_BUILTIN_VMULESH, | 2259 { ALTIVEC_BUILTIN_VEC_VMULESH, ALTIVEC_BUILTIN_VMULESH, |
2214 RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | 2260 RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, |
2215 { ALTIVEC_BUILTIN_VEC_VMULEUW, ALTIVEC_BUILTIN_VMULEUW, | 2261 { ALTIVEC_BUILTIN_VEC_VMULEUW, P8V_BUILTIN_VMULEUW, |
2216 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2262 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2217 { ALTIVEC_BUILTIN_VEC_VMULESW, ALTIVEC_BUILTIN_VMULESW, | 2263 { ALTIVEC_BUILTIN_VEC_VMULESW, P8V_BUILTIN_VMULESW, |
2218 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2264 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2219 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOUB, | 2265 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOUB, |
2220 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | 2266 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, |
2221 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSB, | 2267 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSB, |
2222 RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | 2268 RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, |
2223 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOUH, | 2269 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOUH, |
2224 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | 2270 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, |
2225 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSW, | 2271 { ALTIVEC_BUILTIN_VEC_MULO, P8V_BUILTIN_VMULOSW, |
2226 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2272 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2227 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOUW, | 2273 { ALTIVEC_BUILTIN_VEC_MULO, P8V_BUILTIN_VMULOUW, |
2228 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V4SI, | 2274 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V4SI, |
2229 RS6000_BTI_unsigned_V4SI, 0 }, | 2275 RS6000_BTI_unsigned_V4SI, 0 }, |
2230 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSH, | 2276 { ALTIVEC_BUILTIN_VEC_MULO, ALTIVEC_BUILTIN_VMULOSH, |
2231 RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | 2277 RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, |
2232 { ALTIVEC_BUILTIN_VEC_VMULOSH, ALTIVEC_BUILTIN_VMULOSH, | 2278 { ALTIVEC_BUILTIN_VEC_VMULOSH, ALTIVEC_BUILTIN_VMULOSH, |
2235 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | 2281 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, |
2236 { ALTIVEC_BUILTIN_VEC_VMULOSB, ALTIVEC_BUILTIN_VMULOSB, | 2282 { ALTIVEC_BUILTIN_VEC_VMULOSB, ALTIVEC_BUILTIN_VMULOSB, |
2237 RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | 2283 RS6000_BTI_V8HI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, |
2238 { ALTIVEC_BUILTIN_VEC_VMULOUB, ALTIVEC_BUILTIN_VMULOUB, | 2284 { ALTIVEC_BUILTIN_VEC_VMULOUB, ALTIVEC_BUILTIN_VMULOUB, |
2239 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | 2285 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, |
2240 { ALTIVEC_BUILTIN_VEC_VMULOUW, ALTIVEC_BUILTIN_VMULOUW, | 2286 { ALTIVEC_BUILTIN_VEC_VMULOUW, P8V_BUILTIN_VMULOUW, |
2241 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2287 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2242 { ALTIVEC_BUILTIN_VEC_VMULOSW, ALTIVEC_BUILTIN_VMULOSW, | 2288 { ALTIVEC_BUILTIN_VEC_VMULOSW, P8V_BUILTIN_VMULOSW, |
2243 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2289 RS6000_BTI_V2DI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2244 | 2290 |
2245 { ALTIVEC_BUILTIN_VEC_NABS, ALTIVEC_BUILTIN_NABS_V16QI, | 2291 { ALTIVEC_BUILTIN_VEC_NABS, ALTIVEC_BUILTIN_NABS_V16QI, |
2246 RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, | 2292 RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, |
2247 { ALTIVEC_BUILTIN_VEC_NABS, ALTIVEC_BUILTIN_NABS_V8HI, | 2293 { ALTIVEC_BUILTIN_VEC_NABS, ALTIVEC_BUILTIN_NABS_V8HI, |
2256 RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 }, | 2302 RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 }, |
2257 { ALTIVEC_BUILTIN_VEC_NEARBYINT, VSX_BUILTIN_XVRDPI, | 2303 { ALTIVEC_BUILTIN_VEC_NEARBYINT, VSX_BUILTIN_XVRDPI, |
2258 RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 }, | 2304 RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 }, |
2259 { ALTIVEC_BUILTIN_VEC_NEARBYINT, VSX_BUILTIN_XVRSPI, | 2305 { ALTIVEC_BUILTIN_VEC_NEARBYINT, VSX_BUILTIN_XVRSPI, |
2260 RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, | 2306 RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, |
2261 | |
2262 { ALTIVEC_BUILTIN_VEC_NEG, ALTIVEC_BUILTIN_NEG_V16QI, | |
2263 RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, | |
2264 { ALTIVEC_BUILTIN_VEC_NEG, ALTIVEC_BUILTIN_NEG_V8HI, | |
2265 RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0, 0 }, | |
2266 { ALTIVEC_BUILTIN_VEC_NEG, ALTIVEC_BUILTIN_NEG_V4SI, | |
2267 RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0, 0 }, | |
2268 { ALTIVEC_BUILTIN_VEC_NEG, ALTIVEC_BUILTIN_NEG_V2DI, | |
2269 RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0, 0 }, | |
2270 { ALTIVEC_BUILTIN_VEC_NEG, ALTIVEC_BUILTIN_NEG_V4SF, | |
2271 RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, | |
2272 { ALTIVEC_BUILTIN_VEC_NEG, ALTIVEC_BUILTIN_NEG_V2DF, | |
2273 RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 }, | |
2274 | 2307 |
2275 { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, | 2308 { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, |
2276 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, | 2309 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, |
2277 { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, | 2310 { ALTIVEC_BUILTIN_VEC_NOR, ALTIVEC_BUILTIN_VNOR, |
2278 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, | 2311 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, |
2392 RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, | 2425 RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, |
2393 { ALTIVEC_BUILTIN_VEC_PACK, P8V_BUILTIN_VPKUDUM, | 2426 { ALTIVEC_BUILTIN_VEC_PACK, P8V_BUILTIN_VPKUDUM, |
2394 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, | 2427 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, |
2395 { ALTIVEC_BUILTIN_VEC_PACK, P8V_BUILTIN_VPKUDUM, | 2428 { ALTIVEC_BUILTIN_VEC_PACK, P8V_BUILTIN_VPKUDUM, |
2396 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 }, | 2429 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 }, |
2397 { ALTIVEC_BUILTIN_VEC_PACK, P8V_BUILTIN_VPKUDUM, | 2430 { ALTIVEC_BUILTIN_VEC_PACK, P8V_BUILTIN_FLOAT2_V2DF, |
2398 RS6000_BTI_V4SF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, | 2431 RS6000_BTI_V4SF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, |
2432 | |
2433 { P8V_BUILTIN_VEC_NEG, P8V_BUILTIN_NEG_V16QI, | |
2434 RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, | |
2435 { P8V_BUILTIN_VEC_NEG, P8V_BUILTIN_NEG_V8HI, | |
2436 RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0, 0 }, | |
2437 { P8V_BUILTIN_VEC_NEG, P8V_BUILTIN_NEG_V4SI, | |
2438 RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0, 0 }, | |
2439 { P8V_BUILTIN_VEC_NEG, P8V_BUILTIN_NEG_V2DI, | |
2440 RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0, 0 }, | |
2441 { P8V_BUILTIN_VEC_NEG, P8V_BUILTIN_NEG_V4SF, | |
2442 RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, | |
2443 { P8V_BUILTIN_VEC_NEG, P8V_BUILTIN_NEG_V2DF, | |
2444 RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 }, | |
2399 | 2445 |
2400 { P9V_BUILTIN_VEC_CONVERT_4F32_8I16, P9V_BUILTIN_CONVERT_4F32_8I16, | 2446 { P9V_BUILTIN_VEC_CONVERT_4F32_8I16, P9V_BUILTIN_CONVERT_4F32_8I16, |
2401 RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, | 2447 RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, |
2448 | |
2449 { P9V_BUILTIN_VEC_VFIRSTMATCHINDEX, P9V_BUILTIN_VFIRSTMATCHINDEX_V16QI, | |
2450 RS6000_BTI_UINTSI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | |
2451 { P9V_BUILTIN_VEC_VFIRSTMATCHINDEX, P9V_BUILTIN_VFIRSTMATCHINDEX_V16QI, | |
2452 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2453 { P9V_BUILTIN_VEC_VFIRSTMATCHINDEX, P9V_BUILTIN_VFIRSTMATCHINDEX_V8HI, | |
2454 RS6000_BTI_UINTSI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | |
2455 { P9V_BUILTIN_VEC_VFIRSTMATCHINDEX, P9V_BUILTIN_VFIRSTMATCHINDEX_V8HI, | |
2456 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | |
2457 { P9V_BUILTIN_VEC_VFIRSTMATCHINDEX, P9V_BUILTIN_VFIRSTMATCHINDEX_V4SI, | |
2458 RS6000_BTI_UINTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | |
2459 { P9V_BUILTIN_VEC_VFIRSTMATCHINDEX, P9V_BUILTIN_VFIRSTMATCHINDEX_V4SI, | |
2460 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, | |
2461 { P9V_BUILTIN_VEC_VFIRSTMATCHOREOSINDEX, P9V_BUILTIN_VFIRSTMATCHOREOSINDEX_V16QI, | |
2462 RS6000_BTI_UINTSI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | |
2463 { P9V_BUILTIN_VEC_VFIRSTMATCHOREOSINDEX, P9V_BUILTIN_VFIRSTMATCHOREOSINDEX_V16QI, | |
2464 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2465 { P9V_BUILTIN_VEC_VFIRSTMATCHOREOSINDEX, P9V_BUILTIN_VFIRSTMATCHOREOSINDEX_V8HI, | |
2466 RS6000_BTI_UINTSI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | |
2467 { P9V_BUILTIN_VEC_VFIRSTMATCHOREOSINDEX, P9V_BUILTIN_VFIRSTMATCHOREOSINDEX_V8HI, | |
2468 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | |
2469 { P9V_BUILTIN_VEC_VFIRSTMATCHOREOSINDEX, P9V_BUILTIN_VFIRSTMATCHOREOSINDEX_V4SI, | |
2470 RS6000_BTI_UINTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | |
2471 { P9V_BUILTIN_VEC_VFIRSTMATCHOREOSINDEX, P9V_BUILTIN_VFIRSTMATCHOREOSINDEX_V4SI, | |
2472 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, | |
2473 { P9V_BUILTIN_VEC_VFIRSTMISMATCHINDEX, P9V_BUILTIN_VFIRSTMISMATCHINDEX_V16QI, | |
2474 RS6000_BTI_UINTSI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | |
2475 { P9V_BUILTIN_VEC_VFIRSTMISMATCHINDEX, P9V_BUILTIN_VFIRSTMISMATCHINDEX_V16QI, | |
2476 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2477 { P9V_BUILTIN_VEC_VFIRSTMISMATCHINDEX, P9V_BUILTIN_VFIRSTMISMATCHINDEX_V8HI, | |
2478 RS6000_BTI_UINTSI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | |
2479 { P9V_BUILTIN_VEC_VFIRSTMISMATCHINDEX, P9V_BUILTIN_VFIRSTMISMATCHINDEX_V8HI, | |
2480 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | |
2481 { P9V_BUILTIN_VEC_VFIRSTMISMATCHINDEX, P9V_BUILTIN_VFIRSTMISMATCHINDEX_V4SI, | |
2482 RS6000_BTI_UINTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | |
2483 { P9V_BUILTIN_VEC_VFIRSTMISMATCHINDEX, P9V_BUILTIN_VFIRSTMISMATCHINDEX_V4SI, | |
2484 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, | |
2485 | |
2486 { P9V_BUILTIN_VEC_VFIRSTMISMATCHOREOSINDEX, | |
2487 P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V16QI, | |
2488 RS6000_BTI_UINTSI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, | |
2489 { P9V_BUILTIN_VEC_VFIRSTMISMATCHOREOSINDEX, | |
2490 P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V16QI, RS6000_BTI_UINTSI, | |
2491 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2492 { P9V_BUILTIN_VEC_VFIRSTMISMATCHOREOSINDEX, | |
2493 P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V8HI, | |
2494 RS6000_BTI_UINTSI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | |
2495 { P9V_BUILTIN_VEC_VFIRSTMISMATCHOREOSINDEX, | |
2496 P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V8HI, | |
2497 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0 }, | |
2498 { P9V_BUILTIN_VEC_VFIRSTMISMATCHOREOSINDEX, | |
2499 P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V4SI, | |
2500 RS6000_BTI_UINTSI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | |
2501 { P9V_BUILTIN_VEC_VFIRSTMISMATCHOREOSINDEX, | |
2502 P9V_BUILTIN_VFIRSTMISMATCHOREOSINDEX_V4SI, | |
2503 RS6000_BTI_UINTSI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, | |
2402 | 2504 |
2403 { ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM, | 2505 { ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM, |
2404 RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2506 RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2405 { ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM, | 2507 { ALTIVEC_BUILTIN_VEC_VPKUWUM, ALTIVEC_BUILTIN_VPKUWUM, |
2406 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, | 2508 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, |
2442 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, | 2544 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, |
2443 { ALTIVEC_BUILTIN_VEC_PACKSU, ALTIVEC_BUILTIN_VPKSWUS, | 2545 { ALTIVEC_BUILTIN_VEC_PACKSU, ALTIVEC_BUILTIN_VPKSWUS, |
2444 RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2546 RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2445 { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKSDUS, | 2547 { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKSDUS, |
2446 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, | 2548 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, |
2447 { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKSDUS, | 2549 { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKUDUS, |
2448 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, | 2550 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, |
2449 { ALTIVEC_BUILTIN_VEC_VPKSWUS, ALTIVEC_BUILTIN_VPKSWUS, | 2551 { ALTIVEC_BUILTIN_VEC_VPKSWUS, ALTIVEC_BUILTIN_VPKSWUS, |
2450 RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 2552 RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
2451 { ALTIVEC_BUILTIN_VEC_VPKSHUS, ALTIVEC_BUILTIN_VPKSHUS, | 2553 { ALTIVEC_BUILTIN_VEC_VPKSHUS, ALTIVEC_BUILTIN_VPKSHUS, |
2452 RS6000_BTI_unsigned_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, | 2554 RS6000_BTI_unsigned_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 }, |
2584 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, | 2686 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, |
2585 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, | 2687 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, |
2586 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, | 2688 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, |
2587 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, | 2689 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, |
2588 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | 2690 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, |
2691 | |
2692 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, | |
2693 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2694 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, | |
2695 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2696 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, | |
2697 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2698 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, | |
2699 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, | |
2700 { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, | |
2701 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V8HI, 0 }, | |
2702 | |
2589 { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, | 2703 { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, |
2590 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V16QI, 0 }, | 2704 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V16QI, 0 }, |
2591 { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, | 2705 { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, |
2592 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V16QI, 0 }, | 2706 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V16QI, 0 }, |
2593 { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, | 2707 { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, |
2792 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, | 2906 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, |
2793 { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, | 2907 { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, |
2794 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, | 2908 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, |
2795 { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, | 2909 { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, |
2796 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | 2910 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, |
2911 { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, | |
2912 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2913 { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, | |
2914 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2797 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | 2915 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, |
2798 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V16QI, 0 }, | 2916 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V16QI, 0 }, |
2799 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | 2917 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, |
2800 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V16QI, 0 }, | 2918 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V16QI, 0 }, |
2801 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | 2919 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, |
2824 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | 2942 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, |
2825 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | 2943 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, |
2826 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, | 2944 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, |
2827 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | 2945 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, |
2828 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, | 2946 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, |
2947 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | |
2948 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V16QI, 0 }, | |
2949 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | |
2950 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2951 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | |
2952 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_V16QI, 0 }, | |
2953 { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, | |
2954 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, | |
2955 | |
2829 { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, | 2956 { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, |
2830 RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, | 2957 RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, |
2831 { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, | 2958 { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, |
2832 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, | 2959 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, 0 }, |
2833 { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, | 2960 { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, |
3042 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, | 3169 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, 0 }, |
3043 { ALTIVEC_BUILTIN_VEC_SUM2S, ALTIVEC_BUILTIN_VSUM2SWS, | 3170 { ALTIVEC_BUILTIN_VEC_SUM2S, ALTIVEC_BUILTIN_VSUM2SWS, |
3044 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 3171 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
3045 { ALTIVEC_BUILTIN_VEC_SUMS, ALTIVEC_BUILTIN_VSUMSWS, | 3172 { ALTIVEC_BUILTIN_VEC_SUMS, ALTIVEC_BUILTIN_VSUMSWS, |
3046 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 3173 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
3047 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V2DF, | 3174 |
3175 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V2DF, | |
3048 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, | 3176 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, |
3049 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V2DF, | 3177 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V2DF, |
3050 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double, 0 }, | 3178 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double, 0 }, |
3051 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V2DI, | 3179 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V1TI, |
3180 RS6000_BTI_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_INTTI, 0 }, | |
3181 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V1TI, | |
3182 RS6000_BTI_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_V1TI, 0 }, | |
3183 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V1TI, | |
3184 RS6000_BTI_unsigned_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTTI, 0 }, | |
3185 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V2DI, | |
3052 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, | 3186 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, |
3053 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V2DI, | 3187 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V2DI, |
3054 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long, 0 }, | 3188 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long, 0 }, |
3055 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V2DI, | 3189 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V2DI, |
3190 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_INTDI, 0 }, | |
3191 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V2DI, | |
3056 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | 3192 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, |
3057 ~RS6000_BTI_unsigned_V2DI, 0 }, | 3193 ~RS6000_BTI_unsigned_V2DI, 0 }, |
3058 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V2DI, | 3194 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V2DI, |
3059 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | 3195 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, |
3060 ~RS6000_BTI_unsigned_long_long, 0 }, | 3196 ~RS6000_BTI_unsigned_long_long, 0 }, |
3061 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V4SF, | 3197 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVD2X_V2DI, |
3198 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTDI, 0 }, | |
3199 | |
3200 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V4SF, | |
3062 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, | 3201 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, |
3063 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V4SF, | 3202 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V4SF, |
3064 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, | 3203 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, |
3065 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V4SI, | 3204 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V4SI, |
3066 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 }, | 3205 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 }, |
3067 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V4SI, | 3206 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V4SI, |
3068 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, | 3207 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, |
3069 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V4SI, | 3208 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V4SI, |
3070 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 }, | 3209 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 }, |
3071 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V4SI, | 3210 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V4SI, |
3072 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, | 3211 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, |
3073 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V8HI, | 3212 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V8HI, |
3074 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 }, | 3213 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 }, |
3075 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V8HI, | 3214 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V8HI, |
3076 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, | 3215 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, |
3077 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V8HI, | 3216 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V8HI, |
3078 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 }, | 3217 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 }, |
3079 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V8HI, | 3218 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V8HI, |
3080 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, | 3219 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, |
3081 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V16QI, | 3220 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V16QI, |
3082 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 }, | 3221 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 }, |
3083 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V16QI, | 3222 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V16QI, |
3084 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, | 3223 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, |
3085 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V16QI, | 3224 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V16QI, |
3086 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, | 3225 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, |
3087 ~RS6000_BTI_unsigned_V16QI, 0 }, | 3226 ~RS6000_BTI_unsigned_V16QI, 0 }, |
3088 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LD_ELEMREV_V16QI, | 3227 { VSX_BUILTIN_VEC_XL, VSX_BUILTIN_LXVW4X_V16QI, |
3089 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, | 3228 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, |
3090 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V16QI, | 3229 |
3230 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V2DF, | |
3231 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, | |
3232 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V2DF, | |
3233 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double, 0 }, | |
3234 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V1TI, | |
3235 RS6000_BTI_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_INTTI, 0 }, | |
3236 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V1TI, | |
3237 RS6000_BTI_unsigned_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTTI, 0 }, | |
3238 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V2DI, | |
3239 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, | |
3240 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V2DI, | |
3241 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long, 0 }, | |
3242 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V2DI, | |
3243 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | |
3244 ~RS6000_BTI_unsigned_V2DI, 0 }, | |
3245 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V2DI, | |
3246 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | |
3247 ~RS6000_BTI_unsigned_long_long, 0 }, | |
3248 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V4SF, | |
3249 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, | |
3250 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V4SF, | |
3251 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, | |
3252 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V4SI, | |
3253 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI, 0 }, | |
3254 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V4SI, | |
3255 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, | |
3256 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V4SI, | |
3257 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI, 0 }, | |
3258 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V4SI, | |
3259 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, | |
3260 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V8HI, | |
3261 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI, 0 }, | |
3262 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V8HI, | |
3263 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, | |
3264 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V8HI, | |
3265 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI, 0 }, | |
3266 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V8HI, | |
3267 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, | |
3268 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V16QI, | |
3269 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI, 0 }, | |
3270 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V16QI, | |
3271 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, | |
3272 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V16QI, | |
3273 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, | |
3274 ~RS6000_BTI_unsigned_V16QI, 0 }, | |
3275 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_LD_ELEMREV_V16QI, | |
3091 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, | 3276 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI, 0 }, |
3092 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V16QI, | |
3093 RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI, 0 }, | |
3094 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V8HI, | |
3095 RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI, 0 }, | |
3096 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V8HI, | |
3097 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI, 0 }, | |
3098 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V4SI, | |
3099 RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI, 0 }, | |
3100 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V4SI, | |
3101 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI, 0 }, | |
3102 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V2DI, | |
3103 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long, 0 }, | |
3104 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V2DI, | |
3105 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long_long, 0 }, | |
3106 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V4SF, | |
3107 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float, 0 }, | |
3108 { VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_XL_BE_V2DF, | |
3109 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double, 0 }, | |
3110 { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, | 3277 { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, |
3111 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, | 3278 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, |
3112 { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, | 3279 { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, |
3113 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, 0 }, | 3280 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_bool_V4SI, 0 }, |
3114 { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, | 3281 { ALTIVEC_BUILTIN_VEC_XOR, ALTIVEC_BUILTIN_VXOR, |
3430 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, | 3597 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, |
3431 { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, | 3598 { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, |
3432 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, | 3599 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, |
3433 { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, | 3600 { ALTIVEC_BUILTIN_VEC_PERM, ALTIVEC_BUILTIN_VPERM_16QI, |
3434 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI }, | 3601 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI }, |
3602 | |
3603 { P8V_BUILTIN_VEC_VPERMXOR, P8V_BUILTIN_VPERMXOR, | |
3604 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, | |
3605 RS6000_BTI_bool_V16QI }, | |
3606 { P8V_BUILTIN_VEC_VPERMXOR, P8V_BUILTIN_VPERMXOR, | |
3607 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI }, | |
3608 { P8V_BUILTIN_VEC_VPERMXOR, P8V_BUILTIN_VPERMXOR, | |
3609 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, | |
3610 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI }, | |
3611 | |
3435 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_2DF, | 3612 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_2DF, |
3436 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_bool_V2DI }, | 3613 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_bool_V2DI }, |
3437 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_2DF, | 3614 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_2DF, |
3438 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI }, | 3615 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI }, |
3439 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_2DF, | 3616 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_2DF, |
3501 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, | 3678 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, |
3502 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI }, | 3679 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI }, |
3503 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, | 3680 { ALTIVEC_BUILTIN_VEC_SEL, ALTIVEC_BUILTIN_VSEL_16QI, |
3504 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, | 3681 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI }, |
3505 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SF, | 3682 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SF, |
3506 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_NOT_OPAQUE }, | 3683 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI }, |
3507 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, | 3684 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, |
3508 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_NOT_OPAQUE }, | 3685 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_INTSI }, |
3509 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, | 3686 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, |
3510 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_NOT_OPAQUE }, | 3687 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI }, |
3511 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, | 3688 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_4SI, |
3512 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_NOT_OPAQUE }, | 3689 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI }, |
3513 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, | 3690 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, |
3514 RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_NOT_OPAQUE }, | 3691 RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_INTSI }, |
3515 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, | 3692 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, |
3516 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_NOT_OPAQUE }, | 3693 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI }, |
3517 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, | 3694 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, |
3518 RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_NOT_OPAQUE }, | 3695 RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI }, |
3519 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, | 3696 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_8HI, |
3520 RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_NOT_OPAQUE }, | 3697 RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI }, |
3521 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, | 3698 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, |
3522 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_NOT_OPAQUE }, | 3699 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_INTSI }, |
3523 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, | 3700 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, |
3524 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_NOT_OPAQUE }, | 3701 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI }, |
3525 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, | 3702 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_16QI, |
3526 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_NOT_OPAQUE }, | 3703 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI }, |
3527 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DF, | 3704 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DF, |
3528 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_NOT_OPAQUE }, | 3705 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_INTSI }, |
3706 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, | |
3707 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI }, | |
3708 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, | |
3709 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_INTSI }, | |
3710 { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, | |
3711 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI }, | |
3712 | |
3529 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_16QI, | 3713 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_16QI, |
3530 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, | 3714 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, |
3531 RS6000_BTI_NOT_OPAQUE }, | 3715 RS6000_BTI_INTSI }, |
3532 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_16QI, | 3716 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_16QI, |
3533 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, | 3717 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, |
3534 RS6000_BTI_unsigned_V16QI, RS6000_BTI_NOT_OPAQUE }, | 3718 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI }, |
3535 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_8HI, | 3719 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_8HI, |
3536 RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, | 3720 RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, |
3537 RS6000_BTI_NOT_OPAQUE }, | 3721 RS6000_BTI_INTSI }, |
3538 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_8HI, | 3722 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_8HI, |
3539 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, | 3723 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, |
3540 RS6000_BTI_unsigned_V8HI, RS6000_BTI_NOT_OPAQUE }, | 3724 RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI }, |
3541 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_4SI, | 3725 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_4SI, |
3542 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, | 3726 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, |
3543 RS6000_BTI_NOT_OPAQUE }, | 3727 RS6000_BTI_INTSI }, |
3544 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_4SI, | 3728 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_4SI, |
3545 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, | 3729 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, |
3546 RS6000_BTI_unsigned_V4SI, RS6000_BTI_NOT_OPAQUE }, | 3730 RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI }, |
3547 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_2DI, | 3731 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_2DI, |
3548 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, | 3732 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, |
3549 RS6000_BTI_NOT_OPAQUE }, | 3733 RS6000_BTI_INTSI }, |
3550 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_2DI, | 3734 { ALTIVEC_BUILTIN_VEC_SLDW, VSX_BUILTIN_XXSLDWI_2DI, |
3551 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, | 3735 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, |
3552 RS6000_BTI_unsigned_V2DI, RS6000_BTI_NOT_OPAQUE }, | 3736 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI }, |
3737 | |
3553 { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DF, | 3738 { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DF, |
3554 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, | 3739 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, |
3555 { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, | 3740 { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, |
3556 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI }, | 3741 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI }, |
3557 { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, | 3742 { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, |
3880 RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, | 4065 RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, |
3881 { ALTIVEC_BUILTIN_VEC_STVRXL, ALTIVEC_BUILTIN_STVRXL, | 4066 { ALTIVEC_BUILTIN_VEC_STVRXL, ALTIVEC_BUILTIN_STVRXL, |
3882 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI }, | 4067 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI }, |
3883 { ALTIVEC_BUILTIN_VEC_STVRXL, ALTIVEC_BUILTIN_STVRXL, | 4068 { ALTIVEC_BUILTIN_VEC_STVRXL, ALTIVEC_BUILTIN_STVRXL, |
3884 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, | 4069 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, |
3885 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V2DF, | 4070 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVD2X_V2DF, |
3886 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, | 4071 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, |
3887 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V2DF, | 4072 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVD2X_V2DF, |
3888 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double }, | 4073 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double }, |
3889 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V2DI, | 4074 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVD2X_V2DI, |
3890 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI }, | 4075 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI }, |
3891 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V2DI, | 4076 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVD2X_V2DI, |
4077 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long }, | |
4078 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVD2X_V2DI, RS6000_BTI_void, | |
4079 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long_long }, | |
4080 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVD2X_V2DI, | |
4081 RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | |
4082 ~RS6000_BTI_unsigned_V2DI }, | |
4083 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVD2X_V2DI, | |
4084 RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, | |
4085 ~RS6000_BTI_bool_V2DI }, | |
4086 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SF, | |
4087 RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF }, | |
4088 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SF, | |
4089 RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float }, | |
4090 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SI, | |
4091 RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI }, | |
4092 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SI, | |
4093 RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, | |
4094 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SI, | |
4095 RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V4SI }, | |
4096 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SI, | |
4097 RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, | |
4098 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SI, | |
4099 RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V4SI }, | |
4100 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SI, | |
4101 RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTSI }, | |
4102 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V4SI, | |
4103 RS6000_BTI_void, RS6000_BTI_bool_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, | |
4104 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V8HI, | |
4105 RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI }, | |
4106 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V8HI, | |
4107 RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, | |
4108 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V8HI, | |
4109 RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V8HI }, | |
4110 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V8HI, | |
4111 RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, | |
4112 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V8HI, | |
4113 RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V8HI }, | |
4114 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V8HI, | |
4115 RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTHI }, | |
4116 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V8HI, | |
4117 RS6000_BTI_void, RS6000_BTI_bool_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, | |
4118 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V16QI, | |
4119 RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI }, | |
4120 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V16QI, | |
4121 RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, | |
4122 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V16QI, | |
4123 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V16QI }, | |
4124 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V16QI, | |
4125 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, | |
4126 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V16QI, | |
4127 RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V16QI }, | |
4128 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V16QI, | |
4129 RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTQI }, | |
4130 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V16QI, | |
4131 RS6000_BTI_void, RS6000_BTI_bool_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, | |
4132 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_STXVW4X_V8HI, | |
4133 RS6000_BTI_void, RS6000_BTI_pixel_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_pixel_V8HI }, | |
4134 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V2DF, | |
4135 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, | |
4136 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V2DF, | |
4137 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double }, | |
4138 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V1TI, | |
4139 RS6000_BTI_void, RS6000_BTI_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_INTTI }, | |
4140 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V1TI, | |
4141 RS6000_BTI_void, RS6000_BTI_unsigned_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTTI }, | |
4142 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V2DI, | |
4143 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI }, | |
4144 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V2DI, | |
3892 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, | 4145 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, |
3893 ~RS6000_BTI_long_long }, | 4146 ~RS6000_BTI_long_long }, |
3894 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V2DI, | 4147 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V2DI, |
3895 RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | 4148 RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, |
3896 ~RS6000_BTI_unsigned_V2DI }, | 4149 ~RS6000_BTI_unsigned_V2DI }, |
3897 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V2DI, | 4150 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V2DI, |
3898 RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | 4151 RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, |
3899 ~RS6000_BTI_unsigned_long_long }, | 4152 ~RS6000_BTI_unsigned_long_long }, |
3900 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V4SF, | 4153 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V4SF, |
3901 RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF }, | 4154 RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF }, |
3902 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V4SF, | 4155 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V4SF, |
3903 RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float }, | 4156 RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_float }, |
3904 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V4SI, | 4157 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V4SI, |
3905 RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI }, | 4158 RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_V4SI }, |
3906 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V4SI, | 4159 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V4SI, |
3907 RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, | 4160 RS6000_BTI_void, RS6000_BTI_V4SI, RS6000_BTI_INTSI, ~RS6000_BTI_INTSI }, |
3908 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V4SI, | 4161 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V4SI, |
3909 RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, | 4162 RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, |
3910 ~RS6000_BTI_unsigned_V4SI }, | 4163 ~RS6000_BTI_unsigned_V4SI }, |
3911 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V4SI, | 4164 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V4SI, |
3912 RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, | 4165 RS6000_BTI_void, RS6000_BTI_unsigned_V4SI, RS6000_BTI_INTSI, |
3913 ~RS6000_BTI_UINTSI }, | 4166 ~RS6000_BTI_UINTSI }, |
3914 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V8HI, | 4167 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V8HI, |
3915 RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI }, | 4168 RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_V8HI }, |
3916 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V8HI, | 4169 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V8HI, |
3917 RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, | 4170 RS6000_BTI_void, RS6000_BTI_V8HI, RS6000_BTI_INTSI, ~RS6000_BTI_INTHI }, |
3918 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V8HI, | 4171 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V8HI, |
3919 RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, | 4172 RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, |
3920 ~RS6000_BTI_unsigned_V8HI }, | 4173 ~RS6000_BTI_unsigned_V8HI }, |
3921 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V8HI, | 4174 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V8HI, |
3922 RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, | 4175 RS6000_BTI_void, RS6000_BTI_unsigned_V8HI, RS6000_BTI_INTSI, |
3923 ~RS6000_BTI_UINTHI }, | 4176 ~RS6000_BTI_UINTHI }, |
3924 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V16QI, | 4177 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V16QI, |
3925 RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI }, | 4178 RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_V16QI }, |
3926 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V16QI, | 4179 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V16QI, |
3927 RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, | 4180 RS6000_BTI_void, RS6000_BTI_V16QI, RS6000_BTI_INTSI, ~RS6000_BTI_INTQI }, |
3928 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V16QI, | 4181 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V16QI, |
3929 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, | 4182 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, |
3930 ~RS6000_BTI_unsigned_V16QI }, | 4183 ~RS6000_BTI_unsigned_V16QI }, |
3931 { VSX_BUILTIN_VEC_XST, VSX_BUILTIN_ST_ELEMREV_V16QI, | 4184 { VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_ST_ELEMREV_V16QI, |
3932 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, | 4185 RS6000_BTI_void, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, |
3933 ~RS6000_BTI_UINTQI }, | 4186 ~RS6000_BTI_UINTQI }, |
3934 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_16QI, | 4187 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_16QI, |
3935 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_NOT_OPAQUE }, | 4188 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_INTSI }, |
3936 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_16QI, | 4189 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_16QI, |
3937 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, | 4190 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, |
3938 RS6000_BTI_NOT_OPAQUE }, | 4191 RS6000_BTI_INTSI }, |
3939 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_8HI, | 4192 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_8HI, |
3940 RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_NOT_OPAQUE }, | 4193 RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_INTSI }, |
3941 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_8HI, | 4194 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_8HI, |
3942 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, | 4195 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, |
3943 RS6000_BTI_NOT_OPAQUE }, | 4196 RS6000_BTI_INTSI }, |
3944 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SI, | 4197 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SI, |
3945 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_NOT_OPAQUE }, | 4198 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_INTSI }, |
3946 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SI, | 4199 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SI, |
3947 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, | 4200 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, |
3948 RS6000_BTI_NOT_OPAQUE }, | 4201 RS6000_BTI_INTSI }, |
3949 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DI, | 4202 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DI, |
3950 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_NOT_OPAQUE }, | 4203 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_INTSI }, |
3951 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DI, | 4204 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DI, |
3952 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, | 4205 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, |
3953 RS6000_BTI_NOT_OPAQUE }, | 4206 RS6000_BTI_INTSI }, |
3954 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SF, | 4207 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_4SF, |
3955 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_NOT_OPAQUE }, | 4208 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI }, |
3956 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DF, | 4209 { VSX_BUILTIN_VEC_XXSLDWI, VSX_BUILTIN_XXSLDWI_2DF, |
3957 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_NOT_OPAQUE }, | 4210 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_INTSI }, |
4211 | |
3958 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DF, | 4212 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DF, |
3959 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_NOT_OPAQUE }, | 4213 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_INTSI }, |
3960 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DI, | 4214 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DI, |
3961 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_NOT_OPAQUE }, | 4215 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_INTSI }, |
3962 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DI, | 4216 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_2DI, |
3963 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, | 4217 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, |
3964 RS6000_BTI_NOT_OPAQUE }, | 4218 RS6000_BTI_INTSI }, |
3965 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SF, | 4219 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SF, |
3966 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_NOT_OPAQUE }, | 4220 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI }, |
3967 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SI, | 4221 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SI, |
3968 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_NOT_OPAQUE }, | 4222 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_INTSI }, |
3969 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SI, | 4223 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_4SI, |
3970 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, | 4224 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, |
3971 RS6000_BTI_NOT_OPAQUE }, | 4225 RS6000_BTI_INTSI }, |
3972 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_8HI, | 4226 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_8HI, |
3973 RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_NOT_OPAQUE }, | 4227 RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_INTSI }, |
3974 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_8HI, | 4228 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_8HI, |
3975 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, | 4229 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, |
3976 RS6000_BTI_NOT_OPAQUE }, | 4230 RS6000_BTI_INTSI }, |
3977 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_16QI, | 4231 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_16QI, |
3978 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_NOT_OPAQUE }, | 4232 RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, RS6000_BTI_INTSI }, |
3979 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_16QI, | 4233 { VSX_BUILTIN_VEC_XXPERMDI, VSX_BUILTIN_XXPERMDI_16QI, |
3980 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, | 4234 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, |
3981 RS6000_BTI_NOT_OPAQUE }, | 4235 RS6000_BTI_INTSI }, |
3982 | 4236 |
3983 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DF, | 4237 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DF, |
3984 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, | 4238 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, |
3985 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DF, | 4239 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DF, |
3986 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double, 0 }, | 4240 RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double, 0 }, |
3987 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, | 4241 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, |
3988 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, | 4242 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, |
3989 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, | 4243 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, |
4244 RS6000_BTI_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_INTTI, 0 }, | |
4245 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, | |
4246 RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long, 0 }, | |
4247 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, | |
4248 RS6000_BTI_unsigned_V1TI, RS6000_BTI_INTSI, ~RS6000_BTI_UINTTI, 0 }, | |
4249 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, | |
3990 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | 4250 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, |
3991 ~RS6000_BTI_unsigned_V2DI, 0 }, | 4251 ~RS6000_BTI_unsigned_V2DI, 0 }, |
4252 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, | |
4253 RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_long_long, 0 }, | |
3992 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, | 4254 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVD2X_V2DI, |
3993 RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V2DI, 0 }, | 4255 RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V2DI, 0 }, |
3994 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVW4X_V4SF, | 4256 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVW4X_V4SF, |
3995 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, | 4257 RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, |
3996 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVW4X_V4SF, | 4258 { VSX_BUILTIN_VEC_LD, VSX_BUILTIN_LXVW4X_V4SF, |
4038 | 4300 |
4039 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DF, | 4301 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DF, |
4040 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, | 4302 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, |
4041 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DF, | 4303 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DF, |
4042 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double }, | 4304 RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double }, |
4305 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DI, | |
4306 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTDI, | |
4307 ~RS6000_BTI_long_long }, | |
4308 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DI, | |
4309 RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTDI, | |
4310 ~RS6000_BTI_unsigned_long_long }, | |
4311 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V1TI, | |
4312 RS6000_BTI_void, RS6000_BTI_V1TI, RS6000_BTI_INTDI, ~RS6000_BTI_INTTI }, | |
4313 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V1TI, | |
4314 RS6000_BTI_void, RS6000_BTI_unsigned_V1TI, RS6000_BTI_INTDI, ~RS6000_BTI_UINTTI }, | |
4043 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DI, | 4315 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DI, |
4044 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI }, | 4316 RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI }, |
4045 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DI, | 4317 { VSX_BUILTIN_VEC_ST, VSX_BUILTIN_STXVD2X_V2DI, |
4046 RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, | 4318 RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, |
4047 ~RS6000_BTI_unsigned_V2DI }, | 4319 ~RS6000_BTI_unsigned_V2DI }, |
5171 RS6000_BTI_V4SI, 0 }, | 5443 RS6000_BTI_V4SI, 0 }, |
5172 { P9V_BUILTIN_VEC_CMPNEZ, P9V_BUILTIN_CMPNEZW, | 5444 { P9V_BUILTIN_VEC_CMPNEZ, P9V_BUILTIN_CMPNEZW, |
5173 RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, | 5445 RS6000_BTI_bool_V4SI, RS6000_BTI_unsigned_V4SI, |
5174 RS6000_BTI_unsigned_V4SI, 0 }, | 5446 RS6000_BTI_unsigned_V4SI, 0 }, |
5175 | 5447 |
5176 { P9V_BUILTIN_VEC_VCLZLSBB, P9V_BUILTIN_VCLZLSBB, | 5448 { P9V_BUILTIN_VEC_VCLZLSBB, P9V_BUILTIN_VCLZLSBB_V16QI, |
5177 RS6000_BTI_INTSI, RS6000_BTI_V16QI, 0, 0 }, | 5449 RS6000_BTI_INTSI, RS6000_BTI_V16QI, 0, 0 }, |
5178 { P9V_BUILTIN_VEC_VCLZLSBB, P9V_BUILTIN_VCLZLSBB, | 5450 { P9V_BUILTIN_VEC_VCLZLSBB, P9V_BUILTIN_VCLZLSBB_V16QI, |
5179 RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, 0, 0 }, | 5451 RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, 0, 0 }, |
5180 | 5452 |
5181 { P9V_BUILTIN_VEC_VCTZLSBB, P9V_BUILTIN_VCTZLSBB, | 5453 { P9V_BUILTIN_VEC_VCTZLSBB, P9V_BUILTIN_VCTZLSBB_V16QI, |
5182 RS6000_BTI_INTSI, RS6000_BTI_V16QI, 0, 0 }, | 5454 RS6000_BTI_INTSI, RS6000_BTI_V16QI, 0, 0 }, |
5183 { P9V_BUILTIN_VEC_VCTZLSBB, P9V_BUILTIN_VCTZLSBB, | 5455 { P9V_BUILTIN_VEC_VCTZLSBB, P9V_BUILTIN_VCTZLSBB_V16QI, |
5184 RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, 0, 0 }, | 5456 RS6000_BTI_INTSI, RS6000_BTI_unsigned_V16QI, 0, 0 }, |
5185 | 5457 { P9V_BUILTIN_VEC_VCTZLSBB, P9V_BUILTIN_VCTZLSBB_V8HI, |
5186 { P9V_BUILTIN_VEC_VEXTRACT4B, P9V_BUILTIN_VEXTRACT4B, | 5458 RS6000_BTI_INTSI, RS6000_BTI_V8HI, 0, 0 }, |
5187 RS6000_BTI_INTDI, RS6000_BTI_V16QI, RS6000_BTI_UINTSI, 0 }, | 5459 { P9V_BUILTIN_VEC_VCTZLSBB, P9V_BUILTIN_VCTZLSBB_V4SI, |
5188 { P9V_BUILTIN_VEC_VEXTRACT4B, P9V_BUILTIN_VEXTRACT4B, | 5460 RS6000_BTI_INTSI, RS6000_BTI_V4SI, 0, 0 }, |
5189 RS6000_BTI_INTDI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTSI, 0 }, | 5461 |
5462 { P9V_BUILTIN_VEC_EXTRACT4B, P9V_BUILTIN_EXTRACT4B, | |
5463 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, 0 }, | |
5190 | 5464 |
5191 { P9V_BUILTIN_VEC_VEXTRACT_FP_FROM_SHORTH, P9V_BUILTIN_VEXTRACT_FP_FROM_SHORTH, | 5465 { P9V_BUILTIN_VEC_VEXTRACT_FP_FROM_SHORTH, P9V_BUILTIN_VEXTRACT_FP_FROM_SHORTH, |
5192 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V8HI, 0, 0 }, | 5466 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V8HI, 0, 0 }, |
5193 { P9V_BUILTIN_VEC_VEXTRACT_FP_FROM_SHORTL, P9V_BUILTIN_VEXTRACT_FP_FROM_SHORTL, | 5467 { P9V_BUILTIN_VEC_VEXTRACT_FP_FROM_SHORTL, P9V_BUILTIN_VEXTRACT_FP_FROM_SHORTL, |
5194 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V8HI, 0, 0 }, | 5468 RS6000_BTI_V4SF, RS6000_BTI_unsigned_V8HI, 0, 0 }, |
5244 { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD, | 5518 { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD, |
5245 RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, | 5519 RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, |
5246 { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD, | 5520 { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD, |
5247 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0, 0 }, | 5521 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0, 0 }, |
5248 | 5522 |
5249 { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B, | 5523 { P9V_BUILTIN_VEC_INSERT4B, P9V_BUILTIN_INSERT4B, |
5250 RS6000_BTI_V16QI, RS6000_BTI_V4SI, | 5524 RS6000_BTI_unsigned_V16QI, RS6000_BTI_V4SI, |
5251 RS6000_BTI_V16QI, RS6000_BTI_UINTSI }, | 5525 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI }, |
5252 { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B, | 5526 { P9V_BUILTIN_VEC_INSERT4B, P9V_BUILTIN_INSERT4B, |
5253 RS6000_BTI_V16QI, RS6000_BTI_unsigned_V4SI, | |
5254 RS6000_BTI_V16QI, RS6000_BTI_UINTSI }, | |
5255 { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B, | |
5256 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, | 5527 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI, |
5257 RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTSI }, | 5528 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI }, |
5258 { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, | |
5259 RS6000_BTI_V16QI, RS6000_BTI_INTDI, | |
5260 RS6000_BTI_V16QI, RS6000_BTI_UINTDI }, | |
5261 { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, | |
5262 RS6000_BTI_V16QI, RS6000_BTI_UINTDI, | |
5263 RS6000_BTI_V16QI, RS6000_BTI_UINTDI }, | |
5264 { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, | |
5265 RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTDI, | |
5266 RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI }, | |
5267 { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI, | |
5268 RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI, | |
5269 RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI }, | |
5270 | 5529 |
5271 { P8V_BUILTIN_VEC_VADDECUQ, P8V_BUILTIN_VADDECUQ, | 5530 { P8V_BUILTIN_VEC_VADDECUQ, P8V_BUILTIN_VADDECUQ, |
5272 RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI }, | 5531 RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI }, |
5273 { P8V_BUILTIN_VEC_VADDECUQ, P8V_BUILTIN_VADDECUQ, | 5532 { P8V_BUILTIN_VEC_VADDECUQ, P8V_BUILTIN_VADDECUQ, |
5274 RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI, | 5533 RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI, |
5324 RS6000_BTI_bool_V2DI, 0 }, | 5583 RS6000_BTI_bool_V2DI, 0 }, |
5325 { P8V_BUILTIN_VEC_VMAXUD, P8V_BUILTIN_VMAXUD, | 5584 { P8V_BUILTIN_VEC_VMAXUD, P8V_BUILTIN_VMAXUD, |
5326 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, | 5585 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, |
5327 RS6000_BTI_unsigned_V2DI, 0 }, | 5586 RS6000_BTI_unsigned_V2DI, 0 }, |
5328 | 5587 |
5588 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V2DI, | |
5589 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, | |
5590 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V2DI, | |
5591 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, | |
5592 RS6000_BTI_unsigned_V2DI, 0 }, | |
5593 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V2DI, | |
5594 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 }, | |
5595 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V4SF, | |
5596 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, | |
5597 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V2DF, | |
5598 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, | |
5329 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V4SI, | 5599 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V4SI, |
5330 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 5600 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
5331 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V4SI, | 5601 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V4SI, |
5332 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, | 5602 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, |
5333 RS6000_BTI_unsigned_V4SI, 0 }, | 5603 RS6000_BTI_unsigned_V4SI, 0 }, |
5334 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V4SI, | 5604 { P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VMRGEW_V4SI, |
5335 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, | 5605 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, |
5336 | 5606 |
5337 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW, | 5607 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW_V4SI, |
5338 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, | 5608 RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 }, |
5339 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW, | 5609 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW_V4SI, |
5340 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, | 5610 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, |
5341 RS6000_BTI_unsigned_V4SI, 0 }, | 5611 RS6000_BTI_unsigned_V4SI, 0 }, |
5342 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW, | 5612 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW_V4SI, |
5343 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, | 5613 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, |
5614 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW_V2DI, | |
5615 RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 }, | |
5616 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW_V2DI, | |
5617 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, | |
5618 RS6000_BTI_unsigned_V2DI, 0 }, | |
5619 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW_V2DI, | |
5620 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 }, | |
5621 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW_V2DF, | |
5622 RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, | |
5623 { P8V_BUILTIN_VEC_VMRGOW, P8V_BUILTIN_VMRGOW_V4SF, | |
5624 RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, | |
5344 | 5625 |
5345 { P8V_BUILTIN_VEC_VPMSUM, P8V_BUILTIN_VPMSUMB, | 5626 { P8V_BUILTIN_VEC_VPMSUM, P8V_BUILTIN_VPMSUMB, |
5346 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, | 5627 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V16QI, |
5347 RS6000_BTI_unsigned_V16QI, 0 }, | 5628 RS6000_BTI_unsigned_V16QI, 0 }, |
5348 { P8V_BUILTIN_VEC_VPMSUM, P8V_BUILTIN_VPMSUMH, | 5629 { P8V_BUILTIN_VEC_VPMSUM, P8V_BUILTIN_VPMSUMH, |
5549 RS6000_BTI_unsigned_V16QI, 0 }, | 5830 RS6000_BTI_unsigned_V16QI, 0 }, |
5550 { P9V_BUILTIN_VEC_VSRV, P9V_BUILTIN_VSRV, | 5831 { P9V_BUILTIN_VEC_VSRV, P9V_BUILTIN_VSRV, |
5551 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, | 5832 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, |
5552 RS6000_BTI_unsigned_V16QI, 0 }, | 5833 RS6000_BTI_unsigned_V16QI, 0 }, |
5553 | 5834 |
5554 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRQ_V16QI, | 5835 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V1TI, |
5836 RS6000_BTI_V1TI, RS6000_BTI_V1TI, 0, 0 }, | |
5837 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V1TI, | |
5838 RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI, 0, 0 }, | |
5839 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V2DI, | |
5840 RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0, 0 }, | |
5841 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V2DI, | |
5842 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0, 0 }, | |
5843 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V2DI, | |
5844 RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0, 0 }, | |
5845 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V4SI, | |
5846 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0, 0 }, | |
5847 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V4SI, | |
5848 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0, 0 }, | |
5849 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V4SI, | |
5850 RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0, 0 }, | |
5851 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V8HI, | |
5852 RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0, 0 }, | |
5853 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V8HI, | |
5854 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0, 0 }, | |
5855 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V8HI, | |
5856 RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0, 0 }, | |
5857 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V16QI, | |
5858 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0, 0 }, | |
5859 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V16QI, | |
5555 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0, 0 }, | 5860 RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0, 0 }, |
5556 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRQ_V16QI, | 5861 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V16QI, |
5557 RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, 0, 0 }, | |
5558 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRQ_V16QI, | |
5559 RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, | 5862 RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, |
5560 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRQ_V1TI, | 5863 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V2DF, |
5561 RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI, 0, 0 }, | |
5562 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRQ_V1TI, | |
5563 RS6000_BTI_V1TI, RS6000_BTI_V1TI, 0, 0 }, | |
5564 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRD_V2DI, | |
5565 RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0, 0 }, | |
5566 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRD_V2DI, | |
5567 RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0, 0 }, | |
5568 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRD_V2DF, | |
5569 RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 }, | 5864 RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0, 0 }, |
5570 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRW_V4SI, | 5865 { P8V_BUILTIN_VEC_REVB, P8V_BUILTIN_REVB_V4SF, |
5571 RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0, 0 }, | |
5572 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRW_V4SI, | |
5573 RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0, 0 }, | |
5574 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRW_V4SI, | |
5575 RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0, 0 }, | |
5576 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRW_V4SF, | |
5577 RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, | 5866 RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0, 0 }, |
5578 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRH_V8HI, | |
5579 RS6000_BTI_bool_V8HI, RS6000_BTI_bool_V8HI, 0, 0 }, | |
5580 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRH_V8HI, | |
5581 RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, 0, 0 }, | |
5582 { P9V_BUILTIN_VEC_REVB, P9V_BUILTIN_XXBRH_V8HI, | |
5583 RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0, 0 }, | |
5584 | 5867 |
5585 { ALTIVEC_BUILTIN_VEC_VREVE, ALTIVEC_BUILTIN_VREVE_V2DI, | 5868 { ALTIVEC_BUILTIN_VEC_VREVE, ALTIVEC_BUILTIN_VREVE_V2DI, |
5586 RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0, 0 }, | 5869 RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0, 0 }, |
5587 { ALTIVEC_BUILTIN_VEC_VREVE, ALTIVEC_BUILTIN_VREVE_V4SI, | 5870 { ALTIVEC_BUILTIN_VEC_VREVE, ALTIVEC_BUILTIN_VREVE_V4SI, |
5588 RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0, 0 }, | 5871 RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0, 0 }, |
5617 RS6000_BTI_V2DI, RS6000_BTI_V2DF, 0, 0 }, | 5900 RS6000_BTI_V2DI, RS6000_BTI_V2DF, 0, 0 }, |
5618 { VSX_BUILTIN_VEC_VSIGNEDE, VSX_BUILTIN_VEC_VSIGNEDE_V2DF, | 5901 { VSX_BUILTIN_VEC_VSIGNEDE, VSX_BUILTIN_VEC_VSIGNEDE_V2DF, |
5619 RS6000_BTI_V4SI, RS6000_BTI_V2DF, 0, 0 }, | 5902 RS6000_BTI_V4SI, RS6000_BTI_V2DF, 0, 0 }, |
5620 { VSX_BUILTIN_VEC_VSIGNEDO, VSX_BUILTIN_VEC_VSIGNEDO_V2DF, | 5903 { VSX_BUILTIN_VEC_VSIGNEDO, VSX_BUILTIN_VEC_VSIGNEDO_V2DF, |
5621 RS6000_BTI_V4SI, RS6000_BTI_V2DF, 0, 0 }, | 5904 RS6000_BTI_V4SI, RS6000_BTI_V2DF, 0, 0 }, |
5622 { VSX_BUILTIN_VEC_VSIGNED2, VSX_BUILTIN_VEC_VSIGNED2_V2DF, | 5905 { P8V_BUILTIN_VEC_VSIGNED2, P8V_BUILTIN_VEC_VSIGNED2_V2DF, |
5623 RS6000_BTI_V4SI, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, | 5906 RS6000_BTI_V4SI, RS6000_BTI_V2DF, RS6000_BTI_V2DF, 0 }, |
5624 | 5907 |
5625 { VSX_BUILTIN_VEC_VUNSIGNED, VSX_BUILTIN_VEC_VUNSIGNED_V4SF, | 5908 { VSX_BUILTIN_VEC_VUNSIGNED, VSX_BUILTIN_VEC_VUNSIGNED_V4SF, |
5626 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 }, | 5909 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 }, |
5627 { VSX_BUILTIN_VEC_VUNSIGNED, VSX_BUILTIN_VEC_VUNSIGNED_V2DF, | 5910 { VSX_BUILTIN_VEC_VUNSIGNED, VSX_BUILTIN_VEC_VUNSIGNED_V2DF, |
5628 RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 }, | 5911 RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 }, |
5629 { VSX_BUILTIN_VEC_VUNSIGNEDE, VSX_BUILTIN_VEC_VUNSIGNEDE_V2DF, | 5912 { VSX_BUILTIN_VEC_VUNSIGNEDE, VSX_BUILTIN_VEC_VUNSIGNEDE_V2DF, |
5630 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DF, 0, 0 }, | 5913 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DF, 0, 0 }, |
5631 { VSX_BUILTIN_VEC_VUNSIGNEDO, VSX_BUILTIN_VEC_VUNSIGNEDO_V2DF, | 5914 { VSX_BUILTIN_VEC_VUNSIGNEDO, VSX_BUILTIN_VEC_VUNSIGNEDO_V2DF, |
5632 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DF, 0, 0 }, | 5915 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DF, 0, 0 }, |
5633 { VSX_BUILTIN_VEC_VUNSIGNED2, VSX_BUILTIN_VEC_VUNSIGNED2_V2DF, | 5916 { P8V_BUILTIN_VEC_VUNSIGNED2, P8V_BUILTIN_VEC_VUNSIGNED2_V2DF, |
5634 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DF, | 5917 RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DF, |
5635 RS6000_BTI_V2DF, 0 }, | 5918 RS6000_BTI_V2DF, 0 }, |
5636 | 5919 |
5637 /* Crypto builtins. */ | 5920 /* Crypto builtins. */ |
5638 { CRYPTO_BUILTIN_VPERMXOR, CRYPTO_BUILTIN_VPERMXOR_V16QI, | 5921 { CRYPTO_BUILTIN_VPERMXOR, CRYPTO_BUILTIN_VPERMXOR_V16QI, |
5684 tree t; | 5967 tree t; |
5685 t = rs6000_builtin_types[id < 0 ? ~id : id]; | 5968 t = rs6000_builtin_types[id < 0 ? ~id : id]; |
5686 return id < 0 ? build_pointer_type (t) : t; | 5969 return id < 0 ? build_pointer_type (t) : t; |
5687 } | 5970 } |
5688 | 5971 |
5689 /* Check whether the type of an argument, T, is compatible with a | 5972 /* Check whether the type of an argument, T, is compatible with a type ID |
5690 type ID stored into a struct altivec_builtin_types. Integer | 5973 stored into a struct altivec_builtin_types. Integer types are considered |
5691 types are considered compatible; otherwise, the language hook | 5974 compatible; otherwise, the language hook lang_hooks.types_compatible_p makes |
5692 lang_hooks.types_compatible_p makes the decision. */ | 5975 the decision. Also allow long double and _Float128 to be compatible if |
5693 | 5976 -mabi=ieeelongdouble. */ |
5977 | |
5978 static inline bool | |
5979 is_float128_p (tree t) | |
5980 { | |
5981 return (t == float128_type_node | |
5982 || (TARGET_IEEEQUAD | |
5983 && TARGET_LONG_DOUBLE_128 | |
5984 && t == long_double_type_node)); | |
5985 } | |
5986 | |
5694 static inline bool | 5987 static inline bool |
5695 rs6000_builtin_type_compatible (tree t, int id) | 5988 rs6000_builtin_type_compatible (tree t, int id) |
5696 { | 5989 { |
5697 tree builtin_type; | 5990 tree builtin_type; |
5698 builtin_type = rs6000_builtin_type (id); | 5991 builtin_type = rs6000_builtin_type (id); |
5699 if (t == error_mark_node) | 5992 if (t == error_mark_node) |
5700 return false; | 5993 return false; |
5701 if (INTEGRAL_TYPE_P (t) && INTEGRAL_TYPE_P (builtin_type)) | 5994 if (INTEGRAL_TYPE_P (t) && INTEGRAL_TYPE_P (builtin_type)) |
5995 return true; | |
5996 else if (TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128 | |
5997 && is_float128_p (t) && is_float128_p (builtin_type)) | |
5702 return true; | 5998 return true; |
5703 else | 5999 else |
5704 return lang_hooks.types_compatible_p (t, builtin_type); | 6000 return lang_hooks.types_compatible_p (t, builtin_type); |
5705 } | 6001 } |
5706 | 6002 |
5812 if (TARGET_DEBUG_BUILTIN) | 6108 if (TARGET_DEBUG_BUILTIN) |
5813 fprintf (stderr, "altivec_resolve_overloaded_builtin, code = %4d, %s\n", | 6109 fprintf (stderr, "altivec_resolve_overloaded_builtin, code = %4d, %s\n", |
5814 (int)fcode, IDENTIFIER_POINTER (DECL_NAME (fndecl))); | 6110 (int)fcode, IDENTIFIER_POINTER (DECL_NAME (fndecl))); |
5815 | 6111 |
5816 /* vec_lvsl and vec_lvsr are deprecated for use with LE element order. */ | 6112 /* vec_lvsl and vec_lvsr are deprecated for use with LE element order. */ |
5817 if (fcode == ALTIVEC_BUILTIN_VEC_LVSL && !VECTOR_ELT_ORDER_BIG) | 6113 if (fcode == ALTIVEC_BUILTIN_VEC_LVSL && !BYTES_BIG_ENDIAN) |
5818 warning (OPT_Wdeprecated, | 6114 warning (OPT_Wdeprecated, |
5819 "vec_lvsl is deprecated for little endian; use " | 6115 "vec_lvsl is deprecated for little endian; use " |
5820 "assignment for unaligned loads and stores"); | 6116 "assignment for unaligned loads and stores"); |
5821 else if (fcode == ALTIVEC_BUILTIN_VEC_LVSR && !VECTOR_ELT_ORDER_BIG) | 6117 else if (fcode == ALTIVEC_BUILTIN_VEC_LVSR && !BYTES_BIG_ENDIAN) |
5822 warning (OPT_Wdeprecated, | 6118 warning (OPT_Wdeprecated, |
5823 "vec_lvsr is deprecated for little endian; use " | 6119 "vec_lvsr is deprecated for little endian; use " |
5824 "assignment for unaligned loads and stores"); | 6120 "assignment for unaligned loads and stores"); |
5825 | 6121 |
5826 if (fcode == ALTIVEC_BUILTIN_VEC_MUL) | 6122 if (fcode == ALTIVEC_BUILTIN_VEC_MUL) |
6228 if (TREE_CODE (arg1_type) != VECTOR_TYPE) | 6524 if (TREE_CODE (arg1_type) != VECTOR_TYPE) |
6229 goto bad; | 6525 goto bad; |
6230 if (!INTEGRAL_TYPE_P (TREE_TYPE (arg2))) | 6526 if (!INTEGRAL_TYPE_P (TREE_TYPE (arg2))) |
6231 goto bad; | 6527 goto bad; |
6232 | 6528 |
6233 /* If we are targeting little-endian, but -maltivec=be has been | |
6234 specified to override the element order, adjust the element | |
6235 number accordingly. */ | |
6236 if (!BYTES_BIG_ENDIAN && rs6000_altivec_element_order == 2) | |
6237 { | |
6238 unsigned int last_elem = TYPE_VECTOR_SUBPARTS (arg1_type) - 1; | |
6239 arg2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (arg2), | |
6240 build_int_cstu (TREE_TYPE (arg2), last_elem), | |
6241 arg2); | |
6242 } | |
6243 | |
6244 /* See if we can optimize vec_extracts with the current VSX instruction | 6529 /* See if we can optimize vec_extracts with the current VSX instruction |
6245 set. */ | 6530 set. */ |
6246 mode = TYPE_MODE (arg1_type); | 6531 mode = TYPE_MODE (arg1_type); |
6247 if (VECTOR_MEM_VSX_P (mode)) | 6532 if (VECTOR_MEM_VSX_P (mode)) |
6248 | 6533 |
6249 { | 6534 { |
6250 tree call = NULL_TREE; | 6535 tree call = NULL_TREE; |
6251 int nunits = GET_MODE_NUNITS (mode); | 6536 int nunits = GET_MODE_NUNITS (mode); |
6537 | |
6538 arg2 = fold_for_warn (arg2); | |
6252 | 6539 |
6253 /* If the second argument is an integer constant, if the value is in | 6540 /* If the second argument is an integer constant, if the value is in |
6254 the expected range, generate the built-in code if we can. We need | 6541 the expected range, generate the built-in code if we can. We need |
6255 64-bit and direct move to extract the small integer vectors. */ | 6542 64-bit and direct move to extract the small integer vectors. */ |
6256 if (TREE_CODE (arg2) == INTEGER_CST | 6543 if (TREE_CODE (arg2) == INTEGER_CST |
6366 stmt = build_unary_op (loc, ADDR_EXPR, stmt, 0); | 6653 stmt = build_unary_op (loc, ADDR_EXPR, stmt, 0); |
6367 stmt = convert (innerptrtype, stmt); | 6654 stmt = convert (innerptrtype, stmt); |
6368 stmt = build_binary_op (loc, PLUS_EXPR, stmt, arg2, 1); | 6655 stmt = build_binary_op (loc, PLUS_EXPR, stmt, arg2, 1); |
6369 stmt = build_indirect_ref (loc, stmt, RO_NULL); | 6656 stmt = build_indirect_ref (loc, stmt, RO_NULL); |
6370 | 6657 |
6658 /* PR83660: We mark this as having side effects so that | |
6659 downstream in fold_build_cleanup_point_expr () it will get a | |
6660 CLEANUP_POINT_EXPR. If it does not we can run into an ICE | |
6661 later in gimplify_cleanup_point_expr (). Potentially this | |
6662 causes missed optimization because the actually is no side | |
6663 effect. */ | |
6664 if (c_dialect_cxx ()) | |
6665 TREE_SIDE_EFFECTS (stmt) = 1; | |
6666 | |
6371 return stmt; | 6667 return stmt; |
6372 } | 6668 } |
6373 | 6669 |
6374 /* For now use pointer tricks to do the insertion, unless we are on VSX | 6670 /* For now use pointer tricks to do the insertion, unless we are on VSX |
6375 inserting a double to a constant offset.. */ | 6671 inserting a double to a constant offset.. */ |
6392 } | 6688 } |
6393 | 6689 |
6394 arg0 = (*arglist)[0]; | 6690 arg0 = (*arglist)[0]; |
6395 arg1 = (*arglist)[1]; | 6691 arg1 = (*arglist)[1]; |
6396 arg1_type = TREE_TYPE (arg1); | 6692 arg1_type = TREE_TYPE (arg1); |
6397 arg2 = (*arglist)[2]; | 6693 arg2 = fold_for_warn ((*arglist)[2]); |
6398 | 6694 |
6399 if (TREE_CODE (arg1_type) != VECTOR_TYPE) | 6695 if (TREE_CODE (arg1_type) != VECTOR_TYPE) |
6400 goto bad; | 6696 goto bad; |
6401 if (!INTEGRAL_TYPE_P (TREE_TYPE (arg2))) | 6697 if (!INTEGRAL_TYPE_P (TREE_TYPE (arg2))) |
6402 goto bad; | 6698 goto bad; |
6403 | |
6404 /* If we are targeting little-endian, but -maltivec=be has been | |
6405 specified to override the element order, adjust the element | |
6406 number accordingly. */ | |
6407 if (!BYTES_BIG_ENDIAN && rs6000_altivec_element_order == 2) | |
6408 { | |
6409 unsigned int last_elem = TYPE_VECTOR_SUBPARTS (arg1_type) - 1; | |
6410 arg2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (arg2), | |
6411 build_int_cstu (TREE_TYPE (arg2), last_elem), | |
6412 arg2); | |
6413 } | |
6414 | 6699 |
6415 /* If we can use the VSX xxpermdi instruction, use that for insert. */ | 6700 /* If we can use the VSX xxpermdi instruction, use that for insert. */ |
6416 mode = TYPE_MODE (arg1_type); | 6701 mode = TYPE_MODE (arg1_type); |
6417 if ((mode == V2DFmode || mode == V2DImode) && VECTOR_UNIT_VSX_P (mode) | 6702 if ((mode == V2DFmode || mode == V2DImode) && VECTOR_UNIT_VSX_P (mode) |
6418 && TREE_CODE (arg2) == INTEGER_CST | 6703 && TREE_CODE (arg2) == INTEGER_CST |
6546 return build_int_cst (NULL_TREE, TYPE_VECTOR_SUBPARTS (types[0])); | 6831 return build_int_cst (NULL_TREE, TYPE_VECTOR_SUBPARTS (types[0])); |
6547 } | 6832 } |
6548 | 6833 |
6549 { | 6834 { |
6550 bool unsupported_builtin = false; | 6835 bool unsupported_builtin = false; |
6836 enum rs6000_builtins overloaded_code; | |
6837 tree result = NULL; | |
6551 for (desc = altivec_overloaded_builtins; | 6838 for (desc = altivec_overloaded_builtins; |
6552 desc->code && desc->code != fcode; desc++) | 6839 desc->code && desc->code != fcode; desc++) |
6553 continue; | 6840 continue; |
6554 | 6841 |
6555 /* Need to special case __builtin_cmp because the overloaded forms | 6842 /* Need to special case __builtin_cmp because the overloaded forms |
6558 allow the respective argument types to be implicitly coerced into | 6845 allow the respective argument types to be implicitly coerced into |
6559 each other, the default handling does not provide adequate | 6846 each other, the default handling does not provide adequate |
6560 discrimination between the desired forms of the function. */ | 6847 discrimination between the desired forms of the function. */ |
6561 if (fcode == P6_OV_BUILTIN_CMPB) | 6848 if (fcode == P6_OV_BUILTIN_CMPB) |
6562 { | 6849 { |
6563 int overloaded_code; | |
6564 machine_mode arg1_mode = TYPE_MODE (types[0]); | 6850 machine_mode arg1_mode = TYPE_MODE (types[0]); |
6565 machine_mode arg2_mode = TYPE_MODE (types[1]); | 6851 machine_mode arg2_mode = TYPE_MODE (types[1]); |
6566 | 6852 |
6567 if (nargs != 2) | 6853 if (nargs != 2) |
6568 { | 6854 { |
6593 if (desc->code && (desc->code == fcode) | 6879 if (desc->code && (desc->code == fcode) |
6594 && rs6000_builtin_type_compatible (types[0], desc->op1) | 6880 && rs6000_builtin_type_compatible (types[0], desc->op1) |
6595 && rs6000_builtin_type_compatible (types[1], desc->op2)) | 6881 && rs6000_builtin_type_compatible (types[1], desc->op2)) |
6596 { | 6882 { |
6597 if (rs6000_builtin_decls[desc->overloaded_code] != NULL_TREE) | 6883 if (rs6000_builtin_decls[desc->overloaded_code] != NULL_TREE) |
6598 return altivec_build_resolved_builtin (args, n, desc); | 6884 { |
6885 result = altivec_build_resolved_builtin (args, n, desc); | |
6886 /* overloaded_code is set above */ | |
6887 if (!rs6000_builtin_is_supported_p (overloaded_code)) | |
6888 unsupported_builtin = true; | |
6889 else | |
6890 return result; | |
6891 } | |
6599 else | 6892 else |
6600 unsupported_builtin = true; | 6893 unsupported_builtin = true; |
6601 } | 6894 } |
6602 } | 6895 } |
6603 else if (fcode == P9V_BUILTIN_VEC_VSIEDP) | 6896 else if (fcode == P9V_BUILTIN_VEC_VSIEDP) |
6604 { | 6897 { |
6605 int overloaded_code; | |
6606 machine_mode arg1_mode = TYPE_MODE (types[0]); | 6898 machine_mode arg1_mode = TYPE_MODE (types[0]); |
6607 | 6899 |
6608 if (nargs != 2) | 6900 if (nargs != 2) |
6609 { | 6901 { |
6610 error ("builtin %qs only accepts 2 arguments", | 6902 error ("builtin %qs only accepts 2 arguments", |
6635 overloaded_code = P9V_BUILTIN_VSIEDP; | 6927 overloaded_code = P9V_BUILTIN_VSIEDP; |
6636 } | 6928 } |
6637 while (desc->code && desc->code == fcode | 6929 while (desc->code && desc->code == fcode |
6638 && desc->overloaded_code != overloaded_code) | 6930 && desc->overloaded_code != overloaded_code) |
6639 desc++; | 6931 desc++; |
6932 | |
6640 if (desc->code && (desc->code == fcode) | 6933 if (desc->code && (desc->code == fcode) |
6641 && rs6000_builtin_type_compatible (types[0], desc->op1) | 6934 && rs6000_builtin_type_compatible (types[0], desc->op1) |
6642 && rs6000_builtin_type_compatible (types[1], desc->op2)) | 6935 && rs6000_builtin_type_compatible (types[1], desc->op2)) |
6643 { | 6936 { |
6644 if (rs6000_builtin_decls[desc->overloaded_code] != NULL_TREE) | 6937 if (rs6000_builtin_decls[desc->overloaded_code] != NULL_TREE) |
6645 return altivec_build_resolved_builtin (args, n, desc); | 6938 { |
6939 result = altivec_build_resolved_builtin (args, n, desc); | |
6940 /* overloaded_code is set above. */ | |
6941 if (!rs6000_builtin_is_supported_p (overloaded_code)) | |
6942 unsupported_builtin = true; | |
6943 else | |
6944 return result; | |
6945 } | |
6646 else | 6946 else |
6647 unsupported_builtin = true; | 6947 unsupported_builtin = true; |
6648 } | 6948 } |
6649 } | 6949 } |
6650 else | 6950 else |
6659 || rs6000_builtin_type_compatible (types[1], desc->op2)) | 6959 || rs6000_builtin_type_compatible (types[1], desc->op2)) |
6660 && (desc->op3 == RS6000_BTI_NOT_OPAQUE | 6960 && (desc->op3 == RS6000_BTI_NOT_OPAQUE |
6661 || rs6000_builtin_type_compatible (types[2], desc->op3))) | 6961 || rs6000_builtin_type_compatible (types[2], desc->op3))) |
6662 { | 6962 { |
6663 if (rs6000_builtin_decls[desc->overloaded_code] != NULL_TREE) | 6963 if (rs6000_builtin_decls[desc->overloaded_code] != NULL_TREE) |
6664 return altivec_build_resolved_builtin (args, n, desc); | 6964 { |
6965 result = altivec_build_resolved_builtin (args, n, desc); | |
6966 if (!rs6000_builtin_is_supported_p (desc->overloaded_code)) | |
6967 { | |
6968 /* Allow loop to continue in case a different | |
6969 definition is supported. */ | |
6970 overloaded_code = desc->overloaded_code; | |
6971 unsupported_builtin = true; | |
6972 } | |
6973 else | |
6974 return result; | |
6975 } | |
6665 else | 6976 else |
6666 unsupported_builtin = true; | 6977 unsupported_builtin = true; |
6667 } | 6978 } |
6668 } | 6979 } |
6669 } | 6980 } |
6670 | 6981 |
6671 if (unsupported_builtin) | 6982 if (unsupported_builtin) |
6672 { | 6983 { |
6673 const char *name = rs6000_overloaded_builtin_name (fcode); | 6984 const char *name = rs6000_overloaded_builtin_name (fcode); |
6674 error ("builtin function %qs not supported in this compiler " | 6985 if (result != NULL) |
6675 "configuration", name); | 6986 { |
6676 return error_mark_node; | 6987 const char *internal_name |
6988 = rs6000_overloaded_builtin_name (overloaded_code); | |
6989 /* An error message making reference to the name of the | |
6990 non-overloaded function has already been issued. Add | |
6991 clarification of the previous message. */ | |
6992 rich_location richloc (line_table, input_location); | |
6993 inform (&richloc, "builtin %qs requires builtin %qs", | |
6994 name, internal_name); | |
6995 } | |
6996 else | |
6997 error ("builtin function %qs not supported in this compiler " | |
6998 "configuration", name); | |
6999 /* If an error-representing result tree was returned from | |
7000 altivec_build_resolved_builtin above, use it. */ | |
7001 return (result != NULL) ? result : error_mark_node; | |
6677 } | 7002 } |
6678 } | 7003 } |
6679 bad: | 7004 bad: |
6680 { | 7005 { |
6681 const char *name = rs6000_overloaded_builtin_name (fcode); | 7006 const char *name = rs6000_overloaded_builtin_name (fcode); |