From 9f12dc464fb4c0952a13a00883326910f1a0ec58 Mon Sep 17 00:00:00 2001 From: Adam Nemet Date: Wed, 30 Jul 2014 16:51:27 +0000 Subject: [PATCH] [AVX512] Add intrinsic for knot Part of git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214316 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/BuiltinsX86.def | 1 + lib/Headers/avx512fintrin.h | 8 ++++++++ test/CodeGen/avx512f-builtins.c | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/include/clang/Basic/BuiltinsX86.def b/include/clang/Basic/BuiltinsX86.def index 2db8a2f1fb..d546989738 100644 --- a/include/clang/Basic/BuiltinsX86.def +++ b/include/clang/Basic/BuiltinsX86.def @@ -862,5 +862,6 @@ BUILTIN(__builtin_ia32_scatterpfdpd, "vUcV8iv*CiCi", "") BUILTIN(__builtin_ia32_scatterpfdps, "vUsV16iv*CiCi", "") BUILTIN(__builtin_ia32_scatterpfqpd, "vUcV8LLiv*CiCi", "") BUILTIN(__builtin_ia32_scatterpfqps, "vUcV8LLiv*CiCi", "") +BUILTIN(__builtin_ia32_knothi, "UsUs", "") #undef BUILTIN diff --git a/lib/Headers/avx512fintrin.h b/lib/Headers/avx512fintrin.h index 2d3a8bba45..690638ae55 100644 --- a/lib/Headers/avx512fintrin.h +++ b/lib/Headers/avx512fintrin.h @@ -844,4 +844,12 @@ _mm512_store_pd(void *__P, __m512d __A) *(__m512d*)__P = __A; } +/* Mask ops */ + +static __inline __mmask16 __attribute__ ((__always_inline__, __nodebug__)) +_mm512_knot(__mmask16 __M) +{ + return __builtin_ia32_knothi(__M); +} + #endif // __AVX512FINTRIN_H diff --git a/test/CodeGen/avx512f-builtins.c b/test/CodeGen/avx512f-builtins.c index 8a2dd07230..3281830787 100644 --- a/test/CodeGen/avx512f-builtins.c +++ b/test/CodeGen/avx512f-builtins.c @@ -109,3 +109,10 @@ __m512d test_mm512_castpd256_pd512(__m256d a) // CHECK: shufflevector <4 x double> {{.*}} return _mm512_castpd256_pd512(a); } + +__mmask16 test_mm512_knot(__mmask16 a) +{ + // CHECK-LABEL: @test_mm512_knot + // CHECK: @llvm.x86.avx512.knot.w + return _mm512_knot(a); +} -- 2.40.0