From patchwork Tue May 28 09:46:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 1940371 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=XibxGDmw; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=rWUD9aaQ; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=XibxGDmw; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=rWUD9aaQ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VpSNS1vJLz20Pb for ; Tue, 28 May 2024 19:47:20 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7FD2E3864C56 for ; Tue, 28 May 2024 09:47:18 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2a07:de40:b251:101:10:150:64:1]) by sourceware.org (Postfix) with ESMTPS id 7E4A6382EF10 for ; Tue, 28 May 2024 09:46:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7E4A6382EF10 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7E4A6382EF10 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716889617; cv=none; b=GowyyTZsh1jPD+XqReDUFlOOxsSQ/SP7wL//r/GouJnvnVX59RVmJWxy5pg/RVLb/FbnnzrVJScMYGd2iWbUncS3OJv+gO2ue7dvCIZR6Cr5d4OsS8cUt/O/TyP2AAfKVH3LISgNXvrMQPDmEH2vXCULpWCaVgqpYYTDWGsz4PY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716889617; c=relaxed/simple; bh=jG0t/Qr17vzBJ8wGmtafKgKD+a0LuwD5MCkXvDRe3V4=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date: From:To:Subject:MIME-Version; b=Zloi6IlEBh+4A5c1CyymxyL0BhVGJOzEEP7ZeOh6+lh/icXWr3wJMvFlBjTOFxJ7+XGSTwPptn90zWwMiDajHyEXK2XiZ7DzDkV6JZlNlocaRk2exyS37juWDScxgRmo0bz6eCZRd576P0s0tZ0xRzn9/ThllX5v/wMak9t7Rr0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from murzim.nue2.suse.org (unknown [10.168.4.243]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 6EEB022700 for ; Tue, 28 May 2024 09:46:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1716889614; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=KY1WYwfWAa8sLB3+HXZttrronWXPH8iwqv/efaAVp2s=; b=XibxGDmw8CIKUlN6HswSwdoESCqpFQ9Ic9XwpqJxPuYrN0wJU+zL+99ZAzvqWt6G7qxH0s gVheOkWHfzscmV13Ggp5sFQnAPjkuuVGnt+zjgfLjtfnejtM1GKuy96z9e2ftzKrD8NWqW cMIshTnDnXaIS766HJIDZ+zlH66KFT0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1716889614; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=KY1WYwfWAa8sLB3+HXZttrronWXPH8iwqv/efaAVp2s=; b=rWUD9aaQZAyQF6MIn+cThakbWySI2sUdYmbLZ5xIT13KclihtmVsQAVFs0Sz0kRyb08eGh WZ5tapFR0i6br4AA== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1716889614; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=KY1WYwfWAa8sLB3+HXZttrronWXPH8iwqv/efaAVp2s=; b=XibxGDmw8CIKUlN6HswSwdoESCqpFQ9Ic9XwpqJxPuYrN0wJU+zL+99ZAzvqWt6G7qxH0s gVheOkWHfzscmV13Ggp5sFQnAPjkuuVGnt+zjgfLjtfnejtM1GKuy96z9e2ftzKrD8NWqW cMIshTnDnXaIS766HJIDZ+zlH66KFT0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1716889614; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=KY1WYwfWAa8sLB3+HXZttrronWXPH8iwqv/efaAVp2s=; b=rWUD9aaQZAyQF6MIn+cThakbWySI2sUdYmbLZ5xIT13KclihtmVsQAVFs0Sz0kRyb08eGh WZ5tapFR0i6br4AA== Date: Tue, 28 May 2024 11:46:54 +0200 (CEST) From: Richard Biener To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/115254 - don't account single-lane SLP against discovery limit MIME-Version: 1.0 X-Spam-Level: X-Spamd-Result: default: False [-1.79 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MISSING_MID(2.50)[]; NEURAL_HAM_LONG(-0.99)[-0.994]; NEURAL_HAM_SHORT(-0.20)[-0.999]; MIME_GOOD(-0.10)[text/plain]; MISSING_XM_UA(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; RCVD_COUNT_ZERO(0.00)[0]; FROM_HAS_DN(0.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; TO_DN_NONE(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[tree-vect-slp.cc:url] X-Spam-Score: -1.79 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MISSING_MID, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.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+incoming=patchwork.ozlabs.org@gcc.gnu.org Message-Id: <20240528094718.7FD2E3864C56@sourceware.org> The following avoids accounting single-lane SLP to the discovery limit. As the two testcases show this makes discovery fail, unfortunately even not the same across targets. The following should fix two FAILs for GCN as a side-effect. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. PR tree-optimization/115254 * tree-vect-slp.cc (vect_build_slp_tree): Only account multi-lane SLP to limit. * gcc.dg/vect/slp-cond-2-big-array.c: Expect 4 times SLP. * gcc.dg/vect/slp-cond-2.c: Likewise. --- .../gcc.dg/vect/slp-cond-2-big-array.c | 2 +- gcc/testsuite/gcc.dg/vect/slp-cond-2.c | 2 +- gcc/tree-vect-slp.cc | 31 +++++++++++-------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c b/gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c index cb7eb94b3a3..9a9f63c0b8d 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c +++ b/gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c @@ -128,4 +128,4 @@ main () return 0; } -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/slp-cond-2.c b/gcc/testsuite/gcc.dg/vect/slp-cond-2.c index 1dcee46cd95..08bbb3dbec6 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-cond-2.c +++ b/gcc/testsuite/gcc.dg/vect/slp-cond-2.c @@ -128,4 +128,4 @@ main () return 0; } -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" } } */ diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 0dd9a4daf6a..bbfde8849c1 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -1725,21 +1725,26 @@ vect_build_slp_tree (vec_info *vinfo, SLP_TREE_SCALAR_STMTS (res) = stmts; bst_map->put (stmts.copy (), res); - if (*limit == 0) + /* Single-lane SLP doesn't have the chance of run-away, do not account + it to the limit. */ + if (stmts.length () > 1) { - if (dump_enabled_p ()) - dump_printf_loc (MSG_NOTE, vect_location, - "SLP discovery limit exceeded\n"); - /* Mark the node invalid so we can detect those when still in use - as backedge destinations. */ - SLP_TREE_SCALAR_STMTS (res) = vNULL; - SLP_TREE_DEF_TYPE (res) = vect_uninitialized_def; - res->failed = XNEWVEC (bool, group_size); - memset (res->failed, 0, sizeof (bool) * group_size); - memset (matches, 0, sizeof (bool) * group_size); - return NULL; + if (*limit == 0) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_NOTE, vect_location, + "SLP discovery limit exceeded\n"); + /* Mark the node invalid so we can detect those when still in use + as backedge destinations. */ + SLP_TREE_SCALAR_STMTS (res) = vNULL; + SLP_TREE_DEF_TYPE (res) = vect_uninitialized_def; + res->failed = XNEWVEC (bool, group_size); + memset (res->failed, 0, sizeof (bool) * group_size); + memset (matches, 0, sizeof (bool) * group_size); + return NULL; + } + --*limit; } - --*limit; if (dump_enabled_p ()) dump_printf_loc (MSG_NOTE, vect_location,