diff --git a/clang/lib/Headers/avx512vlcdintrin.h b/clang/lib/Headers/avx512vlcdintrin.h index b372da2bd6af..7b02e2e1f92a 100644 --- a/clang/lib/Headers/avx512vlcdintrin.h +++ b/clang/lib/Headers/avx512vlcdintrin.h @@ -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 */ \ No newline at end of file +#endif /* __AVX512VLCDINTRIN_H */ diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h index c03821f5996e..295705015406 100644 --- a/clang/lib/Headers/avx512vlintrin.h +++ b/clang/lib/Headers/avx512vlintrin.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), \ diff --git a/clang/test/CodeGen/avx512vl-builtins.c b/clang/test/CodeGen/avx512vl-builtins.c index 974a88e4f02d..3e76ebc7d110 100644 --- a/clang/test/CodeGen/avx512vl-builtins.c +++ b/clang/test/CodeGen/avx512vl-builtins.c @@ -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 diff --git a/clang/test/CodeGen/avx512vlcd-builtins.c b/clang/test/CodeGen/avx512vlcd-builtins.c index 6744ee1989bf..9ca42b509e39 100644 --- a/clang/test/CodeGen/avx512vlcd-builtins.c +++ b/clang/test/CodeGen/avx512vlcd-builtins.c @@ -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); +}