aboutsummaryrefslogtreecommitdiff
path: root/gcc/match.pd
diff options
context:
space:
mode:
authorIlya Enkovich <enkovich.gnu@gmail.com>2016-03-17 10:58:26 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2016-03-17 10:58:26 +0000
commit0c8b64cb587dbe83a0660878c69d7ff96589673c (patch)
treedf813d10b32fa201cc0b67533f0f01f5bee67085 /gcc/match.pd
parenta7ceba7d02ca7eb946aa99b6f97195cc5a4e5123 (diff)
downloadgcc-0c8b64cb587dbe83a0660878c69d7ff96589673c.zip
gcc-0c8b64cb587dbe83a0660878c69d7ff96589673c.tar.gz
gcc-0c8b64cb587dbe83a0660878c69d7ff96589673c.tar.bz2
match.pd (A + (B vcmp C ? 1 : 0) -> A - (B vcmp C)): Apply for boolean vector with vector mode only.
gcc/ * match.pd (A + (B vcmp C ? 1 : 0) -> A - (B vcmp C)): Apply for boolean vector with vector mode only. (A - (B vcmp C ? 1 : 0) -> A + (B vcmp C)): Likewise. gcc/testsuite/ * gcc.target/i386/pr70251.c: New test. From-SVN: r234283
Diffstat (limited to 'gcc/match.pd')
-rw-r--r--gcc/match.pd2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/match.pd b/gcc/match.pd
index 112deb3..7245ff4 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -1759,6 +1759,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
(simplify
(plus:c @3 (view_convert? (vec_cond @0 integer_each_onep@1 integer_zerop@2)))
(if (VECTOR_TYPE_P (type)
+ && VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (@0)))
&& TYPE_VECTOR_SUBPARTS (type) == TYPE_VECTOR_SUBPARTS (TREE_TYPE (@0))
&& (TYPE_MODE (TREE_TYPE (type))
== TYPE_MODE (TREE_TYPE (TREE_TYPE (@0)))))
@@ -1768,6 +1769,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
(simplify
(minus @3 (view_convert? (vec_cond @0 integer_each_onep@1 integer_zerop@2)))
(if (VECTOR_TYPE_P (type)
+ && VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (@0)))
&& TYPE_VECTOR_SUBPARTS (type) == TYPE_VECTOR_SUBPARTS (TREE_TYPE (@0))
&& (TYPE_MODE (TREE_TYPE (type))
== TYPE_MODE (TREE_TYPE (TREE_TYPE (@0)))))