Skip to content

Commit 912be16

Browse files
committedMar 7, 2016
[CLANG][AVX512][BUILTIN] Adding vpmultishiftqb{128|256|512}
Differential Revision: http://reviews.llvm.org/D17914 llvm-svn: 262817
1 parent 578610c commit 912be16

File tree

6 files changed

+175
-1
lines changed

6 files changed

+175
-1
lines changed
 

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

+7
Original file line numberDiff line numberDiff line change
@@ -1719,6 +1719,13 @@ TARGET_BUILTIN(__builtin_ia32_movdquqi256_mask, "V32cV32cV32cUi","","avx512bw,av
17191719
TARGET_BUILTIN(__builtin_ia32_movddup512_mask, "V8dV8dV8dUc","","avx512f")
17201720
TARGET_BUILTIN(__builtin_ia32_movddup128_mask, "V2dV2dV2dUc","","avx512vl")
17211721
TARGET_BUILTIN(__builtin_ia32_movddup256_mask, "V4dV4dV4dUc","","avx512vl")
1722+
TARGET_BUILTIN(__builtin_ia32_pbroadcastb512_gpr_mask, "V64ccV64cULLi","","avx512bw")
1723+
TARGET_BUILTIN(__builtin_ia32_pbroadcastb128_gpr_mask, "V16ccV16cUs","","avx512bw,avx512vl")
1724+
TARGET_BUILTIN(__builtin_ia32_pbroadcastb256_gpr_mask, "V32ccV32cUi","","avx512bw,avx512vl")
1725+
TARGET_BUILTIN(__builtin_ia32_pbroadcastd128_gpr_mask, "V4iiV4iUc","","avx512vl")
1726+
TARGET_BUILTIN(__builtin_ia32_pbroadcastd256_gpr_mask, "V8iiV8iUc","","avx512vl")
1727+
TARGET_BUILTIN(__builtin_ia32_pbroadcastq128_gpr_mask, "V2LLiULLiV2LLiUc","","avx512vl")
1728+
TARGET_BUILTIN(__builtin_ia32_pbroadcastq256_gpr_mask, "V4LLiULLiV4LLiUc","","avx512vl")
17221729

17231730
#undef BUILTIN
17241731
#undef TARGET_BUILTIN

‎clang/lib/Headers/avx512bwintrin.h

+17
Original file line numberDiff line numberDiff line change
@@ -1917,6 +1917,23 @@ _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
19171917
}
19181918

19191919

1920+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1921+
_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
1922+
{
1923+
return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
1924+
(__v64qi) __O,
1925+
__M);
1926+
}
1927+
1928+
static __inline__ __m512i __DEFAULT_FN_ATTRS
1929+
_mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
1930+
{
1931+
return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
1932+
(__v64qi)
1933+
_mm512_setzero_qi(),
1934+
__M);
1935+
}
1936+
19201937
#undef __DEFAULT_FN_ATTRS
19211938

19221939
#endif

‎clang/lib/Headers/avx512vlbwintrin.h

+33
Original file line numberDiff line numberDiff line change
@@ -2919,6 +2919,39 @@ _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
29192919
}
29202920

29212921

2922+
static __inline__ __m128i __DEFAULT_FN_ATTRS
2923+
_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
2924+
{
2925+
return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2926+
(__v16qi) __O,
2927+
__M);
2928+
}
2929+
2930+
static __inline__ __m128i __DEFAULT_FN_ATTRS
2931+
_mm_maskz_set1_epi8 (__mmask16 __M, char __A)
2932+
{
2933+
return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2934+
(__v16qi)
2935+
_mm_setzero_si128 (),
2936+
__M);
2937+
}
2938+
2939+
static __inline__ __m256i __DEFAULT_FN_ATTRS
2940+
_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
2941+
{
2942+
return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2943+
(__v32qi) __O,
2944+
__M);
2945+
}
2946+
2947+
static __inline__ __m256i __DEFAULT_FN_ATTRS
2948+
_mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
2949+
{
2950+
return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2951+
(__v32qi)
2952+
_mm256_setzero_si256 (),
2953+
__M);
2954+
}
29222955
#undef __DEFAULT_FN_ATTRS
29232956

29242957
#endif /* __AVX512VLBWINTRIN_H */

‎clang/lib/Headers/avx512vlintrin.h

+56
Original file line numberDiff line numberDiff line change
@@ -6012,6 +6012,62 @@ _mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
60126012
(__mmask8) __U);
60136013
}
60146014

