AVX-512: added intrinsics for KNL and SKX

by Asaf Badouh (asaf.badouh@intel.com)

llvm-svn: 235986
This commit is contained in:
Elena Demikhovsky 2015-04-28 13:28:01 +00:00
parent 6111469a4a
commit 35dc8c0944
9 changed files with 1944 additions and 0 deletions

View File

@ -966,4 +966,57 @@ BUILTIN(__builtin_ia32_ucmpd512_mask, "UsV16iV16iIcUs", "")
BUILTIN(__builtin_ia32_ucmpq512_mask, "UcV8LLiV8LLiIcUc", "")
BUILTIN(__builtin_ia32_ucmpw512_mask, "UiV32sV32sIcUi", "")
BUILTIN(__builtin_ia32_paddd256_mask, "V8iV8iV8iV8iUc", "")
BUILTIN(__builtin_ia32_paddq256_mask, "V4LLiV4LLiV4LLiV4LLiUc", "")
BUILTIN(__builtin_ia32_psubd256_mask, "V8iV8iV8iV8iUc", "")
BUILTIN(__builtin_ia32_psubq256_mask, "V4LLiV4LLiV4LLiV4LLiUc", "")
BUILTIN(__builtin_ia32_paddd128_mask, "V4iV4iV4iV4iUc", "")
BUILTIN(__builtin_ia32_paddq128_mask, "V2LLiV2LLiV2LLiV2LLiUc", "")
BUILTIN(__builtin_ia32_psubd128_mask, "V4iV4iV4iV4iUc", "")
BUILTIN(__builtin_ia32_psubq128_mask, "V2LLiV2LLiV2LLiV2LLiUc", "")
BUILTIN(__builtin_ia32_pmuldq256_mask, "V4LLiV8iV8iV4LLiUc", "")
BUILTIN(__builtin_ia32_pmuldq128_mask, "V2LLiV4iV4iV2LLiUc", "")
BUILTIN(__builtin_ia32_pmuludq256_mask, "V4LLiV8iV8iV4LLiUc", "")
BUILTIN(__builtin_ia32_pmuludq128_mask, "V2LLiV4iV4iV2LLiUc", "")
BUILTIN(__builtin_ia32_pmulld256_mask, "V8iV8iV8iV8iUc", "")
BUILTIN(__builtin_ia32_pmulld128_mask, "V4iV4iV4iV4iUc", "")
BUILTIN(__builtin_ia32_pandd256_mask, "V8iV8iV8iV8iUc", "")
BUILTIN(__builtin_ia32_pandd128_mask, "V4iV4iV4iV4iUc", "")
BUILTIN(__builtin_ia32_pandnd256_mask, "V8iV8iV8iV8iUc", "")
BUILTIN(__builtin_ia32_pandnd128_mask, "V4iV4iV4iV4iUc", "")
BUILTIN(__builtin_ia32_pord256_mask, "V8iV8iV8iV8iUc", "")
BUILTIN(__builtin_ia32_pord128_mask, "V4iV4iV4iV4iUc", "")
BUILTIN(__builtin_ia32_pxord256_mask, "V8iV8iV8iV8iUc", "")
BUILTIN(__builtin_ia32_pxord128_mask, "V4iV4iV4iV4iUc", "")
BUILTIN(__builtin_ia32_pandq256_mask, "V4LLiV4LLiV4LLiV4LLiUc", "")
BUILTIN(__builtin_ia32_pandq128_mask, "V2LLiV2LLiV2LLiV2LLiUc", "")
BUILTIN(__builtin_ia32_pandnq256_mask, "V4LLiV4LLiV4LLiV4LLiUc", "")
BUILTIN(__builtin_ia32_pandnq128_mask, "V2LLiV2LLiV2LLiV2LLiUc", "")
BUILTIN(__builtin_ia32_porq256_mask, "V4LLiV4LLiV4LLiV4LLiUc", "")
BUILTIN(__builtin_ia32_porq128_mask, "V2LLiV2LLiV2LLiV2LLiUc", "")
BUILTIN(__builtin_ia32_pxorq256_mask, "V4LLiV4LLiV4LLiV4LLiUc", "")
BUILTIN(__builtin_ia32_pxorq128_mask, "V2LLiV2LLiV2LLiV2LLiUc", "")
BUILTIN(__builtin_ia32_paddb512_mask, "V64cV64cV64cV64cULLi", "")
BUILTIN(__builtin_ia32_psubb512_mask, "V64cV64cV64cV64cULLi", "")
BUILTIN(__builtin_ia32_paddw512_mask, "V32sV32sV32sV32sUi", "")
BUILTIN(__builtin_ia32_psubw512_mask, "V32sV32sV32sV32sUi", "")
BUILTIN(__builtin_ia32_pmullw512_mask, "V32sV32sV32sV32sUi", "")
BUILTIN(__builtin_ia32_paddb256_mask, "V32cV32cV32cV32cUi", "")
BUILTIN(__builtin_ia32_paddw256_mask, "V16sV16sV16sV16sUs", "")
BUILTIN(__builtin_ia32_psubb256_mask, "V32cV32cV32cV32cUi", "")
BUILTIN(__builtin_ia32_psubw256_mask, "V16sV16sV16sV16sUs", "")
BUILTIN(__builtin_ia32_paddb128_mask, "V16cV16cV16cV16cUs", "")
BUILTIN(__builtin_ia32_paddw128_mask, "V8sV8sV8sV8sUc", "")
BUILTIN(__builtin_ia32_psubb128_mask, "V16cV16cV16cV16cUs", "")
BUILTIN(__builtin_ia32_psubw128_mask, "V8sV8sV8sV8sUc", "")
BUILTIN(__builtin_ia32_pmullw256_mask, "V16sV16sV16sV16sUs", "")
BUILTIN(__builtin_ia32_pmullw128_mask, "V8sV8sV8sV8sUc", "")
BUILTIN(__builtin_ia32_pandnd512_mask, "V16iV16iV16iV16iUs", "")
BUILTIN(__builtin_ia32_pandnq512_mask, "V8LLiV8LLiV8LLiV8LLiUc", "")
BUILTIN(__builtin_ia32_paddq512_mask, "V8LLiV8LLiV8LLiV8LLiUc", "")
BUILTIN(__builtin_ia32_psubq512_mask, "V8LLiV8LLiV8LLiV8LLiUc", "")
BUILTIN(__builtin_ia32_paddd512_mask, "V16iV16iV16iV16iUs", "")
BUILTIN(__builtin_ia32_psubd512_mask, "V16iV16iV16iV16iUs", "")
BUILTIN(__builtin_ia32_pmulld512_mask, "V16iV16iV16iV16iUs", "")
#undef BUILTIN

View File

@ -33,6 +33,25 @@ typedef unsigned long long __mmask64;
typedef char __v64qi __attribute__ ((__vector_size__ (64)));
typedef short __v32hi __attribute__ ((__vector_size__ (64)));
static __inline __v64qi __attribute__ ((__always_inline__, __nodebug__))
_mm512_setzero_qi (void) {
return (__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 };
}
static __inline __v32hi __attribute__ ((__always_inline__, __nodebug__))
_mm512_setzero_hi (void) {
return (__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 };
}
/* Integer compare */
@ -324,6 +343,116 @@ _mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
__u);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_add_epi8 (__m512i __A, __m512i __B) {
return (__m512i) ((__v64qi) __A + (__v64qi) __B);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
(__v64qi) __B,
(__v64qi) __W,
(__mmask64) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
(__v64qi) __B,
(__v64qi)
_mm512_setzero_qi (),
(__mmask64) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_sub_epi8 (__m512i __A, __m512i __B) {
return (__m512i) ((__v64qi) __A - (__v64qi) __B);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
(__v64qi) __B,
(__v64qi) __W,
(__mmask64) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
(__v64qi) __B,
(__v64qi)
_mm512_setzero_qi (),
(__mmask64) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_add_epi16 (__m512i __A, __m512i __B) {
return (__m512i) ((__v32hi) __A + (__v32hi) __B);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
(__v32hi) __B,
(__v32hi) __W,
(__mmask32) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
(__v32hi) __B,
(__v32hi)
_mm512_setzero_hi (),
(__mmask32) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_sub_epi16 (__m512i __A, __m512i __B) {
return (__m512i) ((__v32hi) __A - (__v32hi) __B);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
(__v32hi) __B,
(__v32hi) __W,
(__mmask32) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
(__v32hi) __B,
(__v32hi)
_mm512_setzero_hi (),
(__mmask32) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
return (__m512i) ((__v32hi) __A * (__v32hi) __B);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
(__v32hi) __B,
(__v32hi) __W,
(__mmask32) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
(__v32hi) __B,
(__v32hi)
_mm512_setzero_hi (),
(__mmask32) __U);
}
#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
(__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
(__v64qi)(__m512i)(b), \

View File

@ -211,6 +211,62 @@ _mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
(__mmask8) __k);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_andnot_epi32 (__m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si)
_mm512_setzero_si512 (),
(__mmask16) -1);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si) __W,
(__mmask16) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si)
_mm512_setzero_si512 (),
(__mmask16) __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_andnot_epi64 (__m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
(__v8di) __B,
(__v8di)
_mm512_setzero_si512 (),
(__mmask8) -1);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
(__v8di) __B,
(__v8di) __W, __U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
(__v8di) __B,
(__v8di)
_mm512_setzero_pd (),
__U);
}
static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
_mm512_or_epi32(__m512i __a, __m512i __b)
{
@ -362,6 +418,106 @@ _mm512_sub_ps(__m512 __a, __m512 __b)
return __a - __b;
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_add_epi64 (__m512i __A, __m512i __B)
{
return (__m512i) ((__v8di) __A + (__v8di) __B);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
(__v8di) __B,
(__v8di) __W,
(__mmask8) __U);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
(__v8di) __B,
(__v8di)
_mm512_setzero_si512 (),
(__mmask8) __U);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_sub_epi64 (__m512i __A, __m512i __B)
{
return (__m512i) ((__v8di) __A - (__v8di) __B);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
(__v8di) __B,
(__v8di) __W,
(__mmask8) __U);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
(__v8di) __B,
(__v8di)
_mm512_setzero_si512 (),
(__mmask8) __U);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_add_epi32 (__m512i __A, __m512i __B)
{
return (__m512i) ((__v16si) __A + (__v16si) __B);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si) __W,
(__mmask16) __U);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si)
_mm512_setzero_si512 (),
(__mmask16) __U);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_sub_epi32 (__m512i __A, __m512i __B)
{
return (__m512i) ((__v16si) __A - (__v16si) __B);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si) __W,
(__mmask16) __U);
}
static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si)
_mm512_setzero_si512 (),
(__mmask16) __U);
}
static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_max_pd(__m512d __A, __m512d __B)
{
@ -498,6 +654,24 @@ _mm512_mul_epi32(__m512i __X, __m512i __Y)
(__mmask8) -1);
}
static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
{
return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
(__v16si) __Y,
(__v8di) __W, __M);
}
static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
{
return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
(__v16si) __Y,
(__v8di)
_mm512_setzero_si512 (),
__M);
}
static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mul_epu32(__m512i __X, __m512i __Y)
{
@ -508,6 +682,48 @@ _mm512_mul_epu32(__m512i __X, __m512i __Y)
(__mmask8) -1);
}
static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
{
return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
(__v16si) __Y,
(__v8di) __W, __M);
}
static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
{
return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
(__v16si) __Y,
(__v8di)
_mm512_setzero_si512 (),
__M);
}
static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mullo_epi32 (__m512i __A, __m512i __B)
{
return (__m512i) ((__v16si) __A * (__v16si) __B);
}
static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si)
_mm512_setzero_si512 (),
__M);
}
static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
{
return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si) __W, __M);
}
static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_sqrt_pd(__m512d a)
{

View File

@ -606,6 +606,174 @@ _mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
__u);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
(__v32qi) __B,
(__v32qi) __W,
(__mmask32) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
(__v32qi) __B,
(__v32qi)
_mm256_setzero_si256 (),
(__mmask32) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
(__v16hi) __B,
(__v16hi) __W,
(__mmask16) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
(__v16hi) __B,
(__v16hi)
_mm256_setzero_si256 (),
(__mmask16) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
(__v32qi) __B,
(__v32qi) __W,
(__mmask32) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
(__v32qi) __B,
(__v32qi)
_mm256_setzero_si256 (),
(__mmask32) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
(__v16hi) __B,
(__v16hi) __W,
(__mmask16) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
(__v16hi) __B,
(__v16hi)
_mm256_setzero_si256 (),
(__mmask16) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
(__v16qi) __B,
(__v16qi) __W,
(__mmask16) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
(__v16qi) __B,
(__v16qi)
_mm_setzero_si128 (),
(__mmask16) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
(__v8hi) __B,
(__v8hi) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
(__v8hi) __B,
(__v8hi)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
(__v16qi) __B,
(__v16qi) __W,
(__mmask16) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
(__v16qi) __B,
(__v16qi)
_mm_setzero_si128 (),
(__mmask16) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
(__v8hi) __B,
(__v8hi) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
(__v8hi) __B,
(__v8hi)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
(__v16hi) __B,
(__v16hi) __W,
(__mmask16) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
(__v16hi) __B,
(__v16hi)
_mm256_setzero_si256 (),
(__mmask16) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
(__v8hi) __B,
(__v8hi) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
(__v8hi) __B,
(__v8hi)
_mm_setzero_si128 (),
(__mmask8) __U);
}
#define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
(__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
(__v16qi)(__m128i)(b), \

View File

@ -610,6 +610,593 @@ _mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
__u);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_paddd256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_add_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_paddd256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_add_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_paddq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_add_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_paddq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_sub_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_psubd256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_sub_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_psubd256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_sub_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_psubq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_sub_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_psubq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_add_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_paddd128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_add_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_paddd128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_add_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_paddq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_add_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_paddq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_sub_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_psubd128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_sub_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_psubd128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_sub_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_psubq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_sub_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_psubq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_mul_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
__m256i __Y)
{
return (__m256i) __builtin_ia32_pmuldq256_mask ((__v8si) __X,
(__v8si) __Y,
(__v4di) __W, __M);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_mul_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
{
return (__m256i) __builtin_ia32_pmuldq256_mask ((__v8si) __X,
(__v8si) __Y,
(__v4di)
_mm256_setzero_si256 (),
__M);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_mul_epi32 (__m128i __W, __mmask8 __M, __m128i __X,
__m128i __Y)
{
return (__m128i) __builtin_ia32_pmuldq128_mask ((__v4si) __X,
(__v4si) __Y,
(__v2di) __W, __M);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_mul_epi32 (__mmask8 __M, __m128i __X, __m128i __Y)
{
return (__m128i) __builtin_ia32_pmuldq128_mask ((__v4si) __X,
(__v4si) __Y,
(__v2di)
_mm_setzero_si128 (),
__M);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_mask_mul_epu32 (__m256i __W, __mmask8 __M, __m256i __X,
__m256i __Y)
{
return (__m256i) __builtin_ia32_pmuludq256_mask ((__v8si) __X,
(__v8si) __Y,
(__v4di) __W, __M);
}
static __inline__ __m256i __attribute__((__always_inline__, __nodebug__))
_mm256_maskz_mul_epu32 (__mmask8 __M, __m256i __X, __m256i __Y)
{
return (__m256i) __builtin_ia32_pmuludq256_mask ((__v8si) __X,
(__v8si) __Y,
(__v4di)
_mm256_setzero_si256 (),
__M);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_mask_mul_epu32 (__m128i __W, __mmask8 __M, __m128i __X,
__m128i __Y)
{
return (__m128i) __builtin_ia32_pmuludq128_mask ((__v4si) __X,
(__v4si) __Y,
(__v2di) __W, __M);
}
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
_mm_maskz_mul_epu32 (__mmask8 __M, __m128i __X, __m128i __Y)
{
return (__m128i) __builtin_ia32_pmuludq128_mask ((__v4si) __X,
(__v4si) __Y,
(__v2di)
_mm_setzero_si128 (),
__M);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_mullo_epi32 (__mmask8 __M, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_pmulld256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si)
_mm256_setzero_si256 (),
__M);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_mullo_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_pmulld256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si) __W, __M);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_mullo_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pmulld128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si)
_mm_setzero_si128 (),
__M);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_mullo_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_pmulld128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si) __W, __M);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_and_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_pandd256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_and_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_pandd256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_and_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pandd128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_and_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pandd128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_andnot_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_pandnd256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_andnot_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_pandnd256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_andnot_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_pandnd128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pandnd128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_pord256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_or_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_pord256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_or_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pord128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_or_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pord128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_xor_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_pxord256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_xor_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_pxord256_mask ((__v8si) __A,
(__v8si) __B,
(__v8si)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_xor_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_pxord128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_xor_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pxord128_mask ((__v4si) __A,
(__v4si) __B,
(__v4si)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_and_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_pandq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di) __W, __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_and_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_pandq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di)
_mm256_setzero_pd (),
__U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_and_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_pandq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di) __W, __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_and_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pandq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di)
_mm_setzero_pd (),
__U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_andnot_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_pandnq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di) __W, __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_andnot_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_pandnq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di)
_mm256_setzero_pd (),
__U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_andnot_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_pandnq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di) __W, __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_andnot_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pandnq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di)
_mm_setzero_pd (),
__U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_or_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_porq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_or_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_porq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_or_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_porq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_or_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_porq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di)
_mm_setzero_si128 (),
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_mask_xor_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B)
{
return (__m256i) __builtin_ia32_pxorq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di) __W,
(__mmask8) __U);
}
static __inline__ __m256i __attribute__ ((__always_inline__, __nodebug__))
_mm256_maskz_xor_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
{
return (__m256i) __builtin_ia32_pxorq256_mask ((__v4di) __A,
(__v4di) __B,
(__v4di)
_mm256_setzero_si256 (),
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_mask_xor_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B)
{
return (__m128i) __builtin_ia32_pxorq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di) __W,
(__mmask8) __U);
}
static __inline__ __m128i __attribute__ ((__always_inline__, __nodebug__))
_mm_maskz_xor_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
{
return (__m128i) __builtin_ia32_pxorq128_mask ((__v2di) __A,
(__v2di) __B,
(__v2di)
_mm_setzero_si128 (),
(__mmask8) __U);
}
#define _mm_cmp_epi32_mask(a, b, p) __extension__ ({ \
(__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
(__v4si)(__m128i)(b), \

View File

@ -337,3 +337,93 @@ __mmask32 test_mm512_mask_cmp_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b
// CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i8 7, i32 {{.*}})
return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 7);
}
__m512i test_mm512_add_epi8 (__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_add_epi8
//CHECK: add <64 x i8>
return _mm512_add_epi8(__A,__B);
}
__m512i test_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_mask_add_epi8
//CHECK: @llvm.x86.avx512.mask.padd.b.512
return _mm512_mask_add_epi8(__W, __U, __A, __B);
}
__m512i test_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_add_epi8
//CHECK: @llvm.x86.avx512.mask.padd.b.512
return _mm512_maskz_add_epi8(__U, __A, __B);
}
__m512i test_mm512_sub_epi8 (__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_sub_epi8
//CHECK: sub <64 x i8>
return _mm512_sub_epi8(__A, __B);
}
__m512i test_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_mask_sub_epi8
//CHECK: @llvm.x86.avx512.mask.psub.b.512
return _mm512_mask_sub_epi8(__W, __U, __A, __B);
}
__m512i test_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_sub_epi8
//CHECK: @llvm.x86.avx512.mask.psub.b.512
return _mm512_maskz_sub_epi8(__U, __A, __B);
}
__m512i test_mm512_add_epi16 (__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_add_epi16
//CHECK: add <32 x i16>
return _mm512_add_epi16(__A, __B);
}
__m512i test_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_mask_add_epi16
//CHECK: @llvm.x86.avx512.mask.padd.w.512
return _mm512_mask_add_epi16(__W, __U, __A, __B);
}
__m512i test_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_add_epi16
//CHECK: @llvm.x86.avx512.mask.padd.w.512
return _mm512_maskz_add_epi16(__U, __A, __B);
}
__m512i test_mm512_sub_epi16 (__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_sub_epi16
//CHECK: sub <32 x i16>
return _mm512_sub_epi16(__A, __B);
}
__m512i test_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_mask_sub_epi16
//CHECK: @llvm.x86.avx512.mask.psub.w.512
return _mm512_mask_sub_epi16(__W, __U, __A, __B);
}
__m512i test_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_sub_epi16
//CHECK: @llvm.x86.avx512.mask.psub.w.512
return _mm512_maskz_sub_epi16(__U, __A, __B);
}
__m512i test_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_mullo_epi16
//CHECK: mul <32 x i16>
return _mm512_mullo_epi16(__A, __B);
}
__m512i test_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_mask_mullo_epi16
//CHECK: @llvm.x86.avx512.mask.pmull.w.512
return _mm512_mask_mullo_epi16(__W, __U, __A, __B);
}
__m512i test_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_mullo_epi16
//CHECK: @llvm.x86.avx512.mask.pmull.w.512
return _mm512_maskz_mullo_epi16(__U, __A, __B);
}

