diff options
author | Richard Biener <rguenther@suse.de> | 2016-03-23 13:40:50 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-03-23 13:40:50 +0000 |
commit | 4d8989d5b0602dff77945e68c74eab91a8278b97 (patch) | |
tree | b909fcf2712c32864e2d5dca85882d259ceccd3a | |
parent | 478baf913e79d1d3219b513b494943c830850593 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/match.pd | 8 |
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))))) |