{"id":2228696,"url":"http://patchwork.ozlabs.org/api/patches/2228696/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/20260427080642.371531-4-artemiy.volkov@arm.com/","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/projects/17/?format=json","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,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260427080642.371531-4-artemiy.volkov@arm.com>","list_archive_url":null,"date":"2026-04-27T08:06:10","name":"[3/4] aarch64: implement vec_concat support for sub-64-bit types","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"78d2ae5dd0067bd29133b88e5209119ac4cc354d","submitter":{"id":91911,"url":"http://patchwork.ozlabs.org/api/people/91911/?format=json","name":"Artemiy Volkov","email":"artemiy.volkov@arm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/20260427080642.371531-4-artemiy.volkov@arm.com/mbox/","series":[{"id":501601,"url":"http://patchwork.ozlabs.org/api/series/501601/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=501601","date":"2026-04-27T08:06:07","name":"aarch64: vector initialization improvements","version":1,"mbox":"http://patchwork.ozlabs.org/series/501601/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2228696/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2228696/checks/","tags":{},"related":[],"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=GFXSpAMy;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=GFXSpAMy;\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=GFXSpAMy;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=GFXSpAMy","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=52.101.66.44"],"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 4g3xB76645z1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 27 Apr 2026 18:12:14 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 9847E4BAD142\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 27 Apr 2026 08:12:12 +0000 (GMT)","from DUZPR83CU001.outbound.protection.outlook.com\n (mail-northeuropeazon11012044.outbound.protection.outlook.com [52.101.66.44])\n by sourceware.org (Postfix) with ESMTPS id A31BC4BB5902\n for <gcc-patches@gcc.gnu.org>; Mon, 27 Apr 2026 08:08:34 +0000 (GMT)","from CW1P302CA0028.GBRP302.PROD.OUTLOOK.COM (2603:10a6:400:297::10)\n by GV2PR08MB8271.eurprd08.prod.outlook.com (2603:10a6:150:b8::21)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr\n 2026 08:08:27 +0000","from AM3PEPF0000A799.eurprd04.prod.outlook.com\n (2603:10a6:400:297:cafe::d5) by CW1P302CA0028.outlook.office365.com\n (2603:10a6:400:297::10) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,\n 27 Apr 2026 08:08:27 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n AM3PEPF0000A799.mail.protection.outlook.com (10.167.16.104) with Microsoft\n SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18\n via Frontend Transport; Mon, 27 Apr 2026 08:08:26 +0000","from CWLP265CA0516.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:18c::11)\n by VE1PR08MB5758.eurprd08.prod.outlook.com (2603:10a6:800:1a0::11)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr\n 2026 08:07:20 +0000","from AM2PEPF0001C711.eurprd05.prod.outlook.com\n (2603:10a6:400:18c:cafe::3e) by CWLP265CA0516.outlook.office365.com\n (2603:10a6:400:18c::11) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon,\n 27 Apr 2026 08:07:20 +0000","from nebula.arm.com (172.205.89.229) by\n AM2PEPF0001C711.mail.protection.outlook.com (10.167.16.181) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9846.18 via Frontend Transport; Mon, 27 Apr 2026 08:07:19 +0000","from AZ-NEU-EX03.Arm.com (10.240.25.137) 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; Mon, 27 Apr\n 2026 08:06:57 +0000","from ip-10-249-56-202.eu-west-1.compute.internal (10.249.56.202) by\n mail.arm.com (10.240.25.137) with Microsoft SMTP Server id\n 15.2.2562.29 via Frontend Transport; Mon, 27 Apr 2026 08:06:57 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 9847E4BAD142","OpenDKIM Filter v2.11.0 sourceware.org A31BC4BB5902"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org A31BC4BB5902","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org A31BC4BB5902","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1777277314; cv=pass;\n b=aJ0pybwMv1etsuWH3StFtM7qr+a0kUKtAjLWlYjZoGRAZBhS6hEud/ZWx4PIQcNrrD4rWzZRxHfrAKEKdJl8b6KoxV26NOwUYAUXIMfRSEo+5kFOu/0/f3ZK6M0/Y2gleZY2hRHmBFUn0qBmxrabOa2n6loIAINZVtAYIPkzGZ4=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=EwUhN1KCUzEMikPKF/SUYzvemAayUdFh2a+ELQO+GhCnzp/IrnYUNjG97Gd4jLvB5MMD9f9Q/xrKny7osQU1u5spJ9MEvjaMkfImVQkXpUj9qs26uJAlagpQI05GjDRAax0YrjIg0/azpZuQ3iVYgxWj+NA3p6I2pXbnqWo0HVy2tRvDaY8LRmua74TAm2wSUtAbCC2XX4GarekskIx9kg7f+30NFs9ak7JPez89sNJFlpa06ZodbTdrlDIOgUCbUpcIWcUrReUvrFEO2SqA5thzsVjl1newUuDUe5veWp9HTMeBKDZY+sewxfJoY0ssQ84vKXHCIAUtt1238aw88w==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Pn7w6vEbqHwy0bb5GDVqKIA8/nc8ovJElZ7JmC/QsIVySQ/q+lvlpByQJo2yQm0GEFSZMmfMPKiJp50RlxF8wUhtiyqIw4oS+Wt6GzKBz7rR/gj+koTfpZL/NTlWiwGSuENWaeLPRR91pIe6RNX02oDhSYTKsjftHVdDxYTvIlcDqbZSSCVupvq4LoIcRj28FI4G2qXLHe9D8ARVwztF6GvplJ0xopHp5fqsYVuh6yxRdPHtNNA5e84nN7JjBK9+FLkyB3b83k3V1YJEcXq+PXjW0BVdvZ77nlO7pycmM+92/bTPyjCAtjgnHTEdjSeaYPUojW6waX6e6Jcupdl9lA=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777277314; c=relaxed/simple;\n bh=NPxeOARP+sIrUgBjYksnlGeqEwB6ECknfg92iNz4gi4=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=mTBxrFhtj6E0C5XSVGHq8ANMYEmOqrWMzxPhNlvwQ4TG7xAyIMVG2L02f43DmBS4zq8qX84natXBbuhA0BqOZPYgF3ZFEJFGW+GLpQzV7fQO51twe3VnvrCEN1V0NK+DRBBnrjMybnFCWuN8YcUCHG9s+ZRMasAeogn+upGLKxo=","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=weRrdy44YjTaGYZ1B224zXpKYhHm3R6anRvwushh350=;\n b=pO8fesjqAOutFNTLRCRfPuvYL/2u97Ig6N8vTDRmcdcXa22ABAOpMlgsLtlYLl8SFV9MVo/Gu6Jnax0jENswAC1GsdCVizmnaig1K4psTRKKb86tcqpGJVCg3SjD2NFNoHL+MnHrLL2MlC60zSx/JbapOnO3N1VifTePJp1rYLoe9fhEF9rfq2PepjycJgRIidgEye0afcqCRk5G7glMgFxuX3rGMjIbTaJfddPXDaT3i44KgYpCn9y/U2JKqEqEVWsghrTnEsIlWFaXAgOJAJR8d9H6htnSlGwO19sLn6aO8PvrbLi/jFdcwOWgecYJ6GH/ss7QSV35KzWwfHfdSQ==","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=weRrdy44YjTaGYZ1B224zXpKYhHm3R6anRvwushh350=;\n b=sOf6WuDG8snbOP/ghQ/b+jMJHcFvDVPGE78PBUT4Gl+XyO5xFTeh6WNwhUKP2Z9k8/3yDfqeb50or0IAGYB2dppPN5DrAbIkK39o1uGHSZwAleUjSyfDxWuu+1H0GRspkSCp5GJx/UV0FCl1tefidPCH19qndb2tqvuqShWUgOo34zNzva9PWhc1goSTXBW/69nmrf5Eyl0wxfHUAKXJRDjHT7Y3PY67KNOjp3Lrt2dQyWYx0X731y10hoUZ+dCcL3prYxSjb2P5OaOpVLSN59PExHmWE3887Sor1uQmEafDP/q6oLyvcZo46927pOm81NLyma4Qc0jYw4DLD6gQIA=="],"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=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass\n (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass\n (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=weRrdy44YjTaGYZ1B224zXpKYhHm3R6anRvwushh350=;\n b=GFXSpAMyQ4EuGAElOn68CXWSi1MC/+GAJOZJa5Jv/jpb8C/yDrjmtQ7IW6WT/gbfz096argt8lnmTuILhEPtlFNdTGyXHc0d6q4QyTlbtOtU73R6nGjf8JE3TsyE8Guvky7jAAljvf9Z8yacAJPWR/fGsAFTsuX0mB/9DaV4t5Q=","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=weRrdy44YjTaGYZ1B224zXpKYhHm3R6anRvwushh350=;\n b=GFXSpAMyQ4EuGAElOn68CXWSi1MC/+GAJOZJa5Jv/jpb8C/yDrjmtQ7IW6WT/gbfz096argt8lnmTuILhEPtlFNdTGyXHc0d6q4QyTlbtOtU73R6nGjf8JE3TsyE8Guvky7jAAljvf9Z8yacAJPWR/fGsAFTsuX0mB/9DaV4t5Q="],"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":"Artemiy Volkov <artemiy.volkov@arm.com>","To":"<gcc-patches@gcc.gnu.org>","CC":"<tamar.christina@arm.com>, <wilco.dijkstra@arm.com>,\n <andrew.pinski@oss.qualcomm.com>, <richard.earnshaw@arm.com>,\n <ktkachov@nvidia.com>, <alice.carlotti@arm.com>, <alex.coplan@arm.com>,\n Artemiy Volkov <artemiy.volkov@arm.com>","Subject":"[PATCH 3/4] aarch64: implement vec_concat support for sub-64-bit\n types","Date":"Mon, 27 Apr 2026 08:06:10 +0000","Message-ID":"<20260427080642.371531-4-artemiy.volkov@arm.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260427080642.371531-1-artemiy.volkov@arm.com>","References":"<20260427080642.371531-1-artemiy.volkov@arm.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-EOPAttributedMessage":"1","X-MS-TrafficTypeDiagnostic":"\n AM2PEPF0001C711:EE_|VE1PR08MB5758:EE_|AM3PEPF0000A799:EE_|GV2PR08MB8271:EE_","X-MS-Office365-Filtering-Correlation-Id":"064741af-968b-44d7-556a-08dea4342945","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|36860700016|1800799024|82310400026|22082099003|18002099003|56012099003;","X-Microsoft-Antispam-Message-Info-Original":"\n QOQDUMQGgjsZ6bWwSy5U1ElqngWT641zCi7KZIXC6oi815HJeskAjUoOGXLDn2ArjLcg4S34sEI04WVECu5IkqU3z1pKcTpu/wRaL36mxd49feIc8DAqV7hHv0n2WL0M+pkny3L7W59XRnkUszB1141wbhnBTZhDkwUSG12lQQjahfzzKFefLvG3Ukcvy3ON4zBq3ZMgJ1GyBFW+7sMaZ2rJBI+Hw+myTfslrOthJMvFVw0mYcSmrRmgbl1XNmxPfISxDAMpZSa5+rlf3XsBqsUuY9bfxqSHe8Gz7hFSjaMO9eDnyn+oI2gSCdKpoehqFQsImnfAf3001B9JxfRXAlCElBG3tOL4DAe8sMxsF3igc9KBKdcHuFYtIsl7I2t6l32O/8ug7pIsi9/ULriFlOuLikW4Fea/hbEzX0mq7z2lHgVqlSnzFC36mauQg8w7gkl4fHQKD2jwpPY5f91ZH/Taq1A0EqBfQPYJjUbL1+2efhu3rjwGthgkvHFIcZo4OzZha3+eDdGDc7wxcZTgTzH/9uPWjm4KZeubnoV0bZAPqFdI5Ag1isWp95R5a+WmLucobDvR1XcnDJu+c15MBkLYkw3/Iaf0q4tixPG9UYAHu6MrAlQQAArkCzC3VqsgM7Q55+A/vcvj/KoU6450NxwKmUT8rd6FE+ADUb21ojn+rUESdIYvRjkHYs1X+cGzyZP84AXyqfNbK5zQWWBgPaKb+M3K5XC7M7kvCJsS3sQ=","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)(36860700016)(1800799024)(82310400026)(22082099003)(18002099003)(56012099003);\n DIR:OUT; SFP:1101;","X-Exchange-RoutingPolicyChecked":"\n FWAZkCXe6cVCMG7nR/gwU8hoNRIQcZYZ0Bd8162M09UKU6Q2Cx/u+fRbNgVP6EV8NHJqm4nze9qw0WgGlt+U8UIWZBK6tfHKQMs1oIPbDI0cJ/hmb1dgiF6kY+a7RKuYysZotDUS+A+/pow7TBTWyEmi/Dbls2tfvMll8WpIV9heBDS3/HGb/hOF9PHYdUEbhiQ4WmTkvwG/kJqa0JQJkT96JuyFaCr1c3caJfc09bu8eTplLn5CP/Pv4FE0P7sZolz31fXofiWie1CemM5v89z5807EXcBXwUBoYyGuuOWmDdddQzHdX/64iNbHlnPLZcvIrWMEga9weD4VxPCe9g==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["VE1PR08MB5758","GV2PR08MB8271"],"X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n AM3PEPF0000A799.eurprd04.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n 9d8b4349-f261-4966-0cd2-08dea434014d","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|376014|35042699022|14060799003|36860700016|1800799024|82310400026|22082099003|18002099003|56012099003;","X-Microsoft-Antispam-Message-Info":"\n 9AVVo9/utfQhM7lMCN68dooeYh+X3UWZjsq4cOkNBCZqVQfhv1xBfpAZ+jirVaDLt2muJ3SXzL4GkX5nuN4Cu285CG0Y7y8oPf/Qlbx3tykZUr+TVQFeFrM85thn9riuW7QfHNghm4xlGo/1/8NaBEQQHDXSC98VKj1Q1rZbPTbicuReFfikE9dYZS1qogQe8gEyG/l+e7lUjXHY1dE0vAquVu8eKlJimfj5jNHcVZMvojrDr2aWCImXt7Ff2uArfl/MCet6C0NxAGZVT8TpCgO+ycU7Rsi7vNYA7Krm3PBFhTr1249/zA+OvleSeD2YA6uxVf9B65rbCou6a3KN7yz82r85aMvZyHNFxSdpHPSTi+8zSlGdHPPhzzHNO/UCxeLLwTN6RFlmF++kvT7BwcNvVoWi7rGAsfngJlUUumbnJmksRbRC6NcdAMfueBkLqk0p5iq3ePxTPR239UlAYE/BbzvOR0jbmRsLmhvt/MwZ6TZ9JK1YH4fSa6KYiXzTUmyCsblKQnC/93H/FEa6MxHW75qg6G/QMAMoW9I369fUByhRHNn+kNp2l0fm02Zas+rz4BYo2NSsCBTcfEcu2Qpmhw78NZcQ1AEG2vBGVPhErrWh9NR0cbgnBYCnk/rdiU7WQgDdBChaU+Rc/0LG1acEC7xIbw2b5FyoGFi5NrNZoJchTuuFZaQyren5GCD0CeGFMyST5kpEZpSYNKp9TZUsh4D1/9XnE5dA9FNHFBg=","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)(376014)(35042699022)(14060799003)(36860700016)(1800799024)(82310400026)(22082099003)(18002099003)(56012099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n 3FWZG2utdOjLbp51gAHvmg4gBnctS6UnL6xKuT1vtUreEF2kvKxaB3uPAdgCo/9y6M0IpK1sWAgI7mYoNVREzvGdJFClnVHcV4CKPiWq5zId5OAPmVLUU0FU4ykwjGrBiyagT6atbhOSxgt11WubsJg98tPeTzyc5nQnHTP7uhR9JhlKgz1J79napfX4e2MeTty6V/NxAsyc8VAnH7oJhBlAH8SH+fMqfjk9zpNdfcL0Vr41l88NRXjgOz2IiAqYc2Tdgg4jPqtcmf2dcc32rhGwK/qCdpoE/m4oyILqn4f/JFQsIpl/gyKx968sbPAg4xd6bbP1YpH8PAz5f+bXdKlHvSgwjzZBs6lxZR5qED/pSk6RYfy4gjS1MsnlX9C2RxX7l3oKpdr80GLFV22doNVCi13DCKUVM8rHadgjvhbWvRvCIxvMQBDa2sRknWNu","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"27 Apr 2026 08:08:26.9843 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 064741af-968b-44d7-556a-08dea4342945","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 AM3PEPF0000A799.eurprd04.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 improves handling of 2-element vec_concats in\naarch64_vector_init_fallback (); where previously the aarch64_vec_concat\ninsn was emitted only for pairs of vectors, we now allow scalar operands\nas well.  Furthermore, if the two operands are the same, we can now emit a\nvec_duplicate instead of a vec_concat, leading to better code generation.\n\nThis is backed by the new combine{z,_internal}{,_be} insn patterns, that\nwere each split between integral 16- and 32-bit modes (only involving GPRs\nand memory), and the rest (requiring the \"w\" alternatives as well).\n\nThe effect of the changes is illustrated by the changes to vec-init-23.c,\nintroduced in the previous patch (and a handful of other vector-init\nrelated tests).\n\ngcc/ChangeLog:\n\n\t* config/aarch64/aarch64-simd.md (*aarch64_combine_internal<mode>):\n\tNew insn patterns.\n\t(*aarch64_combine_internal_be<mode>): Likewise.\n\t(*aarch64_combinez<mode>): Likewise.\n\t(*aarch64_combinez_be<mode>): Likewise.\n\t(@aarch64_vec_concat<mode>): Support smaller vector and scalar modes.\n\t* config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback):\n\tHandle the case of two scalar elements.\n\t* config/aarch64/iterators.md (SSUB64): New mode iterator.\n\t(VSSUB64): Likewise.\n\t(VSSUB32_I) : Likewise.\n\t(VSSUB64_F): Likewise.\n\t(VS32_I_SUB64_F): Likewise.\n\t(single_wx): Define attribute for sub-64-bit vector and scalar modes.\n\t(VDBL): Likewise.\n\t(single_dwx): New mode attribute.\n\ngcc/testsuite/ChangeLog:\n\n\t* gcc.target/aarch64/sve/gather_load_10.c: Adjust testcase.\n\t* gcc.target/aarch64/sve/slp_1.c: Likewise.\n\t* gcc.target/aarch64/vec-init-18.c: Likewise.\n\t* gcc.target/aarch64/vec-init-23.c: Likewise.\n\t* gcc.target/aarch64/vec-init-single-const.c: Likewise.\n---\n gcc/config/aarch64/aarch64-simd.md            | 115 +++++++++++++++++-\n gcc/config/aarch64/aarch64.cc                 |  19 +--\n gcc/config/aarch64/iterators.md               |  39 +++++-\n .../gcc.target/aarch64/sve/gather_load_10.c   |   3 +-\n gcc/testsuite/gcc.target/aarch64/sve/slp_1.c  |   4 +-\n .../gcc.target/aarch64/vec-init-18.c          |   7 +-\n .../gcc.target/aarch64/vec-init-23.c          |  85 ++++++-------\n .../aarch64/vec-init-single-const.c           |   4 +-\n 8 files changed, 209 insertions(+), 67 deletions(-)","diff":"diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md\nindex 4bb26621efc..b57d4e29807 100644\n--- a/gcc/config/aarch64/aarch64-simd.md\n+++ b/gcc/config/aarch64/aarch64-simd.md\n@@ -4814,6 +4814,34 @@\n   }\n )\n \n+(define_insn \"*aarch64_combine_internal<mode>\"\n+  [(set (match_operand:<VDBL> 0 \"register_operand\")\n+\t(vec_concat:<VDBL>\n+\t  (match_operand:VS32_I_SUB64_F 1 \"register_operand\")\n+\t  (match_operand:VS32_I_SUB64_F 2 \"aarch64_simd_nonimmediate_operand\")))]\n+  \"TARGET_FLOAT\n+   && !BYTES_BIG_ENDIAN\"\n+  {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]\n+     [ w        , w  , w   ; neon_permute              , simd  ] uzp1\\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>\n+     [ w        , 0  , w   ; neon_move                 , simd  ] mov\\t%0.<single_type>[1], %2.<single_type>[0]\n+     [ w        , 0  , Utv ; neon_load1_one_lane       , simd  ] ld1\\t{%0.<single_type>}[1], %2\n+     [ w        , 0  , r   ; neon_from_gp              , simd  ] ins\\t%0.<single_type>[1], %<single_wx>2\n+     [ ?r       , 0  , r   ; bfm                       , *     ] bfi\\t%<single_dwx>0, %<single_dwx>2, <bitsize>, <bitsize>\n+  }\n+)\n+\n+(define_insn \"*aarch64_combine_internal<mode>\"\n+  [(set (match_operand:<VDBL> 0 \"register_operand\")\n+\t(vec_concat:<VDBL>\n+\t  (match_operand:VSSUB32_I 1 \"register_operand\")\n+\t  (match_operand:VSSUB32_I 2 \"aarch64_simd_nonimmediate_operand\")))]\n+  \"TARGET_FLOAT\n+   && !BYTES_BIG_ENDIAN\"\n+  {@ [ cons: =0 , 1  , 2  ; attrs: type               , arch  ]\n+     [ r        , 0  , r  ; bfm                       , *     ] bfi\\t%<single_dwx>0, %<single_dwx>2, <bitsize>, <bitsize>\n+  }\n+)\n+\n (define_insn \"*aarch64_combine_internal_be<mode>\"\n   [(set (match_operand:<VDBL> 0 \"aarch64_reg_or_mem_pair_operand\")\n \t(vec_concat:<VDBL>\n@@ -4833,6 +4861,35 @@\n   }\n )\n \n+(define_insn \"*aarch64_combine_internal_be<mode>\"\n+  [(set (match_operand:<VDBL> 0 \"register_operand\")\n+\t(vec_concat:<VDBL>\n+\t  (match_operand:VS32_I_SUB64_F 2 \"aarch64_simd_nonimmediate_operand\")\n+\t  (match_operand:VS32_I_SUB64_F 1 \"register_operand\")))]\n+  \"TARGET_FLOAT\n+   && BYTES_BIG_ENDIAN\"\n+  {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]\n+     [ w        , w  , w   ; neon_permute              , simd  ] uzp1\\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>\n+     [ w        , 0  , w   ; neon_move                 , simd  ] mov\\t%0.<single_type>[1], %2.<single_type>[0]\n+     [ w        , 0  , Utv ; neon_load1_one_lane       , simd  ] ld1\\t{%0.<single_type>}[1], %2\n+     [ w        , 0  , r   ; neon_from_gp              , simd  ] ins\\t%0.<single_type>[1], %<single_wx>2\n+     [ ?r       , 0  , r   ; bfm                       , *     ] bfi\\t%<single_dwx>0, %<single_dwx>2, <bitsize>, <bitsize>\n+  }\n+)\n+\n+(define_insn \"*aarch64_combine_internal_be<mode>\"\n+  [(set (match_operand:<VDBL> 0 \"register_operand\")\n+\t(vec_concat:<VDBL>\n+\t  (match_operand:VSSUB32_I 2 \"aarch64_simd_nonimmediate_operand\")\n+\t  (match_operand:VSSUB32_I 1 \"register_operand\")))]\n+  \"TARGET_FLOAT\n+   && BYTES_BIG_ENDIAN\"\n+  {@ [ cons: =0 , 1  , 2  ; attrs: type               , arch  ]\n+     [ r        , 0  , r  ; bfm                       , *     ] bfi\\t%<single_dwx>0, %<single_dwx>2, <bitsize>, <bitsize>\n+  }\n+)\n+\n+\n ;; In this insn, operand 1 should be low, and operand 2 the high part of the\n ;; dest vector.\n \n@@ -4849,6 +4906,33 @@\n   }\n )\n \n+(define_insn \"*aarch64_combinez<mode>\"\n+  [(set (match_operand:<VDBL> 0 \"register_operand\")\n+\t(vec_concat:<VDBL>\n+          (match_operand:VSSUB32_I 1 \"nonimmediate_operand\")\n+\t  (match_operand:VSSUB32_I 2 \"aarch64_simd_or_scalar_imm_zero\")))]\n+  \"TARGET_FLOAT && !BYTES_BIG_ENDIAN\"\n+  {@ [ cons: =0 , 1  ; attrs: type      ]\n+     [ r        , r  ; mov_reg          ] uxt<size>\\t%w0, %w1\n+     [ r        , m  ; load_4           ] ldr<size>\\t%<single_wx>0, %1\n+  }\n+)\n+\n+(define_insn \"*aarch64_combinez<mode>\"\n+  [(set (match_operand:<VDBL> 0 \"register_operand\")\n+\t(vec_concat:<VDBL>\n+          (match_operand:VS32_I_SUB64_F 1 \"nonimmediate_operand\")\n+\t  (match_operand:VS32_I_SUB64_F 2 \"aarch64_simd_or_scalar_imm_zero\")))]\n+  \"TARGET_FLOAT && !BYTES_BIG_ENDIAN\"\n+  {@ [ cons: =0 , 1  ; attrs: type      ]\n+     [ w        , w  ; neon_move        ] fmov\\t%<single_type>0, %<single_type>1\n+     [ w        , r  ; neon_from_gp     ] fmov\\t%<single_type>0, %<single_wx>1\n+     [ w        , m  ; neon_load1_1reg  ] ldr\\t%<single_type>0, %1\n+     [ r        , r  ; mov_reg          ] uxtw\\t%x0, %w1\n+     [ r        , m  ; load_4           ] ldr<size>\\t%<single_wx>0, %1\n+  }\n+)\n+\n (define_insn \"*aarch64_combinez_be<mode>\"\n   [(set (match_operand:<VDBL> 0 \"register_operand\")\n         (vec_concat:<VDBL>\n@@ -4862,14 +4946,41 @@\n   }\n )\n \n+(define_insn \"*aarch64_combinez_be<mode>\"\n+  [(set (match_operand:<VDBL> 0 \"register_operand\")\n+\t(vec_concat:<VDBL>\n+\t  (match_operand:VSSUB32_I 2 \"aarch64_simd_or_scalar_imm_zero\")\n+          (match_operand:VSSUB32_I 1 \"nonimmediate_operand\")))]\n+  \"TARGET_FLOAT && BYTES_BIG_ENDIAN\"\n+  {@ [ cons: =0 , 1  ; attrs: type      ]\n+     [ r        , r  ; mov_reg          ] uxt<size>\\t%w0, %w1\n+     [ r        , m  ; load_4           ] ldr<size>\\t%<single_wx>0, %1\n+  }\n+)\n+\n+(define_insn \"*aarch64_combinez_be<mode>\"\n+  [(set (match_operand:<VDBL> 0 \"register_operand\")\n+\t(vec_concat:<VDBL>\n+\t  (match_operand:VS32_I_SUB64_F 2 \"aarch64_simd_or_scalar_imm_zero\")\n+          (match_operand:VS32_I_SUB64_F 1 \"nonimmediate_operand\")))]\n+  \"TARGET_FLOAT && BYTES_BIG_ENDIAN\"\n+  {@ [ cons: =0 , 1  ; attrs: type      ]\n+     [ w        , w  ; neon_move        ] fmov\\t%<single_type>0, %<single_type>1\n+     [ w        , r  ; neon_from_gp     ] fmov\\t%<single_type>0, %<single_wx>1\n+     [ w        , m  ; neon_load1_1reg  ] ldr\\t%<single_type>0, %1\n+     [ r        , r  ; mov_reg          ] uxtw\\t%x0, %w1\n+     [ r        , m  ; load_4           ] ldr<size>\\t%<single_wx>0, %1\n+  }\n+)\n+\n ;; Form a vector whose first half (in array order) comes from operand 1\n ;; and whose second half (in array order) comes from operand 2.\n ;; This operand order follows the RTL vec_concat operation.\n (define_expand \"@aarch64_vec_concat<mode>\"\n   [(set (match_operand:<VDBL> 0 \"register_operand\")\n \t(vec_concat:<VDBL>\n-\t  (match_operand:VDCSIF 1 \"general_operand\")\n-\t  (match_operand:VDCSIF 2 \"general_operand\")))]\n+\t  (match_operand:VDUP 1 \"general_operand\")\n+\t  (match_operand:VDUP 2 \"general_operand\")))]\n   \"TARGET_FLOAT\"\n {\n   int lo = BYTES_BIG_ENDIAN ? 2 : 1;\ndiff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc\nindex 5b1afa50ff8..f08cf032708 100644\n--- a/gcc/config/aarch64/aarch64.cc\n+++ b/gcc/config/aarch64/aarch64.cc\n@@ -25502,19 +25502,24 @@ aarch64_expand_vector_init_fallback (rtx target, rtx vals)\n   rtx v0 = XVECEXP (vals, 0, 0);\n   bool all_same = true;\n \n-  /* This is a special vec_init<M><N> where N is not an element mode but a\n+  /* This is a special vec_init<M><N> where N is either an element mode or a\n      vector mode with half the elements of M.  We expect to find two entries\n      of mode N in VALS and we must put their concatentation into TARGET.  */\n-  if (XVECLEN (vals, 0) == 2 && VECTOR_MODE_P (GET_MODE (XVECEXP (vals, 0, 0))))\n+  if (XVECLEN (vals, 0) == 2 && GET_MODE (v0) != VOIDmode)\n     {\n-      machine_mode narrow_mode = GET_MODE (XVECEXP (vals, 0, 0));\n+      rtx v1 = XVECEXP (vals, 0, 1);\n+      machine_mode narrow_mode = GET_MODE (v0);\n       gcc_assert (GET_MODE_INNER (narrow_mode) == inner_mode\n \t\t  && known_eq (GET_MODE_SIZE (mode),\n \t\t\t       2 * GET_MODE_SIZE (narrow_mode)));\n-      emit_insn (gen_aarch64_vec_concat (narrow_mode, target,\n-\t\t\t\t\t XVECEXP (vals, 0, 0),\n-\t\t\t\t\t XVECEXP (vals, 0, 1)));\n-     return;\n+      if (rtx_equal_p (v0, v1))\n+       aarch64_emit_move (target,\n+\t\t\t  gen_vec_duplicate (mode,\n+\t\t\t\t\t     force_reg (narrow_mode, v0)));\n+      else\n+       emit_insn (gen_aarch64_vec_concat (narrow_mode, target,\n+\t\t\t\t\t  v0, v1));\n+      return;\n    }\n \n   /* Count the number of variable elements to initialise.  */\ndiff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md\nindex 1fc67d95bd4..eafb8f45a1b 100644\n--- a/gcc/config/aarch64/iterators.md\n+++ b/gcc/config/aarch64/iterators.md\n@@ -234,6 +234,21 @@\n ;; All sub-64-bit vector modes.\n (define_mode_iterator VSUB64 [V2QI V4QI V2HI V2HF V2BF])\n \n+;; All sub-64-bit scalar modes.\n+(define_mode_iterator SSUB64 [QI HI HF BF SI SF])\n+\n+;; All sub-64-bit modes.\n+(define_mode_iterator VSSUB64 [VSUB64 SSUB64])\n+\n+;; All sub-32-bit integer modes.\n+(define_mode_iterator VSSUB32_I [V2QI QI HI])\n+\n+;; All sub-64-bit floating-point modes.\n+(define_mode_iterator VSSUB64_F [V2HF V2BF HF BF])\n+\n+;; All 32-bit integer and sub-64-bit floating point modes.\n+(define_mode_iterator VS32_I_SUB64_F [V4QI V2HI VSSUB64_F])\n+\n ;; All Advanced SIMD modes suitable for moving, loading, and storing.\n (define_mode_iterator VALL_F16 [V8QI V16QI V4HI V8HI V2SI V4SI V2DI\n \t\t\t\tV4HF V8HF V4BF V8BF V2SF V4SF V2DF])\n@@ -1471,7 +1486,13 @@\n (define_mode_attr bitsize [(V8QI \"64\") (V16QI \"128\")\n \t\t\t   (V4HI \"64\") (V8HI \"128\")\n \t\t\t   (V2SI \"64\") (V4SI \"128\")\n-\t\t\t   (V1DI \"64\") (V2DI \"128\")])\n+\t\t\t   (V1DI \"64\") (V2DI \"128\")\n+\t\t\t   (QI \"8\") (V2QI \"16\")\n+\t\t\t   (V4QI \"32\") (HI \"16\")\n+\t\t\t   (HF \"16\") (BF \"16\")\n+\t\t\t   (SI \"32\") (SF \"32\")\n+\t\t\t   (V2HI \"32\") (V2HF \"32\")\n+\t\t\t   (V2BF \"32\")])\n \n ;; Map a floating point or integer mode to the appropriate register name prefix\n (define_mode_attr s [(HF \"h\") (SF \"s\") (DF \"d\") (SI \"s\") (DI \"d\")])\n@@ -1970,10 +1991,16 @@\n (define_mode_attr V1half [(V2DI \"v1di\")  (V2DF  \"v1df\")])\n \n ;; Double modes of vector modes.\n-(define_mode_attr VDBL [(V8QI \"V16QI\") (V4HI \"V8HI\")\n+(define_mode_attr VDBL [(V8QI \"V16QI\") (V4QI \"V8QI\")\n+\t\t\t(V2QI \"V4QI\")  (V4HI \"V8HI\")\n \t\t\t(V4HF \"V8HF\")  (V4BF \"V8BF\")\n+\t\t\t(V2BF \"V4BF\")\n \t\t\t(V2SI \"V4SI\")  (V2SF \"V4SF\")\n+\t\t\t(V2HI \"V4HI\")  (V2HF \"V4HF\")\n+\t\t\t(BF   \"V2BF\")\n \t\t\t(SI   \"V2SI\")  (SF   \"V2SF\")\n+\t\t\t(QI   \"V2QI\")\n+\t\t\t(HI   \"V2HI\")  (HF   \"V2HF\")\n \t\t\t(DI   \"V2DI\")  (DF   \"V2DF\")])\n \n ;; Load/store pair mode.\n@@ -2201,6 +2228,14 @@\n \t\t\t     (V2SI \"x\") (V2SF \"x\")\n \t\t\t     (DI   \"x\") (DF   \"x\")])\n \n+(define_mode_attr single_dwx [(SI  \"x\") (SF   \"x\")\n+\t\t\t     (V2QI \"w\") (V4QI \"x\")\n+\t\t\t     (V2HI \"x\") (V2HF \"x\")\n+\t\t\t     (HF   \"w\") (QI   \"w\")\n+\t\t\t     (V2BF \"x\") (BF   \"w\")\n+\t\t\t     (HI   \"w\")])\n+\n+\n ;; Whether a mode fits in S or D registers (i.e. \"s\" for 32-bit modes\n ;; and \"d\" for 64-bit modes).\n (define_mode_attr single_type [(SI   \"s\") (SF   \"s\")\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c b/gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c\nindex 2a07c0be866..75283d355ae 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c\n@@ -11,7 +11,8 @@ foo (uint64_t *restrict x, uint64_t *restrict y, uint64_t *restrict index)\n     x[i] += y[index[i]];\n }\n \n-/* { dg-final { scan-assembler-times {\\tldr\\td[0-9]+, \\[x[0-9]+, x[0-9]+, lsl #?3\\]} 2 } } */\n+/* { dg-final { scan-assembler-times {\\tldr\\td[0-9]+, \\[x[0-9]+, x[0-9]+, lsl #?3\\]} 1 } } */\n+/* { dg-final { scan-assembler-times {\\tld1\\t{v[0-9]+\\.d}\\[1\\], \\[x[0-9]+\\]} 1 } } */\n /* { dg-final { scan-assembler-not {\\tshl\\tv[0-9]+\\.2d,} } } */\n /* { dg-final { scan-assembler-not {\\tumov\\t} } } */\n /* { dg-final { scan-assembler {\\tadd\\tv[0-9]+\\.2d,} } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c b/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c\nindex 2bb2c04fa20..1fbb08c7566 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c\n@@ -30,12 +30,12 @@ vec_slp_##TYPE (TYPE *restrict a, TYPE b, TYPE c, int n)\t\\\n TEST_ALL (VEC_PERM)\n \n /* We should use one DUP for each of the 8-, 16- and 32-bit types,\n-   (for now, insert both elements with ins for _Float16).  We should use two\n+   (and we now use fmov + ins for _Float16).  We should use two\n    DUPs for each of the three 64-bit types.  */\n /* { dg-final { scan-assembler-times {\\tmov\\tz[0-9]+\\.h, [hw]} 2 } } */\n /* { dg-final { scan-assembler-times {\\tmov\\tz[0-9]+\\.s, [sw]} 3 } } */\n /* { dg-final { scan-assembler-times {\\tmov\\tz[0-9]+\\.d, [dx]} 9 } } */\n-/* { dg-final { scan-assembler-times {\\tins\\tv[0-9]+\\.h\\[0\\], v[0-9]+\\.h\\[0\\]} 1 } } */\n+/* { dg-final { scan-assembler-times {\\tfmov\\th[0-9]+, h} 1 } } */\n /* { dg-final { scan-assembler-times {\\tins\\tv[0-9]+\\.h\\[1\\], v[0-9]+\\.h\\[0\\]} 1 } } */\n /* { dg-final { scan-assembler-times {\\tzip1\\tz[0-9]+\\.d, z[0-9]+\\.d, z[0-9]+\\.d\\n} 3 } } */\n /* { dg-final { scan-assembler-not {\\tzip2\\t} } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/vec-init-18.c b/gcc/testsuite/gcc.target/aarch64/vec-init-18.c\nindex feeb181a0b5..394537c80d8 100644\n--- a/gcc/testsuite/gcc.target/aarch64/vec-init-18.c\n+++ b/gcc/testsuite/gcc.target/aarch64/vec-init-18.c\n@@ -15,7 +15,6 @@ int16x8_t foo2(int16_t x)\n   return v;\n }\n \n-/* { dg-final { scan-assembler-times {\\tdup\\tv[0-9]+\\.4s, w[0-9]+} 2 } } */\n-/* { dg-final { scan-assembler-times {\\tmov\\tw[0-9]+, 65537} 1 } } */\n-/* { dg-final { scan-assembler-times {\\tbfi\\tw[0-9]+, w[0-9]+, 0, 16} 1 } } */\n-/* { dg-final { scan-assembler-times {\\tbfi\\tw[0-9]+, w[0-9]+, 16, 16} 1 } } */\n+/* { dg-final { scan-assembler-times {\\tmov\\tw1, 1} 1 } } */\n+/* { dg-final { scan-assembler-times {\\tdup\\tv0+\\.4s, w0} 2 } } */\n+/* { dg-final { scan-assembler-times {\\tbfi\\tw0, w1, 16, 16} 2 } } */\ndiff --git a/gcc/testsuite/gcc.target/aarch64/vec-init-23.c b/gcc/testsuite/gcc.target/aarch64/vec-init-23.c\nindex 595470b29fb..217838ea55a 100644\n--- a/gcc/testsuite/gcc.target/aarch64/vec-init-23.c\n+++ b/gcc/testsuite/gcc.target/aarch64/vec-init-23.c\n@@ -111,9 +111,8 @@ TEST_64(int, int64_t, s)\n \n /*\n ** test_int8_5:\n-**\tmov\tw1, 0\n-**\tbfi\tw1, w0, 0, 8\n-**\tdup\tv0\\.8h, w1\n+**\tuxtb\tw0, w0\n+**\tdup\tv0\\.8h, w0\n **\tret\n */\n \n@@ -217,7 +216,7 @@ TEST_64(int, int64_t, s)\n ** test_float16_2:\n **\tfcvt\th1, s1\n **\tfcvt\th0, s0\n-**\tins\tv0\\.h\\[1\\], v1\\.h\\[0\\]\n+**\tuzp1\tv0\\.4h, v0\\.4h, v1\\.4h\n **\tdup\tv0\\.4s, v0\\.s\\[0\\]\n **\tret\n */\n@@ -227,55 +226,51 @@ TEST_64(int, int64_t, s)\n **\tuzp1\tv2\\.2s, v0\\.2s, v2\\.2s\n **\tuzp1\tv3\\.2s, v1\\.2s, v3\\.2s\n **\tzip1\tv3\\.4s, v2\\.4s, v3\\.4s\n-**\tfcvtn\tv0\\.4h, v3\\.4s\n-**\tuzp1\tv0\\.2d, v0\\.2d, v0\\.2d\n+**\tfcvtn\tv3\\.4h, v3\\.4s\n+**\tdup\tv0\\.2d, v3\\.d\\[0\\]\n **\tret\n */\n \n /*\n ** test_float16_4:\n **\tfcvt\th0, s0\n-**\tmovi\tv31\\.2d, #0\n-**\tins\tv31\\.h\\[0\\], v0\\.h\\[0\\]\n-**\tdup\tv0\\.4s, v31\\.s\\[0\\]\n+**\tfmov\th0, h0\n+**\tdup\tv0\\.4s, v0\\.s\\[0\\]\n **\tret\n */\n \n /*\n ** test_float16_5:\n+**\tmovi\tv31\\.4h, #0\n **\tfcvt\th0, s0\n-**\tmovi\tv31\\.2d, #0\n-**\tins\tv31\\.h\\[1\\], v0\\.h\\[0\\]\n-**\tdup\tv0\\.4s, v31\\.s\\[0\\]\n+**\tuzp1\tv0\\.4h, v31\\.4h, v0\\.4h\n+**\tdup\tv0\\.4s, v0\\.s\\[0\\]\n **\tret\n */\n \n /*\n ** test_float16_6:\n-**\tfcvt\th1, s1\n **\tfcvt\th0, s0\n-**\tmovi\tv31\\.2d, #0\n-**\tmov\tw0, 1006648320\n-**\tumov\tw1, v1\\.h\\[0\\]\n-**\tins\tv31\\.h\\[0\\], v0\\.h\\[0\\]\n-**\tbfi\tw0, w1, 0, 16\n-**\tdup\tv31\\.2s, v31\\.s\\[0\\]\n-**\tdup\tv0\\.2s, w0\n-**\tzip1\tv0\\.8h, v31\\.8h, v0\\.8h\n+**\tfcvt\th1, s1\n+**\tfmov\th31, 1.0e\\+0\n+**\tfmov\th0, h0\n+**\tuzp1\tv1\\.4h, v1\\.4h, v31\\.4h\n+**\tdup\tv0\\.2s, v0\\.s\\[0\\]\n+**\tdup\tv1\\.2s, v1\\.s\\[0\\]\n+**\tzip1\tv0\\.8h, v0\\.8h, v1\\.8h\n **\tret\n */\n \n /*\n ** test_float16_7:\n-**\tfcvt\th1, s1\n **\tfcvt\th0, s0\n-**\tmovi\tv31\\.2d, #0\n-**\tmov\tw0, 1006648320\n-**\tumov\tw1, v1\\.h\\[0\\]\n-**\tins\tv31\\.h\\[1\\], v0\\.h\\[0\\]\n-**\tbfi\tw0, w1, 16, 16\n+**\tmovi\tv31\\.4h, #0\n+**\tfcvt\th1, s1\n+**\tuzp1\tv31\\.4h, v31\\.4h, v0\\.4h\n+**\tfmov\th0, 1.0e\\+0\n+**\tuzp1\tv0\\.4h, v0\\.4h, v1\\.4h\n **\tdup\tv31\\.2s, v31\\.s\\[0\\]\n-**\tdup\tv0\\.2s, w0\n+**\tdup\tv0\\.2s, v0\\.s\\[0\\]\n **\tzip1\tv0\\.8h, v31\\.8h, v0\\.8h\n **\tret\n */\n@@ -285,7 +280,7 @@ TEST_64(int, int64_t, s)\n **\tfcvt\th1, s1\n **\tfcvt\th0, s0\n **\tmovi\tv31\\.2s, 0x3c, lsl 24\n-**\tins\tv0\\.h\\[1\\], v1\\.h\\[0\\]\n+**\tuzp1\tv0\\.4h, v0\\.4h, v1\\.4h\n **\tdup\tv0\\.2s, v0\\.s\\[0\\]\n **\tzip1\tv0\\.8h, v31\\.8h, v0\\.8h\n **\tret\n@@ -316,9 +311,8 @@ TEST_64(int, int64_t, s)\n \n /*\n ** test_int16_4:\n-**\tmov\tw1, 0\n-**\tbfi\tw1, w0, 0, 16\n-**\tdup\tv0\\.4s, w1\n+**\tuxth\tw0, w0\n+**\tdup\tv0\\.4s, w0\n **\tret\n */\n \n@@ -332,12 +326,11 @@ TEST_64(int, int64_t, s)\n \n /*\n ** test_int16_6:\n-**\tmov\tw2, 0\n-**\tbfi\tw2, w0, 0, 16\n-**\tmov\tw0, 65537\n-**\tbfi\tw0, w1, 0, 16\n-**\tdup\tv31\\.2s, w2\n-**\tdup\tv0\\.2s, w0\n+**\tuxth\tw0, w0\n+**\tdup\tv31\\.2s, w0\n+**\tmov\tw0, 1\n+**\tbfi\tw1, w0, 16, 16\n+**\tdup\tv0\\.2s, w1\n **\tzip1\tv0\\.8h, v31\\.8h, v0\\.8h\n **\tret\n */\n@@ -378,17 +371,16 @@ TEST_64(int, int64_t, s)\n \n /*\n ** test_float32_3:\n-**\tmovi\tv31\\.2s, 0\n-**\tdup\tv0\\.2s, v0\\.s\\[0\\]\n-**\tzip1\tv0\\.4s, v0\\.4s, v31\\.4s\n+**\tfmov\ts0, s0\n+**\tdup\tv0\\.2d, v0\\.d\\[0\\]\n **\tret\n */\n \n /*\n ** test_float32_4:\n-**\tmovi\tv31\\.2s, 0\n-**\tdup\tv0\\.2s, v0\\.s\\[0\\]\n-**\tzip1\tv0\\.4s, v31\\.4s, v0\\.4s\n+**\tmovi\tv31\\.2s, #0\n+**\tuzp1\tv0\\.2s, v31\\.2s, v0\\.2s\n+**\tdup\tv0\\.2d, v0\\.d\\[0\\]\n **\tret\n */\n \n@@ -408,9 +400,8 @@ TEST_64(int, int64_t, s)\n \n /*\n ** test_int32_3:\n-**\tdup\tv31\\.2s, w0\n-**\tmovi\tv0\\.2s, 0\n-**\tzip1\tv0\\.4s, v31\\.4s, v0\\.4s\n+**\tfmov\ts0, w0\n+**\tdup\tv0\\.2d, v0\\.d\\[0\\]\n **\tret\n */\n \ndiff --git a/gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c b/gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c\nindex 587b7ec0e3b..98f75336d86 100644\n--- a/gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c\n+++ b/gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c\n@@ -47,8 +47,8 @@ int32x4_t f_s32(int32_t x)\n /*\n ** f_s64:\n **\tfmov\td0, x0\n-**\tmov\t(x[0-9]+), 1\n-**\tins\tv0\\.d\\[1\\], \\1\n+**\tmov\tx0, 1\n+**\tins\tv0\\.d\\[1\\], x0\n **\tret\n */\n \n","prefixes":["3/4"]}