diff options
author | Oren Ben Simhon <oren.ben.simhon@intel.com> | 2017-05-25 13:44:11 +0000 |
---|---|---|
committer | Oren Ben Simhon <oren.ben.simhon@intel.com> | 2017-05-25 13:44:11 +0000 |
commit | 140c1fb9ecf8538168c41679bdc264637da58dbb (patch) | |
tree | 0ff2f161a8fd54c50267d0d999f68d69fbbfbd5a /clang/test | |
parent | 1d02996d28a5f74933b690efc1d1bc88a4d659fe (diff) | |
download | bcm5719-llvm-140c1fb9ecf8538168c41679bdc264637da58dbb.tar.gz bcm5719-llvm-140c1fb9ecf8538168c41679bdc264637da58dbb.zip |
[X86] Adding avx512_vpopcntdq feature set and its intrinsics
AVX512_VPOPCNTDQ is a new feature set that was published by Intel.
The patch represents the Clang side of the addition of six intrinsics for two new machine instructions (vpopcntd and vpopcntq).
It also includes the addition of the new feature set.
Differential Revision: https://reviews.llvm.org/D33170
llvm-svn: 303857
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGen/attr-target-x86.c | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/avx512vpopcntdqintrin.c | 38 |
2 files changed, 39 insertions, 1 deletions
diff --git a/clang/test/CodeGen/attr-target-x86.c b/clang/test/CodeGen/attr-target-x86.c index 7557ec7acdd..f2777679aec 100644 --- a/clang/test/CodeGen/attr-target-x86.c +++ b/clang/test/CodeGen/attr-target-x86.c @@ -36,7 +36,7 @@ int __attribute__((target("arch=lakemont"))) lake(int a) { return 4; } // CHECK: lake{{.*}} #6 // CHECK: #0 = {{.*}}"target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" // CHECK: #1 = {{.*}}"target-cpu"="ivybridge" "target-features"="+aes,+avx,+cx16,+f16c,+fsgsbase,+fxsr,+mmx,+pclmul,+popcnt,+rdrnd,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" -// CHECK: #2 = {{.*}}"target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+x87,-aes,-avx,-avx2,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vl,-f16c,-fma,-fma4,-pclmul,-sha,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-xop,-xsave,-xsaveopt" +// CHECK: #2 = {{.*}}"target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+x87,-aes,-avx,-avx2,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vl,-avx512vpopcntdq,-f16c,-fma,-fma4,-pclmul,-sha,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-xop,-xsave,-xsaveopt" // CHECK: #3 = {{.*}}"target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" // CHECK: #4 = {{.*}}"target-cpu"="ivybridge" "target-features"="+avx,+cx16,+f16c,+fsgsbase,+fxsr,+mmx,+pclmul,+popcnt,+rdrnd,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt,-aes" // CHECK: #5 = {{.*}}"target-cpu"="x86-64" "target-features"="+fxsr,+sse,+sse2,+x87,-3dnow,-3dnowa,-mmx" diff --git a/clang/test/CodeGen/avx512vpopcntdqintrin.c b/clang/test/CodeGen/avx512vpopcntdqintrin.c new file mode 100644 index 00000000000..e7c797c1954 --- /dev/null +++ b/clang/test/CodeGen/avx512vpopcntdqintrin.c @@ -0,0 +1,38 @@ +// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vpopcntdq -emit-llvm -o - -Wall -Werror | FileCheck %s + +#include <immintrin.h> + +__m512i test_mm512_popcnt_epi64(__m512i __A) { + // CHECK-LABEL: @test_mm512_popcnt_epi64 + // CHECK: @llvm.ctpop.v8i64 + return _mm512_popcnt_epi64(__A); +} +__m512i test_mm512_mask_popcnt_epi64(__m512i __W, __mmask8 __U, __m512i __A) { + // CHECK-LABEL: @test_mm512_mask_popcnt_epi64 + // CHECK: @llvm.ctpop.v8i64 + // CHECK: select <8 x i1> %{{[0-9]+}}, <8 x i64> %{{[0-9]+}}, <8 x i64> {{.*}} + return _mm512_mask_popcnt_epi64(__W, __U, __A); +} +__m512i test_mm512_maskz_popcnt_epi64(__mmask8 __U, __m512i __A) { + // CHECK-LABEL: @test_mm512_maskz_popcnt_epi64 + // CHECK: @llvm.ctpop.v8i64 + // CHECK: select <8 x i1> %{{[0-9]+}}, <8 x i64> %{{[0-9]+}}, <8 x i64> {{.*}} + return _mm512_maskz_popcnt_epi64(__U, __A); +} +__m512i test_mm512_popcnt_epi32(__m512i __A) { + // CHECK-LABEL: @test_mm512_popcnt_epi32 + // CHECK: @llvm.ctpop.v16i32 + return _mm512_popcnt_epi32(__A); +} +__m512i test_mm512_mask_popcnt_epi32(__m512i __W, __mmask16 __U, __m512i __A) { + // CHECK-LABEL: @test_mm512_mask_popcnt_epi32 + // CHECK: @llvm.ctpop.v16i32 + // CHECK: select <16 x i1> %{{[0-9]+}}, <16 x i32> %{{[0-9]+}}, <16 x i32> {{.*}} + return _mm512_mask_popcnt_epi32(__W, __U, __A); +} +__m512i test_mm512_maskz_popcnt_epi32(__mmask16 __U, __m512i __A) { + // CHECK-LABEL: @test_mm512_maskz_popcnt_epi32 + // CHECK: @llvm.ctpop.v16i32 + // CHECK: select <16 x i1> %{{[0-9]+}}, <16 x i32> %{{[0-9]+}}, <16 x i32> {{.*}} + return _mm512_maskz_popcnt_epi32(__U, __A); +} |