summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2018-11-30 22:54:33 +0000
committerSanjay Patel <spatel@rotateright.com>2018-11-30 22:54:33 +0000
commit39298cae9f9a45a67e2630770899c42171037be4 (patch)
treef15da864129b28d56f795b19692512280e59dae5 /llvm
parent502fc1bdd5500a0b8fd0fc2ce88817b8fa90f640 (diff)
downloadbcm5719-llvm-39298cae9f9a45a67e2630770899c42171037be4.tar.gz
bcm5719-llvm-39298cae9f9a45a67e2630770899c42171037be4.zip
[x86] add tests for undef + partial undef constant folding; NFC
Keep this file sync'd with the instsimplify version (rL348045). llvm-svn: 348047
Diffstat (limited to 'llvm')
-rw-r--r--llvm/test/CodeGen/X86/fp-undef.ll90
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
+}
+
OpenPOWER on IntegriCloud