blob: 4c4a064ff5d056f9719e2e35b3c08f1de3d2e4fb [file] [log] [blame]
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001// RUN: %clang_cc1 %s -O0 -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Werror | FileCheck %s
2
3// Don't include mm_malloc.h, it's system specific.
4#define __MM_MALLOC_H
5
6#include <immintrin.h>
7
8__m512d test_mm512_sqrt_pd(__m512d a)
9{
Adam Nemet062ba612014-07-28 17:14:36 +000010 // CHECK-LABEL: @test_mm512_sqrt_pd
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000011 // CHECK: @llvm.x86.avx512.sqrt.pd.512
12 return _mm512_sqrt_pd(a);
13}
14
15__m512 test_mm512_sqrt_ps(__m512 a)
16{
Adam Nemet062ba612014-07-28 17:14:36 +000017 // CHECK-LABEL: @test_mm512_sqrt_ps
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000018 // CHECK: @llvm.x86.avx512.sqrt.ps.512
19 return _mm512_sqrt_ps(a);
20}
21
22__m512d test_mm512_rsqrt14_pd(__m512d a)
23{
Adam Nemet062ba612014-07-28 17:14:36 +000024 // CHECK-LABEL: @test_mm512_rsqrt14_pd
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000025 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
26 return _mm512_rsqrt14_pd(a);
27}
28
29__m512 test_mm512_rsqrt14_ps(__m512 a)
30{
Adam Nemet062ba612014-07-28 17:14:36 +000031 // CHECK-LABEL: @test_mm512_rsqrt14_ps
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000032 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
33 return _mm512_rsqrt14_ps(a);
34}
Adam Nemeta3ebe622014-07-28 17:14:42 +000035
36__m512 test_mm512_add_ps(__m512 a, __m512 b)
37{
38 // CHECK-LABEL: @test_mm512_add_ps
39 // CHECK: fadd <16 x float>
40 return _mm512_add_ps(a, b);
41}
42
43__m512d test_mm512_add_pd(__m512d a, __m512d b)
44{
45 // CHECK-LABEL: @test_mm512_add_pd
46 // CHECK: fadd <8 x double>
47 return _mm512_add_pd(a, b);
48}
49
50__m512 test_mm512_mul_ps(__m512 a, __m512 b)
51{
52 // CHECK-LABEL: @test_mm512_mul_ps
53 // CHECK: fmul <16 x float>
54 return _mm512_mul_ps(a, b);
55}
56
57__m512d test_mm512_mul_pd(__m512d a, __m512d b)
58{
59 // CHECK-LABEL: @test_mm512_mul_pd
60 // CHECK: fmul <8 x double>
61 return _mm512_mul_pd(a, b);
62}
Adam Nemetfce1ad02014-07-28 17:14:45 +000063
64void test_mm512_storeu_ps(void *p, __m512 a)
65{
66 // CHECK-LABEL: @test_mm512_storeu_ps
67 // CHECK: @llvm.x86.avx512.mask.storeu.ps.512
68 _mm512_storeu_ps(p, a);
69}
70
71void test_mm512_storeu_pd(void *p, __m512d a)
72{
73 // CHECK-LABEL: @test_mm512_storeu_pd
74 // CHECK: @llvm.x86.avx512.mask.storeu.pd.512
75 _mm512_storeu_pd(p, a);
76}
77
78void test_mm512_store_ps(void *p, __m512 a)
79{
80 // CHECK-LABEL: @test_mm512_store_ps
81 // CHECK: store <16 x float>
82 _mm512_store_ps(p, a);
83}
84
85void test_mm512_store_pd(void *p, __m512d a)
86{
87 // CHECK-LABEL: @test_mm512_store_pd
88 // CHECK: store <8 x double>
89 _mm512_store_pd(p, a);
90}
Adam Nemetf42e7a22014-07-30 16:51:22 +000091
Adam Nemetda82bcc2014-07-31 04:00:39 +000092__m512 test_mm512_loadu_ps(void *p)
93{
94 // CHECK-LABEL: @test_mm512_loadu_ps
95 // CHECK: load <16 x float>* {{.*}}, align 1{{$}}
96 return _mm512_loadu_ps(p);
97}
98
99__m512d test_mm512_loadu_pd(void *p)
100{
101 // CHECK-LABEL: @test_mm512_loadu_pd
102 // CHECK: load <8 x double>* {{.*}}, align 1{{$}}
103 return _mm512_loadu_pd(p);
104}
105
Adam Nemetf42e7a22014-07-30 16:51:22 +0000106__m512d test_mm512_set1_pd(double d)
107{
108 // CHECK-LABEL: @test_mm512_set1_pd
109 // CHECK: insertelement <8 x double> {{.*}}, i32 0
110 // CHECK: insertelement <8 x double> {{.*}}, i32 1
111 // CHECK: insertelement <8 x double> {{.*}}, i32 2
112 // CHECK: insertelement <8 x double> {{.*}}, i32 3
113 // CHECK: insertelement <8 x double> {{.*}}, i32 4
114 // CHECK: insertelement <8 x double> {{.*}}, i32 5
115 // CHECK: insertelement <8 x double> {{.*}}, i32 6
116 // CHECK: insertelement <8 x double> {{.*}}, i32 7
117 return _mm512_set1_pd(d);
118}
Adam Nemetc871ff92014-07-30 16:51:24 +0000119
120__m512d test_mm512_castpd256_pd512(__m256d a)
121{
122 // CHECK-LABEL: @test_mm512_castpd256_pd512
123 // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
124 return _mm512_castpd256_pd512(a);
125}
Adam Nemet2db1d2f2014-07-30 16:51:27 +0000126
127__mmask16 test_mm512_knot(__mmask16 a)
128{
129 // CHECK-LABEL: @test_mm512_knot
130 // CHECK: @llvm.x86.avx512.knot.w
131 return _mm512_knot(a);
132}