Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/rs6000/mmintrin.h @ 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 /* Copyright (C) 2002-2017 Free Software Foundation, Inc. | 1 /* Copyright (C) 2002-2018 Free Software Foundation, Inc. |
2 | 2 |
3 This file is part of GCC. | 3 This file is part of GCC. |
4 | 4 |
5 GCC is free software; you can redistribute it and/or modify | 5 GCC is free software; you can redistribute it and/or modify |
6 it under the terms of the GNU General Public License as published by | 6 it under the terms of the GNU General Public License as published by |
47 | 47 |
48 Most MMX intrinsic operations can be performed efficiently as | 48 Most MMX intrinsic operations can be performed efficiently as |
49 C language 64-bit scalar operation or optimized to use the newer | 49 C language 64-bit scalar operation or optimized to use the newer |
50 128-bit SSE/Altivec operations. We recomend this for new | 50 128-bit SSE/Altivec operations. We recomend this for new |
51 applications. */ | 51 applications. */ |
52 #warning "Please read comment above. Use -DNO_WARN_X86_INTRINSICS to disable this warning." | 52 #error "Please read comment above. Use -DNO_WARN_X86_INTRINSICS to disable this error." |
53 #endif | 53 #endif |
54 | 54 |
55 #ifndef _MMINTRIN_H_INCLUDED | 55 #ifndef _MMINTRIN_H_INCLUDED |
56 #define _MMINTRIN_H_INCLUDED | 56 #define _MMINTRIN_H_INCLUDED |
57 | 57 |
234 __vector unsigned char a, b, c; | 234 __vector unsigned char a, b, c; |
235 | 235 |
236 a = (__vector unsigned char)vec_splats (__m1); | 236 a = (__vector unsigned char)vec_splats (__m1); |
237 b = (__vector unsigned char)vec_splats (__m2); | 237 b = (__vector unsigned char)vec_splats (__m2); |
238 c = vec_mergel (a, b); | 238 c = vec_mergel (a, b); |
239 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 239 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
240 #else | 240 #else |
241 __m64_union m1, m2, res; | 241 __m64_union m1, m2, res; |
242 | 242 |
243 m1.as_m64 = __m1; | 243 m1.as_m64 = __m1; |
244 m2.as_m64 = __m2; | 244 m2.as_m64 = __m2; |
315 __vector unsigned char a, b, c; | 315 __vector unsigned char a, b, c; |
316 | 316 |
317 a = (__vector unsigned char)vec_splats (__m1); | 317 a = (__vector unsigned char)vec_splats (__m1); |
318 b = (__vector unsigned char)vec_splats (__m2); | 318 b = (__vector unsigned char)vec_splats (__m2); |
319 c = vec_mergel (a, b); | 319 c = vec_mergel (a, b); |
320 return (__builtin_unpack_vector_int128 ((vector __int128_t)c, 1)); | 320 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 1)); |
321 #else | 321 #else |
322 __m64_union m1, m2, res; | 322 __m64_union m1, m2, res; |
323 | 323 |
324 m1.as_m64 = __m1; | 324 m1.as_m64 = __m1; |
325 m2.as_m64 = __m2; | 325 m2.as_m64 = __m2; |
396 __vector signed char a, b, c; | 396 __vector signed char a, b, c; |
397 | 397 |
398 a = (__vector signed char)vec_splats (__m1); | 398 a = (__vector signed char)vec_splats (__m1); |
399 b = (__vector signed char)vec_splats (__m2); | 399 b = (__vector signed char)vec_splats (__m2); |
400 c = vec_add (a, b); | 400 c = vec_add (a, b); |
401 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 401 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
402 #else | 402 #else |
403 __m64_union m1, m2, res; | 403 __m64_union m1, m2, res; |
404 | 404 |
405 m1.as_m64 = __m1; | 405 m1.as_m64 = __m1; |
406 m2.as_m64 = __m2; | 406 m2.as_m64 = __m2; |
432 __vector signed short a, b, c; | 432 __vector signed short a, b, c; |
433 | 433 |
434 a = (__vector signed short)vec_splats (__m1); | 434 a = (__vector signed short)vec_splats (__m1); |
435 b = (__vector signed short)vec_splats (__m2); | 435 b = (__vector signed short)vec_splats (__m2); |
436 c = vec_add (a, b); | 436 c = vec_add (a, b); |
437 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 437 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
438 #else | 438 #else |
439 __m64_union m1, m2, res; | 439 __m64_union m1, m2, res; |
440 | 440 |
441 m1.as_m64 = __m1; | 441 m1.as_m64 = __m1; |
442 m2.as_m64 = __m2; | 442 m2.as_m64 = __m2; |
461 _mm_add_pi32 (__m64 __m1, __m64 __m2) | 461 _mm_add_pi32 (__m64 __m1, __m64 __m2) |
462 { | 462 { |
463 #if _ARCH_PWR9 | 463 #if _ARCH_PWR9 |
464 __vector signed int a, b, c; | 464 __vector signed int a, b, c; |
465 | 465 |
466 a = (__vector signed int)vec_splats (__m1, __m1); | 466 a = (__vector signed int)vec_splats (__m1); |
467 b = (__vector signed int)vec_splats (__m2, __m2); | 467 b = (__vector signed int)vec_splats (__m2); |
468 c = vec_add (a, b); | 468 c = vec_add (a, b); |
469 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 469 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
470 #else | 470 #else |
471 __m64_union m1, m2, res; | 471 __m64_union m1, m2, res; |
472 | 472 |
473 m1.as_m64 = __m1; | 473 m1.as_m64 = __m1; |
474 m2.as_m64 = __m2; | 474 m2.as_m64 = __m2; |
494 __vector signed char a, b, c; | 494 __vector signed char a, b, c; |
495 | 495 |
496 a = (__vector signed char)vec_splats (__m1); | 496 a = (__vector signed char)vec_splats (__m1); |
497 b = (__vector signed char)vec_splats (__m2); | 497 b = (__vector signed char)vec_splats (__m2); |
498 c = vec_sub (a, b); | 498 c = vec_sub (a, b); |
499 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 499 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
500 #else | 500 #else |
501 __m64_union m1, m2, res; | 501 __m64_union m1, m2, res; |
502 | 502 |
503 m1.as_m64 = __m1; | 503 m1.as_m64 = __m1; |
504 m2.as_m64 = __m2; | 504 m2.as_m64 = __m2; |
530 __vector signed short a, b, c; | 530 __vector signed short a, b, c; |
531 | 531 |
532 a = (__vector signed short)vec_splats (__m1); | 532 a = (__vector signed short)vec_splats (__m1); |
533 b = (__vector signed short)vec_splats (__m2); | 533 b = (__vector signed short)vec_splats (__m2); |
534 c = vec_sub (a, b); | 534 c = vec_sub (a, b); |
535 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 535 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
536 #else | 536 #else |
537 __m64_union m1, m2, res; | 537 __m64_union m1, m2, res; |
538 | 538 |
539 m1.as_m64 = __m1; | 539 m1.as_m64 = __m1; |
540 m2.as_m64 = __m2; | 540 m2.as_m64 = __m2; |
562 __vector signed int a, b, c; | 562 __vector signed int a, b, c; |
563 | 563 |
564 a = (__vector signed int)vec_splats (__m1); | 564 a = (__vector signed int)vec_splats (__m1); |
565 b = (__vector signed int)vec_splats (__m2); | 565 b = (__vector signed int)vec_splats (__m2); |
566 c = vec_sub (a, b); | 566 c = vec_sub (a, b); |
567 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 567 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
568 #else | 568 #else |
569 __m64_union m1, m2, res; | 569 __m64_union m1, m2, res; |
570 | 570 |
571 m1.as_m64 = __m1; | 571 m1.as_m64 = __m1; |
572 m2.as_m64 = __m2; | 572 m2.as_m64 = __m2; |
752 __vector signed char a, b, c; | 752 __vector signed char a, b, c; |
753 | 753 |
754 a = (__vector signed char)vec_splats (__m1); | 754 a = (__vector signed char)vec_splats (__m1); |
755 b = (__vector signed char)vec_splats (__m2); | 755 b = (__vector signed char)vec_splats (__m2); |
756 c = (__vector signed char)vec_cmpgt (a, b); | 756 c = (__vector signed char)vec_cmpgt (a, b); |
757 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 757 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
758 #else | 758 #else |
759 __m64_union m1, m2, res; | 759 __m64_union m1, m2, res; |
760 | 760 |
761 m1.as_m64 = __m1; | 761 m1.as_m64 = __m1; |
762 m2.as_m64 = __m2; | 762 m2.as_m64 = __m2; |
789 __vector signed short a, b, c; | 789 __vector signed short a, b, c; |
790 | 790 |
791 a = (__vector signed short)vec_splats (__m1); | 791 a = (__vector signed short)vec_splats (__m1); |
792 b = (__vector signed short)vec_splats (__m2); | 792 b = (__vector signed short)vec_splats (__m2); |
793 c = (__vector signed short)vec_cmpeq (a, b); | 793 c = (__vector signed short)vec_cmpeq (a, b); |
794 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 794 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
795 #else | 795 #else |
796 __m64_union m1, m2, res; | 796 __m64_union m1, m2, res; |
797 | 797 |
798 m1.as_m64 = __m1; | 798 m1.as_m64 = __m1; |
799 m2.as_m64 = __m2; | 799 m2.as_m64 = __m2; |
820 __vector signed short a, b, c; | 820 __vector signed short a, b, c; |
821 | 821 |
822 a = (__vector signed short)vec_splats (__m1); | 822 a = (__vector signed short)vec_splats (__m1); |
823 b = (__vector signed short)vec_splats (__m2); | 823 b = (__vector signed short)vec_splats (__m2); |
824 c = (__vector signed short)vec_cmpgt (a, b); | 824 c = (__vector signed short)vec_cmpgt (a, b); |
825 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 825 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
826 #else | 826 #else |
827 __m64_union m1, m2, res; | 827 __m64_union m1, m2, res; |
828 | 828 |
829 m1.as_m64 = __m1; | 829 m1.as_m64 = __m1; |
830 m2.as_m64 = __m2; | 830 m2.as_m64 = __m2; |
852 #if _ARCH_PWR9 | 852 #if _ARCH_PWR9 |
853 __vector signed int a, b, c; | 853 __vector signed int a, b, c; |
854 | 854 |
855 a = (__vector signed int)vec_splats (__m1); | 855 a = (__vector signed int)vec_splats (__m1); |
856 b = (__vector signed int)vec_splats (__m2); | 856 b = (__vector signed int)vec_splats (__m2); |
857 c = (__vector signed short)vec_cmpeq (a, b); | 857 c = (__vector signed int)vec_cmpeq (a, b); |
858 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 858 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
859 #else | 859 #else |
860 __m64_union m1, m2, res; | 860 __m64_union m1, m2, res; |
861 | 861 |
862 m1.as_m64 = __m1; | 862 m1.as_m64 = __m1; |
863 m2.as_m64 = __m2; | 863 m2.as_m64 = __m2; |
881 #if _ARCH_PWR9 | 881 #if _ARCH_PWR9 |
882 __vector signed int a, b, c; | 882 __vector signed int a, b, c; |
883 | 883 |
884 a = (__vector signed int)vec_splats (__m1); | 884 a = (__vector signed int)vec_splats (__m1); |
885 b = (__vector signed int)vec_splats (__m2); | 885 b = (__vector signed int)vec_splats (__m2); |
886 c = (__vector signed short)vec_cmpgt (a, b); | 886 c = (__vector signed int)vec_cmpgt (a, b); |
887 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 887 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
888 #else | 888 #else |
889 __m64_union m1, m2, res; | 889 __m64_union m1, m2, res; |
890 | 890 |
891 m1.as_m64 = __m1; | 891 m1.as_m64 = __m1; |
892 m2.as_m64 = __m2; | 892 m2.as_m64 = __m2; |
913 __vector signed char a, b, c; | 913 __vector signed char a, b, c; |
914 | 914 |
915 a = (__vector signed char)vec_splats (__m1); | 915 a = (__vector signed char)vec_splats (__m1); |
916 b = (__vector signed char)vec_splats (__m2); | 916 b = (__vector signed char)vec_splats (__m2); |
917 c = vec_adds (a, b); | 917 c = vec_adds (a, b); |
918 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 918 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
919 } | 919 } |
920 | 920 |
921 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 921 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
922 _m_paddsb (__m64 __m1, __m64 __m2) | 922 _m_paddsb (__m64 __m1, __m64 __m2) |
923 { | 923 { |
931 __vector signed short a, b, c; | 931 __vector signed short a, b, c; |
932 | 932 |
933 a = (__vector signed short)vec_splats (__m1); | 933 a = (__vector signed short)vec_splats (__m1); |
934 b = (__vector signed short)vec_splats (__m2); | 934 b = (__vector signed short)vec_splats (__m2); |
935 c = vec_adds (a, b); | 935 c = vec_adds (a, b); |
936 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 936 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
937 } | 937 } |
938 | 938 |
939 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 939 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
940 _m_paddsw (__m64 __m1, __m64 __m2) | 940 _m_paddsw (__m64 __m1, __m64 __m2) |
941 { | 941 { |
949 __vector unsigned char a, b, c; | 949 __vector unsigned char a, b, c; |
950 | 950 |
951 a = (__vector unsigned char)vec_splats (__m1); | 951 a = (__vector unsigned char)vec_splats (__m1); |
952 b = (__vector unsigned char)vec_splats (__m2); | 952 b = (__vector unsigned char)vec_splats (__m2); |
953 c = vec_adds (a, b); | 953 c = vec_adds (a, b); |
954 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 954 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
955 } | 955 } |
956 | 956 |
957 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 957 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
958 _m_paddusb (__m64 __m1, __m64 __m2) | 958 _m_paddusb (__m64 __m1, __m64 __m2) |
959 { | 959 { |
968 __vector unsigned short a, b, c; | 968 __vector unsigned short a, b, c; |
969 | 969 |
970 a = (__vector unsigned short)vec_splats (__m1); | 970 a = (__vector unsigned short)vec_splats (__m1); |
971 b = (__vector unsigned short)vec_splats (__m2); | 971 b = (__vector unsigned short)vec_splats (__m2); |
972 c = vec_adds (a, b); | 972 c = vec_adds (a, b); |
973 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 973 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
974 } | 974 } |
975 | 975 |
976 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 976 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
977 _m_paddusw (__m64 __m1, __m64 __m2) | 977 _m_paddusw (__m64 __m1, __m64 __m2) |
978 { | 978 { |
987 __vector signed char a, b, c; | 987 __vector signed char a, b, c; |
988 | 988 |
989 a = (__vector signed char)vec_splats (__m1); | 989 a = (__vector signed char)vec_splats (__m1); |
990 b = (__vector signed char)vec_splats (__m2); | 990 b = (__vector signed char)vec_splats (__m2); |
991 c = vec_subs (a, b); | 991 c = vec_subs (a, b); |
992 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 992 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
993 } | 993 } |
994 | 994 |
995 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 995 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
996 _m_psubsb (__m64 __m1, __m64 __m2) | 996 _m_psubsb (__m64 __m1, __m64 __m2) |
997 { | 997 { |
1006 __vector signed short a, b, c; | 1006 __vector signed short a, b, c; |
1007 | 1007 |
1008 a = (__vector signed short)vec_splats (__m1); | 1008 a = (__vector signed short)vec_splats (__m1); |
1009 b = (__vector signed short)vec_splats (__m2); | 1009 b = (__vector signed short)vec_splats (__m2); |
1010 c = vec_subs (a, b); | 1010 c = vec_subs (a, b); |
1011 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 1011 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
1012 } | 1012 } |
1013 | 1013 |
1014 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 1014 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
1015 _m_psubsw (__m64 __m1, __m64 __m2) | 1015 _m_psubsw (__m64 __m1, __m64 __m2) |
1016 { | 1016 { |
1025 __vector unsigned char a, b, c; | 1025 __vector unsigned char a, b, c; |
1026 | 1026 |
1027 a = (__vector unsigned char)vec_splats (__m1); | 1027 a = (__vector unsigned char)vec_splats (__m1); |
1028 b = (__vector unsigned char)vec_splats (__m2); | 1028 b = (__vector unsigned char)vec_splats (__m2); |
1029 c = vec_subs (a, b); | 1029 c = vec_subs (a, b); |
1030 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 1030 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
1031 } | 1031 } |
1032 | 1032 |
1033 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 1033 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
1034 _m_psubusb (__m64 __m1, __m64 __m2) | 1034 _m_psubusb (__m64 __m1, __m64 __m2) |
1035 { | 1035 { |
1044 __vector unsigned short a, b, c; | 1044 __vector unsigned short a, b, c; |
1045 | 1045 |
1046 a = (__vector unsigned short)vec_splats (__m1); | 1046 a = (__vector unsigned short)vec_splats (__m1); |
1047 b = (__vector unsigned short)vec_splats (__m2); | 1047 b = (__vector unsigned short)vec_splats (__m2); |
1048 c = vec_subs (a, b); | 1048 c = vec_subs (a, b); |
1049 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 1049 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
1050 } | 1050 } |
1051 | 1051 |
1052 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 1052 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
1053 _m_psubusw (__m64 __m1, __m64 __m2) | 1053 _m_psubusw (__m64 __m1, __m64 __m2) |
1054 { | 1054 { |
1066 __vector signed int zero = {0, 0, 0, 0}; | 1066 __vector signed int zero = {0, 0, 0, 0}; |
1067 | 1067 |
1068 a = (__vector signed short)vec_splats (__m1); | 1068 a = (__vector signed short)vec_splats (__m1); |
1069 b = (__vector signed short)vec_splats (__m2); | 1069 b = (__vector signed short)vec_splats (__m2); |
1070 c = vec_vmsumshm (a, b, zero); | 1070 c = vec_vmsumshm (a, b, zero); |
1071 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 1071 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
1072 } | 1072 } |
1073 | 1073 |
1074 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 1074 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
1075 _m_pmaddwd (__m64 __m1, __m64 __m2) | 1075 _m_pmaddwd (__m64 __m1, __m64 __m2) |
1076 { | 1076 { |
1094 | 1094 |
1095 w0 = vec_vmulesh (a, b); | 1095 w0 = vec_vmulesh (a, b); |
1096 w1 = vec_vmulosh (a, b); | 1096 w1 = vec_vmulosh (a, b); |
1097 c = (__vector signed short)vec_perm (w0, w1, xform1); | 1097 c = (__vector signed short)vec_perm (w0, w1, xform1); |
1098 | 1098 |
1099 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 1099 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
1100 } | 1100 } |
1101 | 1101 |
1102 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 1102 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
1103 _m_pmulhw (__m64 __m1, __m64 __m2) | 1103 _m_pmulhw (__m64 __m1, __m64 __m2) |
1104 { | 1104 { |
1113 __vector signed short a, b, c; | 1113 __vector signed short a, b, c; |
1114 | 1114 |
1115 a = (__vector signed short)vec_splats (__m1); | 1115 a = (__vector signed short)vec_splats (__m1); |
1116 b = (__vector signed short)vec_splats (__m2); | 1116 b = (__vector signed short)vec_splats (__m2); |
1117 c = a * b; | 1117 c = a * b; |
1118 return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 0)); | 1118 return (__builtin_unpack_vector_int128 ((__vector __int128)c, 0)); |
1119 } | 1119 } |
1120 | 1120 |
1121 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 1121 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
1122 _m_pmullw (__m64 __m1, __m64 __m2) | 1122 _m_pmullw (__m64 __m1, __m64 __m2) |
1123 { | 1123 { |
1134 if (__count <= 15) | 1134 if (__count <= 15) |
1135 { | 1135 { |
1136 m = (__vector signed short)vec_splats (__m); | 1136 m = (__vector signed short)vec_splats (__m); |
1137 c = (__vector unsigned short)vec_splats ((unsigned short)__count); | 1137 c = (__vector unsigned short)vec_splats ((unsigned short)__count); |
1138 r = vec_sl (m, (__vector unsigned short)c); | 1138 r = vec_sl (m, (__vector unsigned short)c); |
1139 return (__builtin_unpack_vector_int128 ((__vector __int128_t)r, 0)); | 1139 return (__builtin_unpack_vector_int128 ((__vector __int128)r, 0)); |
1140 } | 1140 } |
1141 else | 1141 else |
1142 return (0); | 1142 return (0); |
1143 } | 1143 } |
1144 | 1144 |
1203 if (__count <= 15) | 1203 if (__count <= 15) |
1204 { | 1204 { |
1205 m = (__vector signed short)vec_splats (__m); | 1205 m = (__vector signed short)vec_splats (__m); |
1206 c = (__vector unsigned short)vec_splats ((unsigned short)__count); | 1206 c = (__vector unsigned short)vec_splats ((unsigned short)__count); |
1207 r = vec_sra (m, (__vector unsigned short)c); | 1207 r = vec_sra (m, (__vector unsigned short)c); |
1208 return (__builtin_unpack_vector_int128 ((__vector __int128_t)r, 0)); | 1208 return (__builtin_unpack_vector_int128 ((__vector __int128)r, 0)); |
1209 } | 1209 } |
1210 else | 1210 else |
1211 return (0); | 1211 return (0); |
1212 } | 1212 } |
1213 | 1213 |
1272 if (__count <= 15) | 1272 if (__count <= 15) |
1273 { | 1273 { |
1274 m = (__vector unsigned short)vec_splats (__m); | 1274 m = (__vector unsigned short)vec_splats (__m); |
1275 c = (__vector unsigned short)vec_splats ((unsigned short)__count); | 1275 c = (__vector unsigned short)vec_splats ((unsigned short)__count); |
1276 r = vec_sr (m, (__vector unsigned short)c); | 1276 r = vec_sr (m, (__vector unsigned short)c); |
1277 return (__builtin_unpack_vector_int128 ((__vector __int128_t)r, 0)); | 1277 return (__builtin_unpack_vector_int128 ((__vector __int128)r, 0)); |
1278 } | 1278 } |
1279 else | 1279 else |
1280 return (0); | 1280 return (0); |
1281 } | 1281 } |
1282 | 1282 |
1415 { | 1415 { |
1416 #if _ARCH_PWR9 | 1416 #if _ARCH_PWR9 |
1417 __vector signed short w; | 1417 __vector signed short w; |
1418 | 1418 |
1419 w = (__vector signed short)vec_splats (__w); | 1419 w = (__vector signed short)vec_splats (__w); |
1420 return (__builtin_unpack_vector_int128 ((__vector __int128_t)w, 0)); | 1420 return (__builtin_unpack_vector_int128 ((__vector __int128)w, 0)); |
1421 #else | 1421 #else |
1422 __m64_union res; | 1422 __m64_union res; |
1423 | 1423 |
1424 res.as_short[0] = __w; | 1424 res.as_short[0] = __w; |
1425 res.as_short[1] = __w; | 1425 res.as_short[1] = __w; |
1435 { | 1435 { |
1436 #if _ARCH_PWR8 | 1436 #if _ARCH_PWR8 |
1437 __vector signed char b; | 1437 __vector signed char b; |
1438 | 1438 |
1439 b = (__vector signed char)vec_splats (__b); | 1439 b = (__vector signed char)vec_splats (__b); |
1440 return (__builtin_unpack_vector_int128 ((__vector __int128_t)b, 0)); | 1440 return (__builtin_unpack_vector_int128 ((__vector __int128)b, 0)); |
1441 #else | 1441 #else |
1442 __m64_union res; | 1442 __m64_union res; |
1443 | 1443 |
1444 res.as_char[0] = __b; | 1444 res.as_char[0] = __b; |
1445 res.as_char[1] = __b; | 1445 res.as_char[1] = __b; |