[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>

llvm-svn: 214316

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

index 2db8a2f..d546989 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 2d3a8bb..690638a 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 8a2dd07..3281830 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);
+}