From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by sourceware.org (Postfix) with ESMTPS id 4EC3D3821FF7 for ; Thu, 13 Oct 2022 03:15:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4EC3D3821FF7 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665630922; x=1697166922; h=from:to:cc:subject:date:message-id; bh=AeRAsUxsOq5DlHbybp2yW3z4TmYy/jOLvM6jBE4Y9AU=; b=DrT/BzbW67aAQ2WP91O91o6iBr9G+TLC4aZ9nOd9jmygfVnhPZmwHTv1 AI4tAYI1TR1bibpTUAjMLlZ7gAUyJxz6C5mTcHQdNHGC8+JmRqZtm+CXR 8zqO2iNaZHrjZnV2NweOJGZ77u6IbQclW4VzJkC2UCIcj/4Jyr14+BTR3 wHAaEtakih+0PHOkqftgWvZ6xA+zFWKRRX0GhiFazStGVo4+59+0ZsXGF BcpP7pSrppD77yEJJGWUCYAm5DiTsCnavnctKk25fi0fOAW8X1rPlyz55 RGasc60N1/iLVKJECbHgmK18S5AUuyFB8vGG+Q77WqQOyLzlV5ALkc2SH g==; X-IronPort-AV: E=McAfee;i="6500,9779,10498"; a="285348695" X-IronPort-AV: E=Sophos;i="5.95,180,1661842800"; d="scan'208";a="285348695" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2022 20:15:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10498"; a="872152686" X-IronPort-AV: E=Sophos;i="5.95,180,1661842800"; d="scan'208";a="872152686" Received: from shvmail03.sh.intel.com ([10.239.245.20]) by fmsmga006.fm.intel.com with ESMTP; 12 Oct 2022 20:15:19 -0700 Received: from shliclel314.sh.intel.com (shliclel314.sh.intel.com [10.239.240.214]) by shvmail03.sh.intel.com (Postfix) with ESMTP id 2B5B6100C6C3; Thu, 13 Oct 2022 11:15:18 +0800 (CST) From: Liwei Xu To: gcc-patches@gcc.gnu.org Cc: richard.guenther@gmail.com, wilson@tuliptree.org, admin@levyhsu.com, hongtao.liu@intel.com Subject: [PATCH] Optimize identical permutation in my last r13-3212-gb88adba751da63 Date: Thu, 13 Oct 2022 11:15:18 +0800 Message-Id: <20221013031518.66289-1-liwei.xu@intel.com> X-Mailer: git-send-email 2.18.2 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_NUMSUBJECT,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Add extra index check when merging VEC_CST, this handles the case when exactly op1 needs to be return. This fixes: FAIL: gcc.dg/tree-ssa/forwprop-19.c scan-tree-dump-not forwprop1 "VEC_PERM_EXPR" gcc/ChangeLog: PR target/107220 * match.pd: Check the index of VEC_CST and return the op1 if needed. --- gcc/match.pd | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/match.pd b/gcc/match.pd index 3550c16aaa6..1efdc3abb5d 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -8106,6 +8106,7 @@ and, vec_perm_builder builder0; vec_perm_builder builder1; vec_perm_builder builder2 (nelts, nelts, 1); + bool ident_to_1 = true; if (!tree_to_vec_perm_builder (&builder0, @3) || !tree_to_vec_perm_builder (&builder1, @4)) @@ -8115,7 +8116,15 @@ and, vec_perm_indices sel1 (builder1, 1, nelts); for (int i = 0; i < nelts; i++) - builder2.quick_push (sel0[sel1[i].to_constant ()]); + { + int tmp_index = sel0[sel1[i].to_constant ()].to_constant (); + builder2.quick_push (sel0[sel1[i].to_constant ()]); + if ( i != tmp_index) + ident_to_1 = false; + } + + if (ident_to_1) + return @1; vec_perm_indices sel2 (builder2, 2, nelts); -- 2.18.2