Author: ctopper Date: Tue Jun 21 01:53:58 2016 New Revision: 273249 URL: http://llvm.org/viewvc/llvm-project?rev=273249&view=rev Log: [AVX512] Move the 128-bit and 256-bit lzcnt intrinsics to avx512vlcdintrin.h where they belong.
Modified: cfe/trunk/lib/Headers/avx512vlcdintrin.h cfe/trunk/lib/Headers/avx512vlintrin.h cfe/trunk/test/CodeGen/avx512vl-builtins.c cfe/trunk/test/CodeGen/avx512vlcd-builtins.c Modified: cfe/trunk/lib/Headers/avx512vlcdintrin.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512vlcdintrin.h?rev=273249&r1=273248&r2=273249&view=diff ============================================================================== --- cfe/trunk/lib/Headers/avx512vlcdintrin.h (original) +++ cfe/trunk/lib/Headers/avx512vlcdintrin.h Tue Jun 21 01:53:58 2016 @@ -154,6 +154,110 @@ _mm256_maskz_conflict_epi32 (__mmask8 __ (__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 */ Modified: cfe/trunk/lib/Headers/avx512vlintrin.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512vlintrin.h?rev=273249&r1=273248&r2=273249&view=diff ============================================================================== --- cfe/trunk/lib/Headers/avx512vlintrin.h (original) +++ cfe/trunk/lib/Headers/avx512vlintrin.h Tue Jun 21 01:53:58 2016 @@ -6728,111 +6728,6 @@ _mm256_maskz_rcp14_ps (__mmask8 __U, __m (__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), \ Modified: cfe/trunk/test/CodeGen/avx512vl-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vl-builtins.c?rev=273249&r1=273248&r2=273249&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512vl-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512vl-builtins.c Tue Jun 21 01:53:58 2016 @@ -4545,79 +4545,6 @@ __m256 test_mm256_maskz_rcp14_ps(__mmask 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 Modified: cfe/trunk/test/CodeGen/avx512vlcd-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vlcd-builtins.c?rev=273249&r1=273248&r2=273249&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512vlcd-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512vlcd-builtins.c Tue Jun 21 01:53:58 2016 @@ -100,3 +100,75 @@ __m256i test_mm256_maskz_conflict_epi32( // 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); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits