Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/i386/avxintrin.h @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | a06113de4d67 |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
65:65488c3d617d | 67:f6334be47118 |
---|---|
735 | 735 |
736 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 736 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
737 _mm256_insert_epi32 (__m256i __X, int __D, int const __N) | 737 _mm256_insert_epi32 (__m256i __X, int __D, int const __N) |
738 { | 738 { |
739 __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 2); | 739 __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 2); |
740 __Y = _mm_insert_epi16 (__Y, __D, __N % 4); | 740 __Y = _mm_insert_epi32 (__Y, __D, __N % 4); |
741 return _mm256_insertf128_si256 (__X, __Y, __N >> 2); | 741 return _mm256_insertf128_si256 (__X, __Y, __N >> 2); |
742 } | 742 } |
743 | 743 |
744 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 744 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
745 _mm256_insert_epi16 (__m256i __X, int __D, int const __N) | 745 _mm256_insert_epi16 (__m256i __X, int __D, int const __N) |
760 #ifdef __x86_64__ | 760 #ifdef __x86_64__ |
761 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 761 extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
762 _mm256_insert_epi64 (__m256i __X, int __D, int const __N) | 762 _mm256_insert_epi64 (__m256i __X, int __D, int const __N) |
763 { | 763 { |
764 __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1); | 764 __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1); |
765 __Y = _mm_insert_epi16 (__Y, __D, __N % 2); | 765 __Y = _mm_insert_epi64 (__Y, __D, __N % 2); |
766 return _mm256_insertf128_si256 (__X, __Y, __N >> 1); | 766 return _mm256_insertf128_si256 (__X, __Y, __N >> 1); |
767 } | 767 } |
768 #endif | 768 #endif |
769 #else | 769 #else |
770 #define _mm256_insertf128_pd(X, Y, O) \ | 770 #define _mm256_insertf128_pd(X, Y, O) \ |
888 { | 888 { |
889 __builtin_ia32_storedqu256 ((char *)__P, (__v32qi)__A); | 889 __builtin_ia32_storedqu256 ((char *)__P, (__v32qi)__A); |
890 } | 890 } |
891 | 891 |
892 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 892 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
893 _mm_maskload_pd (double const *__P, __m128d __M) | 893 _mm_maskload_pd (double const *__P, __m128i __M) |
894 { | 894 { |
895 return (__m128d) __builtin_ia32_maskloadpd ((const __v2df *)__P, | 895 return (__m128d) __builtin_ia32_maskloadpd ((const __v2df *)__P, |
896 (__v2df)__M); | 896 (__v2di)__M); |
897 } | 897 } |
898 | 898 |
899 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 899 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
900 _mm_maskstore_pd (double *__P, __m128d __M, __m128d __A) | 900 _mm_maskstore_pd (double *__P, __m128i __M, __m128d __A) |
901 { | 901 { |
902 __builtin_ia32_maskstorepd ((__v2df *)__P, (__v2df)__M, (__v2df)__A); | 902 __builtin_ia32_maskstorepd ((__v2df *)__P, (__v2di)__M, (__v2df)__A); |
903 } | 903 } |
904 | 904 |
905 extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 905 extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
906 _mm256_maskload_pd (double const *__P, __m256d __M) | 906 _mm256_maskload_pd (double const *__P, __m256i __M) |
907 { | 907 { |
908 return (__m256d) __builtin_ia32_maskloadpd256 ((const __v4df *)__P, | 908 return (__m256d) __builtin_ia32_maskloadpd256 ((const __v4df *)__P, |
909 (__v4df)__M); | 909 (__v4di)__M); |
910 } | 910 } |
911 | 911 |
912 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 912 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
913 _mm256_maskstore_pd (double *__P, __m256d __M, __m256d __A) | 913 _mm256_maskstore_pd (double *__P, __m256i __M, __m256d __A) |
914 { | 914 { |
915 __builtin_ia32_maskstorepd256 ((__v4df *)__P, (__v4df)__M, (__v4df)__A); | 915 __builtin_ia32_maskstorepd256 ((__v4df *)__P, (__v4di)__M, (__v4df)__A); |
916 } | 916 } |
917 | 917 |
918 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 918 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
919 _mm_maskload_ps (float const *__P, __m128 __M) | 919 _mm_maskload_ps (float const *__P, __m128i __M) |
920 { | 920 { |
921 return (__m128) __builtin_ia32_maskloadps ((const __v4sf *)__P, | 921 return (__m128) __builtin_ia32_maskloadps ((const __v4sf *)__P, |
922 (__v4sf)__M); | 922 (__v4si)__M); |
923 } | 923 } |
924 | 924 |
925 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 925 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
926 _mm_maskstore_ps (float *__P, __m128 __M, __m128 __A) | 926 _mm_maskstore_ps (float *__P, __m128i __M, __m128 __A) |
927 { | 927 { |
928 __builtin_ia32_maskstoreps ((__v4sf *)__P, (__v4sf)__M, (__v4sf)__A); | 928 __builtin_ia32_maskstoreps ((__v4sf *)__P, (__v4si)__M, (__v4sf)__A); |
929 } | 929 } |
930 | 930 |
931 extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 931 extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
932 _mm256_maskload_ps (float const *__P, __m256 __M) | 932 _mm256_maskload_ps (float const *__P, __m256i __M) |
933 { | 933 { |
934 return (__m256) __builtin_ia32_maskloadps256 ((const __v8sf *)__P, | 934 return (__m256) __builtin_ia32_maskloadps256 ((const __v8sf *)__P, |
935 (__v8sf)__M); | 935 (__v8si)__M); |
936 } | 936 } |
937 | 937 |
938 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 938 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
939 _mm256_maskstore_ps (float *__P, __m256 __M, __m256 __A) | 939 _mm256_maskstore_ps (float *__P, __m256i __M, __m256 __A) |
940 { | 940 { |
941 __builtin_ia32_maskstoreps256 ((__v8sf *)__P, (__v8sf)__M, (__v8sf)__A); | 941 __builtin_ia32_maskstoreps256 ((__v8sf *)__P, (__v8si)__M, (__v8sf)__A); |
942 } | 942 } |
943 | 943 |
944 extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | 944 extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
945 _mm256_movehdup_ps (__m256 __X) | 945 _mm256_movehdup_ps (__m256 __X) |
946 { | 946 { |