From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10071.outbound.protection.outlook.com [40.107.1.71]) by sourceware.org (Postfix) with ESMTPS id 7A1143857C48 for ; Thu, 7 Jan 2021 13:25:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7A1143857C48 Received: from DB6PR0802CA0027.eurprd08.prod.outlook.com (2603:10a6:4:a3::13) by DB8PR08MB5114.eurprd08.prod.outlook.com (2603:10a6:10:e7::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Thu, 7 Jan 2021 13:25:55 +0000 Received: from DB5EUR03FT047.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:a3:cafe::ce) by DB6PR0802CA0027.outlook.office365.com (2603:10a6:4:a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Thu, 7 Jan 2021 13:25:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT047.mail.protection.outlook.com (10.152.21.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Thu, 7 Jan 2021 13:25:55 +0000 Received: ("Tessian outbound 39646a0fd094:v71"); Thu, 07 Jan 2021 13:25:55 +0000 X-CR-MTA-TID: 64aa7808 Received: from 50f386673599.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 70E2601B-D3DC-4180-9FDF-8B70EE917B30.1; Thu, 07 Jan 2021 13:25:50 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 50f386673599.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 07 Jan 2021 13:25:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Upr3zJrk0yXUPKpv95j/jtPsYwMmqlhf1I0yyPItfGbsG2fcJxhq9Iyn0XgyHY8B4fJVJTtiopw8XLrXOr058ciJxPmNFEOSfUzpKOaU0k5Eu4zRqJWyIYNK8gJLSkaZcVxmFdZnc+eTWDchIAJWgwXPb84ZtNsgmj+0Px2WUHIJSZyReTIECys09edmfTKizCzrq1yQBZyKzXgaCuDaX3OLuJgwoPcYPC3g2qAtPtWuOO9YsgizDBntwNUdWHgkcEurncYRHo9dLvX8SPFUl751RRn5GPf5SAz0ZO/Nh3eqDje0wbKamGGYJh72rIveLjXVxlWHD7SqKYfD6RX1pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G/pJ+5ekR9VIiYbiWSR+X0ilDLJWFbtzC83VSGi/740=; b=QB12l5BkPhSOn1VZVP214xbrotEAdY0dkXxOJr0OzwpDNdp7496IYQ0HgI2Jf+m73+a8ICJLAkSL1RyY36qz8+8ok2olgu1/cllOkVa3DVmyA7AdibnawbEoAWnG7MGmGyfRXVl5CFRAyB8M4eCDvX3XQe0Y+Y0gsp9xsDc2/kgXMIK2CX+ekPVPz70yo4lK2ebJhiN7/x7z8MtnPVU3K+Jnl+KgLS8fd0ssTUp5zwaJJhhxNoIxezjlxU6Yi+7rJP5ntK1jxuvDWRE5Gjg5WXyTHfLSEd+Cvmc4Ahq+l+ifRl5bDFRpXUCpm09r/qIJaGU/BK3E7I+bwO6c10ZMyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR0801MB1677.eurprd08.prod.outlook.com (2603:10a6:800:54::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Thu, 7 Jan 2021 13:25:48 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::f937:5b3:12e1:8297]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::f937:5b3:12e1:8297%5]) with mapi id 15.20.3742.007; Thu, 7 Jan 2021 13:25:48 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , "ook@ucw.cz" Subject: RE: [PATCH 1/8 v9]middle-end slp: Support optimizing load distribution Thread-Topic: [PATCH 1/8 v9]middle-end slp: Support optimizing load distribution Thread-Index: AQHW3R5fxagQ5bDnuUm9es7ze81Cv6ocNZmAgAAAvxA= Date: Thu, 7 Jan 2021 13:25:48 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C197F5B843D62F4CAF101B0144F0C8DF.0 x-checkrecipientchecked: true Authentication-Results-Original: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.11.185.166] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 289bfa10-a52c-498f-c734-08d8b30fc32a x-ms-traffictypediagnostic: VI1PR0801MB1677:|DB8PR08MB5114: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: OOi+N2QaVVuj2LXJAYG83bvSJ6XIglIzCdQPSlhSNa0TJBiP+l1613LhnbW+WcHhp5jV9ZPhqeEySh90NuYG06BUDKgRCbQHazfg2+r0vbEcTCjIf7NYkTPYJmKG3xeA8tTKtxkAbbVCRuGUphht9pSBF7ZpEAwvaI5J/f13f0LIvJxKhLnFQer5F/WFD1TH4tesU8ry0J6kqdUZBSaiQUDVahIQ8mT/x6eIMHiWxpHBfh91CmGXINEh41b/PndORdkRLwlB5NB9AeweoEnGhYX7xRTAPU6iAmEdS3pT73i8RX+t3mg7fEIPPt/YFCUM1d75o+IxsnlVbba5n4EuRlnMsELk3BLTEWib/4OwsXu8527Nt+tt6YlujAdNIn/2iZ3d0leIDTPtbck7sW5//w== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(136003)(39860400002)(396003)(376002)(366004)(86362001)(33656002)(54906003)(55016002)(5660300002)(9686003)(52536014)(7696005)(83380400001)(478600001)(6916009)(71200400001)(4326008)(186003)(8936002)(76116006)(8676002)(64756008)(66946007)(66476007)(66556008)(66446008)(26005)(6506007)(316002)(53546011)(2906002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?4Aoy3Yv4cqJ26DoYHdO2vHlRo/dwYLxZYIIKMonlOmbtKPD7J6bDhaFMqEDw?= =?us-ascii?Q?4X8BwIZti2+U0Hy+TLd/WZ02V/w2C1ghRz2Q/JLavgPNqEw0bJ/KQ6CyVq+5?= =?us-ascii?Q?ni68XEXNVRmq5I3tgEelbXU5AxqRs5zLZ9VxazJ1MaCJI5eacjlCEjYn3ZKf?= =?us-ascii?Q?R99TcFKpy14GbvP+AR/qn2FXDxA92nTbVV5zZPC6BnudEHoCzV6CJabS5laT?= =?us-ascii?Q?HhIqztOtd3rAyG5BLvQEItFpanp97sry6wIUjCUQI320kqLgtW7EO1A8PzuB?= =?us-ascii?Q?6FX/rutVKLp0pgJfAHa+JDrVDOotYQobNySVuFj8hv/xzsQNbcMYFgnoiiot?= =?us-ascii?Q?FUyXk5ODbWKHMuf82aEnYJ/ijUl6qq9rxUCjDlTDGaVr5KY2+XqfKBZBFHm4?= =?us-ascii?Q?5P+I+VSrvPfCHI6O/PRtJQJeXCNptqkpNmxvDcQeh8ZTxdW9/VQggQH8+8WM?= =?us-ascii?Q?ae1Rp8eYdJ+qyTZc9CDbuBncutE2cfkTd2/pxrZwdTGSg4ft5qUpbYlb5Vwn?= =?us-ascii?Q?9+tLxJl5C4jLupJdxuePu+ekAD6pO0jso4ZCvYrrbvMFYwNUq5qckg/9iR2B?= =?us-ascii?Q?lR9ONWoWfiUFRZUIQHwHA/F4+FhpLx5xLRvHz1c+uZIDwh2YCDaKYsy2TchY?= =?us-ascii?Q?jYBkXzNAoLF1bXT0OvTKlGQovSPD7SSa87IciXjhiHOZw84PNafg4b1nvM8H?= =?us-ascii?Q?Xu6g32r7tChb60IDEb3L5w2UYHJkiPTxbnUIcA7a/FZbWlTyJgntmZgrB1nU?= =?us-ascii?Q?ctnyNRPiH3SLSbV0SU3x3JFh7ZXM38w6vbTU+BZiLki3X6SSYnaiTZifQCjr?= =?us-ascii?Q?sD4mBYViIxEfvCc31U4+6mc4lDkek8Npn8jNRPZhCbFIB2HHxhOzYGtB7yZn?= =?us-ascii?Q?YyB4maHio0MZWPkjydK44Bnw3t/wf6HGcaHGDTBqZGg/L7W4I6uTesBOWp+Y?= =?us-ascii?Q?N9rpHcXNvgJTdWv00ZGMHjwdzcPlOUfYIkR1JG/DpmM=3D?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1677 Original-Authentication-Results: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT047.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: b6da06d1-48ce-4e01-f895-08d8b30fbf35 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ajWP81QwrKzDyFQTHNOwQxhUr0y/m0xpisrmILeEbtfVb5tJRLLOtV4bNMQc7gfW/lP8NwLJNqb7iWiQDDw/4VbuU2UnOHq5Gra5qbBvZqUL1sXd93Kk/lVBqgn5Ejh5ghDcSr72luWAEqVegIKCAtf4hWaqMf+AshQtDzOfWmn166F/QodZF8Ju3Kz7BFbsVLA0JILaF/tHlsw9+KKwyVPJHoqpFR0L+8drDqNi7srj2GYOxJLxqIhdkfTGb6KxBt7PReAwSwUH8s+GuDfP5jAwL7VMZuEvtqzJEjgyWHqgWRRIW1/NI6Ij9ba84xeQC4TQ23UHWGpPydVFR+XBzUpPrn+hFG28+CWklDMahmsHI1F9IlkwJ+fQ4/1Kofw0CU/2cIaBJCBanCEMAvv1q6IzP9kkOJfy/Wxf49NqZKX3U9mpweTbr0yarY4LzJu42dHhS+E2Tva8BX2IKS9LAfeCn4xfHX+mQIV+LN9sMfmSRp7LSw1mNYgvZM0RHBHV X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(376002)(39860400002)(396003)(136003)(346002)(46966006)(82740400003)(6506007)(53546011)(4326008)(478600001)(186003)(81166007)(7696005)(6862004)(52536014)(26005)(34020700004)(55016002)(54906003)(5660300002)(9686003)(70586007)(82310400003)(356005)(336012)(70206006)(316002)(86362001)(83380400001)(8676002)(33656002)(2906002)(8936002)(47076005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2021 13:25:55.3077 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 289bfa10-a52c-498f-c734-08d8b30fc32a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT047.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5114 X-Spam-Status: No, score=-14.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jan 2021 13:26:00 -0000 > -----Original Message----- > From: Richard Biener > Sent: Thursday, January 7, 2021 1:21 PM > To: Tamar Christina > Cc: gcc-patches@gcc.gnu.org; nd ; ook@ucw.cz > Subject: Re: [PATCH 1/8 v9]middle-end slp: Support optimizing load > distribution >=20 > > From tamar.christina@arm.com Mon Dec 28 14:36:32 2020 > > Date: Mon, 28 Dec 2020 13:35:56 +0000 > > From: Tamar Christina > > To: gcc-patches@gcc.gnu.org > > Cc: nd@arm.com, rguenther@suse.de, ook@ucw.cz > > Subject: [PATCH 1/8 v9]middle-end slp: Support optimizing load > > distribution > > > > Hi All, > > > > This introduces a post processing step for the pattern matcher to > > flatten permutes introduced by the complex multiplications patterns. > > > > This performs a blend early such that SLP is not cancelled by the > > LOAD_LANES permute. This is a temporary workaround to the fact that > > loads are not CSEd during building and is required to produce efficient= code. > > > > Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu > > and no issues. > > > > Ok for master? > > > > Thanks, > > Tamar > > > > gcc/ChangeLog: > > > > * tree-vect-slp.c (optimize_load_redistribution_1): New. > > (optimize_load_redistribution): New. > > (vect_match_slp_patterns): Use it. > > > > --- inline copy of patch -- > > diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c index > > > 2a58e54fe51471df5f55ce4a524d0022744054b0..8360a59098f517498f3155f325c > f > > 8406466ac25c 100644 > > --- a/gcc/tree-vect-slp.c > > +++ b/gcc/tree-vect-slp.c > > @@ -2228,6 +2228,115 @@ calculate_unrolling_factor (poly_uint64 nunits, > unsigned int group_size) > > return exact_div (common_multiple (nunits, group_size), > > group_size); } > > > > +/* Helper function of optimize_load_redistribution that performs the > operation > > + recursively. */ > > + > > +static slp_tree > > +optimize_load_redistribution_1 (scalar_stmts_to_slp_tree_map_t > *bst_map, > > + hash_set *visited, slp_tree root) { > > + if (visited->add (root)) > > + return NULL; > > + > > + slp_tree node; > > + unsigned i; > > + > > + /* For now, we don't know anything about externals so do not do > > + anything. */ if (SLP_TREE_DEF_TYPE (root) =3D=3D vect_external_def > > + || SLP_TREE_DEF_TYPE (root) =3D=3D vect_constant_def) >=20 > use a single !=3D vect_internal_def test please >=20 > > + return NULL; > > + else if (SLP_TREE_CODE (root) =3D=3D VEC_PERM_EXPR > > + && SLP_TREE_LANE_PERMUTATION (root).exists () > > + && !SLP_TREE_SCALAR_STMTS (root).exists ()) >=20 > I think both last tests are unnecessary It's there to prevent it from trying to optimize two_operands nodes which are a vec_perm but contain no scalar statements. I didn't find a diff= erent way to distinguish between the two. The SLP tree can contain a number of th= ese that haven't been pattern matched away. >=20 > > + { > > + /* First convert this node into a load node and add it to the le= aves > > + list and flatten the permute from a lane to a load one. If i= t's > > + unneeded it will be elided later. */ > > + auto_vec stmts; > > + stmts.create (SLP_TREE_LANES (root)); > > + load_permutation_t load_perm; > > + load_perm.create (SLP_TREE_LANES (root)); > > + lane_permutation_t lane_perm =3D SLP_TREE_LANE_PERMUTATION > > + (root); >=20 > load_perm leaks when any of the below outs is taken >=20 > > + for (unsigned j =3D 0; j < lane_perm.length (); j++) > > + { > > + std::pair perm =3D lane_perm[j]; > > + /* This isn't strictly needed, but this function is a temporary > > + one for specifically pattern matching, so don't want it to > > + optimize things the remainder of the pipeline will. */ > > + if (perm.first !=3D j) > > + goto next; >=20 > but please elide it nevertheless >=20 > > + node =3D SLP_TREE_CHILDREN (root)[perm.first]; > > + > > + if (!SLP_TREE_LOAD_PERMUTATION (node).exists ()) > > + return NULL; >=20 > so you want to check whether this is a load, I think more to the point wo= uld > be a vect_internal_def + zero SLP children check. And a comment on what > we test (we do lack classification of SLP nodes, so a helper like > vect_is_slp_load_node or so would be OK as well) >=20 > > + > > + stmts.quick_push (SLP_TREE_SCALAR_STMTS > (node)[perm.second]); > > + load_perm.safe_push (SLP_TREE_LOAD_PERMUTATION > > +(node)[perm.second]); >=20 > As you're doing here lacks a check that we are actually loading from the = same > DR group. I think it might be easier to just collect scalar stmts and th= row > them at vect_build_slp_tree? That should perform the necessary > verification, build the appropriate lane permute and perform the CSE. Wh= ich > leads to the question why the VEC_PERM node doesn't have scalar stmts set > while we are actually be able to compute them here ... that is, the CSE > opportunity could have been noticed during pattern matching itself? >=20 > > + } > > + > > + if (dump_enabled_p ()) > > + dump_printf_loc (MSG_NOTE, vect_location, > > + "converting stmts on permute node %p\n", root); > > + > > + slp_tree *value =3D bst_map->get (stmts); > > + if (value) > > + node =3D *value; > > + else > > + { > > + FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (root), i, node) > > + SLP_TREE_REF_COUNT (node)++; > > + > > + vec stmts_cpy =3D stmts.copy (); > > + node =3D vect_create_new_slp_node (stmts_cpy.copy (), 0); > > + SLP_TREE_VECTYPE (node) =3D SLP_TREE_VECTYPE (root); > > + SLP_TREE_LOAD_PERMUTATION (node) =3D load_perm; > > + bst_map->put (stmts_cpy, node); > > + } > > + SLP_TREE_REF_COUNT (node)++; >=20 > Adjusting the refcount here but doing the replacement in the caller is a = bit > awkward to follow - how about passing a reference so you can adjust the > edge here? >=20 > > + > > + return node; > > + } > > + > > +next: > > + FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (root), i , node) > > + { > > + slp_tree value =3D optimize_load_redistribution_1 (bst_map, visi= ted, > node); > > + if (value) > > + { > > + SLP_TREE_CHILDREN (root)[i] =3D value; > > + vect_free_slp_tree (node); > > + } > > + } > > + > > + return NULL; > > +} > > + > > +/* Temporary workaround for loads not being CSEd during SLP build. Th= is > > + function will traverse the SLP tree rooted in ROOT for INSTANCE and= find > > + VEC_PERM nodes that blend vectors from multiple nodes that all read > from the > > + same DR such that the final operation is equal to a permuted load. = Such > > + NODES are then directly converted into LOADS themselves. The nodes > are > > + CSEd using BST_MAP. */ > > + > > +static void > > +optimize_load_redistribution (scalar_stmts_to_slp_tree_map_t > *bst_map, > > + slp_tree root) > > +{ > > + slp_tree node; > > + unsigned i; > > + hash_set visited; > > + > > + FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (root), i , node) > > + { > > + slp_tree value =3D optimize_load_redistribution_1 (bst_map, &vis= ited, > node); > > + if (value) > > + { > > + SLP_TREE_CHILDREN (root)[i] =3D value; > > + vect_free_slp_tree (node); > > + } > > + } > > +} > > + > > /* Helper function of vect_match_slp_patterns. > > > > Attempts to match patterns against the slp tree rooted in REF_NODE > > using @@ -2276,7 +2385,7 @@ static bool vect_match_slp_patterns > > (slp_instance instance, vec_info *vinfo, > > hash_set *visited, > > slp_tree_to_load_perm_map_t *perm_cache, > > - scalar_stmts_to_slp_tree_map_t * /* bst_map */) > > + scalar_stmts_to_slp_tree_map_t *bst_map) > > { > > DUMP_VECT_SCOPE ("vect_match_slp_patterns"); > > slp_tree *ref_node =3D &SLP_INSTANCE_TREE (instance); @@ -2291,6 > > +2400,8 @@ vect_match_slp_patterns (slp_instance instance, vec_info > > *vinfo, > > > > if (found_p) > > { > > + optimize_load_redistribution (bst_map, *ref_node); > > + > > if (dump_enabled_p ()) > > { > > dump_printf_loc (MSG_NOTE, vect_location, > > > > > > -- > > > > > > [ Part 2, Text/X-DIFF 140 lines. ] > > [ Unable to print this part. ]