From patchwork Wed Jun 3 13:15:40 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christopher Bazley X-Patchwork-Id: 136385 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5EA1D4BA2E37 for ; Wed, 3 Jun 2026 13:19:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5EA1D4BA2E37 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=SCnQ/ODT; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=SCnQ/ODT X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazlp170110003.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::3]) by sourceware.org (Postfix) with ESMTPS id DBA614BA2E15 for ; Wed, 3 Jun 2026 13:17:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DBA614BA2E15 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DBA614BA2E15 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c201::3 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780492645; cv=pass; b=NtX/zZtn25Z7XRIBIjwSw6rJ5MmHlJKEGH4hPDAx/UbeHwvJL0FNltiaW6hBE00BQAFpGO91cPDphr76idFDzYd+HfE6tJmUgI+LZMRdLGMirW3rv/TaNN/ux8YcyW0DtCL4cQX4v1UprN3mr2zYV8RuGQZf0MMXlYzf2BsPeSI= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780492645; c=relaxed/simple; bh=TDlJuctGIBxghcyvVGrI1eU2u4KZ+4gzotJXpmAg4+w=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=d8utmyo3wawEa4cYj7h0rHhjyVaYLdPGvWvUBb/z6J9i1eXV5iOwAIjCf9AyEuFBi/I7joWZKAY8zorILAoiz3z6QH0JEvnCYK1AbtRXoFFivmZCJkHe44jGpIugYLNvnWg7xnoHNehTKwPo3U0QCV2kKL8KNjJGKeMkQBanIJI= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=SCnQ/ODT; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=SCnQ/ODT DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DBA614BA2E15 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=sQ6WYb2ICJ2e6+0CNWf3tXmqeA0UkLDlzZoriV0/MytmQWdbi41qQ3o09AKw5+lQlamytqnh2n2HZ6xhaZgrZFCm4mLrbEyYneD3nGmWig9p0rf7ogfrSTOALG2gmJR/t0kzM2QM7Oa1oe0UwsErDL5LPt1DiP2XVsPPqt2dSdltY77DQFCatBBMPW4MbMdLvsyMKGvPlwhB8RrK+ky38huob8+bgtFOTBkP6rQFDSS8JxUYlQkBj9M7BnOEiT9udJeWMEA0lloTPevpD8WGEN4oK8GyEdSxNm1I07hWejoYSF6SyzGurVl14r18g+POQto5WRImynzlfGA1B1ek7g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HFFQlPEUJVE+QJ1pjyS8FVwtoekBjQzXU9rNNQdxpRA=; b=SgxupU6VAzJZqoEFK6cCuwKPkfQA/0z0WH8EoBIR1TtUPcjy4dRBIfrgWVup5H0rJ+vLUfizMpXcSq99KQCtPUPQgoGWLhtB8GdsDFdmEnoTIMbst10yKDOqMIHLKmFTwEV+RGE42U0JFHSvg/stplQ8vk5bssIMbVrhV3v4adBvdTWGTt+g8d/FP0rKvGmJIlUMPVakvYRryVjt/uaiaFFq9gmTt0Xr5TCBiG4h7hSmE25TSt3Z8Fw3Q+1Dt/2wmzvb+9LAv/D1u7ymOXGn27p62ukmTUb0UulR2K8nppdgIH6f4ZyDHWk5dSQy2umWZqCTbY19XdVGjtRUHBjC5A== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HFFQlPEUJVE+QJ1pjyS8FVwtoekBjQzXU9rNNQdxpRA=; b=SCnQ/ODTuk5ACd2eBb3zsaFLMUbPfH7eFqw4YTegfz1p0tSbH/SUrJ+3GilzPSg46GiP3zjhWxpOGrhsYOsS+hbijxKuZZylOQ0jKIYKcIlEsLy6Z1BR0PkQM5i9Zny8l81vLgTM1p9c+SpW6K+y/zAOAtCRL6xOaWiXrjI5kvk= Received: from CWLP265CA0457.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1d4::11) by DB3PR08MB10335.eurprd08.prod.outlook.com (2603:10a6:10:435::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Wed, 3 Jun 2026 13:17:20 +0000 Received: from AMS0EPF00000197.eurprd05.prod.outlook.com (2603:10a6:400:1d4:cafe::c8) by CWLP265CA0457.outlook.office365.com (2603:10a6:400:1d4::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Wed, 3 Jun 2026 13:17:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS0EPF00000197.mail.protection.outlook.com (10.167.16.219) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Wed, 3 Jun 2026 13:17:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=U9tAsglgsSSI/FDOAw4cpM68SrdjJ9L2/v5HbqqNrFteAH7txPLuIbv1BlcFxE+yk0h4C1UBp1cqX1i28Pg6USvCIl6FZK/LKoS6mMxO2HyAOud+UcKSYvr+6wtXNlgb7+JKhLLpQj/JJQxsyufdevD5zEBnzHtoI3l+ESzGn0Iy2ziftu3hH6KvLkjWk6+1HlYHt87g1/tU0LHuv0ry9g79IEoT+X4fAUiO5VXxQAS/bQ8OoJEbi7xec3zuf9rKl/+kWkeXWhZGn77m2gE7Fa8SIC3SsT4T4/rkH41/LNZFEVSwMwSSS7L0OozJCwnFn29xxWLJntbR8wl11Zx2og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HFFQlPEUJVE+QJ1pjyS8FVwtoekBjQzXU9rNNQdxpRA=; b=llyYuJxNxqzjvxaagbHW4jFmMjeG+uGvkCimxaKlTLulzl8C9YHtcvbe0T4Z0IsaxVlw5rJsyFU4VVKV/1FCwOjw5Ka01TJ4kAqpqL6cSY3cvKEm1p1z3nWdZCwg5YEZ4pWYaIiGZNHI2e4ZUSY5A8T9NPlToD44I41wXWxLGqYhvup4hzcLn6zmc6GpBxTS4agaqjfAlH987sPc/Lm5YBvBUeAO+jaUXqb8j9IroRhnJTOFZKfdCI7VoaEWZD7/Wo3v1Zg9nOXiHAWDHE5ZyJ8EH8mV7lk8XutVnqfnxNcwGo2dzcBgWXoDRSl4kMb+Gm7tUaVjHDO0xdX3aHVZQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 172.205.89.229) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HFFQlPEUJVE+QJ1pjyS8FVwtoekBjQzXU9rNNQdxpRA=; b=SCnQ/ODTuk5ACd2eBb3zsaFLMUbPfH7eFqw4YTegfz1p0tSbH/SUrJ+3GilzPSg46GiP3zjhWxpOGrhsYOsS+hbijxKuZZylOQ0jKIYKcIlEsLy6Z1BR0PkQM5i9Zny8l81vLgTM1p9c+SpW6K+y/zAOAtCRL6xOaWiXrjI5kvk= Received: from AS4P195CA0004.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5e2::19) by AS8PR08MB6439.eurprd08.prod.outlook.com (2603:10a6:20b:338::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.11; Wed, 3 Jun 2026 13:16:16 +0000 Received: from AM4PEPF00027A6A.eurprd04.prod.outlook.com (2603:10a6:20b:5e2:cafe::a1) by AS4P195CA0004.outlook.office365.com (2603:10a6:20b:5e2::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Wed, 3 Jun 2026 13:16:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (172.205.89.229) by AM4PEPF00027A6A.mail.protection.outlook.com (10.167.16.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Wed, 3 Jun 2026 13:16:16 +0000 Received: from AZ-NEU-EXJ02.Arm.com (10.240.25.139) by AZ-NEU-EX03.Arm.com (10.240.25.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Wed, 3 Jun 2026 13:16:08 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EXJ02.Arm.com (10.240.25.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Wed, 3 Jun 2026 13:16:07 +0000 Received: from ip-10-248-139-165.eu-west-1.compute.internal (10.248.139.165) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Wed, 3 Jun 2026 13:16:07 +0000 From: Christopher Bazley To: CC: , , , Christopher Bazley Subject: [PATCH v10 03/11] Update constant creation for BB SLP with predicated tails Date: Wed, 3 Jun 2026 13:15:40 +0000 Message-ID: <20260603131548.50668-4-chris.bazley@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603131548.50668-1-chris.bazley@arm.com> References: <20260603131548.50668-1-chris.bazley@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM4PEPF00027A6A:EE_|AS8PR08MB6439:EE_|AMS0EPF00000197:EE_|DB3PR08MB10335:EE_ X-MS-Office365-Filtering-Correlation-Id: 679de6db-4ba3-49eb-2075-08dec172700f x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700016|22082099003|6133799003|18002099003|3023799007|11063799006|56012099006; X-Microsoft-Antispam-Message-Info-Original: lQ/Elh7z6JcOv5pruHO5q/mB8W6No7305VrNkZeVCc1pPanMhA91/1d3W/wNWdu12mPj6qE+ZkjQyBWuATKVThrjqfkV3d/y3W25co4fkH+tYRUdy/0yxsNeO0EIly7N/NaiMkmp02+faC3Ij22ueNZAivaxRFNxbgas2FTufoPz2gbdDnhvwNj7Q+TsNSb1Z+1Y9GATPs05SM522D6CIXoYR5zvDAQK0cpm4m0xN6KXgJzlFYRKG6OZwrXYGtW1jr1FgnZ3A7+21E5C9zF8pIC4YaE9m8Gf5d5/9zcLtibXR6erCYQnA46cMmJQ/R2PieOZv17GXDUhTXHkV+JU+Sh81S42H/oxPP+GUfSUe+uRwZu3rpmZmXvDr8EUFH+pjW5SRyySWP2AmBvSOI1VCtlt4MHAJJiNfeLagykSimXabkzGfS0w1dIGCqXHU/93UTvR17Y7+zujNVjsoGYJpKbBoql61DOxXxW6JfQRvBLxcreAplBA0JkalD7uEWiZPedXKt6fQ5rmlm7YoOgu66nmgBCbYTwqdwQCeYa/caPUCbK9eKADDj+cghPrgyBgaEGblx34dVgPjJFsBZ+s+0vrfIE1j0qMwIZYb3RnCJkP/fdGTlp4zasujeVDYShX3/GAIrDlJdjCQZk5TjmRrYBDZ0G8lRmbfkEnGfYA7h+FSKUd0Skdjago0wYs/vIcHOxn9m1xivyxPfwumfy4G+rQ3x2qYbDe07gRkrDx3nw= X-Forefront-Antispam-Report-Untrusted: CIP:172.205.89.229; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700016)(22082099003)(6133799003)(18002099003)(3023799007)(11063799006)(56012099006); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: sd/Goz3vxmh466Kykr3fJXzyYU+CzwMK6zgE1b4HKWSVxNEisl7THLsfF1dzuM05jowR3w0ycqwvcDvS2w7LyKG0A5jdL8fwRcW9N+YZAIeVq4dJTSjBr0AXkDDLRcw1cST4aYn4gx/7L1XIvK7mG2dcjzK8AXXDt+ZzCu3EMMFqLuBsuiFY1YpQ5BxFQ40wd2pzJJyCB9IiViH3tvH5Jc18LVgJCR0Hio4cEUMfHf39tQEIi4al1Bg6VyMV+JBw9qWD7TU9jhdP6/ZcaWyBTSMg+8k7pzUrNA2P2VBFCozfGQVFRa5Yug+n9Lzeqg7eWqFHYH8CMtEo2c4nseCxVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6439 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF00000197.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 5c5df114-f08b-4131-b831-08dec1724b10 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|1800799024|14060799003|35042699022|376014|82310400026|3023799007|22082099003|18002099003|6133799003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: 6rPzNBSS4zI38LXvp2EEqQF1c58p3Dr1j13a7VWix3HDeTltRvF56J6QQXsiGxmnq+4xoKSb12cLgkFGiWbEOo06wUXAhVpqhvR4A0e8wPZB/0GP7x/ikYhopUA0855SodR4BaETCIMI6a5cs4JL0d3eSPwIsMVntxnlcP7Lr4TmS4DA0nAh15t512JY7HQqpQuo/Z4NHHCNPMSYPRW04l5chbwq0R9k8X7ZjBp7JwIBo2lTYt2sVVDzrFkdJioDuuzsmdC4pPesR4JzG0cPl5hkoeTM4QibcBpUdQ+UsfyDyTcYdOpJ4mBgKejajZGsW7NO6RZdJuAS5CPTDbc0iMdW+zd2RoyqynJXTNNBUkB/oIXxOtlG88TG6FgMMDotJfsUu32cZEa8fuSsl5ylY/OSI67eg3qJIp+EWr1HgMKrrJk3L+UIFhYL/cWL8OgDre0sCKcpqbf5Akxj/k0SdJc0/fbNCC6TrHSGFxqzsrcICTudbL/cTS6XkbeaoOKfOol/aPGM+XGVndq4y4UefJNTkWgwBfe1nf7SsE5Hj6wexqUZ0dP/JQItBcQNivRks8tKbm9gX0haJam0DprPsZnMSgQ1APcvThZlpZyLwLFsbNereJlaBJqeujGrRypYrovZKX0epDRezGXjkZJzhef2IGLtng898R/Zo/NB1fYbrDiF7z95h3gdbe/9hm4neylwqHUE5qDMikG496M7mFtb/G3NbE+psNJxE9O+ezc= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700016)(1800799024)(14060799003)(35042699022)(376014)(82310400026)(3023799007)(22082099003)(18002099003)(6133799003)(11063799006)(56012099006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kZAok3neoNcoTyybdGDbyH9maNf7SBbOcVSfetb3zXGqEIKgf3oLmVlJCut7RwHUqaE7LEbNvkCErnl5yUFLVm0juaH9L6JPUqN3Ns8cHdJ2Ikjo0boS3j0b98ZHAdwueLTOtk14/HajxxSBGzKWwwh12/eemVnW4Lsn9JIKIN+dZtvnz5O6kaZlrP6wsD8SklsoGsByExlCeVW6DzNftu6cnNA/WrgP+3jF3GhrUB0ZvP7XVjaFixi2LiiVSda6gC6GWaW83TxOIaFptlZcZs/nTiZxRjDeHx1eoVLmkl+PCoQcVgcOqIStjz40KXKIwtbr+9dlyyzxmFxKETS9byacO9/B2VV8yW5uJYRhV81L92a48938mdILSiXFCzNCsHZyxjQU5SWjqMfKzbwFQCbTqCgu1nsHGInOhdVPJEGH/mMJjCXDjmWptGRvNF9Q X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2026 13:17:18.2551 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 679de6db-4ba3-49eb-2075-08dec172700f X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000197.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB10335 X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, RCVD_IN_DNSWL_BLOCKED, SPF_HELO_PASS, SPF_NONE, TXREP, URIBL_BLOCKED shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Created a new function, gimple_build_vector_from_elems, for use when creating vectorized definitions for basic block vectorization in vect_create_constant_vectors. The existing gimple_build_vector function cannot be used for SVE vector types because it relies on the type associated with the tree_vector_builder having a constant number of subparts. Even if that limitation were lifted, the possibility of tree_vector_builder patterns being used is inappropriate. The new function takes a vector type and vec of tree nodes giving the element values to put into the built vector, instead of an instance of tree_vector_builder. If the number of values is zero then a zero constant is built. If all values are constant then a vector constant is built. Otherwise, a new constructor node is created. gcc/ChangeLog: * gimple-fold.cc (gimple_build_vector_from_elems): Define a new function to build a vector from a list of elements that need not be complete. * gimple-fold.h (gimple_build_vector_from_elems): Declare a new function and a simpler overloaded version with fewer parameters. * tree-vect-slp.cc (vect_create_constant_vectors): Use gimple_build_vector_from_elems instead of duplicate_and_interleave to create non-uniform constant vectors for BB SLP vectorization. --- gcc/gimple-fold.cc | 55 ++++++++++++++++++++++++++++++++++++++++++++ gcc/gimple-fold.h | 14 +++++++++++ gcc/tree-vect-slp.cc | 40 +++++++++++++++++++++++++------- 3 files changed, 101 insertions(+), 8 deletions(-) diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc index 1ceb5aa5fba..3462c5acb6e 100644 --- a/gcc/gimple-fold.cc +++ b/gcc/gimple-fold.cc @@ -11425,6 +11425,61 @@ gimple_build_vector (gimple_stmt_iterator *gsi, return builder->build (); } +/* Build a vector of type VECTYPE from a partial list of ELTS, handling the case + in which some elements are non-constant. The list of values may be shorter + than the minimum number of subparts implied by VECTYPE. (When the vector + type is variable-length, the actual number of subparts may not be known.) + Omitted elements are implicitly zero. + + Return a gimple value for the result, inserting any new instructions + to GSI honoring BEFORE and UPDATE. */ + +tree +gimple_build_vector_from_elems (gimple_stmt_iterator *gsi, bool before, + gsi_iterator_update update, location_t loc, + tree vectype, const vec &elts) +{ + unsigned int encoded_nelts = elts.length (); + gimple_seq seq = NULL; + gcc_assert (TREE_CODE (vectype) == VECTOR_TYPE); + unsigned int lower_bound + = constant_lower_bound (TYPE_VECTOR_SUBPARTS (vectype)); + gcc_assert (encoded_nelts <= lower_bound); + + if (encoded_nelts == 0) + return build_zero_cst (vectype); + + /* Prepare a vector of constructor elements and find out whether all + of the element values are constant. */ + vec *v; + vec_alloc (v, encoded_nelts); + bool is_constant = true; + + for (unsigned int i = 0; i < encoded_nelts; ++i) + { + if (!CONSTANT_CLASS_P (elts[i])) + is_constant = false; + + CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, elts[i]); + } + + /* If all element values are constant then we can return a new VECTOR_CST + node. Any elements for which no value is supplied will be zero. */ + if (is_constant) + return build_vector_from_ctor (vectype, v); + + tree res; + if (gimple_in_ssa_p (cfun)) + res = make_ssa_name (vectype); + else + res = create_tmp_reg (vectype); + gimple *stmt = gimple_build_assign (res, build_constructor (vectype, v)); + gimple_set_location (stmt, loc); + gimple_seq_add_stmt_without_update (&seq, stmt); + gimple_build_insert_seq (gsi, before, update, seq); + return res; +} + /* Emit gimple statements into &stmts that take a value given in OLD_SIZE and generate a value guaranteed to be rounded upwards to ALIGN. diff --git a/gcc/gimple-fold.h b/gcc/gimple-fold.h index f1853560779..8b324be005a 100644 --- a/gcc/gimple-fold.h +++ b/gcc/gimple-fold.h @@ -243,6 +243,20 @@ gimple_build_vector (gimple_seq *seq, tree_vector_builder *builder) UNKNOWN_LOCATION, builder); } +extern tree gimple_build_vector_from_elems (gimple_stmt_iterator *, bool, + enum gsi_iterator_update, + location_t, tree vectype, + const vec &); + +inline tree +gimple_build_vector_from_elems (gimple_seq *seq, tree vectype, + const vec &elts) +{ + gimple_stmt_iterator gsi = gsi_last (*seq); + return gimple_build_vector_from_elems (&gsi, false, GSI_CONTINUE_LINKING, + UNKNOWN_LOCATION, vectype, elts); +} + extern tree gimple_build_round_up (gimple_stmt_iterator *, bool, enum gsi_iterator_update, location_t, tree, tree, diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 4dd7e6e1e21..f91d3e723ec 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -10727,7 +10727,7 @@ vect_create_constant_vectors (vec_info *vinfo, slp_tree op_node) unsigned j, number_of_places_left_in_vector; tree vector_type; tree vop; - int group_size = op_node->ops.length (); + unsigned int group_size = op_node->ops.length (); unsigned int vec_num, i; unsigned number_of_copies = 1; bool constant_p; @@ -10757,10 +10757,23 @@ vect_create_constant_vectors (vec_info *vinfo, slp_tree op_node) (s1, s2, ..., s8). We will create two vectors {s1, s2, s3, s4} and {s5, s6, s7, s8}. */ - /* When using duplicate_and_interleave, we just need one element for - each scalar statement. */ - if (!TYPE_VECTOR_SUBPARTS (vector_type).is_constant (&nunits)) - nunits = group_size; + if (is_a (vinfo)) + { + /* We don't use duplicate_and_interleave for basic block vectorization. + We know that either the group size is exactly divisible by the vector + length or it fits within a single vector. */ + nunits = constant_lower_bound (TYPE_VECTOR_SUBPARTS (vector_type)); + gcc_checking_assert (multiple_p (group_size, nunits) + || known_le (group_size, nunits)); + nunits = MIN (nunits, group_size); + } + else + { + /* When using duplicate_and_interleave, we just need one element for + each scalar statement. */ + if (!TYPE_VECTOR_SUBPARTS (vector_type).is_constant (&nunits)) + nunits = group_size; + } number_of_copies = nunits * number_of_vectors / group_size; @@ -10860,6 +10873,11 @@ vect_create_constant_vectors (vec_info *vinfo, slp_tree op_node) ? multiple_p (type_nunits, nunits) : known_eq (type_nunits, nunits)) vec_cst = gimple_build_vector (&ctor_seq, &elts); + else if (is_a (vinfo)) + { + vec_cst = gimple_build_vector_from_elems (&ctor_seq, + elts.type (), elts); + } else { if (permute_results.is_empty ()) @@ -10925,9 +10943,15 @@ vect_create_constant_vectors (vec_info *vinfo, slp_tree op_node) NUMBER_OF_SCALARS/NUNITS or NUNITS/NUMBER_OF_SCALARS, and hence we have to replicate the vectors. */ while (number_of_vectors > SLP_TREE_VEC_DEFS (op_node).length ()) - for (i = 0; SLP_TREE_VEC_DEFS (op_node).iterate (i, &vop) && i < vec_num; - i++) - SLP_TREE_VEC_DEFS (op_node).quick_push (vop); + { + /* Guard against the outer loop never terminating because the + inner loop is never entered. */ + gcc_checking_assert (vec_num > 0); + + for (i = 0; SLP_TREE_VEC_DEFS (op_node).iterate (i, &vop) && i < vec_num; + i++) + SLP_TREE_VEC_DEFS (op_node).quick_push (vop); + } } /* Get the scalar definition of the Nth lane from SLP_NODE or NULL_TREE