View File

@ -742,3 +742,160 @@ __m512i test_mm512_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __
return _mm512_xor_epi64(__a, __b);
}
__m512i test_mm512_maskz_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B){
//CHECK-LABEL: @test_mm512_maskz_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.512
return _mm512_maskz_andnot_epi32(__k,__A,__B);
}
__m512i test_mm512_mask_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
__m512i __src) {
//CHECK-LABEL: @test_mm512_mask_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.512
return _mm512_mask_andnot_epi32(__src,__k,__A,__B);
}
__m512i test_mm512_andnot_epi32(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.512
return _mm512_andnot_epi32(__A,__B);
}
__m512i test_mm512_maskz_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.512
return _mm512_maskz_andnot_epi64(__k,__A,__B);
}
__m512i test_mm512_mask_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
__m512i __src) {
//CHECK-LABEL: @test_mm512_mask_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.512
return _mm512_mask_andnot_epi64(__src,__k,__A,__B);
}
__m512i test_mm512_andnot_epi64(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.512
return _mm512_andnot_epi64(__A,__B);
}
__m512i test_mm512_maskz_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_sub_epi32
//CHECK: @llvm.x86.avx512.mask.psub.d.512
return _mm512_maskz_sub_epi32(__k,__A,__B);
}
__m512i test_mm512_mask_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
__m512i __src) {
//CHECK-LABEL: @test_mm512_mask_sub_epi32
//CHECK: @llvm.x86.avx512.mask.psub.d.512
return _mm512_mask_sub_epi32(__src,__k,__A,__B);
}
__m512i test_mm512_sub_epi32(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_sub_epi32
//CHECK: sub <16 x i32>
return _mm512_sub_epi32(__A,__B);
}
__m512i test_mm512_maskz_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_sub_epi64
//CHECK: @llvm.x86.avx512.mask.psub.q.512
return _mm512_maskz_sub_epi64(__k,__A,__B);
}
__m512i test_mm512_mask_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
__m512i __src) {
//CHECK-LABEL: @test_mm512_mask_sub_epi64
//CHECK: @llvm.x86.avx512.mask.psub.q.512
return _mm512_mask_sub_epi64(__src,__k,__A,__B);
}
__m512i test_mm512_sub_epi64(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_sub_epi64
//CHECK: sub <8 x i64>
return _mm512_sub_epi64(__A,__B);
}
__m512i test_mm512_maskz_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_add_epi32
//CHECK: @llvm.x86.avx512.mask.padd.d.512
return _mm512_maskz_add_epi32(__k,__A,__B);
}
__m512i test_mm512_mask_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
__m512i __src) {
//CHECK-LABEL: @test_mm512_mask_add_epi32
//CHECK: @llvm.x86.avx512.mask.padd.d.512
return _mm512_mask_add_epi32(__src,__k,__A,__B);
}
__m512i test_mm512_add_epi32(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_add_epi32
//CHECK: add <16 x i32>
return _mm512_add_epi32(__A,__B);
}
__m512i test_mm512_maskz_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_add_epi64
//CHECK: @llvm.x86.avx512.mask.padd.q.512
return _mm512_maskz_add_epi64(__k,__A,__B);
}
__m512i test_mm512_mask_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
__m512i __src) {
//CHECK-LABEL: @test_mm512_mask_add_epi64
//CHECK: @llvm.x86.avx512.mask.padd.q.512
return _mm512_mask_add_epi64(__src,__k,__A,__B);
}
__m512i test_mm512_add_epi64(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_add_epi64
//CHECK: add <8 x i64>
return _mm512_add_epi64(__A,__B);
}
__m512i test_mm512_maskz_mul_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_mul_epi32
//CHECK: @llvm.x86.avx512.mask.pmul.dq.512
return _mm512_maskz_mul_epi32(__k,__A,__B);
}
__m512i test_mm512_mask_mul_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
__m512i __src) {
//CHECK-LABEL: @test_mm512_mask_mul_epi32
//CHECK: @llvm.x86.avx512.mask.pmul.dq.512
return _mm512_mask_mul_epi32(__src,__k,__A,__B);
}
__m512i test_mm512_maskz_mul_epu32 (__mmask16 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_mul_epu32
//CHECK: @llvm.x86.avx512.mask.pmulu.dq.512
return _mm512_maskz_mul_epu32(__k,__A,__B);
}
__m512i test_mm512_mask_mul_epu32 (__mmask16 __k,__m512i __A, __m512i __B,
__m512i __src) {
//CHECK-LABEL: @test_mm512_mask_mul_epu32
//CHECK: @llvm.x86.avx512.mask.pmulu.dq.512
return _mm512_mask_mul_epu32(__src,__k,__A,__B);
}
__m512i test_mm512_maskz_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_mullo_epi32
//CHECK: @llvm.x86.avx512.mask.pmull.d.512
return _mm512_maskz_mullo_epi32(__k,__A,__B);
}
__m512i test_mm512_mask_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B, __m512i __src) {
//CHECK-LABEL: @test_mm512_mask_mullo_epi32
//CHECK: @llvm.x86.avx512.mask.pmull.d.512
return _mm512_mask_mullo_epi32(__src,__k,__A,__B);
}
__m512i test_mm512_mullo_epi32(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_mullo_epi32
//CHECK: mul <16 x i32>
return _mm512_mullo_epi32(__A,__B);
}

