diff options
author | Robin Dapp <rdapp@ventanamicro.com> | 2024-05-10 12:44:44 +0200 |
---|---|---|
committer | Robin Dapp <rdapp@ventanamicro.com> | 2024-05-17 22:31:42 +0200 |
commit | 7ca35f2e430081d6ec91e910002f92d9713350fa (patch) | |
tree | a7af47b0abbfb8e31bb02b95ce75baabc6cf76e1 | |
parent | 9b6acf5357818ce7ff234c504ed79078a06d0e0f (diff) | |
download | gcc-7ca35f2e430081d6ec91e910002f92d9713350fa.zip gcc-7ca35f2e430081d6ec91e910002f92d9713350fa.tar.gz gcc-7ca35f2e430081d6ec91e910002f92d9713350fa.tar.bz2 |
internal-fn: Do not force vcond_mask operands to reg.
In order to directly use constants this patch removes force_regs
in the vcond_mask expander.
gcc/ChangeLog:
PR middle-end/113474
* internal-fn.cc (expand_vec_cond_mask_optab_fn): Remove
force_regs.
gcc/testsuite/ChangeLog:
* gcc.target/riscv/rvv/autovec/pr113474.c: New test.
-rw-r--r-- | gcc/internal-fn.cc | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113474.c | 13 |
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/internal-fn.cc b/gcc/internal-fn.cc index 73045ca..9c09026 100644 --- a/gcc/internal-fn.cc +++ b/gcc/internal-fn.cc @@ -3165,9 +3165,6 @@ expand_vec_cond_mask_optab_fn (internal_fn, gcall *stmt, convert_optab optab) rtx_op1 = expand_normal (op1); rtx_op2 = expand_normal (op2); - mask = force_reg (mask_mode, mask); - rtx_op1 = force_reg (mode, rtx_op1); - rtx target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE); create_output_operand (&ops[0], target, mode); create_input_operand (&ops[1], rtx_op1, mode); diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113474.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113474.c new file mode 100644 index 0000000..0364bf9 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr113474.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target riscv_v } } */ +/* { dg-additional-options "-std=c99" } */ + +void +foo (int n, int **a) +{ + int b; + for (b = 0; b < n; b++) + for (long e = 8; e > 0; e--) + a[b][e] = a[b][e] == 15; +} + +/* { dg-final { scan-assembler "vmerge.vim" } } */ |