Skip to content

Commit 7a33dce

Browse files
committedFeb 21, 2016
[CLANG] [AVX512] [BUILTIN] Adding pmovzx{b|d|w}{w|d|q}{128|256|512} builtin to clang
Differential Revision: http://reviews.llvm.org/D16961 llvm-svn: 261471
1 parent e2ada8d commit 7a33dce

File tree

9 files changed

+752
-0
lines changed

9 files changed

+752
-0
lines changed
 

‎clang/include/clang/Basic/BuiltinsX86.def

+18
Original file line numberDiff line numberDiff line change
@@ -1590,6 +1590,24 @@ TARGET_BUILTIN(__builtin_ia32_pmovsxwd128_mask, "V4iV8sV4iUc","","avx512vl")
15901590
TARGET_BUILTIN(__builtin_ia32_pmovsxwd256_mask, "V8iV8sV8iUc","","avx512vl")
15911591
TARGET_BUILTIN(__builtin_ia32_pmovsxwq128_mask, "V2LLiV8sV2LLiUc","","avx512vl")
15921592
TARGET_BUILTIN(__builtin_ia32_pmovsxwq256_mask, "V4LLiV8sV4LLiUc","","avx512vl")
1593+
TARGET_BUILTIN(__builtin_ia32_pmovzxbw512_mask, "V32sV32cV32sUi","","avx512bw")
1594+
TARGET_BUILTIN(__builtin_ia32_pmovzxbd512_mask, "V16iV16cV16iUs","","avx512f")
1595+
TARGET_BUILTIN(__builtin_ia32_pmovzxbq512_mask, "V8LLiV16cV8LLiUc","","avx512f")
1596+
TARGET_BUILTIN(__builtin_ia32_pmovzxdq512_mask, "V8LLiV8iV8LLiUc","","avx512f")
1597+
TARGET_BUILTIN(__builtin_ia32_pmovzxwd512_mask, "V16iV16sV16iUs","","avx512f")
1598+
TARGET_BUILTIN(__builtin_ia32_pmovzxwq512_mask, "V8LLiV8sV8LLiUc","","avx512f")
1599+
TARGET_BUILTIN(__builtin_ia32_pmovzxbw128_mask, "V8sV16cV8sUc","","avx512vl,avx512bw")
1600+
TARGET_BUILTIN(__builtin_ia32_pmovzxbw256_mask, "V16sV16cV16sUs","","avx512vl,avx512bw")
1601+
TARGET_BUILTIN(__builtin_ia32_pmovzxbd128_mask, "V4iV16cV4iUc","","avx512vl")
1602+
TARGET_BUILTIN(__builtin_ia32_pmovzxbd256_mask, "V8iV16cV8iUc","","avx512vl")
1603+
TARGET_BUILTIN(__builtin_ia32_pmovzxbq128_mask, "V2LLiV16cV2LLiUc","","avx512vl")
1604+
TARGET_BUILTIN(__builtin_ia32_pmovzxbq256_mask, "V4LLiV16cV4LLiUc","","avx512vl")
1605+
TARGET_BUILTIN(__builtin_ia32_pmovzxdq128_mask, "V2LLiV4iV2LLiUc","","avx512vl")
1606+
TARGET_BUILTIN(__builtin_ia32_pmovzxdq256_mask, "V4LLiV4iV4LLiUc","","avx512vl")
1607+
TARGET_BUILTIN(__builtin_ia32_pmovzxwd128_mask, "V4iV8sV4iUc","","avx512vl")
1608+
TARGET_BUILTIN(__builtin_ia32_pmovzxwd256_mask, "V8iV8sV8iUc","","avx512vl")
1609+
TARGET_BUILTIN(__builtin_ia32_pmovzxwq128_mask, "V2LLiV8sV2LLiUc","","avx512vl")
1610+
TARGET_BUILTIN(__builtin_ia32_pmovzxwq256_mask, "V4LLiV8sV4LLiUc","","avx512vl")
15931611

15941612
#undef BUILTIN
15951613
#undef TARGET_BUILTIN

‎clang/lib/Headers/avx512bwintrin.h

+27
Original file line numberDiff line numberDiff line change
@@ -1522,6 +1522,33 @@ _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
15221522
(__mmask32) __U);
15231523
}
15241524

1525+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1526+
_mm512_cvtepu8_epi16 (__m256i __A)
1527+
{
1528+
return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
1529+
(__v32hi)
1530+
_mm512_setzero_hi (),
1531+
(__mmask32) -1);
1532+
}
1533+
1534+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1535+
_mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
1536+
{
1537+
return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
1538+
(__v32hi) __W,
1539+
(__mmask32) __U);
1540+
}
1541+
1542+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1543+
_mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
1544+
{
1545+
return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
1546+
(__v32hi)
1547+
_mm512_setzero_hi(),
1548+
(__mmask32) __U);
1549+
}
1550+
1551+
15251552
#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
15261553
(__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
15271554
(__v64qi)(__m512i)(b), \

‎clang/lib/Headers/avx512fintrin.h

+131
Original file line numberDiff line numberDiff line change
@@ -3159,6 +3159,137 @@ _mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
31593159
(__mmask8) __U);
31603160
}
31613161

