44 lines
1.3 KiB
Diff
44 lines
1.3 KiB
Diff
From b00022c926d5de1f2e3c67e9e80232b1a9399abe Mon Sep 17 00:00:00 2001
|
|
From: Richard Sandiford <richard.sandiford@arm.com>
|
|
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 <cond, { 0, ... }, { 1, ... }>;
|
|
b = a << 15;
|
|
|
|
instead of:
|
|
|
|
a = VEC_COND_EXPR <cond, { 0, ... }, { 1<<15, ... }>;
|
|
|
|
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 <pronin.alexander@huawei.com>
|
|
---
|
|
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
|
|
|