From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2017) id 911853858D20; Fri, 17 May 2024 20:46:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 911853858D20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1715978780; bh=ZJsAfUuOQuZoiIhuSc6731iGyDQL9afYKl0X4xo8134=; h=From:To:Subject:Date:From; b=IFdELbscS4uOHSO54O/TnuAJQXEot21Vf1YsgCTyTjvwJ3UDCJH3G5qu9TBiFVVNm 5VLsO9YeCf5IFVB7BTl4+bBuX9QbQy2/i2vTQMY3uL5eOqk0tWrw5U3j1g2/zrBQn0 9zAtjDgRvIsSbB6/PvTp5qpp3WBNOQHYKZaiXCD4= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Robin Dapp To: gcc-cvs@gcc.gnu.org Subject: [gcc r15-638] internal-fn: Do not force vcond_mask operands to reg. X-Act-Checkin: gcc X-Git-Author: Robin Dapp X-Git-Refname: refs/heads/master X-Git-Oldrev: 9b6acf5357818ce7ff234c504ed79078a06d0e0f X-Git-Newrev: 7ca35f2e430081d6ec91e910002f92d9713350fa Message-Id: <20240517204620.911853858D20@sourceware.org> Date: Fri, 17 May 2024 20:46:20 +0000 (GMT) List-Id: https://gcc.gnu.org/g:7ca35f2e430081d6ec91e910002f92d9713350fa commit r15-638-g7ca35f2e430081d6ec91e910002f92d9713350fa Author: Robin Dapp Date: Fri May 10 12:44:44 2024 +0200 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. Diff: --- gcc/internal-fn.cc | 3 --- 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 73045ca8c8c1..9c09026793fa 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 000000000000..0364bf9f5e38 --- /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" } } */