From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by sourceware.org (Postfix) with ESMTPS id DA204398B841 for ; Thu, 3 Jun 2021 11:03:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DA204398B841 IronPort-SDR: FxTMMUT8j1ZD81uj0ChvHhbVVDGpeAgWM2wS5X2nDw941lDpNvuFFkjbZvGFYH6+hTXfmt2ZTl kO4AaCcqNhog== X-IronPort-AV: E=McAfee;i="6200,9189,10003"; a="265191097" X-IronPort-AV: E=Sophos;i="5.83,244,1616482800"; d="scan'208";a="265191097" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jun 2021 04:03:46 -0700 IronPort-SDR: F1rtQszVlE/BIR/B6AiINf6hOBX23dTA2XO32MDXXpj2qAeIwb2hCVcRkPdtw+70RVLc8u9rwj 3xiI84KMmG9w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,244,1616482800"; d="scan'208";a="617839393" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga005.jf.intel.com with ESMTP; 03 Jun 2021 04:03:45 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Thu, 3 Jun 2021 04:03:45 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Thu, 3 Jun 2021 04:03:45 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.102) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Thu, 3 Jun 2021 04:03:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wcj7JjLfJlJLG1QGgLAp+/Z2b3oBiZ1T44nvdXw/h7Aea3hR9CZUGe1v+fROjVc4Yzy9sVb8RpIDjnMA/KbWMMu8sBztmrn1I5KFHrHz1cOa74/NJ559Is3XYlpWTIF/cMpdeZBQ/l8HJlBBJ8Bh3yJsvq8TM4PNBQAFFIxVn9FYGn5dUscWIHW29RnhL3syesXEx0As3fy+0Zz94uKQRPu973hPxBGqQtRs4XKcHVY/ie9aC21czsUITyzWwVIKG+v9jQzJsClcrhwGkI41uchRogaGfRQl7xaWSD28hRDhjOXnkozYdTuthLBD7KxxnaOqS3ftvhCX7wNytxxICQ== 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-SenderADCheck; bh=l7ZqzzeP9q6MbDm8eC4ABylFsXX6uZZ9mnpkJrQOyJ4=; b=GFOkXfPt5mbew0amREE36ghzn3SUfEEmEqLP1D8y8GEAaa8efbkb8WXzOHr9zFcrErZZKQnH9A/NnqLdUGlu3XZIqn4FTNMRVkdUBaEfLZvZvS1jipW/U6cZ7E7NwYblvP+X6oUsCwXWhSWsx0QFxoDL+7yBeqgxfIp5lz5eZF/0Hdq8o4OLS0SLfTQCK1CXYMcHgX3/OUcsJhQoZ80p98YeHAAKCI6dXflX68JY3wjXIUj0gfSiPulpC6E46lFvjz3AbU7C9o0UruV+DXTsZ38uiU35/uW/k0n+9HHW/AgpW66sOYNIgqk7pqGkSG2P+uo5TLedusPIJTNoJEbwQg== 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 CY4PR11MB2007.namprd11.prod.outlook.com (2603:10b6:903:30::7) by CY4PR11MB1461.namprd11.prod.outlook.com (2603:10b6:910:4::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20; Thu, 3 Jun 2021 11:03:43 +0000 Received: from CY4PR11MB2007.namprd11.prod.outlook.com ([fe80::f99b:fc71:2810:51c1]) by CY4PR11MB2007.namprd11.prod.outlook.com ([fe80::f99b:fc71:2810:51c1%6]) with mapi id 15.20.4173.030; Thu, 3 Jun 2021 11:03:43 +0000 From: "Liu, Hongtao" To: Segher Boessenkool , Richard Biener CC: GCC Patches Subject: RE: [PATCH] Canonicalize (vec_duplicate (not A)) to (not (vec_duplicate A)). Thread-Topic: [PATCH] Canonicalize (vec_duplicate (not A)) to (not (vec_duplicate A)). Thread-Index: AQHXV34E/nFp1MeWrEWh83n++guxO6sBMbuAgADpVCA= Date: Thu, 3 Jun 2021 11:03:43 +0000 Message-ID: References: <20210601140254.GJ3085@gate.crashing.org> <20210602053907.86765-1-hongtao.liu@intel.com> <20210602053907.86765-2-hongtao.liu@intel.com> <20210602204627.GI18427@gate.crashing.org> In-Reply-To: <20210602204627.GI18427@gate.crashing.org> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows x-originating-ip: [192.102.204.55] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 47f2f5ce-c6b6-4319-ede3-08d9267f408b x-ms-traffictypediagnostic: CY4PR11MB1461: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JG+ETM7mda3K/1CqFbRC5F7v1x9y8GUhnIbe+C/9XhvS4bV4Ey2QKv5Sgv67NMBaHhM5y5iLLmYDQUiKqIBxHJdu6CBuuIDJwSoSoPsPug8isu4xyQCKya87MlPA5UA8bmpjxQlk4PmAlQbRprE7yDTjEVwY7NSs+8wCt8dhwwD4QaA3Qf1OZBnQhPOYXyGXqyT7720YSbj5oVbqdj/bGDt7YY62cU+AD7rIMcGP4bphbuxBAC6NnjfgYpgTgVRHRAkDvkZCshGcL0KKST82wNjMhs/bIGLlj5Xf++2PQfdfwbmBteZpF9k8/7UNDkf+rzCcLvSCsxfiynIhRt49t5G3gzIbyPbr6+0e6NBM/aXxNXXgTesPspjPav3UFi9BpVeOgsKGfZv7Kvq0tpHtRpWhoi7XovtpcI1kaTIIHI2wYr2fvk4qxCPW5VuIW27c0DbNk+HaU9azybTFdzdUyY5D0ZoylCZDX49wdZB8pjSvuBwhB49CbE98tCab4BRV0mQ7zReXaURvt+lSAIEvU5o4bfEcg+ZzCQLJMqpyGnTZGbUNzAkop4InhEP0WPufocHooWxircAAVzicsGKTLizKRb1srVS98JQNZmwsSUo= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY4PR11MB2007.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(136003)(396003)(346002)(376002)(39860400002)(26005)(4326008)(186003)(86362001)(7696005)(83380400001)(9686003)(33656002)(55016002)(64756008)(122000001)(66476007)(8676002)(66446008)(38100700002)(53546011)(66946007)(52536014)(8936002)(110136005)(66556008)(316002)(2906002)(478600001)(76116006)(5660300002)(6506007)(71200400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?ASjnKCqnn7abzXKVRH3kXunpjfsBLcjo+7ytlFhbyZe/joRtLgd6yEbVwDVf?= =?us-ascii?Q?aQvuatstZvB08j8LaOfHqwav62/Sx8LG0P5bgx6rY8+kRhNGWl31fWnErH6N?= =?us-ascii?Q?wR7Ux5Ub3d3m03i0dFOHJRGE+5y1uBy5NbrtbrrNO5fZmlaCWYQQYVD00EoD?= =?us-ascii?Q?gscoA0tV+oeyLViSV32WTDKXKSgO2ZqsnOsXeeCC1p9DVENGHLnIBgbnaNqk?= =?us-ascii?Q?jlBV7oktLEsZ3uqQaSmEi1tIyng6Ae5miY2Ox0LatWRQqIBB8nGrk+F4ua3R?= =?us-ascii?Q?CCK/C86hPmOciD3zIxaf5ctAh3rYwbEz7Rd4xeY9jDgr1LKwS6JH+txcjbGO?= =?us-ascii?Q?E9LqsLfXhui3UXzy0E1/sVIBBsla9i/PLO5DJyfZcv5Yy6p2ERoAEf822cws?= =?us-ascii?Q?DnHPwFTQVhxMZScBlZVQbo7pQV5MSq6+GuOYWmQbW+IWGymWuln1p5BB/urD?= =?us-ascii?Q?MHFNr2V9qKm77vMDI0eZKbBzBQS71EdHEfxM4vgfXxnD3jANqNwKrIXebvQ2?= =?us-ascii?Q?FJFvyR6dgWtkYVD4OLqdNfCVPto1oFWBa8RngMaDI7jak0/7grWoWxAzEa2s?= =?us-ascii?Q?NpAl2gknO+NxBfJF5np0rabpUcadc/zqRd4/6JJROe1I5FMWVGUZnpPSukGf?= =?us-ascii?Q?Et9g1/hlfAiIcgM5Z7giIEGkTJ7/Vc1Om1rjClnPHRU83uTLSN8zRV766ene?= =?us-ascii?Q?FUDTbvRaEjkKr/5udU67oFRVRI617QSz8Q9ziHwnY4S3AjcQu1lTxiwP1hyX?= =?us-ascii?Q?+JY35qejho+lvULgPtfcM5n4Hu5m4UdS0DcnT2ahjZc3ZjYbdLSgshpk5vrD?= =?us-ascii?Q?Cjl+bdVqkGbvbpbgqnkCwS13e7IpvKWiVpqSE0tW57p/B4P6cR27mFo+1eFm?= =?us-ascii?Q?i2o1Sbn5Y9U1YlplcXCu09hgIaJDDh25VcSLLTR6f81dkJpeoWX+Z5CVU5hi?= =?us-ascii?Q?8rYD8UJxwZaDeLYRAP07olSXCnkfn4aYPjrTRxzDX2dTM/oguWzqylaerUk5?= =?us-ascii?Q?L7Bq6xluRjYBauJRjGeT/f61O7vDWvW1y1wGx1J4PtH30h/1yDC3Rn85Qcxp?= =?us-ascii?Q?V9uRrDSuU1ueWwS2ygKsQjFdPlfenSQd+oJeN6mJ6dh1AcTem+DCPrJXFzIO?= =?us-ascii?Q?HgVpsQfgsiW20pFEkBw1faWaimE51qPpkI+xN6ldweh72b5ozGu8eWXQir3I?= =?us-ascii?Q?0qcY9iKyYinRVcWJhB5W3YtPbHxEO98SS5qPdWi15u0yJVCj7tEFTT7D7GDn?= =?us-ascii?Q?LPKoYAD5yrBdMXcGtp3lwEPJdo/7Q2UAdUe1N+H5T0DjcoO7FyVFm5F8KPr6?= =?us-ascii?Q?DRCkGivC3BhM+PVoZLP3hwvG?= x-ms-exchange-transport-forked: True 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: CY4PR11MB2007.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47f2f5ce-c6b6-4319-ede3-08d9267f408b X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jun 2021 11:03:43.4130 (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: NDyFrnwxGhuYnwUf+rbzlxc2kErw1frrP1WC/Uh9DXm/E/iRUP+ZeA8jyZ4E+ihqTXSBNGihKry/fpu5Se4bwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1461 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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, 03 Jun 2021 11:03:51 -0000 >-----Original Message----- >From: Segher Boessenkool >Sent: Thursday, June 3, 2021 4:46 AM >To: Richard Biener >Cc: Liu, Hongtao ; GCC Patches patches@gcc.gnu.org> >Subject: Re: [PATCH] Canonicalize (vec_duplicate (not A)) to (not >(vec_duplicate A)). > >Hi! > >On Wed, Jun 02, 2021 at 09:07:35AM +0200, Richard Biener wrote: >> On Wed, Jun 2, 2021 at 7:41 AM liuhongt via Gcc-patches >> wrote: >> > For i386, it will enable below opt >> > >> > from >> > notl %edi >> > vpbroadcastd %edi, %xmm0 >> > vpand %xmm1, %xmm0, %xmm0 >> > to >> > vpbroadcastd %edi, %xmm0 >> > vpandn %xmm1, %xmm0, %xmm0 >> >> There will be cases where (vec_duplicate (not A)) is better than (not >> (vec_duplicate A)), so I'm not sure it is a good idea to forcefully >> canonicalize unary operations. > >It is two unaries in sequence, where the order does not matter either. >As in all such cases you either have to handle both cases everywhere, or h= ave >a canonical order. > >> I suppose the >> simplification happens inside combine > >combine uses simplify-rtx for most cases (it is part of combine, but used = in >quite a few other places these days). > >> - doesn't combine >> already have code to try variants of an expression and isn't this a >> good candidate that can be added there, avoiding the canonicalization? > >As I mentioned, this is done in simplify-rtx in cases that do not have a >canonical representation. This is critical because it prevents loops. > >A very typical example is how UMIN is optimised: > > case UMIN: > if (trueop1 =3D=3D CONST0_RTX (mode) && ! side_effects_p (op0)) > return op1; > if (rtx_equal_p (trueop0, trueop1) && ! side_effects_p (op0)) > return op0; > tem =3D simplify_associative_operation (code, mode, op0, op1); > if (tem) > return tem; > break; > >(the stuff using "tem"). > >Hongtao, can we do something similar here? Does that work well? Please t= ry >it out :-) In simplify_rtx, no simplication occurs, there is just the difference betwe= en (vec_duplicate (not REG)) and (not (vec_duplicate (REG)). So here tem will= only be 0. Basically we don't know it's a simplication until combine successfully spli= t the 3->2 instructions (not + broadcast + and to andnot + broadcast), but it's p= retty awkward to do this in combine. Consider andnot is existed for many backends, I think a canonicalization is= needed here. Maybe we can add insn canonicalization for transforming (and (vect_duplicat= e (not A)) B) to=20 (and (not (duplicate (not A)) B) instead of (vec_duplicate (not A)) to (not= (vec_duplicate A))? > > >Segher