RISC-V: Fix bug of tuple move splitter

PR target/112561

gcc/ChangeLog:

	* config/riscv/riscv-v.cc (expand_tuple_move): Fix bug.

gcc/testsuite/ChangeLog:

	* gcc.target/riscv/rvv/autovec/pr112561.c: New test.
This commit is contained in:
Juzhe-Zhong 2023-11-19 09:45:33 +08:00 committed by Pan Li
parent f65f63c4d8
commit af7fa3135b
2 changed files with 20 additions and 0 deletions

View file

@ -2033,6 +2033,10 @@ expand_tuple_move (rtx *ops)
offset = ops[2];
}
/* Non-fractional LMUL has whole register moves that don't require a
vsetvl for VLMAX. */
if (fractional_p)
emit_vlmax_vsetvl (subpart_mode, ops[4]);
if (MEM_P (ops[1]))
{
/* Load operations. */

View file

@ -0,0 +1,16 @@
/* { dg-do run { target { riscv_v } } } */
/* { dg-options "-O3 -ftree-vectorize --param=riscv-autovec-preference=fixed-vlmax -mcmodel=medlow" } */
int printf(char *, ...);
int a, b, c, e;
short d[7][7] = {};
int main() {
short f;
c = 0;
for (; c <= 6; c++) {
e |= d[c][c] & 1;
b &= f & 3;
}
printf("%d\n", a);
return 0;
}