summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2018-11-30 22:51:34 +0000
committerSanjay Patel <spatel@rotateright.com>2018-11-30 22:51:34 +0000
commit398728732e7a3cd94d399905aea6480216baf454 (patch)
treea54c6bf431d712faa46c9c641a13c7fc18ceccf4
parentf110a357ac31b114bdd06dd175ab4a6ccebd3ac6 (diff)
downloadbcm5719-llvm-398728732e7a3cd94d399905aea6480216baf454.tar.gz
bcm5719-llvm-398728732e7a3cd94d399905aea6480216baf454.zip
[InstSimplify] add tests for undef + partial undef constant folding; NFC
These tests should probably go under a separate test file because they should fold with just -constprop, but they're similar to the scalar tests already in here. llvm-svn: 348045
-rw-r--r--llvm/test/Transforms/InstSimplify/fp-undef.ll80
1 files changed, 80 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstSimplify/fp-undef.ll b/llvm/test/Transforms/InstSimplify/fp-undef.ll
index 58c1825c428..f4a71e99a87 100644
--- a/llvm/test/Transforms/InstSimplify/fp-undef.ll
+++ b/llvm/test/Transforms/InstSimplify/fp-undef.ll
@@ -451,3 +451,83 @@ 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) {
+; CHECK-LABEL: @fadd_undef_op1_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double 0x7FF8000000000000, double undef>
+;
+ %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) {
+; CHECK-LABEL: @fadd_undef_op0_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double undef, double 0x7FF8000000000000>
+;
+ %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) {
+; CHECK-LABEL: @fsub_undef_op1_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double undef, double 0x7FF8000000000000>
+;
+ %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) {
+; CHECK-LABEL: @fsub_undef_op0_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double 0x7FF8000000000000, double undef>
+;
+ %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) {
+; CHECK-LABEL: @fmul_undef_op1_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double 0x7FF8000000000000, double undef>
+;
+ %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) {
+; CHECK-LABEL: @fmul_undef_op0_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double undef, double 0x7FF8000000000000>
+;
+ %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) {
+; CHECK-LABEL: @fdiv_undef_op1_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double 0x7FF8000000000000, double undef>
+;
+ %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) {
+; CHECK-LABEL: @fdiv_undef_op0_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double undef, double 0x7FF8000000000000>
+;
+ %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) {
+; CHECK-LABEL: @frem_undef_op1_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double undef, double 0x7FF8000000000000>
+;
+ %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) {
+; CHECK-LABEL: @frem_undef_op0_constant_vec(
+; CHECK-NEXT: ret <2 x double> <double 0x7FF8000000000000, double undef>
+;
+ %r = frem <2 x double> undef, <double 42.0, double undef>
+ ret <2 x double> %r
+}
+
OpenPOWER on IntegriCloud