summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2016-06-21 06:53:58 +0000
committerCraig Topper <craig.topper@gmail.com>2016-06-21 06:53:58 +0000
commitc99320df4eccc7bc018e150145a40bb47a5be51f (patch)
tree57576753c4078171eddff6e0e04abcacc16a1990
parent48d7082653038e0c8e8c2fc2ea3b60927de5aaa8 (diff)
[AVX512] Move the 128-bit and 256-bit lzcnt intrinsics to avx512vlcdintrin.h where they belong.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@273249 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Headers/avx512vlcdintrin.h106
-rw-r--r--lib/Headers/avx512vlintrin.h105
-rw-r--r--test/CodeGen/avx512vl-builtins.c73
-rw-r--r--test/CodeGen/avx512vlcd-builtins.c72
4 files changed, 177 insertions, 179 deletions
diff --git a/lib/Headers/avx512vlcdintrin.h b/lib/Headers/avx512vlcdintrin.h
index b372da2bd6..7b02e2e1f9 100644
--- a/lib/Headers/avx512vlcdintrin.h
+++ b/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/lib/Headers/avx512vlintrin.h b/lib/Headers/avx512vlintrin.h
index c03821f599..2957050154 100644
--- a/lib/Headers/avx512vlintrin.h
+++ b/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/test/CodeGen/avx512vl-builtins.c b/test/CodeGen/avx512vl-builtins.c
index 974a88e4f0..3e76ebc7d1 100644
--- a/test/CodeGen/avx512vl-builtins.c
+++ b/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/test/CodeGen/avx512vlcd-builtins.c b/test/CodeGen/avx512vlcd-builtins.c
index 6744ee1989..9ca42b509e 100644
--- a/test/CodeGen/avx512vlcd-builtins.c
+++ b/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);
+}