From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id D1AEC3858D20 for ; Mon, 13 Nov 2023 03:54:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D1AEC3858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D1AEC3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:470:142:3::10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699847686; cv=none; b=ahAOtHBHnyDlxvnXSQJdpUl8o671LSygrINUWccQv54wfS3/Pjkxnlcz4RXdUsNVlw61dsEuLBgzoVWKKMpDGduBki6P/FAEbsxxHTuoybULoU8irfKJATDk3A2cQTTImSOzUIsWpoYs31FLhJUyDELbpUWwZgGr1a6oDJSA/3c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699847686; c=relaxed/simple; bh=CoMxDzV5utV47iQ56nStxhX1aJml1JNXbtnCwnJWHtw=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=YOxZIvUs2lt4qm3p+3SAnC0UF0L0qNgNt0sPS71pOhEOoM7u+ZU/chLf/kbJlchX7jslQtCNsBMo4xrBF+8g8l1/D06s4TKXGHXNmENrkX7AOsNjznBLYoE3VgT3E4c+mOxLgtaYSHiDwmx6nlT32JJ1To5MAxL/h/RPi7SMPzI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r2O21-0000Mw-5n for gcc-patches@gcc.gnu.org; Sun, 12 Nov 2023 22:54:41 -0500 Received: from loongson.cn (unknown [10.20.4.107]) by gateway (Coremail) with SMTP id _____8AxjuvynVFlKnI5AA--.44624S3; Mon, 13 Nov 2023 11:54:26 +0800 (CST) Received: from [10.20.4.107] (unknown [10.20.4.107]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Cx7y_wnVFlJ15AAA--.9339S3; Mon, 13 Nov 2023 11:54:25 +0800 (CST) Subject: Re: [PATCH] LoongArch: Use simplify_gen_subreg instead of gen_rtx_SUBREG in loongarch_expand_vec_cond_mask_expr [PR112476] To: Xi Ruoyao , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn References: <20231112010047.496937-1-xry111@xry111.site> From: chenglulu Message-ID: <8c206a04-191c-2903-7133-3e34084f4920@loongson.cn> Date: Mon, 13 Nov 2023 11:54:24 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <20231112010047.496937-1-xry111@xry111.site> Content-Type: multipart/alternative; boundary="------------6945075CA29A79F25242F28F" Content-Language: en-US X-CM-TRANSID:AQAAf8Cx7y_wnVFlJ15AAA--.9339S3 X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBj93XoWxAw4DWr1UurWDZF4UKrWkKrX_yoWrJw45p3 y3Cr1Ygr48GF97GFn3Ga43Aw429wn7Gr1av3WfJrW8CwnrJryFq3W8KF9agFy5J3WUXrWx Xr4xu3W7ZF4UZabCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnRJUUUv0b4IE77IF4wAF F20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r 106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAF wI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67 AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AKxVW8Jr0_Cr1UM2AIxVAIcxkEcVAq 07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1lYx0E2Ix0cI8IcVAFwI0_Jr0_Jr 4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvEwIxGrwCj r7xvwVCIw2I0I7xG6c02F41lc7I2V7IY0VAS07AlzVAYIcxG8wCF04k20xvY0x0EwIxGrw CFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r106r1rMI8I3I0E7480Y4vE 14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2 IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxK x2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI 0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU1Au4UUUUUU== Received-SPF: pass client-ip=114.242.206.163; envelope-from=chenglulu@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9,HTML_MESSAGE=0.001,MIME_CHARSET_FARAWAY=2.45,NICE_REPLY_A=-2.553,SPF_HELO_NONE=0.001,SPF_PASS=-0.001,T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,MIME_CHARSET_FARAWAY,NICE_REPLY_A,SPF_FAIL,SPF_HELO_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------6945075CA29A79F25242F28F Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit ÔÚ 2023/11/12 ÉÏÎç9:00, Xi Ruoyao дµÀ: > GCC internal says: > > 'subreg's of 'subreg's are not supported. Using > 'simplify_gen_subreg' is the recommended way to avoid this problem. > > Unfortunately loongarch_expand_vec_cond_mask_expr might create nested > subreg under certain circumstances, causing an ICE. > > Use simplify_gen_subreg as the internal document suggests. * Similar problems have been fixed once on LA:-(, thank you for your modification. > gcc/ChangeLog: > > PR target/112476 > * config/loongarch/loongarch.cc > (loongarch_expand_vec_cond_mask_expr): Call simplify_gen_subreg > instead of gen_rtx_SUBREG. > > gcc/testsuite/ChangeLog: > > PR target/112476 > * gcc.target/loongarch/pr112476-1.c: New test. > * gcc.target/loongarch/pr112476-2.c: New test. > --- > > Bootstrapped and regtested on loongarch64-linux-gnu. Ok for trunk? > > gcc/config/loongarch/loongarch.cc | 11 ++++++--- > .../gcc.target/loongarch/pr112476-1.c | 24 +++++++++++++++++++ > .../gcc.target/loongarch/pr112476-2.c | 5 ++++ > 3 files changed, 37 insertions(+), 3 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/loongarch/pr112476-1.c > create mode 100644 gcc/testsuite/gcc.target/loongarch/pr112476-2.c > > diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc > index d9b7a1076a2..0c7bafb5fb1 100644 > --- a/gcc/config/loongarch/loongarch.cc > +++ b/gcc/config/loongarch/loongarch.cc > @@ -11197,7 +11197,9 @@ loongarch_expand_vec_cond_mask_expr (machine_mode mode, machine_mode vimode, > if (mode != vimode) > { > xop1 = gen_reg_rtx (vimode); > - emit_move_insn (xop1, gen_rtx_SUBREG (vimode, operands[1], 0)); > + emit_move_insn (xop1, > + simplify_gen_subreg (vimode, operands[1], > + mode, 0)); > } > emit_move_insn (src1, xop1); > } > @@ -11214,7 +11216,9 @@ loongarch_expand_vec_cond_mask_expr (machine_mode mode, machine_mode vimode, > if (mode != vimode) > { > xop2 = gen_reg_rtx (vimode); > - emit_move_insn (xop2, gen_rtx_SUBREG (vimode, operands[2], 0)); > + emit_move_insn (xop2, > + simplify_gen_subreg (vimode, operands[2], > + mode, 0)); > } > emit_move_insn (src2, xop2); > } > @@ -11233,7 +11237,8 @@ loongarch_expand_vec_cond_mask_expr (machine_mode mode, machine_mode vimode, > gen_rtx_AND (vimode, mask, src1)); > /* The result is placed back to a register with the mask. */ > emit_insn (gen_rtx_SET (mask, bsel)); > - emit_move_insn (operands[0], gen_rtx_SUBREG (mode, mask, 0)); > + emit_move_insn (operands[0], simplify_gen_subreg (mode, mask, > + vimode, 0)); > } > } > > diff --git a/gcc/testsuite/gcc.target/loongarch/pr112476-1.c b/gcc/testsuite/gcc.target/loongarch/pr112476-1.c > new file mode 100644 > index 00000000000..4cf133e7a26 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/loongarch/pr112476-1.c > @@ -0,0 +1,24 @@ > +/* PR target/112476: ICE with -mlsx */ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -march=loongarch64 -mfpu=64 -mabi=lp64d -mlsx" } */ > + > +int foo, bar; > +float baz, res, a; > + > +void > +apply_adjacent_ternary (float *dst, float *src0) > +{ > + do > + { > + __builtin_memcpy (&res, &src0, sizeof (res)); > + *dst = foo ? baz : res; > + dst++; > + } > + while (dst != src0); > +} > + > +void > +xx (void) > +{ > + apply_adjacent_ternary (&a, &a); > +} > diff --git a/gcc/testsuite/gcc.target/loongarch/pr112476-2.c b/gcc/testsuite/gcc.target/loongarch/pr112476-2.c > new file mode 100644 > index 00000000000..cc0dfbfc912 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/loongarch/pr112476-2.c > @@ -0,0 +1,5 @@ > +/* PR target/112476: ICE with -mlasx */ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -march=loongarch64 -mfpu=64 -mabi=lp64d -mlasx" } */ > + > +#include "pr112476-1.c" --------------6945075CA29A79F25242F28F--