From b00022c926d5de1f2e3c67e9e80232b1a9399abe Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Thu, 8 Apr 2021 17:39:11 +0100 Subject: [PATCH 18/26] match.pd: Fix sve/vcond_3.c The sve/vcond_3.c tests had started to fail after PR97690/99305, because we were generating: a = VEC_COND_EXPR ; b = a << 15; instead of: a = VEC_COND_EXPR ; We already have a match.pd rule to handle this kind of thing, but it didn't handle shifts. gcc/ * match.pd: Extend vec_cond folds to handle shifts. Reference commit in GCC: 5240c5ca2e2b1f362670791df233c4103d87cf5b Signed-off-by: Pronin Alexander 00812787 --- gcc/match.pd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/match.pd b/gcc/match.pd index 25575af21..9d9627fe7 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -3328,7 +3328,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) /* Sink binary operation to branches, but only if we can fold it. */ (for op (tcc_comparison plus minus mult bit_and bit_ior bit_xor - rdiv trunc_div ceil_div floor_div round_div + lshift rshift rdiv trunc_div ceil_div floor_div round_div trunc_mod ceil_mod floor_mod round_mod min max) /* (c ? a : b) op (c ? d : e) --> c ? (a op d) : (b op e) */ (simplify -- 2.27.0