From patchwork Mon Nov 11 10:13:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 2009764 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=JTYZ5Bbw; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=AhfUvQv/; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=V4QuDIO+; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=RQLW8ftw; 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 4Xn5456kVLz1xyD for ; Mon, 11 Nov 2024 21:13:51 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9EAD03858C60 for ; Mon, 11 Nov 2024 10:13:49 +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 EE1603858D21 for ; Mon, 11 Nov 2024 10:13:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EE1603858D21 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 EE1603858D21 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=1731320013; cv=none; b=ScdK+nyuUBAK5D5LenTCcm1ZkaYOZCgq+COhvNbLrsyupvE2WyZEgEl8TUsbjiFJL/W/Bo7i3h5OAEQ4i6y9z4uGk3YGD/9VGtBoYO37JTgrMHlJDCRY+d4zW1nR2lLOmXQ+xVYSNpdOE+q+7/5Gj9bYD+b1/sGPlOzkad5Xehk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1731320013; c=relaxed/simple; bh=/SZMRUJchXC2/cVBpbcgDD3AHtR01vVL74CF++TbRmo=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date: From:To:Subject:MIME-Version; b=AQA7+IbLuLnkO/btvZZScCCdCqPY/pK+sjz0Q5uIWfx81m8pdAk2yuSNm6H6WwsbT4iZxzZSZpJT0zXCbWz/SRld8EavPJ4qOsMnbTd6514z5Ae1FwY+GaeRkZmSwBOo3ln2ON+IR+OI8qKHzusCPmGeoJfJ9wtdV//fDEfMA2I= 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 DE78A219AF; Mon, 11 Nov 2024 10:13:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1731320006; h=from:from:reply-to:date:date:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=T05V9/jVslsCbtqBfJ+ZdAHQgpE7EMWNCwgZuL1x4hc=; b=JTYZ5Bbw6iv7x1AYXVt+Huq5i2qYMPOPgKb3+N45DT+cNdDD1O2/UXOKCLxRacO3DZ38xp J6yu6llZ3gbB8TDPkat+L7FpK/ckJKugqr5v8ORadmC/9ImwiFDWHEgoHtDrfb8RIPp1pi 0knlotgoFtWDuRy6nWnd9w2ka+iz87k= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1731320006; h=from:from:reply-to:date:date:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=T05V9/jVslsCbtqBfJ+ZdAHQgpE7EMWNCwgZuL1x4hc=; b=AhfUvQv/DlKAm7e98VVmdODAXGTPG80Q6jbpwtRrlPHvlHKAkTR3OArduVY26KpGu7d0AH sI915cT+W08MA1Cw== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1731320005; h=from:from:reply-to:date:date:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=T05V9/jVslsCbtqBfJ+ZdAHQgpE7EMWNCwgZuL1x4hc=; b=V4QuDIO+ziI+Fp5sfijNfaVaeJh+KNADk+bxssnkB4T4TzjekL5qpIOUmzkxuPyk/zBHPk uKJdWCo6lwgU178thx5zW+goz31QhnEbByQjRr7AA5fIQMABHa8hWKqnHPr449ZzZ0YVf8 UmtJPhpcaQk/+MFQ8yYIrEVc6M5tNSA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1731320005; h=from:from:reply-to:date:date:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=T05V9/jVslsCbtqBfJ+ZdAHQgpE7EMWNCwgZuL1x4hc=; b=RQLW8ftw82f8ItpdM2wpL0M4WQEdKevDijyk8d79QUQs3B0/j9qnMX4CbwaoIl9jYRRzk1 it9qW9WpPsHl+ABg== Date: Mon, 11 Nov 2024 11:13:25 +0100 (CET) From: Richard Biener To: gcc-patches@gcc.gnu.org cc: RISC-V CI , tamar.christina@arm.com Subject: [PATCH][v2] tree-optimization/117502 - VMAT_STRIDED_SLP vs VMAT_ELEMENTWISE when considering gather MIME-Version: 1.0 X-Spamd-Result: default: False [-1.17 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MISSING_MID(2.50)[]; NEURAL_HAM_LONG(-0.37)[-0.373]; NEURAL_HAM_SHORT(-0.19)[-0.972]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; MISSING_XM_UA(0.00)[]; RCVD_COUNT_ZERO(0.00)[0]; FROM_HAS_DN(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_EQ_ENVFROM(0.00)[]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCPT_COUNT_THREE(0.00)[3] 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: <20241111101349.9EAD03858C60@sourceware.org> The following treats both the same when considering to use gather or scatter for single-element interleaving accesses. This will cause FAIL: gcc.target/aarch64/sve/sve_iters_low_2.c scan-tree-dump-not vect "LOOP VECTORIZED" where we now vectorize the loop with VNx4QI, I'll leave it to ARM folks to investigate whether that's OK and to adjust the testcase or to see where to adjust things to make the testcase not vectorized again. The original fix for which the testcase was introduced is still efffective. Bootstrap and regtest running on x86_64-unknown-linux-gnu. PR tree-optimization/117502 * tree-vect-stmts.cc (get_group_load_store_type): Also consider VMAT_STRIDED_SLP when checking to use gather/scatter for single-element interleaving access. * tree-vect-loop.cc (update_epilogue_loop_vinfo): STMT_VINFO_STRIDED_P can be classified as VMAT_GATHER_SCATTER, so update DR_REF for those as well. --- gcc/tree-vect-loop.cc | 1 + gcc/tree-vect-stmts.cc | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index 6cfce5aa7e1..f50ee2e958e 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -12295,6 +12295,7 @@ update_epilogue_loop_vinfo (class loop *epilogue, tree advance) refs that get_load_store_type classified as VMAT_GATHER_SCATTER. */ auto vstmt_vinfo = vect_stmt_to_vectorize (stmt_vinfo); if (STMT_VINFO_MEMORY_ACCESS_TYPE (vstmt_vinfo) == VMAT_GATHER_SCATTER + || STMT_VINFO_STRIDED_P (vstmt_vinfo) || STMT_VINFO_GATHER_SCATTER_P (vstmt_vinfo)) { /* ??? As we copy epilogues from the main loop incremental diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index fa44e19f163..b09c016949f 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -2274,7 +2274,8 @@ get_group_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info, on nearby locations. Or, even if it's a win over scalar code, it might not be a win over vectorizing at a lower VF, if that allows us to use contiguous accesses. */ - if (*memory_access_type == VMAT_ELEMENTWISE + if ((*memory_access_type == VMAT_ELEMENTWISE + || *memory_access_type == VMAT_STRIDED_SLP) && single_element_p && loop_vinfo && vect_use_strided_gather_scatters_p (stmt_info, loop_vinfo,