From patchwork Fri Jun 14 14:13:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saurabh Jha X-Patchwork-Id: 92201 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 C44E93882AC1 for ; Fri, 14 Jun 2024 14:14:55 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2061.outbound.protection.outlook.com [40.107.20.61]) by sourceware.org (Postfix) with ESMTPS id 057E53882100 for ; Fri, 14 Jun 2024 14:14:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 057E53882100 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 057E53882100 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.20.61 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1718374456; cv=pass; b=JLHuy3p8SEgiWEoVkT/Yu/eKcm5/HOI4JVITnwmnL9mcZOyF8cczEygoOSDCn33+PU8WeergApX5ngoSZL/9pdjcVYJ0yq6QCMj6GNsmXpgzj01804N1Ixz//a4FKb7giOgqmNjyhyWIN8JMMQ2CmlxRaleWJAvIvlT+wPRSwQY= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1718374456; c=relaxed/simple; bh=bPQUTJhHHkiST5JOcVCqOW/vD6e6dbQMBYlS0S+5+1s=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=PdC69aw3VDneQ4rn6e8kCNW6JqLyTT/tSYInCHkBCKQ/8yu4etZ5EAD/OZiXIo+8u4NTO+HyG5TbfVVqx6bfKgDUwY0c2X7fOkeWc0RufjpRFrDnlDRAMvtvNnwQMS+ywVU5yY6whvQMP9jsjhWxEQALTVt+Q01ng7+NeZ1i2cw= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=oJKCyj//BNSjUDlSUl5C4W0ES2jEYgF2MtZPdV8Yl5IMA2GZoCyJoIsf3ma/eR1Y+xu6F6xOyg3oDjhxb/618eT0ZuaDlCLQzqkzdzCg9sE5FVER+Y5XVhKCbxujOJw0GUMARYL+XLh7E/rHLoGCLzl+XlHBpkL1Pie+ChhnUHrPegINScTtlSlI0kCzv0rmF8VeJG7ByIVIr+qHiVKQQaxVLLL0BiWg7rtS4LaTUZnN2w4955O9eVdJrTPa4P26k8A13aXq7fQXUGzjj2NJjImnXpLZMJEjCnyR92uA1a+9UtZTVkHe0VY8xSjUHcfNuuVYcBZNPChNE8+z2sxXKw== 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=YS/yFzIkUPdIozd7B4K1zj2mQAXIVUuiov7HZl2w2Ro=; b=T1I93FhunUgO2/BNG94Mf7X5R/pAjj6GnGFPhBbTvH+gDG8rWIR6TWgypFaaAQ5zy6p5U84SNyIGQ069Hd47w4NSRAXf2E9EAc/Pwuy88wzA000P2zlxfoh2egRI9yKFPIyV0BRkRL+Ew6fkB7Jz4t5NlBpgwXtTJaTKZHsZx8tb+iNuJIYkj5wQOFLs5ID0u1Wg9dsHlfPrz21q58TKjXs9ZW6VOo4xWUyiSFL1vwQMoFdF0zBkkx24Ao4R3kHKav7y5P5g8OPGnK23EpCDfXCwwOkuy3N8Wd3cFkj8OY+14avTGoLCvhMubPLpyVgsIuof5F2ye1f8mPdd0uPHLA== 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=YS/yFzIkUPdIozd7B4K1zj2mQAXIVUuiov7HZl2w2Ro=; b=iZxBQuKdWh9FotjzZ7HEP9fmvmIqsK+/+u4k2FuEFbsSKw2yc92APAPed6UTrUKeTkVNw5LlxsWa1fXZPH8fjMD/o3pP865hmtLCey8Y0o3GpUxiuLO+8hAywa77r4cePwDTmYSrfT2G6Scc96AvNHtlkDsW0RjD6BchTr3wUQo= Received: from DB7PR05CA0027.eurprd05.prod.outlook.com (2603:10a6:10:36::40) by DB9PR08MB9489.eurprd08.prod.outlook.com (2603:10a6:10:458::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.37; Fri, 14 Jun 2024 14:14:08 +0000 Received: from DU6PEPF0000B61E.eurprd02.prod.outlook.com (2603:10a6:10:36:cafe::1b) by DB7PR05CA0027.outlook.office365.com (2603:10a6:10:36::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.25 via Frontend Transport; Fri, 14 Jun 2024 14:14: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=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 DU6PEPF0000B61E.mail.protection.outlook.com (10.167.8.133) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7677.15 via Frontend Transport; Fri, 14 Jun 2024 14:14:07 +0000 Received: ("Tessian outbound 949243bb8c19:v332"); Fri, 14 Jun 2024 14:14:07 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 420ca87938ea876b X-CR-MTA-TID: 64aa7808 Received: from 10366aa94710.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 55B9BACB-E71F-4286-B85D-9A9E5409F82F.1; Fri, 14 Jun 2024 14:14:00 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 10366aa94710.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 14 Jun 2024 14:14:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ktpszAzJjioBHX+HJJlI5Efcp/t50gPpwRgkSFvR7+d9mW5Jnk1b8PSWkLgakKbKAGfrPzxR5mlHLWEz+SirI2wMdeInLC4lgsIy8MaNmxtAc/gfSwkBaosqXWOtVtcjixOCnVlrfNetp/pf+PFI4SKFz8/vEmbYIUAsHYlJQm5fBSokXEkb39o/vy9r/uOpe1NvvQbNJISQsVaaqdcILuhPIJH8zaui8g7hm2CyuwYLKy+jb90lGOocIdTVw3+ANAa0TMSOO31n3JRt1tSliJUco8wNC+RbNIClv0xLruizKZJHLBuCeG/YH/0zbJiLyI6SI70EimYwK+Ile2y5OQ== 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=YS/yFzIkUPdIozd7B4K1zj2mQAXIVUuiov7HZl2w2Ro=; b=MmsasaDOumW1a96zKlZF4eqlihdjp1kmakAxsx/LsQNuCOvAm93tMlxc2rcaeil4cIrmVjAOZ0UkbUH3thY4TF6BqAPUZxpizp0WBd05xBAKY7fDTW6rlOeKPTbHlzPyJ1yHUbO8T5mICX1ejig1BasRE5klLzjhbmTPkcoeU1BrtCdmj30RXbFKrNSpFV/8h8y091qQUArJ4QIXyxe0mWGvLHCJrmdXE6uzR4tPsq6s4iGQEMdxtGX2lN9XqWmFsoNZ95Mm+o6+s4l3Ep9FNFrJmXMjDeyPgqpJf5xao8PCu5gRfPs92lwPX+ePuPJqzq+9JLfaKXb0kT4TJgqOnQ== 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=YS/yFzIkUPdIozd7B4K1zj2mQAXIVUuiov7HZl2w2Ro=; b=iZxBQuKdWh9FotjzZ7HEP9fmvmIqsK+/+u4k2FuEFbsSKw2yc92APAPed6UTrUKeTkVNw5LlxsWa1fXZPH8fjMD/o3pP865hmtLCey8Y0o3GpUxiuLO+8hAywa77r4cePwDTmYSrfT2G6Scc96AvNHtlkDsW0RjD6BchTr3wUQo= Received: from DU6P191CA0007.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:540::22) by GV1PR08MB10423.eurprd08.prod.outlook.com (2603:10a6:150:165::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.39; Fri, 14 Jun 2024 14:13:57 +0000 Received: from DU6PEPF0000B622.eurprd02.prod.outlook.com (2603:10a6:10:540:cafe::e0) by DU6P191CA0007.outlook.office365.com (2603:10a6:10:540::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.25 via Frontend Transport; Fri, 14 Jun 2024 14:13: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 DU6PEPF0000B622.mail.protection.outlook.com (10.167.8.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7677.15 via Frontend Transport; Fri, 14 Jun 2024 14:13:56 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) 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; Fri, 14 Jun 2024 14:13:55 +0000 Received: from e130340.cambridge.arm.com (10.2.80.47) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Fri, 14 Jun 2024 14:13:55 +0000 From: To: CC: , , Saurabh Jha Subject: [PATCH v4 1/2] gas, aarch64: Add SME2 lutv2 extension Date: Fri, 14 Jun 2024 15:13:52 +0100 Message-ID: <20240614141353.1287038-1-saurabh.jha@arm.com> X-Mailer: git-send-email 2.43.2 MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DU6PEPF0000B622:EE_|GV1PR08MB10423:EE_|DU6PEPF0000B61E:EE_|DB9PR08MB9489:EE_ X-MS-Office365-Filtering-Correlation-Id: 68400124-b7db-46c6-a7e6-08dc8c7c4143 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:13230037|376011|36860700010|34020700013|1800799021|82310400023; X-Microsoft-Antispam-Message-Info-Original: fzJJy0+h2GTnLrHtiphsLPDg3cNyOdag/7IRacg860NiwtNdvxfA5O8xU4sXcvDM7H+INcpN+t40I7DCtDTn2m+rt/xVE2wDRAgpI2JOAw2lurGcmJuLKKgakIq9xdRVCv1hNWkpGjcgYR9D5aBlqQlkOjjWd2cIIr131fwxLTSXVZ1mDRYecxyRUnFBWEtXRtGJJ8lNOujQAiB/edUygjoSw17lYmQlEEg7pZd3AEVQA2KFHJ+1ZiV2Nv8X8skk+GV1zPIxAfuKQVZFiY19k6nQgLp3O/6k6wv6LdXayzQ1QXKSpe20lIIfBfWhgrJDw3QjOwQaOpjOJq0CyBUYvgY2KnjIqQZtFmmsETqm0QjrBWVMv41/sLtOR9RJYxzQYM/olNKcwc9Rjs/i74hHgw22VHOTZBDfQ5BBu2m9gZAwiGO6oMOuV7Wv5ZoW9/qETxlqwY/DBFLs5iXmuPGH5zOlmqCtJtv57Khx7HLrnfvmwiohTMTd3YPXjy8qLlARexs6tkvxm5WlznNqm2a4nqrGII6GR+Gu8CpJ/AsSIoYsHpCrgQAVwsRkdREDBxwZrAkc0xLUlhFCBFV7RyJLPaWw9lCf5iWeTOa8aaIuiHPUU+ahIjhHtKCj3t2GkevovvEKGQIJ3ZPRoO0cjLEo42py0MA5bVzT0MdONblnwVCDJ05wnoPoYQRZeqxJzCzE2Rrw9UWQ97/0/ynZhQni0PPL0m1jtLjTCnGDRSeAtjCPv5x9876jF6WOmLHg7r+qUtfTNEkB9AbofqTX0Q5ogMdHmuuQ4fU1hIf8TNtxyi3bB+aXX2xzFO3hORIjCjHSa98kBoFpLWm7nuLZurGZhHkKSWR+3IrcuerLx6u9SYBPNPKfjDiAtlzdfjE8Ydty6xZfuFRwl0QjdOoDAS28KEvBVw1IB1XPlj8J892Ev2rxtEw4taSwjI+4Qzrw4UiyCVP/oScIPC57L4s43gKyh2Qiz7jUkNnxmAGwoz0vNhfgHy5yOtwXRd1v73WqZwm+AfkysibPVSzqg8PI5YlbyotEABJs0apPumiCb6RFfIdfk4isvrXwiwbJh+iE5f77ln2cBtSA2XB5Ikz6ODtQoU1BlqUII6qy632LOwL5MZnBez96isQQ+anMQ/DNU7lJa0585hP8+HKkibFCDduhQ/sjck244BcRuHqxewSJYI9Rb0ZCVaSADCsI8A6Ly7UVWr6cFTkpkL7jkU37Ckj8GAqz7mn9fNOOEhxh4JdOPf/cF/FJUafMud2OkgE7zASACYHDe+bXZLEhTfnlUttH5+mpz5yZ9tRzC+d4M4kEOw1iMzbGclF/bC7eKJVVKu1iHn/2L44T1EaHdxzdU9JRsHB+xV7MoOimmXrs+w7pJmA= 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:(13230037)(376011)(36860700010)(34020700013)(1800799021)(82310400023); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB10423 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000B61E.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e74abc13-5b10-4d01-f065-08dc8c7c3aa9 X-Microsoft-Antispam: BCL:0; ARA:13230037|376011|36860700010|34020700013|1800799021|35042699019|82310400023; X-Microsoft-Antispam-Message-Info: =?utf-8?q?1g1kmKT9GQ0YqfiDkNo0rK8Bh/w5vqK?= =?utf-8?q?C8w79zm+gYsgSAppkI3ngXev1omPVbqdKUBO/gEwFU8BI6Wg2N9YcpVGlIP8tF2Vi?= =?utf-8?q?BimmTWQHggwJa9X+4XHwx+LU8e1V0JZFwmm08WXVnQcNrurlUyB4xhI5QW8ipSV5X?= =?utf-8?q?Agk3lAk055UBegAC3/Ophxgr+13NJVgtTgXVVwpIFe4ZvaUO4j6Lc2REMZXtQSxsT?= =?utf-8?q?qOCpYQ76SXRTDZrYTgmvTodbbjtW5Td5g3QXiaew5QAL3g3EoaPPbp46F+/sGM5LB?= =?utf-8?q?IGlQvZ5t8/3OWW7d2WMMyJwyljbmSR5Ks2R4lpVn7HWRxxLIkH96p4DzDVZo6RINs?= =?utf-8?q?kFcSPIPk6x0Wv02zFBIwWNWkVW2En2z5d54jgHdZ1IpZb46mVHhLamvKRoxjL7+gm?= =?utf-8?q?Nwn/KBBXYwqKyBLLzvk5ORJkLZbIcC8dWb7xjBda65ekfV2ujAhxoqofMV+YDgve8?= =?utf-8?q?MUWQBYMdQRMPebYBzqa0Oxynb2myc5XV9LtAk1I2HRTZTU7cTY5rQbzU3zQp4bfZC?= =?utf-8?q?+pcVm8Bdsuzqfh5GsqB1xCeYtE8mK2mnQ7C0FgQ6c1o6EVj0S+uDbeKNkbdd5xd2U?= =?utf-8?q?KfYHvRjCDg1/+JkrICNwfeH3CY2vqsUlxuc7eVJRs3f+dl0ToTGTcvqRrhQcpdgXy?= =?utf-8?q?jfBBfMfPXAezGox/e3zSJXc/cpkmTdV/XADj/6s4iq/eeFNyvoGyn0fBvZWc6G1XT?= =?utf-8?q?kOqpyDdS+OkLyKn6QVhLSxf4yQCzrPhUeJgbuTi3o30nhWONrxFFSFCfJK/8GrnpE?= =?utf-8?q?WNavPxq9FMdhS/rSGQ70liwKMqNP0QwtAwnOdjDtUNg0Zm130MuiaYpiWw4tLZH1v?= =?utf-8?q?mEeRWlvtBTBGD+BSPi0B21lDSq5g/3IvGeDhLWabuDFnuuKx6A9VHtpJcb9mAiG3g?= =?utf-8?q?qh+xcCv5lYcoYdFFAyW+aY2itAtFwOEiBsodUHVgocN9TWrnlIwi8Y7+Rk+P+HSmo?= =?utf-8?q?Bp0s37e02gfpF3keWdUZU/7XrcBX/eF7ycrORR63Ka2dnzdNcGrC13qOXU/Q60V9Y?= =?utf-8?q?hkKPiAXfSsGce/yJTQHzE0jy8kPwisWkdnsuTGASNUlEpjcpods52F2yUo7ufOh4U?= =?utf-8?q?Y3RHvG8C3mKwhXz9U97xNTlqT+6H+2tqSklJDIS7oXoxkRoggUtETmY9bXmkOhnnU?= =?utf-8?q?l27h0RpkxWjVIekQiYYOfhhiDc5JT+Tbe7kInz/T5GqLK5JwT6R4XBVb2BTbzqUQu?= =?utf-8?q?kax8kAjQG2y/IIjzenu0I878XuyjqLmb2MQVW4S0WnmakyJaoL8mnoa5CG9Ik195r?= =?utf-8?q?+fzE61vfGjSs0HBczi7oCW9QTcLa7P8DALWjf+ce1E9TRPGERQClxDD4=3D?= 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:(13230037)(376011)(36860700010)(34020700013)(1800799021)(35042699019)(82310400023); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2024 14:14:07.8397 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 68400124-b7db-46c6-a7e6-08dc8c7c4143 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: DU6PEPF0000B61E.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9489 X-Spam-Status: No, score=-11.8 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, 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+patchwork=sourceware.org@sourceware.org Introduces instructions for the SME2 lutv2 extension for AArch64. They are documented in the following links: * https://developer.arm.com/documentation/ddi0602/2024-03/SME-Instructions/LUTI4--four-registers--8-bit---Lookup-table-read-with-4-bit-indexes-and-8-bit-elements-?lang=en * https://developer.arm.com/documentation/ddi0602/2024-03/SME-Instructions/MOVT--vector-to-table---Move-vector-register-to-ZT0-?lang=en For both luti4 instructions, we introduced an operand called SME_Znx2_BIT_INDEX. We use the existing function parse_vector_reg_list for parsing but modified that function so that it can accept operands without qualifiers and rejects instructions that have operands with qualifiers but are not supposed to have operands with qualifiers. For disassembly, we modified print_register_list so that it could accept register lists without qualifiers. For one luti4 instruction, we introduced a SME_Zdnx4_STRIDED. It is similar to SME_Ztx4_STRIDED and we could use existing code for parsing, encoding, and disassembly. For movt instruction, we introduced an operand called SME_ZT0_INDEX2_12. This is a ZT0 register with a bit index encoded in [13:12]. It is similar to SME_ZT0_INDEX. We also introduced an iclass named sme_size_12_b so that we can encode size bits [13:12] correctly when only 'b' is allowed as qualifier. --- Hi, Regression tested for aarch64-none-elf and found no regressions. Ok for binutils-master? I don't have commit access so can someone please commit on my behalf? Regards, Saurabh --- gas/NEWS | 2 + gas/config/tc-aarch64.c | 91 +++++++++++++++++- gas/doc/c-aarch64.texi | 2 + gas/testsuite/gas/aarch64/sme2-8-invalid.l | 14 +-- gas/testsuite/gas/aarch64/sme2-lutv2-bad.d | 3 + gas/testsuite/gas/aarch64/sme2-lutv2-bad.l | 15 +++ .../gas/aarch64/sme2-lutv2-illegal.d | 3 + .../gas/aarch64/sme2-lutv2-illegal.l | 70 ++++++++++++++ .../gas/aarch64/sme2-lutv2-illegal.s | 95 +++++++++++++++++++ gas/testsuite/gas/aarch64/sme2-lutv2.d | 24 +++++ gas/testsuite/gas/aarch64/sme2-lutv2.s | 22 +++++ include/opcode/aarch64.h | 6 ++ opcodes/aarch64-asm.c | 1 + opcodes/aarch64-dis.c | 6 ++ opcodes/aarch64-opc.c | 30 +++++- opcodes/aarch64-opc.h | 2 + opcodes/aarch64-tbl.h | 33 +++++++ 17 files changed, 405 insertions(+), 14 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/sme2-lutv2-bad.d create mode 100644 gas/testsuite/gas/aarch64/sme2-lutv2-bad.l create mode 100644 gas/testsuite/gas/aarch64/sme2-lutv2-illegal.d create mode 100644 gas/testsuite/gas/aarch64/sme2-lutv2-illegal.l create mode 100644 gas/testsuite/gas/aarch64/sme2-lutv2-illegal.s create mode 100644 gas/testsuite/gas/aarch64/sme2-lutv2.d create mode 100644 gas/testsuite/gas/aarch64/sme2-lutv2.s diff --git a/gas/NEWS b/gas/NEWS index 2f82f45ec57..92d45777e82 100644 --- a/gas/NEWS +++ b/gas/NEWS @@ -43,6 +43,8 @@ * Add support for the AArch64 Lookup Table Extension (LUT). +* Add support for the AArch64 Lookup Table Extension v2 (LUTv2). + Changes in 2.42: * Add support for AMD znver5 processor. diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 885ea65b8eb..eeef291c35f 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -1365,6 +1365,11 @@ reg_type_mask (aarch64_reg_type reg_type) It returns PARSE_FAIL if the register list is invalid. + If HAS_QUALIFIER is true, the registers in the list must have qualifiers + or the list is invalid. + If HAS_QUALIFIER is false, the registers in the list must not have + qualifiers or the list is invalid. + The list contains one to four registers. Each register can be one of: .[] @@ -1376,7 +1381,8 @@ reg_type_mask (aarch64_reg_type reg_type) static int parse_vector_reg_list (char **ccp, aarch64_reg_type type, - struct vector_type_el *vectype) + struct vector_type_el *vectype, + bool has_qualifier) { char *str = *ccp; int nb_regs; @@ -1413,8 +1419,15 @@ parse_vector_reg_list (char **ccp, aarch64_reg_type type, str++; /* skip over '-' */ val_range = val; } - const reg_entry *reg = parse_typed_reg (&str, type, &typeinfo, - ptr_flags); + + const reg_entry *reg; + if (has_qualifier) + reg = parse_typed_reg (&str, type, &typeinfo, ptr_flags); + else + { + reg = parse_reg (&str); + typeinfo.defined = 0; + } if (!reg) { set_first_syntax_error (_("invalid vector register in list")); @@ -3893,6 +3906,54 @@ parse_shifter_operand_reloc (char **str, aarch64_opnd_info *operand, return parse_shifter_operand (str, operand, mode); } +/* Parse a ZT0 vector with an optional bit index and a shifter operand. + zt0 + zt0[0, mul vl] + zt0[2, mul vl] + + We only support 'mul vl' as shifter operand and it is handled by + parse_shift. + + Return TRUE on success; otherwise return FALSE. */ + +static bool +parse_shifter_zt0_with_bit_index (char **str, + aarch64_opnd_info *operand, + enum parse_shift_mode mode) +{ + const reg_entry *reg = parse_reg (str); + if (reg == NULL) + return false; + + if (reg->type != REG_TYPE_ZT0) + return false; + + operand->reglane.regno = reg->number; + + if (!skip_past_char(str, '[')) + { + // It is not an error if the index is not present. Default index to 0. + operand->imm.value = 0; + return true; + } + + int64_t index; + if (!parse_index_expression (str, &index)) + return false; + operand->imm.value = index; + + if (!skip_past_comma(str)) + return true; + + if (!parse_shift(str, operand, mode)) + return false; + + if (!skip_past_char (str, ']')) + return false; + + return true; +} + /* Parse all forms of an address expression. Information is written to *OPERAND and/or inst.reloc. @@ -6860,10 +6921,26 @@ parse_operands (char *str, const aarch64_opcode *opcode) info->reglane.index = vectype.index; break; + case AARCH64_OPND_SME_Znx2_BIT_INDEX: + // A vector register list encoding a bit index. + reg_type = REG_TYPE_Z; + val = parse_vector_reg_list (&str, reg_type, &vectype, false); + if (val == PARSE_FAIL) + goto failure; + + if (! reg_list_valid_p (val, &info->reglist, reg_type)) + { + set_fatal_syntax_error (_("invalid register list")); + goto failure; + } + + break; + case AARCH64_OPND_SVE_ZnxN: case AARCH64_OPND_SVE_ZtxN: case AARCH64_OPND_SME_Zdnx2: case AARCH64_OPND_SME_Zdnx4: + case AARCH64_OPND_SME_Zdnx4_STRIDED: case AARCH64_OPND_SME_Zt2: case AARCH64_OPND_SME_Zt3: case AARCH64_OPND_SME_Zt4: @@ -6901,7 +6978,7 @@ parse_operands (char *str, const aarch64_opcode *opcode) } else { - val = parse_vector_reg_list (&str, reg_type, &vectype); + val = parse_vector_reg_list (&str, reg_type, &vectype, true); if (val == PARSE_FAIL) goto failure; @@ -7968,6 +8045,11 @@ parse_operands (char *str, const aarch64_opcode *opcode) info->imm.value = vectype.index; break; + case AARCH64_OPND_SME_ZT0_INDEX2_12: + po_misc_or_fail(parse_shifter_zt0_with_bit_index + (&str, info, SHIFTED_MUL_VL)); + break; + case AARCH64_OPND_SME_ZT0_LIST: if (*str != '{') { @@ -10597,6 +10679,7 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = { {"fp8", AARCH64_FEATURE (FP8), AARCH64_FEATURE (SIMD)}, {"lut", AARCH64_FEATURE (LUT), AARCH64_FEATURE (SIMD)}, {"brbe", AARCH64_FEATURE (BRBE), AARCH64_NO_FEATURES}, + {"sme-lutv2", AARCH64_FEATURE (SME_LUTv2), AARCH64_FEATURE (SME2)}, {NULL, AARCH64_NO_FEATURES, AARCH64_NO_FEATURES}, }; diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi index b29da1f0e8f..41a8d7e4a44 100644 --- a/gas/doc/c-aarch64.texi +++ b/gas/doc/c-aarch64.texi @@ -269,6 +269,8 @@ automatically cause those extensions to be disabled. @tab Enable SME F64F64 Extension. @item @code{sme-i16i64} @tab @code{sme} @tab Enable SME I16I64 Extension. +@item @code{sme-lutv2} @tab + @tab Enable SME Lookup Table v2 (LUTv2) extension. @item @code{sme2} @tab @code{sme} @tab Enable SME2. @item @code{sme2p1} @tab @code{sme2} diff --git a/gas/testsuite/gas/aarch64/sme2-8-invalid.l b/gas/testsuite/gas/aarch64/sme2-8-invalid.l index aa393657c4b..aef9b1ad203 100644 --- a/gas/testsuite/gas/aarch64/sme2-8-invalid.l +++ b/gas/testsuite/gas/aarch64/sme2-8-invalid.l @@ -9,9 +9,9 @@ [^ :]+:[0-9]+: Error: expected '}' after ZT0 at operand 1 -- `zero {zt0' [^ :]+:[0-9]+: Error: expected '}' after ZT0 at operand 1 -- `zero {zt0\.b}' [^ :]+:[0-9]+: Error: expected '}' after ZT0 at operand 1 -- `zero {zt0,zt0}' -[^ :]+:[0-9]+: Error: expected a register at operand 1 -- `movt 0,zt0\[0\]' +[^ :]+:[0-9]+: Error: operand 1 must be an integer register -- `movt 0,zt0\[0\]' [^ :]+:[0-9]+: Error: expected a register at operand 2 -- `movt x0,0' -[^ :]+:[0-9]+: Error: missing register index at operand 1 -- `movt zt0,x0' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 2 -- `movt zt0,x0' [^ :]+:[0-9]+: Error: unexpected register type at operand 1 -- `movt za\[0\],x0' [^ :]+:[0-9]+: Error: unexpected register type at operand 1 -- `movt za0\[0\],x0' [^ :]+:[0-9]+: Error: bad expression at operand 1 -- `movt zt0\[#0\],x0' @@ -26,17 +26,17 @@ [^ :]+:[0-9]+: Error: register element index out of range 0 to 56 at operand 1 -- `movt zt0\[57\],x0' [^ :]+:[0-9]+: Error: register element index out of range 0 to 56 at operand 1 -- `movt zt0\[64\],x0' [^ :]+:[0-9]+: Error: register element index out of range 0 to 56 at operand 1 -- `movt zt0\[1<<32\],x0' -[^ :]+:[0-9]+: Error: missing register index at operand 1 -- `movt zt0\.b\[0\],x0' -[^ :]+:[0-9]+: Error: missing register index at operand 1 -- `movt zt0/z\[0\],x0' -[^ :]+:[0-9]+: Error: expected an integer or zero register at operand 2 -- `movt zt0\[0\],sp' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0\.b\[0\],x0' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0/z\[0\],x0' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0\[0\],sp' [^ :]+:[0-9]+: Error: operand mismatch -- `movt zt0\[0\],w0' [^ :]+:[0-9]+: Info: did you mean this\? [^ :]+:[0-9]+: Info: movt zt0\[0\], x0 -[^ :]+:[0-9]+: Error: expected an integer or zero register at operand 2 -- `movt zt0\[0\],wsp' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0\[0\],wsp' [^ :]+:[0-9]+: Error: operand mismatch -- `movt zt0\[0\],wzr' [^ :]+:[0-9]+: Info: did you mean this\? [^ :]+:[0-9]+: Info: movt zt0\[0\], xzr -[^ :]+:[0-9]+: Error: expected an integer or zero register at operand 2 -- `movt zt0\[0\],0' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0\[0\],0' [^ :]+:[0-9]+: Error: expected a register at operand 1 -- `ldr 0,\[x0\]' [^ :]+:[0-9]+: Error: invalid addressing mode at operand 2 -- `ldr zt0,0' [^ :]+:[0-9]+: Error: operand 2 must be an address with base register \(no offset\) -- `ldr zt0,\[x0,#0\]' diff --git a/gas/testsuite/gas/aarch64/sme2-lutv2-bad.d b/gas/testsuite/gas/aarch64/sme2-lutv2-bad.d new file mode 100644 index 00000000000..0e6e2b77604 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-lutv2-bad.d @@ -0,0 +1,3 @@ +#as: -march=armv8-a+sme2 +#source: sme2-lutv2.s +#error_output: sme2-lutv2-bad.l \ No newline at end of file diff --git a/gas/testsuite/gas/aarch64/sme2-lutv2-bad.l b/gas/testsuite/gas/aarch64/sme2-lutv2-bad.l new file mode 100644 index 00000000000..78837221539 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-lutv2-bad.l @@ -0,0 +1,15 @@ +[^ :]+: Assembler messages: +.*: Error: selected processor does not support `movt zt0,z0' +.*: Error: selected processor does not support `movt zt0\[0,mul vl\],z31' +.*: Error: selected processor does not support `movt zt0\[3,mul vl\],z0' +.*: Error: selected processor does not support `movt zt0\[3,mul vl\],z31' +.*: Error: selected processor does not support `movt zt0\[2,mul vl\],z25' +.*: Error: selected processor does not support `luti4 {z0.b-z3.b},zt0,{z0-z1}' +.*: Error: selected processor does not support `luti4 {z28.b-z31.b},zt0,{z0-z1}' +.*: Error: selected processor does not support `luti4 {z0.b-z3.b},zt0,{z30-z31}' +.*: Error: selected processor does not support `luti4 {z20.b-z23.b},zt0,{z12-z13}' +.*: Error: selected processor does not support `luti4 {z0.b,z4.b,z8.b,z12.b},zt0,{z0-z1}' +.*: Error: selected processor does not support `luti4 {z19.b,z23.b,z27.b,z31.b},zt0,{z0-z1}' +.*: Error: selected processor does not support `luti4 {z0.b,z4.b,z8.b,z12.b},zt0,{z30-z31}' +.*: Error: selected processor does not support `luti4 {z17.b,z21.b,z25.b,z29.b},zt0,{z12-z13}' +.*: Error: selected processor does not support `luti4 {z20.b,z21.b,z22.b,z23.b},zt0,{z12-z13}' diff --git a/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.d b/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.d new file mode 100644 index 00000000000..401bbb72094 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.d @@ -0,0 +1,3 @@ +#as: -march=armv8-a+sme2+sme2p1+sme-lutv2 +#source: sme2-lutv2-illegal.s +#error_output: sme2-lutv2-illegal.l \ No newline at end of file diff --git a/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.l b/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.l new file mode 100644 index 00000000000..4495a9adc52 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.l @@ -0,0 +1,70 @@ +[^ :]+: Assembler messages: +[^ :]+:[0-9]+: Error: start register out of range at operand 3 -- `luti4 {z20.b-z23.h},zt0,{z13-z14}' +[^ :]+:[0-9]+: Error: type mismatch in vector register list at operand 1 -- `luti4 {z19.b,z23.b,z27.b,z31.h},zt0,{z13-z14}' +[^ :]+:[0-9]+: Error: unexpected register type at operand 1 -- `movt z3,zt0' +[^ :]+:[0-9]+: Error: unexpected register type at operand 1 -- `movt z3\[0\],zt0' +[^ :]+:[0-9]+: Error: operand 1 must be an integer register -- `movt zt1,z25' +[^ :]+:[0-9]+: Error: expected a vector register at operand 1 -- `luti4 zt0,\{z0.b-z3.b\},\{z0-z1\}' +[^ :]+:[0-9]+: Error: expected a register at operand 2 -- `luti4 \{z0.b-z3.b\},\{z0.b-z1.b\}\{z0-z1\}' +[^ :]+:[0-9]+: Error: syntax error in register list at operand 1 -- `luti4 \{\},zt0,\{z12-z13\}' +[^ :]+:[0-9]+: Error: invalid vector register in list at operand 3 -- `luti4 \{z20.b-z23.b\},zt0,\{\}' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti4 \{z20.b-z23.b\},z3,\{z12-z13\}' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `luti4 \{z19.b-z22.b\},zt0,\{z12-z13\}' +[^ :]+:[0-9]+: Error: start register out of range at operand 3 -- `luti4 \{z20.b-z23.b\},zt0,\{z13-z14\}' +[^ :]+:[0-9]+: Error: expected a vector register at operand 1 -- `luti4 zt0,{z0.b,z4.b,z8.b,z12.b},{z0-z1}' +[^ :]+:[0-9]+: Error: expected a register at operand 2 -- `luti4 {z0.b,z4.b,z8.b,z12.b},{z0.b-z1.b}{z0-z1}' +[^ :]+:[0-9]+: Error: invalid vector register in list at operand 3 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zt0,{}' +[^ :]+:[0-9]+: Error: unexpected register type at operand 2 -- `luti4 {z19.b,z23.b,z27.b,z31.b},z3,{z12-z13}' +[^ :]+:[0-9]+: Error: start register out of range at operand 3 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zt0,{z13-z14}' +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 \{z20.s-z23.s\},zt0,\{z20-z21\}' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 {z20.b-z23.b}, zt0, {z20-z21} +[^ :]+:[0-9]+: Error: operand mismatch -- `luti4 {z19.s,z23.s,z27.s,z31.s},zt0,{z20-z21}' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: luti4 {z19.b, z23.b, z27.b, z31.b}, zt0, {z20-z21} +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0.b,z31' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0.b\[0,mul vl\],z31' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `movt zt0\[1,mul vl\]' +[^ :]+:[0-9]+: Error: unexpected characters following instruction at operand 2 -- `movt zt0,z23,z31' +[^ :]+:[0-9]+: Error: unexpected characters following instruction at operand 2 -- `movt zt0\[1,mul vl\],z23,z31' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `luti4 \{z20.b-z23.b\}' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 3 -- `luti4 \{z20.b-z23.b\},zt0' +[^ :]+:[0-9]+: Error: unexpected characters following instruction at operand 3 -- `luti4 \{z20.b-z23.b\},zt0,\{z12-z13\},\{z20-z21\}' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 2 -- `luti4 {z19.b,z23.b,z27.b,z31.b}' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 3 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zt0' +[^ :]+:[0-9]+: Error: comma expected between operands at operand 3 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zt0{z12-z13},{z20-z21}' +[^ :]+:[0-9]+: Error: operand 1 must be an integer register -- `movt zy0,z16' +[^ :]+:[0-9]+: Error: operand 1 must be an integer register -- `movt zt1,z16' +[^ :]+:[0-9]+: Error: operand 1 must be an integer register -- `movt zy0\[1,mul vl\],z16' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 2 -- `movt zt0,y16' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 2 -- `movt zt0\[1,mul vl\],y16' +[^ :]+:[0-9]+: Error: operand 1 must be a list of SVE vector registers -- `luti4 \{z20.b-y23.b\},zt0,\{z12-z13\}' +[^ :]+:[0-9]+: Error: unexpected character `x' in element size at operand 1 -- `luti4 \{z20.x-z23.b\},zt0,\{z12-z13\}' +[^ :]+:[0-9]+: Error: expected a register at operand 2 -- `luti4 \{z20.b-z23.b\},zy0,\{z12-z13\}' +[^ :]+:[0-9]+: Error: operand 1 must be a list of SVE vector registers -- `luti4 \{z20.b-y23.b\},zt0,\{y12-z13\}' +[^ :]+:[0-9]+: Error: operand 1 must be a list of SVE vector registers -- `luti4 {z19.b,z23.b,z27.b,y31.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: unexpected character `x' in element size at operand 1 -- `luti4 {z19.x,z23.b,z27.b,z31.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: expected a register at operand 2 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zy0,{z12-z13}' +[^ :]+:[0-9]+: Error: invalid vector register in list at operand 3 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zt0,{y12-z13}' +[^ :]+:[0-9]+: Error: missing type suffix at operand 1 -- `luti4 \{z20-z23.b\},zt0,\{z12-z13\}' +[^ :]+:[0-9]+: Error: type mismatch in vector register list at operand 1 -- `luti4 {z19.b,z23,z27.b,z31.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: operand 1 must be an integer register -- `movt zt,z25.b' +[^ :]+:[0-9]+: Error: end of vector register list not found at operand 3 -- `luti4 {z20.b-z23.b},zt0,{z12.b-z13.b}' +[^ :]+:[0-9]+: Error: end of vector register list not found at operand 3 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zt0,{z12.b-z13.b}' +[^ :]+:[0-9]+: Error: operand 2 must be an SVE vector register -- `movt zt0,z25\[1\]' +[^ :]+:[0-9]+: Error: operand 2 must be an SVE vector register -- `movt zt0,z25\[1,mul vl\]' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 2 -- `movt zt0\[2,mul vl\],z32' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 1 -- `movt zt0\[4,mul vl\],z25' +[^ :]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 1 -- `movt zt0\[-1,mul vl\],z25' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `luti4 {z32.b-z36.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: invalid vector register in list at operand 3 -- `luti4 {z20.b-z23.b},zt0,{z32-z33}' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 1 -- `luti4 {z32.b,z36.b,z40.b,z44.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: invalid vector register in list at operand 3 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zt0,{z32-z33}' +[^ :]+:[0-9]+: Error: too many registers in vector register list at operand 1 -- `luti4 {z20.b-z24.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: expected a list of 4 registers at operand 1 -- `luti4 {z20.b-z22.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: invalid register stride at operand 1 -- `luti4 {z20.b-z23.b},zt0,{z12-z14}' +[^ :]+:[0-9]+: Error: invalid range in vector register list at operand 3 -- `luti4 {z20.b-z23.b},zt0,{z12-z12}' +[^ :]+:[0-9]+: Error: invalid register list at operand 1 -- `luti4 {z19.b,z24.b,z27.b,z31.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: invalid register list at operand 1 -- `luti4 {z19.b,z22.b,z27.b,z31.b},zt0,{z12-z13}' +[^ :]+:[0-9]+: Error: the register list must have a stride of 1 at operand 1 -- `luti4 {z19.b,z23.b,z27.b,z31.b},zt0,{z12-z14}' diff --git a/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.s b/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.s new file mode 100644 index 00000000000..4e36ef687fc --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-lutv2-illegal.s @@ -0,0 +1,95 @@ + // Operand mismatch + luti4 { z20.b - z23.h }, zt0, { z13 - z14 } + luti4 { z19.b, z23.b, z27.b, z31.h }, zt0, { z13 - z14 } + + // Incorrect operands + movt z3, zt0 + movt z3[0], zt0 + movt zt1, z25 + + luti4 zt0, { z0.b - z3.b }, { z0 - z1 } + luti4 { z0.b - z3.b }, { z0.b - z1.b } { z0 - z1 } + luti4 { }, zt0, { z12 - z13 } + luti4 { z20.b - z23.b }, zt0, { } + luti4 { z20.b - z23.b }, z3, { z12 - z13 } + luti4 { z19.b - z22.b }, zt0, { z12 - z13 } + luti4 { z20.b - z23.b }, zt0, { z13 - z14 } + + luti4 zt0, { z0.b, z4.b, z8.b, z12.b }, { z0 - z1 } + luti4 { z0.b, z4.b, z8.b, z12.b }, { z0.b - z1.b } { z0 - z1 } + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0, { } + luti4 { z19.b, z23.b, z27.b, z31.b }, z3, { z12 - z13 } + luti4 { z18.b, z22.b, z26.b, z30.b }, zt0, { z12 - z13 } + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0, { z13 - z14 } + + // Disallowed types + luti4 { z20.s - z23.s }, zt0, { z20 - z21 } + luti4 { z19.s, z23.s, z27.s, z31.s }, zt0, { z20 - z21 } + + // Index with qualifiers + movt zt0.b, z31 + movt zt0.b[0, mul vl], z31 + + // Incorrect number of operands + movt zt0 + movt zt0[1, mul vl] + movt zt0, z23, z31 + movt zt0[1, mul vl], z23, z31 + + luti4 { z20.b - z23.b } + luti4 { z20.b - z23.b }, zt0 + luti4 { z20.b - z23.b }, zt0, { z12 - z13 }, { z20 - z21 } + + luti4 { z19.b, z23.b, z27.b, z31.b } + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0 + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0 { z12 - z13 }, { z20 - z21 } + + // Spelling mistakes + movt zy0, z16 + movt zt1, z16 + movt zy0[1, mul vl], z16 + movt zt0, y16 + movt zt0[1, mul vl], y16 + + luti4 { z20.b - y23.b }, zt0, { z12 - z13 } + luti4 { z20.x - z23.b }, zt0, { z12 - z13 } + luti4 { z20.b - z23.b }, zy0, { z12 - z13 } + luti4 { z20.b - y23.b }, zt0, { y12 - z13 } + + luti4 { z19.b, z23.b, z27.b, y31.b }, zt0, { z12 - z13 } + luti4 { z19.x, z23.b, z27.b, z31.b }, zt0, { z12 - z13 } + luti4 { z19.b, z23.b, z27.b, z31.b }, zy0, { z12 - z13 } + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0, { y12 - z13 } + + // Missing qualifiers + luti4 { z20 - z23.b }, zt0, { z12 - z13 } + luti4 { z19.b, z23, z27.b, z31.b }, zt0, { z12 - z13 } + + // Qualifier on the wrong operand + movt zt, z25.b + luti4 { z20.b - z23.b }, zt0, { z12.b - z13.b } + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0, { z12.b - z13.b } + + // Index on the wrong operand + movt zt0, z25[1] + movt zt0, z25[1, mul vl] + + // Out of range numbers + movt zt0[2, mul vl], z32 + movt zt0[4, mul vl], z25 + movt zt0[-1, mul vl], z25 + + luti4 { z32.b - z36.b }, zt0, { z12 - z13 } + luti4 { z20.b - z23.b }, zt0, { z32 - z33 } + + luti4 { z32.b, z36.b, z40.b, z44.b }, zt0, { z12 - z13 } + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0, { z32 - z33 } + + // Incorrect stride + luti4 { z20.b - z24.b }, zt0, { z12 - z13 } + luti4 { z20.b - z22.b }, zt0, { z12 - z13 } + luti4 { z20.b - z23.b }, zt0, { z12 - z14 } + luti4 { z20.b - z23.b }, zt0, { z12 - z12 } + luti4 { z19.b, z24.b, z27.b, z31.b }, zt0, { z12 - z13 } + luti4 { z19.b, z22.b, z27.b, z31.b }, zt0, { z12 - z13 } + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0, { z12 - z14 } diff --git a/gas/testsuite/gas/aarch64/sme2-lutv2.d b/gas/testsuite/gas/aarch64/sme2-lutv2.d new file mode 100644 index 00000000000..f671982c070 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-lutv2.d @@ -0,0 +1,24 @@ +#objdump: -dr +#as: -march=armv8-a+sme2+sme2p1+sme-lutv2 + +.*: file format .* + +Disassembly of section \.text: + +0+ <.*>: +[^:]+: c04f03e0 movt zt0\[0, mul vl\], z0 +[^:]+: c04f03ff movt zt0\[0, mul vl\], z31 +[^:]+: c04f33e0 movt zt0\[3, mul vl\], z0 +[^:]+: c04f33ff movt zt0\[3, mul vl\], z31 +[^:]+: c04f23f9 movt zt0\[2, mul vl\], z25 +[^:]+: c08b0000 luti4 {z0.b-z3.b}, zt0, {z0-z1} +[^:]+: c08b001c luti4 {z28.b-z31.b}, zt0, {z0-z1} +[^:]+: c08b03c0 luti4 {z0.b-z3.b}, zt0, {z30-z31} +[^:]+: c08b0194 luti4 {z20.b-z23.b}, zt0, {z12-z13} +[^:]+: c09b0000 luti4 {z0.b, z4.b, z8.b, z12.b}, zt0, {z0-z1} +[^:]+: c09b0013 luti4 {z19.b, z23.b, z27.b, z31.b}, zt0, {z0-z1} +[^:]+: c09b03c0 luti4 {z0.b, z4.b, z8.b, z12.b}, zt0, {z30-z31} +[^:]+: c09b0191 luti4 {z17.b, z21.b, z25.b, z29.b}, zt0, {z12-z13} +[^:]+: c08b0194 luti4 {z20.b-z23.b}, zt0, {z12-z13} +[^:]+: c08b2194 .inst 0xc08b2194 ; undefined +[^:]+: c09b2191 .inst 0xc09b2191 ; undefined diff --git a/gas/testsuite/gas/aarch64/sme2-lutv2.s b/gas/testsuite/gas/aarch64/sme2-lutv2.s new file mode 100644 index 00000000000..cba9ad93b79 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-lutv2.s @@ -0,0 +1,22 @@ + movt zt0, z0 + movt zt0[0, mul vl], z31 + movt zt0[3, mul vl], z0 + movt zt0[3, mul vl], z31 + movt zt0[2, mul vl], z25 + + luti4 { z0.b - z3.b }, zt0, { z0 - z1 } + luti4 { z28.b - z31.b }, zt0, { z0 - z1 } + luti4 { z0.b - z3.b }, zt0, { z30 - z31 } + luti4 { z20.b - z23.b }, zt0, { z12 - z13 } + + luti4 { z0.b, z4.b, z8.b, z12.b }, zt0, { z0 - z1 } + luti4 { z19.b, z23.b, z27.b, z31.b }, zt0, { z0 - z1 } + luti4 { z0.b, z4.b, z8.b, z12.b }, zt0, { z30 - z31 } + luti4 { z17.b, z21.b, z25.b, z29.b }, zt0, { z12 - z13 } + + // Explicitly listing registers in stride 1 variant + luti4 { z20.b, z21.b, z22.b, z23.b }, zt0, { z12 - z13 } + + // Invalid instructions because sz != 00 + .inst 0xc08b2194 + .inst 0xc09b2191 diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index c83c0a4ebb4..19d25d6c261 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -240,6 +240,8 @@ enum aarch64_feature_bit { AARCH64_FEATURE_LUT, /* Branch Record Buffer Extension */ AARCH64_FEATURE_BRBE, + /* SME LUTv2 instructions. */ + AARCH64_FEATURE_SME_LUTv2, AARCH64_NUM_FEATURES }; @@ -759,10 +761,12 @@ enum aarch64_opnd AARCH64_OPND_SVE_ZtxN, /* SVE vector register list in Zt. */ AARCH64_OPND_SME_Zdnx2, /* SVE vector register list from [4:1]*2. */ AARCH64_OPND_SME_Zdnx4, /* SVE vector register list from [4:2]*4. */ + AARCH64_OPND_SME_Zdnx4_STRIDED, /* SVE vector register list from [4:2]*4. */ AARCH64_OPND_SME_Zm, /* SVE vector register list in 4-bit Zm. */ AARCH64_OPND_SME_Zmx2, /* SVE vector register list from [20:17]*2. */ AARCH64_OPND_SME_Zmx4, /* SVE vector register list from [20:18]*4. */ AARCH64_OPND_SME_Znx2, /* SVE vector register list from [9:6]*2. */ + AARCH64_OPND_SME_Znx2_BIT_INDEX, /* SVE vector register list encoding a bit index from [9:6]*2. */ AARCH64_OPND_SME_Znx4, /* SVE vector register list from [9:7]*4. */ AARCH64_OPND_SME_Ztx2_STRIDED, /* SVE vector register list in [4:0]&23. */ AARCH64_OPND_SME_Ztx4_STRIDED, /* SVE vector register list in [4:0]&19. */ @@ -811,6 +815,7 @@ enum aarch64_opnd AARCH64_OPND_SME_VLxN_13, /* VLx2 or VLx4, in bit 13. */ AARCH64_OPND_SME_ZT0, /* The fixed token zt0/ZT0 (not encoded). */ AARCH64_OPND_SME_ZT0_INDEX, /* ZT0[], bits [14:12]. */ + AARCH64_OPND_SME_ZT0_INDEX2_12, /* ZT0[], bits [13:12]. */ AARCH64_OPND_SME_ZT0_LIST, /* { zt0/ZT0 } (not encoded). */ AARCH64_OPND_TME_UIMM16, /* TME unsigned 16-bit immediate. */ AARCH64_OPND_SM3_IMM2, /* SM3 encodes lane in bits [13, 14]. */ @@ -1002,6 +1007,7 @@ enum aarch64_insn_class sme_shift, sme_size_12_bhs, sme_size_12_hs, + sme_size_12_b, sme_size_22, sme_size_22_hsd, sme_sz_23, diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c index 5c6a31167c6..57fb8614dd0 100644 --- a/opcodes/aarch64-asm.c +++ b/opcodes/aarch64-asm.c @@ -2145,6 +2145,7 @@ aarch64_encode_variant_using_iclass (struct aarch64_inst *inst) break; case sme_size_12_bhs: + case sme_size_12_b: insert_field (FLD_SME_size_12, &inst->value, aarch64_get_variant (inst), 0); break; diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c index 213df616608..045af49228a 100644 --- a/opcodes/aarch64-dis.c +++ b/opcodes/aarch64-dis.c @@ -3415,6 +3415,12 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst) variant -= 1; break; + case sme_size_12_b: + variant = extract_field (FLD_SME_size_12, inst->value, 0); + if (variant != 0) + return false; + break; + case sme_size_22: variant = extract_field (FLD_SME_size_22, inst->value, 0); break; diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index ea278bfdfe5..b70467391bc 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -258,7 +258,9 @@ const aarch64_field fields[] = { 13, 1 }, /* SME_VL_13: VLx2 or VLx4, bit [13]. */ { 0, 2 }, /* SME_ZAda_2b: tile ZA0-ZA3. */ { 0, 3 }, /* SME_ZAda_3b: tile ZA0-ZA7. */ + { 4, 1 }, /* SME_ZdnT: upper bit of Zt, bit [4]. */ { 1, 4 }, /* SME_Zdn2: Z0-Z31, multiple of 2, bits [4:1]. */ + { 0, 2 }, /* SME_Zdn2_0: lower 2 bits of Zt, bits [1:0]. */ { 2, 3 }, /* SME_Zdn4: Z0-Z31, multiple of 4, bits [4:2]. */ { 16, 4 }, /* SME_Zm: Z0-Z15, bits [19:16]. */ { 17, 4 }, /* SME_Zm2: Z0-Z31, multiple of 2, bits [20:17]. */ @@ -1919,6 +1921,7 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, case AARCH64_OPND_SME_Zmx2: case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: + case AARCH64_OPND_SME_Znx2_BIT_INDEX: case AARCH64_OPND_SME_Znx4: case AARCH64_OPND_SME_Zt2: case AARCH64_OPND_SME_Zt3: @@ -1934,6 +1937,7 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, } break; + case AARCH64_OPND_SME_Zdnx4_STRIDED: case AARCH64_OPND_SME_Ztx2_STRIDED: case AARCH64_OPND_SME_Ztx4_STRIDED: /* 2-register lists have a stride of 8 and 4-register lists @@ -3153,6 +3157,14 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, } break; + case AARCH64_OPND_SME_ZT0_INDEX2_12: + if (!value_in_range_p (opnd->imm.value, 0, 3)) + { + set_elem_idx_out_of_range_error (mismatch_detail, idx, 0, 3); + return 0; + } + break; + default: break; } @@ -3745,9 +3757,14 @@ print_register_list (char *buf, size_t size, const aarch64_opnd_info *opnd, && ((opnd->type != AARCH64_OPND_SME_Zt2) && (opnd->type != AARCH64_OPND_SME_Zt3) && (opnd->type != AARCH64_OPND_SME_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); + if (opnd->qualifier == AARCH64_OPND_QLF_NIL) + snprintf (buf, size, "{%s-%s}%s", + style_reg (styler, "%s%d", prefix, first_reg), + style_reg (styler, "%s%d", prefix, last_reg), tb); + else + 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); else { const int reg0 = first_reg; @@ -4216,9 +4233,11 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, case AARCH64_OPND_SVE_ZtxN: case AARCH64_OPND_SME_Zdnx2: case AARCH64_OPND_SME_Zdnx4: + case AARCH64_OPND_SME_Zdnx4_STRIDED: case AARCH64_OPND_SME_Zmx2: case AARCH64_OPND_SME_Zmx4: case AARCH64_OPND_SME_Znx2: + case AARCH64_OPND_SME_Znx2_BIT_INDEX: case AARCH64_OPND_SME_Znx4: case AARCH64_OPND_SME_Ztx2_STRIDED: case AARCH64_OPND_SME_Ztx4_STRIDED: @@ -4906,6 +4925,11 @@ aarch64_print_operand (char *buf, size_t size, bfd_vma pc, snprintf (buf, size, "%s[%s]", style_reg (styler, "zt0"), style_imm (styler, "%d", (int) opnd->imm.value)); break; + case AARCH64_OPND_SME_ZT0_INDEX2_12: + snprintf (buf, size, "%s[%s, %s]", style_reg (styler, "zt0"), + style_imm (styler, "%d", (int) opnd->imm.value), + style_sub_mnem (styler, "mul vl")); + break; case AARCH64_OPND_SME_ZT0_LIST: snprintf (buf, size, "{%s}", style_reg (styler, "zt0")); diff --git a/opcodes/aarch64-opc.h b/opcodes/aarch64-opc.h index 9b734d63a3b..8804e7c0038 100644 --- a/opcodes/aarch64-opc.h +++ b/opcodes/aarch64-opc.h @@ -62,7 +62,9 @@ enum aarch64_field_kind FLD_SME_VL_13, FLD_SME_ZAda_2b, FLD_SME_ZAda_3b, + FLD_SME_ZdnT, FLD_SME_Zdn2, + FLD_SME_Zdn2_0, FLD_SME_Zdn4, FLD_SME_Zm, FLD_SME_Zm2, diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index bffb422583a..58765928539 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1814,6 +1814,13 @@ { \ QLF2(S_S,NIL), \ } +/* e.g. movt ZT0{[, MUL VL]}, */ +/* The second operand doesn't have a qualifier and + is checked separetely during encoding. */ +#define OP_SVE_SU_Q \ +{ \ + QLF2(S_Q,NIL), \ +} #define OP_SVE_SUS \ { \ QLF3(S_S,NIL,S_S), \ @@ -2050,6 +2057,13 @@ QLF3(S_S,NIL,W), \ QLF3(S_D,NIL,X), \ } +/* e.g. luti4 { .B-.B }, ZT0, { - } */ +/* The second and third operands don't have qualifiers and + are checked separetely during encoding. */ +#define OP_SVE_VUU_B \ +{ \ + QLF3(S_B,NIL,NIL), \ +} #define OP_SVE_VUU_BHS \ { \ QLF3(S_B,NIL,NIL), \ @@ -2752,6 +2766,8 @@ static const aarch64_feature_set aarch64_feature_lut_sve2 = AARCH64_FEATURES (2, LUT, SVE2); static const aarch64_feature_set aarch64_feature_brbe = AARCH64_FEATURE (BRBE); +static const aarch64_feature_set aarch64_feature_sme_lutv2 = + AARCH64_FEATURES (3, SME_LUTv2, SME2, SME2p1); #define CORE &aarch64_feature_v8 #define FP &aarch64_feature_fp @@ -2829,6 +2845,7 @@ static const aarch64_feature_set aarch64_feature_brbe = #define LUT &aarch64_feature_lut #define LUT_SVE2 &aarch64_feature_lut_sve2 #define BRBE &aarch64_feature_brbe +#define LUTv2_SME2 &aarch64_feature_sme_lutv2 #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS, 0, 0, NULL } @@ -3029,6 +3046,9 @@ static const aarch64_feature_set aarch64_feature_brbe = FLAGS, CONSTRAINTS, 0, NULL } #define BRBE_INSN(NAME,OPCODE,MASK,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, ic_system, 0, BRBE, OPS, QUALS, FLAGS, 0, 0, NULL } +#define LUTv2_SME2_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \ + { NAME, OPCODE, MASK, CLASS, 0, LUTv2_SME2, OPS, QUALS, \ + FLAGS, 0, 0, NULL } #define MOPS_CPY_OP1_OP2_PME_INSN(NAME, OPCODE, MASK, FLAGS, CONSTRAINTS) \ MOPS_INSN (NAME, OPCODE, MASK, 0, \ @@ -6615,6 +6635,11 @@ const struct aarch64_opcode aarch64_opcode_table[] = LUT_SVE2_INSN ("luti4", 0x4520b400, 0xff20fc00, OP3 (SVE_Zd, SVE_ZnxN, SVE_Zm2_22_INDEX), OP_SVE_HHU, F_OD(2), 0), LUT_SVE2_INSN ("luti4", 0x4520bc00, 0xff20fc00, OP3 (SVE_Zd, SVE_ZnxN, SVE_Zm2_22_INDEX), OP_SVE_HHU, F_OD(1), 0), + /* SME2 lutv2. */ + LUTv2_SME2_INSN ("luti4", 0xc08b0000, 0xffffcc23, sme_size_12_b, OP3 (SME_Zdnx4, SME_ZT0, SME_Znx2_BIT_INDEX), OP_SVE_VUU_B, F_STRICT | 0), + LUTv2_SME2_INSN ("luti4", 0xc09b0000, 0xffffcc2c, sme_size_12_b, OP3 (SME_Zdnx4_STRIDED, SME_ZT0, SME_Znx2_BIT_INDEX), OP_SVE_VUU_B, F_STRICT | 0), + LUTv2_SME2_INSN ("movt", 0xc04f03e0, 0xffffcfe0, sme_misc, OP2 (SME_ZT0_INDEX2_12, SVE_Zt), {}, 0), + {0, 0, 0, 0, 0, 0, {}, {}, 0, 0, 0, NULL}, }; @@ -7139,6 +7164,9 @@ const struct aarch64_opcode aarch64_opcode_table[] = F(FLD_SME_Zdn2), "a list of SVE vector registers") \ Y(SVE_REGLIST, sve_aligned_reglist, "SME_Zdnx4", 4 << OPD_F_OD_LSB, \ F(FLD_SME_Zdn4), "a list of SVE vector registers") \ + Y(SVE_REGLIST, sve_strided_reglist, "SME_Zdnx4_STRIDED", \ + 4 << OPD_F_OD_LSB, F(FLD_SME_ZdnT, FLD_SME_Zdn2_0), \ + "a list of SVE vector registers") \ Y(SVE_REG, regno, "SME_Zm", 0, F(FLD_SME_Zm), \ "an SVE vector register") \ Y(SVE_REGLIST, sve_aligned_reglist, "SME_Zmx2", 2 << OPD_F_OD_LSB, \ @@ -7147,6 +7175,9 @@ const struct aarch64_opcode aarch64_opcode_table[] = F(FLD_SME_Zm4), "a list of SVE vector registers") \ Y(SVE_REGLIST, sve_aligned_reglist, "SME_Znx2", 2 << OPD_F_OD_LSB, \ F(FLD_SME_Zn2), "a list of SVE vector registers") \ + Y(SVE_REGLIST, sve_aligned_reglist, "SME_Znx2_BIT_INDEX", \ + 2 << OPD_F_OD_LSB, F(FLD_SME_Zn2), \ + "a list of SVE vector registers") \ Y(SVE_REGLIST, sve_aligned_reglist, "SME_Znx4", 4 << OPD_F_OD_LSB, \ F(FLD_SME_Zn4), "a list of SVE vector registers") \ Y(SVE_REGLIST, sve_strided_reglist, "SME_Ztx2_STRIDED", \ @@ -7257,6 +7288,8 @@ const struct aarch64_opcode aarch64_opcode_table[] = Y(SYSTEM, none, "SME_ZT0", 0, F (), "ZT0") \ Y(IMMEDIATE, imm, "SME_ZT0_INDEX", OPD_F_SHIFT_BY_3, \ F (FLD_imm3_12), "a ZT0 index") \ + Y(IMMEDIATE, imm, "SME_ZT0_INDEX2_12", 0, \ + F (FLD_imm3_12), "a ZT0 index") \ Y(SYSTEM, none, "SME_ZT0_LIST", 0, F (), "{ ZT0 }") \ Y(IMMEDIATE, imm, "TME_UIMM16", 0, F(FLD_imm16_5), \ "a 16-bit unsigned immediate for TME tcancel") \ From patchwork Fri Jun 14 14:13:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saurabh Jha X-Patchwork-Id: 92202 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 E07023882676 for ; Fri, 14 Jun 2024 14:15:09 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2075.outbound.protection.outlook.com [40.107.241.75]) by sourceware.org (Postfix) with ESMTPS id 4DEE5388211C for ; Fri, 14 Jun 2024 14:14:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4DEE5388211C 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 4DEE5388211C Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.241.75 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1718374466; cv=pass; b=YjWwlIuuRSIN9R3+bElfycR8/Duut9glL6ew9c1hXh7fo1KSxMS9JnIuwMoAAACwBejcxbvbA+x8+0sDSYCdaEtR17oqSvavSFP1+H7LL2AZqvQaI1VSWv97ugMcWmFr+uSxBhzvzZ644YHx5GTz+EPeR6Fsb/5UJfX/+HGA4I8= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1718374466; c=relaxed/simple; bh=i7/+1S+EIXEYPbROpihcqX7BbNfY3qdFQ65CezEaCic=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=Oe5X8IlzZnQ/HrRKYv6Xj7W2kVCIG3AzMgt+2stasn1i0qmMPK6BzDQUVJK/KqOVqFex5R4GLD8laxPhac7bOMQSi7R9C+55S9PDSOJjm713+fJjlrwYujmKpoTkm2hMp1FRYFGfuBgYIi9xks6rnClZ5Bw1wgnpPlrqqD/20aU= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Dml6MNFauM7TeaK5jLxUFTFmF/fVKS22huetZrIZib6XkeoeMVOCZ0SBMX+lVHxLMiHhHwUGb017p+2vfTIRxXSxitBDVH4iNuY/sqG8zNahnsXwHl16So4DbJFTOYLO2vf362tBL3KSJGROJ5f2LuSpXOGnMlk7OnjjDBu19XhT+90ra+6y6P7gMhKXD2oyRoxc0fHKhoOuvyYPfURlMyR1HJBBbNG8kaAkuh9fL8sLfPwKK6zCPRizRYnI0zJH14Pm7Q+dGRGV7bmEF96ZAly8YMVpPU4zXtzbkNJJUtl8JK/1IhRPpQr29XvRopF4iRcAusDiCaQ8rm27IJ6bTw== 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=pfKmDjWXNXQD2fRezD+eWMlfhT8Zhj8Mk3exP0NB95g=; b=RmfTGVyeATXLCW7aF+J2VFCbV60WVcP85K9j2A1o5ZwPuquV+Ip7a7RCMRJuBsqTGjQDBPI1bIWWZC2ClD4krJvSFYtENwDAlpP0xPmOkseyufjyUxA/cZicYpcYuNmt2xEMVLNQXCb6/8KrtCkwMxlYN1li1T8oh3r+2zX5TAyagUJkTY/Usle+iBn/+bOyeHzp6OzqrVxuU1jtxOVfmBhFsH+rncx4LwtprPbjb1MyfdCDrZseMZNZ6DxobDQ2EVvKP2LERAQI+eEwM9Y6pohrUbpeTPaySezDnUtvyks06tvpbBvyYX41067WI5CF1WnQmk14e4lojgkfpS6d+w== 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=pfKmDjWXNXQD2fRezD+eWMlfhT8Zhj8Mk3exP0NB95g=; b=E/UC+byJtVqTK2miTUyyMBwZ9ArR5pKN3MpKF5z04puKqsbD0CJzmD4Pp3adFIFNbctUToo4uVv29YSux/3fSTrP5Mn/wGiUyPSHfVPlkTPNLWM767O35c7kAIoEYO5PFQKwAVan8YsvW0CkY7o3np0llhvdLCcYsfWNchAJSYY= Received: from DUZPR01CA0326.eurprd01.prod.exchangelabs.com (2603:10a6:10:4ba::25) by AS8PR08MB6517.eurprd08.prod.outlook.com (2603:10a6:20b:31b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.25; Fri, 14 Jun 2024 14:14:18 +0000 Received: from DU6PEPF00009524.eurprd02.prod.outlook.com (2603:10a6:10:4ba:cafe::c8) by DUZPR01CA0326.outlook.office365.com (2603:10a6:10:4ba::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.25 via Frontend Transport; Fri, 14 Jun 2024 14:14:18 +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 DU6PEPF00009524.mail.protection.outlook.com (10.167.8.5) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7677.15 via Frontend Transport; Fri, 14 Jun 2024 14:14:18 +0000 Received: ("Tessian outbound 6b7ebc67fb02:v332"); Fri, 14 Jun 2024 14:14:18 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 9c8440e14cdb4984 X-CR-MTA-TID: 64aa7808 Received: from e04657356147.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5CBE2B55-1E8A-4C80-9F39-239C6A091C3F.1; Fri, 14 Jun 2024 14:14:04 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e04657356147.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 14 Jun 2024 14:14:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M93Bshg+1EJoZ4UcKQLMoV1hgciQMBeeNLg7fpBjgeP+g5nnIhp4ARJ7dji3pJgkWpExDV+yyqUhVvywmTyzsRe9b47bRBRrZtb+GeuunWXRE9AZ/UBizrnLj5mcD5CzOiFXkDgoU5Tvogn4zIcsc8HYD2I++IjJkmHuqordZLLbWY+Eb0+Lu2NkztabeoYDpt05i0KXJENZ8gUDYDxlWwvT5679Lp8ZLiSGUPAQs14eaEqMxVo0qwws9uadaZtXrMuVmaBeacCMfHba3yKu2B99ETRKeChlOwfsntn+nKwG+Rc8lOl36jCWGrjT5l8CCJEjXP1QCekhm5cDK4aO9Q== 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=pfKmDjWXNXQD2fRezD+eWMlfhT8Zhj8Mk3exP0NB95g=; b=GPFrfd/JVtWvbnWFMAXdkJ2bDmnPIiwZllEKE9CGUj/mew/EUhtXx8/kgTlobTOICmHKlXyaSwvf/+Y13dV5mdTPSwaB65wetEX+UgZrWlu+lgkKb0JO54PDrbAhBVVrBlc3DT/EetqHQGKqVUFCzpJJu5wuqgm+W5qmkFD5KZIjXMOeC4Hk5nOp+KjOOl9xweivtHbjzk9uMC47ZFw3FGasGrl9RxJxHPwxZukVnc+VLFWIqF5cQh62ts514riPB9ST8dfMfMa3TyQntepxHkfdbuCT9rBLrQKJU8UQS7jX6LFwgzX46nwiIa2NDKUUsQxuovUII1+LmoNK+i4DGg== 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=pfKmDjWXNXQD2fRezD+eWMlfhT8Zhj8Mk3exP0NB95g=; b=E/UC+byJtVqTK2miTUyyMBwZ9ArR5pKN3MpKF5z04puKqsbD0CJzmD4Pp3adFIFNbctUToo4uVv29YSux/3fSTrP5Mn/wGiUyPSHfVPlkTPNLWM767O35c7kAIoEYO5PFQKwAVan8YsvW0CkY7o3np0llhvdLCcYsfWNchAJSYY= Received: from DU6P191CA0003.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:540::29) by PA6PR08MB10593.eurprd08.prod.outlook.com (2603:10a6:102:3c8::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.24; Fri, 14 Jun 2024 14:14:03 +0000 Received: from DU6PEPF0000B622.eurprd02.prod.outlook.com (2603:10a6:10:540:cafe::e0) by DU6P191CA0003.outlook.office365.com (2603:10a6:10:540::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.25 via Frontend Transport; Fri, 14 Jun 2024 14:14:03 +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 DU6PEPF0000B622.mail.protection.outlook.com (10.167.8.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7677.15 via Frontend Transport; Fri, 14 Jun 2024 14:14:03 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) 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; Fri, 14 Jun 2024 14:13:56 +0000 Received: from e130340.cambridge.arm.com (10.2.80.47) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Fri, 14 Jun 2024 14:13:56 +0000 From: To: CC: , , Saurabh Jha Subject: [PATCH v4 2/2] gas, aarch64: Add SME2 lutv2 extension generated files Date: Fri, 14 Jun 2024 15:13:53 +0100 Message-ID: <20240614141353.1287038-2-saurabh.jha@arm.com> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240614141353.1287038-1-saurabh.jha@arm.com> References: <20240614141353.1287038-1-saurabh.jha@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DU6PEPF0000B622:EE_|PA6PR08MB10593:EE_|DU6PEPF00009524:EE_|AS8PR08MB6517:EE_ X-MS-Office365-Filtering-Correlation-Id: ce5c6736-f92c-49a5-695e-08dc8c7c47af 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:13230037|376011|36860700010|34020700013|1800799021|82310400023; X-Microsoft-Antispam-Message-Info-Original: z98teLT6fxn4lrXQSoPYghdI7eEEvxkeaf630EAVHtTcWWvYmE6M5UFJBOTRmG6MfS0E0c6JE0+zZG766UToaXxisUkAzb3B6qO+/gc14rinoDUhGq4J/MKX6OBtMjQI8JyeETQt58UoOQZiOxbuayuSyWFxt9G1bRxo1ceuXxAeEOd4c1rNneTJbo/YS6nHHIPhmTjwZ5x0w4NxLdfXMwku+Um9GcqWCJyC6Z1MdnGYWVE5V9JkFbG0y49h8pD/itTn3CukNZwTI781s7XCDMY4CiHDjSP3Z0ss2LJo1NIr5wK5mPcRZQkjSeNmwt8AGJuvU0YrDMCPk8AvOZbxA/8O1WSRZMLvvXIjJ0u1oamLmQnG4Zfk0Ct/DsrdkGGepTel5YYo/FjVv1t7X6UN/1hhY6uskFucCf6cnVPvSycUbus1Oykgc+5oyzdVEIzu/HQRLtOjYqq+6pgIdH9XdkwUdu4a0S2mQeiinwKZjvUOskD8IMWxNPWB6aOvt/m3HD+CcEl8SiTGnfpnG3z3wN4aix09bJnAEn0IR2bIU0U22xERyBW3OGpPy2ixHeGLZNK6z2rVsBQM15HWudtUFiwHuMs89siZqzuW1qH4A0I4cl4GcRWpXxrVkcht9zZFTzw4lS1hJPagvT1pyl5vMkRMA2jjKLpMEGgLhjaagPtqDRKORnbb5/uKOF1JzP7dsRWC9rxYu5ywc5IvcDs4zebrUvNbKld42hPBf59NbXsvqsKtWY1NE0jECiAwwOEyo3yfNaZTueh0X2EDuyyjFJUKddd3jQJLFi2OftweWsjr1P1rwsL2qKxRJ1giRQAXiS78BBkulVZzTwcqtPCUo2zMFk6tXY2aK/InUdP6b8v67kvxZw1K2tKmnHCNwnUW0CoAzrEmpsURFIkjUoIam2U9f92j7PzpA5EpcNKzevcLed//H62IAr5sIRQ04zNTPpoTRsG0B+kfcneAZIA/NLjVugDRJQNZROdyFgGyBf/9fpoJPt51fD8+L4dmqG1O6dCJB//q/bsSzYt2gWcrqGJm+R5M5kz01CK/klE8Ra8xbgTn1Fh5Nx4G+olozzEVff7CANKJMTPd5S+guw3EvW+jWLVlSk2C/WIwH72zkrFyLFZ2WXYtCJz08ESbIYFRjcjpYa4u5zW2pAyI5pRcHVx06GPCTRz0O4UKC5H9VixDiQKK8dPtxc8Z57eenQVnBmnoL+rD1nxKgN5G+C4NPxze6dLLFfi5KVjw0or1sIgzHrtLZSL7bLhcyCe+6XbSV5YpSUmiBcUdROLdKRaf3PTC7am+Kjprfk4DVUkvzDxZOqIXE9eko1Xh8V1KLuO8g8Rn86COsFQgY6IxvBLDx1o+Kdd08NEkUsGq6gZSOHvjWKBoynMzYyqZipBl8/UkqUMzMcr/uzvL82AK3n6Z+g== 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:(13230037)(376011)(36860700010)(34020700013)(1800799021)(82310400023); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10593 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF00009524.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 699858c6-3aed-4f9f-6260-08dc8c7c3e87 X-Microsoft-Antispam: BCL:0; ARA:13230037|376011|36860700010|34020700013|1800799021|35042699019|82310400023; X-Microsoft-Antispam-Message-Info: =?utf-8?q?9loEFicUAqqm5oeWuZatl7++UZKFm+1?= =?utf-8?q?srV2Df3sPq3E7BQTytmgVMAdmj/jOu/zZHgBXOfQhVGLdmfxw6zcCgTB+60JLmPm9?= =?utf-8?q?9M+RBlFIB8oUf9tk1MXztAG6DXpwxLFmj3krXim1V9lO4BGBcJ/8ZBi7dvlnhES/3?= =?utf-8?q?nUo9awdMo9JUUTqhlPv4NP7crh0yzsXysUMuFFpUvZlbvcAyLVCJnlc/mcY8BQSb7?= =?utf-8?q?ZxX5vDAeQ7+4XRICE4C1BRsRZxjaAhKTSqb5WwtLt+DGR1qzMOeyFd+L9MdBvp4qK?= =?utf-8?q?8JrKEtaaUM94pvYfm8ZwCxRhVXbV9Wg4fv3Xt27KnLCl8DgJ94pcuVWDQlrHqPi2J?= =?utf-8?q?/G7g3eEDh2gAnaoDNkNLWKenyTlTqAtQpq6/F0lYQPQOk5La6MdFfoMykm4xayge7?= =?utf-8?q?Rs0EdTuIaV18oRhitfaU64hPkQQwspW/FgEY7dENP2iEOSVoXI3A86niJtW9p2KJv?= =?utf-8?q?4Nu0PVBxvRpJBbemF4GaKsDZIOMsZXEad1zlKPEfE9dkk5xHuzDxYMZvUqHyahcUU?= =?utf-8?q?7uerP7Qv/3qU5hjzTzn1l2UVDsoha4InbaQmZuMSgJpjvJ2nzkGVXNv2DqNHKODQd?= =?utf-8?q?2VDxnjNxMbXlXvlwOJ919Ic0bNTBQjmtZT1HG/F0jwP1CFA0pDMz5zUdD+99kSTUU?= =?utf-8?q?5SSED32Sw6MHWGVS0NTSBGVY4OupRYZdLj/fYc/UIVlrR+9yTrVkqX7Wr7qY6Op/A?= =?utf-8?q?55AqPOcyT6aNvrJHKAtcHiVtkcYEOYnShpo7XZKbjphR3h83iEW8uvscMFpVHzlxs?= =?utf-8?q?9uqNXPDexbauQ900XvYZH+W4zf9jwYPwpZrjHlaKRaFahWjuyqsn/6V+IHpPlpOR7?= =?utf-8?q?XurCxFwYtyPZG28UKHOreI+qsmnB2PJlNIcwJrLu9yy6a7u3umwKu/Xa39TrbM6To?= =?utf-8?q?2ePo2s6BpJhyhalO76HhMeX3bd0lvC6rNX12xS5EOUM3HZi0v/H64FUUuhZS+xxGS?= =?utf-8?q?WmRicyswYjSYMvBLmVCrjqJV51jID6sBOvBOrBsEc1FKD61VXQ4FVZgbCPG3uVmmg?= =?utf-8?q?zbPih/RvmiwkYUbnVZwoYxPg7qVjqZrBnWRBZwG28dzIKlZqKKUzYHaYK+8SHgrcd?= =?utf-8?q?Xlhfy84sJrp/pXC8RxknWlsivCtsMhSU+OG0HVcQnnfrO8FlRo7XUJPfSXLNLDqcq?= =?utf-8?q?QMIZuzs/+a55ihPvMkVbGJMpT7g/3oB5Z2u/6h5DjURc2c/3gLeY37SimxiciPiJU?= =?utf-8?q?Ke3WK2UO+zv0/ERT/Qg3B8jFWXE/U3x1kLqFhvICbPcbD2ya5vDxY30t0n7l2jVDg?= =?utf-8?q?iPlCTOwmU4djRdSFl2uOLFjqi0CcBYAvcAcKRlpG5og/xMvNfHMmV9RofneFYOXhY?= =?utf-8?q?egbSyRO0lzjBJCNeUseuMGd6njiZ7XrvTA=3D=3D?= 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:(13230037)(376011)(36860700010)(34020700013)(1800799021)(35042699019)(82310400023); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2024 14:14:18.6123 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ce5c6736-f92c-49a5-695e-08dc8c7c47af 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: DU6PEPF00009524.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6517 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_LOTSOFHASH, 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+patchwork=sourceware.org@sourceware.org Adds generated files for the previous patch. No other changes. --- opcodes/aarch64-asm-2.c | 83 +++++++++++----------- opcodes/aarch64-dis-2.c | 150 +++++++++++++++++++++++++--------------- opcodes/aarch64-opc-2.c | 3 + 3 files changed, 139 insertions(+), 97 deletions(-) diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index 6c58452efda..8bd9816e96c 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -679,19 +679,19 @@ aarch64_insert_operand (const aarch64_operand *self, case 226: case 237: case 241: - case 245: - case 252: - case 253: - case 260: - case 261: + case 246: + case 254: + case 255: case 262: case 263: + case 264: + case 265: return aarch64_ins_regno (self, info, code, inst, errors); case 6: case 118: case 119: - case 295: case 297: + case 300: return aarch64_ins_none (self, info, code, inst, errors); case 17: return aarch64_ins_reg_extended (self, info, code, inst, errors); @@ -705,7 +705,7 @@ aarch64_insert_operand (const aarch64_operand *self, case 36: case 37: case 38: - case 299: + case 302: return aarch64_ins_reglane (self, info, code, inst, errors); case 39: case 40: @@ -713,10 +713,8 @@ aarch64_insert_operand (const aarch64_operand *self, case 227: case 228: case 231: - case 264: - case 265: - case 280: - case 281: + case 266: + case 267: case 282: case 283: case 284: @@ -728,6 +726,8 @@ aarch64_insert_operand (const aarch64_operand *self, case 290: case 291: case 292: + case 293: + case 294: return aarch64_ins_simple_index (self, info, code, inst, errors); case 42: return aarch64_ins_reglist (self, info, code, inst, errors); @@ -776,13 +776,14 @@ aarch64_insert_operand (const aarch64_operand *self, case 207: case 208: case 209: - case 266: - case 293: - case 294: + case 268: + case 295: case 296: case 298: - case 303: - case 304: + case 299: + case 301: + case 306: + case 307: return aarch64_ins_imm (self, info, code, inst, errors); case 51: case 52: @@ -930,7 +931,7 @@ aarch64_insert_operand (const aarch64_operand *self, case 199: case 200: case 201: - case 279: + case 281: return aarch64_ins_sve_shrimm (self, info, code, inst, errors); case 214: case 215: @@ -956,55 +957,57 @@ aarch64_insert_operand (const aarch64_operand *self, return aarch64_ins_sve_index (self, info, code, inst, errors); case 240: case 242: - case 259: - case 305: - case 306: - case 307: + case 261: + case 308: + case 309: + case 310: return aarch64_ins_sve_reglist (self, info, code, inst, errors); case 243: case 244: - case 246: case 247: case 248: case 249: - case 258: - return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors); case 250: case 251: + case 260: + return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors); + case 245: + case 252: + case 253: return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors); - case 254: case 256: - case 267: + case 258: + case 269: return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors); - case 255: case 257: + case 259: return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors); - case 268: - case 269: case 270: case 271: case 272: case 273: case 274: - return aarch64_ins_sme_za_array (self, info, code, inst, errors); case 275: - return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors); case 276: - return aarch64_ins_sme_sm_za (self, info, code, inst, errors); + return aarch64_ins_sme_za_array (self, info, code, inst, errors); case 277: - return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors); + return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors); case 278: + return aarch64_ins_sme_sm_za (self, info, code, inst, errors); + case 279: + return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors); + case 280: return aarch64_ins_plain_shrimm (self, info, code, inst, errors); - case 300: - case 301: - case 302: + case 303: + case 304: + case 305: return aarch64_ins_x0_to_x30 (self, info, code, inst, errors); - case 308: - case 309: - case 310: case 311: - return aarch64_ins_rcpc3_addr_opt_offset (self, info, code, inst, errors); case 312: + case 313: + case 314: + return aarch64_ins_rcpc3_addr_opt_offset (self, info, code, inst, errors); + case 315: return aarch64_ins_rcpc3_addr_offset (self, info, code, inst, errors); default: assert (0); abort (); } diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index 3d17f18c9a5..fd19b2d3e78 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -204,32 +204,54 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 22) & 0x1) == 0) + if (((word >> 20) & 0x1) == 0) { - if (((word >> 14) & 0x1) == 0) + if (((word >> 22) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000000x00x101xx0xxxxxxxxxxxxxx - luti4. */ - return 2671; + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000x000101x00xxxxxxxxxxxxxx + luti4. */ + return 3394; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000x000101x10xxxxxxxxxxxxxx + luti4. */ + return 2671; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000x000101xx1xxxxxxxxxxxxxx + luti4. */ + return 2670; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000000x00x101xx1xxxxxxxxxxxxxx + x1000000x100101xxxxxxxxxxxxxxxxx luti4. */ - return 2670; + return 2669; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000000x10x101xxxxxxxxxxxxxxxxx + x1000000xx01101xxxxxxxxxxxxxxxxx luti4. */ - return 2669; + return 3395; } } } @@ -328,21 +350,32 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 23) & 0x1) == 0) { - if (((word >> 17) & 0x1) == 0) + if (((word >> 16) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x1000000010x110xxxxx00xxxxxxxxxx - movt. */ - return 2689; + if (((word >> 17) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000010x1100xxxx00xxxxxxxxxx + movt. */ + return 2689; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000010x1110xxxx00xxxxxxxxxx + movt. */ + return 2688; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000000010x111xxxxx00xxxxxxxxxx + x1000000010x11x1xxxx00xxxxxxxxxx movt. */ - return 2688; + return 3396; } } else @@ -33676,19 +33709,19 @@ aarch64_extract_operand (const aarch64_operand *self, case 226: case 237: case 241: - case 245: - case 252: - case 253: - case 260: - case 261: + case 246: + case 254: + case 255: case 262: case 263: + case 264: + case 265: return aarch64_ext_regno (self, info, code, inst, errors); case 6: case 118: case 119: - case 295: case 297: + case 300: return aarch64_ext_none (self, info, code, inst, errors); case 11: return aarch64_ext_regrt_sysins (self, info, code, inst, errors); @@ -33707,7 +33740,7 @@ aarch64_extract_operand (const aarch64_operand *self, case 36: case 37: case 38: - case 299: + case 302: return aarch64_ext_reglane (self, info, code, inst, errors); case 39: case 40: @@ -33715,10 +33748,8 @@ aarch64_extract_operand (const aarch64_operand *self, case 227: case 228: case 231: - case 264: - case 265: - case 280: - case 281: + case 266: + case 267: case 282: case 283: case 284: @@ -33730,6 +33761,8 @@ aarch64_extract_operand (const aarch64_operand *self, case 290: case 291: case 292: + case 293: + case 294: return aarch64_ext_simple_index (self, info, code, inst, errors); case 42: return aarch64_ext_reglist (self, info, code, inst, errors); @@ -33779,13 +33812,14 @@ aarch64_extract_operand (const aarch64_operand *self, case 207: case 208: case 209: - case 266: - case 293: - case 294: + case 268: + case 295: case 296: case 298: - case 303: - case 304: + case 299: + case 301: + case 306: + case 307: return aarch64_ext_imm (self, info, code, inst, errors); case 51: case 52: @@ -33935,7 +33969,7 @@ aarch64_extract_operand (const aarch64_operand *self, case 199: case 200: case 201: - case 279: + case 281: return aarch64_ext_sve_shrimm (self, info, code, inst, errors); case 214: case 215: @@ -33961,56 +33995,58 @@ aarch64_extract_operand (const aarch64_operand *self, return aarch64_ext_sve_index (self, info, code, inst, errors); case 240: case 242: - case 259: + case 261: return aarch64_ext_sve_reglist (self, info, code, inst, errors); case 243: case 244: - case 246: case 247: case 248: case 249: - case 258: - return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors); case 250: case 251: + case 260: + return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors); + case 245: + case 252: + case 253: return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors); - case 254: case 256: - case 267: + case 258: + case 269: return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors); - case 255: case 257: + case 259: return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors); - case 268: - case 269: case 270: case 271: case 272: case 273: case 274: - return aarch64_ext_sme_za_array (self, info, code, inst, errors); case 275: - return aarch64_ext_sme_addr_ri_u4xvl (self, info, code, inst, errors); case 276: - return aarch64_ext_sme_sm_za (self, info, code, inst, errors); + return aarch64_ext_sme_za_array (self, info, code, inst, errors); case 277: - return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors); + return aarch64_ext_sme_addr_ri_u4xvl (self, info, code, inst, errors); case 278: + return aarch64_ext_sme_sm_za (self, info, code, inst, errors); + case 279: + return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors); + case 280: return aarch64_ext_plain_shrimm (self, info, code, inst, errors); - case 300: - case 301: - case 302: - return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); + case 303: + case 304: case 305: - case 306: - case 307: - return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors); + return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); case 308: case 309: case 310: + return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors); case 311: - return aarch64_ext_rcpc3_addr_opt_offset (self, info, code, inst, errors); case 312: + case 313: + case 314: + return aarch64_ext_rcpc3_addr_opt_offset (self, info, code, inst, errors); + case 315: return aarch64_ext_rcpc3_addr_offset (self, info, code, inst, errors); default: assert (0); abort (); } diff --git a/opcodes/aarch64-opc-2.c b/opcodes/aarch64-opc-2.c index 14dd96af465..71f68243468 100644 --- a/opcodes/aarch64-opc-2.c +++ b/opcodes/aarch64-opc-2.c @@ -269,10 +269,12 @@ const struct aarch64_operand aarch64_operands[] = {AARCH64_OPND_CLASS_SVE_REGLIST, "SVE_ZtxN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zdnx2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zdn2}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zdnx4", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zdn4}, "a list of SVE vector registers"}, + {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zdnx4_STRIDED", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_ZdnT, FLD_SME_Zdn2_0}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REG, "SME_Zm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zm}, "an SVE vector register"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zmx2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zm2}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zmx4", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zm4}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Znx2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zn2}, "a list of SVE vector registers"}, + {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Znx2_BIT_INDEX", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zn2}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Znx4", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_Zn4}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Ztx2_STRIDED", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_ZtT, FLD_SME_Zt3}, "a list of SVE vector registers"}, {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Ztx4_STRIDED", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_ZtT, FLD_SME_Zt2}, "a list of SVE vector registers"}, @@ -321,6 +323,7 @@ const struct aarch64_operand aarch64_operands[] = {AARCH64_OPND_CLASS_IMMEDIATE, "SME_VLxN_13", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_VL_13}, "VLx2 or VLx4"}, {AARCH64_OPND_CLASS_SYSTEM, "SME_ZT0", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {}, "ZT0"}, {AARCH64_OPND_CLASS_IMMEDIATE, "SME_ZT0_INDEX", OPD_F_SHIFT_BY_3 | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm3_12}, "a ZT0 index"}, + {AARCH64_OPND_CLASS_IMMEDIATE, "SME_ZT0_INDEX2_12", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm3_12}, "a ZT0 index"}, {AARCH64_OPND_CLASS_SYSTEM, "SME_ZT0_LIST", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {}, "{ ZT0 }"}, {AARCH64_OPND_CLASS_IMMEDIATE, "TME_UIMM16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm16_5}, "a 16-bit unsigned immediate for TME tcancel"}, {AARCH64_OPND_CLASS_SIMD_ELEMENT, "SM3_IMM2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SM3_imm2}, "an indexed SM3 vector immediate"},