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 5EC1E386FC36 for ; Fri, 4 Jun 2021 02:49:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5EC1E386FC36 IronPort-SDR: hLwu6kfmwAu0NGT5+dggDyAP3apfSIGwyiZxNakJH71kjTqkZXu/ZDzCmZUmsbx5ODOsTLWqRI YA29T80xKPyQ== X-IronPort-AV: E=McAfee;i="6200,9189,10004"; a="191546509" X-IronPort-AV: E=Sophos;i="5.83,246,1616482800"; d="scan'208";a="191546509" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jun 2021 19:49:48 -0700 IronPort-SDR: qwknN6Q9+yAOS+bk3cVqDktaXK8/8tJZ+6ZlMs5hCW/gPx00f7qm9CvUdVzJKf/mNceChOiFOk GXcs/lRI2DAA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,246,1616482800"; d="scan'208";a="446525997" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga008.jf.intel.com with ESMTP; 03 Jun 2021 19:49:47 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX605.amr.corp.intel.com (10.22.229.18) 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 19:49:47 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) 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.2242.4; Thu, 3 Jun 2021 19:49:47 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx606.amr.corp.intel.com (10.22.229.19) 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 19:49:47 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.168) by edgegateway.intel.com (134.134.137.100) 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 19:48:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QViLKudJQm78ewNQzTkSRxGohi0cf8OvOvSDZljI01iyoZOmK65ZVpn7htbiQvAu73RFNXlYLy+nTjSN93ZtEPs+ZviM+9S91FJhGNc11KMKCMKrbQaJbyy7eJu9BnlNa6PpTFH9huHLTfwr+JhdpBwthvDE7QEs84V72uJM5tOOFGB2Fgj22/viX7o099gf43J8HeXdclFR/Ud3zZ+Y9FSkRYVI9SUzmgkfXFPtP1NEegS/7dEobhS7UmYU0+K8FwHMjN8CgWNoy6rw8NNGstJhOG8j1acAiq5Q3LNmS8OUdawuyQxHtxzfbL3LJlmcomoNVSZGnwm7+aM2v2doBQ== 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=oE5nWDU9irlXjBTkx0yK+KGOyS+XQKJBHMs693Ddm5Y=; b=GBITWjXU/mrY00zwslBAYwZ/8iqCRQtnJjPM4RYwRle35esB31DZ3Hry9eAK8CYgPmIx/fMtrysREEJWP/qdgWwPOVSZo+SMj6rg1AMl0mwe2bvhZ1c/xDWDKM2B15jz5LS4feYyIVAl+fIJj5DkPCL6exBWFg2tAhRkiQe0IS2CgWe16grVmU1RLMRjW6ZszP5cA3l7QKjeR4Sgb6HVLeSi9fEI32buzuMUaeZ32nwIltgxLwR+S4VMMftiImMQ2C/MVRCLJtcZtSc0/cchJnnWIG5dVjIVA0u9SlN9bg4Mx0ihmwGI8NBtXkY4+RQJ0roqt6ZFXwtYLI5lDZAaCA== 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 CY4PR11MB1336.namprd11.prod.outlook.com (2603:10b6:903:2f::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.27; Fri, 4 Jun 2021 02:48:19 +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; Fri, 4 Jun 2021 02:48:19 +0000 From: "Liu, Hongtao" To: Segher Boessenkool CC: Richard Biener , 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++guxO6sBMbuAgADpVCCAAJvmgIAAWgKw Date: Fri, 4 Jun 2021 02:48:19 +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> <20210603195933.GW18427@gate.crashing.org> In-Reply-To: <20210603195933.GW18427@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.53] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bf2685b4-4bc4-4586-1e5c-08d927033621 x-ms-traffictypediagnostic: CY4PR11MB1336: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ccfpd/9OwVRURnoIPJZfKwqnjIz9cllMqdJ+/RlZp4YBCL1onpq6pKpOInbhxNQ8xPXmTsZnwonlB4CwM4YP5o0NYcx9BtE417szdy0KPxsVrrgllYfltVLRawu3zCViv+20RIENkjgwYkkbnwSBU0ZqwbY+8bpfaU04rThdHKfEyI1c0iu19LOBP8Z8V2ShNqKuQpUzf2k+Sob/fJnIA0E4TxUvrXETmsRZBcEqRpSnBhdaGJawAnIB69U6Jv2uID/TBEnAPjnIHvvmgxecPw/u4Hgx1kloPYcXUww63e5dvfR3CqfktP0eD5yU/3b2gPWhwGqPoVBGPnPQJ4ZCFLS0QvVPtNzEKnzCW2KgqYLgNmxksPTQz5twBqHatZxFridGb/dd9k/9p+H1lB5kIBFZINBWt5mLfX602KIm2qTBhe2bCH/Q5+DkVnnqrbBUIm05519jGHO9SKB/igrgUVd19DLgGi1tt4/sVqdCG0dRLYzntgyRvy/1VJ0tvwiPSgZx7YSK9pTgtxCzibgAJIKUfwnPTyX+u8PM7wlJXF3v5WYho4H28NThbnvPEMgMYuER9UmB8CU+Ahq8lLTeBPDeXNX+0OMiaecUxmTvGoo= 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:(346002)(136003)(396003)(376002)(39860400002)(366004)(54906003)(316002)(71200400001)(478600001)(55016002)(76116006)(4326008)(66556008)(66446008)(66476007)(33656002)(2906002)(66946007)(64756008)(9686003)(86362001)(186003)(5660300002)(38100700002)(7696005)(122000001)(26005)(52536014)(83380400001)(8676002)(6916009)(6506007)(8936002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?ghEa/5+umGQXdorgdPcjo5Zr5ROZkv4sAtuNpUalIpowW19sPUpj4SKT3txs?= =?us-ascii?Q?wgoA6Hhlwb3+6+xXH4iP0KVVsNIDXfvnRzXEXjLcAFhGvOOR7JpVn+sHqnTT?= =?us-ascii?Q?QaKDhDMZOcI/XIrNObkYOGRg4vExBPx0rhoS43WCGlnpAynRHlKo2iLRX1kn?= =?us-ascii?Q?LCUMQtKtE6h8mLL3m/nsxH7B3ZF9TTqLbmNE4aHIFeEmUdEGzs8fmJrRTiEN?= =?us-ascii?Q?Uc1n0d3ci2dKLLsnezs3pKhKazdDSTd57pFcxhnT1B4zogbNWfiwWZpC5Ujo?= =?us-ascii?Q?D/tE0c+6ARPCeFr/i9g+cwHVHwPtcTcfnO/grvTB8y5nnddmkVZ8zRw56+rr?= =?us-ascii?Q?fp3PfLeCR5QCRYsB6Dphv0DwshO0/wNbQ3c7tsEZvSjBxIHnEHczfCjtwo2u?= =?us-ascii?Q?rnW5df6UYXtA6ps2NFAj4CEI/bQtQuHrDZGuS/X253TKPNWpO9JEVGVuTee8?= =?us-ascii?Q?3p6P5aMxGCZpxveWqkUVUgD5mYlmVbVKz8KZxP0/OLmIz2eyuo6wFamUtWD/?= =?us-ascii?Q?j+NAm3BbRL+2kf/WGKwB5WYh7rXe6lSgVhhRT4F2Ix5BSkFpr5mQRsw5LABq?= =?us-ascii?Q?yJTXK9Jgr+yYdxyU6Dj/McUpJdyIixme9AhE7taR84H5RHy9tAjj4xaCjrkd?= =?us-ascii?Q?y7Psw/rc/aUphf1vghh3hzq0lsOtN7qfGkTp7UO5ZbkzjAw/BZGKeW/l5V9O?= =?us-ascii?Q?c/L7d7jmmxfzezOo89iBiJ9/QipBEQVJgnQjVJDKhNwwJBludvyR0tWufxfF?= =?us-ascii?Q?In24yTZJiRcfyI2uojlSzRefs8ld1r2iH8gDgNBl5kMbOL2Wy4SwL3xxyy/h?= =?us-ascii?Q?NhYSnpDNfW2aTYtMzAvi93ipAvqtIuNoVR0+dk+9WRuz4J38q16Tr05F42d5?= =?us-ascii?Q?trbr9hxQj3C8G/rwlzWDFH8Xtm4vx/F/gz5vfCvt+ursJ3sfbcN1qmT6ZVIL?= =?us-ascii?Q?CwQdQN+GqlmrCgnQ3RQ/kRu40Y9L5QxZr7YSwPBzqzfqQOqpjpBMp7vco3v8?= =?us-ascii?Q?6Lwa454V+LAkz+PLjN5czmpESWx7btw0XT2AVOOYbmaXjnRdxzZ3tspIHwab?= =?us-ascii?Q?Sl/LcalfHaTgbRe8vlujn04GMReE5QKt8MbOWAnjVRbfCOGDTtnLTmFNxUJA?= =?us-ascii?Q?exyXqDDkrxhHI2eplcWhGzr0g8+1t5bDClyzJ7Gpqi6bbKFjyW66RuprsxxQ?= =?us-ascii?Q?3cDe5sDi+W8XTba0sZQjZFJ509e5OMZ/TDrHmvOrMpIOObYptr/sMIcwofOe?= =?us-ascii?Q?a3sMZYVhIvaIieKaI1w7MWMiiZaAvIAYFdy04jSOEch3/5ti5smm35RUp5Lk?= =?us-ascii?Q?FB6+F1WJQwNi7SjoURjPSwSy?= 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: bf2685b4-4bc4-4586-1e5c-08d927033621 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2021 02:48:19.4951 (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: OkfrDLyizfjrWPMv1ui8qp80t9qpQjJgILBq2UegWDPWvYBq5PB4TM8HVS4i73IMiyNoCYCrCjD6TTj1+asAWg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1336 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-2.3 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: Fri, 04 Jun 2021 02:50:04 -0000 >-----Original Message----- >From: Segher Boessenkool >Sent: Friday, June 4, 2021 4:00 AM >To: Liu, Hongtao >Cc: Richard Biener ; GCC Patches patches@gcc.gnu.org> >Subject: Re: [PATCH] Canonicalize (vec_duplicate (not A)) to (not >(vec_duplicate A)). > >On Thu, Jun 03, 2021 at 11:03:43AM +0000, Liu, Hongtao wrote: >> >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 try it out :-) >> >> In simplify_rtx, no simplication occurs, there is just the difference >> between (vec_duplicate (not REG)) and (not (vec_duplicate (REG)). So he= re >tem will only be 0. > >simplify-rtx is used by combine. When you do and+not+splat for example my >suggestion should kick in. Try it out, don't just dismiss it? > Forgive my obtuseness, do you mean try the following changes, if so then th= ere will be no "kick in",=20 temp will be 0, there's no simplification here since it's just the differen= ce between (vec_duplicate (not REG)) and (not (vec_duplicate (REG)). Or maybe you mean something else? @@ -1708,6 +1708,17 @@ simplify_context::simplify_unary_operation_1 (rtx_co= de code, machine_mode mode, #endif break; + /* Canonicalize (vec_duplicate (not A)) to (not (vec_duplicate A)). = */ + case VEC_DUPLICATE: + if (GET_CODE (op) =3D=3D NOT) + { + rtx vec_dup =3D gen_rtx_VEC_DUPLICATE (mode, XEXP (op, 0)); + temp =3D simplify_unary_operation (NOT, mode, vec_dup, GET_MODE (= op)); + if (temp) + return temp; + } + break; + >> Basically we don't know it's a simplication until combine successfully >> split the >> 3->2 instructions (not + broadcast + and to andnot + broadcast), but >> 3->it's pretty awkward >> to do this in combine. > >But you need to do this *before* it is split. That is the whole point. > >> Consider andnot is existed for many backends, I think a canonicalization= is >needed here. > >Please do note that that is not as easy as yoou may think: you need to mak= e >sure nothing ever creates non-canonical code. > >> Maybe we can add insn canonicalization for transforming (and >> (vect_duplicate (not A)) B) to (and (not (duplicate (not A)) B) instead = of >(vec_duplicate (not A)) to (not (vec_duplicate A))? > >I don't understand what this means? I mean let's give a last shot for andnot in case AND like below @ -3702,6 +3702,16 @@ simplify_context::simplify_binary_operation_1 (rtx_co= de code, tem =3D simplify_associative_operation (code, mode, op0, op1); if (tem) return tem; + + if (GET_CODE (op0) =3D=3D VEC_DUPLICATE + && GET_CODE (XEXP (op0, 0)) =3D=3D NOT) + { + rtx vec_dup =3D gen_rtx_VEC_DUPLICATE (GET_MODE (op0), + XEXP (XEXP (op0, 0), 0)); + return simplify_gen_binary (AND, mode, + gen_rtx_NOT (mode, vec_dup), + op1); + } break; > > >Segher