From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34]) by sourceware.org (Postfix) with ESMTPS id B3AFD3858D35 for ; Tue, 4 Jul 2023 09:55:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B3AFD3858D35 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: bizesmtp70t1688464523thi5u1ud Received: from LAPTOP-EPITNQBU ( [58.60.1.5]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 04 Jul 2023 17:55:22 +0800 (CST) X-QQ-SSF: 01400000000000G0T000000A0000000 X-QQ-FEAT: wzCmCDsTDlMqRdeXah2x3xtxLrz+yZLX29SyIysYcZ4PF5oPHliYTxmUX0v/q 0ipajDERrOEfpUbSjV8Ds5yROf/lt3btoD5elALEZF5Cf6ggBMyu1RznT4U8YdEkwPaGRKU tSHZzG4t9TnNTmvugSMo72VZPrtLopPPEOMz2mkXTsKxIkKjA2LfdUKtRLZeXkBn7QeeKu4 ixyVaIpJJ1GFbVMmjmWlRwVfTCs/OrAoFo/6R/iBZkziiT/nB1xEX9ZZLPXX6IrPT65rcDZ dKXN32CHUrwcUjYEvUSZMKP1CWVOUot1lKMXrxVX8+jVbD9WKHNYn9dr2gMfOlxow+8yoRe hOfoqb9UREPjoEHqJ1CJ2dnGvuxmKqDw0ufFSEy28E/8vyRQOoGvgMee0Lb4Et1MRlTloQZ YsIlB+ZiQdEekWcKhCq3zPwwcyW2rbib X-QQ-GoodBg: 2 X-BIZMAIL-ID: 8887956835750100262 Date: Tue, 4 Jul 2023 17:55:22 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: gcc-patches , richard.sandiford Subject: Re: Re: [PATCH V2] VECT: Apply LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer References: <20230704075320.195407-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: 38683A0E-B784-4C98-A69C-D492CF761F55 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <581171032D7F80CB+2023070417552205880049@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart836761382168_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,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 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_NextPart836761382168_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 SGksIFJpY2hpLg0KDQpUaGFua3Mgc28gbXVjaC4gSSBoYXZlIGFkZHJlc3Nl ZCBjb21tZW50cyBhbmQgc2VudCBWMyBwYXRjaDoNCmh0dHBzOi8vZ2NjLmdu dS5vcmcvcGlwZXJtYWlsL2djYy1wYXRjaGVzLzIwMjMtSnVseS82MjM1NjYu aHRtbCANCg0KVGhhbmtzLg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQog DQpGcm9tOiBSaWNoYXJkIEJpZW5lcg0KRGF0ZTogMjAyMy0wNy0wNCAxNzoy Nw0KVG86IEp1LVpoZSBaaG9uZw0KQ0M6IGdjYy1wYXRjaGVzOyByaWNoYXJk LnNhbmRpZm9yZA0KU3ViamVjdDogUmU6IFtQQVRDSCBWMl0gVkVDVDogQXBw bHkgTEVOX01BU0tfR0FUSEVSX0xPQUQvU0NBVFRFUl9TVE9SRSBpbnRvIHZl Y3Rvcml6ZXINCk9uIFR1ZSwgNCBKdWwgMjAyMywganV6aGUuemhvbmdAcml2 YWkuYWkgd3JvdGU6DQogDQo+IEZyb206IEp1LVpoZSBaaG9uZyA8anV6aGUu emhvbmdAcml2YWkuYWk+DQo+IA0KPiBIaSwgUmljaGFyZCBhbmQgUmljaGku DQo+IA0KPiBUaGUgbGVuX21hc2tfZ2F0aGVyX2xvYWQvbGVuX21hc2tfc2Nh dHRlcl9zdG9yZSBwYXR0ZXJucyBoYXZlIGJlZW4gYWRkZWQuDQo+IE5vdywg dGhpcyBwYXRjaCBhcHBsaWVzIHRoZW0gaW50byB2ZWN0b3JpemVyLg0KPiAN Cj4gSGVyZSBpcyB0aGUgZXhhbXBsZToNCj4gDQo+IHZvaWQNCj4gZiAoaW50 ICpyZXN0cmljdCBhLA0KPiAgICBpbnQgKnJlc3RyaWN0IGIsIGludCBuLA0K PiAgICBpbnQgYmFzZSwgaW50IHN0ZXAsDQo+ICAgIGludCAqcmVzdHJpY3Qg Y29uZCkNCj4gew0KPiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0K PiAgICAgew0KPiAgICAgICBpZiAoY29uZFtpXSkNCj4gICAgICAgICBhW2kg KiA0XSA9IGJbaV07DQo+ICAgICB9DQo+IH0NCj4gDQo+IEdpbXBsZSBJUjoN Cj4gDQo+ICAgPGJiIDM+IFtsb2NhbCBjb3VudDogMTA1MTE5MzI0XToNCj4g ICBfNTggPSAodW5zaWduZWQgbG9uZykgbl8xMyhEKTsNCj4gDQo+ICAgPGJi IDQ+IFtsb2NhbCBjb3VudDogNjMwNzE1OTQ1XToNCj4gICAjIHZlY3RwX2Nv bmQuN180NSA9IFBISSA8dmVjdHBfY29uZC43XzQ2KDQpLCBjb25kXzE0KEQp KDMpPg0KPiAgICMgdmVjdHBfYi4xMV81MSA9IFBISSA8dmVjdHBfYi4xMV81 Mig0KSwgYl8xNShEKSgzKT4NCj4gICAjIHZlY3RwX2EuMTRfNTUgPSBQSEkg PHZlY3RwX2EuMTRfNTYoNCksIGFfMTYoRCkoMyk+DQo+ICAgIyBpdnRtcF81 OSA9IFBISSA8aXZ0bXBfNjAoNCksIF81OCgzKT4NCj4gICBfNjEgPSAuU0VM RUNUX1ZMIChpdnRtcF81OSwgUE9MWV9JTlRfQ1NUIFsyLCAyXSk7DQo+ICAg aXZ0bXBfNDQgPSBfNjEgKiA0Ow0KPiAgIHZlY3RfXzQuOV80NyA9IC5MRU5f TUFTS19MT0FEICh2ZWN0cF9jb25kLjdfNDUsIDMyQiwgXzYxLCAwLCB7IC0x LCAuLi4gfSk7DQo+ICAgbWFza19fMjQuMTBfNDkgPSB2ZWN0X180LjlfNDcg IT0geyAwLCAuLi4gfTsNCj4gICB2ZWN0X184LjEzXzUzID0gLkxFTl9NQVNL X0xPQUQgKHZlY3RwX2IuMTFfNTEsIDMyQiwgXzYxLCAwLCBtYXNrX18yNC4x MF80OSk7DQo+ICAgaXZ0bXBfNTQgPSBfNjEgKiAxNjsNCj4gICAuTEVOX01B U0tfU0NBVFRFUl9TVE9SRSAodmVjdHBfYS4xNF81NSwgeyAwLCAxNiwgMzIs IC4uLiB9LCAxLCB2ZWN0X184LjEzXzUzLCBfNjEsIDAsIG1hc2tfXzI0LjEw XzQ5KTsNCj4gICB2ZWN0cF9jb25kLjdfNDYgPSB2ZWN0cF9jb25kLjdfNDUg KyBpdnRtcF80NDsNCj4gICB2ZWN0cF9iLjExXzUyID0gdmVjdHBfYi4xMV81 MSArIGl2dG1wXzQ0Ow0KPiAgIHZlY3RwX2EuMTRfNTYgPSB2ZWN0cF9hLjE0 XzU1ICsgaXZ0bXBfNTQ7DQo+ICAgaXZ0bXBfNjAgPSBpdnRtcF81OSAtIF82 MTsNCj4gICBpZiAoaXZ0bXBfNjAgIT0gMCkNCj4gICAgIGdvdG8gPGJiIDQ+ OyBbODMuMzMlXQ0KPiAgIGVsc2UNCj4gICAgIGdvdG8gPGJiIDU+OyBbMTYu NjclXQ0KPiANCj4gZ2NjL0NoYW5nZUxvZzoNCj4gDQo+ICAgICAgICAgKiBv cHRhYnMtcXVlcnkuY2MgKHN1cHBvcnRzX3ZlY19nYXRoZXJfbG9hZF9wKTog QXBwbHkgTEVOX01BU0tfR0FUSEVSX0xPQUQvU0NBVFRFUl9TVE9SRSBpbnRv IHZlY3Rvcml6ZXIuDQo+ICAgICAgICAgKHN1cHBvcnRzX3ZlY19zY2F0dGVy X3N0b3JlX3ApOiBEaXR0by4NCj4gICAgICAgICAqIHRyZWUtdmVjdC1kYXRh LXJlZnMuY2MgKHZlY3RfZ2F0aGVyX3NjYXR0ZXJfZm5fcCk6IERpdHRvLg0K PiAgICAgICAgICogdHJlZS12ZWN0LXN0bXRzLmNjIChjaGVja19sb2FkX3N0 b3JlX2Zvcl9wYXJ0aWFsX3ZlY3RvcnMpOiBEaXR0by4NCj4gICAgICAgICAo dmVjdF9nZXRfc3RyaWRlZF9sb2FkX3N0b3JlX29wcyk6IERpdHRvLg0KPiAg ICAgICAgICh2ZWN0b3JpemFibGVfc3RvcmUpOiBEaXR0by4NCj4gICAgICAg ICAodmVjdG9yaXphYmxlX2xvYWQpOiBEaXR0by4NCj4gDQo+IC0tLQ0KPiAg Z2NjL29wdGFicy1xdWVyeS5jYyAgICAgICAgfCAgIDIgKw0KPiAgZ2NjL3Ry ZWUtdmVjdC1kYXRhLXJlZnMuY2MgfCAgMTUgKysrLQ0KPiAgZ2NjL3RyZWUt dmVjdC1zdG10cy5jYyAgICAgfCAxMzYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLQ0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMzQgaW5z ZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvZ2NjL29wdGFicy1xdWVyeS5jYyBiL2djYy9vcHRhYnMtcXVlcnkuY2MN Cj4gaW5kZXggMmZkZDBkMzQzNTQuLmJmMWY0ODRlODc0IDEwMDY0NA0KPiAt LS0gYS9nY2Mvb3B0YWJzLXF1ZXJ5LmNjDQo+ICsrKyBiL2djYy9vcHRhYnMt cXVlcnkuY2MNCj4gQEAgLTY3Niw2ICs2NzYsNyBAQCBzdXBwb3J0c192ZWNf Z2F0aGVyX2xvYWRfcCAobWFjaGluZV9tb2RlIG1vZGUpDQo+ICAgICAgdGhp c19mbl9vcHRhYnMtPnN1cHBvcnRzX3ZlY19nYXRoZXJfbG9hZFttb2RlXQ0K PiAgICAgICAgPSAoc3VwcG9ydHNfdmVjX2NvbnZlcnRfb3B0YWJfcCAoZ2F0 aGVyX2xvYWRfb3B0YWIsIG1vZGUpDQo+ICB8fCBzdXBwb3J0c192ZWNfY29u dmVydF9vcHRhYl9wIChtYXNrX2dhdGhlcl9sb2FkX29wdGFiLCBtb2RlKQ0K PiArIHx8IHN1cHBvcnRzX3ZlY19jb252ZXJ0X29wdGFiX3AgKGxlbl9tYXNr X2dhdGhlcl9sb2FkX29wdGFiLCBtb2RlKQ0KPiAgPyAxIDogLTEpOw0KPiAg DQo+ICAgIHJldHVybiB0aGlzX2ZuX29wdGFicy0+c3VwcG9ydHNfdmVjX2dh dGhlcl9sb2FkW21vZGVdID4gMDsNCj4gQEAgLTY5Miw2ICs2OTMsNyBAQCBz dXBwb3J0c192ZWNfc2NhdHRlcl9zdG9yZV9wIChtYWNoaW5lX21vZGUgbW9k ZSkNCj4gICAgICB0aGlzX2ZuX29wdGFicy0+c3VwcG9ydHNfdmVjX3NjYXR0 ZXJfc3RvcmVbbW9kZV0NCj4gICAgICAgID0gKHN1cHBvcnRzX3ZlY19jb252 ZXJ0X29wdGFiX3AgKHNjYXR0ZXJfc3RvcmVfb3B0YWIsIG1vZGUpDQo+ICB8 fCBzdXBwb3J0c192ZWNfY29udmVydF9vcHRhYl9wIChtYXNrX3NjYXR0ZXJf c3RvcmVfb3B0YWIsIG1vZGUpDQo+ICsgfHwgc3VwcG9ydHNfdmVjX2NvbnZl cnRfb3B0YWJfcCAobGVuX21hc2tfc2NhdHRlcl9zdG9yZV9vcHRhYiwgbW9k ZSkNCj4gID8gMSA6IC0xKTsNCj4gIA0KPiAgICByZXR1cm4gdGhpc19mbl9v cHRhYnMtPnN1cHBvcnRzX3ZlY19zY2F0dGVyX3N0b3JlW21vZGVdID4gMDsN Cj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtZGF0YS1yZWZzLmNjIGIv Z2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MNCj4gaW5kZXggZWJlOTM4MzJi MWUuLjhkMzJlYjNjODNiIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0 LWRhdGEtcmVmcy5jYw0KPiArKysgYi9nY2MvdHJlZS12ZWN0LWRhdGEtcmVm cy5jYw0KPiBAQCAtMzg3MywxNiArMzg3MywyNCBAQCB2ZWN0X2dhdGhlcl9z Y2F0dGVyX2ZuX3AgKHZlY19pbmZvICp2aW5mbywgYm9vbCByZWFkX3AsIGJv b2wgbWFza2VkX3AsDQo+ICAgICAgcmV0dXJuIGZhbHNlOw0KPiAgDQo+ICAg IC8qIFdvcmsgb3V0IHdoaWNoIGZ1bmN0aW9uIHdlIG5lZWQuICAqLw0KPiAt ICBpbnRlcm5hbF9mbiBpZm4sIGFsdF9pZm47DQo+ICsgIGludGVybmFsX2Zu IGlmbiwgYWx0X2lmbiwgbGVuX21hc2tfaWZuOw0KPiAgICBpZiAocmVhZF9w KQ0KPiAgICAgIHsNCj4gICAgICAgIGlmbiA9IG1hc2tlZF9wID8gSUZOX01B U0tfR0FUSEVSX0xPQUQgOiBJRk5fR0FUSEVSX0xPQUQ7DQo+ICAgICAgICBh bHRfaWZuID0gSUZOX01BU0tfR0FUSEVSX0xPQUQ7DQo+ICsgICAgICAvKiBX aGVuIHRhcmdldCBzdXBwb3J0cyBMRU5fTUFTS19HQVRIRVJfTE9BRCwgd2Ug YWx3YXlzDQo+ICsgdXNlIExFTl9NQVNLX0dBVEhFUl9MT0FEIHJlZ2FyZGxl c3Mgd2hldGhlciBsZW4gYW5kDQo+ICsgbWFzayBhcmUgdmFsaWQgb3Igbm90 LiAgKi8NCj4gKyAgICAgIGxlbl9tYXNrX2lmbiA9IElGTl9MRU5fTUFTS19H QVRIRVJfTE9BRDsNCj4gICAgICB9DQo+ICAgIGVsc2UNCj4gICAgICB7DQo+ ICAgICAgICBpZm4gPSBtYXNrZWRfcCA/IElGTl9NQVNLX1NDQVRURVJfU1RP UkUgOiBJRk5fU0NBVFRFUl9TVE9SRTsNCj4gICAgICAgIGFsdF9pZm4gPSBJ Rk5fTUFTS19TQ0FUVEVSX1NUT1JFOw0KPiArICAgICAgLyogV2hlbiB0YXJn ZXQgc3VwcG9ydHMgTEVOX01BU0tfU0NBVFRFUl9TVE9SRSwgd2UgYWx3YXlz DQo+ICsgdXNlIExFTl9NQVNLX1NDQVRURVJfU1RPUkUgcmVnYXJkbGVzcyB3 aGV0aGVyIGxlbiBhbmQNCj4gKyBtYXNrIGFyZSB2YWxpZCBvciBub3QuICAq Lw0KPiArICAgICAgbGVuX21hc2tfaWZuID0gSUZOX0xFTl9NQVNLX1NDQVRU RVJfU1RPUkU7DQo+ICAgICAgfQ0KPiAgDQo+ICAgIGZvciAoOzspDQo+IEBA IC0zODkzLDcgKzM5MDEsMTAgQEAgdmVjdF9nYXRoZXJfc2NhdHRlcl9mbl9w ICh2ZWNfaW5mbyAqdmluZm8sIGJvb2wgcmVhZF9wLCBib29sIG1hc2tlZF9w LA0KPiAgDQo+ICAgICAgICAvKiBUZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBz dXBwb3J0cyB0aGlzIGNvbWJpbmF0aW9uLiAgKi8NCj4gICAgICAgIGlmIChp bnRlcm5hbF9nYXRoZXJfc2NhdHRlcl9mbl9zdXBwb3J0ZWRfcCAoaWZuLCB2 ZWN0eXBlLCBtZW1vcnlfdHlwZSwNCj4gLSAgIG9mZnNldF92ZWN0eXBlLCBz Y2FsZSkpDQo+ICsgICBvZmZzZXRfdmVjdHlwZSwgc2NhbGUpDQo+ICsgICB8 fCBpbnRlcm5hbF9nYXRoZXJfc2NhdHRlcl9mbl9zdXBwb3J0ZWRfcCAobGVu X21hc2tfaWZuLCB2ZWN0eXBlLA0KPiArICAgICAgbWVtb3J5X3R5cGUsDQo+ ICsgICAgICBvZmZzZXRfdmVjdHlwZSwgc2NhbGUpKQ0KPiAgew0KPiAgICAq aWZuX291dCA9IGlmbjsNCiANCkkgdGhpbmsgKmlmbl9vdXQgc2hvdWxkIGJl IGxlbl9tYXNrX2lmbiBpZiB0aGF0IG1hdGNoZWQsIHNvIGluc3RlYWQgYWRk DQphbiBlbHNlIGlmIGp1c3QgbGlrZSB3ZSBkbyBmb3IgYWx0X2lmbj8NCiAN Cj4gICAgKm9mZnNldF92ZWN0eXBlX291dCA9IG9mZnNldF92ZWN0eXBlOw0K PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90 cmVlLXZlY3Qtc3RtdHMuY2MNCj4gaW5kZXggYTBjMzkyNjhiZjAuLjFmNjA3 YjcxMDJiIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNj DQo+ICsrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gQEAgLTE3NzEs NiArMTc3MSwxOCBAQCBjaGVja19sb2FkX3N0b3JlX2Zvcl9wYXJ0aWFsX3Zl Y3RvcnMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdHJlZSB2ZWN0eXBl LA0KPiAgICAgZ3NfaW5mby0+b2Zmc2V0X3ZlY3R5cGUsDQo+ICAgICBnc19p bmZvLT5zY2FsZSkpDQo+ICB7DQo+ICsgICBpZm4gPSAoaXNfbG9hZA0KPiAr ID8gSUZOX0xFTl9NQVNLX0dBVEhFUl9MT0FEDQo+ICsgOiBJRk5fTEVOX01B U0tfU0NBVFRFUl9TVE9SRSk7DQo+ICsgICBpZiAoaW50ZXJuYWxfZ2F0aGVy X3NjYXR0ZXJfZm5fc3VwcG9ydGVkX3AgKGlmbiwgdmVjdHlwZSwNCj4gKyAg ICAgICBnc19pbmZvLT5tZW1vcnlfdHlwZSwNCj4gKyAgICAgICBnc19pbmZv LT5vZmZzZXRfdmVjdHlwZSwNCj4gKyAgICAgICBnc19pbmZvLT5zY2FsZSkp DQo+ICsgICAgIHsNCj4gKyAgICAgICB2ZWNfbG9vcF9sZW5zICpsZW5zID0g JkxPT1BfVklORk9fTEVOUyAobG9vcF92aW5mbyk7DQo+ICsgICAgICAgdmVj dF9yZWNvcmRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGxlbnMsIG52ZWN0b3Jz LCB2ZWN0eXBlLCAxKTsNCj4gKyAgICAgICByZXR1cm47DQo+ICsgICAgIH0N Cj4gICAgaWYgKGR1bXBfZW5hYmxlZF9wICgpKQ0KPiAgICAgIGR1bXBfcHJp bnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIHZlY3RfbG9jYXRp b24sDQo+ICAgICAgICJjYW4ndCBvcGVyYXRlIG9uIHBhcnRpYWwgdmVjdG9y cyBiZWNhdXNlIg0KPiBAQCAtMzEyOSwxNiArMzE0MSwzOSBAQCB2ZWN0X2dl dF9nYXRoZXJfc2NhdHRlcl9vcHMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5m bywNCj4gIHN0YXRpYyB2b2lkDQo+ICB2ZWN0X2dldF9zdHJpZGVkX2xvYWRf c3RvcmVfb3BzIChzdG10X3ZlY19pbmZvIHN0bXRfaW5mbywNCj4gIGxvb3Bf dmVjX2luZm8gbG9vcF92aW5mbywNCj4gKyBnaW1wbGVfc3RtdF9pdGVyYXRv ciAqZ3NpLA0KPiAgZ2F0aGVyX3NjYXR0ZXJfaW5mbyAqZ3NfaW5mbywNCj4g LSB0cmVlICpkYXRhcmVmX2J1bXAsIHRyZWUgKnZlY19vZmZzZXQpDQo+ICsg dHJlZSAqZGF0YXJlZl9idW1wLCB0cmVlICp2ZWNfb2Zmc2V0LA0KPiArIHZl Y19sb29wX2xlbnMgKmxvb3BfbGVucykNCj4gIHsNCj4gICAgc3RydWN0IGRh dGFfcmVmZXJlbmNlICpkciA9IFNUTVRfVklORk9fREFUQV9SRUYgKHN0bXRf aW5mbyk7DQo+ICAgIHRyZWUgdmVjdHlwZSA9IFNUTVRfVklORk9fVkVDVFlQ RSAoc3RtdF9pbmZvKTsNCj4gIA0KPiAtICB0cmVlIGJ1bXAgPSBzaXplX2Jp bm9wIChNVUxUX0VYUFIsDQo+IC0gICBmb2xkX2NvbnZlcnQgKHNpemV0eXBl LCB1bnNoYXJlX2V4cHIgKERSX1NURVAgKGRyKSkpLA0KPiAtICAgc2l6ZV9p bnQgKFRZUEVfVkVDVE9SX1NVQlBBUlRTICh2ZWN0eXBlKSkpOw0KPiAtICAq ZGF0YXJlZl9idW1wID0gY3NlX2FuZF9naW1wbGlmeV90b19wcmVoZWFkZXIg KGxvb3BfdmluZm8sIGJ1bXApOw0KPiArICBpZiAoTE9PUF9WSU5GT19VU0lO R19TRUxFQ1RfVkxfUCAobG9vcF92aW5mbykpDQo+ICsgICAgew0KPiArICAg ICAgLyogXzMxID0gLlNFTEVDVF9WTCAoaXZ0bXBfMjksIFBPTFlfSU5UX0NT VCBbNCwgNF0pOw0KPiArIGl2dG1wXzggPSBfMzEgKiAxNiAoc3RlcCBpbiBi eXRlcyk7DQo+ICsgLkxFTl9NQVNLX1NDQVRURVJfU1RPUkUgKHZlY3RwX2Eu OV83LCAuLi4gKTsNCj4gKyB2ZWN0cF9hLjlfMjYgPSB2ZWN0cF9hLjlfNyAr IGl2dG1wXzg7ICAqLw0KPiArICAgICAgdHJlZSBsb29wX2xlbg0KPiArID0g dmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5z LCAxLCB2ZWN0eXBlLCAwLCAwKTsNCj4gKyAgICAgIHRyZWUgdG1wDQo+ICsg PSBmb2xkX2J1aWxkMiAoTVVMVF9FWFBSLCBzaXpldHlwZSwNCj4gKyAgICAg ICAgZm9sZF9jb252ZXJ0IChzaXpldHlwZSwgdW5zaGFyZV9leHByIChEUl9T VEVQIChkcikpKSwNCj4gKyAgICAgICAgbG9vcF9sZW4pOw0KPiArICAgICAg dHJlZSBidW1wID0gbWFrZV90ZW1wX3NzYV9uYW1lIChzaXpldHlwZSwgTlVM TCwgIml2dG1wIik7DQo+ICsgICAgICBnYXNzaWduICphc3NpZ24gPSBnaW1w bGVfYnVpbGRfYXNzaWduIChidW1wLCB0bXApOw0KPiArICAgICAgZ3NpX2lu c2VydF9iZWZvcmUgKGdzaSwgYXNzaWduLCBHU0lfU0FNRV9TVE1UKTsNCj4g KyAgICAgICpkYXRhcmVmX2J1bXAgPSBidW1wOw0KPiArICAgIH0NCj4gKyAg ZWxzZQ0KPiArICAgIHsNCj4gKyAgICAgIHRyZWUgYnVtcA0KPiArID0gc2l6 ZV9iaW5vcCAoTVVMVF9FWFBSLA0KPiArICAgICAgIGZvbGRfY29udmVydCAo c2l6ZXR5cGUsIHVuc2hhcmVfZXhwciAoRFJfU1RFUCAoZHIpKSksDQo+ICsg ICAgICAgc2l6ZV9pbnQgKFRZUEVfVkVDVE9SX1NVQlBBUlRTICh2ZWN0eXBl KSkpOw0KPiArICAgICAgKmRhdGFyZWZfYnVtcCA9IGNzZV9hbmRfZ2ltcGxp ZnlfdG9fcHJlaGVhZGVyIChsb29wX3ZpbmZvLCBidW1wKTsNCj4gKyAgICB9 DQo+ICANCj4gICAgLyogVGhlIG9mZnNldCBnaXZlbiBpbiBHU19JTkZPIGNh biBoYXZlIHBvaW50ZXIgdHlwZSwgc28gdXNlIHRoZSBlbGVtZW50DQo+ICAg ICAgIHR5cGUgb2YgdGhlIHZlY3RvciBpbnN0ZWFkLiAgKi8NCj4gQEAgLTg2 ODUsOCArODcyMCw4IEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAodmVjX2luZm8g KnZpbmZvLA0KPiAgICBlbHNlIGlmIChtZW1vcnlfYWNjZXNzX3R5cGUgPT0g Vk1BVF9HQVRIRVJfU0NBVFRFUikNCj4gICAgICB7DQo+ICAgICAgICBhZ2dy X3R5cGUgPSBlbGVtX3R5cGU7DQo+IC0gICAgICB2ZWN0X2dldF9zdHJpZGVk X2xvYWRfc3RvcmVfb3BzIChzdG10X2luZm8sIGxvb3BfdmluZm8sICZnc19p bmZvLA0KPiAtICAgICAgICAmYnVtcCwgJnZlY19vZmZzZXQpOw0KPiArICAg ICAgdmVjdF9nZXRfc3RyaWRlZF9sb2FkX3N0b3JlX29wcyAoc3RtdF9pbmZv LCBsb29wX3ZpbmZvLCBnc2ksICZnc19pbmZvLA0KPiArICAgICAgICAmYnVt cCwgJnZlY19vZmZzZXQsIGxvb3BfbGVucyk7DQo+ICAgICAgfQ0KPiAgICBl bHNlDQo+ICAgICAgew0KPiBAQCAtODkxNSw2ICs4OTUwLDggQEAgdmVjdG9y aXphYmxlX3N0b3JlICh2ZWNfaW5mbyAqdmluZm8sDQo+ICAgICAgICB1bnNp Z25lZCBIT1NUX1dJREVfSU5UIGFsaWduOw0KPiAgDQo+ICAgICAgICB0cmVl IGZpbmFsX21hc2sgPSBOVUxMX1RSRUU7DQo+ICsgICAgICAgdHJlZSBmaW5h bF9sZW4gPSBOVUxMX1RSRUU7DQo+ICsgICAgICAgdHJlZSBiaWFzID0gTlVM TF9UUkVFOw0KPiAgICAgICAgaWYgKGxvb3BfbWFza3MpDQo+ICBmaW5hbF9t YXNrID0gdmVjdF9nZXRfbG9vcF9tYXNrIChsb29wX3ZpbmZvLCBnc2ksIGxv b3BfbWFza3MsDQo+ICB2ZWNfbnVtICogbmNvcGllcywNCj4gQEAgLTg5Mjks OCArODk2Niw0MyBAQCB2ZWN0b3JpemFibGVfc3RvcmUgKHZlY19pbmZvICp2 aW5mbywNCj4gICAgaWYgKFNUTVRfVklORk9fR0FUSEVSX1NDQVRURVJfUCAo c3RtdF9pbmZvKSkNCj4gICAgICB2ZWNfb2Zmc2V0ID0gdmVjX29mZnNldHNb dmVjX251bSAqIGogKyBpXTsNCj4gICAgdHJlZSBzY2FsZSA9IHNpemVfaW50 IChnc19pbmZvLnNjYWxlKTsNCj4gKw0KPiArICAgaWYgKGludGVybmFsX2dh dGhlcl9zY2F0dGVyX2ZuX3N1cHBvcnRlZF9wICgNCj4gKyBJRk5fTEVOX01B U0tfU0NBVFRFUl9TVE9SRSwgdmVjdHlwZSwgZ3NfaW5mby5tZW1vcnlfdHlw ZSwNCj4gKyBUUkVFX1RZUEUgKHZlY19vZmZzZXQpLCBnc19pbmZvLnNjYWxl KSkNCiANCmdzX2luZm8uaWZuIHNob3VsZCBoYXZlIHJlY29yZGVkIHRoZSBh cHByb3ByaWF0ZSBpZm4sIHNvIHlvdSBzaG91bGQNCmJlIGFibGUgdG8gc2lt cGxpZnkgdGhpcy4NCiANCj4gKyAgICAgew0KPiArICAgICAgIGlmIChsb29w X2xlbnMpDQo+ICsgew0KPiArICAgZmluYWxfbGVuDQo+ICsgICAgID0gdmVj dF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5zLA0K PiArIHZlY19udW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KPiArIHZlY19udW0g KiBqICsgaSwgMSk7DQo+ICsgfQ0KPiArICAgICAgIGVsc2UNCj4gKyB7DQo+ ICsgICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBF IChsb29wX3ZpbmZvKTsNCj4gKyAgIGZpbmFsX2xlbg0KPiArICAgICA9IGJ1 aWxkX2ludF9jc3QgKGl2X3R5cGUsDQo+ICsgICAgICBUWVBFX1ZFQ1RPUl9T VUJQQVJUUyAodmVjdHlwZSkpOw0KPiArIH0NCj4gKyAgICAgICBzaWduZWQg Y2hhciBiaWFzdmFsDQo+ICsgPSBMT09QX1ZJTkZPX1BBUlRJQUxfTE9BRF9T VE9SRV9CSUFTIChsb29wX3ZpbmZvKTsNCj4gKyAgICAgICBiaWFzID0gYnVp bGRfaW50X2NzdCAoaW50UUlfdHlwZV9ub2RlLCBiaWFzdmFsKTsNCj4gKyAg ICAgICBpZiAoIWZpbmFsX21hc2spDQo+ICsgew0KPiArICAgbWFza192ZWN0 eXBlID0gdHJ1dGhfdHlwZV9mb3IgKHZlY3R5cGUpOw0KPiArICAgZmluYWxf bWFzayA9IGJ1aWxkX21pbnVzX29uZV9jc3QgKG1hc2tfdmVjdHlwZSk7DQo+ ICsgfQ0KPiArICAgICB9DQo+ICsNCj4gICAgZ2NhbGwgKmNhbGw7DQo+IC0g ICBpZiAoZmluYWxfbWFzaykNCj4gKyAgIGlmIChmaW5hbF9sZW4gJiYgZmlu YWxfbGVuKQ0KPiArICAgICBjYWxsDQo+ICsgICAgICAgPSBnaW1wbGVfYnVp bGRfY2FsbF9pbnRlcm5hbCAoSUZOX0xFTl9NQVNLX1NDQVRURVJfU1RPUkUs DQo+ICsgICAgIDcsIGRhdGFyZWZfcHRyLCB2ZWNfb2Zmc2V0LA0KPiArICAg ICBzY2FsZSwgdmVjX29wcm5kLCBmaW5hbF9sZW4sDQo+ICsgICAgIGJpYXMs IGZpbmFsX21hc2spOw0KPiArICAgZWxzZSBpZiAoZmluYWxfbWFzaykNCj4g ICAgICBjYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwNCj4gICAg ICAgIChJRk5fTUFTS19TQ0FUVEVSX1NUT1JFLCA1LCBkYXRhcmVmX3B0ciwg dmVjX29mZnNldCwNCj4gICAgICAgICBzY2FsZSwgdmVjX29wcm5kLCBmaW5h bF9tYXNrKTsNCj4gQEAgLTkwNDcsOSArOTExOSw2IEBAIHZlY3Rvcml6YWJs ZV9zdG9yZSAodmVjX2luZm8gKnZpbmZvLA0KPiAgICAgICAgbWFjaGluZV9t b2RlIHZtb2RlID0gVFlQRV9NT0RFICh2ZWN0eXBlKTsNCj4gICAgICAgIG1h Y2hpbmVfbW9kZSBuZXdfdm1vZGUgPSB2bW9kZTsNCj4gICAgICAgIGludGVy bmFsX2ZuIHBhcnRpYWxfaWZuID0gSUZOX0xBU1Q7DQo+IC0gICAgICAgLyog UHJvZHVjZSAnbGVuJyBhbmQgJ2JpYXMnIGFyZ3VtZW50LiAgKi8NCj4gLSAg ICAgICB0cmVlIGZpbmFsX2xlbiA9IE5VTExfVFJFRTsNCj4gLSAgICAgICB0 cmVlIGJpYXMgPSBOVUxMX1RSRUU7DQo+ICAgICAgICBpZiAobG9vcF9sZW5z KQ0KPiAgew0KPiAgICBvcHRfbWFjaGluZV9tb2RlIG5ld19vdm1vZGUNCj4g QEAgLTEwMTc3LDggKzEwMjQ2LDggQEAgdmVjdG9yaXphYmxlX2xvYWQgKHZl Y19pbmZvICp2aW5mbywNCj4gICAgZWxzZSBpZiAobWVtb3J5X2FjY2Vzc190 eXBlID09IFZNQVRfR0FUSEVSX1NDQVRURVIpDQo+ICAgICAgew0KPiAgICAg ICAgYWdncl90eXBlID0gZWxlbV90eXBlOw0KPiAtICAgICAgdmVjdF9nZXRf c3RyaWRlZF9sb2FkX3N0b3JlX29wcyAoc3RtdF9pbmZvLCBsb29wX3ZpbmZv LCAmZ3NfaW5mbywNCj4gLSAgICAgICAgJmJ1bXAsICZ2ZWNfb2Zmc2V0KTsN Cj4gKyAgICAgIHZlY3RfZ2V0X3N0cmlkZWRfbG9hZF9zdG9yZV9vcHMgKHN0 bXRfaW5mbywgbG9vcF92aW5mbywgZ3NpLCAmZ3NfaW5mbywNCj4gKyAgICAg ICAgJmJ1bXAsICZ2ZWNfb2Zmc2V0LCBsb29wX2xlbnMpOw0KPiAgICAgIH0N Cj4gICAgZWxzZQ0KPiAgICAgIHsNCj4gQEAgLTEwMzM5LDYgKzEwNDA4LDgg QEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19pbmZvICp2aW5mbywNCj4gICAg Zm9yIChpID0gMDsgaSA8IHZlY19udW07IGkrKykNCj4gICAgICB7DQo+ICAg ICAgICB0cmVlIGZpbmFsX21hc2sgPSBOVUxMX1RSRUU7DQo+ICsgICAgICAg dHJlZSBmaW5hbF9sZW4gPSBOVUxMX1RSRUU7DQo+ICsgICAgICAgdHJlZSBi aWFzID0gTlVMTF9UUkVFOw0KPiAgICAgICAgaWYgKGxvb3BfbWFza3MNCj4g ICAgJiYgbWVtb3J5X2FjY2Vzc190eXBlICE9IFZNQVRfSU5WQVJJQU5UKQ0K PiAgZmluYWxfbWFzayA9IHZlY3RfZ2V0X2xvb3BfbWFzayAobG9vcF92aW5m bywgZ3NpLCBsb29wX21hc2tzLA0KPiBAQCAtMTAzNjgsOCArMTA0MzksNDIg QEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19pbmZvICp2aW5mbywNCj4gICAg dmVjX29mZnNldCA9IHZlY19vZmZzZXRzW3ZlY19udW0gKiBqICsgaV07DQo+ ICB0cmVlIHplcm8gPSBidWlsZF96ZXJvX2NzdCAodmVjdHlwZSk7DQo+ICB0 cmVlIHNjYWxlID0gc2l6ZV9pbnQgKGdzX2luZm8uc2NhbGUpOw0KPiArDQo+ ICsgaWYgKGludGVybmFsX2dhdGhlcl9zY2F0dGVyX2ZuX3N1cHBvcnRlZF9w ICgNCj4gKyAgICAgICBJRk5fTEVOX01BU0tfR0FUSEVSX0xPQUQsIHZlY3R5 cGUsDQo+ICsgICAgICAgZ3NfaW5mby5tZW1vcnlfdHlwZSwgVFJFRV9UWVBF ICh2ZWNfb2Zmc2V0KSwNCj4gKyAgICAgICBnc19pbmZvLnNjYWxlKSkNCiAN Ckxpa2V3aXNlLg0KIA0KPiArICAgew0KPiArICAgICBpZiAobG9vcF9sZW5z KQ0KPiArICAgICAgIHsNCj4gKyBmaW5hbF9sZW4gPSB2ZWN0X2dldF9sb29w X2xlbiAoDQo+ICsgICBsb29wX3ZpbmZvLCBnc2ksIGxvb3BfbGVucywgdmVj X251bSAqIG5jb3BpZXMsDQo+ICsgICB2ZWN0eXBlLCB2ZWNfbnVtICogaiAr IGksIDEpOw0KPiArICAgICAgIH0NCj4gKyAgICAgZWxzZQ0KPiArICAgICAg IHsNCj4gKyB0cmVlIGl2X3R5cGUNCj4gKyAgID0gTE9PUF9WSU5GT19SR1JP VVBfSVZfVFlQRSAobG9vcF92aW5mbyk7DQo+ICsgZmluYWxfbGVuID0gYnVp bGRfaW50X2NzdCAoDQo+ICsgICBpdl90eXBlLCBUWVBFX1ZFQ1RPUl9TVUJQ QVJUUyAodmVjdHlwZSkpOw0KPiArICAgICAgIH0NCj4gKyAgICAgc2lnbmVk IGNoYXIgYmlhc3ZhbA0KPiArICAgICAgID0gTE9PUF9WSU5GT19QQVJUSUFM X0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbyk7DQo+ICsgICAgIGJpYXMg PSBidWlsZF9pbnRfY3N0IChpbnRRSV90eXBlX25vZGUsIGJpYXN2YWwpOw0K PiArICAgICBpZiAoIWZpbmFsX21hc2spDQo+ICsgICAgICAgew0KPiArIG1h c2tfdmVjdHlwZSA9IHRydXRoX3R5cGVfZm9yICh2ZWN0eXBlKTsNCj4gKyBm aW5hbF9tYXNrID0gYnVpbGRfbWludXNfb25lX2NzdCAobWFza192ZWN0eXBl KTsNCj4gKyAgICAgICB9DQo+ICsgICB9DQo+ICsNCj4gIGdjYWxsICpjYWxs Ow0KPiAtIGlmIChmaW5hbF9tYXNrKQ0KPiArIGlmIChmaW5hbF9sZW4gJiYg ZmluYWxfbWFzaykNCj4gKyAgIGNhbGwgPSBnaW1wbGVfYnVpbGRfY2FsbF9p bnRlcm5hbCAoDQo+ICsgICAgIElGTl9MRU5fTUFTS19HQVRIRVJfTE9BRCwg NywgZGF0YXJlZl9wdHIsDQo+ICsgICAgIHZlY19vZmZzZXQsIHNjYWxlLCB6 ZXJvLCBmaW5hbF9sZW4sIGJpYXMsDQo+ICsgICAgIGZpbmFsX21hc2spOw0K PiArIGVsc2UgaWYgKGZpbmFsX21hc2spDQo+ICAgIGNhbGwgPSBnaW1wbGVf YnVpbGRfY2FsbF9pbnRlcm5hbA0KPiAgICAgIChJRk5fTUFTS19HQVRIRVJf TE9BRCwgNSwgZGF0YXJlZl9wdHIsDQo+ICAgICAgIHZlY19vZmZzZXQsIHNj YWxlLCB6ZXJvLCBmaW5hbF9tYXNrKTsNCj4gQEAgLTEwNDYyLDkgKzEwNTY3 LDYgQEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19pbmZvICp2aW5mbywNCj4g ICAgICBtYWNoaW5lX21vZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUp Ow0KPiAgICAgIG1hY2hpbmVfbW9kZSBuZXdfdm1vZGUgPSB2bW9kZTsNCj4g ICAgICBpbnRlcm5hbF9mbiBwYXJ0aWFsX2lmbiA9IElGTl9MQVNUOw0KPiAt ICAgICAvKiBQcm9kdWNlICdsZW4nIGFuZCAnYmlhcycgYXJndW1lbnQuICAq Lw0KPiAtICAgICB0cmVlIGZpbmFsX2xlbiA9IE5VTExfVFJFRTsNCj4gLSAg ICAgdHJlZSBiaWFzID0gTlVMTF9UUkVFOw0KPiAgICAgIGlmIChsb29wX2xl bnMpDQo+ICAgICAgICB7DQo+ICBvcHRfbWFjaGluZV9tb2RlIG5ld19vdm1v ZGUNCj4gDQogDQotLSANClJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3Vz ZS5kZT4NClNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwg RnJhbmtlbnN0cmFzc2UgMTQ2LCA5MDQ2MSBOdWVybmJlcmcsDQpHZXJtYW55 OyBHRjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFs ZCwgQm91ZGllbiBNb2VybWFuOw0KSFJCIDM2ODA5IChBRyBOdWVybmJlcmcp DQogDQo= ------=_001_NextPart836761382168_=------