From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4196 invoked by alias); 24 Jun 2014 10:42:20 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 4181 invoked by uid 89); 24 Jun 2014 10:42:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mailapp01.imgtec.com Received: from mailapp01.imgtec.com (HELO mailapp01.imgtec.com) (195.59.15.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 24 Jun 2014 10:42:18 +0000 Received: from KLMAIL01.kl.imgtec.org (unknown [192.168.5.35]) by Websense Email Security Gateway with ESMTPS id 4C7AB89613A2E; Tue, 24 Jun 2014 11:42:11 +0100 (IST) Received: from KLMAIL02.kl.imgtec.org (192.168.5.97) by KLMAIL01.kl.imgtec.org (192.168.5.35) with Microsoft SMTP Server (TLS) id 14.3.181.6; Tue, 24 Jun 2014 11:42:13 +0100 Received: from PUMAIL01.pu.imgtec.org (192.168.91.250) by klmail02.kl.imgtec.org (192.168.5.97) with Microsoft SMTP Server (TLS) id 14.3.181.6; Tue, 24 Jun 2014 11:42:13 +0100 Received: from PUMAIL01.pu.imgtec.org ([::1]) by PUMAIL01.pu.imgtec.org ([::1]) with mapi id 14.02.0247.003; Tue, 24 Jun 2014 16:12:10 +0530 From: Sameera Deshpande To: Richard Sandiford CC: Matthew Fortune , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH][MIPS] Enable load-load/store-store bonding Date: Tue, 24 Jun 2014 10:42:00 -0000 Message-ID: <38C8F1E431EDD94A82971C543A11B4FEE0C46D@PUMAIL01.pu.imgtec.org> References: <38C8F1E431EDD94A82971C543A11B4FEE0A588@PUMAIL01.pu.imgtec.org> <8761ju8c2k.fsf@talisman.default> In-Reply-To: <8761ju8c2k.fsf@talisman.default> Content-Type: multipart/mixed; boundary="_002_38C8F1E431EDD94A82971C543A11B4FEE0C46DPUMAIL01puimgteco_" MIME-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2014-06/txt/msg01871.txt.bz2 --_002_38C8F1E431EDD94A82971C543A11B4FEE0C46DPUMAIL01puimgteco_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 5363 Hi Richard, Thanks for the review. Please find attached updated patch after your review comments. Changelog: gcc/ * config/mips/mips.md (JOIN_MODE): New mode iterator. (join2_load_Store): New pattern. (join2_loadhi): Likewise. (define_peehole2): Add peephole2 patterns to join 2 HI/SI/SF/DF-mode load-load and store-stores. * config/mips/mips.opt (mload-store-pairs): New option. (TARGET_LOAD_STORE_PAIRS): New macro. *config/mips/mips.h (ENABLE_P5600_LD_ST_PAIRS): Likewise. *config/mips/mips-protos.h (mips_load_store_bonding_p): New prototype. *config/mips/mips.c(mips_load_store_bonding_p): New function. The change is tested with dejagnu with additional options -mload-store-pair= s and -mtune=3Dp5600. The perf measurement is yet to finish. > > We had offline discussion based on your comment. There is additional > > view on the same. > > Only ISAs mips32r2, mips32r3 and mips32r5 support P5600. Remaining > > ISAs do not support P5600. > > For mips32r2 (24K) and mips32r3 (micromips), load-store pairing is > > implemented separately, and hence, as you suggested, P5600 Ld-ST > > bonding optimization should not be enabled for them. > > So, is it fine if I emit error for any ISAs other than mips32r2, > > mips32r3 and mips32r5 when P5600 is enabled, or the compilation should > > continue by emitting warning and disabling P5600? >=20 > No, the point is that we have two separate concepts: ISA and optimisation > target. -mipsN and -march=3DN control the ISA (which instructions are > available) and -mtune=3DM controls optimisation decisions within the > constraints of that N, such as scheduling and the cost of things like > multiplication and division. >=20 > E.g. you could have -mips2 -mtune=3Dp5600 -mfix-24k: generate MIPS II- > compatible code, optimise it for p5600, but make sure that 24k workarounds > are used. The code would run correctly on any MIPS II-compatible process= or > without known errata and also on the 24k. Ok, disabled the peephole pattern for fix-24k and micromips - to allow spec= ific patterns to be matched. > > + > > +mld-st-pairing > > +Target Report Var(TARGET_ENABLE_LD_ST_PAIRING) Enable load/store > > +pairing >=20 > Other options are just "TARGET_" + the captialised form of the option nam= e, > so I'd prefer TARGET_LD_ST_PAIRING instead. Although "ld" might be > misleading since it's an abbreviation for "load" rather than the LD instr= uction. > Maybe -mload-store-pairs, since plurals are more common than "-ing"? > Not sure that's a great suggestion though. Renamed the option and corresponding macro as suggested. > > Performance testing for this patch is not yet done. > > If the patch proves beneficial in most of the testcases (which we > > believe will do on P5600) we will enable this optimization by default > > for P5600 - in which case this option can be removed. >=20 > OK. Sending the patch for comments before performance testing is fine, b= ut > I think it'd be better to commit the patch only after the testing is done= , since > otherwise the patch might need to be tweaked. >=20 > I don't see any problem with keeping the option in case people want to > experiment with it. I just think the patch should only go in once it can= be > enabled by default for p5600. I.e. the option would exist to turn off the > pairing. >=20 > Not having the option is fine too of course. Yes, after perf analysis, I will share the results across, and then dependi= ng upon the impact, the decision can be made - whether to make the option a= s default or not, and then the patch will be submitted. > We should allow pairing even without -mtune=3Dp5600. The load-store pairing is currently attribute of P5600, so I have not enabl= ed the pairing without mtune=3D5600. If need be, can enable that without mt= une=3Dp5600. >=20 > (define_mode_iterator JOIN_MODE [ > SI > (DI "TARGET_64BIT") > (SF "TARGET_HARD_FLOAT") > (DF "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT")]) > Done this change. =20 > and then extend: >=20 > > @@ -883,6 +884,8 @@ > > (define_mode_attr loadx [(SF "lwxc1") (DF "ldxc1") (V2SF "ldxc1")]) > > (define_mode_attr storex [(SF "swxc1") (DF "sdxc1") (V2SF "sdxc1")]) > > > > +(define_mode_attr insn_type [(SI "") (SF "fp") (DF "fp")]) > > + > > ;; The unextended ranges of the MIPS16 addiu and daddiu instructions > > ;; are different. Some forms of unextended addiu have an 8-bit > > immediate ;; field but the equivalent daddiu has only a 5-bit field. >=20 > this accordingly. In order to allow d/f for both register classes, the pattern join2_load_sto= re was altered a bit which eliminated this mode iterator. >=20 > Outer (parallel ...)s are redundant in a define_insn. Removed. >=20 > It would be better to add the mips_load_store_insns for each operand > rather than multiplying one of them by 2. Or see the next bit for an > alternative. Using the alternative method as you suggested, so this change is not needed. > Please instead add HI to the define_mode_iterator so that we can use the > same peephole and define_insn. Added HI in the mode iterator to eliminate join2_storehi pattern and corres= ponding peephole2. As arithmetic operations on HImode is not supported, we generate zero or si= gn extended loads in such cases.=20 To handle that case, join2_loadhi pattern is kept. - Thanks and regards, Sameera D. --_002_38C8F1E431EDD94A82971C543A11B4FEE0C46DPUMAIL01puimgteco_ Content-Type: application/octet-stream; name="load-store-pairing.patch" Content-Description: load-store-pairing.patch Content-Disposition: attachment; filename="load-store-pairing.patch"; size=6630; creation-date="Thu, 12 Jun 2014 09:44:47 GMT"; modification-date="Tue, 24 Jun 2014 10:41:02 GMT" Content-Transfer-Encoding: base64 Content-length: 8988 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIGIv Z2NjL2NvbmZpZy9taXBzL21pcHMtcHJvdG9zLmgKaW5kZXggM2MzYmUxYy4u ODRhNjY1MyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9taXBzL21pcHMtcHJv dG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9taXBzL21pcHMtcHJvdG9zLmgKQEAg LTM3Miw2ICszNzIsNyBAQCBleHRlcm4gYm9vbCBtaXBzX2VwaWxvZ3VlX3Vz ZXMgKHVuc2lnbmVkIGludCk7CiBleHRlcm4gdm9pZCBtaXBzX2ZpbmFsX3By ZXNjYW5faW5zbiAocnR4LCBydHggKiwgaW50KTsKIGV4dGVybiBpbnQgbWlw c190cmFtcG9saW5lX2NvZGVfc2l6ZSAodm9pZCk7CiBleHRlcm4gdm9pZCBt aXBzX2Z1bmN0aW9uX3Byb2ZpbGVyIChGSUxFICopOworZXh0ZXJuIGJvb2wg bWlwc19sb2FkX3N0b3JlX2JvbmRpbmdfcCAocnR4ICosIGVudW0gbWFjaGlu ZV9tb2RlLCBib29sKTsKIAogdHlwZWRlZiBydHggKCptdWxzaWRpM19nZW5f Zm4pIChydHgsIHJ0eCwgcnR4KTsKICNpZmRlZiBSVFhfQ09ERQpkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9taXBzL21pcHMuYyBiL2djYy9jb25maWcvbWlw cy9taXBzLmMKaW5kZXggYjViNWJhNy4uZTFiMjg2NCAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9taXBzL21pcHMuYworKysgYi9nY2MvY29uZmlnL21pcHMv bWlwcy5jCkBAIC0xOTc2NCw2ICsxOTc2NCw1OSBAQCB1bWlwc19sb2FkX3N0 b3JlX3BhaXJfcF8xIChib29sIGxvYWRfcCwgYm9vbCBzd2FwX3AsCiAgIHJl dHVybiB0cnVlOwogfQogCitib29sCittaXBzX2xvYWRfc3RvcmVfYm9uZGlu Z19wIChydHggKm9wZXJhbmRzLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBi b29sIGxvYWRfcCkKK3sKKyAgcnR4IHJlZzEsIHJlZzIsIG1lbTEsIG1lbTIs IGJhc2UxLCBiYXNlMjsKKyAgbG9uZyBpbnQgb2Zmc2V0MSwgb2Zmc2V0MjsK KworICBpZiAobG9hZF9wKQorICAgIHsKKyAgICAgIHJlZzEgPSBvcGVyYW5k c1swXTsKKyAgICAgIHJlZzIgPSBvcGVyYW5kc1syXTsKKyAgICAgIG1lbTEg PSBvcGVyYW5kc1sxXTsKKyAgICAgIG1lbTIgPSBvcGVyYW5kc1szXTsKKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICByZWcxID0gb3BlcmFuZHNbMV07 CisgICAgICByZWcyID0gb3BlcmFuZHNbM107CisgICAgICBtZW0xID0gb3Bl cmFuZHNbMF07CisgICAgICBtZW0yID0gb3BlcmFuZHNbMl07CisgICAgfQor CisgIGlmICghbWlwc19hZGRyZXNzX2luc25zIChYRVhQIChtZW0xLCAwKSwg bW9kZSwgZmFsc2UpCisgICAgICB8fCAhbWlwc19hZGRyZXNzX2luc25zIChY RVhQIChtZW0yLCAwKSwgbW9kZSwgZmFsc2UpKQorICAgIHJldHVybiBmYWxz ZTsKKworICBtaXBzX3NwbGl0X3BsdXMgKFhFWFAgKG1lbTEsIDApLCAmYmFz ZTEsICZvZmZzZXQxKTsKKyAgbWlwc19zcGxpdF9wbHVzIChYRVhQIChtZW0y LCAwKSwgJmJhc2UyLCAmb2Zmc2V0Mik7CisKKyAgLyogQmFzZSByZWdzIGRv IG5vdCBtYXRjaC4gKi8KKyAgaWYgKCFSRUdfUCAoYmFzZTEpIHx8ICFydHhf ZXF1YWxfcCAoYmFzZTEsIGJhc2UyKSkKKyAgICByZXR1cm4gZmFsc2U7CisK KyAgLyogRWl0aGVyIG9mIHRoZSBsb2FkcyBpcyBjbG9iYmVyaW5nIGJhc2Ug cmVnaXN0ZXIuICovCisgIGlmIChsb2FkX3AKKyAgICAgICYmIChSRUdOTyAo cmVnMSkgPT0gUkVHTk8gKGJhc2UxKQorICAgICAgICAgIHx8IChSRUdOTyAo cmVnMikgPT0gUkVHTk8gKGJhc2UxKSkpKQorICAgIHJldHVybiBmYWxzZTsK KworICAvKiBMb2FkaW5nIGluIHNhbWUgcmVnaXN0ZXJzLiAqLworICBpZiAo bG9hZF9wCisgICAgICAmJiBSRUdOTyAocmVnMSkgPT0gUkVHTk8gKHJlZzIp KQorICAgIHJldHVybiBmYWxzZTsKKworICAvKiBUaGUgbG9hZHMvc3RvcmVz IGFyZSBub3Qgb2Ygc2FtZSB0eXBlLiAqLworICBpZiAoUkVHTk9fUkVHX0NM QVNTIChSRUdOTyAocmVnMSkpICE9IFJFR05PX1JFR19DTEFTUyAoUkVHTk8g KHJlZzIpKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgaWYgKGFicyhvZmZz ZXQxIC0gb2Zmc2V0MikgIT0gR0VUX01PREVfU0laRSAobW9kZSkpCisgICAg cmV0dXJuIGZhbHNlOworCisgIHJldHVybiB0cnVlOworfQorCiAvKiBPUEVS QU5EUyBkZXNjcmliZXMgdGhlIG9wZXJhbmRzIHRvIGEgcGFpciBvZiBTRVRz LCBpbiB0aGUgb3JkZXIKICAgIGRlc3QxLCBzcmMxLCBkZXN0Miwgc3JjMi4g IFJldHVybiB0cnVlIGlmIHRoZSBvcGVyYW5kcyBjYW4gYmUgdXNlZAogICAg aW4gYW4gTFdQIG9yIFNXUCBpbnN0cnVjdGlvbjsgTE9BRF9QIHNheXMgd2hp Y2guICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL21pcHMuaCBi L2djYy9jb25maWcvbWlwcy9taXBzLmgKaW5kZXggODZjYTQxOS4uNDRhMTI3 ZSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9taXBzL21pcHMuaAorKysgYi9n Y2MvY29uZmlnL21pcHMvbWlwcy5oCkBAIC0zMTg0LDMgKzMxODQsNyBAQCBl eHRlcm4gR1RZKCgpKSBzdHJ1Y3QgdGFyZ2V0X2dsb2JhbHMgKm1pcHMxNl9n bG9iYWxzOwogICAgd2l0aCBhcmd1bWVudHMgQVJHUy4gICovCiAjZGVmaW5l IFBNT0RFX0lOU04oTkFNRSwgQVJHUykgXAogICAoUG1vZGUgPT0gU0ltb2Rl ID8gTkFNRSAjIyBfc2kgQVJHUyA6IE5BTUUgIyMgX2RpIEFSR1MpCisKKyNk ZWZpbmUgRU5BQkxFX1A1NjAwX0xEX1NUX1BBSVJTIFwKKyAgKFRBUkdFVF9M T0FEX1NUT1JFX1BBSVJTICYmIFRVTkVfUDU2MDAgJiYgXAorICAgIVRBUkdF VF9NSUNST01JUFMgJiYgIVRBUkdFVF9GSVhfMjRLKQpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9taXBzL21pcHMubWQgYi9nY2MvY29uZmlnL21pcHMvbWlw cy5tZAppbmRleCA3MjI5ZThmLi40ODY1MDIyIDEwMDY0NAotLS0gYS9nY2Mv Y29uZmlnL21pcHMvbWlwcy5tZAorKysgYi9nY2MvY29uZmlnL21pcHMvbWlw cy5tZApAQCAtNzgwLDYgKzc4MCwxMSBAQAogCiAoZGVmaW5lX21vZGVfaXRl cmF0b3IgTU9WRVAxIFtTSSBTRl0pCiAoZGVmaW5lX21vZGVfaXRlcmF0b3Ig TU9WRVAyIFtTSSBTRl0pCisoZGVmaW5lX21vZGVfaXRlcmF0b3IgSk9JTl9N T0RFIFsKKwkJCQkgSEkKKwkJCQkgU0kKKwkJCQkgKFNGICJUQVJHRVRfSEFS RF9GTE9BVCIpCisJCQkJIChERiAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFS R0VUX0RPVUJMRV9GTE9BVCIpXSkKIAogOzsgVGhpcyBtb2RlIGl0ZXJhdG9y IGFsbG93cyA6SElMTyB0byBiZSB1c2VkIGFzIHRoZSBtb2RlIG9mIHRoZQog OzsgY29uY2F0ZW5hdGVkIEhJIGFuZCBMTyByZWdpc3RlcnMuCkBAIC03NDQy LDYgKzc0NDcsODAgQEAKICAgeyByZXR1cm4gTUlQU19DQUxMICgiamFsIiwg b3BlcmFuZHMsIDAsIC0xKTsgfQogICBbKHNldF9hdHRyICJ0eXBlIiAiY2Fs bCIpCiAgICAoc2V0X2F0dHIgImluc25fY291bnQiICIzIildKQorCisoZGVm aW5lX2luc24gIipqb2luMl9sb2FkX3N0b3JlPEpPSU5fTU9ERTptb2RlPiIK KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Sk9JTl9NT0RFIDAgIm5vbmltbWVk aWF0ZV9vcGVyYW5kIiAiPWQsZixtLG0iKQorCShtYXRjaF9vcGVyYW5kOkpP SU5fTU9ERSAxICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIm0sbSxkLGYiKSkK KyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6Sk9JTl9NT0RFIDIgIm5vbmltbWVk aWF0ZV9vcGVyYW5kIiAiPWQsZixtLG0iKQorCShtYXRjaF9vcGVyYW5kOkpP SU5fTU9ERSAzICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIm0sbSxkLGYiKSld CisgICJFTkFCTEVfUDU2MDBfTERfU1RfUEFJUlMgJiYgcmVsb2FkX2NvbXBs ZXRlZCIKKyAgeworCW91dHB1dF9hc21faW5zbiAobWlwc19vdXRwdXRfbW92 ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSwgb3BlcmFuZHMpOworCW91 dHB1dF9hc21faW5zbiAobWlwc19vdXRwdXRfbW92ZSAob3BlcmFuZHNbMl0s IG9wZXJhbmRzWzNdKSwgJm9wZXJhbmRzWzJdKTsKKwlyZXR1cm4gIiI7Cisg IH0KKyAgWyhzZXRfYXR0ciAibW92ZV90eXBlIiAibG9hZCxmcGxvYWQsc3Rv cmUsZnBzdG9yZSIpCisgICAoc2V0X2F0dHIgImluc25fY291bnQiICIyLDIs MiwyIildKQorCis7OyAyIEhJL1NJL1NGL0RGIGxvYWRzIGFyZSBqb2luZWQu Cis7OyBQNTYwMCBkb2VzIG5vdCBzdXBwb3J0IGJvbmRpbmcgb2YgdHdvIExC cywgaGVuY2UgUUkgbW9kZSBpcyBub3QgaW5jbHVkZWQuCisoZGVmaW5lX3Bl ZXBob2xlMgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpKT0lOX01PREUgMCAi cmVnaXN0ZXJfb3BlcmFuZCIpCisJKG1hdGNoX29wZXJhbmQ6Sk9JTl9NT0RF IDEgIm1lbW9yeV9vcGVyYW5kIikpCisgICAoc2V0IChtYXRjaF9vcGVyYW5k OkpPSU5fTU9ERSAyICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkobWF0Y2hfb3Bl cmFuZDpKT0lOX01PREUgMyAibWVtb3J5X29wZXJhbmQiKSldCisgICJFTkFC TEVfUDU2MDBfTERfU1RfUEFJUlMgJiYgCisgICBtaXBzX2xvYWRfc3RvcmVf Ym9uZGluZ19wIChvcGVyYW5kcywgPEpPSU5fTU9ERTpNT0RFPm1vZGUsIHRy dWUpIgorICBbKHBhcmFsbGVsIFsoc2V0IChtYXRjaF9kdXAgMCkKKwkJICAg KG1hdGNoX2R1cCAxKSkKKwkgICAgICAoc2V0IChtYXRjaF9kdXAgMikKKwkJ ICAgKG1hdGNoX2R1cCAzKSldKV0KKyAgIiIpCisKKzs7IDIgSEkvU0kvU0Yv REYgc3RvcmVzIGFyZSBqb2luZWQuCis7OyBQNTYwMCBkb2VzIG5vdCBzdXBw b3J0IGJvbmRpbmcgb2YgdHdvIFNCcywgaGVuY2UgUUkgbW9kZSBpcyBub3Qg aW5jbHVkZWQuCisoZGVmaW5lX3BlZXBob2xlMgorICBbKHNldCAobWF0Y2hf b3BlcmFuZDpKT0lOX01PREUgMCAibWVtb3J5X29wZXJhbmQiKQorCShtYXRj aF9vcGVyYW5kOkpPSU5fTU9ERSAxICJyZWdpc3Rlcl9vcGVyYW5kIikpCisg ICAoc2V0IChtYXRjaF9vcGVyYW5kOkpPSU5fTU9ERSAyICJtZW1vcnlfb3Bl cmFuZCIpCisJKG1hdGNoX29wZXJhbmQ6Sk9JTl9NT0RFIDMgInJlZ2lzdGVy X29wZXJhbmQiKSldCisgICJFTkFCTEVfUDU2MDBfTERfU1RfUEFJUlMgJiYK KyAgIG1pcHNfbG9hZF9zdG9yZV9ib25kaW5nX3AgKG9wZXJhbmRzLCA8Sk9J Tl9NT0RFOk1PREU+bW9kZSwgZmFsc2UpIgorICBbKHBhcmFsbGVsIFsoc2V0 IChtYXRjaF9kdXAgMCkKKwkJICAgKG1hdGNoX2R1cCAxKSkKKwkgICAgICAo c2V0IChtYXRjaF9kdXAgMikKKwkJICAgKG1hdGNoX2R1cCAzKSldKV0KKyAg IiIpCisKKyhkZWZpbmVfaW5zbiAiKmpvaW4yX2xvYWRoaSIKKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikK KwkoYW55X2V4dGVuZDpTSSAobWF0Y2hfb3BlcmFuZDpISSAxICJtZW1vcnlf b3BlcmFuZCIgIm0iKSkpCisgICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDIg InJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCisJKGFueV9leHRlbmQ6U0kgKG1h dGNoX29wZXJhbmQ6SEkgMyAibWVtb3J5X29wZXJhbmQiICJtIikpKV0KKyAg IkVOQUJMRV9QNTYwMF9MRF9TVF9QQUlSUyAmJiByZWxvYWRfY29tcGxldGVk IgorICB7CisgICAgb3V0cHV0X2FzbV9pbnNuICgibGg8dT5cdCUwLCUxIiwg b3BlcmFuZHMpOworICAgIG91dHB1dF9hc21faW5zbiAoImxoPHU+XHQlMiwl MyIsIG9wZXJhbmRzKTsKKyAgICByZXR1cm4gIiI7CisgIH0KKyAgWyhzZXRf YXR0ciAibW92ZV90eXBlIiAibG9hZCIpCisgICAoc2V0X2F0dHIgImluc25f Y291bnQiICIyIildKQorCisKKzs7IDIgMTYgYml0IGludGVnZXIgbG9hZHMg YXJlIGpvaW5lZC4KKyhkZWZpbmVfcGVlcGhvbGUyCisgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiKQorCShhbnlfZXh0 ZW5kOlNJIChtYXRjaF9vcGVyYW5kOkhJIDEgIm1lbW9yeV9vcGVyYW5kIikp KQorICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAyICJyZWdpc3Rlcl9vcGVy YW5kIikKKwkoYW55X2V4dGVuZDpTSSAobWF0Y2hfb3BlcmFuZDpISSAzICJt ZW1vcnlfb3BlcmFuZCIpKSldCisgICJFTkFCTEVfUDU2MDBfTERfU1RfUEFJ UlMgJiYKKyAgIG1pcHNfbG9hZF9zdG9yZV9ib25kaW5nX3AgKG9wZXJhbmRz LCBISW1vZGUsIHRydWUpIgorICBbKHBhcmFsbGVsIFsoc2V0IChtYXRjaF9k dXAgMCkKKwkJICAgKGFueV9leHRlbmQ6U0kgKG1hdGNoX2R1cCAxKSkpCisJ ICAgICAgKHNldCAobWF0Y2hfZHVwIDIpCisJCSAgIChhbnlfZXh0ZW5kOlNJ IChtYXRjaF9kdXAgMykpKV0pXQorICAiIikKKwogDAogOzsgU3luY2hyb25p emF0aW9uIGluc3RydWN0aW9ucy4KIApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9taXBzL21pcHMub3B0IGIvZ2NjL2NvbmZpZy9taXBzL21pcHMub3B0Cmlu ZGV4IGI5Y2ZkNjIuLjNhOTQ4OGYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv bWlwcy9taXBzLm9wdAorKysgYi9nY2MvY29uZmlnL21pcHMvbWlwcy5vcHQK QEAgLTQ0NSwzICs0NDUsNyBAQCBFbnVtKG1pcHNfbGliX3NldHRpbmcpIFN0 cmluZyh0aW55KSBWYWx1ZShNSVBTX0xJQl9USU5ZKQogCiBtc2NoZWQtd2Vp Z2h0CiBUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfU0NIRURfV0VJR0hUKSBV bmRvY3VtZW50ZWQKKworbWxvYWQtc3RvcmUtcGFpcnMKK1RhcmdldCBSZXBv cnQgVmFyKFRBUkdFVF9MT0FEX1NUT1JFX1BBSVJTKQorRW5hYmxlIGxvYWQv c3RvcmUgYm9uZGluZy4K --_002_38C8F1E431EDD94A82971C543A11B4FEE0C46DPUMAIL01puimgteco_--