From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) by sourceware.org (Postfix) with ESMTPS id A7EA53858C5F for ; Mon, 24 Jul 2023 23:16:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A7EA53858C5F 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: bizesmtp81t1690240562tv8f05fw Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 25 Jul 2023 07:16:01 +0800 (CST) X-QQ-SSF: 01400000000000G0U000000A0000000 X-QQ-FEAT: 5q30pvLz2icMR17OQ2lBA7GSxLpbo0syB6o0ZgFA5xzGSELe0kv8uWRFXLR/5 MnRdxXbSRNMhorFDShOBZ67jyXDKL66PdMEQAne+a+xv3ri6sf3l1XdytgofYd721/Pla5Y 0tFAobCU/+V58Ob5VjFH61QArPdKDU9TazsfYT/Ipv+RlmvT4jcTsn91UW1rgnAXdAN7ANi SeUCqRfmDW8IAYmn6m8OBB6sDO/nF1caA+UZWU3UqgibPi/XUbDLG3kkTq1fm/KdKelHip2 2rqLYaqhUdSZ9sUeVV8KIpZLHt0VWAEE41rqhok386hhcKNCY2Wdncw5L8wNhWP0KRLi3zv JGn6lNWat6mx6+azbE2+VfrkdEyMu9orN/Lu4TiTo6T5elEXV4= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 12838180581810921536 Date: Tue, 25 Jul 2023 07:16:02 +0800 From: =?utf-8?B?6ZKf5bGF5ZOy?= To: rguenther Cc: gcc-patches , richard.sandiford Subject: Re: Re: [PATCH] VECT: Support CALL vectorization for COND_LEN_* References: <20230724114650.61923-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: FE6760E2-B6E1-43C0-8796-8DD52E1E4C77 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <62B332CEE95B33E1+2023072507160172829450@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart818146060674_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE,WEIRD_PORT 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_NextPart818146060674_=---- Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIFJpY2hpLiBUaGFuayB5b3Ugc28gbXVjaCBmb3IgcmV2aWV3Lg0KDQo+ PiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3Qgc2VlbSB0byBjYXJlIGFib3V0IGNv bmRpdGlvbmFsIHZlY3Rvcml6YXRpb24NCj4+IHN1cHBvcnQsIHNvIHdoeSBh cmUgeW91IGNoYW5naW5nIGl0Pw0KDQpJIGRlYnVnIGFuZCBhbmFseXplIHRo ZSBjb2RlIGhlcmU6DQoNCkJyZWFrcG9pbnQgMSwgdmVjdG9yaXphYmxlX2Nh bGwgKHZpbmZvPTB4M2QzNThkMCwgc3RtdF9pbmZvPTB4M2RjYzgyMCwgZ3Np PTB4MCwgdmVjX3N0bXQ9MHgwLCBzbHBfbm9kZT0weDAsIGNvc3RfdmVjPTB4 N2ZmZmZmZmZjNjY4KSBhdCAuLi8uLi8uLi9yaXNjdi1nY2MvZ2NjL3RyZWUt dmVjdC1zdG10cy5jYzozNDg1DQozNDg1ICAgICAgICBpZm4gPSB2ZWN0b3Jp emFibGVfaW50ZXJuYWxfZnVuY3Rpb24gKGNmbiwgY2FsbGVlLCB2ZWN0eXBl X291dCwNCihnZGIpIHAgY2ZuDQokMSA9IENGTl9DT05EX0FERA0KKGdkYikg Y2FsbCBwcmludF9naW1wbGVfc3RtdChzdGRvdXQsc3RtdCwwLDApDQpfOSA9 IC5DT05EX0FERCAoXzI3LCBfNiwgXzgsIF82KTsNCg0KV2hlbiB0YXJnZXQg bGlrZSBSSVNDLVYgZGlkbnQnIHN1cHBvcnQgQ09ORF8qICh3ZSBvbmx5IHN1 cHBvcnQgQ09ORF9MRU5fKiwgbm8gc3VwcG9ydCBDT05EXyopLA0KaWZuIHdp bGwgYmUgSUZOX0xBU1QuDQpBbHNvLCB0aGUgZm9sbG93aW5nIGNvZGUgZG9l c24ndCBtb2RpZnkgaWZuIHVudGlsDQoiaW50ZXJuYWxfZm4gY29uZF9mbiA9 IGdldF9jb25kaXRpb25hbF9pbnRlcm5hbF9mbiAoaWZuKTsiDQpXaGVuIGlm biA9PSBJRk5fTEFTVCwgY29uZF9mbiB3aWxsIElGTl9MQVNUIHRvby4NCg0K U28sIEkgZXh0ZW5kICJ2ZWN0b3JpemFibGVfaW50ZXJuYWxfZnVuY3Rpb24i IHRvIHJldHVybiBDT05EX0xFTl8qLg0KDQpBbSBJIGdvaW5nIGludG8gd3Jv bmcgZGlyZWN0aW9uIG9uIGRlYnVnICYmIGFuYWx5c2lzLg0KDQo+PiB3aGF0 IGFib3V0IHJlZHVjX2luZHg/ICBXaHkgY2hlY2sgbGVuX2luZGVzIGFuZCBu b3QgbGVuX2xvb3BfcD8NCg0KPj4gTm90ZSB0cmFkaXRpb25hbGx5IG5vbi1M RU4gZm5zIHdvdWxkIHJldHVybiAtMSBoZXJlLCBzbyAuLi4NCg0KPj4gaW5z dGVhZCB0aGVyZSdzIGNvZGUgaGVyZSB0aGF0IGNoZWNrcyBmb3IgdGhlIC5D T05EX3h4eCBjYXNlIHNvIHlvdSBzaG91bGQNCj4+IGFtZW50IGl0IGZvciB0 aGUgbGVuIGNhc2UgYXMgd2VsbD8NCg0KPj4gWW91IGFyZSBub3QgYWN0dWFs bHkgdXNpbmcgbGVuX2luZGV4IHRvIHBsYWNlIHRoZSBhcmd1bWVudHMuICBT ZWUNCj4+IGhvdyBtYXNrX29wbm8gaXMgdXNlZC4NCg0KSSB1bmRlcnN0YW5k IHRoaXMgcGF0Y2ggY29kZXMgbG9vayBxdWl0ZSBzdHJhbmdlIG5vdCBuYXR1 cmFsLg0KR2l2ZSBtZSBzb21lIHRpbWUgdG8gc2hhcmUgdGhlIHN0b3J5IHdo eSBJIGFtIGRvaW5nIHRoaXM6DQoNCjEuIEF0IHRoZSBiZWdpbm5pbmcsIEkg d2FudCB0byB3cml0ZSB0aGUgY29kZXMgbmF0dXJhbGx5IGFuZCB2ZXJ5IHNp bWlsaWFyIHdpdGggdGhlIGN1cnJlbnQgY29kZXMuDQogICAgU28gaXQncyBu YXR1cmFsIHRvIHdyaXRlIHRoZSBjb2RlcyBsaWtlIHRoaXM6DQogICAgIA0K ICAgICBpZiAobWFza19vcG5vID49IDAgJiYgbGVuX2xvb3BfcCkgew0KICAg ICAgICAgdHJlZSBsZW4gPSB2ZWN0X2dldF9sb29wX2xlbg0KICAgICAgICAg dHJlZSBiaWFzID0gLi4uLg0KICAgICAgfQ0KDQogICAgSG93ZXZlciwgd2Ug aGF2ZSB0aGUgZm9sbG93aW5nIGNhc2U6DQogICAgdm9pZCBmb28xIChmbG9h dCAqIF9fcmVzdHJpY3QgYSwgZmxvYXQgKiBfX3Jlc3RyaWN0IGIsIGludCAq IF9fcmVzdHJpY3QgY29uZCwgaW50IG4pDQogICAgew0KICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgODsgaSsrKQ0KICAgICAgICBpZiAoY29uZFtpXSkN CiAgICAgICAgICAgYVtpXSA9IGJbaV0gKyBhW2ldOw0KICAgICB9ICAgICAN CiAgICAgTm90ZSBoZXJlICJpPDgiIG1lYW5zIG5pdGVycyA9IDggYW5kIGNv bXBpbGUgd2l0aCBrbm93biBWRiAoZml4ZWQtbGVuZ3RoIHZlY3RvcikgdG8g dmVjdG9yaXplIHRoZSBjb2Rlcy4NCiAgICAgVGhlbiBsZW5fbG9vcF9wIHdp bGwgYmUgZmFsc2UuDQoNCiAgICAgSWYgSSBkb24ndCBoYW5kbGUgY2FzZSwg dGhlbiB0aGUgY29kZSB3aWxsIGdlbmVyYXRlIHRoZSBJUjoNCiAgICAgQ09O RF9MRU5fQUREIChtYWtzLCBvcDEsIG9wMiwgb3AzKS4uLi4gDQogICAgIE1p c3NpbmcgTEVOICYmIEJJQVMgYXJndW1lbnQgd2hpY2ggY2F1c2UgSUNFLg0K DQoyLiBTbyBJIHVzZSAiaW50IGxlbl9pbmRleCA9IGludGVybmFsX2ZuX2xl bl9pbmRleCAoaWZuKTsiLA0KICAgIGlmbiBpcyBzdXBwb3J0ZWQgYXMgQ09O RF9MRU5fKiwgdGhlIGxlbl9pbmRleCA+PSAwLCBvdGhlcndpc2UsIGl0IHdp bGwgYmUgLTEuDQogICAgIFNvIEkgcHJlcGFyZSBMRU4gJiYgQklBUyBhcmd1 bWVudHMgYWNjb3JkaW5nIHRvIGxlbl9pbmRleC4NCiAgICAgDQogICAgIFNv IEkgY2hhbmdlIHRoZSBjb2RlIGludG86DQogICAgICBpZiAobGVuX2luZGV4 ID49IDApIHsNCiAgICAgICAgIHRyZWUgbGVuID0gdmVjdF9nZXRfbG9vcF9s ZW4NCiAgICAgICAgIHRyZWUgYmlhcyA9IC4uLi4NCiAgICAgIH0NCiAgICAg ICANCjMuIE92ZXJhbGwsIEkgd2FudCB0byBub3JtYWxpemUgQ09ORF8qIGlu dG8gQ09ORF9MRU5fKiwgd2hlbiBsb29wX2xlbl9wIGlzIGZhbHNlLCB0aGVu IEkgY3JlYXRlIGEgZHVtbXkgTEVOIGZvciBpdC4NCiAgICBJdCBtYWtlIHRo ZSBjb2RlcyBzdHJhbmdlLiANCiAgICANCjQuIEkgaGF2ZSBhbm90aGVyIGFw cHJvYWNoL3ByZXBhcmVkIHBhdGNoIHdoaWNoIG1ha2VzIGNvZGVzIG1vcmUg bmF0dXJhbDoNCiAgICBFbmFibGUgQ09ORF94eHh4IGluIFJJU0MtViBwb3J0 LCB0aGVuIGtlZXAgInRyZWUtdmVjdC1pZmN2dC5jYyIgdW5jaGFuZ2UsDQog ICAgYW5kICJ2ZWN0b3JpemFibGVfaW50ZXJuYWxfZnVuY3Rpb24iIHVuY2hh bmdlLg0KICAgIA0KICAgIEFuZCBzaW1waWx5IHdyaXRlIHRoZSBjb2RlcyBs aWtlIHRoaXM6DQogICAgIGlmIChtYXNrX29wbm8gPj0gMCAmJiBsZW5fbG9v cF9wKSB7DQogICAgICAgICB0cmVlIGxlbiA9IHZlY3RfZ2V0X2xvb3BfbGVu DQogICAgICAgICB0cmVlIGJpYXMgPSAuLi4uDQogICAgICB9DQogICAgYW5k IHdoZW4gbGVuX2xvb3BfcCBpcyB0cnVlLCBJIGNoYW5nZSB0byB1c2UgIkNP TkRfTEVOX3h4eCIsIG90aGVyd2lzZSByZXVzZSBvcmlnaW5hbCBmbG93Lg0K ICAgIA0KICAgIEFyZSB5b3Ugc3VnZ2VzdGluZyBtZSBkb2luZyB0aGlzPyBN ZWFuaW5nIGVuYWJsZSBDT05EX3h4eCAoVGhlIHBhdHRlcm5zIGFyZSBkdXBs aWNhdGUgSSB0aGluayBpZiB3ZSBoYXZlIENPTkRfTEVOX3h4eCkgaW4gUklT Qy1WIHBvcnQgPw0KDQo+PiBZb3UgYXJlIHByb2R1Y2luZyBwYXRjaGVzIHRv byBxdWlja2x5LCBwbGVhc2UgZG91YmxlLWNoZWNrIHdoYXQgeW91IGRpZA0K Pj4gYmVmb3JlIHBvc3RpbmcgZm9yIHJldmlldy4NCg0KSSBhbSBzbyBzb3Jy eSB0aGlzIHBhdGNoIGNvZGVzIGxvb2sgcXVpdGUgc3RyYW5nZSBhbmQgY29u ZnVzaW5nLg0KSSBhY3R1YWxseSBjb25zaWRlciBpdCBmb3Igc29tZSB0aW1l DQooSSBoYXZlIDIgcHJlcGFyZWQgcGF0Y2hlcywgdGhpcyBvbmUgd2hpY2gg aXMgbm90IG5hdHVyYWwsIHRoZSBvdGhlciBvbmx5IGFkZCBhIHZlcnkgZmV3 IGNvZGVzIGFuZCBsb29rIG5hdHVyYWwgYW5kIG1vcmUgYWNjZXB0YWJsZSAp LCANCmFuZCBjb21wYXJlIHRoZW0gKHRoZSBvdGhlciBvbmUgSSBuZWVkIHRv IHN1cHBvcnQgQ09ORF94eHggaW4gUklTQy1WIHBvcnQpLg0KDQpNYXliZSBp dCdzIGJldHRlciBlbmFibGUgQ09ORF94eHggaW4gUklTQy1WIHBvcnQgc28g dGhhdCB0aGUgY29kZXMgaW4gbWlkZGxlLWVuZCBsb29rIG11Y2ggbW9yZSBy ZWFzb25hYmxlID8NCkkgdGhpbmsgbWF5YmUgbmV4dCB0aW1lIEkgc2hvdWxk IGFzayB5b3UgZmlyc3QgYWJvdXQgdGhlIHNvbHV0aW9uIGJlZm9yZSBJIHNl bmQgdGhlIHBhdGNoDQoNCkxvb2tpbmcgZm9yd2FyZCB5b3VyIHN1Z2dlc3Rp b25zLg0KVGhhbmtzLg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpG cm9tOiBSaWNoYXJkIEJpZW5lcg0KRGF0ZTogMjAyMy0wNy0yNCAyMjozMw0K VG86IEp1LVpoZSBaaG9uZw0KQ0M6IGdjYy1wYXRjaGVzOyByaWNoYXJkLnNh bmRpZm9yZA0KU3ViamVjdDogUmU6IFtQQVRDSF0gVkVDVDogU3VwcG9ydCBD QUxMIHZlY3Rvcml6YXRpb24gZm9yIENPTkRfTEVOXyoNCk9uIE1vbiwgMjQg SnVsIDIwMjMsIGp1emhlLnpob25nQHJpdmFpLmFpIHdyb3RlOg0KIA0KPiBG cm9tOiBKdS1aaGUgWmhvbmcgPGp1emhlLnpob25nQHJpdmFpLmFpPg0KPiAN Cj4gSGksIFJpY2hhcmQgYW5kIFJpY2hpLg0KPiANCj4gVGhpcyBwYXRjaCBz dXBwb3J0cyBDQUxMIHZlY3Rvcml6YXRpb24gYnkgQ09ORF9MRU5fKi4NCj4g DQo+IENvbnNpZGVyIHRoaXMgZm9sbG93aW5nIGNhc2U6DQo+IHZvaWQgZm9v IChmbG9hdCAqIF9fcmVzdHJpY3QgYSwgZmxvYXQgKiBfX3Jlc3RyaWN0IGIs IGludCAqIF9fcmVzdHJpY3QgY29uZCwgaW50IG4pDQo+IHsNCj4gICBmb3Ig KGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gICAgIGlmIChjb25kW2ldKQ0K PiAgICAgICBhW2ldID0gYltpXSArIGFbaV07DQo+IH0NCj4gDQo+IA0KPiBP dXRwdXQgb2YgUklTQy1WICgzMi1iaXRzKSBnY2MgKHRydW5rKSAoQ29tcGls ZXIgIzMpDQo+IDxzb3VyY2U+OjU6MjE6IG1pc3NlZDogY291bGRuJ3QgdmVj dG9yaXplIGxvb3ANCj4gPHNvdXJjZT46NToyMTogbWlzc2VkOiBub3QgdmVj dG9yaXplZDogY29udHJvbCBmbG93IGluIGxvb3AuDQo+IA0KPiBBUk0gU1ZF Og0KPiANCj4gLi4uDQo+IG1hc2tfXzI3LjEwXzUxID0gdmVjdF9fNC45XzQ5 ICE9IHsgMCwgLi4uIH07DQo+IC4uLg0KPiB2ZWNfbWFza19hbmRfNTUgPSBs b29wX21hc2tfNDkgJiBtYXNrX18yNy4xMF81MTsNCj4gLi4uDQo+IHZlY3Rf XzkuMTdfNjIgPSAuQ09ORF9BREQgKHZlY19tYXNrX2FuZF81NSwgdmVjdF9f Ni4xM181NiwgdmVjdF9fOC4xNl82MCwgdmVjdF9fNi4xM181Nik7DQo+IA0K PiBGb3IgUlZWLCB3ZSB3YW50IElSIGFzIGZvbGxvd3M6DQo+IA0KPiAuLi4N Cj4gXzY4ID0gLlNFTEVDVF9WTCAoaXZ0bXBfNjYsIFBPTFlfSU5UX0NTVCBb NCwgNF0pOw0KPiAuLi4NCj4gbWFza19fMjcuMTBfNTEgPSB2ZWN0X180Ljlf NDkgIT0geyAwLCAuLi4gfTsNCj4gLi4uDQo+IHZlY3RfXzkuMTdfNjAgPSAu Q09ORF9MRU5fQUREIChtYXNrX18yNy4xMF81MSwgdmVjdF9fNi4xM181NSwg dmVjdF9fOC4xNl81OSwgdmVjdF9fNi4xM181NSwgXzY4LCAwKTsNCj4gLi4u DQo+IA0KPiBCb3RoIGxlbiBhbmQgbWFzayBvZiBDT05EX0xFTl9BREQgYXJl IHJlYWwgbm90IGR1bW15Lg0KPiANCj4gZ2NjL0NoYW5nZUxvZzoNCj4gDQo+ ICAgICAgICAgKiB0cmVlLWlmLWNvbnYuY2MgKGlmY3Z0X2Nhbl9wcmVkaWNh dGUpOiBFbmFibGUgaWZjdnQgZm9yIENPTkRfTEVOXyouDQo+ICAgICAgICAg KiB0cmVlLXZlY3Qtc3RtdHMuY2MgKHZlY3Rvcml6YWJsZV9pbnRlcm5hbF9m dW5jdGlvbik6IEFwcGx5IENPTkRfTEVOXyouDQo+ICAgICAgICAgKHZlY3Rv cml6YWJsZV9jYWxsKTogRGl0dG8uDQo+IA0KPiAtLS0NCj4gIGdjYy90cmVl LWlmLWNvbnYuY2MgICAgfCAgNyArKystDQo+ICBnY2MvdHJlZS12ZWN0LXN0 bXRzLmNjIHwgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tDQo+ICAyIGZpbGVzIGNoYW5nZWQsIDgzIGluc2VydGlvbnMo KyksIDggZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Ry ZWUtaWYtY29udi5jYyBiL2djYy90cmVlLWlmLWNvbnYuY2MNCj4gaW5kZXgg Nzk5ZjA3MTk2NWUuLjJlMTc2NThiOWVkIDEwMDY0NA0KPiAtLS0gYS9nY2Mv dHJlZS1pZi1jb252LmNjDQo+ICsrKyBiL2djYy90cmVlLWlmLWNvbnYuY2MN Cj4gQEAgLTEwMTAsOCArMTAxMCwxMSBAQCBpZmN2dF9jYW5fcHJlZGljYXRl IChnaW1wbGUgKnN0bXQpDQo+ICAgIGlmICghdHlwZXNfY29tcGF0aWJsZV9w IChsaHNfdHlwZSwgcmhzX3R5cGUpKQ0KPiAgICAgIHJldHVybiBmYWxzZTsN Cj4gICAgaW50ZXJuYWxfZm4gY29uZF9mbiA9IGdldF9jb25kaXRpb25hbF9p bnRlcm5hbF9mbiAoY29kZSk7DQo+IC0gIHJldHVybiAoY29uZF9mbiAhPSBJ Rk5fTEFTVA0KPiAtICAgJiYgdmVjdG9yaXplZF9pbnRlcm5hbF9mbl9zdXBw b3J0ZWRfcCAoY29uZF9mbiwgbGhzX3R5cGUpKTsNCj4gKyAgaW50ZXJuYWxf Zm4gY29uZF9sZW5fZm4gPSBnZXRfY29uZGl0aW9uYWxfbGVuX2ludGVybmFs X2ZuIChjb2RlKTsNCj4gKyAgcmV0dXJuICgoY29uZF9mbiAhPSBJRk5fTEFT VA0KPiArICAgICYmIHZlY3Rvcml6ZWRfaW50ZXJuYWxfZm5fc3VwcG9ydGVk X3AgKGNvbmRfZm4sIGxoc190eXBlKSkNCj4gKyAgIHx8IChjb25kX2xlbl9m biAhPSBJRk5fTEFTVA0KPiArICAgICAgICYmIHZlY3Rvcml6ZWRfaW50ZXJu YWxfZm5fc3VwcG9ydGVkX3AgKGNvbmRfbGVuX2ZuLCBsaHNfdHlwZSkpKTsN Cj4gIH0NCj4gIA0KPiAgLyogUmV0dXJuIHRydWUgd2hlbiBTVE1UIGlzIGlm LWNvbnZlcnRpYmxlLg0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1z dG10cy5jYyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gaW5kZXggZWQy OGZiZGNlZDMuLjE1NDAxZGRiNjgyIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJl ZS12ZWN0LXN0bXRzLmNjDQo+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMu Y2MNCj4gQEAgLTE1NDMsMTAgKzE1NDMsMjcgQEAgdmVjdG9yaXphYmxlX2lu dGVybmFsX2Z1bmN0aW9uIChjb21iaW5lZF9mbiBjZm4sIHRyZWUgZm5kZWNs LA0KPiAgdHJlZSB2ZWN0eXBlX291dCwgdHJlZSB2ZWN0eXBlX2luKQ0KPiAg ew0KPiAgICBpbnRlcm5hbF9mbiBpZm47DQo+ICsgIGludGVybmFsX2ZuIGxl bl9pZm4gPSBJRk5fTEFTVDsNCj4gICAgaWYgKGludGVybmFsX2ZuX3AgKGNm bikpDQo+IC0gICAgaWZuID0gYXNfaW50ZXJuYWxfZm4gKGNmbik7DQo+ICsg ICAgew0KPiArICAgICAgaWZuID0gYXNfaW50ZXJuYWxfZm4gKGNmbik7DQo+ ICsgICAgICB0cmVlX2NvZGUgY29kZSA9IGNvbmRpdGlvbmFsX2ludGVybmFs X2ZuX2NvZGUgKGlmbik7DQo+ICsgICAgICBsZW5faWZuID0gZ2V0X2NvbmRp dGlvbmFsX2xlbl9pbnRlcm5hbF9mbiAoY29kZSk7DQo+ICsgICAgfQ0KPiAg ICBlbHNlDQo+ICAgICAgaWZuID0gYXNzb2NpYXRlZF9pbnRlcm5hbF9mbiAo Zm5kZWNsKTsNCiANClRoaXMgZnVuY3Rpb24gZG9lc24ndCBzZWVtIHRvIGNh cmUgYWJvdXQgY29uZGl0aW9uYWwgdmVjdG9yaXphdGlvbg0Kc3VwcG9ydCwg c28gd2h5IGFyZSB5b3UgY2hhbmdpbmcgaXQ/DQogDQo+ICsgIGlmIChsZW5f aWZuICE9IElGTl9MQVNUICYmIGRpcmVjdF9pbnRlcm5hbF9mbl9wIChsZW5f aWZuKSkNCj4gKyAgICB7DQo+ICsgICAgICBjb25zdCBkaXJlY3RfaW50ZXJu YWxfZm5faW5mbyAmaW5mbyA9IGRpcmVjdF9pbnRlcm5hbF9mbiAobGVuX2lm bik7DQo+ICsgICAgICBpZiAoaW5mby52ZWN0b3JpemFibGUpDQo+ICsgew0K PiArICAgdHJlZSB0eXBlMCA9IChpbmZvLnR5cGUwIDwgMCA/IHZlY3R5cGVf b3V0IDogdmVjdHlwZV9pbik7DQo+ICsgICB0cmVlIHR5cGUxID0gKGluZm8u dHlwZTEgPCAwID8gdmVjdHlwZV9vdXQgOiB2ZWN0eXBlX2luKTsNCj4gKyAg IGlmIChkaXJlY3RfaW50ZXJuYWxfZm5fc3VwcG9ydGVkX3AgKGxlbl9pZm4s IHRyZWVfcGFpciAodHlwZTAsIHR5cGUxKSwNCj4gKyAgICAgICBPUFRJTUla RV9GT1JfU1BFRUQpKQ0KPiArICAgICByZXR1cm4gbGVuX2lmbjsNCj4gKyB9 DQo+ICsgICAgfQ0KPiAgICBpZiAoaWZuICE9IElGTl9MQVNUICYmIGRpcmVj dF9pbnRlcm5hbF9mbl9wIChpZm4pKQ0KPiAgICAgIHsNCj4gICAgICAgIGNv bnN0IGRpcmVjdF9pbnRlcm5hbF9mbl9pbmZvICZpbmZvID0gZGlyZWN0X2lu dGVybmFsX2ZuIChpZm4pOw0KPiBAQCAtMzUzOCw4ICszNTU1LDEwIEBAIHZl Y3Rvcml6YWJsZV9jYWxsICh2ZWNfaW5mbyAqdmluZm8sDQo+ICAgIGdjY19h c3NlcnQgKG5jb3BpZXMgPj0gMSk7DQo+ICANCj4gICAgaW50IHJlZHVjX2lk eCA9IFNUTVRfVklORk9fUkVEVUNfSURYIChzdG10X2luZm8pOw0KPiArICBp bnQgbGVuX2luZGV4ID0gaW50ZXJuYWxfZm5fbGVuX2luZGV4IChpZm4pOw0K IA0KTm90ZSB0cmFkaXRpb25hbGx5IG5vbi1MRU4gZm5zIHdvdWxkIHJldHVy biAtMSBoZXJlLCBzbyAuLi4NCiANCj4gICAgaW50ZXJuYWxfZm4gY29uZF9m biA9IGdldF9jb25kaXRpb25hbF9pbnRlcm5hbF9mbiAoaWZuKTsNCj4gICAg dmVjX2xvb3BfbWFza3MgKm1hc2tzID0gKGxvb3BfdmluZm8gPyAmTE9PUF9W SU5GT19NQVNLUyAobG9vcF92aW5mbykgOiBOVUxMKTsNCj4gKyAgdmVjX2xv b3BfbGVucyAqbGVucyA9IChsb29wX3ZpbmZvID8gJkxPT1BfVklORk9fTEVO UyAobG9vcF92aW5mbykgOiBOVUxMKTsNCj4gICAgaWYgKCF2ZWNfc3RtdCkg LyogdHJhbnNmb3JtYXRpb24gbm90IHJlcXVpcmVkLiAgKi8NCj4gICAgICB7 DQo+ICAgICAgICBpZiAoc2xwX25vZGUpDQo+IEBAIC0zNTg1LDggKzM2MDQs MTIgQEAgdmVjdG9yaXphYmxlX2NhbGwgKHZlY19pbmZvICp2aW5mbywNCiAN Cmluc3RlYWQgdGhlcmUncyBjb2RlIGhlcmUgdGhhdCBjaGVja3MgZm9yIHRo ZSAuQ09ORF94eHggY2FzZSBzbyB5b3Ugc2hvdWxkDQphbWVudCBpdCBmb3Ig dGhlIGxlbiBjYXNlIGFzIHdlbGw/DQogDQo+ICAgICAgICB0cmVlIHNjYWxh cl9tYXNrID0gTlVMTF9UUkVFOw0KPiAgICAgICAgaWYgKG1hc2tfb3BubyA+ PSAwKQ0KPiAgc2NhbGFyX21hc2sgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXRf aW5mby0+c3RtdCwgbWFza19vcG5vKTsNCj4gLSAgICAgICB2ZWN0X3JlY29y ZF9sb29wX21hc2sgKGxvb3BfdmluZm8sIG1hc2tzLCBudmVjdG9ycywNCj4g LSAgICAgIHZlY3R5cGVfb3V0LCBzY2FsYXJfbWFzayk7DQo+ICsgICAgICAg aWYgKGxlbl9pbmRleCA+PSAwKQ0KPiArIHZlY3RfcmVjb3JkX2xvb3BfbGVu IChsb29wX3ZpbmZvLCBsZW5zLCBudmVjdG9ycywgdmVjdHlwZV9vdXQsDQo+ ICsgICAgICAgMSk7DQo+ICsgICAgICAgZWxzZQ0KPiArIHZlY3RfcmVjb3Jk X2xvb3BfbWFzayAobG9vcF92aW5mbywgbWFza3MsIG52ZWN0b3JzLCB2ZWN0 eXBlX291dCwNCj4gKyAgICAgICAgc2NhbGFyX21hc2spOw0KPiAgICAgIH0N Cj4gIH0NCj4gICAgICAgIHJldHVybiB0cnVlOw0KPiBAQCAtMzYwMiw4ICsz NjI1LDE2IEBAIHZlY3Rvcml6YWJsZV9jYWxsICh2ZWNfaW5mbyAqdmluZm8s DQo+ICAgIHZlY19kZXN0ID0gdmVjdF9jcmVhdGVfZGVzdGluYXRpb25fdmFy IChzY2FsYXJfZGVzdCwgdmVjdHlwZV9vdXQpOw0KPiAgDQo+ICAgIGJvb2wg bWFza2VkX2xvb3BfcCA9IGxvb3BfdmluZm8gJiYgTE9PUF9WSU5GT19GVUxM WV9NQVNLRURfUCAobG9vcF92aW5mbyk7DQo+ICsgIGJvb2wgbGVuX2xvb3Bf cCA9IGxvb3BfdmluZm8gJiYgTE9PUF9WSU5GT19GVUxMWV9XSVRIX0xFTkdU SF9QIChsb29wX3ZpbmZvKTsNCj4gICAgdW5zaWduZWQgaW50IHZlY3RfbmFy Z3MgPSBuYXJnczsNCj4gLSAgaWYgKG1hc2tlZF9sb29wX3AgJiYgcmVkdWNf aWR4ID49IDApDQo+ICsgIGlmIChsZW5faW5kZXgpDQogDQp3aGF0IGFib3V0 IHJlZHVjX2luZHg/ICBXaHkgY2hlY2sgbGVuX2luZGVzIGFuZCBub3QgbGVu X2xvb3BfcD8NCiANCi4uLiBjaGVja2luZyBsZW5faW5kZXggaXMgZ29pbmcg dG8gYmUgdHJ1ZSBmb3IgLTEsIHlvdSBwcm9iYWJseSB3b3VsZA0Kd2FudCBs ZW5faW5kZXggIT0gLTEgdGhlbj8NCiANCj4gKyAgICB7DQo+ICsgICAgICAv KiBDT05EX0FERCAtLT4gQ09ORF9MRU5fQUREIHdpdGggMiBtb3JlIGFyZ3Mg KExFTiArIEJJQVMpLg0KPiArIEZJWE1FOiBXZSBkb24ndCBzdXBwb3J0IEZN QVggLS0+IENPTkRfTEVOX0ZNQVggeWV0IHdoaWNoDQo+ICsgbmVlZHMgNCBt b3JlIGFyZ3MgKE1BU0sgKyBFTFNFICsgTEVOICsgQklBUykuICAqLw0KPiAr ICAgICAgdmVjdF9uYXJncyArPSAyOw0KPiArICAgIH0NCj4gKyAgZWxzZSBp ZiAobWFza2VkX2xvb3BfcCAmJiByZWR1Y19pZHggPj0gMCkNCj4gICAgICB7 DQo+ICAgICAgICBpZm4gPSBjb25kX2ZuOw0KPiAgICAgICAgdmVjdF9uYXJn cyArPSAyOw0KPiBAQCAtMzY3MCw3ICszNzAxLDI5IEBAIHZlY3Rvcml6YWJs ZV9jYWxsICh2ZWNfaW5mbyAqdmluZm8sDQo+ICAgICAgfQ0KPiAgICBlbHNl DQo+ICAgICAgew0KPiAtICAgICAgIGlmIChtYXNrX29wbm8gPj0gMCAmJiBt YXNrZWRfbG9vcF9wKQ0KPiArICAgICAgIGlmIChsZW5faW5kZXgpDQogDQpz ZWUgYWJvdmUNCiANCj4gKyB7DQo+ICsgICB0cmVlIGxlbiwgYmlhczsNCj4g KyAgIGlmIChsZW5fbG9vcF9wKQ0KPiArICAgICBsZW4NCj4gKyAgICAgICA9 IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBnc2ksIGxlbnMsDQo+ ICsgICAgbmNvcGllcywgdmVjdHlwZV9vdXQsIGosIDEpOw0KPiArICAgZWxz ZQ0KPiArICAgICB7DQo+ICsgICAgICAgLyogRHVtbXkgTEVOLiAgKi8NCj4g KyAgICAgICB0cmVlIGl2X3R5cGUNCj4gKyA9IExPT1BfVklORk9fUkdST1VQ X0lWX1RZUEUgKGxvb3BfdmluZm8pOw0KPiArICAgICAgIGxlbg0KPiArID0g YnVpbGRfaW50X2NzdCAoaXZfdHlwZSwgVFlQRV9WRUNUT1JfU1VCUEFSVFMg KA0KPiArICAgICB2ZWN0eXBlX291dCkpOw0KPiArICAgICB9DQo+ICsgICBz aWduZWQgY2hhciBiaWFzdmFsDQo+ICsgICAgID0gTE9PUF9WSU5GT19QQVJU SUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+ICsgICBiaWFz ID0gYnVpbGRfaW50X2NzdCAoaW50UUlfdHlwZV9ub2RlLCBiaWFzdmFsKTsN Cj4gKyAgIHZhcmdzW3ZhcmcrK10gPSBsZW47DQo+ICsgICB2YXJnc1t2YXJn KytdID0gYmlhczsNCj4gKyB9DQo+ICsgICAgICAgZWxzZSBpZiAobWFza19v cG5vID49IDAgJiYgbWFza2VkX2xvb3BfcCkNCj4gIHsNCj4gICAgdW5zaWdu ZWQgaW50IHZlY19udW0gPSB2ZWNfb3BybmRzMC5sZW5ndGggKCk7DQo+ICAg IC8qIEFsd2F5cyB0cnVlIGZvciBTTFAuICAqLw0KPiBAQCAtMzcxOCw3ICsz NzcxLDI2IEBAIHZlY3Rvcml6YWJsZV9jYWxsICh2ZWNfaW5mbyAqdmluZm8s DQo+ICAgIGlmIChtYXNrZWRfbG9vcF9wICYmIHJlZHVjX2lkeCA+PSAwKQ0K PiAgICAgIHZhcmdzW3ZhcmcrK10gPSB2YXJnc1tyZWR1Y19pZHggKyAxXTsN Cj4gIA0KPiAtICAgaWYgKG1hc2tfb3BubyA+PSAwICYmIG1hc2tlZF9sb29w X3ApDQo+ICsgICBpZiAobGVuX2luZGV4KQ0KPiArICAgICB7DQo+ICsgICAg ICAgdHJlZSBsZW4sIGJpYXM7DQo+ICsgICAgICAgaWYgKGxlbl9sb29wX3Ap DQo+ICsgbGVuID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGdz aSwgbGVucywgbmNvcGllcywNCj4gKyB2ZWN0eXBlX291dCwgaiwgMSk7DQo+ ICsgICAgICAgZWxzZQ0KPiArIHsNCj4gKyAgIC8qIER1bW15IExFTi4gICov DQo+ICsgICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9U WVBFIChsb29wX3ZpbmZvKTsNCj4gKyAgIGxlbiA9IGJ1aWxkX2ludF9jc3Qg KGl2X3R5cGUsDQo+ICsgICAgICAgIFRZUEVfVkVDVE9SX1NVQlBBUlRTICh2 ZWN0eXBlX291dCkpOw0KPiArIH0NCj4gKyAgICAgICBzaWduZWQgY2hhciBi aWFzdmFsDQo+ICsgPSBMT09QX1ZJTkZPX1BBUlRJQUxfTE9BRF9TVE9SRV9C SUFTIChsb29wX3ZpbmZvKTsNCj4gKyAgICAgICBiaWFzID0gYnVpbGRfaW50 X2NzdCAoaW50UUlfdHlwZV9ub2RlLCBiaWFzdmFsKTsNCj4gKyAgICAgICB2 YXJnc1t2YXJnKytdID0gbGVuOw0KPiArICAgICAgIHZhcmdzW3ZhcmcrK10g PSBiaWFzOw0KIA0KIA0KWW91IGFyZSBub3QgYWN0dWFsbHkgdXNpbmcgbGVu X2luZGV4IHRvIHBsYWNlIHRoZSBhcmd1bWVudHMuICBTZWUNCmhvdyBtYXNr X29wbm8gaXMgdXNlZC4NCiANCllvdSBhcmUgcHJvZHVjaW5nIHBhdGNoZXMg dG9vIHF1aWNrbHksIHBsZWFzZSBkb3VibGUtY2hlY2sgd2hhdCB5b3UgZGlk DQpiZWZvcmUgcG9zdGluZyBmb3IgcmV2aWV3Lg0KIA0KVGhhbmtzLA0KUmlj aGFyZC4NCiANCj4gKyAgICAgfQ0KPiArICAgZWxzZSBpZiAobWFza19vcG5v ID49IDAgJiYgbWFza2VkX2xvb3BfcCkNCj4gICAgICB7DQo+ICAgICAgICB0 cmVlIG1hc2sgPSB2ZWN0X2dldF9sb29wX21hc2sgKGxvb3BfdmluZm8sIGdz aSwgbWFza3MsIG5jb3BpZXMsDQo+ICAgICAgICB2ZWN0eXBlX291dCwgaik7 DQo+IA0KIA0K ------=_001_NextPart818146060674_=------