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);
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
#endif /* __AVX512VLCDINTRIN_H */
|
||||
#endif /* __AVX512VLCDINTRIN_H */
|
||||
|
|
|
@ -6728,111 +6728,6 @@ _mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
|
|||
(__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__ ({ \
|
||||
(__m128d)__builtin_ia32_vpermilpd_mask((__v2df)(__m128d)(X), (int)(C), \
|
||||
(__v2df)(__m128d)(W), \
|
||||
|
|
|
@ -4545,79 +4545,6 @@ __m256 test_mm256_maskz_rcp14_ps(__mmask8 __U, __m256 __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) {
|
||||
// CHECK-LABEL: @test_mm_mask_permute_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
|
||||
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