View File

@ -649,3 +649,428 @@ __mmask8 test_mm256_mask_cmp_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b)
// CHECK: @llvm.x86.avx512.mask.ucmp.q.256(<4 x i64> {{.*}}, <4 x i64> {{.*}}, i8 7, i8 {{.*}})
return (__mmask8)_mm256_mask_cmp_epu64_mask(__u, __a, __b, 7);
}
__m512i test_mm512_maskz_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.512
return _mm512_maskz_andnot_epi32(__k,__A,__B);
}
__m512i test_mm512_mask_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B, __m512i __src) {
//CHECK-LABEL: @test_mm512_mask_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.512
return _mm512_mask_andnot_epi32(__src,__k,__A,__B);
}
__m512i test_mm512_andnot_epi32(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.512
return _mm512_andnot_epi32(__A,__B);
}
__m512i test_mm512_maskz_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_maskz_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.512
return _mm512_maskz_andnot_epi64(__k,__A,__B);
}
__m512i test_mm512_mask_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
//CHECK-LABEL: @test_mm512_mask_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.512
return _mm512_mask_andnot_epi64(__src,__k,__A,__B);
}
__m512i test_mm512_andnot_epi64(__m512i __A, __m512i __B) {
//CHECK-LABEL: @test_mm512_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.512
return _mm512_andnot_epi64(__A,__B);
}
__m256i test_mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_add_epi32
//CHECK: @llvm.x86.avx512.mask.padd.d.256
return _mm256_mask_add_epi32(__W, __U, __A, __B);
}
__m256i test_mm256_maskz_add_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_add_epi32
//CHECK: @llvm.x86.avx512.mask.padd.d.256
return _mm256_maskz_add_epi32(__U, __A, __B);
}
__m256i test_mm256_mask_add_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_add_epi64
//CHECK: @llvm.x86.avx512.mask.padd.q.256
return _mm256_mask_add_epi64(__W,__U,__A,__B);
}
__m256i test_mm256_maskz_add_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_add_epi64
//CHECK: @llvm.x86.avx512.mask.padd.q.256
return _mm256_maskz_add_epi64 (__U,__A,__B);
}
__m256i test_mm256_mask_sub_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_sub_epi32
//CHECK: @llvm.x86.avx512.mask.psub.d.256
return _mm256_mask_sub_epi32 (__W,__U,__A,__B);
}
__m256i test_mm256_maskz_sub_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_sub_epi32
//CHECK: @llvm.x86.avx512.mask.psub.d.256
return _mm256_maskz_sub_epi32 (__U,__A,__B);
}
__m256i test_mm256_mask_sub_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_sub_epi64
//CHECK: @llvm.x86.avx512.mask.psub.q.256
return _mm256_mask_sub_epi64 (__W,__U,__A,__B);
}
__m256i test_mm256_maskz_sub_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_sub_epi64
//CHECK: @llvm.x86.avx512.mask.psub.q.256
return _mm256_maskz_sub_epi64 (__U,__A,__B);
}
__m128i test_mm_mask_add_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_add_epi32
//CHECK: @llvm.x86.avx512.mask.padd.d.128
return _mm_mask_add_epi32(__W,__U,__A,__B);
}
__m128i test_mm_maskz_add_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_add_epi32
//CHECK: @llvm.x86.avx512.mask.padd.d.128
return _mm_maskz_add_epi32 (__U,__A,__B);
}
__m128i test_mm_mask_add_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_add_epi64
//CHECK: @llvm.x86.avx512.mask.padd.q.128
return _mm_mask_add_epi64 (__W,__U,__A,__B);
}
__m128i test_mm_maskz_add_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_add_epi64
//CHECK: @llvm.x86.avx512.mask.padd.q.128
return _mm_maskz_add_epi64 (__U,__A,__B);
}
__m128i test_mm_mask_sub_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_sub_epi32
//CHECK: @llvm.x86.avx512.mask.psub.d.128
return _mm_mask_sub_epi32(__W, __U, __A, __B);
}
__m128i test_mm_maskz_sub_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_sub_epi32
//CHECK: @llvm.x86.avx512.mask.psub.d.128
return _mm_maskz_sub_epi32(__U, __A, __B);
}
__m128i test_mm_mask_sub_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_sub_epi64
//CHECK: @llvm.x86.avx512.mask.psub.q.128
return _mm_mask_sub_epi64 (__W, __U, __A, __B);
}
__m128i test_mm_maskz_sub_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_sub_epi64
//CHECK: @llvm.x86.avx512.mask.psub.q.128
return _mm_maskz_sub_epi64 (__U, __A, __B);
}
__m256i test_mm256_mask_mul_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
__m256i __Y) {
//CHECK-LABEL: @test_mm256_mask_mul_epi32
//CHECK: @llvm.x86.avx512.mask.pmul.dq.256
return _mm256_mask_mul_epi32(__W, __M, __X, __Y);
}
__m256i test_mm256_maskz_mul_epi32 (__mmask8 __M, __m256i __X, __m256i __Y) {
//CHECK-LABEL: @test_mm256_maskz_mul_epi32
//CHECK: @llvm.x86.avx512.mask.pmul.dq.256
return _mm256_maskz_mul_epi32(__M, __X, __Y);
}
__m128i test_mm_mask_mul_epi32 (__m128i __W, __mmask8 __M, __m128i __X,
__m128i __Y) {
//CHECK-LABEL: @test_mm_mask_mul_epi32
//CHECK: @llvm.x86.avx512.mask.pmul.dq.128
return _mm_mask_mul_epi32(__W, __M, __X, __Y);
}
__m128i test_mm_maskz_mul_epi32 (__mmask8 __M, __m128i __X, __m128i __Y) {
//CHECK-LABEL: @test_mm_maskz_mul_epi32
//CHECK: @llvm.x86.avx512.mask.pmul.dq.128
return _mm_maskz_mul_epi32(__M, __X, __Y);
}
__m256i test_mm256_mask_mul_epu32 (__m256i __W, __mmask8 __M, __m256i __X,
__m256i __Y) {
//CHECK-LABEL: @test_mm256_mask_mul_epu32
//CHECK: @llvm.x86.avx512.mask.pmulu.dq.256
return _mm256_mask_mul_epu32(__W, __M, __X, __Y);
}
__m256i test_mm256_maskz_mul_epu32 (__mmask8 __M, __m256i __X, __m256i __Y) {
//CHECK-LABEL: @test_mm256_maskz_mul_epu32
//CHECK: @llvm.x86.avx512.mask.pmulu.dq.256
return _mm256_maskz_mul_epu32(__M, __X, __Y);
}
__m128i test_mm_mask_mul_epu32 (__m128i __W, __mmask8 __M, __m128i __X,
__m128i __Y) {
//CHECK-LABEL: @test_mm_mask_mul_epu32
//CHECK: @llvm.x86.avx512.mask.pmulu.dq.128
return _mm_mask_mul_epu32(__W, __M, __X, __Y);
}
__m128i test_mm_maskz_mul_epu32 (__mmask8 __M, __m128i __X, __m128i __Y) {
//CHECK-LABEL: @test_mm_maskz_mul_epu32
//CHECK: @llvm.x86.avx512.mask.pmulu.dq.128
return _mm_maskz_mul_epu32(__M, __X, __Y);
}
__m128i test_mm_maskz_mullo_epi32 (__mmask8 __M, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_mullo_epi32
//CHECK: @llvm.x86.avx512.mask.pmull.d.128
return _mm_maskz_mullo_epi32(__M, __A, __B);
}
__m128i test_mm_mask_mullo_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_mullo_epi32
//CHECK: @llvm.x86.avx512.mask.pmull.d.128
return _mm_mask_mullo_epi32(__W, __M, __A, __B);
}
__m256i test_mm256_maskz_mullo_epi32 (__mmask8 __M, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_mullo_epi32
//CHECK: @llvm.x86.avx512.mask.pmull.d.256
return _mm256_maskz_mullo_epi32(__M, __A, __B);
}
__m256i test_mm256_mask_mullo_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_mullo_epi32
//CHECK: @llvm.x86.avx512.mask.pmull.d.256
return _mm256_mask_mullo_epi32(__W, __M, __A, __B);
}
__m256i test_mm256_mask_and_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_and_epi32
//CHECK: @llvm.x86.avx512.mask.pand.d.256
return _mm256_mask_and_epi32(__W, __U, __A, __B);
}
__m256i test_mm256_maskz_and_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_and_epi32
//CHECK: @llvm.x86.avx512.mask.pand.d.256
return _mm256_maskz_and_epi32(__U, __A, __B);
}
__m128i test_mm_mask_and_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_and_epi32
//CHECK: @llvm.x86.avx512.mask.pand.d.128
return _mm_mask_and_epi32(__W, __U, __A, __B);
}
__m128i test_mm_maskz_and_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_and_epi32
//CHECK: @llvm.x86.avx512.mask.pand.d.128
return _mm_maskz_and_epi32(__U, __A, __B);
}
__m256i test_mm256_mask_andnot_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.256
return _mm256_mask_andnot_epi32(__W, __U, __A, __B);
}
__m256i test_mm256_maskz_andnot_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.256
return _mm256_maskz_andnot_epi32(__U, __A, __B);
}
__m128i test_mm_mask_andnot_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.128
return _mm_mask_andnot_epi32(__W, __U, __A, __B);
}
__m128i test_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_andnot_epi32
//CHECK: @llvm.x86.avx512.mask.pandn.d.128
return _mm_maskz_andnot_epi32(__U, __A, __B);
}
__m256i test_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_or_epi32
//CHECK: @llvm.x86.avx512.mask.por.d.256
return _mm256_mask_or_epi32(__W, __U, __A, __B);
}
__m256i test_mm256_maskz_or_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_or_epi32
//CHECK: @llvm.x86.avx512.mask.por.d.256
return _mm256_maskz_or_epi32(__U, __A, __B);
}
__m128i test_mm_mask_or_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_or_epi32
//CHECK: @llvm.x86.avx512.mask.por.d.128
return _mm_mask_or_epi32(__W, __U, __A, __B);
}
__m128i test_mm_maskz_or_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_or_epi32
//CHECK: @llvm.x86.avx512.mask.por.d.128
return _mm_maskz_or_epi32(__U, __A, __B);
}
__m256i test_mm256_mask_xor_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_xor_epi32
//CHECK: @llvm.x86.avx512.mask.pxor.d.256
return _mm256_mask_xor_epi32(__W, __U, __A, __B);
}
__m256i test_mm256_maskz_xor_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_xor_epi32
//CHECK: @llvm.x86.avx512.mask.pxor.d.256
return _mm256_maskz_xor_epi32(__U, __A, __B);
}
__m128i test_mm_mask_xor_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_xor_epi32
//CHECK: @llvm.x86.avx512.mask.pxor.d.128
return _mm_mask_xor_epi32(__W, __U, __A, __B);
}
__m128i test_mm_maskz_xor_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_xor_epi32
//CHECK: @llvm.x86.avx512.mask.pxor.d.128
return _mm_maskz_xor_epi32(__U, __A, __B);
}
__m256i test_mm256_mask_and_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_and_epi64
//CHECK: @llvm.x86.avx512.mask.pand.q.256
return _mm256_mask_and_epi64(__W, __U, __A, __B);
}
__m256i test_mm256_maskz_and_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_and_epi64
//CHECK: @llvm.x86.avx512.mask.pand.q.256
return _mm256_maskz_and_epi64(__U, __A, __B);
}
__m128i test_mm_mask_and_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_and_epi64
//CHECK: @llvm.x86.avx512.mask.pand.q.128
return _mm_mask_and_epi64(__W,__U, __A, __B);
}
__m128i test_mm_maskz_and_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_and_epi64
//CHECK: @llvm.x86.avx512.mask.pand.q.128
return _mm_maskz_and_epi64(__U, __A, __B);
}
__m256i test_mm256_mask_andnot_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.256
return _mm256_mask_andnot_epi64(__W, __U, __A, __B);
}
__m256i test_mm256_maskz_andnot_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.256
return _mm256_maskz_andnot_epi64(__U, __A, __B);
}
__m128i test_mm_mask_andnot_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
__m128i __B) {
//CHECK-LABEL: @test_mm_mask_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.128
return _mm_mask_andnot_epi64(__W,__U, __A, __B);
}
__m128i test_mm_maskz_andnot_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_andnot_epi64
//CHECK: @llvm.x86.avx512.mask.pandn.q.128
return _mm_maskz_andnot_epi64(__U, __A, __B);
}
__m256i test_mm256_mask_or_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_or_epi64
//CHECK: @llvm.x86.avx512.mask.por.q.256
return _mm256_mask_or_epi64(__W,__U, __A, __B);
}
__m256i test_mm256_maskz_or_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_or_epi64
//CHECK: @llvm.x86.avx512.mask.por.q.256
return _mm256_maskz_or_epi64(__U, __A, __B);
}
__m128i test_mm_mask_or_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_or_epi64
//CHECK: @llvm.x86.avx512.mask.por.q.128
return _mm_mask_or_epi64(__W, __U, __A, __B);
}
__m128i test_mm_maskz_or_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_or_epi64
//CHECK: @llvm.x86.avx512.mask.por.q.128
return _mm_maskz_or_epi64( __U, __A, __B);
}
__m256i test_mm256_mask_xor_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
__m256i __B) {
//CHECK-LABEL: @test_mm256_mask_xor_epi64
//CHECK: @llvm.x86.avx512.mask.pxor.q.256
return _mm256_mask_xor_epi64(__W,__U, __A, __B);
}
__m256i test_mm256_maskz_xor_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_xor_epi64
//CHECK: @llvm.x86.avx512.mask.pxor.q.256
return _mm256_maskz_xor_epi64(__U, __A, __B);
}
__m128i test_mm_mask_xor_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_xor_epi64
//CHECK: @llvm.x86.avx512.mask.pxor.q.128
return _mm_mask_xor_epi64(__W, __U, __A, __B);
}
__m128i test_mm_maskz_xor_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_xor_epi64
//CHECK: @llvm.x86.avx512.mask.pxor.q.128
return _mm_maskz_xor_epi64( __U, __A, __B);
}

