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