diff options
author | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2019-07-24 07:20:24 +0000 |
---|---|---|
committer | Prathamesh Kulkarni <prathamesh3492@gcc.gnu.org> | 2019-07-24 07:20:24 +0000 |
commit | 21caa1a2649d586f4f8830aba43b0c132584f2dd (patch) | |
tree | 1dd8d376056aa5a60d5b91c0be08815d81f4ef3d /gcc/match.pd | |
parent | 70121844349587b23c3950e844021a22ab51638c (diff) |
re PR middle-end/91166 ([SVE] Unfolded ZIPs of constants)
2019-07-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR middle-end/91166
* match.pd (vec_perm_expr(v, v, mask) -> v): New pattern.
(define_predicates): Add entry for uniform_vector_p.
(vec_same_elem_p): New match pattern.
testsuite/
* gcc.target/aarch64/sve/pr91166.c: New test.
From-SVN: r273758
Diffstat (limited to 'gcc/match.pd')
-rw-r--r-- | gcc/match.pd | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gcc/match.pd b/gcc/match.pd index 4a7aa0185d8..c5c6a041cfc 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -36,7 +36,8 @@ along with GCC; see the file COPYING3. If not see integer_valued_real_p integer_pow2p uniform_integer_cst_p - HONOR_NANS) + HONOR_NANS + uniform_vector_p) /* Operator lists. */ (define_operator_list tcc_comparison @@ -5568,3 +5569,16 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) { bitsize_int (at * tree_to_uhwi (TYPE_SIZE (TREE_TYPE (type)))); }) (if (changed) (vec_perm { op0; } { op1; } { op2; })))))))))) + +/* VEC_PERM_EXPR (v, v, mask) -> v where v contains same element. */ + +(match vec_same_elem_p + @0 + (if (uniform_vector_p (@0)))) + +(match vec_same_elem_p + (vec_duplicate @0)) + +(simplify + (vec_perm vec_same_elem_p@0 @0 @1) + @0) |