From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1923) id 44A223858C33; Wed, 17 Jan 2024 19:14:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 44A223858C33 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1705518871; bh=XqRALEHl7KCxV4yuhRvSJcnDlOzWDZVsh/iQn31MoPc=; h=From:To:Subject:Date:From; b=ZhBX+YqMC5lxF55tm8jRSuE/6LBDOXJe3x8rHMFX8d6p2h1D9xVVIfQUMrMPMg1by cExRNJo4rVVxQQaZPLVo3c8b+GLJGU845nkgpF4ULBmVXrsddHhm8qMg/FqRUi43wn ynK0GKjdA5c9mVMw7TvBTa8RZbOkiezIrRy4mMag= 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: 6c6e798decb95bfd002bb24abb134a22b9a78e48 X-Git-Newrev: 2cbf158bb6bce94f9dcb5850e2a1ba995449b75c Message-Id: <20240117191431.44A223858C33@sourceware.org> Date: Wed, 17 Jan 2024 19:14:31 +0000 (GMT) List-Id: https://gcc.gnu.org/g:2cbf158bb6bce94f9dcb5850e2a1ba995449b75c commit 2cbf158bb6bce94f9dcb5850e2a1ba995449b75c 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 59a664293ea..d3ee2ae79f8 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -9929,20 +9929,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); @@ -9964,10 +9965,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 ;