From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id DD6BF3858C54; Thu, 1 Dec 2022 07:10:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DD6BF3858C54 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 (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B171gQG016220; Thu, 1 Dec 2022 07:10:37 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=+X+qT5nS4L29BP3IezBz6wwSl9XpE54gf+lOkXFHf+I=; b=TiXNQABdoXiUgda27iRDa8VlqHhLUw7xNkCwamLFL72aweSnQ2sMbIqsPikU1tfLYOYM F9KO3/u3YnFOj+DCy6fz8MoJzmK+uv8MOTfQwacQmoMSxrQVZfy8s8ULw091nwRhvmyw lwvcpIOBLCOY10zOIsc6o2wfsIgf5QS2gEGeEs/EwwcIbZhxDCvZX+Nz/HKsYA/ba1o9 RbDleenrS15xQMYJwEl0DmeNJl4bgpt9t04ZBT/+RsHwMb+6Q/mCWAe05d8TWIoH1bqm xGGo0JFT6gmQ5vgVMoX/nGnkHlcyzOYtr4YsIiapjKLV8pZdwgfZoKMP0M4QP1Ss+uZT 3Q== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3m6qh487ev-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 01 Dec 2022 07:10:37 +0000 Received: from m0098410.ppops.net (m0098410.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 2B173KY2022262; Thu, 1 Dec 2022 07:10:37 GMT Received: from ppma06fra.de.ibm.com (48.49.7a9f.ip4.static.sl-reverse.com [159.122.73.72]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3m6qh487e9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 01 Dec 2022 07:10:36 +0000 Received: from pps.filterd (ppma06fra.de.ibm.com [127.0.0.1]) by ppma06fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 2B176k1O028420; Thu, 1 Dec 2022 07:10:34 GMT Received: from b06cxnps4074.portsmouth.uk.ibm.com (d06relay11.portsmouth.uk.ibm.com [9.149.109.196]) by ppma06fra.de.ibm.com with ESMTP id 3m3a2hw10q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 01 Dec 2022 07:10:34 +0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 2B17AVVU56754486 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 1 Dec 2022 07:10:31 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D6126A404D; Thu, 1 Dec 2022 07:10:31 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B79BCA4040; Thu, 1 Dec 2022 07:10:29 +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 07:10:29 +0000 (GMT) Content-Type: multipart/mixed; boundary="------------dtMQ5kiJDqJsdAmHm4rCFzrt" Message-ID: <81db0995-8ba5-766c-1e0e-67d3d47c40ce@linux.ibm.com> Date: Thu, 1 Dec 2022 15:10:27 +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> <9cbc0b3d-0d4b-5646-0ed8-fa2d4f8dc8c3@linux.ibm.com> From: Jiufu Guo In-Reply-To: X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: rijtFYXpTZB6teEFlKiASlyWjbFD6v9X X-Proofpoint-GUID: YGH2X7kDlcygKP7HQWTUk73qeNKPbU71 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 bulkscore=0 mlxscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212010048 X-Spam-Status: No, score=-11.7 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. --------------dtMQ5kiJDqJsdAmHm4rCFzrt Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hi Kewen, 在 12/1/22 2:11 PM, Kewen.Lin 写道: > on 2022/12/1 13:35, Jiufu Guo wrote: >> Hi Kewen, >> >> Thanks for your quick and insight review! >> >> 在 12/1/22 1:17 PM, Kewen.Lin 写道: >>> 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; >>> >>> If so, could you state it clearly in commit log like "with type >>> signed/unsigned HOST_WIDE_INT" or similar? >>> >> Good question! >> >> And as you said sext_hwi is more for "signed/unsigned HOST_WIDE_INT". >> For these two places, it seems sext_hwi is not needed actually! >> And I did see why these expressions are used, may be just an assignment >> is ok. > > ah, I see. I agree using the assignment is quite enough. Could you > please also simplify them together? Since they are with the form > "((value & 0xf..f) ^ 0x80..0) - 0x80..0" too, and can be refactored > in a better way. Thanks! Sure, I believe just "short sign_h_word = vsx_const->half_words[0];" should be correct :-), and included in the updated patch. Updated patch is attached, bootstrap®test is on going. BR, Jeff (Jiufu) > > BR, > Kewen > --------------dtMQ5kiJDqJsdAmHm4rCFzrt 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 RnJvbSA4YWE4ZTEyMzRiNmVjMzQ0NzM0MzQ5NTFhM2E2MTc3MjUzYWFjNzcwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaXVmdSBHdW8gPGd1b2ppdWZ1QGxpbnV4LmlibS5j b20+CkRhdGU6IFdlZCwgMzAgTm92IDIwMjIgMTM6MTM6MzcgKzA4MDAKU3ViamVjdDogW1BB VENIIDIvMl1yczYwMDA6IHVwZGF0ZSAoKHYmMHhmLi5mKV4weDgwLi4wKSAtIDB4ODAuLjAg d2l0aCBjb2RlOiBsaWtlIHNleHRfaHdpCgpUaGlzIHBhdGNoIGp1c3QgcmVwbGFjZXMgdGhl IGV4cHJlc3Npb24gbGlrZTogCigodmFsdWUgJiAweGYuLmYpIF4gMHg4MC4uMCkgLSAweDgw Li4wIHRvIGJldHRlciBjb2RlKGUuZy4gc2V4dF9od2kpIGZvcgpyczYwMDAuY2MsIHJzNjAw MC5tZCBhbmQgcHJlZGljYXRlcy5tZCAoZmlsZXMgdW5kZXIgcnM2MDAwLykuCgpnY2MvQ2hh bmdlTG9nOgoKCSogY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kOiBVc2Ugc2V4dF9od2ku CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmNjIChudW1faW5zbnNfY29uc3RhbnRfZ3ByKTog TGlrZXdpc2UuCgkoZGFyd2luX3JzNjAwMF9sZWdpdGltYXRlX2xvX3N1bV9jb25zdF9wKTog TGlrZXdpc2UuCgkobWVtX29wZXJhbmRfZ3ByKTogTGlrZXdpc2UuCgkobWVtX29wZXJhbmRf ZHNfZm9ybSk6IExpa2V3aXNlLgoJKHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBMaWtl d2lzZS4KCShyczYwMDBfZW1pdF9zZXRfY29uc3QpOiBMaWtld2lzZS4KCShyczYwMDBfZW1p dF9zZXRfbG9uZ19jb25zdCk6IExpa2V3aXNlLgoJKHByaW50X29wZXJhbmQpOiBMaWtld2lz ZS4KCShjb25zdGFudF9nZW5lcmF0ZXNfeHhzcGx0aXcpOiBSZW1vdmUgdW5uZWNlc3Nhcnkg ZXhwcmVzc2lvbnMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kOiBVc2Ugc2V4dF9od2ku CgotLS0KIGdjYy9jb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQgfCAgMiArLQogZ2NjL2Nv bmZpZy9yczYwMDAvcnM2MDAwLmNjICAgICB8IDM2ICsrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLQogZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kICAgICB8IDEwICsrKyst LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kIGIvZ2Nj L2NvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZAppbmRleCBiMWZjYzY5YmI2MC4uYTE3NjQw MTg1NDUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQKKysr IGIvZ2NjL2NvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZApAQCAtNzYwLDcgKzc2MCw3IEBA IChkZWZpbmVfcHJlZGljYXRlICJlYXN5X3ZlY3Rvcl9jb25zdGFudF9hZGRfc2VsZiIKICAg ICByZXR1cm4gMDsKICAgZWx0ID0gQllURVNfQklHX0VORElBTiA/IEdFVF9NT0RFX05VTklU UyAobW9kZSkgLSAxIDogMDsKICAgdmFsID0gY29uc3RfdmVjdG9yX2VsdF9hc19pbnQgKG9w LCBlbHQpOwotICB2YWwgPSAoKHZhbCAmIDB4ZmYpIF4gMHg4MCkgLSAweDgwOworICB2YWwg PSBzZXh0X2h3aSAodmFsLCA4KTsKICAgcmV0dXJuIEVBU1lfVkVDVE9SXzE1X0FERF9TRUxG ICh2YWwpOwogfSkKIApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmNj IGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmNjCmluZGV4IDVlZmU5YjIyZDhiLi5kZmY5 YTBkODgzNSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmNjCisrKyBi L2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jYwpAQCAtNjAyMSw3ICs2MDIxLDcgQEAgbnVt X2luc25zX2NvbnN0YW50X2dwciAoSE9TVF9XSURFX0lOVCB2YWx1ZSkKIAogICBlbHNlIGlm IChUQVJHRVRfUE9XRVJQQzY0KQogICAgIHsKLSAgICAgIEhPU1RfV0lERV9JTlQgbG93ICA9 ICgodmFsdWUgJiAweGZmZmZmZmZmKSBeIDB4ODAwMDAwMDApIC0gMHg4MDAwMDAwMDsKKyAg ICAgIEhPU1RfV0lERV9JTlQgbG93ID0gc2V4dF9od2kgKHZhbHVlLCAzMik7CiAgICAgICBI T1NUX1dJREVfSU5UIGhpZ2ggPSB2YWx1ZSA+PiAzMTsKIAogICAgICAgaWYgKGhpZ2ggPT0g MCB8fCBoaWdoID09IC0xKQpAQCAtODQ1Niw3ICs4NDU2LDcgQEAgZGFyd2luX3JzNjAwMF9s ZWdpdGltYXRlX2xvX3N1bV9jb25zdF9wIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUpCiAg ICAgfQogCiAgIC8qIFdlIG9ubHkgY2FyZSBpZiB0aGUgYWNjZXNzKGVzKSB3b3VsZCBjYXVz ZSBhIGNoYW5nZSB0byB0aGUgaGlnaCBwYXJ0LiAgKi8KLSAgb2Zmc2V0ID0gKChvZmZzZXQg JiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKKyAgb2Zmc2V0ID0gc2V4dF9od2kgKG9m ZnNldCwgMTYpOwogICByZXR1cm4gU0lHTkVEXzE2QklUX09GRlNFVF9FWFRSQV9QIChvZmZz ZXQsIGV4dHJhKTsKIH0KIApAQCAtODUyMiw3ICs4NTIyLDcgQEAgbWVtX29wZXJhbmRfZ3By IChydHggb3AsIG1hY2hpbmVfbW9kZSBtb2RlKQogICBpZiAoR0VUX0NPREUgKGFkZHIpID09 IExPX1NVTSkKICAgICAvKiBGb3IgbG9fc3VtIGFkZHJlc3Nlcywgd2UgbXVzdCBhbGxvdyBh bnkgb2Zmc2V0IGV4Y2VwdCBvbmUgdGhhdAogICAgICAgIGNhdXNlcyBhIHdyYXAsIHNvIHRl c3Qgb25seSB0aGUgbG93IDE2IGJpdHMuICAqLwotICAgIG9mZnNldCA9ICgob2Zmc2V0ICYg MHhmZmZmKSBeIDB4ODAwMCkgLSAweDgwMDA7CisgICAgb2Zmc2V0ID0gc2V4dF9od2kgKG9m ZnNldCwgMTYpOwogCiAgIHJldHVybiBTSUdORURfMTZCSVRfT0ZGU0VUX0VYVFJBX1AgKG9m ZnNldCwgZXh0cmEpOwogfQpAQCAtODU2Miw3ICs4NTYyLDcgQEAgbWVtX29wZXJhbmRfZHNf Zm9ybSAocnR4IG9wLCBtYWNoaW5lX21vZGUgbW9kZSkKICAgaWYgKEdFVF9DT0RFIChhZGRy KSA9PSBMT19TVU0pCiAgICAgLyogRm9yIGxvX3N1bSBhZGRyZXNzZXMsIHdlIG11c3QgYWxs b3cgYW55IG9mZnNldCBleGNlcHQgb25lIHRoYXQKICAgICAgICBjYXVzZXMgYSB3cmFwLCBz byB0ZXN0IG9ubHkgdGhlIGxvdyAxNiBiaXRzLiAgKi8KLSAgICBvZmZzZXQgPSAoKG9mZnNl dCAmIDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwOworICAgIG9mZnNldCA9IHNleHRfaHdp IChvZmZzZXQsIDE2KTsKIAogICByZXR1cm4gU0lHTkVEXzE2QklUX09GRlNFVF9FWFRSQV9Q IChvZmZzZXQsIGV4dHJhKTsKIH0KQEAgLTkxMzYsNyArOTEzNiw3IEBAIHJzNjAwMF9sZWdp dGltaXplX2FkZHJlc3MgKHJ0eCB4LCBydHggb2xkeCBBVFRSSUJVVEVfVU5VU0VELAogICAg IHsKICAgICAgIEhPU1RfV0lERV9JTlQgaGlnaF9pbnQsIGxvd19pbnQ7CiAgICAgICBydHgg c3VtOwotICAgICAgbG93X2ludCA9ICgoSU5UVkFMIChYRVhQICh4LCAxKSkgJiAweGZmZmYp IF4gMHg4MDAwKSAtIDB4ODAwMDsKKyAgICAgIGxvd19pbnQgPSBzZXh0X2h3aSAoSU5UVkFM IChYRVhQICh4LCAxKSksIDE2KTsKICAgICAgIGlmIChsb3dfaW50ID49IDB4ODAwMCAtIGV4 dHJhKQogCWxvd19pbnQgPSAwOwogICAgICAgaGlnaF9pbnQgPSBJTlRWQUwgKFhFWFAgKHgs IDEpKSAtIGxvd19pbnQ7CkBAIC0xMDIwMyw3ICsxMDIwMyw3IEBAIHJzNjAwMF9lbWl0X3Nl dF9jb25zdCAocnR4IGRlc3QsIHJ0eCBzb3VyY2UpCiAJICBsbyA9IG9wZXJhbmRfc3Vid29y ZF9mb3JjZSAoZGVzdCwgV09SRFNfQklHX0VORElBTiAhPSAwLAogCQkJCSAgICAgIERJbW9k ZSk7CiAJICBlbWl0X21vdmVfaW5zbiAoaGksIEdFTl9JTlQgKGMgPj4gMzIpKTsKLQkgIGMg PSAoKGMgJiAweGZmZmZmZmZmKSBeIDB4ODAwMDAwMDApIC0gMHg4MDAwMDAwMDsKKwkgIGMg PSBzZXh0X2h3aSAoYywgMzIpOwogCSAgZW1pdF9tb3ZlX2luc24gKGxvLCBHRU5fSU5UIChj KSk7CiAJfQogICAgICAgZWxzZQpAQCAtMTAyNDIsNyArMTAyNDIsNyBAQCByczYwMDBfZW1p dF9zZXRfbG9uZ19jb25zdCAocnR4IGRlc3QsIEhPU1RfV0lERV9JTlQgYykKIAogICBpZiAo KHVkNCA9PSAweGZmZmYgJiYgdWQzID09IDB4ZmZmZiAmJiB1ZDIgPT0gMHhmZmZmICYmICh1 ZDEgJiAweDgwMDApKQogICAgICAgfHwgKHVkNCA9PSAwICYmIHVkMyA9PSAwICYmIHVkMiA9 PSAwICYmICEgKHVkMSAmIDB4ODAwMCkpKQotICAgIGVtaXRfbW92ZV9pbnNuIChkZXN0LCBH RU5fSU5UICgodWQxIF4gMHg4MDAwKSAtIDB4ODAwMCkpOworICAgIGVtaXRfbW92ZV9pbnNu IChkZXN0LCBHRU5fSU5UIChzZXh0X2h3aSAodWQxLCAxNikpKTsKIAogICBlbHNlIGlmICgo dWQ0ID09IDB4ZmZmZiAmJiB1ZDMgPT0gMHhmZmZmICYmICh1ZDIgJiAweDgwMDApKQogCSAg IHx8ICh1ZDQgPT0gMCAmJiB1ZDMgPT0gMCAmJiAhICh1ZDIgJiAweDgwMDApKSkKQEAgLTEw MjUwLDcgKzEwMjUwLDcgQEAgcnM2MDAwX2VtaXRfc2V0X2xvbmdfY29uc3QgKHJ0eCBkZXN0 LCBIT1NUX1dJREVfSU5UIGMpCiAgICAgICB0ZW1wID0gIWNhbl9jcmVhdGVfcHNldWRvX3Ag KCkgPyBkZXN0IDogZ2VuX3JlZ19ydHggKERJbW9kZSk7CiAKICAgICAgIGVtaXRfbW92ZV9p bnNuICh1ZDEgIT0gMCA/IGNvcHlfcnR4ICh0ZW1wKSA6IGRlc3QsCi0JCSAgICAgIEdFTl9J TlQgKCgodWQyIDw8IDE2KSBeIDB4ODAwMDAwMDApIC0gMHg4MDAwMDAwMCkpOworCQkgICAg ICBHRU5fSU5UIChzZXh0X2h3aSAodWQyIDw8IDE2LCAzMikpKTsKICAgICAgIGlmICh1ZDEg IT0gMCkKIAllbWl0X21vdmVfaW5zbiAoZGVzdCwKIAkJCWdlbl9ydHhfSU9SIChESW1vZGUs IGNvcHlfcnR4ICh0ZW1wKSwKQEAgLTEwMjYxLDggKzEwMjYxLDcgQEAgcnM2MDAwX2VtaXRf c2V0X2xvbmdfY29uc3QgKHJ0eCBkZXN0LCBIT1NUX1dJREVfSU5UIGMpCiAgICAgICB0ZW1w ID0gIWNhbl9jcmVhdGVfcHNldWRvX3AgKCkgPyBkZXN0IDogZ2VuX3JlZ19ydHggKERJbW9k ZSk7CiAKICAgICAgIGdjY19hc3NlcnQgKHVkMiAmIDB4ODAwMCk7Ci0gICAgICBlbWl0X21v dmVfaW5zbiAoY29weV9ydHggKHRlbXApLAotCQkgICAgICBHRU5fSU5UICgoKHVkMiA8PCAx NikgXiAweDgwMDAwMDAwKSAtIDB4ODAwMDAwMDApKTsKKyAgICAgIGVtaXRfbW92ZV9pbnNu IChjb3B5X3J0eCAodGVtcCksIEdFTl9JTlQgKHNleHRfaHdpICh1ZDIgPDwgMTYsIDMyKSkp OwogICAgICAgaWYgKHVkMSAhPSAwKQogCWVtaXRfbW92ZV9pbnNuIChjb3B5X3J0eCAodGVt cCksCiAJCQlnZW5fcnR4X0lPUiAoREltb2RlLCBjb3B5X3J0eCAodGVtcCksCkBAIC0xMDI3 Myw3ICsxMDI3Miw3IEBAIHJzNjAwMF9lbWl0X3NldF9sb25nX2NvbnN0IChydHggZGVzdCwg SE9TVF9XSURFX0lOVCBjKQogICAgIHsKICAgICAgIHRlbXAgPSAhY2FuX2NyZWF0ZV9wc2V1 ZG9fcCAoKSA/IGRlc3QgOiBnZW5fcmVnX3J0eCAoREltb2RlKTsKICAgICAgIEhPU1RfV0lE RV9JTlQgbnVtID0gKHVkMiA8PCAxNikgfCB1ZDE7Ci0gICAgICByczYwMDBfZW1pdF9zZXRf bG9uZ19jb25zdCAodGVtcCwgKG51bSBeIDB4ODAwMDAwMDApIC0gMHg4MDAwMDAwMCk7Cisg ICAgICByczYwMDBfZW1pdF9zZXRfbG9uZ19jb25zdCAodGVtcCwgc2V4dF9od2kgKG51bSwg MzIpKTsKICAgICAgIHJ0eCBvbmUgPSBnZW5fcnR4X0FORCAoREltb2RlLCB0ZW1wLCBHRU5f SU5UICgweGZmZmZmZmZmKSk7CiAgICAgICBydHggdHdvID0gZ2VuX3J0eF9BU0hJRlQgKERJ bW9kZSwgdGVtcCwgR0VOX0lOVCAoMzIpKTsKICAgICAgIGVtaXRfbW92ZV9pbnNuIChkZXN0 LCBnZW5fcnR4X0lPUiAoREltb2RlLCBvbmUsIHR3bykpOwpAQCAtMTAyODMsOCArMTAyODIs NyBAQCByczYwMDBfZW1pdF9zZXRfbG9uZ19jb25zdCAocnR4IGRlc3QsIEhPU1RfV0lERV9J TlQgYykKICAgICB7CiAgICAgICB0ZW1wID0gIWNhbl9jcmVhdGVfcHNldWRvX3AgKCkgPyBk ZXN0IDogZ2VuX3JlZ19ydHggKERJbW9kZSk7CiAKLSAgICAgIGVtaXRfbW92ZV9pbnNuIChj b3B5X3J0eCAodGVtcCksCi0JCSAgICAgIEdFTl9JTlQgKCgodWQzIDw8IDE2KSBeIDB4ODAw MDAwMDApIC0gMHg4MDAwMDAwMCkpOworICAgICAgZW1pdF9tb3ZlX2luc24gKGNvcHlfcnR4 ICh0ZW1wKSwgR0VOX0lOVCAoc2V4dF9od2kgKHVkMyA8PCAxNiwgMzIpKSk7CiAgICAgICBp ZiAodWQyICE9IDApCiAJZW1pdF9tb3ZlX2luc24gKGNvcHlfcnR4ICh0ZW1wKSwKIAkJCWdl bl9ydHhfSU9SIChESW1vZGUsIGNvcHlfcnR4ICh0ZW1wKSwKQEAgLTEwMzM2LDggKzEwMzM0 LDcgQEAgcnM2MDAwX2VtaXRfc2V0X2xvbmdfY29uc3QgKHJ0eCBkZXN0LCBIT1NUX1dJREVf SU5UIGMpCiAgICAgewogICAgICAgdGVtcCA9ICFjYW5fY3JlYXRlX3BzZXVkb19wICgpID8g ZGVzdCA6IGdlbl9yZWdfcnR4IChESW1vZGUpOwogCi0gICAgICBlbWl0X21vdmVfaW5zbiAo Y29weV9ydHggKHRlbXApLAotCQkgICAgICBHRU5fSU5UICgoKHVkNCA8PCAxNikgXiAweDgw MDAwMDAwKSAtIDB4ODAwMDAwMDApKTsKKyAgICAgIGVtaXRfbW92ZV9pbnNuIChjb3B5X3J0 eCAodGVtcCksIEdFTl9JTlQgKHNleHRfaHdpICh1ZDQgPDwgMTYsIDMyKSkpOwogICAgICAg aWYgKHVkMyAhPSAwKQogCWVtaXRfbW92ZV9pbnNuIChjb3B5X3J0eCAodGVtcCksCiAJCQln ZW5fcnR4X0lPUiAoREltb2RlLCBjb3B5X3J0eCAodGVtcCksCkBAIC0xNDE2Nyw4ICsxNDE2 NCw3IEBAIHByaW50X29wZXJhbmQgKEZJTEUgKmZpbGUsIHJ0eCB4LCBpbnQgY29kZSkKICAg ICAgIC8qIElmIGNvbnN0YW50LCBsb3ctb3JkZXIgMTYgYml0cyBvZiBjb25zdGFudCwgc2ln bmVkLiAgT3RoZXJ3aXNlLCB3cml0ZQogCSBub3JtYWxseS4gICovCiAgICAgICBpZiAoSU5U X1AgKHgpKQotCWZwcmludGYgKGZpbGUsIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDLAotCQkg KChJTlRWQUwgKHgpICYgMHhmZmZmKSBeIDB4ODAwMCkgLSAweDgwMDApOworCWZwcmludGYg KGZpbGUsIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDLCBzZXh0X2h3aSAoSU5UVkFMICh4KSwg MTYpKTsKICAgICAgIGVsc2UKIAlwcmludF9vcGVyYW5kIChmaWxlLCB4LCAwKTsKICAgICAg IHJldHVybjsKQEAgLTI4NzE5LDE0ICsyODcxNSwxMiBAQCBjb25zdGFudF9nZW5lcmF0ZXNf eHhzcGx0aXcgKHZlY19jb25zdF8xMjhiaXRfdHlwZSAqdnN4X2NvbnN0KQogICAvKiBTZWUg aWYgd2UgY2FuIHVzZSBWU1BMVElTSCBvciBWU1BMVElTVy4gICovCiAgIGlmICh2c3hfY29u c3QtPmFsbF9oYWxmX3dvcmRzX3NhbWUpCiAgICAgewotICAgICAgdW5zaWduZWQgc2hvcnQg aF93b3JkID0gdnN4X2NvbnN0LT5oYWxmX3dvcmRzWzBdOwotICAgICAgc2hvcnQgc2lnbl9o X3dvcmQgPSAoKGhfd29yZCAmIDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwOworICAgICAg c2hvcnQgc2lnbl9oX3dvcmQgPSB2c3hfY29uc3QtPmhhbGZfd29yZHNbMF07CiAgICAgICBp ZiAoRUFTWV9WRUNUT1JfMTUgKHNpZ25faF93b3JkKSkKIAlyZXR1cm4gMDsKICAgICB9CiAK LSAgdW5zaWduZWQgaW50IHdvcmQgPSB2c3hfY29uc3QtPndvcmRzWzBdOwotICBpbnQgc2ln bl93b3JkID0gKCh3b3JkICYgMHhmZmZmZmZmZikgXiAweDgwMDAwMDAwKSAtIDB4ODAwMDAw MDA7CisgIGludCBzaWduX3dvcmQgPSB2c3hfY29uc3QtPndvcmRzWzBdOwogICBpZiAoRUFT WV9WRUNUT1JfMTUgKHNpZ25fd29yZCkpCiAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBh L2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZCBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAw MC5tZAppbmRleCAzYmFlMzAzMDg2Yi4uNGJkMWRmZDNkYTkgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcvcnM2MDAwL3JzNjAwMC5tZAorKysgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAu bWQKQEAgLTE3ODcsNyArMTc4Nyw3IEBAIChkZWZpbmVfZXhwYW5kICJhZGQ8bW9kZT4zIgog CX0KIAogICAgICAgSE9TVF9XSURFX0lOVCB2YWwgPSBJTlRWQUwgKG9wZXJhbmRzWzJdKTsK LSAgICAgIEhPU1RfV0lERV9JTlQgbG93ID0gKCh2YWwgJiAweGZmZmYpIF4gMHg4MDAwKSAt IDB4ODAwMDsKKyAgICAgIEhPU1RfV0lERV9JTlQgbG93ID0gc2V4dF9od2kgKHZhbCwgMTYp OwogICAgICAgSE9TVF9XSURFX0lOVCByZXN0ID0gdHJ1bmNfaW50X2Zvcl9tb2RlICh2YWwg LSBsb3csIDxNT0RFPm1vZGUpOwogCiAgICAgICBpZiAoPE1PREU+bW9kZSA9PSBESW1vZGUg JiYgIXNhdGlzZmllc19jb25zdHJhaW50X0wgKEdFTl9JTlQgKHJlc3QpKSkKQEAgLTE5MzAs NyArMTkzMCw3IEBAIChkZWZpbmVfc3BsaXQKICAgIChzZXQgKG1hdGNoX2R1cCAwKSAocGx1 czpHUFIgKG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDQpKSldCiB7CiAgIEhPU1RfV0lERV9J TlQgdmFsID0gSU5UVkFMIChvcGVyYW5kc1syXSk7Ci0gIEhPU1RfV0lERV9JTlQgbG93ID0g KCh2YWwgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKKyAgSE9TVF9XSURFX0lOVCBs b3cgPSBzZXh0X2h3aSAodmFsLCAxNik7CiAgIEhPU1RfV0lERV9JTlQgcmVzdCA9IHRydW5j X2ludF9mb3JfbW9kZSAodmFsIC0gbG93LCA8TU9ERT5tb2RlKTsKIAogICBvcGVyYW5kc1s0 XSA9IEdFTl9JTlQgKGxvdyk7CkBAIC04MjEzLDcgKzgyMTMsNyBAQCAoZGVmaW5lX3NwbGl0 CiAgIG9wZXJhbmRzWzJdID0gb3BlcmFuZF9zdWJ3b3JkIChvcGVyYW5kc1swXSwgZW5kaWFu LCAwLCA8TU9ERT5tb2RlKTsKICAgb3BlcmFuZHNbM10gPSBvcGVyYW5kX3N1YndvcmQgKG9w ZXJhbmRzWzBdLCAxIC0gZW5kaWFuLCAwLCA8TU9ERT5tb2RlKTsKICAgb3BlcmFuZHNbNF0g PSBHRU5fSU5UICh2YWx1ZSA+PiAzMik7Ci0gIG9wZXJhbmRzWzFdID0gR0VOX0lOVCAoKCh2 YWx1ZSAmIDB4ZmZmZmZmZmYpIF4gMHg4MDAwMDAwMCkgLSAweDgwMDAwMDAwKTsKKyAgb3Bl cmFuZHNbMV0gPSBHRU5fSU5UIChzZXh0X2h3aSAodmFsdWUsIDMyKSk7CiB9KQogCiAoZGVm aW5lX3NwbGl0CkBAIC05NTc3LDcgKzk1NzcsNyBAQCAoZGVmaW5lX3NwbGl0CiAgIG9wZXJh bmRzWzNdID0gb3BlcmFuZF9zdWJ3b3JkX2ZvcmNlIChvcGVyYW5kc1swXSwgV09SRFNfQklH X0VORElBTiAhPSAwLAogCQkJCSAgICAgICBESW1vZGUpOwogICBvcGVyYW5kc1s0XSA9IEdF Tl9JTlQgKHZhbHVlID4+IDMyKTsKLSAgb3BlcmFuZHNbMV0gPSBHRU5fSU5UICgoKHZhbHVl ICYgMHhmZmZmZmZmZikgXiAweDgwMDAwMDAwKSAtIDB4ODAwMDAwMDApOworICBvcGVyYW5k c1sxXSA9IEdFTl9JTlQgKHNleHRfaHdpICh2YWx1ZSwgMzIpKTsKIH0pCiAKIChkZWZpbmVf c3BsaXQKQEAgLTEyNDI1LDcgKzEyNDI1LDcgQEAgKGRlZmluZV9wZWVwaG9sZTIKIAkJCQkJ ICAgICAgU0ltb2RlLAogCQkJCQkgICAgICBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOwog ICBIT1NUX1dJREVfSU5UIGMgPSBJTlRWQUwgKGNuc3QpOwotICBIT1NUX1dJREVfSU5UIHNl eHRjID0gKChjICYgMHhmZmZmKSBeIDB4ODAwMCkgLSAweDgwMDA7CisgIEhPU1RfV0lERV9J TlQgc2V4dGMgPSBzZXh0X2h3aSAoYywgMTYpOwogICBIT1NUX1dJREVfSU5UIHhvcnYgPSBj IF4gc2V4dGM7CiAKICAgb3BlcmFuZHNbOV0gPSBHRU5fSU5UICh4b3J2KTsKLS0gCjIuMTcu MQoK --------------dtMQ5kiJDqJsdAmHm4rCFzrt--