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 149C13857802 for ; Thu, 28 Oct 2021 14:44:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 149C13857802 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19SClYFl017334; Thu, 28 Oct 2021 14:44:26 GMT Received: from ppma04ams.nl.ibm.com (63.31.33a9.ip4.static.sl-reverse.com [169.51.49.99]) by mx0a-001b2d01.pphosted.com with ESMTP id 3byv68ttcj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 Oct 2021 14:44:25 +0000 Received: from pps.filterd (ppma04ams.nl.ibm.com [127.0.0.1]) by ppma04ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 19SEhsxk003948; Thu, 28 Oct 2021 14:44:23 GMT Received: from b06avi18626390.portsmouth.uk.ibm.com (b06avi18626390.portsmouth.uk.ibm.com [9.149.26.192]) by ppma04ams.nl.ibm.com with ESMTP id 3bx4eea7kj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 Oct 2021 14:44:22 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 19SEcAme40304930 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 28 Oct 2021 14:38:10 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A5B3AAE05A; Thu, 28 Oct 2021 14:44:19 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6E63BAE061; Thu, 28 Oct 2021 14:44:19 +0000 (GMT) Received: from [9.171.41.86] (unknown [9.171.41.86]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTPS; Thu, 28 Oct 2021 14:44:19 +0000 (GMT) Content-Type: multipart/mixed; boundary="------------d2IYy9zpx8fKyYgB2oj0y8y3" Message-ID: <440687a0-d6e5-50e0-7105-7914b910c8c6@linux.ibm.com> Date: Thu, 28 Oct 2021 16:44:19 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Content-Language: en-US To: GCC Patches Cc: Richard Sandiford , linkw@linux.ibm.com From: Robin Dapp Subject: [PATCH] vect: Add bias parameter for partial vectorization X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: DPeuK2Ip8uWaAJiSClooIUa8HQJhAcpx X-Proofpoint-GUID: DPeuK2Ip8uWaAJiSClooIUa8HQJhAcpx X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-10-28_01,2021-10-26_01,2020-04-07_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 priorityscore=1501 mlxscore=0 phishscore=0 mlxlogscore=999 impostorscore=0 bulkscore=0 malwarescore=0 suspectscore=0 adultscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2110280081 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Oct 2021 14:44:32 -0000 This is a multi-part message in MIME format. --------------d2IYy9zpx8fKyYgB2oj0y8y3 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, as discussed in https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582627.html this introduces a bias parameter for the len_load/len_store ifns as well as optabs that is meant to distinguish between Power and s390 variants. The default is a bias of 0, while in s390's case vll/vstl do not support lengths of zero bytes and a bias of -1 should be used. Bootstrapped and regtested on Power9 (--with-cpu=power9) and s390 (--with-arch=z15). The tiny changes in the Power backend I will post separately. Regards Robin --------------d2IYy9zpx8fKyYgB2oj0y8y3 Content-Type: text/x-patch; charset=UTF-8; name="partial-vect-bias.patch" Content-Disposition: attachment; filename="partial-vect-bias.patch" Content-Transfer-Encoding: base64 Y29tbWl0IDE4YTVmY2QwZjg4MzUyNDdlODZkODZmYjAxODc4OWZlNzU1NDA0YmUKQXV0aG9y OiBSb2JpbiBEYXBwIDxyZGFwcEBsaW51eC5pYm0uY29tPgpEYXRlOiAgIFdlZCBPY3QgMjcg MTE6NDI6MTEgMjAyMSArMDIwMAoKICAgIHZlY3Q6IEFkZCBiaWFzIHBhcmFtZXRlciBmb3Ig cGFydGlhbCB2ZWN0b3JpemF0aW9uCiAgICAKICAgIFRoaXMgYWRkcyBhIGJpYXMgcGFyYW1l dGVyIGZvciBMRU5fTE9BRCBhbmQgTEVOX1NUT1JFIGFzIHdlbGwgYXMgdGhlCiAgICBjb3Jy ZXNwb25kaW5nIGludGVybmFsIGZ1bmN0aW9ucy4gIEEgYmlhcyBvZiAwIHJlcHJlc2VudHMg dGhlIHN0YXR1cwogICAgcXVvLCB3aGlsZSAtMSBpcyB1c2VkIGZvciB0aGUgczM5MCB2bGwg aW5zdHJ1Y3Rpb24gdGhhdCBleHBlY3RzIHRoZQogICAgaGlnaGVzdCBieXRlIHRvIGxvYWQg cmF0aGVyIHRoYW4gdGhlIG51bWJlciBvZiBieXRlcyB0byBsb2FkLgogICAgQmFja2VuZHMg bmVlZCB0byBzdXBwb3J0IG9uZSBvZiB0aGVzZSBiaWFzZXMgdmlhIGFuIG9wZXJhbmQgcHJl ZGljYXRlCiAgICBhbmQgdGhlIHZlY3Rvcml6ZXIgd2lsbCB0aGVuIGVtaXQgdGhlIGFwcHJv cHJpYXRlIHZhcmlhbnQuCgpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmMgYi9nY2Mv aW50ZXJuYWwtZm4uYwppbmRleCA4MzEyZDA4YWFiMi4uOTkzZTMyYzE4NTQgMTAwNjQ0Ci0t LSBhL2djYy9pbnRlcm5hbC1mbi5jCisrKyBiL2djYy9pbnRlcm5hbC1mbi5jCkBAIC0yNjk2 LDkgKzI2OTYsOSBAQCBleHBhbmRfY2FsbF9tZW1fcmVmICh0cmVlIHR5cGUsIGdjYWxsICpz dG10LCBpbnQgaW5kZXgpCiBzdGF0aWMgdm9pZAogZXhwYW5kX3BhcnRpYWxfbG9hZF9vcHRh Yl9mbiAoaW50ZXJuYWxfZm4sIGdjYWxsICpzdG10LCBjb252ZXJ0X29wdGFiIG9wdGFiKQog ewotICBjbGFzcyBleHBhbmRfb3BlcmFuZCBvcHNbM107Ci0gIHRyZWUgdHlwZSwgbGhzLCBy aHMsIG1hc2t0OwotICBydHggbWVtLCB0YXJnZXQsIG1hc2s7CisgIGNsYXNzIGV4cGFuZF9v cGVyYW5kIG9wc1s0XTsKKyAgdHJlZSB0eXBlLCBsaHMsIHJocywgbWFza3QsIGJpYXN0Owor ICBydHggbWVtLCB0YXJnZXQsIG1hc2ssIGJpYXM7CiAgIGluc25fY29kZSBpY29kZTsKIAog ICBtYXNrdCA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgMik7CkBAIC0yNzI3LDcgKzI3Mjcs MTYgQEAgZXhwYW5kX3BhcnRpYWxfbG9hZF9vcHRhYl9mbiAoaW50ZXJuYWxfZm4sIGdjYWxs ICpzdG10LCBjb252ZXJ0X29wdGFiIG9wdGFiKQogCQkJCSBUWVBFX1VOU0lHTkVEIChUUkVF X1RZUEUgKG1hc2t0KSkpOwogICBlbHNlCiAgICAgY3JlYXRlX2lucHV0X29wZXJhbmQgKCZv cHNbMl0sIG1hc2ssIFRZUEVfTU9ERSAoVFJFRV9UWVBFIChtYXNrdCkpKTsKLSAgZXhwYW5k X2luc24gKGljb2RlLCAzLCBvcHMpOworICBpZiAob3B0YWIgPT0gbGVuX2xvYWRfb3B0YWIp CisgICAgeworICAgICAgYmlhc3QgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDMpOworICAg ICAgYmlhcyA9IGV4cGFuZF9ub3JtYWwgKGJpYXN0KTsKKyAgICAgIGNyZWF0ZV9pbnB1dF9v cGVyYW5kICgmb3BzWzNdLCBiaWFzLCBRSW1vZGUpOworICAgICAgZXhwYW5kX2luc24gKGlj b2RlLCA0LCBvcHMpOworICAgIH0KKyAgZWxzZQorICAgIGV4cGFuZF9pbnNuIChpY29kZSwg Mywgb3BzKTsKKwogICBpZiAoIXJ0eF9lcXVhbF9wICh0YXJnZXQsIG9wc1swXS52YWx1ZSkp CiAgICAgZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgb3BzWzBdLnZhbHVlKTsKIH0KQEAgLTI3 NDEsOSArMjc1MCw5IEBAIGV4cGFuZF9wYXJ0aWFsX2xvYWRfb3B0YWJfZm4gKGludGVybmFs X2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikKIHN0YXRpYyB2b2lkCiBl eHBhbmRfcGFydGlhbF9zdG9yZV9vcHRhYl9mbiAoaW50ZXJuYWxfZm4sIGdjYWxsICpzdG10 LCBjb252ZXJ0X29wdGFiIG9wdGFiKQogewotICBjbGFzcyBleHBhbmRfb3BlcmFuZCBvcHNb M107Ci0gIHRyZWUgdHlwZSwgbGhzLCByaHMsIG1hc2t0OwotICBydHggbWVtLCByZWcsIG1h c2s7CisgIGNsYXNzIGV4cGFuZF9vcGVyYW5kIG9wc1s0XTsKKyAgdHJlZSB0eXBlLCBsaHMs IHJocywgbWFza3QsIGJpYXN0OworICBydHggbWVtLCByZWcsIG1hc2ssIGJpYXM7CiAgIGlu c25fY29kZSBpY29kZTsKIAogICBtYXNrdCA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgMik7 CkBAIC0yNzcwLDcgKzI3NzksMTYgQEAgZXhwYW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4g KGludGVybmFsX2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikKIAkJCQkg VFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFIChtYXNrdCkpKTsKICAgZWxzZQogICAgIGNyZWF0 ZV9pbnB1dF9vcGVyYW5kICgmb3BzWzJdLCBtYXNrLCBUWVBFX01PREUgKFRSRUVfVFlQRSAo bWFza3QpKSk7Ci0gIGV4cGFuZF9pbnNuIChpY29kZSwgMywgb3BzKTsKKworICBpZiAob3B0 YWIgPT0gbGVuX3N0b3JlX29wdGFiKQorICAgIHsKKyAgICAgIGJpYXN0ID0gZ2ltcGxlX2Nh bGxfYXJnIChzdG10LCA0KTsKKyAgICAgIGJpYXMgPSBleHBhbmRfbm9ybWFsIChiaWFzdCk7 CisgICAgICBjcmVhdGVfaW5wdXRfb3BlcmFuZCAoJm9wc1szXSwgYmlhcywgUUltb2RlKTsK KyAgICAgIGV4cGFuZF9pbnNuIChpY29kZSwgNCwgb3BzKTsKKyAgICB9CisgIGVsc2UKKyAg ICBleHBhbmRfaW5zbiAoaWNvZGUsIDMsIG9wcyk7CiB9CiAKICNkZWZpbmUgZXhwYW5kX21h c2tfc3RvcmVfb3B0YWJfZm4gZXhwYW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4KQEAgLTQx NzIsNiArNDE5MCwzMCBAQCBpbnRlcm5hbF9jaGVja19wdHJzX2ZuX3N1cHBvcnRlZF9wIChp bnRlcm5hbF9mbiBpZm4sIHRyZWUgdHlwZSwKIAkgICYmIGluc25fb3BlcmFuZF9tYXRjaGVz IChpY29kZSwgNCwgR0VOX0lOVCAoYWxpZ24pKSk7CiB9CiAKKy8qIFJldHVybiB0aGUgc3Vw cG9ydGVkIGJpYXMgZm9yIHRoZSBsZW5fbG9hZCBJRk4uICBGb3Igbm93IHdlIHN1cHBvcnQg YQorICAgZGVmYXVsdCBiaWFzIG9mIDAgYW5kIC0xIGluIGNhc2UgMCBpcyBub3QgYW4gYWxs b3dhYmxlIGxlbmd0aCBmb3IgbGVuX2xvYWQuCisgICBJZiBub25lIG9mIHRoZXNlIGJpYXNl cyBtYXRjaCB3aGF0IHRoZSBiYWNrZW5kIHByb3ZpZGVzLCByZXR1cm4KKyAgIFZFQ1RfUEFS VElBTF9CSUFTX1VOU1VQUE9SVEVELiAgKi8KKworc2lnbmVkIGNoYXIKK2ludGVybmFsX2xl bl9sb2FkX2JpYXNfc3VwcG9ydGVkIChpbnRlcm5hbF9mbiBpZm4sIG1hY2hpbmVfbW9kZSBt b2RlKQoreworICBvcHRhYiBvcHRhYiA9IGRpcmVjdF9pbnRlcm5hbF9mbl9vcHRhYiAoaWZu KTsKKyAgaW5zbl9jb2RlIGljb2RlID0gZGlyZWN0X29wdGFiX2hhbmRsZXIgKG9wdGFiLCBt b2RlKTsKKworICBpZiAoaWNvZGUgIT0gQ09ERV9GT1Jfbm90aGluZykKKyAgICB7CisgICAg ICAvKiBXZSBvbmx5IHN1cHBvcnQgYSBiaWFzIG9mIDAgKGRlZmF1bHQpIG9yIC0xLiAgVHJ5 IGJvdGgKKwkgb2YgdGhlbS4gICovCisgICAgICBpZiAoaW5zbl9vcGVyYW5kX21hdGNoZXMg KGljb2RlLCAzLCBHRU5fSU5UICgwKSkpCisJcmV0dXJuIDA7CisgICAgICBlbHNlIGlmIChp bnNuX29wZXJhbmRfbWF0Y2hlcyAoaWNvZGUsIDMsIEdFTl9JTlQgKC0xKSkpCisJcmV0dXJu IC0xOworICAgIH0KKworICByZXR1cm4gVkVDVF9QQVJUSUFMX0JJQVNfVU5TVVBQT1JURUQ7 Cit9CisKIC8qIEV4cGFuZCBTVE1UIGFzIHRob3VnaCBpdCB3ZXJlIGEgY2FsbCB0byBpbnRl cm5hbCBmdW5jdGlvbiBGTi4gICovCiAKIHZvaWQKZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5h bC1mbi5oIGIvZ2NjL2ludGVybmFsLWZuLmgKaW5kZXggMTlkMGY4NDlhNWEuLmFmMjhjZjBk NTY2IDEwMDY0NAotLS0gYS9nY2MvaW50ZXJuYWwtZm4uaAorKysgYi9nY2MvaW50ZXJuYWwt Zm4uaApAQCAtMjI3LDYgKzIyNywxMCBAQCBleHRlcm4gYm9vbCBpbnRlcm5hbF9nYXRoZXJf c2NhdHRlcl9mbl9zdXBwb3J0ZWRfcCAoaW50ZXJuYWxfZm4sIHRyZWUsCiAJCQkJCQkgICAg dHJlZSwgdHJlZSwgaW50KTsKIGV4dGVybiBib29sIGludGVybmFsX2NoZWNrX3B0cnNfZm5f c3VwcG9ydGVkX3AgKGludGVybmFsX2ZuLCB0cmVlLAogCQkJCQkJcG9seV91aW50NjQsIHVu c2lnbmVkIGludCk7CisjZGVmaW5lIFZFQ1RfUEFSVElBTF9CSUFTX1VOU1VQUE9SVEVEIDEy NworCitleHRlcm4gc2lnbmVkIGNoYXIgaW50ZXJuYWxfbGVuX2xvYWRfYmlhc19zdXBwb3J0 ZWQgKGludGVybmFsX2ZuIGlmbiwKKwkJCQkJCSAgICAgbWFjaGluZV9tb2RlKTsKIAogZXh0 ZXJuIHZvaWQgZXhwYW5kX2FkZHN1Yl9vdmVyZmxvdyAobG9jYXRpb25fdCwgdHJlZV9jb2Rl LCB0cmVlLCB0cmVlLCB0cmVlLAogCQkJCSAgICBib29sLCBib29sLCBib29sLCBib29sLCB0 cmVlICopOwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmMgYi9nY2MvdHJlZS12 ZWN0LWxvb3AuYwppbmRleCBlOTQzNTZkNzZlOS4uY2QyYzMzZmM0YTcgMTAwNjQ0Ci0tLSBh L2djYy90cmVlLXZlY3QtbG9vcC5jCisrKyBiL2djYy90cmVlLXZlY3QtbG9vcC5jCkBAIC0x MTYzLDYgKzExNjMsMTUgQEAgdmVjdF92ZXJpZnlfbG9vcF9sZW5zIChsb29wX3ZlY19pbmZv IGxvb3BfdmluZm8pCiAgIGlmIChMT09QX1ZJTkZPX0xFTlMgKGxvb3BfdmluZm8pLmlzX2Vt cHR5ICgpKQogICAgIHJldHVybiBmYWxzZTsKIAorICBvcHRfbWFjaGluZV9tb2RlIGxlbl9s b2FkX21vZGUgPSBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZQorICAgIChsb29wX3ZpbmZvLT52 ZWN0b3JfbW9kZSwgZmFsc2UpOworICAvKiBJZiB0aGUgYmFja2VuZCByZXF1aXJlcyBhIGJp YXMgb2YgLTEgZm9yIExFTl9MT0FELCB3ZSBtdXN0IG5vdCBlbWl0CisgICAgIGxlbl9sb2Fk cyB3aXRoIGEgbGVuZ3RoIG9mIHplcm8uICBJbiBvcmRlciB0byBhdm9pZCB0aGF0IHdlIHBy b2hpYml0CisgICAgIG1vcmUgdGhhbiBvbmUgbG9vcCBsZW5ndGggaGVyZS4gICovCisgIGlm IChpbnRlcm5hbF9sZW5fbG9hZF9iaWFzX3N1cHBvcnRlZCAoSUZOX0xFTl9MT0FELCBsZW5f bG9hZF9tb2RlLnJlcXVpcmUgKCkpCisgICAgICA9PSAtMSAmJiBMT09QX1ZJTkZPX0xFTlMg KGxvb3BfdmluZm8pLmxlbmd0aCAoKSA+IDEpCisgICAgICByZXR1cm4gZmFsc2U7CisKICAg dW5zaWduZWQgaW50IG1heF9uaXRlbXNfcGVyX2l0ZXIgPSAxOwogICB1bnNpZ25lZCBpbnQg aTsKICAgcmdyb3VwX2NvbnRyb2xzICpyZ2w7CmRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0 LXN0bXRzLmMgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmMKaW5kZXggMTc4NDliNTc1YjcuLmMz ZGYyNmM4MDA5IDEwMDY0NAotLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmMKKysrIGIvZ2Nj L3RyZWUtdmVjdC1zdG10cy5jCkBAIC04Mjg5LDkgKzgyODksMzAgQEAgdmVjdG9yaXphYmxl X3N0b3JlICh2ZWNfaW5mbyAqdmluZm8sCiAJCQkJCQkgICBnc2kpOwogCQkgICAgICB2ZWNf b3BybmQgPSB2YXI7CiAJCSAgICB9CisKKwkJICAvKiBDaGVjayB3aGljaCBiaWFzIHZhbHVl IHRvIHVzZS4gIERlZmF1bHQgaXMgMC4KKwkJICAgICBBIGJpYXMgb2YgLTEgbWVhbnMgdGhh dCB3ZSBjYW5ub3QgZW1pdCBhIExFTl9MT0FEIHdpdGgKKwkJICAgICBhIGxlbmd0aCBvZiAw IGFuZCBuZWVkIHRvIHN1YnRyYWN0IDEgZnJvbSB0aGUgbGVuZ3RoLiAgKi8KKwkJICBjaGFy IGJpYXN2YWwgPSBpbnRlcm5hbF9sZW5fbG9hZF9iaWFzX3N1cHBvcnRlZAorCQkgICAgKElG Tl9MRU5fU1RPUkUsIG5ld192bW9kZSk7CisJCSAgdHJlZSBiaWFzID0gYnVpbGRfaW50X2Nz dCAoaW50UUlfdHlwZV9ub2RlLCBiaWFzdmFsKTsKKwkJICB0cmVlIG5ld19sZW4gPSBmaW5h bF9sZW47CisJCSAgaWYgKGJpYXN2YWwgIT0gMAorCQkgICAgICAmJiBiaWFzdmFsICE9IFZF Q1RfUEFSVElBTF9CSUFTX1VOU1VQUE9SVEVEKQorCQkgICAgeworCQkgICAgICBuZXdfbGVu ID0gbWFrZV9zc2FfbmFtZSAoVFJFRV9UWVBFIChmaW5hbF9sZW4pKTsKKwkJICAgICAgZ2Fz c2lnbiAqbTEKKwkJCT0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAobmV3X2xlbiwgTUlOVVNfRVhQ UiwKKwkJCQkJICAgICAgIGZpbmFsX2xlbiwKKwkJCQkJICAgICAgIGJ1aWxkX29uZV9jc3Qg KFRSRUVfVFlQRQorCQkJCQkJCSAgKGZpbmFsX2xlbikpKTsKKwkJICAgICAgdmVjdF9maW5p c2hfc3RtdF9nZW5lcmF0aW9uICh2aW5mbywgc3RtdF9pbmZvLCBtMSwKKwkJCQkJCSAgIGdz aSk7CisJCSAgICB9CiAJCSAgZ2NhbGwgKmNhbGwKLQkJICAgID0gZ2ltcGxlX2J1aWxkX2Nh bGxfaW50ZXJuYWwgKElGTl9MRU5fU1RPUkUsIDQsIGRhdGFyZWZfcHRyLAotCQkJCQkJICBw dHIsIGZpbmFsX2xlbiwgdmVjX29wcm5kKTsKKwkJICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxf aW50ZXJuYWwgKElGTl9MRU5fU1RPUkUsIDUsIGRhdGFyZWZfcHRyLAorCQkJCQkJICBwdHIs IG5ld19sZW4sIHZlY19vcHJuZCwKKwkJCQkJCSAgYmlhcyk7CiAJCSAgZ2ltcGxlX2NhbGxf c2V0X25vdGhyb3cgKGNhbGwsIHRydWUpOwogCQkgIHZlY3RfZmluaXNoX3N0bXRfZ2VuZXJh dGlvbiAodmluZm8sIHN0bXRfaW5mbywgY2FsbCwgZ3NpKTsKIAkJICBuZXdfc3RtdCA9IGNh bGw7CkBAIC05NTg4LDI0ICs5NjA5LDQ2IEBAIHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNfaW5m byAqdmluZm8sCiAJCQkJCSAgICAgICB2ZWNfbnVtICogaiArIGkpOwogCQkJdHJlZSBwdHIg PSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwKIAkJCQkJCSAgYWxpZ24gKiBCSVRTX1BFUl9V TklUKTsKKworCQkJbWFjaGluZV9tb2RlIHZtb2RlID0gVFlQRV9NT0RFICh2ZWN0eXBlKTsK KwkJCW9wdF9tYWNoaW5lX21vZGUgbmV3X292bW9kZQorCQkJICA9IGdldF9sZW5fbG9hZF9z dG9yZV9tb2RlICh2bW9kZSwgdHJ1ZSk7CisJCQltYWNoaW5lX21vZGUgbmV3X3Ztb2RlID0g bmV3X292bW9kZS5yZXF1aXJlICgpOworCQkJdHJlZSBxaV90eXBlID0gdW5zaWduZWRfaW50 UUlfdHlwZV9ub2RlOworCQkJdHJlZSBuZXdfdnR5cGUKKwkJCSAgPSBidWlsZF92ZWN0b3Jf dHlwZV9mb3JfbW9kZSAocWlfdHlwZSwgbmV3X3Ztb2RlKTsKKworCQkJLyogQ2hlY2sgd2hp Y2ggYmlhcyB2YWx1ZSB0byB1c2UuICBEZWZhdWx0IGlzIDAuICovCisJCQljaGFyIGJpYXN2 YWwgPSBpbnRlcm5hbF9sZW5fbG9hZF9iaWFzX3N1cHBvcnRlZAorCQkJICAoSUZOX0xFTl9M T0FELCBuZXdfdm1vZGUpOworCisJCQl0cmVlIGJpYXMgPSBidWlsZF9pbnRfY3N0IChpbnRR SV90eXBlX25vZGUsIGJpYXN2YWwpOworCQkJdHJlZSBuZXdfbGVuID0gZmluYWxfbGVuOwor CQkJaWYgKGJpYXN2YWwgIT0gMAorCQkJICAgICYmIGJpYXN2YWwgIT0gVkVDVF9QQVJUSUFM X0JJQVNfVU5TVVBQT1JURUQpCisJCQkgIHsKKwkJCSAgICBuZXdfbGVuID0gbWFrZV9zc2Ff bmFtZSAoVFJFRV9UWVBFIChmaW5hbF9sZW4pKTsKKwkJCSAgICBnYXNzaWduICptMSA9IGdp bXBsZV9idWlsZF9hc3NpZ24gKG5ld19sZW4sCisJCQkJCQkJICAgICAgIE1JTlVTX0VYUFIs CisJCQkJCQkJICAgICAgIGZpbmFsX2xlbiwKKwkJCQkJCQkgICAgICAgYnVpbGRfb25lX2Nz dAorCQkJCQkJCSAgICAgICAoVFJFRV9UWVBFCisJCQkJCQkJCShmaW5hbF9sZW4pKSk7CisJ CQkgICAgdmVjdF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uICh2aW5mbywgc3RtdF9pbmZvLCBt MSwKKwkJCQkJCQkgZ3NpKTsKKwkJCSAgfQorCiAJCQlnY2FsbCAqY2FsbAotCQkJICA9IGdp bXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVOX0xPQUQsIDMsCisJCQkgID0gZ2lt cGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9MRU5fTE9BRCwgNCwKIAkJCQkJCQlkYXRh cmVmX3B0ciwgcHRyLAotCQkJCQkJCWZpbmFsX2xlbik7CisJCQkJCQkJbmV3X2xlbiwgYmlh cyk7CiAJCQlnaW1wbGVfY2FsbF9zZXRfbm90aHJvdyAoY2FsbCwgdHJ1ZSk7CiAJCQluZXdf c3RtdCA9IGNhbGw7CiAJCQlkYXRhX3JlZiA9IE5VTExfVFJFRTsKIAogCQkJLyogTmVlZCBj b252ZXJzaW9uIGlmIGl0J3Mgd3JhcHBlZCB3aXRoIFZuUUkuICAqLwotCQkJbWFjaGluZV9t b2RlIHZtb2RlID0gVFlQRV9NT0RFICh2ZWN0eXBlKTsKLQkJCW9wdF9tYWNoaW5lX21vZGUg bmV3X292bW9kZQotCQkJICA9IGdldF9sZW5fbG9hZF9zdG9yZV9tb2RlICh2bW9kZSwgdHJ1 ZSk7Ci0JCQltYWNoaW5lX21vZGUgbmV3X3Ztb2RlID0gbmV3X292bW9kZS5yZXF1aXJlICgp OwogCQkJaWYgKHZtb2RlICE9IG5ld192bW9kZSkKIAkJCSAgewotCQkJICAgIHRyZWUgcWlf dHlwZSA9IHVuc2lnbmVkX2ludFFJX3R5cGVfbm9kZTsKLQkJCSAgICB0cmVlIG5ld192dHlw ZQotCQkJICAgICAgPSBidWlsZF92ZWN0b3JfdHlwZV9mb3JfbW9kZSAocWlfdHlwZSwgbmV3 X3Ztb2RlKTsKIAkJCSAgICB0cmVlIHZhciA9IHZlY3RfZ2V0X25ld19zc2FfbmFtZSAobmV3 X3Z0eXBlLAogCQkJCQkJCSAgICAgIHZlY3Rfc2ltcGxlX3Zhcik7CiAJCQkgICAgZ2ltcGxl X3NldF9saHMgKGNhbGwsIHZhcik7Cg== --------------d2IYy9zpx8fKyYgB2oj0y8y3--