xref: /llvm-project/clang/test/CodeGen/X86/avx512vlfp16-builtins.c (revision 39db5e1ed87363a9ffea81e53520b542201b3262)
1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-unknown -target-feature +avx512vl -target-feature +avx512fp16 -emit-llvm -o - -Wall -Werror | FileCheck %s
2 
3 #include <immintrin.h>
4 
test_mm_cvtsh_h(__m128h __A)5 _Float16 test_mm_cvtsh_h(__m128h __A) {
6   // CHECK-LABEL: @test_mm_cvtsh_h
7   // CHECK: extractelement <8 x half> %{{.*}}, i32 0
8   return _mm_cvtsh_h(__A);
9 }
10 
test_mm256_cvtsh_h(__m256h __A)11 _Float16 test_mm256_cvtsh_h(__m256h __A) {
12   // CHECK-LABEL: @test_mm256_cvtsh_h
13   // CHECK: extractelement <16 x half> %{{.*}}, i32 0
14   return _mm256_cvtsh_h(__A);
15 }
16 
test_mm_set_sh(_Float16 __h)17 __m128h test_mm_set_sh(_Float16 __h) {
18   // CHECK-LABEL: @test_mm_set_sh
19   // CHECK: insertelement <8 x half> {{.*}}, i32 0
20   // CHECK: insertelement <8 x half> %{{.*}}, half 0xH0000, i32 1
21   // CHECK: insertelement <8 x half> %{{.*}}, half 0xH0000, i32 2
22   // CHECK: insertelement <8 x half> %{{.*}}, half 0xH0000, i32 3
23   // CHECK: insertelement <8 x half> %{{.*}}, half 0xH0000, i32 4
24   // CHECK: insertelement <8 x half> %{{.*}}, half 0xH0000, i32 5
25   // CHECK: insertelement <8 x half> %{{.*}}, half 0xH0000, i32 6
26   // CHECK: insertelement <8 x half> %{{.*}}, half 0xH0000, i32 7
27   return _mm_set_sh(__h);
28 }
29 
test_mm_set1_ph(_Float16 h)30 __m128h test_mm_set1_ph(_Float16 h) {
31   // CHECK-LABEL: @test_mm_set1_ph
32   // CHECK: insertelement <8 x half> {{.*}}, i32 0
33   // CHECK: insertelement <8 x half> {{.*}}, i32 1
34   // CHECK: insertelement <8 x half> {{.*}}, i32 2
35   // CHECK: insertelement <8 x half> {{.*}}, i32 3
36   // CHECK: insertelement <8 x half> {{.*}}, i32 4
37   // CHECK: insertelement <8 x half> {{.*}}, i32 5
38   // CHECK: insertelement <8 x half> {{.*}}, i32 6
39   // CHECK: insertelement <8 x half> {{.*}}, i32 7
40   return _mm_set1_ph(h);
41 }
42 
test_mm256_set1_ph(_Float16 h)43 __m256h test_mm256_set1_ph(_Float16 h) {
44   // CHECK-LABEL: @test_mm256_set1_ph
45   // CHECK: insertelement <16 x half> {{.*}}, i32 0
46   // CHECK: insertelement <16 x half> {{.*}}, i32 1
47   // CHECK: insertelement <16 x half> {{.*}}, i32 2
48   // CHECK: insertelement <16 x half> {{.*}}, i32 3
49   // CHECK: insertelement <16 x half> {{.*}}, i32 4
50   // CHECK: insertelement <16 x half> {{.*}}, i32 5
51   // CHECK: insertelement <16 x half> {{.*}}, i32 6
52   // CHECK: insertelement <16 x half> {{.*}}, i32 7
53   // CHECK: insertelement <16 x half> {{.*}}, i32 8
54   // CHECK: insertelement <16 x half> {{.*}}, i32 9
55   // CHECK: insertelement <16 x half> {{.*}}, i32 10
56   // CHECK: insertelement <16 x half> {{.*}}, i32 11
57   // CHECK: insertelement <16 x half> {{.*}}, i32 12
58   // CHECK: insertelement <16 x half> {{.*}}, i32 13
59   // CHECK: insertelement <16 x half> {{.*}}, i32 14
60   // CHECK: insertelement <16 x half> {{.*}}, i32 15
61   return _mm256_set1_ph(h);
62 }
63 
test_mm_set1_pch(_Float16 _Complex h)64 __m128h test_mm_set1_pch(_Float16 _Complex h) {
65   // CHECK-LABEL: @test_mm_set1_pch
66   // CHECK: insertelement <4 x float> {{.*}}, i32 0
67   // CHECK: insertelement <4 x float> {{.*}}, i32 1
68   // CHECK: insertelement <4 x float> {{.*}}, i32 2
69   // CHECK: insertelement <4 x float> {{.*}}, i32 3
70   return _mm_set1_pch(h);
71 }
72 
test_mm256_set1_pch(_Float16 _Complex h)73 __m256h test_mm256_set1_pch(_Float16 _Complex h) {
74   // CHECK-LABEL: @test_mm256_set1_pch
75   // CHECK: insertelement <8 x float> {{.*}}, i32 0
76   // CHECK: insertelement <8 x float> {{.*}}, i32 1
77   // CHECK: insertelement <8 x float> {{.*}}, i32 2
78   // CHECK: insertelement <8 x float> {{.*}}, i32 3
79   // CHECK: insertelement <8 x float> {{.*}}, i32 4
80   // CHECK: insertelement <8 x float> {{.*}}, i32 5
81   // CHECK: insertelement <8 x float> {{.*}}, i32 6
82   // CHECK: insertelement <8 x float> {{.*}}, i32 7
83   return _mm256_set1_pch(h);
84 }
85 
test_mm_set_ph(_Float16 __h1,_Float16 __h2,_Float16 __h3,_Float16 __h4,_Float16 __h5,_Float16 __h6,_Float16 __h7,_Float16 __h8)86 __m128h test_mm_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
87                        _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8) {
88   // CHECK-LABEL: @test_mm_set_ph
89   // CHECK: insertelement <8 x half> {{.*}}, i32 0
90   // CHECK: insertelement <8 x half> {{.*}}, i32 1
91   // CHECK: insertelement <8 x half> {{.*}}, i32 2
92   // CHECK: insertelement <8 x half> {{.*}}, i32 3
93   // CHECK: insertelement <8 x half> {{.*}}, i32 4
94   // CHECK: insertelement <8 x half> {{.*}}, i32 5
95   // CHECK: insertelement <8 x half> {{.*}}, i32 6
96   // CHECK: insertelement <8 x half> {{.*}}, i32 7
97   return _mm_set_ph(__h1, __h2, __h3, __h4, __h5, __h6, __h7, __h8);
98 }
99 
test_mm256_set_ph(_Float16 __h1,_Float16 __h2,_Float16 __h3,_Float16 __h4,_Float16 __h5,_Float16 __h6,_Float16 __h7,_Float16 __h8,_Float16 __h9,_Float16 __h10,_Float16 __h11,_Float16 __h12,_Float16 __h13,_Float16 __h14,_Float16 __h15,_Float16 __h16)100 __m256h test_mm256_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
101                           _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8,
102                           _Float16 __h9, _Float16 __h10, _Float16 __h11, _Float16 __h12,
103                           _Float16 __h13, _Float16 __h14, _Float16 __h15, _Float16 __h16) {
104   // CHECK-LABEL: @test_mm256_set_ph
105   // CHECK: insertelement <16 x half> {{.*}}, i32 0
106   // CHECK: insertelement <16 x half> {{.*}}, i32 1
107   // CHECK: insertelement <16 x half> {{.*}}, i32 2
108   // CHECK: insertelement <16 x half> {{.*}}, i32 3
109   // CHECK: insertelement <16 x half> {{.*}}, i32 4
110   // CHECK: insertelement <16 x half> {{.*}}, i32 5
111   // CHECK: insertelement <16 x half> {{.*}}, i32 6
112   // CHECK: insertelement <16 x half> {{.*}}, i32 7
113   // CHECK: insertelement <16 x half> {{.*}}, i32 8
114   // CHECK: insertelement <16 x half> {{.*}}, i32 9
115   // CHECK: insertelement <16 x half> {{.*}}, i32 10
116   // CHECK: insertelement <16 x half> {{.*}}, i32 11
117   // CHECK: insertelement <16 x half> {{.*}}, i32 12
118   // CHECK: insertelement <16 x half> {{.*}}, i32 13
119   // CHECK: insertelement <16 x half> {{.*}}, i32 14
120   // CHECK: insertelement <16 x half> {{.*}}, i32 15
121   return _mm256_set_ph(__h1, __h2, __h3, __h4, __h5, __h6, __h7, __h8,
122                        __h9, __h10, __h11, __h12, __h13, __h14, __h15, __h16);
123 }
124 
test_mm_setr_ph(_Float16 __h1,_Float16 __h2,_Float16 __h3,_Float16 __h4,_Float16 __h5,_Float16 __h6,_Float16 __h7,_Float16 __h8)125 __m128h test_mm_setr_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
126                         _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8) {
127   // CHECK-LABEL: @test_mm_setr_ph
128   // CHECK: insertelement <8 x half> {{.*}}, i32 0
129   // CHECK: insertelement <8 x half> {{.*}}, i32 1
130   // CHECK: insertelement <8 x half> {{.*}}, i32 2
131   // CHECK: insertelement <8 x half> {{.*}}, i32 3
132   // CHECK: insertelement <8 x half> {{.*}}, i32 4
133   // CHECK: insertelement <8 x half> {{.*}}, i32 5
134   // CHECK: insertelement <8 x half> {{.*}}, i32 6
135   // CHECK: insertelement <8 x half> {{.*}}, i32 7
136   return _mm_setr_ph(__h1, __h2, __h3, __h4, __h5, __h6, __h7, __h8);
137 }
138 
test_mm256_setr_ph(_Float16 __h1,_Float16 __h2,_Float16 __h3,_Float16 __h4,_Float16 __h5,_Float16 __h6,_Float16 __h7,_Float16 __h8,_Float16 __h9,_Float16 __h10,_Float16 __h11,_Float16 __h12,_Float16 __h13,_Float16 __h14,_Float16 __h15,_Float16 __h16)139 __m256h test_mm256_setr_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
140                            _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8,
141                            _Float16 __h9, _Float16 __h10, _Float16 __h11, _Float16 __h12,
142                            _Float16 __h13, _Float16 __h14, _Float16 __h15, _Float16 __h16) {
143   // CHECK-LABEL: @test_mm256_setr_ph
144   // CHECK: insertelement <16 x half> {{.*}}, i32 0
145   // CHECK: insertelement <16 x half> {{.*}}, i32 1
146   // CHECK: insertelement <16 x half> {{.*}}, i32 2
147   // CHECK: insertelement <16 x half> {{.*}}, i32 3
148   // CHECK: insertelement <16 x half> {{.*}}, i32 4
149   // CHECK: insertelement <16 x half> {{.*}}, i32 5
150   // CHECK: insertelement <16 x half> {{.*}}, i32 6
151   // CHECK: insertelement <16 x half> {{.*}}, i32 7
152   // CHECK: insertelement <16 x half> {{.*}}, i32 8
153   // CHECK: insertelement <16 x half> {{.*}}, i32 9
154   // CHECK: insertelement <16 x half> {{.*}}, i32 10
155   // CHECK: insertelement <16 x half> {{.*}}, i32 11
156   // CHECK: insertelement <16 x half> {{.*}}, i32 12
157   // CHECK: insertelement <16 x half> {{.*}}, i32 13
158   // CHECK: insertelement <16 x half> {{.*}}, i32 14
159   // CHECK: insertelement <16 x half> {{.*}}, i32 15
160   return _mm256_setr_ph(__h1, __h2, __h3, __h4, __h5, __h6, __h7, __h8,
161                         __h9, __h10, __h11, __h12, __h13, __h14, __h15, __h16);
162 }
163 
test_mm256_add_ph(__m256h __A,__m256h __B)164 __m256h test_mm256_add_ph(__m256h __A, __m256h __B) {
165   // CHECK-LABEL: @test_mm256_add_ph
166   // CHECK: %{{.*}} = fadd <16 x half> %{{.*}}, %{{.*}}
167   return _mm256_add_ph(__A, __B);
168 }
169 
test_mm256_mask_add_ph(__m256h __W,__mmask32 __U,__m256h __A,__m256h __B)170 __m256h test_mm256_mask_add_ph(__m256h __W, __mmask32 __U, __m256h __A, __m256h __B) {
171   // CHECK-LABEL: @test_mm256_mask_add_ph
172   // CHECK: %{{.*}} = fadd <16 x half> %{{.*}}, %{{.*}}
173   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
174   return (__m256h)_mm256_mask_add_ph(__W, __U, __A, __B);
175 }
176 
test_mm256_maskz_add_ph(__mmask32 __U,__m256h __A,__m256h __B)177 __m256h test_mm256_maskz_add_ph(__mmask32 __U, __m256h __A, __m256h __B) {
178   // CHECK-LABEL: @test_mm256_maskz_add_ph
179   // CHECK: %{{.*}} = fadd <16 x half> %{{.*}}, %{{.*}}
180   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
181   return _mm256_maskz_add_ph(__U, __A, __B);
182 }
183 
test_mm_add_ph(__m128h __A,__m128h __B)184 __m128h test_mm_add_ph(__m128h __A, __m128h __B) {
185   // CHECK-LABEL: @test_mm_add_ph
186   // CHECK: %{{.*}} = fadd <8 x half> %{{.*}}, %{{.*}}
187   return _mm_add_ph(__A, __B);
188 }
189 
test_mm_mask_add_ph(__m128h __W,__mmask32 __U,__m128h __A,__m128h __B)190 __m128h test_mm_mask_add_ph(__m128h __W, __mmask32 __U, __m128h __A, __m128h __B) {
191   // CHECK-LABEL: @test_mm_mask_add_ph
192   // CHECK: %{{.*}} = fadd <8 x half> %{{.*}}, %{{.*}}
193   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
194   return (__m128h)_mm_mask_add_ph(__W, __U, __A, __B);
195 }
196 
test_mm_maskz_add_ph(__mmask32 __U,__m128h __A,__m128h __B)197 __m128h test_mm_maskz_add_ph(__mmask32 __U, __m128h __A, __m128h __B) {
198   // CHECK-LABEL: @test_mm_maskz_add_ph
199   // CHECK: %{{.*}} = fadd <8 x half> %{{.*}}, %{{.*}}
200   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
201   return _mm_maskz_add_ph(__U, __A, __B);
202 }
203 
test_mm256_sub_ph(__m256h __A,__m256h __B)204 __m256h test_mm256_sub_ph(__m256h __A, __m256h __B) {
205   // CHECK-LABEL: @test_mm256_sub_ph
206   // CHECK: %{{.*}} = fsub <16 x half> %{{.*}}, %{{.*}}
207   return _mm256_sub_ph(__A, __B);
208 }
209 
test_mm256_mask_sub_ph(__m256h __W,__mmask32 __U,__m256h __A,__m256h __B)210 __m256h test_mm256_mask_sub_ph(__m256h __W, __mmask32 __U, __m256h __A, __m256h __B) {
211   // CHECK-LABEL: @test_mm256_mask_sub_ph
212   // CHECK: %{{.*}} = fsub <16 x half> %{{.*}}, %{{.*}}
213   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
214   return (__m256h)_mm256_mask_sub_ph(__W, __U, __A, __B);
215 }
216 
test_mm256_maskz_sub_ph(__mmask32 __U,__m256h __A,__m256h __B)217 __m256h test_mm256_maskz_sub_ph(__mmask32 __U, __m256h __A, __m256h __B) {
218   // CHECK-LABEL: @test_mm256_maskz_sub_ph
219   // CHECK: %{{.*}} = fsub <16 x half> %{{.*}}, %{{.*}}
220   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
221   return _mm256_maskz_sub_ph(__U, __A, __B);
222 }
223 
test_mm_sub_ph(__m128h __A,__m128h __B)224 __m128h test_mm_sub_ph(__m128h __A, __m128h __B) {
225   // CHECK-LABEL: @test_mm_sub_ph
226   // CHECK: %{{.*}} = fsub <8 x half> %{{.*}}, %{{.*}}
227   return _mm_sub_ph(__A, __B);
228 }
229 
test_mm_mask_sub_ph(__m128h __W,__mmask32 __U,__m128h __A,__m128h __B)230 __m128h test_mm_mask_sub_ph(__m128h __W, __mmask32 __U, __m128h __A, __m128h __B) {
231   // CHECK-LABEL: @test_mm_mask_sub_ph
232   // CHECK: %{{.*}} = fsub <8 x half> %{{.*}}, %{{.*}}
233   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
234   return (__m128h)_mm_mask_sub_ph(__W, __U, __A, __B);
235 }
236 
test_mm_maskz_sub_ph(__mmask32 __U,__m128h __A,__m128h __B)237 __m128h test_mm_maskz_sub_ph(__mmask32 __U, __m128h __A, __m128h __B) {
238   // CHECK-LABEL: @test_mm_maskz_sub_ph
239   // CHECK: %{{.*}} = fsub <8 x half> %{{.*}}, %{{.*}}
240   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
241   return _mm_maskz_sub_ph(__U, __A, __B);
242 }
243 
test_mm256_mul_ph(__m256h __A,__m256h __B)244 __m256h test_mm256_mul_ph(__m256h __A, __m256h __B) {
245   // CHECK-LABEL: @test_mm256_mul_ph
246   // CHECK: %{{.*}} = fmul <16 x half> %{{.*}}, %{{.*}}
247   return _mm256_mul_ph(__A, __B);
248 }
249 
test_mm256_mask_mul_ph(__m256h __W,__mmask32 __U,__m256h __A,__m256h __B)250 __m256h test_mm256_mask_mul_ph(__m256h __W, __mmask32 __U, __m256h __A, __m256h __B) {
251   // CHECK-LABEL: @test_mm256_mask_mul_ph
252   // CHECK: %{{.*}} = fmul <16 x half> %{{.*}}, %{{.*}}
253   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
254   return (__m256h)_mm256_mask_mul_ph(__W, __U, __A, __B);
255 }
256 
test_mm256_maskz_mul_ph(__mmask32 __U,__m256h __A,__m256h __B)257 __m256h test_mm256_maskz_mul_ph(__mmask32 __U, __m256h __A, __m256h __B) {
258   // CHECK-LABEL: @test_mm256_maskz_mul_ph
259   // CHECK: %{{.*}} = fmul <16 x half> %{{.*}}, %{{.*}}
260   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
261   return _mm256_maskz_mul_ph(__U, __A, __B);
262 }
263 
test_mm_mul_ph(__m128h __A,__m128h __B)264 __m128h test_mm_mul_ph(__m128h __A, __m128h __B) {
265   // CHECK-LABEL: @test_mm_mul_ph
266   // CHECK: %{{.*}} = fmul <8 x half> %{{.*}}, %{{.*}}
267   return _mm_mul_ph(__A, __B);
268 }
269 
test_mm_mask_mul_ph(__m128h __W,__mmask32 __U,__m128h __A,__m128h __B)270 __m128h test_mm_mask_mul_ph(__m128h __W, __mmask32 __U, __m128h __A, __m128h __B) {
271   // CHECK-LABEL: @test_mm_mask_mul_ph
272   // CHECK: %{{.*}} = fmul <8 x half> %{{.*}}, %{{.*}}
273   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
274   return (__m128h)_mm_mask_mul_ph(__W, __U, __A, __B);
275 }
276 
test_mm_maskz_mul_ph(__mmask32 __U,__m128h __A,__m128h __B)277 __m128h test_mm_maskz_mul_ph(__mmask32 __U, __m128h __A, __m128h __B) {
278   // CHECK-LABEL: @test_mm_maskz_mul_ph
279   // CHECK: %{{.*}} = fmul <8 x half> %{{.*}}, %{{.*}}
280   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
281   return _mm_maskz_mul_ph(__U, __A, __B);
282 }
283 
test_mm256_div_ph(__m256h __A,__m256h __B)284 __m256h test_mm256_div_ph(__m256h __A, __m256h __B) {
285   // CHECK-LABEL: @test_mm256_div_ph
286   // CHECK: %{{.*}} = fdiv <16 x half> %{{.*}}, %{{.*}}
287   return _mm256_div_ph(__A, __B);
288 }
289 
test_mm256_mask_div_ph(__m256h __W,__mmask32 __U,__m256h __A,__m256h __B)290 __m256h test_mm256_mask_div_ph(__m256h __W, __mmask32 __U, __m256h __A, __m256h __B) {
291   // CHECK-LABEL: @test_mm256_mask_div_ph
292   // CHECK: %{{.*}} = fdiv <16 x half> %{{.*}}, %{{.*}}
293   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
294   return (__m256h)_mm256_mask_div_ph(__W, __U, __A, __B);
295 }
296 
test_mm256_maskz_div_ph(__mmask32 __U,__m256h __A,__m256h __B)297 __m256h test_mm256_maskz_div_ph(__mmask32 __U, __m256h __A, __m256h __B) {
298   // CHECK-LABEL: @test_mm256_maskz_div_ph
299   // CHECK: %{{.*}} = fdiv <16 x half> %{{.*}}, %{{.*}}
300   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
301   return _mm256_maskz_div_ph(__U, __A, __B);
302 }
303 
test_mm_div_ph(__m128h __A,__m128h __B)304 __m128h test_mm_div_ph(__m128h __A, __m128h __B) {
305   // CHECK-LABEL: @test_mm_div_ph
306   // CHECK: %{{.*}} = fdiv <8 x half> %{{.*}}, %{{.*}}
307   return _mm_div_ph(__A, __B);
308 }
309 
test_mm_mask_div_ph(__m128h __W,__mmask32 __U,__m128h __A,__m128h __B)310 __m128h test_mm_mask_div_ph(__m128h __W, __mmask32 __U, __m128h __A, __m128h __B) {
311   // CHECK-LABEL: @test_mm_mask_div_ph
312   // CHECK: %{{.*}} = fdiv <8 x half> %{{.*}}, %{{.*}}
313   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
314   return (__m128h)_mm_mask_div_ph(__W, __U, __A, __B);
315 }
316 
test_mm_maskz_div_ph(__mmask32 __U,__m128h __A,__m128h __B)317 __m128h test_mm_maskz_div_ph(__mmask32 __U, __m128h __A, __m128h __B) {
318   // CHECK-LABEL: @test_mm_maskz_div_ph
319   // CHECK: %{{.*}} = fdiv <8 x half> %{{.*}}, %{{.*}}
320   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
321   return _mm_maskz_div_ph(__U, __A, __B);
322 }
323 
test_mm256_min_ph(__m256h __A,__m256h __B)324 __m256h test_mm256_min_ph(__m256h __A, __m256h __B) {
325   // CHECK-LABEL: @test_mm256_min_ph
326   // CHECK: @llvm.x86.avx512fp16.min.ph.256
327   return _mm256_min_ph(__A, __B);
328 }
329 
test_mm256_mask_min_ph(__m256h __W,__mmask32 __U,__m256h __A,__m256h __B)330 __m256h test_mm256_mask_min_ph(__m256h __W, __mmask32 __U, __m256h __A, __m256h __B) {
331   // CHECK-LABEL: @test_mm256_mask_min_ph
332   // CHECK: @llvm.x86.avx512fp16.min.ph.256
333   return (__m256h)_mm256_mask_min_ph(__W, __U, __A, __B);
334 }
335 
test_mm256_maskz_min_ph(__mmask32 __U,__m256h __A,__m256h __B)336 __m256h test_mm256_maskz_min_ph(__mmask32 __U, __m256h __A, __m256h __B) {
337   // CHECK-LABEL: @test_mm256_maskz_min_ph
338   // CHECK: @llvm.x86.avx512fp16.min.ph.256
339   return _mm256_maskz_min_ph(__U, __A, __B);
340 }
341 
test_mm_min_ph(__m128h __A,__m128h __B)342 __m128h test_mm_min_ph(__m128h __A, __m128h __B) {
343   // CHECK-LABEL: @test_mm_min_ph
344   // CHECK: @llvm.x86.avx512fp16.min.ph.128
345   return _mm_min_ph(__A, __B);
346 }
347 
test_mm_mask_min_ph(__m128h __W,__mmask32 __U,__m128h __A,__m128h __B)348 __m128h test_mm_mask_min_ph(__m128h __W, __mmask32 __U, __m128h __A, __m128h __B) {
349   // CHECK-LABEL: @test_mm_mask_min_ph
350   // CHECK: @llvm.x86.avx512fp16.min.ph.128
351   return (__m128h)_mm_mask_min_ph(__W, __U, __A, __B);
352 }
353 
test_mm_maskz_min_ph(__mmask32 __U,__m128h __A,__m128h __B)354 __m128h test_mm_maskz_min_ph(__mmask32 __U, __m128h __A, __m128h __B) {
355   // CHECK-LABEL: @test_mm_maskz_min_ph
356   // CHECK: @llvm.x86.avx512fp16.min.ph.128
357   return _mm_maskz_min_ph(__U, __A, __B);
358 }
359 
test_mm256_max_ph(__m256h __A,__m256h __B)360 __m256h test_mm256_max_ph(__m256h __A, __m256h __B) {
361   // CHECK-LABEL: @test_mm256_max_ph
362   // CHECK: @llvm.x86.avx512fp16.max.ph.256
363   return _mm256_max_ph(__A, __B);
364 }
365 
test_mm256_mask_max_ph(__m256h __W,__mmask32 __U,__m256h __A,__m256h __B)366 __m256h test_mm256_mask_max_ph(__m256h __W, __mmask32 __U, __m256h __A, __m256h __B) {
367   // CHECK-LABEL: @test_mm256_mask_max_ph
368   // CHECK: @llvm.x86.avx512fp16.max.ph.256
369   return (__m256h)_mm256_mask_max_ph(__W, __U, __A, __B);
370 }
371 
test_mm256_maskz_max_ph(__mmask32 __U,__m256h __A,__m256h __B)372 __m256h test_mm256_maskz_max_ph(__mmask32 __U, __m256h __A, __m256h __B) {
373   // CHECK-LABEL: @test_mm256_maskz_max_ph
374   // CHECK: @llvm.x86.avx512fp16.max.ph.256
375   return _mm256_maskz_max_ph(__U, __A, __B);
376 }
377 
test_mm_max_ph(__m128h __A,__m128h __B)378 __m128h test_mm_max_ph(__m128h __A, __m128h __B) {
379   // CHECK-LABEL: @test_mm_max_ph
380   // CHECK: @llvm.x86.avx512fp16.max.ph.128
381   return _mm_max_ph(__A, __B);
382 }
383 
test_mm_mask_max_ph(__m128h __W,__mmask32 __U,__m128h __A,__m128h __B)384 __m128h test_mm_mask_max_ph(__m128h __W, __mmask32 __U, __m128h __A, __m128h __B) {
385   // CHECK-LABEL: @test_mm_mask_max_ph
386   // CHECK: @llvm.x86.avx512fp16.max.ph.128
387   return (__m128h)_mm_mask_max_ph(__W, __U, __A, __B);
388 }
389 
test_mm_maskz_max_ph(__mmask32 __U,__m128h __A,__m128h __B)390 __m128h test_mm_maskz_max_ph(__mmask32 __U, __m128h __A, __m128h __B) {
391   // CHECK-LABEL: @test_mm_maskz_max_ph
392   // CHECK: @llvm.x86.avx512fp16.max.ph.128
393   return _mm_maskz_max_ph(__U, __A, __B);
394 }
395 
test_mm_abs_ph(__m128h a)396 __m128h test_mm_abs_ph(__m128h a) {
397   // CHECK-LABEL: @test_mm_abs_ph
398   // CHECK: and <4 x i32>
399   return _mm_abs_ph(a);
400 }
401 
test_mm256_abs_ph(__m256h a)402 __m256h test_mm256_abs_ph(__m256h a) {
403   // CHECK-LABEL: @test_mm256_abs_ph
404   // CHECK: and <8 x i32>
405   return _mm256_abs_ph(a);
406 }
407 
test_mm256_conj_pch(__m256h __A)408 __m256h test_mm256_conj_pch(__m256h __A) {
409   // CHECK-LABEL: @test_mm256_conj_pch
410   // CHECK:  %{{.*}} = bitcast <16 x half> %{{.*}} to <8 x float>
411   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <8 x i32>
412   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <8 x i32>
413   // CHECK:  %{{.*}} = xor <8 x i32> %{{.*}}, %{{.*}}
414   // CHECK:  %{{.*}} = bitcast <8 x i32> %{{.*}} to <8 x float>
415   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <16 x half>
416   return _mm256_conj_pch(__A);
417 }
418 
test_mm256_mask_conj_pch(__m256h __W,__mmask32 __U,__m256h __A)419 __m256h test_mm256_mask_conj_pch(__m256h __W, __mmask32 __U, __m256h __A) {
420   // CHECK-LABEL: @test_mm256_mask_conj_pch
421   // CHECK:  %{{.*}} = trunc i32 %{{.*}} to i8
422   // CHECK:  %{{.*}} = bitcast <16 x half> %{{.*}} to <8 x float>
423   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <8 x i32>
424   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <8 x i32>
425   // CHECK:  %{{.*}} = xor <8 x i32> %{{.*}}, %{{.*}}
426   // CHECK:  %{{.*}} = bitcast <8 x i32> %{{.*}} to <8 x float>
427   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <16 x half>
428   // CHECK:  %{{.*}} = bitcast <16 x half> %{{.*}} to <8 x float>
429   // CHECK:  %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
430   // CHECK:  %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
431   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <16 x half>
432   return _mm256_mask_conj_pch(__W, __U, __A);
433 }
434 
test_mm256_maskz_conj_pch(__mmask32 __U,__m256h __A)435 __m256h test_mm256_maskz_conj_pch(__mmask32 __U, __m256h __A) {
436   // CHECK-LABEL: @test_mm256_maskz_conj_pch
437   // CHECK:  %{{.*}} = trunc i32 %{{.*}} to i8
438   // CHECK:  %{{.*}} = bitcast <16 x half> %{{.*}} to <8 x float>
439   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <8 x i32>
440   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <8 x i32>
441   // CHECK:  %{{.*}} = xor <8 x i32> %{{.*}}, %{{.*}}
442   // CHECK:  %{{.*}} = bitcast <8 x i32> %{{.*}} to <8 x float>
443   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <16 x half>
444   // CHECK:  %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
445   // CHECK:  %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
446   // CHECK:  %{{.*}} = bitcast <8 x float> %{{.*}} to <16 x half>
447   return _mm256_maskz_conj_pch(__U, __A);
448 }
449 
test_mm_conj_pch(__m128h __A)450 __m128h test_mm_conj_pch(__m128h __A) {
451   // CHECK-LABEL: @test_mm_conj_pch
452   // CHECK:  %{{.*}} = bitcast <8 x half> %{{.*}} to <4 x float>
453   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <4 x i32>
454   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <4 x i32>
455   // CHECK:  %{{.*}} = xor <4 x i32> %{{.*}}, %{{.*}}
456   // CHECK:  %{{.*}} = bitcast <4 x i32> %{{.*}} to <4 x float>
457   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <8 x half>
458   return _mm_conj_pch(__A);
459 }
460 
test_mm_mask_conj_pch(__m128h __W,__mmask32 __U,__m128h __A)461 __m128h test_mm_mask_conj_pch(__m128h __W, __mmask32 __U, __m128h __A) {
462   // CHECK-LABEL: @test_mm_mask_conj_pch
463   // CHECK:  %{{.*}} = trunc i32 %{{.*}} to i8
464   // CHECK:  %{{.*}} = bitcast <8 x half> %{{.*}} to <4 x float>
465   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <4 x i32>
466   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <4 x i32>
467   // CHECK:  %{{.*}} = xor <4 x i32> %{{.*}}, %{{.*}}
468   // CHECK:  %{{.*}} = bitcast <4 x i32> %{{.*}} to <4 x float>
469   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <8 x half>
470   // CHECK:  %{{.*}} = bitcast <8 x half> %{{.*}} to <4 x float>
471   // CHECK:  %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
472   // CHECK:  %{{.*}} = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
473   // CHECK:  %{{.*}} = select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
474   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <8 x half>
475   return _mm_mask_conj_pch(__W, __U, __A);
476 }
477 
test_mm_maskz_conj_pch(__mmask32 __U,__m128h __A)478 __m128h test_mm_maskz_conj_pch(__mmask32 __U, __m128h __A) {
479   // CHECK-LABEL: @test_mm_maskz_conj_pch
480   // CHECK:  %{{.*}} = trunc i32 %{{.*}} to i8
481   // CHECK:  %{{.*}} = bitcast <8 x half> %{{.*}} to <4 x float>
482   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <4 x i32>
483   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <4 x i32>
484   // CHECK:  %{{.*}} = xor <4 x i32> %{{.*}}, %{{.*}}
485   // CHECK:  %{{.*}} = bitcast <4 x i32> %{{.*}} to <4 x float>
486   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <8 x half>
487   // CHECK:  %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
488   // CHECK:  %{{.*}} = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
489   // CHECK:  %{{.*}} = select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
490   // CHECK:  %{{.*}} = bitcast <4 x float> %{{.*}} to <8 x half>
491   return _mm_maskz_conj_pch(__U, __A);
492 }
493 
test_mm256_cmp_ph_mask_eq_oq(__m256h a,__m256h b)494 __mmask16 test_mm256_cmp_ph_mask_eq_oq(__m256h a, __m256h b) {
495   // CHECK-LABEL: @test_mm256_cmp_ph_mask_eq_oq
496   // CHECK: fcmp oeq <16 x half> %{{.*}}, %{{.*}}
497   return _mm256_cmp_ph_mask(a, b, _CMP_EQ_OQ);
498 }
499 
test_mm256_cmp_ph_mask_lt_os(__m256h a,__m256h b)500 __mmask16 test_mm256_cmp_ph_mask_lt_os(__m256h a, __m256h b) {
501   // CHECK-LABEL: test_mm256_cmp_ph_mask_lt_os
502   // CHECK: fcmp olt <16 x half> %{{.*}}, %{{.*}}
503   return _mm256_cmp_ph_mask(a, b, _CMP_LT_OS);
504 }
505 
test_mm256_cmp_ph_mask_le_os(__m256h a,__m256h b)506 __mmask16 test_mm256_cmp_ph_mask_le_os(__m256h a, __m256h b) {
507   // CHECK-LABEL: test_mm256_cmp_ph_mask_le_os
508   // CHECK: fcmp ole <16 x half> %{{.*}}, %{{.*}}
509   return _mm256_cmp_ph_mask(a, b, _CMP_LE_OS);
510 }
511 
test_mm256_cmp_ph_mask_unord_q(__m256h a,__m256h b)512 __mmask16 test_mm256_cmp_ph_mask_unord_q(__m256h a, __m256h b) {
513   // CHECK-LABEL: test_mm256_cmp_ph_mask_unord_q
514   // CHECK: fcmp uno <16 x half> %{{.*}}, %{{.*}}
515   return _mm256_cmp_ph_mask(a, b, _CMP_UNORD_Q);
516 }
517 
test_mm256_cmp_ph_mask_neq_uq(__m256h a,__m256h b)518 __mmask16 test_mm256_cmp_ph_mask_neq_uq(__m256h a, __m256h b) {
519   // CHECK-LABEL: test_mm256_cmp_ph_mask_neq_uq
520   // CHECK: fcmp une <16 x half> %{{.*}}, %{{.*}}
521   return _mm256_cmp_ph_mask(a, b, _CMP_NEQ_UQ);
522 }
523 
test_mm256_cmp_ph_mask_nlt_us(__m256h a,__m256h b)524 __mmask16 test_mm256_cmp_ph_mask_nlt_us(__m256h a, __m256h b) {
525   // CHECK-LABEL: test_mm256_cmp_ph_mask_nlt_us
526   // CHECK: fcmp uge <16 x half> %{{.*}}, %{{.*}}
527   return _mm256_cmp_ph_mask(a, b, _CMP_NLT_US);
528 }
529 
test_mm256_cmp_ph_mask_nle_us(__m256h a,__m256h b)530 __mmask16 test_mm256_cmp_ph_mask_nle_us(__m256h a, __m256h b) {
531   // CHECK-LABEL: test_mm256_cmp_ph_mask_nle_us
532   // CHECK: fcmp ugt <16 x half> %{{.*}}, %{{.*}}
533   return _mm256_cmp_ph_mask(a, b, _CMP_NLE_US);
534 }
535 
test_mm256_cmp_ph_mask_ord_q(__m256h a,__m256h b)536 __mmask16 test_mm256_cmp_ph_mask_ord_q(__m256h a, __m256h b) {
537   // CHECK-LABEL: test_mm256_cmp_ph_mask_ord_q
538   // CHECK: fcmp ord <16 x half> %{{.*}}, %{{.*}}
539   return _mm256_cmp_ph_mask(a, b, _CMP_ORD_Q);
540 }
541 
test_mm256_cmp_ph_mask_eq_uq(__m256h a,__m256h b)542 __mmask16 test_mm256_cmp_ph_mask_eq_uq(__m256h a, __m256h b) {
543   // CHECK-LABEL: test_mm256_cmp_ph_mask_eq_uq
544   // CHECK: fcmp ueq <16 x half> %{{.*}}, %{{.*}}
545   return _mm256_cmp_ph_mask(a, b, _CMP_EQ_UQ);
546 }
547 
test_mm256_cmp_ph_mask_nge_us(__m256h a,__m256h b)548 __mmask16 test_mm256_cmp_ph_mask_nge_us(__m256h a, __m256h b) {
549   // CHECK-LABEL: test_mm256_cmp_ph_mask_nge_us
550   // CHECK: fcmp ult <16 x half> %{{.*}}, %{{.*}}
551   return _mm256_cmp_ph_mask(a, b, _CMP_NGE_US);
552 }
553 
test_mm256_cmp_ph_mask_ngt_us(__m256h a,__m256h b)554 __mmask16 test_mm256_cmp_ph_mask_ngt_us(__m256h a, __m256h b) {
555   // CHECK-LABEL: test_mm256_cmp_ph_mask_ngt_us
556   // CHECK: fcmp ule <16 x half> %{{.*}}, %{{.*}}
557   return _mm256_cmp_ph_mask(a, b, _CMP_NGT_US);
558 }
559 
test_mm256_cmp_ph_mask_false_oq(__m256h a,__m256h b)560 __mmask16 test_mm256_cmp_ph_mask_false_oq(__m256h a, __m256h b) {
561   // CHECK-LABEL: test_mm256_cmp_ph_mask_false_oq
562   // CHECK: fcmp false <16 x half> %{{.*}}, %{{.*}}
563   return _mm256_cmp_ph_mask(a, b, _CMP_FALSE_OQ);
564 }
565 
test_mm256_cmp_ph_mask_neq_oq(__m256h a,__m256h b)566 __mmask16 test_mm256_cmp_ph_mask_neq_oq(__m256h a, __m256h b) {
567   // CHECK-LABEL: test_mm256_cmp_ph_mask_neq_oq
568   // CHECK: fcmp one <16 x half> %{{.*}}, %{{.*}}
569   return _mm256_cmp_ph_mask(a, b, _CMP_NEQ_OQ);
570 }
571 
test_mm256_cmp_ph_mask_ge_os(__m256h a,__m256h b)572 __mmask16 test_mm256_cmp_ph_mask_ge_os(__m256h a, __m256h b) {
573   // CHECK-LABEL: test_mm256_cmp_ph_mask_ge_os
574   // CHECK: fcmp oge <16 x half> %{{.*}}, %{{.*}}
575   return _mm256_cmp_ph_mask(a, b, _CMP_GE_OS);
576 }
577 
test_mm256_cmp_ph_mask_gt_os(__m256h a,__m256h b)578 __mmask16 test_mm256_cmp_ph_mask_gt_os(__m256h a, __m256h b) {
579   // CHECK-LABEL: test_mm256_cmp_ph_mask_gt_os
580   // CHECK: fcmp ogt <16 x half> %{{.*}}, %{{.*}}
581   return _mm256_cmp_ph_mask(a, b, _CMP_GT_OS);
582 }
583 
test_mm256_cmp_ph_mask_true_uq(__m256h a,__m256h b)584 __mmask16 test_mm256_cmp_ph_mask_true_uq(__m256h a, __m256h b) {
585   // CHECK-LABEL: test_mm256_cmp_ph_mask_true_uq
586   // CHECK: fcmp true <16 x half> %{{.*}}, %{{.*}}
587   return _mm256_cmp_ph_mask(a, b, _CMP_TRUE_UQ);
588 }
589 
test_mm256_cmp_ph_mask_eq_os(__m256h a,__m256h b)590 __mmask16 test_mm256_cmp_ph_mask_eq_os(__m256h a, __m256h b) {
591   // CHECK-LABEL: test_mm256_cmp_ph_mask_eq_os
592   // CHECK: fcmp oeq <16 x half> %{{.*}}, %{{.*}}
593   return _mm256_cmp_ph_mask(a, b, _CMP_EQ_OS);
594 }
595 
test_mm256_cmp_ph_mask_lt_oq(__m256h a,__m256h b)596 __mmask16 test_mm256_cmp_ph_mask_lt_oq(__m256h a, __m256h b) {
597   // CHECK-LABEL: test_mm256_cmp_ph_mask_lt_oq
598   // CHECK: fcmp olt <16 x half> %{{.*}}, %{{.*}}
599   return _mm256_cmp_ph_mask(a, b, _CMP_LT_OQ);
600 }
601 
test_mm256_cmp_ph_mask_le_oq(__m256h a,__m256h b)602 __mmask16 test_mm256_cmp_ph_mask_le_oq(__m256h a, __m256h b) {
603   // CHECK-LABEL: test_mm256_cmp_ph_mask_le_oq
604   // CHECK: fcmp ole <16 x half> %{{.*}}, %{{.*}}
605   return _mm256_cmp_ph_mask(a, b, _CMP_LE_OQ);
606 }
607 
test_mm256_cmp_ph_mask_unord_s(__m256h a,__m256h b)608 __mmask16 test_mm256_cmp_ph_mask_unord_s(__m256h a, __m256h b) {
609   // CHECK-LABEL: test_mm256_cmp_ph_mask_unord_s
610   // CHECK: fcmp uno <16 x half> %{{.*}}, %{{.*}}
611   return _mm256_cmp_ph_mask(a, b, _CMP_UNORD_S);
612 }
613 
test_mm256_cmp_ph_mask_neq_us(__m256h a,__m256h b)614 __mmask16 test_mm256_cmp_ph_mask_neq_us(__m256h a, __m256h b) {
615   // CHECK-LABEL: test_mm256_cmp_ph_mask_neq_us
616   // CHECK: fcmp une <16 x half> %{{.*}}, %{{.*}}
617   return _mm256_cmp_ph_mask(a, b, _CMP_NEQ_US);
618 }
619 
test_mm256_cmp_ph_mask_nlt_uq(__m256h a,__m256h b)620 __mmask16 test_mm256_cmp_ph_mask_nlt_uq(__m256h a, __m256h b) {
621   // CHECK-LABEL: test_mm256_cmp_ph_mask_nlt_uq
622   // CHECK: fcmp uge <16 x half> %{{.*}}, %{{.*}}
623   return _mm256_cmp_ph_mask(a, b, _CMP_NLT_UQ);
624 }
625 
test_mm256_cmp_ph_mask_nle_uq(__m256h a,__m256h b)626 __mmask16 test_mm256_cmp_ph_mask_nle_uq(__m256h a, __m256h b) {
627   // CHECK-LABEL: test_mm256_cmp_ph_mask_nle_uq
628   // CHECK: fcmp ugt <16 x half> %{{.*}}, %{{.*}}
629   return _mm256_cmp_ph_mask(a, b, _CMP_NLE_UQ);
630 }
631 
test_mm256_cmp_ph_mask_ord_s(__m256h a,__m256h b)632 __mmask16 test_mm256_cmp_ph_mask_ord_s(__m256h a, __m256h b) {
633   // CHECK-LABEL: test_mm256_cmp_ph_mask_ord_s
634   // CHECK: fcmp ord <16 x half> %{{.*}}, %{{.*}}
635   return _mm256_cmp_ph_mask(a, b, _CMP_ORD_S);
636 }
637 
test_mm256_cmp_ph_mask_eq_us(__m256h a,__m256h b)638 __mmask16 test_mm256_cmp_ph_mask_eq_us(__m256h a, __m256h b) {
639   // CHECK-LABEL: test_mm256_cmp_ph_mask_eq_us
640   // CHECK: fcmp ueq <16 x half> %{{.*}}, %{{.*}}
641   return _mm256_cmp_ph_mask(a, b, _CMP_EQ_US);
642 }
643 
test_mm256_cmp_ph_mask_nge_uq(__m256h a,__m256h b)644 __mmask16 test_mm256_cmp_ph_mask_nge_uq(__m256h a, __m256h b) {
645   // CHECK-LABEL: test_mm256_cmp_ph_mask_nge_uq
646   // CHECK: fcmp ult <16 x half> %{{.*}}, %{{.*}}
647   return _mm256_cmp_ph_mask(a, b, _CMP_NGE_UQ);
648 }
649 
test_mm256_cmp_ph_mask_ngt_uq(__m256h a,__m256h b)650 __mmask16 test_mm256_cmp_ph_mask_ngt_uq(__m256h a, __m256h b) {
651   // CHECK-LABEL: test_mm256_cmp_ph_mask_ngt_uq
652   // CHECK: fcmp ule <16 x half> %{{.*}}, %{{.*}}
653   return _mm256_cmp_ph_mask(a, b, _CMP_NGT_UQ);
654 }
655 
test_mm256_cmp_ph_mask_false_os(__m256h a,__m256h b)656 __mmask16 test_mm256_cmp_ph_mask_false_os(__m256h a, __m256h b) {
657   // CHECK-LABEL: test_mm256_cmp_ph_mask_false_os
658   // CHECK: fcmp false <16 x half> %{{.*}}, %{{.*}}
659   return _mm256_cmp_ph_mask(a, b, _CMP_FALSE_OS);
660 }
661 
test_mm256_cmp_ph_mask_neq_os(__m256h a,__m256h b)662 __mmask16 test_mm256_cmp_ph_mask_neq_os(__m256h a, __m256h b) {
663   // CHECK-LABEL: test_mm256_cmp_ph_mask_neq_os
664   // CHECK: fcmp one <16 x half> %{{.*}}, %{{.*}}
665   return _mm256_cmp_ph_mask(a, b, _CMP_NEQ_OS);
666 }
667 
test_mm256_cmp_ph_mask_ge_oq(__m256h a,__m256h b)668 __mmask16 test_mm256_cmp_ph_mask_ge_oq(__m256h a, __m256h b) {
669   // CHECK-LABEL: test_mm256_cmp_ph_mask_ge_oq
670   // CHECK: fcmp oge <16 x half> %{{.*}}, %{{.*}}
671   return _mm256_cmp_ph_mask(a, b, _CMP_GE_OQ);
672 }
673 
test_mm256_cmp_ph_mask_gt_oq(__m256h a,__m256h b)674 __mmask16 test_mm256_cmp_ph_mask_gt_oq(__m256h a, __m256h b) {
675   // CHECK-LABEL: test_mm256_cmp_ph_mask_gt_oq
676   // CHECK: fcmp ogt <16 x half> %{{.*}}, %{{.*}}
677   return _mm256_cmp_ph_mask(a, b, _CMP_GT_OQ);
678 }
679 
test_mm256_cmp_ph_mask_true_us(__m256h a,__m256h b)680 __mmask16 test_mm256_cmp_ph_mask_true_us(__m256h a, __m256h b) {
681   // CHECK-LABEL: test_mm256_cmp_ph_mask_true_us
682   // CHECK: fcmp true <16 x half> %{{.*}}, %{{.*}}
683   return _mm256_cmp_ph_mask(a, b, _CMP_TRUE_US);
684 }
685 
test_mm256_mask_cmp_ph_mask_eq_oq(__mmask16 m,__m256h a,__m256h b)686 __mmask16 test_mm256_mask_cmp_ph_mask_eq_oq(__mmask16 m, __m256h a, __m256h b) {
687   // CHECK-LABEL: @test_mm256_mask_cmp_ph_mask_eq_oq
688   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x half> %{{.*}}, %{{.*}}
689   // CHECK: and <16 x i1> [[CMP]], {{.*}}
690   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_EQ_OQ);
691 }
692 
test_mm256_mask_cmp_ph_mask_lt_os(__mmask16 m,__m256h a,__m256h b)693 __mmask16 test_mm256_mask_cmp_ph_mask_lt_os(__mmask16 m, __m256h a, __m256h b) {
694   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_lt_os
695   // CHECK: [[CMP:%.*]] = fcmp olt <16 x half> %{{.*}}, %{{.*}}
696   // CHECK: and <16 x i1> [[CMP]], {{.*}}
697   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_LT_OS);
698 }
699 
test_mm256_mask_cmp_ph_mask_le_os(__mmask16 m,__m256h a,__m256h b)700 __mmask16 test_mm256_mask_cmp_ph_mask_le_os(__mmask16 m, __m256h a, __m256h b) {
701   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_le_os
702   // CHECK: [[CMP:%.*]] = fcmp ole <16 x half> %{{.*}}, %{{.*}}
703   // CHECK: and <16 x i1> [[CMP]], {{.*}}
704   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_LE_OS);
705 }
706 
test_mm256_mask_cmp_ph_mask_unord_q(__mmask16 m,__m256h a,__m256h b)707 __mmask16 test_mm256_mask_cmp_ph_mask_unord_q(__mmask16 m, __m256h a, __m256h b) {
708   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_unord_q
709   // CHECK: [[CMP:%.*]] = fcmp uno <16 x half> %{{.*}}, %{{.*}}
710   // CHECK: and <16 x i1> [[CMP]], {{.*}}
711   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_UNORD_Q);
712 }
713 
test_mm256_mask_cmp_ph_mask_neq_uq(__mmask16 m,__m256h a,__m256h b)714 __mmask16 test_mm256_mask_cmp_ph_mask_neq_uq(__mmask16 m, __m256h a, __m256h b) {
715   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_neq_uq
716   // CHECK: [[CMP:%.*]] = fcmp une <16 x half> %{{.*}}, %{{.*}}
717   // CHECK: and <16 x i1> [[CMP]], {{.*}}
718   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NEQ_UQ);
719 }
720 
test_mm256_mask_cmp_ph_mask_nlt_us(__mmask16 m,__m256h a,__m256h b)721 __mmask16 test_mm256_mask_cmp_ph_mask_nlt_us(__mmask16 m, __m256h a, __m256h b) {
722   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_nlt_us
723   // CHECK: [[CMP:%.*]] = fcmp uge <16 x half> %{{.*}}, %{{.*}}
724   // CHECK: and <16 x i1> [[CMP]], {{.*}}
725   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NLT_US);
726 }
727 
test_mm256_mask_cmp_ph_mask_nle_us(__mmask16 m,__m256h a,__m256h b)728 __mmask16 test_mm256_mask_cmp_ph_mask_nle_us(__mmask16 m, __m256h a, __m256h b) {
729   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_nle_us
730   // CHECK: [[CMP:%.*]] = fcmp ugt <16 x half> %{{.*}}, %{{.*}}
731   // CHECK: and <16 x i1> [[CMP]], {{.*}}
732   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NLE_US);
733 }
734 
test_mm256_mask_cmp_ph_mask_ord_q(__mmask16 m,__m256h a,__m256h b)735 __mmask16 test_mm256_mask_cmp_ph_mask_ord_q(__mmask16 m, __m256h a, __m256h b) {
736   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_ord_q
737   // CHECK: [[CMP:%.*]] = fcmp ord <16 x half> %{{.*}}, %{{.*}}
738   // CHECK: and <16 x i1> [[CMP]], {{.*}}
739   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_ORD_Q);
740 }
741 
test_mm256_mask_cmp_ph_mask_eq_uq(__mmask16 m,__m256h a,__m256h b)742 __mmask16 test_mm256_mask_cmp_ph_mask_eq_uq(__mmask16 m, __m256h a, __m256h b) {
743   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_eq_uq
744   // CHECK: [[CMP:%.*]] = fcmp ueq <16 x half> %{{.*}}, %{{.*}}
745   // CHECK: and <16 x i1> [[CMP]], {{.*}}
746   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_EQ_UQ);
747 }
748 
test_mm256_mask_cmp_ph_mask_nge_us(__mmask16 m,__m256h a,__m256h b)749 __mmask16 test_mm256_mask_cmp_ph_mask_nge_us(__mmask16 m, __m256h a, __m256h b) {
750   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_nge_us
751   // CHECK: [[CMP:%.*]] = fcmp ult <16 x half> %{{.*}}, %{{.*}}
752   // CHECK: and <16 x i1> [[CMP]], {{.*}}
753   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NGE_US);
754 }
755 
test_mm256_mask_cmp_ph_mask_ngt_us(__mmask16 m,__m256h a,__m256h b)756 __mmask16 test_mm256_mask_cmp_ph_mask_ngt_us(__mmask16 m, __m256h a, __m256h b) {
757   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_ngt_us
758   // CHECK: [[CMP:%.*]] = fcmp ule <16 x half> %{{.*}}, %{{.*}}
759   // CHECK: and <16 x i1> [[CMP]], {{.*}}
760   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NGT_US);
761 }
762 
test_mm256_mask_cmp_ph_mask_false_oq(__mmask16 m,__m256h a,__m256h b)763 __mmask16 test_mm256_mask_cmp_ph_mask_false_oq(__mmask16 m, __m256h a, __m256h b) {
764   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_false_oq
765   // CHECK: [[CMP:%.*]] = fcmp false <16 x half> %{{.*}}, %{{.*}}
766   // CHECK: and <16 x i1> [[CMP]], {{.*}}
767   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_FALSE_OQ);
768 }
769 
test_mm256_mask_cmp_ph_mask_neq_oq(__mmask16 m,__m256h a,__m256h b)770 __mmask16 test_mm256_mask_cmp_ph_mask_neq_oq(__mmask16 m, __m256h a, __m256h b) {
771   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_neq_oq
772   // CHECK: [[CMP:%.*]] = fcmp one <16 x half> %{{.*}}, %{{.*}}
773   // CHECK: and <16 x i1> [[CMP]], {{.*}}
774   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NEQ_OQ);
775 }
776 
test_mm256_mask_cmp_ph_mask_ge_os(__mmask16 m,__m256h a,__m256h b)777 __mmask16 test_mm256_mask_cmp_ph_mask_ge_os(__mmask16 m, __m256h a, __m256h b) {
778   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_ge_os
779   // CHECK: [[CMP:%.*]] = fcmp oge <16 x half> %{{.*}}, %{{.*}}
780   // CHECK: and <16 x i1> [[CMP]], {{.*}}
781   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_GE_OS);
782 }
783 
test_mm256_mask_cmp_ph_mask_gt_os(__mmask16 m,__m256h a,__m256h b)784 __mmask16 test_mm256_mask_cmp_ph_mask_gt_os(__mmask16 m, __m256h a, __m256h b) {
785   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_gt_os
786   // CHECK: [[CMP:%.*]] = fcmp ogt <16 x half> %{{.*}}, %{{.*}}
787   // CHECK: and <16 x i1> [[CMP]], {{.*}}
788   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_GT_OS);
789 }
790 
test_mm256_mask_cmp_ph_mask_true_uq(__mmask16 m,__m256h a,__m256h b)791 __mmask16 test_mm256_mask_cmp_ph_mask_true_uq(__mmask16 m, __m256h a, __m256h b) {
792   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_true_uq
793   // CHECK: [[CMP:%.*]] = fcmp true <16 x half> %{{.*}}, %{{.*}}
794   // CHECK: and <16 x i1> [[CMP]], {{.*}}
795   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_TRUE_UQ);
796 }
797 
test_mm256_mask_cmp_ph_mask_eq_os(__mmask16 m,__m256h a,__m256h b)798 __mmask16 test_mm256_mask_cmp_ph_mask_eq_os(__mmask16 m, __m256h a, __m256h b) {
799   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_eq_os
800   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x half> %{{.*}}, %{{.*}}
801   // CHECK: and <16 x i1> [[CMP]], {{.*}}
802   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_EQ_OS);
803 }
804 
test_mm256_mask_cmp_ph_mask_lt_oq(__mmask16 m,__m256h a,__m256h b)805 __mmask16 test_mm256_mask_cmp_ph_mask_lt_oq(__mmask16 m, __m256h a, __m256h b) {
806   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_lt_oq
807   // CHECK: [[CMP:%.*]] = fcmp olt <16 x half> %{{.*}}, %{{.*}}
808   // CHECK: and <16 x i1> [[CMP]], {{.*}}
809   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_LT_OQ);
810 }
811 
test_mm256_mask_cmp_ph_mask_le_oq(__mmask16 m,__m256h a,__m256h b)812 __mmask16 test_mm256_mask_cmp_ph_mask_le_oq(__mmask16 m, __m256h a, __m256h b) {
813   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_le_oq
814   // CHECK: [[CMP:%.*]] = fcmp ole <16 x half> %{{.*}}, %{{.*}}
815   // CHECK: and <16 x i1> [[CMP]], {{.*}}
816   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_LE_OQ);
817 }
818 
test_mm256_mask_cmp_ph_mask_unord_s(__mmask16 m,__m256h a,__m256h b)819 __mmask16 test_mm256_mask_cmp_ph_mask_unord_s(__mmask16 m, __m256h a, __m256h b) {
820   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_unord_s
821   // CHECK: [[CMP:%.*]] = fcmp uno <16 x half> %{{.*}}, %{{.*}}
822   // CHECK: and <16 x i1> [[CMP]], {{.*}}
823   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_UNORD_S);
824 }
825 
test_mm256_mask_cmp_ph_mask_neq_us(__mmask16 m,__m256h a,__m256h b)826 __mmask16 test_mm256_mask_cmp_ph_mask_neq_us(__mmask16 m, __m256h a, __m256h b) {
827   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_neq_us
828   // CHECK: [[CMP:%.*]] = fcmp une <16 x half> %{{.*}}, %{{.*}}
829   // CHECK: and <16 x i1> [[CMP]], {{.*}}
830   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NEQ_US);
831 }
832 
test_mm256_mask_cmp_ph_mask_nlt_uq(__mmask16 m,__m256h a,__m256h b)833 __mmask16 test_mm256_mask_cmp_ph_mask_nlt_uq(__mmask16 m, __m256h a, __m256h b) {
834   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_nlt_uq
835   // CHECK: [[CMP:%.*]] = fcmp uge <16 x half> %{{.*}}, %{{.*}}
836   // CHECK: and <16 x i1> [[CMP]], {{.*}}
837   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NLT_UQ);
838 }
839 
test_mm256_mask_cmp_ph_mask_nle_uq(__mmask16 m,__m256h a,__m256h b)840 __mmask16 test_mm256_mask_cmp_ph_mask_nle_uq(__mmask16 m, __m256h a, __m256h b) {
841   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_nle_uq
842   // CHECK: [[CMP:%.*]] = fcmp ugt <16 x half> %{{.*}}, %{{.*}}
843   // CHECK: and <16 x i1> [[CMP]], {{.*}}
844   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NLE_UQ);
845 }
846 
test_mm256_mask_cmp_ph_mask_ord_s(__mmask16 m,__m256h a,__m256h b)847 __mmask16 test_mm256_mask_cmp_ph_mask_ord_s(__mmask16 m, __m256h a, __m256h b) {
848   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_ord_s
849   // CHECK: [[CMP:%.*]] = fcmp ord <16 x half> %{{.*}}, %{{.*}}
850   // CHECK: and <16 x i1> [[CMP]], {{.*}}
851   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_ORD_S);
852 }
853 
test_mm256_mask_cmp_ph_mask_eq_us(__mmask16 m,__m256h a,__m256h b)854 __mmask16 test_mm256_mask_cmp_ph_mask_eq_us(__mmask16 m, __m256h a, __m256h b) {
855   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_eq_us
856   // CHECK: [[CMP:%.*]] = fcmp ueq <16 x half> %{{.*}}, %{{.*}}
857   // CHECK: and <16 x i1> [[CMP]], {{.*}}
858   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_EQ_US);
859 }
860 
test_mm256_mask_cmp_ph_mask_nge_uq(__mmask16 m,__m256h a,__m256h b)861 __mmask16 test_mm256_mask_cmp_ph_mask_nge_uq(__mmask16 m, __m256h a, __m256h b) {
862   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_nge_uq
863   // CHECK: [[CMP:%.*]] = fcmp ult <16 x half> %{{.*}}, %{{.*}}
864   // CHECK: and <16 x i1> [[CMP]], {{.*}}
865   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NGE_UQ);
866 }
867 
test_mm256_mask_cmp_ph_mask_ngt_uq(__mmask16 m,__m256h a,__m256h b)868 __mmask16 test_mm256_mask_cmp_ph_mask_ngt_uq(__mmask16 m, __m256h a, __m256h b) {
869   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_ngt_uq
870   // CHECK: [[CMP:%.*]] = fcmp ule <16 x half> %{{.*}}, %{{.*}}
871   // CHECK: and <16 x i1> [[CMP]], {{.*}}
872   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NGT_UQ);
873 }
874 
test_mm256_mask_cmp_ph_mask_false_os(__mmask16 m,__m256h a,__m256h b)875 __mmask16 test_mm256_mask_cmp_ph_mask_false_os(__mmask16 m, __m256h a, __m256h b) {
876   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_false_os
877   // CHECK: [[CMP:%.*]] = fcmp false <16 x half> %{{.*}}, %{{.*}}
878   // CHECK: and <16 x i1> [[CMP]], {{.*}}
879   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_FALSE_OS);
880 }
881 
test_mm256_mask_cmp_ph_mask_neq_os(__mmask16 m,__m256h a,__m256h b)882 __mmask16 test_mm256_mask_cmp_ph_mask_neq_os(__mmask16 m, __m256h a, __m256h b) {
883   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_neq_os
884   // CHECK: [[CMP:%.*]] = fcmp one <16 x half> %{{.*}}, %{{.*}}
885   // CHECK: and <16 x i1> [[CMP]], {{.*}}
886   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_NEQ_OS);
887 }
888 
test_mm256_mask_cmp_ph_mask_ge_oq(__mmask16 m,__m256h a,__m256h b)889 __mmask16 test_mm256_mask_cmp_ph_mask_ge_oq(__mmask16 m, __m256h a, __m256h b) {
890   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_ge_oq
891   // CHECK: [[CMP:%.*]] = fcmp oge <16 x half> %{{.*}}, %{{.*}}
892   // CHECK: and <16 x i1> [[CMP]], {{.*}}
893   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_GE_OQ);
894 }
895 
test_mm256_mask_cmp_ph_mask_gt_oq(__mmask16 m,__m256h a,__m256h b)896 __mmask16 test_mm256_mask_cmp_ph_mask_gt_oq(__mmask16 m, __m256h a, __m256h b) {
897   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_gt_oq
898   // CHECK: [[CMP:%.*]] = fcmp ogt <16 x half> %{{.*}}, %{{.*}}
899   // CHECK: and <16 x i1> [[CMP]], {{.*}}
900   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_GT_OQ);
901 }
902 
test_mm256_mask_cmp_ph_mask_true_us(__mmask16 m,__m256h a,__m256h b)903 __mmask16 test_mm256_mask_cmp_ph_mask_true_us(__mmask16 m, __m256h a, __m256h b) {
904   // CHECK-LABEL: test_mm256_mask_cmp_ph_mask_true_us
905   // CHECK: [[CMP:%.*]] = fcmp true <16 x half> %{{.*}}, %{{.*}}
906   // CHECK: and <16 x i1> [[CMP]], {{.*}}
907   return _mm256_mask_cmp_ph_mask(m, a, b, _CMP_TRUE_US);
908 }
909 
test_mm_cmp_ph_mask_eq_oq(__m128h a,__m128h b)910 __mmask8 test_mm_cmp_ph_mask_eq_oq(__m128h a, __m128h b) {
911   // CHECK-LABEL: @test_mm_cmp_ph_mask_eq_oq
912   // CHECK: fcmp oeq <8 x half> %{{.*}}, %{{.*}}
913   return _mm_cmp_ph_mask(a, b, _CMP_EQ_OQ);
914 }
915 
test_mm_cmp_ph_mask_lt_os(__m128h a,__m128h b)916 __mmask8 test_mm_cmp_ph_mask_lt_os(__m128h a, __m128h b) {
917   // CHECK-LABEL: test_mm_cmp_ph_mask_lt_os
918   // CHECK: fcmp olt <8 x half> %{{.*}}, %{{.*}}
919   return _mm_cmp_ph_mask(a, b, _CMP_LT_OS);
920 }
921 
test_mm_cmp_ph_mask_le_os(__m128h a,__m128h b)922 __mmask8 test_mm_cmp_ph_mask_le_os(__m128h a, __m128h b) {
923   // CHECK-LABEL: test_mm_cmp_ph_mask_le_os
924   // CHECK: fcmp ole <8 x half> %{{.*}}, %{{.*}}
925   return _mm_cmp_ph_mask(a, b, _CMP_LE_OS);
926 }
927 
test_mm_cmp_ph_mask_unord_q(__m128h a,__m128h b)928 __mmask8 test_mm_cmp_ph_mask_unord_q(__m128h a, __m128h b) {
929   // CHECK-LABEL: test_mm_cmp_ph_mask_unord_q
930   // CHECK: fcmp uno <8 x half> %{{.*}}, %{{.*}}
931   return _mm_cmp_ph_mask(a, b, _CMP_UNORD_Q);
932 }
933 
test_mm_cmp_ph_mask_neq_uq(__m128h a,__m128h b)934 __mmask8 test_mm_cmp_ph_mask_neq_uq(__m128h a, __m128h b) {
935   // CHECK-LABEL: test_mm_cmp_ph_mask_neq_uq
936   // CHECK: fcmp une <8 x half> %{{.*}}, %{{.*}}
937   return _mm_cmp_ph_mask(a, b, _CMP_NEQ_UQ);
938 }
939 
test_mm_cmp_ph_mask_nlt_us(__m128h a,__m128h b)940 __mmask8 test_mm_cmp_ph_mask_nlt_us(__m128h a, __m128h b) {
941   // CHECK-LABEL: test_mm_cmp_ph_mask_nlt_us
942   // CHECK: fcmp uge <8 x half> %{{.*}}, %{{.*}}
943   return _mm_cmp_ph_mask(a, b, _CMP_NLT_US);
944 }
945 
test_mm_cmp_ph_mask_nle_us(__m128h a,__m128h b)946 __mmask8 test_mm_cmp_ph_mask_nle_us(__m128h a, __m128h b) {
947   // CHECK-LABEL: test_mm_cmp_ph_mask_nle_us
948   // CHECK: fcmp ugt <8 x half> %{{.*}}, %{{.*}}
949   return _mm_cmp_ph_mask(a, b, _CMP_NLE_US);
950 }
951 
test_mm_cmp_ph_mask_ord_q(__m128h a,__m128h b)952 __mmask8 test_mm_cmp_ph_mask_ord_q(__m128h a, __m128h b) {
953   // CHECK-LABEL: test_mm_cmp_ph_mask_ord_q
954   // CHECK: fcmp ord <8 x half> %{{.*}}, %{{.*}}
955   return _mm_cmp_ph_mask(a, b, _CMP_ORD_Q);
956 }
957 
test_mm_cmp_ph_mask_eq_uq(__m128h a,__m128h b)958 __mmask8 test_mm_cmp_ph_mask_eq_uq(__m128h a, __m128h b) {
959   // CHECK-LABEL: test_mm_cmp_ph_mask_eq_uq
960   // CHECK: fcmp ueq <8 x half> %{{.*}}, %{{.*}}
961   return _mm_cmp_ph_mask(a, b, _CMP_EQ_UQ);
962 }
963 
test_mm_cmp_ph_mask_nge_us(__m128h a,__m128h b)964 __mmask8 test_mm_cmp_ph_mask_nge_us(__m128h a, __m128h b) {
965   // CHECK-LABEL: test_mm_cmp_ph_mask_nge_us
966   // CHECK: fcmp ult <8 x half> %{{.*}}, %{{.*}}
967   return _mm_cmp_ph_mask(a, b, _CMP_NGE_US);
968 }
969 
test_mm_cmp_ph_mask_ngt_us(__m128h a,__m128h b)970 __mmask8 test_mm_cmp_ph_mask_ngt_us(__m128h a, __m128h b) {
971   // CHECK-LABEL: test_mm_cmp_ph_mask_ngt_us
972   // CHECK: fcmp ule <8 x half> %{{.*}}, %{{.*}}
973   return _mm_cmp_ph_mask(a, b, _CMP_NGT_US);
974 }
975 
test_mm_cmp_ph_mask_false_oq(__m128h a,__m128h b)976 __mmask8 test_mm_cmp_ph_mask_false_oq(__m128h a, __m128h b) {
977   // CHECK-LABEL: test_mm_cmp_ph_mask_false_oq
978   // CHECK: fcmp false <8 x half> %{{.*}}, %{{.*}}
979   return _mm_cmp_ph_mask(a, b, _CMP_FALSE_OQ);
980 }
981 
test_mm_cmp_ph_mask_neq_oq(__m128h a,__m128h b)982 __mmask8 test_mm_cmp_ph_mask_neq_oq(__m128h a, __m128h b) {
983   // CHECK-LABEL: test_mm_cmp_ph_mask_neq_oq
984   // CHECK: fcmp one <8 x half> %{{.*}}, %{{.*}}
985   return _mm_cmp_ph_mask(a, b, _CMP_NEQ_OQ);
986 }
987 
test_mm_cmp_ph_mask_ge_os(__m128h a,__m128h b)988 __mmask8 test_mm_cmp_ph_mask_ge_os(__m128h a, __m128h b) {
989   // CHECK-LABEL: test_mm_cmp_ph_mask_ge_os
990   // CHECK: fcmp oge <8 x half> %{{.*}}, %{{.*}}
991   return _mm_cmp_ph_mask(a, b, _CMP_GE_OS);
992 }
993 
test_mm_cmp_ph_mask_gt_os(__m128h a,__m128h b)994 __mmask8 test_mm_cmp_ph_mask_gt_os(__m128h a, __m128h b) {
995   // CHECK-LABEL: test_mm_cmp_ph_mask_gt_os
996   // CHECK: fcmp ogt <8 x half> %{{.*}}, %{{.*}}
997   return _mm_cmp_ph_mask(a, b, _CMP_GT_OS);
998 }
999 
test_mm_cmp_ph_mask_true_uq(__m128h a,__m128h b)1000 __mmask8 test_mm_cmp_ph_mask_true_uq(__m128h a, __m128h b) {
1001   // CHECK-LABEL: test_mm_cmp_ph_mask_true_uq
1002   // CHECK: fcmp true <8 x half> %{{.*}}, %{{.*}}
1003   return _mm_cmp_ph_mask(a, b, _CMP_TRUE_UQ);
1004 }
1005 
test_mm_cmp_ph_mask_eq_os(__m128h a,__m128h b)1006 __mmask8 test_mm_cmp_ph_mask_eq_os(__m128h a, __m128h b) {
1007   // CHECK-LABEL: test_mm_cmp_ph_mask_eq_os
1008   // CHECK: fcmp oeq <8 x half> %{{.*}}, %{{.*}}
1009   return _mm_cmp_ph_mask(a, b, _CMP_EQ_OS);
1010 }
1011 
test_mm_cmp_ph_mask_lt_oq(__m128h a,__m128h b)1012 __mmask8 test_mm_cmp_ph_mask_lt_oq(__m128h a, __m128h b) {
1013   // CHECK-LABEL: test_mm_cmp_ph_mask_lt_oq
1014   // CHECK: fcmp olt <8 x half> %{{.*}}, %{{.*}}
1015   return _mm_cmp_ph_mask(a, b, _CMP_LT_OQ);
1016 }
1017 
test_mm_cmp_ph_mask_le_oq(__m128h a,__m128h b)1018 __mmask8 test_mm_cmp_ph_mask_le_oq(__m128h a, __m128h b) {
1019   // CHECK-LABEL: test_mm_cmp_ph_mask_le_oq
1020   // CHECK: fcmp ole <8 x half> %{{.*}}, %{{.*}}
1021   return _mm_cmp_ph_mask(a, b, _CMP_LE_OQ);
1022 }
1023 
test_mm_cmp_ph_mask_unord_s(__m128h a,__m128h b)1024 __mmask8 test_mm_cmp_ph_mask_unord_s(__m128h a, __m128h b) {
1025   // CHECK-LABEL: test_mm_cmp_ph_mask_unord_s
1026   // CHECK: fcmp uno <8 x half> %{{.*}}, %{{.*}}
1027   return _mm_cmp_ph_mask(a, b, _CMP_UNORD_S);
1028 }
1029 
test_mm_cmp_ph_mask_neq_us(__m128h a,__m128h b)1030 __mmask8 test_mm_cmp_ph_mask_neq_us(__m128h a, __m128h b) {
1031   // CHECK-LABEL: test_mm_cmp_ph_mask_neq_us
1032   // CHECK: fcmp une <8 x half> %{{.*}}, %{{.*}}
1033   return _mm_cmp_ph_mask(a, b, _CMP_NEQ_US);
1034 }
1035 
test_mm_cmp_ph_mask_nlt_uq(__m128h a,__m128h b)1036 __mmask8 test_mm_cmp_ph_mask_nlt_uq(__m128h a, __m128h b) {
1037   // CHECK-LABEL: test_mm_cmp_ph_mask_nlt_uq
1038   // CHECK: fcmp uge <8 x half> %{{.*}}, %{{.*}}
1039   return _mm_cmp_ph_mask(a, b, _CMP_NLT_UQ);
1040 }
1041 
test_mm_cmp_ph_mask_nle_uq(__m128h a,__m128h b)1042 __mmask8 test_mm_cmp_ph_mask_nle_uq(__m128h a, __m128h b) {
1043   // CHECK-LABEL: test_mm_cmp_ph_mask_nle_uq
1044   // CHECK: fcmp ugt <8 x half> %{{.*}}, %{{.*}}
1045   return _mm_cmp_ph_mask(a, b, _CMP_NLE_UQ);
1046 }
1047 
test_mm_cmp_ph_mask_ord_s(__m128h a,__m128h b)1048 __mmask8 test_mm_cmp_ph_mask_ord_s(__m128h a, __m128h b) {
1049   // CHECK-LABEL: test_mm_cmp_ph_mask_ord_s
1050   // CHECK: fcmp ord <8 x half> %{{.*}}, %{{.*}}
1051   return _mm_cmp_ph_mask(a, b, _CMP_ORD_S);
1052 }
1053 
test_mm_cmp_ph_mask_eq_us(__m128h a,__m128h b)1054 __mmask8 test_mm_cmp_ph_mask_eq_us(__m128h a, __m128h b) {
1055   // CHECK-LABEL: test_mm_cmp_ph_mask_eq_us
1056   // CHECK: fcmp ueq <8 x half> %{{.*}}, %{{.*}}
1057   return _mm_cmp_ph_mask(a, b, _CMP_EQ_US);
1058 }
1059 
test_mm_cmp_ph_mask_nge_uq(__m128h a,__m128h b)1060 __mmask8 test_mm_cmp_ph_mask_nge_uq(__m128h a, __m128h b) {
1061   // CHECK-LABEL: test_mm_cmp_ph_mask_nge_uq
1062   // CHECK: fcmp ult <8 x half> %{{.*}}, %{{.*}}
1063   return _mm_cmp_ph_mask(a, b, _CMP_NGE_UQ);
1064 }
1065 
test_mm_cmp_ph_mask_ngt_uq(__m128h a,__m128h b)1066 __mmask8 test_mm_cmp_ph_mask_ngt_uq(__m128h a, __m128h b) {
1067   // CHECK-LABEL: test_mm_cmp_ph_mask_ngt_uq
1068   // CHECK: fcmp ule <8 x half> %{{.*}}, %{{.*}}
1069   return _mm_cmp_ph_mask(a, b, _CMP_NGT_UQ);
1070 }
1071 
test_mm_cmp_ph_mask_false_os(__m128h a,__m128h b)1072 __mmask8 test_mm_cmp_ph_mask_false_os(__m128h a, __m128h b) {
1073   // CHECK-LABEL: test_mm_cmp_ph_mask_false_os
1074   // CHECK: fcmp false <8 x half> %{{.*}}, %{{.*}}
1075   return _mm_cmp_ph_mask(a, b, _CMP_FALSE_OS);
1076 }
1077 
test_mm_cmp_ph_mask_neq_os(__m128h a,__m128h b)1078 __mmask8 test_mm_cmp_ph_mask_neq_os(__m128h a, __m128h b) {
1079   // CHECK-LABEL: test_mm_cmp_ph_mask_neq_os
1080   // CHECK: fcmp one <8 x half> %{{.*}}, %{{.*}}
1081   return _mm_cmp_ph_mask(a, b, _CMP_NEQ_OS);
1082 }
1083 
test_mm_cmp_ph_mask_ge_oq(__m128h a,__m128h b)1084 __mmask8 test_mm_cmp_ph_mask_ge_oq(__m128h a, __m128h b) {
1085   // CHECK-LABEL: test_mm_cmp_ph_mask_ge_oq
1086   // CHECK: fcmp oge <8 x half> %{{.*}}, %{{.*}}
1087   return _mm_cmp_ph_mask(a, b, _CMP_GE_OQ);
1088 }
1089 
test_mm_cmp_ph_mask_gt_oq(__m128h a,__m128h b)1090 __mmask8 test_mm_cmp_ph_mask_gt_oq(__m128h a, __m128h b) {
1091   // CHECK-LABEL: test_mm_cmp_ph_mask_gt_oq
1092   // CHECK: fcmp ogt <8 x half> %{{.*}}, %{{.*}}
1093   return _mm_cmp_ph_mask(a, b, _CMP_GT_OQ);
1094 }
1095 
test_mm_cmp_ph_mask_true_us(__m128h a,__m128h b)1096 __mmask8 test_mm_cmp_ph_mask_true_us(__m128h a, __m128h b) {
1097   // CHECK-LABEL: test_mm_cmp_ph_mask_true_us
1098   // CHECK: fcmp true <8 x half> %{{.*}}, %{{.*}}
1099   return _mm_cmp_ph_mask(a, b, _CMP_TRUE_US);
1100 }
1101 
test_mm_mask_cmp_ph_mask_eq_oq(__mmask8 m,__m128h a,__m128h b)1102 __mmask8 test_mm_mask_cmp_ph_mask_eq_oq(__mmask8 m, __m128h a, __m128h b) {
1103   // CHECK-LABEL: @test_mm_mask_cmp_ph_mask_eq_oq
1104   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x half> %{{.*}}, %{{.*}}
1105   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1106   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_EQ_OQ);
1107 }
1108 
test_mm_mask_cmp_ph_mask_lt_os(__mmask8 m,__m128h a,__m128h b)1109 __mmask8 test_mm_mask_cmp_ph_mask_lt_os(__mmask8 m, __m128h a, __m128h b) {
1110   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_lt_os
1111   // CHECK: [[CMP:%.*]] = fcmp olt <8 x half> %{{.*}}, %{{.*}}
1112   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1113   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_LT_OS);
1114 }
1115 
test_mm_mask_cmp_ph_mask_le_os(__mmask8 m,__m128h a,__m128h b)1116 __mmask8 test_mm_mask_cmp_ph_mask_le_os(__mmask8 m, __m128h a, __m128h b) {
1117   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_le_os
1118   // CHECK: [[CMP:%.*]] = fcmp ole <8 x half> %{{.*}}, %{{.*}}
1119   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1120   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_LE_OS);
1121 }
1122 
test_mm_mask_cmp_ph_mask_unord_q(__mmask8 m,__m128h a,__m128h b)1123 __mmask8 test_mm_mask_cmp_ph_mask_unord_q(__mmask8 m, __m128h a, __m128h b) {
1124   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_unord_q
1125   // CHECK: [[CMP:%.*]] = fcmp uno <8 x half> %{{.*}}, %{{.*}}
1126   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1127   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_UNORD_Q);
1128 }
1129 
test_mm_mask_cmp_ph_mask_neq_uq(__mmask8 m,__m128h a,__m128h b)1130 __mmask8 test_mm_mask_cmp_ph_mask_neq_uq(__mmask8 m, __m128h a, __m128h b) {
1131   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_neq_uq
1132   // CHECK: [[CMP:%.*]] = fcmp une <8 x half> %{{.*}}, %{{.*}}
1133   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1134   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NEQ_UQ);
1135 }
1136 
test_mm_mask_cmp_ph_mask_nlt_us(__mmask8 m,__m128h a,__m128h b)1137 __mmask8 test_mm_mask_cmp_ph_mask_nlt_us(__mmask8 m, __m128h a, __m128h b) {
1138   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_nlt_us
1139   // CHECK: [[CMP:%.*]] = fcmp uge <8 x half> %{{.*}}, %{{.*}}
1140   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1141   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NLT_US);
1142 }
1143 
test_mm_mask_cmp_ph_mask_nle_us(__mmask8 m,__m128h a,__m128h b)1144 __mmask8 test_mm_mask_cmp_ph_mask_nle_us(__mmask8 m, __m128h a, __m128h b) {
1145   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_nle_us
1146   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x half> %{{.*}}, %{{.*}}
1147   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1148   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NLE_US);
1149 }
1150 
test_mm_mask_cmp_ph_mask_ord_q(__mmask8 m,__m128h a,__m128h b)1151 __mmask8 test_mm_mask_cmp_ph_mask_ord_q(__mmask8 m, __m128h a, __m128h b) {
1152   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_ord_q
1153   // CHECK: [[CMP:%.*]] = fcmp ord <8 x half> %{{.*}}, %{{.*}}
1154   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1155   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_ORD_Q);
1156 }
1157 
test_mm_mask_cmp_ph_mask_eq_uq(__mmask8 m,__m128h a,__m128h b)1158 __mmask8 test_mm_mask_cmp_ph_mask_eq_uq(__mmask8 m, __m128h a, __m128h b) {
1159   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_eq_uq
1160   // CHECK: [[CMP:%.*]] = fcmp ueq <8 x half> %{{.*}}, %{{.*}}
1161   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1162   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_EQ_UQ);
1163 }
1164 
test_mm_mask_cmp_ph_mask_nge_us(__mmask8 m,__m128h a,__m128h b)1165 __mmask8 test_mm_mask_cmp_ph_mask_nge_us(__mmask8 m, __m128h a, __m128h b) {
1166   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_nge_us
1167   // CHECK: [[CMP:%.*]] = fcmp ult <8 x half> %{{.*}}, %{{.*}}
1168   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1169   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NGE_US);
1170 }
1171 
test_mm_mask_cmp_ph_mask_ngt_us(__mmask8 m,__m128h a,__m128h b)1172 __mmask8 test_mm_mask_cmp_ph_mask_ngt_us(__mmask8 m, __m128h a, __m128h b) {
1173   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_ngt_us
1174   // CHECK: [[CMP:%.*]] = fcmp ule <8 x half> %{{.*}}, %{{.*}}
1175   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1176   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NGT_US);
1177 }
1178 
test_mm_mask_cmp_ph_mask_false_oq(__mmask8 m,__m128h a,__m128h b)1179 __mmask8 test_mm_mask_cmp_ph_mask_false_oq(__mmask8 m, __m128h a, __m128h b) {
1180   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_false_oq
1181   // CHECK: [[CMP:%.*]] = fcmp false <8 x half> %{{.*}}, %{{.*}}
1182   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1183   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_FALSE_OQ);
1184 }
1185 
test_mm_mask_cmp_ph_mask_neq_oq(__mmask8 m,__m128h a,__m128h b)1186 __mmask8 test_mm_mask_cmp_ph_mask_neq_oq(__mmask8 m, __m128h a, __m128h b) {
1187   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_neq_oq
1188   // CHECK: [[CMP:%.*]] = fcmp one <8 x half> %{{.*}}, %{{.*}}
1189   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1190   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NEQ_OQ);
1191 }
1192 
test_mm_mask_cmp_ph_mask_ge_os(__mmask8 m,__m128h a,__m128h b)1193 __mmask8 test_mm_mask_cmp_ph_mask_ge_os(__mmask8 m, __m128h a, __m128h b) {
1194   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_ge_os
1195   // CHECK: [[CMP:%.*]] = fcmp oge <8 x half> %{{.*}}, %{{.*}}
1196   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1197   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_GE_OS);
1198 }
1199 
test_mm_mask_cmp_ph_mask_gt_os(__mmask8 m,__m128h a,__m128h b)1200 __mmask8 test_mm_mask_cmp_ph_mask_gt_os(__mmask8 m, __m128h a, __m128h b) {
1201   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_gt_os
1202   // CHECK: [[CMP:%.*]] = fcmp ogt <8 x half> %{{.*}}, %{{.*}}
1203   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1204   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_GT_OS);
1205 }
1206 
test_mm_mask_cmp_ph_mask_true_uq(__mmask8 m,__m128h a,__m128h b)1207 __mmask8 test_mm_mask_cmp_ph_mask_true_uq(__mmask8 m, __m128h a, __m128h b) {
1208   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_true_uq
1209   // CHECK: [[CMP:%.*]] = fcmp true <8 x half> %{{.*}}, %{{.*}}
1210   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1211   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_TRUE_UQ);
1212 }
1213 
test_mm_mask_cmp_ph_mask_eq_os(__mmask8 m,__m128h a,__m128h b)1214 __mmask8 test_mm_mask_cmp_ph_mask_eq_os(__mmask8 m, __m128h a, __m128h b) {
1215   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_eq_os
1216   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x half> %{{.*}}, %{{.*}}
1217   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1218   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_EQ_OS);
1219 }
1220 
test_mm_mask_cmp_ph_mask_lt_oq(__mmask8 m,__m128h a,__m128h b)1221 __mmask8 test_mm_mask_cmp_ph_mask_lt_oq(__mmask8 m, __m128h a, __m128h b) {
1222   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_lt_oq
1223   // CHECK: [[CMP:%.*]] = fcmp olt <8 x half> %{{.*}}, %{{.*}}
1224   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1225   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_LT_OQ);
1226 }
1227 
test_mm_mask_cmp_ph_mask_le_oq(__mmask8 m,__m128h a,__m128h b)1228 __mmask8 test_mm_mask_cmp_ph_mask_le_oq(__mmask8 m, __m128h a, __m128h b) {
1229   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_le_oq
1230   // CHECK: [[CMP:%.*]] = fcmp ole <8 x half> %{{.*}}, %{{.*}}
1231   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1232   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_LE_OQ);
1233 }
1234 
test_mm_mask_cmp_ph_mask_unord_s(__mmask8 m,__m128h a,__m128h b)1235 __mmask8 test_mm_mask_cmp_ph_mask_unord_s(__mmask8 m, __m128h a, __m128h b) {
1236   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_unord_s
1237   // CHECK: [[CMP:%.*]] = fcmp uno <8 x half> %{{.*}}, %{{.*}}
1238   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1239   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_UNORD_S);
1240 }
1241 
test_mm_mask_cmp_ph_mask_neq_us(__mmask8 m,__m128h a,__m128h b)1242 __mmask8 test_mm_mask_cmp_ph_mask_neq_us(__mmask8 m, __m128h a, __m128h b) {
1243   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_neq_us
1244   // CHECK: [[CMP:%.*]] = fcmp une <8 x half> %{{.*}}, %{{.*}}
1245   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1246   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NEQ_US);
1247 }
1248 
test_mm_mask_cmp_ph_mask_nlt_uq(__mmask8 m,__m128h a,__m128h b)1249 __mmask8 test_mm_mask_cmp_ph_mask_nlt_uq(__mmask8 m, __m128h a, __m128h b) {
1250   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_nlt_uq
1251   // CHECK: [[CMP:%.*]] = fcmp uge <8 x half> %{{.*}}, %{{.*}}
1252   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1253   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NLT_UQ);
1254 }
1255 
test_mm_mask_cmp_ph_mask_nle_uq(__mmask8 m,__m128h a,__m128h b)1256 __mmask8 test_mm_mask_cmp_ph_mask_nle_uq(__mmask8 m, __m128h a, __m128h b) {
1257   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_nle_uq
1258   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x half> %{{.*}}, %{{.*}}
1259   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1260   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NLE_UQ);
1261 }
1262 
test_mm_mask_cmp_ph_mask_ord_s(__mmask8 m,__m128h a,__m128h b)1263 __mmask8 test_mm_mask_cmp_ph_mask_ord_s(__mmask8 m, __m128h a, __m128h b) {
1264   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_ord_s
1265   // CHECK: [[CMP:%.*]] = fcmp ord <8 x half> %{{.*}}, %{{.*}}
1266   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1267   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_ORD_S);
1268 }
1269 
test_mm_mask_cmp_ph_mask_eq_us(__mmask8 m,__m128h a,__m128h b)1270 __mmask8 test_mm_mask_cmp_ph_mask_eq_us(__mmask8 m, __m128h a, __m128h b) {
1271   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_eq_us
1272   // CHECK: [[CMP:%.*]] = fcmp ueq <8 x half> %{{.*}}, %{{.*}}
1273   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1274   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_EQ_US);
1275 }
1276 
test_mm_mask_cmp_ph_mask_nge_uq(__mmask8 m,__m128h a,__m128h b)1277 __mmask8 test_mm_mask_cmp_ph_mask_nge_uq(__mmask8 m, __m128h a, __m128h b) {
1278   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_nge_uq
1279   // CHECK: [[CMP:%.*]] = fcmp ult <8 x half> %{{.*}}, %{{.*}}
1280   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1281   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NGE_UQ);
1282 }
1283 
test_mm_mask_cmp_ph_mask_ngt_uq(__mmask8 m,__m128h a,__m128h b)1284 __mmask8 test_mm_mask_cmp_ph_mask_ngt_uq(__mmask8 m, __m128h a, __m128h b) {
1285   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_ngt_uq
1286   // CHECK: [[CMP:%.*]] = fcmp ule <8 x half> %{{.*}}, %{{.*}}
1287   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1288   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NGT_UQ);
1289 }
1290 
test_mm_mask_cmp_ph_mask_false_os(__mmask8 m,__m128h a,__m128h b)1291 __mmask8 test_mm_mask_cmp_ph_mask_false_os(__mmask8 m, __m128h a, __m128h b) {
1292   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_false_os
1293   // CHECK: [[CMP:%.*]] = fcmp false <8 x half> %{{.*}}, %{{.*}}
1294   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1295   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_FALSE_OS);
1296 }
1297 
test_mm_mask_cmp_ph_mask_neq_os(__mmask8 m,__m128h a,__m128h b)1298 __mmask8 test_mm_mask_cmp_ph_mask_neq_os(__mmask8 m, __m128h a, __m128h b) {
1299   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_neq_os
1300   // CHECK: [[CMP:%.*]] = fcmp one <8 x half> %{{.*}}, %{{.*}}
1301   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1302   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_NEQ_OS);
1303 }
1304 
test_mm_mask_cmp_ph_mask_ge_oq(__mmask8 m,__m128h a,__m128h b)1305 __mmask8 test_mm_mask_cmp_ph_mask_ge_oq(__mmask8 m, __m128h a, __m128h b) {
1306   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_ge_oq
1307   // CHECK: [[CMP:%.*]] = fcmp oge <8 x half> %{{.*}}, %{{.*}}
1308   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1309   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_GE_OQ);
1310 }
1311 
test_mm_mask_cmp_ph_mask_gt_oq(__mmask8 m,__m128h a,__m128h b)1312 __mmask8 test_mm_mask_cmp_ph_mask_gt_oq(__mmask8 m, __m128h a, __m128h b) {
1313   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_gt_oq
1314   // CHECK: [[CMP:%.*]] = fcmp ogt <8 x half> %{{.*}}, %{{.*}}
1315   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1316   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_GT_OQ);
1317 }
1318 
test_mm_mask_cmp_ph_mask_true_us(__mmask8 m,__m128h a,__m128h b)1319 __mmask8 test_mm_mask_cmp_ph_mask_true_us(__mmask8 m, __m128h a, __m128h b) {
1320   // CHECK-LABEL: test_mm_mask_cmp_ph_mask_true_us
1321   // CHECK: [[CMP:%.*]] = fcmp true <8 x half> %{{.*}}, %{{.*}}
1322   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1323   return _mm_mask_cmp_ph_mask(m, a, b, _CMP_TRUE_US);
1324 }
1325 
test_mm256_rcp_ph(__m256h __A)1326 __m256h test_mm256_rcp_ph(__m256h __A) {
1327   // CHECK-LABEL: @test_mm256_rcp_ph
1328   // CHECK: @llvm.x86.avx512fp16.mask.rcp.ph.256
1329   return _mm256_rcp_ph(__A);
1330 }
1331 
test_mm256_mask_rcp_ph(__m256h __W,__mmask32 __U,__m256h __A)1332 __m256h test_mm256_mask_rcp_ph(__m256h __W, __mmask32 __U, __m256h __A) {
1333   // CHECK-LABEL: @test_mm256_mask_rcp_ph
1334   // CHECK: @llvm.x86.avx512fp16.mask.rcp.ph.256
1335   return (__m256h)_mm256_mask_rcp_ph(__W, __U, __A);
1336 }
1337 
test_mm256_maskz_rcp_ph(__mmask32 __U,__m256h __A)1338 __m256h test_mm256_maskz_rcp_ph(__mmask32 __U, __m256h __A) {
1339   // CHECK-LABEL: @test_mm256_maskz_rcp_ph
1340   // CHECK: @llvm.x86.avx512fp16.mask.rcp.ph.256
1341   return _mm256_maskz_rcp_ph(__U, __A);
1342 }
1343 
test_mm_rcp_ph(__m128h __A)1344 __m128h test_mm_rcp_ph(__m128h __A) {
1345   // CHECK-LABEL: @test_mm_rcp_ph
1346   // CHECK: @llvm.x86.avx512fp16.mask.rcp.ph.128
1347   return _mm_rcp_ph(__A);
1348 }
1349 
test_mm_mask_rcp_ph(__m128h __W,__mmask32 __U,__m128h __A)1350 __m128h test_mm_mask_rcp_ph(__m128h __W, __mmask32 __U, __m128h __A) {
1351   // CHECK-LABEL: @test_mm_mask_rcp_ph
1352   // CHECK: @llvm.x86.avx512fp16.mask.rcp.ph.128
1353   return (__m128h)_mm_mask_rcp_ph(__W, __U, __A);
1354 }
1355 
test_mm_maskz_rcp_ph(__mmask32 __U,__m128h __A)1356 __m128h test_mm_maskz_rcp_ph(__mmask32 __U, __m128h __A) {
1357   // CHECK-LABEL: @test_mm_maskz_rcp_ph
1358   // CHECK: @llvm.x86.avx512fp16.mask.rcp.ph.128
1359   return _mm_maskz_rcp_ph(__U, __A);
1360 }
1361 
test_mm256_rsqrt_ph(__m256h __A)1362 __m256h test_mm256_rsqrt_ph(__m256h __A) {
1363   // CHECK-LABEL: @test_mm256_rsqrt_ph
1364   // CHECK: @llvm.x86.avx512fp16.mask.rsqrt.ph.256
1365   return _mm256_rsqrt_ph(__A);
1366 }
1367 
test_mm256_mask_rsqrt_ph(__m256h __W,__mmask16 __U,__m256h __A)1368 __m256h test_mm256_mask_rsqrt_ph(__m256h __W, __mmask16 __U, __m256h __A) {
1369   // CHECK-LABEL: @test_mm256_mask_rsqrt_ph
1370   // CHECK: @llvm.x86.avx512fp16.mask.rsqrt.ph.256
1371   return (__m256h)_mm256_mask_rsqrt_ph(__W, __U, __A);
1372 }
1373 
test_mm256_maskz_rsqrt_ph(__mmask16 __U,__m256h __A)1374 __m256h test_mm256_maskz_rsqrt_ph(__mmask16 __U, __m256h __A) {
1375   // CHECK-LABEL: @test_mm256_maskz_rsqrt_ph
1376   // CHECK: @llvm.x86.avx512fp16.mask.rsqrt.ph.256
1377   return _mm256_maskz_rsqrt_ph(__U, __A);
1378 }
1379 
test_mm_rsqrt_ph(__m128h __A)1380 __m128h test_mm_rsqrt_ph(__m128h __A) {
1381   // CHECK-LABEL: @test_mm_rsqrt_ph
1382   // CHECK: @llvm.x86.avx512fp16.mask.rsqrt.ph.128
1383   return _mm_rsqrt_ph(__A);
1384 }
1385 
test_mm_mask_rsqrt_ph(__m128h __W,__mmask32 __U,__m128h __A)1386 __m128h test_mm_mask_rsqrt_ph(__m128h __W, __mmask32 __U, __m128h __A) {
1387   // CHECK-LABEL: @test_mm_mask_rsqrt_ph
1388   // CHECK: @llvm.x86.avx512fp16.mask.rsqrt.ph.128
1389   return (__m128h)_mm_mask_rsqrt_ph(__W, __U, __A);
1390 }
1391 
test_mm_maskz_rsqrt_ph(__mmask32 __U,__m128h __A)1392 __m128h test_mm_maskz_rsqrt_ph(__mmask32 __U, __m128h __A) {
1393   // CHECK-LABEL: @test_mm_maskz_rsqrt_ph
1394   // CHECK: @llvm.x86.avx512fp16.mask.rsqrt.ph.128
1395   return _mm_maskz_rsqrt_ph(__U, __A);
1396 }
1397 
test_mm_getmant_ph(__m128h __A)1398 __m128h test_mm_getmant_ph(__m128h __A) {
1399   // CHECK-LABEL: @test_mm_getmant_ph
1400   // CHECK: @llvm.x86.avx512fp16.mask.getmant.ph.128
1401   return _mm_getmant_ph(__A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
1402 }
1403 
test_mm_mask_getmant_ph(__m128h __W,__mmask8 __U,__m128h __A)1404 __m128h test_mm_mask_getmant_ph(__m128h __W, __mmask8 __U, __m128h __A) {
1405   // CHECK-LABEL: @test_mm_mask_getmant_ph
1406   // CHECK: @llvm.x86.avx512fp16.mask.getmant.ph.128
1407   return _mm_mask_getmant_ph(__W, __U, __A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
1408 }
1409 
test_mm_maskz_getmant_ph(__mmask8 __U,__m128h __A)1410 __m128h test_mm_maskz_getmant_ph(__mmask8 __U, __m128h __A) {
1411   // CHECK-LABEL: @test_mm_maskz_getmant_ph
1412   // CHECK: @llvm.x86.avx512fp16.mask.getmant.ph.128
1413   return _mm_maskz_getmant_ph(__U, __A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
1414 }
1415 
test_mm256_getmant_ph(__m256h __A)1416 __m256h test_mm256_getmant_ph(__m256h __A) {
1417   // CHECK-LABEL: @test_mm256_getmant_ph
1418   // CHECK: @llvm.x86.avx512fp16.mask.getmant.ph.256
1419   return _mm256_getmant_ph(__A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
1420 }
1421 
test_mm256_mask_getmant_ph(__m256h __W,__mmask16 __U,__m256h __A)1422 __m256h test_mm256_mask_getmant_ph(__m256h __W, __mmask16 __U, __m256h __A) {
1423   // CHECK-LABEL: @test_mm256_mask_getmant_ph
1424   // CHECK: @llvm.x86.avx512fp16.mask.getmant.ph.256
1425   return _mm256_mask_getmant_ph(__W, __U, __A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
1426 }
1427 
test_mm256_maskz_getmant_ph(__mmask16 __U,__m256h __A)1428 __m256h test_mm256_maskz_getmant_ph(__mmask16 __U, __m256h __A) {
1429   // CHECK-LABEL: @test_mm256_maskz_getmant_ph
1430   // CHECK: @llvm.x86.avx512fp16.mask.getmant.ph.256
1431   return _mm256_maskz_getmant_ph(__U, __A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
1432 }
1433 
test_mm_getexp_ph(__m128h __A)1434 __m128h test_mm_getexp_ph(__m128h __A) {
1435   // CHECK-LABEL: @test_mm_getexp_ph
1436   // CHECK: @llvm.x86.avx512fp16.mask.getexp.ph.128
1437   return _mm_getexp_ph(__A);
1438 }
1439 
test_mm_mask_getexp_ph(__m128h __W,__mmask8 __U,__m128h __A)1440 __m128h test_mm_mask_getexp_ph(__m128h __W, __mmask8 __U, __m128h __A) {
1441   // CHECK-LABEL: @test_mm_mask_getexp_ph
1442   // CHECK: @llvm.x86.avx512fp16.mask.getexp.ph.128
1443   return _mm_mask_getexp_ph(__W, __U, __A);
1444 }
1445 
test_mm_maskz_getexp_ph(__mmask8 __U,__m128h __A)1446 __m128h test_mm_maskz_getexp_ph(__mmask8 __U, __m128h __A) {
1447   // CHECK-LABEL: @test_mm_maskz_getexp_ph
1448   // CHECK: @llvm.x86.avx512fp16.mask.getexp.ph.128
1449   return _mm_maskz_getexp_ph(__U, __A);
1450 }
1451 
test_mm256_getexp_ph(__m256h __A)1452 __m256h test_mm256_getexp_ph(__m256h __A) {
1453   // CHECK-LABEL: @test_mm256_getexp_ph
1454   // CHECK: @llvm.x86.avx512fp16.mask.getexp.ph.256
1455   return _mm256_getexp_ph(__A);
1456 }
1457 
test_mm256_mask_getexp_ph(__m256h __W,__mmask16 __U,__m256h __A)1458 __m256h test_mm256_mask_getexp_ph(__m256h __W, __mmask16 __U, __m256h __A) {
1459   // CHECK-LABEL: @test_mm256_mask_getexp_ph
1460   // CHECK: @llvm.x86.avx512fp16.mask.getexp.ph.256
1461   return _mm256_mask_getexp_ph(__W, __U, __A);
1462 }
1463 
test_mm256_maskz_getexp_ph(__mmask16 __U,__m256h __A)1464 __m256h test_mm256_maskz_getexp_ph(__mmask16 __U, __m256h __A) {
1465   // CHECK-LABEL: @test_mm256_maskz_getexp_ph
1466   // CHECK: @llvm.x86.avx512fp16.mask.getexp.ph.256
1467   return _mm256_maskz_getexp_ph(__U, __A);
1468 }
1469 
test_mm_scalef_ph(__m128h __A,__m128h __B)1470 __m128h test_mm_scalef_ph(__m128h __A, __m128h __B) {
1471   // CHECK-LABEL: @test_mm_scalef_ph
1472   // CHECK: @llvm.x86.avx512fp16.mask.scalef.ph.128
1473   return _mm_scalef_ph(__A, __B);
1474 }
1475 
test_mm_mask_scalef_ph(__m128h __W,__mmask8 __U,__m128h __A,__m128h __B)1476 __m128h test_mm_mask_scalef_ph(__m128h __W, __mmask8 __U, __m128h __A, __m128h __B) {
1477   // CHECK-LABEL: @test_mm_mask_scalef_ph
1478   // CHECK: @llvm.x86.avx512fp16.mask.scalef.ph.128
1479   return _mm_mask_scalef_ph(__W, __U, __A, __B);
1480 }
1481 
test_mm_maskz_scalef_ph(__mmask8 __U,__m128h __A,__m128h __B)1482 __m128h test_mm_maskz_scalef_ph(__mmask8 __U, __m128h __A, __m128h __B) {
1483   // CHECK-LABEL: @test_mm_maskz_scalef_ph
1484   // CHECK: @llvm.x86.avx512fp16.mask.scalef.ph.128
1485   return _mm_maskz_scalef_ph(__U, __A, __B);
1486 }
1487 
test_mm256_scalef_ph(__m256h __A,__m256h __B)1488 __m256h test_mm256_scalef_ph(__m256h __A, __m256h __B) {
1489   // CHECK-LABEL: @test_mm256_scalef_ph
1490   // CHECK: @llvm.x86.avx512fp16.mask.scalef.ph.256
1491   return _mm256_scalef_ph(__A, __B);
1492 }
1493 
test_mm256_mask_scalef_ph(__m256h __W,__mmask16 __U,__m256h __A,__m256h __B)1494 __m256h test_mm256_mask_scalef_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) {
1495   // CHECK-LABEL: @test_mm256_mask_scalef_ph
1496   // CHECK: @llvm.x86.avx512fp16.mask.scalef.ph.256
1497   return _mm256_mask_scalef_ph(__W, __U, __A, __B);
1498 }
1499 
test_mm256_maskz_scalef_ph(__mmask16 __U,__m256h __A,__m256h __B)1500 __m256h test_mm256_maskz_scalef_ph(__mmask16 __U, __m256h __A, __m256h __B) {
1501   // CHECK-LABEL: @test_mm256_maskz_scalef_ph
1502   // CHECK: @llvm.x86.avx512fp16.mask.scalef.ph.256
1503   return _mm256_maskz_scalef_ph(__U, __A, __B);
1504 }
1505 
test_mm_roundscale_ph(__m128h __A)1506 __m128h test_mm_roundscale_ph(__m128h __A) {
1507   // CHECK-LABEL: @test_mm_roundscale_ph
1508   // CHECK: @llvm.x86.avx512fp16.mask.rndscale.ph.128
1509   return _mm_roundscale_ph(__A, 4);
1510 }
1511 
test_mm_mask_roundscale_ph(__m128h __W,__mmask8 __U,__m128h __A)1512 __m128h test_mm_mask_roundscale_ph(__m128h __W, __mmask8 __U, __m128h __A) {
1513   // CHECK-LABEL: @test_mm_mask_roundscale_ph
1514   // CHECK: @llvm.x86.avx512fp16.mask.rndscale.ph.128
1515   return _mm_mask_roundscale_ph(__W, __U, __A, 4);
1516 }
1517 
test_mm_maskz_roundscale_ph(__mmask8 __U,__m128h __A)1518 __m128h test_mm_maskz_roundscale_ph(__mmask8 __U, __m128h __A) {
1519   // CHECK-LABEL: @test_mm_maskz_roundscale_ph
1520   // CHECK: @llvm.x86.avx512fp16.mask.rndscale.ph.128
1521   return _mm_maskz_roundscale_ph(__U, __A, 4);
1522 }
1523 
test_mm256_roundscale_ph(__m256h __A)1524 __m256h test_mm256_roundscale_ph(__m256h __A) {
1525   // CHECK-LABEL: @test_mm256_roundscale_ph
1526   // CHECK: @llvm.x86.avx512fp16.mask.rndscale.ph.256
1527   return _mm256_roundscale_ph(__A, 4);
1528 }
1529 
test_mm256_mask_roundscale_ph(__m256h __W,__mmask16 __U,__m256h __A)1530 __m256h test_mm256_mask_roundscale_ph(__m256h __W, __mmask16 __U, __m256h __A) {
1531   // CHECK-LABEL: @test_mm256_mask_roundscale_ph
1532   // CHECK: @llvm.x86.avx512fp16.mask.rndscale.ph.256
1533   return _mm256_mask_roundscale_ph(__W, __U, __A, 4);
1534 }
1535 
test_mm256_maskz_roundscale_ph(__mmask16 __U,__m256h __A)1536 __m256h test_mm256_maskz_roundscale_ph(__mmask16 __U, __m256h __A) {
1537   // CHECK-LABEL: @test_mm256_maskz_roundscale_ph
1538   // CHECK: @llvm.x86.avx512fp16.mask.rndscale.ph.256
1539   return _mm256_maskz_roundscale_ph(__U, __A, 4);
1540 }
1541 
test_mm_reduce_ph(__m128h __A)1542 __m128h test_mm_reduce_ph(__m128h __A) {
1543   // CHECK-LABEL: @test_mm_reduce_ph
1544   // CHECK: @llvm.x86.avx512fp16.mask.reduce.ph.128
1545   return _mm_reduce_ph(__A, 4);
1546 }
1547 
test_mm_mask_reduce_ph(__m128h __W,__mmask8 __U,__m128h __A)1548 __m128h test_mm_mask_reduce_ph(__m128h __W, __mmask8 __U, __m128h __A) {
1549   // CHECK-LABEL: @test_mm_mask_reduce_ph
1550   // CHECK: @llvm.x86.avx512fp16.mask.reduce.ph.128
1551   return _mm_mask_reduce_ph(__W, __U, __A, 4);
1552 }
1553 
test_mm_maskz_reduce_ph(__mmask8 __U,__m128h __A)1554 __m128h test_mm_maskz_reduce_ph(__mmask8 __U, __m128h __A) {
1555   // CHECK-LABEL: @test_mm_maskz_reduce_ph
1556   // CHECK: @llvm.x86.avx512fp16.mask.reduce.ph.128
1557   return _mm_maskz_reduce_ph(__U, __A, 4);
1558 }
1559 
test_mm256_reduce_ph(__m256h __A)1560 __m256h test_mm256_reduce_ph(__m256h __A) {
1561   // CHECK-LABEL: @test_mm256_reduce_ph
1562   // CHECK: @llvm.x86.avx512fp16.mask.reduce.ph.256
1563   return _mm256_reduce_ph(__A, 4);
1564 }
1565 
test_mm256_mask_reduce_ph(__m256h __W,__mmask16 __U,__m256h __A)1566 __m256h test_mm256_mask_reduce_ph(__m256h __W, __mmask16 __U, __m256h __A) {
1567   // CHECK-LABEL: @test_mm256_mask_reduce_ph
1568   // CHECK: @llvm.x86.avx512fp16.mask.reduce.ph.256
1569   return _mm256_mask_reduce_ph(__W, __U, __A, 4);
1570 }
1571 
test_mm256_maskz_reduce_ph(__mmask16 __U,__m256h __A)1572 __m256h test_mm256_maskz_reduce_ph(__mmask16 __U, __m256h __A) {
1573   // CHECK-LABEL: @test_mm256_maskz_reduce_ph
1574   // CHECK: @llvm.x86.avx512fp16.mask.reduce.ph.256
1575   return _mm256_maskz_reduce_ph(__U, __A, 4);
1576 }
test_mm_sqrt_ph(__m128h x)1577 __m128h test_mm_sqrt_ph(__m128h x) {
1578   // CHECK-LABEL: test_mm_sqrt_ph
1579   // CHECK: call <8 x half> @llvm.sqrt.v8f16(<8 x half> {{.*}})
1580   return _mm_sqrt_ph(x);
1581 }
1582 
test_mm256_sqrt_ph(__m256h A)1583 __m256h test_mm256_sqrt_ph(__m256h A) {
1584   // CHECK-LABEL: test_mm256_sqrt_ph
1585   // CHECK: call <16 x half> @llvm.sqrt.v16f16(<16 x half> %{{.*}})
1586   return _mm256_sqrt_ph(A);
1587 }
1588 
test_mm_mask_sqrt_ph(__m128h __W,__mmask8 __U,__m128h __A)1589 __m128h test_mm_mask_sqrt_ph(__m128h __W, __mmask8 __U, __m128h __A) {
1590   // CHECK-LABEL: @test_mm_mask_sqrt_ph
1591   // CHECK: @llvm.sqrt.v8f16
1592   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
1593   return _mm_mask_sqrt_ph(__W, __U, __A);
1594 }
1595 
test_mm_maskz_sqrt_ph(__mmask8 __U,__m128h __A)1596 __m128h test_mm_maskz_sqrt_ph(__mmask8 __U, __m128h __A) {
1597   // CHECK-LABEL: @test_mm_maskz_sqrt_ph
1598   // CHECK: @llvm.sqrt.v8f16
1599   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
1600   return _mm_maskz_sqrt_ph(__U, __A);
1601 }
1602 
test_mm256_mask_sqrt_ph(__m256h __W,__mmask16 __U,__m256h __A)1603 __m256h test_mm256_mask_sqrt_ph(__m256h __W, __mmask16 __U, __m256h __A) {
1604   // CHECK-LABEL: @test_mm256_mask_sqrt_ph
1605   // CHECK: @llvm.sqrt.v16f16
1606   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
1607   return _mm256_mask_sqrt_ph(__W, __U, __A);
1608 }
1609 
test_mm256_maskz_sqrt_ph(__mmask16 __U,__m256h __A)1610 __m256h test_mm256_maskz_sqrt_ph(__mmask16 __U, __m256h __A) {
1611   // CHECK-LABEL: @test_mm256_maskz_sqrt_ph
1612   // CHECK: @llvm.sqrt.v16f16
1613   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
1614   return _mm256_maskz_sqrt_ph(__U, __A);
1615 }
test_mm_mask_fpclass_ph_mask(__mmask8 __U,__m128h __A)1616 __mmask8 test_mm_mask_fpclass_ph_mask(__mmask8 __U, __m128h __A) {
1617   // CHECK-LABEL: @test_mm_mask_fpclass_ph_mask
1618   // CHECK: @llvm.x86.avx512fp16.fpclass.ph.128
1619   return _mm_mask_fpclass_ph_mask(__U, __A, 2);
1620 }
1621 
test_mm_fpclass_ph_mask(__m128h __A)1622 __mmask8 test_mm_fpclass_ph_mask(__m128h __A) {
1623   // CHECK-LABEL: @test_mm_fpclass_ph_mask
1624   // CHECK: @llvm.x86.avx512fp16.fpclass.ph.128
1625   return _mm_fpclass_ph_mask(__A, 2);
1626 }
1627 
test_mm256_mask_fpclass_ph_mask(__mmask16 __U,__m256h __A)1628 __mmask16 test_mm256_mask_fpclass_ph_mask(__mmask16 __U, __m256h __A) {
1629   // CHECK-LABEL: @test_mm256_mask_fpclass_ph_mask
1630   // CHECK: @llvm.x86.avx512fp16.fpclass.ph.256
1631   return _mm256_mask_fpclass_ph_mask(__U, __A, 2);
1632 }
1633 
test_mm256_fpclass_ph_mask(__m256h __A)1634 __mmask16 test_mm256_fpclass_ph_mask(__m256h __A) {
1635   // CHECK-LABEL: @test_mm256_fpclass_ph_mask
1636   // CHECK: @llvm.x86.avx512fp16.fpclass.ph.256
1637   return _mm256_fpclass_ph_mask(__A, 2);
1638 }
1639 
test_mm_cvtpd_ph(__m128d A)1640 __m128h test_mm_cvtpd_ph(__m128d A) {
1641   // CHECK-LABEL: test_mm_cvtpd_ph
1642   // CHECK: @llvm.x86.avx512fp16.mask.vcvtpd2ph.128
1643   return _mm_cvtpd_ph(A);
1644 }
1645 
test_mm_mask_cvtpd_ph(__m128h A,__mmask8 B,__m128d C)1646 __m128h test_mm_mask_cvtpd_ph(__m128h A, __mmask8 B, __m128d C) {
1647   // CHECK-LABEL: test_mm_mask_cvtpd_ph
1648   // CHECK: @llvm.x86.avx512fp16.mask.vcvtpd2ph.128
1649   return _mm_mask_cvtpd_ph(A, B, C);
1650 }
1651 
test_mm_maskz_cvtpd_ph(__mmask8 A,__m128d B)1652 __m128h test_mm_maskz_cvtpd_ph(__mmask8 A, __m128d B) {
1653   // CHECK-LABEL: test_mm_maskz_cvtpd_ph
1654   // CHECK: @llvm.x86.avx512fp16.mask.vcvtpd2ph.128
1655   return _mm_maskz_cvtpd_ph(A, B);
1656 }
1657 
test_mm256_cvtpd_ph(__m256d A)1658 __m128h test_mm256_cvtpd_ph(__m256d A) {
1659   // CHECK-LABEL: test_mm256_cvtpd_ph
1660   // CHECK: @llvm.x86.avx512fp16.mask.vcvtpd2ph.256
1661   return _mm256_cvtpd_ph(A);
1662 }
1663 
test_mm256_mask_cvtpd_ph(__m128h A,__mmask8 B,__m256d C)1664 __m128h test_mm256_mask_cvtpd_ph(__m128h A, __mmask8 B, __m256d C) {
1665   // CHECK-LABEL: test_mm256_mask_cvtpd_ph
1666   // CHECK: @llvm.x86.avx512fp16.mask.vcvtpd2ph.256
1667   return _mm256_mask_cvtpd_ph(A, B, C);
1668 }
1669 
test_mm256_maskz_cvtpd_ph(__mmask8 A,__m256d B)1670 __m128h test_mm256_maskz_cvtpd_ph(__mmask8 A, __m256d B) {
1671   // CHECK-LABEL: test_mm256_maskz_cvtpd_ph
1672   // CHECK: @llvm.x86.avx512fp16.mask.vcvtpd2ph.256
1673   return _mm256_maskz_cvtpd_ph(A, B);
1674 }
1675 
test_mm_cvtph_pd(__m128h A)1676 __m128d test_mm_cvtph_pd(__m128h A) {
1677   // CHECK-LABEL: test_mm_cvtph_pd
1678   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2pd.128
1679   return _mm_cvtph_pd(A);
1680 }
1681 
test_mm_mask_cvtph_pd(__m128d A,__mmask8 B,__m128h C)1682 __m128d test_mm_mask_cvtph_pd(__m128d A, __mmask8 B, __m128h C) {
1683   // CHECK-LABEL: test_mm_mask_cvtph_pd
1684   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2pd.128
1685   return _mm_mask_cvtph_pd(A, B, C);
1686 }
1687 
test_mm_maskz_cvtph_pd(__mmask8 A,__m128h B)1688 __m128d test_mm_maskz_cvtph_pd(__mmask8 A, __m128h B) {
1689   // CHECK-LABEL: test_mm_maskz_cvtph_pd
1690   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2pd.128
1691   return _mm_maskz_cvtph_pd(A, B);
1692 }
1693 
test_mm256_cvtph_pd(__m128h A)1694 __m256d test_mm256_cvtph_pd(__m128h A) {
1695   // CHECK-LABEL: test_mm256_cvtph_pd
1696   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2pd.256
1697   return _mm256_cvtph_pd(A);
1698 }
1699 
test_mm256_mask_cvtph_pd(__m256d A,__mmask8 B,__m128h C)1700 __m256d test_mm256_mask_cvtph_pd(__m256d A, __mmask8 B, __m128h C) {
1701   // CHECK-LABEL: test_mm256_mask_cvtph_pd
1702   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2pd.256
1703   return _mm256_mask_cvtph_pd(A, B, C);
1704 }
1705 
test_mm256_maskz_cvtph_pd(__mmask8 A,__m128h B)1706 __m256d test_mm256_maskz_cvtph_pd(__mmask8 A, __m128h B) {
1707   // CHECK-LABEL: test_mm256_maskz_cvtph_pd
1708   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2pd.256
1709   return _mm256_maskz_cvtph_pd(A, B);
1710 }
1711 
test_mm_cvtph_epi16(__m128h A)1712 __m128i test_mm_cvtph_epi16(__m128h A) {
1713   // CHECK-LABEL: test_mm_cvtph_epi16
1714   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2w.128
1715   return _mm_cvtph_epi16(A);
1716 }
1717 
test_mm_mask_cvtph_epi16(__m128i A,__mmask8 B,__m128h C)1718 __m128i test_mm_mask_cvtph_epi16(__m128i A, __mmask8 B, __m128h C) {
1719   // CHECK-LABEL: test_mm_mask_cvtph_epi16
1720   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2w.128
1721   return _mm_mask_cvtph_epi16(A, B, C);
1722 }
1723 
test_mm_maskz_cvtph_epi16(__mmask8 A,__m128h B)1724 __m128i test_mm_maskz_cvtph_epi16(__mmask8 A, __m128h B) {
1725   // CHECK-LABEL: test_mm_maskz_cvtph_epi16
1726   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2w.128
1727   return _mm_maskz_cvtph_epi16(A, B);
1728 }
1729 
test_mm256_cvtph_epi16(__m256h A)1730 __m256i test_mm256_cvtph_epi16(__m256h A) {
1731   // CHECK-LABEL: test_mm256_cvtph_epi16
1732   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2w.256
1733   return _mm256_cvtph_epi16(A);
1734 }
1735 
test_mm256_mask_cvtph_epi16(__m256i A,__mmask16 B,__m256h C)1736 __m256i test_mm256_mask_cvtph_epi16(__m256i A, __mmask16 B, __m256h C) {
1737   // CHECK-LABEL: test_mm256_mask_cvtph_epi16
1738   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2w.256
1739   return _mm256_mask_cvtph_epi16(A, B, C);
1740 }
1741 
test_mm256_maskz_cvtph_epi16(__mmask16 A,__m256h B)1742 __m256i test_mm256_maskz_cvtph_epi16(__mmask16 A, __m256h B) {
1743   // CHECK-LABEL: test_mm256_maskz_cvtph_epi16
1744   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2w.256
1745   return _mm256_maskz_cvtph_epi16(A, B);
1746 }
1747 
test_mm_cvttph_epi16(__m128h A)1748 __m128i test_mm_cvttph_epi16(__m128h A) {
1749   // CHECK-LABEL: test_mm_cvttph_epi16
1750   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2w.128
1751   return _mm_cvttph_epi16(A);
1752 }
1753 
test_mm_mask_cvttph_epi16(__m128i A,__mmask8 B,__m128h C)1754 __m128i test_mm_mask_cvttph_epi16(__m128i A, __mmask8 B, __m128h C) {
1755   // CHECK-LABEL: test_mm_mask_cvttph_epi16
1756   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2w.128
1757   return _mm_mask_cvttph_epi16(A, B, C);
1758 }
1759 
test_mm_maskz_cvttph_epi16(__mmask8 A,__m128h B)1760 __m128i test_mm_maskz_cvttph_epi16(__mmask8 A, __m128h B) {
1761   // CHECK-LABEL: test_mm_maskz_cvttph_epi16
1762   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2w.128
1763   return _mm_maskz_cvttph_epi16(A, B);
1764 }
1765 
test_mm256_cvttph_epi16(__m256h A)1766 __m256i test_mm256_cvttph_epi16(__m256h A) {
1767   // CHECK-LABEL: test_mm256_cvttph_epi16
1768   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2w.256
1769   return _mm256_cvttph_epi16(A);
1770 }
1771 
test_mm256_mask_cvttph_epi16(__m256i A,__mmask16 B,__m256h C)1772 __m256i test_mm256_mask_cvttph_epi16(__m256i A, __mmask16 B, __m256h C) {
1773   // CHECK-LABEL: test_mm256_mask_cvttph_epi16
1774   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2w.256
1775   return _mm256_mask_cvttph_epi16(A, B, C);
1776 }
1777 
test_mm256_maskz_cvttph_epi16(__mmask16 A,__m256h B)1778 __m256i test_mm256_maskz_cvttph_epi16(__mmask16 A, __m256h B) {
1779   // CHECK-LABEL: test_mm256_maskz_cvttph_epi16
1780   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2w.256
1781   return _mm256_maskz_cvttph_epi16(A, B);
1782 }
1783 
test_mm_cvtepi16_ph(__m128i A)1784 __m128h test_mm_cvtepi16_ph(__m128i A) {
1785   // CHECK-LABEL: test_mm_cvtepi16_ph
1786   // CHECK: %{{.*}} = sitofp <8 x i16> %{{.*}} to <8 x half>
1787   return _mm_cvtepi16_ph(A);
1788 }
1789 
test_mm_mask_cvtepi16_ph(__m128h A,__mmask8 B,__m128i C)1790 __m128h test_mm_mask_cvtepi16_ph(__m128h A, __mmask8 B, __m128i C) {
1791   // CHECK-LABEL: test_mm_mask_cvtepi16_ph
1792   // CHECK: %{{.*}} = sitofp <8 x i16> %{{.*}} to <8 x half>
1793   return _mm_mask_cvtepi16_ph(A, B, C);
1794 }
1795 
test_mm_maskz_cvtepi16_ph(__mmask8 A,__m128i B)1796 __m128h test_mm_maskz_cvtepi16_ph(__mmask8 A, __m128i B) {
1797   // CHECK-LABEL: test_mm_maskz_cvtepi16_ph
1798   // CHECK: %{{.*}} = sitofp <8 x i16> %{{.*}} to <8 x half>
1799   return _mm_maskz_cvtepi16_ph(A, B);
1800 }
1801 
test_mm256_cvtepi16_ph(__m256i A)1802 __m256h test_mm256_cvtepi16_ph(__m256i A) {
1803   // CHECK-LABEL: test_mm256_cvtepi16_ph
1804   // CHECK: %{{.*}} = sitofp <16 x i16> %{{.*}} to <16 x half>
1805   return _mm256_cvtepi16_ph(A);
1806 }
1807 
test_mm256_mask_cvtepi16_ph(__m256h A,__mmask16 B,__m256i C)1808 __m256h test_mm256_mask_cvtepi16_ph(__m256h A, __mmask16 B, __m256i C) {
1809   // CHECK-LABEL: test_mm256_mask_cvtepi16_ph
1810   // CHECK: %{{.*}} = sitofp <16 x i16> %{{.*}} to <16 x half>
1811   return _mm256_mask_cvtepi16_ph(A, B, C);
1812 }
1813 
test_mm256_maskz_cvtepi16_ph(__mmask16 A,__m256i B)1814 __m256h test_mm256_maskz_cvtepi16_ph(__mmask16 A, __m256i B) {
1815   // CHECK-LABEL: test_mm256_maskz_cvtepi16_ph
1816   // CHECK: %{{.*}} = sitofp <16 x i16> %{{.*}} to <16 x half>
1817   return _mm256_maskz_cvtepi16_ph(A, B);
1818 }
1819 
test_mm_cvtph_epu16(__m128h A)1820 __m128i test_mm_cvtph_epu16(__m128h A) {
1821   // CHECK-LABEL: test_mm_cvtph_epu16
1822   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uw.128
1823   return _mm_cvtph_epu16(A);
1824 }
1825 
test_mm_mask_cvtph_epu16(__m128i A,__mmask8 B,__m128h C)1826 __m128i test_mm_mask_cvtph_epu16(__m128i A, __mmask8 B, __m128h C) {
1827   // CHECK-LABEL: test_mm_mask_cvtph_epu16
1828   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uw.128
1829   return _mm_mask_cvtph_epu16(A, B, C);
1830 }
1831 
test_mm_maskz_cvtph_epu16(__mmask8 A,__m128h B)1832 __m128i test_mm_maskz_cvtph_epu16(__mmask8 A, __m128h B) {
1833   // CHECK-LABEL: test_mm_maskz_cvtph_epu16
1834   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uw.128
1835   return _mm_maskz_cvtph_epu16(A, B);
1836 }
1837 
test_mm256_cvtph_epu16(__m256h A)1838 __m256i test_mm256_cvtph_epu16(__m256h A) {
1839   // CHECK-LABEL: test_mm256_cvtph_epu16
1840   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uw.256
1841   return _mm256_cvtph_epu16(A);
1842 }
1843 
test_mm256_mask_cvtph_epu16(__m256i A,__mmask16 B,__m256h C)1844 __m256i test_mm256_mask_cvtph_epu16(__m256i A, __mmask16 B, __m256h C) {
1845   // CHECK-LABEL: test_mm256_mask_cvtph_epu16
1846   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uw.256
1847   return _mm256_mask_cvtph_epu16(A, B, C);
1848 }
1849 
test_mm256_maskz_cvtph_epu16(__mmask16 A,__m256h B)1850 __m256i test_mm256_maskz_cvtph_epu16(__mmask16 A, __m256h B) {
1851   // CHECK-LABEL: test_mm256_maskz_cvtph_epu16
1852   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uw.256
1853   return _mm256_maskz_cvtph_epu16(A, B);
1854 }
1855 
test_mm_cvttph_epu16(__m128h A)1856 __m128i test_mm_cvttph_epu16(__m128h A) {
1857   // CHECK-LABEL: test_mm_cvttph_epu16
1858   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uw.128
1859   return _mm_cvttph_epu16(A);
1860 }
1861 
test_mm_mask_cvttph_epu16(__m128i A,__mmask8 B,__m128h C)1862 __m128i test_mm_mask_cvttph_epu16(__m128i A, __mmask8 B, __m128h C) {
1863   // CHECK-LABEL: test_mm_mask_cvttph_epu16
1864   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uw.128
1865   return _mm_mask_cvttph_epu16(A, B, C);
1866 }
1867 
test_mm_maskz_cvttph_epu16(__mmask8 A,__m128h B)1868 __m128i test_mm_maskz_cvttph_epu16(__mmask8 A, __m128h B) {
1869   // CHECK-LABEL: test_mm_maskz_cvttph_epu16
1870   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uw.128
1871   return _mm_maskz_cvttph_epu16(A, B);
1872 }
1873 
test_mm256_cvttph_epu16(__m256h A)1874 __m256i test_mm256_cvttph_epu16(__m256h A) {
1875   // CHECK-LABEL: test_mm256_cvttph_epu16
1876   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uw.256
1877   return _mm256_cvttph_epu16(A);
1878 }
1879 
test_mm256_mask_cvttph_epu16(__m256i A,__mmask16 B,__m256h C)1880 __m256i test_mm256_mask_cvttph_epu16(__m256i A, __mmask16 B, __m256h C) {
1881   // CHECK-LABEL: test_mm256_mask_cvttph_epu16
1882   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uw.256
1883   return _mm256_mask_cvttph_epu16(A, B, C);
1884 }
1885 
test_mm256_maskz_cvttph_epu16(__mmask16 A,__m256h B)1886 __m256i test_mm256_maskz_cvttph_epu16(__mmask16 A, __m256h B) {
1887   // CHECK-LABEL: test_mm256_maskz_cvttph_epu16
1888   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uw.256
1889   return _mm256_maskz_cvttph_epu16(A, B);
1890 }
1891 
test_mm_cvtepu16_ph(__m128i A)1892 __m128h test_mm_cvtepu16_ph(__m128i A) {
1893   // CHECK-LABEL: test_mm_cvtepu16_ph
1894   // CHECK: %{{.*}} = uitofp <8 x i16> %{{.*}} to <8 x half>
1895   return _mm_cvtepu16_ph(A);
1896 }
1897 
test_mm_mask_cvtepu16_ph(__m128h A,__mmask8 B,__m128i C)1898 __m128h test_mm_mask_cvtepu16_ph(__m128h A, __mmask8 B, __m128i C) {
1899   // CHECK-LABEL: test_mm_mask_cvtepu16_ph
1900   // CHECK: %{{.*}} = uitofp <8 x i16> %{{.*}} to <8 x half>
1901   return _mm_mask_cvtepu16_ph(A, B, C);
1902 }
1903 
test_mm_maskz_cvtepu16_ph(__mmask8 A,__m128i B)1904 __m128h test_mm_maskz_cvtepu16_ph(__mmask8 A, __m128i B) {
1905   // CHECK-LABEL: test_mm_maskz_cvtepu16_ph
1906   // CHECK: %{{.*}} = uitofp <8 x i16> %{{.*}} to <8 x half>
1907   return _mm_maskz_cvtepu16_ph(A, B);
1908 }
1909 
test_mm256_cvtepu16_ph(__m256i A)1910 __m256h test_mm256_cvtepu16_ph(__m256i A) {
1911   // CHECK-LABEL: test_mm256_cvtepu16_ph
1912   // CHECK: %{{.*}} = uitofp <16 x i16> %{{.*}} to <16 x half>
1913   return _mm256_cvtepu16_ph(A);
1914 }
1915 
test_mm256_mask_cvtepu16_ph(__m256h A,__mmask16 B,__m256i C)1916 __m256h test_mm256_mask_cvtepu16_ph(__m256h A, __mmask16 B, __m256i C) {
1917   // CHECK-LABEL: test_mm256_mask_cvtepu16_ph
1918   // CHECK: %{{.*}} = uitofp <16 x i16> %{{.*}} to <16 x half>
1919   return _mm256_mask_cvtepu16_ph(A, B, C);
1920 }
1921 
test_mm256_maskz_cvtepu16_ph(__mmask16 A,__m256i B)1922 __m256h test_mm256_maskz_cvtepu16_ph(__mmask16 A, __m256i B) {
1923   // CHECK-LABEL: test_mm256_maskz_cvtepu16_ph
1924   // CHECK: %{{.*}} = uitofp <16 x i16> %{{.*}} to <16 x half>
1925   return _mm256_maskz_cvtepu16_ph(A, B);
1926 }
1927 
test_mm_cvtph_epi32(__m128h A)1928 __m128i test_mm_cvtph_epi32(__m128h A) {
1929   // CHECK-LABEL: test_mm_cvtph_epi32
1930   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2dq.128
1931   return _mm_cvtph_epi32(A);
1932 }
1933 
test_mm_mask_cvtph_epi32(__m128i A,__mmask8 B,__m128h C)1934 __m128i test_mm_mask_cvtph_epi32(__m128i A, __mmask8 B, __m128h C) {
1935   // CHECK-LABEL: test_mm_mask_cvtph_epi32
1936   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2dq.128
1937   return _mm_mask_cvtph_epi32(A, B, C);
1938 }
1939 
test_mm_maskz_cvtph_epi32(__mmask8 A,__m128h B)1940 __m128i test_mm_maskz_cvtph_epi32(__mmask8 A, __m128h B) {
1941   // CHECK-LABEL: test_mm_maskz_cvtph_epi32
1942   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2dq.128
1943   return _mm_maskz_cvtph_epi32(A, B);
1944 }
1945 
test_mm256_cvtph_epi32(__m128h A)1946 __m256i test_mm256_cvtph_epi32(__m128h A) {
1947   // CHECK-LABEL: test_mm256_cvtph_epi32
1948   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2dq.256
1949   return _mm256_cvtph_epi32(A);
1950 }
1951 
test_mm256_mask_cvtph_epi32(__m256i A,__mmask8 B,__m128h C)1952 __m256i test_mm256_mask_cvtph_epi32(__m256i A, __mmask8 B, __m128h C) {
1953   // CHECK-LABEL: test_mm256_mask_cvtph_epi32
1954   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2dq.256
1955   return _mm256_mask_cvtph_epi32(A, B, C);
1956 }
1957 
test_mm256_maskz_cvtph_epi32(__mmask8 A,__m128h B)1958 __m256i test_mm256_maskz_cvtph_epi32(__mmask8 A, __m128h B) {
1959   // CHECK-LABEL: test_mm256_maskz_cvtph_epi32
1960   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2dq.256
1961   return _mm256_maskz_cvtph_epi32(A, B);
1962 }
1963 
test_mm_cvtph_epu32(__m128h A)1964 __m128i test_mm_cvtph_epu32(__m128h A) {
1965   // CHECK-LABEL: test_mm_cvtph_epu32
1966   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2udq.128
1967   return _mm_cvtph_epu32(A);
1968 }
1969 
test_mm_mask_cvtph_epu32(__m128i A,__mmask8 B,__m128h C)1970 __m128i test_mm_mask_cvtph_epu32(__m128i A, __mmask8 B, __m128h C) {
1971   // CHECK-LABEL: test_mm_mask_cvtph_epu32
1972   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2udq.128
1973   return _mm_mask_cvtph_epu32(A, B, C);
1974 }
1975 
test_mm_maskz_cvtph_epu32(__mmask8 A,__m128h B)1976 __m128i test_mm_maskz_cvtph_epu32(__mmask8 A, __m128h B) {
1977   // CHECK-LABEL: test_mm_maskz_cvtph_epu32
1978   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2udq.128
1979   return _mm_maskz_cvtph_epu32(A, B);
1980 }
1981 
test_mm256_cvtph_epu32(__m128h A)1982 __m256i test_mm256_cvtph_epu32(__m128h A) {
1983   // CHECK-LABEL: test_mm256_cvtph_epu32
1984   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2udq.256
1985   return _mm256_cvtph_epu32(A);
1986 }
1987 
test_mm256_mask_cvtph_epu32(__m256i A,__mmask8 B,__m128h C)1988 __m256i test_mm256_mask_cvtph_epu32(__m256i A, __mmask8 B, __m128h C) {
1989   // CHECK-LABEL: test_mm256_mask_cvtph_epu32
1990   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2udq.256
1991   return _mm256_mask_cvtph_epu32(A, B, C);
1992 }
1993 
test_mm256_maskz_cvtph_epu32(__mmask8 A,__m128h B)1994 __m256i test_mm256_maskz_cvtph_epu32(__mmask8 A, __m128h B) {
1995   // CHECK-LABEL: test_mm256_maskz_cvtph_epu32
1996   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2udq.256
1997   return _mm256_maskz_cvtph_epu32(A, B);
1998 }
1999 
test_mm_cvtepi32_ph(__m128i A)2000 __m128h test_mm_cvtepi32_ph(__m128i A) {
2001   // CHECK-LABEL: test_mm_cvtepi32_ph
2002   // CHECK: @llvm.x86.avx512fp16.mask.vcvtdq2ph.128
2003   return _mm_cvtepi32_ph(A);
2004 }
2005 
test_mm_mask_cvtepi32_ph(__m128h A,__mmask8 B,__m128i C)2006 __m128h test_mm_mask_cvtepi32_ph(__m128h A, __mmask8 B, __m128i C) {
2007   // CHECK-LABEL: test_mm_mask_cvtepi32_ph
2008   // CHECK: @llvm.x86.avx512fp16.mask.vcvtdq2ph.128
2009   return _mm_mask_cvtepi32_ph(A, B, C);
2010 }
2011 
test_mm_maskz_cvtepi32_ph(__mmask8 A,__m128i B)2012 __m128h test_mm_maskz_cvtepi32_ph(__mmask8 A, __m128i B) {
2013   // CHECK-LABEL: test_mm_maskz_cvtepi32_ph
2014   // CHECK: @llvm.x86.avx512fp16.mask.vcvtdq2ph.128
2015   return _mm_maskz_cvtepi32_ph(A, B);
2016 }
2017 
test_mm256_cvtepi32_ph(__m256i A)2018 __m128h test_mm256_cvtepi32_ph(__m256i A) {
2019   // CHECK-LABEL: test_mm256_cvtepi32_ph
2020   // CHECK: %{{.*}} = sitofp <8 x i32> %{{.*}} to <8 x half>
2021   return _mm256_cvtepi32_ph(A);
2022 }
2023 
test_mm256_mask_cvtepi32_ph(__m128h A,__mmask8 B,__m256i C)2024 __m128h test_mm256_mask_cvtepi32_ph(__m128h A, __mmask8 B, __m256i C) {
2025   // CHECK-LABEL: test_mm256_mask_cvtepi32_ph
2026   // CHECK: %{{.*}} = sitofp <8 x i32> %{{.*}} to <8 x half>
2027   return _mm256_mask_cvtepi32_ph(A, B, C);
2028 }
2029 
test_mm256_maskz_cvtepi32_ph(__mmask8 A,__m256i B)2030 __m128h test_mm256_maskz_cvtepi32_ph(__mmask8 A, __m256i B) {
2031   // CHECK-LABEL: test_mm256_maskz_cvtepi32_ph
2032   // CHECK: %{{.*}} = sitofp <8 x i32> %{{.*}} to <8 x half>
2033   return _mm256_maskz_cvtepi32_ph(A, B);
2034 }
2035 
test_mm_cvtepu32_ph(__m128i A)2036 __m128h test_mm_cvtepu32_ph(__m128i A) {
2037   // CHECK-LABEL: test_mm_cvtepu32_ph
2038   // CHECK: @llvm.x86.avx512fp16.mask.vcvtudq2ph.128
2039   return _mm_cvtepu32_ph(A);
2040 }
2041 
test_mm_mask_cvtepu32_ph(__m128h A,__mmask8 B,__m128i C)2042 __m128h test_mm_mask_cvtepu32_ph(__m128h A, __mmask8 B, __m128i C) {
2043   // CHECK-LABEL: test_mm_mask_cvtepu32_ph
2044   // CHECK: @llvm.x86.avx512fp16.mask.vcvtudq2ph.128
2045   return _mm_mask_cvtepu32_ph(A, B, C);
2046 }
2047 
test_mm_maskz_cvtepu32_ph(__mmask8 A,__m128i B)2048 __m128h test_mm_maskz_cvtepu32_ph(__mmask8 A, __m128i B) {
2049   // CHECK-LABEL: test_mm_maskz_cvtepu32_ph
2050   // CHECK: @llvm.x86.avx512fp16.mask.vcvtudq2ph.128
2051   return _mm_maskz_cvtepu32_ph(A, B);
2052 }
2053 
test_mm256_cvtepu32_ph(__m256i A)2054 __m128h test_mm256_cvtepu32_ph(__m256i A) {
2055   // CHECK-LABEL: test_mm256_cvtepu32_ph
2056   // CHECK: %{{.*}} = uitofp <8 x i32> %{{.*}} to <8 x half>
2057   return _mm256_cvtepu32_ph(A);
2058 }
2059 
test_mm256_mask_cvtepu32_ph(__m128h A,__mmask8 B,__m256i C)2060 __m128h test_mm256_mask_cvtepu32_ph(__m128h A, __mmask8 B, __m256i C) {
2061   // CHECK-LABEL: test_mm256_mask_cvtepu32_ph
2062   // CHECK: %{{.*}} = uitofp <8 x i32> %{{.*}} to <8 x half>
2063   return _mm256_mask_cvtepu32_ph(A, B, C);
2064 }
2065 
test_mm256_maskz_cvtepu32_ph(__mmask8 A,__m256i B)2066 __m128h test_mm256_maskz_cvtepu32_ph(__mmask8 A, __m256i B) {
2067   // CHECK-LABEL: test_mm256_maskz_cvtepu32_ph
2068   // CHECK: %{{.*}} = uitofp <8 x i32> %{{.*}} to <8 x half>
2069   return _mm256_maskz_cvtepu32_ph(A, B);
2070 }
2071 
test_mm_cvttph_epi32(__m128h A)2072 __m128i test_mm_cvttph_epi32(__m128h A) {
2073   // CHECK-LABEL: test_mm_cvttph_epi32
2074   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2dq.128
2075   return _mm_cvttph_epi32(A);
2076 }
2077 
test_mm_mask_cvttph_epi32(__m128i A,__mmask8 B,__m128h C)2078 __m128i test_mm_mask_cvttph_epi32(__m128i A, __mmask8 B, __m128h C) {
2079   // CHECK-LABEL: test_mm_mask_cvttph_epi32
2080   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2dq.128
2081   return _mm_mask_cvttph_epi32(A, B, C);
2082 }
2083 
test_mm_maskz_cvttph_epi32(__mmask8 A,__m128h B)2084 __m128i test_mm_maskz_cvttph_epi32(__mmask8 A, __m128h B) {
2085   // CHECK-LABEL: test_mm_maskz_cvttph_epi32
2086   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2dq.128
2087   return _mm_maskz_cvttph_epi32(A, B);
2088 }
2089 
test_mm256_cvttph_epi32(__m128h A)2090 __m256i test_mm256_cvttph_epi32(__m128h A) {
2091   // CHECK-LABEL: test_mm256_cvttph_epi32
2092   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2dq.256
2093   return _mm256_cvttph_epi32(A);
2094 }
2095 
test_mm256_mask_cvttph_epi32(__m256i A,__mmask8 B,__m128h C)2096 __m256i test_mm256_mask_cvttph_epi32(__m256i A, __mmask8 B, __m128h C) {
2097   // CHECK-LABEL: test_mm256_mask_cvttph_epi32
2098   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2dq.256
2099   return _mm256_mask_cvttph_epi32(A, B, C);
2100 }
2101 
test_mm256_maskz_cvttph_epi32(__mmask8 A,__m128h B)2102 __m256i test_mm256_maskz_cvttph_epi32(__mmask8 A, __m128h B) {
2103   // CHECK-LABEL: test_mm256_maskz_cvttph_epi32
2104   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2dq.256
2105   return _mm256_maskz_cvttph_epi32(A, B);
2106 }
2107 
test_mm_cvttph_epu32(__m128h A)2108 __m128i test_mm_cvttph_epu32(__m128h A) {
2109   // CHECK-LABEL: test_mm_cvttph_epu32
2110   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2udq.128
2111   return _mm_cvttph_epu32(A);
2112 }
2113 
test_mm_mask_cvttph_epu32(__m128i A,__mmask8 B,__m128h C)2114 __m128i test_mm_mask_cvttph_epu32(__m128i A, __mmask8 B, __m128h C) {
2115   // CHECK-LABEL: test_mm_mask_cvttph_epu32
2116   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2udq.128
2117   return _mm_mask_cvttph_epu32(A, B, C);
2118 }
2119 
test_mm_maskz_cvttph_epu32(__mmask8 A,__m128h B)2120 __m128i test_mm_maskz_cvttph_epu32(__mmask8 A, __m128h B) {
2121   // CHECK-LABEL: test_mm_maskz_cvttph_epu32
2122   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2udq.128
2123   return _mm_maskz_cvttph_epu32(A, B);
2124 }
2125 
test_mm256_cvttph_epu32(__m128h A)2126 __m256i test_mm256_cvttph_epu32(__m128h A) {
2127   // CHECK-LABEL: test_mm256_cvttph_epu32
2128   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2udq.256
2129   return _mm256_cvttph_epu32(A);
2130 }
2131 
test_mm256_mask_cvttph_epu32(__m256i A,__mmask8 B,__m128h C)2132 __m256i test_mm256_mask_cvttph_epu32(__m256i A, __mmask8 B, __m128h C) {
2133   // CHECK-LABEL: test_mm256_mask_cvttph_epu32
2134   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2udq.256
2135   return _mm256_mask_cvttph_epu32(A, B, C);
2136 }
2137 
test_mm256_maskz_cvttph_epu32(__mmask8 A,__m128h B)2138 __m256i test_mm256_maskz_cvttph_epu32(__mmask8 A, __m128h B) {
2139   // CHECK-LABEL: test_mm256_maskz_cvttph_epu32
2140   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2udq.256
2141   return _mm256_maskz_cvttph_epu32(A, B);
2142 }
2143 
test_mm_cvtepi64_ph(__m128i A)2144 __m128h test_mm_cvtepi64_ph(__m128i A) {
2145   // CHECK-LABEL: test_mm_cvtepi64_ph
2146   // CHECK: @llvm.x86.avx512fp16.mask.vcvtqq2ph.128
2147   return _mm_cvtepi64_ph(A);
2148 }
2149 
test_mm_mask_cvtepi64_ph(__m128h A,__mmask8 B,__m128i C)2150 __m128h test_mm_mask_cvtepi64_ph(__m128h A, __mmask8 B, __m128i C) {
2151   // CHECK-LABEL: test_mm_mask_cvtepi64_ph
2152   // CHECK: @llvm.x86.avx512fp16.mask.vcvtqq2ph.128
2153   return _mm_mask_cvtepi64_ph(A, B, C);
2154 }
2155 
test_mm_maskz_cvtepi64_ph(__mmask8 A,__m128i B)2156 __m128h test_mm_maskz_cvtepi64_ph(__mmask8 A, __m128i B) {
2157   // CHECK-LABEL: test_mm_maskz_cvtepi64_ph
2158   // CHECK: @llvm.x86.avx512fp16.mask.vcvtqq2ph.128
2159   return _mm_maskz_cvtepi64_ph(A, B);
2160 }
2161 
test_mm256_cvtepi64_ph(__m256i A)2162 __m128h test_mm256_cvtepi64_ph(__m256i A) {
2163   // CHECK-LABEL: test_mm256_cvtepi64_ph
2164   // CHECK: @llvm.x86.avx512fp16.mask.vcvtqq2ph.256
2165   return _mm256_cvtepi64_ph(A);
2166 }
2167 
test_mm256_mask_cvtepi64_ph(__m128h A,__mmask8 B,__m256i C)2168 __m128h test_mm256_mask_cvtepi64_ph(__m128h A, __mmask8 B, __m256i C) {
2169   // CHECK-LABEL: test_mm256_mask_cvtepi64_ph
2170   // CHECK: @llvm.x86.avx512fp16.mask.vcvtqq2ph.256
2171   return _mm256_mask_cvtepi64_ph(A, B, C);
2172 }
2173 
test_mm256_maskz_cvtepi64_ph(__mmask8 A,__m256i B)2174 __m128h test_mm256_maskz_cvtepi64_ph(__mmask8 A, __m256i B) {
2175   // CHECK-LABEL: test_mm256_maskz_cvtepi64_ph
2176   // CHECK: @llvm.x86.avx512fp16.mask.vcvtqq2ph.256
2177   return _mm256_maskz_cvtepi64_ph(A, B);
2178 }
2179 
test_mm_cvtph_epi64(__m128h A)2180 __m128i test_mm_cvtph_epi64(__m128h A) {
2181   // CHECK-LABEL: test_mm_cvtph_epi64
2182   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2qq.128
2183   return _mm_cvtph_epi64(A);
2184 }
2185 
test_mm_mask_cvtph_epi64(__m128i A,__mmask8 B,__m128h C)2186 __m128i test_mm_mask_cvtph_epi64(__m128i A, __mmask8 B, __m128h C) {
2187   // CHECK-LABEL: test_mm_mask_cvtph_epi64
2188   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2qq.128
2189   return _mm_mask_cvtph_epi64(A, B, C);
2190 }
2191 
test_mm_maskz_cvtph_epi64(__mmask8 A,__m128h B)2192 __m128i test_mm_maskz_cvtph_epi64(__mmask8 A, __m128h B) {
2193   // CHECK-LABEL: test_mm_maskz_cvtph_epi64
2194   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2qq.128
2195   return _mm_maskz_cvtph_epi64(A, B);
2196 }
2197 
test_mm256_cvtph_epi64(__m128h A)2198 __m256i test_mm256_cvtph_epi64(__m128h A) {
2199   // CHECK-LABEL: test_mm256_cvtph_epi64
2200   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2qq.256
2201   return _mm256_cvtph_epi64(A);
2202 }
2203 
test_mm256_mask_cvtph_epi64(__m256i A,__mmask8 B,__m128h C)2204 __m256i test_mm256_mask_cvtph_epi64(__m256i A, __mmask8 B, __m128h C) {
2205   // CHECK-LABEL: test_mm256_mask_cvtph_epi64
2206   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2qq.256
2207   return _mm256_mask_cvtph_epi64(A, B, C);
2208 }
2209 
test_mm256_maskz_cvtph_epi64(__mmask8 A,__m128h B)2210 __m256i test_mm256_maskz_cvtph_epi64(__mmask8 A, __m128h B) {
2211   // CHECK-LABEL: test_mm256_maskz_cvtph_epi64
2212   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2qq.256
2213   return _mm256_maskz_cvtph_epi64(A, B);
2214 }
2215 
test_mm_cvtepu64_ph(__m128i A)2216 __m128h test_mm_cvtepu64_ph(__m128i A) {
2217   // CHECK-LABEL: test_mm_cvtepu64_ph
2218   // CHECK: @llvm.x86.avx512fp16.mask.vcvtuqq2ph.128
2219   return _mm_cvtepu64_ph(A);
2220 }
2221 
test_mm_mask_cvtepu64_ph(__m128h A,__mmask8 B,__m128i C)2222 __m128h test_mm_mask_cvtepu64_ph(__m128h A, __mmask8 B, __m128i C) {
2223   // CHECK-LABEL: test_mm_mask_cvtepu64_ph
2224   // CHECK: @llvm.x86.avx512fp16.mask.vcvtuqq2ph.128
2225   return _mm_mask_cvtepu64_ph(A, B, C);
2226 }
2227 
test_mm_maskz_cvtepu64_ph(__mmask8 A,__m128i B)2228 __m128h test_mm_maskz_cvtepu64_ph(__mmask8 A, __m128i B) {
2229   // CHECK-LABEL: test_mm_maskz_cvtepu64_ph
2230   // CHECK: @llvm.x86.avx512fp16.mask.vcvtuqq2ph.128
2231   return _mm_maskz_cvtepu64_ph(A, B);
2232 }
2233 
test_mm256_cvtepu64_ph(__m256i A)2234 __m128h test_mm256_cvtepu64_ph(__m256i A) {
2235   // CHECK-LABEL: test_mm256_cvtepu64_ph
2236   // CHECK: @llvm.x86.avx512fp16.mask.vcvtuqq2ph.256
2237   return _mm256_cvtepu64_ph(A);
2238 }
2239 
test_mm256_mask_cvtepu64_ph(__m128h A,__mmask8 B,__m256i C)2240 __m128h test_mm256_mask_cvtepu64_ph(__m128h A, __mmask8 B, __m256i C) {
2241   // CHECK-LABEL: test_mm256_mask_cvtepu64_ph
2242   // CHECK: @llvm.x86.avx512fp16.mask.vcvtuqq2ph.256
2243   return _mm256_mask_cvtepu64_ph(A, B, C);
2244 }
2245 
test_mm256_maskz_cvtepu64_ph(__mmask8 A,__m256i B)2246 __m128h test_mm256_maskz_cvtepu64_ph(__mmask8 A, __m256i B) {
2247   // CHECK-LABEL: test_mm256_maskz_cvtepu64_ph
2248   // CHECK: @llvm.x86.avx512fp16.mask.vcvtuqq2ph.256
2249   return _mm256_maskz_cvtepu64_ph(A, B);
2250 }
2251 
test_mm_cvtph_epu64(__m128h A)2252 __m128i test_mm_cvtph_epu64(__m128h A) {
2253   // CHECK-LABEL: test_mm_cvtph_epu64
2254   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uqq.128
2255   return _mm_cvtph_epu64(A);
2256 }
2257 
test_mm_mask_cvtph_epu64(__m128i A,__mmask8 B,__m128h C)2258 __m128i test_mm_mask_cvtph_epu64(__m128i A, __mmask8 B, __m128h C) {
2259   // CHECK-LABEL: test_mm_mask_cvtph_epu64
2260   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uqq.128
2261   return _mm_mask_cvtph_epu64(A, B, C);
2262 }
2263 
test_mm_maskz_cvtph_epu64(__mmask8 A,__m128h B)2264 __m128i test_mm_maskz_cvtph_epu64(__mmask8 A, __m128h B) {
2265   // CHECK-LABEL: test_mm_maskz_cvtph_epu64
2266   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uqq.128
2267   return _mm_maskz_cvtph_epu64(A, B);
2268 }
2269 
test_mm256_cvtph_epu64(__m128h A)2270 __m256i test_mm256_cvtph_epu64(__m128h A) {
2271   // CHECK-LABEL: test_mm256_cvtph_epu64
2272   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uqq.256
2273   return _mm256_cvtph_epu64(A);
2274 }
2275 
test_mm256_mask_cvtph_epu64(__m256i A,__mmask8 B,__m128h C)2276 __m256i test_mm256_mask_cvtph_epu64(__m256i A, __mmask8 B, __m128h C) {
2277   // CHECK-LABEL: test_mm256_mask_cvtph_epu64
2278   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uqq.256
2279   return _mm256_mask_cvtph_epu64(A, B, C);
2280 }
2281 
test_mm256_maskz_cvtph_epu64(__mmask8 A,__m128h B)2282 __m256i test_mm256_maskz_cvtph_epu64(__mmask8 A, __m128h B) {
2283   // CHECK-LABEL: test_mm256_maskz_cvtph_epu64
2284   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2uqq.256
2285   return _mm256_maskz_cvtph_epu64(A, B);
2286 }
2287 
test_mm_cvttph_epi64(__m128h A)2288 __m128i test_mm_cvttph_epi64(__m128h A) {
2289   // CHECK-LABEL: test_mm_cvttph_epi64
2290   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2qq.128
2291   return _mm_cvttph_epi64(A);
2292 }
2293 
test_mm_mask_cvttph_epi64(__m128i A,__mmask8 B,__m128h C)2294 __m128i test_mm_mask_cvttph_epi64(__m128i A, __mmask8 B, __m128h C) {
2295   // CHECK-LABEL: test_mm_mask_cvttph_epi64
2296   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2qq.128
2297   return _mm_mask_cvttph_epi64(A, B, C);
2298 }
2299 
test_mm_maskz_cvttph_epi64(__mmask8 A,__m128h B)2300 __m128i test_mm_maskz_cvttph_epi64(__mmask8 A, __m128h B) {
2301   // CHECK-LABEL: test_mm_maskz_cvttph_epi64
2302   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2qq.128
2303   return _mm_maskz_cvttph_epi64(A, B);
2304 }
2305 
test_mm256_cvttph_epi64(__m128h A)2306 __m256i test_mm256_cvttph_epi64(__m128h A) {
2307   // CHECK-LABEL: test_mm256_cvttph_epi64
2308   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2qq.256
2309   return _mm256_cvttph_epi64(A);
2310 }
2311 
test_mm256_mask_cvttph_epi64(__m256i A,__mmask8 B,__m128h C)2312 __m256i test_mm256_mask_cvttph_epi64(__m256i A, __mmask8 B, __m128h C) {
2313   // CHECK-LABEL: test_mm256_mask_cvttph_epi64
2314   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2qq.256
2315   return _mm256_mask_cvttph_epi64(A, B, C);
2316 }
2317 
test_mm256_maskz_cvttph_epi64(__mmask8 A,__m128h B)2318 __m256i test_mm256_maskz_cvttph_epi64(__mmask8 A, __m128h B) {
2319   // CHECK-LABEL: test_mm256_maskz_cvttph_epi64
2320   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2qq.256
2321   return _mm256_maskz_cvttph_epi64(A, B);
2322 }
2323 
test_mm_cvttph_epu64(__m128h A)2324 __m128i test_mm_cvttph_epu64(__m128h A) {
2325   // CHECK-LABEL: test_mm_cvttph_epu64
2326   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uqq.128
2327   return _mm_cvttph_epu64(A);
2328 }
2329 
test_mm_mask_cvttph_epu64(__m128i A,__mmask8 B,__m128h C)2330 __m128i test_mm_mask_cvttph_epu64(__m128i A, __mmask8 B, __m128h C) {
2331   // CHECK-LABEL: test_mm_mask_cvttph_epu64
2332   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uqq.128
2333   return _mm_mask_cvttph_epu64(A, B, C);
2334 }
2335 
test_mm_maskz_cvttph_epu64(__mmask8 A,__m128h B)2336 __m128i test_mm_maskz_cvttph_epu64(__mmask8 A, __m128h B) {
2337   // CHECK-LABEL: test_mm_maskz_cvttph_epu64
2338   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uqq.128
2339   return _mm_maskz_cvttph_epu64(A, B);
2340 }
2341 
test_mm256_cvttph_epu64(__m128h A)2342 __m256i test_mm256_cvttph_epu64(__m128h A) {
2343   // CHECK-LABEL: test_mm256_cvttph_epu64
2344   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uqq.256
2345   return _mm256_cvttph_epu64(A);
2346 }
2347 
test_mm256_mask_cvttph_epu64(__m256i A,__mmask8 B,__m128h C)2348 __m256i test_mm256_mask_cvttph_epu64(__m256i A, __mmask8 B, __m128h C) {
2349   // CHECK-LABEL: test_mm256_mask_cvttph_epu64
2350   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uqq.256
2351   return _mm256_mask_cvttph_epu64(A, B, C);
2352 }
2353 
test_mm256_maskz_cvttph_epu64(__mmask8 A,__m128h B)2354 __m256i test_mm256_maskz_cvttph_epu64(__mmask8 A, __m128h B) {
2355   // CHECK-LABEL: test_mm256_maskz_cvttph_epu64
2356   // CHECK: @llvm.x86.avx512fp16.mask.vcvttph2uqq.256
2357   return _mm256_maskz_cvttph_epu64(A, B);
2358 }
2359 
test_mm_cvtxph_ps(__m128h A)2360 __m128 test_mm_cvtxph_ps(__m128h A) {
2361   // CHECK-LABEL: test_mm_cvtxph_ps
2362   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2psx.128
2363   return _mm_cvtxph_ps(A);
2364 }
2365 
test_mm_mask_cvtxph_ps(__m128 A,__mmask8 B,__m128h C)2366 __m128 test_mm_mask_cvtxph_ps(__m128 A, __mmask8 B, __m128h C) {
2367   // CHECK-LABEL: test_mm_mask_cvtxph_ps
2368   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2psx.128
2369   return _mm_mask_cvtxph_ps(A, B, C);
2370 }
2371 
test_mm_maskz_cvtxph_ps(__mmask8 A,__m128h B)2372 __m128 test_mm_maskz_cvtxph_ps(__mmask8 A, __m128h B) {
2373   // CHECK-LABEL: test_mm_maskz_cvtxph_ps
2374   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2psx.128
2375   return _mm_maskz_cvtxph_ps(A, B);
2376 }
2377 
test_mm256_cvtxph_ps(__m128h A)2378 __m256 test_mm256_cvtxph_ps(__m128h A) {
2379   // CHECK-LABEL: test_mm256_cvtxph_ps
2380   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2psx.256
2381   return _mm256_cvtxph_ps(A);
2382 }
2383 
test_mm256_mask_cvtxph_ps(__m256 A,__mmask8 B,__m128h C)2384 __m256 test_mm256_mask_cvtxph_ps(__m256 A, __mmask8 B, __m128h C) {
2385   // CHECK-LABEL: test_mm256_mask_cvtxph_ps
2386   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2psx.256
2387   return _mm256_mask_cvtxph_ps(A, B, C);
2388 }
2389 
test_mm256_maskz_cvtxph_ps(__mmask8 A,__m128h B)2390 __m256 test_mm256_maskz_cvtxph_ps(__mmask8 A, __m128h B) {
2391   // CHECK-LABEL: test_mm256_maskz_cvtxph_ps
2392   // CHECK: @llvm.x86.avx512fp16.mask.vcvtph2psx.256
2393   return _mm256_maskz_cvtxph_ps(A, B);
2394 }
2395 
test_mm_cvtxps_ph(__m128 A)2396 __m128h test_mm_cvtxps_ph(__m128 A) {
2397   // CHECK-LABEL: test_mm_cvtxps_ph
2398   // CHECK: @llvm.x86.avx512fp16.mask.vcvtps2phx.128
2399   return _mm_cvtxps_ph(A);
2400 }
2401 
test_mm_mask_cvtxps_ph(__m128h A,__mmask8 B,__m128 C)2402 __m128h test_mm_mask_cvtxps_ph(__m128h A, __mmask8 B, __m128 C) {
2403   // CHECK-LABEL: test_mm_mask_cvtxps_ph
2404   // CHECK: @llvm.x86.avx512fp16.mask.vcvtps2phx.128
2405   return _mm_mask_cvtxps_ph(A, B, C);
2406 }
2407 
test_mm_maskz_cvtxps_ph(__mmask8 A,__m128 B)2408 __m128h test_mm_maskz_cvtxps_ph(__mmask8 A, __m128 B) {
2409   // CHECK-LABEL: test_mm_maskz_cvtxps_ph
2410   // CHECK: @llvm.x86.avx512fp16.mask.vcvtps2phx.128
2411   return _mm_maskz_cvtxps_ph(A, B);
2412 }
2413 
test_mm256_cvtxps_ph(__m256 A)2414 __m128h test_mm256_cvtxps_ph(__m256 A) {
2415   // CHECK-LABEL: test_mm256_cvtxps_ph
2416   // CHECK: @llvm.x86.avx512fp16.mask.vcvtps2phx.256
2417   return _mm256_cvtxps_ph(A);
2418 }
2419 
test_mm256_mask_cvtxps_ph(__m128h A,__mmask8 B,__m256 C)2420 __m128h test_mm256_mask_cvtxps_ph(__m128h A, __mmask8 B, __m256 C) {
2421   // CHECK-LABEL: test_mm256_mask_cvtxps_ph
2422   // CHECK: @llvm.x86.avx512fp16.mask.vcvtps2phx.256
2423   return _mm256_mask_cvtxps_ph(A, B, C);
2424 }
2425 
test_mm256_maskz_cvtxps_ph(__mmask8 A,__m256 B)2426 __m128h test_mm256_maskz_cvtxps_ph(__mmask8 A, __m256 B) {
2427   // CHECK-LABEL: test_mm256_maskz_cvtxps_ph
2428   // CHECK: @llvm.x86.avx512fp16.mask.vcvtps2phx.256
2429   return _mm256_maskz_cvtxps_ph(A, B);
2430 }
2431 
test_mm_fmadd_ph(__m128h __A,__m128h __B,__m128h __C)2432 __m128h test_mm_fmadd_ph(__m128h __A, __m128h __B, __m128h __C) {
2433   // CHECK-LABEL: @test_mm_fmadd_ph
2434   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2435   return _mm_fmadd_ph(__A, __B, __C);
2436 }
2437 
test_mm_mask_fmadd_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2438 __m128h test_mm_mask_fmadd_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
2439   // CHECK-LABEL: @test_mm_mask_fmadd_ph
2440   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2441   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2442   return _mm_mask_fmadd_ph(__A, __U, __B, __C);
2443 }
2444 
test_mm_fmsub_ph(__m128h __A,__m128h __B,__m128h __C)2445 __m128h test_mm_fmsub_ph(__m128h __A, __m128h __B, __m128h __C) {
2446   // CHECK-LABEL: @test_mm_fmsub_ph
2447   // CHECK: fneg
2448   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2449   return _mm_fmsub_ph(__A, __B, __C);
2450 }
2451 
test_mm_mask_fmsub_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2452 __m128h test_mm_mask_fmsub_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
2453   // CHECK-LABEL: @test_mm_mask_fmsub_ph
2454   // CHECK: fneg
2455   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2456   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2457   return _mm_mask_fmsub_ph(__A, __U, __B, __C);
2458 }
2459 
test_mm_mask3_fmadd_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2460 __m128h test_mm_mask3_fmadd_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
2461   // CHECK-LABEL: @test_mm_mask3_fmadd_ph
2462   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2463   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2464   return _mm_mask3_fmadd_ph(__A, __B, __C, __U);
2465 }
2466 
test_mm_mask3_fnmadd_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2467 __m128h test_mm_mask3_fnmadd_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
2468   // CHECK-LABEL: @test_mm_mask3_fnmadd_ph
2469   // CHECK: fneg
2470   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2471   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2472   return _mm_mask3_fnmadd_ph(__A, __B, __C, __U);
2473 }
2474 
test_mm_maskz_fmadd_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2475 __m128h test_mm_maskz_fmadd_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
2476   // CHECK-LABEL: @test_mm_maskz_fmadd_ph
2477   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2478   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2479   return _mm_maskz_fmadd_ph(__U, __A, __B, __C);
2480 }
2481 
test_mm_maskz_fmsub_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2482 __m128h test_mm_maskz_fmsub_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
2483   // CHECK-LABEL: @test_mm_maskz_fmsub_ph
2484   // CHECK: fneg
2485   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2486   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2487   return _mm_maskz_fmsub_ph(__U, __A, __B, __C);
2488 }
2489 
test_mm_maskz_fnmadd_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2490 __m128h test_mm_maskz_fnmadd_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
2491   // CHECK-LABEL: @test_mm_maskz_fnmadd_ph
2492   // CHECK: fneg
2493   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2494   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2495   return _mm_maskz_fnmadd_ph(__U, __A, __B, __C);
2496 }
2497 
test_mm_maskz_fnmsub_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2498 __m128h test_mm_maskz_fnmsub_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
2499   // CHECK-LABEL: @test_mm_maskz_fnmsub_ph
2500   // CHECK: fneg
2501   // CHECK: fneg
2502   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2503   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2504   return _mm_maskz_fnmsub_ph(__U, __A, __B, __C);
2505 }
2506 
test_mm256_fmadd_ph(__m256h __A,__m256h __B,__m256h __C)2507 __m256h test_mm256_fmadd_ph(__m256h __A, __m256h __B, __m256h __C) {
2508   // CHECK-LABEL: @test_mm256_fmadd_ph
2509   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2510   return _mm256_fmadd_ph(__A, __B, __C);
2511 }
2512 
test_mm256_mask_fmadd_ph(__m256h __A,__mmask8 __U,__m256h __B,__m256h __C)2513 __m256h test_mm256_mask_fmadd_ph(__m256h __A, __mmask8 __U, __m256h __B, __m256h __C) {
2514   // CHECK-LABEL: @test_mm256_mask_fmadd_ph
2515   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2516   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2517   return _mm256_mask_fmadd_ph(__A, __U, __B, __C);
2518 }
2519 
test_mm256_fmsub_ph(__m256h __A,__m256h __B,__m256h __C)2520 __m256h test_mm256_fmsub_ph(__m256h __A, __m256h __B, __m256h __C) {
2521   // CHECK-LABEL: @test_mm256_fmsub_ph
2522   // CHECK: fneg
2523   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2524   return _mm256_fmsub_ph(__A, __B, __C);
2525 }
2526 
test_mm256_mask_fmsub_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2527 __m256h test_mm256_mask_fmsub_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
2528   // CHECK-LABEL: @test_mm256_mask_fmsub_ph
2529   // CHECK: fneg
2530   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2531   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2532   return _mm256_mask_fmsub_ph(__A, __U, __B, __C);
2533 }
2534 
test_mm256_mask3_fmadd_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2535 __m256h test_mm256_mask3_fmadd_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
2536   // CHECK-LABEL: @test_mm256_mask3_fmadd_ph
2537   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2538   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2539   return _mm256_mask3_fmadd_ph(__A, __B, __C, __U);
2540 }
2541 
test_mm256_mask3_fnmadd_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2542 __m256h test_mm256_mask3_fnmadd_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
2543   // CHECK-LABEL: @test_mm256_mask3_fnmadd_ph
2544   // CHECK: fneg
2545   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2546   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2547   return _mm256_mask3_fnmadd_ph(__A, __B, __C, __U);
2548 }
2549 
test_mm256_maskz_fmadd_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2550 __m256h test_mm256_maskz_fmadd_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
2551   // CHECK-LABEL: @test_mm256_maskz_fmadd_ph
2552   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2553   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2554   return _mm256_maskz_fmadd_ph(__U, __A, __B, __C);
2555 }
2556 
test_mm256_maskz_fmsub_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2557 __m256h test_mm256_maskz_fmsub_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
2558   // CHECK-LABEL: @test_mm256_maskz_fmsub_ph
2559   // CHECK: fneg
2560   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2561   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2562   return _mm256_maskz_fmsub_ph(__U, __A, __B, __C);
2563 }
2564 
test_mm256_maskz_fnmadd_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2565 __m256h test_mm256_maskz_fnmadd_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
2566   // CHECK-LABEL: @test_mm256_maskz_fnmadd_ph
2567   // CHECK: fneg
2568   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2569   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2570   return _mm256_maskz_fnmadd_ph(__U, __A, __B, __C);
2571 }
2572 
test_mm256_maskz_fnmsub_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2573 __m256h test_mm256_maskz_fnmsub_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
2574   // CHECK-LABEL: @test_mm256_maskz_fnmsub_ph
2575   // CHECK: fneg
2576   // CHECK: fneg
2577   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2578   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2579   return _mm256_maskz_fnmsub_ph(__U, __A, __B, __C);
2580 }
2581 
test_mm_fmaddsub_ph(__m128h __A,__m128h __B,__m128h __C)2582 __m128h test_mm_fmaddsub_ph(__m128h __A, __m128h __B, __m128h __C) {
2583   // CHECK-LABEL: @test_mm_fmaddsub_ph
2584   // CHECK-NOT: fneg
2585   // CHECK: call <8 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.128(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2586   return _mm_fmaddsub_ph(__A, __B, __C);
2587 }
2588 
test_mm_mask_fmaddsub_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2589 __m128h test_mm_mask_fmaddsub_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
2590   // CHECK-LABEL: @test_mm_mask_fmaddsub_ph
2591   // CHECK-NOT: fneg
2592   // CHECK: call <8 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.128(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2593   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2594   return _mm_mask_fmaddsub_ph(__A, __U, __B, __C);
2595 }
2596 
test_mm_fmsubadd_ph(__m128h __A,__m128h __B,__m128h __C)2597 __m128h test_mm_fmsubadd_ph(__m128h __A, __m128h __B, __m128h __C) {
2598   // CHECK-LABEL: @test_mm_fmsubadd_ph
2599   // CHECK: [[NEG:%.+]] = fneg
2600   // CHECK: call <8 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.128(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> [[NEG]])
2601   return _mm_fmsubadd_ph(__A, __B, __C);
2602 }
2603 
test_mm_mask_fmsubadd_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2604 __m128h test_mm_mask_fmsubadd_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
2605   // CHECK-LABEL: @test_mm_mask_fmsubadd_ph
2606   // CHECK: [[NEG:%.+]] = fneg
2607   // CHECK: call <8 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.128(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> [[NEG]])
2608   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2609   return _mm_mask_fmsubadd_ph(__A, __U, __B, __C);
2610 }
2611 
test_mm_mask3_fmaddsub_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2612 __m128h test_mm_mask3_fmaddsub_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
2613   // CHECK-LABEL: @test_mm_mask3_fmaddsub_ph
2614   // CHECK-NOT: fneg
2615   // CHECK: call <8 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.128(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2616   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2617   return _mm_mask3_fmaddsub_ph(__A, __B, __C, __U);
2618 }
2619 
test_mm_maskz_fmaddsub_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2620 __m128h test_mm_maskz_fmaddsub_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
2621   // CHECK-LABEL: @test_mm_maskz_fmaddsub_ph
2622   // CHECK-NOT: fneg
2623   // CHECK: call <8 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.128(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2624   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2625   return _mm_maskz_fmaddsub_ph(__U, __A, __B, __C);
2626 }
2627 
test_mm_maskz_fmsubadd_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2628 __m128h test_mm_maskz_fmsubadd_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
2629   // CHECK-LABEL: @test_mm_maskz_fmsubadd_ph
2630   // CHECK: [[NEG:%.+]] = fneg
2631   // CHECK: call <8 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.128(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> [[NEG]])
2632   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2633   return _mm_maskz_fmsubadd_ph(__U, __A, __B, __C);
2634 }
2635 
test_mm256_fmaddsub_ph(__m256h __A,__m256h __B,__m256h __C)2636 __m256h test_mm256_fmaddsub_ph(__m256h __A, __m256h __B, __m256h __C) {
2637   // CHECK-LABEL: @test_mm256_fmaddsub_ph
2638   // CHECK-NOT: fneg
2639   // CHECK: call <16 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2640   return _mm256_fmaddsub_ph(__A, __B, __C);
2641 }
2642 
test_mm256_mask_fmaddsub_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2643 __m256h test_mm256_mask_fmaddsub_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
2644   // CHECK-LABEL: @test_mm256_mask_fmaddsub_ph
2645   // CHECK-NOT: fneg
2646   // CHECK: call <16 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2647   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2648   return _mm256_mask_fmaddsub_ph(__A, __U, __B, __C);
2649 }
2650 
test_mm256_fmsubadd_ph(__m256h __A,__m256h __B,__m256h __C)2651 __m256h test_mm256_fmsubadd_ph(__m256h __A, __m256h __B, __m256h __C) {
2652   // CHECK-LABEL: @test_mm256_fmsubadd_ph
2653   // CHECK: [[NEG:%.+]] = fneg
2654   // CHECK: call <16 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> [[NEG]])
2655   return _mm256_fmsubadd_ph(__A, __B, __C);
2656 }
2657 
test_mm256_mask_fmsubadd_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2658 __m256h test_mm256_mask_fmsubadd_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
2659   // CHECK-LABEL: @test_mm256_mask_fmsubadd_ph
2660   // CHECK: [[NEG:%.+]] = fneg
2661   // CHECK: call <16 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> [[NEG]])
2662   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2663   return _mm256_mask_fmsubadd_ph(__A, __U, __B, __C);
2664 }
2665 
test_mm256_mask3_fmaddsub_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2666 __m256h test_mm256_mask3_fmaddsub_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
2667   // CHECK-LABEL: @test_mm256_mask3_fmaddsub_ph
2668   // CHECK-NOT: fneg
2669   // CHECK: call <16 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2670   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2671   return _mm256_mask3_fmaddsub_ph(__A, __B, __C, __U);
2672 }
2673 
test_mm256_maskz_fmaddsub_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2674 __m256h test_mm256_maskz_fmaddsub_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
2675   // CHECK-LABEL: @test_mm256_maskz_fmaddsub_ph
2676   // CHECK-NOT: fneg
2677   // CHECK: call <16 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2678   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2679   return _mm256_maskz_fmaddsub_ph(__U, __A, __B, __C);
2680 }
2681 
test_mm256_maskz_fmsubadd_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2682 __m256h test_mm256_maskz_fmsubadd_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
2683   // CHECK-LABEL: @test_mm256_maskz_fmsubadd_ph
2684   // CHECK: [[NEG:%.+]] = fneg
2685   // CHECK: call <16 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> [[NEG]])
2686   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2687   return _mm256_maskz_fmsubadd_ph(__U, __A, __B, __C);
2688 }
2689 
test_mm_mask3_fmsub_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2690 __m128h test_mm_mask3_fmsub_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
2691   // CHECK-LABEL: @test_mm_mask3_fmsub_ph
2692   // CHECK: fneg
2693   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2694   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2695   return _mm_mask3_fmsub_ph(__A, __B, __C, __U);
2696 }
2697 
test_mm256_mask3_fmsub_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2698 __m256h test_mm256_mask3_fmsub_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
2699   // CHECK-LABEL: @test_mm256_mask3_fmsub_ph
2700   // CHECK: fneg
2701   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2702   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2703   return _mm256_mask3_fmsub_ph(__A, __B, __C, __U);
2704 }
2705 
test_mm_mask3_fmsubadd_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2706 __m128h test_mm_mask3_fmsubadd_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
2707   // CHECK-LABEL: @test_mm_mask3_fmsubadd_ph
2708   // CHECK: [[NEG:%.+]] = fneg
2709   // CHECK: call <8 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.128(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> [[NEG]])
2710   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2711   return _mm_mask3_fmsubadd_ph(__A, __B, __C, __U);
2712 }
2713 
test_mm256_mask3_fmsubadd_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2714 __m256h test_mm256_mask3_fmsubadd_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
2715   // CHECK-LABEL: @test_mm256_mask3_fmsubadd_ph
2716   // CHECK: [[NEG:%.+]] = fneg
2717   // CHECK: call <16 x half> @llvm.x86.avx512fp16.vfmaddsub.ph.256(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> [[NEG]])
2718   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2719   return _mm256_mask3_fmsubadd_ph(__A, __B, __C, __U);
2720 }
2721 
test_mm_fnmadd_ph(__m128h __A,__m128h __B,__m128h __C)2722 __m128h test_mm_fnmadd_ph(__m128h __A, __m128h __B, __m128h __C) {
2723   // CHECK-LABEL: @test_mm_fnmadd_ph
2724   // CHECK: fneg
2725   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2726   return _mm_fnmadd_ph(__A, __B, __C);
2727 }
2728 
test_mm_mask_fnmadd_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2729 __m128h test_mm_mask_fnmadd_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
2730   // CHECK-LABEL: @test_mm_mask_fnmadd_ph
2731   // CHECK: fneg
2732   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2733   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2734   return _mm_mask_fnmadd_ph(__A, __U, __B, __C);
2735 }
2736 
test_mm256_fnmadd_ph(__m256h __A,__m256h __B,__m256h __C)2737 __m256h test_mm256_fnmadd_ph(__m256h __A, __m256h __B, __m256h __C) {
2738   // CHECK-LABEL: @test_mm256_fnmadd_ph
2739   // CHECK: fneg
2740   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2741   return _mm256_fnmadd_ph(__A, __B, __C);
2742 }
2743 
test_mm256_mask_fnmadd_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2744 __m256h test_mm256_mask_fnmadd_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
2745   // CHECK-LABEL: @test_mm256_mask_fnmadd_ph
2746   // CHECK: fneg
2747   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2748   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2749   return _mm256_mask_fnmadd_ph(__A, __U, __B, __C);
2750 }
2751 
test_mm_fnmsub_ph(__m128h __A,__m128h __B,__m128h __C)2752 __m128h test_mm_fnmsub_ph(__m128h __A, __m128h __B, __m128h __C) {
2753   // CHECK-LABEL: @test_mm_fnmsub_ph
2754   // CHECK: fneg
2755   // CHECK: fneg
2756   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2757   return _mm_fnmsub_ph(__A, __B, __C);
2758 }
2759 
test_mm_mask_fnmsub_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2760 __m128h test_mm_mask_fnmsub_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
2761   // CHECK-LABEL: @test_mm_mask_fnmsub_ph
2762   // CHECK: fneg
2763   // CHECK: fneg
2764   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2765   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2766   return _mm_mask_fnmsub_ph(__A, __U, __B, __C);
2767 }
2768 
test_mm_mask3_fnmsub_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2769 __m128h test_mm_mask3_fnmsub_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
2770   // CHECK-LABEL: @test_mm_mask3_fnmsub_ph
2771   // CHECK: fneg
2772   // CHECK: fneg
2773   // CHECK: call <8 x half> @llvm.fma.v8f16(<8 x half> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}})
2774   // CHECK: select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2775   return _mm_mask3_fnmsub_ph(__A, __B, __C, __U);
2776 }
2777 
test_mm256_fnmsub_ph(__m256h __A,__m256h __B,__m256h __C)2778 __m256h test_mm256_fnmsub_ph(__m256h __A, __m256h __B, __m256h __C) {
2779   // CHECK-LABEL: @test_mm256_fnmsub_ph
2780   // CHECK: fneg
2781   // CHECK: fneg
2782   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2783   return _mm256_fnmsub_ph(__A, __B, __C);
2784 }
2785 
test_mm256_mask_fnmsub_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2786 __m256h test_mm256_mask_fnmsub_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
2787   // CHECK-LABEL: @test_mm256_mask_fnmsub_ph
2788   // CHECK: fneg
2789   // CHECK: fneg
2790   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2791   // CHECK: select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2792   return _mm256_mask_fnmsub_ph(__A, __U, __B, __C);
2793 }
2794 
test_mm256_mask3_fnmsub_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2795 __m256h test_mm256_mask3_fnmsub_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
2796   // CHECK-LABEL: @test_mm256_mask3_fnmsub_ph
2797   // CHECK: fneg
2798   // CHECK: fneg
2799   // CHECK: call <16 x half> @llvm.fma.v16f16(<16 x half> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}})
2800   return _mm256_mask3_fnmsub_ph(__A, __B, __C, __U);
2801 }
2802 
test_mm_fcmul_pch(__m128h __A,__m128h __B)2803 __m128h test_mm_fcmul_pch(__m128h __A, __m128h __B) {
2804   // CHECK-LABEL: @test_mm_fcmul_pch
2805   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.128
2806   return _mm_fcmul_pch(__A, __B);
2807 }
2808 
test_mm_mask_fcmul_pch(__m128h __W,__mmask8 __U,__m128h __A,__m128h __B)2809 __m128h test_mm_mask_fcmul_pch(__m128h __W, __mmask8 __U, __m128h __A, __m128h __B) {
2810   // CHECK-LABEL: @test_mm_mask_fcmul_pch
2811   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.128
2812   return _mm_mask_fcmul_pch(__W, __U, __A, __B);
2813 }
2814 
test_mm_maskz_fcmul_pch(__mmask8 __U,__m128h __A,__m128h __B)2815 __m128h test_mm_maskz_fcmul_pch(__mmask8 __U, __m128h __A, __m128h __B) {
2816   // CHECK-LABEL: @test_mm_maskz_fcmul_pch
2817   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.128
2818   return _mm_maskz_fcmul_pch(__U, __A, __B);
2819 }
2820 
test_mm256_fcmul_pch(__m256h __A,__m256h __B)2821 __m256h test_mm256_fcmul_pch(__m256h __A, __m256h __B) {
2822   // CHECK-LABEL: @test_mm256_fcmul_pch
2823   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.256
2824   return _mm256_fcmul_pch(__A, __B);
2825 }
2826 
test_mm256_mask_fcmul_pch(__m256h __W,__mmask8 __U,__m256h __A,__m256h __B)2827 __m256h test_mm256_mask_fcmul_pch(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) {
2828   // CHECK-LABEL: @test_mm256_mask_fcmul_pch
2829   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.256
2830   return _mm256_mask_fcmul_pch(__W, __U, __A, __B);
2831 }
2832 
test_mm256_maskz_fcmul_pch(__mmask8 __U,__m256h __A,__m256h __B)2833 __m256h test_mm256_maskz_fcmul_pch(__mmask8 __U, __m256h __A, __m256h __B) {
2834   // CHECK-LABEL: @test_mm256_maskz_fcmul_pch
2835   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.256
2836   return _mm256_maskz_fcmul_pch(__U, __A, __B);
2837 }
2838 
test_mm_fcmadd_pch(__m128h __A,__m128h __B,__m128h __C)2839 __m128h test_mm_fcmadd_pch(__m128h __A, __m128h __B, __m128h __C) {
2840   // CHECK-LABEL: @test_mm_fcmadd_pch
2841   // CHECK: @llvm.x86.avx512fp16.mask.vfcmadd.cph.128
2842   return _mm_fcmadd_pch(__A, __B, __C);
2843 }
2844 
test_mm_mask_fcmadd_pch(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2845 __m128h test_mm_mask_fcmadd_pch(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
2846   // CHECK-LABEL: @test_mm_mask_fcmadd_pch
2847   // CHECK: @llvm.x86.avx512fp16.mask.vfcmadd.cph.128
2848   // CHECK:  %{{.*}} = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2849   // CHECK:  %{{.*}} = select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2850   return _mm_mask_fcmadd_pch(__A, __U, __B, __C);
2851 }
2852 
test_mm_mask3_fcmadd_pch(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2853 __m128h test_mm_mask3_fcmadd_pch(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
2854   // CHECK-LABEL: @test_mm_mask3_fcmadd_pch
2855   // CHECK: @llvm.x86.avx512fp16.mask.vfcmadd.cph.128
2856   // CHECK-NOT:  %{{.*}} = select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2857   return _mm_mask3_fcmadd_pch(__A, __B, __C, __U);
2858 }
2859 
test_mm_maskz_fcmadd_pch(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2860 __m128h test_mm_maskz_fcmadd_pch(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
2861   // CHECK-LABEL: @test_mm_maskz_fcmadd_pch
2862   // CHECK: @llvm.x86.avx512fp16.maskz.vfcmadd.cph.128
2863   return _mm_maskz_fcmadd_pch(__U, __A, __B, __C);
2864 }
2865 
test_mm256_fcmadd_pch(__m256h __A,__m256h __B,__m256h __C)2866 __m256h test_mm256_fcmadd_pch(__m256h __A, __m256h __B, __m256h __C) {
2867   // CHECK-LABEL: @test_mm256_fcmadd_pch
2868   // CHECK: @llvm.x86.avx512fp16.mask.vfcmadd.cph.256
2869   return _mm256_fcmadd_pch(__A, __B, __C);
2870 }
2871 
test_mm256_mask_fcmadd_pch(__m256h __A,__mmask8 __U,__m256h __B,__m256h __C)2872 __m256h test_mm256_mask_fcmadd_pch(__m256h __A, __mmask8 __U, __m256h __B, __m256h __C) {
2873   // CHECK-LABEL: @test_mm256_mask_fcmadd_pch
2874   // CHECK: @llvm.x86.avx512fp16.mask.vfcmadd.cph.256
2875   // CHECK:  %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2876   return _mm256_mask_fcmadd_pch(__A, __U, __B, __C);
2877 }
2878 
test_mm256_mask3_fcmadd_pch(__m256h __A,__m256h __B,__m256h __C,__mmask8 __U)2879 __m256h test_mm256_mask3_fcmadd_pch(__m256h __A, __m256h __B, __m256h __C, __mmask8 __U) {
2880   // CHECK-LABEL: @test_mm256_mask3_fcmadd_pch
2881   // CHECK: @llvm.x86.avx512fp16.mask.vfcmadd.cph.256
2882   // CHECK-NOT:  %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2883   return _mm256_mask3_fcmadd_pch(__A, __B, __C, __U);
2884 }
2885 
test_mm256_maskz_fcmadd_pch(__mmask8 __U,__m256h __A,__m256h __B,__m256h __C)2886 __m256h test_mm256_maskz_fcmadd_pch(__mmask8 __U, __m256h __A, __m256h __B, __m256h __C) {
2887   // CHECK-LABEL: @test_mm256_maskz_fcmadd_pch
2888   // CHECK: @llvm.x86.avx512fp16.maskz.vfcmadd.cph.256
2889   return _mm256_maskz_fcmadd_pch(__U, __A, __B, __C);
2890 }
2891 
test_mm_fmul_pch(__m128h __A,__m128h __B)2892 __m128h test_mm_fmul_pch(__m128h __A, __m128h __B) {
2893   // CHECK-LABEL: @test_mm_fmul_pch
2894   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.128
2895   return _mm_fmul_pch(__A, __B);
2896 }
2897 
test_mm_mask_fmul_pch(__m128h __W,__mmask8 __U,__m128h __A,__m128h __B)2898 __m128h test_mm_mask_fmul_pch(__m128h __W, __mmask8 __U, __m128h __A, __m128h __B) {
2899   // CHECK-LABEL: @test_mm_mask_fmul_pch
2900   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.128
2901   return _mm_mask_fmul_pch(__W, __U, __A, __B);
2902 }
2903 
test_mm_maskz_fmul_pch(__mmask8 __U,__m128h __A,__m128h __B)2904 __m128h test_mm_maskz_fmul_pch(__mmask8 __U, __m128h __A, __m128h __B) {
2905   // CHECK-LABEL: @test_mm_maskz_fmul_pch
2906   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.128
2907   return _mm_maskz_fmul_pch(__U, __A, __B);
2908 }
2909 
test_mm256_fmul_pch(__m256h __A,__m256h __B)2910 __m256h test_mm256_fmul_pch(__m256h __A, __m256h __B) {
2911   // CHECK-LABEL: @test_mm256_fmul_pch
2912   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.256
2913   return _mm256_fmul_pch(__A, __B);
2914 }
2915 
test_mm256_mask_fmul_pch(__m256h __W,__mmask8 __U,__m256h __A,__m256h __B)2916 __m256h test_mm256_mask_fmul_pch(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) {
2917   // CHECK-LABEL: @test_mm256_mask_fmul_pch
2918   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.256
2919   return _mm256_mask_fmul_pch(__W, __U, __A, __B);
2920 }
2921 
test_mm256_maskz_fmul_pch(__mmask8 __U,__m256h __A,__m256h __B)2922 __m256h test_mm256_maskz_fmul_pch(__mmask8 __U, __m256h __A, __m256h __B) {
2923   // CHECK-LABEL: @test_mm256_maskz_fmul_pch
2924   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.256
2925   return _mm256_maskz_fmul_pch(__U, __A, __B);
2926 }
2927 
test_mm_fmadd_pch(__m128h __A,__m128h __B,__m128h __C)2928 __m128h test_mm_fmadd_pch(__m128h __A, __m128h __B, __m128h __C) {
2929   // CHECK-LABEL: @test_mm_fmadd_pch
2930   // CHECK: @llvm.x86.avx512fp16.mask.vfmadd.cph.128
2931   return _mm_fmadd_pch(__A, __B, __C);
2932 }
2933 
test_mm_mask_fmadd_pch(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2934 __m128h test_mm_mask_fmadd_pch(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
2935   // CHECK-LABEL: @test_mm_mask_fmadd_pch
2936   // CHECK: @llvm.x86.avx512fp16.mask.vfmadd.cph.128
2937   // CHECK:  %{{.*}} = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2938   // CHECK:  %{{.*}} = select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2939   return _mm_mask_fmadd_pch(__A, __U, __B, __C);
2940 }
2941 
test_mm_mask3_fmadd_pch(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2942 __m128h test_mm_mask3_fmadd_pch(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
2943   // CHECK-LABEL: @test_mm_mask3_fmadd_pch
2944   // CHECK: @llvm.x86.avx512fp16.mask.vfmadd.cph.128
2945   return _mm_mask3_fmadd_pch(__A, __B, __C, __U);
2946 }
2947 
test_mm_maskz_fmadd_pch(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2948 __m128h test_mm_maskz_fmadd_pch(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
2949   // CHECK-LABEL: @test_mm_maskz_fmadd_pch
2950   // CHECK: @llvm.x86.avx512fp16.maskz.vfmadd.cph.128
2951   return _mm_maskz_fmadd_pch(__U, __A, __B, __C);
2952 }
2953 
test_mm256_fmadd_pch(__m256h __A,__m256h __B,__m256h __C)2954 __m256h test_mm256_fmadd_pch(__m256h __A, __m256h __B, __m256h __C) {
2955   // CHECK-LABEL: @test_mm256_fmadd_pch
2956   // CHECK: @llvm.x86.avx512fp16.mask.vfmadd.cph.256
2957   return _mm256_fmadd_pch(__A, __B, __C);
2958 }
2959 
test_mm256_mask_fmadd_pch(__m256h __A,__mmask8 __U,__m256h __B,__m256h __C)2960 __m256h test_mm256_mask_fmadd_pch(__m256h __A, __mmask8 __U, __m256h __B, __m256h __C) {
2961   // CHECK-LABEL: @test_mm256_mask_fmadd_pch
2962   // CHECK: @llvm.x86.avx512fp16.mask.vfmadd.cph.256
2963   // CHECK:  %{{.*}} = select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2964   return _mm256_mask_fmadd_pch(__A, __U, __B, __C);
2965 }
2966 
test_mm256_mask3_fmadd_pch(__m256h __A,__m256h __B,__m256h __C,__mmask8 __U)2967 __m256h test_mm256_mask3_fmadd_pch(__m256h __A, __m256h __B, __m256h __C, __mmask8 __U) {
2968   // CHECK-LABEL: @test_mm256_mask3_fmadd_pch
2969   // CHECK: @llvm.x86.avx512fp16.mask.vfmadd.cph.256
2970   return _mm256_mask3_fmadd_pch(__A, __B, __C, __U);
2971 }
2972 
test_mm256_maskz_fmadd_pch(__mmask8 __U,__m256h __A,__m256h __B,__m256h __C)2973 __m256h test_mm256_maskz_fmadd_pch(__mmask8 __U, __m256h __A, __m256h __B, __m256h __C) {
2974   // CHECK-LABEL: @test_mm256_maskz_fmadd_pch
2975   // CHECK: @llvm.x86.avx512fp16.maskz.vfmadd.cph.256
2976   return _mm256_maskz_fmadd_pch(__U, __A, __B, __C);
2977 }
2978 
test_mm_mask_blend_ph(__mmask8 __U,__m128h __A,__m128h __W)2979 __m128h test_mm_mask_blend_ph(__mmask8 __U, __m128h __A, __m128h __W) {
2980   // CHECK-LABEL: @test_mm_mask_blend_ph
2981   // CHECK:  %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
2982   // CHECK:  %{{.*}} = select <8 x i1> %{{.*}}, <8 x half> %{{.*}}, <8 x half> %{{.*}}
2983   return _mm_mask_blend_ph(__U, __A, __W);
2984 }
2985 
test_mm256_mask_blend_ph(__mmask16 __U,__m256h __A,__m256h __W)2986 __m256h test_mm256_mask_blend_ph(__mmask16 __U, __m256h __A, __m256h __W) {
2987   // CHECK-LABEL: @test_mm256_mask_blend_ph
2988   // CHECK:  %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2989   // CHECK:  %{{.*}} = select <16 x i1> %{{.*}}, <16 x half> %{{.*}}, <16 x half> %{{.*}}
2990   return _mm256_mask_blend_ph(__U, __A, __W);
2991 }
2992 
test_mm_permutex2var_ph(__m128h __A,__m128i __I,__m128h __B)2993 __m128h test_mm_permutex2var_ph(__m128h __A, __m128i __I, __m128h __B) {
2994   // CHECK-LABEL: @test_mm_permutex2var_ph
2995   // CHECK:  %{{.*}} = bitcast <8 x half> %{{.*}} to <8 x i16>
2996   // CHECK:  %{{.*}} = bitcast <2 x i64> %{{.*}} to <8 x i16>
2997   // CHECK:  %{{.*}} = bitcast <8 x half> %{{.*}} to <8 x i16>
2998   // CHECK:  %{{.*}} = call <8 x i16> @llvm.x86.avx512.vpermi2var.hi.128(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2999   // CHECK:  %{{.*}} = bitcast <8 x i16> %{{.*}} to <8 x half>
3000   return _mm_permutex2var_ph(__A, __I, __B);
3001 }
3002 
test_mm256_permutex2var_ph(__m256h __A,__m256i __I,__m256h __B)3003 __m256h test_mm256_permutex2var_ph(__m256h __A, __m256i __I, __m256h __B) {
3004   // CHECK-LABEL: @test_mm256_permutex2var_ph
3005   // CHECK:  %{{.*}} = bitcast <16 x half> %{{.*}} to <16 x i16>
3006   // CHECK:  %{{.*}} = bitcast <4 x i64> %{{.*}} to <16 x i16>
3007   // CHECK:  %{{.*}} = bitcast <16 x half> %{{.*}} to <16 x i16>
3008   // CHECK:  %{{.*}} = call <16 x i16> @llvm.x86.avx512.vpermi2var.hi.256(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}})
3009   // CHECK:  %{{.*}} = bitcast <16 x i16> %{{.*}} to <16 x half>
3010   return _mm256_permutex2var_ph(__A, __I, __B);
3011 }
3012 
test_mm_permutexvar_ph(__m128i __A,__m128h __B)3013 __m128h test_mm_permutexvar_ph(__m128i __A, __m128h __B) {
3014   // CHECK-LABEL: @test_mm_permutexvar_ph
3015   // CHECK:  %{{.*}} = bitcast <8 x half> %{{.*}} to <8 x i16>
3016   // CHECK:  %{{.*}} = bitcast <2 x i64> %{{.*}} to <8 x i16>
3017   // CHECK:  %{{.*}} = call <8 x i16> @llvm.x86.avx512.permvar.hi.128(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3018   // CHECK:  %{{.*}} = bitcast <8 x i16> %{{.*}} to <8 x half>
3019   return _mm_permutexvar_ph(__A, __B);
3020 }
3021 
test_mm256_permutexvar_ph(__m256i __A,__m256h __B)3022 __m256h test_mm256_permutexvar_ph(__m256i __A, __m256h __B) {
3023   // CHECK-LABEL: @test_mm256_permutexvar_ph
3024   // CHECK:  %{{.*}} = bitcast <16 x half> %{{.*}} to <16 x i16>
3025   // CHECK:  %{{.*}} = bitcast <4 x i64> %{{.*}} to <16 x i16>
3026   // CHECK:  %{{.*}} = call <16 x i16> @llvm.x86.avx512.permvar.hi.256(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
3027   // CHECK:  %{{.*}} = bitcast <16 x i16> %{{.*}} to <16 x half>
3028   return _mm256_permutexvar_ph(__A, __B);
3029 }
3030 
test_mm256_reduce_add_ph(__m256h __W)3031 _Float16 test_mm256_reduce_add_ph(__m256h __W) {
3032   // CHECK-LABEL: @test_mm256_reduce_add_ph
3033   // CHECK: call reassoc half @llvm.vector.reduce.fadd.v16f16(half 0xH8000, <16 x half> %{{.*}})
3034   return _mm256_reduce_add_ph(__W);
3035 }
3036 
test_mm256_reduce_mul_ph(__m256h __W)3037 _Float16 test_mm256_reduce_mul_ph(__m256h __W) {
3038   // CHECK-LABEL: @test_mm256_reduce_mul_ph
3039   // CHECK: call reassoc half @llvm.vector.reduce.fmul.v16f16(half 0xH3C00, <16 x half> %{{.*}})
3040   return _mm256_reduce_mul_ph(__W);
3041 }
3042 
test_mm256_reduce_max_ph(__m256h __W)3043 _Float16 test_mm256_reduce_max_ph(__m256h __W) {
3044   // CHECK-LABEL: @test_mm256_reduce_max_ph
3045   // CHECK: call nnan half @llvm.vector.reduce.fmax.v16f16(<16 x half> %{{.*}})
3046   return _mm256_reduce_max_ph(__W);
3047 }
3048 
test_mm256_reduce_min_ph(__m256h __W)3049 _Float16 test_mm256_reduce_min_ph(__m256h __W) {
3050   // CHECK-LABEL: @test_mm256_reduce_min_ph
3051   // CHECK: call nnan half @llvm.vector.reduce.fmin.v16f16(<16 x half> %{{.*}})
3052   return _mm256_reduce_min_ph(__W);
3053 }
3054 
test_mm_reduce_add_ph(__m128h __W)3055 _Float16 test_mm_reduce_add_ph(__m128h __W) {
3056   // CHECK-LABEL: @test_mm_reduce_add_ph
3057   // CHECK: call reassoc half @llvm.vector.reduce.fadd.v8f16(half 0xH8000, <8 x half> %{{.*}})
3058   return _mm_reduce_add_ph(__W);
3059 }
3060 
test_mm_reduce_mul_ph(__m128h __W)3061 _Float16 test_mm_reduce_mul_ph(__m128h __W) {
3062   // CHECK-LABEL: @test_mm_reduce_mul_ph
3063   // CHECK: call reassoc half @llvm.vector.reduce.fmul.v8f16(half 0xH3C00, <8 x half> %{{.*}})
3064   return _mm_reduce_mul_ph(__W);
3065 }
3066 
test_mm_reduce_min_ph(__m128h __W)3067 _Float16 test_mm_reduce_min_ph(__m128h __W) {
3068   // CHECK-LABEL: @test_mm_reduce_min_ph
3069   // CHECK: call nnan half @llvm.vector.reduce.fmin.v8f16(<8 x half> %{{.*}})
3070   return _mm_reduce_min_ph(__W);
3071 }
3072 
test_mm_reduce_max_ph(__m128h __W)3073 _Float16 test_mm_reduce_max_ph(__m128h __W) {
3074   // CHECK-LABEL: @test_mm_reduce_max_ph
3075   // CHECK: call nnan half @llvm.vector.reduce.fmax.v8f16(<8 x half> %{{.*}})
3076   return _mm_reduce_max_ph(__W);
3077 }
3078 
3079 // tests below are for alias intrinsics.
test_mm_mul_pch(__m128h __A,__m128h __B)3080 __m128h test_mm_mul_pch(__m128h __A, __m128h __B) {
3081   // CHECK-LABEL: @test_mm_mul_pch
3082   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.128
3083   return _mm_mul_pch(__A, __B);
3084 }
3085 
test_mm_mask_mul_pch(__m128h __W,__mmask8 __U,__m128h __A,__m128h __B)3086 __m128h test_mm_mask_mul_pch(__m128h __W, __mmask8 __U, __m128h __A, __m128h __B) {
3087   // CHECK-LABEL: @test_mm_mask_mul_pch
3088   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.128
3089   return _mm_mask_mul_pch(__W, __U, __A, __B);
3090 }
3091 
test_mm_maskz_mul_pch(__mmask8 __U,__m128h __A,__m128h __B)3092 __m128h test_mm_maskz_mul_pch(__mmask8 __U, __m128h __A, __m128h __B) {
3093   // CHECK-LABEL: @test_mm_maskz_mul_pch
3094   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.128
3095   return _mm_maskz_mul_pch(__U, __A, __B);
3096 }
3097 
test_mm256_mul_pch(__m256h __A,__m256h __B)3098 __m256h test_mm256_mul_pch(__m256h __A, __m256h __B) {
3099   // CHECK-LABEL: @test_mm256_mul_pch
3100   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.256
3101   return _mm256_mul_pch(__A, __B);
3102 }
3103 
test_mm256_mask_mul_pch(__m256h __W,__mmask8 __U,__m256h __A,__m256h __B)3104 __m256h test_mm256_mask_mul_pch(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) {
3105   // CHECK-LABEL: @test_mm256_mask_mul_pch
3106   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.256
3107   return _mm256_mask_mul_pch(__W, __U, __A, __B);
3108 }
3109 
test_mm256_maskz_mul_pch(__mmask8 __U,__m256h __A,__m256h __B)3110 __m256h test_mm256_maskz_mul_pch(__mmask8 __U, __m256h __A, __m256h __B) {
3111   // CHECK-LABEL: @test_mm256_maskz_mul_pch
3112   // CHECK: @llvm.x86.avx512fp16.mask.vfmul.cph.256
3113   return _mm256_maskz_mul_pch(__U, __A, __B);
3114 }
3115 
test_mm_cmul_pch(__m128h __A,__m128h __B)3116 __m128h test_mm_cmul_pch(__m128h __A, __m128h __B) {
3117   // CHECK-LABEL: @test_mm_cmul_pch
3118   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.128
3119   return _mm_cmul_pch(__A, __B);
3120 }
3121 
test_mm_mask_cmul_pch(__m128h __W,__mmask8 __U,__m128h __A,__m128h __B)3122 __m128h test_mm_mask_cmul_pch(__m128h __W, __mmask8 __U, __m128h __A, __m128h __B) {
3123   // CHECK-LABEL: @test_mm_mask_cmul_pch
3124   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.128
3125   return _mm_mask_fcmul_pch(__W, __U, __A, __B);
3126 }
3127 
test_mm_maskz_cmul_pch(__mmask8 __U,__m128h __A,__m128h __B)3128 __m128h test_mm_maskz_cmul_pch(__mmask8 __U, __m128h __A, __m128h __B) {
3129   // CHECK-LABEL: @test_mm_maskz_cmul_pch
3130   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.128
3131   return _mm_maskz_cmul_pch(__U, __A, __B);
3132 }
3133 
test_mm256_cmul_pch(__m256h __A,__m256h __B)3134 __m256h test_mm256_cmul_pch(__m256h __A, __m256h __B) {
3135   // CHECK-LABEL: @test_mm256_cmul_pch
3136   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.256
3137   return _mm256_cmul_pch(__A, __B);
3138 }
3139 
test_mm256_mask_cmul_pch(__m256h __W,__mmask8 __U,__m256h __A,__m256h __B)3140 __m256h test_mm256_mask_cmul_pch(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) {
3141   // CHECK-LABEL: @test_mm256_mask_cmul_pch
3142   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.256
3143   return _mm256_mask_cmul_pch(__W, __U, __A, __B);
3144 }
3145 
test_mm256_maskz_cmul_pch(__mmask8 __U,__m256h __A,__m256h __B)3146 __m256h test_mm256_maskz_cmul_pch(__mmask8 __U, __m256h __A, __m256h __B) {
3147   // CHECK-LABEL: @test_mm256_maskz_cmul_pch
3148   // CHECK: @llvm.x86.avx512fp16.mask.vfcmul.cph.256
3149   return _mm256_maskz_cmul_pch(__U, __A, __B);
3150 }
3151