diff options
author | Michael Zuckerman <Michael.zuckerman@intel.com> | 2016-04-13 12:58:01 +0000 |
---|---|---|
committer | Michael Zuckerman <Michael.zuckerman@intel.com> | 2016-04-13 12:58:01 +0000 |
commit | c2b6128a8f28b83b6e9a3feffc98ce509a66dc4c (patch) | |
tree | b3219cb354f5067c8f9e4d330caa4b05637c0916 /clang/lib/Headers/avx512bwintrin.h | |
parent | cc901b57d54c398c2b22f522eeb26fbc8dfc9b56 (diff) | |
download | bcm5719-llvm-c2b6128a8f28b83b6e9a3feffc98ce509a66dc4c.tar.gz bcm5719-llvm-c2b6128a8f28b83b6e9a3feffc98ce509a66dc4c.zip |
[Clang][AVX512][Builtin] Adding support for VBROADCAST and VPBROADCASTB/W/D/Q instruction set
Differential Revision: http://reviews.llvm.org/D19012
llvm-svn: 266195
Diffstat (limited to 'clang/lib/Headers/avx512bwintrin.h')
-rw-r--r-- | clang/lib/Headers/avx512bwintrin.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/clang/lib/Headers/avx512bwintrin.h b/clang/lib/Headers/avx512bwintrin.h index 688bf30aafa..ffaf496a1f0 100644 --- a/clang/lib/Headers/avx512bwintrin.h +++ b/clang/lib/Headers/avx512bwintrin.h @@ -2075,6 +2075,69 @@ _mm512_movm_epi16 (__mmask32 __A) return (__m512i) __builtin_ia32_cvtmask2w512 (__A); } +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_broadcastb_epi8 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, + (__v64qi) _mm512_setzero_si512(), + (__mmask64) -1); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, + (__v64qi) __O, + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, + (__v64qi) _mm512_setzero_qi(), + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A) +{ + return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A, + (__v32hi) __O, + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_maskz_set1_epi16 (__mmask32 __M, short __A) +{ + return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A, + (__v32hi) _mm512_setzero_hi(), + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_broadcastw_epi16 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, + (__v32hi) _mm512_setzero_si512(), + (__mmask32) -1); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, + (__v32hi) __O, + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, + (__v32hi) _mm512_setzero_hi(), + __M); +} #undef __DEFAULT_FN_ATTRS |