Message ID | 20230330102646.3327818-1-richard.sandiford@arm.com |
---|---|
Headers |
Return-Path: <binutils-bounces+ouuuleilei=gmail.com@sourceware.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1034241vqo; Thu, 30 Mar 2023 03:54:11 -0700 (PDT) X-Google-Smtp-Source: AKy350ZnlfC1RAJ3OxZ45UKjSl7WRWIMFtRhI/hx98Wg0GTY9JsqlYePr3FtRm++4MgE2vh8bKsz X-Received: by 2002:a17:906:d201:b0:8f1:949f:37b5 with SMTP id w1-20020a170906d20100b008f1949f37b5mr23831327ejz.32.1680173651153; Thu, 30 Mar 2023 03:54:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680173651; cv=none; d=google.com; s=arc-20160816; b=qfVYHlMrKTtJACZ1qdc1fA1+Wpf8eMZT/gM6+s6mdk+3Ow+aZDveScNHUgd0PS22Zx AUFBYnaIvk54PG1goJliLk+rofNXk4twAbNfYgVKugzb/T/F2xczcm7dl1m2B9/RHzrG gBsPAL7EsvVOQlR2tfNC3BoVoUQ3DP01ePYZSslSu1A3B23yNar5hLp86gCS/c6XVsoQ Mdmw7+YDVok7Qf5aiclSa+EO67Nm7tfBtO5VkO1bAbfTeYM2sgvXeXXJC+QeJoSkqLtc 2vRqkVPn4v2MLIEB09R4y1PxFm/tqKgOSX5a0tuAHt75ljZ19z1FJzjuC1rxZGPLC13X o0Vw== 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=WU8TxCCOqcRgGyHd8Id70dqyhmByhVhZ8HQyjKy+Qqc=; b=PPDimH+CLS4Cuns9Q09exKs13oNfeG7LivQakjEQz600cG06klymtARmeFmgcAWnOw K4Ei4kIiEstZEJFTfSCU+rTeed9BuOnB5H1i4Pe+lu79fdF+TF3dsL1wq5gFvw7E6F7U qj2EoV6bdS3KRAXjO3XghggYr1svobHcr4a7o+hnJa8CBRhaRN6pAynVRBav7Yvb4GUY jlPJO4w5De3R3AxF0hqDHxJOhSC1Rr86Y0UQuf8i6b8LV5cjt4SnyaQePqfAo7psmh7d VTETFzk2qv3BUpXyJYtQ6YZlLiHbLMFZBQCf6q0Va2Bh5LSEXA6066Iga2eX3nhTFFTS w1kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b="p2/i1Tgp"; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c 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. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id z15-20020a1709063a0f00b008c72577b130si20436762eje.636.2023.03.30.03.54.10 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Mar 2023 03:54:11 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b="p2/i1Tgp"; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c 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 86A583893670 for <ouuuleilei@gmail.com>; Thu, 30 Mar 2023 10:38:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 86A583893670 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1680172696; bh=WU8TxCCOqcRgGyHd8Id70dqyhmByhVhZ8HQyjKy+Qqc=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=p2/i1TgpaOOp6pJk1041RF4NQoXy8G20afLBk9YopxVXqY2R1WKlieGumcmEcgwf4 HpQYkgstRo03vpzMLMqzGIgVdDEyIGpeTEyeS9LwM5QUyhW9ZWHehPyiN/EyNLnSp6 MfVFICTpQDgScivJfGpjYF7ctF6BNnQa4zJojz1c= 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 A18B43870885 for <binutils@sourceware.org>; Thu, 30 Mar 2023 10:26:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A18B43870885 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 B4ABA2F4; Thu, 30 Mar 2023 03:27:37 -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 B3BE23F663; Thu, 30 Mar 2023 03:26:52 -0700 (PDT) To: binutils@sourceware.org Cc: Richard Sandiford <richard.sandiford@arm.com> Subject: [PATCH 00/31] aarch64: Add SME2 support Date: Thu, 30 Mar 2023 11:26:15 +0100 Message-Id: <20230330102646.3327818-1-richard.sandiford@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-26.5 required=5.0 tests=BAYES_00, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no 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 <binutils.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/binutils>, <mailto:binutils-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/binutils/> List-Post: <mailto:binutils@sourceware.org> List-Help: <mailto:binutils-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/binutils>, <mailto:binutils-request@sourceware.org?subject=subscribe> From: Richard Sandiford via Binutils <binutils@sourceware.org> Reply-To: Richard Sandiford <richard.sandiford@arm.com> Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" <binutils-bounces+ouuuleilei=gmail.com@sourceware.org> X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761789766539575423?= X-GMAIL-MSGID: =?utf-8?q?1761789766539575423?= |
Series |
aarch64: Add SME2 support
|
|
Message
Richard Sandiford
March 30, 2023, 10:26 a.m. UTC
This series of patches adds SME2 support to the AArch64 backend. Details on SME2 are available here: https://developer.arm.com/documentation/ddi0602/2022-12/SME-Instructions Tested on aarch64-linux-gnu, and via automatic cross-checking against the architecture description and the LLVM implementation. I've pushed the series under GWP, but I'm more than happy to update/adjust/fix based on post-commit review, so please let me know if you spot anything you think should be changed. Thanks, Richard Richard Sandiford (31): aarch64: Add +sme2 aarch64: Add a _10 suffix to FLD_imm3 aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array aarch64: Add support for vgx2 and vgx4 aarch64; Add support for vector offset ranges aarch64: Add support for predicate-as-counter registers aarch64: Add the SME2 MOVA instructions aarch64: Add the SME2 multivector LD1 and ST1 instructions aarch64: Add the SME2 predicate-related instructions aarch64: Add the SME2 ZT0 instructions aarch64: Add the SME2 ADD and SUB instructions aarch64: Add the SME2 maximum/minimum instructions aarch64: Add the SME2 FMLA and FMLS instructions aarch64: Add the SME2 MLAL and MLSL instructions aarch64: Add the SME2 MLALL and MLSLL instructions aarch64: Add the SME2 dot-product instructions aarch64: Add the SME2 vertical dot-product instructions aarch64: Add the SME2 MOPA and MOPS instructions aarch64: Add the SME2 CLAMP instructions aarch64: Add the SME2 FP<->int conversion instructions aarch64: Add the SME2 FP<->FP conversion instructions aarch64: Add the SME2 saturating conversion instructions aarch64: Add the SME2 shift instructions aarch64: Add the SME2 UNPK instructions aarch64: Add the SME2 UZP and ZIP instructions aarch64: Add the SVE BFMLSL instructions aarch64: Add new SVE dot-product instructions aarch64: Add new SVE saturating conversion instructions aarch64: Add new SVE shift instructions aarch64: Add the SVE FCLAMP instruction aarch64: Add the RPRFM instruction gas/NEWS | 2 + gas/config/tc-aarch64.c | 307 +- gas/doc/c-aarch64.texi | 2 + gas/testsuite/gas/aarch64/illegal-sve2.l | 28 +- gas/testsuite/gas/aarch64/legacy_reg_names.l | 2 +- gas/testsuite/gas/aarch64/rprfm-1-invalid.d | 3 + gas/testsuite/gas/aarch64/rprfm-1-invalid.l | 11 + gas/testsuite/gas/aarch64/rprfm-1-invalid.s | 9 + gas/testsuite/gas/aarch64/rprfm-1.d | 83 + gas/testsuite/gas/aarch64/rprfm-1.s | 74 + gas/testsuite/gas/aarch64/sme-2-illegal.l | 16 + gas/testsuite/gas/aarch64/sme-2-illegal.s | 11 + gas/testsuite/gas/aarch64/sme-3-illegal.l | 13 +- gas/testsuite/gas/aarch64/sme-3-illegal.s | 6 + gas/testsuite/gas/aarch64/sme-4-illegal.l | 6 +- gas/testsuite/gas/aarch64/sme-5-illegal.l | 10 + gas/testsuite/gas/aarch64/sme-5-illegal.s | 9 + gas/testsuite/gas/aarch64/sme-6-illegal.l | 10 + gas/testsuite/gas/aarch64/sme-6-illegal.s | 9 + gas/testsuite/gas/aarch64/sme-7-illegal.l | 20 + gas/testsuite/gas/aarch64/sme-7-illegal.s | 17 + gas/testsuite/gas/aarch64/sme-9-illegal.l | 19 + gas/testsuite/gas/aarch64/sme-9-illegal.s | 10 + gas/testsuite/gas/aarch64/sme-9.d | 4 +- gas/testsuite/gas/aarch64/sme2-1-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-1-invalid.l | 327 + gas/testsuite/gas/aarch64/sme2-1-invalid.s | 323 + gas/testsuite/gas/aarch64/sme2-1-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-1-noarch.l | 289 + gas/testsuite/gas/aarch64/sme2-1.d | 305 + gas/testsuite/gas/aarch64/sme2-1.s | 338 + gas/testsuite/gas/aarch64/sme2-10-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-10-invalid.l | 67 + gas/testsuite/gas/aarch64/sme2-10-invalid.s | 50 + gas/testsuite/gas/aarch64/sme2-10-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-10-noarch.l | 641 ++ gas/testsuite/gas/aarch64/sme2-10.d | 649 ++ gas/testsuite/gas/aarch64/sme2-10.s | 799 ++ gas/testsuite/gas/aarch64/sme2-11-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-11-invalid.l | 101 + gas/testsuite/gas/aarch64/sme2-11-invalid.s | 91 + gas/testsuite/gas/aarch64/sme2-11-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-11-noarch.l | 117 + gas/testsuite/gas/aarch64/sme2-11.d | 125 + gas/testsuite/gas/aarch64/sme2-11.s | 127 + gas/testsuite/gas/aarch64/sme2-12-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-12-invalid.l | 155 + gas/testsuite/gas/aarch64/sme2-12-invalid.s | 136 + gas/testsuite/gas/aarch64/sme2-12-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-12-noarch.l | 571 + gas/testsuite/gas/aarch64/sme2-12.d | 579 + gas/testsuite/gas/aarch64/sme2-12.s | 633 ++ gas/testsuite/gas/aarch64/sme2-13-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-13-invalid.l | 80 + gas/testsuite/gas/aarch64/sme2-13-invalid.s | 83 + gas/testsuite/gas/aarch64/sme2-13-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-13-noarch.l | 253 + gas/testsuite/gas/aarch64/sme2-13.d | 261 + gas/testsuite/gas/aarch64/sme2-13.s | 283 + gas/testsuite/gas/aarch64/sme2-14-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-14-invalid.l | 7 + gas/testsuite/gas/aarch64/sme2-14-invalid.s | 7 + gas/testsuite/gas/aarch64/sme2-14-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-14-noarch.l | 107 + gas/testsuite/gas/aarch64/sme2-14.d | 115 + gas/testsuite/gas/aarch64/sme2-14.s | 118 + gas/testsuite/gas/aarch64/sme2-15-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-15-invalid.l | 97 + gas/testsuite/gas/aarch64/sme2-15-invalid.s | 87 + gas/testsuite/gas/aarch64/sme2-15-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-15-noarch.l | 187 + gas/testsuite/gas/aarch64/sme2-15.d | 195 + gas/testsuite/gas/aarch64/sme2-15.s | 203 + gas/testsuite/gas/aarch64/sme2-16-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-16-invalid.l | 97 + gas/testsuite/gas/aarch64/sme2-16-invalid.s | 87 + gas/testsuite/gas/aarch64/sme2-16-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-16-noarch.l | 249 + gas/testsuite/gas/aarch64/sme2-16.d | 257 + gas/testsuite/gas/aarch64/sme2-16.s | 271 + gas/testsuite/gas/aarch64/sme2-17-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-17-invalid.l | 20 + gas/testsuite/gas/aarch64/sme2-17-invalid.s | 12 + gas/testsuite/gas/aarch64/sme2-17-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-17-noarch.l | 45 + gas/testsuite/gas/aarch64/sme2-17.d | 53 + gas/testsuite/gas/aarch64/sme2-17.s | 47 + gas/testsuite/gas/aarch64/sme2-18-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-18-invalid.l | 21 + gas/testsuite/gas/aarch64/sme2-18-invalid.s | 20 + gas/testsuite/gas/aarch64/sme2-18-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-18-noarch.l | 21 + gas/testsuite/gas/aarch64/sme2-18.d | 29 + gas/testsuite/gas/aarch64/sme2-18.s | 21 + gas/testsuite/gas/aarch64/sme2-19-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-19-invalid.l | 36 + gas/testsuite/gas/aarch64/sme2-19-invalid.s | 36 + gas/testsuite/gas/aarch64/sme2-19-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-19-noarch.l | 41 + gas/testsuite/gas/aarch64/sme2-19.d | 49 + gas/testsuite/gas/aarch64/sme2-19.s | 43 + gas/testsuite/gas/aarch64/sme2-2-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-2-invalid.l | 229 + gas/testsuite/gas/aarch64/sme2-2-invalid.s | 205 + gas/testsuite/gas/aarch64/sme2-2-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-2-noarch.l | 481 + gas/testsuite/gas/aarch64/sme2-2.d | 489 + gas/testsuite/gas/aarch64/sme2-2.s | 511 + gas/testsuite/gas/aarch64/sme2-20-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-20-invalid.l | 27 + gas/testsuite/gas/aarch64/sme2-20-invalid.s | 23 + gas/testsuite/gas/aarch64/sme2-20-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-20-noarch.l | 21 + gas/testsuite/gas/aarch64/sme2-20.d | 29 + gas/testsuite/gas/aarch64/sme2-20.s | 21 + gas/testsuite/gas/aarch64/sme2-21-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-21-invalid.l | 18 + gas/testsuite/gas/aarch64/sme2-21-invalid.s | 12 + gas/testsuite/gas/aarch64/sme2-21-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-21-noarch.l | 43 + gas/testsuite/gas/aarch64/sme2-21.d | 51 + gas/testsuite/gas/aarch64/sme2-21.s | 47 + gas/testsuite/gas/aarch64/sme2-22-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-22-invalid.l | 27 + gas/testsuite/gas/aarch64/sme2-22-invalid.s | 13 + gas/testsuite/gas/aarch64/sme2-22-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-22-noarch.l | 111 + gas/testsuite/gas/aarch64/sme2-22.d | 119 + gas/testsuite/gas/aarch64/sme2-22.s | 131 + gas/testsuite/gas/aarch64/sme2-23-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-23-invalid.l | 14 + gas/testsuite/gas/aarch64/sme2-23-invalid.s | 8 + gas/testsuite/gas/aarch64/sme2-23-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-23-noarch.l | 65 + gas/testsuite/gas/aarch64/sme2-23.d | 73 + gas/testsuite/gas/aarch64/sme2-23.s | 79 + gas/testsuite/gas/aarch64/sme2-24-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-24-invalid.l | 22 + gas/testsuite/gas/aarch64/sme2-24-invalid.s | 13 + gas/testsuite/gas/aarch64/sme2-24-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-24-noarch.l | 17 + gas/testsuite/gas/aarch64/sme2-24.d | 25 + gas/testsuite/gas/aarch64/sme2-24.s | 19 + gas/testsuite/gas/aarch64/sme2-25-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-25-invalid.l | 48 + gas/testsuite/gas/aarch64/sme2-25-invalid.s | 28 + gas/testsuite/gas/aarch64/sme2-25-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-25-noarch.l | 37 + gas/testsuite/gas/aarch64/sme2-25.d | 45 + gas/testsuite/gas/aarch64/sme2-25.s | 44 + gas/testsuite/gas/aarch64/sme2-26-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-26-invalid.l | 13 + gas/testsuite/gas/aarch64/sme2-26-invalid.s | 14 + gas/testsuite/gas/aarch64/sme2-26-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-26-noarch.l | 25 + gas/testsuite/gas/aarch64/sme2-26.d | 33 + gas/testsuite/gas/aarch64/sme2-26.s | 29 + gas/testsuite/gas/aarch64/sme2-27-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-27-invalid.l | 31 + gas/testsuite/gas/aarch64/sme2-27-invalid.s | 25 + gas/testsuite/gas/aarch64/sme2-27-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-27-noarch.l | 50 + gas/testsuite/gas/aarch64/sme2-27.d | 62 + gas/testsuite/gas/aarch64/sme2-27.s | 71 + gas/testsuite/gas/aarch64/sme2-28-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-28-invalid.l | 19 + gas/testsuite/gas/aarch64/sme2-28-invalid.s | 11 + gas/testsuite/gas/aarch64/sme2-28-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-28-noarch.l | 26 + gas/testsuite/gas/aarch64/sme2-28.d | 34 + gas/testsuite/gas/aarch64/sme2-28.s | 29 + gas/testsuite/gas/aarch64/sme2-29-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-29-invalid.l | 39 + gas/testsuite/gas/aarch64/sme2-29-invalid.s | 14 + gas/testsuite/gas/aarch64/sme2-29-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-29-noarch.l | 37 + gas/testsuite/gas/aarch64/sme2-29.d | 45 + gas/testsuite/gas/aarch64/sme2-29.s | 47 + gas/testsuite/gas/aarch64/sme2-3-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-3-invalid.l | 75 + gas/testsuite/gas/aarch64/sme2-3-invalid.s | 62 + gas/testsuite/gas/aarch64/sme2-3-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-3-noarch.l | 481 + gas/testsuite/gas/aarch64/sme2-3.d | 489 + gas/testsuite/gas/aarch64/sme2-3.s | 511 + gas/testsuite/gas/aarch64/sme2-30-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-30-invalid.l | 29 + gas/testsuite/gas/aarch64/sme2-30-invalid.s | 18 + gas/testsuite/gas/aarch64/sme2-30-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-30-noarch.l | 91 + gas/testsuite/gas/aarch64/sme2-30.d | 99 + gas/testsuite/gas/aarch64/sme2-30.s | 109 + gas/testsuite/gas/aarch64/sme2-4-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-4-invalid.l | 75 + gas/testsuite/gas/aarch64/sme2-4-invalid.s | 62 + gas/testsuite/gas/aarch64/sme2-4-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-4-noarch.l | 481 + gas/testsuite/gas/aarch64/sme2-4.d | 489 + gas/testsuite/gas/aarch64/sme2-4.s | 511 + gas/testsuite/gas/aarch64/sme2-5-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-5-invalid.l | 75 + gas/testsuite/gas/aarch64/sme2-5-invalid.s | 62 + gas/testsuite/gas/aarch64/sme2-5-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-5-noarch.l | 481 + gas/testsuite/gas/aarch64/sme2-5.d | 489 + gas/testsuite/gas/aarch64/sme2-5.s | 511 + gas/testsuite/gas/aarch64/sme2-6-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-6-invalid.l | 139 + gas/testsuite/gas/aarch64/sme2-6-invalid.s | 92 + gas/testsuite/gas/aarch64/sme2-6-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-6-noarch.l | 145 + gas/testsuite/gas/aarch64/sme2-6.d | 153 + gas/testsuite/gas/aarch64/sme2-6.s | 164 + gas/testsuite/gas/aarch64/sme2-7-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-7-invalid.l | 20 + gas/testsuite/gas/aarch64/sme2-7-invalid.s | 14 + gas/testsuite/gas/aarch64/sme2-7-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-7-noarch.l | 321 + gas/testsuite/gas/aarch64/sme2-7.d | 329 + gas/testsuite/gas/aarch64/sme2-7.s | 351 + gas/testsuite/gas/aarch64/sme2-8-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-8-invalid.l | 208 + gas/testsuite/gas/aarch64/sme2-8-invalid.s | 116 + gas/testsuite/gas/aarch64/sme2-8-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-8-noarch.l | 104 + gas/testsuite/gas/aarch64/sme2-8.d | 112 + gas/testsuite/gas/aarch64/sme2-8.s | 124 + gas/testsuite/gas/aarch64/sme2-9-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-9-invalid.l | 179 + gas/testsuite/gas/aarch64/sme2-9-invalid.s | 128 + gas/testsuite/gas/aarch64/sme2-9-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-9-noarch.l | 177 + gas/testsuite/gas/aarch64/sme2-9.d | 185 + gas/testsuite/gas/aarch64/sme2-9.s | 199 + .../gas/aarch64/sme2-f64f64-1-invalid.d | 3 + .../gas/aarch64/sme2-f64f64-1-invalid.l | 27 + .../gas/aarch64/sme2-f64f64-1-invalid.s | 20 + .../gas/aarch64/sme2-f64f64-1-noarch.d | 3 + .../gas/aarch64/sme2-f64f64-1-noarch.l | 33 + gas/testsuite/gas/aarch64/sme2-f64f64-1.d | 41 + gas/testsuite/gas/aarch64/sme2-f64f64-1.s | 35 + .../gas/aarch64/sme2-f64f64-2-invalid.d | 3 + .../gas/aarch64/sme2-f64f64-2-invalid.l | 98 + .../gas/aarch64/sme2-f64f64-2-invalid.s | 87 + .../gas/aarch64/sme2-f64f64-2-noarch.d | 3 + .../gas/aarch64/sme2-f64f64-2-noarch.l | 117 + gas/testsuite/gas/aarch64/sme2-f64f64-2.d | 125 + gas/testsuite/gas/aarch64/sme2-f64f64-2.s | 127 + .../gas/aarch64/sme2-i16i64-1-invalid.d | 3 + .../gas/aarch64/sme2-i16i64-1-invalid.l | 111 + .../gas/aarch64/sme2-i16i64-1-invalid.s | 86 + .../gas/aarch64/sme2-i16i64-1-noarch.d | 3 + .../gas/aarch64/sme2-i16i64-1-noarch.l | 57 + gas/testsuite/gas/aarch64/sme2-i16i64-1.d | 65 + gas/testsuite/gas/aarch64/sme2-i16i64-1.s | 61 + .../gas/aarch64/sme2-i16i64-2-invalid.d | 3 + .../gas/aarch64/sme2-i16i64-2-invalid.l | 95 + .../gas/aarch64/sme2-i16i64-2-invalid.s | 88 + .../gas/aarch64/sme2-i16i64-2-noarch.d | 3 + .../gas/aarch64/sme2-i16i64-2-noarch.l | 253 + gas/testsuite/gas/aarch64/sme2-i16i64-2.d | 261 + gas/testsuite/gas/aarch64/sme2-i16i64-2.s | 283 + .../gas/aarch64/sme2-i16i64-3-invalid.d | 3 + .../gas/aarch64/sme2-i16i64-3-invalid.l | 19 + .../gas/aarch64/sme2-i16i64-3-invalid.s | 12 + .../gas/aarch64/sme2-i16i64-3-noarch.d | 3 + .../gas/aarch64/sme2-i16i64-3-noarch.l | 125 + gas/testsuite/gas/aarch64/sme2-i16i64-3.d | 133 + gas/testsuite/gas/aarch64/sme2-i16i64-3.s | 135 + .../gas/aarch64/sme2-i16i64-4-invalid.d | 3 + .../gas/aarch64/sme2-i16i64-4-invalid.l | 11 + .../gas/aarch64/sme2-i16i64-4-invalid.s | 12 + .../gas/aarch64/sme2-i16i64-4-noarch.d | 3 + .../gas/aarch64/sme2-i16i64-4-noarch.l | 21 + gas/testsuite/gas/aarch64/sme2-i16i64-4.d | 29 + gas/testsuite/gas/aarch64/sme2-i16i64-4.s | 21 + gas/testsuite/gas/aarch64/sve-invalid.l | 24 +- gas/testsuite/gas/aarch64/sve-invalid.s | 1 + .../gas/aarch64/sve-sme2-1-invalid.d | 3 + .../gas/aarch64/sve-sme2-1-invalid.l | 51 + .../gas/aarch64/sve-sme2-1-invalid.s | 25 + gas/testsuite/gas/aarch64/sve-sme2-1-noarch.d | 3 + gas/testsuite/gas/aarch64/sve-sme2-1-noarch.l | 25 + gas/testsuite/gas/aarch64/sve-sme2-1.d | 33 + gas/testsuite/gas/aarch64/sve-sme2-1.s | 27 + .../gas/aarch64/sve2-sme2-1-invalid.d | 3 + .../gas/aarch64/sve2-sme2-1-invalid.l | 12 + .../gas/aarch64/sve2-sme2-1-invalid.s | 12 + .../gas/aarch64/sve2-sme2-1-noarch.d | 3 + .../gas/aarch64/sve2-sme2-1-noarch.l | 33 + gas/testsuite/gas/aarch64/sve2-sme2-1.d | 41 + gas/testsuite/gas/aarch64/sve2-sme2-1.s | 35 + .../gas/aarch64/sve2-sme2-2-invalid.d | 3 + .../gas/aarch64/sve2-sme2-2-invalid.l | 25 + .../gas/aarch64/sve2-sme2-2-invalid.s | 12 + .../gas/aarch64/sve2-sme2-2-noarch.d | 3 + .../gas/aarch64/sve2-sme2-2-noarch.l | 257 + gas/testsuite/gas/aarch64/sve2-sme2-2.d | 265 + gas/testsuite/gas/aarch64/sve2-sme2-2.s | 287 + .../gas/aarch64/sve2-sme2-3-invalid.d | 3 + .../gas/aarch64/sve2-sme2-3-invalid.l | 17 + .../gas/aarch64/sve2-sme2-3-invalid.s | 15 + .../gas/aarch64/sve2-sme2-3-noarch.d | 3 + .../gas/aarch64/sve2-sme2-3-noarch.l | 29 + gas/testsuite/gas/aarch64/sve2-sme2-3.d | 41 + gas/testsuite/gas/aarch64/sve2-sme2-3.s | 35 + .../gas/aarch64/sve2-sme2-4-invalid.d | 3 + .../gas/aarch64/sve2-sme2-4-invalid.l | 17 + .../gas/aarch64/sve2-sme2-4-invalid.s | 15 + .../gas/aarch64/sve2-sme2-4-noarch.d | 3 + .../gas/aarch64/sve2-sme2-4-noarch.l | 40 + gas/testsuite/gas/aarch64/sve2-sme2-4.d | 54 + gas/testsuite/gas/aarch64/sve2-sme2-4.s | 49 + .../gas/aarch64/sve2-sme2-5-invalid.d | 3 + .../gas/aarch64/sve2-sme2-5-invalid.l | 27 + .../gas/aarch64/sve2-sme2-5-invalid.s | 12 + .../gas/aarch64/sve2-sme2-5-noarch.d | 3 + .../gas/aarch64/sve2-sme2-5-noarch.l | 13 + gas/testsuite/gas/aarch64/sve2-sme2-5.d | 21 + gas/testsuite/gas/aarch64/sve2-sme2-5.s | 14 + .../gas/aarch64/sve2-sme2-6-invalid.d | 3 + .../gas/aarch64/sve2-sme2-6-invalid.l | 20 + .../gas/aarch64/sve2-sme2-6-invalid.s | 14 + .../gas/aarch64/sve2-sme2-6-noarch.d | 3 + .../gas/aarch64/sve2-sme2-6-noarch.l | 16 + gas/testsuite/gas/aarch64/sve2-sme2-6.d | 24 + gas/testsuite/gas/aarch64/sve2-sme2-6.s | 17 + .../gas/aarch64/sve2-sme2-7-invalid.d | 3 + .../gas/aarch64/sve2-sme2-7-invalid.l | 29 + .../gas/aarch64/sve2-sme2-7-invalid.s | 9 + .../gas/aarch64/sve2-sme2-7-noarch.d | 3 + .../gas/aarch64/sve2-sme2-7-noarch.l | 16 + gas/testsuite/gas/aarch64/sve2-sme2-7.d | 24 + gas/testsuite/gas/aarch64/sve2-sme2-7.s | 17 + gas/testsuite/gas/aarch64/system.d | 2 +- include/opcode/aarch64.h | 107 +- opcodes/aarch64-asm-2.c | 350 +- opcodes/aarch64-asm.c | 153 +- opcodes/aarch64-asm.h | 5 + opcodes/aarch64-dis-2.c | 9561 +++++++++++++---- opcodes/aarch64-dis.c | 171 +- opcodes/aarch64-dis.h | 5 + opcodes/aarch64-opc-2.c | 69 +- opcodes/aarch64-opc.c | 526 +- opcodes/aarch64-opc.h | 54 +- opcodes/aarch64-tbl.h | 742 +- 346 files changed, 36993 insertions(+), 2255 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/rprfm-1-invalid.d create mode 100644 gas/testsuite/gas/aarch64/rprfm-1-invalid.l create mode 100644 gas/testsuite/gas/aarch64/rprfm-1-invalid.s create mode 100644 gas/testsuite/gas/aarch64/rprfm-1.d create mode 100644 gas/testsuite/gas/aarch64/rprfm-1.s create mode 100644 gas/testsuite/gas/aarch64/sme2-1-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-1-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-1-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-1-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-1-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-1.d create mode 100644 gas/testsuite/gas/aarch64/sme2-1.s create mode 100644 gas/testsuite/gas/aarch64/sme2-10-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-10-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-10-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-10-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-10-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-10.d create mode 100644 gas/testsuite/gas/aarch64/sme2-10.s create mode 100644 gas/testsuite/gas/aarch64/sme2-11-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-11-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-11-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-11-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-11-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-11.d create mode 100644 gas/testsuite/gas/aarch64/sme2-11.s create mode 100644 gas/testsuite/gas/aarch64/sme2-12-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-12-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-12-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-12-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-12-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-12.d create mode 100644 gas/testsuite/gas/aarch64/sme2-12.s create mode 100644 gas/testsuite/gas/aarch64/sme2-13-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-13-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-13-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-13-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-13-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-13.d create mode 100644 gas/testsuite/gas/aarch64/sme2-13.s create mode 100644 gas/testsuite/gas/aarch64/sme2-14-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-14-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-14-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-14-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-14-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-14.d create mode 100644 gas/testsuite/gas/aarch64/sme2-14.s create mode 100644 gas/testsuite/gas/aarch64/sme2-15-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-15-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-15-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-15-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-15-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-15.d create mode 100644 gas/testsuite/gas/aarch64/sme2-15.s create mode 100644 gas/testsuite/gas/aarch64/sme2-16-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-16-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-16-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-16-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-16-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-16.d create mode 100644 gas/testsuite/gas/aarch64/sme2-16.s create mode 100644 gas/testsuite/gas/aarch64/sme2-17-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-17-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-17-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-17-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-17-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-17.d create mode 100644 gas/testsuite/gas/aarch64/sme2-17.s create mode 100644 gas/testsuite/gas/aarch64/sme2-18-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-18-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-18-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-18-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-18-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-18.d create mode 100644 gas/testsuite/gas/aarch64/sme2-18.s create mode 100644 gas/testsuite/gas/aarch64/sme2-19-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-19-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-19-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-19-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-19-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-19.d create mode 100644 gas/testsuite/gas/aarch64/sme2-19.s create mode 100644 gas/testsuite/gas/aarch64/sme2-2-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-2-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-2-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-2-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-2-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-2.d create mode 100644 gas/testsuite/gas/aarch64/sme2-2.s create mode 100644 gas/testsuite/gas/aarch64/sme2-20-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-20-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-20-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-20-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-20-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-20.d create mode 100644 gas/testsuite/gas/aarch64/sme2-20.s create mode 100644 gas/testsuite/gas/aarch64/sme2-21-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-21-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-21-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-21-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-21-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-21.d create mode 100644 gas/testsuite/gas/aarch64/sme2-21.s create mode 100644 gas/testsuite/gas/aarch64/sme2-22-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-22-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-22-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-22-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-22-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-22.d create mode 100644 gas/testsuite/gas/aarch64/sme2-22.s create mode 100644 gas/testsuite/gas/aarch64/sme2-23-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-23-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-23-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-23-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-23-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-23.d create mode 100644 gas/testsuite/gas/aarch64/sme2-23.s create mode 100644 gas/testsuite/gas/aarch64/sme2-24-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-24-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-24-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-24-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-24-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-24.d create mode 100644 gas/testsuite/gas/aarch64/sme2-24.s create mode 100644 gas/testsuite/gas/aarch64/sme2-25-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-25-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-25-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-25-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-25-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-25.d create mode 100644 gas/testsuite/gas/aarch64/sme2-25.s create mode 100644 gas/testsuite/gas/aarch64/sme2-26-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-26-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-26-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-26-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-26-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-26.d create mode 100644 gas/testsuite/gas/aarch64/sme2-26.s create mode 100644 gas/testsuite/gas/aarch64/sme2-27-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-27-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-27-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-27-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-27-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-27.d create mode 100644 gas/testsuite/gas/aarch64/sme2-27.s create mode 100644 gas/testsuite/gas/aarch64/sme2-28-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-28-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-28-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-28-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-28-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-28.d create mode 100644 gas/testsuite/gas/aarch64/sme2-28.s create mode 100644 gas/testsuite/gas/aarch64/sme2-29-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-29-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-29-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-29-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-29-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-29.d create mode 100644 gas/testsuite/gas/aarch64/sme2-29.s create mode 100644 gas/testsuite/gas/aarch64/sme2-3-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-3-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-3-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-3-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-3-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-3.d create mode 100644 gas/testsuite/gas/aarch64/sme2-3.s create mode 100644 gas/testsuite/gas/aarch64/sme2-30-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-30-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-30-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-30-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-30-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-30.d create mode 100644 gas/testsuite/gas/aarch64/sme2-30.s create mode 100644 gas/testsuite/gas/aarch64/sme2-4-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-4-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-4-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-4-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-4-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-4.d create mode 100644 gas/testsuite/gas/aarch64/sme2-4.s create mode 100644 gas/testsuite/gas/aarch64/sme2-5-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-5-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-5-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-5-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-5-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-5.d create mode 100644 gas/testsuite/gas/aarch64/sme2-5.s create mode 100644 gas/testsuite/gas/aarch64/sme2-6-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-6-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-6-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-6-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-6-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-6.d create mode 100644 gas/testsuite/gas/aarch64/sme2-6.s create mode 100644 gas/testsuite/gas/aarch64/sme2-7-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-7-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-7-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-7-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-7-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-7.d create mode 100644 gas/testsuite/gas/aarch64/sme2-7.s create mode 100644 gas/testsuite/gas/aarch64/sme2-8-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-8-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-8-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-8-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-8-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-8.d create mode 100644 gas/testsuite/gas/aarch64/sme2-8.s create mode 100644 gas/testsuite/gas/aarch64/sme2-9-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-9-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-9-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-9-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-9-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-9.d create mode 100644 gas/testsuite/gas/aarch64/sme2-9.s create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1.d create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1.s create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2.d create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2.s create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1.s create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2.s create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3.s create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4.d create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4.s create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1.d create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-noarch.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-noarch.l create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7.d create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7.s
Comments
On 30.03.2023 12:26, Richard Sandiford via Binutils wrote: > Richard Sandiford (31): > aarch64: Add +sme2 > aarch64: Add a _10 suffix to FLD_imm3 > aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array > aarch64: Add support for vgx2 and vgx4 > aarch64; Add support for vector offset ranges > aarch64: Add support for predicate-as-counter registers > aarch64: Add the SME2 MOVA instructions > aarch64: Add the SME2 multivector LD1 and ST1 instructions Less than a 3rd of the patches in this series have made it to my mailbox (and the list archives), so commenting on e.g. the one above is difficult. Nevertheless - according to the documentation LD1x (scalar plus immediate, consecutive registers) and their LDNT1x, ST1x, and STNT1x counterparts are (unlike the strided forms) SVE2.1 insns, not SME2 ones (IOW it looks as if the use of SME2_INSN() there is wrong, unless the documentation is categorizing these incorrectly). Jan
On 30.03.2023 12:26, Richard Sandiford via Binutils wrote: > This series of patches adds SME2 support to the AArch64 backend. > Details on SME2 are available here: > > https://developer.arm.com/documentation/ddi0602/2022-12/SME-Instructions > > Tested on aarch64-linux-gnu, and via automatic cross-checking > against the architecture description and the LLVM implementation. > > I've pushed the series under GWP, but I'm more than happy > to update/adjust/fix based on post-commit review, so please > let me know if you spot anything you think should be changed. > > Thanks, > Richard > > > Richard Sandiford (31): > aarch64: Add +sme2 > aarch64: Add a _10 suffix to FLD_imm3 > aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array > aarch64: Add support for vgx2 and vgx4 > aarch64; Add support for vector offset ranges > aarch64: Add support for predicate-as-counter registers Shouldn't the (alias) insn forms added here all use SME2_INSN()? It doesn't seem to make sense to permit them with ".arch_extension sme". Jan > aarch64: Add the SME2 MOVA instructions > aarch64: Add the SME2 multivector LD1 and ST1 instructions > aarch64: Add the SME2 predicate-related instructions > aarch64: Add the SME2 ZT0 instructions > aarch64: Add the SME2 ADD and SUB instructions > aarch64: Add the SME2 maximum/minimum instructions > aarch64: Add the SME2 FMLA and FMLS instructions > aarch64: Add the SME2 MLAL and MLSL instructions > aarch64: Add the SME2 MLALL and MLSLL instructions > aarch64: Add the SME2 dot-product instructions > aarch64: Add the SME2 vertical dot-product instructions > aarch64: Add the SME2 MOPA and MOPS instructions > aarch64: Add the SME2 CLAMP instructions > aarch64: Add the SME2 FP<->int conversion instructions > aarch64: Add the SME2 FP<->FP conversion instructions > aarch64: Add the SME2 saturating conversion instructions > aarch64: Add the SME2 shift instructions > aarch64: Add the SME2 UNPK instructions > aarch64: Add the SME2 UZP and ZIP instructions > aarch64: Add the SVE BFMLSL instructions > aarch64: Add new SVE dot-product instructions > aarch64: Add new SVE saturating conversion instructions > aarch64: Add new SVE shift instructions > aarch64: Add the SVE FCLAMP instruction > aarch64: Add the RPRFM instruction > > gas/NEWS | 2 + > gas/config/tc-aarch64.c | 307 +- > gas/doc/c-aarch64.texi | 2 + > gas/testsuite/gas/aarch64/illegal-sve2.l | 28 +- > gas/testsuite/gas/aarch64/legacy_reg_names.l | 2 +- > gas/testsuite/gas/aarch64/rprfm-1-invalid.d | 3 + > gas/testsuite/gas/aarch64/rprfm-1-invalid.l | 11 + > gas/testsuite/gas/aarch64/rprfm-1-invalid.s | 9 + > gas/testsuite/gas/aarch64/rprfm-1.d | 83 + > gas/testsuite/gas/aarch64/rprfm-1.s | 74 + > gas/testsuite/gas/aarch64/sme-2-illegal.l | 16 + > gas/testsuite/gas/aarch64/sme-2-illegal.s | 11 + > gas/testsuite/gas/aarch64/sme-3-illegal.l | 13 +- > gas/testsuite/gas/aarch64/sme-3-illegal.s | 6 + > gas/testsuite/gas/aarch64/sme-4-illegal.l | 6 +- > gas/testsuite/gas/aarch64/sme-5-illegal.l | 10 + > gas/testsuite/gas/aarch64/sme-5-illegal.s | 9 + > gas/testsuite/gas/aarch64/sme-6-illegal.l | 10 + > gas/testsuite/gas/aarch64/sme-6-illegal.s | 9 + > gas/testsuite/gas/aarch64/sme-7-illegal.l | 20 + > gas/testsuite/gas/aarch64/sme-7-illegal.s | 17 + > gas/testsuite/gas/aarch64/sme-9-illegal.l | 19 + > gas/testsuite/gas/aarch64/sme-9-illegal.s | 10 + > gas/testsuite/gas/aarch64/sme-9.d | 4 +- > gas/testsuite/gas/aarch64/sme2-1-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-1-invalid.l | 327 + > gas/testsuite/gas/aarch64/sme2-1-invalid.s | 323 + > gas/testsuite/gas/aarch64/sme2-1-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-1-noarch.l | 289 + > gas/testsuite/gas/aarch64/sme2-1.d | 305 + > gas/testsuite/gas/aarch64/sme2-1.s | 338 + > gas/testsuite/gas/aarch64/sme2-10-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-10-invalid.l | 67 + > gas/testsuite/gas/aarch64/sme2-10-invalid.s | 50 + > gas/testsuite/gas/aarch64/sme2-10-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-10-noarch.l | 641 ++ > gas/testsuite/gas/aarch64/sme2-10.d | 649 ++ > gas/testsuite/gas/aarch64/sme2-10.s | 799 ++ > gas/testsuite/gas/aarch64/sme2-11-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-11-invalid.l | 101 + > gas/testsuite/gas/aarch64/sme2-11-invalid.s | 91 + > gas/testsuite/gas/aarch64/sme2-11-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-11-noarch.l | 117 + > gas/testsuite/gas/aarch64/sme2-11.d | 125 + > gas/testsuite/gas/aarch64/sme2-11.s | 127 + > gas/testsuite/gas/aarch64/sme2-12-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-12-invalid.l | 155 + > gas/testsuite/gas/aarch64/sme2-12-invalid.s | 136 + > gas/testsuite/gas/aarch64/sme2-12-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-12-noarch.l | 571 + > gas/testsuite/gas/aarch64/sme2-12.d | 579 + > gas/testsuite/gas/aarch64/sme2-12.s | 633 ++ > gas/testsuite/gas/aarch64/sme2-13-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-13-invalid.l | 80 + > gas/testsuite/gas/aarch64/sme2-13-invalid.s | 83 + > gas/testsuite/gas/aarch64/sme2-13-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-13-noarch.l | 253 + > gas/testsuite/gas/aarch64/sme2-13.d | 261 + > gas/testsuite/gas/aarch64/sme2-13.s | 283 + > gas/testsuite/gas/aarch64/sme2-14-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-14-invalid.l | 7 + > gas/testsuite/gas/aarch64/sme2-14-invalid.s | 7 + > gas/testsuite/gas/aarch64/sme2-14-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-14-noarch.l | 107 + > gas/testsuite/gas/aarch64/sme2-14.d | 115 + > gas/testsuite/gas/aarch64/sme2-14.s | 118 + > gas/testsuite/gas/aarch64/sme2-15-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-15-invalid.l | 97 + > gas/testsuite/gas/aarch64/sme2-15-invalid.s | 87 + > gas/testsuite/gas/aarch64/sme2-15-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-15-noarch.l | 187 + > gas/testsuite/gas/aarch64/sme2-15.d | 195 + > gas/testsuite/gas/aarch64/sme2-15.s | 203 + > gas/testsuite/gas/aarch64/sme2-16-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-16-invalid.l | 97 + > gas/testsuite/gas/aarch64/sme2-16-invalid.s | 87 + > gas/testsuite/gas/aarch64/sme2-16-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-16-noarch.l | 249 + > gas/testsuite/gas/aarch64/sme2-16.d | 257 + > gas/testsuite/gas/aarch64/sme2-16.s | 271 + > gas/testsuite/gas/aarch64/sme2-17-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-17-invalid.l | 20 + > gas/testsuite/gas/aarch64/sme2-17-invalid.s | 12 + > gas/testsuite/gas/aarch64/sme2-17-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-17-noarch.l | 45 + > gas/testsuite/gas/aarch64/sme2-17.d | 53 + > gas/testsuite/gas/aarch64/sme2-17.s | 47 + > gas/testsuite/gas/aarch64/sme2-18-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-18-invalid.l | 21 + > gas/testsuite/gas/aarch64/sme2-18-invalid.s | 20 + > gas/testsuite/gas/aarch64/sme2-18-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-18-noarch.l | 21 + > gas/testsuite/gas/aarch64/sme2-18.d | 29 + > gas/testsuite/gas/aarch64/sme2-18.s | 21 + > gas/testsuite/gas/aarch64/sme2-19-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-19-invalid.l | 36 + > gas/testsuite/gas/aarch64/sme2-19-invalid.s | 36 + > gas/testsuite/gas/aarch64/sme2-19-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-19-noarch.l | 41 + > gas/testsuite/gas/aarch64/sme2-19.d | 49 + > gas/testsuite/gas/aarch64/sme2-19.s | 43 + > gas/testsuite/gas/aarch64/sme2-2-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-2-invalid.l | 229 + > gas/testsuite/gas/aarch64/sme2-2-invalid.s | 205 + > gas/testsuite/gas/aarch64/sme2-2-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-2-noarch.l | 481 + > gas/testsuite/gas/aarch64/sme2-2.d | 489 + > gas/testsuite/gas/aarch64/sme2-2.s | 511 + > gas/testsuite/gas/aarch64/sme2-20-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-20-invalid.l | 27 + > gas/testsuite/gas/aarch64/sme2-20-invalid.s | 23 + > gas/testsuite/gas/aarch64/sme2-20-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-20-noarch.l | 21 + > gas/testsuite/gas/aarch64/sme2-20.d | 29 + > gas/testsuite/gas/aarch64/sme2-20.s | 21 + > gas/testsuite/gas/aarch64/sme2-21-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-21-invalid.l | 18 + > gas/testsuite/gas/aarch64/sme2-21-invalid.s | 12 + > gas/testsuite/gas/aarch64/sme2-21-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-21-noarch.l | 43 + > gas/testsuite/gas/aarch64/sme2-21.d | 51 + > gas/testsuite/gas/aarch64/sme2-21.s | 47 + > gas/testsuite/gas/aarch64/sme2-22-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-22-invalid.l | 27 + > gas/testsuite/gas/aarch64/sme2-22-invalid.s | 13 + > gas/testsuite/gas/aarch64/sme2-22-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-22-noarch.l | 111 + > gas/testsuite/gas/aarch64/sme2-22.d | 119 + > gas/testsuite/gas/aarch64/sme2-22.s | 131 + > gas/testsuite/gas/aarch64/sme2-23-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-23-invalid.l | 14 + > gas/testsuite/gas/aarch64/sme2-23-invalid.s | 8 + > gas/testsuite/gas/aarch64/sme2-23-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-23-noarch.l | 65 + > gas/testsuite/gas/aarch64/sme2-23.d | 73 + > gas/testsuite/gas/aarch64/sme2-23.s | 79 + > gas/testsuite/gas/aarch64/sme2-24-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-24-invalid.l | 22 + > gas/testsuite/gas/aarch64/sme2-24-invalid.s | 13 + > gas/testsuite/gas/aarch64/sme2-24-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-24-noarch.l | 17 + > gas/testsuite/gas/aarch64/sme2-24.d | 25 + > gas/testsuite/gas/aarch64/sme2-24.s | 19 + > gas/testsuite/gas/aarch64/sme2-25-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-25-invalid.l | 48 + > gas/testsuite/gas/aarch64/sme2-25-invalid.s | 28 + > gas/testsuite/gas/aarch64/sme2-25-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-25-noarch.l | 37 + > gas/testsuite/gas/aarch64/sme2-25.d | 45 + > gas/testsuite/gas/aarch64/sme2-25.s | 44 + > gas/testsuite/gas/aarch64/sme2-26-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-26-invalid.l | 13 + > gas/testsuite/gas/aarch64/sme2-26-invalid.s | 14 + > gas/testsuite/gas/aarch64/sme2-26-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-26-noarch.l | 25 + > gas/testsuite/gas/aarch64/sme2-26.d | 33 + > gas/testsuite/gas/aarch64/sme2-26.s | 29 + > gas/testsuite/gas/aarch64/sme2-27-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-27-invalid.l | 31 + > gas/testsuite/gas/aarch64/sme2-27-invalid.s | 25 + > gas/testsuite/gas/aarch64/sme2-27-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-27-noarch.l | 50 + > gas/testsuite/gas/aarch64/sme2-27.d | 62 + > gas/testsuite/gas/aarch64/sme2-27.s | 71 + > gas/testsuite/gas/aarch64/sme2-28-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-28-invalid.l | 19 + > gas/testsuite/gas/aarch64/sme2-28-invalid.s | 11 + > gas/testsuite/gas/aarch64/sme2-28-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-28-noarch.l | 26 + > gas/testsuite/gas/aarch64/sme2-28.d | 34 + > gas/testsuite/gas/aarch64/sme2-28.s | 29 + > gas/testsuite/gas/aarch64/sme2-29-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-29-invalid.l | 39 + > gas/testsuite/gas/aarch64/sme2-29-invalid.s | 14 + > gas/testsuite/gas/aarch64/sme2-29-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-29-noarch.l | 37 + > gas/testsuite/gas/aarch64/sme2-29.d | 45 + > gas/testsuite/gas/aarch64/sme2-29.s | 47 + > gas/testsuite/gas/aarch64/sme2-3-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-3-invalid.l | 75 + > gas/testsuite/gas/aarch64/sme2-3-invalid.s | 62 + > gas/testsuite/gas/aarch64/sme2-3-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-3-noarch.l | 481 + > gas/testsuite/gas/aarch64/sme2-3.d | 489 + > gas/testsuite/gas/aarch64/sme2-3.s | 511 + > gas/testsuite/gas/aarch64/sme2-30-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-30-invalid.l | 29 + > gas/testsuite/gas/aarch64/sme2-30-invalid.s | 18 + > gas/testsuite/gas/aarch64/sme2-30-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-30-noarch.l | 91 + > gas/testsuite/gas/aarch64/sme2-30.d | 99 + > gas/testsuite/gas/aarch64/sme2-30.s | 109 + > gas/testsuite/gas/aarch64/sme2-4-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-4-invalid.l | 75 + > gas/testsuite/gas/aarch64/sme2-4-invalid.s | 62 + > gas/testsuite/gas/aarch64/sme2-4-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-4-noarch.l | 481 + > gas/testsuite/gas/aarch64/sme2-4.d | 489 + > gas/testsuite/gas/aarch64/sme2-4.s | 511 + > gas/testsuite/gas/aarch64/sme2-5-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-5-invalid.l | 75 + > gas/testsuite/gas/aarch64/sme2-5-invalid.s | 62 + > gas/testsuite/gas/aarch64/sme2-5-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-5-noarch.l | 481 + > gas/testsuite/gas/aarch64/sme2-5.d | 489 + > gas/testsuite/gas/aarch64/sme2-5.s | 511 + > gas/testsuite/gas/aarch64/sme2-6-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-6-invalid.l | 139 + > gas/testsuite/gas/aarch64/sme2-6-invalid.s | 92 + > gas/testsuite/gas/aarch64/sme2-6-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-6-noarch.l | 145 + > gas/testsuite/gas/aarch64/sme2-6.d | 153 + > gas/testsuite/gas/aarch64/sme2-6.s | 164 + > gas/testsuite/gas/aarch64/sme2-7-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-7-invalid.l | 20 + > gas/testsuite/gas/aarch64/sme2-7-invalid.s | 14 + > gas/testsuite/gas/aarch64/sme2-7-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-7-noarch.l | 321 + > gas/testsuite/gas/aarch64/sme2-7.d | 329 + > gas/testsuite/gas/aarch64/sme2-7.s | 351 + > gas/testsuite/gas/aarch64/sme2-8-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-8-invalid.l | 208 + > gas/testsuite/gas/aarch64/sme2-8-invalid.s | 116 + > gas/testsuite/gas/aarch64/sme2-8-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-8-noarch.l | 104 + > gas/testsuite/gas/aarch64/sme2-8.d | 112 + > gas/testsuite/gas/aarch64/sme2-8.s | 124 + > gas/testsuite/gas/aarch64/sme2-9-invalid.d | 3 + > gas/testsuite/gas/aarch64/sme2-9-invalid.l | 179 + > gas/testsuite/gas/aarch64/sme2-9-invalid.s | 128 + > gas/testsuite/gas/aarch64/sme2-9-noarch.d | 3 + > gas/testsuite/gas/aarch64/sme2-9-noarch.l | 177 + > gas/testsuite/gas/aarch64/sme2-9.d | 185 + > gas/testsuite/gas/aarch64/sme2-9.s | 199 + > .../gas/aarch64/sme2-f64f64-1-invalid.d | 3 + > .../gas/aarch64/sme2-f64f64-1-invalid.l | 27 + > .../gas/aarch64/sme2-f64f64-1-invalid.s | 20 + > .../gas/aarch64/sme2-f64f64-1-noarch.d | 3 + > .../gas/aarch64/sme2-f64f64-1-noarch.l | 33 + > gas/testsuite/gas/aarch64/sme2-f64f64-1.d | 41 + > gas/testsuite/gas/aarch64/sme2-f64f64-1.s | 35 + > .../gas/aarch64/sme2-f64f64-2-invalid.d | 3 + > .../gas/aarch64/sme2-f64f64-2-invalid.l | 98 + > .../gas/aarch64/sme2-f64f64-2-invalid.s | 87 + > .../gas/aarch64/sme2-f64f64-2-noarch.d | 3 + > .../gas/aarch64/sme2-f64f64-2-noarch.l | 117 + > gas/testsuite/gas/aarch64/sme2-f64f64-2.d | 125 + > gas/testsuite/gas/aarch64/sme2-f64f64-2.s | 127 + > .../gas/aarch64/sme2-i16i64-1-invalid.d | 3 + > .../gas/aarch64/sme2-i16i64-1-invalid.l | 111 + > .../gas/aarch64/sme2-i16i64-1-invalid.s | 86 + > .../gas/aarch64/sme2-i16i64-1-noarch.d | 3 + > .../gas/aarch64/sme2-i16i64-1-noarch.l | 57 + > gas/testsuite/gas/aarch64/sme2-i16i64-1.d | 65 + > gas/testsuite/gas/aarch64/sme2-i16i64-1.s | 61 + > .../gas/aarch64/sme2-i16i64-2-invalid.d | 3 + > .../gas/aarch64/sme2-i16i64-2-invalid.l | 95 + > .../gas/aarch64/sme2-i16i64-2-invalid.s | 88 + > .../gas/aarch64/sme2-i16i64-2-noarch.d | 3 + > .../gas/aarch64/sme2-i16i64-2-noarch.l | 253 + > gas/testsuite/gas/aarch64/sme2-i16i64-2.d | 261 + > gas/testsuite/gas/aarch64/sme2-i16i64-2.s | 283 + > .../gas/aarch64/sme2-i16i64-3-invalid.d | 3 + > .../gas/aarch64/sme2-i16i64-3-invalid.l | 19 + > .../gas/aarch64/sme2-i16i64-3-invalid.s | 12 + > .../gas/aarch64/sme2-i16i64-3-noarch.d | 3 + > .../gas/aarch64/sme2-i16i64-3-noarch.l | 125 + > gas/testsuite/gas/aarch64/sme2-i16i64-3.d | 133 + > gas/testsuite/gas/aarch64/sme2-i16i64-3.s | 135 + > .../gas/aarch64/sme2-i16i64-4-invalid.d | 3 + > .../gas/aarch64/sme2-i16i64-4-invalid.l | 11 + > .../gas/aarch64/sme2-i16i64-4-invalid.s | 12 + > .../gas/aarch64/sme2-i16i64-4-noarch.d | 3 + > .../gas/aarch64/sme2-i16i64-4-noarch.l | 21 + > gas/testsuite/gas/aarch64/sme2-i16i64-4.d | 29 + > gas/testsuite/gas/aarch64/sme2-i16i64-4.s | 21 + > gas/testsuite/gas/aarch64/sve-invalid.l | 24 +- > gas/testsuite/gas/aarch64/sve-invalid.s | 1 + > .../gas/aarch64/sve-sme2-1-invalid.d | 3 + > .../gas/aarch64/sve-sme2-1-invalid.l | 51 + > .../gas/aarch64/sve-sme2-1-invalid.s | 25 + > gas/testsuite/gas/aarch64/sve-sme2-1-noarch.d | 3 + > gas/testsuite/gas/aarch64/sve-sme2-1-noarch.l | 25 + > gas/testsuite/gas/aarch64/sve-sme2-1.d | 33 + > gas/testsuite/gas/aarch64/sve-sme2-1.s | 27 + > .../gas/aarch64/sve2-sme2-1-invalid.d | 3 + > .../gas/aarch64/sve2-sme2-1-invalid.l | 12 + > .../gas/aarch64/sve2-sme2-1-invalid.s | 12 + > .../gas/aarch64/sve2-sme2-1-noarch.d | 3 + > .../gas/aarch64/sve2-sme2-1-noarch.l | 33 + > gas/testsuite/gas/aarch64/sve2-sme2-1.d | 41 + > gas/testsuite/gas/aarch64/sve2-sme2-1.s | 35 + > .../gas/aarch64/sve2-sme2-2-invalid.d | 3 + > .../gas/aarch64/sve2-sme2-2-invalid.l | 25 + > .../gas/aarch64/sve2-sme2-2-invalid.s | 12 + > .../gas/aarch64/sve2-sme2-2-noarch.d | 3 + > .../gas/aarch64/sve2-sme2-2-noarch.l | 257 + > gas/testsuite/gas/aarch64/sve2-sme2-2.d | 265 + > gas/testsuite/gas/aarch64/sve2-sme2-2.s | 287 + > .../gas/aarch64/sve2-sme2-3-invalid.d | 3 + > .../gas/aarch64/sve2-sme2-3-invalid.l | 17 + > .../gas/aarch64/sve2-sme2-3-invalid.s | 15 + > .../gas/aarch64/sve2-sme2-3-noarch.d | 3 + > .../gas/aarch64/sve2-sme2-3-noarch.l | 29 + > gas/testsuite/gas/aarch64/sve2-sme2-3.d | 41 + > gas/testsuite/gas/aarch64/sve2-sme2-3.s | 35 + > .../gas/aarch64/sve2-sme2-4-invalid.d | 3 + > .../gas/aarch64/sve2-sme2-4-invalid.l | 17 + > .../gas/aarch64/sve2-sme2-4-invalid.s | 15 + > .../gas/aarch64/sve2-sme2-4-noarch.d | 3 + > .../gas/aarch64/sve2-sme2-4-noarch.l | 40 + > gas/testsuite/gas/aarch64/sve2-sme2-4.d | 54 + > gas/testsuite/gas/aarch64/sve2-sme2-4.s | 49 + > .../gas/aarch64/sve2-sme2-5-invalid.d | 3 + > .../gas/aarch64/sve2-sme2-5-invalid.l | 27 + > .../gas/aarch64/sve2-sme2-5-invalid.s | 12 + > .../gas/aarch64/sve2-sme2-5-noarch.d | 3 + > .../gas/aarch64/sve2-sme2-5-noarch.l | 13 + > gas/testsuite/gas/aarch64/sve2-sme2-5.d | 21 + > gas/testsuite/gas/aarch64/sve2-sme2-5.s | 14 + > .../gas/aarch64/sve2-sme2-6-invalid.d | 3 + > .../gas/aarch64/sve2-sme2-6-invalid.l | 20 + > .../gas/aarch64/sve2-sme2-6-invalid.s | 14 + > .../gas/aarch64/sve2-sme2-6-noarch.d | 3 + > .../gas/aarch64/sve2-sme2-6-noarch.l | 16 + > gas/testsuite/gas/aarch64/sve2-sme2-6.d | 24 + > gas/testsuite/gas/aarch64/sve2-sme2-6.s | 17 + > .../gas/aarch64/sve2-sme2-7-invalid.d | 3 + > .../gas/aarch64/sve2-sme2-7-invalid.l | 29 + > .../gas/aarch64/sve2-sme2-7-invalid.s | 9 + > .../gas/aarch64/sve2-sme2-7-noarch.d | 3 + > .../gas/aarch64/sve2-sme2-7-noarch.l | 16 + > gas/testsuite/gas/aarch64/sve2-sme2-7.d | 24 + > gas/testsuite/gas/aarch64/sve2-sme2-7.s | 17 + > gas/testsuite/gas/aarch64/system.d | 2 +- > include/opcode/aarch64.h | 107 +- > opcodes/aarch64-asm-2.c | 350 +- > opcodes/aarch64-asm.c | 153 +- > opcodes/aarch64-asm.h | 5 + > opcodes/aarch64-dis-2.c | 9561 +++++++++++++---- > opcodes/aarch64-dis.c | 171 +- > opcodes/aarch64-dis.h | 5 + > opcodes/aarch64-opc-2.c | 69 +- > opcodes/aarch64-opc.c | 526 +- > opcodes/aarch64-opc.h | 54 +- > opcodes/aarch64-tbl.h | 742 +- > 346 files changed, 36993 insertions(+), 2255 deletions(-) > create mode 100644 gas/testsuite/gas/aarch64/rprfm-1-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/rprfm-1-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/rprfm-1-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/rprfm-1.d > create mode 100644 gas/testsuite/gas/aarch64/rprfm-1.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-1-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-1-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-1-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-1-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-1-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-1.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-1.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-10-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-10-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-10-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-10-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-10-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-10.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-10.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-11-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-11-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-11-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-11-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-11-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-11.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-11.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-12-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-12-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-12-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-12-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-12-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-12.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-12.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-13-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-13-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-13-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-13-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-13-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-13.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-13.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-14-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-14-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-14-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-14-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-14-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-14.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-14.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-15-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-15-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-15-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-15-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-15-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-15.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-15.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-16-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-16-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-16-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-16-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-16-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-16.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-16.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-17-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-17-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-17-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-17-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-17-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-17.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-17.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-18-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-18-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-18-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-18-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-18-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-18.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-18.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-19-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-19-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-19-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-19-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-19-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-19.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-19.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-2-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-2-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-2-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-2-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-2-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-2.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-2.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-20-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-20-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-20-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-20-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-20-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-20.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-20.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-21-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-21-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-21-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-21-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-21-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-21.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-21.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-22-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-22-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-22-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-22-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-22-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-22.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-22.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-23-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-23-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-23-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-23-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-23-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-23.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-23.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-24-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-24-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-24-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-24-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-24-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-24.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-24.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-25-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-25-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-25-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-25-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-25-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-25.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-25.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-26-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-26-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-26-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-26-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-26-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-26.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-26.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-27-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-27-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-27-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-27-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-27-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-27.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-27.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-28-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-28-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-28-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-28-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-28-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-28.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-28.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-29-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-29-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-29-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-29-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-29-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-29.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-29.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-3-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-3-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-3-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-3-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-3-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-3.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-3.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-30-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-30-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-30-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-30-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-30-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-30.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-30.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-4-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-4-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-4-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-4-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-4-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-4.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-4.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-5-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-5-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-5-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-5-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-5-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-5.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-5.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-6-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-6-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-6-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-6-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-6-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-6.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-6.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-7-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-7-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-7-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-7-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-7-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-7.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-7.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-8-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-8-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-8-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-8-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-8-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-8.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-8.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-9-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-9-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-9-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-9-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-9-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-9.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-9.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-1.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-f64f64-2.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-1.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-2.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-3.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4.d > create mode 100644 gas/testsuite/gas/aarch64/sme2-i16i64-4.s > create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1.d > create mode 100644 gas/testsuite/gas/aarch64/sve-sme2-1.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-1.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-2.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-3.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-4.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-5.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-6.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-invalid.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-invalid.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-invalid.s > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-noarch.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7-noarch.l > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7.d > create mode 100644 gas/testsuite/gas/aarch64/sve2-sme2-7.s >
Jan Beulich <jbeulich@suse.com> writes: > On 30.03.2023 12:26, Richard Sandiford via Binutils wrote: >> Richard Sandiford (31): >> aarch64: Add +sme2 >> aarch64: Add a _10 suffix to FLD_imm3 >> aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array >> aarch64: Add support for vgx2 and vgx4 >> aarch64; Add support for vector offset ranges >> aarch64: Add support for predicate-as-counter registers >> aarch64: Add the SME2 MOVA instructions >> aarch64: Add the SME2 multivector LD1 and ST1 instructions > > Less than a 3rd of the patches in this series have made it to my mailbox > (and the list archives), so commenting on e.g. the one above is difficult. Yeah, they got held up in moderation due to the size. > Nevertheless - according to the documentation LD1x (scalar plus immediate, > consecutive registers) and their LDNT1x, ST1x, and STNT1x counterparts > are (unlike the strided forms) SVE2.1 insns, not SME2 ones (IOW it looks > as if the use of SME2_INSN() there is wrong, unless the documentation is > categorizing these incorrectly). They're both (but we haven't added SVE2p1 to binutils yet). E.g. see the pseudocode in: https://developer.arm.com/documentation/ddi0602/2022-12/SVE-Instructions/LD1B--scalar-plus-immediate--consecutive-registers---Contiguous-load-of-bytes-to-multiple-consecutive-vectors--immediate-index--?lang=en where the condition is: if !HaveSME2() && !HaveSVE2p1() then UNDEFINED; Chronologically, SME2 predates SVE2p1. Thanks, Richard
Jan Beulich <jbeulich@suse.com> writes: > On 30.03.2023 12:26, Richard Sandiford via Binutils wrote: >> This series of patches adds SME2 support to the AArch64 backend. >> Details on SME2 are available here: >> >> https://developer.arm.com/documentation/ddi0602/2022-12/SME-Instructions >> >> Tested on aarch64-linux-gnu, and via automatic cross-checking >> against the architecture description and the LLVM implementation. >> >> I've pushed the series under GWP, but I'm more than happy >> to update/adjust/fix based on post-commit review, so please >> let me know if you spot anything you think should be changed. >> >> Thanks, >> Richard >> >> >> Richard Sandiford (31): >> aarch64: Add +sme2 >> aarch64: Add a _10 suffix to FLD_imm3 >> aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array >> aarch64: Add support for vgx2 and vgx4 >> aarch64; Add support for vector offset ranges >> aarch64: Add support for predicate-as-counter registers > > Shouldn't the (alias) insn forms added here all use SME2_INSN()? It > doesn't seem to make sense to permit them with ".arch_extension sme". That's deliberate (and it's deliberate for the SVE instructions like PFALSE too). The base requirements in the table come from the underlying architectural requirements. In this case, the instructions are unchanged, and so the FEAT_* requirements are the same. Accepting predicate-as-counter registers is just a syntactic convenience. It's true that, without SME2 (or SVE2p1) you might not be able to do much with the predicate-as-counter registers except move, load and store them. But that doesn't make those operations invalid (and so something that the assembler must reject). Thanks, Richard
On 03.04.2023 10:05, Richard Sandiford wrote: > Jan Beulich <jbeulich@suse.com> writes: >> On 30.03.2023 12:26, Richard Sandiford via Binutils wrote: >>> Richard Sandiford (31): >>> aarch64: Add +sme2 >>> aarch64: Add a _10 suffix to FLD_imm3 >>> aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array >>> aarch64: Add support for vgx2 and vgx4 >>> aarch64; Add support for vector offset ranges >>> aarch64: Add support for predicate-as-counter registers >>> aarch64: Add the SME2 MOVA instructions >>> aarch64: Add the SME2 multivector LD1 and ST1 instructions >> >> Less than a 3rd of the patches in this series have made it to my mailbox >> (and the list archives), so commenting on e.g. the one above is difficult. > > Yeah, they got held up in moderation due to the size. > >> Nevertheless - according to the documentation LD1x (scalar plus immediate, >> consecutive registers) and their LDNT1x, ST1x, and STNT1x counterparts >> are (unlike the strided forms) SVE2.1 insns, not SME2 ones (IOW it looks >> as if the use of SME2_INSN() there is wrong, unless the documentation is >> categorizing these incorrectly). > > They're both (but we haven't added SVE2p1 to binutils yet). > E.g. see the pseudocode in: > > https://developer.arm.com/documentation/ddi0602/2022-12/SVE-Instructions/LD1B--scalar-plus-immediate--consecutive-registers---Contiguous-load-of-bytes-to-multiple-consecutive-vectors--immediate-index--?lang=en > > where the condition is: > > if !HaveSME2() && !HaveSVE2p1() then UNDEFINED; > > Chronologically, SME2 predates SVE2p1. Yet aiui dependency-wise, like SVE2 is a prereq to SME, SVE2.1 is going to be viewed as a prereq to SVE2.1? In which case enabling SVE2.1 alone ought to be sufficient to use these insns? Which would mean all of these (there are quite a few more) would need touching again. Jan
Jan Beulich <jbeulich@suse.com> writes: > On 03.04.2023 10:05, Richard Sandiford wrote: >> Jan Beulich <jbeulich@suse.com> writes: >>> On 30.03.2023 12:26, Richard Sandiford via Binutils wrote: >>>> Richard Sandiford (31): >>>> aarch64: Add +sme2 >>>> aarch64: Add a _10 suffix to FLD_imm3 >>>> aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array >>>> aarch64: Add support for vgx2 and vgx4 >>>> aarch64; Add support for vector offset ranges >>>> aarch64: Add support for predicate-as-counter registers >>>> aarch64: Add the SME2 MOVA instructions >>>> aarch64: Add the SME2 multivector LD1 and ST1 instructions >>> >>> Less than a 3rd of the patches in this series have made it to my mailbox >>> (and the list archives), so commenting on e.g. the one above is difficult. >> >> Yeah, they got held up in moderation due to the size. >> >>> Nevertheless - according to the documentation LD1x (scalar plus immediate, >>> consecutive registers) and their LDNT1x, ST1x, and STNT1x counterparts >>> are (unlike the strided forms) SVE2.1 insns, not SME2 ones (IOW it looks >>> as if the use of SME2_INSN() there is wrong, unless the documentation is >>> categorizing these incorrectly). >> >> They're both (but we haven't added SVE2p1 to binutils yet). >> E.g. see the pseudocode in: >> >> https://developer.arm.com/documentation/ddi0602/2022-12/SVE-Instructions/LD1B--scalar-plus-immediate--consecutive-registers---Contiguous-load-of-bytes-to-multiple-consecutive-vectors--immediate-index--?lang=en >> >> where the condition is: >> >> if !HaveSME2() && !HaveSVE2p1() then UNDEFINED; >> >> Chronologically, SME2 predates SVE2p1. > > Yet aiui dependency-wise, like SVE2 is a prereq to SME, SVE2.1 is going > to be viewed as a prereq to SVE2.1? Do you mean SVE2p1 being a prereq to SME2? If so, no. FEAT_SME2 && !FEAT_SVE2p1 is a valid combination, and in that case, these instructions will only be available in streaming mode. The way the pseudo expresses this is: if HaveSVE2p1() then CheckSVEEnabled(); else CheckStreamingSVEEnabled(); > In which case enabling SVE2.1 alone > ought to be sufficient to use these insns? Which would mean all of these > (there are quite a few more) would need touching again. When SVE2p1 is added, we'll need to make these instructions available whenever SVE2p1 or SME2 is enabled. It didn't seem worth preempting that by adding SVE2p1 stuff in this series, not least because it wouldn't be testable. But it should be a simple enough change. Thanks, Richard
On 03.04.2023 10:27, Richard Sandiford wrote: > Jan Beulich <jbeulich@suse.com> writes: >> On 03.04.2023 10:05, Richard Sandiford wrote: >>> Jan Beulich <jbeulich@suse.com> writes: >>>> On 30.03.2023 12:26, Richard Sandiford via Binutils wrote: >>>>> Richard Sandiford (31): >>>>> aarch64: Add +sme2 >>>>> aarch64: Add a _10 suffix to FLD_imm3 >>>>> aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array >>>>> aarch64: Add support for vgx2 and vgx4 >>>>> aarch64; Add support for vector offset ranges >>>>> aarch64: Add support for predicate-as-counter registers >>>>> aarch64: Add the SME2 MOVA instructions >>>>> aarch64: Add the SME2 multivector LD1 and ST1 instructions >>>> >>>> Less than a 3rd of the patches in this series have made it to my mailbox >>>> (and the list archives), so commenting on e.g. the one above is difficult. >>> >>> Yeah, they got held up in moderation due to the size. >>> >>>> Nevertheless - according to the documentation LD1x (scalar plus immediate, >>>> consecutive registers) and their LDNT1x, ST1x, and STNT1x counterparts >>>> are (unlike the strided forms) SVE2.1 insns, not SME2 ones (IOW it looks >>>> as if the use of SME2_INSN() there is wrong, unless the documentation is >>>> categorizing these incorrectly). >>> >>> They're both (but we haven't added SVE2p1 to binutils yet). >>> E.g. see the pseudocode in: >>> >>> https://developer.arm.com/documentation/ddi0602/2022-12/SVE-Instructions/LD1B--scalar-plus-immediate--consecutive-registers---Contiguous-load-of-bytes-to-multiple-consecutive-vectors--immediate-index--?lang=en >>> >>> where the condition is: >>> >>> if !HaveSME2() && !HaveSVE2p1() then UNDEFINED; >>> >>> Chronologically, SME2 predates SVE2p1. >> >> Yet aiui dependency-wise, like SVE2 is a prereq to SME, SVE2.1 is going >> to be viewed as a prereq to SVE2.1? > > Do you mean SVE2p1 being a prereq to SME2? If so, no. FEAT_SME2 > && !FEAT_SVE2p1 is a valid combination, and in that case, these > instructions will only be available in streaming mode. The way the > pseudo expresses this is: > > if HaveSVE2p1() then CheckSVEEnabled(); else CheckStreamingSVEEnabled(); That's different from the SME <-> SVE2 relationship then? Or is that dependency wrong in tc-aarch64.c:aarch64_features[]? Jan
Jan Beulich <jbeulich@suse.com> writes: > On 03.04.2023 10:27, Richard Sandiford wrote: >> Jan Beulich <jbeulich@suse.com> writes: >>> On 03.04.2023 10:05, Richard Sandiford wrote: >>>> Jan Beulich <jbeulich@suse.com> writes: >>>>> On 30.03.2023 12:26, Richard Sandiford via Binutils wrote: >>>>>> Richard Sandiford (31): >>>>>> aarch64: Add +sme2 >>>>>> aarch64: Add a _10 suffix to FLD_imm3 >>>>>> aarch64: Add _off4 suffix to AARCH64_OPND_SME_ZA_array >>>>>> aarch64: Add support for vgx2 and vgx4 >>>>>> aarch64; Add support for vector offset ranges >>>>>> aarch64: Add support for predicate-as-counter registers >>>>>> aarch64: Add the SME2 MOVA instructions >>>>>> aarch64: Add the SME2 multivector LD1 and ST1 instructions >>>>> >>>>> Less than a 3rd of the patches in this series have made it to my mailbox >>>>> (and the list archives), so commenting on e.g. the one above is difficult. >>>> >>>> Yeah, they got held up in moderation due to the size. >>>> >>>>> Nevertheless - according to the documentation LD1x (scalar plus immediate, >>>>> consecutive registers) and their LDNT1x, ST1x, and STNT1x counterparts >>>>> are (unlike the strided forms) SVE2.1 insns, not SME2 ones (IOW it looks >>>>> as if the use of SME2_INSN() there is wrong, unless the documentation is >>>>> categorizing these incorrectly). >>>> >>>> They're both (but we haven't added SVE2p1 to binutils yet). >>>> E.g. see the pseudocode in: >>>> >>>> https://developer.arm.com/documentation/ddi0602/2022-12/SVE-Instructions/LD1B--scalar-plus-immediate--consecutive-registers---Contiguous-load-of-bytes-to-multiple-consecutive-vectors--immediate-index--?lang=en >>>> >>>> where the condition is: >>>> >>>> if !HaveSME2() && !HaveSVE2p1() then UNDEFINED; >>>> >>>> Chronologically, SME2 predates SVE2p1. >>> >>> Yet aiui dependency-wise, like SVE2 is a prereq to SME, SVE2.1 is going >>> to be viewed as a prereq to SVE2.1? >> >> Do you mean SVE2p1 being a prereq to SME2? If so, no. FEAT_SME2 >> && !FEAT_SVE2p1 is a valid combination, and in that case, these >> instructions will only be available in streaming mode. The way the >> pseudo expresses this is: >> >> if HaveSVE2p1() then CheckSVEEnabled(); else CheckStreamingSVEEnabled(); > > That's different from the SME <-> SVE2 relationship then? Or is that > dependency wrong in tc-aarch64.c:aarch64_features[]? Yeah, it's a different relationship from SME <-> SVE2. For one thing, SVE2p1 includes things that SME2 doesn't, such as: https://developer.arm.com/documentation/ddi0602/2022-12/SVE-Instructions/ADDQV--Unsigned-add-reduction-of-quadword-vector-segments-?lang=en FEAT_SME && !FEAT_SVE is architecturally valid, but we took the decision not to support it for tools. The rule that +sme implies +sve2 is therefore a software requirement rather than an ISA requirement. Thanks, Richard