{"id":2175752,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2175752/?format=json","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/1.0/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},"msgid":"<20251218211109.3562-4-chris.bazley@arm.com>","date":"2025-12-18T21:11:01","name":"[v7,03/10] Update constant creation for BB SLP with predicated tails","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"848f69abb2b99f1674377fcba0860ef191365c04","submitter":{"id":89471,"url":"http://patchwork.ozlabs.org/api/1.0/people/89471/?format=json","name":"Christopher Bazley","email":"Chris.Bazley@arm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/20251218211109.3562-4-chris.bazley@arm.com/mbox/","series":[{"id":485915,"url":"http://patchwork.ozlabs.org/api/1.0/series/485915/?format=json","date":"2025-12-18T21:10:58","name":"Extend BB SLP vectorization to use predicated tails","version":7,"mbox":"http://patchwork.ozlabs.org/series/485915/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2175752/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=Njr8OGYU;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=Njr8OGYU;\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=Njr8OGYU;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=Njr8OGYU","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.65"],"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 4dXNh672rdz1y2r\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 19 Dec 2025 08:13:58 +1100 (AEDT)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 0B0564BA2E2A\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 21:13:57 +0000 (GMT)","from DUZPR83CU001.outbound.protection.outlook.com\n (mail-northeuropeazon11012065.outbound.protection.outlook.com [52.101.66.65])\n by sourceware.org (Postfix) with ESMTPS id 35E634BA2E2B\n for <gcc-patches@gcc.gnu.org>; Thu, 18 Dec 2025 21:12:33 +0000 (GMT)","from DUZPR01CA0338.eurprd01.prod.exchangelabs.com\n (2603:10a6:10:4b8::8) by DU5PR08MB10804.eurprd08.prod.outlook.com\n (2603:10a6:10:522::13) 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 21:12:30 +0000","from DU2PEPF0001E9C3.eurprd03.prod.outlook.com\n (2603:10a6:10:4b8:cafe::8) by DUZPR01CA0338.outlook.office365.com\n (2603:10a6:10:4b8::8) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.9 via Frontend Transport; Thu,\n 18 Dec 2025 21:12:37 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n DU2PEPF0001E9C3.mail.protection.outlook.com (10.167.8.72) with Microsoft SMTP\n Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.4 via\n Frontend Transport; Thu, 18 Dec 2025 21:12:29 +0000","from DU7P191CA0026.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:54e::6) by\n VI1PR08MB10297.eurprd08.prod.outlook.com (2603:10a6:800:1be::22) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.7; Thu, 18 Dec\n 2025 21:11:25 +0000","from DB1PEPF00039233.eurprd03.prod.outlook.com\n (2603:10a6:10:54e:cafe::22) by DU7P191CA0026.outlook.office365.com\n (2603:10a6:10:54e::6) 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 21:11:24 +0000","from nebula.arm.com (172.205.89.229) by\n DB1PEPF00039233.mail.protection.outlook.com (10.167.8.106) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9412.4 via Frontend Transport; Thu, 18 Dec 2025 21:11:24 +0000","from AZ-NEU-EX04.Arm.com (10.240.25.138) 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 21:11:24 +0000","from ip-10-248-139-165.eu-west-1.compute.internal (10.248.139.165)\n by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29\n via Frontend Transport; Thu, 18 Dec 2025 21:11:24 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 0B0564BA2E2A","OpenDKIM Filter v2.11.0 sourceware.org 35E634BA2E2B"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 35E634BA2E2B","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 35E634BA2E2B","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1766092353; cv=pass;\n b=GzGUeto95Y/zcDo3d5dxqF2Dfv53FsmJWdFvLKeGmQpjpayoxfP+JMzEbQKuwCh0mf25xw4acAhOtWUZHapKhwgj3qouc811vYaqPFHS1cbZDXgCEbHZ5OtOCq1WgY/rRAUulTuCemH/LoNHiUgIUNpqIzKjKfwPYm29CvO+28I=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=vhG1JHph6jiEu13nSb08ZphH0mV7TSSkllQ+9TPy+loMuMLuamWLTTojDm8KhHmhzsw3pO/SyHGxnvU8q9g12lQ7I7JE9TQsM0Tfj1TpxjFDzrdnSIxqqN2cGs7fj8IBwyUpLVS87R4VHV0a+3lSkMStz0WKaljPL2PsFUfNkqQCVvL9CZI2R7CuekL887AAvCY2IS1WxFcEPjMWsoJS3CSvRa36GYtHeNxY2750e8amA1vXz1pDqMYVjBsJn4bf0knf4qogVPGyCbIja6rdvqP6a/UnnUukrfXdjTDseigW+QB73EY/bISaMxLTAYfJMAEnSW9lpSjzDQaKZxX86w==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=MsYVGa8YX0BJvDwCe8ARWLkDpwoXOsuk3attDhvtSdEF9l9mQ/U4sLCBFvZKDi9oXofc/QUYkfXUYd09m2PRu8DsjlSDe5YUZVq8Qb6DxzMI9m2FI7LFbVnnNybtH1HpCWGaQH24SuGlAxMZPmpbQhWkWr7mLXqWKkG90TwxjN57Y4/cnrjWjeaEir9edRojBxxDGXL2e6kN23B5TJ4d6Fi/d/NGTf1RjaVSGMDIM4iaZFi1m9CDsDsm9knirU+acQH3217ny7wRoDQQeqyId/kX4hk1fNykF79+nvYiixpg8F7V+AmCHwfFG5AXWzUChNhmijpg0pVNv7xzC7OMyg=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1766092353; c=relaxed/simple;\n bh=3KCXCj/JbG/KPKJdQ1QWS+ByAnq2WPgwnQUgmQH2wbE=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=br8oVJCM4TxSrSGJYNtORgEex45CX1RvkImEqlWIwqFYaeYCw/f6WjGySWeI0Z+gh0d22/TalZH2pF3UEdJU+B5X+Sfsd7zHwSsVsMcbIQ0gsVj1rI6NxtkWCDp9t01WxVY2mfRWN9hThtKkps9AKwZzrDZDZhq2Ry7CJbPD/BA=","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=fnoIeTEKphTbU+yT+wP/QxWD9qKF3EgH7YbaXEcnKvQ=;\n b=ptcZl4HPu6wDp6wodUxa9/SKe9ijbZKv7Vo97eVdevKROXGvZp1u51KCNoUas+Rz/vcgud+C4/cfgz/6q77NLUJI8j0JVZ9WkFxU+4ii5SaczrhokFPpSFMnhF+aakTTtR78AlJ2hRDD/xDxgN9upmJwP6nTPIQXE0ghRoAbYTkY/ec7iQS/ZjGnRFOnKtEoUK+9rwbp7L+tQXB0m5B1fOSHQIxOJKUUuBZiVimy3EiQ06TExuFmRqrztJjhjQcBQSmSbeVsGlWBZk8GD+TWqGeEWtYesqrXvTOD5CpH9IBlKA7AV/hEU6ukhdge5g28sbFKoqJRBb3xPEWqqRse6Q==","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=fnoIeTEKphTbU+yT+wP/QxWD9qKF3EgH7YbaXEcnKvQ=;\n b=cXpUEgJGLUtGYUV8Kjnkothdh5Kpthioz0uT4Tf+CpvaIiSwaMqqB3ac3ZA/ZGUyYzgdnOT9NAFQVI3OIVynwIA3+xUzJowhHAX7VqJMQZMrdq6jXKIMUvH+uxMB8+uS4fRCssd/OQRlFHs04oKCPIXuN2aToeqHjhdTFIHOUmBFVRveYQVCxO7A3pUi47t0RMWWYMwiB2ArTpnbl+dygYLOsh/BifdspiZdPAZHVMRr+xQVFjDxDxgNSa9ZAfpqzyVye3aiapG3D2TnV2o1PcdnuQ2BSfE7w98XhdEZSmMd0Rrlsf7KY8C9+Z3Cl/oKzpK6s+0amkmi7HNELRbihA=="],"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=fnoIeTEKphTbU+yT+wP/QxWD9qKF3EgH7YbaXEcnKvQ=;\n b=Njr8OGYUk/+Z/ji0b2xC9Gtk0CPAWroqZqcGTZTRvClIOdI+vEtHmZffaHsb2evFVJfHi/ZoEZ8uojARGO8XVsoL4LEDMm3vzaiQgRwAkDHO4VM3wgkEYVEBES0nRcMlEF24AM+t31UlaAY0Stsh5aySQpS2idqn254yMrx9FKI=","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=fnoIeTEKphTbU+yT+wP/QxWD9qKF3EgH7YbaXEcnKvQ=;\n b=Njr8OGYUk/+Z/ji0b2xC9Gtk0CPAWroqZqcGTZTRvClIOdI+vEtHmZffaHsb2evFVJfHi/ZoEZ8uojARGO8XVsoL4LEDMm3vzaiQgRwAkDHO4VM3wgkEYVEBES0nRcMlEF24AM+t31UlaAY0Stsh5aySQpS2idqn254yMrx9FKI="],"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":"Christopher Bazley <chris.bazley@arm.com>","To":"<gcc-patches@gcc.gnu.org>","Subject":"[PATCH v7 03/10] Update constant creation for BB SLP with predicated\n tails","Date":"Thu, 18 Dec 2025 21:11:01 +0000","Message-ID":"<20251218211109.3562-4-chris.bazley@arm.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20251218211109.3562-1-chris.bazley@arm.com>","References":"<20251218211109.3562-1-chris.bazley@arm.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-EOPAttributedMessage":"1","X-MS-TrafficTypeDiagnostic":"\n DB1PEPF00039233:EE_|VI1PR08MB10297:EE_|DU2PEPF0001E9C3:EE_|DU5PR08MB10804:EE_","X-MS-Office365-Filtering-Correlation-Id":"541be89d-5a7d-4ebb-7beb-08de3e7a2727","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|82310400026|1800799024|376014|36860700013;","X-Microsoft-Antispam-Message-Info-Original":"\n WWQ2K4gYkYc/u7KVZVS1F/azVpcAjsdBuVPZdQiPvwhBhxXHPTOJRRP4lVlZGJFalc8vf6VKRAX+UenhD8c3gZRvcpmZegQotBXO6MsHbf6sIDo8Q4Dn92by/GXtLHh3qgnuFoDUYlPAYUFT0M3JsQ66KHrorpvMFStf+D1hWvLj7vbZd5Xvawl334+lO5CzdV9aqxEFv18iWw0D9qI2zi+w+BqCe389t2K+JG3SYhd6tLpn3/s630s3CWOejE2/KlyOTpuHf1tdtGSHrV7WK8nlIBnnDq0l02Yc8jJgDxBoSxzNldFOX0zhYFziLYNlD99fGX1k30wgVCkxSFgESB+JkLLs6uZutUZULg7TQNJZzS7M/+asJEBr8tJDOrmyyj/cTieF7fmmrD+26aDGXnyY2wSiH6GgGQSkMbegFM/twaaiSMpQ0o7Tyb7yzBUlwiyZoECE/pKtc9r9k1QoYUTGkbCxg3Hrj0ijwoQcTn8n/PhHV7/1OSHDOMWPvU/tt7rpOk9azBIIGNJ+PJEUekRXys/AGm4omtM3z/b34tQWcQP0+0ypd/ImcCU7crLJ9a2tE9zQMaL8rsfdg5aQufsZMz0Ta4vmJ9WAiXPMvfbv6n99sHWBGAE8nkDK2gW7iB3pXFdUVt4RH5JHbsodcb6zTq+iUMvHdF+TzkB0trqSDOgLgZfyHy/TNOcuKAC81JfUedQ/uBIqTSvF/dkUReHGRBVR2UKZ1+lsWABiEvnbmKtlywmU3GZiXNqApYNscbsBhqTblfSgB6ZIIE72qx6p8B/Kcxel7NA3iC7Kovv0TmpVhVC8TiVNd5tr2gHCfENIoyDr3NS7wosf2DYNjzM9YWyiKGtb/WdVRLjzBmfH8X+TsabBOVmP/vKrBzcDWdYCpSoOlaxSlQSUxdlsPCh/Eq+0u/DNYfjNPvoSYjS7ab+9xwTUmUAcuoaF04wRCzbMmdlbkzlbUui2cybexPSync4sbp84Cbc3LXn04/BaUJrMN56UCoTEAzwWwpxtAcsUaTT6u89QPZjwWlVYMOcC0fOlYaJpkRSM5/MAuAW9juORDqYaXcm0HlzChX6vyWXOpZMaGKRgu1TF6G94D6tObHtYCrl0IbPu7uXeMmfwO9fQijlFgVnmDeRZGpBE4mnxdyIyrLfF1sSnlWSPX1Gu10SQ3FvwXzIH24PnhFW0eFlsyEvmSZMEKgEoHIPL8vCYV8rsK4QbsGx3owGwO3piOT1hW/h9gzk8skrjwN0C2zT28zzBwT707hjm1t87aOnNxb1fLrBrJk2hXHIm1iAuBVTVF3PESbmZ7RlZ0gstUnysmL+A0WS0bm3P4hCMWuPSFGGY4EmAvD/0enHfZRVBoLlMshVFpkPjGySV7xgPusUdSsSfiL4paondYIMk749xytJWtamVSImNkOzHIbvfjICc2Jk+o8dNKFaOvrARlEDfx2PESkdQE5A+2VFaEfInF+3ZohABPZaiqcG9KHE2WbC9Q3fQqES0WqJ8OzIvAwRg848L8aNTbGCEoMjs+Z3aELLfUSOknKRwg7ZUYRmNpE9S15AW5o9Be5FU6Jc=","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; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013);\n DIR:OUT; SFP:1101;","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["VI1PR08MB10297","DU5PR08MB10804"],"X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n DU2PEPF0001E9C3.eurprd03.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n 9bad7ae0-dc6f-4d89-063b-08de3e7a008d","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|36860700013|35042699022|376014|82310400026|14060799003|1800799024;","X-Microsoft-Antispam-Message-Info":"\n jXqnKG7abBIN5kCBZkPYkzdWkGI/Dvj+bTcLEfCIrPd4ylyvsXN2Z6gb/eQzcrYTSlEQ5oCvMBTcfy94IqAT+OSHfWqVv6onRjlSxX+K8dxmxo1REnfTYHFA4rmRO5/hUwFYEkv5yxm2mgkIxMdp1QgNCbTrJCUhEvcdKnFO2VPV8D0wbaP6ZogVP64G/kgm9jX0yJZsOmAiSFIFLERiYW63SL/Hr4eEhNyrZuE9BVy2ESIRZLrkhH3DaZUD4INqV94xLXE+cbqeXoGvn4lejMkhXqE9/zDZhDc68/HP1dgVg37wKU42JI+C/chRL2G8lOgXLq3AwiHBKsZeLmiB1MUqoCPyfW0jDl8nP7JSslkhtQJq327zkIv9+wYZ/uQ/kkNSKHir+4MPLN6Uv5x68Y6z1Ms7MSGeRmBuK7TbH5L93bB1fiQk4DBcj9NDzDvzJYxkPhmw7DWonIN3Gly8hfF2BuL8XLZ4ypq6kvbMi9VV8Lzt5WS376twKQU932YJrXBZ9uhK1fwIMfr4RAkGTohjqn+Qq+QE2usYJiQAYf2SNFR5+2TSVm26UtiJMy5Fb15iMzJcbKO5WXsMVNgY6HX+Vnz+97T5f/EQhwVdNtCcE5FzTiQP7VY8JAXESt/gQ5PYEA7gZKbD57Jxwr7D7RyK7SPf8Y5H/mJ91SeM0VLNKvBVSpaLXow57wsi+a2a39yPWhu53kpmkFLs6vJRMy2X+tlvxKK7kVJPc8p1VTJIBxYnDyq9y0iRJ53hvHwQhsQpMh2vr/N+JlYdL9SMruU6EgxY549qxZOonEBQY0NE/k/AXeGItMOOC9ibKF0FgskhapR25KOiZQwYqPwt0gx7YOVsgwSMT6xafJn8lbdGSFM1D04Uui9Oe00nuVNFdjLz4cZjzf+haJx+OhH75pDgxgvTbaOP4o6pQSBPaA8jXlXeUA0UM9Y+njITdrYlUifGZjyhBZdsDj3kEJHxuhb1IudUohvL2lBL9ZpcATDyzyrIh7v2gMcnYBkVeo4IhiCl9VySS0QNsBhV7skBRNKfTtGxqWCDGeHkQHGSI9dSlqmU2oYkrRIURK07FXeSG7o+3Lde1Q2ajieYPyla6oFmz7L4B2f3mTpvLyeKlJ8NqIH6r3kq4Qm5gfXQPPRQ0tQ92OX8VcT7xsL0pKwDG/hVdPNVv03XiaAg8OgBr9zdWadlyidXS/7fd8AWtm9+mPquOe7mwgruI96RuDm0T/tTRbz/bWpHtGbazvboKCBIEfPUj4ue92u9ptawDRY3kVZ5WQwktylA8AzVTz5GiwzYYFEVr5MwY8oiKOzrFOhb7HxtYDwxtTYqDc2g3nAmvgVcoYBBpCe5Qoobn01/G8VMlRZ7sw0i+328EfIWchqwOjx4GVpe0VM0ha4wwoi2z9/sj6E010LmJQiBcGWx2O9Mm4gx7hW+CqPTcS6cxpcQ12NGatywyxYSUQZfZxtyKJAzehku5pch3v2KHuizntNTUQszHd10O1D7w1Daqq1ycYEuSzoHCZmtk/LJE9lwaXKWHtYdXisj9CqkjCUeU8PD8AOTjdKpPgW+0U6dgwE=","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)(36860700013)(35042699022)(376014)(82310400026)(14060799003)(1800799024);\n DIR:OUT; SFP:1101;","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"18 Dec 2025 21:12:29.6537 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 541be89d-5a7d-4ebb-7beb-08de3e7a2727","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 DU2PEPF0001E9C3.eurprd03.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":"Created a new function, gimple_build_vector_from_elems,\nfor use when creating vectorized definitions for basic block\nvectorization in vect_create_constant_vectors.\n\nThe existing gimple_build_vector function cannot be used\nfor SVE vector types because it relies on the type\nassociated with the tree_vector_builder having a constant\nnumber of subparts. Even if that limitation were lifted, the\npossibility of tree_vector_builder patterns being used is\ninappropriate.\n\nThe new function takes a vector type and vec of tree nodes\ngiving the element values to put into the built vector, instead of an\ninstance of tree_vector_builder. If the number of values is zero then\na zero constant is built. If all values are constant then a vector\nconstant is built. Otherwise, a new constructor node is created.\n\ngcc/ChangeLog:\n\n\t* gimple-fold.cc (gimple_build_vector_from_elems): Define a\n\tnew function to build a vector from a list of elements that need\n\tnot be complete.\n\t* gimple-fold.h (gimple_build_vector_from_elems): Declare a new\n\tfunction and a simpler overloaded version with fewer parameters.\n\t* tree-vect-slp.cc (vect_create_constant_vectors):\n\tFor basic block SLP vectorization, pad each constant to the\n\tminimum vector length (which is the same as the actual vector\n\tlength, except in the case of variable-length vector types).\n\tUse gimple_build_vector_from_elems instead of\n\tduplicate_and_interleave to create non-uniform constant\n\tvectors for BB SLP vectorization.\n\n---\n gcc/gimple-fold.cc   | 54 ++++++++++++++++++++++++++++++++++++++++++++\n gcc/gimple-fold.h    | 14 ++++++++++++\n gcc/tree-vect-slp.cc | 42 +++++++++++++++++++++++++++-------\n 3 files changed, 102 insertions(+), 8 deletions(-)","diff":"diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc\nindex 55423189191..45baf891c40 100644\n--- a/gcc/gimple-fold.cc\n+++ b/gcc/gimple-fold.cc\n@@ -11365,6 +11365,60 @@ gimple_build_vector (gimple_stmt_iterator *gsi,\n   return builder->build ();\n }\n \n+/* Build a vector of type VECTYPE from a partial list of ELTS, handling the case\n+   in which some elements are non-constant, and padding the tail with zeros\n+   if the list of values may be shorter than the number of subparts implied by\n+   VECTYPE (including when the vector type is variable-length).\n+\n+   Return a gimple value for the result, inserting any new instructions\n+   to GSI honoring BEFORE and UPDATE.  */\n+\n+tree\n+gimple_build_vector_from_elems (gimple_stmt_iterator *gsi, bool before,\n+\t\t\t\tgsi_iterator_update update, location_t loc,\n+\t\t\t\ttree vectype, const vec<tree> &elts)\n+{\n+  unsigned int encoded_nelts = elts.length ();\n+  gimple_seq seq = NULL;\n+  gcc_assert (TREE_CODE (vectype) == VECTOR_TYPE);\n+  unsigned int lower_bound\n+    = constant_lower_bound (TYPE_VECTOR_SUBPARTS (vectype));\n+  gcc_assert (encoded_nelts <= lower_bound);\n+\n+  if (encoded_nelts == 0)\n+    return build_zero_cst (vectype);\n+\n+  /* Prepare a vector of constructor elements and find out whether all\n+     of the element values are constant.  */\n+  vec<constructor_elt, va_gc> *v;\n+  vec_alloc (v, encoded_nelts);\n+  bool is_constant = true;\n+\n+  for (unsigned int i = 0; i < encoded_nelts; ++i)\n+    {\n+      if (!CONSTANT_CLASS_P (elts[i]))\n+\tis_constant = false;\n+\n+      CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, elts[i]);\n+    }\n+\n+  /* If all element values are constant then we can return a new VECTOR_CST\n+     node.  Any elements for which no value is supplied will be zero.  */\n+  if (is_constant)\n+    return build_vector_from_ctor (vectype, v);\n+\n+  tree res;\n+  if (gimple_in_ssa_p (cfun))\n+    res = make_ssa_name (vectype);\n+  else\n+    res = create_tmp_reg (vectype);\n+  gimple *stmt = gimple_build_assign (res, build_constructor (vectype, v));\n+  gimple_set_location (stmt, loc);\n+  gimple_seq_add_stmt_without_update (&seq, stmt);\n+  gimple_build_insert_seq (gsi, before, update, seq);\n+  return res;\n+}\n+\n /* Emit gimple statements into &stmts that take a value given in OLD_SIZE\n    and generate a value guaranteed to be rounded upwards to ALIGN.\n \ndiff --git a/gcc/gimple-fold.h b/gcc/gimple-fold.h\nindex 7244941722d..358c269aacc 100644\n--- a/gcc/gimple-fold.h\n+++ b/gcc/gimple-fold.h\n@@ -243,6 +243,20 @@ gimple_build_vector (gimple_seq *seq, tree_vector_builder *builder)\n \t\t\t      UNKNOWN_LOCATION, builder);\n }\n \n+extern tree gimple_build_vector_from_elems (gimple_stmt_iterator *, bool,\n+\t\t\t\t\t    enum gsi_iterator_update,\n+\t\t\t\t\t    location_t, tree vectype,\n+\t\t\t\t\t    const vec<tree> &);\n+\n+inline tree\n+gimple_build_vector_from_elems (gimple_seq *seq, tree vectype,\n+\t\t\t\tconst vec<tree> &elts)\n+{\n+  gimple_stmt_iterator gsi = gsi_last (*seq);\n+  return gimple_build_vector_from_elems (&gsi, false, GSI_CONTINUE_LINKING,\n+\t\t\t\t\t UNKNOWN_LOCATION, vectype, elts);\n+}\n+\n extern tree gimple_build_round_up (gimple_stmt_iterator *, bool,\n \t\t\t\t   enum gsi_iterator_update,\n \t\t\t\t   location_t, tree, tree,\ndiff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc\nindex d541077c812..dae6b9cdaaf 100644\n--- a/gcc/tree-vect-slp.cc\n+++ b/gcc/tree-vect-slp.cc\n@@ -10796,7 +10796,7 @@ vect_create_constant_vectors (vec_info *vinfo, slp_tree op_node)\n   unsigned j, number_of_places_left_in_vector;\n   tree vector_type;\n   tree vop;\n-  int group_size = op_node->ops.length ();\n+  unsigned int group_size = op_node->ops.length ();\n   unsigned int vec_num, i;\n   unsigned number_of_copies = 1;\n   bool constant_p;\n@@ -10826,12 +10826,27 @@ vect_create_constant_vectors (vec_info *vinfo, slp_tree op_node)\n      (s1, s2, ..., s8).  We will create two vectors {s1, s2, s3, s4} and\n      {s5, s6, s7, s8}.  */\n \n-  /* When using duplicate_and_interleave, we just need one element for\n-     each scalar statement.  */\n-  if (!TYPE_VECTOR_SUBPARTS (vector_type).is_constant (&nunits))\n-    nunits = group_size;\n+  unsigned int elt_count = group_size;\n+  if (is_a<bb_vec_info> (vinfo))\n+    {\n+      /* We don't use duplicate_and_interleave for basic block vectorization.\n+\t We know that either the group size is exactly divisible by the vector\n+\t length or it fits within a single vector, so all we need to do for\n+\t VLA is to pad the constant to the minimum vector length.  */\n+      nunits = constant_lower_bound (TYPE_VECTOR_SUBPARTS (vector_type));\n+      gcc_checking_assert (multiple_p (group_size, nunits)\n+\t\t\t   || known_le (group_size, nunits));\n+      elt_count = MAX (nunits, group_size);\n+    }\n+  else\n+    {\n+      /* When using duplicate_and_interleave, we just need one element for\n+\t each scalar statement.  */\n+      if (!TYPE_VECTOR_SUBPARTS (vector_type).is_constant (&nunits))\n+\tnunits = group_size;\n+    }\n \n-  number_of_copies = nunits * number_of_vectors / group_size;\n+  number_of_copies = nunits * number_of_vectors / elt_count;\n \n   number_of_places_left_in_vector = nunits;\n   constant_p = true;\n@@ -10841,9 +10856,15 @@ vect_create_constant_vectors (vec_info *vinfo, slp_tree op_node)\n   stmt_vec_info insert_after = NULL;\n   for (j = 0; j < number_of_copies; j++)\n     {\n-      tree op;\n-      for (i = group_size - 1; op_node->ops.iterate (i, &op); i--)\n+      for (i = elt_count; i-- > 0;)\n         {\n+\t  tree op;\n+\t  if (i < group_size)\n+\t    op = op_node->ops[i];\n+\t  else\n+\t    /* Pad with zeros.  */\n+\t    op = build_zero_cst (TREE_TYPE (vector_type));\n+\n           /* Create 'vect_ = {op0,op1,...,opn}'.  */\n \t  tree orig_op = op;\n \t  if (number_of_places_left_in_vector == nunits)\n@@ -10929,6 +10950,11 @@ vect_create_constant_vectors (vec_info *vinfo, slp_tree op_node)\n \t\t       ? multiple_p (type_nunits, nunits)\n \t\t       : known_eq (type_nunits, nunits))\n \t\tvec_cst = gimple_build_vector (&ctor_seq, &elts);\n+\t      else if (is_a<bb_vec_info> (vinfo))\n+\t\t{\n+\t\t  vec_cst = gimple_build_vector_from_elems (&ctor_seq,\n+\t\t\t\t\t\t\t    elts.type (), elts);\n+\t\t}\n \t      else\n \t\t{\n \t\t  if (permute_results.is_empty ())\n","prefixes":["v7","03/10"]}