6015+
6016+
#define _mm_mask_set1_epi32( __O, __M, __A) __extension__ ({ \
6017+
__builtin_ia32_pbroadcastd128_gpr_mask (__A, (__v4si)( __O),\
6018+
( __M));\
6019+
})
6020+
6021+
#define _mm_maskz_set1_epi32( __M, __A) __extension__ ({ \
6022+
__builtin_ia32_pbroadcastd128_gpr_mask (__A,\
6023+
(__v4si)\
6024+
_mm_setzero_si128 (),\
6025+
( __M));\
6026+
})
6027+
6028+
#define _mm256_mask_set1_epi32( __O, __M, __A) __extension__ ({ \
6029+
__builtin_ia32_pbroadcastd256_gpr_mask (__A, (__v8si)( __O),\
6030+
( __M));\
6031+
})
6032+
6033+
#define _mm256_maskz_set1_epi32( __M, __A) __extension__ ({ \
6034+
__builtin_ia32_pbroadcastd256_gpr_mask (__A,\
6035+
(__v8si)\
6036+
_mm256_setzero_si256 (),\
6037+
( __M));\
6038+
})
6039+
6040+
static __inline__ __m128i __DEFAULT_FN_ATTRS
6041+
_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
6042+
{
6043+
return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A, (__v2di) __O,
6044+
__M);
6045+
}
6046+
6047+
static __inline__ __m128i __DEFAULT_FN_ATTRS
6048+
_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
6049+
{
6050+
return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A,
6051+
(__v2di)
6052+
_mm_setzero_si128 (),
6053+
__M);
6054+
}
6055+
6056+
static __inline__ __m256i __DEFAULT_FN_ATTRS
6057+
_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
6058+
{
6059+
return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A, (__v4di) __O,
6060+
__M);
6061+
}
6062+
6063+
static __inline__ __m256i __DEFAULT_FN_ATTRS
6064+
_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
6065+
{
6066+
return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A,
6067+
(__v4di)
6068+
_mm256_setzero_si256 (),
6069+
__M);
6070+
}
60156071
#undef __DEFAULT_FN_ATTRS
60166072
#undef __DEFAULT_FN_ATTRS_BOTH
60176073

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

+12
Original file line numberDiff line numberDiff line change
@@ -1299,4 +1299,16 @@ __m512i test_mm512_maskz_mov_epi8(__mmask64 __U, __m512i __A) {
12991299
return _mm512_maskz_mov_epi8(__U, __A);
13001300
}
13011301

1302+
__m512i test_mm512_mask_set1_epi8(__m512i __O, __mmask64 __M, char __A) {
1303+
// CHECK-LABEL: @test_mm512_mask_set1_epi8
1304+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.b.gpr.512
1305+
return _mm512_mask_set1_epi8(__O, __M, __A);
1306+
}
1307+
1308+
__m512i test_mm512_maskz_set1_epi8(__mmask64 __M, char __A) {
1309+
// CHECK-LABEL: @test_mm512_maskz_set1_epi8
1310+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.b.gpr.512
1311+
return _mm512_maskz_set1_epi8(__M, __A);
1312+
}
1313+
13021314

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

+50-1
Original file line numberDiff line numberDiff line change
@@ -4030,4 +4030,53 @@ __m256d test_mm256_maskz_movedup_pd(__mmask8 __U, __m256d __A) {
40304030
// CHECK-LABEL: @test_mm256_maskz_movedup_pd
40314031
// CHECK: @llvm.x86.avx512.mask.movddup.256
40324032
return _mm256_maskz_movedup_pd(__U, __A);
4033-
}
4033+
}
4034+
4035+
__m128i test_mm_mask_set1_epi32(__m128i __O, __mmask8 __M) {
4036+
// CHECK-LABEL: @test_mm_mask_set1_epi32
4037+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.d.gpr.128
4038+
return _mm_mask_set1_epi32(__O, __M, 5);
4039+
}
4040+
4041+
__m128i test_mm_maskz_set1_epi32(__mmask8 __M) {
4042+
// CHECK-LABEL: @test_mm_maskz_set1_epi32
4043+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.d.gpr.128
4044+
return _mm_maskz_set1_epi32(__M, 5);
4045+
}
4046+
4047+
__m256i test_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M) {
4048+
// CHECK-LABEL: @test_mm256_mask_set1_epi32
4049+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.d.gpr.256
4050+
return _mm256_mask_set1_epi32(__O, __M, 5);
4051+
}
4052+
4053+
__m256i test_mm256_maskz_set1_epi32(__mmask8 __M) {
4054+
// CHECK-LABEL: @test_mm256_maskz_set1_epi32
4055+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.d.gpr.256
4056+
return _mm256_maskz_set1_epi32(__M, 5);
4057+
}
4058+
4059+
__m128i test_mm_mask_set1_epi64(__m128i __O, __mmask8 __M, long long __A) {
4060+
// CHECK-LABEL: @test_mm_mask_set1_epi64
4061+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.q.gpr.128
4062+
return _mm_mask_set1_epi64(__O, __M, __A);
4063+
}
4064+
4065+
__m128i test_mm_maskz_set1_epi64(__mmask8 __M, long long __A) {
4066+
// CHECK-LABEL: @test_mm_maskz_set1_epi64
4067+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.q.gpr.128
4068+
return _mm_maskz_set1_epi64(__M, __A);
4069+
}
4070+
4071+
__m256i test_mm256_mask_set1_epi64(__m256i __O, __mmask8 __M, long long __A) {
4072+
// CHECK-LABEL: @test_mm256_mask_set1_epi64
4073+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.q.gpr.256
4074+
return _mm256_mask_set1_epi64(__O, __M, __A);
4075+
}
4076+
4077+
__m256i test_mm256_maskz_set1_epi64(__mmask8 __M, long long __A) {
4078+
// CHECK-LABEL: @test_mm256_maskz_set1_epi64
4079+
// CHECK: @llvm.x86.avx512.mask.pbroadcast.q.gpr.256
4080+
return _mm256_maskz_set1_epi64(__M, __A);
4081+
}
4082+

0 commit comments

Comments
 (0)
Please sign in to comment.