From patchwork Tue Aug 29 03:39:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tsukasa OI X-Patchwork-Id: 137099 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a7d1:0:b0:3f2:4152:657d with SMTP id p17csp3698674vqm; Mon, 28 Aug 2023 20:42:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGtjHObR6HmetQ14oJ3L8J7MiZW/XccaQuG/kDCiCD5xSeOMEjkBTcxjyreZS0mG/FqIuJj X-Received: by 2002:a17:906:cc18:b0:99b:dd1d:64ba with SMTP id ml24-20020a170906cc1800b0099bdd1d64bamr22077954ejb.50.1693280530130; Mon, 28 Aug 2023 20:42:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693280530; cv=none; d=google.com; s=arc-20160816; b=DSVu0iMZ4eNhQ6SjxdodZqzQzS7iR+3Cfupz5OGL4eVQJGdWTLe59Bi/UEpyOJkE4N eoh5jkS3m5Vrj19iZgcOeAoNTp7jRMHy2oTJq3v6o/49GTUyShAHW1KSKyDNvqCwhlUU Cf3dycXsDkO9vSO2U6CxIY9ZBbJ0y74nOdYmZB6qCkyJCn7I9oaamgGFAt0bMlfPZJt2 Ny9faETBcMLv/TpEShxaFT5GbvfK8Ens2AjMtAxVbsGz1SZjy03MlFN/+7Es9ak5BrJ0 cJOvMfeWd0/chwvnYH7hjUGXbKv959JNrd/bDKQCVDAzZrpXmDeA/nFxZYgm2pbCxL1H SewA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=WN7F46Va460trX4tlR+J+oTIl4Cl+s6h5QXLc/th87w=; fh=HKgiOHUFLyfVG2npWMLYE8/3Ecp4EiEdadhQOzpm3aI=; b=ILISJ9ENaMTadmKNfJCY3El5NQ2pgVWe8Z+ExbnDs1CYgG/QZpiUJtnR3RdkytU6hT Ra7ZTyrqq30bDWvItg8xs82pwpxw5g8Saq6N35oZE7kKCi0WJ/KQwHL8r7aVqTqZqVg3 a3cTuYUyEPwEKaNSedlaOI8rqMonrA8PZU3m3HH0O1yd5HBZMRXxd8wO7VR9gg8Pangv CJT8elNQHTdgmrTyif2Km04WpDOZEoug9mcND7whHi6uywRqZmrp7SbmxElYxoJxi87/ b83g3gqXIT+FlsRBfiY/LN+eqN/WYxJVQXVcU7nu3FcwWtrHK7JKfWoDle8lKhScsmG9 l2KQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Gx93pkk6; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id a14-20020a17090682ce00b0099d74066201si3636706ejy.415.2023.08.28.20.42.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 20:42:10 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Gx93pkk6; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 89AC33856968 for ; Tue, 29 Aug 2023 03:41:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 89AC33856968 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1693280468; bh=WN7F46Va460trX4tlR+J+oTIl4Cl+s6h5QXLc/th87w=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=Gx93pkk6z5Vidy+pQS4I8Iqa27E+FkLENhE1aatMimqO8ROPVb0jIo5hq4HT4O1BV cihpHKX4H0b3cPivNBVRbGhggeo3abGiVpXzBMghnJP004rdit3FEmXpMLf8rw9uTa aDcynZ70z3JF+XRS6AMoUApzbTjaNB4PG0ORsbJ4= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-sender-0.a4lg.com (mail-sender.a4lg.com [153.120.152.154]) by sourceware.org (Postfix) with ESMTPS id 3BE29385840F for ; Tue, 29 Aug 2023 03:40:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3BE29385840F Received: from [127.0.0.1] (localhost [127.0.0.1]) by mail-sender-0.a4lg.com (Postfix) with ESMTPSA id 82C9C300089; Tue, 29 Aug 2023 03:40:18 +0000 (UTC) To: Tsukasa OI , Kito Cheng , Palmer Dabbelt , Andrew Waterman , Jim Wilson , Jeff Law Cc: gcc-patches@gcc.gnu.org Subject: [PATCH v3 3/3] RISC-V: Add stub support for existing extensions (unprivileged) Date: Tue, 29 Aug 2023 03:39:33 +0000 Message-ID: <50797df2bcd7368d384f87ae15121bb9c15352aa.1693280368.git.research_trasio@irq.a4lg.com> In-Reply-To: References: Mime-Version: 1.0 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, KAM_MANYTO, KAM_SHORT, SPF_HELO_NONE, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tsukasa OI via Gcc-patches From: Tsukasa OI Reply-To: Tsukasa OI Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773990485352556806 X-GMAIL-MSGID: 1775533325187602354 From: Tsukasa OI After commit c283c4774d1c ("RISC-V: Throw compilation error for unknown extensions") changed how do we handle unknown extensions, we have no guarantee that we can share the same architectural string with Binutils (specifically, the assembler). To avoid compilation errors on shared Assembler-C/C++ projects or programs with inline assembler, GCC should support almost all extensions that Binutils support, even if the GCC itself does not touch a thing. This commit adds stub supported standard unprivileged extensions to riscv_ext_version_table and its implications to riscv_implied_info (all information is copied from Binutils' bfd/elfxx-riscv.c except not yet merged 'Zce', 'Zcmp' and 'Zcmt' support). gcc/ChangeLog: * common/config/riscv/riscv-common.cc (riscv_implied_info): Add implications from unprivileged extensions. (riscv_ext_version_table): Add stub support for all unprivileged extensions supported by Binutils as well as 'Zce', 'Zcmp', 'Zcmt'. gcc/testsuite/ChangeLog: * gcc.target/riscv/predef-31.c: New test for a stub unprivileged extension 'Zcb' with some implications. --- gcc/common/config/riscv/riscv-common.cc | 1 + gcc/testsuite/gcc.target/riscv/predef-31.c | 31 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/predef-31.c diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index 8e2b3ba6d621..f142212f2edc 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -142,6 +142,7 @@ static const riscv_implied_info_t riscv_implied_info[] = {"zcb", "zca"}, {"zcmp", "zca"}, {"zcmt", "zca"}, + {"zcmt", "zicsr"}, {"smaia", "ssaia"}, {"smstateen", "ssstateen"}, diff --git a/gcc/testsuite/gcc.target/riscv/predef-31.c b/gcc/testsuite/gcc.target/riscv/predef-31.c new file mode 100644 index 000000000000..4ea11442f995 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-31.c @@ -0,0 +1,31 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64i_zcb -mabi=lp64 -mcmodel=medlow -misa-spec=20191213" } */ + +int main () { + +#ifndef __riscv_arch_test +#error "__riscv_arch_test" +#endif + +#if __riscv_xlen != 64 +#error "__riscv_xlen" +#endif + +#if !defined(__riscv_i) || (__riscv_i != (2 * 1000 * 1000 + 1 * 1000)) +#error "__riscv_i" +#endif + +#if defined(__riscv_e) +#error "__riscv_e" +#endif + +#if !defined(__riscv_zca) +#error "__riscv_zca" +#endif + +#if !defined(__riscv_zcb) +#error "__riscv_zcb" +#endif + + return 0; +}