From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by sourceware.org (Postfix) with ESMTPS id 9ECEC3858D20 for ; Wed, 24 May 2023 23:43:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9ECEC3858D20 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=1684971818; x=1716507818; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=KwjCmD03T7kIdpDfamMgF/pGJI1BkeuViTkEl1rQ1Kk=; b=Z/rIImU8rAgl37Amz8uLInN2Epw4/Hcl2CqVqDud157xl/yPelC7uCBX IYEvmyFCGtJoZ7KyEh7ivAIssd+ijoIEDmTtL+IkwYqm10Kf+x1LpNrvI T3SoClldSNN3RneQVmZ1+VvXer0RBU8axoBj96V7qefg2hoFHHVcz9zWN yAf19QpMM4RTyzqP529sx4Jkds4c59Pp0LVLYibmlCnht3BfvcIYBVs2t HlYAPq/7nIYyik4wONneqvLaKnoFPjEOXWvU1fKq3K8aNnhhumZ71bhM8 giXsLnZlzWaHbxUsGJpRHV9865yiYyFKG1yVMCp4/ryq9rYANyldCl2hq Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10720"; a="440085607" X-IronPort-AV: E=Sophos;i="6.00,190,1681196400"; d="scan'208";a="440085607" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2023 16:43:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10720"; a="774431804" X-IronPort-AV: E=Sophos;i="6.00,190,1681196400"; d="scan'208";a="774431804" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga004.fm.intel.com with ESMTP; 24 May 2023 16:43:37 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.2507.23; Wed, 24 May 2023 16:43:37 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 24 May 2023 16:43:36 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 24 May 2023 16:43:36 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) 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.2507.23; Wed, 24 May 2023 16:43:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZtT+EhjHr7De3RcnIRBlxf1UkAAeby08pFvZmMe0kNH6HSAIfNpQ9RfEIMf3WDz5xvtGMkQG3Yr5tl9sjkANqWFH+o2K7FOVNllF+iKOvJ6ZsFR8Ez0mDjLbNqdPZIy22vmsam29vdf9TSdOfLeyasdACQEAiwSKxb0tywqTjl3WkpCJgS1ucQqCEj8wPbrMPdpqnNJWuPXi3tXtqb17GhoOt/A/4r/JVYXsEm+Vsy807uBgNqbuoOauPpGb6usW7tE9dIvxPOcZ4gPjq5NAscKohvlqSN9MhujAbfr9frQBBlNn7xrsIfoFXWwpMeMA3X1LekZsFicNhCAtY9JOzw== 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=KwjCmD03T7kIdpDfamMgF/pGJI1BkeuViTkEl1rQ1Kk=; b=UD82SxmigFGKH08S8kk3DNNTGnE3tr7vstAdFb9unK6f6qk0m0TIauvdN3OuBCdbPdfzqkI13gN/Y4Fe28+1OShguZZemrPsmSwL98oQw7CVZst5zj7/Xy/ox99mF/iPKNmgFekj5malIGEFEpMQMvsnS68qandfD3EOsbV/sNCaMOP6bROtq2MxhANYOB5GIqfCHVjK6rbDTFt3ahVDhLiBC0pD6Sd6l8kjTfAiIWy/eEdBcK8voM6JV5uxG7o7jcl6ZT27VUOPpxVrJMu9GHFECi0+d3Q5dLmrnrIl2z8Zk09elm4gcLM/vT6tFx059/KdPvUnOsanb0z8KqMv8w== 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 SJ0PR11MB5600.namprd11.prod.outlook.com (2603:10b6:a03:3ab::16) by BL3PR11MB5697.namprd11.prod.outlook.com (2603:10b6:208:33c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Wed, 24 May 2023 23:43:29 +0000 Received: from SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::90e7:4b99:e70e:8a43]) by SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::90e7:4b99:e70e:8a43%4]) with mapi id 15.20.6433.015; Wed, 24 May 2023 23:43:29 +0000 From: "Cui, Lili" To: Richard Biener CC: "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH] PR gcc/98350:Handle FMA friendly in reassoc pass Thread-Topic: [PATCH] PR gcc/98350:Handle FMA friendly in reassoc pass Thread-Index: AQHZiL/WH5uJzHTHDUeGW1TtzGIX/69mUXKAgAKMtLA= Date: Wed, 24 May 2023 23:43:29 +0000 Message-ID: References: <20230517130222.2534562-1-lili.cui@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB5600:EE_|BL3PR11MB5697:EE_ x-ms-office365-filtering-correlation-id: ff892491-7f50-4bb3-1b6c-08db5cb0ad4f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FQ2KZLztqQRQeCZ7zgFWecUZlWzLj0q7OpGDcciyY93Avvz1cbghaXZ5ECfVEH38ybNLaJm1WvbjuTNarQ7zm7HWv0afshIQzDaqFUCYvZO1zvKacaef88BaV8V8O5PmmwtyAcz7p9jcu8YAFk/BBwlNt+2VVT4mQ2787hvWzSgslrsHH/KMU19FFCcsHdtQ38gsT2iKHawTIVaPUIBiBi9lh4CXpI/ynlIiPfO+eKXyLnbfHALX2DYp092U23camJYra4GTpukXwesEuJMbAGIbTGjnsSDf6513Ta1LgubuXrct+TDMA14y0vkenSDJPMPFzpPlHFGchFxtR8/mJ+Z4hhWxWUUjGXVIhTSs0un2z0wDRuAfv6XavR6pRXVlftcxgH9lQv7riDTTFFkHgLdTAIPrCo9rfTCniluFX9DN4tz8icrxxVZZ/o+7L7iqxRtP6aRULY6do3G/fWtAN/ioCIOAXCyTCy0qM2lnSJt0KFYzwdbOTGWGOxvyQ+Z4yNbtOmyDq05s8A1Jt5tEAYt4f2h/HG2JZRSdrsDAik3CmT+7Ioc6OYxKnN/5VKmkHFMvLTXPZddx6CacB+9Sy68JMejuBbf/56YdfmLkN2LuzzsVgZpwc0rIm+H7XBgp x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5600.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(39860400002)(376002)(396003)(346002)(366004)(451199021)(478600001)(7696005)(83380400001)(38070700005)(33656002)(86362001)(26005)(4326008)(6916009)(186003)(6506007)(9686003)(71200400001)(316002)(2906002)(38100700002)(82960400001)(8936002)(122000001)(41300700001)(66446008)(55016003)(66476007)(66556008)(8676002)(64756008)(66946007)(52536014)(76116006)(5660300002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZTRIbGZKK1hYQ3pocTdZK08zVXhDU2hZSGMyQ09xK3YrN091MU5IZDEyNTNk?= =?utf-8?B?ekRuTnFhT1VEMDFpeitZa2xNYmwwRVZFa3BGQlhOY0VwLys3QzRFQWk3ZFNL?= =?utf-8?B?Z0VkcE1NSnltYjZQSkVYWWRZVlZ6UG1VNUhRUnhpWS92SkJpNlVDTFNlWHNj?= =?utf-8?B?ZnJtZWZxdkROa1pvQmgwYloyYlI5TGFQbzFxL1dzUHZ2cG1uTkNTbG14dVBp?= =?utf-8?B?SU5pcS81dklXQzFJTmQxYmZ1ZVd2enR1Ujh3bWtyaFY2bXZuRkpHL1NzSExp?= =?utf-8?B?WmViVlBVK1ZVZUYwandjbWxmWkRVTlBocDNURlg3azJpQWplSDFuNVo2Mk1L?= =?utf-8?B?ZUdMcXJjYUpDY2FaSjJYZkpkWU5SMlpiNDZJTVFRRDV0QzBMZ1duMVJaNzhp?= =?utf-8?B?WFhkQ3pOcWxFWU9rSjdqSitLTjJKZkhYU3d0UzNGMW1xamNkYmp3ZW9OMEVQ?= =?utf-8?B?QnBUNFg2bHhjS1pjZ0ZQTjdURitrMWJXNEJ6RGpYK1hvT1BOWWdUeXFSa05U?= =?utf-8?B?aFZiOGZ3aFgwVnFsZmVqbWxLaU5oeDRTeHBmWjZZNW9rckxXWXNiSjJva0FJ?= =?utf-8?B?dHM4bFVIRVNZNFNiMVVham9VMm9aYXdISlVWNlR2eHJFZVNlWEc4NVZ6WGVP?= =?utf-8?B?UW52aGNBTTEwMHMzLy92SW9MeTRzOFhGV0FyQk82OEFibTBJNUNsOUQyYi9B?= =?utf-8?B?ZFN4UklpZGU3RENvSmlmemZrSjIvR0l6Zmp5YzdQM213elRsT3NmWTJuZUVN?= =?utf-8?B?WmcwM3JCdDVaaEtCQm12c0xCMWlha1BuRXl2STV0ckFIMHFrdXVoL2d3MU9h?= =?utf-8?B?R3c3enVENjlNMDdlV2JOWk5DMXV5WitrYVArYkdiWmFCQ1ZaSW9ub2NCT25s?= =?utf-8?B?TEtrYW1SK1lsZ291NitSNDUwaHB3MzFzV2tjdXloOHd2ZkVyOE9xUGk0Q0lE?= =?utf-8?B?V01HeFpMMU5BZW1nK3g3b3BPeEZkV3pXc2pMU2NibFN0SGp1MStHT2lCNDBl?= =?utf-8?B?NGVwaDZwekRPRkR1NHBMa1JHdHFjUVlZdjhFTG1EeWduME9xdExvcUp6MUpK?= =?utf-8?B?anFUd3djRDUrNUc4ZldWYTIzUzlxUXN6UjU2WXZXQ2lNR0I2a2hRblR6QXc0?= =?utf-8?B?OXFqYjBGZlk4MmtBaWZndXVnUG9Ca2lBcjhCV1VqNnE4cFg4d1dCaklRQ0Fp?= =?utf-8?B?WTFzWnNmMmhKcDJmcGxoa3gxMWVhejlsZmkwc3NFaXczQ0c0dTEwRFJtZUhk?= =?utf-8?B?SzdRNHh3bWU4cWZ0WlBMTDAvWDlVd1NtSlQyV2xHUjFCbElZaHduWm94Y0FC?= =?utf-8?B?K0xmMUlwZjRwSHA3ODFlaU1sZC8zbFpvc2xUblBoODhXaFQ1MlZ3NncyNlFi?= =?utf-8?B?WW1MNkhVcW80M2hVSFJ6dnBlZDBSNFRZK2JhRXZBaHVsc2tuVW1qWSs3RllY?= =?utf-8?B?ZTgrVml5akhiVWRoZ0dFbXRSeVVrNDg1cEQ3U0tJZzVvODczRVpQeHFHK01o?= =?utf-8?B?SS9Wa0dVYlVwNkZmcmdMK3FBY0VHeWE0NUQ3VnhoSWJkWWxGTUVuTytxR3NB?= =?utf-8?B?YUJXV21RMnFTNUVRMUNKdWJ4aXNzQXpXNUtpemdMUURCbjROZTk1bGROK1lP?= =?utf-8?B?N2ZualA0RFVYRnJZekxGKzFqa2E1d0UrMHhvejRxMHVmdXQzeCsxL1J5VW16?= =?utf-8?B?bzRmL2tOM042QVlKeVMrckZIK0ZYRGREY0hrMW5sZi9rOFBZbUV4NU5UYXpi?= =?utf-8?B?Z25YVDd2eUZlOVNvaDQ0QW4zK1FKMUtZSVdrczh0SmhrOWRXa0VFcUpXTXAr?= =?utf-8?B?eGI5VjhHVWVlWXdBSlNvZTJEYTUzQlJzYUZsWXVlK3Bsdk9PT1dVL1NlK0lL?= =?utf-8?B?WkNQUjZRc1h4Nm11bDlobHBucldtV2NQSm5QWUNPWW1FNk1ZVEZqb0ZaS0dT?= =?utf-8?B?aVdUQnlJZHhISTR1NWI4NU16MlF2aFI2aHF5T0lLUXlyUUFXZVVsVm1qREVM?= =?utf-8?B?OGh5OWxldUxmUlhkSTBHL09DTklSZ1h0TGNSUncyTHgvU1kzYjVJMGpBN3BQ?= =?utf-8?B?MmJLV0dod3F6aUV1RzlKSHU4dTR3TEhaTlhzTHRrZmZLMjVJajM4QnhacFpN?= =?utf-8?Q?YobRH3EPlvKa5ULOCyroJTJdO?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5600.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ff892491-7f50-4bb3-1b6c-08db5cb0ad4f X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2023 23:43:29.4296 (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: UHGqvda3nJ6O1TXrIxbNT43crRL9iwnMcEyvqk9vTbLWQGeddshYZAbWy6VJx4peyPagPOZd6yCzt+TTKkgOAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR11MB5697 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-5.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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: PiA+ICtyZXdyaXRlX2V4cHJfdHJlZV9wYXJhbGxlbCAoZ2Fzc2lnbiAqc3RtdCwgaW50IHdpZHRo LCBib29sIGhhc19mbWEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB2ZWM8b3BlcmFuZF9lbnRyeSAqPg0KPiA+ICsmb3BzKQ0KPiA+ICB7DQo+ID4g ICAgZW51bSB0cmVlX2NvZGUgb3Bjb2RlID0gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoc3RtdCk7 DQo+ID4gICAgaW50IG9wX251bSA9IG9wcy5sZW5ndGggKCk7DQo+ID4gQEAgLTU0ODMsMTAgKzU0 OTQsMTEgQEAgcmV3cml0ZV9leHByX3RyZWVfcGFyYWxsZWwgKGdhc3NpZ24gKnN0bXQsIGludA0K PiB3aWR0aCwNCj4gPiAgICBpbnQgc3RtdF9udW0gPSBvcF9udW0gLSAxOw0KPiA+ICAgIGdpbXBs ZSAqKnN0bXRzID0gWEFMTE9DQVZFQyAoZ2ltcGxlICosIHN0bXRfbnVtKTsNCj4gPiAgICBpbnQg b3BfaW5kZXggPSBvcF9udW0gLSAxOw0KPiA+IC0gIGludCBzdG10X2luZGV4ID0gMDsNCj4gPiAt ICBpbnQgcmVhZHlfc3RtdHNfZW5kID0gMDsNCj4gPiAtICBpbnQgaSA9IDA7DQo+ID4gLSAgZ2lt cGxlICpzdG10MSA9IE5VTEwsICpzdG10MiA9IE5VTEw7DQo+ID4gKyAgaW50IHdpZHRoX2NvdW50 ID0gd2lkdGg7DQo+ID4gKyAgaW50IGkgPSAwLCBqID0gMDsNCj4gPiArICB0cmVlIHRtcF9vcFsy XSwgb3AxOw0KPiA+ICsgIG9wZXJhbmRfZW50cnkgKm9lOw0KPiA+ICsgIGdpbXBsZSAqc3RtdDEg PSBOVUxMOw0KPiA+ICAgIHRyZWUgbGFzdF9yaHMxID0gZ2ltcGxlX2Fzc2lnbl9yaHMxIChzdG10 KTsNCj4gPg0KPiA+ICAgIC8qIFdlIHN0YXJ0IGV4cHJlc3Npb24gcmV3cml0aW5nIGZyb20gdGhl IHRvcCBzdGF0ZW1lbnRzLg0KPiA+IEBAIC01NDk2LDkxICs1NTA4LDg0IEBAIHJld3JpdGVfZXhw cl90cmVlX3BhcmFsbGVsIChnYXNzaWduICpzdG10LCBpbnQNCj4gd2lkdGgsDQo+ID4gICAgZm9y IChpID0gc3RtdF9udW0gLSAyOyBpID49IDA7IGktLSkNCj4gPiAgICAgIHN0bXRzW2ldID0gU1NB X05BTUVfREVGX1NUTVQgKGdpbXBsZV9hc3NpZ25fcmhzMSAoc3RtdHNbaSsxXSkpOw0KPiA+DQo+ ID4gLSAgZm9yIChpID0gMDsgaSA8IHN0bXRfbnVtOyBpKyspDQo+ID4gKyAgLyogQnVpbGQgcGFy YWxsZWwgZGVwZW5kZW5jeSBjaGFpbiBhY2NvcmRpbmcgdG8gd2lkdGguICAqLyAgZm9yIChpDQo+ ID4gKyA9IDA7IGkgPCB3aWR0aDsgaSsrKQ0KPiA+ICAgICAgew0KPiA+IC0gICAgICB0cmVlIG9w MSwgb3AyOw0KPiA+IC0NCj4gPiAtICAgICAgLyogRGV0ZXJtaW5lIHdoZXRoZXIgd2Ugc2hvdWxk IHVzZSByZXN1bHRzIG9mDQo+ID4gLSAgICAgICAgYWxyZWFkeSBoYW5kbGVkIHN0YXRlbWVudHMg b3Igbm90LiAgKi8NCj4gPiAtICAgICAgaWYgKHJlYWR5X3N0bXRzX2VuZCA9PSAwDQo+ID4gLSAg ICAgICAgICYmIChpIC0gc3RtdF9pbmRleCA+PSB3aWR0aCB8fCBvcF9pbmRleCA8IDEpKQ0KPiA+ IC0gICAgICAgcmVhZHlfc3RtdHNfZW5kID0gaTsNCj4gPiAtDQo+ID4gLSAgICAgIC8qIE5vdyB3 ZSBjaG9vc2Ugb3BlcmFuZHMgZm9yIHRoZSBuZXh0IHN0YXRlbWVudC4gIE5vbiB6ZXJvDQo+ID4g LSAgICAgICAgdmFsdWUgaW4gcmVhZHlfc3RtdHNfZW5kIG1lYW5zIGhlcmUgdGhhdCB3ZSBzaG91 bGQgdXNlDQo+ID4gLSAgICAgICAgdGhlIHJlc3VsdCBvZiBhbHJlYWR5IGdlbmVyYXRlZCBzdGF0 ZW1lbnRzIGFzIG5ldyBvcGVyYW5kLiAgKi8NCj4gPiAtICAgICAgaWYgKHJlYWR5X3N0bXRzX2Vu ZCA+IDApDQo+ID4gLSAgICAgICB7DQo+ID4gLSAgICAgICAgIG9wMSA9IGdpbXBsZV9hc3NpZ25f bGhzIChzdG10c1tzdG10X2luZGV4KytdKTsNCj4gPiAtICAgICAgICAgaWYgKHJlYWR5X3N0bXRz X2VuZCA+IHN0bXRfaW5kZXgpDQo+ID4gLSAgICAgICAgICAgb3AyID0gZ2ltcGxlX2Fzc2lnbl9s aHMgKHN0bXRzW3N0bXRfaW5kZXgrK10pOw0KPiA+IC0gICAgICAgICBlbHNlIGlmIChvcF9pbmRl eCA+PSAwKQ0KPiA+IC0gICAgICAgICAgIHsNCj4gPiAtICAgICAgICAgICAgIG9wZXJhbmRfZW50 cnkgKm9lID0gb3BzW29wX2luZGV4LS1dOw0KPiA+IC0gICAgICAgICAgICAgc3RtdDIgPSBvZS0+ c3RtdF90b19pbnNlcnQ7DQo+ID4gLSAgICAgICAgICAgICBvcDIgPSBvZS0+b3A7DQo+ID4gLSAg ICAgICAgICAgfQ0KPiA+IC0gICAgICAgICBlbHNlDQo+ID4gLSAgICAgICAgICAgew0KPiA+IC0g ICAgICAgICAgICAgZ2NjX2Fzc2VydCAoc3RtdF9pbmRleCA8IGkpOw0KPiA+IC0gICAgICAgICAg ICAgb3AyID0gZ2ltcGxlX2Fzc2lnbl9saHMgKHN0bXRzW3N0bXRfaW5kZXgrK10pOw0KPiA+IC0g ICAgICAgICAgIH0NCj4gPiArICAgICAgLyogICAqLw0KPiANCj4gZW1wdHkgY29tbWVudD8NCg0K QWRkZWQgaXQsIHRoYW5rcy4NCg0KPiANCj4gPiArICAgICAgaWYgKG9wX2luZGV4ID4gMSAmJiAh aGFzX2ZtYSkNCj4gPiArICAgICAgIHN3YXBfb3BzX2Zvcl9iaW5hcnlfc3RtdCAob3BzLCBvcF9p bmRleCAtIDIpOw0KPiA+DQo+ID4gLSAgICAgICAgIGlmIChzdG10X2luZGV4ID49IHJlYWR5X3N0 bXRzX2VuZCkNCj4gPiAtICAgICAgICAgICByZWFkeV9zdG10c19lbmQgPSAwOw0KPiA+IC0gICAg ICAgfQ0KPiA+IC0gICAgICBlbHNlDQo+ID4gKyAgICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKysp DQo+ID4gICAgICAgICB7DQo+ID4gLSAgICAgICAgIGlmIChvcF9pbmRleCA+IDEpDQo+ID4gLSAg ICAgICAgICAgc3dhcF9vcHNfZm9yX2JpbmFyeV9zdG10IChvcHMsIG9wX2luZGV4IC0gMik7DQo+ ID4gLSAgICAgICAgIG9wZXJhbmRfZW50cnkgKm9lMiA9IG9wc1tvcF9pbmRleC0tXTsNCj4gPiAt ICAgICAgICAgb3BlcmFuZF9lbnRyeSAqb2UxID0gb3BzW29wX2luZGV4LS1dOw0KPiA+IC0gICAg ICAgICBvcDIgPSBvZTItPm9wOw0KPiA+IC0gICAgICAgICBzdG10MiA9IG9lMi0+c3RtdF90b19p bnNlcnQ7DQo+ID4gLSAgICAgICAgIG9wMSA9IG9lMS0+b3A7DQo+ID4gLSAgICAgICAgIHN0bXQx ID0gb2UxLT5zdG10X3RvX2luc2VydDsNCj4gPiArICAgICAgICAgZ2NjX2Fzc2VydCAob3BfaW5k ZXggPj0gMCk7DQo+ID4gKyAgICAgICAgIG9lID0gb3BzW29wX2luZGV4LS1dOw0KPiA+ICsgICAg ICAgICB0bXBfb3Bbal0gPSBvZS0+b3A7DQo+ID4gKyAgICAgICAgIC8qIElmIHRoZSBzdG10IHRo YXQgZGVmaW5lcyBvcGVyYW5kIGhhcyB0byBiZSBpbnNlcnRlZCwgaW5zZXJ0IGl0DQo+ID4gKyAg ICAgICAgICAgIGJlZm9yZSB0aGUgdXNlLiAgKi8NCj4gPiArICAgICAgICAgc3RtdDEgPSBvZS0+ c3RtdF90b19pbnNlcnQ7DQo+ID4gKyAgICAgICAgIGlmIChzdG10MSkNCj4gPiArICAgICAgICAg ICBpbnNlcnRfc3RtdF9iZWZvcmVfdXNlIChzdG10c1tpXSwgc3RtdDEpOw0KPiA+ICsgICAgICAg ICBzdG10MSA9IE5VTEw7DQo+ID4gICAgICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgICAvKiBJZiB3 ZSBlbWl0IHRoZSBsYXN0IHN0YXRlbWVudCB0aGVuIHdlIHNob3VsZCBwdXQNCj4gPiAtICAgICAg ICBvcGVyYW5kcyBpbnRvIHRoZSBsYXN0IHN0YXRlbWVudC4gIEl0IHdpbGwgYWxzbw0KPiA+IC0g ICAgICAgIGJyZWFrIHRoZSBsb29wLiAgKi8NCj4gPiAtICAgICAgaWYgKG9wX2luZGV4IDwgMCAm JiBzdG10X2luZGV4ID09IGkpDQo+ID4gLSAgICAgICBpID0gc3RtdF9udW0gLSAxOw0KPiA+ICsg ICAgICBzdG10c1tpXSA9IGJ1aWxkX2FuZF9hZGRfc3VtIChUUkVFX1RZUEUgKGxhc3RfcmhzMSks IHRtcF9vcFsxXSwNCj4gdG1wX29wWzBdLCBvcGNvZGUpOw0KPiA+ICsgICAgICBnaW1wbGVfc2V0 X3Zpc2l0ZWQgKHN0bXRzW2ldLCB0cnVlKTsNCj4gPg0KPiA+ICAgICAgICBpZiAoZHVtcF9maWxl ICYmIChkdW1wX2ZsYWdzICYgVERGX0RFVEFJTFMpKQ0KPiA+ICAgICAgICAgew0KPiA+IC0gICAg ICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJUcmFuc2Zvcm1pbmcgIik7DQo+ID4gKyAgICAgICAg IGZwcmludGYgKGR1bXBfZmlsZSwgIiBpbnRvICIpOw0KPiA+ICAgICAgICAgICBwcmludF9naW1w bGVfc3RtdCAoZHVtcF9maWxlLCBzdG10c1tpXSwgMCk7DQo+ID4gICAgICAgICB9DQo+ID4gKyAg ICB9DQo+ID4NCj4gPiAtICAgICAgLyogSWYgdGhlIHN0bXQgdGhhdCBkZWZpbmVzIG9wZXJhbmQg aGFzIHRvIGJlIGluc2VydGVkLCBpbnNlcnQgaXQNCj4gPiAtICAgICAgICBiZWZvcmUgdGhlIHVz ZS4gICovDQo+ID4gLSAgICAgIGlmIChzdG10MSkNCj4gPiAtICAgICAgIGluc2VydF9zdG10X2Jl Zm9yZV91c2UgKHN0bXRzW2ldLCBzdG10MSk7DQo+ID4gLSAgICAgIGlmIChzdG10MikNCj4gPiAt ICAgICAgIGluc2VydF9zdG10X2JlZm9yZV91c2UgKHN0bXRzW2ldLCBzdG10Mik7DQo+ID4gLSAg ICAgIHN0bXQxID0gc3RtdDIgPSBOVUxMOw0KPiA+IC0NCj4gPiAtICAgICAgLyogV2Uga2VlcCBv cmlnaW5hbCBzdGF0ZW1lbnQgb25seSBmb3IgdGhlIGxhc3Qgb25lLiAgQWxsDQo+ID4gLSAgICAg ICAgb3RoZXJzIGFyZSByZWNyZWF0ZWQuICAqLw0KPiA+IC0gICAgICBpZiAoaSA9PSBzdG10X251 bSAtIDEpDQo+ID4gKyAgZm9yIChpID0gd2lkdGg7IGkgPCBzdG10X251bTsgaSsrKQ0KPiA+ICsg ICAgew0KPiA+ICsgICAgICAvKiBXZSBrZWVwIG9yaWdpbmFsIHN0YXRlbWVudCBvbmx5IGZvciB0 aGUgbGFzdCBvbmUuICBBbGwgb3RoZXJzIGFyZQ0KPiA+ICsgICAgICAgIHJlY3JlYXRlZC4gICov DQo+ID4gKyAgICAgIGlmICggb3BfaW5kZXggPCAwKQ0KPiA+ICAgICAgICAgew0KPiA+IC0gICAg ICAgICBnaW1wbGVfYXNzaWduX3NldF9yaHMxIChzdG10c1tpXSwgb3AxKTsNCj4gPiAtICAgICAg ICAgZ2ltcGxlX2Fzc2lnbl9zZXRfcmhzMiAoc3RtdHNbaV0sIG9wMik7DQo+ID4gLSAgICAgICAg IHVwZGF0ZV9zdG10IChzdG10c1tpXSk7DQo+ID4gKyAgICAgICAgIGlmICh3aWR0aF9jb3VudCA9 PSAyKQ0KPiA+ICsgICAgICAgICAgIHsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAvKiBXZSBr ZWVwIG9yaWdpbmFsIHN0YXRlbWVudCBvbmx5IGZvciB0aGUgbGFzdCBvbmUuICBBbGwNCj4gPiAr ICAgICAgICAgICAgICAgIG90aGVycyBhcmUgcmVjcmVhdGVkLiAgKi8NCj4gPiArICAgICAgICAg ICAgIGdpbXBsZV9hc3NpZ25fc2V0X3JoczEgKHN0bXRzW2ldLCBnaW1wbGVfYXNzaWduX2xocyAo c3RtdHNbaS0xXSkpOw0KPiA+ICsgICAgICAgICAgICAgZ2ltcGxlX2Fzc2lnbl9zZXRfcmhzMiAo c3RtdHNbaV0sIGdpbXBsZV9hc3NpZ25fbGhzIChzdG10c1tpLTJdKSk7DQo+ID4gKyAgICAgICAg ICAgICB1cGRhdGVfc3RtdCAoc3RtdHNbaV0pOw0KPiA+ICsgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgIHsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBz dG10c1tpXSA9DQo+ID4gKyAgICAgICAgICAgICAgIGJ1aWxkX2FuZF9hZGRfc3VtIChUUkVFX1RZ UEUgKGxhc3RfcmhzMSksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn aW1wbGVfYXNzaWduX2xocyAoc3RtdHNbaS13aWR0aF9jb3VudF0pLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2ltcGxlX2Fzc2lnbl9saHMgKHN0bXRzW2ktd2lkdGhf Y291bnQrMV0pLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl KTsNCj4gPiArICAgICAgICAgICAgIGdpbXBsZV9zZXRfdmlzaXRlZCAoc3RtdHNbaV0sIHRydWUp Ow0KPiA+ICsgICAgICAgICAgICAgd2lkdGhfY291bnQtLTsNCj4gPiArICAgICAgICAgICB9DQo+ ID4gICAgICAgICB9DQo+ID4gICAgICAgIGVsc2UNCj4gPiAgICAgICAgIHsNCj4gPiAtICAgICAg ICAgc3RtdHNbaV0gPSBidWlsZF9hbmRfYWRkX3N1bSAoVFJFRV9UWVBFIChsYXN0X3JoczEpLCBv cDEsIG9wMiwNCj4gb3Bjb2RlKTsNCj4gPiArICAgICAgICAgLyogQXR0YWNoIHRoZSByZXN0IG9m IHRoZSBvcHMgdG8gdGhlIHBhcmFsbGVsIGRlcGVuZGVuY3kgY2hhaW4uICAqLw0KPiA+ICsgICAg ICAgICBvZSA9IG9wc1tvcF9pbmRleC0tXTsNCj4gPiArICAgICAgICAgb3AxID0gb2UtPm9wOw0K PiA+ICsgICAgICAgICBzdG10MSA9IG9lLT5zdG10X3RvX2luc2VydDsNCj4gPiArICAgICAgICAg aWYgKHN0bXQxKQ0KPiA+ICsgICAgICAgICAgIGluc2VydF9zdG10X2JlZm9yZV91c2UgKHN0bXRz W2ldLCBzdG10MSk7DQo+ID4gKyAgICAgICAgIHN0bXQxID0gTlVMTDsNCj4gPiArICAgICAgICAg c3RtdHNbaV0gPSBidWlsZF9hbmRfYWRkX3N1bSAoVFJFRV9UWVBFIChsYXN0X3JoczEpLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW1wbGVfYXNzaWduX2xo cyAoc3RtdHNbaS13aWR0aF0pLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcDEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9wY29kZSk7DQo+ID4gICAgICAgICAgIGdpbXBsZV9zZXRfdmlzaXRlZCAoc3RtdHNbaV0sIHRy dWUpOw0KPiA+ICAgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAgaWYgKGR1bXBfZmlsZSAmJiAo ZHVtcF9mbGFncyAmIFRERl9ERVRBSUxTKSkNCj4gPiAgICAgICAgIHsNCj4gPiAgICAgICAgICAg ZnByaW50ZiAoZHVtcF9maWxlLCAiIGludG8gIik7DQo+ID4gICAgICAgICAgIHByaW50X2dpbXBs ZV9zdG10IChkdW1wX2ZpbGUsIHN0bXRzW2ldLCAwKTsNCj4gPiAgICAgICAgIH0NCj4gPiAgICAg IH0NCj4gPiAtDQo+IA0KPiBJJ3ZlIGxvb2tlZCB0aHJlZSB0aW1lcyBidXQgZGlkbid0IGZpbmQg YSB1c2Ugb2YgJ2hhc19mbWEnPw0KDQpJdCdzIGxvY2F0ZWQgYWZ0ZXIgeW91ciBmaXJzdCBjb21t ZW50LCBJZiB0aGUgY2hhaW4gaGFzIEZBTSwgd2UgZG8gbm90IHN3YXAgdHdvIG9wZXJhbmRzDQoN CiAgaWYgKG9wX2luZGV4ID4gMSAmJiAhaGFzX2ZtYSkNCiAgICBzd2FwX29wc19mb3JfYmluYXJ5 X3N0bXQgKG9wcywgb3BfaW5kZXggLSAyKTsNCg0KPiA+ICAgIHJlbW92ZV92aXNpdGVkX3N0bXRf Y2hhaW4gKGxhc3RfcmhzMSk7ICB9DQo+ID4NCj4gPiBAQCAtNjY0OSw2ICs2NjU0LDc2IEBAIHRy YW5zZm9ybV9zdG10X3RvX211bHRpcGx5DQo+IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLCBn aW1wbGUgKnN0bXQsDQo+ID4gICAgICB9DQo+ID4gIH0NCj4gPg0KPiA+ICsvKiBSZWFycmFuZ2Ug b3BzIHRvIGdlbmVyYXRlIG1vcmUgRk1BIHdoZW4gdGhlIGNoYWluIG1heSBoYXMgbW9yZQ0KPiB0 aGFuIDIgZm1hcy4NCj4gDQo+IG1heSBoYXZlDQo+IA0KRG9uZS4NCg0KPiA+ICsgICBQdXQgbm8t bXVsdCBvcHMgYW5kIG11bHQgb3BzIGFsdGVybmF0ZWx5IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVl LCB3aGljaA0KPiBpcw0KPiA+ICsgICBjb25kdWNpdmUgdG8gZ2VuZXJhdGluZyBtb3JlIGZtYSBh bmQgcmVkdWNpbmcgdGhlIGxvc3Mgb2YgRk1BIHdoZW4NCj4gYnJlYWtpbmcNCj4gPiArICAgdGhl IGNoYWluLg0KPiA+ICsgICBFLmcuDQo+ID4gKyAgIGEgKiBiICsgYyAqIGQgKyBlIGdlbmVyYXRl czoNCj4gPiArDQo+ID4gKyAgIF80ICA9IGNfOShEKSAqIGRfMTAoRCk7DQo+ID4gKyAgIF8xMiA9 IC5GTUEgKGFfNyhEKSwgYl84KEQpLCBfNCk7DQo+ID4gKyAgIF8xMSA9IGVfNihEKSArIF8xMjsN Cj4gPiArDQo+ID4gKyAgIFJ0ZWFycmFuZ2Ugb3BzIHRvIC0+IGUgKyBhICogYiArIGMgKiBkIGdl bmVyYXRlczoNCj4gDQo+IFJlYXJyYW5nZQ0KPiANCkRvbmUuDQoNCj4gPiArDQo+ID4gKyAgIF80 ICA9IC5GTUEgKGNfNyhEKSwgZF84KEQpLCBfMyk7DQo+ID4gKyAgIF8xMSA9IC5GTUEgKGFfNShE KSwgYl82KEQpLCBfNCk7DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgYm9vbA0KPiA+ICtyYW5rX29w c19mb3JfZm1hICh2ZWM8b3BlcmFuZF9lbnRyeSAqPiAqb3BzKSB7DQo+ID4gKyAgb3BlcmFuZF9l bnRyeSAqb2U7DQo+ID4gKyAgdW5zaWduZWQgaW50IGk7DQo+ID4gKyAgdW5zaWduZWQgaW50IG9w c19sZW5ndGggPSBvcHMtPmxlbmd0aCAoKTsNCj4gPiArICBhdXRvX3ZlYzxvcGVyYW5kX2VudHJ5 ICo+IG9wc19tdWx0Ow0KPiA+ICsgIGF1dG9fdmVjPG9wZXJhbmRfZW50cnkgKj4gb3BzX290aGVy czsNCj4gPiArDQo+ID4gKyAgRk9SX0VBQ0hfVkVDX0VMVCAoKm9wcywgaSwgb2UpDQo+ID4gKyAg ICB7DQo+ID4gKyAgICAgIGlmIChUUkVFX0NPREUgKG9lLT5vcCkgPT0gU1NBX05BTUUpDQo+ID4g KyAgICAgICB7DQo+ID4gKyAgICAgICAgIGdpbXBsZSAqZGVmX3N0bXQgPSBTU0FfTkFNRV9ERUZf U1RNVCAob2UtPm9wKTsNCj4gPiArICAgICAgICAgaWYgKGlzX2dpbXBsZV9hc3NpZ24gKGRlZl9z dG10KQ0KPiA+ICsgICAgICAgICAgICAgJiYgZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoZGVmX3N0 bXQpID09IE1VTFRfRVhQUikNCj4gPiArICAgICAgICAgICBvcHNfbXVsdC5zYWZlX3B1c2ggKG9l KTsNCj4gPiArICAgICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgIG9wc19vdGhlcnMuc2FmZV9w dXNoIChvZSk7DQo+ID4gKyAgICAgICB9DQo+ID4gKyAgICAgIGVsc2UNCj4gPiArICAgICAgIG9w c19vdGhlcnMuc2FmZV9wdXNoIChvZSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgLyogV2hlbiBvcHNf bXVsdC5sZW5ndGggPT0gMiwgbGlrZSB0aGUgZm9sbG93aW5nIGNhc2UsDQo+ID4gKw0KPiA+ICsg ICAgIGEgKiBiICsgYyAqIGQgKyBlLg0KPiA+ICsNCj4gPiArICAgICB3ZSBuZWVkIHRvIHJlYXJy YW5nZSB0aGUgb3BzLg0KPiA+ICsNCj4gPiArICAgICBQdXR0aW5nIG9wcyB0aGF0IG5vdCBkZWYg ZnJvbSBtdWx0IGluIGZyb250IGNhbiBnZW5lcmF0ZSBtb3JlDQo+ID4gKyBmbWFzLiAgKi8gIGlm IChvcHNfbXVsdC5sZW5ndGggKCkgPj0gMikNCj4gPiArICAgIHsNCj4gPiArICAgICAgLyogSWYg YWxsIG9wcyBhcmUgZGVmaW5lZCB3aXRoIG11bHQsIHdlIGRvbid0IG5lZWQgdG8gcmVhcnJhbmdl IHRoZW0uDQo+ICovDQo+ID4gKyAgICAgIGlmIChvcHNfbXVsdC5sZW5ndGggKCkgIT0gb3BzX2xl bmd0aCkNCj4gDQo+IHVzZSAmJiB3aXRoIHRoZSBwcmV2aW91cyBjb25kaXRpb24uDQo+IA0KRG9u ZS4NCg0KPiA+ICsgICAgICAgew0KPiA+ICsgICAgICAgICAvKiBQdXQgbm8tbXVsdCBvcHMgYW5k IG11bHQgb3BzIGFsdGVybmF0ZWx5IGF0IHRoZSBlbmQgb2YgdGhlDQo+ID4gKyAgICAgICAgICAg IHF1ZXVlLCB3aGljaCBpcyBjb25kdWNpdmUgdG8gZ2VuZXJhdGluZyBtb3JlIGZtYSBhbmQgcmVk dWNpbmcNCj4gdGhlDQo+ID4gKyAgICAgICAgICAgIGxvc3Mgb2YgRk1BIHdoZW4gYnJlYWtpbmcg dGhlIGNoYWluLiAgKi8NCj4gPiArICAgICAgICAgb3BzLT50cnVuY2F0ZSAoMCk7DQo+ID4gKyAg ICAgICAgIG9wcy0+c3BsaWNlIChvcHNfbXVsdCk7DQo+ID4gKyAgICAgICAgIGludCBqLCBvcGlu ZGV4ID0gb3BzLT5sZW5ndGggKCk7DQo+ID4gKyAgICAgICAgIGludCBvdGhlcnNfbGVuZ3RoID0g b3BzX290aGVycy5sZW5ndGgoKTsNCj4gPiArICAgICAgICAgZm9yIChqID0gMDsgaiA8IG90aGVy c19sZW5ndGg7IGorKykNCj4gPiArICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICBvZSA9 IG9wc19vdGhlcnMucG9wICgpOw0KPiA+ICsgICAgICAgICAgICAgb3BzLT5zYWZlX2luc2VydCAo b3BpbmRleCwgb2UpOw0KPiANCj4gdGhhdCdzIHF1YWRyYXRpYyBhcyBpdCBuZWVkcyB0byBtb3Zl IG9wcy4gIEFzIHNhaWQgcHJldmlvdXNseSB3ZSBrbm93IHRoYXQNCj4gJ29wcycgaGFzIGVub3Vn aCByb29tIGFuZCB5b3UgY2FuIHVzZSB0aGUgcXVpY2tfIChvciBub24tc2FmZV8pIHZhcmlhbnRz IG9mDQo+IHRoZSBBUElzIG9uIGl0Lg0KPiANCkRvbmUsIHRoYW5rcy4NCg0KUmVnYXJkcywNCkxp bGkuDQoNCj4gT3RoZXJ3aXNlIGxvb2tzIGdvb2QgdG8gbWUuDQo+IA0KPiBUaGFua3MsDQo+IFJp Y2hhcmQuDQo+IA0K