From patchwork Thu Mar 30 10:23:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 7454 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1021055vqo; Thu, 30 Mar 2023 03:24:26 -0700 (PDT) X-Google-Smtp-Source: AKy350YpoX6aACNG4QcMX3mW2lwcX6yck6ifQqgKYmO+iYjNuSfJfYrKyrfZ7eu24KpGm3IlcBE9 X-Received: by 2002:aa7:d814:0:b0:502:1c7d:deb6 with SMTP id v20-20020aa7d814000000b005021c7ddeb6mr20878462edq.29.1680171866043; Thu, 30 Mar 2023 03:24:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680171866; cv=none; d=google.com; s=arc-20160816; b=dOgJa27uf3103npStUnkaF7KlsEu97GWjgxRblP9EaTKuPuTkLXvOX8cvVDtjDkErz UMQ/Y6C0dB2kxQVMCTkJ0VJQi0e+/gjzeyT+HROLFx9qMAf+JtsogWeoYkQfmBsddv8I XwnYvb04J6Cpbsv9ZUycvc4q3tjogHAFQTtoBmRP6wotCGx1fMaW2f8ttph+3nf4G2Cb ByRyJSe10vn7CTHfH8IytEngDjeDs/33UjWFCs2p1q5jJO6dkIz2XocuQEwHJEWQp45B aIPaRrq5qrx3dCBvy2NcBz35CoK1PQ8iBRDVBwOGo7eQz6g5dScLQlusLv8HsOXMlW69 Iwww== 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=PiPUjFWpH7RxsI7xjuIW4xpMMslfMjLRk//ebHSAwvE=; b=dCARGdOiIyK3wPTcA34I9M/NHpX02Gcc6R295X3PzvIF0MqZt/9IJMGwtDOVAJ0J7J LhfIifsttlvbe2BTObzm1yL0LEqOePx0not278BmlfP+nL8RxmGIaYSGNpzyKLtBF2+/ uGQ1q4j55IXjviC0VIxc/NNJX4J/q3pJWiPPElw6JCLRZ3fm+7rS3KCqYjH3IJyxT9YL bsIljIOUaOHBKtgt8rWZ2zdBFOjsjMw5JiSj/lLtzVuw2ZQGEWZe7IDX3MMd/9idIvGB 3pd0U8lf3RJNbb0CNle4QmBDbT1LDCnWqlhQtTNBAF4hrCKLst3GgLnRn9+qfolv1Tv8 IM+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=EM1TjpL4; 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 w14-20020aa7dcce000000b004ace3a42dc2si36018450edu.356.2023.03.30.03.24.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Mar 2023 03:24:26 -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=EM1TjpL4; 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 AD77B3858404 for ; Thu, 30 Mar 2023 10:24:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AD77B3858404 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1680171864; bh=PiPUjFWpH7RxsI7xjuIW4xpMMslfMjLRk//ebHSAwvE=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=EM1TjpL4DwBodwZVWlBh2UxxneEQPJTXvAkx9cnhFCw45cBmi0sF0X+5wmfw6f4nc iODEzvo/0VwZRAw5lsi6ZmsYUYLWiYw92zUzLbbS8OdkRcRFWzFO8b/eaBsq7116gc IqKD2WVVYs1plr3tzQOfEQnaDmFz/V7pkkR5ASSA= 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 025DE3858CDA for ; Thu, 30 Mar 2023 10:24:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 025DE3858CDA 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 0E1212F4; Thu, 30 Mar 2023 03:24:59 -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 43CF23F663; Thu, 30 Mar 2023 03:24:14 -0700 (PDT) To: binutils@sourceware.org Cc: Richard Sandiford Subject: [PATCH 00/43] aarch64: Groundwork for SME2 support Date: Thu, 30 Mar 2023 11:23:16 +0100 Message-Id: <20230330102359.3327695-1-richard.sandiford@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Spam-Status: No, score=-27.4 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Sandiford via Binutils From: Richard Sandiford Reply-To: Richard Sandiford Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761787894369622687?= X-GMAIL-MSGID: =?utf-8?q?1761787894369622687?= This series of patches lays some groundwork for the aarch64 SME2 support. It's a bit of a mixed bag, but most of the patches fall into two groups: - Try to improve the error messages reported for invalid asm. - Reorganise the code in ways that makes SME2 easier to add. Each patch really stands alone, with its own justification. I just thought it was worth lumping them into a series for organisation reasons. Sorry that it's quite long. Tested on aarch64-linux-gnu & pushed under GWP. I'm more than happy to update/adjust/fix based on post-commit review though, so please let me know if you spot anything you think should be changed. Thanks, Richard Richard Sandiford (43): aarch64: Fix PSEL opcode mask aarch64: Restrict range of PRFM opcodes aarch64: Fix SVE2 register/immediate distinction aarch64: Make SME instructions use F_STRICT aarch64: Use aarch64_operand_error more widely aarch64: Rename REG_TYPE_ZA* to REG_TYPE_ZAT* aarch64: Add REG_TYPE_ZATHV aarch64: Move vectype_to_qualifier further up aarch64: Rework parse_typed_reg interface aarch64: Reuse parse_typed_reg for ZA tiles aarch64: Consolidate ZA tile range checks aarch64: Treat ZA as a register aarch64: Rename za_tile_vector to za_index aarch64: Make indexed_za use 64-bit immediates aarch64: Pass aarch64_indexed_za to parsers aarch64: Move ZA range checks to aarch64-opc.c aarch64: Consolidate ZA slice parsing aarch64: Commonise index parsing aarch64: Move w12-w15 range check to libopcodes aarch64: Tweak error for missing immediate offset aarch64: Tweak errors for base & offset registers aarch64: Tweak parsing of integer & FP registers aarch64: Improve errors for malformed register lists aarch64: Try to avoid inappropriate default errors aarch64: Rework reporting of failed register checks aarch64: Update operand_mismatch_kind_names aarch64: Deprioritise AARCH64_OPDE_REG_LIST aarch64: Add an error code for out-of-range registers aarch64: Commonise checks for index operands aarch64: Add an operand class for SVE register lists aarch64: Make AARCH64_OPDE_REG_LIST take a bitfield aarch64: Tweak register list errors aarch64: Try to report invalid variants against the closest match aarch64: Tweak priorities of parsing-related errors aarch64: Rename aarch64-tbl.h OP_SME_* macros aarch64: Reorder some OP_SVE_* macros aarch64: Add a aarch64_cpu_supports_inst_p helper aarch64: Rename some of GAS's REG_TYPE_* macros aarch64: Regularise FLD_* suffixes aarch64: Resync field names aarch64: Sort fields alphanumerically aarch64: Add support for strided register lists aarch64: Prefer register ranges & support wrapping gas/config/tc-aarch64.c | 1729 +++++++++-------- .../aarch64/armv8_2-a-crypto-fp16-illegal.l | 6 +- gas/testsuite/gas/aarch64/diagnostic.l | 49 +- gas/testsuite/gas/aarch64/diagnostic.s | 23 + gas/testsuite/gas/aarch64/illegal-bfloat16.l | 40 +- gas/testsuite/gas/aarch64/illegal-fjcvtzs.l | 6 +- gas/testsuite/gas/aarch64/illegal-ldapr.l | 6 +- gas/testsuite/gas/aarch64/illegal-ldraa.l | 8 +- gas/testsuite/gas/aarch64/illegal-lse.l | 456 ++--- gas/testsuite/gas/aarch64/illegal-memtag.l | 70 +- gas/testsuite/gas/aarch64/illegal-sve2.l | 1709 ++++++++-------- gas/testsuite/gas/aarch64/illegal-sve2.s | 5 + gas/testsuite/gas/aarch64/illegal.l | 6 +- gas/testsuite/gas/aarch64/illegal.s | 5 + gas/testsuite/gas/aarch64/legacy_reg_names.l | 4 +- gas/testsuite/gas/aarch64/mops_invalid.l | 112 +- .../gas/aarch64/neon-vfp-reglist-post.d | 184 +- gas/testsuite/gas/aarch64/neon-vfp-reglist.d | 100 +- gas/testsuite/gas/aarch64/reglist-1.d | 21 + gas/testsuite/gas/aarch64/reglist-1.s | 15 + gas/testsuite/gas/aarch64/reglist-2.d | 3 + gas/testsuite/gas/aarch64/reglist-2.l | 8 + gas/testsuite/gas/aarch64/reglist-2.s | 7 + gas/testsuite/gas/aarch64/sme-2-illegal.l | 42 +- gas/testsuite/gas/aarch64/sme-3-illegal.l | 20 +- gas/testsuite/gas/aarch64/sme-4-illegal.l | 54 +- gas/testsuite/gas/aarch64/sme-4-illegal.s | 12 + gas/testsuite/gas/aarch64/sme-5-illegal.l | 91 +- gas/testsuite/gas/aarch64/sme-5-illegal.s | 7 + gas/testsuite/gas/aarch64/sme-6-illegal.l | 82 +- gas/testsuite/gas/aarch64/sme-7-illegal.l | 51 +- gas/testsuite/gas/aarch64/sme-7-illegal.s | 15 + gas/testsuite/gas/aarch64/sme-8-illegal.l | 12 +- gas/testsuite/gas/aarch64/sme-9-illegal.l | 37 +- gas/testsuite/gas/aarch64/sme-9-illegal.s | 7 + gas/testsuite/gas/aarch64/sme-9.d | 3 + gas/testsuite/gas/aarch64/sme-9.s | 5 + gas/testsuite/gas/aarch64/sme-illegal.l | 119 +- gas/testsuite/gas/aarch64/sme-illegal.s | 1 + gas/testsuite/gas/aarch64/sve-invalid.l | 44 +- gas/testsuite/gas/aarch64/sve-invalid.s | 7 + .../gas/aarch64/sve-reg-diagnostic.l | 16 +- gas/testsuite/gas/aarch64/sve.d | 1612 +++++++-------- gas/testsuite/gas/aarch64/sve2.d | 30 +- gas/testsuite/gas/aarch64/system.d | 18 +- gas/testsuite/gas/aarch64/system.s | 5 + gas/testsuite/gas/aarch64/tme-invalid.l | 6 +- gas/testsuite/gas/aarch64/verbose-error.l | 2 +- include/opcode/aarch64.h | 91 +- opcodes/aarch64-asm.c | 30 +- opcodes/aarch64-dis.c | 133 +- opcodes/aarch64-opc-2.c | 38 +- opcodes/aarch64-opc.c | 456 +++-- opcodes/aarch64-opc.h | 167 +- opcodes/aarch64-tbl.h | 263 ++- 55 files changed, 4260 insertions(+), 3788 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/reglist-1.d create mode 100644 gas/testsuite/gas/aarch64/reglist-1.s create mode 100644 gas/testsuite/gas/aarch64/reglist-2.d create mode 100644 gas/testsuite/gas/aarch64/reglist-2.l create mode 100644 gas/testsuite/gas/aarch64/reglist-2.s