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