3162+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3163+
_mm512_cvtepu8_epi32 (__m128i __A)
3164+
{
3165+
return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3166+
(__v16si)
3167+
_mm512_setzero_si512 (),
3168+
(__mmask16) -1);
3169+
}
3170+
3171+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3172+
_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3173+
{
3174+
return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3175+
(__v16si) __W,
3176+
(__mmask16) __U);
3177+
}
3178+
3179+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3180+
_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
3181+
{
3182+
return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3183+
(__v16si)
3184+
_mm512_setzero_si512 (),
3185+
(__mmask16) __U);
3186+
}
3187+
3188+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3189+
_mm512_cvtepu8_epi64 (__m128i __A)
3190+
{
3191+
return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3192+
(__v8di)
3193+
_mm512_setzero_si512 (),
3194+
(__mmask8) -1);
3195+
}
3196+
3197+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3198+
_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3199+
{
3200+
return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3201+
(__v8di) __W,
3202+
(__mmask8) __U);
3203+
}
3204+
3205+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3206+
_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
3207+
{
3208+
return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3209+
(__v8di)
3210+
_mm512_setzero_si512 (),
3211+
(__mmask8) __U);
3212+
}
3213+
3214+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3215+
_mm512_cvtepu32_epi64 (__m256i __X)
3216+
{
3217+
return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3218+
(__v8di)
3219+
_mm512_setzero_si512 (),
3220+
(__mmask8) -1);
3221+
}
3222+
3223+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3224+
_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3225+
{
3226+
return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3227+
(__v8di) __W,
3228+
(__mmask8) __U);
3229+
}
3230+
3231+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3232+
_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
3233+
{
3234+
return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3235+
(__v8di)
3236+
_mm512_setzero_si512 (),
3237+
(__mmask8) __U);
3238+
}
3239+
3240+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3241+
_mm512_cvtepu16_epi32 (__m256i __A)
3242+
{
3243+
return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3244+
(__v16si)
3245+
_mm512_setzero_si512 (),
3246+
(__mmask16) -1);
3247+
}
3248+
3249+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3250+
_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
3251+
{
3252+
return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3253+
(__v16si) __W,
3254+
(__mmask16) __U);
3255+
}
3256+
3257+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3258+
_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
3259+
{
3260+
return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3261+
(__v16si)
3262+
_mm512_setzero_si512 (),
3263+
(__mmask16) __U);
3264+
}
3265+
3266+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3267+
_mm512_cvtepu16_epi64 (__m128i __A)
3268+
{
3269+
return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3270+
(__v8di)
3271+
_mm512_setzero_si512 (),
3272+
(__mmask8) -1);
3273+
}
3274+
3275+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3276+
_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3277+
{
3278+
return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3279+
(__v8di) __W,
3280+
(__mmask8) __U);
3281+
}
3282+
3283+
static __inline__ __m512i __DEFAULT_FN_ATTRS
3284+
_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
3285+
{
3286+
return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3287+
(__v8di)
3288+
_mm512_setzero_si512 (),
3289+
(__mmask8) __U);
3290+
}
3291+
3292+
31623293
#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
31633294
(__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
31643295
(__v16si)(__m512i)(b), (p), \

‎clang/lib/Headers/avx512vlbwintrin.h

+35
Original file line numberDiff line numberDiff line change
@@ -2286,6 +2286,41 @@ _mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
22862286
}
22872287

22882288

2289+
static __inline__ __m128i __DEFAULT_FN_ATTRS
2290+
_mm_mask_cvtepu8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2291+
{
2292+
return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2293+
(__v8hi) __W,
2294+
(__mmask8) __U);
2295+
}
2296+
2297+
static __inline__ __m128i __DEFAULT_FN_ATTRS
2298+
_mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
2299+
{
2300+
return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2301+
(__v8hi)
2302+
_mm_setzero_si128 (),
2303+
(__mmask8) __U);
2304+
}
2305+
2306+
static __inline__ __m256i __DEFAULT_FN_ATTRS
2307+
_mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2308+
{
2309+
return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2310+
(__v16hi) __W,
2311+
(__mmask16) __U);
2312+
}
2313+
2314+
static __inline__ __m256i __DEFAULT_FN_ATTRS
2315+
_mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
2316+
{
2317+
return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2318+
(__v16hi)
2319+
_mm256_setzero_si256 (),
2320+
(__mmask16) __U);
2321+
}
2322+
2323+
22892324
#define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
22902325
(__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
22912326
(__v16qi)(__m128i)(b), \

0 commit comments

Comments
 (0)
Please sign in to comment.