]> granicus.if.org Git - clang/commitdiff
[AVX512] Add intrinsic for knot
authorAdam Nemet <anemet@apple.com>
Wed, 30 Jul 2014 16:51:27 +0000 (16:51 +0000)
committerAdam Nemet <anemet@apple.com>
Wed, 30 Jul 2014 16:51:27 +0000 (16:51 +0000)
Part of <rdar://problem/17688758>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214316 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/BuiltinsX86.def
lib/Headers/avx512fintrin.h
test/CodeGen/avx512f-builtins.c

index 2db8a2f1fb0d20a1adeeb0d4edb73a79b50da0cc..d546989738bc62319b37534db9c9e45aaf5ded5e 100644 (file)
@@ -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
index 2d3a8bba45e1efe996b24eb35d4d2dd4734e4218..690638ae5535e640d05cb8215409cd365aa257b5 100644 (file)
@@ -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
index 8a2dd07230d9b523ad682f047f8e880cc4dc81b1..3281830787a6dd851d0f897ceed68043f69d8d7c 100644 (file)
@@ -109,3 +109,10 @@ __m512d test_mm512_castpd256_pd512(__m256d a)
   // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
   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);
+}