From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgsg1.qq.com (smtpbgsg1.qq.com [54.254.200.92]) by sourceware.org (Postfix) with ESMTPS id DF56A3858D20; Fri, 11 Aug 2023 07:28:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DF56A3858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp67t1691738923tnehgc78 Received: from LAPTOP-EPITNQBU ( [113.104.212.2]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 11 Aug 2023 15:28:42 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: IcCSTr/hHjMuQ4HpPreLFw2hMCDEfuLSEWw2CgGIDQ5jGN2ALf0xPEpnqbg7q /Wb2SrfFD8O/bDubjH2ZOzxe5SLUM39/r1GDIMTeRZLi3kqKgAn62mi5UDr3IZAYgtB2PJt 8ucI9LIxNvwT/2CKwcHkSmaav0R1zRfHS+uMC9srrHLjJ0m55jjQKIvD6fCruGOynAQM89J jw2x85DzY18iKAOh9+DW0J0BBGUsA2M86gmfZ9yXKuSAwHg1DETmEPZ5Wp2xOS8zomFzso5 cMPHgOfdhnUJiXHJXWMn1eIb+WDj0QGo5QgokzeA30f0SfFRkSpOU/0E6rfhM4DGoBRRou4 ztB1KIPfPuVLKBJIZoWuWFK3O8pav3dVAfA+HtgPhLOJc76ENsO2sq/KEWHImDgPA+SJmlO KtxMaG/YoyD4D7am4TexheS9xFfVsygo7AtMqkJWZTU= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 7308796838909221808 Date: Fri, 11 Aug 2023 15:28:42 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: gcc-patches , richard.sandiford , linkw , krebbel Subject: Re: Re: [PATCH V3] VECT: Support loop len control on EXTRACT_LAST vectorization References: <20230811063817.491547-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: E1DFE5AC-A09E-44F8-A87F-CEAE3E2C7FD0 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <0CF24057688529E6+2023081115284214396319@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart448653103002_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID 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: This is a multi-part message in MIME format. ------=_001_NextPart448653103002_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 SGksIFJpY2hpLg0KDQo+PiBTbyBob3cgY2FuIHdlIHJlc29sdmUgdGhlIGlz c3VlIHdoZW4gYSBub24tVkwgb3BlcmF0aW9uIGxpa2UNCj4+IC5WRUNfRVhU UkFDVCBpcyB1c2VkIGZvciBfbGVuIHN1cHBvcnQ/DQoNCkRvIHlvdSBtZWFu IG5vbi1WTCBleHRyYWN0IGxhc3Qgb3BlcmF0aW9uIChJIGFtIHNvcnJ5IHRo YXQgbm90IHN1cmUgd2hldGhlciBJIHVuZGVyc3RhbmQgeW91ciBxdWVzdGlv biBjb3JyZWN0bHkpPyANCklmIHllcywgdGhlIGFuc3dlciBpcyBmb3IgUlZW LCB3ZSBhcmUgcmV1c2luZyB0aGUgc2FtZSBmbG93IGFzIEFSTSBTVkUgKEJJ VF9GSUxFRF9SRUYgYXBwcm9hY2gpLCBzZWUgdGhlIGV4YW1wbGUgYmVsb3c6 DQoNCmh0dHBzOi8vZ29kYm9sdC5vcmcvei9jcXJXclk4cTQgDQoNCiNkZWZp bmUgRVhUUkFDVF9MQVNUKFRZUEUpICAgICAgICAgIFwNCiAgVFlQRSBfX2F0 dHJpYnV0ZV9fICgobm9pbmxpbmUsIG5vY2xvbmUpKSAgXA0KICB0ZXN0XyMj VFlQRSAoVFlQRSAqeCwgaW50IG4sIFRZUEUgdmFsdWUpICBcDQogIHsgICAg ICAgICAgICAgICAgICAgICBcDQogICAgVFlQRSBsYXN0OyAgICAgICAgICAg ICAgICAgIFwNCiAgICBmb3IgKGludCBqID0gMDsgaiA8IDY0OyArK2opICAg ICAgICAgICAgXA0KICAgICAgeyAgICAgICAgICAgICAgICAgICAgIFwNCiAg ICBsYXN0ID0geFtqXTsgICAgICAgICAgICAgICAgXA0KICAgIHhbal0gPSBs YXN0ICogdmFsdWU7ICAgICAgICAgICAgXA0KICAgICAgfSAgICAgICAgICAg ICAgICAgICAgIFwNCiAgICByZXR1cm4gbGFzdDsgICAgICAgICAgICAgICAg XA0KICB9DQoNCiNkZWZpbmUgVEVTVF9BTEwoVCkgICAgICAgICAgICAgXA0K ICBUICh1aW50OF90KSAgICAgICAgICAgICAgICAgICBcDQoNClRFU1RfQUxM IChFWFRSQUNUX0xBU1QpDQoNCiAgdmVjdF9jc3RfXzIyID0ge3ZhbHVlXzEy KEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2 YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8x MihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwg dmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVf MTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCks IHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVl XzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQp LCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1 ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihE KSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFs dWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIo RCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZh bHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEy KEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2 YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8x MihEKSwgdmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwg dmFsdWVfMTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVf MTIoRCksIHZhbHVlXzEyKEQpLCB2YWx1ZV8xMihEKSwgdmFsdWVfMTIoRCks IHZhbHVlXzEyKEQpfTsNCiAgdmVjdF9sYXN0XzExLjZfMyA9IE1FTSA8dmVj dG9yKDY0KSB1bnNpZ25lZCBjaGFyPiBbKHVpbnQ4X3QgKil4XzEwKEQpXTsN CiAgdmVjdF9fNC43XzIzID0gdmVjdF9sYXN0XzExLjZfMyAqIHZlY3RfY3N0 X18yMjsNCiAgTUVNIDx2ZWN0b3IoNjQpIHVuc2lnbmVkIGNoYXI+IFsodWlu dDhfdCAqKXhfMTAoRCldID0gdmVjdF9fNC43XzIzOw0KICBfMjEgPSBCSVRf RklFTERfUkVGIDx2ZWN0X2xhc3RfMTEuNl8zLCA4LCA1MDQ+Ow0KDQpUaGlz IGFwcHJvYWNoIHdvcmtzIHBlcmZlY3RseSBmb3IgYm90aCBSVlYgYW5kIEFS TSBTVkUgZm9yIG5vbi1WTCBhbmQgbm9uLU1BU0sgRVhUUkFDVF9MQVNUIG9w ZXJhdGlvbi4NCg0KPj4gU28sIHdoeSBkbyB3ZSB0ZXN0IGZvciBnZXRfbGVu X2xvYWRfc3RvcmVfbW9kZSBhbmQgbm90IGp1c3QgZm9yDQo+PiBWRUNfRVhU UkFDVD8NCg0KQmVmb3JlIGFuc3dlciB0aGlzIHF1ZXN0aW9uLCBsZXQgbWUg Zmlyc3QgZWxhYm9yYXRlIGhvdyBBUk0gU1ZFIGlzIGRvaW5nIHdpdGggTUFT SyBFWFRSQUNUX0xBU1QuDQoNCkhlcmUgaXMgdGhlIGV4YW1wbGU6DQpodHRw czovL2dvZGJvbHQub3JnL3ovOGNUdjFqcU1iIA0KDQpBUk0gU1ZFIElSOg0K DQogIDxiYiA0PiBbbG9jYWwgY291bnQ6IDk1NTYzMDIyNF06DQogICMgaXZ0 bXBfMzEgPSBQSEkgPGl2dG1wXzMyKDQpLCAwKDMpPg0KDQogICMgbG9vcF9t YXNrXzIyID0gUEhJIDxuZXh0X21hc2tfMzUoNCksIG1heF9tYXNrXzM0KDMp PiAtLS0tLT4gRm9yIFJWViwgd2Ugd2FudCB0aGlzIHRvIGJlIGxvb3BfbGVu ID0gU0VMRUNUX1ZMOw0KDQogIF83ID0gJk1FTSA8dmVjdG9yKFsxNiwxNl0p IHVuc2lnbmVkIGNoYXI+IFsodWludDhfdCAqKXhfMTEoRCkgKyBpdnRtcF8z MSAqIDFdOw0KICB2ZWN0X2xhc3RfMTIuOF8yMyA9IC5NQVNLX0xPQUQgKF83 LCA4QiwgbG9vcF9tYXNrXzIyKTsNCiAgdmVjdF9fNC45XzI3ID0gdmVjdF9s YXN0XzEyLjhfMjMgKiB2ZWN0X2NzdF9fMjY7DQogIC5NQVNLX1NUT1JFIChf NywgOEIsIGxvb3BfbWFza18yMiwgdmVjdF9fNC45XzI3KTsNCiAgaXZ0bXBf MzIgPSBpdnRtcF8zMSArIFBPTFlfSU5UX0NTVCBbMTYsIDE2XTsNCiAgXzEg PSAodW5zaWduZWQgaW50KSBpdnRtcF8zMjsNCg0KICBuZXh0X21hc2tfMzUg PSAuV0hJTEVfVUxUIChfMSwgYm5kLjVfNiwgeyAwLCAuLi4gfSk7DQoNCiAg aWYgKG5leHRfbWFza18zNSAhPSB7IDAsIC4uLiB9KQ0KICAgIGdvdG8gPGJi IDQ+OyBbODkuMDAlXQ0KICBlbHNlDQogICAgZ290byA8YmIgNT47IFsxMS4w MCVdDQoNCiAgPGJiIDU+IFtsb2NhbCBjb3VudDogMTA1MTE5MzI0XToNCg0K ICBfMjUgPSAuRVhUUkFDVF9MQVNUIChsb29wX21hc2tfMjIsIHZlY3RfbGFz dF8xMi44XzIzKTsgW3RhaWwgY2FsbF0gLS0tLT4gVXNlIHRoZSBsYXN0IG1h c2sgZ2VuZXJhdGVkIGluIEJCIDQsIHNvIGZvciBSVlYsIHdlIGFyZSB1c2lu ZyB0aGUgbG9vcF9sZW4uDQoNClNvIHRoaXMgcGF0Y2ggaXMgdHJ5aW5nIHRv IG9wdGltaXplIHRoZSBjb2RlZ2VuIHdpdGggc2ltdWxhdGluZyBzYW1lIGZs b3cgYXMgQVJNIFNWRSBidXQgd2l0aCByZXBsYWNpbmcgJ2xvb3BfbWFza18y MicgKFRoaXMgaXMgZ2VuZXJhdGVkIGluIEJCNCkgaW50byAnbG9vcF9sZW4n Lg0KDQpGb3IgQVJNIFNWRSwgdGhleSBvbmx5IGNoZWNrIHdoZXRoZXIgdGFy Z2V0IHN1cHBvcnQgRVhUUkFDVF9MQVNUIHBhdHRlcm4sIHRoaXMgcGF0dGVy biBpcyBzdXBwb3J0ZWQgbWVhbnM6DQoNCjEuIFRhcmdldCBpcyB1c2luZyBs b29wIE1BU0sgYXMgdGhlIHBhcnRpYWwgdmVjdG9yIGxvb3AgY29udHJvbC4N CjIuIGV4dHJhY3RfbGFzdCBvcHRhYiBpcyBlbmFibGVkIGluIHRoZSBiYWNr ZW5kLg0KDQpTbyBmb3IgUlZWLCB3ZSBhcmUgYWxzbyBjaGVja2luZyBzYW1l IGNvbmRpdGlvbnM6DQoNCjEuIFRhcmdldCBpcyB1c2luZyBsb29wIExFTiBh cyB0aGUgcGFydGlhbCB2ZWN0b3IgbG9vcCBjb250cm9sIChJIHVzZSBnZXRf bGVuX2xvYWRfc3RvcmVfbW9kZSB0byBjaGVjayB3aGV0aGVyIHRhcmdldCBp cyB1c2luZyBsb29wIExFTiBhcyB0aGUgcGFydGlhbCB2ZWN0b3IgbG9vcCBj b250cm9sKS4NCjIuIHZlY19leHRyYWN0IG9wdGFiIGlzIGVuYWJsZWQgaW4g dGhlIGJhY2tlbmQuDQoNCkFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIGlzIHRo YXQgd2UgY2FuIGFkZGluZyBFWFRSQUNUX0xBU1RfTEVOIGludGVybmFsIEZO LCB0aGVuIHdlIGNhbiBvbmx5IGNoZWNrIHRoaXMgbGlrZSBBUk0gU1ZFIG9u bHkgY2hlY2sgRVhUUkFDVF9MQVNULg0KDQo+PiBjYW4gd2UgZG91YmxlLWNo ZWNrIHRoaXMgb24gcG93ZXJwYyBhbmQgczM5MD8NCg0KU3VyZSwgSSBob3Bl IGl0IGNhbiBiZSBiZW5lZmljaWFsIHRvIHBvd2VycGMgYW5kIHMzOTAuDQpB bmQsIEkgdGhpbmsgUmljaGFyZCdzIGNvbW1lbnRzIGFyZSBhbHNvIHZlcnkg aW1wb3J0YW50IHNvIEkgYW0gZ29ubmEgd2FpdCBmb3IgaXQuDQoNClRoYW5r cy4NCg0KDQpqdXpoZS56aG9uZ0ByaXZhaS5haQ0KIA0KRnJvbTogUmljaGFy ZCBCaWVuZXINCkRhdGU6IDIwMjMtMDgtMTEgMTU6MDENClRvOiBKdS1aaGUg WmhvbmcNCkNDOiBnY2MtcGF0Y2hlczsgcmljaGFyZC5zYW5kaWZvcmQ7IGxp bmt3OyBrcmViYmVsDQpTdWJqZWN0OiBSZTogW1BBVENIIFYzXSBWRUNUOiBT dXBwb3J0IGxvb3AgbGVuIGNvbnRyb2wgb24gRVhUUkFDVF9MQVNUIHZlY3Rv cml6YXRpb24NCk9uIEZyaSwgMTEgQXVnIDIwMjMsIGp1emhlLnpob25nQHJp dmFpLmFpIHdyb3RlOg0KIA0KPiBGcm9tOiBKdS1aaGUgWmhvbmcgPGp1emhl Lnpob25nQHJpdmFpLmFpPg0KPiANCj4gSGksIFJpY2hhcmQgYW5kIFJpY2hp Lg0KPiANCj4gVGhpcyBwYXRjaCBhZGQgc3VwcG9ydCBsaXZlIHZlY3Rvcml6 YXRpb24gYnkgVkVDX0VYVFJBQ1QgZm9yIExFTiBsb29wIGNvbnRyb2wuDQo+ IA0KPiBDb25zaWRlciB0aGlzIGZvbGxvd2luZyBjYXNlOg0KPiANCj4gI2lu Y2x1ZGUgPHN0ZGludC5oPg0KPiANCj4gI2RlZmluZSBFWFRSQUNUX0xBU1Qo VFlQRSkgXA0KPiAgIFRZUEUgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBu b2Nsb25lKSkgXA0KPiAgIHRlc3RfIyNUWVBFIChUWVBFICp4LCBpbnQgbiwg VFlQRSB2YWx1ZSkgXA0KPiAgIHsgXA0KPiAgICAgVFlQRSBsYXN0OyBcDQo+ ICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47ICsraikgXA0KPiAgICAgICB7 IFwNCj4gbGFzdCA9IHhbal07IFwNCj4geFtqXSA9IGxhc3QgKiB2YWx1ZTsg XA0KPiAgICAgICB9IFwNCj4gICAgIHJldHVybiBsYXN0OyBcDQo+ICAgfQ0K PiANCj4gI2RlZmluZSBURVNUX0FMTChUKSBcDQo+ICAgVCAodWludDhfdCkg XA0KPiANCj4gVEVTVF9BTEwgKEVYVFJBQ1RfTEFTVCkNCj4gDQo+IEFSTSBT VkUgSVI6DQo+IA0KPiBQcmVoZWFkZXI6DQo+ICAgbWF4X21hc2tfMzQgPSAu V0hJTEVfVUxUICgwLCBibmQuNV82LCB7IDAsIC4uLiB9KTsNCj4gDQo+IExv b3A6DQo+ICAgLi4uDQo+ICAgIyBsb29wX21hc2tfMjIgPSBQSEkgPG5leHRf bWFza18zNSg0KSwgbWF4X21hc2tfMzQoMyk+DQo+ICAgLi4uDQo+ICAgdmVj dF9sYXN0XzEyLjhfMjMgPSAuTUFTS19MT0FEIChfNywgOEIsIGxvb3BfbWFz a18yMik7DQo+ICAgdmVjdF9fNC45XzI3ID0gdmVjdF9sYXN0XzEyLjhfMjMg KiB2ZWN0X2NzdF9fMjY7DQo+ICAgLk1BU0tfU1RPUkUgKF83LCA4QiwgbG9v cF9tYXNrXzIyLCB2ZWN0X180LjlfMjcpOw0KPiAgIC4uLg0KPiAgIG5leHRf bWFza18zNSA9IC5XSElMRV9VTFQgKF8xLCBibmQuNV82LCB7IDAsIC4uLiB9 KTsNCj4gICAuLi4NCj4gDQo+IEVwaWxvZ3VlOg0KPiAgIF8yNSA9IC5FWFRS QUNUX0xBU1QgKGxvb3BfbWFza18yMiwgdmVjdF9sYXN0XzEyLjhfMjMpOw0K PiANCj4gRm9yIFJWViBzaW5jZSB3ZSBwcmVmZXIgbGVuIGluIGxvb3AgY29u dHJvbCwgYWZ0ZXIgdGhpcyBwYXRjaCBmb3IgUlZWOg0KPiANCj4gTG9vcDoN Cj4gICAuLi4NCj4gICBsb29wX2xlbl8yMiA9IFNFTEVDVF9WTDsNCj4gICB2 ZWN0X2xhc3RfMTIuOF8yMyA9IC5NQVNLX0xPQUQgKF83LCA4QiwgbG9vcF9s ZW5fMjIpOw0KPiAgIHZlY3RfXzQuOV8yNyA9IHZlY3RfbGFzdF8xMi44XzIz ICogdmVjdF9jc3RfXzI2Ow0KPiAgIC5NQVNLX1NUT1JFIChfNywgOEIsIGxv b3BfbGVuXzIyLCB2ZWN0X180LjlfMjcpOw0KPiAgIC4uLg0KPiANCj4gRXBp bG9ndWU6DQo+ICAgXzI1ID0gLlZFQ19FWFRSQUNUIChsb29wX2xlbl8yMiAr IGJpYXMgLSAxLCB2ZWN0X2xhc3RfMTIuOF8yMyk7DQo+IA0KPiBEZXRhaWxz IG9mIHRoaXMgYXBwcm9hY2g6DQo+IA0KPiAxLiBTdGVwIDEgLSBBZGQgJ3Zl Y3RfY2FuX3ZlY3Rvcml6ZV9leHRyYWN0X2xhc3Rfd2l0aF9sZW5fcCcgIHRv IGVuYWJsZSBsaXZlIHZlY3Rvcml6YXRpb24NCj4gICAgICAgICAgICAgZm9y IExFTiBsb29wIGNvbnRyb2wuDQo+ICAgIA0KPiAgICBUaGlzIGZ1bmN0aW9u IHdlIGNoZWNrIHdoZXRoZXIgdGFyZ2V0IHN1cHBvcnQ6DQo+ICAgICAtIFVz ZSBMRU4gYXMgdGhlIGxvb3AgY29udHJvbC4NCj4gICAgIC0gU3VwcG9ydCBW RUNfRVhUUkFDVCBvcHRhYi4NCj4gDQo+IDIuIFN0ZXAgMiAtIFJlY29yZCBM RU4gZm9yIGxvb3AgY29udHJvbCBpZiAndmVjdF9jYW5fdmVjdG9yaXplX2V4 dHJhY3RfbGFzdF93aXRoX2xlbl9wJyBpcyB0cnVlLg0KPiANCj4gMy4gU3Rl cCAzIC0gR2VyZW5hdGUgVkVDX0VYVFJBQ1QgKHYsIExFTiArIEJJQVMgLSAx KS4NCj4gDQo+IFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiBtYXNrIGFu ZCBsZW4gaXMgdGhhdCBsZW4gaXMgdXNpbmcgbGVuZ3RoIGdlbmVyYXRlZCBi eSBTRUxFQ1RfVkwgYW5kDQo+IHVzZSBWRUNfRVhUUkFDVCBwYXR0ZXJuLiBU aGUgcmVzdCBvZiB0aGUgbGl2ZSB2ZWN0b3JpemF0aW9uIGlzIHRvdGFsbHkg dGhlIHNhbWUgQVJNIFNWRS4NCj4gDQo+IEJvb3RzdHJhcCBhbmQgUmVncmVz c2lvbiBvbiBYODYgcGFzc2VkLg0KPiANCj4gVGVzdGVkIG9uIEFSTSBRRU1V Lg0KPiANCj4gT2sgZm9yIHRydW5rPw0KPiANCj4gZ2NjL0NoYW5nZUxvZzoN Cj4gDQo+ICogdHJlZS12ZWN0LWxvb3AuY2MgKHZlY3RfY2FuX3ZlY3Rvcml6 ZV9leHRyYWN0X2xhc3Rfd2l0aF9sZW5fcCk6IE5ldyBmdW5jdGlvbi4NCj4g KHZlY3Rvcml6YWJsZV9saXZlX29wZXJhdGlvbik6IEFkZCBsb29wIGxlbiBj b250cm9sLg0KPiANCj4gLS0tDQo+ICBnY2MvdHJlZS12ZWN0LWxvb3AuY2Mg fCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNiBk ZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0 LWxvb3AuY2MgYi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gaW5kZXggYmY4 ZDY3N2I1ODQuLjgwOWI3M2I5NjZjIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJl ZS12ZWN0LWxvb3AuY2MNCj4gKysrIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNj DQo+IEBAIC04OTYzLDYgKzg5NjMsMjcgQEAgdmVjdF9jYW5fdmVjdG9yaXpl X3dpdGhvdXRfc2ltZF9wIChjb2RlX2hlbHBlciBjb2RlKQ0KPiAgICAmJiB2 ZWN0X2Nhbl92ZWN0b3JpemVfd2l0aG91dF9zaW1kX3AgKHRyZWVfY29kZSAo Y29kZSkpKTsNCj4gIH0NCj4gIA0KPiArLyogUmV0dXJuIHRydWUgaWYgdGFy Z2V0IHN1cHBvcnRzIGV4dHJhY3QgbGFzdCB2ZWN0b3JpemF0aW9uIHdpdGgg TEVOLiAgKi8NCj4gKw0KPiArc3RhdGljIGJvb2wNCj4gK3ZlY3RfY2FuX3Zl Y3Rvcml6ZV9leHRyYWN0X2xhc3Rfd2l0aF9sZW5fcCAodHJlZSB2ZWN0eXBl KQ0KPiArew0KPiArICAvKiBSZXR1cm4gZmFsc2UgaWYgdGFyZ2V0IGRvZXNu J3Qgc3VwcG9ydCBMRU4gaW4gbG9vcCBjb250cm9sLiAgKi8NCj4gKyAgbWFj aGluZV9tb2RlIHZtb2RlOw0KPiArICBtYWNoaW5lX21vZGUgdmVjX21vZGUg PSBUWVBFX01PREUgKHZlY3R5cGUpOw0KPiArICBpZiAoIVZFQ1RPUl9NT0RF X1AgKHZlY19tb2RlKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsgIGlm ICghZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKHZlY19tb2RlLCB0cnVlKS5l eGlzdHMgKCZ2bW9kZSkNCj4gKyAgICAgIHx8ICFnZXRfbGVuX2xvYWRfc3Rv cmVfbW9kZSAodmVjX21vZGUsIGZhbHNlKS5leGlzdHMgKCZ2bW9kZSkpDQo+ ICsgICAgcmV0dXJuIGZhbHNlOw0KIA0KU28gdGhpcyAiaGlkZGVuIiBiaXQg aW4gdGhlIGVuZCBkZWNpZGVzIHdoZXRoZXIgdG8gLi4uDQogDQo+ICsgIC8q IFRhcmdldCBuZWVkIHRvIHN1cHBvcnQgVkVDX0VYVFJBQ1QgdG8gZXh0cmFj dCB0aGUgbGFzdCBhY3RpdmUgZWxlbWVudC4gICovDQo+ICsgIHJldHVybiBj b252ZXJ0X29wdGFiX2hhbmRsZXIgKHZlY19leHRyYWN0X29wdGFiLA0KPiAr IHZlY19tb2RlLA0KPiArIFRZUEVfTU9ERSAoVFJFRV9UWVBFICh2ZWN0eXBl KSkpDQo+ICsgIT0gQ09ERV9GT1Jfbm90aGluZzsNCj4gK30NCj4gKw0KPiAg LyogQ3JlYXRlIHZlY3RvciBpbml0IGZvciB2ZWN0b3JpemVkIGl2LiAgKi8N Cj4gIHN0YXRpYyB0cmVlDQo+ICB2ZWN0X2NyZWF0ZV9ub25saW5lYXJfaXZf aW5pdCAoZ2ltcGxlX3NlcSogc3RtdHMsIHRyZWUgaW5pdF9leHByLA0KPiBA QCAtMTAyNzksNyArMTAzMDAsOCBAQCB2ZWN0b3JpemFibGVfbGl2ZV9vcGVy YXRpb24gKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2lu Zm8sDQo+ICAgICAgICBpZiAobG9vcF92aW5mbyAmJiBMT09QX1ZJTkZPX0NB Tl9VU0VfUEFSVElBTF9WRUNUT1JTX1AgKGxvb3BfdmluZm8pKQ0KPiAgew0K PiAgICBpZiAoIWRpcmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZO X0VYVFJBQ1RfTEFTVCwgdmVjdHlwZSwNCj4gLSAgICAgICAgT1BUSU1JWkVf Rk9SX1NQRUVEKSkNCj4gKyAgICAgICAgT1BUSU1JWkVfRk9SX1NQRUVEKQ0K PiArICAgICAgICYmICF2ZWN0X2Nhbl92ZWN0b3JpemVfZXh0cmFjdF9sYXN0 X3dpdGhfbGVuX3AgKHZlY3R5cGUpKQ0KPiAgICAgIHsNCj4gICAgICAgIGlm IChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gIGR1bXBfcHJpbnRmX2xvYyAoTVNH X01JU1NFRF9PUFRJTUlaQVRJT04sIHZlY3RfbG9jYXRpb24sDQo+IEBAIC0x MDMwOCw5ICsxMDMzMCwxNCBAQCB2ZWN0b3JpemFibGVfbGl2ZV9vcGVyYXRp b24gKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8s DQo+ICAgIGVsc2UNCj4gICAgICB7DQo+ICAgICAgICBnY2NfYXNzZXJ0IChu Y29waWVzID09IDEgJiYgIXNscF9ub2RlKTsNCj4gLSAgICAgICB2ZWN0X3Jl Y29yZF9sb29wX21hc2sgKGxvb3BfdmluZm8sDQo+IC0gICAgICAmTE9PUF9W SU5GT19NQVNLUyAobG9vcF92aW5mbyksDQo+IC0gICAgICAxLCB2ZWN0eXBl LCBOVUxMKTsNCj4gKyAgICAgICBpZiAodmVjdF9jYW5fdmVjdG9yaXplX2V4 dHJhY3RfbGFzdF93aXRoX2xlbl9wICh2ZWN0eXBlKSkNCj4gKyB2ZWN0X3Jl Y29yZF9sb29wX2xlbiAobG9vcF92aW5mbywNCj4gKyAgICAgICAmTE9PUF9W SU5GT19MRU5TIChsb29wX3ZpbmZvKSwNCj4gKyAgICAgICAxLCB2ZWN0eXBl LCAxKTsNCiANCi4uIHJlY29yZCBhIGxvb3BfbGVuIGhlcmUuICBJIHRoaW5r IHBvd2VycGMgYXQgbGVhc3QgaGFzIC5WRUNfRVhUUkFDVCBhcyANCndlbGwg YnV0IG9mIGNvdXJzZSAuVkVDX0VYVFJBQ1Qgc3VwcG9ydCBpdHNlbGYgZG9l c24ndCBoYXZlIGFueXRoaW5nIHRvDQpkbyB3aXRoICdsZW4nIHN1cHBvcnQu DQogDQp4ODYgaGFzIC5WRUNfU0VUIGJ1dCBub3QgeWV0IC5WRUNfRVhUUkFD VCwgaWYgaXQgZ2V0cyAuVkVDX0VYVFJBQ1QNCml0cyBwYXJ0aWFsIHZlY3Rv ciBzdXBwb3J0IHN0aWxsIHdhbnRzIG1hc2tzLCBub3QgbGVucyAoYW5kIG9u Y2UNCndlIHJlY29yZCBib3RoIHdlIGZhaWwpLg0KIA0KU28gaG93IGNhbiB3 ZSByZXNvbHZlIHRoZSBpc3N1ZSB3aGVuIGEgbm9uLVZMIG9wZXJhdGlvbiBs aWtlDQouVkVDX0VYVFJBQ1QgaXMgdXNlZCBmb3IgX2xlbiBzdXBwb3J0Pw0K IA0KTm90ZSB4ODYgZG9lbnMndCB5ZXQgc3VwcG9ydCBJRk5fRVhUUkFDVF9M QVNUIGVpdGhlci4NCiANClNvLCB3aHkgZG8gd2UgdGVzdCBmb3IgZ2V0X2xl bl9sb2FkX3N0b3JlX21vZGUgYW5kIG5vdCBqdXN0IGZvcg0KVkVDX0VYVFJB Q1Q/DQogDQo+ICsgICAgICAgZWxzZQ0KPiArIHZlY3RfcmVjb3JkX2xvb3Bf bWFzayAobG9vcF92aW5mbywNCj4gKyAgICAgICAgJkxPT1BfVklORk9fTUFT S1MgKGxvb3BfdmluZm8pLA0KPiArICAgICAgICAxLCB2ZWN0eXBlLCBOVUxM KTsNCj4gICAgICB9DQo+ICB9DQo+ICAgICAgICAvKiA/Pz8gIEVuYWJsZSBm b3IgbG9vcCBjb3N0aW5nIGFzIHdlbGwuICAqLw0KPiBAQCAtMTAzMzYsNyAr MTAzNjMsOSBAQCB2ZWN0b3JpemFibGVfbGl2ZV9vcGVyYXRpb24gKHZlY19p bmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sDQo+ICAgIGdp bXBsZSAqdmVjX3N0bXQ7DQo+ICAgIGlmIChzbHBfbm9kZSkNCj4gICAgICB7 DQo+IC0gICAgICBnY2NfYXNzZXJ0ICghbG9vcF92aW5mbyB8fCAhTE9PUF9W SU5GT19GVUxMWV9NQVNLRURfUCAobG9vcF92aW5mbykpOw0KPiArICAgICAg Z2NjX2Fzc2VydCAoIWxvb3BfdmluZm8NCj4gKyAgIHx8ICghTE9PUF9WSU5G T19GVUxMWV9NQVNLRURfUCAobG9vcF92aW5mbykNCj4gKyAgICAgICAmJiAh TE9PUF9WSU5GT19GVUxMWV9XSVRIX0xFTkdUSF9QIChsb29wX3ZpbmZvKSkp Ow0KPiAgDQo+ICAgICAgICAvKiBHZXQgdGhlIGNvcnJlY3Qgc2xwIHZlY3Rv cml6ZWQgc3RtdC4gICovDQo+ICAgICAgICB2ZWNfbGhzID0gU0xQX1RSRUVf VkVDX0RFRlMgKHNscF9ub2RlKVt2ZWNfZW50cnldOw0KPiBAQCAtMTAzODAs NyArMTA0MDksNDIgQEAgdmVjdG9yaXphYmxlX2xpdmVfb3BlcmF0aW9uICh2 ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLA0KPiAg DQo+ICAgICAgICBnaW1wbGVfc2VxIHN0bXRzID0gTlVMTDsNCj4gICAgICAg IHRyZWUgbmV3X3RyZWU7DQo+IC0gICAgICBpZiAoTE9PUF9WSU5GT19GVUxM WV9NQVNLRURfUCAobG9vcF92aW5mbykpDQo+ICsgICAgICBpZiAoTE9PUF9W SU5GT19GVUxMWV9XSVRIX0xFTkdUSF9QIChsb29wX3ZpbmZvKSkNCj4gKyB7 DQo+ICsgICAvKiBFbWl0Og0KPiArDQo+ICsgICAgICAgIFNDQUxBUl9SRVMg PSBWRUNfRVhUUkFDVCA8VkVDX0xIUywgTEVOICsgQklBUyAtIDE+DQo+ICsN Cj4gKyAgICAgIHdoZXJlIFZFQ19MSFMgaXMgdGhlIHZlY3Rvcml6ZWQgbGl2 ZS1vdXQgcmVzdWx0IGFuZCBNQVNLIGlzDQo+ICsgICAgICB0aGUgbG9vcCBt YXNrIGZvciB0aGUgZmluYWwgaXRlcmF0aW9uLiAgKi8NCj4gKyAgIGdjY19h c3NlcnQgKG5jb3BpZXMgPT0gMSAmJiAhc2xwX25vZGUpOw0KPiArICAgZ2lt cGxlX3NlcSB0ZW0gPSBOVUxMOw0KPiArICAgZ2ltcGxlX3N0bXRfaXRlcmF0 b3IgZ3NpID0gZ3NpX2xhc3QgKHRlbSk7DQo+ICsgICB0cmVlIGxlbg0KPiAr ICAgICA9IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCAmZ3NpLA0K PiArICZMT09QX1ZJTkZPX0xFTlMgKGxvb3BfdmluZm8pLA0KPiArIDEsIHZl Y3R5cGUsIDAsIDApOw0KPiArDQo+ICsgICAvKiBCSUFTIC0gMS4gICovDQo+ ICsgICBzaWduZWQgY2hhciBiaWFzdmFsID0gTE9PUF9WSU5GT19QQVJUSUFM X0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+ICsgICB0cmVlIGJp YXNfbWludXNfb25lDQo+ICsgICAgID0gaW50X2NvbnN0X2Jpbm9wIChNSU5V U19FWFBSLA0KPiArICAgICAgICBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUg KGxlbiksIGJpYXN2YWwpLA0KPiArICAgICAgICBidWlsZF9vbmVfY3N0IChU UkVFX1RZUEUgKGxlbikpKTsNCj4gKw0KPiArICAgLyogTEFTVF9JTkRFWCA9 IExFTiArIChCSUFTIC0gMSkuICAqLw0KPiArICAgdHJlZSBsYXN0X2luZGV4 ID0gZ2ltcGxlX2J1aWxkICgmc3RtdHMsIFBMVVNfRVhQUiwgVFJFRV9UWVBF IChsZW4pLA0KPiArICAgbGVuLCBiaWFzX21pbnVzX29uZSk7DQo+ICsNCj4g KyAgIC8qIFNDQUxBUl9SRVMgPSBWRUNfRVhUUkFDVCA8VkVDX0xIUywgTEVO ICsgQklBUyAtIDE+LiAgKi8NCj4gKyAgIHRyZWUgc2NhbGFyX3Jlcw0KPiAr ICAgICA9IGdpbXBsZV9idWlsZCAoJnN0bXRzLCBDRk5fVkVDX0VYVFJBQ1Qs IFRSRUVfVFlQRSAodmVjdHlwZSksDQo+ICsgICAgIHZlY19saHNfcGhpLCBs YXN0X2luZGV4KTsNCj4gKw0KIA0KY2FuIHdlIGRvdWJsZS1jaGVjayB0aGlz IG9uIHBvd2VycGMgYW5kIHMzOTA/DQogDQpUaGFua3MsDQpSaWNoYXJkLg0K IA0KPiArICAgLyogQ29udmVydCB0aGUgZXh0cmFjdGVkIHZlY3RvciBlbGVt ZW50IHRvIHRoZSBzY2FsYXIgdHlwZS4gICovDQo+ICsgICBuZXdfdHJlZSA9 IGdpbXBsZV9jb252ZXJ0ICgmc3RtdHMsIGxoc190eXBlLCBzY2FsYXJfcmVz KTsNCj4gKyB9DQo+ICsgICAgICBlbHNlIGlmIChMT09QX1ZJTkZPX0ZVTExZ X01BU0tFRF9QIChsb29wX3ZpbmZvKSkNCj4gIHsNCj4gICAgLyogRW1pdDoN Cj4gIA0KIA0K ------=_001_NextPart448653103002_=------