View File

@ -673,3 +673,122 @@ __mmask16 test_mm256_mask_cmp_epu16_mask(__mmask32 __u, __m256i __a, __m256i __b
// CHECK: @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> {{.*}}, <16 x i16> {{.*}}, i8 7, i16 {{.*}})
return (__mmask32)_mm256_mask_cmp_epu16_mask(__u, __a, __b, 7);
}
__m256i test_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
//CHECK-LABEL: @test_mm256_mask_add_epi8
//CHECK: @llvm.x86.avx512.mask.padd.b.256
return _mm256_mask_add_epi8(__W, __U , __A, __B);
}
__m256i test_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_add_epi8
//CHECK: @llvm.x86.avx512.mask.padd.b.256
return _mm256_maskz_add_epi8(__U , __A, __B);
}
__m256i test_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_mask_add_epi16
//CHECK: @llvm.x86.avx512.mask.padd.w.256
return _mm256_mask_add_epi16(__W, __U , __A, __B);
}
__m256i test_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_add_epi16
//CHECK: @llvm.x86.avx512.mask.padd.w.256
return _mm256_maskz_add_epi16(__U , __A, __B);
}
__m256i test_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_mask_sub_epi8
//CHECK: @llvm.x86.avx512.mask.psub.b.256
return _mm256_mask_sub_epi8(__W, __U , __A, __B);
}
__m256i test_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_sub_epi8
//CHECK: @llvm.x86.avx512.mask.psub.b.256
return _mm256_maskz_sub_epi8(__U , __A, __B);
}
__m256i test_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_mask_sub_epi16
//CHECK: @llvm.x86.avx512.mask.psub.w.256
return _mm256_mask_sub_epi16(__W, __U , __A, __B);
}
__m256i test_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_sub_epi16
//CHECK: @llvm.x86.avx512.mask.psub.w.256
return _mm256_maskz_sub_epi16(__U , __A, __B);
}
__m128i test_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_add_epi8
//CHECK: @llvm.x86.avx512.mask.padd.b.128
return _mm_mask_add_epi8(__W, __U , __A, __B);
}
__m128i test_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_add_epi8
//CHECK: @llvm.x86.avx512.mask.padd.b.128
return _mm_maskz_add_epi8(__U , __A, __B);
}
__m128i test_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_add_epi16
//CHECK: @llvm.x86.avx512.mask.padd.w.128
return _mm_mask_add_epi16(__W, __U , __A, __B);
}
__m128i test_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_add_epi16
//CHECK: @llvm.x86.avx512.mask.padd.w.128
return _mm_maskz_add_epi16(__U , __A, __B);
}
__m128i test_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_sub_epi8
//CHECK: @llvm.x86.avx512.mask.psub.b.128
return _mm_mask_sub_epi8(__W, __U , __A, __B);
}
__m128i test_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_sub_epi8
//CHECK: @llvm.x86.avx512.mask.psub.b.128
return _mm_maskz_sub_epi8(__U , __A, __B);
}
__m128i test_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_sub_epi16
//CHECK: @llvm.x86.avx512.mask.psub.w.128
return _mm_mask_sub_epi16(__W, __U , __A, __B);
}
__m128i test_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_sub_epi16
//CHECK: @llvm.x86.avx512.mask.psub.w.128
return _mm_maskz_sub_epi16(__U , __A, __B);
}
__m256i test_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_mask_mullo_epi16
//CHECK: @llvm.x86.avx512.mask.pmull.w.256
return _mm256_mask_mullo_epi16(__W, __U , __A, __B);
}
__m256i test_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
//CHECK-LABEL: @test_mm256_maskz_mullo_epi16
//CHECK: @llvm.x86.avx512.mask.pmull.w.256
return _mm256_maskz_mullo_epi16(__U , __A, __B);
}
__m128i test_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_mask_mullo_epi16
//CHECK: @llvm.x86.avx512.mask.pmull.w.128
return _mm_mask_mullo_epi16(__W, __U , __A, __B);
}
__m128i test_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
//CHECK-LABEL: @test_mm_maskz_mullo_epi16
//CHECK: @llvm.x86.avx512.mask.pmull.w.128
return _mm_maskz_mullo_epi16(__U , __A, __B);
}