Message ID | 20230326083458.1240538-1-jiawei@iscas.ac.cn |
---|---|
State | Dropped |
Headers |
Return-Path: <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 685553858438 for <patchwork@sourceware.org>; Sun, 26 Mar 2023 08:36:10 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from cstnet.cn (smtp25.cstnet.cn [159.226.251.25]) by sourceware.org (Postfix) with ESMTP id 817E93858D1E for <gcc-patches@gcc.gnu.org>; Sun, 26 Mar 2023 08:35:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 817E93858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [47.113.87.88]) by APP-05 (Coremail) with SMTP id zQCowACXnxfCAyBkhes0Cg--.17414S2; Sun, 26 Mar 2023 16:35:14 +0800 (CST) From: Jiawei <jiawei@iscas.ac.cn> To: gcc-patches@gcc.gnu.org Cc: kito.cheng@sifive.com, palmer@dabbelt.com, christoph.muellner@vrull.eu, wuwei2016@iscas.ac.cn, Jiawei <jiawei@iscas.ac.cn> Subject: [PATCH] RISC-V: Add Z*inx incompatible check in gcc. Date: Sun, 26 Mar 2023 16:34:58 +0800 Message-Id: <20230326083458.1240538-1-jiawei@iscas.ac.cn> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: zQCowACXnxfCAyBkhes0Cg--.17414S2 X-Coremail-Antispam: 1UD129KBjvdXoW7Gr1xCF1fWFyxuryftF1rtFb_yoWfCrX_CF 1rGrnIqrW7JayUtF4qvF48tryUtws5tr9rGrZ7Xry293WUWwn0va4FqFWxGr4Y9345Aa4S vFZ7uF9Ikr12gjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUb2xFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2IYs7xG 6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8w A2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr0_ Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v26r4UJV WxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E 2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV W8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc2xSY4AK67A8MxAI w28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr 4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0EwIxG rwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8Jw CI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2 z280aVCY1x0267AKxVWUJVW8JbIYCTnIWIevJa73UjIFyTuYvjTRE380DUUUU X-Originating-IP: [47.113.87.88] X-CM-SenderInfo: 5mld4v3l6l2u1dvotugofq/1tbiCQgCAGQfGKDz-AAAsP X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> |
Series |
RISC-V: Add Z*inx incompatible check in gcc.
|
|
Commit Message
Jiawei
March 26, 2023, 8:34 a.m. UTC
Z*inx is conflict with float extensions, add incompatible check when z*inx and hard_float both enabled. gcc/ChangeLog: * config/riscv/riscv.cc (riscv_option_override): New check. --- gcc/config/riscv/riscv.cc | 4 ++++ 1 file changed, 4 insertions(+)
Comments
HI Jiawei: Thanks for the fix! Two comments: - Could you add testcase like https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gcc.target/riscv/arch-12.c - And I would prefer those check happened in riscv_subset_list::parse @gcc/common/config/riscv/riscv-common.cc On Sun, Mar 26, 2023 at 4:36 PM Jiawei <jiawei@iscas.ac.cn> wrote: > > Z*inx is conflict with float extensions, add incompatible check when > z*inx and hard_float both enabled. > > gcc/ChangeLog: > > * config/riscv/riscv.cc (riscv_option_override): New check. > > --- > gcc/config/riscv/riscv.cc | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc > index 76eee4a55e9..162ba14d3c7 100644 > --- a/gcc/config/riscv/riscv.cc > +++ b/gcc/config/riscv/riscv.cc > @@ -6285,6 +6285,10 @@ riscv_option_override (void) > && riscv_abi != ABI_LP64 && riscv_abi != ABI_ILP32E) > error ("z*inx requires ABI ilp32, ilp32e or lp64"); > > + // Zfinx is conflict with float extensions. > + if (TARGET_ZFINX && TARGET_HARD_FLOAT) > + error ("z*inx is conflict with float extensions"); > + > /* We do not yet support ILP32 on RV64. */ > if (BITS_PER_WORD != POINTER_SIZE) > error ("ABI requires %<-march=rv%d%>", POINTER_SIZE); > -- > 2.25.1 >
Hi Kito, Thanks for your sugestions, I had added the new testcases in the new patch. I feel it's hard to check long string name extension by use riscv_subset_list::parse, Since it just check one char when the pointer moving, So I still keep the implement by check the extenstison with target. Maybe we can add new check function in the new version :) > -----原始邮件----- > 发件人: "Kito Cheng" <kito.cheng@gmail.com> > 发送时间: 2023-03-27 16:15:00 (星期一) > 收件人: Jiawei <jiawei@iscas.ac.cn> > 抄送: gcc-patches@gcc.gnu.org, kito.cheng@sifive.com, palmer@dabbelt.com, christoph.muellner@vrull.eu, wuwei2016@iscas.ac.cn > 主题: Re: [PATCH] RISC-V: Add Z*inx incompatible check in gcc. > > HI Jiawei: > > Thanks for the fix! > > Two comments: > - Could you add testcase like > https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gcc.target/riscv/arch-12.c > - And I would prefer those check happened in riscv_subset_list::parse > @gcc/common/config/riscv/riscv-common.cc > > On Sun, Mar 26, 2023 at 4:36 PM Jiawei <jiawei@iscas.ac.cn> wrote: > > > > Z*inx is conflict with float extensions, add incompatible check when > > z*inx and hard_float both enabled. > > > > gcc/ChangeLog: > > > > * config/riscv/riscv.cc (riscv_option_override): New check. > > > > --- > > gcc/config/riscv/riscv.cc | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc > > index 76eee4a55e9..162ba14d3c7 100644 > > --- a/gcc/config/riscv/riscv.cc > > +++ b/gcc/config/riscv/riscv.cc > > @@ -6285,6 +6285,10 @@ riscv_option_override (void) > > && riscv_abi != ABI_LP64 && riscv_abi != ABI_ILP32E) > > error ("z*inx requires ABI ilp32, ilp32e or lp64"); > > > > + // Zfinx is conflict with float extensions. > > + if (TARGET_ZFINX && TARGET_HARD_FLOAT) > > + error ("z*inx is conflict with float extensions"); > > + > > /* We do not yet support ILP32 on RV64. */ > > if (BITS_PER_WORD != POINTER_SIZE) > > error ("ABI requires %<-march=rv%d%>", POINTER_SIZE); > > -- > > 2.25.1 > > </jiawei@iscas.ac.cn></jiawei@iscas.ac.cn></kito.cheng@gmail.com>
Maybe something like this? diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index acfd7b92563..aa7edc8cfec 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -1155,6 +1155,10 @@ riscv_subset_list::parse (const char *arch, location_t loc) subset_list->handle_combine_ext (); + if (subset_list->lookup("zfinx") && subset_list->lookup("f")) + error_at (loc, "%<-march=%s%>: z*inx is conflict with float extensions", + arch); + return subset_list; fail: On Tue, Mar 28, 2023 at 10:36 PM <jiawei@iscas.ac.cn> wrote: > > Hi Kito, > > Thanks for your sugestions, I had added the new testcases in the new patch. > I feel it's hard to check long string name extension by use riscv_subset_list::parse, > Since it just check one char when the pointer moving, So I still keep the implement > by check the extenstison with target. Maybe we can add new check function in the new > version :) > > > > -----原始邮件----- > > 发件人: "Kito Cheng" <kito.cheng@gmail.com> > > 发送时间: 2023-03-27 16:15:00 (星期一) > > 收件人: Jiawei <jiawei@iscas.ac.cn> > > 抄送: gcc-patches@gcc.gnu.org, kito.cheng@sifive.com, palmer@dabbelt.com, christoph.muellner@vrull.eu, wuwei2016@iscas.ac.cn > > 主题: Re: [PATCH] RISC-V: Add Z*inx incompatible check in gcc. > > > > HI Jiawei: > > > > Thanks for the fix! > > > > Two comments: > > - Could you add testcase like > > https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gcc.target/riscv/arch-12.c > > - And I would prefer those check happened in riscv_subset_list::parse > > @gcc/common/config/riscv/riscv-common.cc > > > > On Sun, Mar 26, 2023 at 4:36 PM Jiawei <jiawei@iscas.ac.cn> wrote: > > > > > > Z*inx is conflict with float extensions, add incompatible check when > > > z*inx and hard_float both enabled. > > > > > > gcc/ChangeLog: > > > > > > * config/riscv/riscv.cc (riscv_option_override): New check. > > > > > > --- > > > gcc/config/riscv/riscv.cc | 4 ++++ > > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc > > > index 76eee4a55e9..162ba14d3c7 100644 > > > --- a/gcc/config/riscv/riscv.cc > > > +++ b/gcc/config/riscv/riscv.cc > > > @@ -6285,6 +6285,10 @@ riscv_option_override (void) > > > && riscv_abi != ABI_LP64 && riscv_abi != ABI_ILP32E) > > > error ("z*inx requires ABI ilp32, ilp32e or lp64"); > > > > > > + // Zfinx is conflict with float extensions. > > > + if (TARGET_ZFINX && TARGET_HARD_FLOAT) > > > + error ("z*inx is conflict with float extensions"); > > > + > > > /* We do not yet support ILP32 on RV64. */ > > > if (BITS_PER_WORD != POINTER_SIZE) > > > error ("ABI requires %<-march=rv%d%>", POINTER_SIZE); > > > -- > > > 2.25.1 > > > > </jiawei@iscas.ac.cn></jiawei@iscas.ac.cn></kito.cheng@gmail.com>
diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 76eee4a55e9..162ba14d3c7 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -6285,6 +6285,10 @@ riscv_option_override (void) && riscv_abi != ABI_LP64 && riscv_abi != ABI_ILP32E) error ("z*inx requires ABI ilp32, ilp32e or lp64"); + // Zfinx is conflict with float extensions. + if (TARGET_ZFINX && TARGET_HARD_FLOAT) + error ("z*inx is conflict with float extensions"); + /* We do not yet support ILP32 on RV64. */ if (BITS_PER_WORD != POINTER_SIZE) error ("ABI requires %<-march=rv%d%>", POINTER_SIZE);