From patchwork Tue Nov 21 14:34:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 167794 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2b07:b0:403:3b70:6f57 with SMTP id io7csp664883vqb; Tue, 21 Nov 2023 06:35:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IGhI+pXNb2EqH0hIKkIV71EYkW8UbUVbiEO3+ESroc5em4qHW0QF2yAH5mhUCDbihs2ZTx7 X-Received: by 2002:a9d:7857:0:b0:6d6:567a:c83d with SMTP id c23-20020a9d7857000000b006d6567ac83dmr12554667otm.9.1700577305976; Tue, 21 Nov 2023 06:35:05 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1700577305; cv=pass; d=google.com; s=arc-20160816; b=n3i5k3Ev0FZZ1gjW1qznJ47uzXqc45mudOEh0huXVuhIPuIw5eT8mXdiyxP/WGjnKg NZ2QpcL8QbDoDHoo3XWWilg0/oibbA+pritJ+0JRGVnuH2FcvjF3WwR6QGmP6TSxlhOm ATws5Nqwx32PszUQUHcVa+Xza5kMb/AfiWL+FpQ82gy9pQrQUEH7ZJw7Pdsbl6/uuwqI bDpeTwIzNbxz4YWJE/nB+uGILDHnp1akYCKo9EddkcfJF/BxhmFS+G+3O3iFjMq2Qwve 6cdpNDeKoB5Gh1wxWERGB9Dvm/wfJN4E0CXzHt8ChkEqmkVaGEQLRKOrSpVlNb93NVHq 4XeQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:errors-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:mime-version :user-agent:subject:to:from:date:dkim-signature:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=VBfkO4N2ifLwP+eUT9q3QaqfOD5hsj0XgzmPGykJb+4=; fh=hPrbWPhweUx4V0GV9uXJqbyAzg2ABmTz7kczrAQqMmM=; b=x1lvWY+QaZu4U5dQLsoOlvrJlAoaMUJ79tobs4bap7Wd80a9By0uD5t0iZEui5fKn6 d9YbZjLKCgAAgrinU5qFmd6vndGQq23ZxcXkBiWngTxJIOIbatrUwfy6GePqyD74ttFc lfk9XY5M8Hmnq6GqgcdwDQ81bbLHmRYjA+gnsQSCXkihsOugHCWXr4SdsOeB01NcQL+q pe/+OUKUI9ZH/rtS7TF65HVkAsqB1x6m2wKVEtUYxhcErz4xyrANQ7egFoVEnEEkBWEu wnaQ+ALehMUty1BtYki8t1u0gUKk75BykytcTsmN4zfCTOdiBcWn+LfPU9G0rrXvZAXY C2XA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=NG2RbfQ7; dkim=neutral (no key) header.i=@suse.de; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id x16-20020a0ceb90000000b00670f3d950e2si9228132qvo.523.2023.11.21.06.35.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Nov 2023 06:35:05 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=NG2RbfQ7; dkim=neutral (no key) header.i=@suse.de; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AA1DA3858401 for ; Tue, 21 Nov 2023 14:35:05 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id D4D5D3858D3C for ; Tue, 21 Nov 2023 14:34:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D4D5D3858D3C 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 D4D5D3858D3C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:67c:2178:6::1d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700577283; cv=none; b=YDxKx1xJZ6/Lbm8Qd8idGhvCfM7Lrc+PCXoPCsGyNcsKHzmu/u7srqOn+eFJ+4JMQm87/gK9aGpe+VZqFgXQH2zYRZh6iHArQK6ytcl+ERR2bu4I0cvarnNu2iwMyd/bcRviAyegpVPdhZSs00az330KzKmX75HzphgUrC3MVR4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700577283; c=relaxed/simple; bh=4z4gdh2HRB0d2dy7bnq5aOmCkWjXS/gTLjRvt6rbCUU=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:MIME-Version; b=udYa7Ci+kpSDYo5XzJ5Kpel5N1JE0O3URmHJAM6VyN9L5RcPXMY3NOFAhayff6Q70iK7yKha6f4DjLmojjOY2NaYkBS1eSkvPihbpsQV4vYgpYyXpBR1+AqviYkQmd7F+A2wFEW1izvGDV6VSH+9gRAHqrp/7C9Jjcv3+KGfPng= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 510481F8BE for ; Tue, 21 Nov 2023 14:34:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1700577277; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=VBfkO4N2ifLwP+eUT9q3QaqfOD5hsj0XgzmPGykJb+4=; b=NG2RbfQ7BJLE/lxM/4PzHPkn2xOipCUoclHfp23oOpnHFchTU/U8NleY2LAkHJg3w/1oWe Pta9ied1zVR9EPwD6gHlJ0E2yQz5a0BQp/zhjEnZ3KBcnnLQunf2O4XBWCnLPGOQXS54pO Bb/PskETp/5zsfzzKihEonaWZxa0dKE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1700577277; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=VBfkO4N2ifLwP+eUT9q3QaqfOD5hsj0XgzmPGykJb+4=; b=IsXjqAW0w9+pVrp5psXxohNm5hbgyP/gxr9L/9Wx1/BsVR7C+gEegvwWLSCV1deSM3eBkv h/bQgAyUTgOwZvCA== Received: from wotan.suse.de (wotan.suse.de [10.160.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 5650D2C153 for ; Tue, 21 Nov 2023 14:34:36 +0000 (UTC) Date: Tue, 21 Nov 2023 14:34:36 +0000 (UTC) From: Richard Biener To: gcc-patches@gcc.gnu.org Subject: [PATCH] Move VF based dependence check User-Agent: Alpine 2.22 (LSU 394 2020-01-19) MIME-Version: 1.0 X-Spamd-Bar: ++++++++++++++++ Authentication-Results: smtp-out2.suse.de; dkim=none; dmarc=none; spf=softfail (smtp-out2.suse.de: 149.44.160.134 is neither permitted nor denied by domain of rguenther@suse.de) smtp.mailfrom=rguenther@suse.de X-Rspamd-Server: rspamd1 X-Spamd-Result: default: False [16.49 / 50.00]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; RWL_MAILSPIKE_GOOD(-1.00)[149.44.160.134:from]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_SPAM_SHORT(3.00)[1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gcc-patches@gcc.gnu.org]; TO_DN_NONE(0.00)[]; R_SPF_SOFTFAIL(4.60)[~all:c]; RCPT_COUNT_ONE(0.00)[1]; MISSING_MID(2.50)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; MX_GOOD(-0.01)[]; NEURAL_SPAM_LONG(3.50)[1.000]; DMARC_NA(1.20)[suse.de]; VIOLATED_DIRECT_SPF(3.50)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(2.20)[]; MIME_TRACE(0.00)[0:+]; RCVD_COUNT_TWO(0.00)[2]; BAYES_HAM(-3.00)[100.00%] X-Spam-Score: 16.49 X-Rspamd-Queue-Id: 510481F8BE X-Spam-Status: No, score=-10.7 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+ouuuleilei=gmail.com@gcc.gnu.org Message-Id: <20231121143505.AA1DA3858401@sourceware.org> X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783184549263665763 X-GMAIL-MSGID: 1783184549263665763 The following moves the check whether the maximum vectorization factor determined by data dependence analysis is in conflict with the chosen vectorization factor to after the point where we applied both the SLP and the unrolling adjustment to the vectorization factor. We check the latter before applying unrolling, but the SLP adjustment can result in both missed optimization and wrong-code. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. * tree-vect-loop.cc (vect_analyze_loop_2): Move check of VF against max_vf until VF is final. --- gcc/tree-vect-loop.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index 58679e91c0a..a73a533beb1 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -2817,9 +2817,6 @@ vect_analyze_loop_2 (loop_vec_info loop_vinfo, bool &fatal, "can't determine vectorization factor.\n"); return ok; } - if (max_vf != MAX_VECTORIZATION_FACTOR - && maybe_lt (max_vf, LOOP_VINFO_VECT_FACTOR (loop_vinfo))) - return opt_result::failure_at (vect_location, "bad data dependence.\n"); /* Compute the scalar iteration cost. */ vect_compute_single_scalar_iteration_cost (loop_vinfo); @@ -2881,6 +2878,10 @@ start_over: LOOP_VINFO_INT_NITERS (loop_vinfo)); } + if (max_vf != MAX_VECTORIZATION_FACTOR + && maybe_lt (max_vf, LOOP_VINFO_VECT_FACTOR (loop_vinfo))) + return opt_result::failure_at (vect_location, "bad data dependence.\n"); + loop_vinfo->vector_costs = init_cost (loop_vinfo, false); /* Analyze the alignment of the data-refs in the loop.