From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) by sourceware.org (Postfix) with ESMTPS id CAA4D38313B5 for ; Fri, 7 Jul 2023 10:24:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CAA4D38313B5 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: bizesmtp87t1688725450towiiii1 Received: from LAPTOP-EPITNQBU ( [58.60.1.5]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 07 Jul 2023 18:24:09 +0800 (CST) X-QQ-SSF: 01400000000000G0T000000A0000000 X-QQ-FEAT: IcCSTr/hHjPVaxLeQI4dIngxZIMF/LYhsAiOJSPHk2Kvo5lblCvDOc7ZywDUR IaE2aDa9mF/xKFt4N+sWL1P9DYpuyEx50DzF2hCMaNzzO0XnrT2ocgAz9/Xex1q9gGY2Gq+ X+8bXVmOQArOjBZcJnnKaOjvpjUWGZGtnNuxQQgn5JQyhAQ5MjLwNyqyhGJemOn7yWqzhgw 9MFJOlzSHU1PrVyPYvAl9cJWgFaMWJF9XNXpj7Jv8wbdro2yPZPHZnFkSnfwWXjOzEUhBsU SNsOJMkPRsjcQh7yaRrJQc74XoVcZpSjj/jgYWiWfDUVm1XaieYHQJtWeEscr1zA+q8b6gC 3d9mkqLBawDIVbG7iyrcy8EqxH4S9zGQNv41vbiEnHhEKyVWTO5dGoDDYob6y81kpyItbA9 brXrW1Lmxi4joi+ksvEcd1pYWqYFF8b9oghTz4CrkT4= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 1449766543385733647 Date: Fri, 7 Jul 2023 18:24:08 +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>, , <2023070718075912382627@rivai.ai> X-Priority: 3 X-GUID: 4C7E72A6-E21D-42A3-80E9-0C061ABD1458 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart603822883584_=----" 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_H3,RCVD_IN_MSPIKE_WL,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE,T_SPF_HELO_TEMPERROR 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_NextPart603822883584_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Pj5XaGVuIHJlYWRpbmcgaXQgSSBjb25zaWRlcmVkIHVuaWZ5aW5nIGJvdGgg Y2FzZXMgYW5kIGhhdmUgbW9kdWxvX3NlbF9pbmRpY2VzDQo+Pmp1c3QgZG8g bm90aGluZyB3aGVuIHRoZSBjb25zdGFudCBhbHJlYWR5IHNhdGlzZmllcyB0 aGUgcmFuZ2UgcmVxdWlyZW1lbnQuDQo+PldvdWxkIHRoYXQgd29yaz8NCkkg dHJpZWQgYnV0IGl0IHR1cm5zIG91dCB0byBjYXVzZSBleGVjdXRpb24gZmFp bGUuDQoNClNvcnJ5LCBJIGNhbiB0cnkgdG8gcmVmaW5lIHRoaXMgY29kZS5U aGFua3MuDQoNCg0KanV6aGUuemhvbmdAcml2YWkuYWkNCiANCkZyb206IGp1 emhlLnpob25nQHJpdmFpLmFpDQpEYXRlOiAyMDIzLTA3LTA3IDE4OjA3DQpU bzogUm9iaW4gRGFwcDsgZ2NjLXBhdGNoZXMNCkNDOiBSb2JpbiBEYXBwOyBr aXRvLmNoZW5nOyBLaXRvLmNoZW5nOyBwYWxtZXI7IHBhbG1lcjsgamVmZnJl eWFsYXcNClN1YmplY3Q6IFJlOiBSZTogW1BBVENIIFYzXSBSSVNDLVY6IFN1 cHBvcnQgZ2F0aGVyX2xvYWQvc2NhdHRlciBSVlYgYXV0by12ZWN0b3JpemF0 aW9uDQo+PiBJdCdzIGEgYml0IHdlaXJkIHRoYXQgdGhlIGZ1bmN0aW9uIG5v dyBhbHNvIGVtaXRzIGFuIGluc24uICBJdCdzIG5vdA0KPj4gc2ltaWxhciB0 byB0aGUgYWFyY2g2NCB2YXJpYW50IGFueW1vcmUgdGhlbiwgSSBzdXBwb3Nl LiAgSWYgc28sIHBsZWFzZQ0KPj4gcmVtb3ZlIHRoZSBjb21tZW50Lg0KT2su DQoNCj4+IGVsdF9tb2RlIGlzIHVudXNlZCBhZnRlciB5b3VyIHBhdGNoLiAg UGxlYXNlIHJlbW92ZSBpdCBvciB3ZSB3aWxsIGhhdmUNCj4+IGEgYm9vdHN0 cmFwIGVycm9yLg0KT2sNCg0KPj5XaGVuIHJlYWRpbmcgaXQgSSBjb25zaWRl cmVkIHVuaWZ5aW5nIGJvdGggY2FzZXMgYW5kIGhhdmUgbW9kdWxvX3NlbF9p bmRpY2VzDQo+Pmp1c3QgZG8gbm90aGluZyB3aGVuIHRoZSBjb25zdGFudCBh bHJlYWR5IHNhdGlzZmllcyB0aGUgcmFuZ2UgcmVxdWlyZW1lbnQuDQo+Pldv dWxkIHRoYXQgd29yaz8NCkkgdHJpZWQgYnV0IGl0IHR1cm5zIG91dCB0byBj YXVzZSBleGVjdXRpb24gZmFpbGUuDQoNCg0KPj5UaGUgdmVjdG9yaXplciB3 aWxsIG5ldmVyIGVtaXQgdGhpcyBidXQgd2Ugd291bGRuJ3Qgd2FudCBhIHN0 ZXANCj4+b2YgMSBoZXJlLCByaWdodD8NCk5vLCB5b3UgY2FuIHRha2UgYSBs b29rIGF0IHN0cmlkZWRfbG9hZC0yLmMNCg0KPj5XaGF0J3MgZHVtbXA/ICBk dW1iPyAgSXQgbG9va3MgbGlrZSBpdCdzIHVzZWQgZm9yIHN3aXRjaGluZyBi ZXR3ZWVuDQo+PnZsbWF4L25vbnZsbWF4IHNvIGEgZGlmZmVyZW50IG5hbWUg bWlnaHQgYmUgYWR2aXNhYmxlLg0KU29ycnkgZm9yIHR5cG8sIGl0IHNob3Vs ZCBiZSBkdW1teV9sZW4gbWVhbnMgbGVuZ3RoPSB2ZiB0aGF0IGlzIHRoZSB0 cmljayBJIHBsYXkgb24gbWlkZGxlLWVuZCBtZWFuaW5nIHN1Y2ggdmVjdG9y IG9wZXJhdGlvbnMgZG8gbm90IGFmZmVjdCBieSBsZW5ndGguDQoNCg0KPj5U aGUgb3BzIGFyZSBzaW1pbGFyLCBiZXR0ZXIgdG8gZGVmaW5lIHRoZW0gb3V0 c2lkZSBvZiB0aGUgaWYvZWxzZS4NCj4+SSB3b3VsZCBhbHNvIHJhdGhlciBo YXZlIGJvdGggaW4gdGhlIHNhbWUgZW1pdCBoZWxwZXIgYnV0IHRoYXQgd2Fz DQo+PmRpc2N1c3NlZCBiZWZvcmUuICBUaGUgZm9sbG93aW5nIHNpbWlsYXIg cGF0dGVybnMgYWxsIGxvb2sgYSBiaXQNCj4+ImJvaWxlcnBsYXRlLWlzaCIu ICBUb2xlcmFibGUgZm9yIG5vdyBJIGd1ZXNzLg0KT2ssIHdpbGwgaGF2ZSBh IHRyeS4NCg0KDQo+PlRoaXMgb25lIEkgZG9uJ3QgZ2V0LiAgV2h5IGRvIHdl IHN0aWxsIG5lZWQgdG8gemVyb19leHRlbmQgd2hlbiB0aGUNCj4+aGFyZHdh cmUgZG9lcyBpdCBmb3IgdXM/ICBTaG91bGRuJ3Qgd2Ugb25seSBzaWduIGV4 dGVuZCB3aGVuIHRoZQ0KPj5leHBhbmRlciBzYXlzIHNvPyAgQWN0dWFsbHkg d2Ugc2hvdWxkIGV2ZW4gc2Nhbi1hc3NlbWJsZXItbm90IGZvcg0KPj4odil6 ZXh0PyAgQWRkaXRpb25hbGx5IG1heWJlIGFsc28gc2Nhbi1hc3NlbWJsZXIg KHYpc2V4dCBmb3IgdGhlDQo+PnJlc3BlY3RpdmUgY2FzZXMuDQoNCkZvciB6 ZXJvX2V4dGVuZCB3aXRoIHNjYWxlICE9IDEsIHdlIG5lZWQgdG8gZmlyc3Qg emVyb19leHRlbmQgdGhlbiBtdWx0aXBsZSB0aGUgc2NhbGUuDQoNCj4+QmVz aWRlcywgY291bGRuJ3Qgd2UgZG8gYSB3aWRlbmluZyBzaGlmdCB3aGVuIGNv bWJpbmluZyBpdCB3aXRoDQo+PnNjYWxlX2xvZyAhPSAwPw0KUlZWIGhhcyB3 aWRlbmluZyBzaGlmdD8gSSBkaWRuJ3Qga25vdyB0aGF0LiBDdXJyZW50IG5h dHVyYWwgYXBwcm9hY2ggaXMgZmlyc3QgZXh0ZW5kIG9mZnNldCB0aGVuIHNo aWZ0Lg0KDQo+Pmluc3RlYWQuICBUaGlzIGF2b2lkIHRoZSAoc3VycHJpc2lu Zykgd2VpcmQgc3VicmVnIGJlaW5nIGdlbmVyYXRlZA0KPj5hdCBhbGwgYW5k IHdlIGRvbid0IG5lZWQgdG8gZW5zdXJlLCBwcm9iYWJseSByZWR1bmRhbnRs eSwgdGhhdCB0aGUNCj4+Y29uc3RfcG9seSB2YWx1ZSBpcyBpbiByYW5nZSBl dGMuDQpPay4NCg0KPj5NYXliZSBhZGQgYSBzaW5nbGUtbGluZSBjb21tZW50 IGFzIGZvciB0aGUgb3RoZXIgZXhpc3RpbmcgY2FzZXMuDQpvSy4NCg0KDQpq dXpoZS56aG9uZ0ByaXZhaS5haQ0KIA0KRnJvbTogUm9iaW4gRGFwcA0KRGF0 ZTogMjAyMy0wNy0wNyAxNzo0Mw0KVG86IEp1emhlLVpob25nOyBnY2MtcGF0 Y2hlcw0KQ0M6IHJkYXBwLmdjYzsga2l0by5jaGVuZzsga2l0by5jaGVuZzsg cGFsbWVyOyBwYWxtZXI7IGplZmZyZXlhbGF3DQpTdWJqZWN0OiBSZTogW1BB VENIIFYzXSBSSVNDLVY6IFN1cHBvcnQgZ2F0aGVyX2xvYWQvc2NhdHRlciBS VlYgYXV0by12ZWN0b3JpemF0aW9uDQpIaSBKdXpoZSwNCiANCnRoYW5rcywg dGhhdCdzIHF1aXRlIGEgY2h1bmsgOikgYW5kIGl0IHRvb2sgbWUgYSB3aGls ZSB0bw0KZ28gdGhyb3VnaCBpdC4NCiANCj4gQEAgLTU2NCw3ICs1NjUsMTQg QEAgY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChydHggdmVjLCBwb2x5X2lu dDY0IG1pbnZhbCwgcG9seV9pbnQ2NCBtYXh2YWwpDQo+ICBzdGF0aWMgcnR4 DQo+ICBnZW5fY29uc3RfdmVjdG9yX2R1cCAobWFjaGluZV9tb2RlIG1vZGUs IHBvbHlfaW50NjQgdmFsKQ0KPiAgew0KPiAtICBydHggYyA9IGdlbl9pbnRf bW9kZSAodmFsLCBHRVRfTU9ERV9JTk5FUiAobW9kZSkpOw0KPiArICBzY2Fs YXJfbW9kZSBzbW9kZSA9IEdFVF9NT0RFX0lOTkVSIChtb2RlKTsNCj4gKyAg cnR4IGMgPSBnZW5faW50X21vZGUgKHZhbCwgc21vZGUpOw0KPiArICBpZiAo IXZhbC5pc19jb25zdGFudCAoKSAmJiBHRVRfTU9ERV9TSVpFIChzbW9kZSkg PiBHRVRfTU9ERV9TSVpFIChQbW9kZSkpDQo+ICsgICAgew0KPiArICAgICAg cnR4IGR1cCA9IGdlbl9yZWdfcnR4IChtb2RlKTsNCj4gKyAgICAgIGVtaXRf aW5zbiAoZ2VuX3ZlY19kdXBsaWNhdGUgKG1vZGUsIGR1cCwgYykpOw0KPiAr ICAgICAgcmV0dXJuIGR1cDsNCj4gKyAgICB9DQo+ICAgIHJldHVybiBnZW5f Y29uc3RfdmVjX2R1cGxpY2F0ZSAobW9kZSwgYyk7DQo+ICB9DQogDQpJdCdz IGEgYml0IHdlaXJkIHRoYXQgdGhlIGZ1bmN0aW9uIG5vdyBhbHNvIGVtaXRz IGFuIGluc24uICBJdCdzIG5vdA0Kc2ltaWxhciB0byB0aGUgYWFyY2g2NCB2 YXJpYW50IGFueW1vcmUgdGhlbiwgSSBzdXBwb3NlLiAgSWYgc28sIHBsZWFz ZQ0KcmVtb3ZlIHRoZSBjb21tZW50Lg0KIA0KPiArDQo+ICAvKiBUaGlzIGZ1 bmN0aW9uIGVtaXRzIGEgbWFza2VkIGluc3RydWN0aW9uLiAgKi8NCj4gIHZv aWQNCj4gIGVtaXRfdmxtYXhfbWFza2VkX211X2luc24gKHVuc2lnbmVkIGlj b2RlLCBpbnQgb3BfbnVtLCBydHggKm9wcykNCj4gQEAgLTExNjIsNyArMTIw Myw2IEBAIGV4cGFuZF9jb25zdF92ZWN0b3IgKHJ0eCB0YXJnZXQsIHJ0eCBz cmMpDQo+ICB9DQo+ICAgICAgICBlbHNlDQo+ICB7DQo+IC0gICBlbHQgPSBm b3JjZV9yZWcgKGVsdF9tb2RlLCBlbHQpOw0KPiAgICBydHggb3BzW10gPSB7 dG1wLCBlbHR9Ow0KPiAgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3By ZWRfYnJvYWRjYXN0IChtb2RlKSwgUlZWX1VOT1AsIG9wcyk7DQo+ICB9DQo+ IEBAIC0yNDMxLDYgKzI0NzEsMjUgQEAgZXhwYW5kX3ZlY19jbXBfZmxvYXQg KHJ0eCB0YXJnZXQsIHJ0eF9jb2RlIGNvZGUsIHJ0eCBvcDAsIHJ0eCBvcDEs DQo+ICAgIHJldHVybiBmYWxzZTsNCj4gIH0NCiANCmVsdF9tb2RlIGlzIHVu dXNlZCBhZnRlciB5b3VyIHBhdGNoLiAgUGxlYXNlIHJlbW92ZSBpdCBvciB3 ZSB3aWxsIGhhdmUNCmEgYm9vdHN0cmFwIGVycm9yLg0KIA0KPiBAQCAtMjQ0 NCw0MiArMjUwMyw0NyBAQCBleHBhbmRfdmVjX3Blcm0gKHJ0eCB0YXJnZXQs IHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0eCBzZWwpDQo+ICAgICAgIGluZGV4IGlz IGluIHJhbmdlIG9mIFswLCBudW5pdHMgLSAxXS4gQSBzaW5nbGUgdnJnYXRo ZXIgaW5zdHJ1Y3Rpb25zIGlzDQo+ICAgICAgIGVub3VnaC4gU2luY2Ugd2Ug d2lsbCB1c2UgdnJnYXRoZXJlaTE2LnZ2IGZvciB2YXJpYWJsZS1sZW5ndGgg dmVjdG9yLA0KPiAgICAgICBpdCBpcyBuZXZlciBvdXQgb2YgcmFuZ2UgYW5k IHdlIGRvbid0IG5lZWQgdG8gbW9kdWxvIHRoZSBpbmRleC4gICovDQo+IC0g IGlmICghbnVuaXRzLmlzX2NvbnN0YW50ICgpIHx8IGNvbnN0X3ZlY19hbGxf aW5fcmFuZ2VfcCAoc2VsLCAwLCBudW5pdHMgLSAxKSkNCj4gKyAgaWYgKG51 bml0cy5pc19jb25zdGFudCAoKSAmJiBjb25zdF92ZWNfYWxsX2luX3Jhbmdl X3AgKHNlbCwgMCwgbnVuaXRzIC0gMSkpDQo+ICAgICAgew0KPiAgICAgICAg ZW1pdF92bG1heF9nYXRoZXJfaW5zbiAodGFyZ2V0LCBvcDAsIHNlbCk7DQo+ ICAgICAgICByZXR1cm47DQo+ICAgICAgfQ0KPiAgDQo+ICAgIC8qIENoZWNr IGlmIHRoZSB0d28gdmFsdWVzIHZlY3RvcnMgYXJlIHRoZSBzYW1lLiAgKi8N Cj4gLSAgaWYgKHJ0eF9lcXVhbF9wIChvcDAsIG9wMSkgfHwgY29uc3RfdmVj X2R1cGxpY2F0ZV9wIChzZWwpKQ0KPiArICBpZiAocnR4X2VxdWFsX3AgKG9w MCwgb3AxKSkNCj4gICAgICB7DQo+ICAgICAgICAvKiBOb3RlOiB2ZWNfcGVy bSBpbmRpY2VzIGFyZSBzdXBwb3NlZCB0byB3cmFwIHdoZW4gdGhleSBnbyBi ZXlvbmQgdGhlDQo+ICBzaXplIG9mIHRoZSB0d28gdmFsdWUgdmVjdG9ycywg aS5lLiB0aGUgdXBwZXIgYml0cyBvZiB0aGUgaW5kaWNlcw0KPiAgYXJlIGVm ZmVjdGl2ZWx5IGlnbm9yZWQuICBSVlYgdnJnYXRoZXIgaW5zdGVhZCBwcm9k dWNlcyAwIGZvciBhbnkNCj4gIG91dC1vZi1yYW5nZSBpbmRpY2VzLCBzbyB3 ZSBuZWVkIHRvIG1vZHVsbyBhbGwgdGhlIHZlY19wZXJtIGluZGljZXMNCj4g IHRvIGVuc3VyZSB0aGV5IGFyZSBhbGwgaW4gcmFuZ2Ugb2YgWzAsIG51bml0 cyAtIDFdLiAgKi8NCj4gLSAgICAgIHJ0eCBtYXhfc2VsID0gZ2VuX2NvbnN0 X3ZlY3Rvcl9kdXAgKHNlbF9tb2RlLCBudW5pdHMgLSAxKTsNCj4gLSAgICAg IHJ0eCBzZWxfbW9kID0gZXhwYW5kX3NpbXBsZV9iaW5vcCAoc2VsX21vZGUs IEFORCwgc2VsLCBtYXhfc2VsLCBOVUxMLCAwLA0KPiAtIE9QVEFCX0RJUkVD VCk7DQo+IC0gICAgICBlbWl0X3ZsbWF4X2dhdGhlcl9pbnNuICh0YXJnZXQs IG9wMSwgc2VsX21vZCk7DQo+ICsgICAgICBydHggc2VsX21vZCA9IG1vZHVs b19zZWxfaW5kaWNlcyAoc2VsLCBudW5pdHMgLSAxKTsNCj4gKyAgICAgIGVt aXRfdmxtYXhfZ2F0aGVyX2luc24gKHRhcmdldCwgb3AwLCBzZWxfbW9kKTsN Cj4gICAgICAgIHJldHVybjsNCj4gICAgICB9DQogDQpXaGVuIHJlYWRpbmcg aXQgSSBjb25zaWRlcmVkIHVuaWZ5aW5nIGJvdGggY2FzZXMgYW5kIGhhdmUg bW9kdWxvX3NlbF9pbmRpY2VzDQpqdXN0IGRvIG5vdGhpbmcgd2hlbiB0aGUg Y29uc3RhbnQgYWxyZWFkeSBzYXRpc2ZpZXMgdGhlIHJhbmdlIHJlcXVpcmVt ZW50Lg0KV291bGQgdGhhdCB3b3JrPw0KIA0KPiAtICAgICAgT1BUQUJfRElS RUNUKTsNCj4gKyAgICAgIHBvbHlfdWludDY0IHZhbHVlID0gcnR4X3RvX3Bv bHlfaW50NjQgKGVsdCk7DQo+ICsgICAgICBydHggb3AgPSBvcDA7DQo+ICsg ICAgICBpZiAobWF5YmVfZ3QgKHZhbHVlLCBudW5pdHMgLSAxKSkNCj4gKyB7 DQo+ICsgICBzZWwgPSBnZW5fY29uc3RfdmVjdG9yX2R1cCAoc2VsX21vZGUs IHZhbHVlIC0gbnVuaXRzKTsNCj4gKyAgIG9wID0gb3AxOw0KPiArIH0NCj4g KyAgICAgIGVtaXRfdmxtYXhfZ2F0aGVyX2luc24gKHRhcmdldCwgb3AsIHNl bCk7DQo+ICAgICAgfQ0KIA0KVGhhdCdzIGFnYWluIGEgIm1vZHVsbyIuICAg Q291bGQgdGhhdCBhbHNvIGZpdCBpbiBtb2R1bG9fc2VsX2luZGljZXM/DQpZ b3VyIGNhbGwgaW4gdGhlIGVuZCwgaXQganVzdCBmZWVscyBsaWtlIHdlIGRv IHRoZSBzYW1lIHRoaW5nIGtpbmQNCm9mIGRpZmZlcmVudGx5IGluIHNldmVy YWwgcGxhY2VzIGJ1dCBubyBzdHJpY3QgcHJlZmVyZW5jZSBoZXJlLg0KIA0K PiArLyogUmV0dXJuIHRydWUgaWYgaXQgaXMgdGhlIHN0cmlkZWQgbG9hZC9z dG9yZS4gICovDQo+ICtzdGF0aWMgYm9vbA0KPiArc3RyaWRlZF9sb2FkX3N0 b3JlX3AgKHJ0eCB2ZWNfb2Zmc2V0LCBydHggKmJhc2UsIHJ0eCAqc3RlcCkN Cj4gK3sNCj4gKyAgaWYgKGNvbnN0X3ZlY19zZXJpZXNfcCAodmVjX29mZnNl dCwgYmFzZSwgc3RlcCkpDQo+ICsgICAgcmV0dXJuIHRydWU7DQogDQpUaGUg dmVjdG9yaXplciB3aWxsIG5ldmVyIGVtaXQgdGhpcyBidXQgd2Ugd291bGRu J3Qgd2FudCBhIHN0ZXANCm9mIDEgaGVyZSwgcmlnaHQ/DQogDQo+ICsNCj4g KyAgLyogRm9yIHN0cmlkZWQgbG9hZC9zdG9yZSwgdmVjdG9yaXplciBhbHdh eXMgZ2VuZXJhdGVzDQo+ICsgICAgIFZFQ19TRVJJRVNfRVhQUiBmb3IgdmVj X29mZnNldC4gICovDQo+ICsgIHRyZWUgZXhwciA9IFJFR19FWFBSICh2ZWNf b2Zmc2V0KTsNCj4gKyAgaWYgKCFleHByIHx8IFRSRUVfQ09ERSAoZXhwcikg IT0gU1NBX05BTUUpDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsg IC8qIENoZWNrIGlmIGl0IGlzIEdJTVBMRSBsaWtlOiBfODggPSBWRUNfU0VS SUVTX0VYUFIgPDAsIF84Nz47ICAqLw0KPiArICBnaW1wbGUgKmRlZl9zdG10 ID0gU1NBX05BTUVfREVGX1NUTVQgKGV4cHIpOw0KPiArICBpZiAoIWRlZl9z dG10IHx8ICFpc19naW1wbGVfYXNzaWduIChkZWZfc3RtdCkNCj4gKyAgICAg IHx8IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGRlZl9zdG10KSAhPSBWRUNf U0VSSUVTX0VYUFIpDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KIA0KSW50ZXJl c3RpbmcgdG8gcXVlcnkgdGhlIGdpbXBsZSBoZXJlLiAgQXMgbG9uZyBhcyB0 aGUNCnZlY3Rvcml6ZXIgZG9lc24ndCBkbyBzdHJpZGVkIHN0b3JlcyBzZXBh cmF0ZWx5LCBJIGd1ZXNzIHdlIGNhbg0KbGl2ZSB3aXRoIHRoYXQuDQogDQo+ ICsgIHJ0eCBwdHIsIHZlY19vZmZzZXQsIHZlY19yZWcsIGxlbiwgbWFzazsN Cj4gKyAgYm9vbCB6ZXJvX2V4dGVuZF9wOw0KPiArICBpbnQgc2NhbGVfbG9n MjsNCj4gKyAgaWYgKGlzX2xvYWQpDQo+ICsgICAgew0KPiArICAgICAgdmVj X3JlZyA9IG9wc1swXTsNCj4gKyAgICAgIHB0ciA9IG9wc1sxXTsNCj4gKyAg ICAgIHZlY19vZmZzZXQgPSBvcHNbMl07DQo+ICsgICAgICB6ZXJvX2V4dGVu ZF9wID0gSU5UVkFMIChvcHNbM10pOw0KPiArICAgICAgc2NhbGVfbG9nMiA9 IGV4YWN0X2xvZzIgKElOVFZBTCAob3BzWzRdKSk7DQo+ICsgICAgICBsZW4g PSBvcHNbNV07DQo+ICsgICAgICBtYXNrID0gb3BzWzddOw0KPiArICAgIH0N Cj4gKyAgZWxzZQ0KPiArICAgIHsNCj4gKyAgICAgIHZlY19yZWcgPSBvcHNb NF07DQo+ICsgICAgICBwdHIgPSBvcHNbMF07DQo+ICsgICAgICB2ZWNfb2Zm c2V0ID0gb3BzWzFdOw0KPiArICAgICAgemVyb19leHRlbmRfcCA9IElOVFZB TCAob3BzWzJdKTsNCj4gKyAgICAgIHNjYWxlX2xvZzIgPSBleGFjdF9sb2cy IChJTlRWQUwgKG9wc1szXSkpOw0KPiArICAgICAgbGVuID0gb3BzWzVdOw0K PiArICAgICAgbWFzayA9IG9wc1s3XTsNCj4gKyAgICB9DQogDQo+ICsgIGJv b2wgaXNfZHVtbXBfbGVuID0gcG9seV9pbnRfcnR4X3AgKGxlbiwgJnZhbHVl KSAmJiBrbm93bl9lcSAodmFsdWUsIG51bml0cyk7DQogDQpXaGF0J3MgZHVt bXA/ICBkdW1iPyAgSXQgbG9va3MgbGlrZSBpdCdzIHVzZWQgZm9yIHN3aXRj aGluZyBiZXR3ZWVuDQp2bG1heC9ub252bG1heCBzbyBhIGRpZmZlcmVudCBu YW1lIG1pZ2h0IGJlIGFkdmlzYWJsZS4NCiANCj4gKyAgICAgICBlbWl0X2lu c24gKGdlbl9leHRlbmRfaW5zbiAoZXh0ZW5kX3N0ZXAsIHN0ZXAsIFBtb2Rl LA0KPiArICAgR0VUX01PREUgKHN0ZXApLA0KPiArICAgemVyb19leHRlbmRf cCA/IHRydWUgOiBmYWxzZSkpOw0KPiArICAgICAgIHN0ZXAgPSBleHRlbmRf c3RlcDsNCj4gKyAgICAgfQ0KPiArIH0NCiANClNlZSBiZWxvdy4NCiANCj4g KyAgICAgIHJ0eCBtZW0gPSB2YWxpZGl6ZV9tZW0gKGdlbl9ydHhfTUVNICh2 ZWNfbW9kZSwgcHRyKSk7DQo+ICsgICAgICAvKiBFbWl0IHZsc2UudiBpZiBp dCdzIGxvYWQuIE90aGVyd2lzZSwgZW1pdCB2c3NlLnYuICAqLw0KPiArICAg ICAgaWYgKGlzX2xvYWQpDQo+ICsgew0KPiArICAgaW5zbl9jb2RlIGljb2Rl ID0gY29kZV9mb3JfcHJlZF9zdHJpZGVkX2xvYWQgKHZlY19tb2RlKTsNCj4g KyAgIGlmIChpc19kdW1tcF9sZW4pDQo+ICsgICAgIHsNCj4gKyAgICAgICBy dHggbG9hZF9vcHNbXQ0KPiArID0ge3ZlY19yZWcsIG1hc2ssIFJWVl9WVU5E RUYgKHZlY19tb2RlKSwgbWVtLCBzdGVwfTsNCj4gKyAgICAgICBlbWl0X3Zs bWF4X21hc2tlZF9pbnNuIChpY29kZSwgUlZWX0dBVEhFUl9NX09QLCBsb2Fk X29wcyk7DQo+ICsgICAgIH0NCj4gKyAgIGVsc2UNCj4gKyAgICAgew0KPiAr ICAgICAgIHJ0eCBsb2FkX29wc1tdDQo+ICsgPSB7dmVjX3JlZywgbWFzaywg UlZWX1ZVTkRFRiAodmVjX21vZGUpLCBtZW0sIHN0ZXB9Ow0KPiArICAgICAg IGVtaXRfbm9udmxtYXhfbWFza2VkX2luc24gKGljb2RlLCBSVlZfR0FUSEVS X01fT1AsIGxvYWRfb3BzLCBsZW4pOw0KPiArICAgICB9DQo+ICsgfQ0KIA0K VGhlIG9wcyBhcmUgc2ltaWxhciwgYmV0dGVyIHRvIGRlZmluZSB0aGVtIG91 dHNpZGUgb2YgdGhlIGlmL2Vsc2UuDQpJIHdvdWxkIGFsc28gcmF0aGVyIGhh dmUgYm90aCBpbiB0aGUgc2FtZSBlbWl0IGhlbHBlciBidXQgdGhhdCB3YXMN CmRpc2N1c3NlZCBiZWZvcmUuICBUaGUgZm9sbG93aW5nIHNpbWlsYXIgcGF0 dGVybnMgYWxsIGxvb2sgYSBiaXQNCiJib2lsZXJwbGF0ZS1pc2giLiAgVG9s ZXJhYmxlIGZvciBub3cgSSBndWVzcy4NCiANCj4gKyAgaWYgKGlubmVyX29m ZnNpemUgPCBpbm5lcl92c2l6ZSkNCj4gKyAgICB7DQo+ICsgICAgICAvKiA3 LjIuIFZlY3RvciBMb2FkL1N0b3JlIEFkZHJlc3NpbmcgTW9kZXMuDQo+ICsg SWYgdGhlIHZlY3RvciBvZmZzZXQgZWxlbWVudHMgYXJlIG5hcnJvd2VyIHRo YW4gWExFTiwgdGhleSBhcmUNCj4gKyB6ZXJvLWV4dGVuZGVkIHRvIFhMRU4g YmVmb3JlIGFkZGluZyB0byB0aGUgcHRyIGVmZmVjdGl2ZSBhZGRyZXNzLiBJ Zg0KPiArIHRoZSB2ZWN0b3Igb2Zmc2V0IGVsZW1lbnRzIGFyZSB3aWRlciB0 aGFuIFhMRU4sIHRoZSBsZWFzdC1zaWduaWZpY2FudA0KPiArIFhMRU4gYml0 cyBhcmUgdXNlZCBpbiB0aGUgYWRkcmVzcyBjYWxjdWxhdGlvbi4gQW4gaW1w bGVtZW50YXRpb24gbXVzdA0KPiArIHJhaXNlIGFuIGlsbGVnYWwgaW5zdHJ1 Y3Rpb24gZXhjZXB0aW9uIGlmIHRoZSBFRVcgaXMgbm90IHN1cHBvcnRlZCBm b3INCj4gKyBvZmZzZXQgZWxlbWVudHMuICAqLw0KPiArICAgICAgaWYgKCF6 ZXJvX2V4dGVuZF9wIHx8ICh6ZXJvX2V4dGVuZF9wICYmIHNjYWxlX2xvZzIg IT0gMCkpDQo+ICsgew0KPiArICAgaWYgKHplcm9fZXh0ZW5kX3ApDQo+ICsg ICAgIGlubmVyX2lkeF9tb2RlDQo+ICsgICAgICAgPSBpbnRfbW9kZV9mb3Jf c2l6ZSAoaW5uZXJfb2Zmc2l6ZSAqIDIsIDApLnJlcXVpcmUgKCk7DQo+ICsg ICBlbHNlDQo+ICsgICAgIGlubmVyX2lkeF9tb2RlID0gaW50X21vZGVfZm9y X3NpemUgKEJJVFNfUEVSX1dPUkQsIDApLnJlcXVpcmUgKCk7DQo+ICsgICBt YWNoaW5lX21vZGUgbmV3X2lkeF9tb2RlDQo+ICsgICAgID0gZ2V0X3ZlY3Rv cl9tb2RlIChpbm5lcl9pZHhfbW9kZSwgbnVuaXRzKS5yZXF1aXJlICgpOw0K PiArICAgcnR4IHRtcCA9IGdlbl9yZWdfcnR4IChuZXdfaWR4X21vZGUpOw0K PiArICAgZW1pdF9pbnNuIChnZW5fZXh0ZW5kX2luc24gKHRtcCwgdmVjX29m ZnNldCwgbmV3X2lkeF9tb2RlLCBpZHhfbW9kZSwNCj4gKyAgICAgICB6ZXJv X2V4dGVuZF9wID8gdHJ1ZSA6IGZhbHNlKSk7DQo+ICsgICB2ZWNfb2Zmc2V0 ID0gdG1wOw0KPiArICAgaWR4X21vZGUgPSBuZXdfaWR4X21vZGU7DQo+ICsg fQ0KPiArICAgIH0NCiANClRoaXMgb25lIEkgZG9uJ3QgZ2V0LiAgV2h5IGRv IHdlIHN0aWxsIG5lZWQgdG8gemVyb19leHRlbmQgd2hlbiB0aGUNCmhhcmR3 YXJlIGRvZXMgaXQgZm9yIHVzPyAgU2hvdWxkbid0IHdlIG9ubHkgc2lnbiBl eHRlbmQgd2hlbiB0aGUNCmV4cGFuZGVyIHNheXMgc28/ICBBY3R1YWxseSB3 ZSBzaG91bGQgZXZlbiBzY2FuLWFzc2VtYmxlci1ub3QgZm9yDQoodil6ZXh0 PyAgQWRkaXRpb25hbGx5IG1heWJlIGFsc28gc2Nhbi1hc3NlbWJsZXIgKHYp c2V4dCBmb3IgdGhlDQpyZXNwZWN0aXZlIGNhc2VzLg0KQmVzaWRlcywgY291 bGRuJ3Qgd2UgZG8gYSB3aWRlbmluZyBzaGlmdCB3aGVuIGNvbWJpbmluZyBp dCB3aXRoDQpzY2FsZV9sb2cgIT0gMD8NCiANCj4gKyAgaWYgKFNVQlJFR19Q IChzcmMpICYmIENPTlNUX1BPTFlfSU5UX1AgKFNVQlJFR19SRUcgKHNyYykp KQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIFNpbmNlIFZMRU5CIHJlc3VsdCBm ZXRlY2hlZCBieSBjc3JyIGlzIGFsd2F5cyB3aXRoaW4gUG1vZGUgc2l6ZSwN Cj4gKyB3ZSBhbHdheXMgc2V0IHRoZSB1cHBlciBiaXRzIG9mIHRoZSBSRUcg d2l0aCBsYXJnZXIgbW9kZSB0aGFuIFBtb2RlDQo+ICsgYXMgMC4gIFRoZSBj b2RlIHNlcXVlbmNlIGlzIHRyYW5zZm9ybWVkIGFzIGZvbGxvd3M6DQo+ICsN Cj4gKyAgICAgIC0gKHNldCAocmVnOlNJIDEzNikNCj4gKyAgICAgKHN1YnJl ZzpTSSAoY29uc3RfcG9seV9pbnQ6REkgWzE2LDE2XSkgMCkpDQo+ICsgICAg ICAtPiAoc2V0IChyZWc6U0kgMTM2KSAoY29uc3RfcG9seV9pbnQ6U0kgWzE2 LDE2XSkpDQo+ICsNCj4gKyAgICAgIC0gKHNldCAocmVnOlNJIDEzNikNCj4g KyAgICAgKHN1YnJlZzpTSSAoY29uc3RfcG9seV9pbnQ6REkgWzE2LDE2XSkg NCkpDQo+ICsgICAgICAtPiAoc2V0IChyZWc6U0kgMTM2KSAoY29uc3RfaW50 IDApKSAgKi8NCj4gKyAgICAgIHJ0eCBwb2x5X3J0eCA9IFNVQlJFR19SRUcg KHNyYyk7DQo+ICsgICAgICBwb2x5X2ludDY0IHZhbHVlID0gcnR4X3RvX3Bv bHlfaW50NjQgKHBvbHlfcnR4KTsNCj4gKyAgICAgIC8qIFRoZSBvbmx5IHBv c3NpYmxlIGNhc2UgaXMgaGFuZGxpbmcgQ09OU1RfUE9MWV9JTlQ6REkgaW4g UlYzMiBzeXN0ZW0uICovDQo+ICsgICAgICBnY2NfYXNzZXJ0ICghVEFSR0VU XzY0QklUICYmIG1vZGUgPT0gU0ltb2RlDQo+ICsgICAmJiBHRVRfTU9ERSAo cG9seV9ydHgpID09IERJbW9kZSAmJiBrbm93bl9nZSAodmFsdWUsIDBVKSk7 DQo+ICsgICAgICBpZiAoa25vd25fZXEgKFNVQlJFR19CWVRFIChzcmMpLCBH RVRfTU9ERV9TSVpFIChQbW9kZSkpKQ0KPiArIGVtaXRfbW92ZV9pbnNuIChk ZXN0LCBjb25zdDBfcnR4KTsNCj4gKyAgICAgIGVsc2UNCj4gKyBlbWl0X21v dmVfaW5zbiAoZGVzdCwgZ2VuX2ludF9tb2RlICh2YWx1ZSwgUG1vZGUpKTsN Cj4gKyAgICAgIHJldHVybiB0cnVlOw0KPiArICAgIH0NCiANCkFzIGRpc2N1 c3NlZCBzZXBhcmF0ZWx5LCBJJ2QgcmF0aGVyIGdvIHdpdGgNCiANCmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjIGIvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi5jYw0KaW5kZXggZDQwZDQzMGRiMWIuLjY3MzVjNzc2 M2I1IDEwMDY0NA0KLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYw0K KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYw0KQEAgLTIwNjEsNyAr MjA2MSwxNCBAQCByaXNjdl9sZWdpdGltaXplX3BvbHlfbW92ZSAobWFjaGlu ZV9tb2RlIG1vZGUsIHJ0eCBkZXN0LCBydHggdG1wLCBydHggc3JjKQ0KICAg ICAgKG0sIG4pID0gYmFzZSAqIG1hZ24gKyBjb25zdGFudC4NCiAgICAgIFRo aXMgY2FsY3VsYXRpb24gZG9lc24ndCBuZWVkIGRpdiBvcGVyYXRpb24uICAq Lw0KLSAgZW1pdF9tb3ZlX2luc24gKHRtcCwgZ2VuX2ludF9tb2RlIChCWVRF U19QRVJfUklTQ1ZfVkVDVE9SLCBtb2RlKSk7DQorICAgIGlmIChtb2RlIDw9 IFBtb2RlKQ0KKyAgICAgIGVtaXRfbW92ZV9pbnNuICh0bXAsIGdlbl9pbnRf bW9kZSAoQllURVNfUEVSX1JJU0NWX1ZFQ1RPUiwgbW9kZSkpOw0KKyAgICBl bHNlDQorICAgICAgew0KKyAgICAgICBlbWl0X21vdmVfaW5zbiAoZ2VuX2hp Z2hwYXJ0IChQbW9kZSwgdG1wKSwgQ09OU1QwX1JUWCAoUG1vZGUpKTsNCisg ICAgICAgZW1pdF9tb3ZlX2luc24gKGdlbl9sb3dwYXJ0IChQbW9kZSwgdG1w KSwNCisgICAgICAgICAgICAgICAgICAgICAgIGdlbl9pbnRfbW9kZSAoQllU RVNfUEVSX1JJU0NWX1ZFQ1RPUiwgUG1vZGUpKTsNCisgICAgICB9DQogICBp ZiAoQllURVNfUEVSX1JJU0NWX1ZFQ1RPUi5pc19jb25zdGFudCAoKSkNCiAg ICAgew0KQEAgLTIxNjgsNyArMjE3NSw3IEBAIHJpc2N2X2xlZ2l0aW1pemVf bW92ZSAobWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBkZXN0LCBydHggc3JjKQ0K ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KLSAgICAgIGlm IChzYXRpc2ZpZXNfY29uc3RyYWludF92cCAoc3JjKSkNCisgICAgICBpZiAo c2F0aXNmaWVzX2NvbnN0cmFpbnRfdnAgKHNyYykgJiYgR0VUX01PREUgKHNy YykgPT0gUG1vZGUpDQogICAgICAgIHJldHVybiBmYWxzZTsNCiANCmluc3Rl YWQuICBUaGlzIGF2b2lkIHRoZSAoc3VycHJpc2luZykgd2VpcmQgc3VicmVn IGJlaW5nIGdlbmVyYXRlZA0KYXQgYWxsIGFuZCB3ZSBkb24ndCBuZWVkIHRv IGVuc3VyZSwgcHJvYmFibHkgcmVkdW5kYW50bHksIHRoYXQgdGhlDQpjb25z dF9wb2x5IHZhbHVlIGlzIGluIHJhbmdlIGV0Yy4NCiANCj4gKyAgICAgICAg ICAgJiYgKGltbWVkaWF0ZV9vcGVyYW5kIChvcGVyYW5kc1szXSwgUG1vZGUp DQo+ICsgICAgICAgIHx8IChDT05TVF9QT0xZX0lOVF9QIChvcGVyYW5kc1sz XSl1bGRuJ3Qgd2UgZG8gYSB3aWRlbmluZyBzaGlmdCB3aGVuIGNvbWJpbmVk IHdpdGgNCnNjYWxlX2xvZyAhPSAwPw0KPiArICAgICAgICAgICAgJiYga25v d25fZ2UgKHJ0eF90b19wb2x5X2ludDY0IChvcGVyYW5kc1szXSksIDBVKQ0K PiArICAgICYmIGtub3duX2xlIChydHhfdG9fcG9seV9pbnQ2NCAob3BlcmFu ZHNbM10pLCBHRVRfTU9ERV9TSVpFICg8TU9ERT5tb2RlKSkpKSkNCj4gKyAg ICB7DQo+ICsgICAgICBydHggdG1wID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsN Cj4gKyAgICAgIHBvbHlfaW50NjQgdmFsdWUgPSBydHhfdG9fcG9seV9pbnQ2 NCAob3BlcmFuZHNbM10pOw0KPiArICAgICAgZW1pdF9tb3ZlX2luc24gKHRt cCwgZ2VuX2ludF9tb2RlICh2YWx1ZSwgUG1vZGUpKTsNCj4gKyAgICAgIG9w ZXJhbmRzWzNdID0gZ2VuX3J0eF9TSUdOX0VYVEVORCAoPFZFTD5tb2RlLCB0 bXApOw0KPiArICAgIH0NCiANCk1heWJlIGFkZCBhIHNpbmdsZS1saW5lIGNv bW1lbnQgYXMgZm9yIHRoZSBvdGhlciBleGlzdGluZyBjYXNlcy4NCiANCj4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL2dhdGhlci1zY2F0dGVyL3N0cmlkZWRfc3RvcmVfcnVuLTIuYw0KPiBA QCAtMCwwICsxLDgyIEBADQo+ICsvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7 IHJpc2N2X3ZlY3RvciB9IH0gfSAqLw0KQXMgZGlzY3Vzc2VkIHNlcGFyYXRl bHksICBJIHdvdWxkIHByZWZlciBzZXBhcmF0ZSBydW4gdGVzdHMgZm9yDQp6 dmZoKG1pbikgYnV0IEkgZ3Vlc3Mgd2UgY2FuIGxpdmUgd2l0aCB0aGVtIGp1 c3Qgbm90IGJlaW5nIHZlY3Rvcml6ZWQNCmZvciBub3cuDQogDQpSZWdhcmRz DQpSb2Jpbg0KIA0KIA0K ------=_001_NextPart603822883584_=------