From patchwork Sun Nov 13 21:46:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 60557 Return-Path: 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 C91C7395443C for ; Sun, 13 Nov 2022 21:47:48 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by sourceware.org (Postfix) with ESMTPS id E00DF3887F47 for ; Sun, 13 Nov 2022 21:46:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E00DF3887F47 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-ej1-x62d.google.com with SMTP id kt23so24133479ejc.7 for ; Sun, 13 Nov 2022 13:46:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fCqXc58aHOazgh73y3Gk3+A7bYUHyP8Uuvtqw4gfI4s=; b=N/YKooP59OECVi8aLtuMZUh8jG3OkJFi9E/SaYqy8G8a9994LFJS88Vceo+/Isz0DU HVDK06Fz0j98Ei0EZG+j2MSv/LenMPvHNdHb3gwLbICwSc24NEzsYbpkrXskVPdl1zoc TBYoeps4jdKnd9RklWinfT3WrAD9ifStwoWME3opISflyeYy43TGoynMjxgQ7HbXoj0O mpf+NrNiUekBRPPt1+t7IJ3F7Hb4+4ZXDbyeY0o5Pcyd8iG/JbopXru09G2ilu+dI8GM lagkENms5597HMnAjgYXIbL78A/rgxvZ4c83cHeIHLABC/ecFNC28rUmdoDvjjEWHx1V y7IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fCqXc58aHOazgh73y3Gk3+A7bYUHyP8Uuvtqw4gfI4s=; b=klUt94d9yknleTJ3gDXgErJK8UtN8WZLn4YVBdoPfdOOxRiQIyIudn9LOXSf6WUxwy SN2BS9LWRh7/MFYBQxDhviLvQzl+j2JoINzKHZPN4IzQ+yY8UPy8xvonpIzbPhCqEPfq ypx8UDEURfM+p1b9YlVrYX+Lxe8mLBc0T9xwoWfEphogaFyfftPKJ3/zqwV77lD+H/JA fgm/BfLwDxqjFPkWokHLXOvMWMHh8V+iEtEOKdiqIpeQyqLehobHz+bIF5YpGPkU5i7v BYxFF62yDOhQ+nAnDWW+1R7fUI5mJbdC6leHzkpgDy+0KZgmSI8/dvl2BnPPTAlzBq4I CJfA== X-Gm-Message-State: ANoB5plQY/mxSWVWK8BjT5b+bxlmi7zIOp0Rk8yOU7ZzYAHeWn0KUeSz 8pZX/1GLt1zz7qDrxfQAncusF6VtfjNZsqUT X-Google-Smtp-Source: AA0mqf64Vd+GB+9/kP5sHrCXKCKvTSky00Z13Ngl0DUw5gGpY1NfUh18QNwKCp6NFLtl8iXQGYNVDQ== X-Received: by 2002:a17:906:b2ca:b0:7ad:92c5:637a with SMTP id cf10-20020a170906b2ca00b007ad92c5637amr8641124ejb.87.1668376010368; Sun, 13 Nov 2022 13:46:50 -0800 (PST) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id lb17-20020a170907785100b00734bfab4d59sm3432282ejc.170.2022.11.13.13.46.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Nov 2022 13:46:49 -0800 (PST) From: Christoph Muellner To: gcc-patches@gcc.gnu.org, Kito Cheng , Jim Wilson , Palmer Dabbelt , Andrew Waterman , Philipp Tomsich , Cooper Qu , Lifang Xia , Yunhai Shang , Zhiwei Liu Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [PATCH 7/7] riscv: Add basic extension support for XTheadFmv and XTheadInt Date: Sun, 13 Nov 2022 22:46:36 +0100 Message-Id: <20221113214636.2747737-8-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221113214636.2747737-1-christoph.muellner@vrull.eu> References: <20221113214636.2747737-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, KAM_SHORT, RCVD_IN_DNSWL_NONE, 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" From: Christoph Müllner This patch add basic support for the XTheadFmv and XTheadInt ISA extension. As both extensions only contain instruction, which are not supposed to be emitted by the compiler, the support only covers awareness of the extension name in the march string and the definition of a feature test macro. gcc/ChangeLog: * common/config/riscv/riscv-common.cc: Add xtheadfmv and xtheadint. * config/riscv/riscv-opts.h (MASK_XTHEADMAC): New. (MASK_XTHEADFMV): New. (TARGET_XTHEADFMV): New. (MASK_XTHEADINT): New. (TARGET_XTHEADINT): New. (MASK_XTHEADMEMIDX): New. (MASK_XTHEADSYNC): New. gcc/testsuite/ChangeLog: * gcc.target/riscv/xtheadfmv.c: New test. * gcc.target/riscv/xtheadint.c: New test. Signed-off-by: Christoph Müllner --- gcc/common/config/riscv/riscv-common.cc | 4 ++++ gcc/config/riscv/riscv-opts.h | 10 +++++++--- gcc/testsuite/gcc.target/riscv/xtheadfmv.c | 14 ++++++++++++++ gcc/testsuite/gcc.target/riscv/xtheadint.c | 14 ++++++++++++++ 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmv.c create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadint.c diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index 8e1449d3543..b3e6732dddd 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -228,6 +228,8 @@ static const struct riscv_ext_version riscv_ext_version_table[] = {"xtheadcmo", ISA_SPEC_CLASS_NONE, 1, 0}, {"xtheadcondmov", ISA_SPEC_CLASS_NONE, 1, 0}, {"xtheadfmemidx", ISA_SPEC_CLASS_NONE, 1, 0}, + {"xtheadfmv", ISA_SPEC_CLASS_NONE, 1, 0}, + {"xtheadint", ISA_SPEC_CLASS_NONE, 1, 0}, {"xtheadmac", ISA_SPEC_CLASS_NONE, 1, 0}, {"xtheadmemidx", ISA_SPEC_CLASS_NONE, 1, 0}, {"xtheadsync", ISA_SPEC_CLASS_NONE, 1, 0}, @@ -1263,6 +1265,8 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = {"xtheadcmo", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADCMO}, {"xtheadcondmov", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADCONDMOV}, {"xtheadfmemidx", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADFMEMIDX}, + {"xtheadfmv", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADFMV}, + {"xtheadint", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADINT}, {"xtheadmac", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADMAC}, {"xtheadmemidx", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADMEMIDX}, {"xtheadsync", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADSYNC}, diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h index 18daac40dbd..c1868dcf284 100644 --- a/gcc/config/riscv/riscv-opts.h +++ b/gcc/config/riscv/riscv-opts.h @@ -201,11 +201,15 @@ enum stack_protector_guard { #define TARGET_XTHEADCONDMOV ((riscv_xthead_subext & MASK_XTHEADCONDMOV) != 0) #define MASK_XTHEADFMEMIDX (1 << 5) #define TARGET_XTHEADFMEMIDX ((riscv_xthead_subext & MASK_XTHEADFMEMIDX) != 0) -#define MASK_XTHEADMAC (1 << 6) +#define MASK_XTHEADFMV (1 << 6) +#define TARGET_XTHEADFMV ((riscv_xthead_subext & MASK_XTHEADFMV) != 0) +#define MASK_XTHEADINT (1 << 7) +#define TARGET_XTHEADINT ((riscv_xthead_subext & MASK_XTHEADINT) != 0) +#define MASK_XTHEADMAC (1 << 8) #define TARGET_XTHEADMAC ((riscv_xthead_subext & MASK_XTHEADMAC) != 0) -#define MASK_XTHEADMEMIDX (1 << 7) +#define MASK_XTHEADMEMIDX (1 << 9) #define TARGET_XTHEADMEMIDX ((riscv_xthead_subext & MASK_XTHEADMEMIDX) != 0) -#define MASK_XTHEADSYNC (1 << 8) +#define MASK_XTHEADSYNC (1 << 10) #define TARGET_XTHEADSYNC ((riscv_xthead_subext & MASK_XTHEADSYNC) != 0) #endif /* ! GCC_RISCV_OPTS_H */ diff --git a/gcc/testsuite/gcc.target/riscv/xtheadfmv.c b/gcc/testsuite/gcc.target/riscv/xtheadfmv.c new file mode 100644 index 00000000000..e97e8f461f6 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/xtheadfmv.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv32gc_xtheadfmv" { target { rv32 } } } */ +/* { dg-options "-march=rv64gc_xtheadfmv" { target { rv64 } } } */ + +#ifndef __riscv_xtheadfmv +#error Feature macro not defined +#endif + +int +foo (int a) +{ + return a; +} + diff --git a/gcc/testsuite/gcc.target/riscv/xtheadint.c b/gcc/testsuite/gcc.target/riscv/xtheadint.c new file mode 100644 index 00000000000..ee6989a380e --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/xtheadint.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv32gc_xtheadint" { target { rv32 } } } */ +/* { dg-options "-march=rv64gc_xtheadint" { target { rv64 } } } */ + +#ifndef __riscv_xtheadint +#error Feature macro not defined +#endif + +int +foo (int a) +{ + return a; +} +