From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by sourceware.org (Postfix) with ESMTPS id F04D0385C6F3 for ; Fri, 1 Dec 2023 22:58:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F04D0385C6F3 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F04D0385C6F3 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.207.22.56 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701471527; cv=none; b=uJ86Jqbw5qeRxhGYUvwetcbMSJ+6nzk6fNMrY7bgDRT3sWHicDpBfX+L9gti1t2yRV6nxV+1Yophwc1cW1jEnH289uom/uyPNfMKWBnn91NqsSFDmJyBa2YorDS/93CJgvT1gAh3qzLam8X29s+MzZfQuafpfA1tU6o2UFYIMdE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701471527; c=relaxed/simple; bh=MgM9Hkw3uXbGcXvlp439Hqn2GXFTzMu7uowZHQ1t0A0=; h=Date:From:To:Subject:Mime-Version:Message-ID; b=FDh4zfCKWBTvgZzHlitUfjeQi7jpyJiBHgE0U5JnqbEK/tjvFUyoK8IajFe8JhRdEDAGStXHuvT7GvpkMp5fYqr11L3bJOOuZXAKlfk6q7YKNbogvta17eWppg4AhANe+2c0XDwg0zYH3AOR66s6Yew8RjHVp2/tgzM/prabxLs= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp68t1701471517tj95fins Received: from TABLET-POE6JQHH ( [116.77.2.214]) by bizesmtp.qq.com (ESMTP) with id ; Sat, 02 Dec 2023 06:58:35 +0800 (CST) X-QQ-SSF: 01400000002000G0V000B00A0000000 X-QQ-FEAT: TvLLwIumLh7dM3nMUjjjwwUs1QjHD2KRnfQ11d/Et7buz6hrH5aTxys3QxY7h HvO4rQfbPIfBGWO3SN3HfeZ0iq6gwNOWMcnbsBX/lI253FxG8pGEsy2N3JjZWVjC/JB9Y84 Jn5PnM2uWY5ZeIUS5G7OmzXcWzGKf+SfWteCbCIW3CIh8Dp7J8m2mCRkkhly1Jx38k+sLCA nHotvumUk53KVXn+yrOOvis9zJuYpOdo4KMfg7sKAX0nMPzWgVRaEoHYnLjgYf6OUORl0Us T2oeGhoAGhqCc6enbrgOU6odr6TM9yzyxAudixbfZxYY1r5z192xhtTC1DI5NOuR48QIm3o NsBsXmiT55Hshx4YQi8EmemsIJQ12q7PXiBJ4bLzLEr3e/ASmaFLRMaHNifaWNWTTdBrfiH G7CCdJ370dZUI9+Dwy4MyA== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 12126332120713759055 Date: Sat, 2 Dec 2023 06:58:36 +0800 From: =?UTF-8?B?6ZKf5bGF5ZOy?= To: rdapp.gcc , gcc-patches , palmer , kito.cheng , "Jeff Law" Cc: rdapp.gcc Subject: Re: [PATCH] RISC-V: Add vectorized strcmp. References: X-Priority: 3 X-GUID: F3C12045-A7CF-4E08-A664-EAEDCC410D94 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <9B7FE9CAFC890D1F+202312020658356190086@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart810816182812_=----" 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,KAM_SHORT,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,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_NextPart810816182812_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 bGd0bQ0KDQoNCg0KanV6aGUuemhvbmdAcml2YWkuYWkNCiANCkZyb206IFJv YmluIERhcHANCkRhdGU6IDIwMjMtMTItMDEgMjM6MjMNClRvOiBnY2MtcGF0 Y2hlczsgcGFsbWVyOyBLaXRvIENoZW5nOyBqZWZmcmV5YWxhdzsganV6aGUu emhvbmdAcml2YWkuYWkNCkNDOiByZGFwcC5nY2MNClN1YmplY3Q6IFtQQVRD SF0gUklTQy1WOiBBZGQgdmVjdG9yaXplZCBzdHJjbXAuDQpIaSwNCiANCnRo aXMgcGF0Y2ggYWRkcyBhIHZlY3Rvcml6ZWQgc3RyY21wIGltcGxlbWVudGF0 aW9uIGFuZCB0ZXN0cy4gIFNpbWlsYXINCnRvIHN0cmxlbiwgZXhwYW5zaW9u IGlzIHN0aWxsIGd1YXJkZWQgYnkgLW1pbmxpbmUtc3RyY21wLiAgSSBqdXN0 DQpyZWFsaXplZCBJIGZvcmdvdCB0byBtYWtlIGl0IGEgc2VyaWVzIGJ1dCB0 aGlzIG9uZSBpcyBhY3R1YWxseQ0KZGVwZW5kZW50IG9uIHRoZSBORkMgcGF0 Y2ggYW5kIHRoZSByYXdtZW1jaHIgZml4IGJlZm9yZS4NCiANClJlZ2FyZHMN ClJvYmluDQogDQpnY2MvQ2hhbmdlTG9nOg0KIA0KKiBjb25maWcvcmlzY3Yv cmlzY3YtcHJvdG9zLmggKGV4cGFuZF9zdHJjbXApOiBEZWNsYXJlLg0KKiBj b25maWcvcmlzY3YvcmlzY3Ytc3RyaW5nLmNjIChyaXNjdl9leHBhbmRfc3Ry Y21wKTogQWRkDQpzdHJhdGVneSBoYW5kbGluZyBhbmQgZGVsZWdhdGlvbiB0 byBzY2FsYXIgYW5kIHZlY3RvciBleHBhbmRlcnMuDQooZXhwYW5kX3N0cmNt cCk6IFZlY3Rvcml6ZWQgaW1wbGVtZW50YXRpb24uDQoqIGNvbmZpZy9yaXNj di9yaXNjdi5tZDogQWRkIFRBUkdFVF9WRUNUT1IgdG8gc3RyY21wIGV4cGFu ZGVyLg0KIA0KZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQogDQoqIGdjYy50 YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvYnVpbHRpbi9zdHJjbXAtcnVuLmM6 IE5ldyB0ZXN0Lg0KKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL2J1 aWx0aW4vc3RyY21wLmM6IE5ldyB0ZXN0Lg0KLS0tDQpnY2MvY29uZmlnL3Jp c2N2L3Jpc2N2LXByb3Rvcy5oICAgICAgICAgICAgICAgfCAgIDEgKw0KZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi1zdHJpbmcuY2MgICAgICAgICAgICAgIHwg MTYxICsrKysrKysrKysrKysrKysrLQ0KZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di5tZCAgICAgICAgICAgICAgICAgICAgIHwgICAzICstDQouLi4vcmlzY3Yv cnZ2L2F1dG92ZWMvYnVpbHRpbi9zdHJjbXAtcnVuLmMgICAgfCAgMzIgKysr Kw0KLi4uL3Jpc2N2L3J2di9hdXRvdmVjL2J1aWx0aW4vc3RyY21wLmMgICAg ICAgIHwgIDEzICsrDQo1IGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQ0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9idWlsdGlu L3N0cmNtcC1ydW4uYw0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9idWlsdGluL3N0cmNt cC5jDQogDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1w cm90b3MuaCBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmgNCmlu ZGV4IGM5NGM4MmE5OTczLi41ODc4YTY3NDQxMyAxMDA2NDQNCi0tLSBhL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmgNCisrKyBiL2djYy9jb25m aWcvcmlzY3YvcmlzY3YtcHJvdG9zLmgNCkBAIC01NTgsNiArNTU4LDcgQEAg dm9pZCBleHBhbmRfY29uZF9iaW5vcCAodW5zaWduZWQsIHJ0eCAqKTsNCnZv aWQgZXhwYW5kX2NvbmRfdGVybm9wICh1bnNpZ25lZCwgcnR4ICopOw0Kdm9p ZCBleHBhbmRfcG9wY291bnQgKHJ0eCAqKTsNCnZvaWQgZXhwYW5kX3Jhd21l bWNociAobWFjaGluZV9tb2RlLCBydHgsIHJ0eCwgcnR4LCBib29sID0gZmFs c2UpOw0KK2Jvb2wgZXhwYW5kX3N0cmNtcCAocnR4LCBydHgsIHJ0eCwgcnR4 LCB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULCBib29sKTsNCnZvaWQgZW1pdF92 ZWNfZXh0cmFjdCAocnR4LCBydHgsIHBvbHlfaW50NjQpOw0KLyogUm91bmRp bmcgbW9kZSBiaXRmaWVsZCBmb3IgZml4ZWQgcG9pbnQgVlhSTS4gICovDQpk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1zdHJpbmcuY2Mg Yi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXN0cmluZy5jYw0KaW5kZXggNmNk ZTFiZjg5YTAuLjExYzFmNzRkMGIzIDEwMDY0NA0KLS0tIGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi1zdHJpbmcuY2MNCisrKyBiL2djYy9jb25maWcvcmlz Y3YvcmlzY3Ytc3RyaW5nLmNjDQpAQCAtNTExLDEyICs1MTEsMTkgQEAgcmlz Y3ZfZXhwYW5kX3N0cmNtcCAocnR4IHJlc3VsdCwgcnR4IHNyYzEsIHJ0eCBz cmMyLA0KICAgICByZXR1cm4gZmFsc2U7DQogICBhbGlnbm1lbnQgPSBVSU5U VkFMIChhbGlnbl9ydHgpOw0KLSAgaWYgKFRBUkdFVF9aQkIgfHwgVEFSR0VU X1hUSEVBREJCKQ0KKyAgaWYgKFRBUkdFVF9WRUNUT1IgJiYgc3RyaW5nb3Bf c3RyYXRlZ3kgJiBTVFJBVEVHWV9WRUNUT1IpDQogICAgIHsNCi0gICAgICBy ZXR1cm4gcmlzY3ZfZXhwYW5kX3N0cmNtcF9zY2FsYXIgKHJlc3VsdCwgc3Jj MSwgc3JjMiwgbmJ5dGVzLCBhbGlnbm1lbnQsDQotIG5jb21wYXJlKTsNCisg ICAgICBib29sIG9rID0gcmlzY3ZfdmVjdG9yOjpleHBhbmRfc3RyY21wIChy ZXN1bHQsIHNyYzEsIHNyYzIsDQorICAgICAgYnl0ZXNfcnR4LCBhbGlnbm1l bnQsDQorICAgICAgbmNvbXBhcmUpOw0KKyAgICAgIGlmIChvaykNCisgcmV0 dXJuIHRydWU7DQogICAgIH0NCisgIGlmICgoVEFSR0VUX1pCQiB8fCBUQVJH RVRfWFRIRUFEQkIpICYmIHN0cmluZ29wX3N0cmF0ZWd5ICYgU1RSQVRFR1lf U0NBTEFSKQ0KKyAgICByZXR1cm4gcmlzY3ZfZXhwYW5kX3N0cmNtcF9zY2Fs YXIgKHJlc3VsdCwgc3JjMSwgc3JjMiwgbmJ5dGVzLCBhbGlnbm1lbnQsDQor ICAgICAgICBuY29tcGFyZSk7DQorDQogICByZXR1cm4gZmFsc2U7DQp9DQpA QCAtMTA5Miw0ICsxMDk5LDE1MiBAQCBleHBhbmRfcmF3bWVtY2hyIChtYWNo aW5lX21vZGUgbW9kZSwgcnR4IGRzdCwgcnR4IGhheXN0YWNrLCBydHggbmVl ZGxlLA0KICAgICB9DQp9DQorLyogSW1wbGVtZW50IGNtcHN0cjxtb2RlPiB1 c2luZyB2ZWN0b3IgaW5zdHJ1Y3Rpb25zLiAgVGhlIEFMSUdOTUVOVCBhbmQN CisgICBOQ09NUEFSRSBwYXJhbWV0ZXJzIGFyZSB1bnVzZWQgZm9yIG5vdy4g ICovDQorDQorYm9vbA0KK2V4cGFuZF9zdHJjbXAgKHJ0eCByZXN1bHQsIHJ0 eCBzcmMxLCBydHggc3JjMiwgcnR4IG5ieXRlcywNCisgICAgICAgIHVuc2ln bmVkIEhPU1RfV0lERV9JTlQsIGJvb2wpDQorew0KKyAgZ2NjX2Fzc2VydCAo VEFSR0VUX1ZFQ1RPUik7DQorDQorICAvKiBXZSBkb24ndCBzdXBwb3J0IGJp ZyBlbmRpYW4uICAqLw0KKyAgaWYgKEJZVEVTX0JJR19FTkRJQU4pDQorICAg IHJldHVybiBmYWxzZTsNCisNCisgIGJvb2wgd2l0aF9sZW5ndGggPSBuYnl0 ZXMgIT0gTlVMTF9SVFg7DQorDQorICBpZiAod2l0aF9sZW5ndGgNCisgICAg ICAmJiAoIVJFR19QIChuYnl0ZXMpICYmICFTVUJSRUdfUCAobmJ5dGVzKSAm JiAhQ09OU1RfSU5UX1AgKG5ieXRlcykpKQ0KKyAgICByZXR1cm4gZmFsc2U7 DQorDQorICBpZiAod2l0aF9sZW5ndGggJiYgQ09OU1RfSU5UX1AgKG5ieXRl cykpDQorICAgIG5ieXRlcyA9IGZvcmNlX3JlZyAoUG1vZGUsIG5ieXRlcyk7 DQorDQorICBtYWNoaW5lX21vZGUgbW9kZSA9IEVfUUltb2RlOw0KKyAgdW5z aWduZWQgaW50IGlzaXplID0gR0VUX01PREVfU0laRSAobW9kZSkudG9fY29u c3RhbnQgKCk7DQorICBpbnQgbG11bCA9IFRBUkdFVF9NQVhfTE1VTDsNCisg IHBvbHlfaW50NjQgbnVuaXRzID0gZXhhY3RfZGl2IChCWVRFU19QRVJfUklT Q1ZfVkVDVE9SICogbG11bCwgaXNpemUpOw0KKw0KKyAgbWFjaGluZV9tb2Rl IHZtb2RlOw0KKyAgaWYgKCFyaXNjdl92ZWN0b3I6OmdldF92ZWN0b3JfbW9k ZSAoR0VUX01PREVfSU5ORVIgKG1vZGUpLCBudW5pdHMpDQorIC5leGlzdHMg KCZ2bW9kZSkpDQorICAgIGdjY191bnJlYWNoYWJsZSAoKTsNCisNCisgIG1h Y2hpbmVfbW9kZSBtYXNrX21vZGUgPSByaXNjdl92ZWN0b3I6OmdldF9tYXNr X21vZGUgKHZtb2RlKTsNCisNCisgIC8qIFByZXBhcmUgYWRkcmVzc2VzLiAg Ki8NCisgIHJ0eCBzcmNfYWRkcjEgPSBjb3B5X2FkZHJfdG9fcmVnIChYRVhQ IChzcmMxLCAwKSk7DQorICBydHggdnNyYzEgPSBjaGFuZ2VfYWRkcmVzcyAo c3JjMSwgdm1vZGUsIHNyY19hZGRyMSk7DQorDQorICBydHggc3JjX2FkZHIy ID0gY29weV9hZGRyX3RvX3JlZyAoWEVYUCAoc3JjMiwgMCkpOw0KKyAgcnR4 IHZzcmMyID0gY2hhbmdlX2FkZHJlc3MgKHNyYzIsIHZtb2RlLCBzcmNfYWRk cjIpOw0KKw0KKyAgLyogU2V0IGluaXRpYWwgcG9pbnRlciBidW1wIHRvIDAu ICAqLw0KKyAgcnR4IGNudCA9IGdlbl9yZWdfcnR4IChQbW9kZSk7DQorICBl bWl0X21vdmVfaW5zbiAoY250LCBDT05TVDBfUlRYIChQbW9kZSkpOw0KKw0K KyAgcnR4IHN1YiA9IGdlbl9yZWdfcnR4IChQbW9kZSk7DQorICBlbWl0X21v dmVfaW5zbiAoc3ViLCBDT05TVDBfUlRYIChQbW9kZSkpOw0KKw0KKyAgLyog Q3JlYXRlIHNvdXJjZSB2ZWN0b3JzLiAgKi8NCisgIHJ0eCB2ZWMxID0gZ2Vu X3JlZ19ydHggKHZtb2RlKTsNCisgIHJ0eCB2ZWMyID0gZ2VuX3JlZ19ydHgg KHZtb2RlKTsNCisNCisgIHJ0eCBkb25lID0gZ2VuX2xhYmVsX3J0eCAoKTsN CisgIHJ0eCBsb29wID0gZ2VuX2xhYmVsX3J0eCAoKTsNCisgIGVtaXRfbGFi ZWwgKGxvb3ApOw0KKw0KKyAgLyogQnVtcCB0aGUgcG9pbnRlcnMuICAqLw0K KyAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoc3JjX2FkZHIxLCBnZW5fcnR4 X1BMVVMgKFBtb2RlLCBzcmNfYWRkcjEsIGNudCkpKTsNCisgIGVtaXRfaW5z biAoZ2VuX3J0eF9TRVQgKHNyY19hZGRyMiwgZ2VuX3J0eF9QTFVTIChQbW9k ZSwgc3JjX2FkZHIyLCBjbnQpKSk7DQorDQorICBydHggdmxvcHMxW10gPSB7 dmVjMSwgdnNyYzF9Ow0KKyAgcnR4IHZsb3BzMltdID0ge3ZlYzIsIHZzcmMy fTsNCisNCisgIGlmICghd2l0aF9sZW5ndGgpDQorICAgIHsNCisgICAgICBl bWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3ByZWRfZmF1bHRfbG9hZCAodm1v ZGUpLA0KKyAgICAgICAgcmlzY3ZfdmVjdG9yOjpVTkFSWV9PUCwgdmxvcHMx KTsNCisNCisgICAgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3ByZWRf ZmF1bHRfbG9hZCAodm1vZGUpLA0KKyAgICAgICAgcmlzY3ZfdmVjdG9yOjpV TkFSWV9PUCwgdmxvcHMyKTsNCisgICAgfQ0KKyAgZWxzZQ0KKyAgICB7DQor ICAgICAgbmJ5dGVzID0gZ2VuX2xvd3BhcnQgKFBtb2RlLCBuYnl0ZXMpOw0K KyAgICAgIGVtaXRfbm9udmxtYXhfaW5zbiAoY29kZV9mb3JfcHJlZF9mYXVs dF9sb2FkICh2bW9kZSksDQorICAgcmlzY3ZfdmVjdG9yOjpVTkFSWV9PUCwg dmxvcHMxLCBuYnl0ZXMpOw0KKw0KKyAgICAgIGVtaXRfbm9udmxtYXhfaW5z biAoY29kZV9mb3JfcHJlZF9mYXVsdF9sb2FkICh2bW9kZSksDQorICAgcmlz Y3ZfdmVjdG9yOjpVTkFSWV9PUCwgdmxvcHMyLCBuYnl0ZXMpOw0KKyAgICB9 DQorDQorICAvKiBSZWFkIHRoZSB2bCBmb3IgdGhlIG5leHQgcG9pbnRlciBi dW1wLiAgKi8NCisgIGlmIChQbW9kZSA9PSBTSW1vZGUpDQorICAgIGVtaXRf aW5zbiAoZ2VuX3JlYWRfdmxzaSAoY250KSk7DQorICBlbHNlDQorICAgIGVt aXRfaW5zbiAoZ2VuX3JlYWRfdmxkaV96ZXJvX2V4dGVuZCAoY250KSk7DQor DQorICBpZiAod2l0aF9sZW5ndGgpDQorICAgIHsNCisgICAgICBydHggdGVz dF9kb25lID0gZ2VuX3J0eF9FUSAoVk9JRG1vZGUsIGNudCwgY29uc3QwX3J0 eCk7DQorICAgICAgZW1pdF9qdW1wX2luc24gKGdlbl9jYnJhbmNoNCAoUG1v ZGUsIHRlc3RfZG9uZSwgY250LCBjb25zdDBfcnR4LCBkb25lKSk7DQorICAg ICAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAobmJ5dGVzLCBnZW5fcnR4X01J TlVTIChQbW9kZSwgbmJ5dGVzLCBjbnQpKSk7DQorICAgIH0NCisNCisgIC8q IExvb2sgZm9yIGEgXDAgaW4gdGhlIGZpcnN0IHN0cmluZy4gICovDQorICBy dHggbWFzazAgPSBnZW5fcmVnX3J0eCAobWFza19tb2RlKTsNCisgIHJ0eCBl cTANCisgICAgPSBnZW5fcnR4X0VRIChtYXNrX21vZGUsIGdlbl9jb25zdF92 ZWNfZHVwbGljYXRlICh2bW9kZSwgQ09OU1QwX1JUWCAobW9kZSkpLA0KKyAg IHZlYzEpOw0KKyAgcnR4IHZtc29wczFbXSA9IHttYXNrMCwgZXEwLCB2ZWMx LCBDT05TVDBfUlRYIChtb2RlKX07DQorICBlbWl0X25vbnZsbWF4X2luc24g KGNvZGVfZm9yX3ByZWRfZXFuZV9zY2FsYXIgKHZtb2RlKSwNCisgICAgICAg cmlzY3ZfdmVjdG9yOjpDT01QQVJFX09QLCB2bXNvcHMxLCBjbnQpOw0KKw0K KyAgLyogTG9vayBmb3IgdmVjMSAhPSB2ZWMyIChpbmNsdWRlcyB2ZWMyW2ld ID09IDApLiAgKi8NCisgIHJ0eCBtYXNrbmUgPSBnZW5fcmVnX3J0eCAobWFz a19tb2RlKTsNCisgIHJ0eCBuZSA9IGdlbl9ydHhfTkUgKG1hc2tfbW9kZSwg dmVjMSwgdmVjMik7DQorICBydHggdm1zb3BzW10gPSB7bWFza25lLCBuZSwg dmVjMSwgdmVjMn07DQorICBlbWl0X25vbnZsbWF4X2luc24gKGNvZGVfZm9y X3ByZWRfY21wICh2bW9kZSksIHJpc2N2X3ZlY3Rvcjo6Q09NUEFSRV9PUCwN CisgICAgICAgdm1zb3BzLCBjbnQpOw0KKw0KKyAgLyogQ29tYmluZSBib3Ro IG1hc2tzIGludG8gb25lLiAgKi8NCisgIHJ0eCBtYXNrID0gZ2VuX3JlZ19y dHggKG1hc2tfbW9kZSk7DQorICBydHggdm1vcm9wc1tdID0ge21hc2ssIG1h c2swLCBtYXNrbmV9Ow0KKyAgZW1pdF9ub252bG1heF9pbnNuIChjb2RlX2Zv cl9wcmVkIChJT1IsIG1hc2tfbW9kZSksDQorICAgICAgIHJpc2N2X3ZlY3Rv cjo6QklOQVJZX01BU0tfT1AsIHZtb3JvcHMsIGNudCk7DQorDQorICAvKiBG aW5kIHRoZSBmaXJzdCBiaXQgaW4gdGhlIG1hc2sgKHRoZSBmaXJzdCB1bmVx dWFsIGVsZW1lbnQpLiAgKi8NCisgIHJ0eCBmb3VuZF9hdCA9IGdlbl9yZWdf cnR4IChQbW9kZSk7DQorICBydHggdmZvcHNbXSA9IHtmb3VuZF9hdCwgbWFz a307DQorICBlbWl0X25vbnZsbWF4X2luc24gKGNvZGVfZm9yX3ByZWRfZmZz IChtYXNrX21vZGUsIFBtb2RlKSwNCisgICAgICAgcmlzY3ZfdmVjdG9yOjpD UE9QX09QLCB2Zm9wcywgY250KTsNCisNCisgIC8qIEVtaXQgdGhlIGxvb3Ag Y29uZGl0aW9uLiAgKi8NCisgIHJ0eCB0ZXN0ID0gZ2VuX3J0eF9MVCAoVk9J RG1vZGUsIGZvdW5kX2F0LCBjb25zdDBfcnR4KTsNCisgIGVtaXRfanVtcF9p bnNuIChnZW5fY2JyYW5jaDQgKFBtb2RlLCB0ZXN0LCBmb3VuZF9hdCwgY29u c3QwX3J0eCwgbG9vcCkpOw0KKw0KKyAgLyogV2FsayB1cCB0byB0aGUgZGlm ZmVyZW5jZSBwb2ludC4gICovDQorICBlbWl0X2luc24gKA0KKyAgICBnZW5f cnR4X1NFVCAoc3JjX2FkZHIxLCBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzcmNf YWRkcjEsIGZvdW5kX2F0KSkpOw0KKyAgZW1pdF9pbnNuICgNCisgICAgZ2Vu X3J0eF9TRVQgKHNyY19hZGRyMiwgZ2VuX3J0eF9QTFVTIChQbW9kZSwgc3Jj X2FkZHIyLCBmb3VuZF9hdCkpKTsNCisNCisgIC8qIExvYWQgdGhlIHJlc3Bl Y3RpdmUgYnl0ZSBhbmQgY29tcHV0ZSB0aGUgZGlmZmVyZW5jZS4gICovDQor ICBydHggYzEgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOw0KKyAgcnR4IGMyID0g Z2VuX3JlZ19ydHggKFBtb2RlKTsNCisNCisgIGRvX2xvYWRfZnJvbV9hZGRy IChtb2RlLCBjMSwgc3JjX2FkZHIxLCBzcmMxKTsNCisgIGRvX2xvYWRfZnJv bV9hZGRyIChtb2RlLCBjMiwgc3JjX2FkZHIyLCBzcmMyKTsNCisNCisgIGRv X3N1YjMgKHN1YiwgYzEsIGMyKTsNCisNCisgIGlmICh3aXRoX2xlbmd0aCkN CisgICAgZW1pdF9sYWJlbCAoZG9uZSk7DQorDQorICBlbWl0X2luc24gKGdl bl9tb3ZzaSAocmVzdWx0LCBnZW5fbG93cGFydCAoU0ltb2RlLCBzdWIpKSk7 DQorICByZXR1cm4gdHJ1ZTsNCit9DQorDQp9DQpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi5tZCBiL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YubWQNCmluZGV4IDU0MDE1ZWVkNTdjLi5iODA1YjE3MjNiOCAxMDA2NDQN Ci0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YubWQNCisrKyBiL2djYy9j b25maWcvcmlzY3YvcmlzY3YubWQNCkBAIC0zNzI2LDcgKzM3MjYsOCBAQCAo ZGVmaW5lX2V4cGFuZCAiY21wc3Ryc2kiDQogICAgICAoY29tcGFyZTpTSSAo bWF0Y2hfb3BlcmFuZDpCTEsgMSkNCiAgKG1hdGNoX29wZXJhbmQ6QkxLIDIp KSkNCiAgICAgICh1c2UgKG1hdGNoX29wZXJhbmQ6U0kgMykpXSldDQotICAi cmlzY3ZfaW5saW5lX3N0cmNtcCAmJiAhb3B0aW1pemVfc2l6ZSAmJiAoVEFS R0VUX1pCQiB8fCBUQVJHRVRfWFRIRUFEQkIpIg0KKyAgInJpc2N2X2lubGlu ZV9zdHJjbXAgJiYgIW9wdGltaXplX3NpemUNCisgICAgJiYgKFRBUkdFVF9a QkIgfHwgVEFSR0VUX1hUSEVBREJCIHx8IFRBUkdFVF9WRUNUT1IpIg0Kew0K ICAgaWYgKHJpc2N2X2V4cGFuZF9zdHJjbXAgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSwgb3BlcmFuZHNbMl0sDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTF9SVFgsIG9wZXJhbmRzWzNdKSkNCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvYnVp bHRpbi9zdHJjbXAtcnVuLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvYnVpbHRpbi9zdHJjbXAtcnVuLmMNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uNmRlYzdkYTkx YzENCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9idWlsdGluL3N0cmNtcC1ydW4uYw0K QEAgLTAsMCArMSwzMiBAQA0KKy8qIHsgZGctZG8gcnVuIH0gKi8NCisvKiB7 IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLU8zIC1taW5saW5lLXN0cmNtcCIg fSAqLw0KKw0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisNCitpbnQNCitfX2F0 dHJpYnV0ZV9fICgobm9pcGEpKQ0KK2ZvbyAoY29uc3QgY2hhciAqcywgY29u c3QgY2hhciAqdCkNCit7DQorICByZXR1cm4gX19idWlsdGluX3N0cmNtcCAo cywgdCk7DQorfQ0KKw0KK2ludA0KK19fYXR0cmlidXRlX18gKChub2lwYSwg b3B0aW1pemUgKCIwIikpKQ0KK2ZvbzIgKGNvbnN0IGNoYXIgKnMsIGNvbnN0 IGNoYXIgKnQpDQorew0KKyAgcmV0dXJuIHN0cmNtcCAocywgdCk7DQorfQ0K Kw0KKyNkZWZpbmUgU1ogMTANCisNCitpbnQgbWFpbiAoKQ0KK3sNCisgIGNv bnN0IGNoYXIgKnNbU1pdDQorICAgID0geyIiLCAgImFzZGYiLCAiMCIsICJc MCIsICIhQCMkJSoqKm0xMTIzZmRubW9pNDMiLA0KKyAgICAgICAiYSIsICJ6 IiwgICAgIjEiLCAiOSIsICAiMTIzNDU2Nzg5MDEyMzQ1Njc4ODkwMTIzNDU2 Nzg5MDEyMzQ1Njc4OTAifTsNCisNCisgIGZvciAoaW50IGkgPSAwOyBpIDwg U1o7IGkrKykNCisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBTWjsgaisrKQ0K KyAgICAgIGlmIChmb28gKHNbaV0sIHNbal0pICE9IGZvbzIgKHNbaV0sIHNb al0pKQ0KKyAgICAgICAgX19idWlsdGluX2Fib3J0ICgpOw0KK30NCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvYnVpbHRpbi9zdHJjbXAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9idWlsdGluL3N0cmNtcC5jDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmY5ZDMzYTc0 ZmM1DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvYnVpbHRpbi9zdHJjbXAuYw0KQEAg LTAsMCArMSwxMyBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7 IHJpc2N2X3YgfSB9IH0gKi8NCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9u cyAiLU8zIC1taW5saW5lLXN0cmNtcCIgfSAqLw0KKw0KK2ludA0KK19fYXR0 cmlidXRlX18gKChub2lwYSkpDQorZm9vIChjb25zdCBjaGFyICpzLCBjb25z dCBjaGFyICp0KQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5fc3RyY21wIChz LCB0KTsNCit9DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJ2bGU4ZmYiIDIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJ2Zmlyc3QubSIgMSB9IH0gKi8NCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZtb3IubSIgMSB9 IH0gKi8NCi0tIA0KMi40My4wDQogDQogDQo= ------=_001_NextPart810816182812_=------