diff options
Diffstat (limited to 'lib/Headers/xopintrin.h')
-rw-r--r-- | lib/Headers/xopintrin.h | 74 |
1 files changed, 38 insertions, 36 deletions
diff --git a/lib/Headers/xopintrin.h b/lib/Headers/xopintrin.h index 4a34f770d58db..9d540a2abdbe5 100644 --- a/lib/Headers/xopintrin.h +++ b/lib/Headers/xopintrin.h @@ -31,7 +31,8 @@ #include <fma4intrin.h> /* Define the default attributes for the functions in this file. */ -#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("xop"))) +#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("xop"), __min_vector_width__(128))) +#define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("xop"), __min_vector_width__(256))) static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C) @@ -201,7 +202,7 @@ _mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C) return (__m128i)(((__v2du)__A & (__v2du)__C) | ((__v2du)__B & ~(__v2du)__C)); } -static __inline__ __m256i __DEFAULT_FN_ATTRS +static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_cmov_si256(__m256i __A, __m256i __B, __m256i __C) { return (__m256i)(((__v4du)__A & (__v4du)__C) | ((__v4du)__B & ~(__v4du)__C)); @@ -237,17 +238,17 @@ _mm_rot_epi64(__m128i __A, __m128i __B) return (__m128i)__builtin_ia32_vprotq((__v2di)__A, (__v2di)__B); } -#define _mm_roti_epi8(A, N) __extension__ ({ \ - (__m128i)__builtin_ia32_vprotbi((__v16qi)(__m128i)(A), (N)); }) +#define _mm_roti_epi8(A, N) \ + (__m128i)__builtin_ia32_vprotbi((__v16qi)(__m128i)(A), (N)) -#define _mm_roti_epi16(A, N) __extension__ ({ \ - (__m128i)__builtin_ia32_vprotwi((__v8hi)(__m128i)(A), (N)); }) +#define _mm_roti_epi16(A, N) \ + (__m128i)__builtin_ia32_vprotwi((__v8hi)(__m128i)(A), (N)) -#define _mm_roti_epi32(A, N) __extension__ ({ \ - (__m128i)__builtin_ia32_vprotdi((__v4si)(__m128i)(A), (N)); }) +#define _mm_roti_epi32(A, N) \ + (__m128i)__builtin_ia32_vprotdi((__v4si)(__m128i)(A), (N)) -#define _mm_roti_epi64(A, N) __extension__ ({ \ - (__m128i)__builtin_ia32_vprotqi((__v2di)(__m128i)(A), (N)); }) +#define _mm_roti_epi64(A, N) \ + (__m128i)__builtin_ia32_vprotqi((__v2di)(__m128i)(A), (N)) static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_shl_epi8(__m128i __A, __m128i __B) @@ -297,37 +298,37 @@ _mm_sha_epi64(__m128i __A, __m128i __B) return (__m128i)__builtin_ia32_vpshaq((__v2di)__A, (__v2di)__B); } -#define _mm_com_epu8(A, B, N) __extension__ ({ \ +#define _mm_com_epu8(A, B, N) \ (__m128i)__builtin_ia32_vpcomub((__v16qi)(__m128i)(A), \ - (__v16qi)(__m128i)(B), (N)); }) + (__v16qi)(__m128i)(B), (N)) -#define _mm_com_epu16(A, B, N) __extension__ ({ \ +#define _mm_com_epu16(A, B, N) \ (__m128i)__builtin_ia32_vpcomuw((__v8hi)(__m128i)(A), \ - (__v8hi)(__m128i)(B), (N)); }) + (__v8hi)(__m128i)(B), (N)) -#define _mm_com_epu32(A, B, N) __extension__ ({ \ +#define _mm_com_epu32(A, B, N) \ (__m128i)__builtin_ia32_vpcomud((__v4si)(__m128i)(A), \ - (__v4si)(__m128i)(B), (N)); }) + (__v4si)(__m128i)(B), (N)) -#define _mm_com_epu64(A, B, N) __extension__ ({ \ +#define _mm_com_epu64(A, B, N) \ (__m128i)__builtin_ia32_vpcomuq((__v2di)(__m128i)(A), \ - (__v2di)(__m128i)(B), (N)); }) + (__v2di)(__m128i)(B), (N)) -#define _mm_com_epi8(A, B, N) __extension__ ({ \ +#define _mm_com_epi8(A, B, N) \ (__m128i)__builtin_ia32_vpcomb((__v16qi)(__m128i)(A), \ - (__v16qi)(__m128i)(B), (N)); }) + (__v16qi)(__m128i)(B), (N)) -#define _mm_com_epi16(A, B, N) __extension__ ({ \ +#define _mm_com_epi16(A, B, N) \ (__m128i)__builtin_ia32_vpcomw((__v8hi)(__m128i)(A), \ - (__v8hi)(__m128i)(B), (N)); }) + (__v8hi)(__m128i)(B), (N)) -#define _mm_com_epi32(A, B, N) __extension__ ({ \ +#define _mm_com_epi32(A, B, N) \ (__m128i)__builtin_ia32_vpcomd((__v4si)(__m128i)(A), \ - (__v4si)(__m128i)(B), (N)); }) + (__v4si)(__m128i)(B), (N)) -#define _mm_com_epi64(A, B, N) __extension__ ({ \ +#define _mm_com_epi64(A, B, N) \ (__m128i)__builtin_ia32_vpcomq((__v2di)(__m128i)(A), \ - (__v2di)(__m128i)(B), (N)); }) + (__v2di)(__m128i)(B), (N)) #define _MM_PCOMCTRL_LT 0 #define _MM_PCOMCTRL_LE 1 @@ -722,24 +723,24 @@ _mm_comtrue_epi64(__m128i __A, __m128i __B) return _mm_com_epi64(__A, __B, _MM_PCOMCTRL_TRUE); } -#define _mm_permute2_pd(X, Y, C, I) __extension__ ({ \ +#define _mm_permute2_pd(X, Y, C, I) \ (__m128d)__builtin_ia32_vpermil2pd((__v2df)(__m128d)(X), \ (__v2df)(__m128d)(Y), \ - (__v2di)(__m128i)(C), (I)); }) + (__v2di)(__m128i)(C), (I)) -#define _mm256_permute2_pd(X, Y, C, I) __extension__ ({ \ +#define _mm256_permute2_pd(X, Y, C, I) \ (__m256d)__builtin_ia32_vpermil2pd256((__v4df)(__m256d)(X), \ (__v4df)(__m256d)(Y), \ - (__v4di)(__m256i)(C), (I)); }) + (__v4di)(__m256i)(C), (I)) -#define _mm_permute2_ps(X, Y, C, I) __extension__ ({ \ +#define _mm_permute2_ps(X, Y, C, I) \ (__m128)__builtin_ia32_vpermil2ps((__v4sf)(__m128)(X), (__v4sf)(__m128)(Y), \ - (__v4si)(__m128i)(C), (I)); }) + (__v4si)(__m128i)(C), (I)) -#define _mm256_permute2_ps(X, Y, C, I) __extension__ ({ \ +#define _mm256_permute2_ps(X, Y, C, I) \ (__m256)__builtin_ia32_vpermil2ps256((__v8sf)(__m256)(X), \ (__v8sf)(__m256)(Y), \ - (__v8si)(__m256i)(C), (I)); }) + (__v8si)(__m256i)(C), (I)) static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_frcz_ss(__m128 __A) @@ -765,18 +766,19 @@ _mm_frcz_pd(__m128d __A) return (__m128d)__builtin_ia32_vfrczpd((__v2df)__A); } -static __inline__ __m256 __DEFAULT_FN_ATTRS +static __inline__ __m256 __DEFAULT_FN_ATTRS256 _mm256_frcz_ps(__m256 __A) { return (__m256)__builtin_ia32_vfrczps256((__v8sf)__A); } -static __inline__ __m256d __DEFAULT_FN_ATTRS +static __inline__ __m256d __DEFAULT_FN_ATTRS256 _mm256_frcz_pd(__m256d __A) { return (__m256d)__builtin_ia32_vfrczpd256((__v4df)__A); } #undef __DEFAULT_FN_ATTRS +#undef __DEFAULT_FN_ATTRS256 #endif /* __XOPINTRIN_H */ |