Index: include/clang/Basic/BuiltinsX86.def =================================================================== --- include/clang/Basic/BuiltinsX86.def +++ include/clang/Basic/BuiltinsX86.def @@ -1052,5 +1052,35 @@ BUILTIN(__builtin_ia32_orpd128_mask, "V2dV2dV2dV2dUc", "") BUILTIN(__builtin_ia32_orps256_mask, "V8fV8fV8fV8fUc", "") BUILTIN(__builtin_ia32_orps128_mask, "V4fV4fV4fV4fUc", "") +BUILTIN(__builtin_ia32_blendmb_512_mask, "V64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_blendmw_512_mask, "V32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_pabsb512_mask, "V64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_pabsw512_mask, "V32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_packssdw512_mask, "V32sV16iV16iV32sUi", "") +BUILTIN(__builtin_ia32_packsswb512_mask, "V64cV32sV32sV64cULLi", "") +BUILTIN(__builtin_ia32_packusdw512_mask, "V32sV16iV16iV32sUi", "") +BUILTIN(__builtin_ia32_packuswb512_mask, "V64cV32sV32sV64cULLi", "") +BUILTIN(__builtin_ia32_paddsb512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_paddsw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_paddusb512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_paddusw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_pavgb512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_pavgw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_pmaxsb512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_pmaxsw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_pmaxub512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_pmaxuw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_pminsb512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_pminsw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_pminub512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_pminuw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_pshufb512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_psubsb512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_psubsw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_psubusb512_mask, "V64cV64cV64cV64cULLi", "") +BUILTIN(__builtin_ia32_psubusw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_vpermi2varhi512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_vpermt2varhi512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_vpermt2varhi512_maskz, "V32sV32sV32sV32sUi", "") #undef BUILTIN Index: lib/Headers/avx512bwintrin.h =================================================================== --- lib/Headers/avx512bwintrin.h +++ lib/Headers/avx512bwintrin.h @@ -456,6 +456,754 @@ (__mmask32) __U); } +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W) +{ + return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A, + (__v64qi) __W, + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W) +{ + return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A, + (__v32hi) __W, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_abs_epi8 (__m512i __A) +{ + return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, + (__v64qi) __W, + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_abs_epi16 (__m512i __A) +{ + return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, + (__v32hi) __W, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A) +{ + return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_packs_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, + (__v16si) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, + (__v16si) __B, + (__v32hi) _mm512_setzero_hi(), + __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, + (__v16si) __B, + (__v32hi) __W, + __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_packs_epi16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v64qi) __W, + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v64qi) _mm512_setzero_qi(), + __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_packus_epi32 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, + (__v16si) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, + (__v16si) __B, + (__v32hi) _mm512_setzero_hi(), + __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, + (__v16si) __B, + (__v32hi) __W, + __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_packus_epi16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v64qi) __W, + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v64qi) _mm512_setzero_qi(), + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_adds_epi8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_adds_epi16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_adds_epu8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_adds_epu16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_avg_epu8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi(), + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_avg_epu16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi(), + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_max_epi8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi(), + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_max_epi16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi(), + (__mmask32) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_max_epu8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi(), + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_max_epu16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi(), + (__mmask32) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_min_epi8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi(), + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_min_epi16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi(), + (__mmask32) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_min_epu8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi(), + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_min_epu16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi(), + (__mmask32) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __M); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_shuffle_epi8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_subs_epi8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_subs_epi16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_subs_epu8 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) __W, + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, + (__v64qi) __B, + (__v64qi) _mm512_setzero_qi (), + (__mmask64) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_subs_epu16 (__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, + __m512i __B) +{ + return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) __W, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, + (__v32hi) __B, + (__v32hi) _mm512_setzero_hi (), + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I, + __mmask32 __U, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A, + (__v32hi) __I /* idx */ , + (__v32hi) __B, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, + (__v32hi) __A, + (__v32hi) __B, + (__mmask32) -1); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U, + __m512i __I, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, + (__v32hi) __A, + (__v32hi) __B, + (__mmask32) __U); +} + +static __inline__ __m512i DEFAULT_FN_ATTRS +_mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A, + __m512i __I, __m512i __B) +{ + return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I + /* idx */ , + (__v32hi) __A, + (__v32hi) __B, + (__mmask32) __U); +} + #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \ (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ (__v64qi)(__m512i)(b), \ @@ -496,6 +1244,7 @@ (__v32hi)(__m512i)(b), \ (p), (__mmask32)(m)); }) + #undef DEFAULT_FN_ATTRS #endif Index: test/CodeGen/avx512bw-builtins.c =================================================================== --- test/CodeGen/avx512bw-builtins.c +++ test/CodeGen/avx512bw-builtins.c @@ -427,3 +427,409 @@ //CHECK: @llvm.x86.avx512.mask.pmull.w.512 return _mm512_maskz_mullo_epi16(__U, __A, __B); } + +__m512i test_mm512_mask_blend_epi8(__mmask64 __U, __m512i __A, __m512i __W) { + // CHECK-LABEL: @test_mm512_mask_blend_epi8 + // CHECK: @llvm.x86.avx512.mask.blend.b.512 + return _mm512_mask_blend_epi8(__U,__A,__W); +} +__m512i test_mm512_mask_blend_epi16(__mmask32 __U, __m512i __A, __m512i __W) { + // CHECK-LABEL: @test_mm512_mask_blend_epi16 + // CHECK: @llvm.x86.avx512.mask.blend.w.512 + return _mm512_mask_blend_epi16(__U,__A,__W); +} +__m512i test_mm512_abs_epi8(__m512i __A) { + // CHECK-LABEL: @test_mm512_abs_epi8 + // CHECK: @llvm.x86.avx512.mask.pabs.b.512 + return _mm512_abs_epi8(__A); +} +__m512i test_mm512_mask_abs_epi8(__m512i __W, __mmask64 __U, __m512i __A) { + // CHECK-LABEL: @test_mm512_mask_abs_epi8 + // CHECK: @llvm.x86.avx512.mask.pabs.b.512 + return _mm512_mask_abs_epi8(__W,__U,__A); +} +__m512i test_mm512_maskz_abs_epi8(__mmask64 __U, __m512i __A) { + // CHECK-LABEL: @test_mm512_maskz_abs_epi8 + // CHECK: @llvm.x86.avx512.mask.pabs.b.512 + return _mm512_maskz_abs_epi8(__U,__A); +} +__m512i test_mm512_abs_epi16(__m512i __A) { + // CHECK-LABEL: @test_mm512_abs_epi16 + // CHECK: @llvm.x86.avx512.mask.pabs.w.512 + return _mm512_abs_epi16(__A); +} +__m512i test_mm512_mask_abs_epi16(__m512i __W, __mmask32 __U, __m512i __A) { + // CHECK-LABEL: @test_mm512_mask_abs_epi16 + // CHECK: @llvm.x86.avx512.mask.pabs.w.512 + return _mm512_mask_abs_epi16(__W,__U,__A); +} +__m512i test_mm512_maskz_abs_epi16(__mmask32 __U, __m512i __A) { + // CHECK-LABEL: @test_mm512_maskz_abs_epi16 + // CHECK: @llvm.x86.avx512.mask.pabs.w.512 + return _mm512_maskz_abs_epi16(__U,__A); +} +__m512i test_mm512_packs_epi32(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_packs_epi32 + // CHECK: @llvm.x86.avx512.mask.packssdw.512 + return _mm512_packs_epi32(__A,__B); +} +__m512i test_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_packs_epi32 + // CHECK: @llvm.x86.avx512.mask.packssdw.512 + return _mm512_maskz_packs_epi32(__M,__A,__B); +} +__m512i test_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_packs_epi32 + // CHECK: @llvm.x86.avx512.mask.packssdw.512 + return _mm512_mask_packs_epi32(__W,__M,__A,__B); +} +__m512i test_mm512_packs_epi16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_packs_epi16 + // CHECK: @llvm.x86.avx512.mask.packsswb.512 + return _mm512_packs_epi16(__A,__B); +} +__m512i test_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_packs_epi16 + // CHECK: @llvm.x86.avx512.mask.packsswb.512 + return _mm512_mask_packs_epi16(__W,__M,__A,__B); +} +__m512i test_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_packs_epi16 + // CHECK: @llvm.x86.avx512.mask.packsswb.512 + return _mm512_maskz_packs_epi16(__M,__A,__B); +} +__m512i test_mm512_packus_epi32(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_packus_epi32 + // CHECK: @llvm.x86.avx512.mask.packusdw.512 + return _mm512_packus_epi32(__A,__B); +} +__m512i test_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_packus_epi32 + // CHECK: @llvm.x86.avx512.mask.packusdw.512 + return _mm512_maskz_packus_epi32(__M,__A,__B); +} +__m512i test_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_packus_epi32 + // CHECK: @llvm.x86.avx512.mask.packusdw.512 + return _mm512_mask_packus_epi32(__W,__M,__A,__B); +} +__m512i test_mm512_packus_epi16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_packus_epi16 + // CHECK: @llvm.x86.avx512.mask.packuswb.512 + return _mm512_packus_epi16(__A,__B); +} +__m512i test_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_packus_epi16 + // CHECK: @llvm.x86.avx512.mask.packuswb.512 + return _mm512_mask_packus_epi16(__W,__M,__A,__B); +} +__m512i test_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_packus_epi16 + // CHECK: @llvm.x86.avx512.mask.packuswb.512 + return _mm512_maskz_packus_epi16(__M,__A,__B); +} +__m512i test_mm512_adds_epi8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_adds_epi8 + // CHECK: @llvm.x86.avx512.mask.padds.b.512 + return _mm512_adds_epi8(__A,__B); +} +__m512i test_mm512_mask_adds_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_adds_epi8 + // CHECK: @llvm.x86.avx512.mask.padds.b.512 + return _mm512_mask_adds_epi8(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_adds_epi8(__mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_adds_epi8 + // CHECK: @llvm.x86.avx512.mask.padds.b.512 + return _mm512_maskz_adds_epi8(__U,__A,__B); +} +__m512i test_mm512_adds_epi16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_adds_epi16 + // CHECK: @llvm.x86.avx512.mask.padds.w.512 + return _mm512_adds_epi16(__A,__B); +} +__m512i test_mm512_mask_adds_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_adds_epi16 + // CHECK: @llvm.x86.avx512.mask.padds.w.512 + return _mm512_mask_adds_epi16(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_adds_epi16(__mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_adds_epi16 + // CHECK: @llvm.x86.avx512.mask.padds.w.512 + return _mm512_maskz_adds_epi16(__U,__A,__B); +} +__m512i test_mm512_adds_epu8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_adds_epu8 + // CHECK: @llvm.x86.avx512.mask.paddus.b.512 + return _mm512_adds_epu8(__A,__B); +} +__m512i test_mm512_mask_adds_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_adds_epu8 + // CHECK: @llvm.x86.avx512.mask.paddus.b.512 + return _mm512_mask_adds_epu8(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_adds_epu8(__mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_adds_epu8 + // CHECK: @llvm.x86.avx512.mask.paddus.b.512 + return _mm512_maskz_adds_epu8(__U,__A,__B); +} +__m512i test_mm512_adds_epu16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_adds_epu16 + // CHECK: @llvm.x86.avx512.mask.paddus.w.512 + return _mm512_adds_epu16(__A,__B); +} +__m512i test_mm512_mask_adds_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_adds_epu16 + // CHECK: @llvm.x86.avx512.mask.paddus.w.512 + return _mm512_mask_adds_epu16(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_adds_epu16(__mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_adds_epu16 + // CHECK: @llvm.x86.avx512.mask.paddus.w.512 + return _mm512_maskz_adds_epu16(__U,__A,__B); +} +__m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_avg_epu8 + // CHECK: @llvm.x86.avx512.mask.pavg.b.512 + return _mm512_avg_epu8(__A,__B); +} +__m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_avg_epu8 + // CHECK: @llvm.x86.avx512.mask.pavg.b.512 + return _mm512_mask_avg_epu8(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_avg_epu8 + // CHECK: @llvm.x86.avx512.mask.pavg.b.512 + return _mm512_maskz_avg_epu8(__U,__A,__B); +} +__m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_avg_epu16 + // CHECK: @llvm.x86.avx512.mask.pavg.w.512 + return _mm512_avg_epu16(__A,__B); +} +__m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_avg_epu16 + // CHECK: @llvm.x86.avx512.mask.pavg.w.512 + return _mm512_mask_avg_epu16(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_avg_epu16 + // CHECK: @llvm.x86.avx512.mask.pavg.w.512 + return _mm512_maskz_avg_epu16(__U,__A,__B); +} +__m512i test_mm512_max_epi8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_max_epi8 + // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512 + return _mm512_max_epi8(__A,__B); +} +__m512i test_mm512_maskz_max_epi8(__mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_max_epi8 + // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512 + return _mm512_maskz_max_epi8(__M,__A,__B); +} +__m512i test_mm512_mask_max_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_max_epi8 + // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512 + return _mm512_mask_max_epi8(__W,__M,__A,__B); +} +__m512i test_mm512_max_epi16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_max_epi16 + // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512 + return _mm512_max_epi16(__A,__B); +} +__m512i test_mm512_maskz_max_epi16(__mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_max_epi16 + // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512 + return _mm512_maskz_max_epi16(__M,__A,__B); +} +__m512i test_mm512_mask_max_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_max_epi16 + // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512 + return _mm512_mask_max_epi16(__W,__M,__A,__B); +} +__m512i test_mm512_max_epu8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_max_epu8 + // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512 + return _mm512_max_epu8(__A,__B); +} +__m512i test_mm512_maskz_max_epu8(__mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_max_epu8 + // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512 + return _mm512_maskz_max_epu8(__M,__A,__B); +} +__m512i test_mm512_mask_max_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_max_epu8 + // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512 + return _mm512_mask_max_epu8(__W,__M,__A,__B); +} +__m512i test_mm512_max_epu16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_max_epu16 + // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512 + return _mm512_max_epu16(__A,__B); +} +__m512i test_mm512_maskz_max_epu16(__mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_max_epu16 + // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512 + return _mm512_maskz_max_epu16(__M,__A,__B); +} +__m512i test_mm512_mask_max_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_max_epu16 + // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512 + return _mm512_mask_max_epu16(__W,__M,__A,__B); +} +__m512i test_mm512_min_epi8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_min_epi8 + // CHECK: @llvm.x86.avx512.mask.pmins.b.512 + return _mm512_min_epi8(__A,__B); +} +__m512i test_mm512_maskz_min_epi8(__mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_min_epi8 + // CHECK: @llvm.x86.avx512.mask.pmins.b.512 + return _mm512_maskz_min_epi8(__M,__A,__B); +} +__m512i test_mm512_mask_min_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_min_epi8 + // CHECK: @llvm.x86.avx512.mask.pmins.b.512 + return _mm512_mask_min_epi8(__W,__M,__A,__B); +} +__m512i test_mm512_min_epi16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_min_epi16 + // CHECK: @llvm.x86.avx512.mask.pmins.w.512 + return _mm512_min_epi16(__A,__B); +} +__m512i test_mm512_maskz_min_epi16(__mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_min_epi16 + // CHECK: @llvm.x86.avx512.mask.pmins.w.512 + return _mm512_maskz_min_epi16(__M,__A,__B); +} +__m512i test_mm512_mask_min_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_min_epi16 + // CHECK: @llvm.x86.avx512.mask.pmins.w.512 + return _mm512_mask_min_epi16(__W,__M,__A,__B); +} +__m512i test_mm512_min_epu8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_min_epu8 + // CHECK: @llvm.x86.avx512.mask.pminu.b.512 + return _mm512_min_epu8(__A,__B); +} +__m512i test_mm512_maskz_min_epu8(__mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_min_epu8 + // CHECK: @llvm.x86.avx512.mask.pminu.b.512 + return _mm512_maskz_min_epu8(__M,__A,__B); +} +__m512i test_mm512_mask_min_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_min_epu8 + // CHECK: @llvm.x86.avx512.mask.pminu.b.512 + return _mm512_mask_min_epu8(__W,__M,__A,__B); +} +__m512i test_mm512_min_epu16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_min_epu16 + // CHECK: @llvm.x86.avx512.mask.pminu.w.512 + return _mm512_min_epu16(__A,__B); +} +__m512i test_mm512_maskz_min_epu16(__mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_min_epu16 + // CHECK: @llvm.x86.avx512.mask.pminu.w.512 + return _mm512_maskz_min_epu16(__M,__A,__B); +} +__m512i test_mm512_mask_min_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_min_epu16 + // CHECK: @llvm.x86.avx512.mask.pminu.w.512 + return _mm512_mask_min_epu16(__W,__M,__A,__B); +} +__m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_shuffle_epi8 + // CHECK: @llvm.x86.avx512.mask.pshuf.b.512 + return _mm512_shuffle_epi8(__A,__B); +} +__m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_shuffle_epi8 + // CHECK: @llvm.x86.avx512.mask.pshuf.b.512 + return _mm512_mask_shuffle_epi8(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_shuffle_epi8 + // CHECK: @llvm.x86.avx512.mask.pshuf.b.512 + return _mm512_maskz_shuffle_epi8(__U,__A,__B); +} +__m512i test_mm512_subs_epi8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_subs_epi8 + // CHECK: @llvm.x86.avx512.mask.psubs.b.512 + return _mm512_subs_epi8(__A,__B); +} +__m512i test_mm512_mask_subs_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_subs_epi8 + // CHECK: @llvm.x86.avx512.mask.psubs.b.512 + return _mm512_mask_subs_epi8(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_subs_epi8(__mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_subs_epi8 + // CHECK: @llvm.x86.avx512.mask.psubs.b.512 + return _mm512_maskz_subs_epi8(__U,__A,__B); +} +__m512i test_mm512_subs_epi16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_subs_epi16 + // CHECK: @llvm.x86.avx512.mask.psubs.w.512 + return _mm512_subs_epi16(__A,__B); +} +__m512i test_mm512_mask_subs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_subs_epi16 + // CHECK: @llvm.x86.avx512.mask.psubs.w.512 + return _mm512_mask_subs_epi16(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_subs_epi16(__mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_subs_epi16 + // CHECK: @llvm.x86.avx512.mask.psubs.w.512 + return _mm512_maskz_subs_epi16(__U,__A,__B); +} +__m512i test_mm512_subs_epu8(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_subs_epu8 + // CHECK: @llvm.x86.avx512.mask.psubus.b.512 + return _mm512_subs_epu8(__A,__B); +} +__m512i test_mm512_mask_subs_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_subs_epu8 + // CHECK: @llvm.x86.avx512.mask.psubus.b.512 + return _mm512_mask_subs_epu8(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_subs_epu8(__mmask64 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_subs_epu8 + // CHECK: @llvm.x86.avx512.mask.psubus.b.512 + return _mm512_maskz_subs_epu8(__U,__A,__B); +} +__m512i test_mm512_subs_epu16(__m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_subs_epu16 + // CHECK: @llvm.x86.avx512.mask.psubus.w.512 + return _mm512_subs_epu16(__A,__B); +} +__m512i test_mm512_mask_subs_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_subs_epu16 + // CHECK: @llvm.x86.avx512.mask.psubus.w.512 + return _mm512_mask_subs_epu16(__W,__U,__A,__B); +} +__m512i test_mm512_maskz_subs_epu16(__mmask32 __U, __m512i __A, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_subs_epu16 + // CHECK: @llvm.x86.avx512.mask.psubus.w.512 + return _mm512_maskz_subs_epu16(__U,__A,__B); +} +__m512i test_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi16 + // CHECK: @llvm.x86.avx512.mask.vpermi2var.hi.512 + return _mm512_mask2_permutex2var_epi16(__A,__I,__U,__B); +} +__m512i test_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B) { + // CHECK-LABEL: @test_mm512_permutex2var_epi16 + // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512 + return _mm512_permutex2var_epi16(__A,__I,__B); +} +__m512i test_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I, __m512i __B) { + // CHECK-LABEL: @test_mm512_mask_permutex2var_epi16 + // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512 + return _mm512_mask_permutex2var_epi16(__A,__U,__I,__B); +} +__m512i test_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I, __m512i __B) { + // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi16 + // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512 + return _mm512_maskz_permutex2var_epi16(__U,__A,__I,__B); +}