From patchwork Fri Jun 7 14:26:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saurabh Jha X-Patchwork-Id: 91698 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 B394E3921FE5 for ; Fri, 7 Jun 2024 14:28:02 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2043.outbound.protection.outlook.com [40.107.21.43]) by sourceware.org (Postfix) with ESMTPS id C71C838F7B9F for ; Fri, 7 Jun 2024 14:27:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C71C838F7B9F 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 C71C838F7B9F Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.43 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1717770446; cv=pass; b=UI2mzNVKD3TxRDxkttAPWiirzYfIN8M1oaKR9au6n5ZTfGuJLLw8BnjBiGxY7eKEPIshSAza4tP8eXD17xaFgMKITZ1fcg5w7n1Vy12E2ayeyrVFI0sz0DrHLcA3xoYiGPiGfxzoTU7WEyeXLpmgEB4ZIydmS/Cdi1pL6Ox+XJo= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1717770446; c=relaxed/simple; bh=i/6cj5KhWQC4Hikdjm2+LTyUETZBvSftzj17iFM8KDA=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=UIRZj0eqeiGcRx9pH3j32/Pwq/nVyeaUNs4Tg3m/XrF/1SUdWN5KFv2v2aGh8l9XDMDLG1k9sBw8kWf9vzWMN0JmYvM90k9vKgApFJBf4HYiVtf/C7IQR4hVBMmUYxrI/XYV/AB7BroEN4tAtQCTanUlCoXVqdfHG1FFAwLkzV8= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=effeOAr87FgN72sC/EnGeTzFwMlVDN7b/YdrHDMTYCW+RIX5lZaw4pEpz+m8lbvi6XnhHqMjWIAcutORPLjdFUA5CiWCGWeh7CmtsdFNl8SIYa1Id6EImQPeCOSBwQgz2YUZM/WuAsIJFHZyx08YkKzh+nYf/RsfZc3asc43Jp9OhGksS1Pua1cTkK9gAS4vxIaBvZiOxdBB7HZ81ZsE4mOOaFUEjF7HLr77XVvhw+Pjc2/wQRmdX89qMlJ783yyC7D56eHU+2HeKzv736XcKXtTuaI5+JxwhvZOIvpBFf/lcZ7Kv96trw0xXwAth4d2LPUrO9Zi2yPhFnVmONr4bA== 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=U7crHZzJOxoq95p/0RK5fBrPMEN0tzla6O/HNJPp1ro=; b=kS48niPkYpvLS00R7kqfe/y67gR/h/f93uGvKv1bEBN3zeDXC2MuQFoFLVQuremMze0DUj3ea1qpzxjVNtnJNvf3qqfPfw6Vg9+GpeBy5zy3XORO3nXy0axu1l3vikrJfLIdCs4S8cmybpMdAwCFfJnn1njKmkVzpNQ1JzbSzB656/ra5tCRzJWGzk1HdAixyhPrEi2Vwe/OQrlD2YLJ7Gv6z6jziXudxYnW/G1MbqUnou5dUhr+D1vusfz0jcgbQuCI9E8FwDChzQZ6TkObvWLy+KmLikWZ3Ct5PK91X2VQHhOsqiB/MJ+YAdtDSVgRLuEmYZV/keIDQ0DmIcbSZQ== 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=U7crHZzJOxoq95p/0RK5fBrPMEN0tzla6O/HNJPp1ro=; b=jqsPK31U5k9YMsOc42qrRSlIssBJkZPFmpneKZmPsEbCLtUxoqvlBjezuB66D+DINfK7KIn9hxYGlNOi6OBRVcdn9sEZi58n7MzBCvLWIv4cUHYQFsKREc+nlcO7M/1SmMEfF0H8EYN9pSbMfhKqIEzo4lRNoYbuDHUdU6Qyk7c= Received: from DU7P250CA0011.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:54f::26) by DB8PR08MB5385.eurprd08.prod.outlook.com (2603:10a6:10:119::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.25; Fri, 7 Jun 2024 14:27:10 +0000 Received: from DB1PEPF000509E2.eurprd03.prod.outlook.com (2603:10a6:10:54f:cafe::ae) by DU7P250CA0011.outlook.office365.com (2603:10a6:10:54f::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.22 via Frontend Transport; Fri, 7 Jun 2024 14:27:10 +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 DB1PEPF000509E2.mail.protection.outlook.com (10.167.242.52) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7633.15 via Frontend Transport; Fri, 7 Jun 2024 14:27:10 +0000 Received: ("Tessian outbound c97281806a68:v330"); Fri, 07 Jun 2024 14:27:10 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 738517562ffdd7fc X-CR-MTA-TID: 64aa7808 Received: from 7d9fa0376b60.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B13B2BD9-FD68-4B44-A6E0-2BAF1C56A9E9.1; Fri, 07 Jun 2024 14:26:59 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 7d9fa0376b60.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 07 Jun 2024 14:26:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JzHx1KRi9opPPD/TFHUYl4OxOmvgUtCyfOOiaBgFYncvptIAHwII42SzfDsNs9DfaXZrB68ZnOaDtbayandSJfl9p60/jHbrDyryXdM+mcIQaT9SsviFHh0Qbosxvl3vatsll8/+ePDJDclXHeYTlTUwNZyN04/A8b65yAMN5rrRCYbVQiN6j5/Fixxbc6bbW9C6D+QfddrBQRugg9FQzcKpquTfWXgNscIpo0uWdHq1SYMzmbLreNnpBXizeKlE5yn5ncQZ0GdbQTQ5VX0JeYFZKSXuKahWtZVs/6wi14HkbgCUr/H/rRjGC59lCeWUQePgs5qBp9cwPPcX3wiq6A== 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=U7crHZzJOxoq95p/0RK5fBrPMEN0tzla6O/HNJPp1ro=; b=Oofw/cPM5rNX6Vig1/wwevTFK70hXy276oYjHp89x9sQYYY9/rUslMTd+M7oerwqJycZdbShchofQFa93AjiQN/iPeh/g9nMSnasqSCHwlQqwpxgnbpTKs9WTJaGGxlG+adsf05VaxnRvmXx2dyYwq8ERtz7xnLcMWZyFaumaicdE74TW1pno3hkXAKIXtwAMYOEcxalbUCY8xG/2gl4Vs92SsC/aH368DTRV/OrmojFfCPS4TUx2yJ4TjpOsCeD5XH55WPyomfHug4ON5ouec3lDJYUO7d2FR5gmLsWuu+/WaXjxcMcUC/GwFhBqWdIU3ZvwQqNVwut5oH95rBTEg== 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=U7crHZzJOxoq95p/0RK5fBrPMEN0tzla6O/HNJPp1ro=; b=jqsPK31U5k9YMsOc42qrRSlIssBJkZPFmpneKZmPsEbCLtUxoqvlBjezuB66D+DINfK7KIn9hxYGlNOi6OBRVcdn9sEZi58n7MzBCvLWIv4cUHYQFsKREc+nlcO7M/1SmMEfF0H8EYN9pSbMfhKqIEzo4lRNoYbuDHUdU6Qyk7c= Received: from DUZPR01CA0015.eurprd01.prod.exchangelabs.com (2603:10a6:10:3c3::18) by PAWPR08MB9542.eurprd08.prod.outlook.com (2603:10a6:102:2ed::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.34; Fri, 7 Jun 2024 14:26:56 +0000 Received: from DB5PEPF00014B8E.eurprd02.prod.outlook.com (2603:10a6:10:3c3:cafe::3f) by DUZPR01CA0015.outlook.office365.com (2603:10a6:10:3c3::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.21 via Frontend Transport; Fri, 7 Jun 2024 14:26: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 DB5PEPF00014B8E.mail.protection.outlook.com (10.167.8.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7633.15 via Frontend Transport; Fri, 7 Jun 2024 14:26:55 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 7 Jun 2024 14:26: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, 7 Jun 2024 14:26:55 +0000 From: To: CC: , , Saurabh Jha Subject: [PATCH v2 1/2] gas, aarch64: Add SME2 lutv2 extension Date: Fri, 7 Jun 2024 15:26:48 +0100 Message-ID: <20240607142649.592529-1-saurabh.jha@arm.com> X-Mailer: git-send-email 2.43.2 MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB5PEPF00014B8E:EE_|PAWPR08MB9542:EE_|DB1PEPF000509E2:EE_|DB8PR08MB5385:EE_ X-MS-Office365-Filtering-Correlation-Id: 46e23638-4bf6-4ed8-7612-08dc86fdeabb 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|376005|36860700004|82310400017|1800799015; X-Microsoft-Antispam-Message-Info-Original: VM6AATN5J/zXFESnX9TvJBM63h4rvOQjzsjnJv7NB7qxqY4Bq3iQWkqrC2tA1JE0QOfh7NhMdirKYm7FtQBrzz0PbxcIrP2W0UKDwQ7iXWgtE4zjUSdBeCUb59aBA0/z2MS7E32F4W15wyyR1YmPge2AyIBpTCgmSDhjpm3JRJOgisdv/kXF20E4zPXonOddwg5MQ6Do8KnZ5R90mih6N8kkIBqz60YGDQHNPpmC1cEjlBYLfaZOcATbrhPA4icnL8O38M54nL2Wvu7bSfSbJ4bMKni2W3bsezcJPbOy9nVYZsVbKSPFlEDCr0wSh2p2d/vb9swj4F953BM3FoFlpPLazu2uzDfQeiRXAzN96HbuzxvoFl4Rf3zfZ6dqQUHlh2FwxoVGhz1BMe18XhH1dZFV2tgrLYiiBouQChp/pRMvoE0gRyxIjNHQVvUwlYz5AcsLlexJRSgoxWhr88nBWf2jrHQVKusqcBdql888Jd+tPFNJXXYThT6bU9QUwUV3nd7xnNM6EvytJWIWyCrM6e15ExNQQ8IFk2uQICSdw9i0FDI6rN3ETSuIC9TttrhkthqsKnSn+haLAm/aen8XrTd//0Um5rd5OWh3PxYeOajxv00QYW5F7GXXXdxkPn9CZ52sV6fzb4CS1e+DmcdE1PZSpT5yCDEsqt1RuLnrqja0SCAeOsIXvID5ht3okrfnaJfZuWIlCcHvDQ7XrCdxrtgadJREyyQcToNqf1k/rayHUAwcHbStc9sGDl9Bgd1tTwYaOkQTkNdhqL80LEahaWzp26Rf2Lz3KaqOeJDBkup0uMLKNL1c+rplYRajlVl1hGHvJkJ77IXLLc949wv2ijj2J/H8b2Dt4feFDXrisjLPvihrM01gz5y9Z8xu11ot1/sbAh9fDEm0iLKTNTnS/5Xcf0uebCwEYX9NrCh+kbrKlg5h2+8hl2tfegSmJpsTe7OCLPQ5uXvp6Daoeu43x8DChYYKWpoSlO3THer+MblB/6ARrXwmGLmjlQKZsIEEpUEy3k9d2qt9CzYK1WMl4InJ5uK2JrHnHsWBE6XnqhlSf2sGltZqlA4C3IAGhZ96+jruCzpox7WsBZgVHw3/inEyZt9R9OkiZWqgzc3yXbTNPqx5rL83XTRJ3SZ01GPVVPulhP4IgFMcMRb1dOhZW0Cs9a2YvGp/irjoZy5UgYRemHuY7yA5jS8LdeJLKrWzA5lBJ6LSBMcfrZ94bV+leQGLWuwJRNhjJOJuPCW6FLDQHzGmra0zYP/AiWjuvD5szJPR/xgmaLxQi0edVW2tzQsBmFXX8wzqpj1JEGOMdEo48Fc1d+fkWzcOiOA/wsX+Nj+/fvgNEVjnYZLP3JzCQgRRiMsD4uOpu0kArSBlSRo= 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)(376005)(36860700004)(82310400017)(1800799015); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9542 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509E2.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 83605d04-f0f6-4db2-a3cf-08dc86fde235 X-Microsoft-Antispam: BCL:0; ARA:13230031|36860700004|376005|82310400017|1800799015|35042699013; X-Microsoft-Antispam-Message-Info: =?utf-8?q?s5kYx6LlK614ZVR1kytuERN+70P2Gko?= =?utf-8?q?E6XthmcADBEHHzjRgHeuOe8Wbz8trInsqfYqQT17591/+c/KNMFnIee/kCbxwx+k3?= =?utf-8?q?n6wQU+y5cVz5mWkOxOms8E1rNkLtFx+QhyRcti849msLTgnREZ3R3IMlQ/Z1JH9T8?= =?utf-8?q?nZ0xjnjhprTE+b7fUtFnIkegf1mQVwJxFUwGyORv7d3USk09q9fU0kwkQ6AwSj2cE?= =?utf-8?q?KoemsIwTLEOlApW/pOtiora93DpaxfWTbQ0BHu5/s1Z7oYBPKSRTctTjRa2ZWPjxy?= =?utf-8?q?xYCJC+2FcffKSK1hNESsGnuT8Pcmg7hW7aQd8jWGnA5IsSFEpB+4lZFHsXvtpzQ9A?= =?utf-8?q?Xz5odJz8zcHkPUNp/rohL5ImickvzZvus4wNCzTWX2G5CfUoOBAKWRqyFUWZwjrTl?= =?utf-8?q?3Pwi0M8UwIzH/GkD44OnWK7Kmq1/Zdw22vAWpzXwgichYk2L7vYkuSM0Udd/MfRnL?= =?utf-8?q?x/DNzn8mGzj5jftcqlDl4tmk99erKFC5xqVZWQgqI6gEcJT4BTom/KWehwn9r4qP1?= =?utf-8?q?eSRy3h1xDv3XPylhMJ/qOlkryCnTHoF0YT59jxxhahBjTz7LVxAOppi0QukOd/CY/?= =?utf-8?q?KJdS9+Mnrw9pKvDJ3AW9C7WZ+JJWkBm1qgIZKO7kW4WVw/0mj/5DuH+/qJ74ZdiyF?= =?utf-8?q?Rr9MZgOPKvUz9YXQZ+6xRvHxaM26a8l2JyOfmSFAczUoRVipJHWHXro9quzYqzMve?= =?utf-8?q?VcKUjji9yxdImcG7i0jEbpp5gcc0g6ffttyAqXnZblIOjYPxUbb1cePT9YoF0sHrH?= =?utf-8?q?bWqkhp2DuiKNCZux+D9OiV/8wIvfnEdDmF1aPYbhHBDBnRJJ7ybATDwbJOb/OQpJp?= =?utf-8?q?/QoYOMToqUGZDl5A6fzpApd897dYpOXj8XOw3aMkHaJZWXLMsgX00gbro5xjxOxlS?= =?utf-8?q?fW6hY6Pd0O/aVGMGxd1wf/p2vHeOHs4gzf4pRHGmL1Ks3pRqs3cUD5q0qAl1R8Wpe?= =?utf-8?q?gapKWM5vcR4ZZ/whC0raKTQnuuCGC2K0d8Rxg0s+zTKLIuqO6Fz7Wpn0BzQy/hn5G?= =?utf-8?q?UUt5q+l6NsiTDQ7+wJsfG/rIKho64Oo68p/4+yNYFNAf8wWjIJsM4S9dGmwmQx8mg?= =?utf-8?q?8hB/qFhfPjddS0+ZaMEdxRtFBAaf8dyn+DXo68KRKOc0iX+X/m0H7d/DKfElL1bSR?= =?utf-8?q?R94c9sUtNvURNpqKAOA4aRY96wD/aj+5/Rx0Oon3+FVTFQyH6GGf7YGRvZXuiF4DZ?= =?utf-8?q?7vhfWcsKm2/2jZpTYuF1j9W1bTQ9QHrMU+uzGZTrNmg/7tJnOG3ML9LmPmIQn9zHL?= =?utf-8?q?Qx6dq32nYfhrDZr1hii2vIMw+NAHsTVqh+Nb4MdFXFpu6gvx+sDs2c4A=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:(13230031)(36860700004)(376005)(82310400017)(1800799015)(35042699013); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2024 14:27:10.2613 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 46e23638-4bf6-4ed8-7612-08dc86fdeabb 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: DB1PEPF000509E2.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5385 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 | 88 ++++++++++++++++- 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, 402 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 145ce413bff..54cf840c483 100644 --- a/gas/NEWS +++ b/gas/NEWS @@ -41,6 +41,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 fec17c40a43..14c2eb1d663 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,12 @@ 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); if (!reg) { set_first_syntax_error (_("invalid vector register in list")); @@ -3893,6 +3903,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. @@ -6858,10 +6916,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: @@ -6899,7 +6973,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; @@ -7966,6 +8040,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 != '{') { @@ -10551,6 +10630,7 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = { {"faminmax", AARCH64_FEATURE (FAMINMAX), AARCH64_FEATURE (SIMD)}, {"fp8", AARCH64_FEATURE (FP8), AARCH64_FEATURE (SIMD)}, {"lut", AARCH64_FEATURE (LUT), AARCH64_FEATURE (SIMD)}, + {"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 b622f30b146..3e96a8442f0 100644 --- a/gas/doc/c-aarch64.texi +++ b/gas/doc/c-aarch64.texi @@ -267,6 +267,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 8a21611e3ff..8d93f941b86 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -238,6 +238,8 @@ enum aarch64_feature_bit { AARCH64_FEATURE_FP8, /* LUT instructions. */ AARCH64_FEATURE_LUT, + /* SME LUTv2 instructions. */ + AARCH64_FEATURE_SME_LUTv2, AARCH64_NUM_FEATURES }; @@ -755,10 +757,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. */ @@ -807,6 +811,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]. */ @@ -998,6 +1003,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 bbe6f09808b..55e2aebb9c9 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -252,7 +252,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]. */ @@ -1912,6 +1914,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: @@ -1927,6 +1930,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 @@ -3146,6 +3150,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; } @@ -3738,9 +3750,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; @@ -4199,9 +4216,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: @@ -4882,6 +4901,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 8bf3fc8b874..76f3d398490 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 1d12630273e..44dca81f5bf 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1809,6 +1809,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), \ @@ -2045,6 +2052,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), \ @@ -2745,6 +2759,8 @@ static const aarch64_feature_set aarch64_feature_lut = AARCH64_FEATURE (LUT); static const aarch64_feature_set aarch64_feature_lut_sve2 = AARCH64_FEATURES (2, LUT, SVE2); +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 @@ -2821,6 +2837,7 @@ static const aarch64_feature_set aarch64_feature_lut_sve2 = #define FP8_SME2 &aarch64_feature_fp8_sme2 #define LUT &aarch64_feature_lut #define LUT_SVE2 &aarch64_feature_lut_sve2 +#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 } @@ -3019,6 +3036,9 @@ static const aarch64_feature_set aarch64_feature_lut_sve2 = #define LUT_SVE2_INSN(NAME,OPCODE,MASK,OPS,QUALS,FLAGS,CONSTRAINTS) \ { NAME, OPCODE, MASK, lut, 0, LUT_SVE2, OPS, QUALS, \ FLAGS, CONSTRAINTS, 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, \ @@ -6604,6 +6624,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}, }; @@ -7124,6 +7149,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, \ @@ -7132,6 +7160,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", \ @@ -7242,6 +7273,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 7 14:26:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saurabh Jha X-Patchwork-Id: 91699 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 8E62639317DB for ; Fri, 7 Jun 2024 14:28:04 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on20601.outbound.protection.outlook.com [IPv6:2a01:111:f403:2613::601]) by sourceware.org (Postfix) with ESMTPS id 72BB138F7BAF for ; Fri, 7 Jun 2024 14:27:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 72BB138F7BAF 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 72BB138F7BAF Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2613::601 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1717770450; cv=pass; b=DeK+oJDFGQvYo+NYf7z6dgKVI98QRE8ilZv+fbf2HDEZTpG7nQyYZptiK8wN3k0qYgsqSpOUkoMJ5LErmRFCJ6E5M/7LZ8YFK+UYhHK2g4/RoVVmVMWcHjY8J5PYU4LMGOGI+fxE0uCcP4FjheZf51WrCiEF7NxtahGa3ALKoWE= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1717770450; c=relaxed/simple; bh=qnMvn5LHrrs+49xOhs1j/L4NOwH2E3GAHBfQRgod6DQ=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=VqHga42OOnwbaKvJHfnR7xkOMP0T1WYJ3jPICbGtafcP+od5lnEET3eXwkPtBMbpg4Fp3uGgR8+iIN8KKZZq7pOg1aGGpKTpFne2fjJJqpfS2Ycy+GZipnJyeH/dewCp+wfo8ufe/U+0MSDR4VKRL1Fu6/3DgKj4jLoSYN1pFCM= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=ILVnNbe96pb4PDVBJFIPn+Fhte6G1P2bqfeXfNEzrQQis/PXuCQh+n8XUFhjznpnUebL5X2UwUVrrEZ7SSdKkoALIQ54O235KbH9qThDL7KA/W1jGJ7YnXORaeT0f6d8UZpUHhDNUsgM6zge7JCai5HbXRE5aLkmpQh4qWj84iMe2qABfzvABWI3lvRYTrYZS7tVYmALlB7Wl5betvSh7NCAh3g4TQFV7SLp8SkVCYX9PjNBuCEvkGoQ0IXUgOphoJwh7bS8xM26XxRVfFjjd0TmR8JbyUDsO/412TKyW/wQDEsoTAFkgIlbvMltMRY49rnbE5TKAKH3zTiWH8H8pw== 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=L/dd6vH48q1ctNOI4FVMMTvtoiNnPBjxnicEOR1QSow=; b=WYChpH3HnLnck932DJKAXEjD574b/ajDMOgn8nvNLIJf5u6OwUQYn6ytFwq66dagt71ttjPW2cBAQqTKKhfgNV38wGExcI5mZxNNLkBq9BUp7+8FWDJ/BHfCPfo1VhkqUeQVlV3Wnx4POW8MtX5S5SjdXxGFHLAOQxEqL3B49h0xeBfqv4ngxytS9k1yPajDHX6xPTz1fRUbiD4Twr3v2x/GLwW1b2Y6A6r4yL4tU877RRbLhNAQMF5qwCg9H6mCiq6TrMKecARQSJ2AQ7tCMu7zX2Bi5etaGF/FcWJ5oIzqUb+5shGYg6S6rvqkeiT0pBm2/s+QlkP4XZZI091n0A== 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=L/dd6vH48q1ctNOI4FVMMTvtoiNnPBjxnicEOR1QSow=; b=GkBoVgh32Pvd0w4NPFuzJrgihlDxeo3ozN2R8ub+MRJs5m9p2rsAwpvrojB25olrZUeA4UZ32AaY1FSABz5dJqNcKa+akGUnARnRl3XTIA/daxnN+1yFbMd+pXikyvd2P4td8E/OMivNVAxtIfrdYJ6lg3l3Fz3BrOfB9biB3gc= Received: from AS9PR06CA0119.eurprd06.prod.outlook.com (2603:10a6:20b:465::15) by AM8PR08MB5844.eurprd08.prod.outlook.com (2603:10a6:20b:1d1::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.34; Fri, 7 Jun 2024 14:27:13 +0000 Received: from AMS0EPF000001A9.eurprd05.prod.outlook.com (2603:10a6:20b:465:cafe::b0) by AS9PR06CA0119.outlook.office365.com (2603:10a6:20b:465::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.21 via Frontend Transport; Fri, 7 Jun 2024 14:27:13 +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 AMS0EPF000001A9.mail.protection.outlook.com (10.167.16.149) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7633.15 via Frontend Transport; Fri, 7 Jun 2024 14:27:13 +0000 Received: ("Tessian outbound b032201a3cf3:v330"); Fri, 07 Jun 2024 14:27:12 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d3375a91d708400c X-CR-MTA-TID: 64aa7808 Received: from 48670d85c145.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E0C5F677-3498-40AB-B6CD-7E528D7CAA83.1; Fri, 07 Jun 2024 14:27:06 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 48670d85c145.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 07 Jun 2024 14:27:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TuvZYsUFft4+iPCCapue5Hf4He57RF4ErLVAyr6vhnemwqbYzxKsMbTdalM8UP3/fVAw+9MrjIcSlBL41hjbDvNwwDE5/huEsIVi8pxW/k+VJfv51ZhAhEn4yLY5n8l+gZQSuFukYiib+cy6X4XYknF/yJz5azJlz6b/kXrtor+gRGQA39PVp4yJ4G5PrbIlq7ba1y8m1KpnMEU69pEWe57JUfGaN68nWVJe8vuZPuJtygpNP265tIi3Hhg4pZ16t5dM8dEN+akXL+0KyBtQ1lLDYxYBEenPT7KMqm4zE1Ao5PIamoM1kfW3nng1NCzeNNnsC9i8fS4WZPzfm6actg== 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=L/dd6vH48q1ctNOI4FVMMTvtoiNnPBjxnicEOR1QSow=; b=CpG3lcotTk4M48Gwz8L6+WdFW6udXMbtBV/cPunFYvyDZlXoNR8DLc8cuoeX9DC8vWjG6jsRn7mXG6oVEX6weHVfnFRD50jrqEERyyu3+j5RGy8pwDPZgWH/IMyC46mSIBGyRUT47fHPcV9AHoXxGpC0sYPn6kvXvBbz3m41jiaGE1jEqdF1P4wlcZqZh66/2YIckl1QeumpxfOWYliOQo7z9IEPFe92t0lxvvRahBFClKnzi4zO1mY2E2GSbsakuPhTkV6vxW0nUrbZBXE4XXhBQVBEFx4OTurpgeGKEdQrqwNxqaYIkUtAhm1wmvqzhG4QKb4IgBL/7MHqSUj5Bg== 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=L/dd6vH48q1ctNOI4FVMMTvtoiNnPBjxnicEOR1QSow=; b=GkBoVgh32Pvd0w4NPFuzJrgihlDxeo3ozN2R8ub+MRJs5m9p2rsAwpvrojB25olrZUeA4UZ32AaY1FSABz5dJqNcKa+akGUnARnRl3XTIA/daxnN+1yFbMd+pXikyvd2P4td8E/OMivNVAxtIfrdYJ6lg3l3Fz3BrOfB9biB3gc= Received: from DU2PR04CA0216.eurprd04.prod.outlook.com (2603:10a6:10:2b1::11) by DBBPR08MB10435.eurprd08.prod.outlook.com (2603:10a6:10:52a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.34; Fri, 7 Jun 2024 14:27:04 +0000 Received: from DB5PEPF00014B8B.eurprd02.prod.outlook.com (2603:10a6:10:2b1:cafe::ae) by DU2PR04CA0216.outlook.office365.com (2603:10a6:10:2b1::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.21 via Frontend Transport; Fri, 7 Jun 2024 14:27:04 +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 DB5PEPF00014B8B.mail.protection.outlook.com (10.167.8.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7633.15 via Frontend Transport; Fri, 7 Jun 2024 14:27:03 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 7 Jun 2024 14:27:01 +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, 7 Jun 2024 14:27:01 +0000 From: To: CC: , , Saurabh Jha Subject: [PATCH v2 2/2] gas, aarch64: Add SME2 lutv2 extension generated files Date: Fri, 7 Jun 2024 15:26:49 +0100 Message-ID: <20240607142649.592529-2-saurabh.jha@arm.com> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240607142649.592529-1-saurabh.jha@arm.com> References: <20240607142649.592529-1-saurabh.jha@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB5PEPF00014B8B:EE_|DBBPR08MB10435:EE_|AMS0EPF000001A9:EE_|AM8PR08MB5844:EE_ X-MS-Office365-Filtering-Correlation-Id: ab02fd82-f575-4797-ed8a-08dc86fdec71 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|36860700004|1800799015|82310400017|376005; X-Microsoft-Antispam-Message-Info-Original: Vz8qX5QfEx5Sq/qem9XJE8GXhH0F9XpStTLMErPv0qKuDl7mAYBHvBjl0KRKeDdPRZj0uXi+AfKWsOJT4aNl44Nhf6AFqklbrr+o5ibyq6otutQcaB6eRItrmlOSSLrW83EO2WcqsQ3T8gHsNcyymZr8Rv5VkvcCQvXkeVVYp62y6//ebeoUa8vbztRFqsnh1Ygece+iuopEmkvj9l05Higc97eWnGj/HbByC5kuWDtv7GJv2G5w48XClSIf7fP4xpDcZfiRB1EppGTa9Bm2VBrqpM8m8BLROXlQ5xjjfB3FLyH9avsAmt5yBIi4bcQ/ZR8itLk+OPi2yYsnwm9XL0EvnhL6XbbKTLNKd2jLcflbm8QVo/EXDXH53fv0Rh/JX8Oq/BykgsynbbIbjqGxNWG2mCkt1w9/QnoFqBRLFAwOrETzMY+VU+wNR0bdMI2uq1W4iI9IpKyDrIkIw8Pnk2qoR03q2jU/KypJWvAvYbERgHs2yriX5dB4ZJQv7oABmxiwIjS1DFhuoNmuuo3noNmBlgyA3XLgOZPeEhQRNoBqZ9mZkDhKqne71CCcWxTHDJLfHnJiOCcW2w+Lrc1nkkZfCBz4BsC6Zqv3A/X/DDZ2pMsBUCvx22UZbT/LFDkj5Ucaw1RzfX0GkuEvOPhQ2zKKb2cbzlmJg/qddGpv11E6sAuz9bdE3WfQjmnewAsb6E9OgNyqgQoWWNh5c6JumvbdIkv5vtbHwhqIG79mg/aWAEcQ64ZvN3AHlPmYsTiu/5co8QONeFBp/RCdXpxv4TcHDyz/oVq98pG4QNtYlZz57viz/BmOK3dYd3iiNCtaWrR7ZZfnFNyghnGZmwTjRvzfHIPsSsE8kuUYBsHXF35oqw8STneU71YgO2Yr46CPxQOkPtxMvTCt7B0dkrxhGNWl68LMg0BeFAuHkSkcf6eJ2/k7YDds2m7h0AGowN9SMWlluAno0dYtMIkwACLEfdmtA2pw8PfVIE4b4H55uSxUu7k8t5LI/t8ELwM5sLkVVMqFO4nglhPCl0xGsrRF2TlS37uO1kcklfbngfcJS/RENZBsYWWxydITbE91wCGJeuJJrjUVT7tKYuAZEvgl43kFxxHPhvsxnOidkcCZMZ/Deh62AMjEJZN4vc3GnqhaSsB3xUU2RIIqCJ4k/OKuTEzyRM7Yd9V613r3DUZ0XUicXtOKY04ws84sdl8z/ba8LUAfmWdjRUSHLnxJJ3Dafa/LR0Zia7flOOEtRVEak3hhIVexrzY+Bq0mb6Yf8QVtJnjyl3ZFAyRF5Vtd8Bf06QxhN++jmtALYtg7Tx2WrWX6dyZoEcvKm8Nebja6+FtAiNsMktQnJY6KvCWG4eYmribQYbDb69d6nz0JOTzx41tEhGbJGaOZdqwT5b6RtLpFVvSpNdS+kl/mS4+YtCwZIw== 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)(36860700004)(1800799015)(82310400017)(376005); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10435 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001A9.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 318f5937-c80e-413b-91d2-08dc86fde6f3 X-Microsoft-Antispam: BCL:0; ARA:13230031|82310400017|1800799015|376005|36860700004|35042699013; X-Microsoft-Antispam-Message-Info: =?utf-8?q?bNQuVU/gbImCJwufOOc70lOik1f0EsZ?= =?utf-8?q?UuyiDfC7nKTmt6RkiAx07ydqBBw0iwPapqoPhLLZsfhjX/pbD1MWdnWCbMAdLfFJL?= =?utf-8?q?8qPzhMhqHJfDvVcuISLKDWKDQ3fLOUbxauNCIpZqlF2FJJVNjr1twOX+PfWjHON+u?= =?utf-8?q?pbkGZTOmS5H5iy0RFC2/XII9dDxpFc4SMLbvhLNkGbnxp1HNNdsInGi/aYo+TvKUb?= =?utf-8?q?DxQnsU4wWdlmMiMhXEzgBGFQpe4Y+vHve8V9iWbq61nXzK1rEO3WXjLRNblfimade?= =?utf-8?q?zj7ALE1oFeOv+FaVOJJWLG60cX3c5x9RNbPhlBMRgUcE0FMAwnURWM6Sldk3W5Wf1?= =?utf-8?q?09bMZp4d63O/yxZ7U7PE516u2pNPE/D3zsszokwYjVctuUSJVoo6/jKrHQRa541hO?= =?utf-8?q?Wbm0DuM/94z0Yrl5F4IyxVCpnEUnwbEvcT1bBlPdEZ7RkHEklqnbj6tikbYt4Iap0?= =?utf-8?q?43V7+Y8b2kBJ1fQOAf9y9nRfnIstjFGKmVUpi920oJB80oDIqt1lUwAqjmhv8I7M4?= =?utf-8?q?0yvBaEG45TChZWbbg6TIdJBx25OI1ZRYJ+pHwqcWNGp6LuYBPF2k90qz07fYuAvE1?= =?utf-8?q?tba75sfRF3b/70fTo0aG3XjHjg3r7wuIGbyAXIeMw4hJbgsm2HOoZVTJsLqObMMvS?= =?utf-8?q?YZomtO3hK7/cbAe82GkTfU8g6IOVlI8HktKaE7YathMh87oqJncbZAE/vj+C9xHmm?= =?utf-8?q?tknIPIGEz1/WMHTPZpw5o/z4UitM5R5Ly3mdRt3Im4YmpA6nbblI2JU4xxgmG5aOJ?= =?utf-8?q?N6+YcZ4fEDZNlGciEB2dPivjjF7ohtG6hlxlFd84oHhJzOD/hRY1MxEaa6xw5gHq6?= =?utf-8?q?FaWYfcT+wQUfrZ/qIHq4JkXd/Qz+IYzuV4+d/natkLz0zYRqVpZ/yk+qddizK8F60?= =?utf-8?q?7I3SdBAiVo/PHVrrVjC8/mZhvOIOWZFgqd4CUFMmmw5D88+BJ0sOQr6ViNn/jzZ/W?= =?utf-8?q?MfVAjuq++V/nnvTupxrYBSiO2SnBC7T+FMKQ2PyWqSPEQRjLZ00oA2yKgTojuSO7Q?= =?utf-8?q?+S0BhAnUhYyEvea2ghItSDQ7lt6Ab90SsdJ07MR4dOUt/QLjTQ8gSVeD1yUvjycdS?= =?utf-8?q?79oGTMUpK3kjy0670iRa+RTj7maN8/zgli7cR7p+rFDJDMxLsJs7XxmLonDqs8PkF?= =?utf-8?q?jVvWH9HZRi4jX5LYb8AlZpCKCNM8b8dCi44Rx+Y3orMEb+UyBJjady6dKChUMGk5M?= =?utf-8?q?h6EtSGq8Y+fTC0iUwcm73rrk31NPMxr06GLv76u9fvLgxT+fDCqPsmktrAblpS+cS?= =?utf-8?q?9FzVSa/OjGh2tTT7Yo4yKkxTqPzPyNfM9+NlPX1hYm3PWO9DhsKDRxAVJkYNrSwoX?= =?utf-8?q?sIvURoBRa6FBwU+GyoEvQ8+K4SDW6+lF5w=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:(13230031)(82310400017)(1800799015)(376005)(36860700004)(35042699013); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2024 14:27:13.0880 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ab02fd82-f575-4797-ed8a-08dc86fdec71 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: AMS0EPF000001A9.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5844 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, 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 a4b02cd9a25..9b91ae44757 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -677,19 +677,19 @@ aarch64_insert_operand (const aarch64_operand *self, case 224: case 235: case 239: - case 243: - case 250: - case 251: - case 258: - case 259: + case 244: + case 252: + case 253: case 260: case 261: + case 262: + case 263: return aarch64_ins_regno (self, info, code, inst, errors); case 6: case 118: case 119: - case 293: case 295: + case 298: return aarch64_ins_none (self, info, code, inst, errors); case 17: return aarch64_ins_reg_extended (self, info, code, inst, errors); @@ -703,7 +703,7 @@ aarch64_insert_operand (const aarch64_operand *self, case 36: case 37: case 38: - case 297: + case 300: return aarch64_ins_reglane (self, info, code, inst, errors); case 39: case 40: @@ -711,10 +711,8 @@ aarch64_insert_operand (const aarch64_operand *self, case 225: case 226: case 229: - case 262: - case 263: - case 278: - case 279: + case 264: + case 265: case 280: case 281: case 282: @@ -726,6 +724,8 @@ aarch64_insert_operand (const aarch64_operand *self, case 288: case 289: case 290: + case 291: + case 292: return aarch64_ins_simple_index (self, info, code, inst, errors); case 42: return aarch64_ins_reglist (self, info, code, inst, errors); @@ -773,13 +773,14 @@ aarch64_insert_operand (const aarch64_operand *self, case 205: case 206: case 207: - case 264: - case 291: - case 292: + case 266: + case 293: case 294: case 296: - case 301: - case 302: + case 297: + case 299: + case 304: + case 305: return aarch64_ins_imm (self, info, code, inst, errors); case 51: case 52: @@ -927,7 +928,7 @@ aarch64_insert_operand (const aarch64_operand *self, case 197: case 198: case 199: - case 277: + case 279: return aarch64_ins_sve_shrimm (self, info, code, inst, errors); case 212: case 213: @@ -953,55 +954,57 @@ aarch64_insert_operand (const aarch64_operand *self, return aarch64_ins_sve_index (self, info, code, inst, errors); case 238: case 240: - case 257: - case 303: - case 304: - case 305: + case 259: + case 306: + case 307: + case 308: return aarch64_ins_sve_reglist (self, info, code, inst, errors); case 241: case 242: - case 244: case 245: case 246: case 247: - case 256: - return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors); case 248: case 249: + case 258: + return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors); + case 243: + case 250: + case 251: return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors); - case 252: case 254: - case 265: + case 256: + case 267: return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors); - case 253: case 255: + case 257: return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors); - case 266: - case 267: case 268: case 269: case 270: case 271: case 272: - return aarch64_ins_sme_za_array (self, info, code, inst, errors); case 273: - return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors); case 274: - return aarch64_ins_sme_sm_za (self, info, code, inst, errors); + return aarch64_ins_sme_za_array (self, info, code, inst, errors); case 275: - 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 276: + return aarch64_ins_sme_sm_za (self, info, code, inst, errors); + case 277: + return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors); + case 278: return aarch64_ins_plain_shrimm (self, info, code, inst, errors); - case 298: - case 299: - case 300: + case 301: + case 302: + case 303: return aarch64_ins_x0_to_x30 (self, info, code, inst, errors); - case 306: - case 307: - case 308: case 309: - return aarch64_ins_rcpc3_addr_opt_offset (self, info, code, inst, errors); case 310: + case 311: + case 312: + return aarch64_ins_rcpc3_addr_opt_offset (self, info, code, inst, errors); + case 313: 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 35501d6777e..37bd526d2b0 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 2670; + if (((word >> 14) & 0x1) == 0) + { + if (((word >> 15) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000x000101x00xxxxxxxxxxxxxx + luti4. */ + return 3393; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000x000101x10xxxxxxxxxxxxxx + luti4. */ + return 2670; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000x000101xx1xxxxxxxxxxxxxx + luti4. */ + return 2669; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000000x00x101xx1xxxxxxxxxxxxxx + x1000000x100101xxxxxxxxxxxxxxxxx luti4. */ - return 2669; + return 2668; } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000000x10x101xxxxxxxxxxxxxxxxx + x1000000xx01101xxxxxxxxxxxxxxxxx luti4. */ - return 2668; + return 3394; } } } @@ -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 2688; + if (((word >> 17) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000010x1100xxxx00xxxxxxxxxx + movt. */ + return 2688; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x1000000010x1110xxxx00xxxxxxxxxx + movt. */ + return 2687; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - x1000000010x111xxxxx00xxxxxxxxxx + x1000000010x11x1xxxx00xxxxxxxxxx movt. */ - return 2687; + return 3395; } } else @@ -33674,19 +33707,19 @@ aarch64_extract_operand (const aarch64_operand *self, case 224: case 235: case 239: - case 243: - case 250: - case 251: - case 258: - case 259: + case 244: + case 252: + case 253: case 260: case 261: + case 262: + case 263: return aarch64_ext_regno (self, info, code, inst, errors); case 6: case 118: case 119: - case 293: case 295: + case 298: return aarch64_ext_none (self, info, code, inst, errors); case 11: return aarch64_ext_regrt_sysins (self, info, code, inst, errors); @@ -33705,7 +33738,7 @@ aarch64_extract_operand (const aarch64_operand *self, case 36: case 37: case 38: - case 297: + case 300: return aarch64_ext_reglane (self, info, code, inst, errors); case 39: case 40: @@ -33713,10 +33746,8 @@ aarch64_extract_operand (const aarch64_operand *self, case 225: case 226: case 229: - case 262: - case 263: - case 278: - case 279: + case 264: + case 265: case 280: case 281: case 282: @@ -33728,6 +33759,8 @@ aarch64_extract_operand (const aarch64_operand *self, case 288: case 289: case 290: + case 291: + case 292: return aarch64_ext_simple_index (self, info, code, inst, errors); case 42: return aarch64_ext_reglist (self, info, code, inst, errors); @@ -33776,13 +33809,14 @@ aarch64_extract_operand (const aarch64_operand *self, case 205: case 206: case 207: - case 264: - case 291: - case 292: + case 266: + case 293: case 294: case 296: - case 301: - case 302: + case 297: + case 299: + case 304: + case 305: return aarch64_ext_imm (self, info, code, inst, errors); case 51: case 52: @@ -33932,7 +33966,7 @@ aarch64_extract_operand (const aarch64_operand *self, case 197: case 198: case 199: - case 277: + case 279: return aarch64_ext_sve_shrimm (self, info, code, inst, errors); case 212: case 213: @@ -33958,56 +33992,58 @@ aarch64_extract_operand (const aarch64_operand *self, return aarch64_ext_sve_index (self, info, code, inst, errors); case 238: case 240: - case 257: + case 259: return aarch64_ext_sve_reglist (self, info, code, inst, errors); case 241: case 242: - case 244: case 245: case 246: case 247: - case 256: - return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors); case 248: case 249: + case 258: + return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors); + case 243: + case 250: + case 251: return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors); - case 252: case 254: - case 265: + case 256: + case 267: return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors); - case 253: case 255: + case 257: return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors); - case 266: - case 267: case 268: case 269: case 270: case 271: case 272: - return aarch64_ext_sme_za_array (self, info, code, inst, errors); case 273: - return aarch64_ext_sme_addr_ri_u4xvl (self, info, code, inst, errors); case 274: - return aarch64_ext_sme_sm_za (self, info, code, inst, errors); + return aarch64_ext_sme_za_array (self, info, code, inst, errors); case 275: - 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 276: + return aarch64_ext_sme_sm_za (self, info, code, inst, errors); + case 277: + return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors); + case 278: return aarch64_ext_plain_shrimm (self, info, code, inst, errors); - case 298: - case 299: - case 300: - return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); + case 301: + case 302: case 303: - case 304: - case 305: - return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors); + return aarch64_ext_x0_to_x30 (self, info, code, inst, errors); case 306: case 307: case 308: + return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors); case 309: - return aarch64_ext_rcpc3_addr_opt_offset (self, info, code, inst, errors); case 310: + case 311: + case 312: + return aarch64_ext_rcpc3_addr_opt_offset (self, info, code, inst, errors); + case 313: 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 bd1aa4f27c1..30577ffda64 100644 --- a/opcodes/aarch64-opc-2.c +++ b/opcodes/aarch64-opc-2.c @@ -267,10 +267,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"}, @@ -319,6 +321,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"},