diff options
| -rw-r--r-- | llvm/test/CodeGen/X86/fp-undef.ll | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/fp-undef.ll b/llvm/test/CodeGen/X86/fp-undef.ll index 717fe598a0a..687738f420a 100644 --- a/llvm/test/CodeGen/X86/fp-undef.ll +++ b/llvm/test/CodeGen/X86/fp-undef.ll @@ -505,3 +505,93 @@ define double @frem_undef_op1_fast_constant_inf(double %x) { ret double %r } +define <2 x double> @fadd_undef_op1_constant_vec(<2 x double> %x) { +; ANY-LABEL: fadd_undef_op1_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = fadd <2 x double> <double 42.0, double undef>, undef + ret <2 x double> %r +} + +define <2 x double> @fadd_undef_op0_constant_vec(<2 x double> %x) { +; ANY-LABEL: fadd_undef_op0_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = fadd <2 x double> undef, <double undef, double 42.0> + ret <2 x double> %r +} + +define <2 x double> @fsub_undef_op1_constant_vec(<2 x double> %x) { +; ANY-LABEL: fsub_undef_op1_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = fsub <2 x double> <double undef, double 42.0>, undef + ret <2 x double> %r +} + +define <2 x double> @fsub_undef_op0_constant_vec(<2 x double> %x) { +; ANY-LABEL: fsub_undef_op0_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = fsub <2 x double> undef, <double 42.0, double undef> + ret <2 x double> %r +} + +define <2 x double> @fmul_undef_op1_constant_vec(<2 x double> %x) { +; ANY-LABEL: fmul_undef_op1_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = fmul <2 x double> <double 42.0, double undef>, undef + ret <2 x double> %r +} + +define <2 x double> @fmul_undef_op0_constant_vec(<2 x double> %x) { +; ANY-LABEL: fmul_undef_op0_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = fmul <2 x double> undef, <double undef, double 42.0> + ret <2 x double> %r +} + +define <2 x double> @fdiv_undef_op1_constant_vec(<2 x double> %x) { +; ANY-LABEL: fdiv_undef_op1_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = fdiv <2 x double> <double 42.0, double undef>, undef + ret <2 x double> %r +} + +define <2 x double> @fdiv_undef_op0_constant_vec(<2 x double> %x) { +; ANY-LABEL: fdiv_undef_op0_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = fdiv <2 x double> undef, <double undef, double 42.0> + ret <2 x double> %r +} + +define <2 x double> @frem_undef_op1_constant_vec(<2 x double> %x) { +; ANY-LABEL: frem_undef_op1_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = frem <2 x double> <double undef, double 42.0>, undef + ret <2 x double> %r +} + +define <2 x double> @frem_undef_op0_constant_vec(<2 x double> %x) { +; ANY-LABEL: frem_undef_op0_constant_vec: +; ANY: # %bb.0: +; ANY-NEXT: movaps {{.*#+}} xmm0 = [NaN,NaN] +; ANY-NEXT: retq + %r = frem <2 x double> undef, <double 42.0, double undef> + ret <2 x double> %r +} + |

