Skip to content

Commit 1ad03e7

Browse files
committedMar 3, 2016
[CLANG][AVX512][BUILTIN] movdqu{qi|hi} {128|256|512}
Differential Revision: http://reviews.llvm.org/D17814 llvm-svn: 262609
1 parent 0a21113 commit 1ad03e7

File tree

5 files changed

+184
-0
lines changed

5 files changed

+184
-0
lines changed
 

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

+6
Original file line numberDiff line numberDiff line change
@@ -1710,6 +1710,12 @@ TARGET_BUILTIN(__builtin_ia32_movdqa64load128_mask, "V2LLivC*V2LLiUc","","avx512
17101710
TARGET_BUILTIN(__builtin_ia32_movdqa64load256_mask, "V4LLivC*V4LLiUc","","avx512vl")
17111711
TARGET_BUILTIN(__builtin_ia32_movdqa64store128_mask, "vV2LLi*V2LLiUc","","avx512f")
17121712
TARGET_BUILTIN(__builtin_ia32_movdqa64store256_mask, "vV4LLi*V4LLiUc","","avx512f")
1713+
TARGET_BUILTIN(__builtin_ia32_movdquhi512_mask, "V32sV32sV32sUi","","avx512bw")
1714+
TARGET_BUILTIN(__builtin_ia32_movdquqi512_mask, "V64cV64cV64cULLi","","avx512bw")
1715+
TARGET_BUILTIN(__builtin_ia32_movdquhi128_mask, "V8sV8sV8sUc","","avx512bw,avx512vl")
1716+
TARGET_BUILTIN(__builtin_ia32_movdquhi256_mask, "V16sV16sV16sUs","","avx512bw,avx512vl")
1717+
TARGET_BUILTIN(__builtin_ia32_movdquqi128_mask, "V16cV16cV16cUs","","avx512bw,avx512vl")
1718+
TARGET_BUILTIN(__builtin_ia32_movdquqi256_mask, "V32cV32cV32cUi","","avx512bw,avx512vl")
17131719

17141720
#undef BUILTIN
17151721
#undef TARGET_BUILTIN

‎clang/lib/Headers/avx512bwintrin.h

+37
Original file line numberDiff line numberDiff line change
@@ -1880,6 +1880,43 @@ __builtin_ia32_psrlwi512_mask ((__v32hi)( __A),( __imm),\
18801880
(__mmask32)( __U));\
18811881
})
18821882

1883+
1884+
1885+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1886+
_mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
1887+
{
1888+
return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
1889+
(__v32hi) __W,
1890+
(__mmask32) __U);
1891+
}
1892+
1893+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1894+
_mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
1895+
{
1896+
return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
1897+
(__v32hi)
1898+
_mm512_setzero_hi (),
1899+
(__mmask32) __U);
1900+
}
1901+
1902+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1903+
_mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
1904+
{
1905+
return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
1906+
(__v64qi) __W,
1907+
(__mmask64) __U);
1908+
}
1909+
1910+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1911+
_mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
1912+
{
1913+
return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
1914+
(__v64qi)
1915+
_mm512_setzero_hi (),
1916+
(__mmask64) __U);
1917+
}
1918+
1919+
18831920
#undef __DEFAULT_FN_ATTRS
18841921

18851922
#endif

‎clang/lib/Headers/avx512vlbwintrin.h

+71
Original file line numberDiff line numberDiff line change
@@ -2848,6 +2848,77 @@ __builtin_ia32_psrlwi256_mask ((__v16hi)( __A),( __imm),\
28482848
})
28492849

28502850

2851+
2852+
2853+
static __inline__ __m128i __DEFAULT_FN_ATTRS
2854+
_mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
2855+
{
2856+
return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
2857+
(__v8hi) __W,
2858+
(__mmask8) __U);
2859+
}
2860+
2861+
static __inline__ __m128i __DEFAULT_FN_ATTRS
2862+
_mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
2863+
{
2864+
return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
2865+
(__v8hi)
2866+
_mm_setzero_hi (),
2867+
(__mmask8) __U);
2868+
}
2869+
2870+
static __inline__ __m256i __DEFAULT_FN_ATTRS
2871+
_mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
2872+
{
2873+
return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
2874+
(__v16hi) __W,
2875+
(__mmask16) __U);
2876+
}
2877+
2878+
static __inline__ __m256i __DEFAULT_FN_ATTRS
2879+
_mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
2880+
{
2881+
return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
2882+
(__v16hi)
2883+
_mm256_setzero_si256 (),
2884+
(__mmask16) __U);
2885+
}
2886+
2887+
static __inline__ __m128i __DEFAULT_FN_ATTRS
2888+
_mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
2889+
{
2890+
return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
2891+
(__v16qi) __W,
2892+
(__mmask16) __U);
2893+
}
2894+
2895+
static __inline__ __m128i __DEFAULT_FN_ATTRS
2896+
_mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
2897+
{
2898+
return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
2899+
(__v16qi)
2900+
_mm_setzero_hi (),
2901+
(__mmask16) __U);
2902+
}
2903+
2904+
static __inline__ __m256i __DEFAULT_FN_ATTRS
2905+
_mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
2906+
{
2907+
return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
2908+
(__v32qi) __W,
2909+
(__mmask32) __U);
2910+
}
2911+
2912+
static __inline__ __m256i __DEFAULT_FN_ATTRS
2913+
_mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
2914+
{
2915+
return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
2916+
(__v32qi)
2917+
_mm256_setzero_si256 (),
2918+
(__mmask32) __U);
2919+
}
2920+
2921+
28512922
#undef __DEFAULT_FN_ATTRS
28522923

