From patchwork Wed May 22 10:04:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinath Parvathaneni X-Patchwork-Id: 90672 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2F411387084C for ; Wed, 22 May 2024 10:07:39 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2087.outbound.protection.outlook.com [40.107.7.87]) by sourceware.org (Postfix) with ESMTPS id 6F791384F4BA for ; Wed, 22 May 2024 10:05:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6F791384F4BA 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 6F791384F4BA Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.7.87 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1716372320; cv=pass; b=GRR6aQm7tIz6nbme3XzlTzhiqJ9ChnJc/fJ/WSkAK1u49qUFQ1uFn2xqwxbVd0iKjPyCmi9k8UVhrpeHIQeKPQl8BaWbZQGUHPAxBhdDVbxxTBC3sjDv6PfHIro17CpYgJjHFTbwZB3UG2InUB326fOlVb94P2ZQOzVQxp1tC0g= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1716372320; c=relaxed/simple; bh=EJdUJT/vuMB8hlJD5cdU6Ums8VlgQuJ3TVFhE40L6Gc=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=q20kGtGpDqateFrRxvj0zGj89crEtEBvqlRZjI8vXwyxpkenOVF4Yy0VdICZvhJZpzdnnme8QEgTJg6LXaabk+as/heAlqNIddn36bq3xEN1J2iTiJKYHand7TcsFjLtV3A2v9omIKYH4V7BzPX10lWFeNkoyAtar5C6xjfsZFM= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=ATIoLQGJEZakwKpVyNeyghus/KwGxYctnw9eJwUxv2ME3A7OfniBvn8wANK9w5m7KLdRP72KHuNJnJ5U5utQ1jYc+FnQFRlx/8bgL7pHrqBwCXSfGYw2fcM5tzsUhIslP/CNH5iqFZpLi+7J3QEhywFWoWoRWU016M4lIsXc0RZ3gz3q1qNe1c9qAkyb6Fd5rvT71ZCufOFu2gFYt5ygoysqrrLrF/iDksXKo15kciZeoUj3z10DfO7d8yiqqjipzSIVpmZA0d9CAW5AweKZ+McDEMu413qdbs10M7ZhVDsM4usdcz401RC5uBndM1cZbDSCl2o9Cgjg/C7Z2toPsw== 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=RYBno0WDOTWkoQ4kgIGUL1TQo9tjGtjE9LTVAeLS3A4=; b=HI7UjeZEoLr9Vun1UGw2YhT9uRR778RYDK82wl4VX83vj50WmlLuaNHe52IO+1UCSx00lZP5TiMQCTNfoWvRHHUC1Yqp3RsBfR4U8LtdksKo5yWG7Rjb2TCiG1Rn0OMdECs7FybO8FIUuyf8DmdQcceclH0YoXXrcnALCkvyX1qXyuKDBp9nr2a2kvEN1Sf+bgZhyOwlGdB8fJMdqEcoiqQNv1ZY2EYPPV19LFRfwrso9oxSkU+WZOTOS+teAZd25honD9UHs2v4BhGci19783pg4HBVKG//YRJ+PYARwnhEbgRvIVQxZ4zAiGQ3fFT1vBqcMxOuMXUJEVpWShOmKA== 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=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RYBno0WDOTWkoQ4kgIGUL1TQo9tjGtjE9LTVAeLS3A4=; b=Gveyu8RxIDmpdFdU9NU7n0z0n6kyaPzSdlbzvhRJ3zMFqJ5aqTaNAVaGX7orGillJEu5G9nKbi0BNAHpFbdqa1gGktndwg5+NkeDRyQsNuUJ0IJpRPHb1tls1iIKdrCChkvxwa4kwY3aHXcU28s8SsWC4bjYCtBDcH2vesvZhjI= Received: from DU2PR04CA0357.eurprd04.prod.outlook.com (2603:10a6:10:2b4::32) by VI0PR08MB10712.eurprd08.prod.outlook.com (2603:10a6:800:210::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.35; Wed, 22 May 2024 10:05:08 +0000 Received: from DB1PEPF000509FA.eurprd03.prod.outlook.com (2603:10a6:10:2b4:cafe::e9) by DU2PR04CA0357.outlook.office365.com (2603:10a6:10:2b4::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.36 via Frontend Transport; Wed, 22 May 2024 10:05:08 +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=arm.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 DB1PEPF000509FA.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7611.14 via Frontend Transport; Wed, 22 May 2024 10:05:08 +0000 Received: ("Tessian outbound 2fd40f2ccfd7:v327"); Wed, 22 May 2024 10:05:08 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 3c62cbba778c9e2e X-CR-MTA-TID: 64aa7808 Received: from 26f6a3bef26a.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D4C47D67-72FD-4007-A40E-E334B1A6AB5B.1; Wed, 22 May 2024 10:05:00 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 26f6a3bef26a.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 22 May 2024 10:05:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GH+h1XHUbN7z5ysRgTkqjErnjRYNwLARenNjAYMf+iFYcsu/i6qyx4f8d67OO1GkR8TZtR05idBOCqZwWBqT607K780xRQ5u5s7yhADkbX7gf4M4p0tnnBDVdijL4dF7bPj04S9PpNAjwipAQwIJoKj/d2jhHtla4QclFSlH5SQQo1hc4HiTa6oXGI1SBwt/j0BaV8LS7gyjte1Z6g1vpN8r0uzQ6uYwxfviHKnu2ZjGai32Av8RO8PHABpbJu+eRTlsqOYfSbtAH6NLrDEimGvnpXqCiQjO7a/19vb0S2dkpHyvcjg0FnqdRZvcW4uTBIj1UVcKkXtCeC7CyKKfMw== 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=RYBno0WDOTWkoQ4kgIGUL1TQo9tjGtjE9LTVAeLS3A4=; b=QITXjGgGT/F2O9AXKVZxIJUTBumltUGSPcCT4YaRP+8B8Z90dRN/+06GaOl2WAOmpF45S9Qs1409pIqrRhL0cVLWmQZQeN6MIji+MV3TshfSlHmz0jelhyo1wwgdFo4pdMrOmjdDLqY5EOVNS0Pux6Gr1RrZkPw86J3D0klBWS9/M6RmZmY4nTo9clYzUBlEqayQgAbcrg4pEmLLi4+b4lTVMOmIaANS+7IFnOpIoJShjhhDDYw5U9rh1DRpMmzmn/W3wDvh/dFHnnopYfynjxpQXEW9XA5OPsiVwkz7mDicdpXXNLtJcawursHlSWfOoCEuo/eVN1jzAYilXbWBcA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RYBno0WDOTWkoQ4kgIGUL1TQo9tjGtjE9LTVAeLS3A4=; b=Gveyu8RxIDmpdFdU9NU7n0z0n6kyaPzSdlbzvhRJ3zMFqJ5aqTaNAVaGX7orGillJEu5G9nKbi0BNAHpFbdqa1gGktndwg5+NkeDRyQsNuUJ0IJpRPHb1tls1iIKdrCChkvxwa4kwY3aHXcU28s8SsWC4bjYCtBDcH2vesvZhjI= Received: from DU2PR04CA0029.eurprd04.prod.outlook.com (2603:10a6:10:3b::34) by DBBPR08MB6235.eurprd08.prod.outlook.com (2603:10a6:10:201::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.36; Wed, 22 May 2024 10:04:56 +0000 Received: from DB5PEPF00014B9C.eurprd02.prod.outlook.com (2603:10a6:10:3b:cafe::ce) by DU2PR04CA0029.outlook.office365.com (2603:10a6:10:3b::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7611.19 via Frontend Transport; Wed, 22 May 2024 10:04:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by DB5PEPF00014B9C.mail.protection.outlook.com (10.167.8.170) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7611.14 via Frontend Transport; Wed, 22 May 2024 10:04:56 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 22 May 2024 10:04:55 +0000 Received: from e120703.cambridge.arm.com (10.2.81.20) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Wed, 22 May 2024 10:04:55 +0000 From: srinath To: CC: , , Srinath Parvathaneni Subject: [PATCH v2 4/7][Binutils] aarch64: Fix sve2p1 ld[1-4]/st[1-4]q instruction operands. Date: Wed, 22 May 2024 11:04:34 +0100 Message-ID: <20240522100439.1050296-7-srinath.parvathaneni@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240522100439.1050296-1-srinath.parvathaneni@arm.com> References: <20240522100439.1050296-1-srinath.parvathaneni@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB5PEPF00014B9C:EE_|DBBPR08MB6235:EE_|DB1PEPF000509FA:EE_|VI0PR08MB10712:EE_ X-MS-Office365-Filtering-Correlation-Id: 5b2d8ede-db03-4355-7335-08dc7a46a91a 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; ARA:13230031|1800799015|36860700004|376005|82310400017; X-Microsoft-Antispam-Message-Info-Original: Sx32U7RDFz+DBjTOy5w6wBxO9EZO6IY6BMUmdk4jKzblCyLuO2EHDH/ypgTMq1cwfWL/OYNqMe1ltqN9UWxcFyBvyRn7Tlm5fFAWYi6MReKlr2JEwBuQgHlPYyzuA2L/0nfcnHHlxtnhNyjLCsbjJ3Jq3f1M7S67Xsn5wgEaQVwJymSr3mK9MOFAxj98Str93z8PATmSrw5wqqTo64mOCUdZLWP0tdr5wCTp+xBcUiZMjsoQqj88n8LvAxrgBBwdnCWanw7zzIeiAL/lyVjRsKIJJBChcdFkLnIUvKF/r+YNaZtfpTtjT1Wsvktjk3KzEIUaY/dXAdNBBEVK/MlNGZgThURTlIf3W0luDF9jbbYrgsDScSgPh/1tHSkxMaq136PNKFK+OMQySvdVoK8sWiniGYRmP4Fr8Cnal/s1oPBeTdG954zD/JWI22YKaDNHvqk1FfxV7coEBXN+CLiz8Z4JtLIBIhGvTZRHFyP2bcal3k7KazUit4xdN2SjCxBfJtH5AnU7+F7KzFHagKMfdkXx2IYveamRQcyBzYi2urxfiH9ossMetZDhqTCZHrFeZZR6rqHatAVb9LwuRQm14jvQ6YaUW+Zo46PvNl009uU+GuY5YKjZoiyCshOdHvRYZ6PmV0dIkPCQvxmAGzXMlv6p7zCxEWOxF70TK8KYQQ+NtBuPeBs9CQAc6c0X7jNJzI+kTuoJ5MTye5tikLavviNHITzu5KASCxI3sJ7f0nhGPkuUh335q3iUj+jhGU3jwmIMcH0jtocsqz6yargqYJQycSXavX/rVyHuFJ9ndtsCfaNUo0AgktonD8Nikn5cQbpCV4AfUWc8S7cqmD259wvhuMubCX6m2RZfFne1mYZSXQtpZvAxHUuO/NfNS06ofKXPMl+qK6Oj/1eVtsheNthlGcpowzhCncYnPGQr2nUQxM4ypM/8eJdke8EafyBX3PxEapTh/XaIZDM8YQOnqz+P7KZ9LQIckIbUj/XUoyVy8yoof+uyr/Z8OVQZ0kbDwDe5Akh7lv9mOPdfCw94naJVTNy3ot4LvAqLU0JRHcOopMaHLA567wgqFzLMW4iimCXumzGxdy+h2rdIoTwnUADr1N9cewJ4PpZVoGPBCdO4ehsslcyQCA9fIaCS3X/Z98FnKmZNNn0yVGVL9u2EvJsAhaiPcgN3hYFHXTwzY6VYp8kQ5KvkC9lKqzPSU70AA1n0OgYVmiF9qllz88yZbklEHkUTX49y+wZvANI6OL2NSIhdsZV+hWf+kzmrKlcafzoMvTr6dXaxmuiv8lbsycoqJn8ZMXxGGT1uU6KEMubBVdBB+KCfDBoUGb1+x9iS X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(1800799015)(36860700004)(376005)(82310400017); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6235 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509FA.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 73f9c73e-1713-4937-2b65-08dc7a46a1e5 X-Microsoft-Antispam: BCL:0; ARA:13230031|36860700004|1800799015|376005|35042699013|82310400017; X-Microsoft-Antispam-Message-Info: =?utf-8?q?RYeREdRCt/KPbBkkrT4NLKcgjj77VK8?= =?utf-8?q?Eyp+scN137VAEO5r9qKNrdSoBFu7SKuJTgtSgwDDPCKbYGTK+JBBMx/w3D2iF2D8n?= =?utf-8?q?9XVIpq/FaweTh1Uw0QFvPEzgH+Crk34a3b8EtK8tdMkqNgmDLTrod4jzGocj6rWso?= =?utf-8?q?Us58AzM6bfSjPtcORuht0oXI4ciHBT44PiwAbdBezdajeZ1nhU4qSd9C2+9mNNYCt?= =?utf-8?q?AOIapOmTTUWUqEvV+KfZOgkJuM9NQb7JPksBI2iIgJyUSdrCb0dchd/B/aCSLXTRv?= =?utf-8?q?N2iHwoxdmFEkC3bwed4ir8U5XjC9RfnKnEEaPhsgGe3uw0EfCQ9knLoNAeeg/0GAg?= =?utf-8?q?5yw0pWUIHLLu0xatNBUcSJyKPIhFtNEkSrUpOfYYV6fLhujFJ3d0pFvzzpM/JADrR?= =?utf-8?q?QrqafeDsXqoBI9Valc4VMQO6RuFYql/mcSyAnLZQYk2GTjyNVOMSYislkEmyfynny?= =?utf-8?q?NbsePmGRH9H9OqXf4t5xGk0UlItWPzLl9odJRUwuIP98+ANhgjPyaSOFlfU18lgMq?= =?utf-8?q?3LIcE/b1rHZ5pCsrPpIzmFJEnSId/NoVWxAwWa5lP1SmTIiumjDwQCwr2Q7q3blqX?= =?utf-8?q?wqsxTfNh5IrAZDAb4xKJ2+gqViCxqFVwbpt8uO7AZ3YAJfBeu21coQ7mqSj+TWnNv?= =?utf-8?q?GIo/XqWrpxHLwaKq99DMENlp2zO+g22geI0hDu9bJC0R8zsVN72Ipk7GW91szIMnT?= =?utf-8?q?bJn0uUWQ+EAArnxwDlsoxaLgiHPVOaOhOSG60YD40EYB4DoYGBC6LUysOzFVnnht6?= =?utf-8?q?VFnw9QsrPx6oaorUiXq9NvOzMGv6w6CsdpPMnlPVgaq2GTGEbCNnDr3yp5veyokCM?= =?utf-8?q?GAP4IGvjrxlnbqiBaynkY6N9Qj0HC9nlcR1Cc0Z3BznBGAGLcQXb38sl+hbXAnVlQ?= =?utf-8?q?9+PNzxLETp3scDFTtrQSQ4RM9uYSucvdG7QsmJ5IeXeUZGHn/Z9emXnzRE7fjbaHm?= =?utf-8?q?fndLwZgRchziB3kRU20K7r0g5tlZ1apmUtaUNo+h6bBnQOBO0KOyoedD86G6aMoPm?= =?utf-8?q?GOV1ZrHgLYMODwcCLotU2V95JMkMnQB9viqOw1NfBiByfL2kD6eEWtVaVIlcAVFR2?= =?utf-8?q?8HzHUePukFUtQZt3JcnHDAXsrlJN+j2/mVSYhyD0SzObWMOJuOvbIyPXi81FooHkr?= =?utf-8?q?bfFVYkmsj3t260m+1OnzcSbTVR2ruQiB7Kw9RI3V5nALtaja8PZUyxrzTEYxy570H?= =?utf-8?q?wCI5CLuEvy6imYxYJt5QHvB9BHY41Ri0deyDa6YvFAFhdZWj3wPbbcZBEG9+Dh+6W?= =?utf-8?q?yrp1zuB0BMYct?= 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)(1800799015)(376005)(35042699013)(82310400017); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2024 10:05:08.2993 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5b2d8ede-db03-4355-7335-08dc7a46a91a 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: DB1PEPF000509FA.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10712 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, 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+patchwork=sourceware.org@sourceware.org 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. For the instructions ld[2-4]q/st[2-4]q, tests for wrapping sequence of vector registers are added along with short-form of operands for non-wrapping sequence. I have added test using following logic: ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, #0, MUL VL] //raw insn encoding (all zeroes) ld2q {Z31.Q, Z0.Q}, p0/Z, [x0, #0, MUL VL] // encoding of ld2q {Z0.Q, Z1.Q}, p7/Z, [x0, #0, MUL VL] // encoding of ld2q {Z0.Q, Z1.Q}, p0/Z, [x30, #0, MUL VL] // encoding of ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, #-16, MUL VL] // encoding of (low value) ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, #14, MUL VL] // encoding of (high value) ld2q {Z31.Q, Z0.Q}, p7/Z, [x30, #-16, MUL VL] // encoding of all fields (all ones) ld2q {Z30.Q, Z31.Q}, p1/Z, [x3, #-2, MUL VL] // random encoding. For all the above form of instructions the hyphenated form is preferred for disassembly if there are more than two registers in the list, and the register numbers are monotonically increasing in increments of one. Regression testing for aarch64-none-elf target and found no regressions. Ok for binutils-master? Regards, Srinath. --- gas/config/tc-aarch64.c | 3 - gas/testsuite/gas/aarch64/sme-5-illegal.l | 8 +- gas/testsuite/gas/aarch64/sme-6-illegal.l | 8 +- gas/testsuite/gas/aarch64/sve2p1-1-bad.l | 14 -- gas/testsuite/gas/aarch64/sve2p1-1.d | 14 -- gas/testsuite/gas/aarch64/sve2p1-1.s | 15 -- gas/testsuite/gas/aarch64/sve2p1-4-invalid.d | 3 + gas/testsuite/gas/aarch64/sve2p1-4-invalid.l | 116 +++++++++++++++ gas/testsuite/gas/aarch64/sve2p1-4-invalid.s | 119 +++++++++++++++ gas/testsuite/gas/aarch64/sve2p1-4.d | 144 ++++++++++++++++++ gas/testsuite/gas/aarch64/sve2p1-4.s | 147 +++++++++++++++++++ include/opcode/aarch64.h | 3 - opcodes/aarch64-opc.c | 11 +- opcodes/aarch64-tbl.h | 43 +++--- 14 files changed, 556 insertions(+), 92 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4-invalid.d create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4-invalid.l create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4-invalid.s create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4.d create mode 100644 gas/testsuite/gas/aarch64/sve2p1-4.s diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 7029675a822..a3b87d166d4 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -6794,9 +6794,6 @@ 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_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 c4bfc1f8b5a..b0736e0fcd6 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 b98b76faaed..10c2a51204b 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 718700e2ca2..1b6a9683b65 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 .* -.*: Error: selected processor does not support `ld4q .* -.*: 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 .* -.*: Error: selected processor does not support `st4q .* -.*: 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 1c2e928685c..8277a1386f2 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, #-6, mul vl\] -.*: a59ef000 ld4q {z0.q, z1.q, z2.q, z3.q}, p4/z, \[x0, #-8, mul vl\] -.*: a4a29000 ld2q {z0.q, z1.q}, p4/z, \[x0, x2, lsl #4\] -.*: 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, #-6, mul vl\] -.*: e4ce1000 st4q {z0.q, z1.q, z2.q, z3.q}, p4, \[x0, #-8, 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 5484557fb98..1e7c2ceceba 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, #-6, MUL VL] -ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p4/Z, [x0, #-8, 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, #-6, MUL VL] -st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p4, [x0, #-8, 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 00000000000..2363a12484d --- /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 00000000000..1c713a1325f --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4-invalid.l @@ -0,0 +1,116 @@ +.*: Assembler messages: +.*: 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 offset register at operand 3 -- `ld1q Z0.Q,P0/Z,\[Z0.D,sp\]' +.*: Error: operand mismatch -- `ld1q Z0.Q,P0/Z,\[Z0.S,x15\]' +.*: Info: did you mean this\? +.*: Info: ld1q {z0.q}, p0/z, \[z0.d, x15\] +.*: Error: invalid use of 32-bit register offset at operand 3 -- `ld1q Z0.Q,P0/Z,\[Z0.D,w10\]' +.*: Error: the register list must have a stride of 1 at operand 1 -- `ld2q {Z0.Q,Z2.Q},p0/Z,\[x0,#-2,MUL VL\]' +.*: 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 base register at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[x31,#-20,MUL VL\]' +.*: Error: invalid base register at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[xzr,#-20,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-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: type mismatch in vector register list at operand 1 -- `ld3q {Z29.Q,Z30.Q,Z31.D},p7/Z,\[x30,#-30,MUL VL\]' +.*: Error: type mismatch in vector register list at operand 1 -- `ld3q {Z29.Q,Z30.Q,Z31.D},p7/Z,\[xzr,#-30,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: type mismatch in vector register list at operand 1 -- `ld4q {Z28.Q,Z29.Q,Z30.D,Z31.Q},p7/Z,\[x30,#-100,MUL VL\]' +.*: Error: type mismatch in vector register list at operand 1 -- `ld4q {Z28.Q,Z29.Q,Z30.D,Z31.Q},p7/Z,\[xzr,#-100,MUL VL\]' +.*: Error: invalid addressing mode at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[x0,x0,LSL#3\]' +.*: Error: invalid addressing mode at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[sp,x0,LSL#3\]' +.*: Error: invalid offset register at operand 3 -- `ld2q {Z0.Q,Z1.Q},p0/Z,\[x0,sp,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: shift expression expected at operand 3 -- `ld3q {Z0.Q,Z1.Q,Z2.Q},p0/Z,\[sp,x0,#4\]' +.*: Error: invalid offset register at operand 3 -- `ld3q {Z0.Q,Z1.Q,Z2.Q},p0/Z,\[x0,sp,#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-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 {Z1.Q,Z1.Q,Z2.Q,Z3.Q},p0/Z,\[sp,x0,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `ld4q {Z1.Q,Z1.Q,Z2.Q,Z3.Q},p0/Z,\[x0,sp,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: 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 offset register at operand 3 -- `st1q Z0.Q,P0,\[Z0.D,sp\]' +.*: Error: operand mismatch -- `st1q Z0.Q,P0,\[Z0.S,x15\]' +.*: Info: did you mean this\? +.*: Info: st1q {z0.q}, p0, \[z0.d, x15\] +.*: Error: invalid use of 32-bit register offset at operand 3 -- `st1q Z0.Q,P0,\[Z0.D,w10\]' +.*: Error: the register list must have a stride of 1 at operand 1 -- `st2q {Z0.Q,Z2.Q},p0,\[x0,#-2,MUL VL\]' +.*: 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 base register at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[x31,#-20,MUL VL\]' +.*: Error: invalid base register at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[xzr,#-20,MUL VL\]' +.*: Error: invalid register list at operand 1 -- `st3q {Z0.Q,Z1.Q,Z3.Q},p0,\[x0,#-3,MUL VL\]' +.*: Error: p0-p7 expected at operand 2 -- `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: type mismatch in vector register list at operand 1 -- `st3q {Z29.Q,Z30.Q,Z31.D},p7,\[x30,#-30,MUL VL\]' +.*: Error: type mismatch in vector register list at operand 1 -- `st3q {Z29.Q,Z30.Q,Z31.D},p7,\[xzr,#-30,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: type mismatch in vector register list at operand 1 -- `st4q {Z28.Q,Z29.Q,Z30.D,Z31.Q},p7,\[x30,#-100,MUL VL\]' +.*: Error: type mismatch in vector register list at operand 1 -- `st4q {Z28.Q,Z29.Q,Z30.D,Z31.Q},p7,\[xzr,#-100,MUL VL\]' +.*: Error: invalid addressing mode at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[x0,x0,LSL#3\]' +.*: Error: invalid addressing mode at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[sp,x0,LSL#3\]' +.*: Error: invalid offset register at operand 3 -- `st2q {Z0.Q,Z1.Q},p0,\[x0,sp,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: shift expression expected at operand 3 -- `st3q {Z0.Q,Z1.Q,Z2.Q},p0,\[sp,x0,#4\]' +.*: Error: invalid offset register at operand 3 -- `st3q {Z0.Q,Z1.Q,Z2.Q},p0,\[x0,sp,#4\]' +.*: Error: invalid addressing mode at operand 3 -- `st3q {Z29.Q,Z30.Q,Z31.Q},p0,\[x0,x0,LSL#2\]' +.*: 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 {Z1.Q,Z1.Q,Z2.Q,Z3.Q},p0,\[sp,x0,LSL#4\]' +.*: Error: invalid register list at operand 1 -- `st4q {Z1.Q,Z1.Q,Z2.Q,Z3.Q},p0,\[x0,sp,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 00000000000..a95c18e88ec --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4-invalid.s @@ -0,0 +1,119 @@ +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] +ld1q Z0.Q , P0/Z, [Z0.D, sp] +ld1q Z0.Q , P0/Z, [Z0.S, x15] +ld1q Z0.Q , P0/Z, [Z0.D, w10] + +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] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x31, #-20, MUL VL] +ld2q {Z0.Q, Z1.Q}, p0/Z, [xzr, #-20, 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] +ld3q {Z29.Q, Z30.Q, Z31.D}, p7/Z, [x30, #-30, MUL VL] +ld3q {Z29.Q, Z30.Q, Z31.D}, p7/Z, [xzr, #-30, 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] +ld4q {Z28.Q, Z29.Q, Z30.D, Z31.Q}, p7/Z, [x30, #-100, MUL VL] +ld4q {Z28.Q, Z29.Q, Z30.D, Z31.Q}, p7/Z, [xzr, #-100, MUL VL] + +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, x0, LSL #3] +ld2q {Z0.Q, Z1.Q}, p0/Z, [sp, x0, LSL #3] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, sp, 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 {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [sp, x0, #4] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, sp, #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 {Z1.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [sp, x0, LSL #4] +ld4q {Z1.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, sp, 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] +st1q Z0.Q , P0, [Z0.D, sp] +st1q Z0.Q , P0, [Z0.S, x15] +st1q Z0.Q , P0, [Z0.D, w10] + +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] +st2q {Z0.Q, Z1.Q}, p0, [x31, #-20, MUL VL] +st2q {Z0.Q, Z1.Q}, p0, [xzr, #-20, MUL VL] + +st3q {Z0.Q, Z1.Q, Z3.Q}, p0, [x0, #-3, MUL VL] +st3q {Z29.Q, Z30.Q, Z31.Q}, p8, [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] +st3q {Z29.Q, Z30.Q, Z31.D}, p7, [x30, #-30, MUL VL] +st3q {Z29.Q, Z30.Q, Z31.D}, p7, [xzr, #-30, 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] +st4q {Z28.Q, Z29.Q, Z30.D, Z31.Q}, p7, [x30, #-100, MUL VL] +st4q {Z28.Q, Z29.Q, Z30.D, Z31.Q}, p7, [xzr, #-100, MUL VL] + +st2q {Z0.Q, Z1.Q}, p0, [x0, x0, LSL #3] +st2q {Z0.Q, Z1.Q}, p0, [sp, x0, LSL #3] +st2q {Z0.Q, Z1.Q}, p0, [x0, sp, 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 {Z0.Q, Z1.Q, Z2.Q}, p0, [sp, x0, #4] +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, sp, #4] +st3q {Z29.Q, Z30.Q, Z31.Q}, p0, [x0, x0, LSL #2] +st3q {Z0.Q, Z1.Q, Z2.Q}, p7, [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 {Z1.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [sp, x0, LSL #4] +st4q {Z1.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, sp, 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 00000000000..e166b2d8240 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4.d @@ -0,0 +1,144 @@ +#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\] +.*: c41fa000 ld1q {z0.q}, p0/z, \[z0.d, xzr\] +.*: c41ebfff ld1q {z31.q}, p7/z, \[z31.d, x30\] +.*: c404acef ld1q {z15.q}, p3/z, \[z7.d, x4\] +.*: a490e000 ld2q {z0.q-z1.q}, p0/z, \[x0\] +.*: a490e01f ld2q {z31.q-z0.q}, p0/z, \[x0\] +.*: a490fc00 ld2q {z0.q-z1.q}, p7/z, \[x0\] +.*: a490e3c0 ld2q {z0.q-z1.q}, p0/z, \[x30\] +.*: a498e000 ld2q {z0.q-z1.q}, p0/z, \[x0, #-16, mul vl\] +.*: a497e000 ld2q {z0.q-z1.q}, p0/z, \[x0, #14, mul vl\] +.*: a498ffdf ld2q {z31.q-z0.q}, p7/z, \[x30, #-16, mul vl\] +.*: a49be7e1 ld2q {z1.q-z2.q}, p1/z, \[sp, #-10, mul vl\] +.*: a49fe47e ld2q {z30.q-z31.q}, p1/z, \[x3, #-2, mul vl\] +.*: a510e000 ld3q {z0.q-z2.q}, p0/z, \[x0\] +.*: a510e01f ld3q {z31.q-z1.q}, p0/z, \[x0\] +.*: a510fc00 ld3q {z0.q-z2.q}, p7/z, \[x0\] +.*: a510e3c0 ld3q {z0.q-z2.q}, p0/z, \[x30\] +.*: a518e000 ld3q {z0.q-z2.q}, p0/z, \[x0, #-24, mul vl\] +.*: a517e000 ld3q {z0.q-z2.q}, p0/z, \[x0, #21, mul vl\] +.*: a518ffdf ld3q {z31.q-z1.q}, p7/z, \[x30, #-24, mul vl\] +.*: a51fffdd ld3q {z29.q-z31.q}, p7/z, \[x30, #-3, mul vl\] +.*: a51fffdd ld3q {z29.q-z31.q}, p7/z, \[x30, #-3, mul vl\] +.*: a51ce7e1 ld3q {z1.q-z3.q}, p1/z, \[sp, #-12, mul vl\] +.*: a51fffdd ld3q {z29.q-z31.q}, p7/z, \[x30, #-3, mul vl\] +.*: a590e000 ld4q {z0.q-z3.q}, p0/z, \[x0\] +.*: a590e01f ld4q {z31.q-z2.q}, p0/z, \[x0\] +.*: a590fc00 ld4q {z0.q-z3.q}, p7/z, \[x0\] +.*: a590e3c0 ld4q {z0.q-z3.q}, p0/z, \[x30\] +.*: a598e000 ld4q {z0.q-z3.q}, p0/z, \[x0, #-32, mul vl\] +.*: a597e000 ld4q {z0.q-z3.q}, p0/z, \[x0, #28, mul vl\] +.*: a598ffdf ld4q {z31.q-z2.q}, p7/z, \[x30, #-32, mul vl\] +.*: a59fffdc ld4q {z28.q-z31.q}, p7/z, \[x30, #-4, mul vl\] +.*: a59fffdc ld4q {z28.q-z31.q}, p7/z, \[x30, #-4, mul vl\] +.*: a59cf3e1 ld4q {z1.q-z4.q}, p4/z, \[sp, #-16, mul vl\] +.*: a59fffdc ld4q {z28.q-z31.q}, p7/z, \[x30, #-4, mul vl\] +.*: a4a08000 ld2q {z0.q-z1.q}, p0/z, \[x0, x0, lsl #4\] +.*: a4a0801f ld2q {z31.q-z0.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\] +.*: a4be9fdf ld2q {z31.q-z0.q}, p7/z, \[x30, x30, lsl #4\] +.*: a4b4914f ld2q {z15.q-z16.q}, p4/z, \[x10, x20, lsl #4\] +.*: a4b48ff4 ld2q {z20.q-z21.q}, p3/z, \[sp, x20, lsl #4\] +.*: a5208000 ld3q {z0.q-z2.q}, p0/z, \[x0, x0, lsl #4\] +.*: a520801f ld3q {z31.q-z1.q}, p0/z, \[x0, x0, lsl #4\] +.*: a5209c00 ld3q {z0.q-z2.q}, p7/z, \[x0, x0, lsl #4\] +.*: a52083c0 ld3q {z0.q-z2.q}, p0/z, \[x30, x0, lsl #4\] +.*: a53e8000 ld3q {z0.q-z2.q}, p0/z, \[x0, x30, lsl #4\] +.*: a53e9fdf ld3q {z31.q-z1.q}, p7/z, \[x30, x30, lsl #4\] +.*: a534894a ld3q {z10.q-z12.q}, p2/z, \[x10, x20, lsl #4\] +.*: a534894a ld3q {z10.q-z12.q}, p2/z, \[x10, x20, lsl #4\] +.*: a534894a ld3q {z10.q-z12.q}, p2/z, \[x10, x20, lsl #4\] +.*: a53497ef ld3q {z15.q-z17.q}, p5/z, \[sp, x20, lsl #4\] +.*: a5a08000 ld4q {z0.q-z3.q}, p0/z, \[x0, x0, lsl #4\] +.*: a5a0801f ld4q {z31.q-z2.q}, p0/z, \[x0, x0, lsl #4\] +.*: a5a09c00 ld4q {z0.q-z3.q}, p7/z, \[x0, x0, lsl #4\] +.*: a5a083c0 ld4q {z0.q-z3.q}, p0/z, \[x30, x0, lsl #4\] +.*: a5be8000 ld4q {z0.q-z3.q}, p0/z, \[x0, x30, lsl #4\] +.*: a5be9fdf ld4q {z31.q-z2.q}, p7/z, \[x30, x30, lsl #4\] +.*: a5a4886a ld4q {z10.q-z13.q}, p2/z, \[x3, x4, lsl #4\] +.*: a5a4886a ld4q {z10.q-z13.q}, p2/z, \[x3, x4, lsl #4\] +.*: a5a4886a ld4q {z10.q-z13.q}, p2/z, \[x3, x4, lsl #4\] +.*: a5a48bea ld4q {z10.q-z13.q}, p2/z, \[sp, x4, 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\] +.*: e43f2000 st1q {z0.q}, p0, \[z0.d, xzr\] +.*: e43e3fff st1q {z31.q}, p7, \[z31.d, x30\] +.*: e4242cef st1q {z15.q}, p3, \[z7.d, x4\] +.*: e4400000 st2q {z0.q-z1.q}, p0, \[x0\] +.*: e440001f st2q {z31.q-z0.q}, p0, \[x0\] +.*: e4401c00 st2q {z0.q-z1.q}, p7, \[x0\] +.*: e44003c0 st2q {z0.q-z1.q}, p0, \[x30\] +.*: e4480000 st2q {z0.q-z1.q}, p0, \[x0, #-16, mul vl\] +.*: e4470000 st2q {z0.q-z1.q}, p0, \[x0, #14, mul vl\] +.*: e4481fdf st2q {z31.q-z0.q}, p7, \[x30, #-16, mul vl\] +.*: e44b07e1 st2q {z1.q-z2.q}, p1, \[sp, #-10, mul vl\] +.*: e44f047e st2q {z30.q-z31.q}, p1, \[x3, #-2, mul vl\] +.*: e4800000 st3q {z0.q-z2.q}, p0, \[x0\] +.*: e480001f st3q {z31.q-z1.q}, p0, \[x0\] +.*: e4801c00 st3q {z0.q-z2.q}, p7, \[x0\] +.*: e48003c0 st3q {z0.q-z2.q}, p0, \[x30\] +.*: e4880000 st3q {z0.q-z2.q}, p0, \[x0, #-24, mul vl\] +.*: e4870000 st3q {z0.q-z2.q}, p0, \[x0, #21, mul vl\] +.*: e4881fdf st3q {z31.q-z1.q}, p7, \[x30, #-24, mul vl\] +.*: e48f1fdd st3q {z29.q-z31.q}, p7, \[x30, #-3, mul vl\] +.*: e48f1fdd st3q {z29.q-z31.q}, p7, \[x30, #-3, mul vl\] +.*: e48c07e1 st3q {z1.q-z3.q}, p1, \[sp, #-12, mul vl\] +.*: e48f1fdd st3q {z29.q-z31.q}, p7, \[x30, #-3, mul vl\] +.*: e4c00000 st4q {z0.q-z3.q}, p0, \[x0\] +.*: e4c0001f st4q {z31.q-z2.q}, p0, \[x0\] +.*: e4c01c00 st4q {z0.q-z3.q}, p7, \[x0\] +.*: e4c003c0 st4q {z0.q-z3.q}, p0, \[x30\] +.*: e4c80000 st4q {z0.q-z3.q}, p0, \[x0, #-32, mul vl\] +.*: e4c70000 st4q {z0.q-z3.q}, p0, \[x0, #28, mul vl\] +.*: e4c81fdf st4q {z31.q-z2.q}, p7, \[x30, #-32, mul vl\] +.*: e4cf1fdc st4q {z28.q-z31.q}, p7, \[x30, #-4, mul vl\] +.*: e4cf1fdc st4q {z28.q-z31.q}, p7, \[x30, #-4, mul vl\] +.*: e4cc13e1 st4q {z1.q-z4.q}, p4, \[sp, #-16, mul vl\] +.*: e4cf1fdc st4q {z28.q-z31.q}, p7, \[x30, #-4, mul vl\] +.*: e4600000 st2q {z0.q-z1.q}, p0, \[x0, x0, lsl #4\] +.*: e460001f st2q {z31.q-z0.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\] +.*: e47e1fdf st2q {z31.q-z0.q}, p7, \[x30, x30, lsl #4\] +.*: e474114f st2q {z15.q-z16.q}, p4, \[x10, x20, lsl #4\] +.*: e4740ff4 st2q {z20.q-z21.q}, p3, \[sp, x20, lsl #4\] +.*: e4a00000 st3q {z0.q-z2.q}, p0, \[x0, x0, lsl #4\] +.*: e4a0001f st3q {z31.q-z1.q}, p0, \[x0, x0, lsl #4\] +.*: e4a01c00 st3q {z0.q-z2.q}, p7, \[x0, x0, lsl #4\] +.*: e4a003c0 st3q {z0.q-z2.q}, p0, \[x30, x0, lsl #4\] +.*: e4be0000 st3q {z0.q-z2.q}, p0, \[x0, x30, lsl #4\] +.*: e4be1fdf st3q {z31.q-z1.q}, p7, \[x30, x30, lsl #4\] +.*: e4b4094a st3q {z10.q-z12.q}, p2, \[x10, x20, lsl #4\] +.*: e4b4094a st3q {z10.q-z12.q}, p2, \[x10, x20, lsl #4\] +.*: e4b4094a st3q {z10.q-z12.q}, p2, \[x10, x20, lsl #4\] +.*: e4b417ef st3q {z15.q-z17.q}, p5, \[sp, x20, lsl #4\] +.*: e4e00000 st4q {z0.q-z3.q}, p0, \[x0, x0, lsl #4\] +.*: e4e0001f st4q {z31.q-z2.q}, p0, \[x0, x0, lsl #4\] +.*: e4e01c00 st4q {z0.q-z3.q}, p7, \[x0, x0, lsl #4\] +.*: e4e003c0 st4q {z0.q-z3.q}, p0, \[x30, x0, lsl #4\] +.*: e4fe0000 st4q {z0.q-z3.q}, p0, \[x0, x30, lsl #4\] +.*: e4fe1fdf st4q {z31.q-z2.q}, p7, \[x30, x30, lsl #4\] +.*: e4e4086a st4q {z10.q-z13.q}, p2, \[x3, x4, lsl #4\] +.*: e4e4086a st4q {z10.q-z13.q}, p2, \[x3, x4, lsl #4\] +.*: e4e4086a st4q {z10.q-z13.q}, p2, \[x3, x4, lsl #4\] +.*: e4e40bea st4q {z10.q-z13.q}, p2, \[sp, x4, 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 00000000000..000544625e9 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2p1-4.s @@ -0,0 +1,147 @@ +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 { Z0.Q }, P0/Z, [Z0.D, xzr] +ld1q { Z31.Q }, P7/Z, [Z31.D, x30] +ld1q { Z15.Q }, P3/Z, [Z7.D, x4] + +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, #0, MUL VL] +ld2q {Z31.Q, Z0.Q}, p0/Z, [x0, #0, MUL VL] +ld2q {Z0.Q, Z1.Q}, p7/Z, [x0, #0, MUL VL] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x30, #0, MUL VL] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, #-16, MUL VL] +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, #14, MUL VL] +ld2q {Z31.Q, Z0.Q}, p7/Z, [x30, #-16, MUL VL] +ld2q {Z1.Q, Z2.Q}, p1/Z, [sp, #-10, MUL VL] +ld2q {Z30.Q, Z31.Q}, p1/Z, [x3, #-2, MUL VL] + +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, #0, MUL VL] +ld3q {Z31.Q, Z0.Q, Z1.Q}, p0/Z, [x0, #0, MUL VL] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p7/Z, [x0, #0, MUL VL] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x30, #0, MUL VL] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, #-24, MUL VL] +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, #21, MUL VL] +ld3q {Z31.Q, Z0.Q, Z1.Q}, p7/Z, [x30, #-24, MUL VL] +ld3q {Z29.Q, Z30.Q, Z31.Q}, p7/Z, [x30, #-3, MUL VL] +ld3q {Z29.Q - Z30.Q - Z31.Q}, p7/Z, [x30, #-3, MUL VL] +ld3q {Z1.Q, Z2.Q, z3.Q}, p1/Z, [sp, #-12, MUL VL] +ld3q {Z29.Q - Z31.Q}, p7/Z, [x30, #-3, MUL VL] + +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, #0, MUL VL] +ld4q {Z31.Q, Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, #0, MUL VL] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7/Z, [x0, #0, MUL VL] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x30, #0, MUL VL] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, #-32, MUL VL] +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, #28, MUL VL] +ld4q {Z31.Q, Z0.Q, Z1.Q, Z2.Q}, p7/Z, [x30, #-32, MUL VL] +ld4q {Z28.Q, Z29.Q, Z30.Q, Z31.Q}, p7/Z, [x30, #-4, MUL VL] +ld4q {Z28.Q - Z29.Q - Z30.Q - Z31.Q}, p7/Z, [x30, #-4, MUL VL] +ld4q {Z1.Q, Z2.Q, z3.Q, Z4.Q}, p4/Z, [sp, #-16, MUL VL] +ld4q {Z28.Q - Z31.Q}, p7/Z, [x30, #-4, MUL VL] + +ld2q {Z0.Q, Z1.Q}, p0/Z, [x0, x0, LSL #4] +ld2q {Z31.Q, Z0.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 {Z31.Q, Z0.Q}, p7/Z, [x30, x30, LSL #4] +ld2q {Z15.Q, Z16.Q}, p4/Z, [x10, x20, LSL #4] +ld2q {Z20.Q, Z21.Q}, p3/Z, [sp, x20, LSL #4] + +ld3q {Z0.Q, Z1.Q, Z2.Q}, p0/Z, [x0, x0, LSL #4] +ld3q {Z31.Q, Z0.Q, Z1.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 {Z31.Q, Z0.Q, Z1.Q}, p7/Z, [x30, x30, LSL #4] +ld3q {Z10.Q, Z11.Q, Z12.Q}, p2/Z, [x10, x20, LSL #4] +ld3q {Z10.Q - Z11.Q - Z12.Q}, p2/Z, [x10, x20, LSL #4] +ld3q {Z10.Q - Z12.Q}, p2/Z, [x10, x20, LSL #4] +ld3q {Z15.Q - Z17.Q}, p5/Z, [sp, x20, LSL #4] + +ld4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0/Z, [x0, x0, LSL #4] +ld4q {Z31.Q, Z0.Q, Z1.Q, Z2.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 {Z31.Q, Z0.Q, Z1.Q, Z2.Q}, p7/Z, [x30, x30, LSL #4] +ld4q {Z10.Q, Z11.Q, Z12.Q, Z13.Q}, p2/Z, [x3, x4, LSL #4] +ld4q {Z10.Q - Z11.Q - Z12.Q - Z13.Q}, p2/Z, [x3, x4, LSL #4] +ld4q {Z10.Q - Z13.Q}, p2/Z, [x3, x4, LSL #4] +ld4q {Z10.Q, Z11.Q, Z12.Q, Z13.Q}, p2/Z, [sp, x4, 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 { Z0.Q }, P0, [Z0.D, xzr] +st1q { Z31.Q }, P7, [Z31.D, x30] +st1q { Z15.Q }, P3, [Z7.D, x4] + +st2q {Z0.Q, Z1.Q}, p0, [x0, #0, MUL VL] +st2q {Z31.Q, Z0.Q}, p0, [x0, #0, MUL VL] +st2q {Z0.Q, Z1.Q}, p7, [x0, #0, MUL VL] +st2q {Z0.Q, Z1.Q}, p0, [x30, #0, MUL VL] +st2q {Z0.Q, Z1.Q}, p0, [x0, #-16, MUL VL] +st2q {Z0.Q, Z1.Q}, p0, [x0, #14, MUL VL] +st2q {Z31.Q, Z0.Q}, p7, [x30, #-16, MUL VL] +st2q {Z1.Q, Z2.Q}, p1, [sp, #-10, MUL VL] +st2q {Z30.Q, Z31.Q}, p1, [x3, #-2, MUL VL] + +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, #0, MUL VL] +st3q {Z31.Q, Z0.Q, Z1.Q}, p0, [x0, #0, MUL VL] +st3q {Z0.Q, Z1.Q, Z2.Q}, p7, [x0, #0, MUL VL] +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x30, #0, MUL VL] +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, #-24, MUL VL] +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, #21, MUL VL] +st3q {Z31.Q, Z0.Q, Z1.Q}, p7, [x30, #-24, MUL VL] +st3q {Z29.Q, Z30.Q, Z31.Q}, p7, [x30, #-3, MUL VL] +st3q {Z29.Q - Z30.Q - Z31.Q}, p7, [x30, #-3, MUL VL] +st3q {Z1.Q, Z2.Q, z3.Q}, p1, [sp, #-12, MUL VL] +st3q {Z29.Q - Z31.Q}, p7, [x30, #-3, MUL VL] + +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, #0, MUL VL] +st4q {Z31.Q, Z0.Q, Z1.Q, Z2.Q}, p0, [x0, #0, MUL VL] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p7, [x0, #0, MUL VL] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x30, #0, MUL VL] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, #-32, MUL VL] +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, #28, MUL VL] +st4q {Z31.Q, Z0.Q, Z1.Q, Z2.Q}, p7, [x30, #-32, MUL VL] +st4q {Z28.Q, Z29.Q, Z30.Q, Z31.Q}, p7, [x30, #-4, MUL VL] +st4q {Z28.Q - Z29.Q - Z30.Q - Z31.Q}, p7, [x30, #-4, MUL VL] +st4q {Z1.Q, Z2.Q, z3.Q, Z4.Q}, p4, [sp, #-16, MUL VL] +st4q {Z28.Q - Z31.Q}, p7, [x30, #-4, MUL VL] + +st2q {Z0.Q, Z1.Q}, p0, [x0, x0, LSL #4] +st2q {Z31.Q, Z0.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 {Z31.Q, Z0.Q}, p7, [x30, x30, LSL #4] +st2q {Z15.Q, Z16.Q}, p4, [x10, x20, LSL #4] +st2q {Z20.Q, Z21.Q}, p3, [sp, x20, LSL #4] + +st3q {Z0.Q, Z1.Q, Z2.Q}, p0, [x0, x0, LSL #4] +st3q {Z31.Q, Z0.Q, Z1.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 {Z31.Q, Z0.Q, Z1.Q}, p7, [x30, x30, LSL #4] +st3q {Z10.Q, Z11.Q, Z12.Q}, p2, [x10, x20, LSL #4] +st3q {Z10.Q - Z11.Q - Z12.Q}, p2, [x10, x20, LSL #4] +st3q {Z10.Q - Z12.Q}, p2, [x10, x20, LSL #4] +st3q {Z15.Q - Z17.Q}, p5, [sp, x20, LSL #4] + +st4q {Z0.Q, Z1.Q, Z2.Q, Z3.Q}, p0, [x0, x0, LSL #4] +st4q {Z31.Q, Z0.Q, Z1.Q, Z2.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 {Z31.Q, Z0.Q, Z1.Q, Z2.Q}, p7, [x30, x30, LSL #4] +st4q {Z10.Q, Z11.Q, Z12.Q, Z13.Q}, p2, [x3, x4, LSL #4] +st4q {Z10.Q - Z11.Q - Z12.Q - Z13.Q}, p2, [x3, x4, LSL #4] +st4q {Z10.Q - Z13.Q}, p2, [x3, x4, LSL #4] +st4q {Z10.Q, Z11.Q, Z12.Q, Z13.Q}, p2, [sp, x4, LSL #4] diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index f97a288d446..1196cde00b7 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -808,9 +808,6 @@ 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_RCPC3_ADDR_OPT_POSTIND, /* []{, #}. */ AARCH64_OPND_RCPC3_ADDR_OPT_PREIND_WB, /* [] or [, #]!. */ AARCH64_OPND_RCPC3_ADDR_POSTIND, /* [], #. */ diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index c4dd4ff9f49..0bcfa78c1a8 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; @@ -3704,10 +3701,7 @@ print_register_list (char *buf, size_t size, const aarch64_opnd_info *opnd, /* The hyphenated form is preferred for disassembly if there is more than one register 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))) + if (stride == 1 && num_regs > 1) 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); @@ -4166,9 +4160,6 @@ 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: print_register_list (buf, size, opnd, "z", styler); break; diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index b6766e07e58..e9a39b3602a 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1795,11 +1795,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), \ } @@ -6480,21 +6480,23 @@ const struct aarch64_opcode aarch64_opcode_table[] = SVE2p1_INSN("dupq",0x05202400, 0xffe0fc00, sve_index, 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_S4x3xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("ld4q",0xa590e000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt4, SVE_Pg3, SVE_ADDR_RI_S4x4xVL), OP_SVE_QZU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("ld2q",0xa4a08000, 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_S4x3xVL), OP_SVE_QUU, 0, C_SCAN_MOVPRFX, 0), - SVE2p1_INSNC("st4q",0xe4c00000, 0xfff0e000, sve_misc, 0, OP3 (SME_Zt4, SVE_Pg3, SVE_ADDR_RI_S4x4xVL), 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_INSN("ld1q",0xc400a000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_QZD, F_OD (1), 0), + SVE2p1_INSN("ld2q",0xa490e000, 0xfff0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QZU, F_OD (2), 0), + SVE2p1_INSN("ld3q",0xa510e000, 0xfff0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RI_S4x3xVL), OP_SVE_QZU, F_OD (3), 0), + SVE2p1_INSN("ld4q",0xa590e000, 0xfff0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RI_S4x4xVL), OP_SVE_QZU, F_OD (4), 0), + SVE2p1_INSN("ld2q",0xa4a08000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, F_OD (2), 0), + SVE2p1_INSN("ld3q",0xa5208000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, F_OD (3), 0), + SVE2p1_INSN("ld4q",0xa5a08000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QZU, F_OD (4), 0), + + SVE2p1_INSN("st1q",0xe4202000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_ZX), OP_SVE_QUD, F_OD (1), 0), + SVE2p1_INSN("st2q",0xe4400000, 0xfff0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RI_S4x2xVL), OP_SVE_QUU, F_OD (2), 0), + SVE2p1_INSN("st3q",0xe4800000, 0xfff0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RI_S4x3xVL), OP_SVE_QUU, F_OD (3), 0), + SVE2p1_INSN("st4q",0xe4c00000, 0xfff0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RI_S4x4xVL), OP_SVE_QUU, F_OD (4), 0), + SVE2p1_INSN("st2q",0xe4600000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, F_OD (2), 0), + SVE2p1_INSN("st3q",0xe4a00000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, F_OD (3), 0), + SVE2p1_INSN("st4q",0xe4e00000, 0xffe0e000, sve_misc, 0, OP3 (SVE_ZtxN, SVE_Pg3, SVE_ADDR_RR_LSL4), OP_SVE_QUU, F_OD (4), 0), + FP8_INSN("bf1cvtl", 0x2ea17800, 0xfffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2FP8B8H, 0), FP8_INSN("bf1cvtl2", 0x6ea17800, 0xfffffc00, asimdmisc, OP2 (Vd, Vn), QL_V28H16B, 0), FP8_INSN("bf2cvtl", 0x2ee17800, 0xfffffc00, asimdmisc, OP2 (Vd, Vn), QL_V2FP8B8H, 0), @@ -7192,15 +7194,6 @@ 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", \ - 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", \ - 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", \ - 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, \ "RCPC3_ADDR_OPT_POSTIND", 0, F(FLD_opc2), \ "an address with post-incrementing by ammount of loaded bytes") \