diff options
author | Kyrylo Tkachov <ktkachov@nvidia.com> | 2025-03-05 03:03:52 -0800 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@nvidia.com> | 2025-03-05 16:21:47 +0100 |
commit | ff505948631713d8c62523005059b10e25343617 (patch) | |
tree | 870446995e88329b531b93380498d95bb68761bd | |
parent | db76482175c4e76db273d7fb3a00ae0f932529a6 (diff) | |
download | gcc-ff505948631713d8c62523005059b10e25343617.zip gcc-ff505948631713d8c62523005059b10e25343617.tar.gz gcc-ff505948631713d8c62523005059b10e25343617.tar.bz2 |
PR rtl-optimization/119046: aarch64: Fix PARALLEL mode for vec_perm DUP expansion
The PARALLEL created in aarch64_evpc_dup is used to hold the lane number.
It is not appropriate for it to have a vector mode.
Other such uses use VOIDmode.
Do this here as well.
This avoids the risk of generic code treating the PARALLEL as trapping when it
has floating-point mode.
Bootstrapped and tested on aarch64-none-linux-gnu.
Signed-off-by: Kyrylo Tkachov <ktkachov@nvidia.com>
PR rtl-optimization/119046
* config/aarch64/aarch64.cc (aarch64_evpc_dup): Use VOIDmode for
PARALLEL.
-rw-r--r-- | gcc/config/aarch64/aarch64.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index af3871c..9196b8d 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -26301,7 +26301,7 @@ aarch64_evpc_dup (struct expand_vec_perm_d *d) in0 = d->op0; lane = GEN_INT (elt); /* The pattern corrects for big-endian. */ - rtx parallel = gen_rtx_PARALLEL (vmode, gen_rtvec (1, lane)); + rtx parallel = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (1, lane)); rtx select = gen_rtx_VEC_SELECT (GET_MODE_INNER (vmode), in0, parallel); emit_set_insn (out, gen_rtx_VEC_DUPLICATE (vmode, select)); return true; |