From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7244 invoked by alias); 27 Oct 2014 07:49:53 -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 7234 invoked by uid 89); 27 Oct 2014 07:49:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: service87.mimecast.com Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 27 Oct 2014 07:49:52 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Mon, 27 Oct 2014 07:49:49 +0000 Received: from shawin003 ([10.164.2.30]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 27 Oct 2014 07:49:47 +0000 From: "Zhenqiang Chen" To: "'Richard Henderson'" Cc: References: <001901cfd6fa$01aa2690$04fe73b0$@arm.com> <54398F1E.4000209@redhat.com> In-Reply-To: <54398F1E.4000209@redhat.com> Subject: RE: [Ping] [PATCH, 8/10] aarch64: ccmp insn patterns Date: Mon, 27 Oct 2014 07:50:00 -0000 Message-ID: <001201cff1ba$91830e50$b4892af0$@arm.com> MIME-Version: 1.0 X-MC-Unique: 114102707494900501 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0013_01CFF1FD.9FA7D4F0" X-IsSubscribed: yes X-SW-Source: 2014-10/txt/msg02717.txt.bz2 This is a multipart message in MIME format. ------=_NextPart_000_0013_01CFF1FD.9FA7D4F0 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Content-length: 3000 > -----Original Message----- > From: Richard Henderson [mailto:rth@redhat.com] > Sent: Sunday, October 12, 2014 4:12 AM > To: Zhenqiang Chen; gcc-patches@gcc.gnu.org > Subject: Re: [Ping] [PATCH, 8/10] aarch64: ccmp insn patterns >=20 > On 09/22/2014 11:45 PM, Zhenqiang Chen wrote: > > +(define_expand "cbranchcc4" > > + [(set (pc) (if_then_else > > + (match_operator 0 "aarch64_comparison_operator" > > + [(match_operand 1 "cc_register" "") > > + (const_int 0)]) > > + (label_ref (match_operand 3 "" "")) > > + (pc)))] > > + "" > > + " ") >=20 > Extra space. Updated. =20 > > +(define_insn "*ccmp_and" > > + [(set (match_operand 6 "ccmp_cc_register" "") > > + (compare > > + (and:SI > > + (match_operator 4 "aarch64_comparison_operator" > > + [(match_operand 0 "ccmp_cc_register" "") > > + (match_operand 1 "aarch64_plus_operand" "")]) > > + (match_operator 5 "aarch64_comparison_operator" > > + [(match_operand:GPI 2 "register_operand" "r,r,r") > > + (match_operand:GPI 3 "aarch64_ccmp_operand" "r,Uss,Usn")])) > > + (const_int 0)))] > > + "" > > + { > > + return aarch64_output_ccmp (operands, true, which_alternative); > > + } > > + [(set_attr "type" "alus_sreg,alus_imm,alus_imm")] > > +) > > + > > +(define_insn "*ccmp_ior" > > + [(set (match_operand 6 "ccmp_cc_register" "") > > + (compare > > + (ior:SI > > + (match_operator 4 "aarch64_comparison_operator" > > + [(match_operand 0 "ccmp_cc_register" "") > > + (match_operand 1 "aarch64_plus_operand" "")]) > > + (match_operator 5 "aarch64_comparison_operator" > > + [(match_operand:GPI 2 "register_operand" "r,r,r") > > + (match_operand:GPI 3 "aarch64_ccmp_operand" "r,Uss,Usn")])) > > + (const_int 0)))] > > + "" > > + { > > + return aarch64_output_ccmp (operands, false, which_alternative); > > + } > > + [(set_attr "type" "alus_sreg,alus_imm,alus_imm")] >=20 > Surely not aarch64_plus_operand for operand 1. That's a comparison with > the flags register. Surely (const_int 0) is the only valid operand there. >=20 > These could be combined with a code iterator, and thus there would be > exactly one call to aarch64_output_ccmp, and thus inlined. Although... >=20 > It seems to me that you don't need a function call at all. How about >=20 > AND > "@ > ccmp\\t%2, %3, %K5, %m4 > ccmp\\t%2, %3, %K5, %m4 > ccmn\\t%2, #%n3, %K5, %m4" >=20 > IOR > "@ > ccmp\\t%2, %3, %k5, %M4 > ccmp\\t%2, %3, %k5, %M4 > ccmn\\t%2, #%n3, %k5, %M4" >=20 > where 'k' and 'K' are new print_operand codes that output the nzcv (or its > inverse) integer for the comparison, much like 'm' and 'M' print the name of > the comparison. Updated with a bit change. + ccmp\\t%2, %3, %z5, %k4 + ccmp\\t%2, %3, %z5, %k4 + ccmn\\t%2, #%n3, %z5, %k4" z/Z is the k/K as you suggested. I can not reuse m/M since they are special for cbranchcc (with CCMP). So I use new added k/K. Thanks! -Zhenqiang ------=_NextPart_000_0013_01CFF1FD.9FA7D4F0 Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="7-8-ccmp-patterns.patch" Content-Disposition: attachment; filename="7-8-ccmp-patterns.patch" Content-length: 9492 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMgYi9n Y2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jCmluZGV4IDFjZjkzNWEuLjMw NzFhZWMgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LmMKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYwpAQCAtMzc0 MCw2ICszNzQwLDc1IEBAIGJpdF9jb3VudCAodW5zaWduZWQgSE9TVF9XSURF X0lOVCB2YWx1ZSkKICAgcmV0dXJuIGNvdW50OwogfQogCisvKiBOIFogQyBW LiAgKi8KKyNkZWZpbmUgQUFSQ0g2NF9DQ19WIDEKKyNkZWZpbmUgQUFSQ0g2 NF9DQ19DICgxIDw8IDEpCisjZGVmaW5lIEFBUkNINjRfQ0NfWiAoMSA8PCAy KQorI2RlZmluZSBBQVJDSDY0X0NDX04gKDEgPDwgMykKKworLyogTiBaIEMg ViBmbGFncyBmb3IgY2NtcC4gIFRoZSBmaXJzdCBjb2RlIGlzIGZvciBBTkQg b3AgYW5kIHRoZSBvdGhlcgorICAgaXMgZm9yIElPUiBvcC4gIEluZGV4ZWQg YnkgQUFSQ0g2NF9DT05EX0NPREUuICAqLworc3RhdGljIGNvbnN0IGludCBh YXJjaDY0X256Y3ZfY29kZXNbXVsyXSA9Cit7CisgIHtBQVJDSDY0X0NDX1os IDB9LCAvKiBFUSwgWiA9PSAxLiAgKi8KKyAgezAsIEFBUkNINjRfQ0NfWn0s IC8qIE5FLCBaID09IDAuICAqLworICB7QUFSQ0g2NF9DQ19DLCAwfSwgLyog Q1MsIEMgPT0gMS4gICovCisgIHswLCBBQVJDSDY0X0NDX0N9LCAvKiBDQywg QyA9PSAwLiAgKi8KKyAgezAsIDB9LCAvKiBNSSwgbm90IHN1cHBvcnRlZCov CisgIHswLCAwfSwgLyogUEwsIG5vdCBzdXBwb3J0ZWQqLworICB7MCwgMH0s IC8qIFZTLCBub3Qgc3VwcG9ydGVkKi8KKyAgezAsIDB9LCAvKiBWQywgbm90 IHN1cHBvcnRlZCovCisgIHtBQVJDSDY0X0NDX0MsIEFBUkNINjRfQ0NfWn0s IC8qIEhJLCBDID09MSAmJiBaID09IDAuICAqLworICB7QUFSQ0g2NF9DQ19a LCBBQVJDSDY0X0NDX0N9LCAvKiBMUywgIShDID09IDEgJiYgWiA9PSAwKS4g ICovCisgIHtBQVJDSDY0X0NDX04gfCBBQVJDSDY0X0NDX1YsIEFBUkNINjRf Q0NfTn0sIC8qIEdFLCBOID09IFYuICAqLworICB7QUFSQ0g2NF9DQ19OLCBB QVJDSDY0X0NDX04gfCBBQVJDSDY0X0NDX1Z9LCAvKiBMVCwgTiAhPSBWLiAg Ki8KKyAge0FBUkNINjRfQ0NfTiB8IEFBUkNINjRfQ0NfViwgQUFSQ0g2NF9D Q19afSwgLyogR1QsIFogPT0gMCAmJiBOID09IFYuICAqLworICB7QUFSQ0g2 NF9DQ19aLCBBQVJDSDY0X0NDX04gfCBBQVJDSDY0X0NDX1Z9LCAvKiBMRSwg IShaID09IDAgJiYgTiA9PSBWKS4gICovCisgIHswLCAwfSwgLyogQUwsIG5v dCBzdXBwb3J0ZWQuICAqLyAKKyAgezAsIDB9LCAvKiBOViwgbm90IHN1cHBv cnRlZC4gICovIAorfTsKKworc3RhdGljIGVudW0gcnR4X2NvZGUKK2FhcmNo NjRfY2NtcF9tb2RlX3RvX2NvZGUgKGVudW0gbWFjaGluZV9tb2RlIG1vZGUp Cit7CisgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgY2FzZSBDQ19ETkVt b2RlOgorICAgICAgcmV0dXJuIE5FOworCisgICAgY2FzZSBDQ19ERVFtb2Rl OgorICAgICAgcmV0dXJuIEVROworCisgICAgY2FzZSBDQ19ETEVtb2RlOgor ICAgICAgcmV0dXJuIExFOworCisgICAgY2FzZSBDQ19ER1Rtb2RlOgorICAg ICAgcmV0dXJuIEdUOworCisgICAgY2FzZSBDQ19ETFRtb2RlOgorICAgICAg cmV0dXJuIExUOworCisgICAgY2FzZSBDQ19ER0Vtb2RlOgorICAgICAgcmV0 dXJuIEdFOworCisgICAgY2FzZSBDQ19ETEVVbW9kZToKKyAgICAgIHJldHVy biBMRVU7CisKKyAgICBjYXNlIENDX0RHVFVtb2RlOgorICAgICAgcmV0dXJu IEdUVTsKKworICAgIGNhc2UgQ0NfRExUVW1vZGU6CisgICAgICByZXR1cm4g TFRVOworCisgICAgY2FzZSBDQ19ER0VVbW9kZToKKyAgICAgIHJldHVybiBH RVU7CisKKyAgICBkZWZhdWx0OgorICAgICAgZ2NjX3VucmVhY2hhYmxlICgp OworICAgIH0KK30KKworCiB2b2lkCiBhYXJjaDY0X3ByaW50X29wZXJhbmQg KEZJTEUgKmYsIHJ0eCB4LCBjaGFyIGNvZGUpCiB7CkBAIC00MTA0LDYgKzQx NzMsODEgQEAgYWFyY2g2NF9wcmludF9vcGVyYW5kIChGSUxFICpmLCBydHgg eCwgY2hhciBjb2RlKQogICAgICAgb3V0cHV0X2FkZHJfY29uc3QgKGFzbV9v dXRfZmlsZSwgeCk7CiAgICAgICBicmVhazsKIAorICAgIGNhc2UgJ2snOgor ICAgICAgeworCWludCBjb25kX2NvZGU7CisJcnR4IG9wMCA9IFhFWFAgKHgs IDApOworCWVudW0gcnR4X2NvZGUgbW9kZV9jb2RlOworCS8qIFByaW50IGEg Y29uZGl0aW9uIChlcSwgbmUsIGV0Yykgb2YgY2NtcC4gICovCisKKwlpZiAo IUNPTVBBUklTT05fUCAoeCkgfHwgIWNjbXBfY2NfcmVnaXN0ZXIgKG9wMCwg R0VUX01PREUgKG9wMCkpKQorCSAgeworCSAgICBvdXRwdXRfb3BlcmFuZF9s b3NzYWdlICgiaW52YWxpZCBvcGVyYW5kIGZvciAnJSUlYyciLCBjb2RlKTsK KwkgICAgcmV0dXJuOworCSAgfQorCisJbW9kZV9jb2RlID0gYWFyY2g2NF9j Y21wX21vZGVfdG9fY29kZSAoR0VUX01PREUgKG9wMCkpOworCWNvbmRfY29k ZSA9IGFhcmNoNjRfZ2V0X2NvbmRpdGlvbl9jb2RlXzEgKENDbW9kZSwgbW9k ZV9jb2RlKTsKKwlnY2NfYXNzZXJ0IChjb25kX2NvZGUgPj0gMCk7CisJZnB1 dHMgKGFhcmNoNjRfY29uZGl0aW9uX2NvZGVzW2NvbmRfY29kZV0sIGYpOwor ICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdLJzoKKyAgICAg IHsKKwlpbnQgY29uZF9jb2RlOworCXJ0eCBvcDAgPSBYRVhQICh4LCAwKTsK KwllbnVtIHJ0eF9jb2RlIG1vZGVfY29kZTsKKwkvKiBQcmludCBhIGNvbmRp dGlvbiAoZXEsIG5lLCBldGMpIG9mIGNjbXAuICAqLworCisJaWYgKCFDT01Q QVJJU09OX1AgKHgpIHx8ICFjY21wX2NjX3JlZ2lzdGVyIChvcDAsIEdFVF9N T0RFIChvcDApKSkKKwkgIHsKKwkgICAgb3V0cHV0X29wZXJhbmRfbG9zc2Fn ZSAoImludmFsaWQgb3BlcmFuZCBmb3IgJyUlJWMnIiwgY29kZSk7CisJICAg IHJldHVybjsKKwkgIH0KKworCW1vZGVfY29kZSA9IGFhcmNoNjRfY2NtcF9t b2RlX3RvX2NvZGUgKEdFVF9NT0RFIChvcDApKTsKKwljb25kX2NvZGUgPSBh YXJjaDY0X2dldF9jb25kaXRpb25fY29kZV8xIChDQ21vZGUsIG1vZGVfY29k ZSk7CisJZ2NjX2Fzc2VydCAoY29uZF9jb2RlID49IDApOworCWZwdXRzIChh YXJjaDY0X2NvbmRpdGlvbl9jb2Rlc1tBQVJDSDY0X0lOVkVSU0VfQ09ORElU SU9OX0NPREUKKwkJCQkgICAgICAgKGNvbmRfY29kZSldLCBmKTsKKyAgICAg IH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnWic6CisgICAgICB7CisJ aW50IGNvbmRfY29kZTsKKwkvKiBQcmludCBuemN2LiAgKi8KKworCWlmICgh Q09NUEFSSVNPTl9QICh4KSkKKwkgIHsKKwkgICAgb3V0cHV0X29wZXJhbmRf bG9zc2FnZSAoImludmFsaWQgb3BlcmFuZCBmb3IgJyUlJWMnIiwgY29kZSk7 CisJICAgIHJldHVybjsKKwkgIH0KKworCWNvbmRfY29kZSA9IGFhcmNoNjRf Z2V0X2NvbmRpdGlvbl9jb2RlXzEgKENDbW9kZSwgR0VUX0NPREUgKHgpKTsK KwlnY2NfYXNzZXJ0IChjb25kX2NvZGUgPj0gMCk7CisJYXNtX2ZwcmludGYg KGYsICIlZCIsIGFhcmNoNjRfbnpjdl9jb2Rlc1tjb25kX2NvZGVdWzBdKTsK KyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAneic6CisgICAg ICB7CisJaW50IGNvbmRfY29kZTsKKwkvKiBQcmludCBuemN2LiAgKi8KKwor CWlmICghQ09NUEFSSVNPTl9QICh4KSkKKwkgIHsKKwkgICAgb3V0cHV0X29w ZXJhbmRfbG9zc2FnZSAoImludmFsaWQgb3BlcmFuZCBmb3IgJyUlJWMnIiwg Y29kZSk7CisJICAgIHJldHVybjsKKwkgIH0KKworCWNvbmRfY29kZSA9IGFh cmNoNjRfZ2V0X2NvbmRpdGlvbl9jb2RlXzEgKENDbW9kZSwgR0VUX0NPREUg KHgpKTsKKwlnY2NfYXNzZXJ0IChjb25kX2NvZGUgPj0gMCk7CisJYXNtX2Zw cmludGYgKGYsICIlZCIsIGFhcmNoNjRfbnpjdl9jb2Rlc1tjb25kX2NvZGVd WzFdKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoK ICAgICAgIG91dHB1dF9vcGVyYW5kX2xvc3NhZ2UgKCJpbnZhbGlkIG9wZXJh bmQgcHJlZml4ICclJSVjJyIsIGNvZGUpOwogICAgICAgcmV0dXJuOwpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZAppbmRleCA3NGI1NTRlLi5iOGI1 YjYwIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5t ZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZApAQCAtMjM5 LDYgKzIzOSw1NCBAQAogICAiCiApCiAKKyhkZWZpbmVfZXhwYW5kICJjYnJh bmNoY2M0IgorICBbKHNldCAocGMpIChpZl90aGVuX2Vsc2UKKwkgICAgICAo bWF0Y2hfb3BlcmF0b3IgMCAiYWFyY2g2NF9jb21wYXJpc29uX29wZXJhdG9y IgorCSAgICAgICBbKG1hdGNoX29wZXJhbmQgMSAiY2NfcmVnaXN0ZXIiICIi KQorCSAgICAgICAgKG1hdGNoX29wZXJhbmQgMiAiY29uc3QwX29wZXJhbmQi KV0pCisJICAgICAgKGxhYmVsX3JlZiAobWF0Y2hfb3BlcmFuZCAzICIiICIi KSkKKwkgICAgICAocGMpKSldCisgICIiCisgICIiKQorCisoZGVmaW5lX2lu c24gIipjY21wX2FuZCIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQgMSAiY2Nt cF9jY19yZWdpc3RlciIgIiIpCisJKGNvbXBhcmUKKwkgKGFuZDpTSQorCSAg KG1hdGNoX29wZXJhdG9yIDQgImFhcmNoNjRfY29tcGFyaXNvbl9vcGVyYXRv ciIKKwkgICBbKG1hdGNoX29wZXJhbmQgMCAiY2NtcF9jY19yZWdpc3RlciIg IiIpCisJICAgIChjb25zdF9pbnQgMCldKQorCSAgKG1hdGNoX29wZXJhdG9y IDUgImFhcmNoNjRfY29tcGFyaXNvbl9vcGVyYXRvciIKKwkgICBbKG1hdGNo X29wZXJhbmQ6R1BJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJyLHIsciIpCisJ ICAgIChtYXRjaF9vcGVyYW5kOkdQSSAzICJhYXJjaDY0X2NjbXBfb3BlcmFu ZCIgInIsVXNzLFVzbiIpXSkpCisJIChjb25zdF9pbnQgMCkpKV0KKyAgIiIK KyAgIkAKKyAgIGNjbXBcXHQlPHc+MiwgJTx3PjMsICV6NSwgJWs0CisgICBj Y21wXFx0JTx3PjIsICU8dz4zLCAlejUsICVrNAorICAgY2NtblxcdCU8dz4y LCAjJW4zLCAlejUsICVrNCIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImFsdXNf c3JlZyxhbHVzX2ltbSxhbHVzX2ltbSIpXQorKQorCisoZGVmaW5lX2luc24g IipjY21wX2lvciIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQgMSAiY2NtcF9j Y19yZWdpc3RlciIgIiIpCisJKGNvbXBhcmUKKwkgKGlvcjpTSQorCSAgKG1h dGNoX29wZXJhdG9yIDQgImFhcmNoNjRfY29tcGFyaXNvbl9vcGVyYXRvciIK KwkgICBbKG1hdGNoX29wZXJhbmQgMCAiY2NtcF9jY19yZWdpc3RlciIgIiIp CisJICAgIChjb25zdF9pbnQgMCldKQorCSAgKG1hdGNoX29wZXJhdG9yIDUg ImFhcmNoNjRfY29tcGFyaXNvbl9vcGVyYXRvciIKKwkgICBbKG1hdGNoX29w ZXJhbmQ6R1BJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJyLHIsciIpCisJICAg IChtYXRjaF9vcGVyYW5kOkdQSSAzICJhYXJjaDY0X2NjbXBfb3BlcmFuZCIg InIsVXNzLFVzbiIpXSkpCisJIChjb25zdF9pbnQgMCkpKV0KKyAgIiIKKyAg IkAKKyAgIGNjbXBcXHQlPHc+MiwgJTx3PjMsICVaNSwgJUs0CisgICBjY21w XFx0JTx3PjIsICU8dz4zLCAlWjUsICVLNAorICAgY2NtblxcdCU8dz4yLCAj JW4zLCAlWjUsICVLNCIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImFsdXNfc3Jl ZyxhbHVzX2ltbSxhbHVzX2ltbSIpXQorKQorCiAoZGVmaW5lX2luc24gIipj b25kanVtcCIKICAgWyhzZXQgKHBjKSAoaWZfdGhlbl9lbHNlIChtYXRjaF9v cGVyYXRvciAwICJhYXJjaDY0X2NvbXBhcmlzb25fb3BlcmF0b3IiCiAJCQkg ICAgWyhtYXRjaF9vcGVyYW5kIDEgImNjX3JlZ2lzdGVyIiAiIikgKGNvbnN0 X2ludCAwKV0pCkBAIC0yMzk1LDYgKzI0NDMsMTggQEAKICAgIgogKQogCiso ZGVmaW5lX2V4cGFuZCAiY3N0b3JlY2M0IgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAgICAgICAobWF0Y2hf b3BlcmF0b3IgMSAiYWFyY2g2NF9jb21wYXJpc29uX29wZXJhdG9yIgorICAg ICAgICBbKG1hdGNoX29wZXJhbmQgMiAiY2NtcF9jY19yZWdpc3RlciIpCisg ICAgICAgICAobWF0Y2hfb3BlcmFuZCAzICJjb25zdDBfb3BlcmFuZCIpXSkp XQorICAiIgorInsKKyAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoU0ltb2Rl LCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pKTsKKyAgRE9ORTsKK30iKQor CisKIChkZWZpbmVfZXhwYW5kICJjc3RvcmU8bW9kZT40IgogICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKIAko bWF0Y2hfb3BlcmF0b3I6U0kgMSAiYWFyY2g2NF9jb21wYXJpc29uX29wZXJh dG9yIgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3ByZWRpY2F0 ZXMubWQgYi9nY2MvY29uZmlnL2FhcmNoNjQvcHJlZGljYXRlcy5tZAppbmRl eCBmNmZlNThjLi43MTI5MjAzIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2Fh cmNoNjQvcHJlZGljYXRlcy5tZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQv cHJlZGljYXRlcy5tZApAQCAtMzAsNiArMzAsMTEgQEAKICAgKGlvciAobWF0 Y2hfY29kZSAic3ltYm9sX3JlZiIpCiAgICAgICAgKG1hdGNoX29wZXJhbmQg MCAicmVnaXN0ZXJfb3BlcmFuZCIpKSkKIAorOzsgUmV0dXJuIHRydWUgaWYg T1AgYSAoY29uc3RfaW50IDApIG9wZXJhbmQuCisoZGVmaW5lX3ByZWRpY2F0 ZSAiY29uc3QwX29wZXJhbmQiCisgIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0 X2ludCwgY29uc3RfZG91YmxlIikKKyAgICAgICAobWF0Y2hfdGVzdCAib3Ag PT0gQ09OU1QwX1JUWCAobW9kZSkiKSkpCisKIChkZWZpbmVfcHJlZGljYXRl ICJhYXJjaDY0X2NjbXBfaW1tZWRpYXRlIgogICAoYW5kIChtYXRjaF9jb2Rl ICJjb25zdF9pbnQiKQogICAgICAgIChtYXRjaF90ZXN0ICJJTl9SQU5HRSAo SU5UVkFMIChvcCksIC0zMSwgMzEpIikpKQo= ------=_NextPart_000_0013_01CFF1FD.9FA7D4F0--