From patchwork Fri Feb 23 13:57:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinath Parvathaneni X-Patchwork-Id: 205401 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp598103dyb; Fri, 23 Feb 2024 05:58:29 -0800 (PST) X-Forwarded-Encrypted: i=5; AJvYcCV4czZFYOIbZqeCfh1J2qVhvuihD632pDi5bXrdqIEkaothTHOG1Z5e8XZPacNTQ40Da7YZ8MNPmp6gOkqfIyuvmvrodw== X-Google-Smtp-Source: AGHT+IHaMhQvWee9AXzCbpoBjM0pdhGUK5e1QCqpccWtOUnLJimrjseVSoVHPpHeuZ4U5Mf/gjqJ X-Received: by 2002:a05:622a:189e:b0:42e:5a9f:9f83 with SMTP id v30-20020a05622a189e00b0042e5a9f9f83mr2499194qtc.29.1708696709528; Fri, 23 Feb 2024 05:58:29 -0800 (PST) ARC-Seal: i=4; a=rsa-sha256; t=1708696709; cv=pass; d=google.com; s=arc-20160816; b=e950lAHT/h3HhizZ4Dg158jwaDqrzcRXrzthWjYNRX6JIGFF4oUw6qC2uSJt5ipi0d m+1l4Y58P+iUkS6AcsK/tnA/I819mvwXOtJvWNQc1LYCoo4nkFculxUk86y71eTDFEsc yQ5iy1cfUodOcA3flLHozoU63n146rSXcfK3Dyf0/0YUhfDA1pT16iepl+goqkIueRUZ 2YXd5PTFE/APXu8ee88+OSPB9Sm3MctNlBo6X+fgecnSpBQpbijrx+c1XC+nPj7k+CIf jEHDiEuLzauUV1Hb9q9HaT2M68xKcSimHhD0VSoxK6++IbpJFg2+O1orksAfuFLM0VLu bpQg== ARC-Message-Signature: i=4; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:original-authentication-results :nodisclaimer:mime-version:subject:from:cc:to:content-language :user-agent:date:message-id:authentication-results-original :dkim-signature:dkim-signature:arc-filter:dmarc-filter:delivered-to; bh=QVIfhqeVWm7b/8pAFdOvSMc7ae88iB5Tdp635GT5uQA=; fh=oHQcowx0PqdvnOhAQTfCPRiT71YN2xQJogN0YbQDinU=; b=itwZUldBqlJOiOTyLU70yvE6hO3Uwdb9MGIJtFQO/CqmNGoYuJS2ySfVloJHtcJCuq vVQYDaySkwUwBpZMSTjHfb8+O/h5NM3d3xw8NYRZcKjc1G1dZWqYRkPv0UvOATDyuPsa 3Qh7+SK79qtuEQki+d9pdrVrtbNyF5KYBNGdrAqBxCSxx/oe6Yf7pbtdMalBpIcgrtTJ /8cj8OKh9zsAhTbfZDhcBfRA/9ogCAmE36aHvlJUxRI71OMqHprC/eW5XivBYdyx/2+S AmiFJrtSsrTzUeEZOSCfJhm8YXVLxsLxn3GnNJg/LADMPA4Jmzow9dK6+lDh/nVNmRWY earg==; dara=google.com ARC-Authentication-Results: i=4; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=znOpdVU3; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=znOpdVU3; arc=pass (i=3); 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id t18-20020a05622a149200b0042e5ed3de48si1654068qtx.223.2024.02.23.05.58.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Feb 2024 05:58:29 -0800 (PST) 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=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=znOpdVU3; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=znOpdVU3; arc=pass (i=3); 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 359A2385842D for ; Fri, 23 Feb 2024 13:58:29 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2056.outbound.protection.outlook.com [40.107.21.56]) by sourceware.org (Postfix) with ESMTPS id D225F385842A for ; Fri, 23 Feb 2024 13:58:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D225F385842A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D225F385842A Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.56 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1708696697; cv=pass; b=gHoxXQpk+Wzq1a4A8cwuEMrsIBAJTxuOXHDCNuytZPzIC0YRZVRTtUqt+Xki0ORrJTn5FVnl1r8bq+Reo2Mq5bL1KCftkX0JPZOmG1Bc2SZCBYjxrzpIRLQYAtaw7++/EpCKztDfDsCP6pI25hK7DIV0C9RjSSzewpH4E1AFCtE= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1708696697; c=relaxed/simple; bh=DXHvJJiHpjiCxH4+BT2EeU12/GdwPSB28nZVxC7hP0c=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:To:From:Subject: MIME-Version; b=dVwloNUopIYgLzkwwqPqMFHtYZfxK0a1iFq/tjfu8K3WeXpM7wtc5t50Lh0hb1im3Y7OYf37Er1taOsY+iz0Fpm7PMfuIUPX2RLAlZ40EE46yLkOthuUvR24CK5W6yUAQK1C9+iOBkYtKrSOlkO0PPt/Ff5pZBQgtHUJegQ9zQo= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=mxWokYRqlZagXPsoAbvHkmMcURvEejwdc38emqRj54w7KbCkjeVCK3POa9O1tZSajJjZA2FDeNKDbGJ+UsAGHFtKTq0UXSzRk9Xsv1xYhTTSZEj0QvVS/hRC9M6R0SkB6PQszGeYvz/geLxf1ZXJTICmT7VsW2Ht+AMqtEl5ETQPVjiDChaIvTJlfvqdARmjSmFp3rlAaCaBiXrWe9iZM69zsUVUXr6X+Z4yn0Lr/tranccFNREcBpe/Hlb5jg7XPDBNCyli/qE15ucr3ZJdlRGZUFc78W+4FPX8uvxQ0yVnoeEMKJ3DBiCP5VfdCnMh9aqg7DxrCthGdq/ozbo5iw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QVIfhqeVWm7b/8pAFdOvSMc7ae88iB5Tdp635GT5uQA=; b=d9ZOD9MHMZGOI2ZA4tL07wSgpebMxrOFLVVu6hyWef1la86Lp6UtfHAQjD6n/p8bL3Sk8gB4zm61A4dcljELiAiQWCz8n9SZeQgoB3tKcfqpurWXrQpoS9nTRHCN2r0qMOOq9vaWC3eYfwYR6AXXzPCIc3LG6blpG03PND4c5zeS4FarbXzt7UxATVxR9Ezti6udf56pJ+82hn48tkUlaxW/lZBtrE2Kb6ZFnneeeoUXIJ5CLcoh59sBN/0K6wboH4Nujst/K8NyAgZA4p8LV8bcimePI3xC9yzszMfwXDqCf+tXkYnTu9FzTyZmkIO5Sd+ASwIGrtnsez/RYF9aIA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QVIfhqeVWm7b/8pAFdOvSMc7ae88iB5Tdp635GT5uQA=; b=znOpdVU3Ta8uSy6Qh2psFsLrzmC/W8iFUBe8miQkqnTDNidPuXtYCQlyD2UFq/VwclQclbrMuJBVeNiezSxXjh6jnChgZpiVGHGaiYawXiREmrxYRS7acivQ04I6XE8jtJ93v+W8OhqHODqxFCsmDpCN/5ESAaH0G9LyLmtWX6o= Received: from DUZPR01CA0036.eurprd01.prod.exchangelabs.com (2603:10a6:10:468::14) by VI1PR08MB5375.eurprd08.prod.outlook.com (2603:10a6:803:130::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.24; Fri, 23 Feb 2024 13:58:07 +0000 Received: from DB1PEPF00039233.eurprd03.prod.outlook.com (2603:10a6:10:468:cafe::f9) by DUZPR01CA0036.outlook.office365.com (2603:10a6:10:468::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.43 via Frontend Transport; Fri, 23 Feb 2024 13:58:07 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB1PEPF00039233.mail.protection.outlook.com (10.167.8.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.19 via Frontend Transport; Fri, 23 Feb 2024 13:58:07 +0000 Received: ("Tessian outbound c926391f1b75:v228"); Fri, 23 Feb 2024 13:58:06 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7ab9a1a691f4bbfd X-CR-MTA-TID: 64aa7808 Received: from ff097ba86317.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9721AFF8-219A-46CE-B27F-96D22BF4988F.1; Fri, 23 Feb 2024 13:57:59 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ff097ba86317.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 23 Feb 2024 13:57:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gahI3+QOrakAAR0qwXNdJIPQOYKo7kTKM4OLcQC+Px93dYrkLZdOQfIWstWmzRzOVGofRNOMEJaORJqH82j6guApdLQyUsQ2iSX+2W9dRSpUKBEkU3nPVT16jGkfrYApzMswmcLQsf5Os5gDp7ydMn+jA22ZWXpr6ch9rWpTYM0AOCQsLvlVx6CBWqfgWb/2V08PKYwKjDIEpPKqeLPFbwZxRrYx/xsfxOhULH+Kbbxb0oy2jXuOs8rhdneODlwWHaKKxXf5tVe2WTT2H/ZCglYbo8AhbrkyI55impFQedtRTDAVzWkt0h4ZGYNTABxmJGV2VACUDAMJTq+eyYF2Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QVIfhqeVWm7b/8pAFdOvSMc7ae88iB5Tdp635GT5uQA=; b=MLjj+ZCwwFnSxA6MEnnwkCGXeA5JwNBZn2nC25EEeW/VrEhkewzkvkRlRwgfZ0heQU4awgHZSmSxpZ31vl0UVvisq4gkeu4/Q10sd9zECweZ/JdaYIUEoExAYpC20Wj1CLZngkLlEdLv2ZTiESKOoWX2VY6Pf7dVlGGbl67NjQxznGE9Fjgmkr9W0XJ8rgMHbg5TH7fLNuEgVhkr1vAjzMGssD9E/xoN5jBlYoiX3ppiYdZuEqJWntbLZN/0kKsezVa7U+SGhVU9M//U+sq7g8+7xTu+duPFT/gvWpIB32PDkWBxl3241x+efVX3l8xD6aT0n+Hd93n6N6XyeefblA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QVIfhqeVWm7b/8pAFdOvSMc7ae88iB5Tdp635GT5uQA=; b=znOpdVU3Ta8uSy6Qh2psFsLrzmC/W8iFUBe8miQkqnTDNidPuXtYCQlyD2UFq/VwclQclbrMuJBVeNiezSxXjh6jnChgZpiVGHGaiYawXiREmrxYRS7acivQ04I6XE8jtJ93v+W8OhqHODqxFCsmDpCN/5ESAaH0G9LyLmtWX6o= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VE1PR08MB4893.eurprd08.prod.outlook.com (2603:10a6:802:aa::13) by AM9PR08MB5906.eurprd08.prod.outlook.com (2603:10a6:20b:285::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.22; Fri, 23 Feb 2024 13:57:57 +0000 Received: from VE1PR08MB4893.eurprd08.prod.outlook.com ([fe80::c61c:d59c:1a2b:52d3]) by VE1PR08MB4893.eurprd08.prod.outlook.com ([fe80::c61c:d59c:1a2b:52d3%6]) with mapi id 15.20.7316.023; Fri, 23 Feb 2024 13:57:57 +0000 Message-ID: <15bd8211-0e3c-4aed-b316-5749d32f6fb7@arm.com> Date: Fri, 23 Feb 2024 13:57:55 +0000 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Binutils Cc: Nick Clifton , Richard Earnshaw , Jan Beulich From: Srinath Parvathaneni Subject: [PATCH v1 1/2][Biuntils] aarch64: Fix sve2p1 dupq/extq instructions encoding and syntax. X-ClientProxiedBy: LO2P123CA0022.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::34) To VE1PR08MB4893.eurprd08.prod.outlook.com (2603:10a6:802:aa::13) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VE1PR08MB4893:EE_|AM9PR08MB5906:EE_|DB1PEPF00039233:EE_|VI1PR08MB5375:EE_ X-MS-Office365-Filtering-Correlation-Id: 70efb808-2b3e-4b8c-2093-08dc34777668 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: csKoPW+8hxFkQs6ECwMjV78dP3FHZ7S+ZL795r19gp57yqXG43GLKd4vquGtzWVWQDMLH4uiS7yjYdnqe5v7fQh1GKtm+yNTqXbYCjUhmbyOsx9QaZCttqtFqCD0R2by7B2W3iX9cYQwKZna5QvJfPKXZ5I3RStfvnAg6T0W4Sfv3bWfnKs5Mhxj1mKMwJP2OC9ab5FhUfqjebmuPJf5ujOlOfOE3KyoZnUpEtnqDnavx+iDzhLeYBgRMYygDesPIaBJzOx0+jevSGSC7eSmSTY/qczMDwmRcDQLuRlOIbXHfSFnxiV3ZAWk/dE6kTrVQFluaJwmaby9iQNtCwTVy4DIWnFtAHS9+ge76smJ7TyThaCTu/0FiilQeI08MTB/jg6G/4RUh+VoOZh9ety5TTAd1BHgOg3ZEm7p8PEvVIINnfRoJn4g0UwIKmxRcQdJLUSsxXpJT0db2eT4WeIHTfKfU0sPaOuQFfNtKe11fviGbspRz3GwlUc/IMaAK1UT7FKepnhLXmHCxKSJwTTBfw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR08MB4893.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB5906 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF00039233.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 2e4c2322-70b1-4708-e1f0-08dc34777082 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cfKnfTAeqywGFv+TyTaRnoPTa+LfY0RvBQdOYwsf5yvfWaoGTjBHaT5lf8IQ+HDCSjNs7youDbSxYUBRmPgMhmNK+eJ0FxRqMsFuaBQLVcsC/FQUriyZ+mM1LfrQsgOvvgibIrd44BmZeir/avyEgtOF93tOmTsf2/ITwX+lpThKZqQKQ0ANZ9kDFxar/oAaeDcZGvjbinSEqF4/weiQA5u/zjwtjgOmmlAzNhQmSRuNihwWYwNf2JePG2CweNdQROjLjuIZg30Errw/h1qeyhrodTK8yiUcdGkF8FSbgygnJ717l/NyKQYhdVqKHLDUNWc1IZ4c+HNBj5A6R4L8k8XspUcnpFhkos5NjQQedwDJSVNgSVcdCNX16a1RbHRdwnoqFtf8Pyif/pV/Rv/wAep3GogLyD138Go1nlsOSqJWefI/mxaaFpD3wqluxERQOVTXHOob8FCsbNHdKh01OyXsjzv3QV9PfpT99k1i7pkUl2Lb5XpOxXourG9bgBIH/bIj3I1hUkQ3wycI/nFR04vSdNtUrvg5vCPLn4GNlAasPryyf27lwmYr8wmX7QwGF0+OhJmhmPTUySZn0sdIHrdsm+4Z5mkDCqXMcfxDYAHgF0ImEwjsBx19VeRMCBJCBUXHvzO9wOBzPktVwGwfxw== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230031)(36860700004)(46966006); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Feb 2024 13:58:07.2055 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 70efb808-2b3e-4b8c-2093-08dc34777668 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF00039233.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5375 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY 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.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1791698360903429093 X-GMAIL-MSGID: 1791698360903429093 Hi, This patch enables "FEAT_SVE2p1" by default for Armv9.4-A and fixes the encoding and syntax for sve2p1 "dupq" and "extq" instructions which were reported here. https://sourceware.org/pipermail/binutils/2024-February/132408.html Regression testing for aarch64-none-elf target and found no regressions. Ok for binutils-master? Also ok to be backported to binutils-2.42 branch? Regards, Srinath. diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 0c6de289408f4c53633e468c610623c22a0fdec8..01e2bbf70c8b9812df8f1c6f8677bce2181701fa 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -6895,6 +6895,7 @@ parse_operands (char *str, const aarch64_opcode *opcode) case AARCH64_OPND_SVE_UIMM7: case AARCH64_OPND_SVE_UIMM8: case AARCH64_OPND_SVE_UIMM8_53: + case AARCH64_OPND_SVE_UIMM4: case AARCH64_OPND_IMM_ROT1: case AARCH64_OPND_IMM_ROT2: case AARCH64_OPND_IMM_ROT3: diff --git a/gas/testsuite/gas/aarch64/sve2p1-1-bad.d b/gas/testsuite/gas/aarch64/sve2p1-1-bad.d index a2ca49ef487563a55ae8c26ca4318e68da850e64..c28cdc76c4c3c002528b9de3636be8bf1c991160 100644 --- a/gas/testsuite/gas/aarch64/sve2p1-1-bad.d +++ b/gas/testsuite/gas/aarch64/sve2p1-1-bad.d @@ -1,4 +1,4 @@ #name: Illegal test of SVE2.1 min max instructions. -#as: -march=armv9.4-a +#as: -march=armv9.3-a #source: sve2p1-1.s #error_output: sve2p1-1-bad.l diff --git a/gas/testsuite/gas/aarch64/sve2p1-1-bad.l b/gas/testsuite/gas/aarch64/sve2p1-1-bad.l index 50a4bacc73c20324ae50b8688dd8cf5123a238ae..83917440e8187252c01892ce32100213cfef998c 100644 --- a/gas/testsuite/gas/aarch64/sve2p1-1-bad.l +++ b/gas/testsuite/gas/aarch64/sve2p1-1-bad.l @@ -35,26 +35,12 @@ .*: Error: selected processor does not support `uminqv v4.2d,p3,z2.d' .*: Error: selected processor does not support `uminqv v8.2d,p4,z1.d' .*: Error: selected processor does not support `uminqv v16.4s,p7,z0.s' -.*: Error: selected processor does not support `dupq z10.b,z20.b\[0\]' -.*: Error: selected processor does not support `dupq z10.b,z20.b\[15\]' -.*: Error: selected processor does not support `dupq z10.h,z20.h\[0\]' -.*: Error: selected processor does not support `dupq z10.h,z20.h\[7\]' -.*: Error: selected processor does not support `dupq z10.s,z20.s\[0\]' -.*: Error: selected processor does not support `dupq z10.s,z20.s\[3\]' -.*: Error: selected processor does not support `dupq z10.d,z20.d\[0\]' -.*: Error: selected processor does not support `dupq z10.d,z20.d\[1\]' .*: Error: selected processor does not support `eorqv v0.16b,p0,z16.b' .*: Error: selected processor does not support `eorqv v1.8h,p1,z8.h' .*: Error: selected processor does not support `eorqv v2.4s,p2,z4.s' .*: Error: selected processor does not support `eorqv v4.2d,p3,z2.d' .*: Error: selected processor does not support `eorqv v8.2d,p4,z1.d' .*: Error: selected processor does not support `eorqv v16.4s,p7,z0.s' -.*: Error: selected processor does not support `extq z0.b,z0.b,z10.b\[15\]' -.*: Error: selected processor does not support `extq z1.b,z1.b,z15.b\[7\]' -.*: Error: selected processor does not support `extq z2.b,z2.b,z5.b\[3\]' -.*: Error: selected processor does not support `extq z4.b,z4.b,z12.b\[1\]' -.*: Error: selected processor does not support `extq z8.b,z8.b,z7.b\[4\]' -.*: Error: selected processor does not support `extq z16.b,z16.b,z1.b\[8\]' .*: Error: selected processor does not support `faddqv v1.8h,p1,z8.h' .*: Error: selected processor does not support `faddqv v2.4s,p2,z4.s' .*: Error: selected processor does not support `faddqv v4.2d,p3,z2.d' diff --git a/gas/testsuite/gas/aarch64/sve2p1-1.d b/gas/testsuite/gas/aarch64/sve2p1-1.d index daece899b38bba4daa2ca9e58dba2d551f6cf988..ea8c5448a4181f7fc73bee8e46119cc796f2784c 100644 --- a/gas/testsuite/gas/aarch64/sve2p1-1.d +++ b/gas/testsuite/gas/aarch64/sve2p1-1.d @@ -44,26 +44,12 @@ .*: 04cf2c44 uminqv v4.2d, p3, z2.d .*: 04cf3028 uminqv v8.2d, p4, z1.d .*: 048f3c10 uminqv v16.4s, p7, z0.s -.*: 0530268a dupq z10.b, z20.b\[0\] -.*: 053f268a dupq z10.b, z20.b\[15\] -.*: 0521268a dupq z10.h, z20.h\[0\] -.*: 052f268a dupq z10.h, z20.h\[7\] -.*: 0522268a dupq z10.s, z20.s\[0\] -.*: 052e268a dupq z10.s, z20.s\[3\] -.*: 0524268a dupq z10.d, z20.d\[0\] -.*: 052c268a dupq z10.d, z20.d\[1\] .*: 041d2200 eorqv v0.16b, p0, z16.b .*: 045d2501 eorqv v1.8h, p1, z8.h .*: 049d2882 eorqv v2.4s, p2, z4.s .*: 04dd2c44 eorqv v4.2d, p3, z2.d .*: 04dd3028 eorqv v8.2d, p4, z1.d .*: 049d3c10 eorqv v16.4s, p7, z0.s -.*: 056a27c0 extq z0.b, z0.b, z10.b\[15\] -.*: 056f25c1 extq z1.b, z1.b, z15.b\[7\] -.*: 056524c2 extq z2.b, z2.b, z5.b\[3\] -.*: 056c2444 extq z4.b, z4.b, z12.b\[1\] -.*: 05672508 extq z8.b, z8.b, z7.b\[4\] -.*: 05612610 extq z16.b, z16.b, z1.b\[8\] .*: 6450a501 faddqv v1.8h, p1, z8.h .*: 6490a882 faddqv v2.4s, p2, z4.s .*: 64d0ac44 faddqv v4.2d, p3, z2.d diff --git a/gas/testsuite/gas/aarch64/sve2p1-1.s b/gas/testsuite/gas/aarch64/sve2p1-1.s index 2a1c7c107d757ae922cec5566adbace1f03e0dce..12a086b078f259b4aeb840f95b1e40e37e379fe6 100644 --- a/gas/testsuite/gas/aarch64/sve2p1-1.s +++ b/gas/testsuite/gas/aarch64/sve2p1-1.s @@ -39,15 +39,6 @@ uminqv v2.4s, p2, z4.s uminqv v4.2d, p3, z2.d uminqv v8.2d, p4, z1.d uminqv v16.4s, p7, z0.s -dupq z10.b, z20.b[0] -dupq z10.b, z20.b[15] -dupq z10.h, z20.h[0] -dupq z10.h, z20.h[7] -dupq z10.s, z20.s[0] -dupq z10.s, z20.s[3] -dupq z10.d, z20.d[0] -dupq z10.d, z20.d[1] - eorqv v0.16b, p0, z16.b eorqv v1.8h, p1, z8.h eorqv v2.4s, p2, z4.s @@ -55,12 +46,6 @@ eorqv v4.2d, p3, z2.d eorqv v8.2d, p4, z1.d eorqv v16.4s, p7, z0.s -extq z0.b, z0.b, z10.b[15] -extq z1.b, z1.b, z15.b[7] -extq z2.b, z2.b, z5.b[3] -extq z4.b, z4.b, z12.b[1] -extq z8.b, z8.b, z7.b[4] -extq z16.b, z16.b, z1.b[8] faddqv v1.8h, p1, z8.h faddqv v2.4s, p2, z4.s faddqv v4.2d, p3, z2.d diff --git a/gas/testsuite/gas/aarch64/sve2p1-2-invalid.d b/gas/testsuite/gas/aarch64/sve2p1-2-invalid.d new file mode 100644 index 0000000000000000000000000000000000000000..3953ca57ac838ac658561c63e8ca742752e1f157 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-2-invalid.d @@ -0,0 +1,3 @@ +#name: Test of illegal SVE2.1 dupq instructions. +#as: -march=armv9.4-a +#error_output: sve2p1-2-invalid.l diff --git a/gas/testsuite/gas/aarch64/sve2p1-2-invalid.l b/gas/testsuite/gas/aarch64/sve2p1-2-invalid.l new file mode 100644 index 0000000000000000000000000000000000000000..e6ba2f737455835465fa69f6e67b145575fe00d9 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-2-invalid.l @@ -0,0 +1,26 @@ +.*: Assembler messages: +.*: Error: register element index out of range 0 to 15 at operand 2 -- `dupq z0.b,z0.b\[16\]' +.*: Error: operand mismatch -- `dupq z0.h,z0.b\[16\]' +.*: Info: did you mean this\? +.*: Info: dupq z0.b, z0.b\[16\] +.*: Info: other valid variant\(s\): +.*: Info: dupq z0.h, z0.h\[16\] +.*: Info: dupq z0.s, z0.s\[16\] +.*: Info: dupq z0.d, z0.d\[16\] +.*: Error: operand mismatch -- `dupq z0.h,z0.s\[16\]' +.*: Info: did you mean this\? +.*: Info: dupq z0.h, z0.h\[16\] +.*: Info: other valid variant\(s\): +.*: Info: dupq z0.b, z0.b\[16\] +.*: Info: dupq z0.s, z0.s\[16\] +.*: Info: dupq z0.d, z0.d\[16\] +.*: Error: operand mismatch -- `dupq z0.s,z0.d\[16\]' +.*: Info: did you mean this\? +.*: Info: dupq z0.s, z0.s\[16\] +.*: Info: other valid variant\(s\): +.*: Info: dupq z0.b, z0.b\[16\] +.*: Info: dupq z0.h, z0.h\[16\] +.*: Info: dupq z0.d, z0.d\[16\] +.*: Error: register element index out of range 0 to 7 at operand 2 -- `dupq z0.h,z0.h\[8\]' +.*: Error: register element index out of range 0 to 3 at operand 2 -- `dupq z0.s,z0.s\[4\]' +.*: Error: register element index out of range 0 to 1 at operand 2 -- `dupq z0.d,z0.d\[2\]' diff --git a/gas/testsuite/gas/aarch64/sve2p1-2-invalid.s b/gas/testsuite/gas/aarch64/sve2p1-2-invalid.s new file mode 100644 index 0000000000000000000000000000000000000000..a032f224b15873d6d533f23377ca33e639730874 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-2-invalid.s @@ -0,0 +1,7 @@ + dupq z0.b, z0.b[16] + dupq z0.h, z0.b[16] + dupq z0.h, z0.s[16] + dupq z0.s, z0.d[16] + dupq z0.h, z0.h[8] + dupq z0.s, z0.s[4] + dupq z0.d, z0.d[2] diff --git a/gas/testsuite/gas/aarch64/sve2p1-2.d b/gas/testsuite/gas/aarch64/sve2p1-2.d new file mode 100644 index 0000000000000000000000000000000000000000..228a884898c9e684a204ad8484db50815f2873bf --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-2.d @@ -0,0 +1,210 @@ +#name: Test of SVE2.1 dupq instructions. +#as: -march=armv9.4-a +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +.*: 05212400 dupq z0.b, z0.b\[0\] +.*: 05232400 dupq z0.b, z0.b\[1\] +.*: 05252400 dupq z0.b, z0.b\[2\] +.*: 05272400 dupq z0.b, z0.b\[3\] +.*: 05292400 dupq z0.b, z0.b\[4\] +.*: 052f2400 dupq z0.b, z0.b\[7\] +.*: 05312400 dupq z0.b, z0.b\[8\] +.*: 053f2400 dupq z0.b, z0.b\[15\] +.*: 05222400 dupq z0.h, z0.h\[0\] +.*: 05262400 dupq z0.h, z0.h\[1\] +.*: 052a2400 dupq z0.h, z0.h\[2\] +.*: 052e2400 dupq z0.h, z0.h\[3\] +.*: 05322400 dupq z0.h, z0.h\[4\] +.*: 053e2400 dupq z0.h, z0.h\[7\] +.*: 05242400 dupq z0.s, z0.s\[0\] +.*: 052c2400 dupq z0.s, z0.s\[1\] +.*: 05342400 dupq z0.s, z0.s\[2\] +.*: 053c2400 dupq z0.s, z0.s\[3\] +.*: 05282400 dupq z0.d, z0.d\[0\] +.*: 05382400 dupq z0.d, z0.d\[1\] +.*: 05212421 dupq z1.b, z1.b\[0\] +.*: 05232421 dupq z1.b, z1.b\[1\] +.*: 05252421 dupq z1.b, z1.b\[2\] +.*: 05272421 dupq z1.b, z1.b\[3\] +.*: 05292421 dupq z1.b, z1.b\[4\] +.*: 052f2421 dupq z1.b, z1.b\[7\] +.*: 05312421 dupq z1.b, z1.b\[8\] +.*: 053f2421 dupq z1.b, z1.b\[15\] +.*: 05222421 dupq z1.h, z1.h\[0\] +.*: 05262421 dupq z1.h, z1.h\[1\] +.*: 052a2421 dupq z1.h, z1.h\[2\] +.*: 052e2421 dupq z1.h, z1.h\[3\] +.*: 05322421 dupq z1.h, z1.h\[4\] +.*: 053e2421 dupq z1.h, z1.h\[7\] +.*: 05242421 dupq z1.s, z1.s\[0\] +.*: 052c2421 dupq z1.s, z1.s\[1\] +.*: 05342421 dupq z1.s, z1.s\[2\] +.*: 053c2421 dupq z1.s, z1.s\[3\] +.*: 05282421 dupq z1.d, z1.d\[0\] +.*: 05382421 dupq z1.d, z1.d\[1\] +.*: 05212442 dupq z2.b, z2.b\[0\] +.*: 05232442 dupq z2.b, z2.b\[1\] +.*: 05252442 dupq z2.b, z2.b\[2\] +.*: 05272442 dupq z2.b, z2.b\[3\] +.*: 05292442 dupq z2.b, z2.b\[4\] +.*: 052f2442 dupq z2.b, z2.b\[7\] +.*: 05312442 dupq z2.b, z2.b\[8\] +.*: 053f2442 dupq z2.b, z2.b\[15\] +.*: 05222442 dupq z2.h, z2.h\[0\] +.*: 05262442 dupq z2.h, z2.h\[1\] +.*: 052a2442 dupq z2.h, z2.h\[2\] +.*: 052e2442 dupq z2.h, z2.h\[3\] +.*: 05322442 dupq z2.h, z2.h\[4\] +.*: 053e2442 dupq z2.h, z2.h\[7\] +.*: 05242442 dupq z2.s, z2.s\[0\] +.*: 052c2442 dupq z2.s, z2.s\[1\] +.*: 05342442 dupq z2.s, z2.s\[2\] +.*: 053c2442 dupq z2.s, z2.s\[3\] +.*: 05282442 dupq z2.d, z2.d\[0\] +.*: 05382442 dupq z2.d, z2.d\[1\] +.*: 05212463 dupq z3.b, z3.b\[0\] +.*: 05232463 dupq z3.b, z3.b\[1\] +.*: 05252463 dupq z3.b, z3.b\[2\] +.*: 05272463 dupq z3.b, z3.b\[3\] +.*: 05292463 dupq z3.b, z3.b\[4\] +.*: 052f2463 dupq z3.b, z3.b\[7\] +.*: 05312463 dupq z3.b, z3.b\[8\] +.*: 053f2463 dupq z3.b, z3.b\[15\] +.*: 05222463 dupq z3.h, z3.h\[0\] +.*: 05262463 dupq z3.h, z3.h\[1\] +.*: 052a2463 dupq z3.h, z3.h\[2\] +.*: 052e2463 dupq z3.h, z3.h\[3\] +.*: 05322463 dupq z3.h, z3.h\[4\] +.*: 053e2463 dupq z3.h, z3.h\[7\] +.*: 05242463 dupq z3.s, z3.s\[0\] +.*: 052c2463 dupq z3.s, z3.s\[1\] +.*: 05342463 dupq z3.s, z3.s\[2\] +.*: 053c2463 dupq z3.s, z3.s\[3\] +.*: 05282463 dupq z3.d, z3.d\[0\] +.*: 05382463 dupq z3.d, z3.d\[1\] +.*: 05212484 dupq z4.b, z4.b\[0\] +.*: 05232484 dupq z4.b, z4.b\[1\] +.*: 05252484 dupq z4.b, z4.b\[2\] +.*: 05272484 dupq z4.b, z4.b\[3\] +.*: 05292484 dupq z4.b, z4.b\[4\] +.*: 052f2484 dupq z4.b, z4.b\[7\] +.*: 05312484 dupq z4.b, z4.b\[8\] +.*: 053f2484 dupq z4.b, z4.b\[15\] +.*: 05222484 dupq z4.h, z4.h\[0\] +.*: 05262484 dupq z4.h, z4.h\[1\] +.*: 052a2484 dupq z4.h, z4.h\[2\] +.*: 052e2484 dupq z4.h, z4.h\[3\] +.*: 05322484 dupq z4.h, z4.h\[4\] +.*: 053e2484 dupq z4.h, z4.h\[7\] +.*: 05242484 dupq z4.s, z4.s\[0\] +.*: 052c2484 dupq z4.s, z4.s\[1\] +.*: 05342484 dupq z4.s, z4.s\[2\] +.*: 053c2484 dupq z4.s, z4.s\[3\] +.*: 05282484 dupq z4.d, z4.d\[0\] +.*: 05382484 dupq z4.d, z4.d\[1\] +.*: 052124e7 dupq z7.b, z7.b\[0\] +.*: 052324e7 dupq z7.b, z7.b\[1\] +.*: 052524e7 dupq z7.b, z7.b\[2\] +.*: 052724e7 dupq z7.b, z7.b\[3\] +.*: 052924e7 dupq z7.b, z7.b\[4\] +.*: 052f24e7 dupq z7.b, z7.b\[7\] +.*: 053124e7 dupq z7.b, z7.b\[8\] +.*: 053f24e7 dupq z7.b, z7.b\[15\] +.*: 052224e7 dupq z7.h, z7.h\[0\] +.*: 052624e7 dupq z7.h, z7.h\[1\] +.*: 052a24e7 dupq z7.h, z7.h\[2\] +.*: 052e24e7 dupq z7.h, z7.h\[3\] +.*: 053224e7 dupq z7.h, z7.h\[4\] +.*: 053e24e7 dupq z7.h, z7.h\[7\] +.*: 052424e7 dupq z7.s, z7.s\[0\] +.*: 052c24e7 dupq z7.s, z7.s\[1\] +.*: 053424e7 dupq z7.s, z7.s\[2\] +.*: 053c24e7 dupq z7.s, z7.s\[3\] +.*: 052824e7 dupq z7.d, z7.d\[0\] +.*: 053824e7 dupq z7.d, z7.d\[1\] +.*: 05212508 dupq z8.b, z8.b\[0\] +.*: 05232508 dupq z8.b, z8.b\[1\] +.*: 05252508 dupq z8.b, z8.b\[2\] +.*: 05272508 dupq z8.b, z8.b\[3\] +.*: 05292508 dupq z8.b, z8.b\[4\] +.*: 052f2508 dupq z8.b, z8.b\[7\] +.*: 05312508 dupq z8.b, z8.b\[8\] +.*: 053f2508 dupq z8.b, z8.b\[15\] +.*: 05222508 dupq z8.h, z8.h\[0\] +.*: 05262508 dupq z8.h, z8.h\[1\] +.*: 052a2508 dupq z8.h, z8.h\[2\] +.*: 052e2508 dupq z8.h, z8.h\[3\] +.*: 05322508 dupq z8.h, z8.h\[4\] +.*: 053e2508 dupq z8.h, z8.h\[7\] +.*: 05242508 dupq z8.s, z8.s\[0\] +.*: 052c2508 dupq z8.s, z8.s\[1\] +.*: 05342508 dupq z8.s, z8.s\[2\] +.*: 053c2508 dupq z8.s, z8.s\[3\] +.*: 05282508 dupq z8.d, z8.d\[0\] +.*: 05382508 dupq z8.d, z8.d\[1\] +.*: 052125ef dupq z15.b, z15.b\[0\] +.*: 052325ef dupq z15.b, z15.b\[1\] +.*: 052525ef dupq z15.b, z15.b\[2\] +.*: 052725ef dupq z15.b, z15.b\[3\] +.*: 052925ef dupq z15.b, z15.b\[4\] +.*: 052f25ef dupq z15.b, z15.b\[7\] +.*: 053125ef dupq z15.b, z15.b\[8\] +.*: 053f25ef dupq z15.b, z15.b\[15\] +.*: 052225ef dupq z15.h, z15.h\[0\] +.*: 052625ef dupq z15.h, z15.h\[1\] +.*: 052a25ef dupq z15.h, z15.h\[2\] +.*: 052e25ef dupq z15.h, z15.h\[3\] +.*: 053225ef dupq z15.h, z15.h\[4\] +.*: 053e25ef dupq z15.h, z15.h\[7\] +.*: 052425ef dupq z15.s, z15.s\[0\] +.*: 052c25ef dupq z15.s, z15.s\[1\] +.*: 053425ef dupq z15.s, z15.s\[2\] +.*: 053c25ef dupq z15.s, z15.s\[3\] +.*: 052825ef dupq z15.d, z15.d\[0\] +.*: 053825ef dupq z15.d, z15.d\[1\] +.*: 05212610 dupq z16.b, z16.b\[0\] +.*: 05232610 dupq z16.b, z16.b\[1\] +.*: 05252610 dupq z16.b, z16.b\[2\] +.*: 05272610 dupq z16.b, z16.b\[3\] +.*: 05292610 dupq z16.b, z16.b\[4\] +.*: 052f2610 dupq z16.b, z16.b\[7\] +.*: 05312610 dupq z16.b, z16.b\[8\] +.*: 053f2610 dupq z16.b, z16.b\[15\] +.*: 05222610 dupq z16.h, z16.h\[0\] +.*: 05262610 dupq z16.h, z16.h\[1\] +.*: 052a2610 dupq z16.h, z16.h\[2\] +.*: 052e2610 dupq z16.h, z16.h\[3\] +.*: 05322610 dupq z16.h, z16.h\[4\] +.*: 053e2610 dupq z16.h, z16.h\[7\] +.*: 05242610 dupq z16.s, z16.s\[0\] +.*: 052c2610 dupq z16.s, z16.s\[1\] +.*: 05342610 dupq z16.s, z16.s\[2\] +.*: 053c2610 dupq z16.s, z16.s\[3\] +.*: 05282610 dupq z16.d, z16.d\[0\] +.*: 05382610 dupq z16.d, z16.d\[1\] +.*: 052127ff dupq z31.b, z31.b\[0\] +.*: 052327ff dupq z31.b, z31.b\[1\] +.*: 052527ff dupq z31.b, z31.b\[2\] +.*: 052727ff dupq z31.b, z31.b\[3\] +.*: 052927ff dupq z31.b, z31.b\[4\] +.*: 052f27ff dupq z31.b, z31.b\[7\] +.*: 053127ff dupq z31.b, z31.b\[8\] +.*: 053f27ff dupq z31.b, z31.b\[15\] +.*: 052227ff dupq z31.h, z31.h\[0\] +.*: 052627ff dupq z31.h, z31.h\[1\] +.*: 052a27ff dupq z31.h, z31.h\[2\] +.*: 052e27ff dupq z31.h, z31.h\[3\] +.*: 053227ff dupq z31.h, z31.h\[4\] +.*: 053e27ff dupq z31.h, z31.h\[7\] +.*: 052427ff dupq z31.s, z31.s\[0\] +.*: 052c27ff dupq z31.s, z31.s\[1\] +.*: 053427ff dupq z31.s, z31.s\[2\] +.*: 053c27ff dupq z31.s, z31.s\[3\] +.*: 052827ff dupq z31.d, z31.d\[0\] +.*: 053827ff dupq z31.d, z31.d\[1\] diff --git a/gas/testsuite/gas/aarch64/sve2p1-2.s b/gas/testsuite/gas/aarch64/sve2p1-2.s new file mode 100644 index 0000000000000000000000000000000000000000..a9b4ae367f214ec8740274cd8832777935ca44c2 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-2.s @@ -0,0 +1,28 @@ + .text + .irp op1 0,1,2,3,4,7,8,15,16,31 + + .irp op2 0,1,2,3,4,7,8,15 + .irp op3 .b + dupq z\op1\op3, z\op1\op3[\op2] + .endr + .endr + + .irp op2 0,1,2,3,4,7 + .irp op3 .h + dupq z\op1\op3, z\op1\op3[\op2] + .endr + .endr + + .irp op2 0,1,2,3 + .irp op3 .s + dupq z\op1\op3, z\op1\op3[\op2] + .endr + .endr + + .irp op2 0,1 + .irp op3 .d + dupq z\op1\op3, z\op1\op3[\op2] + .endr + .endr + + .endr diff --git a/gas/testsuite/gas/aarch64/sve2p1-3-invalid.d b/gas/testsuite/gas/aarch64/sve2p1-3-invalid.d new file mode 100644 index 0000000000000000000000000000000000000000..ff6ecb2027a486494ddd8e96d79c86caf76ddba9 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-3-invalid.d @@ -0,0 +1,3 @@ +#name: Test of illegal SVE2.1 extq instructions. +#as: -march=armv9.4-a +#error_output: sve2p1-3-invalid.l diff --git a/gas/testsuite/gas/aarch64/sve2p1-3-invalid.l b/gas/testsuite/gas/aarch64/sve2p1-3-invalid.l new file mode 100644 index 0000000000000000000000000000000000000000..95a731c934a426ac4dd5dd7735c8cae3ab211176 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-3-invalid.l @@ -0,0 +1,12 @@ +.*: Assembler messages: +.*: Error: operand mismatch -- `extq z0.b,z0.h,z0.b,#0' +.*: Info: did you mean this\? +.*: Info: extq z0.b, z0.b, z0.b, #0 +.*: Error: operand 2 must be the same register as operand 1 -- `extq z31.b,z15.b,z0.b,#0' +.*: Error: operand mismatch -- `extq z0.b,z0.b,z31.h,#0' +.*: Info: did you mean this\? +.*: Info: extq z0.b, z0.b, z31.b, #0 +.*: Error: immediate value out of range 0 to 15 at operand 4 -- `extq z0.b,z0.b,z0.b,#16' +.*: Error: operand mismatch -- `extq z0.h,z0.h,z0.h,#15' +.*: Info: did you mean this\? +.*: Info: extq z0.b, z0.b, z0.b, #15 diff --git a/gas/testsuite/gas/aarch64/sve2p1-3-invalid.s b/gas/testsuite/gas/aarch64/sve2p1-3-invalid.s new file mode 100644 index 0000000000000000000000000000000000000000..3abfb87af68942497da33de38f9a9ece291e2499 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-3-invalid.s @@ -0,0 +1,5 @@ +extq z0.b, z0.h, z0.b, #0 +extq z31.b, z15.b, z0.b, #0 +extq z0.b, z0.b, z31.h, #0 +extq z0.b, z0.b, z0.b, #16 +extq z0.h, z0.h, z0.h, #15 diff --git a/gas/testsuite/gas/aarch64/sve2p1-3.d b/gas/testsuite/gas/aarch64/sve2p1-3.d new file mode 100644 index 0000000000000000000000000000000000000000..6e7ee001f12a9b21a7f836e7379ce5ea4bb32e88 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-3.d @@ -0,0 +1,16 @@ +#name: Test of SVE2.1 extq instructions. +#as: -march=armv9.4-a +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +.*: 05602400 extq z0.b, z0.b, z0.b, #0 +.*: 0560241f extq z31.b, z31.b, z0.b, #0 +.*: 056027e0 extq z0.b, z0.b, z31.b, #0 +.*: 056f2400 extq z0.b, z0.b, z0.b, #15 +.*: 056f27ff extq z31.b, z31.b, z31.b, #15 +.*: 056727ef extq z15.b, z15.b, z31.b, #7 diff --git a/gas/testsuite/gas/aarch64/sve2p1-3.s b/gas/testsuite/gas/aarch64/sve2p1-3.s new file mode 100644 index 0000000000000000000000000000000000000000..09d30eaa43d3b807b452287f7684ff83df51bfb0 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-3.s @@ -0,0 +1,6 @@ +extq z0.b, z0.b, z0.b, #0 +extq z31.b, z31.b, z0.b, #0 +extq z0.b, z0.b, z31.b, #0 +extq z0.b, z0.b, z0.b, #15 +extq z31.b, z31.b, z31.b, #15 +extq z15.b, z15.b, z31.b, #7 diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 02ee0fc2566d500359a9e89de3dfb954100f63ce..e70b9e6d348b81b6331e077f3bdf966663917e16 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -307,6 +307,7 @@ enum aarch64_feature_bit { | AARCH64_FEATBIT (X, PMUv3_ICNTR) \ | AARCH64_FEATBIT (X, SEBEP) \ | AARCH64_FEATBIT (X, PREDRES2) \ + | AARCH64_FEATBIT (X, SVE2p1) \ ) #define AARCH64_ARCH_V9A_FEATURES(X) (AARCH64_FEATBIT (X, V9A) \ @@ -704,6 +705,7 @@ enum aarch64_opnd AARCH64_OPND_SVE_UIMM7, /* SVE unsigned 7-bit immediate. */ AARCH64_OPND_SVE_UIMM8, /* SVE unsigned 8-bit immediate. */ AARCH64_OPND_SVE_UIMM8_53, /* SVE split unsigned 8-bit immediate. */ + AARCH64_OPND_SVE_UIMM4, /* SVE unsigned 4-bit immediate. */ AARCH64_OPND_SVE_VZn, /* Scalar SIMD&FP register in Zn field. */ AARCH64_OPND_SVE_Vd, /* Scalar SIMD&FP register in Vd. */ AARCH64_OPND_SVE_Vm, /* Scalar SIMD&FP register in Vm. */ diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c index 29e96e244bb2d01ec5514f5d66acc2ff0c724503..70eda9573795f9a35fa1810ca936d7870e47acbe 100644 --- a/opcodes/aarch64-asm.c +++ b/opcodes/aarch64-asm.c @@ -1271,7 +1271,7 @@ aarch64_ins_sve_index_imm (const aarch64_operand *self, insert_field (self->fields[0], code, info->reglane.regno, 0); unsigned int esize = aarch64_get_qualifier_esize (info->qualifier); insert_fields (code, (info->reglane.index * 2 + 1) * esize, 0, - 2, self->fields[1],self->fields[2]); + 2, self->fields[2],self->fields[1]); return true; } diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c index 82d2f8f8251f0f48e06a85360ebfdf258247de20..33cd2731c9dc3e88e7ffeca918e37271dddcd3a5 100644 --- a/opcodes/aarch64-dis.c +++ b/opcodes/aarch64-dis.c @@ -2173,7 +2173,18 @@ aarch64_ext_sve_index_imm (const aarch64_operand *self, int val; info->reglane.regno = extract_field (self->fields[0], code, 0); - val = extract_fields (code, 0, 2, self->fields[2], self->fields[1]); + val = extract_fields (code, 0, 2, self->fields[1], self->fields[2]); + + /* val ranges from 1 to 31 decoded in bits[20:16] for the index immediate. + (val & 01) == 0 is reserved and return false. + (val & 01) == 1 is suffix .b for operand and immediate ranges from + 0-15. info->reglane.index = value in bits[20:17]. + (val & 02) == 1 is suffix .h for operand and immediate ranges from + 0-7. info->reglane.index = value in bits[20:18]. + (val & 04) == 1 is suffix .s for operand and immediate ranges from + 0-3. info->reglane.index = value in bits[20:19]. + (val & 08) == 1 is suffix .d for operand and immediate ranges from + 0-1. info->reglane.index = value in bit[20]. */ if ((val & 15) == 0) return 0; while ((val & 1) == 0) @@ -3352,7 +3363,7 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst) break; case sve_index1: - i = extract_fields (inst->value, 0, 2, FLD_SVE_tsz, FLD_SVE_i2h); + i = extract_fields (inst->value, 0, 2, FLD_SVE_i2h, FLD_SVE_tsz); if ((i & 15) == 0) return false; while ((i & 1) == 0) diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index 965c1c0698c5ab97abde32cd502ae342ad9e34a1..00344604e5e8b88b17daafc60fbd395fb50c7006 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -2697,10 +2697,14 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, case AARCH64_OPND_SVE_UIMM3: case AARCH64_OPND_SVE_UIMM7: case AARCH64_OPND_SVE_UIMM8: + case AARCH64_OPND_SVE_UIMM4: case AARCH64_OPND_SVE_UIMM8_53: case AARCH64_OPND_CSSC_UIMM8: size = get_operand_fields_width (get_operand_from_code (type)); - assert (size < 32); + if (type == AARCH64_OPND_SVE_UIMM4) + assert (size < 16); + else + assert (size < 32); if (!value_fit_unsigned_field_p (opnd->imm.value, size)) { set_imm_out_of_range_error (mismatch_detail, idx, 0, @@ -4326,6 +4330,7 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, case AARCH64_OPND_SVE_UIMM3: case AARCH64_OPND_SVE_UIMM7: case AARCH64_OPND_SVE_UIMM8: + case AARCH64_OPND_SVE_UIMM4: case AARCH64_OPND_SVE_UIMM8_53: case AARCH64_OPND_IMM_ROT1: case AARCH64_OPND_IMM_ROT2: diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 18ac80251e9a15fc16f7070abd3be2d2e4dceb5a..21794022721a8e40d12dde1e383e3a40f42624e5 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -6375,7 +6375,7 @@ const struct aarch64_opcode aarch64_opcode_table[] = SVE2p1_INSNC("fminqv",0x6417a000, 0xff3fe000, sve2_urqvs, 0, OP3 (Vd, SVE_Pg3, SVE_Zn), OP_SVE_vUS_HSD_HSD, F_OPD_SIZE, C_SCAN_MOVPRFX, 0), SVE2p1_INSN("dupq",0x05202400, 0xffe0fc00, sve_index1, 0, OP2 (SVE_Zd, SVE_Zn_5_INDEX), OP_SVE_VV_BHSD, 0, 0), - SVE2p1_INSN("extq",0x05602400, 0xfff0fc00, sve_misc, 0, OP3 (SVE_Zd, SVE_Zd, SVE_Zm_imm4), OP_SVE_BBB, 0, 0), + SVE2p1_INSNC("extq",0x05602400, 0xfff0fc00, sve_misc, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zm_5, SVE_UIMM4), OP_SVE_BBBU, 0, C_SCAN_MOVPRFX, 1), SVE2p1_INSNC("ld1q",0xc400a000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SZS_QD, 0, C_SCAN_MOVPRFX, 0), SVE2p1_INSNC("ld2q",0xa490e000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt2, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), SVE2p1_INSNC("ld3q",0xa510e000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt3, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), @@ -6825,6 +6825,8 @@ const struct aarch64_opcode aarch64_opcode_table[] = "an 8-bit unsigned immediate") \ Y(IMMEDIATE, imm, "SVE_UIMM8_53", 0, F(FLD_imm5,FLD_imm3_10), \ "an 8-bit unsigned immediate") \ + Y(IMMEDIATE, imm, "SVE_UIMM4", 0, F(FLD_SVE_imm4), \ + "an 4-bit unsigned immediate") \ Y(SIMD_REG, regno, "SVE_VZn", 0, F(FLD_SVE_Zn), "a SIMD register") \ Y(SIMD_REG, regno, "SVE_Vd", 0, F(FLD_SVE_Vd), "a SIMD register") \ Y(SIMD_REG, regno, "SVE_Vm", 0, F(FLD_SVE_Vm), "a SIMD register") \ From patchwork Fri Feb 23 13:59:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Srinath Parvathaneni X-Patchwork-Id: 205402 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp599293dyb; Fri, 23 Feb 2024 06:00:36 -0800 (PST) X-Forwarded-Encrypted: i=5; AJvYcCWdBihAhnpkO3DhzKjHUcyVBBGuoFMsif5lgbCVAfB12sBJsbNoJ49NSyh+O1EzrttCkMSzMzljrv+RnpB+rqz3OHGHlg== X-Google-Smtp-Source: AGHT+IHMORBVARGjTWPXAKh9XPPAIfRvN28OzlAChem5+ttnsCTU52HX4r28lU4sudaCVi9eIfaz X-Received: by 2002:a81:b660:0:b0:607:db57:b25d with SMTP id h32-20020a81b660000000b00607db57b25dmr2484851ywk.17.1708696836153; Fri, 23 Feb 2024 06:00:36 -0800 (PST) ARC-Seal: i=4; a=rsa-sha256; t=1708696836; cv=pass; d=google.com; s=arc-20160816; b=KkBoLxIU69cU0ipiUvxocE5n13rFndO5pismOngLlZyLBPNnNSmvdo8U3G1D5ctB30 N6dae2cb35/pDVEX+kOfZswI7VcJpRsXIiM2bPPVYlfVF6+lwsI9A9x5oWzBwdRKnqjI Kn7TWlp7BP7bYbZ0JzC0V6L4MFNdvYz9gwwsSOvkKHI9EACSk99m1U1/SgCwXMspS3od y7uYHDXCAAHJ29NoEGhoKgrRQf2hZm25mPYzrcTiQ8qHiTzkpNQo430EF6MKUy/xmefc eOssvxpLZL/oe/1OSTxGPhYc89ZmXFETFTsoOodB4DL0od9S1USzabp0n3v6zedsC+UA nQjA== ARC-Message-Signature: i=4; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:original-authentication-results :nodisclaimer:mime-version:in-reply-to:references:cc:to:from :content-language:subject:user-agent:date:message-id :authentication-results-original:dkim-signature:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=+beb7esEH/EGQIRJnoo90d/2IUt1LuQqFe4C2bi9exo=; fh=oHQcowx0PqdvnOhAQTfCPRiT71YN2xQJogN0YbQDinU=; b=tHdZ78elwW8ujFAQIUJOsfqI0+xNUUpZe32xqAaOd69DZRzkXBb1YK4F2DOvA/i/W5 m/oXFH6AjeoMimDQ1jp4vTVITDT3Zwuljjen2hp6ENEGLYRidm2CPS44AxcsB+Yt4hMP 9fxdXcUM8DbDhNVXtF6uJn5rmCFZCx5kMliiwzqi7W/IkxDw0iKsQmWmUb3NmWmilkht PnehH2IEGsRo8bYs3zWhLUoFD8ciNYo0FkxF2MkQ+JT1uerosC9zzcw1D6WtPAdn3god +OvDfB4GJUJ/m6Y6r9hc8hdPq1eJ3HbFtvYR4g1zu2o2M1O5/ILN0gKH4oKwrA6wsfGW GjuA==; dara=google.com ARC-Authentication-Results: i=4; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=loaHdJ6d; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=loaHdJ6d; arc=pass (i=3); 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id e127-20020a0df585000000b0060783ba1ed5si6539035ywf.503.2024.02.23.06.00.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Feb 2024 06:00:36 -0800 (PST) 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=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=loaHdJ6d; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=loaHdJ6d; arc=pass (i=3); 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 86C5C385842D for ; Fri, 23 Feb 2024 14:00:35 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2041.outbound.protection.outlook.com [40.107.241.41]) by sourceware.org (Postfix) with ESMTPS id C30593858CD1 for ; Fri, 23 Feb 2024 14:00:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C30593858CD1 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C30593858CD1 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.241.41 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1708696824; cv=pass; b=I7bDRViCubhjUZIgusoMSdhe23geiS2A8S4zwvqas568h4oXiylxNXcpsY7ADXpzOabErDwgNRPTOJuuoyFO8qm6Rivl3lC03yU5cLI4eXw80Uudl218LfwHAGVxeCOFEORVayYZGVfo8iaQoLSzcjo5yreuIOBkthnqeczijOE= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1708696824; c=relaxed/simple; bh=FEgBRiN/BgGzSR3PJLRfXcb6mvQKQ0yrnWrkGpDAG24=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:From:To: MIME-Version; b=pU4g0yE5qiW1vOpscBaiWbfjWp43ZaWzE62UwxqbjATEYYEOTs8uFILM/fjDmzK27wF/CGYJQOE/8l4vzQOEOd6tmCokCYgLKKTA5ssaUB330WaRrWDiCxlwquFJQ9yoDOn5RhoKw5aWwXEHNV2wZmZsI1EV0JXkzDJZyD6UI04= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=btvjOHUNPffwGwdVTLEcfd93KCfm0JxY2XrIMs8eA4IplVnzjwlj/XhSWHGwBYjVEHhLnIyu8SSh10pep+EOY8RPjceQb1qysoL/tTGhAdNGttqbvcVL/fdQ15p8EB5vv4cxFp1ulAF0LyC4g2xbpaqR/0WQClVkkH9rDOzYyMZVjj8vHtDSrY29dS3lOfGgJ23EdJOL4iicfQQRKQRRH1DrIHr4tn32tynjVu6GOlvUk1im4yY2kHNrQE7jK5FKWDLgZnEIHJJTW8/8Z7PT5B5C1IOPoBX0coZkywdYk3ylsVSTTQ6fSQcRkOs7YQge7ohtLS2aH3kSLy2C9R95xg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+beb7esEH/EGQIRJnoo90d/2IUt1LuQqFe4C2bi9exo=; b=Jhde9j2XVWFYV43l0TUIhW+h2lWwl16rKhOErIfZzsU0Szl0U1wr0yXTeOLFG3UXm0aPNaJidmwB8EWNJmQLH+I6O+n5cxioFeFGupUVXVIxDhok2HW2MiBRfK3D6Bpkag1pgbKrz4PFD4kFgLEYC//jrnjeIUoMNoROjWzQMF9MprHxVyMg5bM1EBYsk2ij+nvln+FDdWCQY3F0jHqaoGEp3yX/asGFY8xBwQyqTG9lbEztmiG7hNq8y1WRaIz9lzggGCTjveO7bjDAp3NbJSMSbCyhFhGP3/8lEBEX1pjsBYi4NcTt5ZVvL3Nc7UF12HgPISR9yF1n9iOK+EdBWg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+beb7esEH/EGQIRJnoo90d/2IUt1LuQqFe4C2bi9exo=; b=loaHdJ6dFtLhFH1LvrmhhgXaXJgVIriVrdB4auRqGV+ptz7Lo77o7EB0mrBgIFDS5sZiN5LADCTQtu+g0cyonC97TBLQ8xVjyjBqHLQNsyubN0foWE0nVRIGRyUrhlAm2OKGXElEjM5dGY/NGCfhG9PRyaDlvqw/iho5S2UWgoY= Received: from AM0PR10CA0017.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::27) by AS4PR08MB7855.eurprd08.prod.outlook.com (2603:10a6:20b:51e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.24; Fri, 23 Feb 2024 14:00:12 +0000 Received: from AM4PEPF00027A5E.eurprd04.prod.outlook.com (2603:10a6:208:17c:cafe::41) by AM0PR10CA0017.outlook.office365.com (2603:10a6:208:17c::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.43 via Frontend Transport; Fri, 23 Feb 2024 14:00:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM4PEPF00027A5E.mail.protection.outlook.com (10.167.16.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Fri, 23 Feb 2024 14:00:11 +0000 Received: ("Tessian outbound c21fe6ca13cc:v228"); Fri, 23 Feb 2024 14:00:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 8cd1a87f8c91b10b X-CR-MTA-TID: 64aa7808 Received: from df1bd1312f55.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id DDF699AC-30BE-4544-90C3-A4C397B9A4EC.1; Fri, 23 Feb 2024 14:00:04 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id df1bd1312f55.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 23 Feb 2024 14:00:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=noKJPvlOylPybxo7yC8YJDTmDNPmG712aC8jkA/cDI883qp15zRaNoYxiTD6dkj9FVLOJsWjSBMDfFNXkl23R+dmJ8cm4uEjHX/7Fed5Z0IjSEvaex+MwmKjApCzRRF5k/RazdUPdljjqm6w6c0mGpDHRfkyvYnJcT+INqf919zX/KyGkH+CVzJyoM+W1knfK10wwGnD2HPZpSBSJw9TJNgYGNs026rzTqDrqve0SvtN15xnhs80SZ1EaG4EP7SYNit+XBtDHxar3uHZGvtH6JdGBe17sr+/ZEqlNTAwvtzEk8nqBeWPG3qKVf5XW/56angBvf62jq9kULDw+jAOaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+beb7esEH/EGQIRJnoo90d/2IUt1LuQqFe4C2bi9exo=; b=RUWNPG1F6KuTCRXs8mTBLqxNLLbkMTojYG24kEgZ8nDXmcDWIsokK31yAAjEY5LBF98H1ZfUtWqehPHcm8QJv2QJI6ibRdVFRiYXYfDxjg6Q79dBcWvZFnVF3oPPP36lLKavB7J3vBsteChYhsv8xMWQFHCTYfKd0RqaWyQsCGLI0z5xf/lokF0Y+fhHHS/zIn5Iw6KG/onLdIYSB8XXABm3aPK8BgQn7HY4Gpqz1Cs7MLQkwLs6bCu/VnTKs9l/VTaLdr+WIrRgSNFBH3XyTVjHFVmgA8MpL7f0aBais75vrjYDoYRiPwnhcrEZ3w2V+zrvSQ7P4N7CaePI4FFIWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+beb7esEH/EGQIRJnoo90d/2IUt1LuQqFe4C2bi9exo=; b=loaHdJ6dFtLhFH1LvrmhhgXaXJgVIriVrdB4auRqGV+ptz7Lo77o7EB0mrBgIFDS5sZiN5LADCTQtu+g0cyonC97TBLQ8xVjyjBqHLQNsyubN0foWE0nVRIGRyUrhlAm2OKGXElEjM5dGY/NGCfhG9PRyaDlvqw/iho5S2UWgoY= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VE1PR08MB4893.eurprd08.prod.outlook.com (2603:10a6:802:aa::13) by AM9PR08MB5906.eurprd08.prod.outlook.com (2603:10a6:20b:285::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.22; Fri, 23 Feb 2024 14:00:03 +0000 Received: from VE1PR08MB4893.eurprd08.prod.outlook.com ([fe80::c61c:d59c:1a2b:52d3]) by VE1PR08MB4893.eurprd08.prod.outlook.com ([fe80::c61c:d59c:1a2b:52d3%6]) with mapi id 15.20.7316.023; Fri, 23 Feb 2024 14:00:02 +0000 Message-ID: <41ed1e4d-851e-4413-842a-3bc058a86665@arm.com> Date: Fri, 23 Feb 2024 13:59:59 +0000 User-Agent: Mozilla Thunderbird Subject: [PATCH v1 2/2][Binutils] aarch64: Fix sve2p1 ld[1-4]q/st[1-4]q instructions encoding and syntax. Content-Language: en-US From: Srinath Parvathaneni To: Binutils Cc: Nick Clifton , Richard Earnshaw , Jan Beulich References: <15bd8211-0e3c-4aed-b316-5749d32f6fb7@arm.com> In-Reply-To: <15bd8211-0e3c-4aed-b316-5749d32f6fb7@arm.com> X-ClientProxiedBy: LO4P123CA0546.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:319::17) To VE1PR08MB4893.eurprd08.prod.outlook.com (2603:10a6:802:aa::13) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VE1PR08MB4893:EE_|AM9PR08MB5906:EE_|AM4PEPF00027A5E:EE_|AS4PR08MB7855:EE_ X-MS-Office365-Filtering-Correlation-Id: 7df894f4-c363-4589-ba57-08dc3477c0b7 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: fOGXXL4uyqLdxE+1f2Effp2VhfAcItszAaiFxAbQBpc9uDBZrF7YNin3c2e+YTOJ4NL8kdOW9wlI9EK0t8a6oeNCKf0UcjYgyl39PkaF3mwMHS3ArFd8jOGKhy3xvuLK4awqo2UhJAAaM26otFmx/GhMEw2oMEKh7z3LtKKgqJkNJrctYwgJArh+5s+J/t0oLBwdQC6s/M4EK0JsnfifR5EzUjesLHFwYdaPtZAoRAkK1JAIuLI0tBZseUE2yCU45/6Vqu3dT9y0HXYZU97MuuCUT9Q7PDGR4YxtYTQZIyWJzLomibGNy8ufTSHQuLJg1FSCsrZav6fC2XHJ6Qjor8lKLWq0OOMRrVqPGW7P2MkN7mY3i0N4rtjo24lNv9BgSifOKoS1yrb2oLVVPryFumD9XxnKDZEyelm9A7RZGzVeCMXoMrV9TYyCR3w2hH9Bdh2a6x7N0xvGZL4IUR8D5A4W9ogMK4V7Jc1DsDLI32OU2eeuFdentEO/FvWWUdEaRoCJivqye0i1Oqx+a1lfzA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR08MB4893.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB5906 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00027A5E.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: ff85089f-37f7-4ed9-038a-08dc3477bb3b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Zwe8peoD6SFy1oApWpTNEe7HwE1LwAhsJSoWAJVpqnDsJOXwc7yb30qfFAELALBr0c444Aw9iTm43BF/cHOOKCl6DAHMBxMPXG9+39hs4vVi3ZM5IkRN+SyiAgbJQpvAOQsayU9zEWst5qIbuctukabhEj5HBugCeompqCHM80GQGbwH50OiLw121TcLi6Yp7hCVCNZI3k8WJkt5Tqppmx4ZM4Yv+ViRj+9YQQZfTUtJ2Fowth99krudl12Xpawu5omuIqILI7bXwvLIE7Q1EPg/hXSMxWnV7dYDCyPO1OiFXkYz9AipF41ApwTR2BsfGkb1GgOrwEt5mGBr7op8u47IpKbrkPu9DaxnhW5ZuH0vw6N6RwdEYfrR6qqBgQVaaH7MCtHjLgi76JaFMYMIoTEhYkjRaL2trYSwnFyYq0s5uEmeMcEOr4JTJsi6fIwWk3tHbVIz3Tc0c3XJYw5vESFCEjPdnbMq/ta92VyScF5vOXDw8A33GERavw5OnNyueVS8F1bHeZq+nPeTE3EnfhZ6+Fy6BOQPQy1F5zmxzev+NPF1prLzeVbdHeuB4XcOhadFiSLIEK3TNDyixkyRdDN0MBzcd5dTPHXyRODtcByVgntFkCdyrIdk9ae7uOdWsrKoBzRmtxnd9JY+WlmGmg== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230031)(36860700004)(46966006)(40470700004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Feb 2024 14:00:11.8005 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7df894f4-c363-4589-ba57-08dc3477c0b7 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM4PEPF00027A5E.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7855 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY 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.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1791698494104447882 X-GMAIL-MSGID: 1791698494104447882 Hi, This patch fixes encoding and syntax for sve2p1 instructions as mentioned below, for the issues reported here. https://sourceware.org/pipermail/binutils/2024-February/132408.html 1) ld1q and st1q first register operand to accept enclosed figure braces. 2) ld2q, ld3q, ld4q, st2q, st3q, and st4q instructions to accept wrapping    sequence of vector registers. 3) Fixes the encoding for bits 13 and 14 for ld2q's scalar plus scalar encoding. 4) ld3q/st3q and ld4q/st4q scalar plus immediate forms accepts multiple of 3 and 4 respectively. Regression testing for aarch64-none-elf target and found no regressions. Ok for binutils-master? Also ok to be backported to binutils-2.42 branch? Regards, Srinath. diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 01e2bbf70c8b9812df8f1c6f8677bce2181701fa..64dc697fa7a4c9fbc0bdee186f6c7631af5dc304 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -6748,9 +6748,10 @@ parse_operands (char *str, const aarch64_opcode *opcode) case AARCH64_OPND_SVE_ZtxN: case AARCH64_OPND_SME_Zdnx2: case AARCH64_OPND_SME_Zdnx4: - case AARCH64_OPND_SME_Zt2: - case AARCH64_OPND_SME_Zt3: - case AARCH64_OPND_SME_Zt4: + case AARCH64_OPND_SVE_Zt1: + case AARCH64_OPND_SVE_Zt2: + case AARCH64_OPND_SVE_Zt3: + case AARCH64_OPND_SVE_Zt4: case AARCH64_OPND_SME_Zmx2: case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: diff --git a/gas/testsuite/gas/aarch64/sme-5-illegal.l b/gas/testsuite/gas/aarch64/sme-5-illegal.l index c4bfc1f8b5adbd929d32303a3eed9b04172cfc0a..b0736e0fcd67bec6b2fd560652462ceb56556a9e 100644 --- a/gas/testsuite/gas/aarch64/sme-5-illegal.l +++ b/gas/testsuite/gas/aarch64/sme-5-illegal.l @@ -35,10 +35,10 @@ [^:]*:[0-9]+: Error: immediate offset out of range 0 to 1 at operand 1 -- `ld1d {za7h.d\[w15,2\]},p7/z,\[sp\]' [^:]*:[0-9]+: Error: immediate offset out of range 0 to 1 at operand 1 -- `ld1d {za7v.d\[w15,2\]},p7/z,\[x0,x17,lsl#3\]' [^:]*:[0-9]+: Error: immediate offset out of range 0 to 1 at operand 1 -- `ld1d {za7h.d\[w15,2\]},p7/z,\[sp,x17,lsl#3\]' -[^:]*:[0-9]+: Error: expected a ZA tile slice at operand 1 -- `ld1q {za16v.q\[w12\]},p0/z,\[x0\]' -[^:]*:[0-9]+: Error: expected a ZA tile slice at operand 1 -- `ld1q {za16h.q\[w12\]},p0/z,\[sp\]' -[^:]*:[0-9]+: Error: expected a ZA tile slice at operand 1 -- `ld1q {za16v.q\[w12\]},p0/z,\[x0,x0,lsl#4\]' -[^:]*:[0-9]+: Error: expected a ZA tile slice at operand 1 -- `ld1q {za16h.q\[w12\]},p0/z,\[sp,x0,lsl#4\]' +[^:]*:[0-9]+: Error: expected an SVE vector register or ZA tile slice at operand 1 -- `ld1q {za16v.q\[w12\]},p0/z,\[x0\]' +[^:]*:[0-9]+: Error: expected an SVE vector register or ZA tile slice at operand 1 -- `ld1q {za16h.q\[w12\]},p0/z,\[sp\]' +[^:]*:[0-9]+: Error: expected an SVE vector register or ZA tile slice at operand 1 -- `ld1q {za16v.q\[w12\]},p0/z,\[x0,x0,lsl#4\]' +[^:]*:[0-9]+: Error: expected an SVE vector register or ZA tile slice at operand 1 -- `ld1q {za16h.q\[w12\]},p0/z,\[sp,x0,lsl#4\]' [^:]*:[0-9]+: Error: immediate offset must be 0 at operand 1 -- `ld1q {za15v.q\[w15,1\]},p7/z,\[x17\]' [^:]*:[0-9]+: Error: immediate offset must be 0 at operand 1 -- `ld1q {za15h.q\[w15,1\]},p7/z,\[sp\]' [^:]*:[0-9]+: Error: immediate offset must be 0 at operand 1 -- `ld1q {za15v.q\[w15,1\]},p7/z,\[x0,x17,lsl#4\]' diff --git a/gas/testsuite/gas/aarch64/sme-6-illegal.l b/gas/testsuite/gas/aarch64/sme-6-illegal.l index b98b76faaed5d79fe068291ff3892f3c89b42617..10c2a51204b5a027f3d5b7dc19aecfccd2ab993f 100644 --- a/gas/testsuite/gas/aarch64/sme-6-illegal.l +++ b/gas/testsuite/gas/aarch64/sme-6-illegal.l @@ -35,10 +35,10 @@ [^:]*:[0-9]+: Error: immediate offset out of range 0 to 1 at operand 1 -- `st1d {za7h.d\[w15,2\]},p7,\[sp\]' [^:]*:[0-9]+: Error: immediate offset out of range 0 to 1 at operand 1 -- `st1d {za7v.d\[w15,2\]},p7,\[x0,x17,lsl#3\]' [^:]*:[0-9]+: Error: immediate offset out of range 0 to 1 at operand 1 -- `st1d {za7h.d\[w15,2\]},p7,\[sp,x17,lsl#3\]' -[^:]*:[0-9]+: Error: expected a ZA tile slice at operand 1 -- `st1q {za16v.q\[w12\]},p0,\[x0\]' -[^:]*:[0-9]+: Error: expected a ZA tile slice at operand 1 -- `st1q {za16h.q\[w12\]},p0,\[sp\]' -[^:]*:[0-9]+: Error: expected a ZA tile slice at operand 1 -- `st1q {za16v.q\[w12\]},p0,\[x0,x0,lsl#4\]' -[^:]*:[0-9]+: Error: expected a ZA tile slice at operand 1 -- `st1q {za16h.q\[w12\]},p0,\[sp,x0,lsl#4\]' +[^:]*:[0-9]+: Error: expected an SVE vector register or ZA tile slice at operand 1 -- `st1q {za16v.q\[w12\]},p0,\[x0\]' +[^:]*:[0-9]+: Error: expected an SVE vector register or ZA tile slice at operand 1 -- `st1q {za16h.q\[w12\]},p0,\[sp\]' +[^:]*:[0-9]+: Error: expected an SVE vector register or ZA tile slice at operand 1 -- `st1q {za16v.q\[w12\]},p0,\[x0,x0,lsl#4\]' +[^:]*:[0-9]+: Error: expected an SVE vector register or ZA tile slice at operand 1 -- `st1q {za16h.q\[w12\]},p0,\[sp,x0,lsl#4\]' [^:]*:[0-9]+: Error: immediate offset must be 0 at operand 1 -- `st1q {za15v.q\[w15,1\]},p7,\[x17\]' [^:]*:[0-9]+: Error: immediate offset must be 0 at operand 1 -- `st1q {za15h.q\[w15,1\]},p7,\[sp\]' [^:]*:[0-9]+: Error: immediate offset must be 0 at operand 1 -- `st1q {za15v.q\[w15,1\]},p7,\[x0,x17,lsl#4\]' diff --git a/gas/testsuite/gas/aarch64/sve2p1-1-bad.l b/gas/testsuite/gas/aarch64/sve2p1-1-bad.l index 83917440e8187252c01892ce32100213cfef998c..1b6a9683b6583ab1981d64a99cc3d8276bc3dd9c 100644 --- a/gas/testsuite/gas/aarch64/sve2p1-1-bad.l +++ b/gas/testsuite/gas/aarch64/sve2p1-1-bad.l @@ -66,17 +66,3 @@ .*: Error: selected processor does not support `fminqv v4.2d,p3,z2.d' .*: Error: selected processor does not support `fminqv v8.2d,p4,z1.d' .*: Error: selected processor does not support `fminqv v16.4s,p7,z0.s' -.*: Error: selected processor does not support `ld1q Z0.Q,p4/Z,\[Z16.D,x0\]' -.*: Error: selected processor does not support `ld2q {Z0.Q,Z1.Q},p4/Z,\[x0,#-4,MUL VL\]' -.*: Error: selected processor does not support `ld3q {Z0.Q,Z1.Q,Z2.Q},p4/Z,\[x0,#-4,MUL VL\]' -.*: Error: selected processor does not support `ld4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p4/Z,\[x0,#-4,MUL VL\]' -.*: Error: selected processor does not support `ld2q {Z0.Q,Z1.Q},p4/Z,\[x0,x2,lsl#4\]' -.*: Error: selected processor does not support `ld3q {Z0.Q,Z1.Q,Z2.Q},p4/Z,\[x0,x4,lsl#4\]' -.*: Error: selected processor does not support `ld4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p4/Z,\[x0,x6,lsl#4\]' -.*: Error: selected processor does not support `st1q Z0.Q,p4,\[Z16.D,x0\]' -.*: Error: selected processor does not support `st2q {Z0.Q,Z1.Q},p4,\[x0,#-4,MUL VL\]' -.*: Error: selected processor does not support `st3q {Z0.Q,Z1.Q,Z2.Q},p4,\[x0,#-4,MUL VL\]' -.*: Error: selected processor does not support `st4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p4,\[x0,#-4,MUL VL\]' -.*: Error: selected processor does not support `st2q {Z0.Q,Z1.Q},p4,\[x0,x2,lsl#4\]' -.*: Error: selected processor does not support `st3q {Z0.Q,Z1.Q,Z2.Q},p4,\[x0,x4,lsl#4\]' -.*: Error: selected processor does not support `st4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p4,\[x0,x6,lsl#4\]' diff --git a/gas/testsuite/gas/aarch64/sve2p1-1.d b/gas/testsuite/gas/aarch64/sve2p1-1.d index ea8c5448a4181f7fc73bee8e46119cc796f2784c..81baca64b866aef060cc48c7825a9d2984a17833 100644 --- a/gas/testsuite/gas/aarch64/sve2p1-1.d +++ b/gas/testsuite/gas/aarch64/sve2p1-1.d @@ -75,17 +75,3 @@ .*: 64d7ac44 fminqv v4.2d, p3, z2.d .*: 64d7b028 fminqv v8.2d, p4, z1.d .*: 6497bc10 fminqv v16.4s, p7, z0.s -.*: c400b200 ld1q z0.q, p4/z, \[z16.d, x0\] -.*: a49ef000 ld2q {z0.q, z1.q}, p4/z, \[x0, #-4, mul vl\] -.*: a51ef000 ld3q {z0.q, z1.q, z2.q}, p4/z, \[x0, #-4, mul vl\] -.*: a59ef000 ld4q {z0.q, z1.q, z2.q, z3.q}, p4/z, \[x0, #-4, mul vl\] -.*: a4a2f000 ld2h {z0.h-z1.h}, p4/z, \[x0, #4, mul vl\] -.*: a5249000 ld3q {z0.q, z1.q, z2.q}, p4/z, \[x0, x4, lsl #4\] -.*: a5a69000 ld4q {z0.q, z1.q, z2.q, z3.q}, p4/z, \[x0, x6, lsl #4\] -.*: e4203200 st1q z0.q, p4, \[z16.d, x0\] -.*: e44e1000 st2q {z0.q, z1.q}, p4, \[x0, #-4, mul vl\] -.*: e48e1000 st3q {z0.q, z1.q, z2.q}, p4, \[x0, #-4, mul vl\] -.*: e4ce1000 st4q {z0.q, z1.q, z2.q, z3.q}, p4, \[x0, #-4, mul vl\] -.*: e4621000 st2q {z0.q, z1.q}, p4, \[x0, x2, lsl #4\] -.*: e4a41000 st3q {z0.q, z1.q, z2.q}, p4, \[x0, x4, lsl #4\] -.*: e4e61000 st4q {z0.q, z1.q, z2.q, z3.q}, p4, \[x0, x6, lsl #4\] diff --git a/gas/testsuite/gas/aarch64/sve2p1-1.s b/gas/testsuite/gas/aarch64/sve2p1-1.s index 12a086b078f259b4aeb840f95b1e40e37e379fe6..1e7c2ceceba8198df018eeade0defeca7517ce17 100644 --- a/gas/testsuite/gas/aarch64/sve2p1-1.s +++ b/gas/testsuite/gas/aarch64/sve2p1-1.s @@ -75,18 +75,3 @@ fminqv v2.4s, p2, z4.s fminqv v4.2d, p3, z2.d fminqv v8.2d, p4, z1.d fminqv v16.4s, p7, z0.s -ld1q Z0.Q, p4/Z, [Z16.D, x0] -ld2q {Z0.Q, Z1.Q}, p4/Z, [x0, #-4, MUL VL] -ld3q {Z0.Q, Z1.Q, Z2.Q}, p4/Z, [x0, #-4, MUL VL] -ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p4/Z, [x0, #-4, MUL VL] -ld2q {Z0.Q, Z1.Q}, p4/Z, [x0, x2, lsl #4] -ld3q {Z0.Q, Z1.Q, Z2.Q}, p4/Z, [x0, x4, lsl #4] -ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p4/Z, [x0, x6, lsl #4] - -st1q Z0.Q, p4, [Z16.D, x0] -st2q {Z0.Q, Z1.Q}, p4, [x0, #-4, MUL VL] -st3q {Z0.Q, Z1.Q, Z2.Q}, p4, [x0, #-4, MUL VL] -st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p4, [x0, #-4, MUL VL] -st2q {Z0.Q, Z1.Q}, p4, [x0, x2, lsl #4] -st3q {Z0.Q, Z1.Q, Z2.Q}, p4, [x0, x4, lsl #4] -st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p4, [x0, x6, lsl #4] diff --git a/gas/testsuite/gas/aarch64/sve2p1-4-invalid.d b/gas/testsuite/gas/aarch64/sve2p1-4-invalid.d new file mode 100644 index 0000000000000000000000000000000000000000..2363a12484de04b760500d5c5176c173acd78cbc --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4-invalid.d @@ -0,0 +1,3 @@ +#name: Test of illegal SVE2.1 ld[1-4]q/st[1-4]q instructions. +#as: -march=armv9.4-a +#error_output: sve2p1-4-invalid.l diff --git a/gas/testsuite/gas/aarch64/sve2p1-4-invalid.l b/gas/testsuite/gas/aarch64/sve2p1-4-invalid.l new file mode 100644 index 0000000000000000000000000000000000000000..075ffd82fb78dd4cd023a590f9a31ebd90b82bcb --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4-invalid.l @@ -0,0 +1,88 @@ +.*: Assembler messages: +.*: Error: missing braces at operand 1 -- `ld1q Z0.Q,P0/Z,\[Z0.D,x0\]' +.*: Error: p0-p7 expected at operand 2 -- `ld1q {Z0.Q},P8/Z,\[Z0.D,x0\]' +.*: Error: invalid base register at operand 3 -- `ld1q {Z0.Q},P0/Z,\[Z31.Q,x0\]' + +.*: Error: invalid addressing mode at operand 3 -- `ld1q {Z0.Q},P0/Z,\[Z0.D,x31\]' +.*: Error: operand mismatch -- `ld1q {Z31.D},P7/Z,\[Z31.D,x30\]' +.*: Info: did you mean this\? +.*: Info: ld1q {z31.q}, p7/z, \[z31.d, x30\] +.*: Error: invalid register list at operand 1 -- `ld2q {Z31.Q,Z31.Q},p0/Z,\[x0,#-2,MUL VL\]' +.*: Error: p0-p7 expected at operand 2 -- `ld2q {Z0.Q,Z1.Q},p8/Z,\[x0,#-2,MUL VL\]' +.*: Error: invalid base register at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[x31,#-2,MUL VL\]' +.*: Error: immediate value must be a multiple of 2 at operand 3 -- `ld2q {Z30.Q,Z31.Q},p7/Z,\[x30,#-3,MUL VL\]' +.*: Error: invalid register list at operand 1 -- `ld3q {Z0.Q,Z1.Q,Z3.Q},p0/Z,\[x0,#-3,MUL VL\]' +.*: Error: operand mismatch -- `ld3q {Z29.Q,Z30.Q,Z31.Q},p8/M,\[x0,#-3,MUL VL\]' +.*: Info: did you mean this\? +.*: Info: ld3q {z29.q, z30.q, z31.q}, p8/z, \[x0, #-3, mul vl\] +.*: Error: immediate value must be a multiple of 3 at operand 3 -- `ld3q {Z0.Q,Z1.Q,Z2.Q},p7/Z,\[x0,#-2,MUL VL\]' +.*: Error: invalid base register at operand 3 -- `ld3q {Z0.Q,Z1.Q,Z2.Q},p0/Z,\[x31,#-3,MUL VL\]' +.*: Error: type mismatch in vector register list at operand 1 -- `ld3q {Z29.Q,Z30.Q,Z31.D},p7/Z,\[x30,#-3,MUL VL\]' +.*: Error: expected a list of 4 registers at operand 1 -- `ld4q {Z0.Q,Z1.Q,Z2.Q},p0/Z,\[x0,#-4,MUL VL\]' +.*: Error: p0-p7 expected at operand 2 -- `ld4q {Z28.Q,Z29.Q,Z30.Q,Z31.Q},p9/Z,\[x0,#-4,MUL VL\]' +.*: Error: immediate value must be a multiple of 4 at operand 3 -- `ld4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p7/Z,\[x0,#-3,MUL VL\]' +.*: Error: invalid base register at operand 3 -- `ld4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p0/Z,\[x31,#-4,MUL VL\]' +.*: Error: type mismatch in vector register list at operand 1 -- `ld4q {Z28.Q,Z29.Q,Z30.D,Z31.Q},p7/Z,\[x30,#-4,MUL VL\]' +.*: Error: invalid addressing mode at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[x0,x0,LSL#3\]' +.*: Error: invalid register list at operand 1 -- `ld2q {Z31.Q,Z31.Q},p0/Z,\[x0,x0,LSL#4\]' +.*: Error: p0-p7 expected at operand 2 -- `ld2q {Z0.Q,Z1.Q},p8/Z,\[x0,x0,LSL#4\]' +.*: Error: invalid base register at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[x31,x0,LSL#4\]' +.*: Error: only 'MUL VL' is permitted at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[x0,x31,LSL#4\]' +.*: Error: invalid base register at operand 3 -- `ld2q {Z30.Q,Z31.Q},p7/Z,\[x31,x31,LSL#4\]' +.*: Error: shift expression expected at operand 3 -- `ld3q {Z0.Q,Z1.Q,Z2.Q},p0/Z,\[x0,x0,#4\]' +.*: Error: invalid addressing mode at operand 3 -- `ld3q {Z29.Q,Z30.Q,Z31.Q},p0/Z,\[x0,x0,LSL#2\]' +.*: Error: operand mismatch -- `ld3q {Z0.Q,Z1.Q,Z2.Q},p7/M,\[x0,x0,LSL#4\]' +.*: Info: did you mean this\? +.*: Info: ld3q {z0.q, z1.q, z2.q}, p7/z, \[x0, x0, lsl #4\] +.*: Error: p0-p7 expected at operand 2 -- `ld3q {Z0.Q,Z1.Q,Z2.Q},p8/Z,\[x30,x0,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `ld3q {Z4.Q,Z1.Q,Z2.Q},p0/Z,\[x31,x30,LSL#4\]' +.*: Error: type mismatch in vector register list at operand 1 -- `ld3q {Z29.D,Z30.Q,Z31.Q},p7/Z,\[x31,x30,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `ld4q {Z1.Q,Z1.Q,Z2.Q,Z3.Q},p0/Z,\[x0,x0,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `ld4q {Z30.Q,Z29.Q,Z30.Q,Z31.Q},p8/Z,\[x0,x0,LSL#4\]' +.*: Error: invalid addressing mode at operand 3 -- `ld4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p7/Z,\[x0,x0,LSL#2\]' +.*: Error: invalid base register at operand 3 -- `ld4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p0/Z,\[x31,x0,LSL#4\]' +.*: Error: type mismatch in vector register list at operand 1 -- `ld4q {Z0.Q,Z1.Q,Z2.D,Z3.Q},p0/Z,\[x1,x30,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `ld4q {Z2.Q,Z29.Q,Z30.Q,Z31.Q},p7/Z,\[x30,x30,LSL#4\]' +.*: Error: missing braces at operand 1 -- `st1q Z0.Q,P0,\[Z0.D,x0\]' +.*: Error: p0-p7 expected at operand 2 -- `st1q {Z0.Q},P8,\[Z0.D,x0\]' +.*: Error: invalid base register at operand 3 -- `st1q {Z0.Q},P0,\[Z31.Q,x0\]' +.*: Error: invalid addressing mode at operand 3 -- `st1q {Z0.Q},P0,\[Z0.D,x31\]' +.*: Error: operand mismatch -- `st1q {Z31.D},P7,\[Z31.D,x30\]' +.*: Info: did you mean this\? +.*: Info: st1q {z31.q}, p7, \[z31.d, x30\] +.*: Error: invalid register list at operand 1 -- `st2q {Z31.Q,Z31.Q},p0,\[x0,#-2,MUL VL\]' +.*: Error: p0-p7 expected at operand 2 -- `st2q {Z0.Q,Z1.Q},p8,\[x0,#-2,MUL VL\]' +.*: Error: invalid base register at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[x31,#-2,MUL VL\]' +.*: Error: immediate value must be a multiple of 2 at operand 3 -- `st2q {Z30.Q,Z31.Q},p7,\[x30,#-3,MUL VL\]' +.*: Error: invalid register list at operand 1 -- `st3q {Z0.Q,Z1.Q,Z3.Q},p0,\[x0,#-3,MUL VL\]' +.*: Error: operand mismatch -- `st3q {Z29.Q,Z30.Q,Z31.Q},p8/M,\[x0,#-3,MUL VL\]' +.*: Info: did you mean this\? +.*: Info: st3q {z29.q, z30.q, z31.q}, p8, \[x0, #-3, mul vl\] +.*: Error: immediate value must be a multiple of 3 at operand 3 -- `st3q {Z0.Q,Z1.Q,Z2.Q},p7,\[x0,#-2,MUL VL\]' +.*: Error: invalid base register at operand 3 -- `st3q {Z0.Q,Z1.Q,Z2.Q},p0,\[x31,#-3,MUL VL\]' +.*: Error: type mismatch in vector register list at operand 1 -- `st3q {Z29.Q,Z30.Q,Z31.D},p7,\[x30,#-3,MUL VL\]' +.*: Error: expected a list of 4 registers at operand 1 -- `st4q {Z0.Q,Z1.Q,Z2.Q},p0,\[x0,#-4,MUL VL\]' +.*: Error: p0-p7 expected at operand 2 -- `st4q {Z28.Q,Z29.Q,Z30.Q,Z31.Q},p9,\[x0,#-4,MUL VL\]' +.*: Error: immediate value must be a multiple of 4 at operand 3 -- `st4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p7,\[x0,#-3,MUL VL\]' +.*: Error: invalid base register at operand 3 -- `st4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p0,\[x31,#-4,MUL VL\]' +.*: Error: type mismatch in vector register list at operand 1 -- `st4q {Z28.Q,Z29.Q,Z30.D,Z31.Q},p7,\[x30,#-4,MUL VL\]' +.*: Error: invalid addressing mode at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[x0,x0,LSL#3\]' +.*: Error: invalid register list at operand 1 -- `st2q {Z31.Q,Z31.Q},p0,\[x0,x0,LSL#4\]' +.*: Error: p0-p7 expected at operand 2 -- `st2q {Z0.Q,Z1.Q},p8,\[x0,x0,LSL#4\]' +.*: Error: invalid base register at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[x31,x0,LSL#4\]' +.*: Error: only 'MUL VL' is permitted at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[x0,x31,LSL#4\]' +.*: Error: invalid base register at operand 3 -- `st2q {Z30.Q,Z31.Q},p7,\[x31,x31,LSL#4\]' +.*: Error: shift expression expected at operand 3 -- `st3q {Z0.Q,Z1.Q,Z2.Q},p0,\[x0,x0,#4\]' +.*: Error: invalid addressing mode at operand 3 -- `st3q {Z29.Q,Z30.Q,Z31.Q},p0,\[x0,x0,LSL#2\]' +.*: Error: operand mismatch -- `st3q {Z0.Q,Z1.Q,Z2.Q},p7/M,\[x0,x0,LSL#4\]' +.*: Info: did you mean this\? +.*: Info: st3q {z0.q, z1.q, z2.q}, p7, \[x0, x0, lsl #4\] +.*: Error: p0-p7 expected at operand 2 -- `st3q {Z0.Q,Z1.Q,Z2.Q},p8,\[x30,x0,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `st3q {Z4.Q,Z1.Q,Z2.Q},p0,\[x31,x30,LSL#4\]' +.*: Error: type mismatch in vector register list at operand 1 -- `st3q {Z29.D,Z30.Q,Z31.Q},p7,\[x31,x30,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `st4q {Z1.Q,Z1.Q,Z2.Q,Z3.Q},p0,\[x0,x0,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `st4q {Z30.Q,Z29.Q,Z30.Q,Z31.Q},p8,\[x0,x0,LSL#4\]' +.*: Error: invalid addressing mode at operand 3 -- `st4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p7,\[x0,x0,LSL#2\]' +.*: Error: invalid base register at operand 3 -- `st4q {Z0.Q,Z1.Q,Z2.Q,Z3.Q},p0,\[x31,x0,LSL#4\]' +.*: Error: type mismatch in vector register list at operand 1 -- `st4q {Z0.Q,Z1.Q,Z2.D,Z3.Q},p0,\[x1,x30,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `st4q {Z2.Q,Z29.Q,Z30.Q,Z31.Q},p7,\[x30,x30,LSL#4\]' diff --git a/gas/testsuite/gas/aarch64/sve2p1-4-invalid.s b/gas/testsuite/gas/aarch64/sve2p1-4-invalid.s new file mode 100644 index 0000000000000000000000000000000000000000..4c814c9924e73033a5cb3768e03099a4302a7fa2 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4-invalid.s @@ -0,0 +1,89 @@ +ld1q Z0.Q , P0/Z, [Z0.D, x0] +ld1q { Z0.Q }, P8/Z, [Z0.D, x0] +ld1q { Z0.Q }, P0/Z, [Z31.Q, x0] +ld1q { Z0.Q }, P0/Z, [Z0.D, x31] +ld1q { Z31.D }, P7/Z, [Z31.D, x30] + +ld2q {Z0.Q, Z2.Q}, p0/Z, [x0, #-2, MUL VL] +ld2q {Z31.Q, Z31.Q}, p0/Z, [x0, #-2, MUL VL] +ld2q {Z0.Q, Z1.Q}, p8/Z, [x0, #-2, MUL VL] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x31, #-2, MUL VL] +ld2q {Z30.Q, Z31.Q}, p7/Z, [x30, #-3, MUL VL] + +ld3q {Z0.Q, Z1.Q, Z3.Q}, p0/Z, [x0, #-3, MUL VL] +ld3q {Z29.Q, Z30.Q, Z31.Q}, p8/M, [x0, #-3, MUL VL] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p7/Z, [x0, #-2, MUL VL] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x31, #-3, MUL VL] +ld3q {Z29.Q, Z30.Q, Z31.D}, p7/Z, [x30, #-3, MUL VL] + +ld4q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, #-4, MUL VL] +ld4q {Z28.Q, Z29.Q, Z30.Q,Z31.Q}, p9/Z, [x0, #-4, MUL VL] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7/Z, [x0, #-3, MUL VL] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x31, #-4, MUL VL] +ld4q {Z28.Q, Z29.Q, Z30.D, Z31.Q}, p7/Z, [x30, #-4, MUL VL] + +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, x0, LSL #3] +ld2q {Z31.Q, Z31.Q}, p0/Z, [x0, x0, LSL #4] +ld2q {Z0.Q, Z1.Q}, p8/Z, [x0, x0, LSL #4] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x31, x0, LSL #4] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, x31, LSL #4] +ld2q {Z30.Q, Z31.Q}, p7/Z, [x31, x31, LSL #4] + +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, x0, #4] +ld3q {Z29.Q, Z30.Q, Z31.Q}, p0/Z, [x0, x0, LSL #2] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p7/M, [x0, x0, LSL #4] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p8/Z, [x30, x0, LSL #4] +ld3q {Z4.Q, Z1.Q, Z2.Q}, p0/Z, [x31, x30, LSL #4] +ld3q {Z29.D, Z30.Q, Z31.Q}, p7/Z, [x31, x30, LSL #4] + +ld4q {Z1.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, x0, LSL #4] +ld4q {Z30.Q, Z29.Q, Z30.Q,Z31.Q}, p8/Z, [x0, x0, LSL #4] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7/Z, [x0, x0, LSL #2] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x31, x0, LSL #4] +ld4q {Z0.Q, Z1.Q, Z2.D, Z3.Q}, p0/Z, [x1, x30, LSL #4] +ld4q {Z2.Q, Z29.Q, Z30.Q, Z31.Q}, p7/Z, [x30, x30, LSL #4] + +st1q Z0.Q , P0, [Z0.D, x0] +st1q { Z0.Q }, P8, [Z0.D, x0] +st1q { Z0.Q }, P0, [Z31.Q, x0] +st1q { Z0.Q }, P0, [Z0.D, x31] +st1q { Z31.D }, P7, [Z31.D, x30] + +st2q {Z0.Q, Z2.Q}, p0, [x0, #-2, MUL VL] +st2q {Z31.Q, Z31.Q}, p0, [x0, #-2, MUL VL] +st2q {Z0.Q, Z1.Q}, p8, [x0, #-2, MUL VL] +st2q {Z0.Q, Z1.Q}, p0, [x31, #-2, MUL VL] +st2q {Z30.Q, Z31.Q}, p7, [x30, #-3, MUL VL] + +st3q {Z0.Q, Z1.Q, Z3.Q}, p0, [x0, #-3, MUL VL] +st3q {Z29.Q, Z30.Q, Z31.Q}, p8/M, [x0, #-3, MUL VL] +st3q {Z0.Q, Z1.Q, Z2.Q}, p7, [x0, #-2, MUL VL] +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x31, #-3, MUL VL] +st3q {Z29.Q, Z30.Q, Z31.D}, p7, [x30, #-3, MUL VL] + +st4q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, #-4, MUL VL] +st4q {Z28.Q, Z29.Q, Z30.Q,Z31.Q}, p9, [x0, #-4, MUL VL] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7, [x0, #-3, MUL VL] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x31, #-4, MUL VL] +st4q {Z28.Q, Z29.Q, Z30.D, Z31.Q}, p7, [x30, #-4, MUL VL] + +st2q {Z0.Q, Z1.Q}, p0, [x0, x0, LSL #3] +st2q {Z31.Q, Z31.Q}, p0, [x0, x0, LSL #4] +st2q {Z0.Q, Z1.Q}, p8, [x0, x0, LSL #4] +st2q {Z0.Q, Z1.Q}, p0, [x31, x0, LSL #4] +st2q {Z0.Q, Z1.Q}, p0, [x0, x31, LSL #4] +st2q {Z30.Q, Z31.Q}, p7, [x31, x31, LSL #4] + +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, x0, #4] +st3q {Z29.Q, Z30.Q, Z31.Q}, p0, [x0, x0, LSL #2] +st3q {Z0.Q, Z1.Q, Z2.Q}, p7/M, [x0, x0, LSL #4] +st3q {Z0.Q, Z1.Q, Z2.Q}, p8, [x30, x0, LSL #4] +st3q {Z4.Q, Z1.Q, Z2.Q}, p0, [x31, x30, LSL #4] +st3q {Z29.D, Z30.Q, Z31.Q}, p7, [x31, x30, LSL #4] + +st4q {Z1.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, x0, LSL #4] +st4q {Z30.Q, Z29.Q, Z30.Q,Z31.Q}, p8, [x0, x0, LSL #4] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7, [x0, x0, LSL #2] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x31, x0, LSL #4] +st4q {Z0.Q, Z1.Q, Z2.D, Z3.Q}, p0, [x1, x30, LSL #4] +st4q {Z2.Q, Z29.Q, Z30.Q, Z31.Q}, p7, [x30, x30, LSL #4] diff --git a/gas/testsuite/gas/aarch64/sve2p1-4.d b/gas/testsuite/gas/aarch64/sve2p1-4.d new file mode 100644 index 0000000000000000000000000000000000000000..0ba151cf866bed9c131706eddca4f3f442ec27da --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4.d @@ -0,0 +1,90 @@ +#name: Test of SVE2.1 ld[1-4]q/st[1-4]q instructions. +#as: -march=armv9.4-a +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +.*: c400a000 ld1q {z0.q}, p0/z, \[z0.d, x0\] +.*: c400a01f ld1q {z31.q}, p0/z, \[z0.d, x0\] +.*: c400bc00 ld1q {z0.q}, p7/z, \[z0.d, x0\] +.*: c400a3e0 ld1q {z0.q}, p0/z, \[z31.d, x0\] +.*: c41ea000 ld1q {z0.q}, p0/z, \[z0.d, x30\] +.*: c41ebfff ld1q {z31.q}, p7/z, \[z31.d, x30\] +.*: c404acef ld1q {z15.q}, p3/z, \[z7.d, x4\] +.*: a49fe000 ld2q {z0.q, z1.q}, p0/z, \[x0, #-2, mul vl\] +.*: a49fe01e ld2q {z30.q, z31.q}, p0/z, \[x0, #-2, mul vl\] +.*: a49ffc00 ld2q {z0.q, z1.q}, p7/z, \[x0, #-2, mul vl\] +.*: a49fe3c0 ld2q {z0.q, z1.q}, p0/z, \[x30, #-2, mul vl\] +.*: a49fffde ld2q {z30.q, z31.q}, p7/z, \[x30, #-2, mul vl\] +.*: a51fe000 ld3q {z0.q, z1.q, z2.q}, p0/z, \[x0, #-3, mul vl\] +.*: a51fe01d ld3q {z29.q, z30.q, z31.q}, p0/z, \[x0, #-3, mul vl\] +.*: a51ffc00 ld3q {z0.q, z1.q, z2.q}, p7/z, \[x0, #-3, mul vl\] +.*: a51fe3c0 ld3q {z0.q, z1.q, z2.q}, p0/z, \[x30, #-3, mul vl\] +.*: a51fffdd ld3q {z29.q, z30.q, z31.q}, p7/z, \[x30, #-3, mul vl\] +.*: a59fe000 ld4q {z0.q, z1.q, z2.q, z3.q}, p0/z, \[x0, #-4, mul vl\] +.*: a59fe01c ld4q {z28.q, z29.q, z30.q, z31.q}, p0/z, \[x0, #-4, mul vl\] +.*: a59ffc00 ld4q {z0.q, z1.q, z2.q, z3.q}, p7/z, \[x0, #-4, mul vl\] +.*: a59fe3c0 ld4q {z0.q, z1.q, z2.q, z3.q}, p0/z, \[x30, #-4, mul vl\] +.*: a59fffdc ld4q {z28.q, z29.q, z30.q, z31.q}, p7/z, \[x30, #-4, mul vl\] +.*: a4a08000 ld2q {z0.q, z1.q}, p0/z, \[x0, x0, lsl #4\] +.*: a4a0801e ld2q {z30.q, z31.q}, p0/z, \[x0, x0, lsl #4\] +.*: a4a09c00 ld2q {z0.q, z1.q}, p7/z, \[x0, x0, lsl #4\] +.*: a4a083c0 ld2q {z0.q, z1.q}, p0/z, \[x30, x0, lsl #4\] +.*: a4be8000 ld2q {z0.q, z1.q}, p0/z, \[x0, x30, lsl #4\] +.*: a4be9fde ld2q {z30.q, z31.q}, p7/z, \[x30, x30, lsl #4\] +.*: a5208000 ld3q {z0.q, z1.q, z2.q}, p0/z, \[x0, x0, lsl #4\] +.*: a520801d ld3q {z29.q, z30.q, z31.q}, p0/z, \[x0, x0, lsl #4\] +.*: a5209c00 ld3q {z0.q, z1.q, z2.q}, p7/z, \[x0, x0, lsl #4\] +.*: a52083c0 ld3q {z0.q, z1.q, z2.q}, p0/z, \[x30, x0, lsl #4\] +.*: a53e8000 ld3q {z0.q, z1.q, z2.q}, p0/z, \[x0, x30, lsl #4\] +.*: a53e9fdd ld3q {z29.q, z30.q, z31.q}, p7/z, \[x30, x30, lsl #4\] +.*: a5a08000 ld4q {z0.q, z1.q, z2.q, z3.q}, p0/z, \[x0, x0, lsl #4\] +.*: a5a0801c ld4q {z28.q, z29.q, z30.q, z31.q}, p0/z, \[x0, x0, lsl #4\] +.*: a5a09c00 ld4q {z0.q, z1.q, z2.q, z3.q}, p7/z, \[x0, x0, lsl #4\] +.*: a5a083c0 ld4q {z0.q, z1.q, z2.q, z3.q}, p0/z, \[x30, x0, lsl #4\] +.*: a5be8000 ld4q {z0.q, z1.q, z2.q, z3.q}, p0/z, \[x0, x30, lsl #4\] +.*: a5be9fdc ld4q {z28.q, z29.q, z30.q, z31.q}, p7/z, \[x30, x30, lsl #4\] +.*: e4202000 st1q {z0.q}, p0, \[z0.d, x0\] +.*: e420201f st1q {z31.q}, p0, \[z0.d, x0\] +.*: e4203c00 st1q {z0.q}, p7, \[z0.d, x0\] +.*: e42023e0 st1q {z0.q}, p0, \[z31.d, x0\] +.*: e43e2000 st1q {z0.q}, p0, \[z0.d, x30\] +.*: e43e3fff st1q {z31.q}, p7, \[z31.d, x30\] +.*: e4242cef st1q {z15.q}, p3, \[z7.d, x4\] +.*: e44f0000 st2q {z0.q, z1.q}, p0, \[x0, #-2, mul vl\] +.*: e44f001e st2q {z30.q, z31.q}, p0, \[x0, #-2, mul vl\] +.*: e44f1c00 st2q {z0.q, z1.q}, p7, \[x0, #-2, mul vl\] +.*: e44f03c0 st2q {z0.q, z1.q}, p0, \[x30, #-2, mul vl\] +.*: e44f1fde st2q {z30.q, z31.q}, p7, \[x30, #-2, mul vl\] +.*: e48f0000 st3q {z0.q, z1.q, z2.q}, p0, \[x0, #-3, mul vl\] +.*: e48f001d st3q {z29.q, z30.q, z31.q}, p0, \[x0, #-3, mul vl\] +.*: e48f1c00 st3q {z0.q, z1.q, z2.q}, p7, \[x0, #-3, mul vl\] +.*: e48f03c0 st3q {z0.q, z1.q, z2.q}, p0, \[x30, #-3, mul vl\] +.*: e48f1fdd st3q {z29.q, z30.q, z31.q}, p7, \[x30, #-3, mul vl\] +.*: e4cf0000 st4q {z0.q, z1.q, z2.q, z3.q}, p0, \[x0, #-4, mul vl\] +.*: e4cf001c st4q {z28.q, z29.q, z30.q, z31.q}, p0, \[x0, #-4, mul vl\] +.*: e4cf1c00 st4q {z0.q, z1.q, z2.q, z3.q}, p7, \[x0, #-4, mul vl\] +.*: e4cf03c0 st4q {z0.q, z1.q, z2.q, z3.q}, p0, \[x30, #-4, mul vl\] +.*: e4cf1fdc st4q {z28.q, z29.q, z30.q, z31.q}, p7, \[x30, #-4, mul vl\] +.*: e4600000 st2q {z0.q, z1.q}, p0, \[x0, x0, lsl #4\] +.*: e460001e st2q {z30.q, z31.q}, p0, \[x0, x0, lsl #4\] +.*: e4601c00 st2q {z0.q, z1.q}, p7, \[x0, x0, lsl #4\] +.*: e46003c0 st2q {z0.q, z1.q}, p0, \[x30, x0, lsl #4\] +.*: e47e0000 st2q {z0.q, z1.q}, p0, \[x0, x30, lsl #4\] +.*: e47e1fde st2q {z30.q, z31.q}, p7, \[x30, x30, lsl #4\] +.*: e4a00000 st3q {z0.q, z1.q, z2.q}, p0, \[x0, x0, lsl #4\] +.*: e4a0001d st3q {z29.q, z30.q, z31.q}, p0, \[x0, x0, lsl #4\] +.*: e4a01c00 st3q {z0.q, z1.q, z2.q}, p7, \[x0, x0, lsl #4\] +.*: e4a003c0 st3q {z0.q, z1.q, z2.q}, p0, \[x30, x0, lsl #4\] +.*: e4be0000 st3q {z0.q, z1.q, z2.q}, p0, \[x0, x30, lsl #4\] +.*: e4be1fdd st3q {z29.q, z30.q, z31.q}, p7, \[x30, x30, lsl #4\] +.*: e4e00000 st4q {z0.q, z1.q, z2.q, z3.q}, p0, \[x0, x0, lsl #4\] +.*: e4e0001c st4q {z28.q, z29.q, z30.q, z31.q}, p0, \[x0, x0, lsl #4\] +.*: e4e01c00 st4q {z0.q, z1.q, z2.q, z3.q}, p7, \[x0, x0, lsl #4\] +.*: e4e003c0 st4q {z0.q, z1.q, z2.q, z3.q}, p0, \[x30, x0, lsl #4\] +.*: e4fe0000 st4q {z0.q, z1.q, z2.q, z3.q}, p0, \[x0, x30, lsl #4\] +.*: e4fe1fdc st4q {z28.q, z29.q, z30.q, z31.q}, p7, \[x30, x30, lsl #4\] diff --git a/gas/testsuite/gas/aarch64/sve2p1-4.s b/gas/testsuite/gas/aarch64/sve2p1-4.s new file mode 100644 index 0000000000000000000000000000000000000000..2a64a5ea630e88f061cc6dc2ac506c55e1d38998 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4.s @@ -0,0 +1,93 @@ +ld1q { Z0.Q }, P0/Z, [Z0.D, x0] +ld1q { Z31.Q }, P0/Z, [Z0.D, x0] +ld1q { Z0.Q }, P7/Z, [Z0.D, x0] +ld1q { Z0.Q }, P0/Z, [Z31.D, x0] +ld1q { Z0.Q }, P0/Z, [Z0.D, x30] +ld1q { Z31.Q }, P7/Z, [Z31.D, x30] +ld1q { Z15.Q }, P3/Z, [Z7.D, x4] + +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, #-2, MUL VL] +ld2q {Z30.Q, Z31.Q}, p0/Z, [x0, #-2, MUL VL] +ld2q {Z0.Q, Z1.Q}, p7/Z, [x0, #-2, MUL VL] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x30, #-2, MUL VL] +ld2q {Z30.Q, Z31.Q}, p7/Z, [x30, #-2, MUL VL] + +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, #-3, MUL VL] +ld3q {Z29.Q, Z30.Q, Z31.Q}, p0/Z, [x0, #-3, MUL VL] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p7/Z, [x0, #-3, MUL VL] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x30, #-3, MUL VL] +ld3q {Z29.Q, Z30.Q, Z31.Q}, p7/Z, [x30, #-3, MUL VL] + +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, #-4, MUL VL] +ld4q {Z28.Q, Z29.Q, Z30.Q,Z31.Q}, p0/Z, [x0, #-4, MUL VL] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7/Z, [x0, #-4, MUL VL] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x30, #-4, MUL VL] +ld4q {Z28.Q, Z29.Q, Z30.Q, Z31.Q}, p7/Z, [x30, #-4, MUL VL] + +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, x0, LSL #4] +ld2q {Z30.Q, Z31.Q}, p0/Z, [x0, x0, LSL #4] +ld2q {Z0.Q, Z1.Q}, p7/Z, [x0, x0, LSL #4] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x30, x0, LSL #4] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, x30, LSL #4] +ld2q {Z30.Q, Z31.Q}, p7/Z, [x30, x30, LSL #4] + +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, x0, LSL #4] +ld3q {Z29.Q, Z30.Q, Z31.Q}, p0/Z, [x0, x0, LSL #4] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p7/Z, [x0, x0, LSL #4] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x30, x0, LSL #4] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, x30, LSL #4] +ld3q {Z29.Q, Z30.Q, Z31.Q}, p7/Z, [x30, x30, LSL #4] + +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, x0, LSL #4] +ld4q {Z28.Q, Z29.Q, Z30.Q,Z31.Q}, p0/Z, [x0, x0, LSL #4] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7/Z, [x0, x0, LSL #4] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x30, x0, LSL #4] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, x30, LSL #4] +ld4q {Z28.Q, Z29.Q, Z30.Q, Z31.Q}, p7/Z, [x30, x30, LSL #4] + +st1q { Z0.Q }, P0, [Z0.D, x0] +st1q { Z31.Q }, P0, [Z0.D, x0] +st1q { Z0.Q }, P7, [Z0.D, x0] +st1q { Z0.Q }, P0, [Z31.D, x0] +st1q { Z0.Q }, P0, [Z0.D, x30] +st1q { Z31.Q }, P7, [Z31.D, x30] +st1q { Z15.Q }, P3, [Z7.D, x4] + +st2q {Z0.Q, Z1.Q}, p0, [x0, #-2, MUL VL] +st2q {Z30.Q, Z31.Q}, p0, [x0, #-2, MUL VL] +st2q {Z0.Q, Z1.Q}, p7, [x0, #-2, MUL VL] +st2q {Z0.Q, Z1.Q}, p0, [x30, #-2, MUL VL] +st2q {Z30.Q, Z31.Q}, p7, [x30, #-2, MUL VL] + +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, #-3, MUL VL] +st3q {Z29.Q, Z30.Q, Z31.Q}, p0, [x0, #-3, MUL VL] +st3q {Z0.Q, Z1.Q, Z2.Q}, p7, [x0, #-3, MUL VL] +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x30, #-3, MUL VL] +st3q {Z29.Q, Z30.Q, Z31.Q}, p7, [x30, #-3, MUL VL] + +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, #-4, MUL VL] +st4q {Z28.Q, Z29.Q, Z30.Q,Z31.Q}, p0, [x0, #-4, MUL VL] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7, [x0, #-4, MUL VL] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x30, #-4, MUL VL] +st4q {Z28.Q, Z29.Q, Z30.Q, Z31.Q}, p7, [x30, #-4, MUL VL] + +st2q {Z0.Q, Z1.Q}, p0, [x0, x0, LSL #4] +st2q {Z30.Q, Z31.Q}, p0, [x0, x0, LSL #4] +st2q {Z0.Q, Z1.Q}, p7, [x0, x0, LSL #4] +st2q {Z0.Q, Z1.Q}, p0, [x30, x0, LSL #4] +st2q {Z0.Q, Z1.Q}, p0, [x0, x30, LSL #4] +st2q {Z30.Q, Z31.Q}, p7, [x30, x30, LSL #4] + +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, x0, LSL #4] +st3q {Z29.Q, Z30.Q, Z31.Q}, p0, [x0, x0, LSL #4] +st3q {Z0.Q, Z1.Q, Z2.Q}, p7, [x0, x0, LSL #4] +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x30, x0, LSL #4] +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, x30, LSL #4] +st3q {Z29.Q, Z30.Q, Z31.Q}, p7, [x30, x30, LSL #4] + +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, x0, LSL #4] +st4q {Z28.Q, Z29.Q, Z30.Q,Z31.Q}, p0, [x0, x0, LSL #4] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7, [x0, x0, LSL #4] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x30, x0, LSL #4] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, x30, LSL #4] +st4q {Z28.Q, Z29.Q, Z30.Q, Z31.Q}, p7, [x30, x30, LSL #4] diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index e70b9e6d348b81b6331e077f3bdf966663917e16..0b277c433dbe3bdc73c60556d07af00e1260d448 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -798,9 +798,10 @@ enum aarch64_opnd AARCH64_OPND_MOPS_WB_Rn, /* Rn!, in bits [5, 9]. */ AARCH64_OPND_CSSC_SIMM8, /* CSSC signed 8-bit immediate. */ AARCH64_OPND_CSSC_UIMM8, /* CSSC unsigned 8-bit immediate. */ - AARCH64_OPND_SME_Zt2, /* Qobule SVE vector register list. */ - AARCH64_OPND_SME_Zt3, /* Trible SVE vector register list. */ - AARCH64_OPND_SME_Zt4, /* Quad SVE vector register list. */ + AARCH64_OPND_SVE_Zt1, /* Single SVE vector register list. */ + AARCH64_OPND_SVE_Zt2, /* Double SVE vector register list. */ + AARCH64_OPND_SVE_Zt3, /* Triple SVE vector register list. */ + AARCH64_OPND_SVE_Zt4, /* Quadruple SVE vector register list. */ AARCH64_OPND_RCPC3_ADDR_OPT_POSTIND, /* []{, #}. */ AARCH64_OPND_RCPC3_ADDR_OPT_PREIND_WB, /* [] or [, #]!. */ AARCH64_OPND_RCPC3_ADDR_POSTIND, /* [], #. */ diff --git a/opcodes/aarch64-asm.h b/opcodes/aarch64-asm.h index c6dde1c4d1b16f63665e12d0f9217481d8cbfe3b..85db92a5773ae6a7413726fb137eb7e0b80c4040 100644 --- a/opcodes/aarch64-asm.h +++ b/opcodes/aarch64-asm.h @@ -96,6 +96,7 @@ AARCH64_DECL_OPD_INSERTER (ins_sve_index); AARCH64_DECL_OPD_INSERTER (ins_sve_index_imm); AARCH64_DECL_OPD_INSERTER (ins_sve_limm_mov); AARCH64_DECL_OPD_INSERTER (ins_sve_quad_index); +AARCH64_DECL_OPD_INSERTER (ins_sve_triple_index); AARCH64_DECL_OPD_INSERTER (ins_sve_reglist); AARCH64_DECL_OPD_INSERTER (ins_sve_strided_reglist); AARCH64_DECL_OPD_INSERTER (ins_sve_scale); diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index 00344604e5e8b88b17daafc60fbd395fb50c7006..b76becd1178b608777a5aa82a7eb119d70956ff9 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -1894,9 +1894,6 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: case AARCH64_OPND_SME_Znx4: - case AARCH64_OPND_SME_Zt2: - case AARCH64_OPND_SME_Zt3: - case AARCH64_OPND_SME_Zt4: num = get_operand_specific_data (&aarch64_operands[type]); if (!check_reglist (opnd, mismatch_detail, idx, num, 1)) return 0; @@ -1908,6 +1905,16 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, } break; + case AARCH64_OPND_SVE_Zt1: + case AARCH64_OPND_SVE_Zt2: + case AARCH64_OPND_SVE_Zt3: + case AARCH64_OPND_SVE_Zt4: + num = get_operand_specific_data (&aarch64_operands[type]); + if (!check_reglist (opnd, mismatch_detail, idx, num, + opnd->reglist.stride)) + return 0; + break; + case AARCH64_OPND_SME_Ztx2_STRIDED: case AARCH64_OPND_SME_Ztx4_STRIDED: /* 2-register lists have a stride of 8 and 4-register lists @@ -3697,9 +3704,10 @@ print_register_list (char *buf, size_t size, const aarch64_opnd_info *opnd, more than two registers in the list, and the register numbers are monotonically increasing in increments of one. */ if (stride == 1 && num_regs > 1 - && ((opnd->type != AARCH64_OPND_SME_Zt2) - && (opnd->type != AARCH64_OPND_SME_Zt3) - && (opnd->type != AARCH64_OPND_SME_Zt4))) + && ((opnd->type != AARCH64_OPND_SVE_Zt1) + && (opnd->type != AARCH64_OPND_SVE_Zt2) + && (opnd->type != AARCH64_OPND_SVE_Zt3) + && (opnd->type != AARCH64_OPND_SVE_Zt4))) snprintf (buf, size, "{%s-%s}%s", style_reg (styler, "%s%d.%s", prefix, first_reg, qlf_name), style_reg (styler, "%s%d.%s", prefix, last_reg, qlf_name), tb); @@ -4144,9 +4152,10 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, case AARCH64_OPND_SME_Znx4: case AARCH64_OPND_SME_Ztx2_STRIDED: case AARCH64_OPND_SME_Ztx4_STRIDED: - case AARCH64_OPND_SME_Zt2: - case AARCH64_OPND_SME_Zt3: - case AARCH64_OPND_SME_Zt4: + case AARCH64_OPND_SVE_Zt1: + case AARCH64_OPND_SVE_Zt2: + case AARCH64_OPND_SVE_Zt3: + case AARCH64_OPND_SVE_Zt4: print_register_list (buf, size, opnd, "z", styler); break; diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 21794022721a8e40d12dde1e383e3a40f42624e5..acf29e0ef94d88dac615ac5a92d3b286de940ba1 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1781,11 +1781,11 @@ { \ QLF3(S_S,P_Z,S_S), \ } -#define OP_SVE_SZS_QD \ +#define OP_SVE_QZD \ { \ QLF3(S_Q,P_Z,S_D), \ } -#define OP_SVE_SUS_QD \ +#define OP_SVE_QUD \ { \ QLF3(S_Q,NIL,S_D), \ } @@ -6376,21 +6376,22 @@ const struct aarch64_opcode aarch64_opcode_table[] = SVE2p1_INSN("dupq",0x05202400, 0xffe0fc00, sve_index1, 0, OP2 (SVE_Zd, SVE_Zn_5_INDEX), OP_SVE_VV_BHSD, 0, 0), SVE2p1_INSNC("extq",0x05602400, 0xfff0fc00, sve_misc, 0, OP4 (SVE_Zd, SVE_Zd, SVE_Zm_5, SVE_UIMM4), OP_SVE_BBBU, 0, C_SCAN_MOVPRFX, 1), - SVE2p1_INSNC("ld1q",0xc400a000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SZS_QD, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("ld2q",0xa490e000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt2, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("ld3q",0xa510e000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt3, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("ld4q",0xa590e000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt4, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("ld2q",0xa4a0e000, 0xffe0e000, sve_misc, 0, OP3 (SME_Zt2, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("ld3q",0xa5208000, 0xffe0e000, sve_misc, 0, OP3 (SME_Zt3, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("ld4q",0xa5a08000, 0xffe0e000, sve_misc, 0, OP3 (SME_Zt4, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("st1q",0xe4202000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_SUS_QD, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("st2q",0xe4400000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt2, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("st3q",0xe4800000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt3, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("st4q",0xe4c00000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt4, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("st2q",0xe4600000, 0xffe0e000, sve_misc, 0, OP3 (SME_Zt2, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("st3q",0xe4a00000, 0xffe0e000, sve_misc, 0, OP3 (SME_Zt3, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("st4q",0xe4e00000, 0xffe0e000, sve_misc, 0, OP3 (SME_Zt4, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("ld1q",0xc400a000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt1, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_QZD, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("ld2q",0xa490e000, 0xfff0e000, sve_misc, 0, OP3 (SVE_Zt2, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("ld3q",0xa510e000, 0xfff0e000, sve_misc, 0, OP3 (SVE_Zt3, SVE_Pg3, SVE_ADDR_RI_S4x3xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("ld4q",0xa590e000, 0xfff0e000, sve_misc, 0, OP3 (SVE_Zt4, SVE_Pg3, SVE_ADDR_RI_S4x4xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("ld2q",0xa4a08000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt2, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("ld3q",0xa5208000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt3, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("ld4q",0xa5a08000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt4, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), + + SVE2p1_INSNC("st1q",0xe4202000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt1, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_QUD, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("st2q",0xe4400000, 0xfff0e000, sve_misc, 0, OP3 (SVE_Zt2, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("st3q",0xe4800000, 0xfff0e000, sve_misc, 0, OP3 (SVE_Zt3, SVE_Pg3, SVE_ADDR_RI_S4x3xVL), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("st4q",0xe4c00000, 0xfff0e000, sve_misc, 0, OP3 (SVE_Zt4, SVE_Pg3, SVE_ADDR_RI_S4x4xVL), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("st2q",0xe4600000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt2, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("st3q",0xe4a00000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt3, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), + SVE2p1_INSNC("st4q",0xe4e00000, 0xffe0e000, sve_misc, 0, OP3 (SVE_Zt4, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), {0, 0, 0, 0, 0, 0, {}, {}, 0, 0, 0, NULL}, }; @@ -7030,13 +7031,16 @@ const struct aarch64_opcode aarch64_opcode_table[] = "an 8-bit signed immediate") \ Y(IMMEDIATE, imm, "CSSC_UIMM8", 0, F(FLD_CSSC_imm8), \ "an 8-bit unsigned immediate") \ - X(SVE_REGLIST, ins_sve_reglist, ext_sve_reglist_zt, "SME_Zt2", \ + X(SVE_REGLIST, ins_sve_reglist, ext_sve_reglist_zt, "SVE_Zt1", \ + 1 << OPD_F_OD_LSB, F(FLD_SVE_Zt), \ + "a list of 1 SVE vector registers") \ + X(SVE_REGLIST, ins_sve_reglist, ext_sve_reglist_zt, "SVE_Zt2", \ 2 << OPD_F_OD_LSB, F(FLD_SVE_Zt), \ "a list of 2 SVE vector registers") \ - X(SVE_REGLIST, ins_sve_reglist, ext_sve_reglist_zt, "SME_Zt3", \ + X(SVE_REGLIST, ins_sve_reglist, ext_sve_reglist_zt, "SVE_Zt3", \ 3 << OPD_F_OD_LSB, F(FLD_SVE_Zt), \ "a list of 3 SVE vector registers") \ - X(SVE_REGLIST, ins_sve_reglist, ext_sve_reglist_zt, "SME_Zt4", \ + X(SVE_REGLIST, ins_sve_reglist, ext_sve_reglist_zt, "SVE_Zt4", \ 4 << OPD_F_OD_LSB, F(FLD_SVE_Zt), \ "a list of 4 SVE vector registers") \ X(ADDRESS, ins_rcpc3_addr_opt_offset, ext_rcpc3_addr_opt_offset, \