From patchwork Wed Jun 3 15:19:16 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christopher Bazley X-Patchwork-Id: 136406 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 105EC4BA2E1B for ; Wed, 3 Jun 2026 15:23:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 105EC4BA2E1B 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=XrEQTWug; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=XrEQTWug X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c20a::7]) by sourceware.org (Postfix) with ESMTPS id 264014BA2E2B for ; Wed, 3 Jun 2026 15:20:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 264014BA2E2B 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 264014BA2E2B Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c20a::7 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780500049; cv=pass; b=pg/sHTaGgtQp3bawtV3wKYgiia0fUQw+9NVvzK3pBKgGdj4x06O+ntv01aNENBiWC/R+v4sH07sm+QdOjpXF/5h6fqLJSaWdsdhJUbNXrr8AbQggNn12WNzA6nZsboSFlMP+MzVhjhSPWKkK/s7ZUiSv2rr3zs/fEGKoca4jYvk= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780500049; c=relaxed/simple; bh=gmuP0PgBSZYe8slkCGRCZDLgS01bLmQud48pFwsxqpQ=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=j3OHYjUB0BY/QyOkS+XWW1xeDYDCtOqc8fBoq1ESTZNe8ABl01JG10v7qahyIlzVlhC8NrTl+lt7yRng1ACc1D9c3ui5vxMm1IbL1ceqHXv+zlff4xwNfjBw03FtZtZxICAHYtTjJvs0YqlLDNd2eL0Q/M+4CIYjrrWMMS7TrpM= 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=XrEQTWug; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=XrEQTWug DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 264014BA2E2B ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=XgvyN9pcRU+Dfs9t8js1DZIVWJkkcszRNs+waKpbqRyOje/uTWHg+juwMgxaPxtLqPAZQ5IGaBHKCzC5/OW9jH6G+BVxHzuTplQR5D3ykiTpC86kh8R7C3Oj8KfrUL9oCVpewlaeR6RHPIAqccOxRiZGl4mEKlyev9pTpTY6f8CXPS4EubwQ6zNq1Cc45hORv4Gp5Rkn2XmP23zNYfZSX3crPH+AqfqD1+NzWeszdT0Vv2H/ydqu9EbC4+4qefF/H1rltZAgBsoDkfQLReVs+dOFueDT0KMAtldCeNN02iaVVs0wL21k2ZrQh3a7ekqFg/UhGWwaEaCCn1fCB0lUbw== 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=+WhTVbCcVBMM/0mPxDB0FazWrxqo9yjFeOIe++WfxD8=; b=gtSidJBN37srQtKHMXSBNFuq7liRgtySqpKihKtE+jejjjb/MQb/Ry4shfQ6qxcpjfYntpHJ/CmeC+stUIl0yW10xPy8zJJyHsEfxYv5YRQ2Rna4WGZ5Mro2kLAymtfnsr/eeRdrbeSEtnHw/B0CGWoYADy2eU1UNuICk6EwYVPFv26vLLaZevqbj5UXolX3avEhHhX6bCXNvudcZCT4gNyj8y44XniFhkcclArnf66GxP0AsIDORdIO2CENIOP8eybwhGGKArPlFPez63wF5538kM6Na+TheOAMbQnoPhYuCXzYiRw8BgKO45KZwBHKQEjuhS1rIhCHJ7+hd0d1CA== 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=+WhTVbCcVBMM/0mPxDB0FazWrxqo9yjFeOIe++WfxD8=; b=XrEQTWug2TX2lNLZuq/LwWn3DCiiX5mdAt4n/6MuXvyGgJteDxivbqY82Q9kyCrqKnZs3nllNK1KGAXhagOJqlX3nuEtkdNaSxniw/RKizX+vQOVW0xjAgcuYl+OZXkokasO4u6uuij0+XWerc3azz2wBcPKU8AMTd2lBW3SCnI= Received: from AM0P309CA0030.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::32) by DBAPR08MB5670.eurprd08.prod.outlook.com (2603:10a6:10:1a6::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 15:20:45 +0000 Received: from AM3PEPF0000A797.eurprd04.prod.outlook.com (2603:10a6:20b:28f:cafe::4a) by AM0P309CA0030.outlook.office365.com (2603:10a6:20b:28f::32) 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 15:20:45 +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 AM3PEPF0000A797.mail.protection.outlook.com (10.167.16.102) 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 15:20:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wxrM5acp+NMTVljzr/hQgfQmczYzQz8eqnU0COZ2IBGbtsi2iGm0xKJf9ObfyVQIXqCEL/2DSdRhIFMGw4BxGvtZJnAhEDjutBMwgfd55yTiaVvJ36vcgD/dfYEUwyRDs3uWQIE9yAYYjzqKFqug5BJaK0LR8LENwPw9rXm6ydusqgcM5f1tARyUdBgGFPMw9qKcIGwlrEIqSK3gJrMAsTfpRwZiRZdZpAskbpkAvgtnbpraCGTfYt+VLb5/vUFfvlGBlDWooMPZ58PC9iAmd1dVuxEJkPwowXWPNx9ls2KiXjAZoYqQZej1HagqhTz2Q5pKjfSCo9ead7EhaZyTkw== 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=+WhTVbCcVBMM/0mPxDB0FazWrxqo9yjFeOIe++WfxD8=; b=q63wjkpdoQZdiOe2B9IGn5/xXHVuGAPcHPH9MKV/WGuzcAUk9loBcO8kCCPpjP5nF6+36iENFfJiNxBfnbMkm3476SGDJfkdJ2ja7y70pOrdiHQkGbBLUMKs9PmFwOQLvyBBAhdvAZt1oSQ9EdTzTJ9MmUQTcO7uSRJ2dRlEXb/zPiQtubilUMESsdZ0F3vKqzctR3TIQG/zERi9/s2LcTup97nMxHv5yfVIwqnOA6Yj+FsPxxjrKQ30sJqbiVm5ZnwQA3AwmKOgkCVE3VEL96nL1of+opu7d6QPMH+mX0gBtUSmfg8xK33e7kPDUXh8NH6FSfUalpziLxNIm2yBJQ== 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=+WhTVbCcVBMM/0mPxDB0FazWrxqo9yjFeOIe++WfxD8=; b=XrEQTWug2TX2lNLZuq/LwWn3DCiiX5mdAt4n/6MuXvyGgJteDxivbqY82Q9kyCrqKnZs3nllNK1KGAXhagOJqlX3nuEtkdNaSxniw/RKizX+vQOVW0xjAgcuYl+OZXkokasO4u6uuij0+XWerc3azz2wBcPKU8AMTd2lBW3SCnI= Received: from DU2PR04CA0155.eurprd04.prod.outlook.com (2603:10a6:10:2b0::10) by VE1PR08MB5791.eurprd08.prod.outlook.com (2603:10a6:800:1b1::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Wed, 3 Jun 2026 15:19:38 +0000 Received: from DU6PEPF00009528.eurprd02.prod.outlook.com (2603:10a6:10:2b0:cafe::64) by DU2PR04CA0155.outlook.office365.com (2603:10a6:10:2b0::10) 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 15:19:38 +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 DU6PEPF00009528.mail.protection.outlook.com (10.167.8.9) 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 15:19:38 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) 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 15:19:35 +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 15:19:34 +0000 From: Christopher Bazley To: CC: , , , Christopher Bazley Subject: [PATCH v11 04/12] Refactor check_load_store_for_partial_vectors Date: Wed, 3 Jun 2026 15:19:16 +0000 Message-ID: <20260603151924.53706-5-chris.bazley@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603151924.53706-1-chris.bazley@arm.com> References: <20260603151924.53706-1-chris.bazley@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DU6PEPF00009528:EE_|VE1PR08MB5791:EE_|AM3PEPF0000A797:EE_|DBAPR08MB5670:EE_ X-MS-Office365-Filtering-Correlation-Id: 9b27de70-99ef-4c34-ab3b-08dec183aec6 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|18002099003|6133799003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: orcCdXfAvirWaI+NEItiOnO2sG5maCELzpQS/oAbZ9Uy0shRK//T3zKP6XvY3E5sKQNcgTlkcETElwJerVfqv1zOScqiKzsV+zC+m5KwHgiFsM/g6mMom5//Ohga8E6BTr5lmgEL45bdRAB4B+rsmVkWH72ETHu1Nd3fu7sWWuTp4XH4HnA0aKK9I5IJlA77tsOWnHUyX8FwEhbMJQIvAh6mbKgZZVuroIBeU8RrKKKGqg4REaB8mcEo8DizeaYhwqoHUuoguA/pkBEBsBTsSVBmhHs2aRfjU39409hPJZ2uofywLfGy/Mmi9vV+7DH3q580R6nzPo0WkBoz8MxRLrDaLXcvyrsZaXbYfvEzMxh/aPL1ldXdwF7RnFBeu9Vdfx9tqp8bP0+v6h71Z8jSCXz6GsiIL2ocurFnqUDBBcf74Q7COPooNdYVcNjbmYN6BmT71hwNkO41YNZt5GzB1UzTPRoOSHlSlxgjILW+sfnIvrgCK/Vk040Rrrg2pifiiOnJ7CyNWqUKA/yi6gnA2xCA0JdfEu2p6hKvZj1BxPzYjlxwlL4XjZDVCH/EUOq/7GSS4EU5GLPHtE2OyaYoX7zrAw4U/ha4bC+iQMRh3cE2sXWx00Sr5BzRj7wDStUfy+RDdc7CQf9aJUZiaTBvH4IoopXZ/kqpPkbGaeGYeRHMbXlZrk6z/QP5lcXKR4IWbwHsw9mjxQOhNcTx+mTrWPJz1d4GwytoDDh/8eiXDkM= 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)(18002099003)(6133799003)(56012099006)(11063799006); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: dYM2AJ7zRMBNqjE49eCqjfConGD8XLTadksdrVjonrnEhua7G+ek5tGLUmCJgnvlNLX8R/6t3bqCLRXZ4HU5wrKxb2DF9j+rk27Sw6uOi3vwm1QME2BSii7WULf107exRigigMJxm7/4BkhITIMJg2TkWGnqXGNcgWQWb3bKERFaW/VTwgo63S1hpX8ADa08RXPCqmcL0Tg1Itiu1QkjNzoq9DGfExtzLBS/nWSMzPAT8xCiLhPTIfwOQ5fDOtrJv4cMrTMdu6P9ZzOH/CCgm0D/5EB6Rz1EhcaJmV11H48Kw6ZbtfQkQZKjSMs5dzLI2ziOfCLjw36y0ZsLuMTOyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5791 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF0000A797.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d2030b01-319b-474a-6936-08dec1838725 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|376014|35042699022|14060799003|1800799024|82310400026|56012099006|11063799006|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: ElCx2+aBPELyYXni4PLB/69ktRPGE5gY6djvEjvybAvIHduhs6fjwOT9U4EOaDh5lTbna6EZ2RMCG7wgkcBQ2m3h/Xwy/1N8aELJtp4qV8SjgoBw/rxfs+e1lkXCUNyWMGgp8OkTZgsUjq7Sq6yStn2XLs7Pcrh+FMmnelClrCwus3sDe6IDfVjLqYtpM5DTer5Q15zcFLMcSlqQ4LgZrnrZHL1vHjNl+ZAv3+/bmpR6MYLN1R2rMLV8kEXtAKcUL2KKYawVTEALfDwIqJK9F8UOle8yacP31nYVT+q8M0C+BkDqnFgICYVQ+8BL4WWw3fTrTlMstcWKCCzImZRnMELOYZKZGlDwioiBRsIEeG63N2S9r1Rbk6iVwIOmhnrFxZ42o01MuVU7ZdB9cFxqXL/4KCmwdv7CpyGUss9gU8vcRBl1HPW44aPl9ApQ+Y4FLN+/gHe+Omq7i6cnP9XyW+BJDZgJwgz8p4/BDVdEC9lqMwFDSxYHiXNECmh5NCArjnoCWOqnZjfwtMH1osKMo4J/miy5xaLqVMxNqbmrnLWenrOgcW56xyBKvXgCQKpWHBPLKZcopwr8l4pZ71tUlenZ0kYkmRws7hnBiELukTLXvCQdARckjhg6uIBi2D8XdKbF+nwpLqfW6KYxz3Wq6WZktiVgIgtiYkvaWjebv3UjCd6WVhzM7a6S1Oe/OG5GkSAyJOJHLGc3p3TtYrBTNhHyO7DluVPF/FJjmZS2Kjw= 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)(376014)(35042699022)(14060799003)(1800799024)(82310400026)(56012099006)(11063799006)(6133799003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /hD4iDw/SvpDnhovUqjDU862+VJLXRiU9J7ssxfmmrgFuw3/WNZY9LT9hworaRidYZdrftytMY520BK+f0fouITqRdRLBkD+XmRH6OoyTlUsgDb0JYY4SgpPjNBhM2lvmTT5bzO5W/zPjGK9prI9QS8EQia0ogmduogMOEvAHDUQMoW8tDeJYiXIQwpAc5T158JupdqcuZ7GNtMzQIUu8SR3Rl9R1dprJS8wHoKkUH+GYST8Ol6kit23ODnxwsYKbK0QWUeKQutc2YrlLq0LABqinclzUa+LYG0rGfPWfcv5Lw6xC7vnwxnZmkJSecJCCn8imeUyQEu8TLJ8SX91RTpu+MPuDhcMcyGyKF7ax4eDnNEnXrTgi6ZzRlxadz4OmgsO0qj3MKkhJpsCFs8IfJEVPHKlrDitWnRnSjbwpW74z0DjTdvLoHPZtcPS/eJR X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2026 15:20:44.9385 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9b27de70-99ef-4c34-ab3b-08dec183aec6 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: AM3PEPF0000A797.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5670 X-Spam-Status: No, score=-10.8 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 Moved existing code to determine the partial vector style for a load or store into a new function that will be reused for BB SLP with predicated tails. gcc/ChangeLog: * tree-vect-stmts.cc (vect_get_partial_vector_style): Define a new function to get the partial vectors style supported by the target. (check_load_store_for_partial_vectors): Use the new function in place of existing custom code to do the same thing. --- gcc/tree-vect-stmts.cc | 71 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index ecad74e7cbf..1cfa2177add 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -1461,6 +1461,56 @@ vect_get_len (vec_info *vinfo, slp_tree slp_node, gimple_stmt_iterator *gsi, static tree permute_vec_elements (vec_info *, tree, tree, tree, stmt_vec_info, gimple_stmt_iterator *); +/* If target supports vector load/store (determined by IS_LOAD) with length for + VECTYPE, return VECT_PARTIAL_VECTORS_LEN; otherwise, if it supports vector + masked load/store for mode for VECTYPE, return + VECT_PARTIAL_VECTORS_WHILE_ULT; otherwise, return VECT_PARTIAL_VECTORS_NONE. + If load/store with length or mask is supported and ELSVALS is not null, + store the possible else values in the vector it points to. Unless FACTOR + is null, *FACTOR is set to the number of separate subelements that each + element of VECTYPE should be split into. (This is always 1 except in the + case of VECT_PARTIAL_VECTORS_LEN when the machine mode of VECTYPE can only + be supported by using a length in bytes instead of a length in lanes.) + */ +static enum vect_partial_vector_style +vect_get_partial_vector_style (tree vectype, bool is_load, + unsigned *factor = nullptr, + vec *elsvals = nullptr) +{ + machine_mode vecmode = TYPE_MODE (vectype); + + /* TYPE_MODE tries to map vector modes that are unsupported by the target to + same-sized scalar modes, so reject scalar modes here. */ + if (VECTOR_MODE_P (vecmode)) + { + machine_mode mask_mode, vmode; + if (get_len_load_store_mode (vecmode, is_load, nullptr, elsvals) + .exists (&vmode)) + { + if (factor) + *factor = (vecmode == vmode) ? 1 : GET_MODE_UNIT_SIZE (vecmode); + return vect_partial_vectors_len; + } + + if (factor) + *factor = 1; + + if (targetm.vectorize.get_mask_mode (vecmode).exists (&mask_mode) + && can_vec_mask_load_store_p (vecmode, mask_mode, is_load, NULL, + elsvals)) + { + return vect_partial_vectors_while_ult; + } + } + + if (dump_enabled_p ()) + dump_printf_loc (MSG_NOTE, vect_location, + "the target doesn't have the appropriate partial" + " vectorization %s for vector data type %T.\n", + is_load ? "load" : "store", vectype); + return vect_partial_vectors_none; +} + /* Check whether a load or store statement in the loop or SLP group described by VINFO is possible using partial vectors. This is testing whether the vectorizer pass has the appropriate support, @@ -1626,28 +1676,23 @@ check_load_store_for_partial_vectors (vec_info *vinfo, tree vectype, poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype); poly_uint64 vf = loop_vinfo ? LOOP_VINFO_VECT_FACTOR (loop_vinfo) : 1; - machine_mode mask_mode; - machine_mode vmode; - bool using_partial_vectors_p = false; - if (get_len_load_store_mode - (vecmode, is_load, nullptr, elsvals).exists (&vmode)) + unsigned factor; + vect_partial_vector_style partial_vector_style + = vect_get_partial_vector_style (vectype, is_load, &factor, elsvals); + + if (partial_vector_style == vect_partial_vectors_len) { nvectors = group_memory_nvectors (group_size * vf, nunits); - unsigned factor = (vecmode == vmode) ? 1 : GET_MODE_UNIT_SIZE (vecmode); vect_record_len (vinfo, slp_node, nvectors, vectype, factor); - using_partial_vectors_p = true; } - else if (targetm.vectorize.get_mask_mode (vecmode).exists (&mask_mode) - && can_vec_mask_load_store_p (vecmode, mask_mode, is_load, NULL, - elsvals)) + else if (partial_vector_style == vect_partial_vectors_while_ult) { nvectors = group_memory_nvectors (group_size * vf, nunits); vect_record_mask (vinfo, slp_node, nvectors, vectype, scalar_mask); - using_partial_vectors_p = true; } - - if (!using_partial_vectors_p) + else { + gcc_assert (partial_vector_style == vect_partial_vectors_none); if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, "can't operate on partial vectors because the"