From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg153.qq.com (smtpbg153.qq.com [13.245.218.24]) by sourceware.org (Postfix) with ESMTPS id 4881339BF79D for ; Fri, 7 Jul 2023 10:51:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4881339BF79D 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: bizesmtp83t1688727068tg94k2eb Received: from LAPTOP-EPITNQBU ( [58.60.1.5]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 07 Jul 2023 18:51:06 +0800 (CST) X-QQ-SSF: 01400000000000G0T000000A0000000 X-QQ-FEAT: W+onFc5Tw4NaW1XPpCTRjoQN9IY3IkBPe05x/ecp6oKDs50fy499pu696V1l9 lQ5A3FeDzY+E/lH3bLtNh5N3vMTPx9+yX0mHo2EWCf8GptV2XRz7SeIlthCm+EI8RDlvYOm ogCjODXUthnJTQiLWCuwhP/O0elNpTuqshSEuF0xgCaAZwqnIly2Dwbz2PORdsKGye8emiL j6Oc4MwT6R9BhiIZlft5f4APisBUMw9NpmnMneFrg0i6PrFEj5ayY7Hwwk1edLzkQ2/6aHp pWYQuMJvBwxqFZI6EMldKvCoxQX9W5PfBPlu0ebiw4c06nCw7n3hXk9gzemNhpqrotL0MCS TqUh86gQaQsyq77PYyKGDJwvd8cu/YURSx3vElgQdzMjLyAgAFERAgr0lOdgFDZuwTuS5as C47cMseCa0FmxR0bHPaedNF37geo9hlpPyiojilF+aPBopL7HzMk4w== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 8868579904999409770 Date: Fri, 7 Jul 2023 18:51:05 +0800 From: "juzhe.zhong@rivai.ai" To: "Robin Dapp" , gcc-patches Cc: "Robin Dapp" , kito.cheng , Kito.cheng , palmer , palmer , jeffreyalaw Subject: Re: Re: [PATCH V3] RISC-V: Support gather_load/scatter RVV auto-vectorization References: <20230707010023.863732-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: 898CF8DC-EBAD-4368-85C4-C9360B118237 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <0AE39310F0C72010+2023070718510517013731@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart644274848237_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.8 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_NextPart644274848237_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGksIFJvYmluLg0KDQpJIGhhdmUgZml4ZWQgYWxsIGlzc3VlcyBmb3IgeW91 IHdpdGggVjQgcGF0Y2g6DQpodHRwczovL2djYy5nbnUub3JnL3BpcGVybWFp bC9nY2MtcGF0Y2hlcy8yMDIzLUp1bHkvNjIzODU2Lmh0bWwgDQoNCjEuIEFw cGx5IHlvdXIgYXBwcm9hY2ggb24gcG9seSBpbnQNCjIuIEZpeCBjb21tZW50 cy4NCjMuIE5vcm1hbGl6ZSAibW9kdWxvIiBjb2RlcyBhbmQgbWFrZSBpdCBu byByZWR1bmRhbmN5Lg0KLi4uDQoNCkNvdWxkIHlvdSB0YWtlIGEgbG9vayBh dCBpdD8NCg0KVGhhbmtzLg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQog DQpGcm9tOiBSb2JpbiBEYXBwDQpEYXRlOiAyMDIzLTA3LTA3IDE3OjQzDQpU bzogSnV6aGUtWmhvbmc7IGdjYy1wYXRjaGVzDQpDQzogcmRhcHAuZ2NjOyBr aXRvLmNoZW5nOyBraXRvLmNoZW5nOyBwYWxtZXI7IHBhbG1lcjsgamVmZnJl eWFsYXcNClN1YmplY3Q6IFJlOiBbUEFUQ0ggVjNdIFJJU0MtVjogU3VwcG9y dCBnYXRoZXJfbG9hZC9zY2F0dGVyIFJWViBhdXRvLXZlY3Rvcml6YXRpb24N CkhpIEp1emhlLA0KIA0KdGhhbmtzLCB0aGF0J3MgcXVpdGUgYSBjaHVuayA6 KSBhbmQgaXQgdG9vayBtZSBhIHdoaWxlIHRvDQpnbyB0aHJvdWdoIGl0Lg0K IA0KPiBAQCAtNTY0LDcgKzU2NSwxNCBAQCBjb25zdF92ZWNfYWxsX2luX3Jh bmdlX3AgKHJ0eCB2ZWMsIHBvbHlfaW50NjQgbWludmFsLCBwb2x5X2ludDY0 IG1heHZhbCkNCj4gIHN0YXRpYyBydHgNCj4gIGdlbl9jb25zdF92ZWN0b3Jf ZHVwIChtYWNoaW5lX21vZGUgbW9kZSwgcG9seV9pbnQ2NCB2YWwpDQo+ICB7 DQo+IC0gIHJ0eCBjID0gZ2VuX2ludF9tb2RlICh2YWwsIEdFVF9NT0RFX0lO TkVSIChtb2RlKSk7DQo+ICsgIHNjYWxhcl9tb2RlIHNtb2RlID0gR0VUX01P REVfSU5ORVIgKG1vZGUpOw0KPiArICBydHggYyA9IGdlbl9pbnRfbW9kZSAo dmFsLCBzbW9kZSk7DQo+ICsgIGlmICghdmFsLmlzX2NvbnN0YW50ICgpICYm IEdFVF9NT0RFX1NJWkUgKHNtb2RlKSA+IEdFVF9NT0RFX1NJWkUgKFBtb2Rl KSkNCj4gKyAgICB7DQo+ICsgICAgICBydHggZHVwID0gZ2VuX3JlZ19ydHgg KG1vZGUpOw0KPiArICAgICAgZW1pdF9pbnNuIChnZW5fdmVjX2R1cGxpY2F0 ZSAobW9kZSwgZHVwLCBjKSk7DQo+ICsgICAgICByZXR1cm4gZHVwOw0KPiAr ICAgIH0NCj4gICAgcmV0dXJuIGdlbl9jb25zdF92ZWNfZHVwbGljYXRlICht b2RlLCBjKTsNCj4gIH0NCiANCkl0J3MgYSBiaXQgd2VpcmQgdGhhdCB0aGUg ZnVuY3Rpb24gbm93IGFsc28gZW1pdHMgYW4gaW5zbi4gIEl0J3Mgbm90DQpz aW1pbGFyIHRvIHRoZSBhYXJjaDY0IHZhcmlhbnQgYW55bW9yZSB0aGVuLCBJ IHN1cHBvc2UuICBJZiBzbywgcGxlYXNlDQpyZW1vdmUgdGhlIGNvbW1lbnQu DQogDQo+ICsNCj4gIC8qIFRoaXMgZnVuY3Rpb24gZW1pdHMgYSBtYXNrZWQg aW5zdHJ1Y3Rpb24uICAqLw0KPiAgdm9pZA0KPiAgZW1pdF92bG1heF9tYXNr ZWRfbXVfaW5zbiAodW5zaWduZWQgaWNvZGUsIGludCBvcF9udW0sIHJ0eCAq b3BzKQ0KPiBAQCAtMTE2Miw3ICsxMjAzLDYgQEAgZXhwYW5kX2NvbnN0X3Zl Y3RvciAocnR4IHRhcmdldCwgcnR4IHNyYykNCj4gIH0NCj4gICAgICAgIGVs c2UNCj4gIHsNCj4gLSAgIGVsdCA9IGZvcmNlX3JlZyAoZWx0X21vZGUsIGVs dCk7DQo+ICAgIHJ0eCBvcHNbXSA9IHt0bXAsIGVsdH07DQo+ICAgIGVtaXRf dmxtYXhfaW5zbiAoY29kZV9mb3JfcHJlZF9icm9hZGNhc3QgKG1vZGUpLCBS VlZfVU5PUCwgb3BzKTsNCj4gIH0NCj4gQEAgLTI0MzEsNiArMjQ3MSwyNSBA QCBleHBhbmRfdmVjX2NtcF9mbG9hdCAocnR4IHRhcmdldCwgcnR4X2NvZGUg Y29kZSwgcnR4IG9wMCwgcnR4IG9wMSwNCj4gICAgcmV0dXJuIGZhbHNlOw0K PiAgfQ0KIA0KZWx0X21vZGUgaXMgdW51c2VkIGFmdGVyIHlvdXIgcGF0Y2gu ICBQbGVhc2UgcmVtb3ZlIGl0IG9yIHdlIHdpbGwgaGF2ZQ0KYSBib290c3Ry YXAgZXJyb3IuDQogDQo+IEBAIC0yNDQ0LDQyICsyNTAzLDQ3IEBAIGV4cGFu ZF92ZWNfcGVybSAocnR4IHRhcmdldCwgcnR4IG9wMCwgcnR4IG9wMSwgcnR4 IHNlbCkNCj4gICAgICAgaW5kZXggaXMgaW4gcmFuZ2Ugb2YgWzAsIG51bml0 cyAtIDFdLiBBIHNpbmdsZSB2cmdhdGhlciBpbnN0cnVjdGlvbnMgaXMNCj4g ICAgICAgZW5vdWdoLiBTaW5jZSB3ZSB3aWxsIHVzZSB2cmdhdGhlcmVpMTYu dnYgZm9yIHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3IsDQo+ICAgICAgIGl0IGlz IG5ldmVyIG91dCBvZiByYW5nZSBhbmQgd2UgZG9uJ3QgbmVlZCB0byBtb2R1 bG8gdGhlIGluZGV4LiAgKi8NCj4gLSAgaWYgKCFudW5pdHMuaXNfY29uc3Rh bnQgKCkgfHwgY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChzZWwsIDAsIG51 bml0cyAtIDEpKQ0KPiArICBpZiAobnVuaXRzLmlzX2NvbnN0YW50ICgpICYm IGNvbnN0X3ZlY19hbGxfaW5fcmFuZ2VfcCAoc2VsLCAwLCBudW5pdHMgLSAx KSkNCj4gICAgICB7DQo+ICAgICAgICBlbWl0X3ZsbWF4X2dhdGhlcl9pbnNu ICh0YXJnZXQsIG9wMCwgc2VsKTsNCj4gICAgICAgIHJldHVybjsNCj4gICAg ICB9DQo+ICANCj4gICAgLyogQ2hlY2sgaWYgdGhlIHR3byB2YWx1ZXMgdmVj dG9ycyBhcmUgdGhlIHNhbWUuICAqLw0KPiAtICBpZiAocnR4X2VxdWFsX3Ag KG9wMCwgb3AxKSB8fCBjb25zdF92ZWNfZHVwbGljYXRlX3AgKHNlbCkpDQo+ ICsgIGlmIChydHhfZXF1YWxfcCAob3AwLCBvcDEpKQ0KPiAgICAgIHsNCj4g ICAgICAgIC8qIE5vdGU6IHZlY19wZXJtIGluZGljZXMgYXJlIHN1cHBvc2Vk IHRvIHdyYXAgd2hlbiB0aGV5IGdvIGJleW9uZCB0aGUNCj4gIHNpemUgb2Yg dGhlIHR3byB2YWx1ZSB2ZWN0b3JzLCBpLmUuIHRoZSB1cHBlciBiaXRzIG9m IHRoZSBpbmRpY2VzDQo+ICBhcmUgZWZmZWN0aXZlbHkgaWdub3JlZC4gIFJW ViB2cmdhdGhlciBpbnN0ZWFkIHByb2R1Y2VzIDAgZm9yIGFueQ0KPiAgb3V0 LW9mLXJhbmdlIGluZGljZXMsIHNvIHdlIG5lZWQgdG8gbW9kdWxvIGFsbCB0 aGUgdmVjX3Blcm0gaW5kaWNlcw0KPiAgdG8gZW5zdXJlIHRoZXkgYXJlIGFs bCBpbiByYW5nZSBvZiBbMCwgbnVuaXRzIC0gMV0uICAqLw0KPiAtICAgICAg cnR4IG1heF9zZWwgPSBnZW5fY29uc3RfdmVjdG9yX2R1cCAoc2VsX21vZGUs IG51bml0cyAtIDEpOw0KPiAtICAgICAgcnR4IHNlbF9tb2QgPSBleHBhbmRf c2ltcGxlX2Jpbm9wIChzZWxfbW9kZSwgQU5ELCBzZWwsIG1heF9zZWwsIE5V TEwsIDAsDQo+IC0gT1BUQUJfRElSRUNUKTsNCj4gLSAgICAgIGVtaXRfdmxt YXhfZ2F0aGVyX2luc24gKHRhcmdldCwgb3AxLCBzZWxfbW9kKTsNCj4gKyAg ICAgIHJ0eCBzZWxfbW9kID0gbW9kdWxvX3NlbF9pbmRpY2VzIChzZWwsIG51 bml0cyAtIDEpOw0KPiArICAgICAgZW1pdF92bG1heF9nYXRoZXJfaW5zbiAo dGFyZ2V0LCBvcDAsIHNlbF9tb2QpOw0KPiAgICAgICAgcmV0dXJuOw0KPiAg ICAgIH0NCiANCldoZW4gcmVhZGluZyBpdCBJIGNvbnNpZGVyZWQgdW5pZnlp bmcgYm90aCBjYXNlcyBhbmQgaGF2ZSBtb2R1bG9fc2VsX2luZGljZXMNCmp1 c3QgZG8gbm90aGluZyB3aGVuIHRoZSBjb25zdGFudCBhbHJlYWR5IHNhdGlz ZmllcyB0aGUgcmFuZ2UgcmVxdWlyZW1lbnQuDQpXb3VsZCB0aGF0IHdvcms/ DQogDQo+IC0gICAgICBPUFRBQl9ESVJFQ1QpOw0KPiArICAgICAgcG9seV91 aW50NjQgdmFsdWUgPSBydHhfdG9fcG9seV9pbnQ2NCAoZWx0KTsNCj4gKyAg ICAgIHJ0eCBvcCA9IG9wMDsNCj4gKyAgICAgIGlmIChtYXliZV9ndCAodmFs dWUsIG51bml0cyAtIDEpKQ0KPiArIHsNCj4gKyAgIHNlbCA9IGdlbl9jb25z dF92ZWN0b3JfZHVwIChzZWxfbW9kZSwgdmFsdWUgLSBudW5pdHMpOw0KPiAr ICAgb3AgPSBvcDE7DQo+ICsgfQ0KPiArICAgICAgZW1pdF92bG1heF9nYXRo ZXJfaW5zbiAodGFyZ2V0LCBvcCwgc2VsKTsNCj4gICAgICB9DQogDQpUaGF0 J3MgYWdhaW4gYSAibW9kdWxvIi4gICBDb3VsZCB0aGF0IGFsc28gZml0IGlu IG1vZHVsb19zZWxfaW5kaWNlcz8NCllvdXIgY2FsbCBpbiB0aGUgZW5kLCBp dCBqdXN0IGZlZWxzIGxpa2Ugd2UgZG8gdGhlIHNhbWUgdGhpbmcga2luZA0K b2YgZGlmZmVyZW50bHkgaW4gc2V2ZXJhbCBwbGFjZXMgYnV0IG5vIHN0cmlj dCBwcmVmZXJlbmNlIGhlcmUuDQogDQo+ICsvKiBSZXR1cm4gdHJ1ZSBpZiBp dCBpcyB0aGUgc3RyaWRlZCBsb2FkL3N0b3JlLiAgKi8NCj4gK3N0YXRpYyBi b29sDQo+ICtzdHJpZGVkX2xvYWRfc3RvcmVfcCAocnR4IHZlY19vZmZzZXQs IHJ0eCAqYmFzZSwgcnR4ICpzdGVwKQ0KPiArew0KPiArICBpZiAoY29uc3Rf dmVjX3Nlcmllc19wICh2ZWNfb2Zmc2V0LCBiYXNlLCBzdGVwKSkNCj4gKyAg ICByZXR1cm4gdHJ1ZTsNCiANClRoZSB2ZWN0b3JpemVyIHdpbGwgbmV2ZXIg ZW1pdCB0aGlzIGJ1dCB3ZSB3b3VsZG4ndCB3YW50IGEgc3RlcA0Kb2YgMSBo ZXJlLCByaWdodD8NCiANCj4gKw0KPiArICAvKiBGb3Igc3RyaWRlZCBsb2Fk L3N0b3JlLCB2ZWN0b3JpemVyIGFsd2F5cyBnZW5lcmF0ZXMNCj4gKyAgICAg VkVDX1NFUklFU19FWFBSIGZvciB2ZWNfb2Zmc2V0LiAgKi8NCj4gKyAgdHJl ZSBleHByID0gUkVHX0VYUFIgKHZlY19vZmZzZXQpOw0KPiArICBpZiAoIWV4 cHIgfHwgVFJFRV9DT0RFIChleHByKSAhPSBTU0FfTkFNRSkNCj4gKyAgICBy ZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgLyogQ2hlY2sgaWYgaXQgaXMgR0lN UExFIGxpa2U6IF84OCA9IFZFQ19TRVJJRVNfRVhQUiA8MCwgXzg3PjsgICov DQo+ICsgIGdpbXBsZSAqZGVmX3N0bXQgPSBTU0FfTkFNRV9ERUZfU1RNVCAo ZXhwcik7DQo+ICsgIGlmICghZGVmX3N0bXQgfHwgIWlzX2dpbXBsZV9hc3Np Z24gKGRlZl9zdG10KQ0KPiArICAgICAgfHwgZ2ltcGxlX2Fzc2lnbl9yaHNf Y29kZSAoZGVmX3N0bXQpICE9IFZFQ19TRVJJRVNfRVhQUikNCj4gKyAgICBy ZXR1cm4gZmFsc2U7DQogDQpJbnRlcmVzdGluZyB0byBxdWVyeSB0aGUgZ2lt cGxlIGhlcmUuICBBcyBsb25nIGFzIHRoZQ0KdmVjdG9yaXplciBkb2Vzbid0 IGRvIHN0cmlkZWQgc3RvcmVzIHNlcGFyYXRlbHksIEkgZ3Vlc3Mgd2UgY2Fu DQpsaXZlIHdpdGggdGhhdC4NCiANCj4gKyAgcnR4IHB0ciwgdmVjX29mZnNl dCwgdmVjX3JlZywgbGVuLCBtYXNrOw0KPiArICBib29sIHplcm9fZXh0ZW5k X3A7DQo+ICsgIGludCBzY2FsZV9sb2cyOw0KPiArICBpZiAoaXNfbG9hZCkN Cj4gKyAgICB7DQo+ICsgICAgICB2ZWNfcmVnID0gb3BzWzBdOw0KPiArICAg ICAgcHRyID0gb3BzWzFdOw0KPiArICAgICAgdmVjX29mZnNldCA9IG9wc1sy XTsNCj4gKyAgICAgIHplcm9fZXh0ZW5kX3AgPSBJTlRWQUwgKG9wc1szXSk7 DQo+ICsgICAgICBzY2FsZV9sb2cyID0gZXhhY3RfbG9nMiAoSU5UVkFMIChv cHNbNF0pKTsNCj4gKyAgICAgIGxlbiA9IG9wc1s1XTsNCj4gKyAgICAgIG1h c2sgPSBvcHNbN107DQo+ICsgICAgfQ0KPiArICBlbHNlDQo+ICsgICAgew0K PiArICAgICAgdmVjX3JlZyA9IG9wc1s0XTsNCj4gKyAgICAgIHB0ciA9IG9w c1swXTsNCj4gKyAgICAgIHZlY19vZmZzZXQgPSBvcHNbMV07DQo+ICsgICAg ICB6ZXJvX2V4dGVuZF9wID0gSU5UVkFMIChvcHNbMl0pOw0KPiArICAgICAg c2NhbGVfbG9nMiA9IGV4YWN0X2xvZzIgKElOVFZBTCAob3BzWzNdKSk7DQo+ ICsgICAgICBsZW4gPSBvcHNbNV07DQo+ICsgICAgICBtYXNrID0gb3BzWzdd Ow0KPiArICAgIH0NCiANCj4gKyAgYm9vbCBpc19kdW1tcF9sZW4gPSBwb2x5 X2ludF9ydHhfcCAobGVuLCAmdmFsdWUpICYmIGtub3duX2VxICh2YWx1ZSwg bnVuaXRzKTsNCiANCldoYXQncyBkdW1tcD8gIGR1bWI/ICBJdCBsb29rcyBs aWtlIGl0J3MgdXNlZCBmb3Igc3dpdGNoaW5nIGJldHdlZW4NCnZsbWF4L25v bnZsbWF4IHNvIGEgZGlmZmVyZW50IG5hbWUgbWlnaHQgYmUgYWR2aXNhYmxl Lg0KIA0KPiArICAgICAgIGVtaXRfaW5zbiAoZ2VuX2V4dGVuZF9pbnNuIChl eHRlbmRfc3RlcCwgc3RlcCwgUG1vZGUsDQo+ICsgICBHRVRfTU9ERSAoc3Rl cCksDQo+ICsgICB6ZXJvX2V4dGVuZF9wID8gdHJ1ZSA6IGZhbHNlKSk7DQo+ ICsgICAgICAgc3RlcCA9IGV4dGVuZF9zdGVwOw0KPiArICAgICB9DQo+ICsg fQ0KIA0KU2VlIGJlbG93Lg0KIA0KPiArICAgICAgcnR4IG1lbSA9IHZhbGlk aXplX21lbSAoZ2VuX3J0eF9NRU0gKHZlY19tb2RlLCBwdHIpKTsNCj4gKyAg ICAgIC8qIEVtaXQgdmxzZS52IGlmIGl0J3MgbG9hZC4gT3RoZXJ3aXNlLCBl bWl0IHZzc2Uudi4gICovDQo+ICsgICAgICBpZiAoaXNfbG9hZCkNCj4gKyB7 DQo+ICsgICBpbnNuX2NvZGUgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX3N0cmlk ZWRfbG9hZCAodmVjX21vZGUpOw0KPiArICAgaWYgKGlzX2R1bW1wX2xlbikN Cj4gKyAgICAgew0KPiArICAgICAgIHJ0eCBsb2FkX29wc1tdDQo+ICsgPSB7 dmVjX3JlZywgbWFzaywgUlZWX1ZVTkRFRiAodmVjX21vZGUpLCBtZW0sIHN0 ZXB9Ow0KPiArICAgICAgIGVtaXRfdmxtYXhfbWFza2VkX2luc24gKGljb2Rl LCBSVlZfR0FUSEVSX01fT1AsIGxvYWRfb3BzKTsNCj4gKyAgICAgfQ0KPiAr ICAgZWxzZQ0KPiArICAgICB7DQo+ICsgICAgICAgcnR4IGxvYWRfb3BzW10N Cj4gKyA9IHt2ZWNfcmVnLCBtYXNrLCBSVlZfVlVOREVGICh2ZWNfbW9kZSks IG1lbSwgc3RlcH07DQo+ICsgICAgICAgZW1pdF9ub252bG1heF9tYXNrZWRf aW5zbiAoaWNvZGUsIFJWVl9HQVRIRVJfTV9PUCwgbG9hZF9vcHMsIGxlbik7 DQo+ICsgICAgIH0NCj4gKyB9DQogDQpUaGUgb3BzIGFyZSBzaW1pbGFyLCBi ZXR0ZXIgdG8gZGVmaW5lIHRoZW0gb3V0c2lkZSBvZiB0aGUgaWYvZWxzZS4N Ckkgd291bGQgYWxzbyByYXRoZXIgaGF2ZSBib3RoIGluIHRoZSBzYW1lIGVt aXQgaGVscGVyIGJ1dCB0aGF0IHdhcw0KZGlzY3Vzc2VkIGJlZm9yZS4gIFRo ZSBmb2xsb3dpbmcgc2ltaWxhciBwYXR0ZXJucyBhbGwgbG9vayBhIGJpdA0K ImJvaWxlcnBsYXRlLWlzaCIuICBUb2xlcmFibGUgZm9yIG5vdyBJIGd1ZXNz Lg0KIA0KPiArICBpZiAoaW5uZXJfb2Zmc2l6ZSA8IGlubmVyX3ZzaXplKQ0K PiArICAgIHsNCj4gKyAgICAgIC8qIDcuMi4gVmVjdG9yIExvYWQvU3RvcmUg QWRkcmVzc2luZyBNb2Rlcy4NCj4gKyBJZiB0aGUgdmVjdG9yIG9mZnNldCBl bGVtZW50cyBhcmUgbmFycm93ZXIgdGhhbiBYTEVOLCB0aGV5IGFyZQ0KPiAr IHplcm8tZXh0ZW5kZWQgdG8gWExFTiBiZWZvcmUgYWRkaW5nIHRvIHRoZSBw dHIgZWZmZWN0aXZlIGFkZHJlc3MuIElmDQo+ICsgdGhlIHZlY3RvciBvZmZz ZXQgZWxlbWVudHMgYXJlIHdpZGVyIHRoYW4gWExFTiwgdGhlIGxlYXN0LXNp Z25pZmljYW50DQo+ICsgWExFTiBiaXRzIGFyZSB1c2VkIGluIHRoZSBhZGRy ZXNzIGNhbGN1bGF0aW9uLiBBbiBpbXBsZW1lbnRhdGlvbiBtdXN0DQo+ICsg cmFpc2UgYW4gaWxsZWdhbCBpbnN0cnVjdGlvbiBleGNlcHRpb24gaWYgdGhl IEVFVyBpcyBub3Qgc3VwcG9ydGVkIGZvcg0KPiArIG9mZnNldCBlbGVtZW50 cy4gICovDQo+ICsgICAgICBpZiAoIXplcm9fZXh0ZW5kX3AgfHwgKHplcm9f ZXh0ZW5kX3AgJiYgc2NhbGVfbG9nMiAhPSAwKSkNCj4gKyB7DQo+ICsgICBp ZiAoemVyb19leHRlbmRfcCkNCj4gKyAgICAgaW5uZXJfaWR4X21vZGUNCj4g KyAgICAgICA9IGludF9tb2RlX2Zvcl9zaXplIChpbm5lcl9vZmZzaXplICog MiwgMCkucmVxdWlyZSAoKTsNCj4gKyAgIGVsc2UNCj4gKyAgICAgaW5uZXJf aWR4X21vZGUgPSBpbnRfbW9kZV9mb3Jfc2l6ZSAoQklUU19QRVJfV09SRCwg MCkucmVxdWlyZSAoKTsNCj4gKyAgIG1hY2hpbmVfbW9kZSBuZXdfaWR4X21v ZGUNCj4gKyAgICAgPSBnZXRfdmVjdG9yX21vZGUgKGlubmVyX2lkeF9tb2Rl LCBudW5pdHMpLnJlcXVpcmUgKCk7DQo+ICsgICBydHggdG1wID0gZ2VuX3Jl Z19ydHggKG5ld19pZHhfbW9kZSk7DQo+ICsgICBlbWl0X2luc24gKGdlbl9l eHRlbmRfaW5zbiAodG1wLCB2ZWNfb2Zmc2V0LCBuZXdfaWR4X21vZGUsIGlk eF9tb2RlLA0KPiArICAgICAgIHplcm9fZXh0ZW5kX3AgPyB0cnVlIDogZmFs c2UpKTsNCj4gKyAgIHZlY19vZmZzZXQgPSB0bXA7DQo+ICsgICBpZHhfbW9k ZSA9IG5ld19pZHhfbW9kZTsNCj4gKyB9DQo+ICsgICAgfQ0KIA0KVGhpcyBv bmUgSSBkb24ndCBnZXQuICBXaHkgZG8gd2Ugc3RpbGwgbmVlZCB0byB6ZXJv X2V4dGVuZCB3aGVuIHRoZQ0KaGFyZHdhcmUgZG9lcyBpdCBmb3IgdXM/ICBT aG91bGRuJ3Qgd2Ugb25seSBzaWduIGV4dGVuZCB3aGVuIHRoZQ0KZXhwYW5k ZXIgc2F5cyBzbz8gIEFjdHVhbGx5IHdlIHNob3VsZCBldmVuIHNjYW4tYXNz ZW1ibGVyLW5vdCBmb3INCih2KXpleHQ/ICBBZGRpdGlvbmFsbHkgbWF5YmUg YWxzbyBzY2FuLWFzc2VtYmxlciAodilzZXh0IGZvciB0aGUNCnJlc3BlY3Rp dmUgY2FzZXMuDQpCZXNpZGVzLCBjb3VsZG4ndCB3ZSBkbyBhIHdpZGVuaW5n IHNoaWZ0IHdoZW4gY29tYmluaW5nIGl0IHdpdGgNCnNjYWxlX2xvZyAhPSAw Pw0KIA0KPiArICBpZiAoU1VCUkVHX1AgKHNyYykgJiYgQ09OU1RfUE9MWV9J TlRfUCAoU1VCUkVHX1JFRyAoc3JjKSkpDQo+ICsgICAgew0KPiArICAgICAg LyogU2luY2UgVkxFTkIgcmVzdWx0IGZldGVjaGVkIGJ5IGNzcnIgaXMgYWx3 YXlzIHdpdGhpbiBQbW9kZSBzaXplLA0KPiArIHdlIGFsd2F5cyBzZXQgdGhl IHVwcGVyIGJpdHMgb2YgdGhlIFJFRyB3aXRoIGxhcmdlciBtb2RlIHRoYW4g UG1vZGUNCj4gKyBhcyAwLiAgVGhlIGNvZGUgc2VxdWVuY2UgaXMgdHJhbnNm b3JtZWQgYXMgZm9sbG93czoNCj4gKw0KPiArICAgICAgLSAoc2V0IChyZWc6 U0kgMTM2KQ0KPiArICAgICAoc3VicmVnOlNJIChjb25zdF9wb2x5X2ludDpE SSBbMTYsMTZdKSAwKSkNCj4gKyAgICAgIC0+IChzZXQgKHJlZzpTSSAxMzYp IChjb25zdF9wb2x5X2ludDpTSSBbMTYsMTZdKSkNCj4gKw0KPiArICAgICAg LSAoc2V0IChyZWc6U0kgMTM2KQ0KPiArICAgICAoc3VicmVnOlNJIChjb25z dF9wb2x5X2ludDpESSBbMTYsMTZdKSA0KSkNCj4gKyAgICAgIC0+IChzZXQg KHJlZzpTSSAxMzYpIChjb25zdF9pbnQgMCkpICAqLw0KPiArICAgICAgcnR4 IHBvbHlfcnR4ID0gU1VCUkVHX1JFRyAoc3JjKTsNCj4gKyAgICAgIHBvbHlf aW50NjQgdmFsdWUgPSBydHhfdG9fcG9seV9pbnQ2NCAocG9seV9ydHgpOw0K PiArICAgICAgLyogVGhlIG9ubHkgcG9zc2libGUgY2FzZSBpcyBoYW5kbGlu ZyBDT05TVF9QT0xZX0lOVDpESSBpbiBSVjMyIHN5c3RlbS4gKi8NCj4gKyAg ICAgIGdjY19hc3NlcnQgKCFUQVJHRVRfNjRCSVQgJiYgbW9kZSA9PSBTSW1v ZGUNCj4gKyAgICYmIEdFVF9NT0RFIChwb2x5X3J0eCkgPT0gREltb2RlICYm IGtub3duX2dlICh2YWx1ZSwgMFUpKTsNCj4gKyAgICAgIGlmIChrbm93bl9l cSAoU1VCUkVHX0JZVEUgKHNyYyksIEdFVF9NT0RFX1NJWkUgKFBtb2RlKSkp DQo+ICsgZW1pdF9tb3ZlX2luc24gKGRlc3QsIGNvbnN0MF9ydHgpOw0KPiAr ICAgICAgZWxzZQ0KPiArIGVtaXRfbW92ZV9pbnNuIChkZXN0LCBnZW5faW50 X21vZGUgKHZhbHVlLCBQbW9kZSkpOw0KPiArICAgICAgcmV0dXJuIHRydWU7 DQo+ICsgICAgfQ0KIA0KQXMgZGlzY3Vzc2VkIHNlcGFyYXRlbHksIEknZCBy YXRoZXIgZ28gd2l0aA0KIA0KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlz Y3YvcmlzY3YuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjDQppbmRl eCBkNDBkNDMwZGIxYi4uNjczNWM3NzYzYjUgMTAwNjQ0DQotLS0gYS9nY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LmNjDQorKysgYi9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LmNjDQpAQCAtMjA2MSw3ICsyMDYxLDE0IEBAIHJpc2N2X2xlZ2l0 aW1pemVfcG9seV9tb3ZlIChtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGRlc3Qs IHJ0eCB0bXAsIHJ0eCBzcmMpDQogICAgICAobSwgbikgPSBiYXNlICogbWFn biArIGNvbnN0YW50Lg0KICAgICAgVGhpcyBjYWxjdWxhdGlvbiBkb2Vzbid0 IG5lZWQgZGl2IG9wZXJhdGlvbi4gICovDQotICBlbWl0X21vdmVfaW5zbiAo dG1wLCBnZW5faW50X21vZGUgKEJZVEVTX1BFUl9SSVNDVl9WRUNUT1IsIG1v ZGUpKTsNCisgICAgaWYgKG1vZGUgPD0gUG1vZGUpDQorICAgICAgZW1pdF9t b3ZlX2luc24gKHRtcCwgZ2VuX2ludF9tb2RlIChCWVRFU19QRVJfUklTQ1Zf VkVDVE9SLCBtb2RlKSk7DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAg IGVtaXRfbW92ZV9pbnNuIChnZW5faGlnaHBhcnQgKFBtb2RlLCB0bXApLCBD T05TVDBfUlRYIChQbW9kZSkpOw0KKyAgICAgICBlbWl0X21vdmVfaW5zbiAo Z2VuX2xvd3BhcnQgKFBtb2RlLCB0bXApLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgZ2VuX2ludF9tb2RlIChCWVRFU19QRVJfUklTQ1ZfVkVDVE9SLCBQ bW9kZSkpOw0KKyAgICAgIH0NCiAgIGlmIChCWVRFU19QRVJfUklTQ1ZfVkVD VE9SLmlzX2NvbnN0YW50ICgpKQ0KICAgICB7DQpAQCAtMjE2OCw3ICsyMTc1 LDcgQEAgcmlzY3ZfbGVnaXRpbWl6ZV9tb3ZlIChtYWNoaW5lX21vZGUgbW9k ZSwgcnR4IGRlc3QsIHJ0eCBzcmMpDQogICAgICAgICAgcmV0dXJuIGZhbHNl Ow0KICAgICAgICB9DQotICAgICAgaWYgKHNhdGlzZmllc19jb25zdHJhaW50 X3ZwIChzcmMpKQ0KKyAgICAgIGlmIChzYXRpc2ZpZXNfY29uc3RyYWludF92 cCAoc3JjKSAmJiBHRVRfTU9ERSAoc3JjKSA9PSBQbW9kZSkNCiAgICAgICAg cmV0dXJuIGZhbHNlOw0KIA0KaW5zdGVhZC4gIFRoaXMgYXZvaWQgdGhlIChz dXJwcmlzaW5nKSB3ZWlyZCBzdWJyZWcgYmVpbmcgZ2VuZXJhdGVkDQphdCBh bGwgYW5kIHdlIGRvbid0IG5lZWQgdG8gZW5zdXJlLCBwcm9iYWJseSByZWR1 bmRhbnRseSwgdGhhdCB0aGUNCmNvbnN0X3BvbHkgdmFsdWUgaXMgaW4gcmFu Z2UgZXRjLg0KIA0KPiArICAgICAgICAgICAmJiAoaW1tZWRpYXRlX29wZXJh bmQgKG9wZXJhbmRzWzNdLCBQbW9kZSkNCj4gKyAgICAgICAgfHwgKENPTlNU X1BPTFlfSU5UX1AgKG9wZXJhbmRzWzNdKXVsZG4ndCB3ZSBkbyBhIHdpZGVu aW5nIHNoaWZ0IHdoZW4gY29tYmluZWQgd2l0aA0Kc2NhbGVfbG9nICE9IDA/ DQo+ICsgICAgICAgICAgICAmJiBrbm93bl9nZSAocnR4X3RvX3BvbHlfaW50 NjQgKG9wZXJhbmRzWzNdKSwgMFUpDQo+ICsgICAgJiYga25vd25fbGUgKHJ0 eF90b19wb2x5X2ludDY0IChvcGVyYW5kc1szXSksIEdFVF9NT0RFX1NJWkUg KDxNT0RFPm1vZGUpKSkpKQ0KPiArICAgIHsNCj4gKyAgICAgIHJ0eCB0bXAg PSBnZW5fcmVnX3J0eCAoUG1vZGUpOw0KPiArICAgICAgcG9seV9pbnQ2NCB2 YWx1ZSA9IHJ0eF90b19wb2x5X2ludDY0IChvcGVyYW5kc1szXSk7DQo+ICsg ICAgICBlbWl0X21vdmVfaW5zbiAodG1wLCBnZW5faW50X21vZGUgKHZhbHVl LCBQbW9kZSkpOw0KPiArICAgICAgb3BlcmFuZHNbM10gPSBnZW5fcnR4X1NJ R05fRVhURU5EICg8VkVMPm1vZGUsIHRtcCk7DQo+ICsgICAgfQ0KIA0KTWF5 YmUgYWRkIGEgc2luZ2xlLWxpbmUgY29tbWVudCBhcyBmb3IgdGhlIG90aGVy IGV4aXN0aW5nIGNhc2VzLg0KIA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvZ2F0aGVyLXNjYXR0ZXIvc3Ry aWRlZF9zdG9yZV9ydW4tMi5jDQo+IEBAIC0wLDAgKzEsODIgQEANCj4gKy8q IHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICov DQpBcyBkaXNjdXNzZWQgc2VwYXJhdGVseSwgIEkgd291bGQgcHJlZmVyIHNl cGFyYXRlIHJ1biB0ZXN0cyBmb3INCnp2ZmgobWluKSBidXQgSSBndWVzcyB3 ZSBjYW4gbGl2ZSB3aXRoIHRoZW0ganVzdCBub3QgYmVpbmcgdmVjdG9yaXpl ZA0KZm9yIG5vdy4NCiANClJlZ2FyZHMNClJvYmluDQogDQogDQo= ------=_001_NextPart644274848237_=------