From patchwork Mon Jul 8 15:36:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinath Parvathaneni X-Patchwork-Id: 93525 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 134C9384A4B5 for ; Mon, 8 Jul 2024 15:38:19 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on20600.outbound.protection.outlook.com [IPv6:2a01:111:f403:2608::600]) by sourceware.org (Postfix) with ESMTPS id D1F3A3857349 for ; Mon, 8 Jul 2024 15:37:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D1F3A3857349 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 D1F3A3857349 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2608::600 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1720453054; cv=pass; b=ajd0ZOGCYO7NZpQv3uYIFTOcdQ40fre6+yBljNkRorZ2EuERdjqog50FIUVUpI0oAg0wMkkYrgVmDr+QH4wza1+PbeTW2LBOqWknP+dO04unRYokPq1KyDQF4wbeFxkYeXAn638ChmdBQ1KwV8KtAdtHTJbpngBM663AhZPPF4g= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1720453054; c=relaxed/simple; bh=yjp2TQ+W3aHFo2bFcM//pj/CE/iRvk3H0qjlhfpWfJ8=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=uoigAeWNDwFLPiXJ5U3gdBWECKGIVJCxmtrxUFTXaS/A31INX2yhrVXwaJI9AiSkwmfKj14W6IrMa6Quu5S0ADc+d6zm8a/3qnwfAsDEMTZ5U9hkYCyP92r1jd4eMoAlROaR95cRWpaP9iuqMw+Tsx73knbx3shhlJPVQ63p9+I= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=ZiusT/f9rajBBm5We1kF217vypL6SVJVbEfE6ptAzpgzhUGOAsSzijKVCAIl1ZJnMzNbKyMDy16hjNdi/RBfs2i5dy1b7svPUap+mYMAjFtwHgCFCvC6EN+/YfanPq+KZlo/Ot00xtUX7CBmWxhpwm+aTWWw48IVS9i2QgZUHfIag210bnJq1AzOsyL3UtROjOihAiWBWLKVjHcgoVyC6pK6e49X/VVmSbywmbvm1q17nHRlr8XaKu9CmUZATALTkxsy6Kjo4vLZfNIdgwbyBGXKaT6xrqN5e3Ub+j1t1PTB514HVAbfgk3pIZJbubXMoN8+1XYK1oK3hDC230kNPA== 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=tbT07weF2GfhjrBxbiBT40YA1Hl9lprwhtBdmTegKbM=; b=dBjickI+UD8xtP4o7GgkySIgiYHu5MO63Acpa7tcDn98Zcx90qpuSC8Ze0246nhqjzLdTyDzr3264aAqYKnGnBXjv6Ngeo1fMYG/5Q+kXN/8yFAd8PmuC2l0w1eXYA73JmyARLN74Uup+Ks/gIT+paK4c7QYNh9OERXK+y2YXXZqzo+V8HvYtOBC0ufnXN4whhNoUT1GwWn4FezLvnbFDFTizc35scIoyfwLfIObSfwYUmXE1xNWzPN1fTitYe6zh9ATd/efsNOpIZSSSUyoGkLhJM1QdXg1dpmHKbuOBw+OD5vFI2DPdwWb1apX6HVEJFt4WRtnIzVTtjBgvK11Sw== 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=tbT07weF2GfhjrBxbiBT40YA1Hl9lprwhtBdmTegKbM=; b=gLREc5cex2nIpZ+xaL99VwQGNJeRPv9zGUdQ6DTb0mZEYhyCIdvG7ZlSckk18xCBmDC8iPzXOYXkEsdquk1YXQFzTq8Xv7PHUofJ5V0rJ0Z2gKK1XSGL5iPX5ih6iZjiDA9jj6GvTQfpYI2T8dF/IcMtQYkS2Gi5kJcRnS8Ad4M= Received: from DU7P194CA0023.EURP194.PROD.OUTLOOK.COM (2603:10a6:10:553::14) by DU0PR08MB8711.eurprd08.prod.outlook.com (2603:10a6:10:401::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Mon, 8 Jul 2024 15:37:27 +0000 Received: from DB1PEPF00039233.eurprd03.prod.outlook.com (2603:10a6:10:553:cafe::30) by DU7P194CA0023.outlook.office365.com (2603:10a6:10:553::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35 via Frontend Transport; Mon, 8 Jul 2024 15:37:27 +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 DB1PEPF00039233.mail.protection.outlook.com (10.167.8.106) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7762.17 via Frontend Transport; Mon, 8 Jul 2024 15:37:27 +0000 Received: ("Tessian outbound 7c3e8814239e:v359"); Mon, 08 Jul 2024 15:37:27 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 2aa0fb438ab988ff X-CR-MTA-TID: 64aa7808 Received: from 3be149101b31.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E859F6F3-2CEC-4B98-B514-DF83ABF8764E.1; Mon, 08 Jul 2024 15:37:20 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 3be149101b31.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 08 Jul 2024 15:37:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jYFR6GEEhAsaI30cki5KIxMtHQDwlBV4BSjyw/wY0DwXRF6iddDUj1b3PDaSvC6UQTLz5MCt8ymvbV83HjhGQnOJL66JaO0p2dASuncYVRl+iTLcoc5YY4UwSNOeJHXdu/5IyemPLnJCossh2d8JwPu2NgJBJ1+/F6b2pHRqttF+E0zydSBYMhOti3+e0G8w+0j264UP0974FrPW9VTThWWYVL+UzdkCBKFupgUFpIfcKz1LdMlBUFqOADewe4wFmrhZ0wslyeE9b1lgq9EdXCVqewg1HMZz9GIAcZ23DVnbRszZrOCoVHR2M6Jitz0uPYDaWaSmtXGZ+0zZ1+Pf/w== 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=tbT07weF2GfhjrBxbiBT40YA1Hl9lprwhtBdmTegKbM=; b=eroWTZUQOtWJnTrD91oHyif2+7dizZOhXDd0cE7cpZpywk82m73moGDT5TRkH/kJfiFi8xOkH1o1JJ6jX4QP5dI3+trXMOrQ7vvnqDMuu+cZ+L4bbg33+uJIX3ifZs/3wgMd/udC/jXO8l5+ce1YhsCY9Irmx5wycsDoiUnZdKr6dxmiGsWw0xsyctwdWwVkMp0XGDj1oC6OiMTvMfwrnmKTtuMERylAaWOV1Q04TarjXF+FXJysc01g/v0cTdA7n1h/51KCv4Zi09mfm1/UD1l1To/sqEr0d7G7PFuz9h5obrTf49IscpLhTPTlUhXoDZBauPXOhE7eI6LsmOCOKQ== 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=tbT07weF2GfhjrBxbiBT40YA1Hl9lprwhtBdmTegKbM=; b=gLREc5cex2nIpZ+xaL99VwQGNJeRPv9zGUdQ6DTb0mZEYhyCIdvG7ZlSckk18xCBmDC8iPzXOYXkEsdquk1YXQFzTq8Xv7PHUofJ5V0rJ0Z2gKK1XSGL5iPX5ih6iZjiDA9jj6GvTQfpYI2T8dF/IcMtQYkS2Gi5kJcRnS8Ad4M= Received: from DUZPR01CA0127.eurprd01.prod.exchangelabs.com (2603:10a6:10:4bc::13) by DB9PR08MB9778.eurprd08.prod.outlook.com (2603:10a6:10:45d::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Mon, 8 Jul 2024 15:37:17 +0000 Received: from DB5PEPF00014B8C.eurprd02.prod.outlook.com (2603:10a6:10:4bc:cafe::e6) by DUZPR01CA0127.outlook.office365.com (2603:10a6:10:4bc::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35 via Frontend Transport; Mon, 8 Jul 2024 15:37:17 +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 DB5PEPF00014B8C.mail.protection.outlook.com (10.167.8.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Mon, 8 Jul 2024 15:37:17 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) 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; Mon, 8 Jul 2024 15:37:15 +0000 Received: from e120703.cambridge.arm.com (10.2.81.20) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Mon, 8 Jul 2024 15:37:15 +0000 From: Srinath Parvathaneni To: CC: , , Srinath Parvathaneni Subject: [PATCH v1 5/6] aarch64: Add support for sme2.1 zero instructions. Date: Mon, 8 Jul 2024 16:36:44 +0100 Message-ID: <20240708153645.1134208-6-srinath.parvathaneni@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240708153645.1134208-1-srinath.parvathaneni@arm.com> References: <20240708153645.1134208-1-srinath.parvathaneni@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB5PEPF00014B8C:EE_|DB9PR08MB9778:EE_|DB1PEPF00039233:EE_|DU0PR08MB8711:EE_ X-MS-Office365-Filtering-Correlation-Id: 0cda2436-ffd7-45f3-3432-08dc9f63df71 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:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info-Original: dyo83IPeFokKhGc1+e5T2zxicZFAKG2bpK4GLOR7gZafD28OtpUdnYfvt8Kw5jD4Do2Lx1pwEO+0QjNw3wrr3yJDWLjWNQp+OzAitOj58qXxFQ9Nzy7LscquloBQJtgFg/Z2yS48HZ7YGicIDtbjdT666BYyRfAlsN9Xju8+U8pZjsfQEfonunpWIUPI639rdhJwo35zasEltxs4xIxsbhPWYQq6CikpYBpb1pQVp5ZW3prihZyaiVU+ci+LDpWv4mIOJUzwRB9anOjAvNCc0iOZ3iDaaRyjHvE6vdZDHyJ+QWKjJmNLrrj7XwcJ3kcErEr+bs9qurxIWJb71fTMjZZ5aD0qQN4Dzl63Zb+KQM1a+kLqj327WOtOjL5YrR74pRAj86zPUhIC885ubDQvFFf9M1N596zI4Oml8akYmvgqR4bigmqIkvUsVdo9Chetp6C3hZgJ96MK9GyY7iAved4S7CQZKC23HXo8Fjt4Ko6v7qmX9CxuTnec9qW1iNl/58Rhas+Hmv4mrc810koJW0qiDkNg7JPcb6F0riHBBqXlk0K06pIR02CEhXZKomZIus1DK6nOZO1CMJSKalUxJgnFiTuJumkqrjLSmGNPzeG5isWPSbd7LStBFBvi1MsjeFy40oSgeDVhnvReEYT7hqhlAg/W47p9MDjnuAE3nnfRJYI7V2PnxqZBz3QH1XZWrXQd4DANzhOt4C1865Wd62vDa9YtKtfoMy9gHGmHHGjxpIQhmS8gWU9w4SSEoPcv8g3O1CpySSnqCsGQNn5WO2CFxnMUq8EDUPvxNUPUD9QFXUyxdADfBSVH/XyWL0XGJVYPxwO35E6frAcfPSoTW2hW+3i51TvOfchj95/i/PMrwiV4SwkMGcfUx2Kz6G/zw/gwXcDKBBIcNBsn7qJ556ggsJZUKAGr98xaAtrL4ZCMr5fnrpwlv0hT7SefeaWCbjrdUuDFGAR/NPwbQD6pPDf1v92JhwbPQaQ6Q1rmxj8IfgQpLswsB9VbkhvF1xZtE4RiRlsgBm8LojPYpl+sGJCF4BRfDDkto3pxyHc2iJ3Mg8ZOtkvSBN3OVvwYpvvj6qwEBRAeR1Tx5zmjXZEDJIm4jZq/rSsi5RTI6/3/aLfV/JWZtWde+vT6IIae0GkpsOGOh7Nbu/ED4EeklD6kfSGFR2529CysKCcT+yWBO54waPrgSFahZeO/zuf4p9IrnmA3/+k/jlyI5J2SDD1tVhtwWD+/2T2PIbiCqH4Es9gFHGOPLQ3xUpoZnj9/phlM/P/ivkbRCBPE354LJfZM16s3xVofSbG0jxiKc8ztLVqzim7MX0LC6etpD5mY25NOG7gudyuPGbTH04ps8lqNAUZD2dDUPflqLdNUcrtbDb1XiV5BQ83DQ6DnQ+yGHH0kX63YEIIiZU0ytb8zWseabnvlOHW9ljxPMSDnP4/PRBxcoaRSdLUHfyxP6VS7QBFh 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:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9778 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF00039233.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: b401a346-e9f5-4d93-4719-08dc9f63d956 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|35042699022|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?q?kE92kXEvf80ucRiO0acDz7C93gtg2+X?= =?utf-8?q?5RR0o/DXY50KIjiblOj9R9XQsceKLeTRKVRbXmS6mEp4nV9Ku3j8AAfygTLwGJFJO?= =?utf-8?q?iUaBFMj4QUoiHdYIJjsuXh7YX9Ncz04AxGtY0MV2Cwn8ucUZFfggmAbBNTVdDf4wF?= =?utf-8?q?Axqs8Os+PaF+ztN8Cr+rkFDYVJPtfpBP8Msw76YUbHacTXOEEQNDBKtZRipQDZ/Cu?= =?utf-8?q?Y3fZ7AwYZ6enV525fRmVHOvIo71VxdlWOxEEwDQyBKgmf8zDYncdAW4iGQZ2no9bQ?= =?utf-8?q?vlWFB61nY3d/TGyyipmI2D9olebwtB+yuk86Hz0ResHk/5qD9Cum6aVBNbclljCR2?= =?utf-8?q?SpG5lWXOCC8nIm7aarY0RjaaP0MK9AH4CliLwnJNG/iXwYsa9nvoA/zDVcFFSVSAm?= =?utf-8?q?xgpCaamYNGDgQZ28KkbrVpJLOvp8+XUtT+Rn0CEbxQZ4JN2jK9o4v1cJTWk5aI+5d?= =?utf-8?q?OKH1OEio3z4N2vj18Q1M8xuKt4nzC6y8P3R9e0vVd+flmyYQ3N2LSGqAI7y5GSOoj?= =?utf-8?q?vsNu3K4sKuRj2XXFM/heFUxBlx05sCl2gFC8/K1dGvvDYsDki5Qj/O/gHHJkI7cQy?= =?utf-8?q?wCAztJ3sl23ss5f5TTFOght3CNeV/B2mmyuR/1oyKJMfbBd0Nq1R8dsmHZ8Va8LhA?= =?utf-8?q?mkOu49gko7hUa04bVsDoDbMuOo176XXARCogVYktXz+6hzx5nTNETpfbzcme1t55U?= =?utf-8?q?Kqzum9ZkZkkIcEbIeDRQmx5YRVol9GI+RMU1j29DbaJeeMgsR+WliNyLXKXWnyeaE?= =?utf-8?q?ygOey2m7eyk3B/09IW8JyZQEmJ6YaY1SsjrEEigoT9Ly6G3TQ9B2D3FwLutDwOTaC?= =?utf-8?q?6TENRinRefBLqkIs3S93ZNGqzRL1RV57eFIpJffoe+ifeObN8Ynz6YXA/WmQGzTHM?= =?utf-8?q?uAwyWpc6GK38ntqaVakF73JULg6K7TvAOSCbx3gOQR90ik4tBgYfbYG4OpBYb8WCs?= =?utf-8?q?yvwUQC5YOqHQ8u33VelN4xRFJMhfzhSCWR6IUBWi0hWhm1Eg1o8E4vwrt6kJ4Rq7F?= =?utf-8?q?Sczc7kpnDs7s4IN136qGsxQVlV/iWjZXH+700GyI9/SgbAZ89m/IvFIHaDym68qNE?= =?utf-8?q?hB73V9AxtKeVYnBdmVxxW/ojtWnYHxqDo/joaL9XAITNG6FfGRx/BeiJaVfVNSlsL?= =?utf-8?q?eCClTDpj5nTn7GU/y4I0qU8ePx3w/l0X3NrJRLaOTKU/QppSoAFIDb09kjmErbBIP?= =?utf-8?q?V8tmHz0wasELw+Rx8IjHgJ8zIFbsCcRkIPSDnXxYwDD6ZLRBtQ6Kvfz5uY8VHCoKX?= =?utf-8?q?mRDQk3D58l0seqR02ZTM+Y4O2vv78ZKbQFwgNUm2Ekt9oor44EucDopzvQmVYlZul?= =?utf-8?q?xqO6xn0smNZJ8Uj8aVCH1pEhSUwvZxI+J31aijuNl80GS4xdQnSTZcFPJH+abMHDB?= =?utf-8?q?qH2HklwJoaY?= 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:(13230040)(82310400026)(35042699022)(376014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2024 15:37:27.9084 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0cda2436-ffd7-45f3-3432-08dc9f63df71 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF00039233.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8711 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_NONE, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org This patch adds support for following sme2.1 zero instructions and the spec is available here [1]. 1. ZERO (single-vector). 2. ZERO (double-vector). 3. ZERO (quad-vector). The VECTOR GROUP symbols VGx2 and VGx4 are optional for the assembler for most of the sme and sve instructions. But for few of the sme2.1 zero instruction variants VECTOR GROUP symbols VGx2 and VGx4 are mandatory. To address this a bit "F_VG_REQ" is introduced in this patch, on setting F_VG_REQ bit in flags of aarch64_opcode forces the assembler to accept instruction operand only having VECTOR GROUP symbols. [1]: https://developer.arm.com/documentation/ddi0602/2024-03/SME-Instructions?lang=en --- gas/testsuite/gas/aarch64/sme-4-illegal.l | 2 +- gas/testsuite/gas/aarch64/sme2p1-5-bad.d | 4 + gas/testsuite/gas/aarch64/sme2p1-5-bad.l | 103 ++++++++++++++++++++++ gas/testsuite/gas/aarch64/sme2p1-5-bad.s | 54 ++++++++++++ gas/testsuite/gas/aarch64/sme2p1-5.d | 54 ++++++++++++ gas/testsuite/gas/aarch64/sme2p1-5.s | 54 ++++++++++++ include/opcode/aarch64.h | 11 ++- opcodes/aarch64-opc.c | 60 ++++++++----- opcodes/aarch64-tbl.h | 18 ++++ 9 files changed, 336 insertions(+), 24 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/sme2p1-5-bad.d create mode 100644 gas/testsuite/gas/aarch64/sme2p1-5-bad.l create mode 100644 gas/testsuite/gas/aarch64/sme2p1-5-bad.s create mode 100644 gas/testsuite/gas/aarch64/sme2p1-5.d create mode 100644 gas/testsuite/gas/aarch64/sme2p1-5.s diff --git a/gas/testsuite/gas/aarch64/sme-4-illegal.l b/gas/testsuite/gas/aarch64/sme-4-illegal.l index a9e98524067..db52529e3e1 100644 --- a/gas/testsuite/gas/aarch64/sme-4-illegal.l +++ b/gas/testsuite/gas/aarch64/sme-4-illegal.l @@ -1,5 +1,5 @@ [^:]*: Assembler messages: -[^:]*:[0-9]+: Error: expected '{' at operand 1 -- `zero za' +[^:]*:[0-9]+: Error: expected '\[' at operand 1 -- `zero za' [^:]*:[0-9]+: Error: ZA tile number out of range at operand 1 -- `zero {za8\.d}' [^:]*:[0-9]+: Error: ZA tile number out of range at operand 1 -- `zero {za0\.d,za8.d}' [^:]*:[0-9]+: Error: ZA tile number out of range at operand 1 -- `zero {za2\.h}' diff --git a/gas/testsuite/gas/aarch64/sme2p1-5-bad.d b/gas/testsuite/gas/aarch64/sme2p1-5-bad.d new file mode 100644 index 00000000000..86a6834546e --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-5-bad.d @@ -0,0 +1,4 @@ +#name: Negative test of SME2.1 ZERO instructions. +#as: -march=armv9.4-a+sme2p1 +#source: sme2p1-5-bad.s +#error_output: sme2p1-5-bad.l diff --git a/gas/testsuite/gas/aarch64/sme2p1-5-bad.l b/gas/testsuite/gas/aarch64/sme2p1-5-bad.l new file mode 100644 index 00000000000..959864a9809 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-5-bad.l @@ -0,0 +1,103 @@ +.*: Assembler messages: +.*: Error: operand mismatch -- `zero za.s\[w8,0,vgx2\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w8, 0, vgx2\] +.*: Error: operand mismatch -- `zero za.b\[w14,0,vgx2\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w14, 0, vgx2\] +.*: Error: expected a selection register in the range w8-w11 at operand 1 -- `zero za.d\[w2,7,vgx2\]' +.*: Error: immediate offset out of range 0 to 7 at operand 1 -- `zero za.d\[w11,17,vgx2\]' +.*: Error: invalid vector group size at operand 1 -- `zero za.d\[w9,4,vgx3\]' +.*: Error: operand mismatch -- `zero za.h\[w10,3\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w10, 3\] +.*: Error: operand mismatch -- `zero za.s\[w18,0,vgx4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w18, 0, vgx4\] +.*: Error: operand mismatch -- `zero za.b\[w1,0,vgx4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w1, 0, vgx4\] +.*: Error: operand mismatch -- `zero za.q\[w8,17,vgx2\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w8, 17, vgx2\] +.*: Error: invalid vector group size at operand 1 -- `zero za.h\[w11,7,vgx3\]' +.*: Error: expected a constant immediate offset at operand 1 -- `zero za.s\[w9,vg\]' +.*: Error: operand mismatch -- `zero za.b\[w10,3\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w10, 3\] +.*: Error: operand mismatch -- `zero za.s\[w18,0:1\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w18, 0:1\] +.*: Error: operand mismatch -- `zero za.s\[w1,0:1\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w1, 0:1\] +.*: Error: operand mismatch -- `zero za.b\[w8,4:5\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w8, 4:5\] +.*: Error: operand mismatch -- `zero za.b\[w11,1:5\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w11, 1:5\] +.*: Error: operand mismatch -- `zero za.h\[w9,2:13\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w9, 2:13\] +.*: Error: the last offset is less than the first offset at operand 1 -- `zero za.h\[w10,16:7\]' +.*: Error: operand mismatch -- `zero za.s\[w18,0:3,vgx2\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w18, 0:3, vgx2\] +.*: Error: operand mismatch -- `zero za.b\[w1,0:1,vgx4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w1, 0:1, vgx4\] +.*: Error: invalid vector group size at operand 1 -- `zero za.h\[w8,6:7,vg\]' +.*: Error: invalid vector group size at operand 1 -- `zero za.q\[w9,12:13,vgx3\]' +.*: Error: operand mismatch -- `zero za.s\[w18,0:1,vgx4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w18, 0:1, vgx4\] +.*: Error: invalid vector group size at operand 1 -- `zero za.h\[w1,0:1,vgx3\]' +.*: Error: operand mismatch -- `zero za.b\[w8,16:17,vgx4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w8, 16:17, vgx4\] +.*: Error: operand mismatch -- `zero za.q\[w9,12:13\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w9, 12:13\] +.*: Error: invalid vector group size at operand 1 -- `zero za.s\[w18,0:3,\]' +.*: Error: operand mismatch -- `zero za.s\[w1,0:3\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w1, 0:3\] +.*: Error: operand mismatch -- `zero za.b\[w8,8:11\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w8, 8:11\] +.*: Error: the last offset is less than the first offset at operand 1 -- `zero za.b\[w11,18:1,vgx3\]' +.*: Error: operand mismatch -- `zero za.h\[w9,4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w9, 4\] +.*: Error: operand mismatch -- `zero za.h\[w10,10:13\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w10, 10:13\] +.*: Error: operand mismatch -- `zero za.s\[w18,0:3,vgx2\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w18, 0:3, vgx2\] +.*: Error: operand mismatch -- `zero za.s\[w1,0:3,vgx2\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w1, 0:3, vgx2\] +.*: Error: operand mismatch -- `zero za.b\[w8,14:17,vgx2\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w8, 14:17, vgx2\] +.*: Error: invalid vector group size at operand 1 -- `zero za.b\[w11,4:7,vg\]' +.*: Error: operand mismatch -- `zero za.h\[w9,0:3\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w9, 0:3\] +.*: Error: expected a constant immediate offset at operand 1 -- `zero za.q\[w10,vgx2\]' +.*: Error: operand mismatch -- `zero za.s\[w18,0:3,vgx4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w18, 0:3, vgx4\] +.*: Error: operand mismatch -- `zero za.s\[w1,0:3,vgx4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w1, 0:3, vgx4\] +.*: Error: operand mismatch -- `zero za.b\[w8,14:17,vgx4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w8, 14:17, vgx4\] +.*: Error: invalid vector group size at operand 1 -- `zero za.b\[w11,4:7,vg\]' +.*: Error: invalid vector group size at operand 1 -- `zero za.h\[w9,0:3,vgx3\]' +.*: Error: operand mismatch -- `zero za.q\[w10,4\]' +.*: Info: did you mean this\? +.*: Info: zero za.d\[w10, 4\] diff --git a/gas/testsuite/gas/aarch64/sme2p1-5-bad.s b/gas/testsuite/gas/aarch64/sme2p1-5-bad.s new file mode 100644 index 00000000000..5b69634e5b2 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-5-bad.s @@ -0,0 +1,54 @@ +/* ZERO (single-vector). */ +zero za.s[w8, 0, vgx2] +zero za.b[w14, 0, vgx2] +zero za.d[w2, 7, vgx2] +zero za.d[w11, 17, vgx2] +zero za.d[w9, 4, vgx3] +zero za.h[w10, 3] + +zero za.s[w18, 0, vgx4] +zero za.b[w1, 0, vgx4] +zero za.q[w8, 17, vgx2] +zero za.h[w11, 7, vgx3] +zero za.s[w9, vg] +zero za.b[w10, 3] + +/* ZERO (double-vector). */ +zero za.s[w18, 0:1] +zero za.s[w1, 0:1] +zero za.b[w8, 4:5] +zero za.b[w11, 1:5] +zero za.h[w9, 2:13] +zero za.h[w10, 16:7] + +zero za.s[w18, 0:3, vgx2] +zero za.b[w1, 0:1, vgx4] +zero za.h[w8, 6:7, vg] +zero za.q[w9, 12:13, vgx3] + +zero za.s[w18, 0:1, vgx4] +zero za.h[w1, 0:1, vgx3] +zero za.b[w8, 16:17, vgx4] +zero za.q[w9, 12:13] + +/* ZERO (quad-vector). */ +zero za.s[w18, 0:3,] +zero za.s[w1, 0:3] +zero za.b[w8, 8:11] +zero za.b[w11, 18:1, vgx3] +zero za.h[w9, 4] +zero za.h[w10, 10:13] + +zero za.s[w18, 0:3, vgx2] +zero za.s[w1, 0:3, vgx2] +zero za.b[w8, 14:17, vgx2] +zero za.b[w11, 4:7, vg] +zero za.h[w9, 0:3] +zero za.q[w10, vgx2] + +zero za.s[w18, 0:3, vgx4] +zero za.s[w1, 0:3, vgx4] +zero za.b[w8, 14:17, vgx4] +zero za.b[w11, 4:7, vg] +zero za.h[w9, 0:3, vgx3] +zero za.q[w10, 4] diff --git a/gas/testsuite/gas/aarch64/sme2p1-5.d b/gas/testsuite/gas/aarch64/sme2p1-5.d new file mode 100644 index 00000000000..f63a171d461 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-5.d @@ -0,0 +1,54 @@ +#name: Test of SME2.1 ZERO instructions. +#as: -march=armv9.4-a+sme2p1 +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +.*: c00c0000 zero za.d\[w8, 0, vgx2\] +.*: c00c6000 zero za.d\[w11, 0, vgx2\] +.*: c00c0007 zero za.d\[w8, 7, vgx2\] +.*: c00c6007 zero za.d\[w11, 7, vgx2\] +.*: c00c2004 zero za.d\[w9, 4, vgx2\] +.*: c00c4003 zero za.d\[w10, 3, vgx2\] +.*: c00e0000 zero za.d\[w8, 0, vgx4\] +.*: c00e6000 zero za.d\[w11, 0, vgx4\] +.*: c00e0007 zero za.d\[w8, 7, vgx4\] +.*: c00e6007 zero za.d\[w11, 7, vgx4\] +.*: c00e2004 zero za.d\[w9, 4, vgx4\] +.*: c00e4003 zero za.d\[w10, 3, vgx4\] +.*: c00c8000 zero za.d\[w8, 0:1\] +.*: c00ce000 zero za.d\[w11, 0:1\] +.*: c00c8007 zero za.d\[w8, 14:15\] +.*: c00ce007 zero za.d\[w11, 14:15\] +.*: c00ca001 zero za.d\[w9, 2:3\] +.*: c00cc003 zero za.d\[w10, 6:7\] +.*: c00d0000 zero za.d\[w8, 0:1, vgx2\] +.*: c00d6000 zero za.d\[w11, 0:1, vgx2\] +.*: c00d0003 zero za.d\[w8, 6:7, vgx2\] +.*: c00d2001 zero za.d\[w9, 2:3, vgx2\] +.*: c00d8000 zero za.d\[w8, 0:1, vgx4\] +.*: c00de000 zero za.d\[w11, 0:1, vgx4\] +.*: c00d8003 zero za.d\[w8, 6:7, vgx4\] +.*: c00da001 zero za.d\[w9, 2:3, vgx4\] +.*: c00e8000 zero za.d\[w8, 0:3\] +.*: c00ee000 zero za.d\[w11, 0:3\] +.*: c00e8002 zero za.d\[w8, 8:11\] +.*: c00ee002 zero za.d\[w11, 8:11\] +.*: c00ea001 zero za.d\[w9, 4:7\] +.*: c00ec000 zero za.d\[w10, 0:3\] +.*: c00f0000 zero za.d\[w8, 0:3, vgx2\] +.*: c00f6000 zero za.d\[w11, 0:3, vgx2\] +.*: c00f0001 zero za.d\[w8, 4:7, vgx2\] +.*: c00f6001 zero za.d\[w11, 4:7, vgx2\] +.*: c00f2000 zero za.d\[w9, 0:3, vgx2\] +.*: c00f4001 zero za.d\[w10, 4:7, vgx2\] +.*: c00f8000 zero za.d\[w8, 0:3, vgx4\] +.*: c00fe000 zero za.d\[w11, 0:3, vgx4\] +.*: c00f8001 zero za.d\[w8, 4:7, vgx4\] +.*: c00fe001 zero za.d\[w11, 4:7, vgx4\] +.*: c00fa000 zero za.d\[w9, 0:3, vgx4\] +.*: c00fc001 zero za.d\[w10, 4:7, vgx4\] diff --git a/gas/testsuite/gas/aarch64/sme2p1-5.s b/gas/testsuite/gas/aarch64/sme2p1-5.s new file mode 100644 index 00000000000..bd25682d2ef --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-5.s @@ -0,0 +1,54 @@ +/* ZERO (single-vector). */ +zero za.d[w8, 0, vgx2] +zero za.d[w11, 0, vgx2] +zero za.d[w8, 7, vgx2] +zero za.d[w11, 7, vgx2] +zero za.d[w9, 4, vgx2] +zero za.d[w10, 3, vgx2] + +zero za.d[w8, 0, vgx4] +zero za.d[w11, 0, vgx4] +zero za.d[w8, 7, vgx4] +zero za.d[w11, 7, vgx4] +zero za.d[w9, 4, vgx4] +zero za.d[w10, 3, vgx4] + +/* ZERO (double-vector). */ +zero za.d[w8, 0:1] +zero za.d[w11, 0:1] +zero za.d[w8, 14:15] +zero za.d[w11, 14:15] +zero za.d[w9, 2:3] +zero za.d[w10, 6:7] + +zero za.d[w8, 0:1, vgx2] +zero za.d[w11, 0:1, vgx2] +zero za.d[w8, 6:7, vgx2] +zero za.d[w9, 2:3, vgx2] + +zero za.d[w8, 0:1, vgx4] +zero za.d[w11, 0:1, vgx4] +zero za.d[w8, 6:7, vgx4] +zero za.d[w9, 2:3, vgx4] + +/* ZERO (quad-vector). */ +zero za.d[w8, 0:3] +zero za.d[w11, 0:3] +zero za.d[w8, 8:11] +zero za.d[w11, 8:11] +zero za.d[w9, 4:7] +zero za.d[w10, 0:3] + +zero za.d[w8, 0:3, vgx2] +zero za.d[w11, 0:3, vgx2] +zero za.d[w8, 4:7, vgx2] +zero za.d[w11, 4:7, vgx2] +zero za.d[w9, 0:3, vgx2] +zero za.d[w10, 4:7, vgx2] + +zero za.d[w8, 0:3, vgx4] +zero za.d[w11, 0:3, vgx4] +zero za.d[w8, 4:7, vgx4] +zero za.d[w11, 4:7, vgx4] +zero za.d[w9, 0:3, vgx4] +zero za.d[w10, 4:7, vgx4] diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 5a2b99d2bc5..1b01931b0cb 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -1387,7 +1387,10 @@ extern const aarch64_opcode aarch64_opcode_table[]; #define F_OPD_SIZE (1ULL << 34) /* RCPC3 instruction has the field of 'size'. */ #define F_RCPC3_SIZE (1ULL << 35) -/* Next bit is 36. */ +/* This instruction need VGx2 or VGx4 mandatorily in the operand passed to + assembler. */ +#define F_VG_REQ (1ULL << 36) +/* Next bit is 37. */ /* Instruction constraints. */ /* This instruction has a predication constraint on the instruction at PC+4. */ @@ -1450,6 +1453,12 @@ get_opcode_dependent_value (const aarch64_opcode *opcode) return (opcode->flags >> 24) & 0x7; } +static inline bool +get_opcode_dependent_vg_status (const aarch64_opcode *opcode) +{ + return (opcode->flags >> 36) & 0x1; +} + static inline bool opcode_has_special_coder (const aarch64_opcode *opcode) { diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index f65f83a0126..b71d354d4c0 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -1629,13 +1629,14 @@ check_reglist (const aarch64_opnd_info *opnd, - an initial immediate offset that is a multiple of RANGE_SIZE in the range [0, MAX_VALUE * RANGE_SIZE] - - a vector group size of GROUP_SIZE. */ + - a vector group size of GROUP_SIZE. + - STATUS_VG for cases where VGx2 or VGx4 is mandatory. */ static bool check_za_access (const aarch64_opnd_info *opnd, aarch64_operand_error *mismatch_detail, int idx, int min_wreg, int max_value, unsigned int range_size, - int group_size) + int group_size, bool status_vg) { if (!value_in_range_p (opnd->indexed_za.index.regno, min_wreg, min_wreg + 3)) { @@ -1687,8 +1688,8 @@ check_za_access (const aarch64_opnd_info *opnd, } /* The vector group specifier is optional in assembly code. */ - if (opnd->indexed_za.group_size != 0 - && opnd->indexed_za.group_size != group_size) + if (opnd->indexed_za.group_size != group_size + && (status_vg || opnd->indexed_za.group_size != 0 )) { set_invalid_vg_size (mismatch_detail, idx, group_size); return false; @@ -1923,7 +1924,7 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, size = aarch64_get_qualifier_esize (opnd->qualifier); max_value = 16 / size - 1; if (!check_za_access (opnd, mismatch_detail, idx, - 12, max_value, 1, 0)) + 12, max_value, 1, 0, get_opcode_dependent_value (opcode))) return 0; break; @@ -1993,93 +1994,108 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, size = aarch64_get_qualifier_esize (opnd->qualifier); max_value = 16 / size - 1; if (!check_za_access (opnd, mismatch_detail, idx, 12, max_value, 1, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_off4: if (!check_za_access (opnd, mismatch_detail, idx, 12, 15, 1, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_off3_0: case AARCH64_OPND_SME_ZA_array_off3_5: if (!check_za_access (opnd, mismatch_detail, idx, 8, 7, 1, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_off1x4: if (!check_za_access (opnd, mismatch_detail, idx, 8, 1, 4, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_off2x2: if (!check_za_access (opnd, mismatch_detail, idx, 8, 3, 2, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_off2x4: if (!check_za_access (opnd, mismatch_detail, idx, 8, 3, 4, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_off3x2: if (!check_za_access (opnd, mismatch_detail, idx, 8, 7, 2, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_vrsb_1: if (!check_za_access (opnd, mismatch_detail, idx, 12, 7, 2, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_vrsh_1: if (!check_za_access (opnd, mismatch_detail, idx, 12, 3, 2, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_vrss_1: if (!check_za_access (opnd, mismatch_detail, idx, 12, 1, 2, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_vrsd_1: if (!check_za_access (opnd, mismatch_detail, idx, 12, 0, 2, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_vrsb_2: if (!check_za_access (opnd, mismatch_detail, idx, 12, 3, 4, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_vrsh_2: if (!check_za_access (opnd, mismatch_detail, idx, 12, 1, 4, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_ARRAY4: if (!check_za_access (opnd, mismatch_detail, idx, 12, 15, 1, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; case AARCH64_OPND_SME_ZA_array_vrss_2: case AARCH64_OPND_SME_ZA_array_vrsd_2: if (!check_za_access (opnd, mismatch_detail, idx, 12, 0, 4, - get_opcode_dependent_value (opcode))) + get_opcode_dependent_value (opcode), + get_opcode_dependent_vg_status (opcode))) return 0; break; @@ -2090,8 +2106,8 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, max_value = 16 / num / size; if (max_value > 0) max_value -= 1; - if (!check_za_access (opnd, mismatch_detail, idx, - 12, max_value, num, 0)) + if (!check_za_access (opnd, mismatch_detail, idx, 12, max_value, num, + 0, get_opcode_dependent_value (opcode))) return 0; break; diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 38be471965c..d49ad3683b5 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1606,6 +1606,10 @@ { \ QLF3(S_B,P_Z,NIL), \ } +#define OP_SVE_D \ +{ \ + QLF1(S_D), \ +} #define OP_SVE_DD \ { \ QLF2(S_D,S_D), \ @@ -6668,6 +6672,20 @@ const struct aarch64_opcode aarch64_opcode_table[] = SME2p1_INSN ("movaz", 0xc0c20200, 0xffff1e00, sme2_movaz, 0, OP2 (SVE_Zd, SME_ZA_ARRAY4), OP_SVE_DD, 0, 0), SME2p1_INSN ("movaz", 0xc0c30200, 0xffff1e00, sme2_movaz, 0, OP2 (SVE_Zd, SME_ZA_ARRAY4), OP_SVE_QQ, 0, 0), + /* ZERO (single-vector). */ + SME2p1_INSN ("zero", 0xc00c0000, 0xffff9ff8, sme2_movaz, 0, OP1 (SME_ZA_array_off3_0), OP_SVE_D, F_OD (2) | F_VG_REQ, 0), + SME2p1_INSN ("zero", 0xc00e0000, 0xffff9ff8, sme2_movaz, 0, OP1 (SME_ZA_array_off3_0), OP_SVE_D, F_OD (4) | F_VG_REQ, 0), + + /* ZERO (double-vector). */ + SME2p1_INSN ("zero", 0xc00c8000, 0xffff9ff8, sme2_movaz, 0, OP1 (SME_ZA_array_off3x2), OP_SVE_D, 0, 0), + SME2p1_INSN ("zero", 0xc00d0000, 0xffff9ffc, sme2_movaz, 0, OP1 (SME_ZA_array_off2x2), OP_SVE_D, F_OD (2) | F_VG_REQ, 0), + SME2p1_INSN ("zero", 0xc00d8000, 0xffff9ffc, sme2_movaz, 0, OP1 (SME_ZA_array_off2x2), OP_SVE_D, F_OD (4) | F_VG_REQ, 0), + + /* ZERO (quad-vector). */ + SME2p1_INSN ("zero", 0xc00e8000, 0xffff9ffc, sme2_movaz, 0, OP1 (SME_ZA_array_off2x4), OP_SVE_D, 0, 0), + SME2p1_INSN ("zero", 0xc00f0000, 0xffff9ffe, sme2_movaz, 0, OP1 (SME_ZA_array_off1x4), OP_SVE_D, F_OD (2) | F_VG_REQ, 0), + SME2p1_INSN ("zero", 0xc00f8000, 0xffff9ffe, sme2_movaz, 0, OP1 (SME_ZA_array_off1x4), OP_SVE_D, F_OD (4) | F_VG_REQ, 0), + /* SVE2p1 Instructions. */ SVE2p1_INSN("addqv",0x04052000, 0xff3fe000, sve2_urqvs, 0, OP3 (Vd, SVE_Pg3, SVE_Zn), OP_SVE_vUS_BHSD_BHSD, F_OPD_SIZE, 0), SVE2p1_INSN("andqv",0x041e2000, 0xff3fe000, sve2_urqvs, 0, OP3 (Vd, SVE_Pg3, SVE_Zn), OP_SVE_vUS_BHSD_BHSD, F_OPD_SIZE, 0),