aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>2023-09-10 22:07:10 +0800
committerPan Li <pan2.li@intel.com>2023-09-11 07:00:49 +0800
commite390872aebcfebb7c9bc95d8fb7e44f2bec996d3 (patch)
treecb85a1f6c391c688e9da4f51e0e78716c66b2031
parent30e6ee074588bacefd2dfe745b188bb20c81fe5e (diff)
downloadgcc-e390872aebcfebb7c9bc95d8fb7e44f2bec996d3.zip
gcc-e390872aebcfebb7c9bc95d8fb7e44f2bec996d3.tar.gz
gcc-e390872aebcfebb7c9bc95d8fb7e44f2bec996d3.tar.bz2
RISC-V: Avoid unnecessary slideup in compress pattern of vec_perm
gcc/ChangeLog: * config/riscv/riscv-v.cc (shuffle_compress_patterns): Avoid unnecessary slideup.
-rw-r--r--gcc/config/riscv/riscv-v.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/config/riscv/riscv-v.cc b/gcc/config/riscv/riscv-v.cc
index 1ca3f1d..8a548f5 100644
--- a/gcc/config/riscv/riscv-v.cc
+++ b/gcc/config/riscv/riscv-v.cc
@@ -2647,7 +2647,8 @@ shuffle_compress_patterns (struct expand_vec_perm_d *d)
For index = { 0, 2, 5, 6}, we need to slide op1 up before
we apply compress approach. */
- bool need_slideup_p = maybe_ne (d->perm[vlen - 1], 2 * vec_len - 1);
+ bool need_slideup_p = maybe_ne (d->perm[vlen - 1], 2 * vec_len - 1)
+ && !const_vec_duplicate_p (d->op1);
/* If we leave it directly be handled by general gather,
the code sequence will be: