summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2014-07-28 17:14:42 +0000
committerAdam Nemet <anemet@apple.com>2014-07-28 17:14:42 +0000
commita3ebe6214b7bc1f1217ca745ccd825e85c3026cb (patch)
tree604635a0328551166a735eb06036bd325f507c68
parent0d5bb5530dae51f205390eb0a93799cf97ecffbb (diff)
downloadbcm5719-llvm-a3ebe6214b7bc1f1217ca745ccd825e85c3026cb.tar.gz
bcm5719-llvm-a3ebe6214b7bc1f1217ca745ccd825e85c3026cb.zip
[AVX512] Add FP add/sub/mul intrinsics
Part of <rdar://problem/17688758> llvm-svn: 214098
-rw-r--r--clang/lib/Headers/avx512fintrin.h36
-rw-r--r--clang/test/CodeGen/avx512f-builtins.c28
2 files changed, 64 insertions, 0 deletions
diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h
index 9ea5da9e343..785d5281bc0 100644
--- a/clang/lib/Headers/avx512fintrin.h
+++ b/clang/lib/Headers/avx512fintrin.h
@@ -93,6 +93,42 @@ _mm512_setzero_pd(void)
/* Arithmetic */
+static __inline __m512d __attribute__((__always_inline__, __nodebug__))
+_mm512_add_pd(__m512d __a, __m512d __b)
+{
+ return __a + __b;
+}
+
+static __inline __m512 __attribute__((__always_inline__, __nodebug__))
+_mm512_add_ps(__m512 __a, __m512 __b)
+{
+ return __a + __b;
+}
+
+static __inline __m512d __attribute__((__always_inline__, __nodebug__))
+_mm512_mul_pd(__m512d __a, __m512d __b)
+{
+ return __a * __b;
+}
+
+static __inline __m512 __attribute__((__always_inline__, __nodebug__))
+_mm512_mul_ps(__m512 __a, __m512 __b)
+{
+ return __a * __b;
+}
+
+static __inline __m512d __attribute__((__always_inline__, __nodebug__))
+_mm512_sub_pd(__m512d __a, __m512d __b)
+{
+ return __a - __b;
+}
+
+static __inline __m512 __attribute__((__always_inline__, __nodebug__))
+_mm512_sub_ps(__m512 __a, __m512 __b)
+{
+ return __a - __b;
+}
+
static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
_mm512_max_pd(__m512d __A, __m512d __B)
{
diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c
index e58a89a97c4..968c015c870 100644
--- a/clang/test/CodeGen/avx512f-builtins.c
+++ b/clang/test/CodeGen/avx512f-builtins.c
@@ -32,3 +32,31 @@ __m512 test_mm512_rsqrt14_ps(__m512 a)
// CHECK: @llvm.x86.avx512.rsqrt14.ps.512
return _mm512_rsqrt14_ps(a);
}
+
+__m512 test_mm512_add_ps(__m512 a, __m512 b)
+{
+ // CHECK-LABEL: @test_mm512_add_ps
+ // CHECK: fadd <16 x float>
+ return _mm512_add_ps(a, b);
+}
+
+__m512d test_mm512_add_pd(__m512d a, __m512d b)
+{
+ // CHECK-LABEL: @test_mm512_add_pd
+ // CHECK: fadd <8 x double>
+ return _mm512_add_pd(a, b);
+}
+
+__m512 test_mm512_mul_ps(__m512 a, __m512 b)
+{
+ // CHECK-LABEL: @test_mm512_mul_ps
+ // CHECK: fmul <16 x float>
+ return _mm512_mul_ps(a, b);
+}
+
+__m512d test_mm512_mul_pd(__m512d a, __m512d b)
+{
+ // CHECK-LABEL: @test_mm512_mul_pd
+ // CHECK: fmul <8 x double>
+ return _mm512_mul_pd(a, b);
+}
OpenPOWER on IntegriCloud