From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by sourceware.org (Postfix) with ESMTPS id 8B617385C407 for ; Wed, 31 Aug 2022 07:14:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8B617385C407 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=fail 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=1661930070; x=1693466070; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=EhGa1ly7nZUDIvAMrlmBKWQpfWiuTIJDmlgnIVEPqJs=; b=MCggwF9Y+aKuyxdr0wcOEzUMBHE/BSDqDiQFLUZ0yW6R+Ua6uD1ebUAV jCBEkNYsEHOjyIMRnz3hdb/i7T8OHh7QthlmMOWAPm6M3UuHkJAzFbkWR ruzR/ZZOWnjpnE93uBdjmvrtFt7xaRcDRD03t4puHLILZUa0mFVzzJytO 24FSp5jeG2pjQSd56BYIwcL4N/oOCI8gF+QapSuON4ql3uNU9JFoS2goW JY/aAc7Lmw6QYIbkAeiFQSOTqD2L6coCsDQbVIJ1RBnVXCu0ljBvmdPXr L+7w28j0KniKmuPTjkMB7Gx5kGhLkJfs60cYPdunKIiv07p3aYTs+/6c8 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10455"; a="278406951" X-IronPort-AV: E=Sophos;i="5.93,277,1654585200"; d="scan'208";a="278406951" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2022 00:14:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,277,1654585200"; d="scan'208";a="612003005" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga002.jf.intel.com with ESMTP; 31 Aug 2022 00:14:29 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) 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; Wed, 31 Aug 2022 00:14:28 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 31 Aug 2022 00:14:28 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Wed, 31 Aug 2022 00:14:28 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) 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; Wed, 31 Aug 2022 00:14:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ba8d7ANa78jHmBrcZQUYzUU/fSeQBpD9Q8DlKGN4VAuqBUyP6iQIeS87NlGCNr/Au49bapWXKWklZ5rNQQlQ0S9mXqmAcbar3ZS/kSZxXKcwxdiZ9R4LaKdElxVM3L5pjMm7rMEPa/ImInknVmg/fX263a3SosTbBGN6v3KJ1tAMSsXYMbU8HW7w8ErYe1z6aJYKAiVU5EW1pcAXooOJpUYvFnCyorx0M97xHGhT+0SoYp1urHyUhYjvlg6xQmCgk7rTBtL9GrUFbJ+HvXBUt664FTeD3LTJVLdn2kdlR/dy4TUiPKzULReO8d/SQpIpNi8O9rhhtJYxao6R6lyqKQ== 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=vT4lmykmBDTjqOywOzn5AB/cCPn9TdDQAnQXi1Ar48w=; b=NSINJy7QvaRQoIa1PpUKlsMejsQ3XCKQyFjDu90i3VCYXDiKsLbGOAYizI7w2nLqQLSGxOl44+MWN8Bf+Rq/8dDlCVL765gV9DjXNBeZy2TJY3xJCjVzDtvf/Crx34Pz7tyaz81+SWfLSzj1Dy2OChBEWhX5CR+i/slOuqqxmYO4vYmsbbgOcrxvunJcq/Ji0AEbfsalKvSzhu/GUiTeiEi0xX8hIhdMlgkM5bbKS62bWnIc37XblLsTwr81+/kIpKlqyK2+Mu6XXHK3T5sdCF7Pr85yF9f8nG9WbAWSIm79E6fO/7aXhw6VDkLK0NkuFOfiacRpTLatIX2jURRuMA== 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 BN6PR11MB1266.namprd11.prod.outlook.com (2603:10b6:404:49::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.19; Wed, 31 Aug 2022 07:14:26 +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.021; Wed, 31 Aug 2022 07:14:26 +0000 From: "Kong, Lingling" To: "gcc-patches@gcc.gnu.org" , "richard.guenther@gmail.com" CC: "Liu, Hongtao" Subject: RE: [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+lSGDNyDMBgEpY5jw Date: Wed, 31 Aug 2022 07:14:26 +0000 Message-ID: References: In-Reply-To: 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 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7f09a7f6-68ac-4681-d4e4-08da8b207000 x-ms-traffictypediagnostic: BN6PR11MB1266:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: I9gS4tXQNqv1PMDb0u54aOMak/PpHwB3ZuU5q/1+iJX1hZckP9tO7R/PnnYbmeJx8/w6DOfosobJpVr4/hXiGyzjPfFdMIFFeBLYohEGb8ja8U4lOifm01ALLv5i2gOt7uH7uC6bP0ySaoeI2dHC441X6/lpmxCElzjyaGaXsZPVWbRVFj3wJQ3lwMec/g6K0q82VZVRNWtT2YbE8+EBm8xbO8aFEXTw4e15emb1iiO72fSXzb04/ukYm5VtPXJXNVQsEalk3SMfe/uLf0BUxdXUOMTnnhjKJhfvWUItgt1a3Z9+UFQvFpl0IKB954/DqaCvw0IKFI0HbkI9uKHlSRHNGWabrlWkaFXnQqpBoWKUM+AWnoUMI/+rsP7oh+13gYsABTNLMyVr6zOU2iYbVb1tZcxkEIHQwB3rUywKKhBHD1Eau2HGAq4uLHf+xQbxINl/ibzOMJltgJrzdh7pEsXgY954Dtp0JVQBKYl7uTfHPei3wLmXIpDwDx0K1same1sAUw4SkAK5OHpCpbnERxA4DjOtTYJkr+mqJ2v9MKgvoWn+i70SMz4lDwSBVBCcMFUpJLtQ11fK6dd6+Qvnr+PqHrbk0selbW/zd9NRLeSw01pV/Ux1Us5hLWaBIGq27lCeUr7Mnvg8F7lqvNL3RtB0RPJHJQzg6FZICRID52QIQZ1Htl9XmXkCBs2F5lZkWx1t0dZxwKTObZ33NVV2WUFKyveODxcNxiOgDhYhAXngjKod7DXar3UUXeXYybj4gwIu8NshjJ0U+7/Eg0ROTEko7b0cr4jWXiB4PuJadbA= 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)(39860400002)(366004)(396003)(376002)(136003)(346002)(122000001)(41300700001)(478600001)(9686003)(186003)(107886003)(26005)(7696005)(33656002)(2906002)(6506007)(38100700002)(84970400001)(66446008)(71200400001)(55016003)(8676002)(4326008)(66476007)(5660300002)(66556008)(76116006)(110136005)(38070700005)(64756008)(66946007)(86362001)(52536014)(8936002)(82960400001)(316002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?ZTcJ95meeyJiqyxreq3V61uuVejsFCPdtv7girrmuMNqsgr2sIWj+WUacJdy?= =?us-ascii?Q?amCm2+/OEXcaHuGUvga5LHSB2fOLddrHyU/6FQ80uenxQezTqDj5hIvFKagi?= =?us-ascii?Q?Yt42Ox/+pumFKf1+bbHALogia+u0yLxZi8BEAt7cUQ3HfXrJdgpzTt1L2jtI?= =?us-ascii?Q?psTAvqE56SVW6r9ngJ1hWmZsR5s03g957CYawAr3P6Fr2UeYuXdRsJCYtmK+?= =?us-ascii?Q?CCZliHYiqGQNpiqGZ6sfmvJfQJJ6y6I+o+hYOewTVbsi9Aa34cH7J/1DYnW+?= =?us-ascii?Q?ffTqYbKk6zFWPoIl9TaPOXFVUgmEgFwWchL6mghL6B0mFxRyTT+sxjBpFZ5L?= =?us-ascii?Q?kvWkATbhY0skAMBcoO27yIwNyFCQuEgg8TJO7lqziP29JfVe3hMgNkazSqPq?= =?us-ascii?Q?Pg4qadR6AIl6fboM8XZuINKm21i9Sw3lk39aI9QIYEwFbQdxh4dX9fO25wx3?= =?us-ascii?Q?OmXpaYi8Wf01VtbkLlxiBpEEJXcz/acAsNU3nZPFb4I+Gp4P9OT3sTizLCOp?= =?us-ascii?Q?ZSXxja/jQd1T4f+d+WAIQdOVvYMDW3J/eydKq08x6GJ96gpzqvDfMVyrxNyB?= =?us-ascii?Q?JmnfPfSCmsLZI6eDjAkveaZ8/nL3zta/vpJ+4BY56xHV52EVJ+MjLAg3pXnJ?= =?us-ascii?Q?Dxqon9j1YS/u31kstCFj/Kyuss5MByEE4O0iXcxt5rnzP+oL9XES141bJx4G?= =?us-ascii?Q?8kEaFJNqsR9NAQ/ERh7AA+/HfqvPgsBgiAERwV/OneQ1xhcnNnU+HlVZx+wr?= =?us-ascii?Q?wL4tct+RZ54phthhnJ6Zu9W0PBlyB4938nhvCtEaYKI6kqjBH4efLJcBPz+L?= =?us-ascii?Q?Zv4WItPrd4EbBtC9dpy2l4PF8XcbEq7iWZ6RZpNOkK/DsVBX6xZOq8yG9kiD?= =?us-ascii?Q?+MPKjugiT/Y7qpT194XIUpI3ZUOTYsdS9I/0XE7VYxUtu5guykmbqUba7R2+?= =?us-ascii?Q?alG/xUBwjUNbqKIUDduZFuxV4zHRkr1mp4bl87p/rQGnYGdgchAWsDjfovgi?= =?us-ascii?Q?yTbylGBc8KxR+p/G6xZxqYK/btQGnILtFYNm/TyxX64FR6MwJ2Rh3lckVIJz?= =?us-ascii?Q?OBLjuT4ONwS9gZsH8jJnzHDwpmP5nhjP4R5Z3hLnqHo7HI31Ak4V1Q3Vn3AH?= =?us-ascii?Q?R053tTgGdB8Hg7sLwjRQnxOa2pXbZvEnp7LtbPrukRsdvtN/fb9mm58SqHfg?= =?us-ascii?Q?P0dELj8CzzfzIvS/m2tEqHXzbFEi+S2kC+t/88hpfvwM23XLxeid3odflcV2?= =?us-ascii?Q?Kw8/f7pjU0CA9+bueqcQC5cV1m0LBORRuE+oDWpBTA0T+eP0uR20uOYmDoAj?= =?us-ascii?Q?9Nzq69lck7XG64RM11Do/jIs3oZGgjCAKe+1K5GfooYxEcJI5dozdw1wdaAk?= =?us-ascii?Q?wewfMshFfm65kpu973LoKKb8EgK0PPyZxarzORG5fhkSkl/w5gpOjb/KWI+d?= =?us-ascii?Q?ZqwTqBicdX1D3tYdY53qhiSaBzOLZV9R1LkTkJzmAsG7pqLYxzMhzLwntp3r?= =?us-ascii?Q?hqzgZavNWPU0oBAO8XWNY1u/NOimGL9dK/glIswCdJJqR8HZ5+PKqoSGtewU?= =?us-ascii?Q?hO/MtqeIEbMatLcisus4u/UIXludrSRJFTQjt7ma?= 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: 7f09a7f6-68ac-4681-d4e4-08da8b207000 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Aug 2022 07:14:26.0351 (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: Ht+u2rIEF1MLIR+KdwuwDJpfChn8KX8tY1kBPImOEf0mX/NIUGQj9T5y9bvzaX3t32a4qy8tHhFesKeI2UieFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1266 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 List-Id: Hi Richard, could you help to have a look for the patch ? Ok for master ? > Hi, >=20 > The conditional mult reduction cannot be recognized with current GCC. The > following loop cannot be vectorized. > Now add MULT_EXPR recognition for conditional scalar reduction. >=20 > float summa(int n, float *arg1, float *arg2) > { > int i; > float res1 =3D 1.0; > for(i =3D 0; i < n; i++) { > if(arg2[i]) > res1 *=3D arg1[i]; > } > return res1; > } >=20 > gcc/ChangeLog: >=20 > * tree-if-conv.cc (is_cond_scalar_reduction): Add MULT_EXPR > recognition. >=20 > gcc/testsuite/ChangeLog: >=20 > * 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 >=20 > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c > b/gcc/testsuite/gcc.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-*-* } } > +} */ > + > +float summul(int n, float *arg1, float *arg2) > +{ > + int i; > + float res1 =3D 1.0; > + for(i =3D 0; i < n; i++) { > + if(arg2[i]) > + res1 *=3D arg1[i]; > + } > + return res1; > +} > + > +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { > +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 > +{42,42,0,42,42,42,0,42}; double A2[16] =3D > +{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]; > + > + 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 > +i?86-*-* x86_64-*-* } } } */ > diff --git a/gcc/tree-if-conv.cc b/gcc/tree-if-conv.cc index > 1c8e1a45234..bac29fb5574 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