From 2db1d2fb32069d9b846a5a5306c8fd644b46df91 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 llvm-svn: 214316 --- clang/include/clang/Basic/BuiltinsX86.def | 1 + clang/lib/Headers/avx512fintrin.h | 8 ++++++++ clang/test/CodeGen/avx512f-builtins.c | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def index 2db8a2f..d546989 100644 --- a/clang/include/clang/Basic/BuiltinsX86.def +++ b/clang/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/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h index 2d3a8bb..690638a 100644 --- a/clang/lib/Headers/avx512fintrin.h +++ b/clang/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/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c index 8a2dd07..3281830 100644 --- a/clang/test/CodeGen/avx512f-builtins.c +++ b/clang/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.7.4