From patchwork Thu Mar 30 10:23:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sandiford X-Patchwork-Id: 77016 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1021127vqo; Thu, 30 Mar 2023 03:24:37 -0700 (PDT) X-Google-Smtp-Source: AKy350Zp3zCthxT0mhZ8sWq3z3ZoLz6ddp/qPaxYARvK8pDyzZ+CB1ACkQ8GnJcW7pVmgFP6Oej5 X-Received: by 2002:a17:906:719b:b0:926:fce:c080 with SMTP id h27-20020a170906719b00b009260fcec080mr22063642ejk.17.1680171877779; Thu, 30 Mar 2023 03:24:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680171877; cv=none; d=google.com; s=arc-20160816; b=fmNnbf43gwWbP79RaD1uPvcZZOF8opoHPz00n2KBUTECnu36ASTn2Xpu3DdE6rtaPJ r112PlIA4ov6bEOec5HBmCAqoJHkDjdSv0JYuHGY4sA2XjxqK0sckJcbD8SyqwOU9ctc AAhR11+X+ByN2ICnSeZc1IZ7b/HQV9ihlYQpFS+cbnyVX/C5bjlrpOSLQYcdnbh9uTqE N3mB8zsZRQ+jMg0dw4ZH/y+ZuhDs7nvOskd8MFijQaN2HU0tRoa2kBj3qp2A6rwcCKiI +4q7mabVh++J+NDKSjmkXQOORoIkrowyDcr3FtLQpnM2YaOW2bmrsiYn8UKFUzT97y1r 42Eg== 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:references:in-reply-to :message-id:date:subject:cc:to:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=BpPiI/zQ0YGCY+23SiCKS9q6Pwno5fTeLY8R7k0p6kM=; b=Cj8F8pFflaFwBvhJ3VR/vBmPwrdCiy5EMst3HAhU8PeSEbq7eFChg4HHPENyrpH8Eo eRloKljEdlgHSf8qTIm7bHP2kMIiNWOTHZrBfNbdvrzFC6+KMBtYhuMOszqklVZnQEL0 8xRon9NaLMAuJw/tA40uL7xnI719E0rA4lN3ASxa9Ts0TPohtejzQW5niznz8521TU7U sIrI/bSB2eeCX+y5RTE0rXkiwxYhCg6cefviOC9aN9sDlXe5b0ySIij7CR0DWTNBsbF2 zxHijJk47+OGzFwtVCL1UL38pGuTJ4TfA/pnpT3SxfY0AaSByG9bbAnV1ekODYxXKBxj q7Mg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=HSx1Bxds; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id j12-20020a170906474c00b0092ff0294c61si36085726ejs.710.2023.03.30.03.24.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Mar 2023 03:24:37 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=HSx1Bxds; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C2EC23857835 for ; Thu, 30 Mar 2023 10:24:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C2EC23857835 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1680171875; bh=BpPiI/zQ0YGCY+23SiCKS9q6Pwno5fTeLY8R7k0p6kM=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=HSx1BxdsOAMkH1np8EoMTQthQ7jl3GZHLXPb544AzcpZ4gTwOFw34N5t7C+hdjc4F icLe+h6bAdax+xwqYXgdcthpXU4B38ZUCO5FM4cke8TXOID8CBy9WKOhCt2cR3g1DO 9RNl/4hLl9tAz0vcyLbpFnUYXrfY4WF1xtJ9r8yo= 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 4AF773858C53 for ; Thu, 30 Mar 2023 10:24:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4AF773858C53 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 1829C2F4; Thu, 30 Mar 2023 03:25:01 -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 4F6033F663; Thu, 30 Mar 2023 03:24:16 -0700 (PDT) To: binutils@sourceware.org Cc: Richard Sandiford Subject: [PATCH 03/43] aarch64: Fix SVE2 register/immediate distinction Date: Thu, 30 Mar 2023 11:23:19 +0100 Message-Id: <20230330102359.3327695-4-richard.sandiford@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230330102359.3327695-1-richard.sandiford@arm.com> References: <20230330102359.3327695-1-richard.sandiford@arm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-33.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Sandiford via Binutils From: Richard Sandiford Reply-To: Richard Sandiford Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761787906937088614?= X-GMAIL-MSGID: =?utf-8?q?1761787906937088614?= GAS refuses to interpret register names like x0 as unadorned immediates, due to the obvious potential for confusion with register operands. (An explicit #x0 is OK.) For compatibility reasons, we can't extend the set of registers that GAS rejects for existing instructions. For example: mov x0, z0 was valid code before SVE was added, so it needs to stay valid code even when SVE is enabled. But we can make GAS reject newer registers in newer instructions. The SVE instruction: and z0.s, z0.s, z0.h is therefore invalid, rather than z0.h being an immediate. This patch extends the SVE behaviour to SVE2. The old call to AARCH64_CPU_HAS_FEATURE was technically the wrong way around, although it didn't matter in practice for base SVE instructions since their avariants only set SVE. --- gas/config/tc-aarch64.c | 4 +++- gas/testsuite/gas/aarch64/illegal-sve2.l | 7 +++++++ gas/testsuite/gas/aarch64/illegal-sve2.s | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index eb28ea3dce2..67b0e61a7ff 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -6350,7 +6350,9 @@ parse_operands (char *str, const aarch64_opcode *opcode) clear_error (); skip_whitespace (str); - if (AARCH64_CPU_HAS_FEATURE (AARCH64_FEATURE_SVE, *opcode->avariant)) + if (AARCH64_CPU_HAS_ANY_FEATURES (*opcode->avariant, + AARCH64_FEATURE_SVE + | AARCH64_FEATURE_SVE2)) imm_reg_type = REG_TYPE_R_Z_SP_BHSDQ_VZP; else imm_reg_type = REG_TYPE_R_Z_BHSDQ_V; diff --git a/gas/testsuite/gas/aarch64/illegal-sve2.l b/gas/testsuite/gas/aarch64/illegal-sve2.l index 7656c2f91b1..c3ef21aa6d9 100644 --- a/gas/testsuite/gas/aarch64/illegal-sve2.l +++ b/gas/testsuite/gas/aarch64/illegal-sve2.l @@ -3328,3 +3328,10 @@ [^ :]+:[0-9]+: Error: immediate value out of range 1 to 32 at operand 4 -- `xar z0\.s,z0\.s,z0\.s,#0' [^ :]+:[0-9]+: Error: immediate value out of range 1 to 32 at operand 4 -- `xar z0\.s,z0\.s,z0\.s,#33' [^ :]+:[0-9]+: Error: immediate value out of range 1 to 64 at operand 4 -- `xar z0\.d,z0\.d,z0\.d,#0' +[^ :]+:[0-9]+: Error: operand mismatch -- `sqshl z1\.s,p0/m,z1\.s,z0\.h' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: sqshl z1\.s, p0/m, z1\.s, z0\.s +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: sqshl z1\.b, p0/m, z1\.b, z0\.b +[^ :]+:[0-9]+: Info: sqshl z1\.h, p0/m, z1\.h, z0\.h +[^ :]+:[0-9]+: Info: sqshl z1\.d, p0/m, z1\.d, z0\.d diff --git a/gas/testsuite/gas/aarch64/illegal-sve2.s b/gas/testsuite/gas/aarch64/illegal-sve2.s index 8ad7fbf1d1b..3f3602a8474 100644 --- a/gas/testsuite/gas/aarch64/illegal-sve2.s +++ b/gas/testsuite/gas/aarch64/illegal-sve2.s @@ -2072,3 +2072,6 @@ xar z0.s, z0.s, z0.s, #0 xar z0.s, z0.s, z0.s, #33 xar z0.d, z0.d, z0.d, #0 xar z0.d, z0.d, z0.d, #64 + +.equ z0.h, 1 +sqshl z1.s, p0/m, z1.s, z0.h