From patchwork Wed Jun 3 13:15:41 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christopher Bazley X-Patchwork-Id: 136393 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 D71364BA2E37 for ; Wed, 3 Jun 2026 13:25:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D71364BA2E37 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=CqZvZ0Ek; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=CqZvZ0Ek X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012061.outbound.protection.outlook.com [52.101.66.61]) by sourceware.org (Postfix) with ESMTPS id 0B81A4BA2E3B for ; Wed, 3 Jun 2026 13:17:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0B81A4BA2E3B 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 0B81A4BA2E3B Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=52.101.66.61 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780492651; cv=pass; b=POJ6f6CpOvXIB2c4ACl8EUrQUIeffLylo8b/qu3vZy1/bvwf9L77DSt36xNQFpRsNxEkeAiL8aMq+GQS3U3KeCbML7dDS7SHSIbdwsRI0ijwf11KqTzgYD+msUjc+nyAxTnWW3rOe/GOa0Z8OyW3aM+D+6cvWcRhiqC5vHNsB1o= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780492651; c=relaxed/simple; bh=gmuP0PgBSZYe8slkCGRCZDLgS01bLmQud48pFwsxqpQ=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=PpYM9vhRQJ7v3O4AnF5VZA0esIQmTqpTbfsItAYRvJ2SiJF/qd6oh6/PgPj2tE9uOOOiOJLpoi0MpRSQ8GYKTdBxBS8vwFOM77K7XrJttn5ey0TX9xdSNOa2LHFksEZlEFRJB2P57GTulejmcOJ120t0EKhSIABBgQKDm7EttOw= 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=CqZvZ0Ek; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=CqZvZ0Ek DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0B81A4BA2E3B ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=D6klsec5B/mBXBKBh/WnOw2APdF/Rc6oxxKJ0+8z+Sx6QvMOUjAz4aO/tIVH+HBb8C1vZLjVIEL/d3xtB6d9z+uk5ayB5e2bdtYXH0rWFYk6vVhM08PD9O9ZRj4aWw+ZY1BJg4POABIXMAZOcGidB/Jb8kJSDPFOgsPeaPzSSNB/vfn7CKQFV/0lWyOj+2ak2JAb7fsWlSRqAeSg73ab9yvoOu4bMQvxk3ceLsGG53kAdakvq+qxjF5n/VdL/5qDBa4RiuAovsumpT2TLcLqFKLBYDAieF/0AiIbpzkfj91WP1pMAhGV6nXLFO5dJJZcSyfU07mWX+1AOszjCaX5EQ== 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=mp/gqT8raRp3mrt9wgR3RQrlj5U6j72HAkGkvqBYjsnL0TRwIfEXZYV1BYG9X+Qm5kFF8/uXpa6oNNCHMotOURAwNRkTJQA7ufwSMMHvXQBomlgAnm3Q6MWPUzaw7IdUE65BpWxNFsKl+0RNGe6kzRS4Q7hosUyteIXYcXgzADKOqr8YGhG/CsKtydsd8g1KH4LqPSrzTww2YpZH2VqYEnga3hXdMBNHjXxQ+kr1T6Gijdd3t4yznVtZCFPDR9ecTdNOIUNusIyP7GHrTjSSZBeNtSkVr4SZOtmgnfeAx9MlFsL08TcTztZjxXTlXLxgG0K+8oVHH3/AkIYJu3Z5Zg== 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=CqZvZ0EkhGqpzmqIcDVakde761kjpD7cSLLnER7Ee18DE5r2IBONn1VBCaAPXw5iDSUvS0pf5cYZKMeiNanEvueS86l+OemQYu2rvlYjxXsAfbVsA4IyjkW25CBzZPpilr13Ia3D91x67m5rv2B0XEci1fXhrpPOehKjj7pjaeo= Received: from CWLP123CA0192.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:19c::16) by DB9PR08MB6585.eurprd08.prod.outlook.com (2603:10a6:10:250::20) 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 13:17:25 +0000 Received: from AM3PEPF0000A791.eurprd04.prod.outlook.com (2603:10a6:400:19c:cafe::54) by CWLP123CA0192.outlook.office365.com (2603:10a6:400:19c::16) 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:25 +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 AM3PEPF0000A791.mail.protection.outlook.com (10.167.16.120) 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:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=csZHJX3Bagoq8mu3p5njR8+B/yxuzk25J/RvLhpVrp7dO6hvM3pHJhP7KVUome4+PdHdTQ/UcVqCjtgqe8ZzngGLVYGmpTCzadL+OwoTHF6hvJW8w4guQFHlOZ8Isek4QnovrhCFoG9tiPtj8eRDA0AGLD9yjhl9jCG6GhCZT12ViGNOIgefC4pUxzshiCZGSa6exAwjprFdG9abMNdzRjNhlYS+bMtAoBs2N55/CfcPnAq20vT+ZcFzoD0uMe6zxNILgcihtnOPg/oRgQCCo+Ws5eJfXmgXtc+kV++V5RW24bprtqOc0J6muH83Tk5WA92vpt1OCsnbcVKTmCZdmA== 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=dT7s6w2W8QBNOZg70myMrhCxIkMdYxiJwNOYchbPxxdvMYdLI01pD2LRPSfNq8vybXFOqAnNssSVPSwtHAnVV0gHBWbFhY02OrkLmaTj73Mt+xj9O0P9elfwE6JQ1P6/G9FIigZ4V2YUCVjMFiOs421O/664JLqtdHdANZfuXC7aNQy46rrFXrLdCf70m6gN6UwxE8cXqmQsSQCfcPMi7FEZHkYsvLio5szotEN0+hEuKwuoEmnXfwhlDiUbMuwEsER73+lRkGvTEfAH3bnBg21MKi+aRZbPKENc/k8q9dD9oNlmmmA5ZyCmYE1pE8n1CkrrNigd/zUE3x0p9mt9Xg== 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=CqZvZ0EkhGqpzmqIcDVakde761kjpD7cSLLnER7Ee18DE5r2IBONn1VBCaAPXw5iDSUvS0pf5cYZKMeiNanEvueS86l+OemQYu2rvlYjxXsAfbVsA4IyjkW25CBzZPpilr13Ia3D91x67m5rv2B0XEci1fXhrpPOehKjj7pjaeo= Received: from AM0PR02CA0140.eurprd02.prod.outlook.com (2603:10a6:20b:28d::7) by PAVPR08MB9505.eurprd08.prod.outlook.com (2603:10a6:102:315::17) 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 13:16:16 +0000 Received: from AM4PEPF00027A69.eurprd04.prod.outlook.com (2603:10a6:20b:28d:cafe::77) by AM0PR02CA0140.outlook.office365.com (2603:10a6:20b:28d::7) 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 AM4PEPF00027A69.mail.protection.outlook.com (10.167.16.87) 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:15 +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 04/11] Refactor check_load_store_for_partial_vectors Date: Wed, 3 Jun 2026 13:15:41 +0000 Message-ID: <20260603131548.50668-5-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: AM4PEPF00027A69:EE_|PAVPR08MB9505:EE_|AM3PEPF0000A791:EE_|DB9PR08MB6585:EE_ X-MS-Office365-Filtering-Correlation-Id: 66ba14bb-efb6-44b4-515d-08dec1727446 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700016|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: 8ksDt8n40EJx+fhd1eEFq+pV/F2Z5nZa0DCSy3g/9eEzHPkEuo7APXHplnO42kGrbFR3+oOKGOVn68vDk7qusP/YClxkVrCxVT/yAGtcQ/N3/Z0NrHhOYwC5ezqFKlRbzXu7q0LYId/rFRlC67tuhFMMWZEfb0CGaaF16dNJS8P+oRJ34L0nO57SjhSRuYUBD3Ymkvxslvecvn+Nvmcrn/oNF+uTU8IPRb4Q+wqo/Xxa2x+BgDlkiwsP5ic42AVl0NRECTuGgguq49No+s0ooPj537TQu2W8JwGe6gvkvSoorB1qCPoD6hYCQMxetshmylOHrIx27e/WHp80RLzpKK9v3GD2N/Gj3NvsbJHTuXoDSiAkV4P6R0I6EdVX//juGRNnPN7x0nBAiyAJoezunPEVtJ7L3PgQ0E96dQuHZVMX6A31D+MeVVEfedNQC/sIhsv8j1trf8HhPLbaEU+NLV3Vrj6114CFXdsq2Kd+diU8DYv4zbgXVCY/KGynEOgpYPH9LPCqvwYDlphNwqT6WSFc6q1x29etfqgnfAxsbGYiyZXvkz6+jnOoOHS/Rmmn/y6U3NMxpMU/tXGvI1ILwwWvQelLknxiyR7tGiMvAtyr0RwQhNMvOIjhuIeHt/rADG7Cl0948E4t/gy+73+jpKP9944d/LIFdfNOaayvZWGamaRK3gK+pK5ZOVJOmS4Ii0j6uYUcCznac2vB4OVwZnedksFNHYMwq+ObC8qJ94Q= 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)(376014)(1800799024)(82310400026)(36860700016)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: NnHeuDtTldKWeaXEZz/MFGgoctBXtS2ucFE71lOxW1iHKV+iorRsv2/3iu+PLjCotFWYMqcEurWnxsfByRflBpbLV8+0c0kJS/vOgC8IgJZsts8WgRwqtDjTfaIOCE+u8OYcdnJCoRrpLtMZWrnuy6RRSw0N/nhOwrnfSdGROxos5/EK/j1QmYVFrq6x3nrzvO1fmajMJ+6bsoOgr4NOBFiN5p/Yz6DnH6ppk796n8L0pRhfu0bOGNXeaIqhDOQDESSKHdOEFqNh9hioS/65eXV2pmrSclH98Tx9SV0/1B9bdlyFN4d++GP1TpGBmfhJVc/xc8eesmQRTqC4JJdoqA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9505 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF0000A791.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: aa6732de-a1e2-491f-de48-08dec1724a97 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|35042699022|1800799024|82310400026|14060799003|376014|22082099003|6133799003|18002099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: AYtKtsqgmHyMIdJzjrgAeAkoeunzr9Xkjw0DGyHDTFX8IZBTnQNdm980sWWFmRmFf2srUnsF6PjhqQlTgxZjNkxGtK8NORwhXn1IzMqMtAVrtfjI3DXrN+8aApB6bdcCBxCNpIPUjPaL1JH2hisMibrnsbZMaSpn+1f6gYIDvIacfRQr6sWDDP5ghKxV7WmvdofT2j4CJFdqmqiEE08IDlIgK09XFjmoG+d7g9vUd5Qn4V6Ps95kf7kiFQZMQhpb+7z+TdjGIPcSeO4Ro+ozJJAiDMFS/o1hH9NLfme8Nz+NX5iOigq9+p7GezopTkeG/eJ4d6HYwoEQBcwgx1vOiSxB41tJEqq2n52BwGT7DrwuPezuSHZ0gikEPNIuYO7hxmSepIaWzBFFvxhofDSiGYVeZg5gjm85L2FqAD/iR3Ok1TPHjkTC7bjt1EUYX9zZdMDIGhhP+yYRPnmjH+OzfiuETQQDmxGOUmw7kHR6GJuRCIy4NwnCV1G/j8zzl+WrE+P9ap3/vDijfY0nERuCcyi2qswCz8Wgb2LuULTYC2SBIqcMu+fwSyYieF3A0ugxarOFE33eGpFJIBKcohZzITUKrEwjk6Oh6s+zRagzt/8oxtgTpoPaxXYoiii6rQCpQe5NRflnU5G0oO2WBqfxYlUBDN5fON5fXhBBxX0utivA0LQwTer+GDL7BN8WER/kA9jCo29U8MmZqMup3c5Y6DvTRaRoxkSaCqXhKYmVSY8= 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)(35042699022)(1800799024)(82310400026)(14060799003)(376014)(22082099003)(6133799003)(18002099003)(11063799006)(56012099006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IGvAK86uywtx4SD+EtiTqO9GZG72T8bNtyxX6GATKH/Jtkkl9xFTnAljwxhGMZjBZVCfjCIMQAcrepfvbbyw/tET59dO5uqYXLK9Bw9sXryyivrHZ73inwJed391XC1Q5+IZ1AnfdLTP7FB27S5ToH7TsNBma1InC7jAGW87+GdWpLuulER2T9KfbwpZPur5z5C9Y9rifOIDbnfbJ8rqADEEsDdPDhkLqcN5CZUIc5/8UFQOxkH1EMcMuHHay2X0ITIuu++xxWBTDUiFIuC05LmGiE5RYYTU6ODajhr11XegrYdKaX6zMSnZFFcZkclb/K5XXVm3vLoSlxvIRpx2/8rDaR+YFo/bYTwsiM7DgpEsGOqMHuBRv6G1tl1brP1MteetlXEguT4gUK28JmlTzlnmlHEH4g7agaAlv8qmkKpnHWc/xrBQb9syAgqSOQ/d X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2026 13:17:25.3445 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66ba14bb-efb6-44b4-515d-08dec1727446 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: AM3PEPF0000A791.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6585 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, RCVD_IN_MSPIKE_H2, 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"