get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.0/patches/2175675/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2175675,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175675/?format=api",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/1.0/projects/17/?format=api",
        "name": "GNU Compiler Collection",
        "link_name": "gcc",
        "list_id": "gcc-patches.gcc.gnu.org",
        "list_email": "gcc-patches@gcc.gnu.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null
    },
    "msgid": "<20251218171459.75831-8-claudio.bantaloukas@arm.com>",
    "date": "2025-12-18T17:14:57",
    "name": "[v5,7/9] aarch64: add Multi-vector 8-bit floating-point multiply-add long",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "247f1daeebc4d0c9730fe4d0f550e8b6fac321a8",
    "submitter": {
        "id": 88972,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/88972/?format=api",
        "name": "Claudio Bantaloukas",
        "email": "claudio.bantaloukas@arm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20251218171459.75831-8-claudio.bantaloukas@arm.com/mbox/",
    "series": [
        {
            "id": 485887,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/485887/?format=api",
            "date": "2025-12-18T17:14:53",
            "name": "aarch64: Add fp8 sme 2.1 features per ACLE 2024Q4",
            "version": 5,
            "mbox": "http://patchwork.ozlabs.org/series/485887/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2175675/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@legolas.ozlabs.org",
            "gcc-patches@gcc.gnu.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=ZvOQ358A;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=ZvOQ358A;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)",
            "sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=ZvOQ358A;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=ZvOQ358A",
            "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com",
            "sourceware.org; spf=pass smtp.mailfrom=arm.com",
            "server2.sourceware.org;\n arc=pass smtp.remote-ip=40.107.130.47"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dXHgx1JZbz1y2F\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 19 Dec 2025 04:28:29 +1100 (AEDT)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 44C7B4BA2E20\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 17:28:27 +0000 (GMT)",
            "from MRWPR03CU001.outbound.protection.outlook.com\n (mail-francesouthazon11011047.outbound.protection.outlook.com\n [40.107.130.47])\n by sourceware.org (Postfix) with ESMTPS id 3E9554BA2E22\n for <gcc-patches@gcc.gnu.org>; Thu, 18 Dec 2025 17:18:57 +0000 (GMT)",
            "from DUZPR01CA0029.eurprd01.prod.exchangelabs.com\n (2603:10a6:10:46b::18) by PAXPR08MB7419.eurprd08.prod.outlook.com\n (2603:10a6:102:2ba::11) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.8; Thu, 18 Dec\n 2025 17:18:46 +0000",
            "from DU6PEPF00009524.eurprd02.prod.outlook.com\n (2603:10a6:10:46b:cafe::79) by DUZPR01CA0029.outlook.office365.com\n (2603:10a6:10:46b::18) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.8 via Frontend Transport; Thu,\n 18 Dec 2025 17:19:00 +0000",
            "from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n DU6PEPF00009524.mail.protection.outlook.com (10.167.8.5) with Microsoft SMTP\n Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.6 via\n Frontend Transport; Thu, 18 Dec 2025 17:18:45 +0000",
            "from DB3PR06CA0026.eurprd06.prod.outlook.com (2603:10a6:8:1::39) by\n PR3PR08MB5690.eurprd08.prod.outlook.com (2603:10a6:102:86::21) with\n Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9434.6; Thu, 18 Dec 2025 17:15:30 +0000",
            "from DB3PEPF0000885E.eurprd02.prod.outlook.com\n (2603:10a6:8:1:cafe::eb) by DB3PR06CA0026.outlook.office365.com\n (2603:10a6:8:1::39) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.8 via Frontend Transport; Thu,\n 18 Dec 2025 17:15:30 +0000",
            "from nebula.arm.com (172.205.89.229) by\n DB3PEPF0000885E.mail.protection.outlook.com (10.167.242.9) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9434.6 via Frontend Transport; Thu, 18 Dec 2025 17:15:30 +0000",
            "from AZ-NEU-EXJ02.Arm.com (10.240.25.139) by AZ-NEU-EX03.Arm.com\n (10.240.25.137) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Thu, 18 Dec\n 2025 17:15:08 +0000",
            "from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EXJ02.Arm.com\n (10.240.25.139) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Thu, 18 Dec\n 2025 17:15:08 +0000",
            "from e72c20ac6da1.eu-west-1.compute.internal (10.249.56.29) by\n mail.arm.com (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend\n Transport; Thu, 18 Dec 2025 17:15:08 +0000"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 44C7B4BA2E20",
            "OpenDKIM Filter v2.11.0 sourceware.org 3E9554BA2E22"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 3E9554BA2E22",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 3E9554BA2E22",
        "ARC-Seal": [
            "i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1766078337; cv=pass;\n b=MSUwF7pqpYCr2AyJBtGHJh9R7TZZTykM/y9AuNsEEbeVwq2Yn/whLxkGyxuleJYaWrGRRdzQqWCZeQieFSzectsNknie2eDNbU85uiAvxWUbK3MxalLjYW5+s83XlxJBhcxGxVbgfFxtj/nm3ohWAxXXMWErVCTmHnp8lpdm+QU=",
            "i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=NqhgmDxDAf29UvXHPFlcGLax1+xrOTOjy0EdAMWmiqwyBToxfozK7zIUTnuK+arqYHBmyFSME1betesb1kAA8KHz9+einJbU94UObVpJ3KgXc8lKlIpqTfHlFlo+cDZYjbRd8th67HD0viPiJpS/nOQCEkgoAMc7AMtdgYYfnFblsLbD418HwlqSuRqxWy+goUIZVPi2g2TUHM5uDjsx/nRLIwYIWhdEMiC+jQoUmTPV3P/NUuZTkaTI5uogJ6KyxmcT52e9SBAzEa0Jw44GdN0ZU2KiW41CNd1b28J1YW1jqZQQ/3JryisKT1rhaodPK9tCkCyk8nEKfccPppdbRg==",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=ZKci7iAjX9IPHsWltiUSrceimgAoPu1ahLNZBny+vVjOaCAnHsPgac9tFljX3f9IyKzL9nuPnN/JsnqGuu0QjY/SJt+W5uaMWBjqsySp5yS1gpRuBxgm1AVSupgU7Jgll0ueQDYhyk6Liww6TIbMuQpRc5W0XAvBB7FRZSpFhdvvgxUtTsBK6nZGqWdBIurL8qORkbLXznmNPmESj6iwdD0V7TfNu59fjUnwy1pgDq3w2mQ4uSRSipkJfDLqYnrO0RzLpbPm+ctEKUJ1lI22S34aQBQuvZSxiPM4fkh1URS8hXrnKHggE1D1uCwnc03beHYLOjUciWFnrw04r4MAjQ=="
        ],
        "ARC-Message-Signature": [
            "i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1766078337; c=relaxed/simple;\n bh=6WuE9TvVWikkUJiefNYz/c09jCxP9uMxktA0y+YYWfE=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=YYTGkehsHOC2bTuNq0dNxMNFl0PWTW9uJOP81dK+bszM+6G3umCsmEUeOaJc3biJbLm//vtISA2NkK+3K1IGVtQsqiUdUEU10OS4T494ejztqzCiqD6VEyQuTtwzVx7QH2Spz27R7Olh9eBZw0r70X7u8JI+GnNyKrWT/zCIXAA=",
            "i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=/CghaLtT8ffXktTkPEzDPrtKXBgreEsKFj3j3K1k0dk=;\n b=cT3LXDFEs1Mrwo6Dn5tW7Bcr5pTMP8aaMEkJoYg9kVymYN4CEmzGSsnHFSsX5pooz0D2Bum2lzx3u4zVAqlbl8Iu6S9XNpSrYa6w5I0f1RenYYR5HUBxym205XP5aUQqMunZsMADyFkkrK7StiZ6s0ncX1HcqBcTKOAJCNSml/Q3C0lVOEZUcQC0o/6GMVYmcM7AP8swBqXeOWD8dyxlibT1c2D+Kt0a4+6PSWDKhuoEoQ/z+8rtujTwKqJeruzCttpynvctocn9Ga1gLwXVjaNXaaA2GpImv/lPRkv6wpvPqhUzKQAO9kLsQxq7UKC4ye3zqbM9jZpwLQbgAluVIg==",
            "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=/CghaLtT8ffXktTkPEzDPrtKXBgreEsKFj3j3K1k0dk=;\n b=Kad6uPDuj7LssIbfAjO7L5ufs9QwZbzpr1RRJm2WFtR50QtjxLaI5cJhXoi+K+aQDLPTqakxbuYFewXldmvAL9+px5tOZzXWoAwERAkUpWjkUdYl4yQNXurE1QRubSS0JCnk9jv+u4o2yaxDKzQwjr99NZJCMLUic+eUqL2sTjeilByC+zvu56BC20REgUcymixhcB7ann+tuJSwwjpoqTE33N6iJaEQaYtCWptX1RXBmLXrfHpyoEBA9fv4D6wXUp4XkCdbFb1zRNckCR9eAOKhe5MVfhfWmKb89dkpkCurcXzaNVKGNuKl1TtUlmPAfeispt6GjMJZuojSXt6yJw=="
        ],
        "ARC-Authentication-Results": [
            "i=3; server2.sourceware.org",
            "i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=oss.qualcomm.com smtp.mailfrom=arm.com;\n dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;\n dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com])",
            "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 172.205.89.229) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com;\n dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;\n dkim=none (message not signed); arc=none (0)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=/CghaLtT8ffXktTkPEzDPrtKXBgreEsKFj3j3K1k0dk=;\n b=ZvOQ358AmTFVTaecDIcLHgQiWMYPwSAvVKbiU/uX3GZ/WMQ0uN0iYBmwhrzJcWdNJXCw14eC810KlArVcR5ZxYqrAALhVfohK9Ha5ux3s68RPEheRZPhhbrfS4GeaFKAMV/aqfCY2HWY/UBkkVC07Qssde5c+aif29bn+2Y/WeU=",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=/CghaLtT8ffXktTkPEzDPrtKXBgreEsKFj3j3K1k0dk=;\n b=ZvOQ358AmTFVTaecDIcLHgQiWMYPwSAvVKbiU/uX3GZ/WMQ0uN0iYBmwhrzJcWdNJXCw14eC810KlArVcR5ZxYqrAALhVfohK9Ha5ux3s68RPEheRZPhhbrfS4GeaFKAMV/aqfCY2HWY/UBkkVC07Qssde5c+aif29bn+2Y/WeU="
        ],
        "X-MS-Exchange-Authentication-Results": [
            "spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;",
            "spf=pass (sender IP is 172.205.89.229)\n smtp.mailfrom=arm.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=arm.com;"
        ],
        "Received-SPF": [
            "Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C",
            "Pass (protection.outlook.com: domain of arm.com designates\n 172.205.89.229 as permitted sender) receiver=protection.outlook.com;\n client-ip=172.205.89.229; helo=nebula.arm.com; pr=C"
        ],
        "From": "Claudio Bantaloukas <claudio.bantaloukas@arm.com>",
        "To": "Gcc Patches ML <gcc-patches@gcc.gnu.org>",
        "CC": "Alex Coplan <alex.coplan@arm.com>, Alice Carlotti\n <alice.carlotti@arm.com>, Andrew Pinski <andrew.pinski@oss.qualcomm.com>,\n Kyrylo Tkachov <ktkachov@nvidia.com>, Richard Earnshaw\n <richard.earnshaw@arm.com>, Tamar Christina <tamar.christina@arm.com>, \"Wilco\n Dijkstra\" <wilco.dijkstra@arm.com>, Claudio Bantaloukas\n <claudio.bantaloukas@arm.com>",
        "Subject": "[PATCH v5 7/9] aarch64: add Multi-vector 8-bit floating-point\n multiply-add long",
        "Date": "Thu, 18 Dec 2025 17:14:57 +0000",
        "Message-ID": "<20251218171459.75831-8-claudio.bantaloukas@arm.com>",
        "X-Mailer": "git-send-email 2.51.0",
        "In-Reply-To": "<20251218171459.75831-1-claudio.bantaloukas@arm.com>",
        "References": "<20251218171459.75831-1-claudio.bantaloukas@arm.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-EOPAttributedMessage": "1",
        "X-MS-TrafficTypeDiagnostic": "\n DB3PEPF0000885E:EE_|PR3PR08MB5690:EE_|DU6PEPF00009524:EE_|PAXPR08MB7419:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "e8d08843-b2ed-45ba-9312-08de3e59800d",
        "x-checkrecipientrouted": "true",
        "NoDisclaimer": "true",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam-Untrusted": "BCL:0;\n ARA:13230040|376014|1800799024|82310400026|36860700013|13003099007;",
        "X-Microsoft-Antispam-Message-Info-Original": "\n EVrrbwG4lOFO7n2oxsYTZcXPtPXz1KzJSGTrMzyhiRKYICStr7LIbTfvw16H2tvMkVpK3JBn+v/K54Usfz36266EIcGal1P4MbzodGzBxZuwxxRX92DGWgaLdQF6WnScCo1w/U8cn2sOzh42d4bnMaOsG+aAqswAL41n1pykF3aQjtdKkQ+/SKOBzMCXJajBqwhhcwaGA9sMDr7WipA43JrRe60x4UQ+T8fSV486dOGPIMx52fYvSTpY/thFp6XIiLVYUo7iXFi8b+xV2nHaRY79cCrogsd8YQAkmdRGEyWVf3wBCUT8QT3SqEyC9paA7O+Q49+60mmCFDPSDMChWuED4+1PCX5pQoFDFHI0DHi+HdWwe/GI3ZfqF8GRlLFGl2cg+/NYrbelByp5gkSLbOyNBFOt1LE/JmY3DgmdG3VBRW00z0Vult+OphVyrdmIjty1bwSKIOjzzozkcSF8nXLdKIs4zbDOC7zaP50Auvb+iA8TWhSSvcBz8kYS+B75gGzqeIW396C/E4jEjuDOqwI7uM280r5Ar252RB9KAhTdBmUxLJc7uxhU8jWopKZreQWufIJd2BzoEulSGzjh/Y6AyCE2L7O79OTTbYAwIc6a73gpuLiUp8+ngfPPmdD4YYxDfIH754W900wOgIyF+t8+WeN8vYvHzwDHtg8snws86hGKbq2ttRM4MLOKi1iE5b7HRJpokhEVVNYJnQ2Q4pKInZAaTBkQSDFggyuy8Bj1O/3meHV7oMGcBm9AihJR6jj1Hb925ty784vdsEKiI449bXKoZaX3MuKG3Of0rw8aM0RIUbTpdhwnqTDMd03NR1HCyk16ut17th8jY/KeBQQbfmg/i3oCBWtd6DX6S/y8/poCRHkfvXwBj+k2WIBSvPDJhUP7L9VQpPKTBv/RurBXGIDLpoux7pEnYklJwHoishRYX/yNjuBuNeOmyDWHb48ZFT5urCWMRBrULo1FhWbGn5o5AQr5C7d337DQf0uFWS/E2MTjqF9crft3ncqbL2fmQLJx+BdbgcNXPCh8wT9rINJKrTRmLYqxo+DXKyCugoAeORuI/g4LR0NWCxD9XCL5QZb8cGdo9GC934+ayPt0xj5QP0Y9n57kTsP5FP8orP2Q1PiPxxp5M0Ekr/J2CELkMeQv0qd7gx/pd1DgUjfAJkTcata8cWqkxThh+kYMBMljA23ePyVK2mQNGue02PZ+q4S1JgGE4Wiwbh9JzE5Xz3bNyqI+NmHWmYM82B6xqev+rU7b2KFZ3EyuIoloUbP1+i5jASLwFv7kGeNDhP3fUbYh4nyF+6WMjYw+siK7fpxRwKpKCJKXD3rszYEOq1NdN4eRMhCzVO1LdEo6dYZgy+5DCLLNSPRSJYD/A7WWze7e6u5qMtsUgLT5IweUXJwmc8X4kS+KH3qjJQbeSvthRivs3xMrOGFOs+xgAFft5E82CcKEhIKAyfZ1uNdLQ79U3zSYNSana1h+q+vZOL0jtYEV7KOGm7HYsIVPFVRFa1308EUrfy6lPvb/hE44O3iO2YHzQuFMew8WzSEcibWkIqfIUjAJ8ZDg17IPu5I=",
        "X-Forefront-Antispam-Report-Untrusted": "CIP:172.205.89.229; CTRY:IE; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent;\n CAT:NONE;\n SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013)(13003099007);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": [
            "PR3PR08MB5690",
            "PAXPR08MB7419"
        ],
        "X-MS-Exchange-Transport-CrossTenantHeadersStripped": "\n DU6PEPF00009524.eurprd02.prod.outlook.com",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id-Prvs": "\n f7f9d521-6222-4a5e-4196-08de3e590bda",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|82310400026|14060799003|1800799024|35042699022|36860700013|376014;",
        "X-Microsoft-Antispam-Message-Info": "\n gwMKj+/Fvs/Kh/ylW+RZT8DrGbSUeXLtXA1GcJ/Fn5/Kfa7eLr1EjEGN/rpz7Biddh6qZkNCGIPzCTA12FZ4KX79rTTVnD0xa/+1KppjNH+4/dgBlGq6fOx3U1MuaFcne3ZsRc1E7FBf2oMAlMagCdCX3Py/MqRfS/sKdJCjPBVIauP1PeXJONNeah58MkT/IYvsBW50OC+EtFg22GcvwHQrGxsKWuezoJCvoJRWkCIqDbe2CCDx3Ru8Nq6AQaXaWf8LdJJGxEDlOVtdeKrCoaf8uwtJfrWC6g0kRDj4LMrgiFORu5pHYNE6g44sS2/LpsTekDDx1PpZXGprhUNBq/hFEoNU37Iie42nCHpytNcKIeDhtfUJWcboSrUESISpV6ELXB1RpWFFoqKsb9de6qp+jP2tdgkZsXq7sZVX2EohrQDSJiMLm/lCkLqwtGlShldCQ5ohV2FxxMF1Qj4KWmFtJJwIwh31tekd2ulLOVpynn0D0ux+jED7bH7Z9uhUgMxJvK5BNr5PxqdKASSBRJ2Ucuokpofurl08iAYyti/bauBCbv5NvknLBX+rf0wZ4h5z+Mod6c3RUCNO8zDfzAhuFQYoRxu7n3Qc82R+Eeg5FhwPmz8HMChsEcCRdyqfLl1iFF/sD88m2K8E+IWgXQqeLaKgm5ZNsGVhC7DU13n84L6Z7M69sJPvXc69nIWpN9lSOJsK+5DqXk46VBwkQ08Z3UJgJKzRRHozCux8r+DiHhLdbqtwQMJUkWI9GnQK/ezIkdVYW23Geq8yhHka7bTjqznzNUgRwAjWwfLtUrix6WaCEpxjsE3RTGYhEGaM/YEwqPUSoumCT20PqazfcSMqsk921FvYz+ezqWbz1DRdzImsDLZhDx+rJ05+rM6PbVfwFLAxlV5RCDAoOFTLfgxx0ZS5O6ev1MtukG5D2p22RRwpwExeWJDUQ9N8FAdXmEoGGIB06hCzET6CgL8ICZdvyCDY2n6JDijg92m/f4k+u23t8qtSpPC0UWXii//16LfaEe/HAv/lGq2JBpmb3b6z2UYq+AS9ZfSthItd8egfAB16lEeHEBU5NXEnuX2hT/2OdhYxrbRJMcFTw+Sz9SYQqM5CPv3AXWY8xFH2NxaEo494RBZbCkrC9aHIzjhY3j0nuxfeFo1YY3AsuqwOqmmoM6PQUecJUGP6uhgoOFWYBSqOjpy3ozaHjZJRFNjmLnpKv8eyngIwVH6ByIrgNJzL2LkJo+LLAz3VKdMRMPsULOJzG3EQBziVSWb/v2B4f9Cp/1dU0KCQXc3VenaydByHVwACE2qFIM3yqQ78z1tkdd8OD3GAwuKluQuCN5Es+oKdBwU5TEb4tr2+lYUY++FcNN4N3mVPtB8ZdYU0liqlT2yWzaaovv8p2S8Z460jTrztBFuNRM5uwKaHZrgxd4DAWFXwx5eVjJ0iwE8hp+3YPT5mcXxaLrBu9JiYRutQcVqL/kNxrrp7EYsXd9GWBnlPKukFWwNxZ1v49/Bg8GaqoasoqRq2QeqF/2LURVuScIEPBVwhOqSoy8zLJQj5EMSp/djQUv7bskzx/2Vhdfs=",
        "X-Forefront-Antispam-Report": "CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(82310400026)(14060799003)(1800799024)(35042699022)(36860700013)(376014);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "arm.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "18 Dec 2025 17:18:45.3487 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n e8d08843-b2ed-45ba-9312-08de3e59800d",
        "X-MS-Exchange-CrossTenant-Id": "f34e5979-57d9-4aaa-ad4d-b122a662184d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n DU6PEPF00009524.eurprd02.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-BeenThere": "gcc-patches@gcc.gnu.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>",
        "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>",
        "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>",
        "List-Post": "<mailto:gcc-patches@gcc.gnu.org>",
        "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>",
        "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>",
        "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"
    },
    "content": "This patch adds support for the following intrinsics when sme-f8f16 is enabled:\n\t* svmla_lane_za16[_mf8]_vg2x1_fpm\n\t* svmla_lane_za16[_mf8]_vg2x2_fpm\n\t* svmla_lane_za16[_mf8]_vg2x4_fpm\n\t* svmla_za16[_mf8]_vg2x1_fpm\n\t* svmla[_single]_za16[_mf8]_vg2x2_fpm\n\t* svmla[_single]_za16[_mf8]_vg2x4_fpm\n\t* svmla_za16[_mf8]_vg2x2_fpm\n\t* svmla_za16[_mf8]_vg2x4_fpm\n\nThis patch adds support for the following intrinsics when sme-f8f32 is enabled:\n\t* svmla_lane_za32[_mf8]_vg4x1_fpm\n\t* svmla_lane_za32[_mf8]_vg4x2_fpm\n\t* svmla_lane_za32[_mf8]_vg4x4_fpm\n\t* svmla_za32[_mf8]_vg4x1_fpm\n\t* svmla[_single]_za32[_mf8]_vg4x2_fpm\n\t* svmla[_single]_za32[_mf8]_vg4x4_fpm\n\t* svmla_za32[_mf8]_vg4x2_fpm\n\t* svmla_za32[_mf8]_vg4x4_fpm\n\nAsm tests for the 32 bit versions follow the blueprint set in\nmla_lane_za32_u8_vg4x1.c mla_za32_u8_vg4x1.c and similar.\n16 bit versions follow similar patterns modulo differences in allowed offsets.\n\ngcc:\n\t* config/aarch64/aarch64-sme.md\n\t(@aarch64_sme_<optab><SME_ZA_F8F16_32:mode><SME_ZA_FP8_x24:mode>): Add\n\tnew define_insn.\n\t(*aarch64_sme_<optab><VNx8HI_ONLY:mode><SME_ZA_FP8_x24:mode>_plus,\n\t*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_FP8_x24:mode>_plus,\n\t@aarch64_sme_<optab><SME_ZA_F8F16_32:mode><VNx16QI_ONLY:mode>,\n\t*aarch64_sme_<optab><VNx8HI_ONLY:mode><VNx16QI_ONLY:mode>_plus,\n\t*aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx16QI_ONLY:mode>_plus,\n\t@aarch64_sme_single_<optab><SME_ZA_F8F16_32:mode><SME_ZA_FP8_x24:mode>,\n\t*aarch64_sme_single_<optab><VNx8HI_ONLY:mode><SME_ZA_FP8_x24:mode>_plus,\n\t*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_FP8_x24:mode>_plus,\n\t@aarch64_sme_lane_<optab><SME_ZA_F8F16_32:mode><SME_ZA_FP8_x124:mode>,\n\t*aarch64_sme_lane_<optab><VNx8HI_ONLY:mode><SME_ZA_FP8_x124:mode>,\n\t*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_FP8_x124:mode>):\n\tLikewise.\n\t* config/aarch64/aarch64-sve-builtins-shapes.cc\n\t(struct binary_za_slice_lane_base): Support fpm argument.\n\t(struct binary_za_slice_opt_single_base): Likewise.\n\t* config/aarch64/aarch64-sve-builtins-sme.cc (svmla_za): Extend for fp8.\n\t(svmla_lane_za): Likewise.\n\t* config/aarch64/aarch64-sve-builtins-sme.def (svmla_lane): Add new\n\tDEF_SME_ZA_FUNCTION_GS_FPM entries.\n\t(svmla): Likewise.\n\t* config/aarch64/iterators.md (SME_ZA_F8F16_32): Add new mode iterator.\n\t(SME_ZA_FP8_x24, SME_ZA_FP8_x124): Likewise.\n\t(UNSPEC_SME_FMLAL): Add new unspec.\n\t(za16_offset_range): Add new mode_attr.\n\t(za16_32_long): Likewise.\n\t(za16_32_last_offset): Likewise.\n\t(SME_FP8_TERNARY_SLICE): Add new iterator.\n\t(optab): Add entry for UNSPEC_SME_FMLAL.\n\ngcc/testsuite:\n\n\t* gcc.target/aarch64/sme2/acle-asm/test_sme2_acle.h: (TEST_ZA_X1,\n\tTEST_ZA_XN, TEST_ZA_SINGLE, TEST_ZA_SINGLE_Z15, TEST_ZA_LANE,\n\tTEST_ZA_LANE_Z15): Add fpm0 parameter.\n\t* gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_1.c: Add\n\ttests for variants accepting fpm.\n\t* gcc.target/aarch64/sve/acle/general-c/binary_za_slice_opt_single_1.c:\n\tLikewise.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x1.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x2.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x4.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x1.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x2.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x4.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x1.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x2.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x4.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x1.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x2.c: New test.\n\t* gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x4.c: New test.\n---\n gcc/config/aarch64/aarch64-sme.md             | 241 +++++++++++++++\n .../aarch64/aarch64-sve-builtins-shapes.cc    |   4 +-\n .../aarch64/aarch64-sve-builtins-sme.cc       |   5 +-\n .../aarch64/aarch64-sve-builtins-sme.def      |   8 +\n gcc/config/aarch64/iterators.md               |  19 ++\n .../sme2/acle-asm/mla_lane_za16_mf8_vg2x1.c   | 167 ++++++++++\n .../sme2/acle-asm/mla_lane_za16_mf8_vg2x2.c   | 136 +++++++++\n .../sme2/acle-asm/mla_lane_za16_mf8_vg2x4.c   | 142 +++++++++\n .../sme2/acle-asm/mla_lane_za32_mf8_vg4x1.c   | 169 ++++++++++\n .../sme2/acle-asm/mla_lane_za32_mf8_vg4x2.c   | 137 +++++++++\n .../sme2/acle-asm/mla_lane_za32_mf8_vg4x4.c   | 143 +++++++++\n .../sme2/acle-asm/mla_za16_mf8_vg2x1.c        | 167 ++++++++++\n .../sme2/acle-asm/mla_za16_mf8_vg2x2.c        | 285 +++++++++++++++++\n .../sme2/acle-asm/mla_za16_mf8_vg2x4.c        | 287 +++++++++++++++++\n .../sme2/acle-asm/mla_za32_mf8_vg4x1.c        | 167 ++++++++++\n .../sme2/acle-asm/mla_za32_mf8_vg4x2.c        | 277 +++++++++++++++++\n .../sme2/acle-asm/mla_za32_mf8_vg4x4.c        | 289 ++++++++++++++++++\n .../aarch64/sme2/acle-asm/test_sme2_acle.h    |  12 +-\n .../acle/general-c/binary_za_slice_lane_1.c   |  14 +\n .../general-c/binary_za_slice_opt_single_1.c  |  16 +\n 20 files changed, 2675 insertions(+), 10 deletions(-)\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x4.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x4.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x4.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x1.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x2.c\n create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x4.c",
    "diff": "diff --git a/gcc/config/aarch64/aarch64-sme.md b/gcc/config/aarch64/aarch64-sme.md\nindex 632ef1e4774..e8301ae72a7 100644\n--- a/gcc/config/aarch64/aarch64-sme.md\n+++ b/gcc/config/aarch64/aarch64-sme.md\n@@ -1999,6 +1999,9 @@ (define_insn \"*aarch64_sme_lane_<optab><mode><mode>\"\n ;; - BFMLSL (SME2)\n ;; - FMLAL (SME2)\n ;; - FMLSL (SME2)\n+;; - FMLAL (multiple and indexed vector, FP8 to FP16 and FP8 to FP32, SME2)\n+;; - FMLAL (multiple and single vector, FP8 to FP16 and FP8 to FP32, SME2)\n+;; - FMLAL (multiple vectors, FP8 to FP16 and FP8 to FP32, SME2)\n ;; -------------------------------------------------------------------------\n \n (define_insn \"@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>\"\n@@ -2129,6 +2132,244 @@ (define_insn \"*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>\"\n   }\n )\n \n+;; svmla_za16[_mf8]_vg2x2_fpm, svmla_za16[_mf8]_vg2x4_fpm\n+;; svmla_za32[_mf8]_vg4x2_fpm, svmla_za32[_mf8]_vg4x4_fpm\n+(define_insn \"@aarch64_sme_<optab><SME_ZA_F8F16_32:mode><SME_ZA_FP8_x24:mode>\"\n+  [(set (reg:SME_ZA_F8F16_32 ZA_REGNUM)\n+\t(unspec:SME_ZA_F8F16_32\n+\t  [(reg:SME_ZA_F8F16_32 ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t   (match_operand:SME_ZA_FP8_x24 1 \"aligned_register_operand\" \"Uw<vector_count>\")\n+\t   (match_operand:SME_ZA_FP8_x24 2 \"aligned_register_operand\" \"Uw<vector_count>\")\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"<SME_ZA_F8F16_32:MODE>mode == VNx8HImode\n+   ? TARGET_STREAMING_SME_F8F16\n+   : TARGET_STREAMING_SME_F8F32\"\n+  \"<optab><SME_ZA_F8F16_32:za16_32_long>\\tza.<SME_ZA_F8F16_32:Vetype>[%w0, 0:<SME_ZA_F8F16_32:za16_32_last_offset>, vgx<vector_count>], %1, %2\"\n+)\n+\n+;; svmla_za16[_mf8]_vg2x2_fpm, svmla_za16[_mf8]_vg2x4_fpm (slice variable + offset)\n+(define_insn \"*aarch64_sme_<optab><VNx8HI_ONLY:mode><SME_ZA_FP8_x24:mode>_plus\"\n+  [(set (reg:VNx8HI_ONLY ZA_REGNUM)\n+\t(unspec:VNx8HI_ONLY\n+\t  [(reg:VNx8HI_ONLY ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (plus:SI (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t\t    (match_operand:SI 1 \"const_<za16_offset_range>_operand\"))\n+\t   (match_operand:SME_ZA_FP8_x24 2 \"aligned_register_operand\" \"Uw<vector_count>\")\n+\t   (match_operand:SME_ZA_FP8_x24 3 \"aligned_register_operand\" \"Uw<vector_count>\")\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"TARGET_STREAMING_SME_F8F16\"\n+  {\n+    operands[4] = GEN_INT (INTVAL (operands[1]) + 1);\n+    return \"<optab>\\tza.h[%w0, %1:%4, vgx<vector_count>], %2, %3\";\n+  }\n+)\n+\n+;; svmla_za32[_mf8]_vg4x2_fpm, svmla_za32[_mf8]_vg4x4_fpm (slice variable + offset)\n+(define_insn \"*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_FP8_x24:mode>_plus\"\n+  [(set (reg:VNx4SI_ONLY ZA_REGNUM)\n+\t(unspec:VNx4SI_ONLY\n+\t  [(reg:VNx4SI_ONLY ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (plus:SI (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t\t    (match_operand:SI 1 \"const_<za32_offset_range>_operand\"))\n+\t   (match_operand:SME_ZA_FP8_x24 2 \"aligned_register_operand\" \"Uw<vector_count>\")\n+\t   (match_operand:SME_ZA_FP8_x24 3 \"aligned_register_operand\" \"Uw<vector_count>\")\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"TARGET_STREAMING_SME_F8F32\"\n+  {\n+    operands[4] = GEN_INT (INTVAL (operands[1]) + 3);\n+    return \"<optab>l\\tza.s[%w0, %1:%4, vgx<vector_count>], %2, %3\";\n+  }\n+)\n+\n+;; svmla_za16[_mf8]_vg2x1_fpm, svmla_za32[_mf8]_vg4x1_fpm\n+(define_insn \"@aarch64_sme_<optab><SME_ZA_F8F16_32:mode><VNx16QI_ONLY:mode>\"\n+  [(set (reg:SME_ZA_F8F16_32 ZA_REGNUM)\n+\t(unspec:SME_ZA_F8F16_32\n+\t  [(reg:SME_ZA_F8F16_32 ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t   (match_operand:VNx16QI_ONLY 1 \"register_operand\" \"w\")\n+\t   (match_operand:VNx16QI_ONLY 2 \"register_operand\" \"x\")\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"<SME_ZA_F8F16_32:MODE>mode == VNx8HImode\n+   ? TARGET_STREAMING_SME_F8F16\n+   : TARGET_STREAMING_SME_F8F32\"\n+  \"<optab><SME_ZA_F8F16_32:za16_32_long>\\tza.<SME_ZA_F8F16_32:Vetype>[%w0, 0:<SME_ZA_F8F16_32:za16_32_last_offset><vg_modifier>], %1.b, %2.b\"\n+)\n+\n+;; svmla_za16[_mf8]_vg2x1_fpm (slice variable + offset)\n+(define_insn \"*aarch64_sme_<optab><VNx8HI_ONLY:mode><VNx16QI_ONLY:mode>_plus\"\n+  [(set (reg:VNx8HI_ONLY ZA_REGNUM)\n+\t(unspec:VNx8HI_ONLY\n+\t  [(reg:VNx8HI_ONLY ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (plus:SI (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t\t    (match_operand:SI 1 \"const_<VNx16QI_ONLY:za32_offset_range>_operand\"))\n+\t   (match_operand:VNx16QI_ONLY 2 \"register_operand\" \"w\")\n+\t   (match_operand:VNx16QI_ONLY 3 \"register_operand\" \"x\")\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"TARGET_STREAMING_SME_F8F16\"\n+  {\n+    operands[4] = GEN_INT (INTVAL (operands[1]) + 1);\n+    return \"<optab>\\tza.h[%w0, %1:%4<vg_modifier>], %2.b, %3.b\";\n+  }\n+)\n+\n+;; svmla_za32[_mf8]_vg4x1_fpm (slice variable + offset)\n+(define_insn \"*aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx16QI_ONLY:mode>_plus\"\n+  [(set (reg:VNx4SI_ONLY ZA_REGNUM)\n+\t(unspec:VNx4SI_ONLY\n+\t  [(reg:VNx4SI_ONLY ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (plus:SI (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t\t    (match_operand:SI 1 \"const_<za32_offset_range>_operand\"))\n+\t   (match_operand:VNx16QI_ONLY 2 \"register_operand\" \"w\")\n+\t   (match_operand:VNx16QI_ONLY 3 \"register_operand\" \"x\")\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"TARGET_STREAMING_SME_F8F32\"\n+  {\n+    operands[4] = GEN_INT (INTVAL (operands[1]) + 3);\n+    return \"<optab>l\\tza.s[%w0, %1:%4<vg_modifier>], %2.b, %3.b\";\n+  }\n+)\n+\n+;; svmla[_single]_za16[_mf8]_vg2x2_fpm, svmla[_single]_za16[_mf8]_vg2x4_fpm,\n+;; svmla[_single]_za32[_mf8]_vg4x2_fpm, svmla[_single]_za32[_mf8]_vg4x4_fpm\n+(define_insn \"@aarch64_sme_single_<optab><SME_ZA_F8F16_32:mode><SME_ZA_FP8_x24:mode>\"\n+  [(set (reg:SME_ZA_F8F16_32 ZA_REGNUM)\n+\t(unspec:SME_ZA_F8F16_32\n+\t  [(reg:SME_ZA_F8F16_32 ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t   (match_operand:SME_ZA_FP8_x24 1 \"register_operand\" \"w\")\n+\t   (vec_duplicate:SME_ZA_FP8_x24\n+\t     (match_operand:<SME_ZA_FP8_x24:VSINGLE> 2 \"register_operand\" \"x\"))\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"<SME_ZA_F8F16_32:MODE>mode == VNx8HImode\n+   ? TARGET_STREAMING_SME_F8F16\n+   : TARGET_STREAMING_SME_F8F32\"\n+  \"<optab><SME_ZA_F8F16_32:za16_32_long>\\tza.<SME_ZA_F8F16_32:Vetype>[%w0, 0:<SME_ZA_F8F16_32:za16_32_last_offset>, vgx<vector_count>], %1, %2.b\"\n+)\n+\n+;; svmla[_single]_za16[_mf8]_vg2x2_fpm, svmla[_single]_za16[_mf8]_vg2x4_fpm (slice variable + offset)\n+(define_insn \"*aarch64_sme_single_<optab><VNx8HI_ONLY:mode><SME_ZA_FP8_x24:mode>_plus\"\n+  [(set (reg:VNx8HI_ONLY ZA_REGNUM)\n+\t(unspec:VNx8HI_ONLY\n+\t  [(reg:VNx8HI_ONLY ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (plus:SI (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t\t    (match_operand:SI 1 \"const_<za16_offset_range>_operand\"))\n+\t   (match_operand:SME_ZA_FP8_x24 2 \"register_operand\" \"w\")\n+\t   (vec_duplicate:SME_ZA_FP8_x24\n+\t     (match_operand:<SME_ZA_FP8_x24:VSINGLE> 3 \"register_operand\" \"x\"))\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"TARGET_STREAMING_SME_F8F16\"\n+  {\n+    operands[4] = GEN_INT (INTVAL (operands[1]) + 1);\n+    return \"<optab>\\tza.h[%w0, %1:%4, vgx<vector_count>], %2, %3.b\";\n+  }\n+)\n+\n+;; svmla[_single]_za32[_mf8]_vg4x2_fpm, svmla[_single]_za32[_mf8]_vg4x4_fpm (slice variable + offset)\n+(define_insn \"*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_FP8_x24:mode>_plus\"\n+  [(set (reg:VNx4SI_ONLY ZA_REGNUM)\n+\t(unspec:VNx4SI_ONLY\n+\t  [(reg:VNx4SI_ONLY ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (plus:SI (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t\t    (match_operand:SI 1 \"const_<za32_offset_range>_operand\"))\n+\t   (match_operand:SME_ZA_FP8_x24 2 \"register_operand\" \"w\")\n+\t   (vec_duplicate:SME_ZA_FP8_x24\n+\t     (match_operand:<SME_ZA_FP8_x24:VSINGLE> 3 \"register_operand\" \"x\"))\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"TARGET_STREAMING_SME_F8F32\"\n+  {\n+    operands[4] = GEN_INT (INTVAL (operands[1]) + 3);\n+    return \"<optab>l\\tza.s[%w0, %1:%4, vgx<vector_count>], %2, %3.b\";\n+  }\n+)\n+\n+;; svmla_lane_za16[_mf8]_vg2x1_fpm, svmla_lane_za32[_mf8]_vg4x1_fpm,\n+;; svmla_lane_za16[_mf8]_vg2x2_fpm, svmla_lane_za32[_mf8]_vg4x2_fpm,\n+;; svmla_lane_za16[_mf8]_vg2x4_fpm, svmla_lane_za32[_mf8]_vg4x4_fpm\n+(define_insn \"@aarch64_sme_lane_<optab><SME_ZA_F8F16_32:mode><SME_ZA_FP8_x124:mode>\"\n+  [(set (reg:SME_ZA_F8F16_32 ZA_REGNUM)\n+\t(unspec:SME_ZA_F8F16_32\n+\t  [(reg:SME_ZA_F8F16_32 ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t   (match_operand:SME_ZA_FP8_x124 1 \"<SME_ZA_FP8_x124:aligned_operand>\" \"<SME_ZA_FP8_x124:aligned_fpr>\")\n+\t   (unspec:SME_ZA_FP8_x124\n+\t     [(match_operand:<SME_ZA_FP8_x124:VSINGLE> 2 \"register_operand\" \"x\")\n+\t      (match_operand:SI 3 \"const_int_operand\")]\n+\t     UNSPEC_SVE_LANE_SELECT)\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+  \"<SME_ZA_F8F16_32:MODE>mode == VNx8HImode\n+   ? TARGET_STREAMING_SME_F8F16\n+   : TARGET_STREAMING_SME_F8F32\"\n+  \"<optab><SME_ZA_F8F16_32:za16_32_long>\\tza.<SME_ZA_F8F16_32:Vetype>[%w0, 0:<SME_ZA_F8F16_32:za16_32_last_offset><SME_ZA_FP8_x124:vg_modifier>], %1<SME_ZA_FP8_x124:z_suffix>, %2.b[%3]\"\n+)\n+\n+;; svmla_lane_za16[_mf8]_vg2x1_fpm, svmla_lane_za16[_mf8]_vg2x2_fpm,\n+;; svmla_lane_za16[_mf8]_vg2x4_fpm (slice variable + offset)\n+(define_insn \"*aarch64_sme_lane_<optab><VNx8HI_ONLY:mode><SME_ZA_FP8_x124:mode>\"\n+  [(set (reg:VNx8HI_ONLY ZA_REGNUM)\n+\t(unspec:VNx8HI_ONLY\n+\t  [(reg:VNx8HI_ONLY ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (plus:SI (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t\t    (match_operand:SI 1 \"const_<za16_offset_range>_operand\"))\n+\t   (match_operand:SME_ZA_FP8_x124 2 \"<SME_ZA_FP8_x124:aligned_operand>\" \"<SME_ZA_FP8_x124:aligned_fpr>\")\n+\t   (unspec:SME_ZA_FP8_x124\n+\t     [(match_operand:<SME_ZA_FP8_x124:VSINGLE> 3 \"register_operand\" \"x\")\n+\t      (match_operand:SI 4 \"const_int_operand\")]\n+\t     UNSPEC_SVE_LANE_SELECT)\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+   \"TARGET_STREAMING_SME_F8F16\"\n+  {\n+    operands[5] = GEN_INT (INTVAL (operands[1]) + 1);\n+    return \"<optab>\\tza.h[%w0, %1:%5<SME_ZA_FP8_x124:vg_modifier>], %2<SME_ZA_FP8_x124:z_suffix>, %3.b[%4]\";\n+  }\n+)\n+\n+;; svmla_lane_za32[_mf8]_vg4x1_fpm, svmla_lane_za32[_mf8]_vg4x2_fpm,\n+;; svmla_lane_za32[_mf8]_vg4x4_fpm (slice variable + offset)\n+(define_insn \"*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_FP8_x124:mode>\"\n+  [(set (reg:VNx4SI_ONLY ZA_REGNUM)\n+\t(unspec:VNx4SI_ONLY\n+\t  [(reg:VNx4SI_ONLY ZA_REGNUM)\n+\t   (reg:DI SME_STATE_REGNUM)\n+\t   (plus:SI (match_operand:SI 0 \"register_operand\" \"Uci\")\n+\t\t    (match_operand:SI 1 \"const_<za32_offset_range>_operand\"))\n+\t   (match_operand:SME_ZA_FP8_x124 2 \"<aligned_operand>\" \"<aligned_fpr>\")\n+\t   (unspec:SME_ZA_FP8_x124\n+\t     [(match_operand:<VSINGLE> 3 \"register_operand\" \"x\")\n+\t      (match_operand:SI 4 \"const_int_operand\")]\n+\t     UNSPEC_SVE_LANE_SELECT)\n+\t   (reg:DI FPM_REGNUM)]\n+\t  SME_FP8_TERNARY_SLICE))]\n+   \"TARGET_STREAMING_SME_F8F32\"\n+  {\n+    operands[5] = GEN_INT (INTVAL (operands[1]) + 3);\n+    return \"<optab>l\\tza.s[%w0, %1:%5<SME_ZA_FP8_x124:vg_modifier>], %2<z_suffix>, %3.b[%4]\";\n+  }\n+)\n+\n ;; -------------------------------------------------------------------------\n ;; ---- [FP] Sum of outer products\n ;; -------------------------------------------------------------------------\ndiff --git a/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc b/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc\nindex b315dc91cc7..59f313d08f2 100644\n--- a/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc\n+++ b/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc\n@@ -729,7 +729,7 @@ struct binary_za_slice_lane_base : public overloaded_base<1>\n   resolve (function_resolver &r) const override\n   {\n     sve_type type;\n-    if (!r.check_num_arguments (4)\n+    if (!r.check_num_arguments (r.fpm_mode == FPM_set ? 5: 4)\n \t|| !r.require_scalar_type (0, \"uint32_t\")\n \t|| !(type = r.infer_tuple_type (1))\n \t|| !r.require_derived_vector_type (2, 1, type, TCLASS)\n@@ -758,7 +758,7 @@ struct binary_za_slice_opt_single_base : public overloaded_base<1>\n   resolve (function_resolver &r) const override\n   {\n     sve_type type;\n-    if (!r.check_num_arguments (3)\n+    if (!r.check_num_arguments (r.fpm_mode == FPM_set ? 4: 3)\n \t|| !r.require_scalar_type (0, \"uint32_t\")\n \t|| !(type = r.infer_tuple_type (1)))\n       return error_mark_node;\ndiff --git a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc\nindex 4657e29ad64..43ef05c673a 100644\n--- a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc\n+++ b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc\n@@ -640,10 +640,11 @@ FUNCTION (svluti2_lane_zt, svluti_lane_zt_impl, (2))\n FUNCTION (svluti4_lane_zt, svluti_lane_zt_impl, (4))\n FUNCTION (svluti4_zt, svluti_zt_impl, (4))\n FUNCTION (svmla_za, sme_2mode_function, (UNSPEC_SME_SMLA, UNSPEC_SME_UMLA,\n-\t\t\t\t\t UNSPEC_SME_FMLA))\n+\t\t\t\t\t UNSPEC_SME_FMLA, UNSPEC_SME_FMLAL))\n FUNCTION (svmla_lane_za, sme_2mode_lane_function, (UNSPEC_SME_SMLA,\n \t\t\t\t\t\t   UNSPEC_SME_UMLA,\n-\t\t\t\t\t\t   UNSPEC_SME_FMLA))\n+\t\t\t\t\t\t   UNSPEC_SME_FMLA,\n+\t\t\t\t\t\t   UNSPEC_SME_FMLAL))\n FUNCTION (svmls_za, sme_2mode_function, (UNSPEC_SME_SMLS, UNSPEC_SME_UMLS,\n \t\t\t\t\t UNSPEC_SME_FMLS))\n FUNCTION (svmls_lane_za, sme_2mode_lane_function, (UNSPEC_SME_SMLS,\ndiff --git a/gcc/config/aarch64/aarch64-sve-builtins-sme.def b/gcc/config/aarch64/aarch64-sve-builtins-sme.def\nindex c86d5fa730b..f9ad6837f44 100644\n--- a/gcc/config/aarch64/aarch64-sve-builtins-sme.def\n+++ b/gcc/config/aarch64/aarch64-sve-builtins-sme.def\n@@ -266,9 +266,17 @@ DEF_SME_FUNCTION_GS (svluti4_zt,      luti4_zt,      b_integer, x4,   none)\n #undef REQUIRED_EXTENSIONS\n \n #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME_F8F16)\n+DEF_SME_ZA_FUNCTION_GS_FPM (svmla_lane, binary_za_slice_lane, za_h_mf8,\n+\t\t\t    vg2, none, set)\n+DEF_SME_ZA_FUNCTION_GS_FPM (svmla, binary_za_slice_opt_single, za_h_mf8, vg2, none, set)\n+DEF_SME_ZA_FUNCTION_GS_FPM (svmla, binary_za_slice_opt_single, za_h_mf8, vg1x24, none, set)\n #undef REQUIRED_EXTENSIONS\n \n #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME_F8F32)\n+DEF_SME_ZA_FUNCTION_GS_FPM (svmla_lane, binary_za_slice_lane, za_s_mf8,\n+\t\t\t    vg4, none, set)\n+DEF_SME_ZA_FUNCTION_GS_FPM (svmla, binary_za_slice_opt_single, za_s_mf8, vg4, none, set)\n+DEF_SME_ZA_FUNCTION_GS_FPM (svmla, binary_za_slice_opt_single, za_s_mf8, vg1x24, none, set)\n #undef REQUIRED_EXTENSIONS\n \n #undef DEF_SME_ZA_FUNCTION\ndiff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md\nindex a98f514b8ec..0a093a1b49c 100644\n--- a/gcc/config/aarch64/iterators.md\n+++ b/gcc/config/aarch64/iterators.md\n@@ -758,6 +758,13 @@ (define_mode_iterator SME_ZA_BHIx24 [VNx32QI VNx64QI VNx16HI VNx32HI])\n (define_mode_iterator SME_ZA_HFx124 [VNx8BF VNx16BF VNx32BF\n \t\t\t\t     VNx8HF VNx16HF VNx32HF])\n \n+(define_mode_iterator SME_ZA_F8F16_32 [(VNx8HI \"TARGET_STREAMING_SME_F8F16\")\n+\t\t\t\t       (VNx4SI \"TARGET_STREAMING_SME_F8F32\")])\n+\n+(define_mode_iterator SME_ZA_FP8_x24 [VNx32QI VNx64QI])\n+\n+(define_mode_iterator SME_ZA_FP8_x124 [VNx16QI VNx32QI VNx64QI])\n+\n (define_mode_iterator SME_ZA_HFx24 [VNx16BF VNx32BF VNx16HF VNx32HF])\n \n (define_mode_iterator SME_ZA_HIx124 [VNx8HI VNx16HI VNx32HI])\n@@ -1265,6 +1272,7 @@ (define_c_enum \"unspec\"\n     UNSPEC_SME_FDOT\n     UNSPEC_SME_FVDOT\n     UNSPEC_SME_FMLA\n+    UNSPEC_SME_FMLAL\n     UNSPEC_SME_FMLS\n     UNSPEC_SME_FMOPA\n     UNSPEC_SME_FMOPS\n@@ -2682,6 +2690,10 @@ (define_mode_attr FCMLA_maybe_lane [(V2SF \"<Vtype>\") (V4SF \"<Vetype>[%4]\")\n \t\t\t\t    (V4HF \"<Vetype>[%4]\") (V8HF \"<Vetype>[%4]\")\n \t\t\t\t    ])\n \n+(define_mode_attr za16_offset_range [(VNx16QI \"0_to_14_step_2\")\n+\t\t\t\t     (VNx32QI \"0_to_6_step_2\")\n+\t\t\t\t     (VNx64QI \"0_to_6_step_2\")])\n+\n (define_mode_attr za32_offset_range [(VNx16QI \"0_to_12_step_4\")\n \t\t\t\t     (VNx8BF \"0_to_14_step_2\")\n \t\t\t\t     (VNx8HF \"0_to_14_step_2\")\n@@ -2702,6 +2714,10 @@ (define_mode_attr za64_offset_range [(VNx8HI \"0_to_12_step_4\")\n (define_mode_attr za32_long [(VNx16QI \"ll\") (VNx32QI \"ll\") (VNx64QI \"ll\")\n \t\t\t     (VNx8HI \"l\") (VNx16HI \"l\") (VNx32HI \"l\")])\n \n+(define_mode_attr za16_32_long [(VNx4SI \"l\")(VNx8HI \"\")])\n+\n+(define_mode_attr za16_32_last_offset [(VNx4SI \"3\")(VNx8HI \"1\")])\n+\n (define_mode_attr za32_last_offset [(VNx16QI \"3\") (VNx32QI \"3\") (VNx64QI \"3\")\n \t\t\t\t    (VNx8HI \"1\") (VNx16HI \"1\") (VNx32HI \"1\")])\n \n@@ -4049,6 +4065,8 @@ (define_int_iterator SME_INT_TERNARY_SLICE [UNSPEC_SME_SMLA UNSPEC_SME_SMLS\n \n (define_int_iterator SME_FP_TERNARY_SLICE [UNSPEC_SME_FMLA UNSPEC_SME_FMLS])\n \n+(define_int_iterator SME_FP8_TERNARY_SLICE [UNSPEC_SME_FMLAL])\n+\n ;; Iterators for atomic operations.\n \n (define_int_iterator ATOMIC_LDOP\n@@ -4198,6 +4216,7 @@ (define_int_attr optab [(UNSPEC_ANDF \"and\")\n \t\t\t(UNSPEC_SME_FDOT \"fdot\")\n \t\t\t(UNSPEC_SME_FVDOT \"fvdot\")\n \t\t\t(UNSPEC_SME_FMLA \"fmla\")\n+\t\t\t(UNSPEC_SME_FMLAL \"fmlal\")\n \t\t\t(UNSPEC_SME_FMLS \"fmls\")\n \t\t\t(UNSPEC_SME_FMOPA \"fmopa\")\n \t\t\t(UNSPEC_SME_FMOPS \"fmops\")\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x1.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x1.c\nnew file mode 100644\nindex 00000000000..0d500c15e56\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x1.c\n@@ -0,0 +1,167 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f16_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f16_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme+sme-f8f16\"\n+\n+/*\n+** mla_lane_0_z0_z0_0:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z0\\.b\\[0\\]\n+**\tret\n+*/\n+\n+TEST_ZA_X1 (mla_lane_0_z0_z0_0, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (0, z0, z0, 0, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (0, z0, z0, 0, fpm0))\n+\n+/*\n+** mla_lane_w0_z0_z3_1:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z3\\.b\\[1\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w0_z0_z3_1, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w0, z0, z3, 1, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w0, z0, z3, 1, fpm0))\n+\n+/*\n+** mla_lane_w7_z0_z3_2:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w7\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z3\\.b\\[2\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w7_z0_z3_2, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w7, z0, z3, 2, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w7, z0, z3, 2, fpm0))\n+\n+/*\n+** mla_lane_w8_z7_z3_3:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1\\], z7\\.b, z3\\.b\\[3\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8_z7_z3_3, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8, z7, z3, 3, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8, z7, z3, 3, fpm0))\n+\n+/*\n+** mla_lane_w8_z31_z16_4:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(z[0-7])\\.d, z16\\.d\n+**\tfmlal\tza\\.h\\[w8, 0:1\\], z31\\.b. \\1\\.b\\[4\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8_z31_z16_4, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8, z31, z16, 4, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8, z31, z16, 4, fpm0))\n+\n+/*\n+** mla_lane_w8p1_z0_z0_5:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z0\\.b\\[5\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p1_z0_z0_5, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8 + 1, z0, z0, 5, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8 + 1, z0, z0, 5, fpm0))\n+\n+/*\n+** mla_lane_w8p2_z23_z0_6:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 2:3\\], z23\\.b, z0\\.b\\[6\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p2_z23_z0_6, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8 + 2, z23, z0, 6, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8 + 2, z23, z0, 6, fpm0))\n+\n+/*\n+** mla_lane_w11p6_z23_z0_7:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 6:7\\], z23\\.b, z0\\.b\\[7\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w11p6_z23_z0_7, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w11 + 6, z23, z0, 7, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w11 + 6, z23, z0, 7, fpm0))\n+\n+/*\n+** mla_lane_w8p7_z7_z7_8:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z7\\.b, z7\\.b\\[8\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p7_z7_z7_8, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8 + 7, z7, z7, 8, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8 + 7, z7, z7, 8, fpm0))\n+\n+/*\n+** mla_lane_w11p12_z23_z0_7:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 12:13\\], z23\\.b, z0\\.b\\[7\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w11p12_z23_z0_7, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w11 + 12, z23, z0, 7, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w11 + 12, z23, z0, 7, fpm0))\n+\n+/*\n+** mla_lane_w8p14_z23_z0_10:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 14:15\\], z23\\.b, z0\\.b\\[10\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p14_z23_z0_10, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8 + 14, z23, z0, 10, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8 + 14, z23, z0, 10, fpm0))\n+\n+/*\n+** mla_lane_w8p15_z7_z7_11:\n+**\tadd\t(w8|w9|w10|w11), w8, #?15\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z7\\.b, z7\\.b\\[11\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p15_z7_z7_11, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8 + 15, z7, z7, 11, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8 + 15, z7, z7, 11, fpm0))\n+\n+/*\n+** mla_lane_w8p16_z7_z7_12:\n+**\tadd\t(w8|w9|w10|w11), w8, #?16\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z7\\.b, z7\\.b\\[12\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p16_z7_z7_12, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8 + 16, z7, z7, 12, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8 + 16, z7, z7, 12, fpm0))\n+\n+/*\n+** mla_lane_w8m1_z16_z0_13:\n+**\tsub\t(w8|w9|w10|w11), w8, #?1\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z16\\.b, z0\\.b\\[13\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8m1_z16_z0_13, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w8 - 1, z16, z0, 13, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w8 - 1, z16, z0, 13, fpm0))\n+\n+/*\n+** mla_lane_w12_z0_z3_15:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w12\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z3\\.b\\[15\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w12_z0_z3_15, svmfloat8_t,\n+\t    svmla_lane_za16_mf8_vg2x1_fpm (w12, z0, z3, 15, fpm0),\n+\t    svmla_lane_za16_vg2x1_fpm (w12, z0, z3, 15, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x2.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x2.c\nnew file mode 100644\nindex 00000000000..bba907e6dbc\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x2.c\n@@ -0,0 +1,136 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f16_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f16_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme-f8f16\"\n+\n+/*\n+** mla_lane_0_z0_z4_0:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[0\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_0_z0_z4_0, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (0, z0, z4, 0, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (0, z0, z4, 0, fpm0))\n+\n+/*\n+** mla_lane_w0_z0_z7_1:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z0\\.b - z1\\.b}, z7\\.b\\[1\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w0_z0_z7_1, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w0, z0, z7, 1, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w0, z0, z7, 1, fpm0))\n+\n+/*\n+** mla_lane_w8_z28_z4_2:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z28\\.b - z29\\.b}, z4\\.b\\[2\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z28_z4_2, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w8, z28, z4, 2, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w8, z28, z4, 2, fpm0))\n+\n+/*\n+** mla_lane_w11p2_z0_z4_3:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 2:3, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[3\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w11p2_z0_z4_3, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w11 + 2, z0, z4, 3, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w11 + 2, z0, z4, 3, fpm0))\n+\n+/*\n+** mla_lane_w8p6_z0_z4_4:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 6:7, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[4\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p6_z0_z4_4, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w8 + 6, z0, z4, 4, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w8 + 6, z0, z4, 4, fpm0))\n+\n+/*\n+** mla_lane_w8p7_z0_z4_5:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[5\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p7_z0_z4_5, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w8 + 7, z0, z4, 5, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w8 + 7, z0, z4, 5, fpm0))\n+\n+/*\n+** mla_lane_w8p8_z0_z4_7:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[7\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p8_z0_z4_7, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w8 + 8, z0, z4, 7, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w8 + 8, z0, z4, 7, fpm0))\n+\n+/*\n+** mla_lane_w0m1_z0_z4_9:\n+**\tsub\t(w8|w9|w10|w11), w0, #?1\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[9\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w0m1_z0_z4_9, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w0 - 1, z0, z4, 9, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w0 - 1, z0, z4, 9, fpm0))\n+\n+/*\n+** mla_lane_w8_z4_z15_10:\n+**\tstr\td15, \\[sp, #?-16\\]!\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z4\\.b - z5\\.b}, z15\\.b\\[10\\]\n+**\tldr\td15, \\[sp\\], #?16\n+**\tret\n+*/\n+TEST_ZA_LANE_Z15 (mla_lane_w8_z4_z15_10, svmfloat8x2_t, svmfloat8_t,\n+\t\t  svmla_lane_za16_mf8_vg2x2_fpm (w8, z4, z15, 10, fpm0),\n+\t\t  svmla_lane_za16_vg2x2_fpm (w8, z4, z15, 10, fpm0))\n+\n+/*\n+** mla_lane_w8_z28_z16_11:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(z[0-7]).d, z16.d\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z28\\.b - z29\\.b}, \\1\\.b\\[11\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z28_z16_11, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w8, z28, z16, 11, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w8, z28, z16, 11, fpm0))\n+\n+/*\n+** mla_lane_w8_z17_z7_13:\n+** \tmsr\tfpmr, x1\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], [^\\n]+, z7\\.b\\[13\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z17_z7_13, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w8, z17, z7, 13, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w8, z17, z7, 13, fpm0))\n+\n+/*\n+** mla_lane_w8_z22_z4_15:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z22\\.b - z23\\.b}, z4\\.b\\[15\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z22_z4_15, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x2_fpm (w8, z22, z4, 15, fpm0),\n+\t      svmla_lane_za16_vg2x2_fpm (w8, z22, z4, 15, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x4.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x4.c\nnew file mode 100644\nindex 00000000000..bdce691bc81\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za16_mf8_vg2x4.c\n@@ -0,0 +1,142 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f16_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f16_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme-f8f16\"\n+\n+/*\n+** mla_lane_0_z0_z4_0:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[0\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_0_z0_z4_0, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (0, z0, z4, 0, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (0, z0, z4, 0, fpm0))\n+\n+/*\n+** mla_lane_w0_z0_z7_1:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z0\\.b - z3\\.b}, z7\\.b\\[1\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w0_z0_z7_1, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w0, z0, z7, 1, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w0, z0, z7, 1, fpm0))\n+\n+/*\n+** mla_lane_w8_z28_z4_2:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z28\\.b - z31\\.b}, z4\\.b\\[2\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z28_z4_2, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w8, z28, z4, 2, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w8, z28, z4, 2, fpm0))\n+\n+/*\n+** mla_lane_w11p2_z0_z4_7:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 2:3, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[7\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w11p2_z0_z4_7, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w11 + 2, z0, z4, 7, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w11 + 2, z0, z4, 7, fpm0))\n+\n+/*\n+** mla_lane_w8p6_z0_z4_8:\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 6:7, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[8\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p6_z0_z4_8, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w8 + 6, z0, z4, 8, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w8 + 6, z0, z4, 8, fpm0))\n+\n+/*\n+** mla_lane_w8p7_z0_z4_9:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[9\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p7_z0_z4_9, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w8 + 7, z0, z4, 9, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w8 + 7, z0, z4, 9, fpm0))\n+\n+/*\n+** mla_lane_w8p8_z0_z4_10:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[10\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p8_z0_z4_10, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w8 + 8, z0, z4, 10, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w8 + 8, z0, z4, 10, fpm0))\n+\n+/*\n+** mla_lane_w0m1_z0_z4_11:\n+**\tsub\t(w8|w9|w10|w11), w0, #?1\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[11\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w0m1_z0_z4_11, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w0 - 1, z0, z4, 11, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w0 - 1, z0, z4, 11, fpm0))\n+\n+/*\n+** mla_lane_w8_z4_z15_12:\n+**\tstr\td15, \\[sp, #?-16\\]!\n+** \tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z4\\.b - z7\\.b}, z15\\.b\\[12\\]\n+**\tldr\td15, \\[sp\\], #?16\n+**\tret\n+*/\n+TEST_ZA_LANE_Z15 (mla_lane_w8_z4_z15_12, svmfloat8x4_t, svmfloat8_t,\n+\t\t  svmla_lane_za16_mf8_vg2x4_fpm (w8, z4, z15, 12, fpm0),\n+\t\t  svmla_lane_za16_vg2x4_fpm (w8, z4, z15, 12, fpm0))\n+\n+/*\n+** mla_lane_w8_z28_z16_13:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(z[0-7]).d, z16.d\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z28\\.b - z31\\.b}, \\1\\.b\\[13\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z28_z16_13, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w8, z28, z16, 13, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w8, z28, z16, 13, fpm0))\n+\n+/*\n+** mla_lane_w8_z17_z7_14:\n+** \tmsr\tfpmr, x1\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], [^\\n]+, z7\\.b\\[14\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z17_z7_14, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w8, z17, z7, 14, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w8, z17, z7, 14, fpm0))\n+\n+/*\n+** mla_lane_w8_z22_z4_15:\n+** \tmsr\tfpmr, x1\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], [^\\n]+, z4\\.b\\[15\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z22_z4_15, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za16_mf8_vg2x4_fpm (w8, z22, z4, 15, fpm0),\n+\t      svmla_lane_za16_vg2x4_fpm (w8, z22, z4, 15, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x1.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x1.c\nnew file mode 100644\nindex 00000000000..3dc3ff72110\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x1.c\n@@ -0,0 +1,169 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f32_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f32_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme+sme-f8f32\"\n+\n+/*\n+** mla_lane_0_z0_z0_0:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z0\\.b\\[0\\]\n+**\tret\n+*/\n+\n+TEST_ZA_X1 (mla_lane_0_z0_z0_0, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (0, z0, z0, 0, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (0, z0, z0, 0, fpm0))\n+\n+/*\n+** mla_lane_w0_z0_z3_1:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z3\\.b\\[1\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w0_z0_z3_1, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w0, z0, z3, 1, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w0, z0, z3, 1, fpm0))\n+\n+/*\n+** mla_lane_w7_z0_z3_2:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w7\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z3\\.b\\[2\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w7_z0_z3_2, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w7, z0, z3, 2, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w7, z0, z3, 2, fpm0))\n+\n+/*\n+** mla_lane_w8_z7_z3_3:\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3\\], z7\\.b, z3\\.b\\[3\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8_z7_z3_3, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8, z7, z3, 3, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8, z7, z3, 3, fpm0))\n+\n+/*\n+** mla_lane_w8_z31_z16_4:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(z[0-7])\\.d, z16\\.d\n+**\tfmlall\tza\\.s\\[w8, 0:3\\], z31\\.b. \\1\\.b\\[4\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8_z31_z16_4, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8, z31, z16, 4, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8, z31, z16, 4, fpm0))\n+\n+/*\n+** mla_lane_w8p1_z0_z0_5:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z0\\.b\\[5\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p1_z0_z0_5, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8 + 1, z0, z0, 5, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8 + 1, z0, z0, 5, fpm0))\n+\n+/*\n+** mla_lane_w8p2_z23_z0_6:\n+**\tadd\t(w8|w9|w10|w11), w8, #?2\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z23\\.b, z0\\.b\\[6\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p2_z23_z0_6, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8 + 2, z23, z0, 6, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8 + 2, z23, z0, 6, fpm0))\n+\n+/*\n+** mla_lane_w11p4_z23_z0_7:\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w11, 4:7\\], z23\\.b, z0\\.b\\[7\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w11p4_z23_z0_7, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w11 + 4, z23, z0, 7, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w11 + 4, z23, z0, 7, fpm0))\n+\n+/*\n+** mla_lane_w8p7_z7_z7_8:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z7\\.b, z7\\.b\\[8\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p7_z7_z7_8, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8 + 7, z7, z7, 8, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8 + 7, z7, z7, 8, fpm0))\n+\n+/*\n+** mla_lane_w11p12_z23_z0_9:\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w11, 12:15\\], z23\\.b, z0\\.b\\[9\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w11p12_z23_z0_9, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w11 + 12, z23, z0, 9, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w11 + 12, z23, z0, 9, fpm0))\n+\n+/*\n+** mla_lane_w8p14_z23_z0_10:\n+**\tadd\t(w8|w9|w10|w11), w8, #?14\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3\\], z23\\.b, z0\\.b\\[10\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p14_z23_z0_10, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8 + 14, z23, z0, 10, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8 + 14, z23, z0, 10, fpm0))\n+\n+/*\n+** mla_lane_w8p15_z7_z7_11:\n+**\tadd\t(w8|w9|w10|w11), w8, #?15\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z7\\.b, z7\\.b\\[11\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p15_z7_z7_11, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8 + 15, z7, z7, 11, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8 + 15, z7, z7, 11, fpm0))\n+\n+/*\n+** mla_lane_w8p16_z7_z7_12:\n+**\tadd\t(w8|w9|w10|w11), w8, #?16\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z7\\.b, z7\\.b\\[12\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8p16_z7_z7_12, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8 + 16, z7, z7, 12, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8 + 16, z7, z7, 12, fpm0))\n+\n+/*\n+** mla_lane_w8m1_z16_z0_13:\n+**\tsub\t(w8|w9|w10|w11), w8, #?1\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z16\\.b, z0\\.b\\[13\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w8m1_z16_z0_13, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w8 - 1, z16, z0, 13, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w8 - 1, z16, z0, 13, fpm0))\n+\n+/*\n+** mla_lane_w12_z0_z3_15:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w12\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z3\\.b\\[15\\]\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_lane_w12_z0_z3_15, svmfloat8_t,\n+\t    svmla_lane_za32_mf8_vg4x1_fpm (w12, z0, z3, 15, fpm0),\n+\t    svmla_lane_za32_vg4x1_fpm (w12, z0, z3, 15, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x2.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x2.c\nnew file mode 100644\nindex 00000000000..7717aabfd2a\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x2.c\n@@ -0,0 +1,137 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f32_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f32_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme-f8f32\"\n+\n+/*\n+** mla_lane_0_z0_z4_0:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[0\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_0_z0_z4_0, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (0, z0, z4, 0, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (0, z0, z4, 0, fpm0))\n+\n+/*\n+** mla_lane_w0_z0_z7_1:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z0\\.b - z1\\.b}, z7\\.b\\[1\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w0_z0_z7_1, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w0, z0, z7, 1, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w0, z0, z7, 1, fpm0))\n+\n+/*\n+** mla_lane_w8_z28_z4_2:\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z28\\.b - z29\\.b}, z4\\.b\\[2\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z28_z4_2, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w8, z28, z4, 2, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w8, z28, z4, 2, fpm0))\n+\n+/*\n+** mla_lane_w11p4_z0_z4_3:\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w11, 4:7, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[3\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w11p4_z0_z4_3, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w11 + 4, z0, z4, 3, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w11 + 4, z0, z4, 3, fpm0))\n+\n+/*\n+** mla_lane_w8p6_z0_z4_4:\n+**\tadd\t(w8|w9|w10|w11), w8, #?6\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[4\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p6_z0_z4_4, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w8 + 6, z0, z4, 4, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w8 + 6, z0, z4, 4, fpm0))\n+\n+/*\n+** mla_lane_w8p7_z0_z4_5:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[5\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p7_z0_z4_5, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w8 + 7, z0, z4, 5, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w8 + 7, z0, z4, 5, fpm0))\n+\n+/*\n+** mla_lane_w8p8_z0_z4_7:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[7\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p8_z0_z4_7, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w8 + 8, z0, z4, 7, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w8 + 8, z0, z4, 7, fpm0))\n+\n+/*\n+** mla_lane_w0m1_z0_z4_9:\n+**\tsub\t(w8|w9|w10|w11), w0, #?1\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z0\\.b - z1\\.b}, z4\\.b\\[9\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w0m1_z0_z4_9, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w0 - 1, z0, z4, 9, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w0 - 1, z0, z4, 9, fpm0))\n+\n+/*\n+** mla_lane_w8_z4_z15_10:\n+**\tstr\td15, \\[sp, #?-16\\]!\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z4\\.b - z5\\.b}, z15\\.b\\[10\\]\n+**\tldr\td15, \\[sp\\], #?16\n+**\tret\n+*/\n+TEST_ZA_LANE_Z15 (mla_lane_w8_z4_z15_10, svmfloat8x2_t, svmfloat8_t,\n+\t\t  svmla_lane_za32_mf8_vg4x2_fpm (w8, z4, z15, 10, fpm0),\n+\t\t  svmla_lane_za32_vg4x2_fpm (w8, z4, z15, 10, fpm0))\n+\n+/*\n+** mla_lane_w8_z28_z16_11:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(z[0-7]).d, z16.d\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z28\\.b - z29\\.b}, \\1\\.b\\[11\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z28_z16_11, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w8, z28, z16, 11, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w8, z28, z16, 11, fpm0))\n+\n+/*\n+** mla_lane_w8_z17_z7_13:\n+** \tmsr\tfpmr, x1\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], [^\\n]+, z7\\.b\\[13\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z17_z7_13, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w8, z17, z7, 13, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w8, z17, z7, 13, fpm0))\n+\n+/*\n+** mla_lane_w8_z22_z4_15:\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z22\\.b - z23\\.b}, z4\\.b\\[15\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z22_z4_15, svmfloat8x2_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x2_fpm (w8, z22, z4, 15, fpm0),\n+\t      svmla_lane_za32_vg4x2_fpm (w8, z22, z4, 15, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x4.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x4.c\nnew file mode 100644\nindex 00000000000..159b1048c84\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_lane_za32_mf8_vg4x4.c\n@@ -0,0 +1,143 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f32_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f32_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme-f8f32\"\n+\n+/*\n+** mla_lane_0_z0_z4_0:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[0\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_0_z0_z4_0, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (0, z0, z4, 0, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (0, z0, z4, 0, fpm0))\n+\n+/*\n+** mla_lane_w0_z0_z7_1:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z0\\.b - z3\\.b}, z7\\.b\\[1\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w0_z0_z7_1, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w0, z0, z7, 1, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w0, z0, z7, 1, fpm0))\n+\n+/*\n+** mla_lane_w8_z28_z4_2:\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z28\\.b - z31\\.b}, z4\\.b\\[2\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z28_z4_2, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w8, z28, z4, 2, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w8, z28, z4, 2, fpm0))\n+\n+/*\n+** mla_lane_w11p4_z0_z4_7:\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w11, 4:7, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[7\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w11p4_z0_z4_7, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w11 + 4, z0, z4, 7, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w11 + 4, z0, z4, 7, fpm0))\n+\n+/*\n+** mla_lane_w8p6_z0_z4_8:\n+**\tadd\t(w8|w9|w10|w11), w8, #?6\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[8\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p6_z0_z4_8, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w8 + 6, z0, z4, 8, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w8 + 6, z0, z4, 8, fpm0))\n+\n+/*\n+** mla_lane_w8p7_z0_z4_9:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[9\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p7_z0_z4_9, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w8 + 7, z0, z4, 9, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w8 + 7, z0, z4, 9, fpm0))\n+\n+/*\n+** mla_lane_w8p8_z0_z4_10:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[10\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8p8_z0_z4_10, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w8 + 8, z0, z4, 10, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w8 + 8, z0, z4, 10, fpm0))\n+\n+/*\n+** mla_lane_w0m1_z0_z4_11:\n+**\tsub\t(w8|w9|w10|w11), w0, #?1\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z0\\.b - z3\\.b}, z4\\.b\\[11\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w0m1_z0_z4_11, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w0 - 1, z0, z4, 11, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w0 - 1, z0, z4, 11, fpm0))\n+\n+/*\n+** mla_lane_w8_z4_z15_12:\n+**\tstr\td15, \\[sp, #?-16\\]!\n+** \tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z4\\.b - z7\\.b}, z15\\.b\\[12\\]\n+**\tldr\td15, \\[sp\\], #?16\n+**\tret\n+*/\n+TEST_ZA_LANE_Z15 (mla_lane_w8_z4_z15_12, svmfloat8x4_t, svmfloat8_t,\n+\t\t  svmla_lane_za32_mf8_vg4x4_fpm (w8, z4, z15, 12, fpm0),\n+\t\t  svmla_lane_za32_vg4x4_fpm (w8, z4, z15, 12, fpm0))\n+\n+/*\n+** mla_lane_w8_z28_z16_13:\n+** \tmsr\tfpmr, x1\n+**\tmov\t(z[0-7]).d, z16.d\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z28\\.b - z31\\.b}, \\1\\.b\\[13\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z28_z16_13, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w8, z28, z16, 13, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w8, z28, z16, 13, fpm0))\n+\n+/*\n+** mla_lane_w8_z17_z7_14:\n+** \tmsr\tfpmr, x1\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], [^\\n]+, z7\\.b\\[14\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z17_z7_14, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w8, z17, z7, 14, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w8, z17, z7, 14, fpm0))\n+\n+/*\n+** mla_lane_w8_z22_z4_15:\n+** \tmsr\tfpmr, x1\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tmov\t[^\\n]+\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], [^\\n]+, z4\\.b\\[15\\]\n+**\tret\n+*/\n+TEST_ZA_LANE (mla_lane_w8_z22_z4_15, svmfloat8x4_t, svmfloat8_t,\n+\t      svmla_lane_za32_mf8_vg4x4_fpm (w8, z22, z4, 15, fpm0),\n+\t      svmla_lane_za32_vg4x4_fpm (w8, z22, z4, 15, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x1.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x1.c\nnew file mode 100644\nindex 00000000000..1c67705ab6c\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x1.c\n@@ -0,0 +1,167 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f16_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f16_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme+sme-f8f16\"\n+\n+/*\n+** mla_0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_0_z0_z0, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (0, z0, z0, fpm0),\n+\t    svmla_za16_vg2x1_fpm (0, z0, z0, fpm0))\n+\n+/*\n+** mla_w0_z0_z3:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z3\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w0_z0_z3, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w0, z0, z3, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w0, z0, z3, fpm0))\n+\n+/*\n+** mla_w7_z0_z3:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w7\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z3\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w7_z0_z3, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w7, z0, z3, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w7, z0, z3, fpm0))\n+\n+/*\n+** mla_w8_z7_z3:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1\\], z7\\.b, z3\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8_z7_z3, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w8, z7, z3, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w8, z7, z3, fpm0))\n+\n+/*\n+** mla_w8_z31_z16:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(z[0-7])\\.d, z16\\.d\n+**\tfmlal\tza\\.h\\[w8, 0:1\\], z31\\.b. \\1\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8_z31_z16, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w8, z31, z16, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w8, z31, z16, fpm0))\n+\n+/*\n+** mla_w8p1_z0_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8p1_z0_z0, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w8 + 1, z0, z0, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w8 + 1, z0, z0, fpm0))\n+\n+/*\n+** mla_w10p4_z23_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w10, 4:5\\], z23\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w10p4_z23_z0, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w10 + 4, z23, z0, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w10 + 4, z23, z0, fpm0))\n+\n+/*\n+** mla_w11p6_z23_z0:\n+**\tadd\t(w8|w9|w10|w11), w11, #?6\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z23\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w11p6_z23_z0, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w11 + 6, z23, z0, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w11 + 6, z23, z0, fpm0))\n+\n+/*\n+** mla_w9p8_z7_z7:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w9, 8:9\\], z7\\.b, z7\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w9p8_z7_z7, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w9 + 8, z7, z7, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w9 + 8, z7, z7, fpm0))\n+\n+/*\n+** mla_w11p12_z23_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 12:13\\], z23\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w11p12_z23_z0, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w11 + 12, z23, z0, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w11 + 12, z23, z0, fpm0))\n+\n+/*\n+** mla_w8p14_z23_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?14\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z23\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8p14_z23_z0, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w8 + 14, z23, z0, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w8 + 14, z23, z0, fpm0))\n+\n+/*\n+** mla_w8p15_z7_z7:\n+**\tadd\t(w8|w9|w10|w11), w8, #?15\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z7\\.b, z7\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8p15_z7_z7, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w8 + 15, z7, z7, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w8 + 15, z7, z7, fpm0))\n+\n+/*\n+** mla_w8p16_z7_z7:\n+**\tadd\t(w8|w9|w10|w11), w8, #?16\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z7\\.b, z7\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8p16_z7_z7, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w8 + 16, z7, z7, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w8 + 16, z7, z7, fpm0))\n+\n+/*\n+** mla_w8m1_z16_z0:\n+**\tsub\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z16\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8m1_z16_z0, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w8 - 1, z16, z0, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w8 - 1, z16, z0, fpm0))\n+\n+/*\n+** mla_w12_z0_z3:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w12\n+**\tfmlal\tza\\.h\\[\\1, 0:1\\], z0\\.b, z3\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w12_z0_z3, svmfloat8_t,\n+\t    svmla_za16_mf8_vg2x1_fpm (w12, z0, z3, fpm0),\n+\t    svmla_za16_vg2x1_fpm (w12, z0, z3, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x2.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x2.c\nnew file mode 100644\nindex 00000000000..8dc613bb3c7\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x2.c\n@@ -0,0 +1,285 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f16_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f16_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme+sme-f8f16\"\n+\n+/*\n+** mla_0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z0\\.b - z1\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_0_z0_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (0, z0, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (0, z0, z0, fpm0))\n+\n+/*\n+** mla_w0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z0\\.b - z1\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w0_z0_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w0, z0, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w0, z0, z0, fpm0))\n+\n+/*\n+** mla_w8_z0_z4:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z0\\.b - z1\\.b}, {z4\\.b - z5\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z4, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8, z0, z4, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8, z0, z4, fpm0))\n+\n+/*\n+** mla_w8_z4_z18:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z4\\.b - z5\\.b}, {z18\\.b - z19\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z4_z18, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8, z4, z18, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8, z4, z18, fpm0))\n+\n+/* Leave the assembler to check for correctness for misaligned registers.  */\n+\n+/*\n+** mla_w8_z0_z23:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z0\\.b - z1\\.b}, [^\\n]+\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z23, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8, z0, z23, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8, z0, z23, fpm0))\n+\n+/*\n+** mla_w8_z23_z0:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], [^\\n]+, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z23_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8, z23, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8, z23, z0, fpm0))\n+\n+/*\n+** mla_w8_z18_z28:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z18\\.b - z19\\.b}, {z28\\.b - z29\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z18_z28, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8, z18, z28, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8, z18, z28, fpm0))\n+\n+/*\n+** mla_w8_z28_z4:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z28\\.b - z29\\.b}, {z4\\.b - z5\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z28_z4, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8, z28, z4, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8, z28, z4, fpm0))\n+\n+/*\n+** mla_w8p1_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p1_z4_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8 + 1, z4, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8 + 1, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p2_z4_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 2:3, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p2_z4_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8 + 2, z4, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8 + 2, z4, z0, fpm0))\n+\n+/*\n+** mla_w11p4_z4_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 4:5, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w11p4_z4_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w11 + 4, z4, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w11 + 4, z4, z0, fpm0))\n+\n+/*\n+** mla_w11p6_z4_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 6:7, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w11p6_z4_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w11 + 6, z4, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w11 + 6, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p7_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p7_z4_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8 + 7, z4, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8 + 7, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p8_z4_z4:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z4\\.b - z5\\.b}, {z4\\.b - z5\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p8_z4_z4, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8 + 8, z4, z4, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8 + 8, z4, z4, fpm0))\n+\n+/*\n+** mla_w8m1_z4_z0:\n+**\tsub\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8m1_z4_z0, svmfloat8x2_t,\n+\t    svmla_za16_mf8_vg2x2_fpm (w8 - 1, z4, z0, fpm0),\n+\t    svmla_za16_vg2x2_fpm (w8 - 1, z4, z0, fpm0))\n+\n+/*\n+** mla_single_0_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_0_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (0, z1, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (0, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w0_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w0_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w0, z1, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w0, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w8, z1, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w8, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p1_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p1_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w8 + 1, z1, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w8 + 1, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p2_z20_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 2:3, vgx2\\], {z20\\.b - z21\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p2_z20_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w8 + 2, z20, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w8 + 2, z20, z0, fpm0))\n+\n+/*\n+** mla_single_w11p6_z27_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 6:7, vgx2\\], {z27\\.b - z28\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w11p6_z27_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w11 + 6, z27, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w11 + 6, z27, z0, fpm0))\n+\n+/*\n+** mla_single_w8p7_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p7_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w8 + 7, z1, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w8 + 7, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p8_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p8_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w8 + 8, z1, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w8 + 8, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w0m1_z1_z0:\n+**\tsub\t(w8|w9|w10|w11), w0, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w0m1_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w0 - 1, z1, z0, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w0 - 1, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8_z0_z15:\n+**\tstr\td15, \\[sp, #?-16\\]!\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z0\\.b - z1\\.b}, z15\\.b\n+**\tldr\td15, \\[sp\\], #?16\n+**\tret\n+*/\n+TEST_ZA_SINGLE_Z15 (mla_single_w8_z0_z15, svmfloat8x2_t, svmfloat8_t,\n+\t\t    svmla_single_za16_mf8_vg2x2_fpm (w8, z0, z15, fpm0),\n+\t\t    svmla_za16_vg2x2_fpm (w8, z0, z15, fpm0))\n+\n+/*\n+** mla_single_w8_z20_z16:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(z[0-7]).d, z16.d\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx2\\], {z20\\.b - z21\\.b}, \\1\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8_z20_z16, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x2_fpm (w8, z20, z16, fpm0),\n+\t        svmla_za16_vg2x2_fpm (w8, z20, z16, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x4.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x4.c\nnew file mode 100644\nindex 00000000000..204231314c4\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za16_mf8_vg2x4.c\n@@ -0,0 +1,287 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f16_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f16_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme+sme-f8f16\"\n+\n+/*\n+** mla_0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z0\\.b - z3\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_0_z0_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (0, z0, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (0, z0, z0, fpm0))\n+\n+/*\n+** mla_w0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z0\\.b - z3\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w0_z0_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w0, z0, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w0, z0, z0, fpm0))\n+\n+/*\n+** mla_w8_z0_z4:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z0\\.b - z3\\.b}, {z4\\.b - z7\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z4, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8, z0, z4, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8, z0, z4, fpm0))\n+\n+/* Leave the assembler to check for correctness for misaligned registers.  */\n+\n+/*\n+** mla_w8_z0_z18:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z0\\.b - z3\\.b}, [^\\n]+\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z18, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8, z0, z18, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8, z0, z18, fpm0))\n+\n+/*\n+** mla_w8_z18_z0:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], [^\\n]+, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z18_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8, z18, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8, z18, z0, fpm0))\n+\n+/*\n+** mla_w8_z0_z23:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z0\\.b - z3\\.b}, [^\\n]+\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z23, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8, z0, z23, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8, z0, z23, fpm0))\n+\n+/*\n+** mla_w8_z23_z0:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], [^\\n]+, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z23_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8, z23, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8, z23, z0, fpm0))\n+\n+/*\n+** mla_w8_z4_z28:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z4\\.b - z7\\.b}, {z28\\.b - z31\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z4_z28, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8, z4, z28, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8, z4, z28, fpm0))\n+\n+/*\n+** mla_w8_z28_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z28\\.b - z31\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z28_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8, z28, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8, z28, z0, fpm0))\n+\n+/*\n+** mla_w8p1_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p1_z4_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8 + 1, z4, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8 + 1, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p2_z4_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 2:3, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p2_z4_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8 + 2, z4, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8 + 2, z4, z0, fpm0))\n+\n+/*\n+** mla_w11p6_z4_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w11, 6:7, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w11p6_z4_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w11 + 6, z4, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w11 + 6, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p7_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p7_z4_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8 + 7, z4, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8 + 7, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p8_z4_z4:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z4\\.b - z7\\.b}, {z4\\.b - z7\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p8_z4_z4, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8 + 8, z4, z4, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8 + 8, z4, z4, fpm0))\n+\n+/*\n+** mla_w8m1_z4_z0:\n+**\tsub\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8m1_z4_z0, svmfloat8x4_t,\n+\t    svmla_za16_mf8_vg2x4_fpm (w8 - 1, z4, z0, fpm0),\n+\t    svmla_za16_vg2x4_fpm (w8 - 1, z4, z0, fpm0))\n+\n+/*\n+** mla_single_0_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_0_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (0, z1, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (0, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w0_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w0_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w0, z1, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w0, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w8, z1, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w8, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p1_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p1_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w8 + 1, z1, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w8 + 1, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p2_z20_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 2:3, vgx4\\], {z20\\.b - z23\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p2_z20_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w8 + 2, z20, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w8 + 2, z20, z0, fpm0))\n+\n+/*\n+** mla_single_w8p6_z27_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 6:7, vgx4\\], {z27\\.b - z30\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p6_z27_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w8 + 6, z27, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w8 + 6, z27, z0, fpm0))\n+\n+/*\n+** mla_single_w8p7_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p7_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w8 + 7, z1, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w8 + 7, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p8_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p8_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w8 + 8, z1, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w8 + 8, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w0m1_z1_z0:\n+**\tsub\t(w8|w9|w10|w11), w0, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[\\1, 0:1, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w0m1_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w0 - 1, z1, z0, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w0 - 1, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8_z0_z15:\n+**\tstr\td15, \\[sp, #?-16\\]!\n+**\tmsr\tfpmr, x1\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z0\\.b - z3\\.b}, z15\\.b\n+**\tldr\td15, \\[sp\\], #?16\n+**\tret\n+*/\n+TEST_ZA_SINGLE_Z15 (mla_single_w8_z0_z15, svmfloat8x4_t, svmfloat8_t,\n+\t\t    svmla_single_za16_mf8_vg2x4_fpm (w8, z0, z15, fpm0),\n+\t\t    svmla_za16_vg2x4_fpm (w8, z0, z15, fpm0))\n+\n+/*\n+** mla_single_w8_z20_z16:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(z[0-7]).d, z16.d\n+**\tfmlal\tza\\.h\\[w8, 0:1, vgx4\\], {z20\\.b - z23\\.b}, \\1\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8_z20_z16, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za16_mf8_vg2x4_fpm (w8, z20, z16, fpm0),\n+\t        svmla_za16_vg2x4_fpm (w8, z20, z16, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x1.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x1.c\nnew file mode 100644\nindex 00000000000..cb1832b18d9\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x1.c\n@@ -0,0 +1,167 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f32_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f32_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme+sme-f8f32\"\n+\n+/*\n+** mla_0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_0_z0_z0, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (0, z0, z0, fpm0),\n+\t    svmla_za32_vg4x1_fpm (0, z0, z0, fpm0))\n+\n+/*\n+** mla_w0_z0_z3:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z3\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w0_z0_z3, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w0, z0, z3, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w0, z0, z3, fpm0))\n+\n+/*\n+** mla_w7_z0_z3:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w7\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z3\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w7_z0_z3, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w7, z0, z3, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w7, z0, z3, fpm0))\n+\n+/*\n+** mla_w8_z7_z3:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3\\], z7\\.b, z3\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8_z7_z3, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w8, z7, z3, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w8, z7, z3, fpm0))\n+\n+/*\n+** mla_w8_z31_z16:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(z[0-7])\\.d, z16\\.d\n+**\tfmlall\tza\\.s\\[w8, 0:3\\], z31\\.b. \\1\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8_z31_z16, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w8, z31, z16, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w8, z31, z16, fpm0))\n+\n+/*\n+** mla_w8p1_z0_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8p1_z0_z0, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w8 + 1, z0, z0, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w8 + 1, z0, z0, fpm0))\n+\n+/*\n+** mla_w10p4_z23_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w10, 4:7\\], z23\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w10p4_z23_z0, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w10 + 4, z23, z0, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w10 + 4, z23, z0, fpm0))\n+\n+/*\n+** mla_w11p6_z23_z0:\n+**\tadd\t(w8|w9|w10|w11), w11, #?6\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z23\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w11p6_z23_z0, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w11 + 6, z23, z0, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w11 + 6, z23, z0, fpm0))\n+\n+/*\n+** mla_w9p8_z7_z7:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w9, 8:11\\], z7\\.b, z7\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w9p8_z7_z7, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w9 + 8, z7, z7, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w9 + 8, z7, z7, fpm0))\n+\n+/*\n+** mla_w11p12_z23_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w11, 12:15\\], z23\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w11p12_z23_z0, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w11 + 12, z23, z0, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w11 + 12, z23, z0, fpm0))\n+\n+/*\n+** mla_w8p14_z23_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?14\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z23\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8p14_z23_z0, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w8 + 14, z23, z0, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w8 + 14, z23, z0, fpm0))\n+\n+/*\n+** mla_w8p15_z7_z7:\n+**\tadd\t(w8|w9|w10|w11), w8, #?15\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z7\\.b, z7\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8p15_z7_z7, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w8 + 15, z7, z7, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w8 + 15, z7, z7, fpm0))\n+\n+/*\n+** mla_w8p16_z7_z7:\n+**\tadd\t(w8|w9|w10|w11), w8, #?16\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z7\\.b, z7\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8p16_z7_z7, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w8 + 16, z7, z7, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w8 + 16, z7, z7, fpm0))\n+\n+/*\n+** mla_w8m1_z16_z0:\n+**\tsub\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z16\\.b, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w8m1_z16_z0, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w8 - 1, z16, z0, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w8 - 1, z16, z0, fpm0))\n+\n+/*\n+** mla_w12_z0_z3:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w12\n+**\tfmlall\tza\\.s\\[\\1, 0:3\\], z0\\.b, z3\\.b\n+**\tret\n+*/\n+TEST_ZA_X1 (mla_w12_z0_z3, svmfloat8_t,\n+\t    svmla_za32_mf8_vg4x1_fpm (w12, z0, z3, fpm0),\n+\t    svmla_za32_vg4x1_fpm (w12, z0, z3, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x2.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x2.c\nnew file mode 100644\nindex 00000000000..246a492ad3e\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x2.c\n@@ -0,0 +1,277 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f32_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f32_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme+sme-f8f32\"\n+\n+/*\n+** mla_0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z0\\.b - z1\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_0_z0_z0, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (0, z0, z0, fpm0),\n+\t    svmla_za32_vg4x2_fpm (0, z0, z0, fpm0))\n+\n+/*\n+** mla_w0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z0\\.b - z1\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w0_z0_z0, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w0, z0, z0, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w0, z0, z0, fpm0))\n+\n+/*\n+** mla_w8_z0_z4:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z0\\.b - z1\\.b}, {z4\\.b - z5\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z4, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8, z0, z4, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8, z0, z4, fpm0))\n+\n+/*\n+** mla_w8_z4_z18:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z4\\.b - z5\\.b}, {z18\\.b - z19\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z4_z18, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8, z4, z18, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8, z4, z18, fpm0))\n+\n+/* Leave the assembler to check for correctness for misaligned registers.  */\n+\n+/*\n+** mla_w8_z0_z23:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z0\\.b - z1\\.b}, [^\\n]+\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z23, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8, z0, z23, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8, z0, z23, fpm0))\n+\n+/*\n+** mla_w8_z23_z0:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], [^\\n]+, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z23_z0, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8, z23, z0, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8, z23, z0, fpm0))\n+\n+/*\n+** mla_w8_z18_z28:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z18\\.b - z19\\.b}, {z28\\.b - z29\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z18_z28, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8, z18, z28, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8, z18, z28, fpm0))\n+\n+/*\n+** mla_w8_z28_z4:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z28\\.b - z29\\.b}, {z4\\.b - z5\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z28_z4, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8, z28, z4, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8, z28, z4, fpm0))\n+\n+/*\n+** mla_w8p1_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p1_z4_z0, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8 + 1, z4, z0, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8 + 1, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p2_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?2\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p2_z4_z0, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8 + 2, z4, z0, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8 + 2, z4, z0, fpm0))\n+\n+/*\n+** mla_w11p4_z4_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w11, 4:7, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w11p4_z4_z0, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w11 + 4, z4, z0, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w11 + 4, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p7_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p7_z4_z0, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8 + 7, z4, z0, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8 + 7, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p8_z4_z4:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z4\\.b - z5\\.b}, {z4\\.b - z5\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p8_z4_z4, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8 + 8, z4, z4, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8 + 8, z4, z4, fpm0))\n+\n+/*\n+** mla_w8m1_z4_z0:\n+**\tsub\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z4\\.b - z5\\.b}, {z0\\.b - z1\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8m1_z4_z0, svmfloat8x2_t,\n+\t    svmla_za32_mf8_vg4x2_fpm (w8 - 1, z4, z0, fpm0),\n+\t    svmla_za32_vg4x2_fpm (w8 - 1, z4, z0, fpm0))\n+\n+/*\n+** mla_single_0_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_0_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (0, z1, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (0, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w0_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w0_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w0, z1, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w0, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w8, z1, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w8, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p1_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p1_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w8 + 1, z1, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w8 + 1, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p2_z20_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?2\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z20\\.b - z21\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p2_z20_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w8 + 2, z20, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w8 + 2, z20, z0, fpm0))\n+\n+/*\n+** mla_single_w11p4_z27_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w11, 4:7, vgx2\\], {z27\\.b - z28\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w11p4_z27_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w11 + 4, z27, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w11 + 4, z27, z0, fpm0))\n+\n+/*\n+** mla_single_w8p7_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p7_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w8 + 7, z1, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w8 + 7, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p8_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p8_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w8 + 8, z1, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w8 + 8, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w0m1_z1_z0:\n+**\tsub\t(w8|w9|w10|w11), w0, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx2\\], {z1\\.b - z2\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w0m1_z1_z0, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w0 - 1, z1, z0, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w0 - 1, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8_z0_z15:\n+**\tstr\td15, \\[sp, #?-16\\]!\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z0\\.b - z1\\.b}, z15\\.b\n+**\tldr\td15, \\[sp\\], #?16\n+**\tret\n+*/\n+TEST_ZA_SINGLE_Z15 (mla_single_w8_z0_z15, svmfloat8x2_t, svmfloat8_t,\n+\t\t    svmla_single_za32_mf8_vg4x2_fpm (w8, z0, z15, fpm0),\n+\t\t    svmla_za32_vg4x2_fpm (w8, z0, z15, fpm0))\n+\n+/*\n+** mla_single_w8_z20_z16:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(z[0-7]).d, z16.d\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx2\\], {z20\\.b - z21\\.b}, \\1\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8_z20_z16, svmfloat8x2_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x2_fpm (w8, z20, z16, fpm0),\n+\t        svmla_za32_vg4x2_fpm (w8, z20, z16, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x4.c b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x4.c\nnew file mode 100644\nindex 00000000000..1b10dc81711\n--- /dev/null\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mla_za32_mf8_vg4x4.c\n@@ -0,0 +1,289 @@\n+/* { dg-do assemble { target { aarch64_asm_sme-f8f32_ok } } } */\n+/* { dg-do compile { target { ! { aarch64_asm_sme-f8f32_ok } } } } */\n+/* { dg-final { check-function-bodies \"**\" \"\" \"-DCHECK_ASM\" } } */\n+\n+#include \"test_sme2_acle.h\"\n+#pragma GCC target \"+sme+sme-f8f32\"\n+\n+/*\n+** mla_0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z0\\.b - z3\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_0_z0_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (0, z0, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (0, z0, z0, fpm0))\n+\n+/*\n+** mla_w0_z0_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z0\\.b - z3\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w0_z0_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w0, z0, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w0, z0, z0, fpm0))\n+\n+/*\n+** mla_w8_z0_z4:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z0\\.b - z3\\.b}, {z4\\.b - z7\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z4, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8, z0, z4, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8, z0, z4, fpm0))\n+\n+/* Leave the assembler to check for correctness for misaligned registers.  */\n+\n+/*\n+** mla_w8_z0_z18:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z0\\.b - z3\\.b}, [^\\n]+\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z18, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8, z0, z18, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8, z0, z18, fpm0))\n+\n+/*\n+** mla_w8_z18_z0:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], [^\\n]+, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z18_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8, z18, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8, z18, z0, fpm0))\n+\n+/*\n+** mla_w8_z0_z23:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z0\\.b - z3\\.b}, [^\\n]+\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z0_z23, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8, z0, z23, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8, z0, z23, fpm0))\n+\n+/*\n+** mla_w8_z23_z0:\n+**\tmsr\tfpmr, x1\n+**\t...\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], [^\\n]+, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z23_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8, z23, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8, z23, z0, fpm0))\n+\n+/*\n+** mla_w8_z4_z28:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z4\\.b - z7\\.b}, {z28\\.b - z31\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z4_z28, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8, z4, z28, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8, z4, z28, fpm0))\n+\n+/*\n+** mla_w8_z28_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z28\\.b - z31\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8_z28_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8, z28, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8, z28, z0, fpm0))\n+\n+/*\n+** mla_w8p1_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p1_z4_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8 + 1, z4, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8 + 1, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p2_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?2\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p2_z4_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8 + 2, z4, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8 + 2, z4, z0, fpm0))\n+\n+/*\n+** mla_w11p4_z4_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w11, 4:7, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w11p4_z4_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w11 + 4, z4, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w11 + 4, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p7_z4_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p7_z4_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8 + 7, z4, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8 + 7, z4, z0, fpm0))\n+\n+/*\n+** mla_w8p8_z4_z4:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z4\\.b - z7\\.b}, {z4\\.b - z7\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8p8_z4_z4, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8 + 8, z4, z4, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8 + 8, z4, z4, fpm0))\n+\n+/*\n+** mla_w8m1_z4_z0:\n+**\tsub\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z4\\.b - z7\\.b}, {z0\\.b - z3\\.b}\n+**\tret\n+*/\n+TEST_ZA_XN (mla_w8m1_z4_z0, svmfloat8x4_t,\n+\t    svmla_za32_mf8_vg4x4_fpm (w8 - 1, z4, z0, fpm0),\n+\t    svmla_za32_vg4x4_fpm (w8 - 1, z4, z0, fpm0))\n+\n+/*\n+** mla_single_0_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), #?0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_0_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (0, z1, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (0, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w0_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(w8|w9|w10|w11), w0\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w0_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w0, z1, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w0, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8_z1_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w8, z1, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w8, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p1_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p1_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w8 + 1, z1, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w8 + 1, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p4_z20_z0:\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 4:7, vgx4\\], {z20\\.b - z23\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p4_z20_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w8 + 4, z20, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w8 + 4, z20, z0, fpm0))\n+\n+/*\n+** mla_single_w8p6_z27_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?6\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z27\\.b - z30\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p6_z27_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w8 + 6, z27, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w8 + 6, z27, z0, fpm0))\n+\n+/*\n+** mla_single_w8p7_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?7\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p7_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w8 + 7, z1, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w8 + 7, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8p8_z1_z0:\n+**\tadd\t(w8|w9|w10|w11), w8, #?8\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8p8_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w8 + 8, z1, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w8 + 8, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w0m1_z1_z0:\n+**\tsub\t(w8|w9|w10|w11), w0, #?1\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[\\1, 0:3, vgx4\\], {z1\\.b - z4\\.b}, z0\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w0m1_z1_z0, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w0 - 1, z1, z0, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w0 - 1, z1, z0, fpm0))\n+\n+/*\n+** mla_single_w8_z0_z15:\n+**\tstr\td15, \\[sp, #?-16\\]!\n+**\tmsr\tfpmr, x1\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z0\\.b - z3\\.b}, z15\\.b\n+**\tldr\td15, \\[sp\\], #?16\n+**\tret\n+*/\n+TEST_ZA_SINGLE_Z15 (mla_single_w8_z0_z15, svmfloat8x4_t, svmfloat8_t,\n+\t\t    svmla_single_za32_mf8_vg4x4_fpm (w8, z0, z15, fpm0),\n+\t\t    svmla_za32_vg4x4_fpm (w8, z0, z15, fpm0))\n+\n+/*\n+** mla_single_w8_z20_z16:\n+**\tmsr\tfpmr, x1\n+**\tmov\t(z[0-7]).d, z16.d\n+**\tfmlall\tza\\.s\\[w8, 0:3, vgx4\\], {z20\\.b - z23\\.b}, \\1\\.b\n+**\tret\n+*/\n+TEST_ZA_SINGLE (mla_single_w8_z20_z16, svmfloat8x4_t, svmfloat8_t,\n+\t        svmla_single_za32_mf8_vg4x4_fpm (w8, z20, z16, fpm0),\n+\t        svmla_za32_vg4x4_fpm (w8, z20, z16, fpm0))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/test_sme2_acle.h b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/test_sme2_acle.h\nindex 8b982caf438..ff237983ad9 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/test_sme2_acle.h\n+++ b/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/test_sme2_acle.h\n@@ -4,7 +4,7 @@\n #include \"../../sme/acle-asm/test_sme_acle.h\"\n \n #define TEST_ZA_X1(NAME, ZTYPE, CODE1, CODE2)\t\t\t\\\n-  PROTO (NAME, void, (int w0))\t\t\t\t\t\\\n+  PROTO (NAME, void, (int w0, fpm_t fpm0))\t\t\t\\\n   {\t\t\t\t\t\t\t\t\\\n     register int w7 __asm (\"w7\");\t\t\t\t\\\n     register int w8 __asm (\"w8\");\t\t\t\t\\\n@@ -26,7 +26,7 @@\n   }\n \n #define TEST_ZA_XN(NAME, TTYPE, CODE1, CODE2)\t\t\t\\\n-  PROTO (NAME, void, (int w0))\t\t\t\t\t\\\n+  PROTO (NAME, void, (int w0, fpm_t fpm0))\t\t\t\\\n   {\t\t\t\t\t\t\t\t\\\n     register int w7 __asm (\"w7\");\t\t\t\t\\\n     register int w8 __asm (\"w8\");\t\t\t\t\\\n@@ -68,7 +68,7 @@\n   }\n \n #define TEST_ZA_SINGLE(NAME, TTYPE, ZTYPE, CODE1, CODE2)\t\\\n-  PROTO (NAME, void, (int w0))\t\t\t\t\t\\\n+  PROTO (NAME, void, (int w0, fpm_t fpm0))\t\t\t\\\n   {\t\t\t\t\t\t\t\t\\\n     register int w8 __asm (\"w8\");\t\t\t\t\\\n     register int w11 __asm (\"w11\");\t\t\t\t\\\n@@ -84,7 +84,7 @@\n   }\n \n #define TEST_ZA_SINGLE_Z15(NAME, TTYPE, ZTYPE, CODE1, CODE2)\t\\\n-  PROTO (NAME, void, (int w0))\t\t\t\t\t\\\n+  PROTO (NAME, void, (int w0, fpm_t fpm0))\t\t\t\\\n   {\t\t\t\t\t\t\t\t\\\n     register int w8 __asm (\"w8\");\t\t\t\t\\\n     register TTYPE z0 __asm (\"z0\");\t\t\t\t\\\n@@ -94,7 +94,7 @@\n   }\n \n #define TEST_ZA_LANE(NAME, TTYPE, ZTYPE, CODE1, CODE2)\t\t\\\n-  PROTO (NAME, void, (int w0))\t\t\t\t\t\\\n+  PROTO (NAME, void, (int w0, fpm_t fpm0))\t\t\t\\\n   {\t\t\t\t\t\t\t\t\\\n     register int w8 __asm (\"w8\");\t\t\t\t\\\n     register int w11 __asm (\"w11\");\t\t\t\t\\\n@@ -112,7 +112,7 @@\n   }\n \n #define TEST_ZA_LANE_Z15(NAME, TTYPE, ZTYPE, CODE1, CODE2)\t\\\n-  PROTO (NAME, void, (int w0))\t\t\t\t\t\\\n+  PROTO (NAME, void, (int w0, fpm_t fpm0))\t\t\t\\\n   {\t\t\t\t\t\t\t\t\\\n     register int w8 __asm (\"w8\");\t\t\t\t\\\n     register TTYPE z4 __asm (\"z4\");\t\t\t\t\\\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_1.c\nindex 2c60d50c6ed..88552980423 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_1.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_slice_lane_1.c\n@@ -71,3 +71,17 @@ f4 (svint16_t s16, svuint16_t u16,\n   svmla_lane_za64_vg4x1 (0, s64, s64, 0); /* { dg-error {'svmla_lane_za64_vg4x1' has no form that takes 'svint64_t' arguments} } */\n   svmla_lane_za64_vg4x1 (0, u64, u64, 0); /* { dg-error {'svmla_lane_za64_vg4x1' has no form that takes 'svuint64_t' arguments} } */\n }\n+\n+#pragma GCC target (\"+sme-f8f32\")\n+\n+f5 (svmfloat8_t mf8,\n+    svmfloat8x2_t mf8x2,\n+    double d, fpm_t fpm)\n+  __arm_streaming __arm_inout(\"za\")\n+{\n+  svmla_lane_za32_vg4x1_fpm (d, mf8, mf8, 0); /* { dg-error {too few arguments to function 'svmla_lane_za32_vg4x1_fpm'} } */\n+  svmla_lane_za32_vg4x1_fpm (d, mf8, mf8, 0, 0, fpm); /* { dg-error {too many arguments to function 'svmla_lane_za32_vg4x1_fpm'} } */\n+  svmla_lane_za32_vg4x1_fpm (d, mf8, mf8, 0, fpm);\n+  svmla_lane_za32_vg4x1_fpm (d, mf8, mf8, -1, fpm); /* { dg-error {passing -1 to argument 4 of 'svmla_lane_za32_vg4x1_fpm', which expects a value in the range \\[0, 15\\]} } */\n+  svmla_lane_za32_vg4x1_fpm (d, mf8, mf8, 16, fpm); /* { dg-error {passing 16 to argument 4 of 'svmla_lane_za32_vg4x1_fpm', which expects a value in the range \\[0, 15\\]} } */\n+}\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_slice_opt_single_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_slice_opt_single_1.c\nindex a361f7f5cb6..b1d9a82916a 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_slice_opt_single_1.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_slice_opt_single_1.c\n@@ -74,3 +74,19 @@ f4 (svint32x2_t s32x2, svuint32x2_t u32x2,\n   svadd_write_za64_vg1x2 (1, s64x2, s64x2);\n   svadd_write_za64_vg1x2 (1, u64x2, u64x2);\n }\n+\n+#pragma GCC target (\"+sme-f8f16\")\n+\n+void\n+f5 (svmfloat8x2_t mf8x2, svmfloat8_t mf8,\n+    svfloat16x2_t f16x2, svfloat16_t f16,\n+    fpm_t fpm)\n+  __arm_streaming __arm_inout(\"za\")\n+{\n+  svmla_single_za16_mf8_vg2x2_fpm (1, mf8x2, mf8); /* { dg-error {too few arguments to function 'svmla_single_za16_mf8_vg2x2_fpm'} } */\n+  svmla_single_za16_mf8_vg2x2_fpm (1, mf8x2, mf8, fpm);\n+  svmla_single_za16_mf8_vg2x2_fpm (1, mf8x2, mf8, fpm, fpm); /* { dg-error {too many arguments to function 'svmla_single_za16_mf8_vg2x2_fpm'} } */\n+  svmla_single_za16_mf8_vg2x2_fpm (1, mf8x2, f16, fpm);  /* { dg-error {incompatible type for argument 3 of 'svmla_single_za16_mf8_vg2x2_fpm'} } */\n+  svmla_single_za16_mf8_vg2x2_fpm (1, f16x2, mf8, fpm);  /* { dg-error {incompatible type for argument 2 of 'svmla_single_za16_mf8_vg2x2_fpm'} } */\n+  svmla_single_za16_mf8_vg2x2_fpm (1, mf8x2, f16, fpm);  /* { dg-error {incompatible type for argument 3 of 'svmla_single_za16_mf8_vg2x2_fpm'} } */\n+}\n",
    "prefixes": [
        "v5",
        "7/9"
    ]
}