forked from OSchip/llvm-project
[AVX512] Move the 128-bit and 256-bit lzcnt intrinsics to avx512vlcdintrin.h where they belong.
llvm-svn: 273249
This commit is contained in:
parent
03a6cec51e
commit
879b0978f4
|
@ -154,6 +154,110 @@ _mm256_maskz_conflict_epi32 (__mmask8 __U, __m256i __A)
|
||||||
(__mmask8) __U);
|
(__mmask8) __U);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
||||||
|
_mm_lzcnt_epi32 (__m128i __A)
|
||||||
|
{
|
||||||
|
return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
|
||||||
|
(__v4si)
|
||||||
|
_mm_setzero_si128 (),
|
||||||
|
(__mmask8) -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
||||||
|
_mm_mask_lzcnt_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
|
||||||
|
{
|
||||||
|
return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
|
||||||
|
(__v4si) __W,
|
||||||
|
(__mmask8) __U);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
||||||
|
_mm_maskz_lzcnt_epi32 (__mmask8 __U, __m128i __A)
|
||||||
|
{
|
||||||
|
return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
|
||||||
|
(__v4si)
|
||||||
|
_mm_setzero_si128 (),
|
||||||
|
(__mmask8) __U);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||||
|
_mm256_lzcnt_epi32 (__m256i __A)
|
||||||
|
{
|
||||||
|
return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
|
||||||
|
(__v8si)
|
||||||
|
_mm256_setzero_si256 (),
|
||||||
|
(__mmask8) -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||||
|
_mm256_mask_lzcnt_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
|
||||||
|
{
|
||||||
|
return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
|
||||||
|
(__v8si) __W,
|
||||||
|
(__mmask8) __U);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||||
|
_mm256_maskz_lzcnt_epi32 (__mmask8 __U, __m256i __A)
|
||||||
|
{
|
||||||
|
return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
|
||||||
|
(__v8si)
|
||||||
|
_mm256_setzero_si256 (),
|
||||||
|
(__mmask8) __U);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
||||||
|
_mm_lzcnt_epi64 (__m128i __A)
|
||||||
|
{
|
||||||
|
return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
|
||||||
|
(__v2di)
|
||||||
|
_mm_setzero_di (),
|
||||||
|
(__mmask8) -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
||||||
|
_mm_mask_lzcnt_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
|
||||||
|
{
|
||||||
|
return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
|
||||||
|
(__v2di) __W,
|
||||||
|
(__mmask8) __U);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
||||||
|
_mm_maskz_lzcnt_epi64 (__mmask8 __U, __m128i __A)
|
||||||
|
{
|
||||||
|
return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
|
||||||
|
(__v2di)
|
||||||
|
_mm_setzero_di (),
|
||||||
|
(__mmask8) __U);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||||
|
_mm256_lzcnt_epi64 (__m256i __A)
|
||||||
|
{
|
||||||
|
return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
|
||||||
|
(__v4di)
|
||||||
|
_mm256_setzero_si256 (),
|
||||||
|
(__mmask8) -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||||
|
_mm256_mask_lzcnt_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
|
||||||
|
{
|
||||||
|
return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
|
||||||
|
(__v4di) __W,
|
||||||
|
(__mmask8) __U);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||||
|
_mm256_maskz_lzcnt_epi64 (__mmask8 __U, __m256i __A)
|
||||||
|
{
|
||||||
|
return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
|
||||||
|
(__v4di)
|
||||||
|
_mm256_setzero_si256 (),
|
||||||
|
(__mmask8) __U);
|
||||||
|
}
|
||||||
|
|
||||||
#undef __DEFAULT_FN_ATTRS
|
#undef __DEFAULT_FN_ATTRS
|
||||||
|
|
||||||
#endif /* __AVX512VLCDINTRIN_H */
|
#endif /* __AVX512VLCDINTRIN_H */
|
||||||
|
|
|
@ -6728,111 +6728,6 @@ _mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
|
||||||
(__mmask8) __U);
|
(__mmask8) __U);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
||||||
_mm_lzcnt_epi32 (__m128i __A)
|
|
||||||
{
|
|
||||||
return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
|
|
||||||
(__v4si)
|
|
||||||
_mm_setzero_si128 (),
|
|
||||||
(__mmask8) -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
||||||
_mm_mask_lzcnt_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
|
|
||||||
{
|
|
||||||
return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
|
|
||||||
(__v4si) __W,
|
|
||||||
(__mmask8) __U);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
||||||
_mm_maskz_lzcnt_epi32 (__mmask8 __U, __m128i __A)
|
|
||||||
{
|
|
||||||
return (__m128i) __builtin_ia32_vplzcntd_128_mask ((__v4si) __A,
|
|
||||||
(__v4si)
|
|
||||||
_mm_setzero_si128 (),
|
|
||||||
(__mmask8) __U);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
|
||||||
_mm256_lzcnt_epi32 (__m256i __A)
|
|
||||||
{
|
|
||||||
return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
|
|
||||||
(__v8si)
|
|
||||||
_mm256_setzero_si256 (),
|
|
||||||
(__mmask8) -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
|
||||||
_mm256_mask_lzcnt_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
|
|
||||||
{
|
|
||||||
return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
|
|
||||||
(__v8si) __W,
|
|
||||||
(__mmask8) __U);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
|
||||||
_mm256_maskz_lzcnt_epi32 (__mmask8 __U, __m256i __A)
|
|
||||||
{
|
|
||||||
return (__m256i) __builtin_ia32_vplzcntd_256_mask ((__v8si) __A,
|
|
||||||
(__v8si)
|
|
||||||
_mm256_setzero_si256 (),
|
|
||||||
(__mmask8) __U);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
||||||
_mm_lzcnt_epi64 (__m128i __A)
|
|
||||||
{
|
|
||||||
return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
|
|
||||||
(__v2di)
|
|
||||||
_mm_setzero_di (),
|
|
||||||
(__mmask8) -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
||||||
_mm_mask_lzcnt_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
|
|
||||||
{
|
|
||||||
return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
|
|
||||||
(__v2di) __W,
|
|
||||||
(__mmask8) __U);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
||||||
_mm_maskz_lzcnt_epi64 (__mmask8 __U, __m128i __A)
|
|
||||||
{
|
|
||||||
return (__m128i) __builtin_ia32_vplzcntq_128_mask ((__v2di) __A,
|
|
||||||
(__v2di)
|
|
||||||
_mm_setzero_di (),
|
|
||||||
(__mmask8) __U);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
|
||||||
_mm256_lzcnt_epi64 (__m256i __A)
|
|
||||||
{
|
|
||||||
return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
|
|
||||||
(__v4di)
|
|
||||||
_mm256_setzero_si256 (),
|
|
||||||
(__mmask8) -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
|
||||||
_mm256_mask_lzcnt_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
|
|
||||||
{
|
|
||||||
return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
|
|
||||||
(__v4di) __W,
|
|
||||||
(__mmask8) __U);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
|
||||||
_mm256_maskz_lzcnt_epi64 (__mmask8 __U, __m256i __A)
|
|
||||||
{
|
|
||||||
return (__m256i) __builtin_ia32_vplzcntq_256_mask ((__v4di) __A,
|
|
||||||
(__v4di)
|
|
||||||
_mm256_setzero_si256 (),
|
|
||||||
(__mmask8) __U);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
|
#define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
|
||||||
(__m128d)__builtin_ia32_vpermilpd_mask((__v2df)(__m128d)(X), (int)(C), \
|
(__m128d)__builtin_ia32_vpermilpd_mask((__v2df)(__m128d)(X), (int)(C), \
|
||||||
(__v2df)(__m128d)(W), \
|
(__v2df)(__m128d)(W), \
|
||||||
|
|
|
@ -4545,79 +4545,6 @@ __m256 test_mm256_maskz_rcp14_ps(__mmask8 __U, __m256 __A) {
|
||||||
return _mm256_maskz_rcp14_ps(__U, __A);
|
return _mm256_maskz_rcp14_ps(__U, __A);
|
||||||
}
|
}
|
||||||
|
|
||||||
__m128i test_mm_lzcnt_epi32(__m128i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm_lzcnt_epi32
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
|
||||||
return _mm_lzcnt_epi32(__A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m128i test_mm_mask_lzcnt_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm_mask_lzcnt_epi32
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
|
||||||
return _mm_mask_lzcnt_epi32(__W, __U, __A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m128i test_mm_maskz_lzcnt_epi32(__mmask8 __U, __m128i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm_maskz_lzcnt_epi32
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
|
||||||
return _mm_maskz_lzcnt_epi32(__U, __A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m256i test_mm256_lzcnt_epi32(__m256i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm256_lzcnt_epi32
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
|
||||||
return _mm256_lzcnt_epi32(__A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m256i test_mm256_mask_lzcnt_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm256_mask_lzcnt_epi32
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
|
||||||
return _mm256_mask_lzcnt_epi32(__W, __U, __A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m256i test_mm256_maskz_lzcnt_epi32(__mmask8 __U, __m256i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm256_maskz_lzcnt_epi32
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
|
||||||
return _mm256_maskz_lzcnt_epi32(__U, __A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m128i test_mm_lzcnt_epi64(__m128i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm_lzcnt_epi64
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
|
||||||
return _mm_lzcnt_epi64(__A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m128i test_mm_mask_lzcnt_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm_mask_lzcnt_epi64
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
|
||||||
return _mm_mask_lzcnt_epi64(__W, __U, __A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m128i test_mm_maskz_lzcnt_epi64(__mmask8 __U, __m128i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm_maskz_lzcnt_epi64
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
|
||||||
return _mm_maskz_lzcnt_epi64(__U, __A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m256i test_mm256_lzcnt_epi64(__m256i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm256_lzcnt_epi64
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
|
||||||
return _mm256_lzcnt_epi64(__A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m256i test_mm256_mask_lzcnt_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm256_mask_lzcnt_epi64
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
|
||||||
return _mm256_mask_lzcnt_epi64(__W, __U, __A);
|
|
||||||
}
|
|
||||||
|
|
||||||
__m256i test_mm256_maskz_lzcnt_epi64(__mmask8 __U, __m256i __A) {
|
|
||||||
// CHECK-LABEL: @test_mm256_maskz_lzcnt_epi64
|
|
||||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
|
||||||
return _mm256_maskz_lzcnt_epi64(__U, __A);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
__m128d test_mm_mask_permute_pd(__m128d __W, __mmask8 __U, __m128d __X) {
|
__m128d test_mm_mask_permute_pd(__m128d __W, __mmask8 __U, __m128d __X) {
|
||||||
// CHECK-LABEL: @test_mm_mask_permute_pd
|
// CHECK-LABEL: @test_mm_mask_permute_pd
|
||||||
// CHECK: @llvm.x86.avx512.mask.vpermil.pd
|
// CHECK: @llvm.x86.avx512.mask.vpermil.pd
|
||||||
|
|
|
@ -100,3 +100,75 @@ __m256i test_mm256_maskz_conflict_epi32(__mmask8 __U, __m256i __A) {
|
||||||
// CHECK: @llvm.x86.avx512.mask.conflict.d.256
|
// CHECK: @llvm.x86.avx512.mask.conflict.d.256
|
||||||
return _mm256_maskz_conflict_epi32(__U, __A);
|
return _mm256_maskz_conflict_epi32(__U, __A);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__m128i test_mm_lzcnt_epi32(__m128i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm_lzcnt_epi32
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
||||||
|
return _mm_lzcnt_epi32(__A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m128i test_mm_mask_lzcnt_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm_mask_lzcnt_epi32
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
||||||
|
return _mm_mask_lzcnt_epi32(__W, __U, __A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m128i test_mm_maskz_lzcnt_epi32(__mmask8 __U, __m128i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm_maskz_lzcnt_epi32
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
||||||
|
return _mm_maskz_lzcnt_epi32(__U, __A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m256i test_mm256_lzcnt_epi32(__m256i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm256_lzcnt_epi32
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
||||||
|
return _mm256_lzcnt_epi32(__A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m256i test_mm256_mask_lzcnt_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm256_mask_lzcnt_epi32
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
||||||
|
return _mm256_mask_lzcnt_epi32(__W, __U, __A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m256i test_mm256_maskz_lzcnt_epi32(__mmask8 __U, __m256i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm256_maskz_lzcnt_epi32
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.d
|
||||||
|
return _mm256_maskz_lzcnt_epi32(__U, __A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m128i test_mm_lzcnt_epi64(__m128i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm_lzcnt_epi64
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
||||||
|
return _mm_lzcnt_epi64(__A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m128i test_mm_mask_lzcnt_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm_mask_lzcnt_epi64
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
||||||
|
return _mm_mask_lzcnt_epi64(__W, __U, __A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m128i test_mm_maskz_lzcnt_epi64(__mmask8 __U, __m128i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm_maskz_lzcnt_epi64
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
||||||
|
return _mm_maskz_lzcnt_epi64(__U, __A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m256i test_mm256_lzcnt_epi64(__m256i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm256_lzcnt_epi64
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
||||||
|
return _mm256_lzcnt_epi64(__A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m256i test_mm256_mask_lzcnt_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm256_mask_lzcnt_epi64
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
||||||
|
return _mm256_mask_lzcnt_epi64(__W, __U, __A);
|
||||||
|
}
|
||||||
|
|
||||||
|
__m256i test_mm256_maskz_lzcnt_epi64(__mmask8 __U, __m256i __A) {
|
||||||
|
// CHECK-LABEL: @test_mm256_maskz_lzcnt_epi64
|
||||||
|
// CHECK: @llvm.x86.avx512.mask.lzcnt.q
|
||||||
|
return _mm256_maskz_lzcnt_epi64(__U, __A);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue