[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / CodeGen / X86 / fp-undef.ll
blobd46bea703fdf0bfe2b1960ad08043f04f8161fe9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown                        | FileCheck %s --check-prefixes=ANY,STRICT
3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -enable-unsafe-fp-math | FileCheck %s --check-prefixes=ANY,UNSAFE
5 ; This is duplicated from tests for InstSimplify. If you're
6 ; adding something here, you should probably add it there too.
8 define float @fadd_undef_op0(float %x) {
9 ; ANY-LABEL: fadd_undef_op0:
10 ; ANY:       # %bb.0:
11 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
12 ; ANY-NEXT:    retq
13   %r = fadd float undef, %x
14   ret float %r
17 define float @fadd_undef_op1(float %x) {
18 ; ANY-LABEL: fadd_undef_op1:
19 ; ANY:       # %bb.0:
20 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
21 ; ANY-NEXT:    retq
22   %r = fadd float %x, undef
23   ret float %r
26 define float @fsub_undef_op0(float %x) {
27 ; ANY-LABEL: fsub_undef_op0:
28 ; ANY:       # %bb.0:
29 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
30 ; ANY-NEXT:    retq
31   %r = fsub float undef, %x
32   ret float %r
35 define float @fsub_undef_op1(float %x) {
36 ; ANY-LABEL: fsub_undef_op1:
37 ; ANY:       # %bb.0:
38 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
39 ; ANY-NEXT:    retq
40   %r = fsub float %x, undef
41   ret float %r
44 define float @fmul_undef_op0(float %x) {
45 ; ANY-LABEL: fmul_undef_op0:
46 ; ANY:       # %bb.0:
47 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
48 ; ANY-NEXT:    retq
49   %r = fmul float undef, %x
50   ret float %r
53 define float @fmul_undef_op1(float %x) {
54 ; ANY-LABEL: fmul_undef_op1:
55 ; ANY:       # %bb.0:
56 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
57 ; ANY-NEXT:    retq
58   %r = fmul float %x, undef
59   ret float %r
62 define float @fdiv_undef_op0(float %x) {
63 ; ANY-LABEL: fdiv_undef_op0:
64 ; ANY:       # %bb.0:
65 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
66 ; ANY-NEXT:    retq
67   %r = fdiv float undef, %x
68   ret float %r
71 define float @fdiv_undef_op1(float %x) {
72 ; ANY-LABEL: fdiv_undef_op1:
73 ; ANY:       # %bb.0:
74 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
75 ; ANY-NEXT:    retq
76   %r = fdiv float %x, undef
77   ret float %r
80 define float @frem_undef_op0(float %x) {
81 ; ANY-LABEL: frem_undef_op0:
82 ; ANY:       # %bb.0:
83 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
84 ; ANY-NEXT:    retq
85   %r = frem float undef, %x
86   ret float %r
89 define float @frem_undef_op1(float %x) {
90 ; ANY-LABEL: frem_undef_op1:
91 ; ANY:       # %bb.0:
92 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
93 ; ANY-NEXT:    retq
94   %r = frem float %x, undef
95   ret float %r
98 ; Repeat all tests with fast-math-flags. Alternate 'nnan' and 'fast' for more coverage.
100 define float @fadd_undef_op0_nnan(float %x) {
101 ; ANY-LABEL: fadd_undef_op0_nnan:
102 ; ANY:       # %bb.0:
103 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
104 ; ANY-NEXT:    retq
105   %r = fadd nnan float undef, %x
106   ret float %r
109 define float @fadd_undef_op1_fast(float %x) {
110 ; ANY-LABEL: fadd_undef_op1_fast:
111 ; ANY:       # %bb.0:
112 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
113 ; ANY-NEXT:    retq
114   %r = fadd fast float %x, undef
115   ret float %r
118 define float @fsub_undef_op0_fast(float %x) {
119 ; ANY-LABEL: fsub_undef_op0_fast:
120 ; ANY:       # %bb.0:
121 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
122 ; ANY-NEXT:    retq
123   %r = fsub fast float undef, %x
124   ret float %r
127 define float @fsub_undef_op1_nnan(float %x) {
128 ; ANY-LABEL: fsub_undef_op1_nnan:
129 ; ANY:       # %bb.0:
130 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
131 ; ANY-NEXT:    retq
132   %r = fsub nnan float %x, undef
133   ret float %r
136 define float @fmul_undef_op0_nnan(float %x) {
137 ; ANY-LABEL: fmul_undef_op0_nnan:
138 ; ANY:       # %bb.0:
139 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
140 ; ANY-NEXT:    retq
141   %r = fmul nnan float undef, %x
142   ret float %r
145 define float @fmul_undef_op1_fast(float %x) {
146 ; ANY-LABEL: fmul_undef_op1_fast:
147 ; ANY:       # %bb.0:
148 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
149 ; ANY-NEXT:    retq
150   %r = fmul fast float %x, undef
151   ret float %r
154 define float @fdiv_undef_op0_fast(float %x) {
155 ; ANY-LABEL: fdiv_undef_op0_fast:
156 ; ANY:       # %bb.0:
157 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
158 ; ANY-NEXT:    retq
159   %r = fdiv fast float undef, %x
160   ret float %r
163 define float @fdiv_undef_op1_nnan(float %x) {
164 ; ANY-LABEL: fdiv_undef_op1_nnan:
165 ; ANY:       # %bb.0:
166 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
167 ; ANY-NEXT:    retq
168   %r = fdiv nnan float %x, undef
169   ret float %r
172 define float @frem_undef_op0_nnan(float %x) {
173 ; ANY-LABEL: frem_undef_op0_nnan:
174 ; ANY:       # %bb.0:
175 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
176 ; ANY-NEXT:    retq
177   %r = frem nnan float undef, %x
178   ret float %r
181 define float @frem_undef_op1_fast(float %x) {
182 ; ANY-LABEL: frem_undef_op1_fast:
183 ; ANY:       # %bb.0:
184 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
185 ; ANY-NEXT:    retq
186   %r = frem fast float %x, undef
187   ret float %r
190 ; Constant folding - undef undef.
192 define double @fadd_undef_undef(double %x) {
193 ; ANY-LABEL: fadd_undef_undef:
194 ; ANY:       # %bb.0:
195 ; ANY-NEXT:    retq
196   %r = fadd double undef, undef
197   ret double %r
200 define double @fsub_undef_undef(double %x) {
201 ; ANY-LABEL: fsub_undef_undef:
202 ; ANY:       # %bb.0:
203 ; ANY-NEXT:    retq
204   %r = fsub double undef, undef
205   ret double %r
208 define double @fmul_undef_undef(double %x) {
209 ; ANY-LABEL: fmul_undef_undef:
210 ; ANY:       # %bb.0:
211 ; ANY-NEXT:    retq
212   %r = fmul double undef, undef
213   ret double %r
216 define double @fdiv_undef_undef(double %x) {
217 ; ANY-LABEL: fdiv_undef_undef:
218 ; ANY:       # %bb.0:
219 ; ANY-NEXT:    retq
220   %r = fdiv double undef, undef
221   ret double %r
224 define double @frem_undef_undef(double %x) {
225 ; ANY-LABEL: frem_undef_undef:
226 ; ANY:       # %bb.0:
227 ; ANY-NEXT:    retq
228   %r = frem double undef, undef
229   ret double %r
232 ; Constant folding.
234 define float @fadd_undef_op0_nnan_constant(float %x) {
235 ; ANY-LABEL: fadd_undef_op0_nnan_constant:
236 ; ANY:       # %bb.0:
237 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
238 ; ANY-NEXT:    retq
239   %r = fadd nnan float undef, 1.0
240   ret float %r
243 define float @fadd_undef_op1_constant(float %x) {
244 ; ANY-LABEL: fadd_undef_op1_constant:
245 ; ANY:       # %bb.0:
246 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
247 ; ANY-NEXT:    retq
248   %r = fadd float 2.0, undef
249   ret float %r
252 define float @fsub_undef_op0_fast_constant(float %x) {
253 ; ANY-LABEL: fsub_undef_op0_fast_constant:
254 ; ANY:       # %bb.0:
255 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
256 ; ANY-NEXT:    retq
257   %r = fsub fast float undef, 3.0
258   ret float %r
261 define float @fsub_undef_op1_constant(float %x) {
262 ; ANY-LABEL: fsub_undef_op1_constant:
263 ; ANY:       # %bb.0:
264 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
265 ; ANY-NEXT:    retq
266   %r = fsub float 4.0, undef
267   ret float %r
270 define float @fmul_undef_op0_nnan_constant(float %x) {
271 ; ANY-LABEL: fmul_undef_op0_nnan_constant:
272 ; ANY:       # %bb.0:
273 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
274 ; ANY-NEXT:    retq
275   %r = fmul nnan float undef, 5.0
276   ret float %r
279 define float @fmul_undef_op1_constant(float %x) {
280 ; ANY-LABEL: fmul_undef_op1_constant:
281 ; ANY:       # %bb.0:
282 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
283 ; ANY-NEXT:    retq
284   %r = fmul float 6.0, undef
285   ret float %r
288 define float @fdiv_undef_op0_fast_constant(float %x) {
289 ; ANY-LABEL: fdiv_undef_op0_fast_constant:
290 ; ANY:       # %bb.0:
291 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
292 ; ANY-NEXT:    retq
293   %r = fdiv fast float undef, 7.0
294   ret float %r
297 define float @fdiv_undef_op1_constant(float %x) {
298 ; ANY-LABEL: fdiv_undef_op1_constant:
299 ; ANY:       # %bb.0:
300 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
301 ; ANY-NEXT:    retq
302   %r = fdiv float 8.0, undef
303   ret float %r
306 define float @frem_undef_op0_nnan_constant(float %x) {
307 ; ANY-LABEL: frem_undef_op0_nnan_constant:
308 ; ANY:       # %bb.0:
309 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
310 ; ANY-NEXT:    retq
311   %r = frem nnan float undef, 9.0
312   ret float %r
315 define float @frem_undef_op1_constant(float %x) {
316 ; ANY-LABEL: frem_undef_op1_constant:
317 ; ANY:       # %bb.0:
318 ; ANY-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
319 ; ANY-NEXT:    retq
320   %r = frem float 10.0, undef
321   ret float %r
324 ; Constant folding - special constants: NaN.
326 define double @fadd_undef_op0_constant_nan(double %x) {
327 ; ANY-LABEL: fadd_undef_op0_constant_nan:
328 ; ANY:       # %bb.0:
329 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
330 ; ANY-NEXT:    retq
331   %r = fadd double undef, 0x7FF8000000000000
332   ret double %r
335 define double @fadd_undef_op1_fast_constant_nan(double %x) {
336 ; ANY-LABEL: fadd_undef_op1_fast_constant_nan:
337 ; ANY:       # %bb.0:
338 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
339 ; ANY-NEXT:    retq
340   %r = fadd fast double 0xFFF0000000000001, undef
341   ret double %r
344 define double @fsub_undef_op0_constant_nan(double %x) {
345 ; ANY-LABEL: fsub_undef_op0_constant_nan:
346 ; ANY:       # %bb.0:
347 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
348 ; ANY-NEXT:    retq
349   %r = fsub double undef, 0xFFF8000000000010
350   ret double %r
353 define double @fsub_undef_op1_nnan_constant_nan(double %x) {
354 ; ANY-LABEL: fsub_undef_op1_nnan_constant_nan:
355 ; ANY:       # %bb.0:
356 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
357 ; ANY-NEXT:    retq
358   %r = fsub nnan double 0x7FF0000000000011, undef
359   ret double %r
362 define double @fmul_undef_op0_constant_nan(double %x) {
363 ; ANY-LABEL: fmul_undef_op0_constant_nan:
364 ; ANY:       # %bb.0:
365 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
366 ; ANY-NEXT:    retq
367   %r = fmul double undef, 0x7FF8000000000100
368   ret double %r
371 define double @fmul_undef_op1_fast_constant_nan(double %x) {
372 ; ANY-LABEL: fmul_undef_op1_fast_constant_nan:
373 ; ANY:       # %bb.0:
374 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
375 ; ANY-NEXT:    retq
376   %r = fmul fast double 0xFFF0000000000101, undef
377   ret double %r
380 define double @fdiv_undef_op0_constant_nan(double %x) {
381 ; ANY-LABEL: fdiv_undef_op0_constant_nan:
382 ; ANY:       # %bb.0:
383 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
384 ; ANY-NEXT:    retq
385   %r = fdiv double undef, 0xFFF8000000000110
386   ret double %r
389 define double @fdiv_undef_op1_nnan_constant_nan(double %x) {
390 ; ANY-LABEL: fdiv_undef_op1_nnan_constant_nan:
391 ; ANY:       # %bb.0:
392 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
393 ; ANY-NEXT:    retq
394   %r = fdiv nnan double 0x7FF0000000000111, undef
395   ret double %r
398 define double @frem_undef_op0_constant_nan(double %x) {
399 ; ANY-LABEL: frem_undef_op0_constant_nan:
400 ; ANY:       # %bb.0:
401 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
402 ; ANY-NEXT:    retq
403   %r = frem double undef, 0x7FF8000000001000
404   ret double %r
407 define double @frem_undef_op1_fast_constant_nan(double %x) {
408 ; ANY-LABEL: frem_undef_op1_fast_constant_nan:
409 ; ANY:       # %bb.0:
410 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
411 ; ANY-NEXT:    retq
412   %r = frem fast double 0xFFF0000000001001, undef
413   ret double %r
416 ; Constant folding - special constants: Inf.
418 define double @fadd_undef_op0_constant_inf(double %x) {
419 ; ANY-LABEL: fadd_undef_op0_constant_inf:
420 ; ANY:       # %bb.0:
421 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
422 ; ANY-NEXT:    retq
423   %r = fadd double undef, 0x7FF0000000000000
424   ret double %r
427 define double @fadd_undef_op1_fast_constant_inf(double %x) {
428 ; ANY-LABEL: fadd_undef_op1_fast_constant_inf:
429 ; ANY:       # %bb.0:
430 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
431 ; ANY-NEXT:    retq
432   %r = fadd fast double 0xFFF0000000000000, undef
433   ret double %r
436 define double @fsub_undef_op0_constant_inf(double %x) {
437 ; ANY-LABEL: fsub_undef_op0_constant_inf:
438 ; ANY:       # %bb.0:
439 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
440 ; ANY-NEXT:    retq
441   %r = fsub double undef, 0xFFF0000000000000
442   ret double %r
445 define double @fsub_undef_op1_ninf_constant_inf(double %x) {
446 ; ANY-LABEL: fsub_undef_op1_ninf_constant_inf:
447 ; ANY:       # %bb.0:
448 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
449 ; ANY-NEXT:    retq
450   %r = fsub ninf double 0x7FF0000000000000, undef
451   ret double %r
454 define double @fmul_undef_op0_constant_inf(double %x) {
455 ; ANY-LABEL: fmul_undef_op0_constant_inf:
456 ; ANY:       # %bb.0:
457 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
458 ; ANY-NEXT:    retq
459   %r = fmul double undef, 0x7FF0000000000000
460   ret double %r
463 define double @fmul_undef_op1_fast_constant_inf(double %x) {
464 ; ANY-LABEL: fmul_undef_op1_fast_constant_inf:
465 ; ANY:       # %bb.0:
466 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
467 ; ANY-NEXT:    retq
468   %r = fmul fast double 0xFFF0000000000000, undef
469   ret double %r
472 define double @fdiv_undef_op0_constant_inf(double %x) {
473 ; ANY-LABEL: fdiv_undef_op0_constant_inf:
474 ; ANY:       # %bb.0:
475 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
476 ; ANY-NEXT:    retq
477   %r = fdiv double undef, 0xFFF0000000000000
478   ret double %r
481 define double @fdiv_undef_op1_ninf_constant_inf(double %x) {
482 ; ANY-LABEL: fdiv_undef_op1_ninf_constant_inf:
483 ; ANY:       # %bb.0:
484 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
485 ; ANY-NEXT:    retq
486   %r = fdiv ninf double 0x7FF0000000000000, undef
487   ret double %r
490 define double @frem_undef_op0_constant_inf(double %x) {
491 ; ANY-LABEL: frem_undef_op0_constant_inf:
492 ; ANY:       # %bb.0:
493 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
494 ; ANY-NEXT:    retq
495   %r = frem double undef, 0x7FF0000000000000
496   ret double %r
499 define double @frem_undef_op1_fast_constant_inf(double %x) {
500 ; ANY-LABEL: frem_undef_op1_fast_constant_inf:
501 ; ANY:       # %bb.0:
502 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
503 ; ANY-NEXT:    retq
504   %r = frem fast double 0xFFF0000000000000, undef
505   ret double %r
508 define <2 x double> @fadd_undef_op1_constant_vec(<2 x double> %x) {
509 ; ANY-LABEL: fadd_undef_op1_constant_vec:
510 ; ANY:       # %bb.0:
511 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
512 ; ANY-NEXT:    retq
513   %r = fadd <2 x double> <double 42.0, double undef>, undef
514   ret <2 x double> %r
517 define <2 x double> @fadd_undef_op0_constant_vec(<2 x double> %x) {
518 ; ANY-LABEL: fadd_undef_op0_constant_vec:
519 ; ANY:       # %bb.0:
520 ; ANY-NEXT:    movaps {{.*#+}} xmm0 = <u,NaN>
521 ; ANY-NEXT:    retq
522   %r = fadd <2 x double> undef, <double undef, double 42.0>
523   ret <2 x double> %r
526 define <2 x double> @fsub_undef_op1_constant_vec(<2 x double> %x) {
527 ; ANY-LABEL: fsub_undef_op1_constant_vec:
528 ; ANY:       # %bb.0:
529 ; ANY-NEXT:    movaps {{.*#+}} xmm0 = <u,NaN>
530 ; ANY-NEXT:    retq
531   %r = fsub <2 x double> <double undef, double 42.0>, undef
532   ret <2 x double> %r
535 define <2 x double> @fsub_undef_op0_constant_vec(<2 x double> %x) {
536 ; ANY-LABEL: fsub_undef_op0_constant_vec:
537 ; ANY:       # %bb.0:
538 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
539 ; ANY-NEXT:    retq
540   %r = fsub <2 x double> undef, <double 42.0, double undef>
541   ret <2 x double> %r
544 define <2 x double> @fmul_undef_op1_constant_vec(<2 x double> %x) {
545 ; ANY-LABEL: fmul_undef_op1_constant_vec:
546 ; ANY:       # %bb.0:
547 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
548 ; ANY-NEXT:    retq
549   %r = fmul <2 x double> <double 42.0, double undef>, undef
550   ret <2 x double> %r
553 define <2 x double> @fmul_undef_op0_constant_vec(<2 x double> %x) {
554 ; ANY-LABEL: fmul_undef_op0_constant_vec:
555 ; ANY:       # %bb.0:
556 ; ANY-NEXT:    movaps {{.*#+}} xmm0 = <u,NaN>
557 ; ANY-NEXT:    retq
558   %r = fmul <2 x double> undef, <double undef, double 42.0>
559   ret <2 x double> %r
562 define <2 x double> @fdiv_undef_op1_constant_vec(<2 x double> %x) {
563 ; ANY-LABEL: fdiv_undef_op1_constant_vec:
564 ; ANY:       # %bb.0:
565 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
566 ; ANY-NEXT:    retq
567   %r = fdiv <2 x double> <double 42.0, double undef>, undef
568   ret <2 x double> %r
571 define <2 x double> @fdiv_undef_op0_constant_vec(<2 x double> %x) {
572 ; ANY-LABEL: fdiv_undef_op0_constant_vec:
573 ; ANY:       # %bb.0:
574 ; ANY-NEXT:    movaps {{.*#+}} xmm0 = <u,NaN>
575 ; ANY-NEXT:    retq
576   %r = fdiv <2 x double> undef, <double undef, double 42.0>
577   ret <2 x double> %r
580 define <2 x double> @frem_undef_op1_constant_vec(<2 x double> %x) {
581 ; ANY-LABEL: frem_undef_op1_constant_vec:
582 ; ANY:       # %bb.0:
583 ; ANY-NEXT:    movaps {{.*#+}} xmm0 = <u,NaN>
584 ; ANY-NEXT:    retq
585   %r = frem <2 x double> <double undef, double 42.0>, undef
586   ret <2 x double> %r
589 define <2 x double> @frem_undef_op0_constant_vec(<2 x double> %x) {
590 ; ANY-LABEL: frem_undef_op0_constant_vec:
591 ; ANY:       # %bb.0:
592 ; ANY-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero
593 ; ANY-NEXT:    retq
594   %r = frem <2 x double> undef, <double 42.0, double undef>
595   ret <2 x double> %r