From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1923) id 472E3385803B; Tue, 23 Jan 2024 20:57:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 472E3385803B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1706043467; bh=dqIodxpydu/gPeTF+zut1i0q0xQDe3GmbvPV4YYwY+o=; h=From:To:Subject:Date:From; b=l7K+HolSV3nzCOovv5B33oLrtm/+I1qMBLyWYzz7WEBax/yahQEEXf8inRTJShgJY LNKbco6OVyI1Srd2qqk16mEdS0sfuc5v2iJvBrB5a8Y+6tG7Cd2FZdvMqxdnHZ6O6n L4tsikAynICyawZ7rHz3EYR9HtwRGdCJ36ONAn9A= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Philipp Tomsich To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/vendors/vrull/heads/slp-improvements)] Fix element_prevision check for vec_perm+view_convert pattern X-Act-Checkin: gcc X-Git-Author: Manolis Tsamis X-Git-Refname: refs/vendors/vrull/heads/slp-improvements X-Git-Oldrev: 042460234612e9817e26d6f1c1dd41aa144a4c20 X-Git-Newrev: f0072d8a1dee8a6278ad68abe257f8f2433bfd91 Message-Id: <20240123205747.472E3385803B@sourceware.org> Date: Tue, 23 Jan 2024 20:57:47 +0000 (GMT) List-Id: https://gcc.gnu.org/g:f0072d8a1dee8a6278ad68abe257f8f2433bfd91 commit f0072d8a1dee8a6278ad68abe257f8f2433bfd91 Author: Manolis Tsamis Date: Fri Nov 24 10:08:24 2023 +0100 Fix element_prevision check for vec_perm+view_convert pattern Addresses the blender_r ICE reported as part of #343. Ref #343 Diff: --- gcc/match.pd | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/gcc/match.pd b/gcc/match.pd index be623d9773c..e63be8e2158 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -9965,20 +9965,21 @@ and, d = VEC_PERM_EXPR ; */ (simplify - (vec_perm (view_convert?@0 (vec_perm @1 @2 VECTOR_CST@3)) @0 VECTOR_CST@4) + (vec_perm (view_convert?@0 (vec_perm@1 @2 @3 VECTOR_CST@4)) @0 VECTOR_CST@5) (if (TYPE_VECTOR_SUBPARTS (type).is_constant ()) (with { machine_mode result_mode = TYPE_MODE (type); - machine_mode op_mode = TYPE_MODE (TREE_TYPE (@1)); + machine_mode op_mode = TYPE_MODE (TREE_TYPE (@2)); int nelts = TYPE_VECTOR_SUBPARTS (type).to_constant (); vec_perm_builder builder0; vec_perm_builder builder1; vec_perm_builder builder2 (nelts, nelts, 1); } - (if (tree_to_vec_perm_builder (&builder0, @3) - && tree_to_vec_perm_builder (&builder1, @4) - && element_precision (type) == element_precision (TREE_TYPE (@0))) + (if (tree_to_vec_perm_builder (&builder0, @4) + && tree_to_vec_perm_builder (&builder1, @5) + && element_precision (TREE_TYPE (@0)) + == element_precision (TREE_TYPE (@1))) (with { vec_perm_indices sel0 (builder0, 2, nelts); @@ -10000,10 +10001,10 @@ and, ? (!can_vec_perm_const_p (result_mode, op_mode, sel0, false) || !can_vec_perm_const_p (result_mode, op_mode, sel1, false)) : !can_vec_perm_const_p (result_mode, op_mode, sel1, false))) - op0 = vec_perm_indices_to_tree (TREE_TYPE (@4), sel2); + op0 = vec_perm_indices_to_tree (TREE_TYPE (@5), sel2); } (if (op0) - (view_convert (vec_perm @1 @2 { op0; })))))))) + (view_convert (vec_perm @2 @3 { op0; })))))))) /* Merge c = VEC_PERM_EXPR ;