1 ; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
2 ; REQUIRES: x86-registered-target
4 define i1 @test_avx512_cvts_exact() nounwind readnone {
5 ; CHECK-LABEL: @test_avx512_cvts_exact(
9 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> <float 3.0, float undef, float undef, float undef>, i32 4) nounwind
10 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> <float 3.0, float undef, float undef, float undef>, i32 4) nounwind
11 %i2 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> <double 7.0, double undef>, i32 4) nounwind
12 %i3 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> <double 7.0, double undef>, i32 4) nounwind
13 %sum02 = add i32 %i0, %i2
14 %sum13 = add i64 %i1, %i3
15 %cmp02 = icmp eq i32 %sum02, 10
16 %cmp13 = icmp eq i64 %sum13, 10
17 %b = and i1 %cmp02, %cmp13
21 define i1 @test_avx512_cvts_exact_max() nounwind readnone {
22 ; CHECK-LABEL: @test_avx512_cvts_exact_max(
26 %i0 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> <double 2147483647.0, double undef>, i32 4) nounwind
27 %b = icmp eq i32 %i0, 2147483647
31 define i1 @test_avx512_cvts_exact_max_p1() nounwind readnone {
32 ; CHECK-LABEL: @test_avx512_cvts_exact_max_p1(
35 %i0 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> <double 2147483648.0, double undef>, i32 4) nounwind
36 %b = icmp eq i32 %i0, 2147483648
40 define i1 @test_avx512_cvts_exact_neg_max() nounwind readnone {
41 ; CHECK-LABEL: @test_avx512_cvts_exact_neg_max(
45 %i0 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> <double -2147483648.0, double undef>, i32 4) nounwind
46 %b = icmp eq i32 %i0, -2147483648
50 define i1 @test_avx512_cvts_exact_neg_max_p1() nounwind readnone {
51 ; CHECK-LABEL: @test_avx512_cvts_exact_neg_max_p1(
54 %i0 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> <double -2147483649.0, double undef>, i32 4) nounwind
55 %b = icmp eq i32 %i0, -2147483649
59 ; Inexact values should not fold as they are dependent on rounding mode
60 define i1 @test_avx512_cvts_inexact() nounwind readnone {
61 ; CHECK-LABEL: @test_avx512_cvts_inexact(
67 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> <float 1.75, float undef, float undef, float undef>, i32 4) nounwind
68 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> <float 1.75, float undef, float undef, float undef>, i32 4) nounwind
69 %i2 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> <double 1.75, double undef>, i32 4) nounwind
70 %i3 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> <double 1.75, double undef>, i32 4) nounwind
71 %sum02 = add i32 %i0, %i2
72 %sum13 = add i64 %i1, %i3
73 %cmp02 = icmp eq i32 %sum02, 4
74 %cmp13 = icmp eq i64 %sum13, 4
75 %b = and i1 %cmp02, %cmp13
79 ; FLT_MAX/DBL_MAX should not fold
80 define i1 @test_avx512_cvts_max() nounwind readnone {
81 ; CHECK-LABEL: @test_avx512_cvts_max(
87 %fm = bitcast <4 x i32> <i32 2139095039, i32 undef, i32 undef, i32 undef> to <4 x float>
88 %dm = bitcast <2 x i64> <i64 9218868437227405311, i64 undef> to <2 x double>
89 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %fm, i32 4) nounwind
90 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %fm, i32 4) nounwind
91 %i2 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %dm, i32 4) nounwind
92 %i3 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %dm, i32 4) nounwind
93 %sum02 = add i32 %i0, %i2
94 %sum13 = add i64 %i1, %i3
95 %sum02.sext = sext i32 %sum02 to i64
96 %b = icmp eq i64 %sum02.sext, %sum13
100 ; INF should not fold
101 define i1 @test_avx512_cvts_inf() nounwind readnone {
102 ; CHECK-LABEL: @test_avx512_cvts_inf(
108 %fm = bitcast <4 x i32> <i32 2139095040, i32 undef, i32 undef, i32 undef> to <4 x float>
109 %dm = bitcast <2 x i64> <i64 9218868437227405312, i64 undef> to <2 x double>
110 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %fm, i32 4) nounwind
111 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %fm, i32 4) nounwind
112 %i2 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %dm, i32 4) nounwind
113 %i3 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %dm, i32 4) nounwind
114 %sum02 = add i32 %i0, %i2
115 %sum13 = add i64 %i1, %i3
116 %sum02.sext = sext i32 %sum02 to i64
117 %b = icmp eq i64 %sum02.sext, %sum13
121 ; NAN should not fold
122 define i1 @test_avx512_cvts_nan() nounwind readnone {
123 ; CHECK-LABEL: @test_avx512_cvts_nan(
129 %fm = bitcast <4 x i32> <i32 2143289344, i32 undef, i32 undef, i32 undef> to <4 x float>
130 %dm = bitcast <2 x i64> <i64 9221120237041090560, i64 undef> to <2 x double>
131 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2si32(<4 x float> %fm, i32 4) nounwind
132 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2si64(<4 x float> %fm, i32 4) nounwind
133 %i2 = call i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double> %dm, i32 4) nounwind
134 %i3 = call i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double> %dm, i32 4) nounwind
135 %sum02 = add i32 %i0, %i2
136 %sum13 = add i64 %i1, %i3
137 %sum02.sext = sext i32 %sum02 to i64
138 %b = icmp eq i64 %sum02.sext, %sum13
142 define i1 @test_avx512_cvtts_exact() nounwind readnone {
143 ; CHECK-LABEL: @test_avx512_cvtts_exact(
147 %i0 = tail call i32 @llvm.x86.avx512.cvttss2si(<4 x float> <float 3.0, float undef, float undef, float undef>, i32 4) nounwind
148 %i1 = tail call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> <float 3.0, float undef, float undef, float undef>, i32 4) nounwind
149 %i2 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> <double 7.0, double undef>, i32 4) nounwind
150 %i3 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> <double 7.0, double undef>, i32 4) nounwind
151 %sum02 = add i32 %i0, %i2
152 %sum13 = add i64 %i1, %i3
153 %cmp02 = icmp eq i32 %sum02, 10
154 %cmp13 = icmp eq i64 %sum13, 10
155 %b = and i1 %cmp02, %cmp13
159 define i1 @test_avx512_cvtts_inexact() nounwind readnone {
160 ; CHECK-LABEL: @test_avx512_cvtts_inexact(
164 %i0 = tail call i32 @llvm.x86.avx512.cvttss2si(<4 x float> <float 1.75, float undef, float undef, float undef>, i32 4) nounwind
165 %i1 = tail call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> <float 1.75, float undef, float undef, float undef>, i32 4) nounwind
166 %i2 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> <double 1.75, double undef>, i32 4) nounwind
167 %i3 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> <double 1.75, double undef>, i32 4) nounwind
168 %sum02 = add i32 %i0, %i2
169 %sum13 = add i64 %i1, %i3
170 %cmp02 = icmp eq i32 %sum02, 2
171 %cmp13 = icmp eq i64 %sum13, 2
172 %b = and i1 %cmp02, %cmp13
176 ; FLT_MAX/DBL_MAX should not fold
177 define i1 @test_avx512_cvtts_max() nounwind readnone {
178 ; CHECK-LABEL: @test_avx512_cvtts_max(
184 %fm = bitcast <4 x i32> <i32 2139095039, i32 undef, i32 undef, i32 undef> to <4 x float>
185 %dm = bitcast <2 x i64> <i64 9218868437227405311, i64 undef> to <2 x double>
186 %i0 = tail call i32 @llvm.x86.avx512.cvttss2si(<4 x float> %fm, i32 4) nounwind
187 %i1 = tail call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> %fm, i32 4) nounwind
188 %i2 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> %dm, i32 4) nounwind
189 %i3 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> %dm, i32 4) nounwind
190 %sum02 = add i32 %i0, %i2
191 %sum13 = add i64 %i1, %i3
192 %sum02.sext = sext i32 %sum02 to i64
193 %b = icmp eq i64 %sum02.sext, %sum13
197 ; INF should not fold
198 define i1 @test_avx512_cvtts_inf() nounwind readnone {
199 ; CHECK-LABEL: @test_avx512_cvtts_inf(
205 %fm = bitcast <4 x i32> <i32 2139095040, i32 undef, i32 undef, i32 undef> to <4 x float>
206 %dm = bitcast <2 x i64> <i64 9218868437227405312, i64 undef> to <2 x double>
207 %i0 = tail call i32 @llvm.x86.avx512.cvttss2si(<4 x float> %fm, i32 4) nounwind
208 %i1 = tail call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> %fm, i32 4) nounwind
209 %i2 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> %dm, i32 4) nounwind
210 %i3 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> %dm, i32 4) nounwind
211 %sum02 = add i32 %i0, %i2
212 %sum13 = add i64 %i1, %i3
213 %sum02.sext = sext i32 %sum02 to i64
214 %b = icmp eq i64 %sum02.sext, %sum13
218 ; NAN should not fold
219 define i1 @test_avx512_cvtts_nan() nounwind readnone {
220 ; CHECK-LABEL: @test_avx512_cvtts_nan(
226 %fm = bitcast <4 x i32> <i32 2143289344, i32 undef, i32 undef, i32 undef> to <4 x float>
227 %dm = bitcast <2 x i64> <i64 9221120237041090560, i64 undef> to <2 x double>
228 %i0 = tail call i32 @llvm.x86.avx512.cvttss2si(<4 x float> %fm, i32 4) nounwind
229 %i1 = tail call i64 @llvm.x86.avx512.cvttss2si64(<4 x float> %fm, i32 4) nounwind
230 %i2 = call i32 @llvm.x86.avx512.cvttsd2si(<2 x double> %dm, i32 4) nounwind
231 %i3 = call i64 @llvm.x86.avx512.cvttsd2si64(<2 x double> %dm, i32 4) nounwind
232 %sum02 = add i32 %i0, %i2
233 %sum13 = add i64 %i1, %i3
234 %sum02.sext = sext i32 %sum02 to i64
235 %b = icmp eq i64 %sum02.sext, %sum13
239 define i1 @test_avx512_cvtu_exact() nounwind readnone {
240 ; CHECK-LABEL: @test_avx512_cvtu_exact(
244 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> <float 3.0, float undef, float undef, float undef>, i32 4) nounwind
245 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> <float 3.0, float undef, float undef, float undef>, i32 4) nounwind
246 %i2 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> <double 7.0, double undef>, i32 4) nounwind
247 %i3 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> <double 7.0, double undef>, i32 4) nounwind
248 %sum02 = add i32 %i0, %i2
249 %sum13 = add i64 %i1, %i3
250 %cmp02 = icmp eq i32 %sum02, 10
251 %cmp13 = icmp eq i64 %sum13, 10
252 %b = and i1 %cmp02, %cmp13
256 ; Negative values should not fold as they can't be represented in an unsigned int.
257 define i1 @test_avx512_cvtu_neg() nounwind readnone {
258 ; CHECK-LABEL: @test_avx512_cvtu_neg(
264 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> <float -3.0, float undef, float undef, float undef>, i32 4) nounwind
265 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> <float -3.0, float undef, float undef, float undef>, i32 4) nounwind
266 %i2 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> <double -7.0, double undef>, i32 4) nounwind
267 %i3 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> <double -7.0, double undef>, i32 4) nounwind
268 %sum02 = add i32 %i0, %i2
269 %sum13 = add i64 %i1, %i3
270 %cmp02 = icmp eq i32 %sum02, -10
271 %cmp13 = icmp eq i64 %sum13, -10
272 %b = and i1 %cmp02, %cmp13
276 define i1 @test_avx512_cvtu_exact_max() nounwind readnone {
277 ; CHECK-LABEL: @test_avx512_cvtu_exact_max(
281 %i0 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> <double 4294967295.0, double undef>, i32 4) nounwind
282 %b = icmp eq i32 %i0, 4294967295
286 define i1 @test_avx512_cvtu_exact_max_p1() nounwind readnone {
287 ; CHECK-LABEL: @test_avx512_cvtu_exact_max_p1(
290 %i0 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> <double 4294967296.0, double undef>, i32 4) nounwind
291 %b = icmp eq i32 %i0, 4294967296
295 ; Inexact values should not fold as they are dependent on rounding mode
296 define i1 @test_avx512_cvtu_inexact() nounwind readnone {
297 ; CHECK-LABEL: @test_avx512_cvtu_inexact(
303 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> <float 1.75, float undef, float undef, float undef>, i32 4) nounwind
304 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> <float 1.75, float undef, float undef, float undef>, i32 4) nounwind
305 %i2 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> <double 1.75, double undef>, i32 4) nounwind
306 %i3 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> <double 1.75, double undef>, i32 4) nounwind
307 %sum02 = add i32 %i0, %i2
308 %sum13 = add i64 %i1, %i3
309 %cmp02 = icmp eq i32 %sum02, 4
310 %cmp13 = icmp eq i64 %sum13, 4
311 %b = and i1 %cmp02, %cmp13
315 ; FLT_MAX/DBL_MAX should not fold
316 define i1 @test_avx512_cvtu_max() nounwind readnone {
317 ; CHECK-LABEL: @test_avx512_cvtu_max(
323 %fm = bitcast <4 x i32> <i32 2139095039, i32 undef, i32 undef, i32 undef> to <4 x float>
324 %dm = bitcast <2 x i64> <i64 9218868437227405311, i64 undef> to <2 x double>
325 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %fm, i32 4) nounwind
326 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %fm, i32 4) nounwind
327 %i2 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %dm, i32 4) nounwind
328 %i3 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %dm, i32 4) nounwind
329 %sum02 = add i32 %i0, %i2
330 %sum13 = add i64 %i1, %i3
331 %sum02.sext = sext i32 %sum02 to i64
332 %b = icmp eq i64 %sum02.sext, %sum13
336 ; INF should not fold
337 define i1 @test_avx512_cvtu_inf() nounwind readnone {
338 ; CHECK-LABEL: @test_avx512_cvtu_inf(
344 %fm = bitcast <4 x i32> <i32 2139095040, i32 undef, i32 undef, i32 undef> to <4 x float>
345 %dm = bitcast <2 x i64> <i64 9218868437227405312, i64 undef> to <2 x double>
346 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %fm, i32 4) nounwind
347 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %fm, i32 4) nounwind
348 %i2 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %dm, i32 4) nounwind
349 %i3 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %dm, i32 4) nounwind
350 %sum02 = add i32 %i0, %i2
351 %sum13 = add i64 %i1, %i3
352 %sum02.sext = sext i32 %sum02 to i64
353 %b = icmp eq i64 %sum02.sext, %sum13
357 ; NAN should not fold
358 define i1 @test_avx512_cvtu_nan() nounwind readnone {
359 ; CHECK-LABEL: @test_avx512_cvtu_nan(
365 %fm = bitcast <4 x i32> <i32 2143289344, i32 undef, i32 undef, i32 undef> to <4 x float>
366 %dm = bitcast <2 x i64> <i64 9221120237041090560, i64 undef> to <2 x double>
367 %i0 = tail call i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float> %fm, i32 4) nounwind
368 %i1 = tail call i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float> %fm, i32 4) nounwind
369 %i2 = call i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double> %dm, i32 4) nounwind
370 %i3 = call i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double> %dm, i32 4) nounwind
371 %sum02 = add i32 %i0, %i2
372 %sum13 = add i64 %i1, %i3
373 %sum02.sext = sext i32 %sum02 to i64
374 %b = icmp eq i64 %sum02.sext, %sum13
378 define i1 @test_avx512_cvttu_exact() nounwind readnone {
379 ; CHECK-LABEL: @test_avx512_cvttu_exact(
383 %i0 = tail call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> <float 3.0, float undef, float undef, float undef>, i32 4) nounwind
384 %i1 = tail call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> <float 3.0, float undef, float undef, float undef>, i32 4) nounwind
385 %i2 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> <double 7.0, double undef>, i32 4) nounwind
386 %i3 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> <double 7.0, double undef>, i32 4) nounwind
387 %sum02 = add i32 %i0, %i2
388 %sum13 = add i64 %i1, %i3
389 %cmp02 = icmp eq i32 %sum02, 10
390 %cmp13 = icmp eq i64 %sum13, 10
391 %b = and i1 %cmp02, %cmp13
395 define i1 @test_avx512_cvttu_inexact() nounwind readnone {
396 ; CHECK-LABEL: @test_avx512_cvttu_inexact(
400 %i0 = tail call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> <float 1.75, float undef, float undef, float undef>, i32 4) nounwind
401 %i1 = tail call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> <float 1.75, float undef, float undef, float undef>, i32 4) nounwind
402 %i2 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> <double 1.75, double undef>, i32 4) nounwind
403 %i3 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> <double 1.75, double undef>, i32 4) nounwind
404 %sum02 = add i32 %i0, %i2
405 %sum13 = add i64 %i1, %i3
406 %cmp02 = icmp eq i32 %sum02, 2
407 %cmp13 = icmp eq i64 %sum13, 2
408 %b = and i1 %cmp02, %cmp13
412 ; FLT_MAX/DBL_MAX should not fold
413 define i1 @test_avx512_cvttu_max() nounwind readnone {
414 ; CHECK-LABEL: @test_avx512_cvttu_max(
420 %fm = bitcast <4 x i32> <i32 2139095039, i32 undef, i32 undef, i32 undef> to <4 x float>
421 %dm = bitcast <2 x i64> <i64 9218868437227405311, i64 undef> to <2 x double>
422 %i0 = tail call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> %fm, i32 4) nounwind
423 %i1 = tail call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> %fm, i32 4) nounwind
424 %i2 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> %dm, i32 4) nounwind
425 %i3 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> %dm, i32 4) nounwind
426 %sum02 = add i32 %i0, %i2
427 %sum13 = add i64 %i1, %i3
428 %sum02.sext = sext i32 %sum02 to i64
429 %b = icmp eq i64 %sum02.sext, %sum13
433 ; INF should not fold
434 define i1 @test_avx512_cvttu_inf() nounwind readnone {
435 ; CHECK-LABEL: @test_avx512_cvttu_inf(
441 %fm = bitcast <4 x i32> <i32 2139095040, i32 undef, i32 undef, i32 undef> to <4 x float>
442 %dm = bitcast <2 x i64> <i64 9218868437227405312, i64 undef> to <2 x double>
443 %i0 = tail call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> %fm, i32 4) nounwind
444 %i1 = tail call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> %fm, i32 4) nounwind
445 %i2 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> %dm, i32 4) nounwind
446 %i3 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> %dm, i32 4) nounwind
447 %sum02 = add i32 %i0, %i2
448 %sum13 = add i64 %i1, %i3
449 %sum02.sext = sext i32 %sum02 to i64
450 %b = icmp eq i64 %sum02.sext, %sum13
454 ; NAN should not fold
455 define i1 @test_avx512_cvttu_nan() nounwind readnone {
456 ; CHECK-LABEL: @test_avx512_cvttu_nan(
462 %fm = bitcast <4 x i32> <i32 2143289344, i32 undef, i32 undef, i32 undef> to <4 x float>
463 %dm = bitcast <2 x i64> <i64 9221120237041090560, i64 undef> to <2 x double>
464 %i0 = tail call i32 @llvm.x86.avx512.cvttss2usi(<4 x float> %fm, i32 4) nounwind
465 %i1 = tail call i64 @llvm.x86.avx512.cvttss2usi64(<4 x float> %fm, i32 4) nounwind
466 %i2 = call i32 @llvm.x86.avx512.cvttsd2usi(<2 x double> %dm, i32 4) nounwind
467 %i3 = call i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double> %dm, i32 4) nounwind
468 %sum02 = add i32 %i0, %i2
469 %sum13 = add i64 %i1, %i3
470 %sum02.sext = sext i32 %sum02 to i64
471 %b = icmp eq i64 %sum02.sext, %sum13
475 declare i32 @llvm.x86.avx512.vcvtss2si32(<4 x float>, i32) nounwind readnone
476 declare i32 @llvm.x86.avx512.cvttss2si(<4 x float>, i32) nounwind readnone
477 declare i64 @llvm.x86.avx512.vcvtss2si64(<4 x float>, i32) nounwind readnone
478 declare i64 @llvm.x86.avx512.cvttss2si64(<4 x float>, i32) nounwind readnone
479 declare i32 @llvm.x86.avx512.vcvtsd2si32(<2 x double>, i32) nounwind readnone
480 declare i32 @llvm.x86.avx512.cvttsd2si(<2 x double>, i32) nounwind readnone
481 declare i64 @llvm.x86.avx512.vcvtsd2si64(<2 x double>, i32) nounwind readnone
482 declare i64 @llvm.x86.avx512.cvttsd2si64(<2 x double>, i32) nounwind readnone
483 declare i32 @llvm.x86.avx512.vcvtss2usi32(<4 x float>, i32) nounwind readnone
484 declare i32 @llvm.x86.avx512.cvttss2usi(<4 x float>, i32) nounwind readnone
485 declare i64 @llvm.x86.avx512.vcvtss2usi64(<4 x float>, i32) nounwind readnone
486 declare i64 @llvm.x86.avx512.cvttss2usi64(<4 x float>, i32) nounwind readnone
487 declare i32 @llvm.x86.avx512.vcvtsd2usi32(<2 x double>, i32) nounwind readnone
488 declare i32 @llvm.x86.avx512.cvttsd2usi(<2 x double>, i32) nounwind readnone
489 declare i64 @llvm.x86.avx512.vcvtsd2usi64(<2 x double>, i32) nounwind readnone
490 declare i64 @llvm.x86.avx512.cvttsd2usi64(<2 x double>, i32) nounwind readnone