28532924
#endif /* __AVX512VLBWINTRIN_H */

‎clang/test/CodeGen/avx512bw-builtins.c

+22
Original file line numberDiff line numberDiff line change
@@ -1275,6 +1275,28 @@ __m512i test_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A) {
12751275
return _mm512_maskz_srli_epi16(__U, __A, 5);
12761276
}
12771277

1278+
__m512i test_mm512_mask_mov_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1279+
// CHECK-LABEL: @test_mm512_mask_mov_epi16
1280+
// CHECK: @llvm.x86.avx512.mask.movu.w.512
1281+
return _mm512_mask_mov_epi16(__W, __U, __A);
1282+
}
1283+
1284+
__m512i test_mm512_maskz_mov_epi16(__mmask32 __U, __m512i __A) {
1285+
// CHECK-LABEL: @test_mm512_maskz_mov_epi16
1286+
// CHECK: @llvm.x86.avx512.mask.movu.w.512
1287+
return _mm512_maskz_mov_epi16(__U, __A);
1288+
}
12781289

1290+
__m512i test_mm512_mask_mov_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
1291+
// CHECK-LABEL: @test_mm512_mask_mov_epi8
1292+
// CHECK: @llvm.x86.avx512.mask.movu.b.512
1293+
return _mm512_mask_mov_epi8(__W, __U, __A);
1294+
}
1295+
1296+
__m512i test_mm512_maskz_mov_epi8(__mmask64 __U, __m512i __A) {
1297+
// CHECK-LABEL: @test_mm512_maskz_mov_epi8
1298+
// CHECK: @llvm.x86.avx512.mask.movu.b.512
1299+
return _mm512_maskz_mov_epi8(__U, __A);
1300+
}
12791301

12801302

‎clang/test/CodeGen/avx512vlbw-builtins.c

+48
Original file line numberDiff line numberDiff line change
@@ -1957,3 +1957,51 @@ __m256i test_mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A) {
19571957
return _mm256_maskz_slli_epi16(__U, __A, 5);
19581958
}
19591959

1960+
__m128i test_mm_mask_mov_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
1961+
// CHECK-LABEL: @test_mm_mask_mov_epi16
1962+
// CHECK: @llvm.x86.avx512.mask.mov.128
1963+
return _mm_mask_mov_epi16(__W, __U, __A);
1964+
}
1965+
1966+
__m128i test_mm_maskz_mov_epi16(__mmask8 __U, __m128i __A) {
1967+
// CHECK-LABEL: @test_mm_maskz_mov_epi16
1968+
// CHECK: @llvm.x86.avx512.mask.mov.128
1969+
return _mm_maskz_mov_epi16(__U, __A);
1970+
}
1971+
1972+
__m256i test_mm256_mask_mov_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
1973+
// CHECK-LABEL: @test_mm256_mask_mov_epi16
1974+
// CHECK: @llvm.x86.avx512.mask.mov.256
1975+
return _mm256_mask_mov_epi16(__W, __U, __A);
1976+
}
1977+
1978+
__m256i test_mm256_maskz_mov_epi16(__mmask16 __U, __m256i __A) {
1979+
// CHECK-LABEL: @test_mm256_maskz_mov_epi16
1980+
// CHECK: @llvm.x86.avx512.mask.mov.256
1981+
return _mm256_maskz_mov_epi16(__U, __A);
1982+
}
1983+
1984+
__m128i test_mm_mask_mov_epi8(__m128i __W, __mmask16 __U, __m128i __A) {
1985+
// CHECK-LABEL: @test_mm_mask_mov_epi8
1986+
// CHECK: @llvm.x86.avx512.mask.mov.128
1987+
return _mm_mask_mov_epi8(__W, __U, __A);
1988+
}
1989+
1990+
__m128i test_mm_maskz_mov_epi8(__mmask16 __U, __m128i __A) {
1991+
// CHECK-LABEL: @test_mm_maskz_mov_epi8
1992+
// CHECK: @llvm.x86.avx512.mask.mov.128
1993+
return _mm_maskz_mov_epi8(__U, __A);
1994+
}
1995+
1996+
__m256i test_mm256_mask_mov_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
1997+
// CHECK-LABEL: @test_mm256_mask_mov_epi8
1998+
// CHECK: @llvm.x86.avx512.mask.mov.256
1999+
return _mm256_mask_mov_epi8(__W, __U, __A);
2000+
}
2001+
2002+
__m256i test_mm256_maskz_mov_epi8(__mmask32 __U, __m256i __A) {
2003+
// CHECK-LABEL: @test_mm256_maskz_mov_epi8
2004+
// CHECK: @llvm.x86.avx512.mask.mov.256
2005+
return _mm256_maskz_mov_epi8(__U, __A);
2006+
}
2007+

0 commit comments

Comments
 (0)
Please sign in to comment.