1 // RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s
2 
3 #include <immintrin.h>
4 
test_mm512_cmp_round_ps_mask(__m512 a,__m512 b)5 __mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) {
6   // CHECK-LABEL: @test_mm512_cmp_round_ps_mask
7   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
8   return _mm512_cmp_round_ps_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
9 }
10 
test_mm512_mask_cmp_round_ps_mask(__mmask16 m,__m512 a,__m512 b)11 __mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) {
12   // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask
13   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
14   // CHECK: and <16 x i1> [[CMP]], {{.*}}
15   return _mm512_mask_cmp_round_ps_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
16 }
17 
test_mm512_cmp_ps_mask_eq_oq(__m512 a,__m512 b)18 __mmask16 test_mm512_cmp_ps_mask_eq_oq(__m512 a, __m512 b) {
19   // CHECK-LABEL: @test_mm512_cmp_ps_mask_eq_oq
20   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
21   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OQ);
22 }
23 
test_mm512_cmp_ps_mask_lt_os(__m512 a,__m512 b)24 __mmask16 test_mm512_cmp_ps_mask_lt_os(__m512 a, __m512 b) {
25   // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_os
26   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
27   return _mm512_cmp_ps_mask(a, b, _CMP_LT_OS);
28 }
29 
test_mm512_cmp_ps_mask_le_os(__m512 a,__m512 b)30 __mmask16 test_mm512_cmp_ps_mask_le_os(__m512 a, __m512 b) {
31   // CHECK-LABEL: test_mm512_cmp_ps_mask_le_os
32   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
33   return _mm512_cmp_ps_mask(a, b, _CMP_LE_OS);
34 }
35 
test_mm512_cmp_ps_mask_unord_q(__m512 a,__m512 b)36 __mmask16 test_mm512_cmp_ps_mask_unord_q(__m512 a, __m512 b) {
37   // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_q
38   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
39   return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_Q);
40 }
41 
test_mm512_cmp_ps_mask_neq_uq(__m512 a,__m512 b)42 __mmask16 test_mm512_cmp_ps_mask_neq_uq(__m512 a, __m512 b) {
43   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_uq
44   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
45   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
46 }
47 
test_mm512_cmp_ps_mask_nlt_us(__m512 a,__m512 b)48 __mmask16 test_mm512_cmp_ps_mask_nlt_us(__m512 a, __m512 b) {
49   // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_us
50   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
51   return _mm512_cmp_ps_mask(a, b, _CMP_NLT_US);
52 }
53 
test_mm512_cmp_ps_mask_nle_us(__m512 a,__m512 b)54 __mmask16 test_mm512_cmp_ps_mask_nle_us(__m512 a, __m512 b) {
55   // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_us
56   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
57   return _mm512_cmp_ps_mask(a, b, _CMP_NLE_US);
58 }
59 
test_mm512_cmp_ps_mask_ord_q(__m512 a,__m512 b)60 __mmask16 test_mm512_cmp_ps_mask_ord_q(__m512 a, __m512 b) {
61   // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_q
62   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
63   return _mm512_cmp_ps_mask(a, b, _CMP_ORD_Q);
64 }
65 
test_mm512_cmp_ps_mask_eq_uq(__m512 a,__m512 b)66 __mmask16 test_mm512_cmp_ps_mask_eq_uq(__m512 a, __m512 b) {
67   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_uq
68   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
69   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_UQ);
70 }
71 
test_mm512_cmp_ps_mask_nge_us(__m512 a,__m512 b)72 __mmask16 test_mm512_cmp_ps_mask_nge_us(__m512 a, __m512 b) {
73   // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_us
74   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
75   return _mm512_cmp_ps_mask(a, b, _CMP_NGE_US);
76 }
77 
test_mm512_cmp_ps_mask_ngt_us(__m512 a,__m512 b)78 __mmask16 test_mm512_cmp_ps_mask_ngt_us(__m512 a, __m512 b) {
79   // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_us
80   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
81   return _mm512_cmp_ps_mask(a, b, _CMP_NGT_US);
82 }
83 
test_mm512_cmp_ps_mask_false_oq(__m512 a,__m512 b)84 __mmask16 test_mm512_cmp_ps_mask_false_oq(__m512 a, __m512 b) {
85   // CHECK-LABEL: test_mm512_cmp_ps_mask_false_oq
86   // CHECK: call <16 x i1> @llvm.x86.avx512.cmp.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 11, i32 4)
87   return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
88 }
89 
test_mm512_cmp_ps_mask_neq_oq(__m512 a,__m512 b)90 __mmask16 test_mm512_cmp_ps_mask_neq_oq(__m512 a, __m512 b) {
91   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_oq
92   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
93   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
94 }
95 
test_mm512_cmp_ps_mask_ge_os(__m512 a,__m512 b)96 __mmask16 test_mm512_cmp_ps_mask_ge_os(__m512 a, __m512 b) {
97   // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_os
98   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
99   return _mm512_cmp_ps_mask(a, b, _CMP_GE_OS);
100 }
101 
test_mm512_cmp_ps_mask_gt_os(__m512 a,__m512 b)102 __mmask16 test_mm512_cmp_ps_mask_gt_os(__m512 a, __m512 b) {
103   // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_os
104   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
105   return _mm512_cmp_ps_mask(a, b, _CMP_GT_OS);
106 }
107 
test_mm512_cmp_ps_mask_true_uq(__m512 a,__m512 b)108 __mmask16 test_mm512_cmp_ps_mask_true_uq(__m512 a, __m512 b) {
109   // CHECK-LABEL: test_mm512_cmp_ps_mask_true_uq
110   // CHECK: call <16 x i1> @llvm.x86.avx512.cmp.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 15, i32 4)
111   return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
112 }
113 
test_mm512_cmp_ps_mask_eq_os(__m512 a,__m512 b)114 __mmask16 test_mm512_cmp_ps_mask_eq_os(__m512 a, __m512 b) {
115   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_os
116   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
117   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OS);
118 }
119 
test_mm512_cmp_ps_mask_lt_oq(__m512 a,__m512 b)120 __mmask16 test_mm512_cmp_ps_mask_lt_oq(__m512 a, __m512 b) {
121   // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_oq
122   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
123   return _mm512_cmp_ps_mask(a, b, _CMP_LT_OQ);
124 }
125 
test_mm512_cmp_ps_mask_le_oq(__m512 a,__m512 b)126 __mmask16 test_mm512_cmp_ps_mask_le_oq(__m512 a, __m512 b) {
127   // CHECK-LABEL: test_mm512_cmp_ps_mask_le_oq
128   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
129   return _mm512_cmp_ps_mask(a, b, _CMP_LE_OQ);
130 }
131 
test_mm512_cmp_ps_mask_unord_s(__m512 a,__m512 b)132 __mmask16 test_mm512_cmp_ps_mask_unord_s(__m512 a, __m512 b) {
133   // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_s
134   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
135   return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_S);
136 }
137 
test_mm512_cmp_ps_mask_neq_us(__m512 a,__m512 b)138 __mmask16 test_mm512_cmp_ps_mask_neq_us(__m512 a, __m512 b) {
139   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_us
140   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
141   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_US);
142 }
143 
test_mm512_cmp_ps_mask_nlt_uq(__m512 a,__m512 b)144 __mmask16 test_mm512_cmp_ps_mask_nlt_uq(__m512 a, __m512 b) {
145   // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_uq
146   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
147   return _mm512_cmp_ps_mask(a, b, _CMP_NLT_UQ);
148 }
149 
test_mm512_cmp_ps_mask_nle_uq(__m512 a,__m512 b)150 __mmask16 test_mm512_cmp_ps_mask_nle_uq(__m512 a, __m512 b) {
151   // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_uq
152   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
153   return _mm512_cmp_ps_mask(a, b, _CMP_NLE_UQ);
154 }
155 
test_mm512_cmp_ps_mask_ord_s(__m512 a,__m512 b)156 __mmask16 test_mm512_cmp_ps_mask_ord_s(__m512 a, __m512 b) {
157   // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_s
158   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
159   return _mm512_cmp_ps_mask(a, b, _CMP_ORD_S);
160 }
161 
test_mm512_cmp_ps_mask_eq_us(__m512 a,__m512 b)162 __mmask16 test_mm512_cmp_ps_mask_eq_us(__m512 a, __m512 b) {
163   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_us
164   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
165   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_US);
166 }
167 
test_mm512_cmp_ps_mask_nge_uq(__m512 a,__m512 b)168 __mmask16 test_mm512_cmp_ps_mask_nge_uq(__m512 a, __m512 b) {
169   // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_uq
170   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
171   return _mm512_cmp_ps_mask(a, b, _CMP_NGE_UQ);
172 }
173 
test_mm512_cmp_ps_mask_ngt_uq(__m512 a,__m512 b)174 __mmask16 test_mm512_cmp_ps_mask_ngt_uq(__m512 a, __m512 b) {
175   // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_uq
176   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
177   return _mm512_cmp_ps_mask(a, b, _CMP_NGT_UQ);
178 }
179 
test_mm512_cmp_ps_mask_false_os(__m512 a,__m512 b)180 __mmask16 test_mm512_cmp_ps_mask_false_os(__m512 a, __m512 b) {
181   // CHECK-LABEL: test_mm512_cmp_ps_mask_false_os
182   // CHECK: call <16 x i1> @llvm.x86.avx512.cmp.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 27, i32 4)
183   return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OS);
184 }
185 
test_mm512_cmp_ps_mask_neq_os(__m512 a,__m512 b)186 __mmask16 test_mm512_cmp_ps_mask_neq_os(__m512 a, __m512 b) {
187   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_os
188   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
189   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OS);
190 }
191 
test_mm512_cmp_ps_mask_ge_oq(__m512 a,__m512 b)192 __mmask16 test_mm512_cmp_ps_mask_ge_oq(__m512 a, __m512 b) {
193   // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_oq
194   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
195   return _mm512_cmp_ps_mask(a, b, _CMP_GE_OQ);
196 }
197 
test_mm512_cmp_ps_mask_gt_oq(__m512 a,__m512 b)198 __mmask16 test_mm512_cmp_ps_mask_gt_oq(__m512 a, __m512 b) {
199   // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_oq
200   // CHECK: call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
201   return _mm512_cmp_ps_mask(a, b, _CMP_GT_OQ);
202 }
203 
test_mm512_cmp_ps_mask_true_us(__m512 a,__m512 b)204 __mmask16 test_mm512_cmp_ps_mask_true_us(__m512 a, __m512 b) {
205   // CHECK-LABEL: test_mm512_cmp_ps_mask_true_us
206   // CHECK: call <16 x i1> @llvm.x86.avx512.cmp.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 31, i32 4)
207   return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_US);
208 }
209 
test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m,__m512 a,__m512 b)210 __mmask16 test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m, __m512 a, __m512 b) {
211   // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask_eq_oq
212   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
213   // CHECK: and <16 x i1> [[CMP]], {{.*}}
214   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
215 }
216 
test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m,__m512 a,__m512 b)217 __mmask16 test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m, __m512 a, __m512 b) {
218   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_os
219   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
220   // CHECK: and <16 x i1> [[CMP]], {{.*}}
221   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
222 }
223 
test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m,__m512 a,__m512 b)224 __mmask16 test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m, __m512 a, __m512 b) {
225   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_os
226   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
227   // CHECK: and <16 x i1> [[CMP]], {{.*}}
228   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
229 }
230 
test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m,__m512 a,__m512 b)231 __mmask16 test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m, __m512 a, __m512 b) {
232   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_q
233   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
234   // CHECK: and <16 x i1> [[CMP]], {{.*}}
235   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
236 }
237 
test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m,__m512 a,__m512 b)238 __mmask16 test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m, __m512 a, __m512 b) {
239   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_uq
240   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
241   // CHECK: and <16 x i1> [[CMP]], {{.*}}
242   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
243 }
244 
test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m,__m512 a,__m512 b)245 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m, __m512 a, __m512 b) {
246   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_us
247   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
248   // CHECK: and <16 x i1> [[CMP]], {{.*}}
249   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
250 }
251 
test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m,__m512 a,__m512 b)252 __mmask16 test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m, __m512 a, __m512 b) {
253   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_us
254   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
255   // CHECK: and <16 x i1> [[CMP]], {{.*}}
256   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
257 }
258 
test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m,__m512 a,__m512 b)259 __mmask16 test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m, __m512 a, __m512 b) {
260   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_q
261   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
262   // CHECK: and <16 x i1> [[CMP]], {{.*}}
263   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
264 }
265 
test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m,__m512 a,__m512 b)266 __mmask16 test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m, __m512 a, __m512 b) {
267   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_uq
268   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
269   // CHECK: and <16 x i1> [[CMP]], {{.*}}
270   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
271 }
272 
test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m,__m512 a,__m512 b)273 __mmask16 test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m, __m512 a, __m512 b) {
274   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_us
275   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
276   // CHECK: and <16 x i1> [[CMP]], {{.*}}
277   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
278 }
279 
test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m,__m512 a,__m512 b)280 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m, __m512 a, __m512 b) {
281   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_us
282   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
283   // CHECK: and <16 x i1> [[CMP]], {{.*}}
284   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
285 }
286 
test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m,__m512 a,__m512 b)287 __mmask16 test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m, __m512 a, __m512 b) {
288   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_oq
289   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.x86.avx512.cmp.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 11, i32 4)
290   // CHECK: and <16 x i1> [[CMP]], {{.*}}
291   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
292 }
293 
test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m,__m512 a,__m512 b)294 __mmask16 test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m, __m512 a, __m512 b) {
295   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_oq
296   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
297   // CHECK: and <16 x i1> [[CMP]], {{.*}}
298   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
299 }
300 
test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m,__m512 a,__m512 b)301 __mmask16 test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m, __m512 a, __m512 b) {
302   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_os
303   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
304   // CHECK: and <16 x i1> [[CMP]], {{.*}}
305   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
306 }
307 
test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m,__m512 a,__m512 b)308 __mmask16 test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m, __m512 a, __m512 b) {
309   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_os
310   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
311   // CHECK: and <16 x i1> [[CMP]], {{.*}}
312   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
313 }
314 
test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m,__m512 a,__m512 b)315 __mmask16 test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m, __m512 a, __m512 b) {
316   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_uq
317   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.x86.avx512.cmp.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 15, i32 4)
318   // CHECK: and <16 x i1> [[CMP]], {{.*}}
319   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
320 }
321 
test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m,__m512 a,__m512 b)322 __mmask16 test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m, __m512 a, __m512 b) {
323   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_os
324   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
325   // CHECK: and <16 x i1> [[CMP]], {{.*}}
326   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
327 }
328 
test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m,__m512 a,__m512 b)329 __mmask16 test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m, __m512 a, __m512 b) {
330   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_oq
331   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
332   // CHECK: and <16 x i1> [[CMP]], {{.*}}
333   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
334 }
335 
test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m,__m512 a,__m512 b)336 __mmask16 test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m, __m512 a, __m512 b) {
337   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_oq
338   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
339   // CHECK: and <16 x i1> [[CMP]], {{.*}}
340   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
341 }
342 
test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m,__m512 a,__m512 b)343 __mmask16 test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m, __m512 a, __m512 b) {
344   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_s
345   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
346   // CHECK: and <16 x i1> [[CMP]], {{.*}}
347   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
348 }
349 
test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m,__m512 a,__m512 b)350 __mmask16 test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m, __m512 a, __m512 b) {
351   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_us
352   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
353   // CHECK: and <16 x i1> [[CMP]], {{.*}}
354   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
355 }
356 
test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m,__m512 a,__m512 b)357 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m, __m512 a, __m512 b) {
358   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_uq
359   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
360   // CHECK: and <16 x i1> [[CMP]], {{.*}}
361   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
362 }
363 
test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m,__m512 a,__m512 b)364 __mmask16 test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m, __m512 a, __m512 b) {
365   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_uq
366   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
367   // CHECK: and <16 x i1> [[CMP]], {{.*}}
368   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
369 }
370 
test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m,__m512 a,__m512 b)371 __mmask16 test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m, __m512 a, __m512 b) {
372   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_s
373   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
374   // CHECK: and <16 x i1> [[CMP]], {{.*}}
375   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
376 }
377 
test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m,__m512 a,__m512 b)378 __mmask16 test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m, __m512 a, __m512 b) {
379   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_us
380   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
381   // CHECK: and <16 x i1> [[CMP]], {{.*}}
382   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
383 }
384 
test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m,__m512 a,__m512 b)385 __mmask16 test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m, __m512 a, __m512 b) {
386   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_uq
387   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
388   // CHECK: and <16 x i1> [[CMP]], {{.*}}
389   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
390 }
391 
test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m,__m512 a,__m512 b)392 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m, __m512 a, __m512 b) {
393   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_uq
394   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
395   // CHECK: and <16 x i1> [[CMP]], {{.*}}
396   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
397 }
398 
test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m,__m512 a,__m512 b)399 __mmask16 test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m, __m512 a, __m512 b) {
400   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_os
401   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.x86.avx512.cmp.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 27, i32 4)
402   // CHECK: and <16 x i1> [[CMP]], {{.*}}
403   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
404 }
405 
test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m,__m512 a,__m512 b)406 __mmask16 test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m, __m512 a, __m512 b) {
407   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_os
408   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmps.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
409   // CHECK: and <16 x i1> [[CMP]], {{.*}}
410   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
411 }
412 
test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m,__m512 a,__m512 b)413 __mmask16 test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m, __m512 a, __m512 b) {
414   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_oq
415   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
416   // CHECK: and <16 x i1> [[CMP]], {{.*}}
417   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
418 }
419 
test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m,__m512 a,__m512 b)420 __mmask16 test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m, __m512 a, __m512 b) {
421   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_oq
422   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.experimental.constrained.fcmp.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
423   // CHECK: and <16 x i1> [[CMP]], {{.*}}
424   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
425 }
426 
test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m,__m512 a,__m512 b)427 __mmask16 test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m, __m512 a, __m512 b) {
428   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_us
429   // CHECK: [[CMP:%.*]] = call <16 x i1> @llvm.x86.avx512.cmp.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 31, i32 4)
430   // CHECK: and <16 x i1> [[CMP]], {{.*}}
431   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
432 }
433 
test_mm512_cmp_round_pd_mask(__m512d a,__m512d b)434 __mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) {
435   // CHECK-LABEL: @test_mm512_cmp_round_pd_mask
436   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
437   return _mm512_cmp_round_pd_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
438 }
439 
test_mm512_mask_cmp_round_pd_mask(__mmask8 m,__m512d a,__m512d b)440 __mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) {
441   // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask
442   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
443   // CHECK: and <8 x i1> [[CMP]], {{.*}}
444   return _mm512_mask_cmp_round_pd_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
445 }
446 
test_mm512_cmp_pd_mask_eq_oq(__m512d a,__m512d b)447 __mmask8 test_mm512_cmp_pd_mask_eq_oq(__m512d a, __m512d b) {
448   // CHECK-LABEL: @test_mm512_cmp_pd_mask_eq_oq
449   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
450   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OQ);
451 }
452 
test_mm512_cmp_pd_mask_lt_os(__m512d a,__m512d b)453 __mmask8 test_mm512_cmp_pd_mask_lt_os(__m512d a, __m512d b) {
454   // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_os
455   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
456   return _mm512_cmp_pd_mask(a, b, _CMP_LT_OS);
457 }
458 
test_mm512_cmp_pd_mask_le_os(__m512d a,__m512d b)459 __mmask8 test_mm512_cmp_pd_mask_le_os(__m512d a, __m512d b) {
460   // CHECK-LABEL: test_mm512_cmp_pd_mask_le_os
461   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
462   return _mm512_cmp_pd_mask(a, b, _CMP_LE_OS);
463 }
464 
test_mm512_cmp_pd_mask_unord_q(__m512d a,__m512d b)465 __mmask8 test_mm512_cmp_pd_mask_unord_q(__m512d a, __m512d b) {
466   // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_q
467   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
468   return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_Q);
469 }
470 
test_mm512_cmp_pd_mask_neq_uq(__m512d a,__m512d b)471 __mmask8 test_mm512_cmp_pd_mask_neq_uq(__m512d a, __m512d b) {
472   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_uq
473   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
474   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
475 }
476 
test_mm512_cmp_pd_mask_nlt_us(__m512d a,__m512d b)477 __mmask8 test_mm512_cmp_pd_mask_nlt_us(__m512d a, __m512d b) {
478   // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_us
479   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
480   return _mm512_cmp_pd_mask(a, b, _CMP_NLT_US);
481 }
482 
test_mm512_cmp_pd_mask_nle_us(__m512d a,__m512d b)483 __mmask8 test_mm512_cmp_pd_mask_nle_us(__m512d a, __m512d b) {
484   // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_us
485   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
486   return _mm512_cmp_pd_mask(a, b, _CMP_NLE_US);
487 }
488 
test_mm512_cmp_pd_mask_ord_q(__m512d a,__m512d b)489 __mmask8 test_mm512_cmp_pd_mask_ord_q(__m512d a, __m512d b) {
490   // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_q
491   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
492   return _mm512_cmp_pd_mask(a, b, _CMP_ORD_Q);
493 }
494 
test_mm512_cmp_pd_mask_eq_uq(__m512d a,__m512d b)495 __mmask8 test_mm512_cmp_pd_mask_eq_uq(__m512d a, __m512d b) {
496   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_uq
497   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
498   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_UQ);
499 }
500 
test_mm512_cmp_pd_mask_nge_us(__m512d a,__m512d b)501 __mmask8 test_mm512_cmp_pd_mask_nge_us(__m512d a, __m512d b) {
502   // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_us
503   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
504   return _mm512_cmp_pd_mask(a, b, _CMP_NGE_US);
505 }
506 
test_mm512_cmp_pd_mask_ngt_us(__m512d a,__m512d b)507 __mmask8 test_mm512_cmp_pd_mask_ngt_us(__m512d a, __m512d b) {
508   // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_us
509   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
510   return _mm512_cmp_pd_mask(a, b, _CMP_NGT_US);
511 }
512 
test_mm512_cmp_pd_mask_false_oq(__m512d a,__m512d b)513 __mmask8 test_mm512_cmp_pd_mask_false_oq(__m512d a, __m512d b) {
514   // CHECK-LABEL: test_mm512_cmp_pd_mask_false_oq
515   // CHECK: call <8 x i1> @llvm.x86.avx512.cmp.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 11, i32 4)
516   return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
517 }
518 
test_mm512_cmp_pd_mask_neq_oq(__m512d a,__m512d b)519 __mmask8 test_mm512_cmp_pd_mask_neq_oq(__m512d a, __m512d b) {
520   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_oq
521   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
522   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
523 }
524 
test_mm512_cmp_pd_mask_ge_os(__m512d a,__m512d b)525 __mmask8 test_mm512_cmp_pd_mask_ge_os(__m512d a, __m512d b) {
526   // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_os
527   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
528   return _mm512_cmp_pd_mask(a, b, _CMP_GE_OS);
529 }
530 
test_mm512_cmp_pd_mask_gt_os(__m512d a,__m512d b)531 __mmask8 test_mm512_cmp_pd_mask_gt_os(__m512d a, __m512d b) {
532   // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_os
533   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
534   return _mm512_cmp_pd_mask(a, b, _CMP_GT_OS);
535 }
536 
test_mm512_cmp_pd_mask_true_uq(__m512d a,__m512d b)537 __mmask8 test_mm512_cmp_pd_mask_true_uq(__m512d a, __m512d b) {
538   // CHECK-LABEL: test_mm512_cmp_pd_mask_true_uq
539   // CHECK: call <8 x i1> @llvm.x86.avx512.cmp.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 15, i32 4)
540   return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
541 }
542 
test_mm512_cmp_pd_mask_eq_os(__m512d a,__m512d b)543 __mmask8 test_mm512_cmp_pd_mask_eq_os(__m512d a, __m512d b) {
544   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_os
545   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
546   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OS);
547 }
548 
test_mm512_cmp_pd_mask_lt_oq(__m512d a,__m512d b)549 __mmask8 test_mm512_cmp_pd_mask_lt_oq(__m512d a, __m512d b) {
550   // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_oq
551   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
552   return _mm512_cmp_pd_mask(a, b, _CMP_LT_OQ);
553 }
554 
test_mm512_cmp_pd_mask_le_oq(__m512d a,__m512d b)555 __mmask8 test_mm512_cmp_pd_mask_le_oq(__m512d a, __m512d b) {
556   // CHECK-LABEL: test_mm512_cmp_pd_mask_le_oq
557   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
558   return _mm512_cmp_pd_mask(a, b, _CMP_LE_OQ);
559 }
560 
test_mm512_cmp_pd_mask_unord_s(__m512d a,__m512d b)561 __mmask8 test_mm512_cmp_pd_mask_unord_s(__m512d a, __m512d b) {
562   // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_s
563   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
564   return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_S);
565 }
566 
test_mm512_cmp_pd_mask_neq_us(__m512d a,__m512d b)567 __mmask8 test_mm512_cmp_pd_mask_neq_us(__m512d a, __m512d b) {
568   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_us
569   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
570   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_US);
571 }
572 
test_mm512_cmp_pd_mask_nlt_uq(__m512d a,__m512d b)573 __mmask8 test_mm512_cmp_pd_mask_nlt_uq(__m512d a, __m512d b) {
574   // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_uq
575   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
576   return _mm512_cmp_pd_mask(a, b, _CMP_NLT_UQ);
577 }
578 
test_mm512_cmp_pd_mask_nle_uq(__m512d a,__m512d b)579 __mmask8 test_mm512_cmp_pd_mask_nle_uq(__m512d a, __m512d b) {
580   // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_uq
581   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
582   return _mm512_cmp_pd_mask(a, b, _CMP_NLE_UQ);
583 }
584 
test_mm512_cmp_pd_mask_ord_s(__m512d a,__m512d b)585 __mmask8 test_mm512_cmp_pd_mask_ord_s(__m512d a, __m512d b) {
586   // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_s
587   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
588   return _mm512_cmp_pd_mask(a, b, _CMP_ORD_S);
589 }
590 
test_mm512_cmp_pd_mask_eq_us(__m512d a,__m512d b)591 __mmask8 test_mm512_cmp_pd_mask_eq_us(__m512d a, __m512d b) {
592   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_us
593   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
594   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_US);
595 }
596 
test_mm512_cmp_pd_mask_nge_uq(__m512d a,__m512d b)597 __mmask8 test_mm512_cmp_pd_mask_nge_uq(__m512d a, __m512d b) {
598   // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_uq
599   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
600   return _mm512_cmp_pd_mask(a, b, _CMP_NGE_UQ);
601 }
602 
test_mm512_cmp_pd_mask_ngt_uq(__m512d a,__m512d b)603 __mmask8 test_mm512_cmp_pd_mask_ngt_uq(__m512d a, __m512d b) {
604   // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_uq
605   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
606   return _mm512_cmp_pd_mask(a, b, _CMP_NGT_UQ);
607 }
608 
test_mm512_cmp_pd_mask_false_os(__m512d a,__m512d b)609 __mmask8 test_mm512_cmp_pd_mask_false_os(__m512d a, __m512d b) {
610   // CHECK-LABEL: test_mm512_cmp_pd_mask_false_os
611   // CHECK: call <8 x i1> @llvm.x86.avx512.cmp.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 27, i32 4)
612   return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OS);
613 }
614 
test_mm512_cmp_pd_mask_neq_os(__m512d a,__m512d b)615 __mmask8 test_mm512_cmp_pd_mask_neq_os(__m512d a, __m512d b) {
616   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_os
617   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
618   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OS);
619 }
620 
test_mm512_cmp_pd_mask_ge_oq(__m512d a,__m512d b)621 __mmask8 test_mm512_cmp_pd_mask_ge_oq(__m512d a, __m512d b) {
622   // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_oq
623   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
624   return _mm512_cmp_pd_mask(a, b, _CMP_GE_OQ);
625 }
626 
test_mm512_cmp_pd_mask_gt_oq(__m512d a,__m512d b)627 __mmask8 test_mm512_cmp_pd_mask_gt_oq(__m512d a, __m512d b) {
628   // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_oq
629   // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
630   return _mm512_cmp_pd_mask(a, b, _CMP_GT_OQ);
631 }
632 
test_mm512_cmp_pd_mask_true_us(__m512d a,__m512d b)633 __mmask8 test_mm512_cmp_pd_mask_true_us(__m512d a, __m512d b) {
634   // CHECK-LABEL: test_mm512_cmp_pd_mask_true_us
635   // CHECK: call <8 x i1> @llvm.x86.avx512.cmp.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 31, i32 4)
636   return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_US);
637 }
638 
test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m,__m512d a,__m512d b)639 __mmask8 test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m512d a, __m512d b) {
640   // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask_eq_oq
641   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
642   // CHECK: and <8 x i1> [[CMP]], {{.*}}
643   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
644 }
645 
test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m,__m512d a,__m512d b)646 __mmask8 test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m, __m512d a, __m512d b) {
647   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_os
648   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
649   // CHECK: and <8 x i1> [[CMP]], {{.*}}
650   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
651 }
652 
test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m,__m512d a,__m512d b)653 __mmask8 test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m, __m512d a, __m512d b) {
654   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_os
655   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
656   // CHECK: and <8 x i1> [[CMP]], {{.*}}
657   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
658 }
659 
test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m,__m512d a,__m512d b)660 __mmask8 test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m, __m512d a, __m512d b) {
661   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_q
662   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
663   // CHECK: and <8 x i1> [[CMP]], {{.*}}
664   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
665 }
666 
test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m,__m512d a,__m512d b)667 __mmask8 test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m512d a, __m512d b) {
668   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_uq
669   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
670   // CHECK: and <8 x i1> [[CMP]], {{.*}}
671   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
672 }
673 
test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m,__m512d a,__m512d b)674 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m512d a, __m512d b) {
675   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_us
676   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
677   // CHECK: and <8 x i1> [[CMP]], {{.*}}
678   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
679 }
680 
test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m,__m512d a,__m512d b)681 __mmask8 test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m, __m512d a, __m512d b) {
682   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_us
683   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
684   // CHECK: and <8 x i1> [[CMP]], {{.*}}
685   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
686 }
687 
test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m,__m512d a,__m512d b)688 __mmask8 test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m, __m512d a, __m512d b) {
689   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_q
690   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
691   // CHECK: and <8 x i1> [[CMP]], {{.*}}
692   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
693 }
694 
test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m,__m512d a,__m512d b)695 __mmask8 test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m512d a, __m512d b) {
696   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_uq
697   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
698   // CHECK: and <8 x i1> [[CMP]], {{.*}}
699   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
700 }
701 
test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m,__m512d a,__m512d b)702 __mmask8 test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m, __m512d a, __m512d b) {
703   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_us
704   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
705   // CHECK: and <8 x i1> [[CMP]], {{.*}}
706   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
707 }
708 
test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m,__m512d a,__m512d b)709 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m512d a, __m512d b) {
710   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_us
711   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
712   // CHECK: and <8 x i1> [[CMP]], {{.*}}
713   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
714 }
715 
test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m,__m512d a,__m512d b)716 __mmask8 test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m, __m512d a, __m512d b) {
717   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_oq
718   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.x86.avx512.cmp.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 11, i32 4)
719   // CHECK: and <8 x i1> [[CMP]], {{.*}}
720   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
721 }
722 
test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m,__m512d a,__m512d b)723 __mmask8 test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m512d a, __m512d b) {
724   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_oq
725   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
726   // CHECK: and <8 x i1> [[CMP]], {{.*}}
727   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
728 }
729 
test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m,__m512d a,__m512d b)730 __mmask8 test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m, __m512d a, __m512d b) {
731   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_os
732   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
733   // CHECK: and <8 x i1> [[CMP]], {{.*}}
734   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
735 }
736 
test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m,__m512d a,__m512d b)737 __mmask8 test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m, __m512d a, __m512d b) {
738   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_os
739   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
740   // CHECK: and <8 x i1> [[CMP]], {{.*}}
741   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
742 }
743 
test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m,__m512d a,__m512d b)744 __mmask8 test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m, __m512d a, __m512d b) {
745   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_uq
746   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.x86.avx512.cmp.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 15, i32 4)
747   // CHECK: and <8 x i1> [[CMP]], {{.*}}
748   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
749 }
750 
test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m,__m512d a,__m512d b)751 __mmask8 test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m, __m512d a, __m512d b) {
752   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_os
753   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
754   // CHECK: and <8 x i1> [[CMP]], {{.*}}
755   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
756 }
757 
test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m,__m512d a,__m512d b)758 __mmask8 test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m512d a, __m512d b) {
759   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_oq
760   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
761   // CHECK: and <8 x i1> [[CMP]], {{.*}}
762   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
763 }
764 
test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m,__m512d a,__m512d b)765 __mmask8 test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m, __m512d a, __m512d b) {
766   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_oq
767   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
768   // CHECK: and <8 x i1> [[CMP]], {{.*}}
769   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
770 }
771 
test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m,__m512d a,__m512d b)772 __mmask8 test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m, __m512d a, __m512d b) {
773   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_s
774   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
775   // CHECK: and <8 x i1> [[CMP]], {{.*}}
776   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
777 }
778 
test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m,__m512d a,__m512d b)779 __mmask8 test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m, __m512d a, __m512d b) {
780   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_us
781   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
782   // CHECK: and <8 x i1> [[CMP]], {{.*}}
783   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
784 }
785 
test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m,__m512d a,__m512d b)786 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m512d a, __m512d b) {
787   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_uq
788   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
789   // CHECK: and <8 x i1> [[CMP]], {{.*}}
790   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
791 }
792 
test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m,__m512d a,__m512d b)793 __mmask8 test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m512d a, __m512d b) {
794   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_uq
795   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
796   // CHECK: and <8 x i1> [[CMP]], {{.*}}
797   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
798 }
799 
test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m,__m512d a,__m512d b)800 __mmask8 test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m, __m512d a, __m512d b) {
801   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_s
802   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
803   // CHECK: and <8 x i1> [[CMP]], {{.*}}
804   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
805 }
806 
test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m,__m512d a,__m512d b)807 __mmask8 test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m, __m512d a, __m512d b) {
808   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_us
809   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
810   // CHECK: and <8 x i1> [[CMP]], {{.*}}
811   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
812 }
813 
test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m,__m512d a,__m512d b)814 __mmask8 test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m512d a, __m512d b) {
815   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_uq
816   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
817   // CHECK: and <8 x i1> [[CMP]], {{.*}}
818   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
819 }
820 
test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m,__m512d a,__m512d b)821 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m512d a, __m512d b) {
822   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_uq
823   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
824   // CHECK: and <8 x i1> [[CMP]], {{.*}}
825   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
826 }
827 
test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m,__m512d a,__m512d b)828 __mmask8 test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m, __m512d a, __m512d b) {
829   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_os
830   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.x86.avx512.cmp.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 27, i32 4)
831   // CHECK: and <8 x i1> [[CMP]], {{.*}}
832   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
833 }
834 
test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m,__m512d a,__m512d b)835 __mmask8 test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m, __m512d a, __m512d b) {
836   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_os
837   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
838   // CHECK: and <8 x i1> [[CMP]], {{.*}}
839   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
840 }
841 
test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m,__m512d a,__m512d b)842 __mmask8 test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m512d a, __m512d b) {
843   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_oq
844   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
845   // CHECK: and <8 x i1> [[CMP]], {{.*}}
846   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
847 }
848 
test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m,__m512d a,__m512d b)849 __mmask8 test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m512d a, __m512d b) {
850   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_oq
851   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
852   // CHECK: and <8 x i1> [[CMP]], {{.*}}
853   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
854 }
855 
test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m,__m512d a,__m512d b)856 __mmask8 test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m, __m512d a, __m512d b) {
857   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_us
858   // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.x86.avx512.cmp.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 31, i32 4)
859   // CHECK: and <8 x i1> [[CMP]], {{.*}}
860   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
861 }
862