1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -fexperimental-new-pass-manager -triple=x86_64-apple-darwin -target-feature +avx512f -target-feature +avx512vl -emit-llvm -ffp-exception-behavior=strict -o - -Wall -Werror | FileCheck %s
2
3 #include <immintrin.h>
4
test_mm256_cmp_ps_mask_eq_oq(__m256 a,__m256 b)5 __mmask8 test_mm256_cmp_ps_mask_eq_oq(__m256 a, __m256 b) {
6 // CHECK-LABEL: @test_mm256_cmp_ps_mask_eq_oq
7 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
8 return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OQ);
9 }
10
test_mm256_cmp_ps_mask_lt_os(__m256 a,__m256 b)11 __mmask8 test_mm256_cmp_ps_mask_lt_os(__m256 a, __m256 b) {
12 // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_os
13 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
14 return _mm256_cmp_ps_mask(a, b, _CMP_LT_OS);
15 }
16
test_mm256_cmp_ps_mask_le_os(__m256 a,__m256 b)17 __mmask8 test_mm256_cmp_ps_mask_le_os(__m256 a, __m256 b) {
18 // CHECK-LABEL: test_mm256_cmp_ps_mask_le_os
19 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
20 return _mm256_cmp_ps_mask(a, b, _CMP_LE_OS);
21 }
22
test_mm256_cmp_ps_mask_unord_q(__m256 a,__m256 b)23 __mmask8 test_mm256_cmp_ps_mask_unord_q(__m256 a, __m256 b) {
24 // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_q
25 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
26 return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_Q);
27 }
28
test_mm256_cmp_ps_mask_neq_uq(__m256 a,__m256 b)29 __mmask8 test_mm256_cmp_ps_mask_neq_uq(__m256 a, __m256 b) {
30 // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_uq
31 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
32 return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
33 }
34
test_mm256_cmp_ps_mask_nlt_us(__m256 a,__m256 b)35 __mmask8 test_mm256_cmp_ps_mask_nlt_us(__m256 a, __m256 b) {
36 // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_us
37 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
38 return _mm256_cmp_ps_mask(a, b, _CMP_NLT_US);
39 }
40
test_mm256_cmp_ps_mask_nle_us(__m256 a,__m256 b)41 __mmask8 test_mm256_cmp_ps_mask_nle_us(__m256 a, __m256 b) {
42 // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_us
43 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
44 return _mm256_cmp_ps_mask(a, b, _CMP_NLE_US);
45 }
46
test_mm256_cmp_ps_mask_ord_q(__m256 a,__m256 b)47 __mmask8 test_mm256_cmp_ps_mask_ord_q(__m256 a, __m256 b) {
48 // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_q
49 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
50 return _mm256_cmp_ps_mask(a, b, _CMP_ORD_Q);
51 }
52
test_mm256_cmp_ps_mask_eq_uq(__m256 a,__m256 b)53 __mmask8 test_mm256_cmp_ps_mask_eq_uq(__m256 a, __m256 b) {
54 // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_uq
55 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
56 return _mm256_cmp_ps_mask(a, b, _CMP_EQ_UQ);
57 }
58
test_mm256_cmp_ps_mask_nge_us(__m256 a,__m256 b)59 __mmask8 test_mm256_cmp_ps_mask_nge_us(__m256 a, __m256 b) {
60 // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_us
61 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
62 return _mm256_cmp_ps_mask(a, b, _CMP_NGE_US);
63 }
64
test_mm256_cmp_ps_mask_ngt_us(__m256 a,__m256 b)65 __mmask8 test_mm256_cmp_ps_mask_ngt_us(__m256 a, __m256 b) {
66 // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_us
67 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
68 return _mm256_cmp_ps_mask(a, b, _CMP_NGT_US);
69 }
70
test_mm256_cmp_ps_mask_false_oq(__m256 a,__m256 b)71 __mmask8 test_mm256_cmp_ps_mask_false_oq(__m256 a, __m256 b) {
72 // CHECK-LABEL: test_mm256_cmp_ps_mask_false_oq
73 // CHECK: call <8 x i1> @llvm.x86.avx512.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 11)
74 return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
75 }
76
test_mm256_cmp_ps_mask_neq_oq(__m256 a,__m256 b)77 __mmask8 test_mm256_cmp_ps_mask_neq_oq(__m256 a, __m256 b) {
78 // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_oq
79 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
80 return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
81 }
82
test_mm256_cmp_ps_mask_ge_os(__m256 a,__m256 b)83 __mmask8 test_mm256_cmp_ps_mask_ge_os(__m256 a, __m256 b) {
84 // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_os
85 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
86 return _mm256_cmp_ps_mask(a, b, _CMP_GE_OS);
87 }
88
test_mm256_cmp_ps_mask_gt_os(__m256 a,__m256 b)89 __mmask8 test_mm256_cmp_ps_mask_gt_os(__m256 a, __m256 b) {
90 // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_os
91 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
92 return _mm256_cmp_ps_mask(a, b, _CMP_GT_OS);
93 }
94
test_mm256_cmp_ps_mask_true_uq(__m256 a,__m256 b)95 __mmask8 test_mm256_cmp_ps_mask_true_uq(__m256 a, __m256 b) {
96 // CHECK-LABEL: test_mm256_cmp_ps_mask_true_uq
97 // CHECK: call <8 x i1> @llvm.x86.avx512.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 15)
98 return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
99 }
100
test_mm256_cmp_ps_mask_eq_os(__m256 a,__m256 b)101 __mmask8 test_mm256_cmp_ps_mask_eq_os(__m256 a, __m256 b) {
102 // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_os
103 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
104 return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OS);
105 }
106
test_mm256_cmp_ps_mask_lt_oq(__m256 a,__m256 b)107 __mmask8 test_mm256_cmp_ps_mask_lt_oq(__m256 a, __m256 b) {
108 // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_oq
109 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
110 return _mm256_cmp_ps_mask(a, b, _CMP_LT_OQ);
111 }
112
test_mm256_cmp_ps_mask_le_oq(__m256 a,__m256 b)113 __mmask8 test_mm256_cmp_ps_mask_le_oq(__m256 a, __m256 b) {
114 // CHECK-LABEL: test_mm256_cmp_ps_mask_le_oq
115 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
116 return _mm256_cmp_ps_mask(a, b, _CMP_LE_OQ);
117 }
118
test_mm256_cmp_ps_mask_unord_s(__m256 a,__m256 b)119 __mmask8 test_mm256_cmp_ps_mask_unord_s(__m256 a, __m256 b) {
120 // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_s
121 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
122 return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_S);
123 }
124
test_mm256_cmp_ps_mask_neq_us(__m256 a,__m256 b)125 __mmask8 test_mm256_cmp_ps_mask_neq_us(__m256 a, __m256 b) {
126 // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_us
127 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
128 return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_US);
129 }
130
test_mm256_cmp_ps_mask_nlt_uq(__m256 a,__m256 b)131 __mmask8 test_mm256_cmp_ps_mask_nlt_uq(__m256 a, __m256 b) {
132 // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_uq
133 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
134 return _mm256_cmp_ps_mask(a, b, _CMP_NLT_UQ);
135 }
136
test_mm256_cmp_ps_mask_nle_uq(__m256 a,__m256 b)137 __mmask8 test_mm256_cmp_ps_mask_nle_uq(__m256 a, __m256 b) {
138 // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_uq
139 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
140 return _mm256_cmp_ps_mask(a, b, _CMP_NLE_UQ);
141 }
142
test_mm256_cmp_ps_mask_ord_s(__m256 a,__m256 b)143 __mmask8 test_mm256_cmp_ps_mask_ord_s(__m256 a, __m256 b) {
144 // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_s
145 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
146 return _mm256_cmp_ps_mask(a, b, _CMP_ORD_S);
147 }
148
test_mm256_cmp_ps_mask_eq_us(__m256 a,__m256 b)149 __mmask8 test_mm256_cmp_ps_mask_eq_us(__m256 a, __m256 b) {
150 // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_us
151 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
152 return _mm256_cmp_ps_mask(a, b, _CMP_EQ_US);
153 }
154
test_mm256_cmp_ps_mask_nge_uq(__m256 a,__m256 b)155 __mmask8 test_mm256_cmp_ps_mask_nge_uq(__m256 a, __m256 b) {
156 // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_uq
157 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
158 return _mm256_cmp_ps_mask(a, b, _CMP_NGE_UQ);
159 }
160
test_mm256_cmp_ps_mask_ngt_uq(__m256 a,__m256 b)161 __mmask8 test_mm256_cmp_ps_mask_ngt_uq(__m256 a, __m256 b) {
162 // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_uq
163 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
164 return _mm256_cmp_ps_mask(a, b, _CMP_NGT_UQ);
165 }
166
test_mm256_cmp_ps_mask_false_os(__m256 a,__m256 b)167 __mmask8 test_mm256_cmp_ps_mask_false_os(__m256 a, __m256 b) {
168 // CHECK-LABEL: test_mm256_cmp_ps_mask_false_os
169 // CHECK: call <8 x i1> @llvm.x86.avx512.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 27)
170 return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OS);
171 }
172
test_mm256_cmp_ps_mask_neq_os(__m256 a,__m256 b)173 __mmask8 test_mm256_cmp_ps_mask_neq_os(__m256 a, __m256 b) {
174 // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_os
175 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
176 return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OS);
177 }
178
test_mm256_cmp_ps_mask_ge_oq(__m256 a,__m256 b)179 __mmask8 test_mm256_cmp_ps_mask_ge_oq(__m256 a, __m256 b) {
180 // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_oq
181 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
182 return _mm256_cmp_ps_mask(a, b, _CMP_GE_OQ);
183 }
184
test_mm256_cmp_ps_mask_gt_oq(__m256 a,__m256 b)185 __mmask8 test_mm256_cmp_ps_mask_gt_oq(__m256 a, __m256 b) {
186 // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_oq
187 // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
188 return _mm256_cmp_ps_mask(a, b, _CMP_GT_OQ);
189 }
190
test_mm256_cmp_ps_mask_true_us(__m256 a,__m256 b)191 __mmask8 test_mm256_cmp_ps_mask_true_us(__m256 a, __m256 b) {
192 // CHECK-LABEL: test_mm256_cmp_ps_mask_true_us
193 // CHECK: call <8 x i1> @llvm.x86.avx512.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 31)
194 return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_US);
195 }
196
test_mm256_mask_cmp_ps_mask_eq_oq(__mmask8 m,__m256 a,__m256 b)197 __mmask8 test_mm256_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m256 a, __m256 b) {
198 // CHECK-LABEL: @test_mm256_mask_cmp_ps_mask_eq_oq
199 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
200 // CHECK: and <8 x i1> [[CMP]], {{.*}}
201 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
202 }
203
test_mm256_mask_cmp_ps_mask_lt_os(__mmask8 m,__m256 a,__m256 b)204 __mmask8 test_mm256_mask_cmp_ps_mask_lt_os(__mmask8 m, __m256 a, __m256 b) {
205 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_os
206 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
207 // CHECK: and <8 x i1> [[CMP]], {{.*}}
208 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
209 }
210
test_mm256_mask_cmp_ps_mask_le_os(__mmask8 m,__m256 a,__m256 b)211 __mmask8 test_mm256_mask_cmp_ps_mask_le_os(__mmask8 m, __m256 a, __m256 b) {
212 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_os
213 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
214 // CHECK: and <8 x i1> [[CMP]], {{.*}}
215 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
216 }
217
test_mm256_mask_cmp_ps_mask_unord_q(__mmask8 m,__m256 a,__m256 b)218 __mmask8 test_mm256_mask_cmp_ps_mask_unord_q(__mmask8 m, __m256 a, __m256 b) {
219 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_q
220 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
221 // CHECK: and <8 x i1> [[CMP]], {{.*}}
222 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
223 }
224
test_mm256_mask_cmp_ps_mask_neq_uq(__mmask8 m,__m256 a,__m256 b)225 __mmask8 test_mm256_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m256 a, __m256 b) {
226 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_uq
227 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
228 // CHECK: and <8 x i1> [[CMP]], {{.*}}
229 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
230 }
231
test_mm256_mask_cmp_ps_mask_nlt_us(__mmask8 m,__m256 a,__m256 b)232 __mmask8 test_mm256_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m256 a, __m256 b) {
233 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_us
234 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
235 // CHECK: and <8 x i1> [[CMP]], {{.*}}
236 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
237 }
238
test_mm256_mask_cmp_ps_mask_nle_us(__mmask8 m,__m256 a,__m256 b)239 __mmask8 test_mm256_mask_cmp_ps_mask_nle_us(__mmask8 m, __m256 a, __m256 b) {
240 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_us
241 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
242 // CHECK: and <8 x i1> [[CMP]], {{.*}}
243 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
244 }
245
test_mm256_mask_cmp_ps_mask_ord_q(__mmask8 m,__m256 a,__m256 b)246 __mmask8 test_mm256_mask_cmp_ps_mask_ord_q(__mmask8 m, __m256 a, __m256 b) {
247 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_q
248 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
249 // CHECK: and <8 x i1> [[CMP]], {{.*}}
250 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
251 }
252
test_mm256_mask_cmp_ps_mask_eq_uq(__mmask8 m,__m256 a,__m256 b)253 __mmask8 test_mm256_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m256 a, __m256 b) {
254 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_uq
255 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
256 // CHECK: and <8 x i1> [[CMP]], {{.*}}
257 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
258 }
259
test_mm256_mask_cmp_ps_mask_nge_us(__mmask8 m,__m256 a,__m256 b)260 __mmask8 test_mm256_mask_cmp_ps_mask_nge_us(__mmask8 m, __m256 a, __m256 b) {
261 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_us
262 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
263 // CHECK: and <8 x i1> [[CMP]], {{.*}}
264 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
265 }
266
test_mm256_mask_cmp_ps_mask_ngt_us(__mmask8 m,__m256 a,__m256 b)267 __mmask8 test_mm256_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m256 a, __m256 b) {
268 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_us
269 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
270 // CHECK: and <8 x i1> [[CMP]], {{.*}}
271 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
272 }
273
test_mm256_mask_cmp_ps_mask_false_oq(__mmask8 m,__m256 a,__m256 b)274 __mmask8 test_mm256_mask_cmp_ps_mask_false_oq(__mmask8 m, __m256 a, __m256 b) {
275 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_oq
276 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.x86.avx512.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 11)
277 // CHECK: and <8 x i1> [[CMP]], {{.*}}
278 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
279 }
280
test_mm256_mask_cmp_ps_mask_neq_oq(__mmask8 m,__m256 a,__m256 b)281 __mmask8 test_mm256_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m256 a, __m256 b) {
282 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_oq
283 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
284 // CHECK: and <8 x i1> [[CMP]], {{.*}}
285 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
286 }
287
test_mm256_mask_cmp_ps_mask_ge_os(__mmask8 m,__m256 a,__m256 b)288 __mmask8 test_mm256_mask_cmp_ps_mask_ge_os(__mmask8 m, __m256 a, __m256 b) {
289 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_os
290 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
291 // CHECK: and <8 x i1> [[CMP]], {{.*}}
292 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
293 }
294
test_mm256_mask_cmp_ps_mask_gt_os(__mmask8 m,__m256 a,__m256 b)295 __mmask8 test_mm256_mask_cmp_ps_mask_gt_os(__mmask8 m, __m256 a, __m256 b) {
296 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_os
297 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
298 // CHECK: and <8 x i1> [[CMP]], {{.*}}
299 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
300 }
301
test_mm256_mask_cmp_ps_mask_true_uq(__mmask8 m,__m256 a,__m256 b)302 __mmask8 test_mm256_mask_cmp_ps_mask_true_uq(__mmask8 m, __m256 a, __m256 b) {
303 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_uq
304 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.x86.avx512.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 15)
305 // CHECK: and <8 x i1> [[CMP]], {{.*}}
306 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
307 }
308
test_mm256_mask_cmp_ps_mask_eq_os(__mmask8 m,__m256 a,__m256 b)309 __mmask8 test_mm256_mask_cmp_ps_mask_eq_os(__mmask8 m, __m256 a, __m256 b) {
310 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_os
311 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
312 // CHECK: and <8 x i1> [[CMP]], {{.*}}
313 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
314 }
315
test_mm256_mask_cmp_ps_mask_lt_oq(__mmask8 m,__m256 a,__m256 b)316 __mmask8 test_mm256_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m256 a, __m256 b) {
317 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_oq
318 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
319 // CHECK: and <8 x i1> [[CMP]], {{.*}}
320 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
321 }
322
test_mm256_mask_cmp_ps_mask_le_oq(__mmask8 m,__m256 a,__m256 b)323 __mmask8 test_mm256_mask_cmp_ps_mask_le_oq(__mmask8 m, __m256 a, __m256 b) {
324 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_oq
325 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
326 // CHECK: and <8 x i1> [[CMP]], {{.*}}
327 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
328 }
329
test_mm256_mask_cmp_ps_mask_unord_s(__mmask8 m,__m256 a,__m256 b)330 __mmask8 test_mm256_mask_cmp_ps_mask_unord_s(__mmask8 m, __m256 a, __m256 b) {
331 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_s
332 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
333 // CHECK: and <8 x i1> [[CMP]], {{.*}}
334 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
335 }
336
test_mm256_mask_cmp_ps_mask_neq_us(__mmask8 m,__m256 a,__m256 b)337 __mmask8 test_mm256_mask_cmp_ps_mask_neq_us(__mmask8 m, __m256 a, __m256 b) {
338 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_us
339 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
340 // CHECK: and <8 x i1> [[CMP]], {{.*}}
341 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
342 }
343
test_mm256_mask_cmp_ps_mask_nlt_uq(__mmask8 m,__m256 a,__m256 b)344 __mmask8 test_mm256_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m256 a, __m256 b) {
345 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_uq
346 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
347 // CHECK: and <8 x i1> [[CMP]], {{.*}}
348 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
349 }
350
test_mm256_mask_cmp_ps_mask_nle_uq(__mmask8 m,__m256 a,__m256 b)351 __mmask8 test_mm256_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m256 a, __m256 b) {
352 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_uq
353 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
354 // CHECK: and <8 x i1> [[CMP]], {{.*}}
355 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
356 }
357
test_mm256_mask_cmp_ps_mask_ord_s(__mmask8 m,__m256 a,__m256 b)358 __mmask8 test_mm256_mask_cmp_ps_mask_ord_s(__mmask8 m, __m256 a, __m256 b) {
359 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_s
360 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
361 // CHECK: and <8 x i1> [[CMP]], {{.*}}
362 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
363 }
364
test_mm256_mask_cmp_ps_mask_eq_us(__mmask8 m,__m256 a,__m256 b)365 __mmask8 test_mm256_mask_cmp_ps_mask_eq_us(__mmask8 m, __m256 a, __m256 b) {
366 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_us
367 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
368 // CHECK: and <8 x i1> [[CMP]], {{.*}}
369 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
370 }
371
test_mm256_mask_cmp_ps_mask_nge_uq(__mmask8 m,__m256 a,__m256 b)372 __mmask8 test_mm256_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m256 a, __m256 b) {
373 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_uq
374 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
375 // CHECK: and <8 x i1> [[CMP]], {{.*}}
376 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
377 }
378
test_mm256_mask_cmp_ps_mask_ngt_uq(__mmask8 m,__m256 a,__m256 b)379 __mmask8 test_mm256_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m256 a, __m256 b) {
380 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_uq
381 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
382 // CHECK: and <8 x i1> [[CMP]], {{.*}}
383 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
384 }
385
test_mm256_mask_cmp_ps_mask_false_os(__mmask8 m,__m256 a,__m256 b)386 __mmask8 test_mm256_mask_cmp_ps_mask_false_os(__mmask8 m, __m256 a, __m256 b) {
387 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_os
388 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.x86.avx512.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 27)
389 // CHECK: and <8 x i1> [[CMP]], {{.*}}
390 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
391 }
392
test_mm256_mask_cmp_ps_mask_neq_os(__mmask8 m,__m256 a,__m256 b)393 __mmask8 test_mm256_mask_cmp_ps_mask_neq_os(__mmask8 m, __m256 a, __m256 b) {
394 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_os
395 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
396 // CHECK: and <8 x i1> [[CMP]], {{.*}}
397 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
398 }
399
test_mm256_mask_cmp_ps_mask_ge_oq(__mmask8 m,__m256 a,__m256 b)400 __mmask8 test_mm256_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m256 a, __m256 b) {
401 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_oq
402 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
403 // CHECK: and <8 x i1> [[CMP]], {{.*}}
404 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
405 }
406
test_mm256_mask_cmp_ps_mask_gt_oq(__mmask8 m,__m256 a,__m256 b)407 __mmask8 test_mm256_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m256 a, __m256 b) {
408 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_oq
409 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
410 // CHECK: and <8 x i1> [[CMP]], {{.*}}
411 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
412 }
413
test_mm256_mask_cmp_ps_mask_true_us(__mmask8 m,__m256 a,__m256 b)414 __mmask8 test_mm256_mask_cmp_ps_mask_true_us(__mmask8 m, __m256 a, __m256 b) {
415 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_us
416 // CHECK: [[CMP:%.*]] = call <8 x i1> @llvm.x86.avx512.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i32 31)
417 // CHECK: and <8 x i1> [[CMP]], {{.*}}
418 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
419 }
420
test_mm256_cmp_pd_mask_eq_oq(__m256d a,__m256d b)421 __mmask8 test_mm256_cmp_pd_mask_eq_oq(__m256d a, __m256d b) {
422 // CHECK-LABEL: @test_mm256_cmp_pd_mask_eq_oq
423 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
424 return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OQ);
425 }
426
test_mm256_cmp_pd_mask_lt_os(__m256d a,__m256d b)427 __mmask8 test_mm256_cmp_pd_mask_lt_os(__m256d a, __m256d b) {
428 // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_os
429 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
430 return _mm256_cmp_pd_mask(a, b, _CMP_LT_OS);
431 }
432
test_mm256_cmp_pd_mask_le_os(__m256d a,__m256d b)433 __mmask8 test_mm256_cmp_pd_mask_le_os(__m256d a, __m256d b) {
434 // CHECK-LABEL: test_mm256_cmp_pd_mask_le_os
435 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
436 return _mm256_cmp_pd_mask(a, b, _CMP_LE_OS);
437 }
438
test_mm256_cmp_pd_mask_unord_q(__m256d a,__m256d b)439 __mmask8 test_mm256_cmp_pd_mask_unord_q(__m256d a, __m256d b) {
440 // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_q
441 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
442 return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_Q);
443 }
444
test_mm256_cmp_pd_mask_neq_uq(__m256d a,__m256d b)445 __mmask8 test_mm256_cmp_pd_mask_neq_uq(__m256d a, __m256d b) {
446 // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_uq
447 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
448 return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
449 }
450
test_mm256_cmp_pd_mask_nlt_us(__m256d a,__m256d b)451 __mmask8 test_mm256_cmp_pd_mask_nlt_us(__m256d a, __m256d b) {
452 // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_us
453 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
454 return _mm256_cmp_pd_mask(a, b, _CMP_NLT_US);
455 }
456
test_mm256_cmp_pd_mask_nle_us(__m256d a,__m256d b)457 __mmask8 test_mm256_cmp_pd_mask_nle_us(__m256d a, __m256d b) {
458 // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_us
459 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
460 return _mm256_cmp_pd_mask(a, b, _CMP_NLE_US);
461 }
462
test_mm256_cmp_pd_mask_ord_q(__m256d a,__m256d b)463 __mmask8 test_mm256_cmp_pd_mask_ord_q(__m256d a, __m256d b) {
464 // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_q
465 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
466 return _mm256_cmp_pd_mask(a, b, _CMP_ORD_Q);
467 }
468
test_mm256_cmp_pd_mask_eq_uq(__m256d a,__m256d b)469 __mmask8 test_mm256_cmp_pd_mask_eq_uq(__m256d a, __m256d b) {
470 // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_uq
471 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
472 return _mm256_cmp_pd_mask(a, b, _CMP_EQ_UQ);
473 }
474
test_mm256_cmp_pd_mask_nge_us(__m256d a,__m256d b)475 __mmask8 test_mm256_cmp_pd_mask_nge_us(__m256d a, __m256d b) {
476 // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_us
477 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
478 return _mm256_cmp_pd_mask(a, b, _CMP_NGE_US);
479 }
480
test_mm256_cmp_pd_mask_ngt_us(__m256d a,__m256d b)481 __mmask8 test_mm256_cmp_pd_mask_ngt_us(__m256d a, __m256d b) {
482 // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_us
483 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
484 return _mm256_cmp_pd_mask(a, b, _CMP_NGT_US);
485 }
486
test_mm256_cmp_pd_mask_false_oq(__m256d a,__m256d b)487 __mmask8 test_mm256_cmp_pd_mask_false_oq(__m256d a, __m256d b) {
488 // CHECK-LABEL: test_mm256_cmp_pd_mask_false_oq
489 // CHECK: call <4 x i1> @llvm.x86.avx512.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 11)
490 return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
491 }
492
test_mm256_cmp_pd_mask_neq_oq(__m256d a,__m256d b)493 __mmask8 test_mm256_cmp_pd_mask_neq_oq(__m256d a, __m256d b) {
494 // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_oq
495 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
496 return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
497 }
498
test_mm256_cmp_pd_mask_ge_os(__m256d a,__m256d b)499 __mmask8 test_mm256_cmp_pd_mask_ge_os(__m256d a, __m256d b) {
500 // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_os
501 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
502 return _mm256_cmp_pd_mask(a, b, _CMP_GE_OS);
503 }
504
test_mm256_cmp_pd_mask_gt_os(__m256d a,__m256d b)505 __mmask8 test_mm256_cmp_pd_mask_gt_os(__m256d a, __m256d b) {
506 // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_os
507 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
508 return _mm256_cmp_pd_mask(a, b, _CMP_GT_OS);
509 }
510
test_mm256_cmp_pd_mask_true_uq(__m256d a,__m256d b)511 __mmask8 test_mm256_cmp_pd_mask_true_uq(__m256d a, __m256d b) {
512 // CHECK-LABEL: test_mm256_cmp_pd_mask_true_uq
513 // CHECK: call <4 x i1> @llvm.x86.avx512.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 15)
514 return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
515 }
516
test_mm256_cmp_pd_mask_eq_os(__m256d a,__m256d b)517 __mmask8 test_mm256_cmp_pd_mask_eq_os(__m256d a, __m256d b) {
518 // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_os
519 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
520 return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OS);
521 }
522
test_mm256_cmp_pd_mask_lt_oq(__m256d a,__m256d b)523 __mmask8 test_mm256_cmp_pd_mask_lt_oq(__m256d a, __m256d b) {
524 // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_oq
525 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
526 return _mm256_cmp_pd_mask(a, b, _CMP_LT_OQ);
527 }
528
test_mm256_cmp_pd_mask_le_oq(__m256d a,__m256d b)529 __mmask8 test_mm256_cmp_pd_mask_le_oq(__m256d a, __m256d b) {
530 // CHECK-LABEL: test_mm256_cmp_pd_mask_le_oq
531 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
532 return _mm256_cmp_pd_mask(a, b, _CMP_LE_OQ);
533 }
534
test_mm256_cmp_pd_mask_unord_s(__m256d a,__m256d b)535 __mmask8 test_mm256_cmp_pd_mask_unord_s(__m256d a, __m256d b) {
536 // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_s
537 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
538 return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_S);
539 }
540
test_mm256_cmp_pd_mask_neq_us(__m256d a,__m256d b)541 __mmask8 test_mm256_cmp_pd_mask_neq_us(__m256d a, __m256d b) {
542 // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_us
543 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
544 return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_US);
545 }
546
test_mm256_cmp_pd_mask_nlt_uq(__m256d a,__m256d b)547 __mmask8 test_mm256_cmp_pd_mask_nlt_uq(__m256d a, __m256d b) {
548 // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_uq
549 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
550 return _mm256_cmp_pd_mask(a, b, _CMP_NLT_UQ);
551 }
552
test_mm256_cmp_pd_mask_nle_uq(__m256d a,__m256d b)553 __mmask8 test_mm256_cmp_pd_mask_nle_uq(__m256d a, __m256d b) {
554 // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_uq
555 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
556 return _mm256_cmp_pd_mask(a, b, _CMP_NLE_UQ);
557 }
558
test_mm256_cmp_pd_mask_ord_s(__m256d a,__m256d b)559 __mmask8 test_mm256_cmp_pd_mask_ord_s(__m256d a, __m256d b) {
560 // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_s
561 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
562 return _mm256_cmp_pd_mask(a, b, _CMP_ORD_S);
563 }
564
test_mm256_cmp_pd_mask_eq_us(__m256d a,__m256d b)565 __mmask8 test_mm256_cmp_pd_mask_eq_us(__m256d a, __m256d b) {
566 // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_us
567 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
568 return _mm256_cmp_pd_mask(a, b, _CMP_EQ_US);
569 }
570
test_mm256_cmp_pd_mask_nge_uq(__m256d a,__m256d b)571 __mmask8 test_mm256_cmp_pd_mask_nge_uq(__m256d a, __m256d b) {
572 // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_uq
573 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
574 return _mm256_cmp_pd_mask(a, b, _CMP_NGE_UQ);
575 }
576
test_mm256_cmp_pd_mask_ngt_uq(__m256d a,__m256d b)577 __mmask8 test_mm256_cmp_pd_mask_ngt_uq(__m256d a, __m256d b) {
578 // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_uq
579 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
580 return _mm256_cmp_pd_mask(a, b, _CMP_NGT_UQ);
581 }
582
test_mm256_cmp_pd_mask_false_os(__m256d a,__m256d b)583 __mmask8 test_mm256_cmp_pd_mask_false_os(__m256d a, __m256d b) {
584 // CHECK-LABEL: test_mm256_cmp_pd_mask_false_os
585 // CHECK: call <4 x i1> @llvm.x86.avx512.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 27)
586 return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OS);
587 }
588
test_mm256_cmp_pd_mask_neq_os(__m256d a,__m256d b)589 __mmask8 test_mm256_cmp_pd_mask_neq_os(__m256d a, __m256d b) {
590 // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_os
591 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
592 return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OS);
593 }
594
test_mm256_cmp_pd_mask_ge_oq(__m256d a,__m256d b)595 __mmask8 test_mm256_cmp_pd_mask_ge_oq(__m256d a, __m256d b) {
596 // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_oq
597 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
598 return _mm256_cmp_pd_mask(a, b, _CMP_GE_OQ);
599 }
600
test_mm256_cmp_pd_mask_gt_oq(__m256d a,__m256d b)601 __mmask8 test_mm256_cmp_pd_mask_gt_oq(__m256d a, __m256d b) {
602 // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_oq
603 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
604 return _mm256_cmp_pd_mask(a, b, _CMP_GT_OQ);
605 }
606
test_mm256_cmp_pd_mask_true_us(__m256d a,__m256d b)607 __mmask8 test_mm256_cmp_pd_mask_true_us(__m256d a, __m256d b) {
608 // CHECK-LABEL: test_mm256_cmp_pd_mask_true_us
609 // CHECK: call <4 x i1> @llvm.x86.avx512.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 31)
610 return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_US);
611 }
612
test_mm256_mask_cmp_pd_mask_eq_oq(__mmask8 m,__m256d a,__m256d b)613 __mmask8 test_mm256_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m256d a, __m256d b) {
614 // CHECK-LABEL: @test_mm256_mask_cmp_pd_mask_eq_oq
615 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
616 // CHECK: and <4 x i1> [[CMP]], {{.*}}
617 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
618 }
619
test_mm256_mask_cmp_pd_mask_lt_os(__mmask8 m,__m256d a,__m256d b)620 __mmask8 test_mm256_mask_cmp_pd_mask_lt_os(__mmask8 m, __m256d a, __m256d b) {
621 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_os
622 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
623 // CHECK: and <4 x i1> [[CMP]], {{.*}}
624 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
625 }
626
test_mm256_mask_cmp_pd_mask_le_os(__mmask8 m,__m256d a,__m256d b)627 __mmask8 test_mm256_mask_cmp_pd_mask_le_os(__mmask8 m, __m256d a, __m256d b) {
628 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_os
629 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
630 // CHECK: and <4 x i1> [[CMP]], {{.*}}
631 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
632 }
633
test_mm256_mask_cmp_pd_mask_unord_q(__mmask8 m,__m256d a,__m256d b)634 __mmask8 test_mm256_mask_cmp_pd_mask_unord_q(__mmask8 m, __m256d a, __m256d b) {
635 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_q
636 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
637 // CHECK: and <4 x i1> [[CMP]], {{.*}}
638 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
639 }
640
test_mm256_mask_cmp_pd_mask_neq_uq(__mmask8 m,__m256d a,__m256d b)641 __mmask8 test_mm256_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m256d a, __m256d b) {
642 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_uq
643 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
644 // CHECK: and <4 x i1> [[CMP]], {{.*}}
645 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
646 }
647
test_mm256_mask_cmp_pd_mask_nlt_us(__mmask8 m,__m256d a,__m256d b)648 __mmask8 test_mm256_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m256d a, __m256d b) {
649 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_us
650 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
651 // CHECK: and <4 x i1> [[CMP]], {{.*}}
652 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
653 }
654
test_mm256_mask_cmp_pd_mask_nle_us(__mmask8 m,__m256d a,__m256d b)655 __mmask8 test_mm256_mask_cmp_pd_mask_nle_us(__mmask8 m, __m256d a, __m256d b) {
656 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_us
657 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
658 // CHECK: and <4 x i1> [[CMP]], {{.*}}
659 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
660 }
661
test_mm256_mask_cmp_pd_mask_ord_q(__mmask8 m,__m256d a,__m256d b)662 __mmask8 test_mm256_mask_cmp_pd_mask_ord_q(__mmask8 m, __m256d a, __m256d b) {
663 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_q
664 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
665 // CHECK: and <4 x i1> [[CMP]], {{.*}}
666 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
667 }
668
test_mm256_mask_cmp_pd_mask_eq_uq(__mmask8 m,__m256d a,__m256d b)669 __mmask8 test_mm256_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m256d a, __m256d b) {
670 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_uq
671 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
672 // CHECK: and <4 x i1> [[CMP]], {{.*}}
673 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
674 }
675
test_mm256_mask_cmp_pd_mask_nge_us(__mmask8 m,__m256d a,__m256d b)676 __mmask8 test_mm256_mask_cmp_pd_mask_nge_us(__mmask8 m, __m256d a, __m256d b) {
677 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_us
678 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
679 // CHECK: and <4 x i1> [[CMP]], {{.*}}
680 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
681 }
682
test_mm256_mask_cmp_pd_mask_ngt_us(__mmask8 m,__m256d a,__m256d b)683 __mmask8 test_mm256_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m256d a, __m256d b) {
684 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_us
685 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
686 // CHECK: and <4 x i1> [[CMP]], {{.*}}
687 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
688 }
689
test_mm256_mask_cmp_pd_mask_false_oq(__mmask8 m,__m256d a,__m256d b)690 __mmask8 test_mm256_mask_cmp_pd_mask_false_oq(__mmask8 m, __m256d a, __m256d b) {
691 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_oq
692 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.x86.avx512.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 11)
693 // CHECK: and <4 x i1> [[CMP]], {{.*}}
694 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
695 }
696
test_mm256_mask_cmp_pd_mask_neq_oq(__mmask8 m,__m256d a,__m256d b)697 __mmask8 test_mm256_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m256d a, __m256d b) {
698 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_oq
699 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
700 // CHECK: and <4 x i1> [[CMP]], {{.*}}
701 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
702 }
703
test_mm256_mask_cmp_pd_mask_ge_os(__mmask8 m,__m256d a,__m256d b)704 __mmask8 test_mm256_mask_cmp_pd_mask_ge_os(__mmask8 m, __m256d a, __m256d b) {
705 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_os
706 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
707 // CHECK: and <4 x i1> [[CMP]], {{.*}}
708 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
709 }
710
test_mm256_mask_cmp_pd_mask_gt_os(__mmask8 m,__m256d a,__m256d b)711 __mmask8 test_mm256_mask_cmp_pd_mask_gt_os(__mmask8 m, __m256d a, __m256d b) {
712 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_os
713 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
714 // CHECK: and <4 x i1> [[CMP]], {{.*}}
715 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
716 }
717
test_mm256_mask_cmp_pd_mask_true_uq(__mmask8 m,__m256d a,__m256d b)718 __mmask8 test_mm256_mask_cmp_pd_mask_true_uq(__mmask8 m, __m256d a, __m256d b) {
719 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_uq
720 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.x86.avx512.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 15)
721 // CHECK: and <4 x i1> [[CMP]], {{.*}}
722 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
723 }
724
test_mm256_mask_cmp_pd_mask_eq_os(__mmask8 m,__m256d a,__m256d b)725 __mmask8 test_mm256_mask_cmp_pd_mask_eq_os(__mmask8 m, __m256d a, __m256d b) {
726 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_os
727 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
728 // CHECK: and <4 x i1> [[CMP]], {{.*}}
729 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
730 }
731
test_mm256_mask_cmp_pd_mask_lt_oq(__mmask8 m,__m256d a,__m256d b)732 __mmask8 test_mm256_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m256d a, __m256d b) {
733 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_oq
734 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
735 // CHECK: and <4 x i1> [[CMP]], {{.*}}
736 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
737 }
738
test_mm256_mask_cmp_pd_mask_le_oq(__mmask8 m,__m256d a,__m256d b)739 __mmask8 test_mm256_mask_cmp_pd_mask_le_oq(__mmask8 m, __m256d a, __m256d b) {
740 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_oq
741 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
742 // CHECK: and <4 x i1> [[CMP]], {{.*}}
743 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
744 }
745
test_mm256_mask_cmp_pd_mask_unord_s(__mmask8 m,__m256d a,__m256d b)746 __mmask8 test_mm256_mask_cmp_pd_mask_unord_s(__mmask8 m, __m256d a, __m256d b) {
747 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_s
748 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
749 // CHECK: and <4 x i1> [[CMP]], {{.*}}
750 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
751 }
752
test_mm256_mask_cmp_pd_mask_neq_us(__mmask8 m,__m256d a,__m256d b)753 __mmask8 test_mm256_mask_cmp_pd_mask_neq_us(__mmask8 m, __m256d a, __m256d b) {
754 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_us
755 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
756 // CHECK: and <4 x i1> [[CMP]], {{.*}}
757 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
758 }
759
test_mm256_mask_cmp_pd_mask_nlt_uq(__mmask8 m,__m256d a,__m256d b)760 __mmask8 test_mm256_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m256d a, __m256d b) {
761 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_uq
762 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
763 // CHECK: and <4 x i1> [[CMP]], {{.*}}
764 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
765 }
766
test_mm256_mask_cmp_pd_mask_nle_uq(__mmask8 m,__m256d a,__m256d b)767 __mmask8 test_mm256_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m256d a, __m256d b) {
768 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_uq
769 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
770 // CHECK: and <4 x i1> [[CMP]], {{.*}}
771 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
772 }
773
test_mm256_mask_cmp_pd_mask_ord_s(__mmask8 m,__m256d a,__m256d b)774 __mmask8 test_mm256_mask_cmp_pd_mask_ord_s(__mmask8 m, __m256d a, __m256d b) {
775 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_s
776 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
777 // CHECK: and <4 x i1> [[CMP]], {{.*}}
778 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
779 }
780
test_mm256_mask_cmp_pd_mask_eq_us(__mmask8 m,__m256d a,__m256d b)781 __mmask8 test_mm256_mask_cmp_pd_mask_eq_us(__mmask8 m, __m256d a, __m256d b) {
782 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_us
783 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
784 // CHECK: and <4 x i1> [[CMP]], {{.*}}
785 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
786 }
787
test_mm256_mask_cmp_pd_mask_nge_uq(__mmask8 m,__m256d a,__m256d b)788 __mmask8 test_mm256_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m256d a, __m256d b) {
789 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_uq
790 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
791 // CHECK: and <4 x i1> [[CMP]], {{.*}}
792 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
793 }
794
test_mm256_mask_cmp_pd_mask_ngt_uq(__mmask8 m,__m256d a,__m256d b)795 __mmask8 test_mm256_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m256d a, __m256d b) {
796 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_uq
797 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
798 // CHECK: and <4 x i1> [[CMP]], {{.*}}
799 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
800 }
801
test_mm256_mask_cmp_pd_mask_false_os(__mmask8 m,__m256d a,__m256d b)802 __mmask8 test_mm256_mask_cmp_pd_mask_false_os(__mmask8 m, __m256d a, __m256d b) {
803 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_os
804 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.x86.avx512.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 27)
805 // CHECK: and <4 x i1> [[CMP]], {{.*}}
806 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
807 }
808
test_mm256_mask_cmp_pd_mask_neq_os(__mmask8 m,__m256d a,__m256d b)809 __mmask8 test_mm256_mask_cmp_pd_mask_neq_os(__mmask8 m, __m256d a, __m256d b) {
810 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_os
811 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
812 // CHECK: and <4 x i1> [[CMP]], {{.*}}
813 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
814 }
815
test_mm256_mask_cmp_pd_mask_ge_oq(__mmask8 m,__m256d a,__m256d b)816 __mmask8 test_mm256_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m256d a, __m256d b) {
817 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_oq
818 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
819 // CHECK: and <4 x i1> [[CMP]], {{.*}}
820 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
821 }
822
test_mm256_mask_cmp_pd_mask_gt_oq(__mmask8 m,__m256d a,__m256d b)823 __mmask8 test_mm256_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m256d a, __m256d b) {
824 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_oq
825 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
826 // CHECK: and <4 x i1> [[CMP]], {{.*}}
827 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
828 }
829
test_mm256_mask_cmp_pd_mask_true_us(__mmask8 m,__m256d a,__m256d b)830 __mmask8 test_mm256_mask_cmp_pd_mask_true_us(__mmask8 m, __m256d a, __m256d b) {
831 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_us
832 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.x86.avx512.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i32 31)
833 // CHECK: and <4 x i1> [[CMP]], {{.*}}
834 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
835 }
836
test_mm_cmp_ps_mask_eq_oq(__m128 a,__m128 b)837 __mmask8 test_mm_cmp_ps_mask_eq_oq(__m128 a, __m128 b) {
838 // CHECK-LABEL: @test_mm_cmp_ps_mask_eq_oq
839 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
840 return _mm_cmp_ps_mask(a, b, _CMP_EQ_OQ);
841 }
842
test_mm_cmp_ps_mask_lt_os(__m128 a,__m128 b)843 __mmask8 test_mm_cmp_ps_mask_lt_os(__m128 a, __m128 b) {
844 // CHECK-LABEL: test_mm_cmp_ps_mask_lt_os
845 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
846 return _mm_cmp_ps_mask(a, b, _CMP_LT_OS);
847 }
848
test_mm_cmp_ps_mask_le_os(__m128 a,__m128 b)849 __mmask8 test_mm_cmp_ps_mask_le_os(__m128 a, __m128 b) {
850 // CHECK-LABEL: test_mm_cmp_ps_mask_le_os
851 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
852 return _mm_cmp_ps_mask(a, b, _CMP_LE_OS);
853 }
854
test_mm_cmp_ps_mask_unord_q(__m128 a,__m128 b)855 __mmask8 test_mm_cmp_ps_mask_unord_q(__m128 a, __m128 b) {
856 // CHECK-LABEL: test_mm_cmp_ps_mask_unord_q
857 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
858 return _mm_cmp_ps_mask(a, b, _CMP_UNORD_Q);
859 }
860
test_mm_cmp_ps_mask_neq_uq(__m128 a,__m128 b)861 __mmask8 test_mm_cmp_ps_mask_neq_uq(__m128 a, __m128 b) {
862 // CHECK-LABEL: test_mm_cmp_ps_mask_neq_uq
863 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
864 return _mm_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
865 }
866
test_mm_cmp_ps_mask_nlt_us(__m128 a,__m128 b)867 __mmask8 test_mm_cmp_ps_mask_nlt_us(__m128 a, __m128 b) {
868 // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_us
869 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
870 return _mm_cmp_ps_mask(a, b, _CMP_NLT_US);
871 }
872
test_mm_cmp_ps_mask_nle_us(__m128 a,__m128 b)873 __mmask8 test_mm_cmp_ps_mask_nle_us(__m128 a, __m128 b) {
874 // CHECK-LABEL: test_mm_cmp_ps_mask_nle_us
875 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
876 return _mm_cmp_ps_mask(a, b, _CMP_NLE_US);
877 }
878
test_mm_cmp_ps_mask_ord_q(__m128 a,__m128 b)879 __mmask8 test_mm_cmp_ps_mask_ord_q(__m128 a, __m128 b) {
880 // CHECK-LABEL: test_mm_cmp_ps_mask_ord_q
881 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
882 return _mm_cmp_ps_mask(a, b, _CMP_ORD_Q);
883 }
884
test_mm_cmp_ps_mask_eq_uq(__m128 a,__m128 b)885 __mmask8 test_mm_cmp_ps_mask_eq_uq(__m128 a, __m128 b) {
886 // CHECK-LABEL: test_mm_cmp_ps_mask_eq_uq
887 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
888 return _mm_cmp_ps_mask(a, b, _CMP_EQ_UQ);
889 }
890
test_mm_cmp_ps_mask_nge_us(__m128 a,__m128 b)891 __mmask8 test_mm_cmp_ps_mask_nge_us(__m128 a, __m128 b) {
892 // CHECK-LABEL: test_mm_cmp_ps_mask_nge_us
893 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
894 return _mm_cmp_ps_mask(a, b, _CMP_NGE_US);
895 }
896
test_mm_cmp_ps_mask_ngt_us(__m128 a,__m128 b)897 __mmask8 test_mm_cmp_ps_mask_ngt_us(__m128 a, __m128 b) {
898 // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_us
899 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
900 return _mm_cmp_ps_mask(a, b, _CMP_NGT_US);
901 }
902
test_mm_cmp_ps_mask_false_oq(__m128 a,__m128 b)903 __mmask8 test_mm_cmp_ps_mask_false_oq(__m128 a, __m128 b) {
904 // CHECK-LABEL: test_mm_cmp_ps_mask_false_oq
905 // CHECK: call <4 x i1> @llvm.x86.avx512.cmp.ps.128(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 11)
906 return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
907 }
908
test_mm_cmp_ps_mask_neq_oq(__m128 a,__m128 b)909 __mmask8 test_mm_cmp_ps_mask_neq_oq(__m128 a, __m128 b) {
910 // CHECK-LABEL: test_mm_cmp_ps_mask_neq_oq
911 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
912 return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
913 }
914
test_mm_cmp_ps_mask_ge_os(__m128 a,__m128 b)915 __mmask8 test_mm_cmp_ps_mask_ge_os(__m128 a, __m128 b) {
916 // CHECK-LABEL: test_mm_cmp_ps_mask_ge_os
917 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
918 return _mm_cmp_ps_mask(a, b, _CMP_GE_OS);
919 }
920
test_mm_cmp_ps_mask_gt_os(__m128 a,__m128 b)921 __mmask8 test_mm_cmp_ps_mask_gt_os(__m128 a, __m128 b) {
922 // CHECK-LABEL: test_mm_cmp_ps_mask_gt_os
923 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
924 return _mm_cmp_ps_mask(a, b, _CMP_GT_OS);
925 }
926
test_mm_cmp_ps_mask_true_uq(__m128 a,__m128 b)927 __mmask8 test_mm_cmp_ps_mask_true_uq(__m128 a, __m128 b) {
928 // CHECK-LABEL: test_mm_cmp_ps_mask_true_uq
929 // CHECK: call <4 x i1> @llvm.x86.avx512.cmp.ps.128(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 15)
930 return _mm_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
931 }
932
test_mm_cmp_ps_mask_eq_os(__m128 a,__m128 b)933 __mmask8 test_mm_cmp_ps_mask_eq_os(__m128 a, __m128 b) {
934 // CHECK-LABEL: test_mm_cmp_ps_mask_eq_os
935 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
936 return _mm_cmp_ps_mask(a, b, _CMP_EQ_OS);
937 }
938
test_mm_cmp_ps_mask_lt_oq(__m128 a,__m128 b)939 __mmask8 test_mm_cmp_ps_mask_lt_oq(__m128 a, __m128 b) {
940 // CHECK-LABEL: test_mm_cmp_ps_mask_lt_oq
941 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
942 return _mm_cmp_ps_mask(a, b, _CMP_LT_OQ);
943 }
944
test_mm_cmp_ps_mask_le_oq(__m128 a,__m128 b)945 __mmask8 test_mm_cmp_ps_mask_le_oq(__m128 a, __m128 b) {
946 // CHECK-LABEL: test_mm_cmp_ps_mask_le_oq
947 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
948 return _mm_cmp_ps_mask(a, b, _CMP_LE_OQ);
949 }
950
test_mm_cmp_ps_mask_unord_s(__m128 a,__m128 b)951 __mmask8 test_mm_cmp_ps_mask_unord_s(__m128 a, __m128 b) {
952 // CHECK-LABEL: test_mm_cmp_ps_mask_unord_s
953 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
954 return _mm_cmp_ps_mask(a, b, _CMP_UNORD_S);
955 }
956
test_mm_cmp_ps_mask_neq_us(__m128 a,__m128 b)957 __mmask8 test_mm_cmp_ps_mask_neq_us(__m128 a, __m128 b) {
958 // CHECK-LABEL: test_mm_cmp_ps_mask_neq_us
959 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
960 return _mm_cmp_ps_mask(a, b, _CMP_NEQ_US);
961 }
962
test_mm_cmp_ps_mask_nlt_uq(__m128 a,__m128 b)963 __mmask8 test_mm_cmp_ps_mask_nlt_uq(__m128 a, __m128 b) {
964 // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_uq
965 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
966 return _mm_cmp_ps_mask(a, b, _CMP_NLT_UQ);
967 }
968
test_mm_cmp_ps_mask_nle_uq(__m128 a,__m128 b)969 __mmask8 test_mm_cmp_ps_mask_nle_uq(__m128 a, __m128 b) {
970 // CHECK-LABEL: test_mm_cmp_ps_mask_nle_uq
971 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
972 return _mm_cmp_ps_mask(a, b, _CMP_NLE_UQ);
973 }
974
test_mm_cmp_ps_mask_ord_s(__m128 a,__m128 b)975 __mmask8 test_mm_cmp_ps_mask_ord_s(__m128 a, __m128 b) {
976 // CHECK-LABEL: test_mm_cmp_ps_mask_ord_s
977 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
978 return _mm_cmp_ps_mask(a, b, _CMP_ORD_S);
979 }
980
test_mm_cmp_ps_mask_eq_us(__m128 a,__m128 b)981 __mmask8 test_mm_cmp_ps_mask_eq_us(__m128 a, __m128 b) {
982 // CHECK-LABEL: test_mm_cmp_ps_mask_eq_us
983 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
984 return _mm_cmp_ps_mask(a, b, _CMP_EQ_US);
985 }
986
test_mm_cmp_ps_mask_nge_uq(__m128 a,__m128 b)987 __mmask8 test_mm_cmp_ps_mask_nge_uq(__m128 a, __m128 b) {
988 // CHECK-LABEL: test_mm_cmp_ps_mask_nge_uq
989 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
990 return _mm_cmp_ps_mask(a, b, _CMP_NGE_UQ);
991 }
992
test_mm_cmp_ps_mask_ngt_uq(__m128 a,__m128 b)993 __mmask8 test_mm_cmp_ps_mask_ngt_uq(__m128 a, __m128 b) {
994 // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_uq
995 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
996 return _mm_cmp_ps_mask(a, b, _CMP_NGT_UQ);
997 }
998
test_mm_cmp_ps_mask_false_os(__m128 a,__m128 b)999 __mmask8 test_mm_cmp_ps_mask_false_os(__m128 a, __m128 b) {
1000 // CHECK-LABEL: test_mm_cmp_ps_mask_false_os
1001 // CHECK: call <4 x i1> @llvm.x86.avx512.cmp.ps.128(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 27)
1002 return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OS);
1003 }
1004
test_mm_cmp_ps_mask_neq_os(__m128 a,__m128 b)1005 __mmask8 test_mm_cmp_ps_mask_neq_os(__m128 a, __m128 b) {
1006 // CHECK-LABEL: test_mm_cmp_ps_mask_neq_os
1007 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
1008 return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OS);
1009 }
1010
test_mm_cmp_ps_mask_ge_oq(__m128 a,__m128 b)1011 __mmask8 test_mm_cmp_ps_mask_ge_oq(__m128 a, __m128 b) {
1012 // CHECK-LABEL: test_mm_cmp_ps_mask_ge_oq
1013 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
1014 return _mm_cmp_ps_mask(a, b, _CMP_GE_OQ);
1015 }
1016
test_mm_cmp_ps_mask_gt_oq(__m128 a,__m128 b)1017 __mmask8 test_mm_cmp_ps_mask_gt_oq(__m128 a, __m128 b) {
1018 // CHECK-LABEL: test_mm_cmp_ps_mask_gt_oq
1019 // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
1020 return _mm_cmp_ps_mask(a, b, _CMP_GT_OQ);
1021 }
1022
test_mm_cmp_ps_mask_true_us(__m128 a,__m128 b)1023 __mmask8 test_mm_cmp_ps_mask_true_us(__m128 a, __m128 b) {
1024 // CHECK-LABEL: test_mm_cmp_ps_mask_true_us
1025 // CHECK: call <4 x i1> @llvm.x86.avx512.cmp.ps.128(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 31)
1026 return _mm_cmp_ps_mask(a, b, _CMP_TRUE_US);
1027 }
1028
test_mm_mask_cmp_ps_mask_eq_oq(__mmask8 m,__m128 a,__m128 b)1029 __mmask8 test_mm_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m128 a, __m128 b) {
1030 // CHECK-LABEL: @test_mm_mask_cmp_ps_mask_eq_oq
1031 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
1032 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1033 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
1034 }
1035
test_mm_mask_cmp_ps_mask_lt_os(__mmask8 m,__m128 a,__m128 b)1036 __mmask8 test_mm_mask_cmp_ps_mask_lt_os(__mmask8 m, __m128 a, __m128 b) {
1037 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_os
1038 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
1039 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1040 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
1041 }
1042
test_mm_mask_cmp_ps_mask_le_os(__mmask8 m,__m128 a,__m128 b)1043 __mmask8 test_mm_mask_cmp_ps_mask_le_os(__mmask8 m, __m128 a, __m128 b) {
1044 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_os
1045 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
1046 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1047 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
1048 }
1049
test_mm_mask_cmp_ps_mask_unord_q(__mmask8 m,__m128 a,__m128 b)1050 __mmask8 test_mm_mask_cmp_ps_mask_unord_q(__mmask8 m, __m128 a, __m128 b) {
1051 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_q
1052 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
1053 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1054 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
1055 }
1056
test_mm_mask_cmp_ps_mask_neq_uq(__mmask8 m,__m128 a,__m128 b)1057 __mmask8 test_mm_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m128 a, __m128 b) {
1058 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_uq
1059 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
1060 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1061 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
1062 }
1063
test_mm_mask_cmp_ps_mask_nlt_us(__mmask8 m,__m128 a,__m128 b)1064 __mmask8 test_mm_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m128 a, __m128 b) {
1065 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_us
1066 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
1067 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1068 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
1069 }
1070
test_mm_mask_cmp_ps_mask_nle_us(__mmask8 m,__m128 a,__m128 b)1071 __mmask8 test_mm_mask_cmp_ps_mask_nle_us(__mmask8 m, __m128 a, __m128 b) {
1072 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_us
1073 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
1074 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1075 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
1076 }
1077
test_mm_mask_cmp_ps_mask_ord_q(__mmask8 m,__m128 a,__m128 b)1078 __mmask8 test_mm_mask_cmp_ps_mask_ord_q(__mmask8 m, __m128 a, __m128 b) {
1079 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_q
1080 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
1081 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1082 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
1083 }
1084
test_mm_mask_cmp_ps_mask_eq_uq(__mmask8 m,__m128 a,__m128 b)1085 __mmask8 test_mm_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m128 a, __m128 b) {
1086 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_uq
1087 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
1088 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1089 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
1090 }
1091
test_mm_mask_cmp_ps_mask_nge_us(__mmask8 m,__m128 a,__m128 b)1092 __mmask8 test_mm_mask_cmp_ps_mask_nge_us(__mmask8 m, __m128 a, __m128 b) {
1093 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_us
1094 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
1095 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1096 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
1097 }
1098
test_mm_mask_cmp_ps_mask_ngt_us(__mmask8 m,__m128 a,__m128 b)1099 __mmask8 test_mm_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m128 a, __m128 b) {
1100 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_us
1101 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
1102 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1103 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
1104 }
1105
test_mm_mask_cmp_ps_mask_false_oq(__mmask8 m,__m128 a,__m128 b)1106 __mmask8 test_mm_mask_cmp_ps_mask_false_oq(__mmask8 m, __m128 a, __m128 b) {
1107 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_oq
1108 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.x86.avx512.cmp.ps.128(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 11)
1109 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1110 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
1111 }
1112
test_mm_mask_cmp_ps_mask_neq_oq(__mmask8 m,__m128 a,__m128 b)1113 __mmask8 test_mm_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m128 a, __m128 b) {
1114 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_oq
1115 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
1116 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1117 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
1118 }
1119
test_mm_mask_cmp_ps_mask_ge_os(__mmask8 m,__m128 a,__m128 b)1120 __mmask8 test_mm_mask_cmp_ps_mask_ge_os(__mmask8 m, __m128 a, __m128 b) {
1121 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_os
1122 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
1123 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1124 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
1125 }
1126
test_mm_mask_cmp_ps_mask_gt_os(__mmask8 m,__m128 a,__m128 b)1127 __mmask8 test_mm_mask_cmp_ps_mask_gt_os(__mmask8 m, __m128 a, __m128 b) {
1128 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_os
1129 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
1130 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1131 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
1132 }
1133
test_mm_mask_cmp_ps_mask_true_uq(__mmask8 m,__m128 a,__m128 b)1134 __mmask8 test_mm_mask_cmp_ps_mask_true_uq(__mmask8 m, __m128 a, __m128 b) {
1135 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_uq
1136 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.x86.avx512.cmp.ps.128(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 15)
1137 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1138 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
1139 }
1140
test_mm_mask_cmp_ps_mask_eq_os(__mmask8 m,__m128 a,__m128 b)1141 __mmask8 test_mm_mask_cmp_ps_mask_eq_os(__mmask8 m, __m128 a, __m128 b) {
1142 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_os
1143 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
1144 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1145 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
1146 }
1147
test_mm_mask_cmp_ps_mask_lt_oq(__mmask8 m,__m128 a,__m128 b)1148 __mmask8 test_mm_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m128 a, __m128 b) {
1149 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_oq
1150 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
1151 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1152 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
1153 }
1154
test_mm_mask_cmp_ps_mask_le_oq(__mmask8 m,__m128 a,__m128 b)1155 __mmask8 test_mm_mask_cmp_ps_mask_le_oq(__mmask8 m, __m128 a, __m128 b) {
1156 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_oq
1157 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
1158 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1159 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
1160 }
1161
test_mm_mask_cmp_ps_mask_unord_s(__mmask8 m,__m128 a,__m128 b)1162 __mmask8 test_mm_mask_cmp_ps_mask_unord_s(__mmask8 m, __m128 a, __m128 b) {
1163 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_s
1164 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
1165 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1166 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
1167 }
1168
test_mm_mask_cmp_ps_mask_neq_us(__mmask8 m,__m128 a,__m128 b)1169 __mmask8 test_mm_mask_cmp_ps_mask_neq_us(__mmask8 m, __m128 a, __m128 b) {
1170 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_us
1171 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
1172 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1173 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
1174 }
1175
test_mm_mask_cmp_ps_mask_nlt_uq(__mmask8 m,__m128 a,__m128 b)1176 __mmask8 test_mm_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m128 a, __m128 b) {
1177 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_uq
1178 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
1179 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1180 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
1181 }
1182
test_mm_mask_cmp_ps_mask_nle_uq(__mmask8 m,__m128 a,__m128 b)1183 __mmask8 test_mm_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m128 a, __m128 b) {
1184 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_uq
1185 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
1186 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1187 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
1188 }
1189
test_mm_mask_cmp_ps_mask_ord_s(__mmask8 m,__m128 a,__m128 b)1190 __mmask8 test_mm_mask_cmp_ps_mask_ord_s(__mmask8 m, __m128 a, __m128 b) {
1191 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_s
1192 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
1193 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1194 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
1195 }
1196
test_mm_mask_cmp_ps_mask_eq_us(__mmask8 m,__m128 a,__m128 b)1197 __mmask8 test_mm_mask_cmp_ps_mask_eq_us(__mmask8 m, __m128 a, __m128 b) {
1198 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_us
1199 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
1200 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1201 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
1202 }
1203
test_mm_mask_cmp_ps_mask_nge_uq(__mmask8 m,__m128 a,__m128 b)1204 __mmask8 test_mm_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m128 a, __m128 b) {
1205 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_uq
1206 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
1207 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1208 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
1209 }
1210
test_mm_mask_cmp_ps_mask_ngt_uq(__mmask8 m,__m128 a,__m128 b)1211 __mmask8 test_mm_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m128 a, __m128 b) {
1212 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_uq
1213 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
1214 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1215 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
1216 }
1217
test_mm_mask_cmp_ps_mask_false_os(__mmask8 m,__m128 a,__m128 b)1218 __mmask8 test_mm_mask_cmp_ps_mask_false_os(__mmask8 m, __m128 a, __m128 b) {
1219 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_os
1220 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.x86.avx512.cmp.ps.128(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 27)
1221 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1222 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
1223 }
1224
test_mm_mask_cmp_ps_mask_neq_os(__mmask8 m,__m128 a,__m128 b)1225 __mmask8 test_mm_mask_cmp_ps_mask_neq_os(__mmask8 m, __m128 a, __m128 b) {
1226 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_os
1227 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
1228 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1229 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
1230 }
1231
test_mm_mask_cmp_ps_mask_ge_oq(__mmask8 m,__m128 a,__m128 b)1232 __mmask8 test_mm_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m128 a, __m128 b) {
1233 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_oq
1234 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
1235 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1236 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
1237 }
1238
test_mm_mask_cmp_ps_mask_gt_oq(__mmask8 m,__m128 a,__m128 b)1239 __mmask8 test_mm_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m128 a, __m128 b) {
1240 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_oq
1241 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
1242 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1243 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
1244 }
1245
test_mm_mask_cmp_ps_mask_true_us(__mmask8 m,__m128 a,__m128 b)1246 __mmask8 test_mm_mask_cmp_ps_mask_true_us(__mmask8 m, __m128 a, __m128 b) {
1247 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_us
1248 // CHECK: [[CMP:%.*]] = call <4 x i1> @llvm.x86.avx512.cmp.ps.128(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 31)
1249 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1250 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
1251 }
1252
test_mm_cmp_pd_mask_eq_oq(__m128d a,__m128d b)1253 __mmask8 test_mm_cmp_pd_mask_eq_oq(__m128d a, __m128d b) {
1254 // CHECK-LABEL: @test_mm_cmp_pd_mask_eq_oq
1255 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
1256 return _mm_cmp_pd_mask(a, b, _CMP_EQ_OQ);
1257 }
1258
test_mm_cmp_pd_mask_lt_os(__m128d a,__m128d b)1259 __mmask8 test_mm_cmp_pd_mask_lt_os(__m128d a, __m128d b) {
1260 // CHECK-LABEL: test_mm_cmp_pd_mask_lt_os
1261 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
1262 return _mm_cmp_pd_mask(a, b, _CMP_LT_OS);
1263 }
1264
test_mm_cmp_pd_mask_le_os(__m128d a,__m128d b)1265 __mmask8 test_mm_cmp_pd_mask_le_os(__m128d a, __m128d b) {
1266 // CHECK-LABEL: test_mm_cmp_pd_mask_le_os
1267 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
1268 return _mm_cmp_pd_mask(a, b, _CMP_LE_OS);
1269 }
1270
test_mm_cmp_pd_mask_unord_q(__m128d a,__m128d b)1271 __mmask8 test_mm_cmp_pd_mask_unord_q(__m128d a, __m128d b) {
1272 // CHECK-LABEL: test_mm_cmp_pd_mask_unord_q
1273 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
1274 return _mm_cmp_pd_mask(a, b, _CMP_UNORD_Q);
1275 }
1276
test_mm_cmp_pd_mask_neq_uq(__m128d a,__m128d b)1277 __mmask8 test_mm_cmp_pd_mask_neq_uq(__m128d a, __m128d b) {
1278 // CHECK-LABEL: test_mm_cmp_pd_mask_neq_uq
1279 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
1280 return _mm_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
1281 }
1282
test_mm_cmp_pd_mask_nlt_us(__m128d a,__m128d b)1283 __mmask8 test_mm_cmp_pd_mask_nlt_us(__m128d a, __m128d b) {
1284 // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_us
1285 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
1286 return _mm_cmp_pd_mask(a, b, _CMP_NLT_US);
1287 }
1288
test_mm_cmp_pd_mask_nle_us(__m128d a,__m128d b)1289 __mmask8 test_mm_cmp_pd_mask_nle_us(__m128d a, __m128d b) {
1290 // CHECK-LABEL: test_mm_cmp_pd_mask_nle_us
1291 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
1292 return _mm_cmp_pd_mask(a, b, _CMP_NLE_US);
1293 }
1294
test_mm_cmp_pd_mask_ord_q(__m128d a,__m128d b)1295 __mmask8 test_mm_cmp_pd_mask_ord_q(__m128d a, __m128d b) {
1296 // CHECK-LABEL: test_mm_cmp_pd_mask_ord_q
1297 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
1298 return _mm_cmp_pd_mask(a, b, _CMP_ORD_Q);
1299 }
1300
test_mm_cmp_pd_mask_eq_uq(__m128d a,__m128d b)1301 __mmask8 test_mm_cmp_pd_mask_eq_uq(__m128d a, __m128d b) {
1302 // CHECK-LABEL: test_mm_cmp_pd_mask_eq_uq
1303 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
1304 return _mm_cmp_pd_mask(a, b, _CMP_EQ_UQ);
1305 }
1306
test_mm_cmp_pd_mask_nge_us(__m128d a,__m128d b)1307 __mmask8 test_mm_cmp_pd_mask_nge_us(__m128d a, __m128d b) {
1308 // CHECK-LABEL: test_mm_cmp_pd_mask_nge_us
1309 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
1310 return _mm_cmp_pd_mask(a, b, _CMP_NGE_US);
1311 }
1312
test_mm_cmp_pd_mask_ngt_us(__m128d a,__m128d b)1313 __mmask8 test_mm_cmp_pd_mask_ngt_us(__m128d a, __m128d b) {
1314 // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_us
1315 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
1316 return _mm_cmp_pd_mask(a, b, _CMP_NGT_US);
1317 }
1318
test_mm_cmp_pd_mask_false_oq(__m128d a,__m128d b)1319 __mmask8 test_mm_cmp_pd_mask_false_oq(__m128d a, __m128d b) {
1320 // CHECK-LABEL: test_mm_cmp_pd_mask_false_oq
1321 // CHECK: call <2 x i1> @llvm.x86.avx512.cmp.pd.128(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i32 11)
1322 return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
1323 }
1324
test_mm_cmp_pd_mask_neq_oq(__m128d a,__m128d b)1325 __mmask8 test_mm_cmp_pd_mask_neq_oq(__m128d a, __m128d b) {
1326 // CHECK-LABEL: test_mm_cmp_pd_mask_neq_oq
1327 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
1328 return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
1329 }
1330
test_mm_cmp_pd_mask_ge_os(__m128d a,__m128d b)1331 __mmask8 test_mm_cmp_pd_mask_ge_os(__m128d a, __m128d b) {
1332 // CHECK-LABEL: test_mm_cmp_pd_mask_ge_os
1333 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
1334 return _mm_cmp_pd_mask(a, b, _CMP_GE_OS);
1335 }
1336
test_mm_cmp_pd_mask_gt_os(__m128d a,__m128d b)1337 __mmask8 test_mm_cmp_pd_mask_gt_os(__m128d a, __m128d b) {
1338 // CHECK-LABEL: test_mm_cmp_pd_mask_gt_os
1339 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
1340 return _mm_cmp_pd_mask(a, b, _CMP_GT_OS);
1341 }
1342
test_mm_cmp_pd_mask_true_uq(__m128d a,__m128d b)1343 __mmask8 test_mm_cmp_pd_mask_true_uq(__m128d a, __m128d b) {
1344 // CHECK-LABEL: test_mm_cmp_pd_mask_true_uq
1345 // CHECK: call <2 x i1> @llvm.x86.avx512.cmp.pd.128(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i32 15)
1346 return _mm_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
1347 }
1348
test_mm_cmp_pd_mask_eq_os(__m128d a,__m128d b)1349 __mmask8 test_mm_cmp_pd_mask_eq_os(__m128d a, __m128d b) {
1350 // CHECK-LABEL: test_mm_cmp_pd_mask_eq_os
1351 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
1352 return _mm_cmp_pd_mask(a, b, _CMP_EQ_OS);
1353 }
1354
test_mm_cmp_pd_mask_lt_oq(__m128d a,__m128d b)1355 __mmask8 test_mm_cmp_pd_mask_lt_oq(__m128d a, __m128d b) {
1356 // CHECK-LABEL: test_mm_cmp_pd_mask_lt_oq
1357 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
1358 return _mm_cmp_pd_mask(a, b, _CMP_LT_OQ);
1359 }
1360
test_mm_cmp_pd_mask_le_oq(__m128d a,__m128d b)1361 __mmask8 test_mm_cmp_pd_mask_le_oq(__m128d a, __m128d b) {
1362 // CHECK-LABEL: test_mm_cmp_pd_mask_le_oq
1363 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
1364 return _mm_cmp_pd_mask(a, b, _CMP_LE_OQ);
1365 }
1366
test_mm_cmp_pd_mask_unord_s(__m128d a,__m128d b)1367 __mmask8 test_mm_cmp_pd_mask_unord_s(__m128d a, __m128d b) {
1368 // CHECK-LABEL: test_mm_cmp_pd_mask_unord_s
1369 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
1370 return _mm_cmp_pd_mask(a, b, _CMP_UNORD_S);
1371 }
1372
test_mm_cmp_pd_mask_neq_us(__m128d a,__m128d b)1373 __mmask8 test_mm_cmp_pd_mask_neq_us(__m128d a, __m128d b) {
1374 // CHECK-LABEL: test_mm_cmp_pd_mask_neq_us
1375 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
1376 return _mm_cmp_pd_mask(a, b, _CMP_NEQ_US);
1377 }
1378
test_mm_cmp_pd_mask_nlt_uq(__m128d a,__m128d b)1379 __mmask8 test_mm_cmp_pd_mask_nlt_uq(__m128d a, __m128d b) {
1380 // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_uq
1381 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
1382 return _mm_cmp_pd_mask(a, b, _CMP_NLT_UQ);
1383 }
1384
test_mm_cmp_pd_mask_nle_uq(__m128d a,__m128d b)1385 __mmask8 test_mm_cmp_pd_mask_nle_uq(__m128d a, __m128d b) {
1386 // CHECK-LABEL: test_mm_cmp_pd_mask_nle_uq
1387 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
1388 return _mm_cmp_pd_mask(a, b, _CMP_NLE_UQ);
1389 }
1390
test_mm_cmp_pd_mask_ord_s(__m128d a,__m128d b)1391 __mmask8 test_mm_cmp_pd_mask_ord_s(__m128d a, __m128d b) {
1392 // CHECK-LABEL: test_mm_cmp_pd_mask_ord_s
1393 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
1394 return _mm_cmp_pd_mask(a, b, _CMP_ORD_S);
1395 }
1396
test_mm_cmp_pd_mask_eq_us(__m128d a,__m128d b)1397 __mmask8 test_mm_cmp_pd_mask_eq_us(__m128d a, __m128d b) {
1398 // CHECK-LABEL: test_mm_cmp_pd_mask_eq_us
1399 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
1400 return _mm_cmp_pd_mask(a, b, _CMP_EQ_US);
1401 }
1402
test_mm_cmp_pd_mask_nge_uq(__m128d a,__m128d b)1403 __mmask8 test_mm_cmp_pd_mask_nge_uq(__m128d a, __m128d b) {
1404 // CHECK-LABEL: test_mm_cmp_pd_mask_nge_uq
1405 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
1406 return _mm_cmp_pd_mask(a, b, _CMP_NGE_UQ);
1407 }
1408
test_mm_cmp_pd_mask_ngt_uq(__m128d a,__m128d b)1409 __mmask8 test_mm_cmp_pd_mask_ngt_uq(__m128d a, __m128d b) {
1410 // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_uq
1411 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
1412 return _mm_cmp_pd_mask(a, b, _CMP_NGT_UQ);
1413 }
1414
test_mm_cmp_pd_mask_false_os(__m128d a,__m128d b)1415 __mmask8 test_mm_cmp_pd_mask_false_os(__m128d a, __m128d b) {
1416 // CHECK-LABEL: test_mm_cmp_pd_mask_false_os
1417 // CHECK: call <2 x i1> @llvm.x86.avx512.cmp.pd.128(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i32 27)
1418 return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OS);
1419 }
1420
test_mm_cmp_pd_mask_neq_os(__m128d a,__m128d b)1421 __mmask8 test_mm_cmp_pd_mask_neq_os(__m128d a, __m128d b) {
1422 // CHECK-LABEL: test_mm_cmp_pd_mask_neq_os
1423 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
1424 return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OS);
1425 }
1426
test_mm_cmp_pd_mask_ge_oq(__m128d a,__m128d b)1427 __mmask8 test_mm_cmp_pd_mask_ge_oq(__m128d a, __m128d b) {
1428 // CHECK-LABEL: test_mm_cmp_pd_mask_ge_oq
1429 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
1430 return _mm_cmp_pd_mask(a, b, _CMP_GE_OQ);
1431 }
1432
test_mm_cmp_pd_mask_gt_oq(__m128d a,__m128d b)1433 __mmask8 test_mm_cmp_pd_mask_gt_oq(__m128d a, __m128d b) {
1434 // CHECK-LABEL: test_mm_cmp_pd_mask_gt_oq
1435 // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
1436 return _mm_cmp_pd_mask(a, b, _CMP_GT_OQ);
1437 }
1438
test_mm_cmp_pd_mask_true_us(__m128d a,__m128d b)1439 __mmask8 test_mm_cmp_pd_mask_true_us(__m128d a, __m128d b) {
1440 // CHECK-LABEL: test_mm_cmp_pd_mask_true_us
1441 // CHECK: call <2 x i1> @llvm.x86.avx512.cmp.pd.128(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i32 31)
1442 return _mm_cmp_pd_mask(a, b, _CMP_TRUE_US);
1443 }
1444
test_mm_mask_cmp_pd_mask_eq_oq(__mmask8 m,__m128d a,__m128d b)1445 __mmask8 test_mm_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m128d a, __m128d b) {
1446 // CHECK-LABEL: @test_mm_mask_cmp_pd_mask_eq_oq
1447 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
1448 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1449 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
1450 }
1451
test_mm_mask_cmp_pd_mask_lt_os(__mmask8 m,__m128d a,__m128d b)1452 __mmask8 test_mm_mask_cmp_pd_mask_lt_os(__mmask8 m, __m128d a, __m128d b) {
1453 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_os
1454 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
1455 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1456 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
1457 }
1458
test_mm_mask_cmp_pd_mask_le_os(__mmask8 m,__m128d a,__m128d b)1459 __mmask8 test_mm_mask_cmp_pd_mask_le_os(__mmask8 m, __m128d a, __m128d b) {
1460 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_os
1461 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
1462 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1463 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
1464 }
1465
test_mm_mask_cmp_pd_mask_unord_q(__mmask8 m,__m128d a,__m128d b)1466 __mmask8 test_mm_mask_cmp_pd_mask_unord_q(__mmask8 m, __m128d a, __m128d b) {
1467 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_q
1468 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
1469 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1470 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
1471 }
1472
test_mm_mask_cmp_pd_mask_neq_uq(__mmask8 m,__m128d a,__m128d b)1473 __mmask8 test_mm_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m128d a, __m128d b) {
1474 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_uq
1475 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
1476 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1477 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
1478 }
1479
test_mm_mask_cmp_pd_mask_nlt_us(__mmask8 m,__m128d a,__m128d b)1480 __mmask8 test_mm_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m128d a, __m128d b) {
1481 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_us
1482 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
1483 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1484 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
1485 }
1486
test_mm_mask_cmp_pd_mask_nle_us(__mmask8 m,__m128d a,__m128d b)1487 __mmask8 test_mm_mask_cmp_pd_mask_nle_us(__mmask8 m, __m128d a, __m128d b) {
1488 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_us
1489 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
1490 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1491 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
1492 }
1493
test_mm_mask_cmp_pd_mask_ord_q(__mmask8 m,__m128d a,__m128d b)1494 __mmask8 test_mm_mask_cmp_pd_mask_ord_q(__mmask8 m, __m128d a, __m128d b) {
1495 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_q
1496 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
1497 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1498 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
1499 }
1500
test_mm_mask_cmp_pd_mask_eq_uq(__mmask8 m,__m128d a,__m128d b)1501 __mmask8 test_mm_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m128d a, __m128d b) {
1502 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_uq
1503 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
1504 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1505 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
1506 }
1507
test_mm_mask_cmp_pd_mask_nge_us(__mmask8 m,__m128d a,__m128d b)1508 __mmask8 test_mm_mask_cmp_pd_mask_nge_us(__mmask8 m, __m128d a, __m128d b) {
1509 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_us
1510 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
1511 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1512 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
1513 }
1514
test_mm_mask_cmp_pd_mask_ngt_us(__mmask8 m,__m128d a,__m128d b)1515 __mmask8 test_mm_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m128d a, __m128d b) {
1516 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_us
1517 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
1518 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1519 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
1520 }
1521
test_mm_mask_cmp_pd_mask_false_oq(__mmask8 m,__m128d a,__m128d b)1522 __mmask8 test_mm_mask_cmp_pd_mask_false_oq(__mmask8 m, __m128d a, __m128d b) {
1523 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_oq
1524 // [[CMP]] = call <2 x i1> @llvm.x86.avx512.cmp.pd.128(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i32 11)
1525 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1526 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
1527 }
1528
test_mm_mask_cmp_pd_mask_neq_oq(__mmask8 m,__m128d a,__m128d b)1529 __mmask8 test_mm_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m128d a, __m128d b) {
1530 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_oq
1531 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
1532 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1533 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
1534 }
1535
test_mm_mask_cmp_pd_mask_ge_os(__mmask8 m,__m128d a,__m128d b)1536 __mmask8 test_mm_mask_cmp_pd_mask_ge_os(__mmask8 m, __m128d a, __m128d b) {
1537 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_os
1538 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
1539 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1540 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
1541 }
1542
test_mm_mask_cmp_pd_mask_gt_os(__mmask8 m,__m128d a,__m128d b)1543 __mmask8 test_mm_mask_cmp_pd_mask_gt_os(__mmask8 m, __m128d a, __m128d b) {
1544 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_os
1545 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
1546 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1547 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
1548 }
1549
test_mm_mask_cmp_pd_mask_true_uq(__mmask8 m,__m128d a,__m128d b)1550 __mmask8 test_mm_mask_cmp_pd_mask_true_uq(__mmask8 m, __m128d a, __m128d b) {
1551 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_uq
1552 // [[CMP]] = call <2 x i1> @llvm.x86.avx512.cmp.pd.128(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i32 15)
1553 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1554 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
1555 }
1556
test_mm_mask_cmp_pd_mask_eq_os(__mmask8 m,__m128d a,__m128d b)1557 __mmask8 test_mm_mask_cmp_pd_mask_eq_os(__mmask8 m, __m128d a, __m128d b) {
1558 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_os
1559 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")
1560 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1561 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
1562 }
1563
test_mm_mask_cmp_pd_mask_lt_oq(__mmask8 m,__m128d a,__m128d b)1564 __mmask8 test_mm_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m128d a, __m128d b) {
1565 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_oq
1566 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")
1567 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1568 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
1569 }
1570
test_mm_mask_cmp_pd_mask_le_oq(__mmask8 m,__m128d a,__m128d b)1571 __mmask8 test_mm_mask_cmp_pd_mask_le_oq(__mmask8 m, __m128d a, __m128d b) {
1572 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_oq
1573 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")
1574 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1575 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
1576 }
1577
test_mm_mask_cmp_pd_mask_unord_s(__mmask8 m,__m128d a,__m128d b)1578 __mmask8 test_mm_mask_cmp_pd_mask_unord_s(__mmask8 m, __m128d a, __m128d b) {
1579 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_s
1580 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")
1581 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1582 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
1583 }
1584
test_mm_mask_cmp_pd_mask_neq_us(__mmask8 m,__m128d a,__m128d b)1585 __mmask8 test_mm_mask_cmp_pd_mask_neq_us(__mmask8 m, __m128d a, __m128d b) {
1586 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_us
1587 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")
1588 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1589 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
1590 }
1591
test_mm_mask_cmp_pd_mask_nlt_uq(__mmask8 m,__m128d a,__m128d b)1592 __mmask8 test_mm_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m128d a, __m128d b) {
1593 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_uq
1594 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")
1595 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1596 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
1597 }
1598
test_mm_mask_cmp_pd_mask_nle_uq(__mmask8 m,__m128d a,__m128d b)1599 __mmask8 test_mm_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m128d a, __m128d b) {
1600 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_uq
1601 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")
1602 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1603 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
1604 }
1605
test_mm_mask_cmp_pd_mask_ord_s(__mmask8 m,__m128d a,__m128d b)1606 __mmask8 test_mm_mask_cmp_pd_mask_ord_s(__mmask8 m, __m128d a, __m128d b) {
1607 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_s
1608 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")
1609 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1610 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
1611 }
1612
test_mm_mask_cmp_pd_mask_eq_us(__mmask8 m,__m128d a,__m128d b)1613 __mmask8 test_mm_mask_cmp_pd_mask_eq_us(__mmask8 m, __m128d a, __m128d b) {
1614 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_us
1615 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")
1616 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1617 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
1618 }
1619
test_mm_mask_cmp_pd_mask_nge_uq(__mmask8 m,__m128d a,__m128d b)1620 __mmask8 test_mm_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m128d a, __m128d b) {
1621 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_uq
1622 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")
1623 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1624 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
1625 }
1626
test_mm_mask_cmp_pd_mask_ngt_uq(__mmask8 m,__m128d a,__m128d b)1627 __mmask8 test_mm_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m128d a, __m128d b) {
1628 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_uq
1629 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")
1630 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1631 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
1632 }
1633
test_mm_mask_cmp_pd_mask_false_os(__mmask8 m,__m128d a,__m128d b)1634 __mmask8 test_mm_mask_cmp_pd_mask_false_os(__mmask8 m, __m128d a, __m128d b) {
1635 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_os
1636 // [[CMP]] = call <2 x i1> @llvm.x86.avx512.cmp.pd.128(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i32 27)
1637 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1638 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
1639 }
1640
test_mm_mask_cmp_pd_mask_neq_os(__mmask8 m,__m128d a,__m128d b)1641 __mmask8 test_mm_mask_cmp_pd_mask_neq_os(__mmask8 m, __m128d a, __m128d b) {
1642 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_os
1643 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")
1644 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1645 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
1646 }
1647
test_mm_mask_cmp_pd_mask_ge_oq(__mmask8 m,__m128d a,__m128d b)1648 __mmask8 test_mm_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m128d a, __m128d b) {
1649 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_oq
1650 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")
1651 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1652 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
1653 }
1654
test_mm_mask_cmp_pd_mask_gt_oq(__mmask8 m,__m128d a,__m128d b)1655 __mmask8 test_mm_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m128d a, __m128d b) {
1656 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_oq
1657 // CHECK: [[CMP:%.*]] = call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")
1658 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1659 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
1660 }
1661
test_mm_mask_cmp_pd_mask_true_us(__mmask8 m,__m128d a,__m128d b)1662 __mmask8 test_mm_mask_cmp_pd_mask_true_us(__mmask8 m, __m128d a, __m128d b) {
1663 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_us
1664 // [[CMP]] = call <2 x i1> @llvm.x86.avx512.cmp.pd.128(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i32 31)
1665 // CHECK: and <2 x i1> [[CMP]], {{.*}}
1666 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
1667 }
1668