From patchwork Thu Mar 30 10:12:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 77007 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1015991vqo; Thu, 30 Mar 2023 03:13:07 -0700 (PDT) X-Google-Smtp-Source: AKy350Yb6vz+2jIDgH+qFjg8vV491mz9/qXLoOTI1AyBMMUAuZ/NCcXjC1EY0UbcI+CdYOaLqpyT X-Received: by 2002:a17:906:6a07:b0:93d:e141:e958 with SMTP id qw7-20020a1709066a0700b0093de141e958mr30053846ejc.15.1680171187519; Thu, 30 Mar 2023 03:13:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680171187; cv=none; d=google.com; s=arc-20160816; b=U3G5h95PDVYCkCP1QZv2oDt/paQBxB9ElIt9pRzNspewB8keiqzap5vXjyJjICt1e/ 59Zj691ydT38Po3brrkWM2C84cwRDsmEuzkZYecfUUFKM8f/MnH+jMl18xH7FBMi0u+v tvLLh7ioLr88gTT1Z0v7tFva8KxuhvJXIXIv3TM2nCGuafW7ryFkRIatBzV9obg7cG7G J5C/GCz5JaxMReIESM7zdZcMJyHxJpZhqcOZ2fBm1Y7s418TgoiVBk8Ew/gwIa7iTuSl Wo1nVST2xxmWLIYeqzIe56e9VE9YF+WbxljKp4sppt5VZx7ew9HSLITdtmfemQpkR9iD oLHQ== 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:message-id:date:subject:cc :to:dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=2wa7/TEPQmHLNmwC/oU5k7DrAiwlgj6mDkSqQyt1vZI=; b=QRT0tZb2i1avI5RvYcikwzCv3FcyKn457HHQ1o7fvKIRDFihXa5iH2IuvhrfRzyWC1 BgRosmWNwHncR3LKOYLkpkJUAWFkBNDEngIhS9J6IEv8nKLMPdBnvsxzsnI25olNrBQ5 dd4r7fuWKd7OhVpAauYoYCZPHvBZcgDQ9/JcglAHFFszntw/DXOLHsbWF3ALaX6a97gC P2FxcqT/y2crl5oe3HgGMmSeOq8xONmh9N6QtxE3EV3CSyJsgPSOqjM9QnQ4AzSO2VVx Vnp7fb1BJbxYq0x5r9V/Jaz5s7bXghvGk3/7T/g9nNbiacw3K6DuPuSvwzpK73+uj84t 9CcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=qYPvV+zo; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id hs30-20020a1709073e9e00b00934d56052b8si23282266ejc.683.2023.03.30.03.13.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Mar 2023 03:13:07 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=qYPvV+zo; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 924893858C30 for ; Thu, 30 Mar 2023 10:13:05 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 924893858C30 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1680171185; bh=2wa7/TEPQmHLNmwC/oU5k7DrAiwlgj6mDkSqQyt1vZI=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=qYPvV+zo3w5HC7f2TA1wuv/jd3OziHvxXRLc2b/m1IYna+wGWLabfX1fw+M7DHFBg aLyOSHsZW0YrTba5uBLUMZtG1r1PWFFvbgES5HgwB+xJWic1NzvqnbvGYy8s7vBll4 ooFmAXJDkMSAhqAc4HVrnorAlE7fGQeLs1vhs83U= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 0CB743858410 for ; Thu, 30 Mar 2023 10:12:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0CB743858410 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 147892F4; Thu, 30 Mar 2023 03:13:38 -0700 (PDT) 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 2D5813F663; Thu, 30 Mar 2023 03:12:53 -0700 (PDT) To: binutils@sourceware.org Cc: Richard Sandiford Subject: [PATCH] aarch64: Add sme-i16i64 and sme-f64f64 aliases Date: Thu, 30 Mar 2023 11:12:45 +0100 Message-Id: <20230330101245.3327499-1-richard.sandiford@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Spam-Status: No, score=-33.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, 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: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Sandiford via Binutils From: Richard Sandiford Reply-To: Richard Sandiford Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761787182810823823?= X-GMAIL-MSGID: =?utf-8?q?1761787182810823823?= Most extension flags are named after the associated architectural FEAT_* flags, but sme-i64 and sme-f64 were exceptions. This patch adds sme-i16i64 and sme-f64f64 aliases, but keeps the old names too for compatibility. Tested on aarch64-linux-gnu & pushed. Richard --- gas/config/tc-aarch64.c | 8 +- gas/doc/c-aarch64.texi | 8 +- gas/testsuite/gas/aarch64/sme-f64f64.d | 32 +++++++ gas/testsuite/gas/aarch64/sme-i16i64.d | 118 +++++++++++++++++++++++++ include/opcode/aarch64.h | 4 +- opcodes/aarch64-tbl.h | 44 ++++----- 6 files changed, 184 insertions(+), 30 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/sme-f64f64.d create mode 100644 gas/testsuite/gas/aarch64/sme-i16i64.d diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index c1736c2c684..eb28ea3dce2 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -10156,9 +10156,13 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = { {"sme", AARCH64_FEATURE (AARCH64_FEATURE_SME, 0), AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_BFLOAT16, 0)}, - {"sme-f64", AARCH64_FEATURE (AARCH64_FEATURE_SME_F64, 0), + {"sme-f64", AARCH64_FEATURE (AARCH64_FEATURE_SME_F64F64, 0), AARCH64_FEATURE (AARCH64_FEATURE_SME, 0)}, - {"sme-i64", AARCH64_FEATURE (AARCH64_FEATURE_SME_I64, 0), + {"sme-f64f64", AARCH64_FEATURE (AARCH64_FEATURE_SME_F64F64, 0), + AARCH64_FEATURE (AARCH64_FEATURE_SME, 0)}, + {"sme-i64", AARCH64_FEATURE (AARCH64_FEATURE_SME_I16I64, 0), + AARCH64_FEATURE (AARCH64_FEATURE_SME, 0)}, + {"sme-i16i64", AARCH64_FEATURE (AARCH64_FEATURE_SME_I16I64, 0), AARCH64_FEATURE (AARCH64_FEATURE_SME, 0)}, {"bf16", AARCH64_FEATURE (AARCH64_FEATURE_BFLOAT16, 0), AARCH64_FEATURE (AARCH64_FEATURE_FP, 0)}, diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi index 8aee80b7ebb..3921c0d368e 100644 --- a/gas/doc/c-aarch64.texi +++ b/gas/doc/c-aarch64.texi @@ -231,10 +231,10 @@ automatically cause those extensions to be disabled. @code{fp} and @code{simd}. @item @code{sme} @tab Armv9-A @tab No @tab Enable SME Extension. -@item @code{sme-f64} @tab Armv9-A @tab No - @tab Enable SME F64 Extension. -@item @code{sme-i64} @tab Armv9-A @tab No - @tab Enable SME I64 Extension. +@item @code{sme-f64f64} @tab Armv9-A @tab No + @tab Enable SME F64F64 Extension. +@item @code{sme-i16i64} @tab Armv9-A @tab No + @tab Enable SME I16I64 Extension. @item @code{ssbs} @tab ARMv8-A @tab ARMv8.5-A or later @tab Enable Speculative Store Bypassing Safe state read and write. @item @code{sve} @tab ARMv8.2-A @tab Armv9-A or later diff --git a/gas/testsuite/gas/aarch64/sme-f64f64.d b/gas/testsuite/gas/aarch64/sme-f64f64.d new file mode 100644 index 00000000000..b45241598f4 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-f64f64.d @@ -0,0 +1,32 @@ +#name: SME F64 extension +#as: -march=armv8-a+sme-f64f64 +#source: sme-f64.s +#objdump: -dr + +.*: file format .* + +Disassembly of section \.text: + +0+ <.*>: + 0: 80c82020 fmopa za0.d, p0/m, p1/m, z1.d, z8.d + 4: 80c76841 fmopa za1.d, p2/m, p3/m, z2.d, z7.d + 8: 80c6b062 fmopa za2.d, p4/m, p5/m, z3.d, z6.d + c: 80c5f883 fmopa za3.d, p6/m, p7/m, z4.d, z5.d + 10: 80c404a4 fmopa za4.d, p1/m, p0/m, z5.d, z4.d + 14: 80c34cc5 fmopa za5.d, p3/m, p2/m, z6.d, z3.d + 18: 80c294e6 fmopa za6.d, p5/m, p4/m, z7.d, z2.d + 1c: 80c1dd07 fmopa za7.d, p7/m, p6/m, z8.d, z1.d + 20: 80c41ca4 fmopa za4.d, p7/m, p0/m, z5.d, z4.d + 24: 80c338c5 fmopa za5.d, p6/m, p1/m, z6.d, z3.d + 28: 80c254e6 fmopa za6.d, p5/m, p2/m, z7.d, z2.d + 2c: 80c17107 fmopa za7.d, p4/m, p3/m, z8.d, z1.d + 30: 80c82030 fmops za0.d, p0/m, p1/m, z1.d, z8.d + 34: 80c76851 fmops za1.d, p2/m, p3/m, z2.d, z7.d + 38: 80c6b072 fmops za2.d, p4/m, p5/m, z3.d, z6.d + 3c: 80c5f893 fmops za3.d, p6/m, p7/m, z4.d, z5.d + 40: 80c404b4 fmops za4.d, p1/m, p0/m, z5.d, z4.d + 44: 80c34cd5 fmops za5.d, p3/m, p2/m, z6.d, z3.d + 48: 80c294f6 fmops za6.d, p5/m, p4/m, z7.d, z2.d + 4c: 80c1dd17 fmops za7.d, p7/m, p6/m, z8.d, z1.d + 50: 81a1f803 fmopa za3.s, p6/m, p7/m, z0.h, z1.h + 54: 8081f813 fmops za3.s, p6/m, p7/m, z0.s, z1.s diff --git a/gas/testsuite/gas/aarch64/sme-i16i64.d b/gas/testsuite/gas/aarch64/sme-i16i64.d new file mode 100644 index 00000000000..1fa1fb6a537 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-i16i64.d @@ -0,0 +1,118 @@ +#name: SME I64 extension +#as: -march=armv8-a+sme-i16i64 +#source: sme-i64.s +#objdump: -dr + +.*: file format .* + +Disassembly of section \.text: + +0+ <.*>: + 0: c0d02020 addha za0.d, p0/m, p1/m, z1.d + 4: c0d06841 addha za1.d, p2/m, p3/m, z2.d + 8: c0d0b062 addha za2.d, p4/m, p5/m, z3.d + c: c0d0f883 addha za3.d, p6/m, p7/m, z4.d + 10: c0d004a4 addha za4.d, p1/m, p0/m, z5.d + 14: c0d04cc5 addha za5.d, p3/m, p2/m, z6.d + 18: c0d094e6 addha za6.d, p5/m, p4/m, z7.d + 1c: c0d0dd07 addha za7.d, p7/m, p6/m, z8.d + 20: c0d01ca4 addha za4.d, p7/m, p0/m, z5.d + 24: c0d038c5 addha za5.d, p6/m, p1/m, z6.d + 28: c0d054e6 addha za6.d, p5/m, p2/m, z7.d + 2c: c0d07107 addha za7.d, p4/m, p3/m, z8.d + 30: c0d12020 addva za0.d, p0/m, p1/m, z1.d + 34: c0d16841 addva za1.d, p2/m, p3/m, z2.d + 38: c0d1b062 addva za2.d, p4/m, p5/m, z3.d + 3c: c0d1f883 addva za3.d, p6/m, p7/m, z4.d + 40: c0d104a4 addva za4.d, p1/m, p0/m, z5.d + 44: c0d14cc5 addva za5.d, p3/m, p2/m, z6.d + 48: c0d194e6 addva za6.d, p5/m, p4/m, z7.d + 4c: c0d1dd07 addva za7.d, p7/m, p6/m, z8.d + 50: c0d11ca4 addva za4.d, p7/m, p0/m, z5.d + 54: c0d138c5 addva za5.d, p6/m, p1/m, z6.d + 58: c0d154e6 addva za6.d, p5/m, p2/m, z7.d + 5c: c0d17107 addva za7.d, p4/m, p3/m, z8.d + 60: a0c82020 smopa za0.d, p0/m, p1/m, z1.h, z8.h + 64: a0c76841 smopa za1.d, p2/m, p3/m, z2.h, z7.h + 68: a0c6b062 smopa za2.d, p4/m, p5/m, z3.h, z6.h + 6c: a0c5f883 smopa za3.d, p6/m, p7/m, z4.h, z5.h + 70: a0c404a4 smopa za4.d, p1/m, p0/m, z5.h, z4.h + 74: a0c34cc5 smopa za5.d, p3/m, p2/m, z6.h, z3.h + 78: a0c294e6 smopa za6.d, p5/m, p4/m, z7.h, z2.h + 7c: a0c1dd07 smopa za7.d, p7/m, p6/m, z8.h, z1.h + 80: a0c82030 smops za0.d, p0/m, p1/m, z1.h, z8.h + 84: a0c76851 smops za1.d, p2/m, p3/m, z2.h, z7.h + 88: a0c6b072 smops za2.d, p4/m, p5/m, z3.h, z6.h + 8c: a0c5f893 smops za3.d, p6/m, p7/m, z4.h, z5.h + 90: a0c404b4 smops za4.d, p1/m, p0/m, z5.h, z4.h + 94: a0c34cd5 smops za5.d, p3/m, p2/m, z6.h, z3.h + 98: a0c294f6 smops za6.d, p5/m, p4/m, z7.h, z2.h + 9c: a0c1dd17 smops za7.d, p7/m, p6/m, z8.h, z1.h + a0: a0c41cb4 smops za4.d, p7/m, p0/m, z5.h, z4.h + a4: a0c338d5 smops za5.d, p6/m, p1/m, z6.h, z3.h + a8: a0c254f6 smops za6.d, p5/m, p2/m, z7.h, z2.h + ac: a0c17117 smops za7.d, p4/m, p3/m, z8.h, z1.h + b0: a0e82020 sumopa za0.d, p0/m, p1/m, z1.h, z8.h + b4: a0e76841 sumopa za1.d, p2/m, p3/m, z2.h, z7.h + b8: a0e6b062 sumopa za2.d, p4/m, p5/m, z3.h, z6.h + bc: a0e5f883 sumopa za3.d, p6/m, p7/m, z4.h, z5.h + c0: a0e404a4 sumopa za4.d, p1/m, p0/m, z5.h, z4.h + c4: a0e34cc5 sumopa za5.d, p3/m, p2/m, z6.h, z3.h + c8: a0e294e6 sumopa za6.d, p5/m, p4/m, z7.h, z2.h + cc: a0e1dd07 sumopa za7.d, p7/m, p6/m, z8.h, z1.h + d0: a0e82030 sumops za0.d, p0/m, p1/m, z1.h, z8.h + d4: a0e76851 sumops za1.d, p2/m, p3/m, z2.h, z7.h + d8: a0e6b072 sumops za2.d, p4/m, p5/m, z3.h, z6.h + dc: a0e5f893 sumops za3.d, p6/m, p7/m, z4.h, z5.h + e0: a0e404b4 sumops za4.d, p1/m, p0/m, z5.h, z4.h + e4: a0e34cd5 sumops za5.d, p3/m, p2/m, z6.h, z3.h + e8: a0e294f6 sumops za6.d, p5/m, p4/m, z7.h, z2.h + ec: a0e1dd17 sumops za7.d, p7/m, p6/m, z8.h, z1.h + f0: a1e82020 umopa za0.d, p0/m, p1/m, z1.h, z8.h + f4: a1e76841 umopa za1.d, p2/m, p3/m, z2.h, z7.h + f8: a1e6b062 umopa za2.d, p4/m, p5/m, z3.h, z6.h + fc: a1e5f883 umopa za3.d, p6/m, p7/m, z4.h, z5.h + 100: a1e404a4 umopa za4.d, p1/m, p0/m, z5.h, z4.h + 104: a1e34cc5 umopa za5.d, p3/m, p2/m, z6.h, z3.h + 108: a1e294e6 umopa za6.d, p5/m, p4/m, z7.h, z2.h + 10c: a1e1dd07 umopa za7.d, p7/m, p6/m, z8.h, z1.h + 110: a1e82030 umops za0.d, p0/m, p1/m, z1.h, z8.h + 114: a1e76851 umops za1.d, p2/m, p3/m, z2.h, z7.h + 118: a1e6b072 umops za2.d, p4/m, p5/m, z3.h, z6.h + 11c: a1e5f893 umops za3.d, p6/m, p7/m, z4.h, z5.h + 120: a1e404b4 umops za4.d, p1/m, p0/m, z5.h, z4.h + 124: a1e34cd5 umops za5.d, p3/m, p2/m, z6.h, z3.h + 128: a1e294f6 umops za6.d, p5/m, p4/m, z7.h, z2.h + 12c: a1e1dd17 umops za7.d, p7/m, p6/m, z8.h, z1.h + 130: a1c82020 usmopa za0.d, p0/m, p1/m, z1.h, z8.h + 134: a1c76841 usmopa za1.d, p2/m, p3/m, z2.h, z7.h + 138: a1c6b062 usmopa za2.d, p4/m, p5/m, z3.h, z6.h + 13c: a1c5f883 usmopa za3.d, p6/m, p7/m, z4.h, z5.h + 140: a1c404a4 usmopa za4.d, p1/m, p0/m, z5.h, z4.h + 144: a1c34cc5 usmopa za5.d, p3/m, p2/m, z6.h, z3.h + 148: a1c294e6 usmopa za6.d, p5/m, p4/m, z7.h, z2.h + 14c: a1c1dd07 usmopa za7.d, p7/m, p6/m, z8.h, z1.h + 150: a1c82030 usmops za0.d, p0/m, p1/m, z1.h, z8.h + 154: a1c76851 usmops za1.d, p2/m, p3/m, z2.h, z7.h + 158: a1c6b072 usmops za2.d, p4/m, p5/m, z3.h, z6.h + 15c: a1c5f893 usmops za3.d, p6/m, p7/m, z4.h, z5.h + 160: a1c404b4 usmops za4.d, p1/m, p0/m, z5.h, z4.h + 164: a1c34cd5 usmops za5.d, p3/m, p2/m, z6.h, z3.h + 168: a1c294f6 usmops za6.d, p5/m, p4/m, z7.h, z2.h + 16c: a1c1dd17 usmops za7.d, p7/m, p6/m, z8.h, z1.h + 170: a1c41cb4 usmops za4.d, p7/m, p0/m, z5.h, z4.h + 174: a1c338d5 usmops za5.d, p6/m, p1/m, z6.h, z3.h + 178: a1c254f6 usmops za6.d, p5/m, p2/m, z7.h, z2.h + 17c: a1c17117 usmops za7.d, p4/m, p3/m, z8.h, z1.h + 180: c0d02020 addha za0.d, p0/m, p1/m, z1.d + 184: c0d17107 addva za7.d, p4/m, p3/m, z8.d + 188: 8181f883 bfmopa za3.s, p6/m, p7/m, z4.h, z1.h + 18c: 8181f893 bfmops za3.s, p6/m, p7/m, z4.h, z1.h + 190: a0c1dd07 smopa za7.d, p7/m, p6/m, z8.h, z1.h + 194: a0c17117 smops za7.d, p4/m, p3/m, z8.h, z1.h + 198: a0e1dd07 sumopa za7.d, p7/m, p6/m, z8.h, z1.h + 19c: a0e1dd17 sumops za7.d, p7/m, p6/m, z8.h, z1.h + 1a0: a1a1f883 umopa za3.s, p6/m, p7/m, z4.b, z1.b + 1a4: a1a1f893 umops za3.s, p6/m, p7/m, z4.b, z1.b + 1a8: a1817083 usmopa za3.s, p4/m, p3/m, z4.b, z1.b + 1ac: a181f893 usmops za3.s, p6/m, p7/m, z4.b, z1.b diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 40b2fdbc893..d0a0b629d99 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -96,8 +96,8 @@ typedef uint32_t aarch64_insn; #define AARCH64_FEATURE_F64MM (1ULL << 54) #define AARCH64_FEATURE_FLAGM (1ULL << 55) /* v8.4 Flag Manipulation. */ #define AARCH64_FEATURE_V9 (1ULL << 56) /* Armv9.0-A processors. */ -#define AARCH64_FEATURE_SME_F64 (1ULL << 57) /* SME F64. */ -#define AARCH64_FEATURE_SME_I64 (1ULL << 58) /* SME I64. */ +#define AARCH64_FEATURE_SME_F64F64 (1ULL << 57) /* SME F64F64. */ +#define AARCH64_FEATURE_SME_I16I64 (1ULL << 58) /* SME I16I64. */ #define AARCH64_FEATURE_V8_8 (1ULL << 59) /* Armv8.8 processors. */ #define AARCH64_FEATURE_CSSC (1ULL << 60) /* Common Short Sequence Compression instructions. */ diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 511c439f96d..69703650471 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -2475,12 +2475,12 @@ static const aarch64_feature_set aarch64_feature_sve2bitperm = AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_SVE2_BITPERM, 0); static const aarch64_feature_set aarch64_feature_sme = AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_SME, 0); -static const aarch64_feature_set aarch64_feature_sme_f64 = +static const aarch64_feature_set aarch64_feature_sme_f64f64 = AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_SME - | AARCH64_FEATURE_SME_F64, 0); -static const aarch64_feature_set aarch64_feature_sme_i64 = + | AARCH64_FEATURE_SME_F64F64, 0); +static const aarch64_feature_set aarch64_feature_sme_i16i64 = AARCH64_FEATURE (AARCH64_FEATURE_SVE2 | AARCH64_FEATURE_SME - | AARCH64_FEATURE_SME_I64, 0); + | AARCH64_FEATURE_SME_I16I64, 0); static const aarch64_feature_set aarch64_feature_v8_6 = AARCH64_FEATURE (AARCH64_FEATURE_V8_6, 0); static const aarch64_feature_set aarch64_feature_v8_7 = @@ -2547,8 +2547,8 @@ static const aarch64_feature_set aarch64_feature_cssc = #define SVE2_SM4 &aarch64_feature_sve2sm4 #define SVE2_BITPERM &aarch64_feature_sve2bitperm #define SME &aarch64_feature_sme -#define SME_F64 &aarch64_feature_sme_f64 -#define SME_I64 &aarch64_feature_sme_i64 +#define SME_F64F64 &aarch64_feature_sme_f64f64 +#define SME_I16I64 &aarch64_feature_sme_i16i64 #define ARMV8_6 &aarch64_feature_v8_6 #define ARMV8_6_SVE &aarch64_feature_v8_6 #define BFLOAT16_SVE &aarch64_feature_bfloat16_sve @@ -2651,11 +2651,11 @@ static const aarch64_feature_set aarch64_feature_cssc = #define SME_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \ { NAME, OPCODE, MASK, CLASS, OP, SME, OPS, QUALS, \ FLAGS, 0, TIED, NULL } -#define SME_F64_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \ - { NAME, OPCODE, MASK, CLASS, OP, SME_F64, OPS, QUALS, \ +#define SME_F64F64_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, OP, SME_F64F64, OPS, QUALS, \ FLAGS, 0, TIED, NULL } -#define SME_I64_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \ - { NAME, OPCODE, MASK, CLASS, OP, SME_I64, OPS, QUALS, \ +#define SME_I16I64_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, OP, SME_I16I64, OPS, QUALS, \ FLAGS, 0, TIED, NULL } #define SME_INSNC(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,CONSTRAINTS,TIED) \ { NAME, OPCODE, MASK, CLASS, OP, SME, OPS, QUALS, \ @@ -5207,36 +5207,36 @@ const struct aarch64_opcode aarch64_opcode_table[] = SVE2BITPERM_INSN ("bgrp", 0x4500b800, 0xff20fc00, sve_size_bhsd, 0, OP3 (SVE_Zd, SVE_Zn, SVE_Zm_16), OP_SVE_VVV_BHSD, 0, 0), /* SME instructions. */ SME_INSN ("addha", 0xc0900000, 0xffff001c, sme_misc, 0, OP4 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_S, 0, 0), - SME_I64_INSN ("addha", 0xc0d00000, 0xffff0018, sme_misc, 0, OP4 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_D, 0, 0), + SME_I16I64_INSN ("addha", 0xc0d00000, 0xffff0018, sme_misc, 0, OP4 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_D, 0, 0), SME_INSN ("addspl", 0x04605800, 0xffe0f800, sme_misc, 0, OP3 (Rd_SP, SVE_Rn_SP, SVE_SIMM6), OP_SVE_XXU, 0, 0), SME_INSN ("addsvl", 0x04205800, 0xffe0f800, sme_misc, 0, OP3 (Rd_SP, SVE_Rn_SP, SVE_SIMM6), OP_SVE_XXU, 0, 0), SME_INSN ("addva", 0xc0910000, 0xffff001c, sme_misc, 0, OP4 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_S, 0, 0), - SME_I64_INSN ("addva", 0xc0d10000, 0xffff0018, sme_misc, 0, OP4 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_D, 0, 0), + SME_I16I64_INSN ("addva", 0xc0d10000, 0xffff0018, sme_misc, 0, OP4 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn), OP_SME_ZADA_PN_PM_ZN_D, 0, 0), SME_INSN ("bfmopa", 0x81800000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_PN_PM_ZN_ZM, 0, 0), SME_INSN ("bfmops", 0x81800010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_PN_PM_ZN_ZM, 0, 0), SME_INSN ("fmopa", 0x80800000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_S_S, 0, 0), - SME_F64_INSN ("fmopa", 0x80c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_D_D, 0, 0), + SME_F64F64_INSN ("fmopa", 0x80c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_D_D, 0, 0), SME_INSN ("fmopa", 0x81a00000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_H_H, 0, 0), SME_INSN ("fmops", 0x80800010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_S_S, 0, 0), - SME_F64_INSN ("fmops", 0x80c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_D_D, 0, 0), + SME_F64F64_INSN ("fmops", 0x80c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_D_D, 0, 0), SME_INSN ("fmops", 0x81a00010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_H_H, 0, 0), SME_INSN ("rdsvl", 0x04bf5800, 0xfffff800, sme_misc, 0, OP2 (Rd, SVE_SIMM6), OP_SVE_XU, 0, 0), SME_INSN ("smopa", 0xa0800000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0), - SME_I64_INSN ("smopa", 0xa0c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), + SME_I16I64_INSN ("smopa", 0xa0c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), SME_INSN ("smops", 0xa0800010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0), - SME_I64_INSN ("smops", 0xa0c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), + SME_I16I64_INSN ("smops", 0xa0c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), SME_INSN ("sumopa", 0xa0a00000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0), - SME_I64_INSN ("sumopa", 0xa0e00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), + SME_I16I64_INSN ("sumopa", 0xa0e00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), SME_INSN ("sumops", 0xa0a00010 ,0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0), - SME_I64_INSN ("sumops", 0xa0e00010 ,0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), + SME_I16I64_INSN ("sumops", 0xa0e00010 ,0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), SME_INSN ("umopa", 0xa1a00000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0), - SME_I64_INSN ("umopa", 0xa1e00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), + SME_I16I64_INSN ("umopa", 0xa1e00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), SME_INSN ("umops", 0xa1a00010 ,0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0), - SME_I64_INSN ("umops", 0xa1e00010 ,0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), + SME_I16I64_INSN ("umops", 0xa1e00010 ,0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), SME_INSN ("usmopa", 0xa1800000, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0), - SME_I64_INSN ("usmopa", 0xa1c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), + SME_I16I64_INSN ("usmopa", 0xa1c00000, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), SME_INSN ("usmops", 0xa1800010, 0xffe0001c, sme_misc, 0, OP5 (SME_ZAda_2b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_S_PM_PM_B_B, 0, 0), - SME_I64_INSN ("usmops", 0xa1c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), + SME_I16I64_INSN ("usmops", 0xa1c00010, 0xffe00018, sme_misc, 0, OP5 (SME_ZAda_3b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SME_ZADA_D_PM_PM_H_H, 0, 0), SME_INSN ("mov", 0xc0020000, 0xff3e0200, sme_misc, 0, OP3 (SVE_Zd, SVE_Pg3, SME_ZA_HV_idx_src), OP_SME_BHSDQ_PM_BHSDQ, 0, 0), SME_INSN ("mov", 0xc0000000, 0xff3e0010, sme_misc, 0, OP3 (SME_ZA_HV_idx_dest, SVE_Pg3, SVE_Zn), OP_SME_BHSDQ_PM_BHSDQ, 0, 0),