From patchwork Tue Dec 5 10:24:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 173918 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3333647vqy; Tue, 5 Dec 2023 02:25:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IFi/g8dYcDyQ+E/qFSc21aXtsvQ6mEj1uESaa8zh6+wsrerm8zOdBADm60RswG/oZoVQ+mg X-Received: by 2002:a81:4e0b:0:b0:5d9:8e2:7a44 with SMTP id c11-20020a814e0b000000b005d908e27a44mr2130016ywb.33.1701771940420; Tue, 05 Dec 2023 02:25:40 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701771940; cv=pass; d=google.com; s=arc-20160816; b=SfiR1bvJBFKXJkiyINWfHpa2ccBLr1iFkiYBCu7xloZPh93cP9O8ls5FmKJp09LBCZ 51iK4JsYRpybHzwPDq40QiTFbFmNC2opceup2K9zQtZ1ut2fj7txJFz7i3ZjXR6uOn0T f78rXl0r4FxuRGaBRLM9BoNYqUsIgU0GfYn0WUY79Iq0qERf60b/rktwzB3Aa3wwijfe UybAEm3qgGPnPSGWN/9LoY67UqDpM3d104DkVwGrAmErCMKRYn0GjSXdZlL0RcLOM/GC QQxyWol186A0XVZX3jo1Q9IHh3NMplMZ5T+ZytQEFOmiUzg6IGv/WDoo8QV5XqjBWsWI SyNg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to: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 :from:arc-filter:dmarc-filter:delivered-to; bh=TQorA5i3JJPqRSk17q2pirTMiY8nN2ztQBokbx61R0Y=; fh=C4nEn4uRKApr1WsFtLyJD8L5BeRuRc+JFyqoopFjd9M=; b=nmZ8MokE11TmsyyWNWqy4j53iwQClYljhQtBrQyYMLw3N30MOhokwn6pUZa4Q10XoF rwpkzyYerwyGhuLM8Kf2atEpu/4SiqsttITaeohom/W7FMmpYqe+THqDJRrnjpkUn7mA Njk+RA4FUKCu4qFmNcZ7K7hTS7PBLHW57jOwIn/4Ww9k/B0rhM76khZ53QLCRw9cSWVy TRL3GqD8a9GFyziCs0FpsnhkROvxcB03LjK7dT/yAZkyLBl4EjCT/Kox0eZV3se7U/5d pF+Rq6CTliIwKas9AX3koIE0zUMpo9tczzDXw7v7WNKjCFUA9fpxRROECszuZFMhGZ6X Kupw== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id z13-20020a0ce98d000000b0067a5330c2c7si6856131qvn.459.2023.12.05.02.25.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 02:25:40 -0800 (PST) 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; arc=pass (i=1); 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BE9663858027 for ; Tue, 5 Dec 2023 10:25:39 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 549883858C50 for ; Tue, 5 Dec 2023 10:25:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 549883858C50 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 549883858C50 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701771914; cv=none; b=tmHWLJv+Hyj1PlA2LijapXivR9L6KvJZ5u9cD2xcoFID76n9WA4N3TMBG1uFLAr0paqOLhU1BjK2URyRWuNgTsrXGnjRAm0xUHic+I5sd9Xbtp+FrP03XXgdePa3M3bUdv0oJAIkzdxOPRozq2M1UlgYt7cMZo32LcY3ZXVCYbg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701771914; c=relaxed/simple; bh=VH4ZL8j5tXU1zbiMxD/kCE2KGB+WfAOTrHGWZUfwQ3w=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=C2gpJW5dgso2F/hoTSqY4V53TIG8iuOEX4CFIzi/64A1fdFA6O3nCdIcXXfZPxkUI8mGRwxttyH+NXDcfhYGDtmYbMv0biwbsGJ8NKKkOm0DShdmXIqICcHHQo/PevUTzhv67jmHGZ7NghZndg19HUTmETN/KCwxtL/MTXeiHnE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 931F6139F; Tue, 5 Dec 2023 02:25:59 -0800 (PST) Received: from e121540-lin.manchester.arm.com (e121540-lin.manchester.arm.com [10.32.110.72]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 853B93F5A1; Tue, 5 Dec 2023 02:25:12 -0800 (PST) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Cc: Richard Sandiford Subject: [pushed v2 1/5] aarch64: Add +sme2 Date: Tue, 5 Dec 2023 10:24:59 +0000 Message-Id: <20231205102503.1923331-2-richard.sandiford@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231205102503.1923331-1-richard.sandiford@arm.com> References: <20231205102503.1923331-1-richard.sandiford@arm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-22.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_NUMSUBJECT, SPF_HELO_NONE, SPF_NONE, 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 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: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784437214432421530 X-GMAIL-MSGID: 1784437214432421530 gcc/ * doc/invoke.texi: Document +sme2. * doc/sourcebuild.texi: Document aarch64_sme2. * config/aarch64/aarch64-option-extensions.def (AARCH64_OPT_EXTENSION): Add sme2. * config/aarch64/aarch64.h (AARCH64_ISA_SME2, TARGET_SME2): New macros. gcc/testsuite/ * lib/target-supports.exp (check_effective_target_aarch64_sme2): New target test. (check_effective_target_aarch64_asm_sme2_ok): Likewise. --- gcc/config/aarch64/aarch64-option-extensions.def | 2 ++ gcc/config/aarch64/aarch64.h | 4 ++++ gcc/doc/invoke.texi | 3 ++- gcc/doc/sourcebuild.texi | 2 ++ gcc/testsuite/lib/target-supports.exp | 14 +++++++++++++- 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def index 1480e498bbb..c156d2ee76a 100644 --- a/gcc/config/aarch64/aarch64-option-extensions.def +++ b/gcc/config/aarch64/aarch64-option-extensions.def @@ -157,4 +157,6 @@ AARCH64_OPT_EXTENSION("sme-i16i64", SME_I16I64, (SME), (), (), "") AARCH64_OPT_EXTENSION("sme-f64f64", SME_F64F64, (SME), (), (), "") +AARCH64_OPT_EXTENSION("sme2", SME2, (SME), (), (), "sme2") + #undef AARCH64_OPT_EXTENSION diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index f9139a8e28f..854eb7bedc9 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -227,6 +227,7 @@ constexpr auto AARCH64_FL_DEFAULT_ISA_MODE = AARCH64_FL_SM_OFF; #define AARCH64_ISA_SME (aarch64_isa_flags & AARCH64_FL_SME) #define AARCH64_ISA_SME_I16I64 (aarch64_isa_flags & AARCH64_FL_SME_I16I64) #define AARCH64_ISA_SME_F64F64 (aarch64_isa_flags & AARCH64_FL_SME_F64F64) +#define AARCH64_ISA_SME2 (aarch64_isa_flags & AARCH64_FL_SME2) #define AARCH64_ISA_V8_3A (aarch64_isa_flags & AARCH64_FL_V8_3A) #define AARCH64_ISA_DOTPROD (aarch64_isa_flags & AARCH64_FL_DOTPROD) #define AARCH64_ISA_AES (aarch64_isa_flags & AARCH64_FL_AES) @@ -332,6 +333,9 @@ constexpr auto AARCH64_FL_DEFAULT_ISA_MODE = AARCH64_FL_SM_OFF; /* The FEAT_SME_F64F64 extension to SME, enabled through +sme-f64f64. */ #define TARGET_SME_F64F64 (AARCH64_ISA_SME_F64F64) +/* SME2 instructions, enabled through +sme2. */ +#define TARGET_SME2 (AARCH64_ISA_SME2) + /* ARMv8.3-A features. */ #define TARGET_ARMV8_3 (AARCH64_ISA_V8_3A) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 806babc3dfa..f93128dbe2b 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -21279,7 +21279,8 @@ Enable the Scalable Matrix Extension. Enable the FEAT_SME_I16I64 extension to SME. @item sme-f64f64 Enable the FEAT_SME_F64F64 extension to SME. - ++@item sme2 +Enable the Scalable Matrix Extension 2. This also enables SME instructions. @end table Feature @option{crypto} implies @option{aes}, @option{sha2}, and @option{simd}, diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 123e73508b6..c9909026854 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -2318,6 +2318,8 @@ Binutils installed on test system supports relocation types required by -fpic for AArch64 small memory model. @item aarch64_sme AArch64 target that generates instructions for SME. +@item aarch64_sme2 +AArch64 target that generates instructions for SME2. @item aarch64_sve_hw AArch64 target that is able to generate and execute SVE code (regardless of whether it does so by default). diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 986004bf13c..3fcce6be49d 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -4398,6 +4398,18 @@ proc check_effective_target_aarch64_sme { } { }] } +# Return 1 if this is an AArch64 target that generates instructions for SME. +proc check_effective_target_aarch64_sme2 { } { + if { ![istarget aarch64*-*-*] } { + return 0 + } + return [check_no_compiler_messages aarch64_sme2 assembly { + #if !defined (__ARM_FEATURE_SME2) + #error FOO + #endif + }] +} + # Return 1 if this is a compiler supporting ARC atomic operations proc check_effective_target_arc_atomic { } { return [check_no_compiler_messages arc_atomic assembly { @@ -11628,7 +11640,7 @@ proc check_effective_target_aarch64_tiny { } { foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod" "sve" "i8mm" "f32mm" "f64mm" "bf16" "sb" "sve2" "ls64" - "sme" "sme-i16i64" } { + "sme" "sme-i16i64" "sme2" } { eval [string map [list FUNC $aarch64_ext] { proc check_effective_target_aarch64_asm_FUNC_ok { } { if { [istarget aarch64*-*-*] } {