summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/Basic/BuiltinsX86.def30
-rw-r--r--lib/Headers/avx512bwintrin.h749
-rw-r--r--test/CodeGen/avx512bw-builtins.c406
3 files changed, 1185 insertions, 0 deletions
diff --git a/include/clang/Basic/BuiltinsX86.def b/include/clang/Basic/BuiltinsX86.def
index 8c70516c02..0873cb3d70 100644
--- a/include/clang/Basic/BuiltinsX86.def
+++ b/include/clang/Basic/BuiltinsX86.def
@@ -1112,5 +1112,35 @@ BUILTIN(__builtin_ia32_orpd256_mask, "V4dV4dV4dV4dUc", "")
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
diff --git a/lib/Headers/avx512bwintrin.h b/lib/Headers/avx512bwintrin.h
index 4eb9747178..3609181fcf 100644
--- a/lib/Headers/avx512bwintrin.h
+++ b/lib/Headers/avx512bwintrin.h
@@ -456,6 +456,754 @@ _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
(__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 @@ _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
(__v32hi)(__m512i)(b), \
(p), (__mmask32)(m)); })
+
#undef DEFAULT_FN_ATTRS
#endif
diff --git a/test/CodeGen/avx512bw-builtins.c b/test/CodeGen/avx512bw-builtins.c
index 452d737bea..6cc02ef705 100644
--- a/test/CodeGen/avx512bw-builtins.c
+++ b/test/CodeGen/avx512bw-builtins.c
@@ -427,3 +427,409 @@ __m512i test_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
//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);
+}