From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by sourceware.org (Postfix) with ESMTPS id B942E3858C2F for ; Thu, 25 Aug 2022 09:39:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B942E3858C2F X-IronPort-AV: E=McAfee;i="6500,9779,10449"; a="355921028" X-IronPort-AV: E=Sophos;i="5.93,262,1654585200"; d="scan'208";a="355921028" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Aug 2022 02:39:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,262,1654585200"; d="scan'208";a="613115850" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga007.fm.intel.com with ESMTP; 25 Aug 2022 02:39:55 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 25 Aug 2022 02:39:54 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 25 Aug 2022 02:39:54 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Thu, 25 Aug 2022 02:39:54 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Thu, 25 Aug 2022 02:39:53 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Icx0dy2vxdIx2+I9QilFkrAzROVHAt8kqWkARpjh9jbDNr+jjx555roN6eu0+P5H18Ow6df4OT8FLNWWBoNQjElMVWF8ARkUFAxB80TH3Od9nZ0hkvRPUav5n8Fjna5tyrMwdFiHsbhDCBM/WsWzthNLw9I4DADj5IVUjwkZIoHxFrBSPV7VHKCDq1q5j5lENCxg7eBBk9eCDQKMZlRRtheTrAjU0ap/eFt6cqaF92rhv6RmbOT1juvt1blenbXXOR6RO+YCp7nmwB1MTz5whFsYyDdEMHzgNMGyrDu9GOjBIWlLLJq5mhC7T+3teaioKBQ/UGKbRf/beyYJAh5VrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=orm39klZksLQ8lBEW7tZ9lYwzGTdi8CqdJjLOootOYg=; b=IYZeV1PPtMtZAqWVjUf8yoHt+4IR56UorouBei+zHhkWZzr/kn7SAf8uczjTFy4qXv+sm2H2jkyTRl+ZaOXg+xsnqMWd67aEDb239vAfmNaRJG6X1yTXjm04dI4knRxL3qfK9wCivsVGhSHOZBMlxpHI0z7bo+/yacJ6MVgrQDFXnQKbZ9ic8UEX00eYQ2zwBGXA36I6oCSrVhbt8lSQnfd5i9rDYricPGxEqoJmuHq40E3i9VW/io4oy3pinjUk/2CLAiPrqdUCuKkgVM4nzwDwysznj9UUXvlsY4Ge+W2vZlPegOEUnU7PqqvGPnpebnRlr58/BRvRNqFNFL18Hg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM4PR11MB5487.namprd11.prod.outlook.com (2603:10b6:5:39f::22) by DM5PR11MB1402.namprd11.prod.outlook.com (2603:10b6:3:7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Thu, 25 Aug 2022 09:39:50 +0000 Received: from DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::1cf5:eb50:5eb:a1c3]) by DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::1cf5:eb50:5eb:a1c3%9]) with mapi id 15.20.5566.015; Thu, 25 Aug 2022 09:39:50 +0000 From: "Kong, Lingling" To: "Liu, Hongtao" , "gcc-patches@gcc.gnu.org" , "richard.guenther@gmail.com" Subject: [PATCH] middle-end: Add MULT_EXPR recognition for cond scalar reduction Thread-Topic: [PATCH] middle-end: Add MULT_EXPR recognition for cond scalar reduction Thread-Index: Adi4YxhQXB9/tGQkQ5q+lSGDNyDMBg== Date: Thu, 25 Aug 2022 09:39:50 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.500.17 dlp-reaction: no-action x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0c67f8e9-75f3-4db6-18f1-08da867dc1c3 x-ms-traffictypediagnostic: DM5PR11MB1402:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BZmHTofcRHrnbjlSMETzow8H5mFBqpND1A4SUD4k0tcBH0VODFlK+aaJMeDc3nUX3+6b9xFYEpzOCUycjpavXiKz/RHRhCV3RwHmGczyDE5vnndGTBcdZprdHmPmsYFM8pUTYSqv7/GTk1gbcBkYbEcRjGDs5T/axcLbIRXEp6TEQtFqEISc2dV6I/f1Z5BzJutCGTQxHaqx9HoxJ/qOeiBxN5cYtgU9/GD9KZb+ByG9Dcm8DosVm6KYujKfMm3I/6CcIYSrUQcaQ4pNnKcGmS1Yd1br8hdE2uCKTit31t1q+Btx9IHWdqF249wYVs8uOBi4oZtpYffMU2MRFRElPLkj7R4PgOkzbJchwVhhbLjOxhUp6KfDY1ZIlMikBQjPrcaYjcVOZtkeNbmjqEEYEiND3qr48n6x0iWGJk/WOwnVyBnPf8iLUK4iTSvy+j+bARCLmBot4ogi0tZMlQs7hnXw1gIcl6bHPKxbZuvDpn6Jwg78CXbL0CGSX/aphAh98+m4RaxLLiF+RpkzmHO3e/aPEph6kCyVnfjHy7QClg+3TurQ7WBmMUG7A7QsKUpN4c7kq9i1pff3RuaET650BwNTdztLR1Nqqz34V3zfYThPRcy47DmFoLOm8N/hWvZ0IiEAOBFzguYXRZc9cln5/am6qTQRm/+JdWwp064snCrPCbrg+aejrFBo6qgEBN0mD0eDa+aO/dfmp9uw52Ad82gjKjflz4ZmNUlK7tuJDVAWtscX60hp5dViZ3tU7UjmR3WlwimcNQeXdwe/Ux018QFZAmeKUI8DKlDjl5CnwAE= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5487.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(376002)(366004)(396003)(39860400002)(346002)(136003)(82960400001)(38070700005)(86362001)(316002)(26005)(9686003)(478600001)(84970400001)(186003)(110136005)(55016003)(71200400001)(38100700002)(122000001)(76116006)(66946007)(66556008)(66446008)(64756008)(66476007)(4326008)(8676002)(8936002)(107886003)(5660300002)(6506007)(7696005)(41300700001)(33656002)(52536014)(2906002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?zwgjzebgDi8RZVuzqmkh1SfSwOghtNDOzWeGhM4DviNmcNx4z7PNIhGSsI7V?= =?us-ascii?Q?Nr4ue7RFLhJw8w1BOTnL5YWc7Qcuk8FDsUxKd2JxYGUI7IvChx7yujfT/wEQ?= =?us-ascii?Q?H6Qekhsq1Sscy7gr7UOEBze05VvTY0vZJdIabcrAphQ/nSfmft9derEYjyAX?= =?us-ascii?Q?F7JGZ6QizGWwJMdoSw9XR3/U02lZ4h53tzphSJbunfttmCSaZN1cj9wT1VaT?= =?us-ascii?Q?5IceR70jubpBIDbZN2JnatFEAGXeuReOL4QjXH9Si0iTVhYB+NUUaOZt9UbA?= =?us-ascii?Q?bSI43tUG8QvxfhebXT70ohRV5d22a5Eq9EmmxrYAZTA8rvusi6lQH1zXD06b?= =?us-ascii?Q?zhego8AE/+dwET68g6VViq4RxShfiaitQxykw8PVCDmGt2UbTvTwpqn8HiNZ?= =?us-ascii?Q?fJJwFRUtRg3HBRVZkPysmA23ghPXj2Lb1h6b26tmIPRL7g2CNyaPHr3rgDgc?= =?us-ascii?Q?7izH2HOZtwS6/xV92JAGcTkr5u4Pn/7r9Flxg3CjcaDhGYCyruAyQsVl7sHh?= =?us-ascii?Q?ZmcmNPsbtwV9LTRQbe9r569JaT/gMZyp3KuOCL429fdkCHgeODmIYrYsY4aj?= =?us-ascii?Q?kTnHnr+TxZsCW6xl1e2gdnXQwRIhzIREpnR0LBTemn3Mhjhz+9PvArRy9q+M?= =?us-ascii?Q?YBIKTLpR89dOJ9Gc0n4KSdRxb2yPwWpyzMj2Xqzh7jqUtgzHLdsBc0DPpVdU?= =?us-ascii?Q?w17th12rbw/HQy0fuvrpO1/6LhHUftTHe72U4S+hBjaLFbrWNSMWm9yMsmOq?= =?us-ascii?Q?s8o9I56z2WhPXPuLiKbj7tTZN0IXPp+GfJKF9jNqGFkv15fSw0LYIfiHFXvq?= =?us-ascii?Q?Pk9CF31HeDYbpAEl/lgcpPS1Ue+pZQMm/88Ts2zkL0vuTuvzgVHqOqgZ7nVQ?= =?us-ascii?Q?/hdbjVVaPrv9BtjEkRHR/BQoEcjidLOtpSMOnjUciT3egTKdc5kQ7w7CmxIQ?= =?us-ascii?Q?zHui1ez3nJracwzUeySOX+s7uY/KDcTW7ZewnM35K9VM+4BlTHGK4ACzJpqj?= =?us-ascii?Q?E2chvmtXE4fKeFnIOZbcjT5BGauzfOuCL1FCY7tpDUjGDEo2nZiDsM8ypm+S?= =?us-ascii?Q?+TSYwC2V4tF8anQ9THG397YGIu2ttCP4KFWBzHnxrs7MJhN0orK+rRVaa2BD?= =?us-ascii?Q?WZ+scwqjSNIvGT/8t0YUIaLeGL8A8yFPFOwqlzUoNgpXp1klEWMEt6mQ5eI4?= =?us-ascii?Q?x2hF9favser5LH93q+x17woVmJtJVvwHm6MXUPKukBYxzxwmlsuBRRzfdmk8?= =?us-ascii?Q?oTnP4bJzZlpm+TMAPHAXITLlETpHtxb/rAgThiQ2NYJEc2PfEBhJAVLWpUQR?= =?us-ascii?Q?l/0X7GByZvoQq0wMc9rgB1XRLb20Z+aO4aGi6LdhDqwg5E5C+laENlkk4BUY?= =?us-ascii?Q?H49NTLdG9Dmba2LDz39fsDEY9Mhc5iKJSY4q4U9aETAdYdaz3NWNwSB5hfKO?= =?us-ascii?Q?X5o//1lF953SDjNIY6kJmhFrqBCJV7T/gQJbR8Q+pm15MNXIyIoLJ1dlGPQ9?= =?us-ascii?Q?omxD1N2/56ITTl8dfPrSiNZKZxFUljGRxIlZdB0XvNa+W1lphdtDENizTW6C?= =?us-ascii?Q?BZ0xpHcbM9yQtafuLSgRvS7T0s2rJ4LDXSe6tEY3?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5487.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c67f8e9-75f3-4db6-18f1-08da867dc1c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Aug 2022 09:39:50.5857 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IG/81aAEZQaTU1Wybar3ihr6OCM3nnZ4SOmYXUegvh+Nh7sv31PxXpu9wfKukYsaNCfJfDm+T1hR0jKX1nnGxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1402 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_NONE, 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Aug 2022 09:40:00 -0000 Message-ID: <20220825093950.RtNNimYxNRKVyyMp8zlh3WmTUqOaOxMlFFxTQTCPmVg@z> Hi, The conditional mult reduction cannot be recognized with current GCC. The f= ollowing loop cannot be vectorized. Now add MULT_EXPR recognition for conditional scalar reduction. float summa(int n, float *arg1, float *arg2) { =20 int i; =20 float res1 =3D 1.0; for(i =3D 0; i < n; i++) { if(arg2[i])=20 res1 *=3D arg1[i]; } =20 return res1; =20 } gcc/ChangeLog: * tree-if-conv.cc (is_cond_scalar_reduction): Add MULT_EXPR recognition. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/gen-vect-34.c: New test. * gcc.dg/vect/vect-ifcvt-18.c: New test. --- gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c | 16 +++++++++ gcc/testsuite/gcc.dg/vect/vect-ifcvt-18.c | 38 +++++++++++++++++++++ gcc/tree-if-conv.cc | 1 + 3 files changed, 55 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c create mode 100644 gcc/testsuite/gcc.dg/vect/vect-ifcvt-18.c diff --git a/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c b/gcc/testsuite/gc= c.dg/tree-ssa/gen-vect-34.c new file mode 100644 index 00000000000..8d2d36401fe --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-Ofast -fdump-tree-vect-details" } */ +/* { dg-additional-options "-mavx2" { target { x86_64-*-* i?86-*-* } }=20 +} */ + +float summul(int n, float *arg1, float *arg2) +{ =20 + int i; =20 + float res1 =3D 1.0; + for(i =3D 0; i < n; i++) { + if(arg2[i])=20 + res1 *=3D arg1[i]; + } =20 + return res1; =20 +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {=20 +target { ! { avr-*-* pru-*-* } } } } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-ifcvt-18.c b/gcc/testsuite/gcc.= dg/vect/vect-ifcvt-18.c new file mode 100644 index 00000000000..c1d3c27d819 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-ifcvt-18.c @@ -0,0 +1,38 @@ +/* { dg-require-effective-target vect_condition } */ +/* { dg-require-effective-target vect_float } */ +/* { dg-additional-options "-Ofast -mavx" { target avx_runtime } } */ + + +int A0[4] =3D {36,39,42,45}; +int B0[4] =3D {42,42,0,42}; +float A1[8] =3D {36,39,42,45,43,32,21,12}; float B1[8] =3D=20 +{42,42,0,42,42,42,0,42}; double A2[16] =3D=20 +{36,39,42,45,43,32,21,12,23,34,45,56,42,78,89,11}; +double B2[16] =3D {42,42,0,42,42,42,42,42,42,42,42,42,0,42,42,42}; + +int main () +{ + int i, j; + int res0 =3D 1; + float res1 =3D 1.0; + double res2 =3D 1.0; + + for (i =3D 0; i < 4; i++) + if (B0[i]) + res0 *=3D A0[i]; + + for (i =3D 0; i < 8; i++) + if (B1[i]) + res1 *=3D A1[i]; + =20 + for (i =3D 0; i < 16; i++) + if (B2[i]) + res2 *=3D A2[i]; + /* check results: */ + if (res0 !=3D 63180 || res1 !=3D 1043228160.000000 + ||res2 !=3D 3296728515318523101184.000000) + __builtin_abort (); + return 0; +} + +/* { dg-final { scan-tree-dump "vectorized 3 loops" "vect" { target=20 +i?86-*-* x86_64-*-* } } } */ diff --git a/gcc/tree-if-conv.cc b/gcc/tree-if-conv.cc index 1c8e1a45234..b= ac29fb5574 100644 --- a/gcc/tree-if-conv.cc +++ b/gcc/tree-if-conv.cc @@ -1739,6 +1739,7 @@ is_cond_scalar_reduction (gimple *phi, gimple **reduc= , tree arg_0, tree arg_1, =20 if (reduction_op !=3D PLUS_EXPR && reduction_op !=3D MINUS_EXPR + && reduction_op !=3D MULT_EXPR && reduction_op !=3D BIT_IOR_EXPR && reduction_op !=3D BIT_XOR_EXPR && reduction_op !=3D BIT_AND_EXPR) -- 2.18.2