blob: 4aa8c30acb23cbe58927129370b5296f655b0224 [file] [log] [blame]
Craig Toppera5df3982015-02-01 19:56:51 +00001// RUN: %clang_cc1 %s -O0 -triple=x86_64-apple-darwin -ffreestanding -target-feature +avx512f -target-feature +avx512er -emit-llvm -o - -Werror | FileCheck %s
2
3#include <immintrin.h>
4
5__m512d test_mm512_rsqrt28_round_pd(__m512d a) {
6 // CHECK-LABEL: @test_mm512_rsqrt28_round_pd
7 // CHECK: @llvm.x86.avx512.rsqrt28.pd
8 return _mm512_rsqrt28_round_pd(a, _MM_FROUND_TO_NEAREST_INT);
9}
10
11__m512d test_mm512_mask_rsqrt28_round_pd(__m512d s, __mmask8 m, __m512d a) {
12 // check-label: @test_mm512_mask_rsqrt28_round_pd
13 // check: @llvm.x86.avx512.rsqrt28.pd
14 return _mm512_mask_rsqrt28_round_pd(s, m, a, _MM_FROUND_TO_NEAREST_INT);
15}
16
17__m512d test_mm512_maskz_rsqrt28_round_pd(__mmask8 m, __m512d a) {
18 // check-label: @test_mm512_maskz_rsqrt28_round_pd
19 // check: @llvm.x86.avx512.rsqrt28.pd
20 return _mm512_maskz_rsqrt28_round_pd(m, a, _MM_FROUND_TO_NEAREST_INT);
21}
22
23__m512d test_mm512_rsqrt28_pd(__m512d a) {
24 // CHECK-LABEL: @test_mm512_rsqrt28_pd
25 // CHECK: @llvm.x86.avx512.rsqrt28.pd
26 return _mm512_rsqrt28_pd(a);
27}
28
29__m512d test_mm512_mask_rsqrt28_pd(__m512d s, __mmask8 m, __m512d a) {
30 // check-label: @test_mm512_mask_rsqrt28_pd
31 // check: @llvm.x86.avx512.rsqrt28.pd
32 return _mm512_mask_rsqrt28_pd(s, m, a);
33}
34
35__m512d test_mm512_maskz_rsqrt28_pd(__mmask8 m, __m512d a) {
36 // check-label: @test_mm512_maskz_rsqrt28_pd
37 // check: @llvm.x86.avx512.rsqrt28.pd
38 return _mm512_maskz_rsqrt28_pd(m, a);
39}
40
41__m512 test_mm512_rsqrt28_round_ps(__m512 a) {
42 // CHECK-LABEL: @test_mm512_rsqrt28_round_ps
43 // CHECK: @llvm.x86.avx512.rsqrt28.ps
44 return _mm512_rsqrt28_round_ps(a, _MM_FROUND_TO_NEAREST_INT);
45}
46
47__m512 test_mm512_mask_rsqrt28_round_ps(__m512 s, __mmask16 m, __m512 a) {
48 // CHECK-LABEL: @test_mm512_mask_rsqrt28_round_ps
49 // CHECK: @llvm.x86.avx512.rsqrt28.ps
50 return _mm512_mask_rsqrt28_round_ps(s, m, a, _MM_FROUND_TO_NEAREST_INT);
51}
52
53__m512 test_mm512_maskz_rsqrt28_round_ps(__mmask16 m, __m512 a) {
54 // CHECK-LABEL: @test_mm512_maskz_rsqrt28_round_ps
55 // CHECK: @llvm.x86.avx512.rsqrt28.ps
56 return _mm512_maskz_rsqrt28_round_ps(m, a, _MM_FROUND_TO_NEAREST_INT);
57}
58
59__m512 test_mm512_rsqrt28_ps(__m512 a) {
60 // CHECK-LABEL: @test_mm512_rsqrt28_ps
61 // CHECK: @llvm.x86.avx512.rsqrt28.ps
62 return _mm512_rsqrt28_ps(a);
63}
64
65__m512 test_mm512_mask_rsqrt28_ps(__m512 s, __mmask16 m, __m512 a) {
66 // CHECK-LABEL: @test_mm512_mask_rsqrt28_ps
67 // CHECK: @llvm.x86.avx512.rsqrt28.ps
68 return _mm512_mask_rsqrt28_ps(s, m, a);
69}
70
71__m512 test_mm512_maskz_rsqrt28_ps(__mmask16 m, __m512 a) {
72 // CHECK-LABEL: @test_mm512_maskz_rsqrt28_ps
73 // CHECK: @llvm.x86.avx512.rsqrt28.ps
74 return _mm512_maskz_rsqrt28_ps(m, a);
75}
76
77__m128 test_mm_rsqrt28_round_ss(__m128 a, __m128 b) {
78 // check-label: @test_mm_rsqrt28_round_ss
79 // check: @llvm.x86.avx512.rsqrt28.ss
80 return _mm_rsqrt28_round_ss(a, b, _MM_FROUND_TO_NEAREST_INT);
81}
82
83__m128 test_mm_mask_rsqrt28_round_ss(__m128 s, __mmask16 m, __m128 a, __m128 b) {
84 // check-label: @test_mm_mask_rsqrt28_round_ss
85 // check: @llvm.x86.avx512.rsqrt28.ss
86 return _mm_mask_rsqrt28_round_ss(s, m, a, b, _MM_FROUND_TO_NEAREST_INT);
87}
88
89__m128 test_mm_maskz_rsqrt28_round_ss(__mmask16 m, __m128 a, __m128 b) {
90 // check-label: @test_mm_maskz_rsqrt28_round_ss
91 // check: @llvm.x86.avx512.rsqrt28.ss
92 return _mm_maskz_rsqrt28_round_ss(m, a, b, _MM_FROUND_TO_NEAREST_INT);
93}
94
95__m128 test_mm_rsqrt28_ss(__m128 a, __m128 b) {
96 // check-label: @test_mm_rsqrt28_ss
97 // check: @llvm.x86.avx512.rsqrt28.ss
98 return _mm_rsqrt28_ss(a, b);
99}
100
101__m128 test_mm_mask_rsqrt28_ss(__m128 s, __mmask16 m, __m128 a, __m128 b) {
102 // check-label: @test_mm_mask_rsqrt28_ss
103 // check: @llvm.x86.avx512.rsqrt28.ss
104 return _mm_mask_rsqrt28_ss(s, m, a, b);
105}
106
107__m128 test_mm_maskz_rsqrt28_ss(__mmask16 m, __m128 a, __m128 b) {
108 // check-label: @test_mm_maskz_rsqrt28_ss
109 // check: @llvm.x86.avx512.rsqrt28.ss
110 return _mm_maskz_rsqrt28_ss(m, a, b);
111}
112
113__m128d test_mm_rsqrt28_round_sd(__m128d a, __m128d b) {
114 // CHECK-LABEL: @test_mm_rsqrt28_round_sd
115 // CHECK: @llvm.x86.avx512.rsqrt28.sd
116 return _mm_rsqrt28_round_sd(a, b, _MM_FROUND_TO_NEAREST_INT);
117}
118
119__m128d test_mm_mask_rsqrt28_round_sd(__m128d s, __mmask8 m, __m128d a, __m128d b) {
120 // CHECK-LABEL: @test_mm_mask_rsqrt28_round_sd
121 // CHECK: @llvm.x86.avx512.rsqrt28.sd
122 return _mm_mask_rsqrt28_round_sd(s, m, a, b, _MM_FROUND_TO_NEAREST_INT);
123}
124
125__m128d test_mm_maskz_rsqrt28_round_sd(__mmask8 m, __m128d a, __m128d b) {
126 // CHECK-LABEL: @test_mm_maskz_rsqrt28_round_sd
127 // CHECK: @llvm.x86.avx512.rsqrt28.sd
128 return _mm_maskz_rsqrt28_round_sd(m, a, b, _MM_FROUND_TO_NEAREST_INT);
129}
130
131__m512d test_mm512_rcp28_round_pd(__m512d a) {
132 // CHECK-LABEL: @test_mm512_rcp28_round_pd
133 // CHECK: @llvm.x86.avx512.rcp28.pd
134 return _mm512_rcp28_round_pd(a, _MM_FROUND_TO_NEAREST_INT);
135}
136
137__m512d test_mm512_mask_rcp28_round_pd(__m512d s, __mmask8 m, __m512d a) {
138 // check-label: @test_mm512_mask_rcp28_round_pd
139 // check: @llvm.x86.avx512.rcp28.pd
140 return _mm512_mask_rcp28_round_pd(s, m, a, _MM_FROUND_TO_NEAREST_INT);
141}
142
143__m512d test_mm512_maskz_rcp28_round_pd(__mmask8 m, __m512d a) {
144 // check-label: @test_mm512_maskz_rcp28_round_pd
145 // check: @llvm.x86.avx512.rcp28.pd
146 return _mm512_maskz_rcp28_round_pd(m, a, _MM_FROUND_TO_NEAREST_INT);
147}
148
149__m512d test_mm512_rcp28_pd(__m512d a) {
150 // CHECK-LABEL: @test_mm512_rcp28_pd
151 // CHECK: @llvm.x86.avx512.rcp28.pd
152 return _mm512_rcp28_pd(a);
153}
154
155__m512d test_mm512_mask_rcp28_pd(__m512d s, __mmask8 m, __m512d a) {
156 // check-label: @test_mm512_mask_rcp28_pd
157 // check: @llvm.x86.avx512.rcp28.pd
158 return _mm512_mask_rcp28_pd(s, m, a);
159}
160
161__m512d test_mm512_maskz_rcp28_pd(__mmask8 m, __m512d a) {
162 // check-label: @test_mm512_maskz_rcp28_pd
163 // check: @llvm.x86.avx512.rcp28.pd
164 return _mm512_maskz_rcp28_pd(m, a);
165}
166
167__m512 test_mm512_rcp28_round_ps(__m512 a) {
168 // CHECK-LABEL: @test_mm512_rcp28_round_ps
169 // CHECK: @llvm.x86.avx512.rcp28.ps
170 return _mm512_rcp28_round_ps(a, _MM_FROUND_TO_NEAREST_INT);
171}
172
173__m512 test_mm512_mask_rcp28_round_ps(__m512 s, __mmask16 m, __m512 a) {
174 // CHECK-LABEL: @test_mm512_mask_rcp28_round_ps
175 // CHECK: @llvm.x86.avx512.rcp28.ps
176 return _mm512_mask_rcp28_round_ps(s, m, a, _MM_FROUND_TO_NEAREST_INT);
177}
178
179__m512 test_mm512_maskz_rcp28_round_ps(__mmask16 m, __m512 a) {
180 // CHECK-LABEL: @test_mm512_maskz_rcp28_round_ps
181 // CHECK: @llvm.x86.avx512.rcp28.ps
182 return _mm512_maskz_rcp28_round_ps(m, a, _MM_FROUND_TO_NEAREST_INT);
183}
184
185__m512 test_mm512_rcp28_ps(__m512 a) {
186 // CHECK-LABEL: @test_mm512_rcp28_ps
187 // CHECK: @llvm.x86.avx512.rcp28.ps
188 return _mm512_rcp28_ps(a);
189}
190
191__m512 test_mm512_mask_rcp28_ps(__m512 s, __mmask16 m, __m512 a) {
192 // CHECK-LABEL: @test_mm512_mask_rcp28_ps
193 // CHECK: @llvm.x86.avx512.rcp28.ps
194 return _mm512_mask_rcp28_ps(s, m, a);
195}
196
197__m512 test_mm512_maskz_rcp28_ps(__mmask16 m, __m512 a) {
198 // CHECK-LABEL: @test_mm512_maskz_rcp28_ps
199 // CHECK: @llvm.x86.avx512.rcp28.ps
200 return _mm512_maskz_rcp28_ps(m, a);
201}
202
203__m128 test_mm_rcp28_round_ss(__m128 a, __m128 b) {
204 // check-label: @test_mm_rcp28_round_ss
205 // check: @llvm.x86.avx512.rcp28.ss
206 return _mm_rcp28_round_ss(a, b, _MM_FROUND_TO_NEAREST_INT);
207}
208
209__m128 test_mm_mask_rcp28_round_ss(__m128 s, __mmask16 m, __m128 a, __m128 b) {
210 // check-label: @test_mm_mask_rcp28_round_ss
211 // check: @llvm.x86.avx512.rcp28.ss
212 return _mm_mask_rcp28_round_ss(s, m, a, b, _MM_FROUND_TO_NEAREST_INT);
213}
214
215__m128 test_mm_maskz_rcp28_round_ss(__mmask16 m, __m128 a, __m128 b) {
216 // check-label: @test_mm_maskz_rcp28_round_ss
217 // check: @llvm.x86.avx512.rcp28.ss
218 return _mm_maskz_rcp28_round_ss(m, a, b, _MM_FROUND_TO_NEAREST_INT);
219}
220
221__m128 test_mm_rcp28_ss(__m128 a, __m128 b) {
222 // check-label: @test_mm_rcp28_ss
223 // check: @llvm.x86.avx512.rcp28.ss
224 return _mm_rcp28_ss(a, b);
225}
226
227__m128 test_mm_mask_rcp28_ss(__m128 s, __mmask16 m, __m128 a, __m128 b) {
228 // check-label: @test_mm_mask_rcp28_ss
229 // check: @llvm.x86.avx512.rcp28.ss
230 return _mm_mask_rcp28_ss(s, m, a, b);
231}
232
233__m128 test_mm_maskz_rcp28_ss(__mmask16 m, __m128 a, __m128 b) {
234 // check-label: @test_mm_maskz_rcp28_ss
235 // check: @llvm.x86.avx512.rcp28.ss
236 return _mm_maskz_rcp28_ss(m, a, b);
237}
238
239__m128d test_mm_rcp28_round_sd(__m128d a, __m128d b) {
240 // CHECK-LABEL: @test_mm_rcp28_round_sd
241 // CHECK: @llvm.x86.avx512.rcp28.sd
242 return _mm_rcp28_round_sd(a, b, _MM_FROUND_TO_NEAREST_INT);
243}
244
245__m128d test_mm_mask_rcp28_round_sd(__m128d s, __mmask8 m, __m128d a, __m128d b) {
246 // CHECK-LABEL: @test_mm_mask_rcp28_round_sd
247 // CHECK: @llvm.x86.avx512.rcp28.sd
248 return _mm_mask_rcp28_round_sd(s, m, a, b, _MM_FROUND_TO_NEAREST_INT);
249}
250
251__m128d test_mm_maskz_rcp28_round_sd(__mmask8 m, __m128d a, __m128d b) {
252 // CHECK-LABEL: @test_mm_maskz_rcp28_round_sd
253 // CHECK: @llvm.x86.avx512.rcp28.sd
254 return _mm_maskz_rcp28_round_sd(m, a, b, _MM_FROUND_TO_NEAREST_INT);
255}
256
257__m128d test_mm_rcp28_sd(__m128d a, __m128d b) {
258 // CHECK-LABEL: @test_mm_rcp28_sd
259 // CHECK: @llvm.x86.avx512.rcp28.sd
260 return _mm_rcp28_sd(a, b);
261}
262
263__m128d test_mm_mask_rcp28_sd(__m128d s, __mmask8 m, __m128d a, __m128d b) {
264 // CHECK-LABEL: @test_mm_mask_rcp28_sd
265 // CHECK: @llvm.x86.avx512.rcp28.sd
266 return _mm_mask_rcp28_sd(s, m, a, b);
267}
268
269__m128d test_mm_maskz_rcp28_sd(__mmask8 m, __m128d a, __m128d b) {
270 // CHECK-LABEL: @test_mm_maskz_rcp28_sd
271 // CHECK: @llvm.x86.avx512.rcp28.sd
272 return _mm_maskz_rcp28_sd(m, a, b);
273}