From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2058.outbound.protection.outlook.com [40.107.13.58]) by sourceware.org (Postfix) with ESMTPS id 2B930384640C for ; Wed, 10 Apr 2024 15:30:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2B930384640C 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 2B930384640C Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.13.58 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1712763015; cv=pass; b=p4VTKgcfoOVjt3jTFBdohtBJtgQ2tVqKCz4Rwx6+3KmQ3GyT7+kAbj2K3wMOtGAZkuU215LdpJ+4F+ZfT5S0b6Fkc3oUJZLTE3t8nhoBlL5eSVzCBhptfYoRDS4p+VinNXoLb3eE/bHw9KxPRU4uWXY176KCXfPWLhUeP4ao2as= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1712763015; c=relaxed/simple; bh=cy/uLhMTKEgy6pJgf5nbpsNF0sYDMzAtNN3RyG+vfWo=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=I+YGSwxgpuaQU5t6rgT2XbGKwVQETaTxLacfWU8jswalpD0xO77oI24kLHu73gfxaPYuAe+8v/cEY4RDdxMVSfCW7MxcTm8aALhkqIF34iJNquCsM/HOHDE4rvOs1nvWpC959Lb5kxUB/TFYNppB8n4MSwtxX/3IC5Lmrz3n5GE= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=HrA5l02ZZY6TtBQ62Hrtmo8yreLxe8TQ/35i8ILxDTihSHXj0qewFQ6Vw2OY/RFkoNA1cK1HEhHJddSfAg9mAW9bdJgFNFgvO8nRe23AJ+lvTxX5CTMfKQyZ47gXVqGCL5HIBRax0xwyWSQjlK0aU7duiDi1WOHOaH4ywbjr4jqzcNs8oEOi0ww5DX4IT4qEwg8BUAEKe6Ykf3XbiGFlkgObJNDi1pE8YOwUYOLnQpDpwFPcvrjONfvMRpvqaEYZtR1JaNUOip6ZLVnjaSY3Hk6TKvpQztePh5rEWbOeOj5GN3K/wqm4Ak1tdTi88dOQUgPE8PwAW0Os2zMng75rTA== 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=8fy5olKwWfFP1Sm+/+vGF9rUJJuipinHrYeHeap/Fw0=; b=AeGbrQw+KWxFlajmFmlAByb3Y2USQBuTViI5Eqsap2bpjOyAKBlzpstmgDrMd7n35FkBd93L64WeH4LwM4K1uxAdr3M3RlsTOPvTqAo02OkwkjjBe+1vOrKnsmQs7XV9XhPV3vXzcmL+HIuiCWU6q42SJrUa9UaXFsLWhX6USnVbFdXU+USdBHCv8rfro+EBytbaMQhycOsFCTzvjmdV7qVltp8BUngAawakxrTwHZlhJssqAoq9R9BdxNL/b791s8OMmO+Rq6EtMflfPWqKNSNAWT99ysGB8pSyrHeKBFAnn3Soa0BecE6r9UNHU59wzz0aGKBtc73UQiEGot+x4w== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8fy5olKwWfFP1Sm+/+vGF9rUJJuipinHrYeHeap/Fw0=; b=cUphKPbwbXbXcA4NE5srnAXq5KRdy10UWJKISSkxEu22CQC4QaP1Wm2rSFss1FNetjx1yv9L4SM0RUQ/mDEcZi4lFqH5Xg/L1ku16kq8qYa+JDcT/SiBdsb465TFwF0v18Fxht8GpPaQZ3ATZU8EPn6F+0XIRukApbtdqkSk+y0= Received: from DUZPR01CA0143.eurprd01.prod.exchangelabs.com (2603:10a6:10:4bd::8) by AM9PR08MB5889.eurprd08.prod.outlook.com (2603:10a6:20b:2d5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Wed, 10 Apr 2024 15:30:06 +0000 Received: from DU6PEPF0000A7DD.eurprd02.prod.outlook.com (2603:10a6:10:4bd:cafe::36) by DUZPR01CA0143.outlook.office365.com (2603:10a6:10:4bd::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7452.28 via Frontend Transport; Wed, 10 Apr 2024 15:30:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DU6PEPF0000A7DD.mail.protection.outlook.com (10.167.8.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7452.22 via Frontend Transport; Wed, 10 Apr 2024 15:30:06 +0000 Received: ("Tessian outbound 9d16f63426bd:v300"); Wed, 10 Apr 2024 15:30:06 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: b3efa0627becf7f9 X-CR-MTA-TID: 64aa7808 Received: from cabbcf07449e.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4BAC7916-38BE-4CB8-AC2C-E9CBD4D48EC2.1; Wed, 10 Apr 2024 15:30:00 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id cabbcf07449e.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 10 Apr 2024 15:30:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O7FV5MhXkjUa3/VhQYtw94nj8m6BI+Oog6uv7XT3UtOYUchAXJWskz+1/+KB2BYGPcypMriEamIO02B35PrcgAyeFvnl6XPRp0uyQ4VMr+L3d6K192N0DlzjL7xeN+VVSOt2Kpnu3/5gcVo3exxBEC0p12KvZf1KLEJgvJ+azVeizxw6LE0FYqRSY2+xwdFLgggOeFtcRe3y2HlQRoKfUyp4YuPt72exkE1Ops2wGYRONtfmi5WSUaXHAbV3v3fLl/ppgA19y5QxEOogLG/PiUsERQMHCldxSYNKTC23fvB24i1sNV4P0G+rota3NqJ3S6VkrX1nt+vm8Jiz95GPbA== 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=8fy5olKwWfFP1Sm+/+vGF9rUJJuipinHrYeHeap/Fw0=; b=lha3WXobAFHN3rHpUX/AuD4jN1oB8Wg423R8Hll1T6zrQQ869o/A9GMqo4WxUvxQ7LVMd2sHXm1mwf11In/muO7xeaas8dRQ4H6ErLki/05pcmbJujTA6quy6XFCZi2ClGTbSOOQbO1E1M4TQxH2OXyKbF229USkoyOiSRmkMusZsW4VK1cIEq8xw9vcnkVG2az2Fdw+IuG5bqnS2f73s/SEUi+96cczQhf7A2j5SXiuZicJBK9qCcFXKD2c90Jr7vj4aPVtnnpKvINwSI3SsHl6qhHBsER3DZi9h2gR9RsJSaNnYvM3xZzbXsdozF+VChNzqfcRBraN/0P1MWjIHg== 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=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8fy5olKwWfFP1Sm+/+vGF9rUJJuipinHrYeHeap/Fw0=; b=cUphKPbwbXbXcA4NE5srnAXq5KRdy10UWJKISSkxEu22CQC4QaP1Wm2rSFss1FNetjx1yv9L4SM0RUQ/mDEcZi4lFqH5Xg/L1ku16kq8qYa+JDcT/SiBdsb465TFwF0v18Fxht8GpPaQZ3ATZU8EPn6F+0XIRukApbtdqkSk+y0= Received: from DB8P191CA0007.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:130::17) by AM7PR08MB5334.eurprd08.prod.outlook.com (2603:10a6:20b:10b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.55; Wed, 10 Apr 2024 15:29:55 +0000 Received: from DB1PEPF00039233.eurprd03.prod.outlook.com (2603:10a6:10:130:cafe::3e) by DB8P191CA0007.outlook.office365.com (2603:10a6:10:130::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7452.35 via Frontend Transport; Wed, 10 Apr 2024 15:29:55 +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 DB1PEPF00039233.mail.protection.outlook.com (10.167.8.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7452.22 via Frontend Transport; Wed, 10 Apr 2024 15:29:55 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 10 Apr 2024 15:29:54 +0000 Received: from e133397.arm.com (10.57.17.17) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Wed, 10 Apr 2024 15:29:54 +0000 From: Victor Do Nascimento To: CC: , , Victor Do Nascimento Subject: [PATCH 3/4] aarch64: fp8 convert and scale - add sve2 insn variants Date: Wed, 10 Apr 2024 16:29:49 +0100 Message-ID: <20240410152950.1134020-4-victor.donascimento@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240410152950.1134020-1-victor.donascimento@arm.com> References: <20240410152950.1134020-1-victor.donascimento@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB1PEPF00039233:EE_|AM7PR08MB5334:EE_|DU6PEPF0000A7DD:EE_|AM9PR08MB5889:EE_ X-MS-Office365-Filtering-Correlation-Id: fc2d685e-e6bc-4dd0-6289-08dc59731966 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: E7HocLmj3SBkFuwTnQensiKU0vQL/IM+354IjLp+wVUPjJEf4wlDGGC7176dai0Qjss6jNGoVnH4Il6VZ9v1EJU0NHrSWmfLbAFlzJ5BOCA+IpBEat7ktW1LX1kvc/WjZhyvqGekygp+NLpOd1PSUt3TlBiK64AUW5DY2AZlB+6BffIwzkiKAwqql2gN0g6GEBEC2xqg9w+Vjf1jsA30c16Ar+TpBHXRqW1T+OQj5JR83Zze/0UKn4XCSynSQbavcMJ1prj1gnbEjrST3LADx1zpWX0RETOaqxTN1n+67zdqqiSonWvc/U7J83KOx/cPLgKvCRH+XjlXosWvVTDVxX/N5Ad+zXfESJnvw9a/jESBf7qBp9spad6SeFoRD82mOcQs/JdP0E+Uz21A9ss2aXAnKXYEftzyzQK13n5TMKM3v4hnyej04wIX1DxsGjFfheCYiHwQGkZSXl+kXORzQCKRwhijEe8zGGvoKS/IaHa/nrh1wMWx43jAqK4E9OI1ZCBv9gTX/jBX7gfV4HS+NKiXuwADEn9KsotjKF3oeJvmhLgCxEv65JIOwnYWWBbLKaBvtE4jKarbuzdTR2nwJ2o9+NAKU5jFzOHpb9s/eYeHtHV224OgzFD8Gddi+iMtdc4gOQSRvOVjPsXE3bmqXPvdwSuOuSEKfHVJAcNoBtZcfDx680FHGVcTJO9mpKVT7du4PW+HlCoht9QOIpcXiIMy2357MeL5IJMzUyfc94EzzwjX2wcElQRR2fXGvS3k 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)(1800799015)(36860700004)(82310400014);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5334 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000A7DD.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 293e0dd2-2e44-4e6c-90ab-08dc597312c6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bDg3UVJrYn5cxRJlUPjO3WVGxWRGSrQgnMRe12NUMb5kOeE+4X7rlndKxTr7ooX/7bJcFrJiweb8RxSpHr8SaRS5FZ5tCOvR+b1T0jlBq+QHUfN1nj2LOnONXSr7G/ut9gw4zNR+amhMghROPL4ynr4QSD6GRQY7GRprdEsae4FaznsyefpFl7KoNVHuV3EfU/zsMRH9Uv7P79/W0juhqvWIfPlLOy78XU1FZnlCpXUz/zaw9WqnPl6QAx2QW6KRBGsT/rU6dABG/eZFATc9TwuU6mJK8w6CNEDrFms9DT1T5eKFoKRJzB6tR7oVTRQFl4f25YctFFmoQX9btpJ45AVB1htqNR3rzWKk7w19J9KQV6epkxIv5oHdFGHqjFQs0HpoREOesEUpowy/ZsKthWe6ZVCEsyuvqGCUBaj42Szz43pVeh1ouRO35l51U3y6AvNuJUgo56hx/tvpGIM7J0Y/DD7hic7XtXtOuiaCccBrC+c0gA3sFUwDBk9EgSDslbaLR2kYWjO3gvOGZ6Y1L2c9J4Obbr4i8UCf4b8IG1tScJX/5k38kxG3qtwRW5CqXU90nEHiCoEf5g4FiqrH4GEeEGxDT+yyBGcW/obZQCKm9AOVlGNZQI6HmFHR8U+2IJjQoJfbsN4Gi7gQUbnba22H3LQYAmK4TSB9+gy0KDgCBW2YR9autAvc88fQPCHbJrcM8SLbu1G4N7cOfdRIn7SBd+qE3DuDcYCrDEG5Lk1+QlBxt+bJPk+eeKepc9Mo 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)(82310400014)(376005)(36860700004)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2024 15:30:06.2019 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fc2d685e-e6bc-4dd0-6289-08dc59731966 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: DU6PEPF0000A7DD.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB5889 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_DMARC_NONE,KAM_LOTSOFHASH,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Victor Do Nascimento Add the SVE2 variant of the FP8 convert and scale instructions, enabled at assembly-time using the `+sve2+fp8' architectural extension flag. More specifically, support is added for the following instructions: FP8 convert to BFloat16 (bottom/top): ------------------------------------- - bf1cvt Z.H, Z.B - bf2cvt Z.H, Z.B - bf1cvtlt Z.H, Z.B - bf2cvtlt Z.H, Z.B FP8 convert to half-precision (bottom/top): ------------------------------------------- - f1cvt Z.H, Z.B - f2cvt Z.H, Z.B - f1cvtlt Z.H, Z.B - f2cvtlt Z.H, Z.B BFloat16/half-precision convert, narrow and interleave to FP8: ------------------------------------------- - bfcvtn Z.B, { Z1.H - Z2.H } - fcvtn Z.B, { Z1.H - Z2.H } Single-precision convert, narrow and interleave to FP8 (bottom/top): ----------------------------------------------- - fcvtnb Z.B, { Z1.S - Z2.S } - fcvtnt Z.B, { Z1.S - Z2.S } --- .../gas/aarch64/sme2-fp8-streaming.d | 4 + gas/testsuite/gas/aarch64/sve2-fp8-dump | 53 +++++ gas/testsuite/gas/aarch64/sve2-fp8-fail.d | 2 + gas/testsuite/gas/aarch64/sve2-fp8-fail.l | 161 +++++++++++++++ gas/testsuite/gas/aarch64/sve2-fp8-fail.s | 42 ++++ gas/testsuite/gas/aarch64/sve2-fp8.d | 3 + gas/testsuite/gas/aarch64/sve2-fp8.s | 48 +++++ opcodes/aarch64-dis-2.c | 194 +++++++++++++++--- opcodes/aarch64-tbl.h | 20 ++ 9 files changed, 496 insertions(+), 31 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/sme2-fp8-streaming.d create mode 100644 gas/testsuite/gas/aarch64/sve2-fp8-dump create mode 100644 gas/testsuite/gas/aarch64/sve2-fp8-fail.d create mode 100644 gas/testsuite/gas/aarch64/sve2-fp8-fail.l create mode 100644 gas/testsuite/gas/aarch64/sve2-fp8-fail.s create mode 100644 gas/testsuite/gas/aarch64/sve2-fp8.d create mode 100644 gas/testsuite/gas/aarch64/sve2-fp8.s diff --git a/gas/testsuite/gas/aarch64/sme2-fp8-streaming.d b/gas/testsuite/gas/aarch64/sme2-fp8-streaming.d new file mode 100644 index 00000000000..16ed6b88bcd --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-fp8-streaming.d @@ -0,0 +1,4 @@ +#as: -march=armv8.5-a+fp8+sme2 +#objdump: -dr +#source: sve2-fp8.s +#dump: sve2-fp8-dump diff --git a/gas/testsuite/gas/aarch64/sve2-fp8-dump b/gas/testsuite/gas/aarch64/sve2-fp8-dump new file mode 100644 index 00000000000..570ff9c4da4 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2-fp8-dump @@ -0,0 +1,53 @@ +.*: file format .* + +Disassembly of section \.text: + +0+ <.*>: +[ ]*[0-9a-f]+: 65083800 bf1cvt z0.h, z0.b +[ ]*[0-9a-f]+: 65083801 bf1cvt z1.h, z0.b +[ ]*[0-9a-f]+: 65083820 bf1cvt z0.h, z1.b +[ ]*[0-9a-f]+: 65083bfe bf1cvt z30.h, z31.b +[ ]*[0-9a-f]+: 65083c00 bf2cvt z0.h, z0.b +[ ]*[0-9a-f]+: 65083c01 bf2cvt z1.h, z0.b +[ ]*[0-9a-f]+: 65083c20 bf2cvt z0.h, z1.b +[ ]*[0-9a-f]+: 65083ffe bf2cvt z30.h, z31.b +[ ]*[0-9a-f]+: 65093800 bf1cvtlt z0.h, z0.b +[ ]*[0-9a-f]+: 65093801 bf1cvtlt z1.h, z0.b +[ ]*[0-9a-f]+: 65093820 bf1cvtlt z0.h, z1.b +[ ]*[0-9a-f]+: 65093bfe bf1cvtlt z30.h, z31.b +[ ]*[0-9a-f]+: 65093c00 bf2cvtlt z0.h, z0.b +[ ]*[0-9a-f]+: 65093c01 bf2cvtlt z1.h, z0.b +[ ]*[0-9a-f]+: 65093c20 bf2cvtlt z0.h, z1.b +[ ]*[0-9a-f]+: 65093ffe bf2cvtlt z30.h, z31.b +[ ]*[0-9a-f]+: 65083000 f1cvt z0.h, z0.b +[ ]*[0-9a-f]+: 65083001 f1cvt z1.h, z0.b +[ ]*[0-9a-f]+: 65083020 f1cvt z0.h, z1.b +[ ]*[0-9a-f]+: 650833fe f1cvt z30.h, z31.b +[ ]*[0-9a-f]+: 65083400 f2cvt z0.h, z0.b +[ ]*[0-9a-f]+: 65083401 f2cvt z1.h, z0.b +[ ]*[0-9a-f]+: 65083420 f2cvt z0.h, z1.b +[ ]*[0-9a-f]+: 650837fe f2cvt z30.h, z31.b +[ ]*[0-9a-f]+: 65093000 f1cvtlt z0.h, z0.b +[ ]*[0-9a-f]+: 65093001 f1cvtlt z1.h, z0.b +[ ]*[0-9a-f]+: 65093020 f1cvtlt z0.h, z1.b +[ ]*[0-9a-f]+: 650933fe f1cvtlt z30.h, z31.b +[ ]*[0-9a-f]+: 65093400 f2cvtlt z0.h, z0.b +[ ]*[0-9a-f]+: 65093401 f2cvtlt z1.h, z0.b +[ ]*[0-9a-f]+: 65093420 f2cvtlt z0.h, z1.b +[ ]*[0-9a-f]+: 650937fe f2cvtlt z30.h, z31.b +[ ]*[0-9a-f]+: 650a3800 bfcvtn z0.b, {z0.h-z1.h} +[ ]*[0-9a-f]+: 650a3801 bfcvtn z1.b, {z0.h-z1.h} +[ ]*[0-9a-f]+: 650a3840 bfcvtn z0.b, {z2.h-z3.h} +[ ]*[0-9a-f]+: 650a3bdd bfcvtn z29.b, {z30.h-z31.h} +[ ]*[0-9a-f]+: 650a3000 fcvtn z0.b, {z0.h-z1.h} +[ ]*[0-9a-f]+: 650a3001 fcvtn z1.b, {z0.h-z1.h} +[ ]*[0-9a-f]+: 650a3040 fcvtn z0.b, {z2.h-z3.h} +[ ]*[0-9a-f]+: 650a33dd fcvtn z29.b, {z30.h-z31.h} +[ ]*[0-9a-f]+: 650a3400 fcvtnb z0.b, {z0.s-z1.s} +[ ]*[0-9a-f]+: 650a3401 fcvtnb z1.b, {z0.s-z1.s} +[ ]*[0-9a-f]+: 650a3440 fcvtnb z0.b, {z2.s-z3.s} +[ ]*[0-9a-f]+: 650a37dd fcvtnb z29.b, {z30.s-z31.s} +[ ]*[0-9a-f]+: 650a3c00 fcvtnt z0.b, {z0.s-z1.s} +[ ]*[0-9a-f]+: 650a3c01 fcvtnt z1.b, {z0.s-z1.s} +[ ]*[0-9a-f]+: 650a3c40 fcvtnt z0.b, {z2.s-z3.s} +[ ]*[0-9a-f]+: 650a3fdd fcvtnt z29.b, {z30.s-z31.s} \ No newline at end of file diff --git a/gas/testsuite/gas/aarch64/sve2-fp8-fail.d b/gas/testsuite/gas/aarch64/sve2-fp8-fail.d new file mode 100644 index 00000000000..f20d457b5ae --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2-fp8-fail.d @@ -0,0 +1,2 @@ +#as: -march=armv8.5-a+fp8+sve2 -mno-verbose-error +#error_output: sve2-fp8-fail.l diff --git a/gas/testsuite/gas/aarch64/sve2-fp8-fail.l b/gas/testsuite/gas/aarch64/sve2-fp8-fail.l new file mode 100644 index 00000000000..ab48ff464d7 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2-fp8-fail.l @@ -0,0 +1,161 @@ +[^:]+: Assembler messages: +[^:]+:6: Error: operand mismatch -- `bf1cvt z0.b,z1.b' +[^:]+:30: Info: macro invoked from here +[^:]+:8: Error: operand mismatch -- `bf1cvt z0.s,z1.b' +[^:]+:30: Info: macro invoked from here +[^:]+:9: Error: operand mismatch -- `bf1cvt z0.d,z1.b' +[^:]+:30: Info: macro invoked from here +[^:]+:12: Error: operand mismatch -- `bf1cvt z0.h,z1.h' +[^:]+:30: Info: macro invoked from here +[^:]+:13: Error: operand mismatch -- `bf1cvt z0.h,z1.s' +[^:]+:30: Info: macro invoked from here +[^:]+:14: Error: operand mismatch -- `bf1cvt z0.h,z1.d' +[^:]+:30: Info: macro invoked from here +[^:]+:16: Error: expected an SVE vector register at operand 2 -- `bf1cvt z0.h,p0,z1.d' +[^:]+:30: Info: macro invoked from here +[^:]+:17: Error: expected an SVE vector register at operand 2 -- `bf1cvt z0.h,p0/z,z1.d' +[^:]+:30: Info: macro invoked from here +[^:]+:6: Error: operand mismatch -- `bf2cvt z0.b,z1.b' +[^:]+:31: Info: macro invoked from here +[^:]+:8: Error: operand mismatch -- `bf2cvt z0.s,z1.b' +[^:]+:31: Info: macro invoked from here +[^:]+:9: Error: operand mismatch -- `bf2cvt z0.d,z1.b' +[^:]+:31: Info: macro invoked from here +[^:]+:12: Error: operand mismatch -- `bf2cvt z0.h,z1.h' +[^:]+:31: Info: macro invoked from here +[^:]+:13: Error: operand mismatch -- `bf2cvt z0.h,z1.s' +[^:]+:31: Info: macro invoked from here +[^:]+:14: Error: operand mismatch -- `bf2cvt z0.h,z1.d' +[^:]+:31: Info: macro invoked from here +[^:]+:16: Error: expected an SVE vector register at operand 2 -- `bf2cvt z0.h,p0,z1.d' +[^:]+:31: Info: macro invoked from here +[^:]+:17: Error: expected an SVE vector register at operand 2 -- `bf2cvt z0.h,p0/z,z1.d' +[^:]+:31: Info: macro invoked from here +[^:]+:6: Error: operand mismatch -- `bf1cvtlt z0.b,z1.b' +[^:]+:32: Info: macro invoked from here +[^:]+:8: Error: operand mismatch -- `bf1cvtlt z0.s,z1.b' +[^:]+:32: Info: macro invoked from here +[^:]+:9: Error: operand mismatch -- `bf1cvtlt z0.d,z1.b' +[^:]+:32: Info: macro invoked from here +[^:]+:12: Error: operand mismatch -- `bf1cvtlt z0.h,z1.h' +[^:]+:32: Info: macro invoked from here +[^:]+:13: Error: operand mismatch -- `bf1cvtlt z0.h,z1.s' +[^:]+:32: Info: macro invoked from here +[^:]+:14: Error: operand mismatch -- `bf1cvtlt z0.h,z1.d' +[^:]+:32: Info: macro invoked from here +[^:]+:16: Error: expected an SVE vector register at operand 2 -- `bf1cvtlt z0.h,p0,z1.d' +[^:]+:32: Info: macro invoked from here +[^:]+:17: Error: expected an SVE vector register at operand 2 -- `bf1cvtlt z0.h,p0/z,z1.d' +[^:]+:32: Info: macro invoked from here +[^:]+:6: Error: operand mismatch -- `bf2cvtlt z0.b,z1.b' +[^:]+:33: Info: macro invoked from here +[^:]+:8: Error: operand mismatch -- `bf2cvtlt z0.s,z1.b' +[^:]+:33: Info: macro invoked from here +[^:]+:9: Error: operand mismatch -- `bf2cvtlt z0.d,z1.b' +[^:]+:33: Info: macro invoked from here +[^:]+:12: Error: operand mismatch -- `bf2cvtlt z0.h,z1.h' +[^:]+:33: Info: macro invoked from here +[^:]+:13: Error: operand mismatch -- `bf2cvtlt z0.h,z1.s' +[^:]+:33: Info: macro invoked from here +[^:]+:14: Error: operand mismatch -- `bf2cvtlt z0.h,z1.d' +[^:]+:33: Info: macro invoked from here +[^:]+:16: Error: expected an SVE vector register at operand 2 -- `bf2cvtlt z0.h,p0,z1.d' +[^:]+:33: Info: macro invoked from here +[^:]+:17: Error: expected an SVE vector register at operand 2 -- `bf2cvtlt z0.h,p0/z,z1.d' +[^:]+:33: Info: macro invoked from here +[^:]+:6: Error: operand mismatch -- `f1cvt z0.b,z1.b' +[^:]+:34: Info: macro invoked from here +[^:]+:8: Error: operand mismatch -- `f1cvt z0.s,z1.b' +[^:]+:34: Info: macro invoked from here +[^:]+:9: Error: operand mismatch -- `f1cvt z0.d,z1.b' +[^:]+:34: Info: macro invoked from here +[^:]+:12: Error: operand mismatch -- `f1cvt z0.h,z1.h' +[^:]+:34: Info: macro invoked from here +[^:]+:13: Error: operand mismatch -- `f1cvt z0.h,z1.s' +[^:]+:34: Info: macro invoked from here +[^:]+:14: Error: operand mismatch -- `f1cvt z0.h,z1.d' +[^:]+:34: Info: macro invoked from here +[^:]+:16: Error: expected an SVE vector register at operand 2 -- `f1cvt z0.h,p0,z1.d' +[^:]+:34: Info: macro invoked from here +[^:]+:17: Error: expected an SVE vector register at operand 2 -- `f1cvt z0.h,p0/z,z1.d' +[^:]+:34: Info: macro invoked from here +[^:]+:6: Error: operand mismatch -- `f2cvt z0.b,z1.b' +[^:]+:35: Info: macro invoked from here +[^:]+:8: Error: operand mismatch -- `f2cvt z0.s,z1.b' +[^:]+:35: Info: macro invoked from here +[^:]+:9: Error: operand mismatch -- `f2cvt z0.d,z1.b' +[^:]+:35: Info: macro invoked from here +[^:]+:12: Error: operand mismatch -- `f2cvt z0.h,z1.h' +[^:]+:35: Info: macro invoked from here +[^:]+:13: Error: operand mismatch -- `f2cvt z0.h,z1.s' +[^:]+:35: Info: macro invoked from here +[^:]+:14: Error: operand mismatch -- `f2cvt z0.h,z1.d' +[^:]+:35: Info: macro invoked from here +[^:]+:16: Error: expected an SVE vector register at operand 2 -- `f2cvt z0.h,p0,z1.d' +[^:]+:35: Info: macro invoked from here +[^:]+:17: Error: expected an SVE vector register at operand 2 -- `f2cvt z0.h,p0/z,z1.d' +[^:]+:35: Info: macro invoked from here +[^:]+:6: Error: operand mismatch -- `f1cvtlt z0.b,z1.b' +[^:]+:36: Info: macro invoked from here +[^:]+:8: Error: operand mismatch -- `f1cvtlt z0.s,z1.b' +[^:]+:36: Info: macro invoked from here +[^:]+:9: Error: operand mismatch -- `f1cvtlt z0.d,z1.b' +[^:]+:36: Info: macro invoked from here +[^:]+:12: Error: operand mismatch -- `f1cvtlt z0.h,z1.h' +[^:]+:36: Info: macro invoked from here +[^:]+:13: Error: operand mismatch -- `f1cvtlt z0.h,z1.s' +[^:]+:36: Info: macro invoked from here +[^:]+:14: Error: operand mismatch -- `f1cvtlt z0.h,z1.d' +[^:]+:36: Info: macro invoked from here +[^:]+:16: Error: expected an SVE vector register at operand 2 -- `f1cvtlt z0.h,p0,z1.d' +[^:]+:36: Info: macro invoked from here +[^:]+:17: Error: expected an SVE vector register at operand 2 -- `f1cvtlt z0.h,p0/z,z1.d' +[^:]+:36: Info: macro invoked from here +[^:]+:6: Error: operand mismatch -- `f2cvtlt z0.b,z1.b' +[^:]+:37: Info: macro invoked from here +[^:]+:8: Error: operand mismatch -- `f2cvtlt z0.s,z1.b' +[^:]+:37: Info: macro invoked from here +[^:]+:9: Error: operand mismatch -- `f2cvtlt z0.d,z1.b' +[^:]+:37: Info: macro invoked from here +[^:]+:12: Error: operand mismatch -- `f2cvtlt z0.h,z1.h' +[^:]+:37: Info: macro invoked from here +[^:]+:13: Error: operand mismatch -- `f2cvtlt z0.h,z1.s' +[^:]+:37: Info: macro invoked from here +[^:]+:14: Error: operand mismatch -- `f2cvtlt z0.h,z1.d' +[^:]+:37: Info: macro invoked from here +[^:]+:16: Error: expected an SVE vector register at operand 2 -- `f2cvtlt z0.h,p0,z1.d' +[^:]+:37: Info: macro invoked from here +[^:]+:17: Error: expected an SVE vector register at operand 2 -- `f2cvtlt z0.h,p0/z,z1.d' +[^:]+:37: Info: macro invoked from here +[^:]+:23: Error: operand mismatch -- `bfcvtn z1.h,{z0.h-z1.h}' +[^:]+:39: Info: macro invoked from here +[^:]+:24: Error: operand mismatch -- `bfcvtn z0.s,{z0.h-z1.h}' +[^:]+:39: Info: macro invoked from here +[^:]+:25: Error: operand mismatch -- `bfcvtn z7.d,{z0.h-z1.h}' +[^:]+:39: Info: macro invoked from here +[^:]+:27: Error: start register out of range at operand 2 -- `bfcvtn z0.b,{z1.h-z2.h}' +[^:]+:39: Info: macro invoked from here +[^:]+:23: Error: operand mismatch -- `fcvtn z1.h,{z0.h-z1.h}' +[^:]+:40: Info: macro invoked from here +[^:]+:24: Error: operand mismatch -- `fcvtn z0.s,{z0.h-z1.h}' +[^:]+:40: Info: macro invoked from here +[^:]+:25: Error: operand mismatch -- `fcvtn z7.d,{z0.h-z1.h}' +[^:]+:40: Info: macro invoked from here +[^:]+:27: Error: start register out of range at operand 2 -- `fcvtn z0.b,{z1.h-z2.h}' +[^:]+:40: Info: macro invoked from here +[^:]+:23: Error: operand mismatch -- `fcvtnb z1.h,{z0.s-z1.s}' +[^:]+:41: Info: macro invoked from here +[^:]+:24: Error: operand mismatch -- `fcvtnb z0.s,{z0.s-z1.s}' +[^:]+:41: Info: macro invoked from here +[^:]+:25: Error: operand mismatch -- `fcvtnb z7.d,{z0.s-z1.s}' +[^:]+:41: Info: macro invoked from here +[^:]+:27: Error: start register out of range at operand 2 -- `fcvtnb z0.b,{z1.s-z2.s}' +[^:]+:41: Info: macro invoked from here +[^:]+:23: Error: operand mismatch -- `fcvtnt z1.h,{z0.s-z1.s}' +[^:]+:42: Info: macro invoked from here +[^:]+:24: Error: operand mismatch -- `fcvtnt z0.s,{z0.s-z1.s}' +[^:]+:42: Info: macro invoked from here +[^:]+:25: Error: operand mismatch -- `fcvtnt z7.d,{z0.s-z1.s}' +[^:]+:42: Info: macro invoked from here +[^:]+:27: Error: start register out of range at operand 2 -- `fcvtnt z0.b,{z1.s-z2.s}' +[^:]+:42: Info: macro invoked from here diff --git a/gas/testsuite/gas/aarch64/sve2-fp8-fail.s b/gas/testsuite/gas/aarch64/sve2-fp8-fail.s new file mode 100644 index 00000000000..057bb626247 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2-fp8-fail.s @@ -0,0 +1,42 @@ + /* sve-fp8-fail.s Test file for error-checking AArch64 SVE 8-bit + floating-point vector instructions. */ + + .macro cvt_pat1, op + /* Check element width qualifier for destination register. */ + \op z0.b, z1.b + \op z0.h, z1.b /* Valid. */ + \op z0.s, z1.b + \op z0.d, z1.b + /* Check element width qualifier for source register. */ + \op z0.h, z1.b /* Valid. */ + \op z0.h, z1.h + \op z0.h, z1.s + \op z0.h, z1.d + /* Ensure predicate register is not allowed. */ + \op z0.h, p0, z1.d + \op z0.h, p0/z, z1.d + .endm + + .macro cvt_pat2, op, width + /* Check element width qualifier for destination register. */ + \op z0.b, { z0.\width - z1.\width } /* Valid. */ + \op z1.h, { z0.\width - z1.\width } + \op z0.s, { z0.\width - z1.\width } + \op z7.d, { z0.\width - z1.\width } + /* Check whether source register range starts at even register. */ + \op z0.b, { z1.\width - z2.\width } + .endm + + cvt_pat1 bf1cvt + cvt_pat1 bf2cvt + cvt_pat1 bf1cvtlt + cvt_pat1 bf2cvtlt + cvt_pat1 f1cvt + cvt_pat1 f2cvt + cvt_pat1 f1cvtlt + cvt_pat1 f2cvtlt + + cvt_pat2 bfcvtn, h + cvt_pat2 fcvtn, h + cvt_pat2 fcvtnb, s + cvt_pat2 fcvtnt, s diff --git a/gas/testsuite/gas/aarch64/sve2-fp8.d b/gas/testsuite/gas/aarch64/sve2-fp8.d new file mode 100644 index 00000000000..774b8e79d09 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2-fp8.d @@ -0,0 +1,3 @@ +#as: -march=armv8.5-a+fp8+sve2 +#objdump: -dr +#dump: sve2-fp8-dump diff --git a/gas/testsuite/gas/aarch64/sve2-fp8.s b/gas/testsuite/gas/aarch64/sve2-fp8.s new file mode 100644 index 00000000000..62dee7334cc --- /dev/null +++ b/gas/testsuite/gas/aarch64/sve2-fp8.s @@ -0,0 +1,48 @@ + /* sve-fp8.s Test file for AArch64 SVE 8-bit floating-point vector + instructions. */ + + .macro cvt_pat1, op + \op z0.h, z0.b + \op z1.h, z0.b + \op z0.h, z1.b + \op z30.h, z31.b + .endm + + .macro cvt_pat2, op, width + \op z0.b, { z0.\width - z1.\width } + \op z1.b, { z0.\width - z1.\width } + \op z0.b, { z2.\width - z3.\width } + \op z29.b, { z30.\width - z31.\width } + .endm + + /* 8-bit floating-point convert to BFloat16 (top/bottom) with scaling by + 2^-UInt(FPMR.LSCALE{2}[5:0]). */ + + cvt_pat1 bf1cvt + cvt_pat1 bf2cvt + cvt_pat1 bf1cvtlt + cvt_pat1 bf2cvtlt + + /* 8-bit floating-point convert to half-precision (top/bottom) with + scaling by 2^-UInt(FPMR.LSCALE{2}[3:0]). */ + + cvt_pat1 f1cvt + cvt_pat1 f2cvt + cvt_pat1 f1cvtlt + cvt_pat1 f2cvtlt + + /* BFloat16 convert, narrow and interleave to 8-bit floating-point + with scaling by 2^SInt(FPMR.NSCALE). */ + + cvt_pat2 bfcvtn, h + + /* Half-precision convert, narrow and interleave to 8-bit floating-point + with scaling by 2^SInt(FPMR.NSCALE[4:0]). */ + + cvt_pat2 fcvtn, h + + /* Single-precision convert, narrow and interleave to 8-bit + floating-point (top/bottom) 2^SInt(FPMR.NSCALE). */ + + cvt_pat2 fcvtnb, s + cvt_pat2 fcvtnt, s diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index 2268bf6983a..36d474403e2 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -10334,7 +10334,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0x11010000xxxxxxx1xxxxxxxxxxxxx addpt. */ - return 3346; + return 3358; } else { @@ -10342,7 +10342,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1x11010000xxxxxxx1xxxxxxxxxxxxx subpt. */ - return 3347; + return 3359; } } } @@ -11260,7 +11260,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxx1011x11xxxxx0xxxxxxxxxxxxxxx maddpt. */ - return 3348; + return 3360; } else { @@ -11268,7 +11268,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxx1011x11xxxxx1xxxxxxxxxxxxxxx msubpt. */ - return 3349; + return 3361; } } } @@ -11353,7 +11353,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx000100000xxxxxxxxxxxxx addpt. */ - return 3350; + return 3362; } else { @@ -11460,7 +11460,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx000101000xxxxxxxxxxxxx subpt. */ - return 3352; + return 3364; } else { @@ -11665,7 +11665,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx1xxxxx000010xxxxxxxxxx addpt. */ - return 3351; + return 3363; } else { @@ -11706,7 +11706,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx1xxxxx000011xxxxxxxxxx subpt. */ - return 3353; + return 3365; } else { @@ -13364,7 +13364,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx110100xxxxxxxxxx mlapt. */ - return 3355; + return 3367; } } else @@ -13394,7 +13394,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx110110xxxxxxxxxx madpt. */ - return 3354; + return 3366; } } } @@ -20817,11 +20817,55 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx0x1000001xxxxxxxxxxxxx - fadda. */ - return 1447; + if (((word >> 20) & 0x1) == 0) + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx001000001x00xxxxxxxxxx + f1cvt. */ + return 3350; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx001000001x10xxxxxxxxxx + bf1cvt. */ + return 3346; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx001000001x01xxxxxxxxxx + f2cvt. */ + return 3351; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx001000001x11xxxxxxxxxx + bf2cvt. */ + return 3347; + } + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx011000001xxxxxxxxxxxxx + fadda. */ + return 1447; + } } } else @@ -20837,11 +20881,55 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 18) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx0xx010001xxxxxxxxxxxxx - fcmeq. */ - return 1453; + if (((word >> 19) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x0010001xxxxxxxxxxxxx + fcmeq. */ + return 1453; + } + else + { + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1010001x00xxxxxxxxxx + fcvtn. */ + return 3355; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1010001x10xxxxxxxxxx + bfcvtn. */ + return 3354; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1010001x01xxxxxxxxxx + fcvtnb. */ + return 3356; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1010001x11xxxxxxxxxx + fcvtnt. */ + return 3357; + } + } + } } else { @@ -20870,21 +20958,65 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 18) & 0x1) == 0) { - if (((word >> 4) & 0x1) == 0) + if (((word >> 19) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx0xx001001xxxxxxxx0xxxx - fcmlt. */ - return 1460; + if (((word >> 4) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x0001001xxxxxxxx0xxxx + fcmlt. */ + return 1460; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x0001001xxxxxxxx1xxxx + fcmle. */ + return 1459; + } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - 011001x1xx0xx001001xxxxxxxx1xxxx - fcmle. */ - return 1459; + if (((word >> 10) & 0x1) == 0) + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1001001x00xxxxxxxxxx + f1cvtlt. */ + return 3352; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1001001x10xxxxxxxxxx + bf1cvtlt. */ + return 3348; + } + } + else + { + if (((word >> 11) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1001001x01xxxxxxxxxx + f2cvtlt. */ + return 3353; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + 011001x1xx0x1001001x11xxxxxxxxxx + bf2cvtlt. */ + return 3349; + } + } } } else diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index f876c1b342f..464d9313a37 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1644,6 +1644,14 @@ { \ QLF2(S_H,S_B), \ } +#define OP_SVE_BH \ +{ \ + QLF2(S_B,S_H), \ +} +#define OP_SVE_BS \ +{ \ + QLF2(S_B,S_S), \ +} #define OP_SVE_HHH \ { \ QLF3(S_H,S_H,S_H), \ @@ -6500,6 +6508,18 @@ const struct aarch64_opcode aarch64_opcode_table[] = FP8_INSN("fcvtn", 0xe40f400, 0xbfe0fc00, asimdmisc, OP3 (Vd, Vn, Vm), QL_V3_BHH, F_SIZEQ), FP8_INSN("fscale", 0x2ec03c00, 0xbfe0fc00, asimdmisc, OP3 (Vd, Vn, Vm), QL_VSHIFT_H, F_SIZEQ), FP8_INSN("fscale", 0x2ea0fc00, 0xbfa0fc00, asimdmisc, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ), + FP8_SVE2_INSN ("bf1cvt", 0x65083800, 0xfffffc00, sve_misc, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_HB, 0, 0), + FP8_SVE2_INSN ("bf2cvt", 0x65083c00, 0xfffffc00, sve_misc, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_HB, 0, 0), + FP8_SVE2_INSN ("bf1cvtlt", 0x65093800, 0xfffffc00, sve_misc, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_HB, 0, 0), + FP8_SVE2_INSN ("bf2cvtlt", 0x65093c00, 0xfffffc00, sve_misc, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_HB, 0, 0), + FP8_SVE2_INSN ("f1cvt", 0x65083000, 0xfffffc00, sve_misc, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_HB, 0, 0), + FP8_SVE2_INSN ("f2cvt", 0x65083400, 0xfffffc00, sve_misc, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_HB, 0, 0), + FP8_SVE2_INSN ("f1cvtlt", 0x65093000, 0xfffffc00, sve_misc, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_HB, 0, 0), + FP8_SVE2_INSN ("f2cvtlt", 0x65093400, 0xfffffc00, sve_misc, 0, OP2 (SVE_Zd, SVE_Zn), OP_SVE_HB, 0, 0), + FP8_SVE2_INSN ("bfcvtn", 0x650a3800, 0xfffffc20, sve_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BH, 0, 0), + FP8_SVE2_INSN ("fcvtn", 0x650a3000, 0xfffffc20, sve_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BH, 0, 0), + FP8_SVE2_INSN ("fcvtnb", 0x650a3400, 0xfffffc20, sve_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BS, 0, 0), + FP8_SVE2_INSN ("fcvtnt", 0x650a3c00, 0xfffffc20, sve_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BS, 0, 0), /* Checked Pointer Arithmetic Instructions. */ CPA_INSN ("addpt", 0x9a002000, 0xffe0e000, aarch64_misc, OP3 (Rd_SP, Rn_SP, Rm_LSL), QL_I3SAMEX), -- 2.34.1