aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-03-23 13:40:50 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-03-23 13:40:50 +0000
commit4d8989d5b0602dff77945e68c74eab91a8278b97 (patch)
treeb909fcf2712c32864e2d5dca85882d259ceccd3a /gcc
parent478baf913e79d1d3219b513b494943c830850593 (diff)
downloadgcc-4d8989d5b0602dff77945e68c74eab91a8278b97.zip
gcc-4d8989d5b0602dff77945e68c74eab91a8278b97.tar.gz
gcc-4d8989d5b0602dff77945e68c74eab91a8278b97.tar.bz2
re PR tree-optimization/70251 (Wrong code with -O3 -march=skylake-avx512.)
2016-03-23 Richard Biener <rguenther@suse.de> PR middle-end/70251 * match.pd (A + (B vcmp C ? 1 : 0) -> A - (B vcmp C)): Adjust mode compatibility check. (A - (B vcmp C ? 1 : 0) -> A + (B vcmp C)): Likewise. From-SVN: r234427
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/match.pd8
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f9b2af2..6538ff0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2016-03-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/70251
+ * match.pd (A + (B vcmp C ? 1 : 0) -> A - (B vcmp C)): Adjust
+ mode compatibility check.
+ (A - (B vcmp C ? 1 : 0) -> A + (B vcmp C)): Likewise.
+
2016-03-23 Jeff Law <law@redhat.com>
PR tree-optimization/64058
diff --git a/gcc/match.pd b/gcc/match.pd
index 388a489..c0ed305 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -1759,18 +1759,18 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
(simplify
(plus:c @3 (view_convert? (vec_cond:s @0 integer_each_onep@1 integer_zerop@2)))
(if (VECTOR_TYPE_P (type)
- && TYPE_VECTOR_SUBPARTS (type) == TYPE_VECTOR_SUBPARTS (TREE_TYPE (@0))
+ && TYPE_VECTOR_SUBPARTS (type) == TYPE_VECTOR_SUBPARTS (TREE_TYPE (@1))
&& (TYPE_MODE (TREE_TYPE (type))
- == TYPE_MODE (TREE_TYPE (TREE_TYPE (@0)))))
+ == TYPE_MODE (TREE_TYPE (TREE_TYPE (@1)))))
(minus @3 (view_convert (vec_cond @0 (negate @1) @2)))))
/* ... likewise A - (B vcmp C ? 1 : 0) -> A + (B vcmp C ? -1 : 0). */
(simplify
(minus @3 (view_convert? (vec_cond:s @0 integer_each_onep@1 integer_zerop@2)))
(if (VECTOR_TYPE_P (type)
- && TYPE_VECTOR_SUBPARTS (type) == TYPE_VECTOR_SUBPARTS (TREE_TYPE (@0))
+ && TYPE_VECTOR_SUBPARTS (type) == TYPE_VECTOR_SUBPARTS (TREE_TYPE (@1))
&& (TYPE_MODE (TREE_TYPE (type))
- == TYPE_MODE (TREE_TYPE (TREE_TYPE (@0)))))
+ == TYPE_MODE (TREE_TYPE (TREE_TYPE (@1)))))
(plus @3 (view_convert (vec_cond @0 (negate @1) @2)))))