From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id F2B38385840C; Thu, 1 Dec 2022 06:32:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F2B38385840C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B16BOth017394; Thu, 1 Dec 2022 06:32:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=content-type : message-id : date : mime-version : subject : to : cc : references : from : in-reply-to; s=pp1; bh=8Ir79ATUBk2JlmiXfBdA6i4XoWTUyqt4MOxou/ytWcQ=; b=CNJCufPo7PktjOy9c17qt2CXdnQaZX504TM1BJ9JVx54PeO/X1G00R6n1Pk7AW4eOE+n p2GQk8DG+ehQwA7835CDkuiWdBECXQuoYCFjiUomuw8s476YasUwx/X1gQIkDPL5P4dR 6kWoBmY7XZX8NuAVSbvigRUocFXsBiiaTLjoSLA080XlHSvXtWzI67GNc32qRAux7hrC ToHH4yQ3zzn1OPGsSDFDX33Giy79zb/AhDqUbxR4Vx3GKWRHTIgnSR+36lb8SDPrSs01 L2K5qr31/5QHtBgBvt4E3/DgwR+GxS8v5+hiHg1n8Hd6/iy1ZkzwOOqozt3dqlRcuND5 Yw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3m6pfggpwt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 01 Dec 2022 06:32:46 +0000 Received: from m0098420.ppops.net (m0098420.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 2B16F2mm031571; Thu, 1 Dec 2022 06:32:46 GMT Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3m6pfggpw4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 01 Dec 2022 06:32:45 +0000 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 2B16LZcb004006; Thu, 1 Dec 2022 06:32:44 GMT Received: from b06avi18626390.portsmouth.uk.ibm.com (b06avi18626390.portsmouth.uk.ibm.com [9.149.26.192]) by ppma03ams.nl.ibm.com with ESMTP id 3m3ae9ew22-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 01 Dec 2022 06:32:43 +0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 2B16QARc5243562 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 1 Dec 2022 06:26:10 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B9AF8A404D; Thu, 1 Dec 2022 06:32:41 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DEA0DA4040; Thu, 1 Dec 2022 06:32:39 +0000 (GMT) Received: from [9.200.99.34] (unknown [9.200.99.34]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 1 Dec 2022 06:32:39 +0000 (GMT) Content-Type: multipart/mixed; boundary="------------oVYWMPyjP7nM6Z09sIP3h9nC" Message-ID: <5a11413c-6c93-a5a7-1281-4a9e63cc2b11@linux.ibm.com> Date: Thu, 1 Dec 2022 14:32:38 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH 2/3]rs6000: NFC use sext_hwi to replace ((v&0xf..f)^0x80..0) - 0x80..0 Content-Language: en-US To: "Kewen.Lin" Cc: segher@kernel.crashing.org, dje.gcc@gmail.com, linkw@gcc.gnu.org, gcc-patches@gcc.gnu.org References: <20221201013619.196004-1-guojiufu@linux.ibm.com> <20221201013619.196004-2-guojiufu@linux.ibm.com> <94338e4c-baf4-ec09-68a7-064a23c79327@linux.ibm.com> <54cbdd5a-c4ec-9c80-d2e6-1449798286f0@linux.ibm.com> From: Jiufu Guo In-Reply-To: <54cbdd5a-c4ec-9c80-d2e6-1449798286f0@linux.ibm.com> X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: cSD9frM8pJfvsrn26jss2fp5zN82w78G X-Proofpoint-GUID: TPVVdCOqs3DlXeqbhjxiAYOgR8Re7_xF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-01_04,2022-11-30_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 mlxlogscore=999 mlxscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 malwarescore=0 suspectscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212010042 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_NUMSUBJECT,NICE_REPLY_A,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP 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. --------------oVYWMPyjP7nM6Z09sIP3h9nC Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hi Kewen, 在 12/1/22 1:30 PM, Kewen.Lin 写道: > on 2022/12/1 13:17, Kewen.Lin via Gcc-patches wrote: >> Hi Jeff, >> >> on 2022/12/1 09:36, Jiufu Guo wrote: >>> Hi, >>> >>> This patch just uses sext_hwi to replace the expression like: >>> ((value & 0xf..f) ^ 0x80..0) - 0x80..0 for rs6000.cc and rs6000.md. >>> >>> Bootstrap & regtest pass on ppc64{,le}. >>> Is this ok for trunk? >> >> You didn't say it clearly but I guessed you have grepped in the whole >> config/rs6000 directory, right? I noticed there are still two places >> using this kind of expression in function constant_generates_xxspltiw, >> but I assumed it's intentional as their types are not HOST_WIDE_INT. >> >> gcc/config/rs6000/rs6000.cc: short sign_h_word = ((h_word & 0xffff) ^ 0x8000) - 0x8000; >> gcc/config/rs6000/rs6000.cc: int sign_word = ((word & 0xffffffff) ^ 0x80000000) - 0x80000000; >> > > oh, one place in gcc/config/rs6000/predicates.md got missed. > > ./predicates.md-756-{ > ./predicates.md-757- HOST_WIDE_INT val; > ... > ./predicates.md-762- val = const_vector_elt_as_int (op, elt); > ./predicates.md:763: val = ((val & 0xff) ^ 0x80) - 0x80; > ./predicates.md-764- return EASY_VECTOR_15_ADD_SELF (val); > ./predicates.md-765-}) > > Do you mind to have a further check? Good catch, thanks! I will update the patch to cover this one. Bootstrap and testing. I would be better to check all files under rs6000/. I just rechecked with grep -r "^.*0x8.*-.*0x8" for rs6000. No other place is missed. BR, Jeff (Jiufu) Updated patch as attached(add predicates.md). > > Thanks! > > Kewen --------------oVYWMPyjP7nM6Z09sIP3h9nC Content-Type: text/plain; charset=UTF-8; name="0002-NFC-use-sext_hwi-to-replace-v-0xf.f-0x80.0-0x80.0.patch" Content-Disposition: attachment; filename*0="0002-NFC-use-sext_hwi-to-replace-v-0xf.f-0x80.0-0x80.0.patch" Content-Transfer-Encoding: base64 RnJvbSAwMDU5ZTIxNzVjYWM1MzUzODkwOTY1YmE3ODJmZjU4NzQzZDJmNDg2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaXVmdSBHdW8gPGd1b2ppdWZ1QGxpbnV4LmlibS5j b20+CkRhdGU6IFdlZCwgMzAgTm92IDIwMjIgMTM6MTM6MzcgKzA4MDAKU3ViamVjdDogW1BB VENIIDIvMl1yczYwMDA6IHVzZSBzZXh0X2h3aSB0byByZXBsYWNlICgodiYweGYuLmYpXjB4 ODAuLjApIC0KIDB4ODAuLjAKCgpUaGlzIHBhdGNoIGp1c3QgdXNlcyBzZXh0X2h3aSB0byBy ZXBsYWNlIHRoZSBleHByZXNzaW9uIGxpa2U6CigodmFsdWUgJiAweGYuLmYpIF4gMHg4MC4u MCkgLSAweDgwLi4wIGZvciByczYwMDAuY2MsIHJzNjAwMC5tZCBhbmQKcHJlZGljYXRlcy5t ZCAoYWxsIG9jY3VyYW5jZSB1bmRlciByczYwMDAvKS4KCgpnY2MvQ2hhbmdlTG9nOgoKCSog Y29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kOiBVc2Ugc2V4dF9od2kuCgkqIGNvbmZpZy9y czYwMDAvcnM2MDAwLmNjIChudW1faW5zbnNfY29uc3RhbnRfZ3ByKTogVXNlIHNleHRfaHdp LgoJKGRhcndpbl9yczYwMDBfbGVnaXRpbWF0ZV9sb19zdW1fY29uc3RfcCk6IExpa2V3aXNl LgoJKG1lbV9vcGVyYW5kX2dwcik6IExpa2V3aXNlLgoJKG1lbV9vcGVyYW5kX2RzX2Zvcm0p OiBMaWtld2lzZS4KCShyczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogTGlrZXdpc2UuCgko cnM2MDAwX2VtaXRfc2V0X2NvbnN0KTogTGlrZXdpc2UuCgkocnM2MDAwX2VtaXRfc2V0X2xv bmdfY29uc3QpOiBMaWtld2lzZS4KCShwcmludF9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGNv bmZpZy9yczYwMDAvcnM2MDAwLm1kOiBMaWtld2lzZS4KCi0tLQogZ2NjL2NvbmZpZy9yczYw MDAvcHJlZGljYXRlcy5tZCB8ICAyICstCiBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuY2Mg ICAgIHwgMzAgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBnY2MvY29uZmlnL3Jz NjAwMC9yczYwMDAubWQgICAgIHwgMTAgKysrKystLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAx OSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZpZy9yczYwMDAvcHJlZGljYXRl cy5tZAppbmRleCBiMWZjYzY5YmI2MC4uYTE3NjQwMTg1NDUgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQKKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvcHJl ZGljYXRlcy5tZApAQCAtNzYwLDcgKzc2MCw3IEBAIChkZWZpbmVfcHJlZGljYXRlICJlYXN5 X3ZlY3Rvcl9jb25zdGFudF9hZGRfc2VsZiIKICAgICByZXR1cm4gMDsKICAgZWx0ID0gQllU RVNfQklHX0VORElBTiA/IEdFVF9NT0RFX05VTklUUyAobW9kZSkgLSAxIDogMDsKICAgdmFs ID0gY29uc3RfdmVjdG9yX2VsdF9hc19pbnQgKG9wLCBlbHQpOwotICB2YWwgPSAoKHZhbCAm IDB4ZmYpIF4gMHg4MCkgLSAweDgwOworICB2YWwgPSBzZXh0X2h3aSAodmFsLCA4KTsKICAg cmV0dXJuIEVBU1lfVkVDVE9SXzE1X0FERF9TRUxGICh2YWwpOwogfSkKIApkaWZmIC0tZ2l0 IGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmNjIGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2 MDAwLmNjCmluZGV4IDVlZmU5YjIyZDhiLi43MTgwNzJjYzlhMSAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9yczYwMDAvcnM2MDAwLmNjCisrKyBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAw MC5jYwpAQCAtNjAyMSw3ICs2MDIxLDcgQEAgbnVtX2luc25zX2NvbnN0YW50X2dwciAoSE9T VF9XSURFX0lOVCB2YWx1ZSkKIAogICBlbHNlIGlmIChUQVJHRVRfUE9XRVJQQzY0KQogICAg IHsKLSAgICAgIEhPU1RfV0lERV9JTlQgbG93ICA9ICgodmFsdWUgJiAweGZmZmZmZmZmKSBe IDB4ODAwMDAwMDApIC0gMHg4MDAwMDAwMDsKKyAgICAgIEhPU1RfV0lERV9JTlQgbG93ID0g c2V4dF9od2kgKHZhbHVlLCAzMik7CiAgICAgICBIT1NUX1dJREVfSU5UIGhpZ2ggPSB2YWx1 ZSA+PiAzMTsKIAogICAgICAgaWYgKGhpZ2ggPT0gMCB8fCBoaWdoID09IC0xKQpAQCAtODQ1 Niw3ICs4NDU2LDcgQEAgZGFyd2luX3JzNjAwMF9sZWdpdGltYXRlX2xvX3N1bV9jb25zdF9w IChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUpCiAgICAgfQogCiAgIC8qIFdlIG9ubHkgY2Fy ZSBpZiB0aGUgYWNjZXNzKGVzKSB3b3VsZCBjYXVzZSBhIGNoYW5nZSB0byB0aGUgaGlnaCBw YXJ0LiAgKi8KLSAgb2Zmc2V0ID0gKChvZmZzZXQgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4 ODAwMDsKKyAgb2Zmc2V0ID0gc2V4dF9od2kgKG9mZnNldCwgMTYpOwogICByZXR1cm4gU0lH TkVEXzE2QklUX09GRlNFVF9FWFRSQV9QIChvZmZzZXQsIGV4dHJhKTsKIH0KIApAQCAtODUy Miw3ICs4NTIyLDcgQEAgbWVtX29wZXJhbmRfZ3ByIChydHggb3AsIG1hY2hpbmVfbW9kZSBt b2RlKQogICBpZiAoR0VUX0NPREUgKGFkZHIpID09IExPX1NVTSkKICAgICAvKiBGb3IgbG9f c3VtIGFkZHJlc3Nlcywgd2UgbXVzdCBhbGxvdyBhbnkgb2Zmc2V0IGV4Y2VwdCBvbmUgdGhh dAogICAgICAgIGNhdXNlcyBhIHdyYXAsIHNvIHRlc3Qgb25seSB0aGUgbG93IDE2IGJpdHMu ICAqLwotICAgIG9mZnNldCA9ICgob2Zmc2V0ICYgMHhmZmZmKSBeIDB4ODAwMCkgLSAweDgw MDA7CisgICAgb2Zmc2V0ID0gc2V4dF9od2kgKG9mZnNldCwgMTYpOwogCiAgIHJldHVybiBT SUdORURfMTZCSVRfT0ZGU0VUX0VYVFJBX1AgKG9mZnNldCwgZXh0cmEpOwogfQpAQCAtODU2 Miw3ICs4NTYyLDcgQEAgbWVtX29wZXJhbmRfZHNfZm9ybSAocnR4IG9wLCBtYWNoaW5lX21v ZGUgbW9kZSkKICAgaWYgKEdFVF9DT0RFIChhZGRyKSA9PSBMT19TVU0pCiAgICAgLyogRm9y IGxvX3N1bSBhZGRyZXNzZXMsIHdlIG11c3QgYWxsb3cgYW55IG9mZnNldCBleGNlcHQgb25l IHRoYXQKICAgICAgICBjYXVzZXMgYSB3cmFwLCBzbyB0ZXN0IG9ubHkgdGhlIGxvdyAxNiBi aXRzLiAgKi8KLSAgICBvZmZzZXQgPSAoKG9mZnNldCAmIDB4ZmZmZikgXiAweDgwMDApIC0g MHg4MDAwOworICAgIG9mZnNldCA9IHNleHRfaHdpIChvZmZzZXQsIDE2KTsKIAogICByZXR1 cm4gU0lHTkVEXzE2QklUX09GRlNFVF9FWFRSQV9QIChvZmZzZXQsIGV4dHJhKTsKIH0KQEAg LTkxMzYsNyArOTEzNiw3IEBAIHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MgKHJ0eCB4LCBy dHggb2xkeCBBVFRSSUJVVEVfVU5VU0VELAogICAgIHsKICAgICAgIEhPU1RfV0lERV9JTlQg aGlnaF9pbnQsIGxvd19pbnQ7CiAgICAgICBydHggc3VtOwotICAgICAgbG93X2ludCA9ICgo SU5UVkFMIChYRVhQICh4LCAxKSkgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKKyAg ICAgIGxvd19pbnQgPSBzZXh0X2h3aSAoSU5UVkFMIChYRVhQICh4LCAxKSksIDE2KTsKICAg ICAgIGlmIChsb3dfaW50ID49IDB4ODAwMCAtIGV4dHJhKQogCWxvd19pbnQgPSAwOwogICAg ICAgaGlnaF9pbnQgPSBJTlRWQUwgKFhFWFAgKHgsIDEpKSAtIGxvd19pbnQ7CkBAIC0xMDIw Myw3ICsxMDIwMyw3IEBAIHJzNjAwMF9lbWl0X3NldF9jb25zdCAocnR4IGRlc3QsIHJ0eCBz b3VyY2UpCiAJICBsbyA9IG9wZXJhbmRfc3Vid29yZF9mb3JjZSAoZGVzdCwgV09SRFNfQklH X0VORElBTiAhPSAwLAogCQkJCSAgICAgIERJbW9kZSk7CiAJICBlbWl0X21vdmVfaW5zbiAo aGksIEdFTl9JTlQgKGMgPj4gMzIpKTsKLQkgIGMgPSAoKGMgJiAweGZmZmZmZmZmKSBeIDB4 ODAwMDAwMDApIC0gMHg4MDAwMDAwMDsKKwkgIGMgPSBzZXh0X2h3aSAoYywgMzIpOwogCSAg ZW1pdF9tb3ZlX2luc24gKGxvLCBHRU5fSU5UIChjKSk7CiAJfQogICAgICAgZWxzZQpAQCAt MTAyNDIsNyArMTAyNDIsNyBAQCByczYwMDBfZW1pdF9zZXRfbG9uZ19jb25zdCAocnR4IGRl c3QsIEhPU1RfV0lERV9JTlQgYykKIAogICBpZiAoKHVkNCA9PSAweGZmZmYgJiYgdWQzID09 IDB4ZmZmZiAmJiB1ZDIgPT0gMHhmZmZmICYmICh1ZDEgJiAweDgwMDApKQogICAgICAgfHwg KHVkNCA9PSAwICYmIHVkMyA9PSAwICYmIHVkMiA9PSAwICYmICEgKHVkMSAmIDB4ODAwMCkp KQotICAgIGVtaXRfbW92ZV9pbnNuIChkZXN0LCBHRU5fSU5UICgodWQxIF4gMHg4MDAwKSAt IDB4ODAwMCkpOworICAgIGVtaXRfbW92ZV9pbnNuIChkZXN0LCBHRU5fSU5UIChzZXh0X2h3 aSAodWQxLCAxNikpKTsKIAogICBlbHNlIGlmICgodWQ0ID09IDB4ZmZmZiAmJiB1ZDMgPT0g MHhmZmZmICYmICh1ZDIgJiAweDgwMDApKQogCSAgIHx8ICh1ZDQgPT0gMCAmJiB1ZDMgPT0g MCAmJiAhICh1ZDIgJiAweDgwMDApKSkKQEAgLTEwMjUwLDcgKzEwMjUwLDcgQEAgcnM2MDAw X2VtaXRfc2V0X2xvbmdfY29uc3QgKHJ0eCBkZXN0LCBIT1NUX1dJREVfSU5UIGMpCiAgICAg ICB0ZW1wID0gIWNhbl9jcmVhdGVfcHNldWRvX3AgKCkgPyBkZXN0IDogZ2VuX3JlZ19ydHgg KERJbW9kZSk7CiAKICAgICAgIGVtaXRfbW92ZV9pbnNuICh1ZDEgIT0gMCA/IGNvcHlfcnR4 ICh0ZW1wKSA6IGRlc3QsCi0JCSAgICAgIEdFTl9JTlQgKCgodWQyIDw8IDE2KSBeIDB4ODAw MDAwMDApIC0gMHg4MDAwMDAwMCkpOworCQkgICAgICBHRU5fSU5UIChzZXh0X2h3aSAodWQy IDw8IDE2LCAzMikpKTsKICAgICAgIGlmICh1ZDEgIT0gMCkKIAllbWl0X21vdmVfaW5zbiAo ZGVzdCwKIAkJCWdlbl9ydHhfSU9SIChESW1vZGUsIGNvcHlfcnR4ICh0ZW1wKSwKQEAgLTEw MjYxLDggKzEwMjYxLDcgQEAgcnM2MDAwX2VtaXRfc2V0X2xvbmdfY29uc3QgKHJ0eCBkZXN0 LCBIT1NUX1dJREVfSU5UIGMpCiAgICAgICB0ZW1wID0gIWNhbl9jcmVhdGVfcHNldWRvX3Ag KCkgPyBkZXN0IDogZ2VuX3JlZ19ydHggKERJbW9kZSk7CiAKICAgICAgIGdjY19hc3NlcnQg KHVkMiAmIDB4ODAwMCk7Ci0gICAgICBlbWl0X21vdmVfaW5zbiAoY29weV9ydHggKHRlbXAp LAotCQkgICAgICBHRU5fSU5UICgoKHVkMiA8PCAxNikgXiAweDgwMDAwMDAwKSAtIDB4ODAw MDAwMDApKTsKKyAgICAgIGVtaXRfbW92ZV9pbnNuIChjb3B5X3J0eCAodGVtcCksIEdFTl9J TlQgKHNleHRfaHdpICh1ZDIgPDwgMTYsIDMyKSkpOwogICAgICAgaWYgKHVkMSAhPSAwKQog CWVtaXRfbW92ZV9pbnNuIChjb3B5X3J0eCAodGVtcCksCiAJCQlnZW5fcnR4X0lPUiAoRElt b2RlLCBjb3B5X3J0eCAodGVtcCksCkBAIC0xMDI3Myw3ICsxMDI3Miw3IEBAIHJzNjAwMF9l bWl0X3NldF9sb25nX2NvbnN0IChydHggZGVzdCwgSE9TVF9XSURFX0lOVCBjKQogICAgIHsK ICAgICAgIHRlbXAgPSAhY2FuX2NyZWF0ZV9wc2V1ZG9fcCAoKSA/IGRlc3QgOiBnZW5fcmVn X3J0eCAoREltb2RlKTsKICAgICAgIEhPU1RfV0lERV9JTlQgbnVtID0gKHVkMiA8PCAxNikg fCB1ZDE7Ci0gICAgICByczYwMDBfZW1pdF9zZXRfbG9uZ19jb25zdCAodGVtcCwgKG51bSBe IDB4ODAwMDAwMDApIC0gMHg4MDAwMDAwMCk7CisgICAgICByczYwMDBfZW1pdF9zZXRfbG9u Z19jb25zdCAodGVtcCwgc2V4dF9od2kgKG51bSwgMzIpKTsKICAgICAgIHJ0eCBvbmUgPSBn ZW5fcnR4X0FORCAoREltb2RlLCB0ZW1wLCBHRU5fSU5UICgweGZmZmZmZmZmKSk7CiAgICAg ICBydHggdHdvID0gZ2VuX3J0eF9BU0hJRlQgKERJbW9kZSwgdGVtcCwgR0VOX0lOVCAoMzIp KTsKICAgICAgIGVtaXRfbW92ZV9pbnNuIChkZXN0LCBnZW5fcnR4X0lPUiAoREltb2RlLCBv bmUsIHR3bykpOwpAQCAtMTAyODMsOCArMTAyODIsNyBAQCByczYwMDBfZW1pdF9zZXRfbG9u Z19jb25zdCAocnR4IGRlc3QsIEhPU1RfV0lERV9JTlQgYykKICAgICB7CiAgICAgICB0ZW1w ID0gIWNhbl9jcmVhdGVfcHNldWRvX3AgKCkgPyBkZXN0IDogZ2VuX3JlZ19ydHggKERJbW9k ZSk7CiAKLSAgICAgIGVtaXRfbW92ZV9pbnNuIChjb3B5X3J0eCAodGVtcCksCi0JCSAgICAg IEdFTl9JTlQgKCgodWQzIDw8IDE2KSBeIDB4ODAwMDAwMDApIC0gMHg4MDAwMDAwMCkpOwor ICAgICAgZW1pdF9tb3ZlX2luc24gKGNvcHlfcnR4ICh0ZW1wKSwgR0VOX0lOVCAoc2V4dF9o d2kgKHVkMyA8PCAxNiwgMzIpKSk7CiAgICAgICBpZiAodWQyICE9IDApCiAJZW1pdF9tb3Zl X2luc24gKGNvcHlfcnR4ICh0ZW1wKSwKIAkJCWdlbl9ydHhfSU9SIChESW1vZGUsIGNvcHlf cnR4ICh0ZW1wKSwKQEAgLTEwMzM2LDggKzEwMzM0LDcgQEAgcnM2MDAwX2VtaXRfc2V0X2xv bmdfY29uc3QgKHJ0eCBkZXN0LCBIT1NUX1dJREVfSU5UIGMpCiAgICAgewogICAgICAgdGVt cCA9ICFjYW5fY3JlYXRlX3BzZXVkb19wICgpID8gZGVzdCA6IGdlbl9yZWdfcnR4IChESW1v ZGUpOwogCi0gICAgICBlbWl0X21vdmVfaW5zbiAoY29weV9ydHggKHRlbXApLAotCQkgICAg ICBHRU5fSU5UICgoKHVkNCA8PCAxNikgXiAweDgwMDAwMDAwKSAtIDB4ODAwMDAwMDApKTsK KyAgICAgIGVtaXRfbW92ZV9pbnNuIChjb3B5X3J0eCAodGVtcCksIEdFTl9JTlQgKHNleHRf aHdpICh1ZDQgPDwgMTYsIDMyKSkpOwogICAgICAgaWYgKHVkMyAhPSAwKQogCWVtaXRfbW92 ZV9pbnNuIChjb3B5X3J0eCAodGVtcCksCiAJCQlnZW5fcnR4X0lPUiAoREltb2RlLCBjb3B5 X3J0eCAodGVtcCksCkBAIC0xNDE2Nyw4ICsxNDE2NCw3IEBAIHByaW50X29wZXJhbmQgKEZJ TEUgKmZpbGUsIHJ0eCB4LCBpbnQgY29kZSkKICAgICAgIC8qIElmIGNvbnN0YW50LCBsb3ct b3JkZXIgMTYgYml0cyBvZiBjb25zdGFudCwgc2lnbmVkLiAgT3RoZXJ3aXNlLCB3cml0ZQog CSBub3JtYWxseS4gICovCiAgICAgICBpZiAoSU5UX1AgKHgpKQotCWZwcmludGYgKGZpbGUs IEhPU1RfV0lERV9JTlRfUFJJTlRfREVDLAotCQkgKChJTlRWQUwgKHgpICYgMHhmZmZmKSBe IDB4ODAwMCkgLSAweDgwMDApOworCWZwcmludGYgKGZpbGUsIEhPU1RfV0lERV9JTlRfUFJJ TlRfREVDLCBzZXh0X2h3aSAoSU5UVkFMICh4KSwgMTYpKTsKICAgICAgIGVsc2UKIAlwcmlu dF9vcGVyYW5kIChmaWxlLCB4LCAwKTsKICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZCBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5t ZAppbmRleCAzYmFlMzAzMDg2Yi4uNGJkMWRmZDNkYTkgMTAwNjQ0Ci0tLSBhL2djYy9jb25m aWcvcnM2MDAwL3JzNjAwMC5tZAorKysgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQK QEAgLTE3ODcsNyArMTc4Nyw3IEBAIChkZWZpbmVfZXhwYW5kICJhZGQ8bW9kZT4zIgogCX0K IAogICAgICAgSE9TVF9XSURFX0lOVCB2YWwgPSBJTlRWQUwgKG9wZXJhbmRzWzJdKTsKLSAg ICAgIEhPU1RfV0lERV9JTlQgbG93ID0gKCh2YWwgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4 ODAwMDsKKyAgICAgIEhPU1RfV0lERV9JTlQgbG93ID0gc2V4dF9od2kgKHZhbCwgMTYpOwog ICAgICAgSE9TVF9XSURFX0lOVCByZXN0ID0gdHJ1bmNfaW50X2Zvcl9tb2RlICh2YWwgLSBs b3csIDxNT0RFPm1vZGUpOwogCiAgICAgICBpZiAoPE1PREU+bW9kZSA9PSBESW1vZGUgJiYg IXNhdGlzZmllc19jb25zdHJhaW50X0wgKEdFTl9JTlQgKHJlc3QpKSkKQEAgLTE5MzAsNyAr MTkzMCw3IEBAIChkZWZpbmVfc3BsaXQKICAgIChzZXQgKG1hdGNoX2R1cCAwKSAocGx1czpH UFIgKG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDQpKSldCiB7CiAgIEhPU1RfV0lERV9JTlQg dmFsID0gSU5UVkFMIChvcGVyYW5kc1syXSk7Ci0gIEhPU1RfV0lERV9JTlQgbG93ID0gKCh2 YWwgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKKyAgSE9TVF9XSURFX0lOVCBsb3cg PSBzZXh0X2h3aSAodmFsLCAxNik7CiAgIEhPU1RfV0lERV9JTlQgcmVzdCA9IHRydW5jX2lu dF9mb3JfbW9kZSAodmFsIC0gbG93LCA8TU9ERT5tb2RlKTsKIAogICBvcGVyYW5kc1s0XSA9 IEdFTl9JTlQgKGxvdyk7CkBAIC04MjEzLDcgKzgyMTMsNyBAQCAoZGVmaW5lX3NwbGl0CiAg IG9wZXJhbmRzWzJdID0gb3BlcmFuZF9zdWJ3b3JkIChvcGVyYW5kc1swXSwgZW5kaWFuLCAw LCA8TU9ERT5tb2RlKTsKICAgb3BlcmFuZHNbM10gPSBvcGVyYW5kX3N1YndvcmQgKG9wZXJh bmRzWzBdLCAxIC0gZW5kaWFuLCAwLCA8TU9ERT5tb2RlKTsKICAgb3BlcmFuZHNbNF0gPSBH RU5fSU5UICh2YWx1ZSA+PiAzMik7Ci0gIG9wZXJhbmRzWzFdID0gR0VOX0lOVCAoKCh2YWx1 ZSAmIDB4ZmZmZmZmZmYpIF4gMHg4MDAwMDAwMCkgLSAweDgwMDAwMDAwKTsKKyAgb3BlcmFu ZHNbMV0gPSBHRU5fSU5UIChzZXh0X2h3aSAodmFsdWUsIDMyKSk7CiB9KQogCiAoZGVmaW5l X3NwbGl0CkBAIC05NTc3LDcgKzk1NzcsNyBAQCAoZGVmaW5lX3NwbGl0CiAgIG9wZXJhbmRz WzNdID0gb3BlcmFuZF9zdWJ3b3JkX2ZvcmNlIChvcGVyYW5kc1swXSwgV09SRFNfQklHX0VO RElBTiAhPSAwLAogCQkJCSAgICAgICBESW1vZGUpOwogICBvcGVyYW5kc1s0XSA9IEdFTl9J TlQgKHZhbHVlID4+IDMyKTsKLSAgb3BlcmFuZHNbMV0gPSBHRU5fSU5UICgoKHZhbHVlICYg MHhmZmZmZmZmZikgXiAweDgwMDAwMDAwKSAtIDB4ODAwMDAwMDApOworICBvcGVyYW5kc1sx XSA9IEdFTl9JTlQgKHNleHRfaHdpICh2YWx1ZSwgMzIpKTsKIH0pCiAKIChkZWZpbmVfc3Bs aXQKQEAgLTEyNDI1LDcgKzEyNDI1LDcgQEAgKGRlZmluZV9wZWVwaG9sZTIKIAkJCQkJICAg ICAgU0ltb2RlLAogCQkJCQkgICAgICBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOwogICBI T1NUX1dJREVfSU5UIGMgPSBJTlRWQUwgKGNuc3QpOwotICBIT1NUX1dJREVfSU5UIHNleHRj ID0gKChjICYgMHhmZmZmKSBeIDB4ODAwMCkgLSAweDgwMDA7CisgIEhPU1RfV0lERV9JTlQg c2V4dGMgPSBzZXh0X2h3aSAoYywgMTYpOwogICBIT1NUX1dJREVfSU5UIHhvcnYgPSBjIF4g c2V4dGM7CiAKICAgb3BlcmFuZHNbOV0gPSBHRU5fSU5UICh4b3J2KTsKLS0gCjIuMTcuMQoK --------------oVYWMPyjP7nM6Z09sIP3h9nC--