From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id D7255385DC3E for ; Mon, 31 Oct 2022 13:03:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D7255385DC3E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.95,228,1661846400"; d="scan'208";a="85742305" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 31 Oct 2022 05:03:13 -0800 IronPort-SDR: eRz6hRSaVqQ1SrmIRzpWJ1PY4RvlGK5QIqIHa5WjPc5IheBIlXzupuDobGQ1mWUYtT8+U6R2Ek 0M4M6yRvmXGunJI9AHVr01J50UHwbRy736lo+SITGfOvncVMFtfIps0quuoSLXSntV15QG56AL bjuM/Vqnfqrympa90q7e3C2SsvwBfZfUQhvi2k6acQZ+WMuflaTlqfseOkbkNfHLdnYCgjncZR bu8bH2Xx4qsuPXwfuWFbqiVS5s8S9Pwsr/MMCA/Iul1SOkGeQLwyZv8fFT6091Fm3+UIOKbt+/ 8Ro= Content-Type: multipart/mixed; boundary="------------MQTzWZwW0O05BrhgM0yLSW0g" Message-ID: Date: Mon, 31 Oct 2022 13:03:07 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Content-Language: en-GB From: Andrew Stubbs Subject: [committed] amdgcn: multi-size vector reductions To: "gcc-patches@gcc.gnu.org" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_PASS,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: --------------MQTzWZwW0O05BrhgM0yLSW0g Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit My recent patch to add additional vector lengths didn't address the vector reductions yet. This patch adds the missing support. Shorter vectors use fewer reduction steps, and the means to extract the final value has been adjusted. Lacking from this is any useful costs, so for loops the vect pass will almost always continue to choose the most expensive 64-lane vectors, and therefore reductions, with masking for smaller sizes. This works, but probably could be improved. For SLP the compiler will usually use a more appropriately sized reduction, so this patch is useful for that case. Andrew --------------MQTzWZwW0O05BrhgM0yLSW0g Content-Type: text/plain; charset="UTF-8"; name="221031-vector-reductions.patch" Content-Disposition: attachment; filename="221031-vector-reductions.patch" Content-Transfer-Encoding: base64 YW1kZ2NuOiBtdWx0aS1zaXplIHZlY3RvciByZWR1Y3Rpb25zCgpBZGQgc3VwcG9ydCBmb3Ig dmVjdG9yIHJlZHVjdGlvbnMgZm9yIGFueSB2ZWN0b3Igd2lkdGggYnkgc3dpdGNoaW5nIGl0 ZXJhdG9ycwphbmQgZ2VuZXJhbGlzaW5nIHRoZSBjb2RlIHNsaWdodGx5LiAgVGhlcmUncyBu byBvbmUtaW5zdHJ1Y3Rpb24gd2F5IHRvIG1vdmUgYW4KaXRlbSBmcm9tIGxhbmUgMzEgdG8g bGFuZSAwICg2MywgMTUsIDcsIDMsIGFuZCAxIGFyZSBhbGwgZmluZSB0aG91Z2gpLCBhbmQK dmVjX2V4dHJhY3QgaXMgcHJvYmFibHkgZmV3ZXIgY3ljbGVzIGFueXdheSwgc28gbm93IHdl IGFsd2F5cyByZWR1Y2UgdG8gYW4KU0dQUi4KCmdjYy9DaGFuZ2VMb2c6CgoJKiBjb25maWcv Z2NuL2djbi12YWx1Lm1kIChWNjRfU0kpOiBEZWxldGUgaXRlcmF0b3IuCgkoVjY0X0RJKTog TGlrZXdpc2UuCgkoVjY0XzFSRUcpOiBMaWtld2lzZS4KCShWNjRfSU5UXzFSRUcpOiBMaWtl d2lzZS4KCShWNjRfMlJFRyk6IExpa2V3aXNlLgoJKFY2NF9BTEwpOiBMaWtld2lzZS4KCShW NjRfRlApOiBMaWtld2lzZS4KCShyZWR1Y188cmVkdWNfb3A+X3NjYWxfPG1vZGU+KTogVXNl IFZfQUxMLiBVc2UgZ2VuX3ZlY19leHRyYWN0LgoJKGZvbGRfbGVmdF9wbHVzXzxtb2RlPik6 IFVzZSBWX0ZQLgoJKCo8cmVkdWNfb3A+X2RwcF9zaHJfPG1vZGU+KTogVXNlIFZfMVJFRy4K CSgqPHJlZHVjX29wPl9kcHBfc2hyXzxtb2RlPik6IFVzZSBWX0RJLgoJKCpwbHVzX2NhcnJ5 X2RwcF9zaHJfPG1vZGU+KTogVXNlIFZfSU5UXzFSRUcuCgkoKnBsdXNfY2FycnlfaW5fZHBw X3Nocl88bW9kZT4pOiBVc2UgVl9TSS4KCSgqcGx1c19jYXJyeV9kcHBfc2hyXzxtb2RlPik6 IFVzZSBWX0RJLgoJKG1vdl9mcm9tX2xhbmU2M188bW9kZT4pOiBEZWxldGUuCgkobW92X2Zy b21fbGFuZTYzXzxtb2RlPik6IERlbGV0ZS4KCSogY29uZmlnL2djbi9nY24uY2MgKGdjbl9l eHBhbmRfcmVkdWNfc2NhbGFyKTogU3VwcG9ydCBwYXJ0aWFsIHZlY3RvcnMuCgkqIGNvbmZp Zy9nY24vZ2NuLm1kICh1bnNwZWMpOiBSZW1vdmUgVU5TUEVDX01PVl9GUk9NX0xBTkU2My4K CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2djbi9nY24tdmFsdS5tZCBiL2djYy9jb25maWcv Z2NuL2djbi12YWx1Lm1kCmluZGV4IDAwYzBlM2JlMWVhLi42Mjc0ZDJlOTIyOCAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9nY24vZ2NuLXZhbHUubWQKKysrIGIvZ2NjL2NvbmZpZy9nY24v Z2NuLXZhbHUubWQKQEAgLTMyLDExICszMiw2IEBAIChkZWZpbmVfbW9kZV9pdGVyYXRvciBW X0RJCiAoZGVmaW5lX21vZGVfaXRlcmF0b3IgVl9ERgogCQkgICAgICBbVjJERiBWNERGIFY4 REYgVjE2REYgVjMyREYgVjY0REZdKQogCi0oZGVmaW5lX21vZGVfaXRlcmF0b3IgVjY0X1NJ Ci0JCSAgICAgIFtWNjRTSV0pCi0oZGVmaW5lX21vZGVfaXRlcmF0b3IgVjY0X0RJCi0JCSAg ICAgIFtWNjRESV0pCi0KIDsgVmVjdG9yIG1vZGVzIGZvciBzdWItZHdvcmQgbW9kZXMKIChk ZWZpbmVfbW9kZV9pdGVyYXRvciBWX1FJSEkKIAkJICAgICAgW1YyUUkgVjJISQpAQCAtNzcs MTMgKzcyLDYgQEAgKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZfRlBfMVJFRwogCQkgICAgICAg VjMySEYgVjMyU0YKIAkJICAgICAgIFY2NEhGIFY2NFNGXSkKIAotOyBWNjRfKiBtb2RlcyBh cmUgZm9yIHdoZXJlIG1vcmUgZ2VuZXJhbCBzdXBwb3J0IGlzIHVuaW1wbGVtZW50ZWQKLTsg KGUuZy4gcmVkdWN0aW9ucykKLShkZWZpbmVfbW9kZV9pdGVyYXRvciBWNjRfMVJFRwotCQkg ICAgICBbVjY0UUkgVjY0SEkgVjY0U0kgVjY0SEYgVjY0U0ZdKQotKGRlZmluZV9tb2RlX2l0 ZXJhdG9yIFY2NF9JTlRfMVJFRwotCQkgICAgICBbVjY0UUkgVjY0SEkgVjY0U0ldKQotCiA7 IFZlY3RvciBtb2RlcyBmb3IgdHdvIHZlY3RvciByZWdpc3RlcnMKIChkZWZpbmVfbW9kZV9p dGVyYXRvciBWXzJSRUcKIAkJICAgICAgW1YyREkgVjJERgpAQCAtOTMsOSArODEsNiBAQCAo ZGVmaW5lX21vZGVfaXRlcmF0b3IgVl8yUkVHCiAJCSAgICAgICBWMzJESSBWMzJERgogCQkg ICAgICAgVjY0REkgVjY0REZdKQogCi0oZGVmaW5lX21vZGVfaXRlcmF0b3IgVjY0XzJSRUcK LQkJICAgICAgW1Y2NERJIFY2NERGXSkKLQogOyBWZWN0b3IgbW9kZXMgd2l0aCBuYXRpdmUg c3VwcG9ydAogKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZfbm9RSQogCQkgICAgICBbVjJISSBW MkhGIFYyU0kgVjJTRiBWMkRJIFYyREYKQEAgLTE1OCwxMSArMTQzLDYgQEAgKGRlZmluZV9t b2RlX2l0ZXJhdG9yIFZfRlAKIAkJICAgICAgIFYzMkhGIFYzMlNGIFYzMkRGCiAJCSAgICAg ICBWNjRIRiBWNjRTRiBWNjRERl0pCiAKLShkZWZpbmVfbW9kZV9pdGVyYXRvciBWNjRfQUxM Ci0JCSAgICAgIFtWNjRRSSBWNjRISSBWNjRIRiBWNjRTSSBWNjRTRiBWNjRESSBWNjRERl0p Ci0oZGVmaW5lX21vZGVfaXRlcmF0b3IgVjY0X0ZQCi0JCSAgICAgIFtWNjRIRiBWNjRTRiBW NjRERl0pCi0KIChkZWZpbmVfbW9kZV9hdHRyIHNjYWxhcl9tb2RlCiAgIFsoVjJRSSAicWki KSAoVjJISSAiaGkiKSAoVjJTSSAic2kiKQogICAgKFYySEYgImhmIikgKFYyU0YgInNmIikg KFYyREkgImRpIikgKFYyREYgImRmIikKQEAgLTM1MjgsMTUgKzM1MDgsMTYgQEAgKGRlZmlu ZV9pbnRfYXR0ciByZWR1Y19pbnNuIFsoVU5TUEVDX1NNSU5fRFBQX1NIUiAidl9taW4laTAi KQogKGRlZmluZV9leHBhbmQgInJlZHVjXzxyZWR1Y19vcD5fc2NhbF88bW9kZT4iCiAgIFso c2V0IChtYXRjaF9vcGVyYW5kOjxTQ0FMQVJfTU9ERT4gMCAicmVnaXN0ZXJfb3BlcmFuZCIp CiAJKHVuc3BlYzo8U0NBTEFSX01PREU+Ci0JICBbKG1hdGNoX29wZXJhbmQ6VjY0X0FMTCAx ICJyZWdpc3Rlcl9vcGVyYW5kIildCisJICBbKG1hdGNoX29wZXJhbmQ6Vl9BTEwgMSAicmVn aXN0ZXJfb3BlcmFuZCIpXQogCSAgUkVEVUNfVU5TUEVDKSldCiAgICIiCiAgIHsKICAgICBy dHggdG1wID0gZ2NuX2V4cGFuZF9yZWR1Y19zY2FsYXIgKDxNT0RFPm1vZGUsIG9wZXJhbmRz WzFdLAogCQkJCSAgICAgICA8cmVkdWNfdW5zcGVjPik7CiAKLSAgICAvKiBUaGUgcmVzdWx0 IG9mIHRoZSByZWR1Y3Rpb24gaXMgaW4gbGFuZSA2MyBvZiB0bXAuICAqLwotICAgIGVtaXRf aW5zbiAoZ2VuX21vdl9mcm9tX2xhbmU2M188bW9kZT4gKG9wZXJhbmRzWzBdLCB0bXApKTsK KyAgICBydHggbGFzdF9sYW5lID0gR0VOX0lOVCAoR0VUX01PREVfTlVOSVRTICg8TU9ERT5t b2RlKSAtIDEpOworICAgIGVtaXRfaW5zbiAoZ2VuX3ZlY19leHRyYWN0PG1vZGU+PHNjYWxh cl9tb2RlPiAob3BlcmFuZHNbMF0sIHRtcCwKKwkJCQkJCSAgIGxhc3RfbGFuZSkpOwogCiAg ICAgRE9ORTsKICAgfSkKQEAgLTM1NDcsNyArMzUyOCw3IEBAIChkZWZpbmVfZXhwYW5kICJy ZWR1Y188cmVkdWNfb3A+X3NjYWxfPG1vZGU+IgogKGRlZmluZV9leHBhbmQgImZvbGRfbGVm dF9wbHVzXzxtb2RlPiIKICBbKG1hdGNoX29wZXJhbmQ6PFNDQUxBUl9NT0RFPiAwICJyZWdp c3Rlcl9vcGVyYW5kIikKICAgKG1hdGNoX29wZXJhbmQ6PFNDQUxBUl9NT0RFPiAxICJnY25f YWx1X29wZXJhbmQiKQotICAobWF0Y2hfb3BlcmFuZDpWNjRfRlAgMiAiZ2NuX2FsdV9vcGVy YW5kIildCisgIChtYXRjaF9vcGVyYW5kOlZfRlAgMiAiZ2NuX2FsdV9vcGVyYW5kIildCiAg ICJjYW5fY3JlYXRlX3BzZXVkb19wICgpCiAgICAmJiAoZmxhZ19vcGVuYWNjIHx8IGZsYWdf b3Blbm1wCiAgICAgICAgfHwgZmxhZ19hc3NvY2lhdGl2ZV9tYXRoKSIKQEAgLTM1NjMsMTEg KzM1NDQsMTEgQEAgKGRlZmluZV9leHBhbmQgImZvbGRfbGVmdF9wbHVzXzxtb2RlPiIKICAg IH0pCiAKIChkZWZpbmVfaW5zbiAiKjxyZWR1Y19vcD5fZHBwX3Nocl88bW9kZT4iCi0gIFso c2V0IChtYXRjaF9vcGVyYW5kOlY2NF8xUkVHIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgIj12 IikKLQkodW5zcGVjOlY2NF8xUkVHCi0JICBbKG1hdGNoX29wZXJhbmQ6VjY0XzFSRUcgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotCSAgIChtYXRjaF9vcGVyYW5kOlY2NF8xUkVHIDIg InJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLQkgICAobWF0Y2hfb3BlcmFuZDpTSSAzICJjb25z dF9pbnRfb3BlcmFuZCIgICAgICAibiIpXQorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWXzFS RUcgMCAicmVnaXN0ZXJfb3BlcmFuZCIgICAiPXYiKQorCSh1bnNwZWM6Vl8xUkVHCisJICBb KG1hdGNoX29wZXJhbmQ6Vl8xUkVHIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKwkgICAo bWF0Y2hfb3BlcmFuZDpWXzFSRUcgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorCSAgICht YXRjaF9vcGVyYW5kOlNJIDMgImNvbnN0X2ludF9vcGVyYW5kIiAgICAgICAgIm4iKV0KIAkg IFJFRFVDX1VOU1BFQykpXQogICA7IEdDTjMgcmVxdWlyZXMgYSBjYXJyeSBvdXQsIEdDTjUg bm90CiAgICIhKFRBUkdFVF9HQ04zICYmIFNDQUxBUl9JTlRfTU9ERV9QICg8U0NBTEFSX01P REU+bW9kZSkKQEAgLTM1ODAsMTEgKzM1NjEsMTEgQEAgKGRlZmluZV9pbnNuICIqPHJlZHVj X29wPl9kcHBfc2hyXzxtb2RlPiIKICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiOCIpXSkKIAog KGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKjxyZWR1Y19vcD5fZHBwX3Nocl88bW9kZT4iCi0g IFsoc2V0IChtYXRjaF9vcGVyYW5kOlY2NF9ESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAi PXYiKQotCSh1bnNwZWM6VjY0X0RJCi0JICBbKG1hdGNoX29wZXJhbmQ6VjY0X0RJIDEgInJl Z2lzdGVyX29wZXJhbmQiICJ2IikKLQkgICAobWF0Y2hfb3BlcmFuZDpWNjRfREkgMiAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKQotCSAgIChtYXRjaF9vcGVyYW5kOlNJIDMgImNvbnN0X2lu dF9vcGVyYW5kIiAgICAibiIpXQorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX0RJIDAgInJl Z2lzdGVyX29wZXJhbmQiICAgICI9diIpCisJKHVuc3BlYzpWX0RJCisJICBbKG1hdGNoX29w ZXJhbmQ6Vl9ESSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisJICAgKG1hdGNoX29wZXJh bmQ6Vl9ESSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisJICAgKG1hdGNoX29wZXJhbmQ6 U0kgMyAiY29uc3RfaW50X29wZXJhbmQiICAibiIpXQogCSAgUkVEVUNfMlJFR19VTlNQRUMp KV0KICAgIiIKICAgIiMiCkBAIC0zNjA5LDEwICszNTkwLDEwIEBAIChkZWZpbmVfaW5zbl9h bmRfc3BsaXQgIio8cmVkdWNfb3A+X2RwcF9zaHJfPG1vZGU+IgogOyBTcGVjaWFsIGNhc2Vz IGZvciBhZGRpdGlvbi4KIAogKGRlZmluZV9pbnNuICIqcGx1c19jYXJyeV9kcHBfc2hyXzxt b2RlPiIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjY0X0lOVF8xUkVHIDAgInJlZ2lzdGVy X29wZXJhbmQiICAgIj12IikKLQkodW5zcGVjOlY2NF9JTlRfMVJFRwotCSAgWyhtYXRjaF9v cGVyYW5kOlY2NF9JTlRfMVJFRyAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0JICAgKG1h dGNoX29wZXJhbmQ6VjY0X0lOVF8xUkVHIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9JTlRfMVJFRyAwICJyZWdpc3Rlcl9vcGVyYW5kIiAg ICI9diIpCisJKHVuc3BlYzpWX0lOVF8xUkVHCisJICBbKG1hdGNoX29wZXJhbmQ6Vl9JTlRf MVJFRyAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisJICAgKG1hdGNoX29wZXJhbmQ6Vl9J TlRfMVJFRyAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCiAJICAgKG1hdGNoX29wZXJhbmQ6 U0kgMyAiY29uc3RfaW50X29wZXJhbmQiCSAgIm4iKV0KIAkgIFVOU1BFQ19QTFVTX0NBUlJZ X0RQUF9TSFIpKQogICAgKGNsb2JiZXIgKHJlZzpESSBWQ0NfUkVHKSldCkBAIC0zNjI2LDEy ICszNjA3LDEyIEBAIChkZWZpbmVfaW5zbiAiKnBsdXNfY2FycnlfZHBwX3Nocl88bW9kZT4i CiAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjgiKV0pCiAKIChkZWZpbmVfaW5zbiAiKnBsdXNf Y2FycnlfaW5fZHBwX3Nocl88bW9kZT4iCi0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY2NF9T SSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAiPXYiKQotCSh1bnNwZWM6VjY0X1NJCi0JICBb KG1hdGNoX29wZXJhbmQ6VjY0X1NJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLQkgICAo bWF0Y2hfb3BlcmFuZDpWNjRfU0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotCSAgICht YXRjaF9vcGVyYW5kOlNJIDMgImNvbnN0X2ludF9vcGVyYW5kIiAgICAibiIpCi0JICAgKG1h dGNoX29wZXJhbmQ6REkgNCAicmVnaXN0ZXJfb3BlcmFuZCIgICAgICJjViIpXQorICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWX1NJIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICI9diIpCisJ KHVuc3BlYzpWX1NJCisJICBbKG1hdGNoX29wZXJhbmQ6Vl9TSSAxICJyZWdpc3Rlcl9vcGVy YW5kIiAidiIpCisJICAgKG1hdGNoX29wZXJhbmQ6Vl9TSSAyICJyZWdpc3Rlcl9vcGVyYW5k IiAidiIpCisJICAgKG1hdGNoX29wZXJhbmQ6U0kgMyAiY29uc3RfaW50X29wZXJhbmQiICAi biIpCisJICAgKG1hdGNoX29wZXJhbmQ6REkgNCAicmVnaXN0ZXJfb3BlcmFuZCIgICAiY1Yi KV0KIAkgIFVOU1BFQ19QTFVTX0NBUlJZX0lOX0RQUF9TSFIpKQogICAgKGNsb2JiZXIgKHJl ZzpESSBWQ0NfUkVHKSldCiAgICIiCkBAIC0zNjQ0LDExICszNjI1LDExIEBAIChkZWZpbmVf aW5zbiAiKnBsdXNfY2FycnlfaW5fZHBwX3Nocl88bW9kZT4iCiAgICAoc2V0X2F0dHIgImxl bmd0aCIgIjgiKV0pCiAKIChkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIipwbHVzX2NhcnJ5X2Rw cF9zaHJfPG1vZGU+IgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNjRfREkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgICAgIj12IikKLQkodW5zcGVjOlY2NF9ESQotCSAgWyhtYXRjaF9vcGVy YW5kOlY2NF9ESSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0JICAgKG1hdGNoX29wZXJh bmQ6VjY0X0RJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLQkgICAobWF0Y2hfb3BlcmFu ZDpTSSAzICJjb25zdF9pbnRfb3BlcmFuZCIgICAgIm4iKV0KKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6Vl9ESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAiPXYiKQorCSh1bnNwZWM6Vl9E SQorCSAgWyhtYXRjaF9vcGVyYW5kOlZfREkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQor CSAgIChtYXRjaF9vcGVyYW5kOlZfREkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorCSAg IChtYXRjaF9vcGVyYW5kOlNJIDMgImNvbnN0X2ludF9vcGVyYW5kIiAgIm4iKV0KIAkgIFVO U1BFQ19QTFVTX0NBUlJZX0RQUF9TSFIpKQogICAgKGNsb2JiZXIgKHJlZzpESSBWQ0NfUkVH KSldCiAgICIiCkBAIC0zNjc1LDM4ICszNjU2LDYgQEAgKGRlZmluZV9pbnNuX2FuZF9zcGxp dCAiKnBsdXNfY2FycnlfZHBwX3Nocl88bW9kZT4iCiAgIFsoc2V0X2F0dHIgInR5cGUiICJ2 bXVsdCIpCiAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjE2IildKQogCi07IEluc3RydWN0aW9u cyB0byBtb3ZlIGEgc2NhbGFyIHZhbHVlIGZyb20gbGFuZSA2MyBvZiBhIHZlY3RvciByZWdp c3Rlci4KLShkZWZpbmVfaW5zbiAibW92X2Zyb21fbGFuZTYzXzxtb2RlPiIKLSAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6PFNDQUxBUl9NT0RFPiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPVNn LHYiKQotCSh1bnNwZWM6PFNDQUxBUl9NT0RFPgotCSAgWyhtYXRjaF9vcGVyYW5kOlY2NF8x UkVHIDEgInJlZ2lzdGVyX29wZXJhbmQiCSAgIiAgdix2IildCi0JICBVTlNQRUNfTU9WX0ZS T01fTEFORTYzKSldCi0gICIiCi0gICJACi0gICB2X3JlYWRsYW5lX2IzMlx0JTAsICUxLCA2 MwotICAgdl9tb3ZfYjMyXHQlMCwgJTEgd2F2ZV9yb3I6MSIKLSAgWyhzZXRfYXR0ciAidHlw ZSIgInZvcDNhLHZvcF9kcHAiKQotICAgKHNldF9hdHRyICJleGVjIiAibm9uZSwqIikKLSAg IChzZXRfYXR0ciAibGVuZ3RoIiAiOCIpXSkKLQotKGRlZmluZV9pbnNuICJtb3ZfZnJvbV9s YW5lNjNfPG1vZGU+IgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8U0NBTEFSX01PREU+IDAg InJlZ2lzdGVyX29wZXJhbmQiICI9U2csdiIpCi0JKHVuc3BlYzo8U0NBTEFSX01PREU+Ci0J ICBbKG1hdGNoX29wZXJhbmQ6VjY0XzJSRUcgMSAicmVnaXN0ZXJfb3BlcmFuZCIJICAiICB2 LHYiKV0KLQkgIFVOU1BFQ19NT1ZfRlJPTV9MQU5FNjMpKV0KLSAgIiIKLSAgIkAKLSAgIHZf cmVhZGxhbmVfYjMyXHQlTDAsICVMMSwgNjNcO3ZfcmVhZGxhbmVfYjMyXHQlSDAsICVIMSwg NjMKLSAgICogaWYgKFJFR05PIChvcGVyYW5kc1swXSkgPD0gUkVHTk8gKG9wZXJhbmRzWzFd KSkJXAotICAgICAgIHJldHVybiBcInZfbW92X2IzMlx0JUwwLCAlTDEgd2F2ZV9yb3I6MVw7 XCIJXAotCSAgICAgIFwidl9tb3ZfYjMyXHQlSDAsICVIMSB3YXZlX3JvcjoxXCI7CVwKLSAg ICAgZWxzZQkJCQkJCVwKLSAgICAgICByZXR1cm4gXCJ2X21vdl9iMzJcdCVIMCwgJUgxIHdh dmVfcm9yOjFcO1wiCVwKLQkgICAgICBcInZfbW92X2IzMlx0JUwwLCAlTDEgd2F2ZV9yb3I6 MVwiOyIKLSAgWyhzZXRfYXR0ciAidHlwZSIgInZvcDNhLHZvcF9kcHAiKQotICAgKHNldF9h dHRyICJleGVjIiAibm9uZSwqIikKLSAgIChzZXRfYXR0ciAibGVuZ3RoIiAiOCIpXSkKLQog OzsgfX19CiA7OyB7e3sgTWlzY2VsbGFuZW91cwogCmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2djbi9nY24uY2MgYi9nY2MvY29uZmlnL2djbi9nY24uY2MKaW5kZXggYTU2MTk3NmQ3ZjUu LmI5ZDkxNzBmMTY3IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2djbi9nY24uY2MKKysrIGIv Z2NjL2NvbmZpZy9nY24vZ2NuLmNjCkBAIC00OTE4LDIzICs0OTE4LDI1IEBAIGdjbl9leHBh bmRfZHBwX3Nocl9pbnNuIChtYWNoaW5lX21vZGUgbW9kZSwgY29uc3QgY2hhciAqaW5zbiwK IAogICAgVGhlIHZlY3RvciByZWdpc3RlciBTUkMgb2YgbW9kZSBNT0RFIGlzIHJlZHVjZWQg dXNpbmcgdGhlIG9wZXJhdGlvbiBnaXZlbgogICAgYnkgVU5TUEVDLCBhbmQgdGhlIHNjYWxh ciByZXN1bHQgaXMgcmV0dXJuZWQgaW4gbGFuZSA2MyBvZiBhIHZlY3RvcgotICAgcmVnaXN0 ZXIuICAqLwotLyogRklYTUU6IEltcGxlbWVudCByZWR1Y3Rpb25zIGZvciBzaXplcyBvdGhl ciB0aGFuIFY2NC4KLSAgICAgICAgICAoVGhleSdyZSBjdXJyZW50bHkgZGlzYWJsZWQgaW4g dGhlIG1hY2hpbmUgZGVzY3JpcHRpb24uKSAgKi8KKyAgIHJlZ2lzdGVyIChvciBsYW5lIDMx LCAxNSwgNywgMywgMSBmb3IgcGFydGlhbCB2ZWN0b3JzKS4gICovCiAKIHJ0eAogZ2NuX2V4 cGFuZF9yZWR1Y19zY2FsYXIgKG1hY2hpbmVfbW9kZSBtb2RlLCBydHggc3JjLCBpbnQgdW5z cGVjKQogewogICBtYWNoaW5lX21vZGUgb3JpZ19tb2RlID0gbW9kZTsKKyAgbWFjaGluZV9t b2RlIHNjYWxhcl9tb2RlID0gR0VUX01PREVfSU5ORVIgKG1vZGUpOworICBpbnQgdmYgPSBH RVRfTU9ERV9OVU5JVFMgKG1vZGUpOwogICBib29sIHVzZV9tb3ZlcyA9ICgoKHVuc3BlYyA9 PSBVTlNQRUNfU01JTl9EUFBfU0hSCisJCSAgICAgIHx8IHVuc3BlYyA9PSBVTlNQRUNfU01J Tl9EUFBfU0hSCiAJCSAgICAgIHx8IHVuc3BlYyA9PSBVTlNQRUNfU01BWF9EUFBfU0hSCiAJ CSAgICAgIHx8IHVuc3BlYyA9PSBVTlNQRUNfVU1JTl9EUFBfU0hSCiAJCSAgICAgIHx8IHVu c3BlYyA9PSBVTlNQRUNfVU1BWF9EUFBfU0hSKQotCQkgICAgICYmIChtb2RlID09IFY2NERJ bW9kZQotCQkJIHx8IG1vZGUgPT0gVjY0REZtb2RlKSkKKwkJICAgICAmJiAoc2NhbGFyX21v ZGUgPT0gREltb2RlCisJCQkgfHwgc2NhbGFyX21vZGUgPT0gREZtb2RlKSkKIAkJICAgIHx8 ICh1bnNwZWMgPT0gVU5TUEVDX1BMVVNfRFBQX1NIUgotCQkJJiYgbW9kZSA9PSBWNjRERm1v ZGUpKTsKKwkJCSYmIHNjYWxhcl9tb2RlID09IERGbW9kZSkpOwogICBydHhfY29kZSBjb2Rl ID0gKHVuc3BlYyA9PSBVTlNQRUNfU01JTl9EUFBfU0hSID8gU01JTgorCQkgICA6IHVuc3Bl YyA9PSBVTlNQRUNfU01JTl9EUFBfU0hSID8gU01JTgogCQkgICA6IHVuc3BlYyA9PSBVTlNQ RUNfU01BWF9EUFBfU0hSID8gU01BWAogCQkgICA6IHVuc3BlYyA9PSBVTlNQRUNfVU1JTl9E UFBfU0hSID8gVU1JTgogCQkgICA6IHVuc3BlYyA9PSBVTlNQRUNfVU1BWF9EUFBfU0hSID8g VU1BWApAQCAtNDk0NCwyMyArNDk0NiwyMyBAQCBnY25fZXhwYW5kX3JlZHVjX3NjYWxhciAo bWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBzcmMsIGludCB1bnNwZWMpCiAJCSAgICAgICB8fCB1 bnNwZWMgPT0gVU5TUEVDX1NNQVhfRFBQX1NIUgogCQkgICAgICAgfHwgdW5zcGVjID09IFVO U1BFQ19VTUlOX0RQUF9TSFIKIAkJICAgICAgIHx8IHVuc3BlYyA9PSBVTlNQRUNfVU1BWF9E UFBfU0hSKQotCQkgICAgICAmJiAobW9kZSA9PSBWNjRRSW1vZGUKLQkJCSAgfHwgbW9kZSA9 PSBWNjRISW1vZGUpKTsKKwkJICAgICAgJiYgKHNjYWxhcl9tb2RlID09IFFJbW9kZQorCQkJ ICB8fCBzY2FsYXJfbW9kZSA9PSBISW1vZGUpKTsKICAgYm9vbCB1bnNpZ25lZHAgPSAodW5z cGVjID09IFVOU1BFQ19VTUlOX0RQUF9TSFIKIAkJICAgIHx8IHVuc3BlYyA9PSBVTlNQRUNf VU1BWF9EUFBfU0hSKTsKICAgYm9vbCB1c2VfcGx1c19jYXJyeSA9IHVuc3BlYyA9PSBVTlNQ RUNfUExVU19EUFBfU0hSCiAJCQkmJiBHRVRfTU9ERV9DTEFTUyAobW9kZSkgPT0gTU9ERV9W RUNUT1JfSU5UCi0JCQkmJiAoVEFSR0VUX0dDTjMgfHwgbW9kZSA9PSBWNjRESW1vZGUpOwor CQkJJiYgKFRBUkdFVF9HQ04zIHx8IHNjYWxhcl9tb2RlID09IERJbW9kZSk7CiAKICAgaWYg KHVzZV9wbHVzX2NhcnJ5KQogICAgIHVuc3BlYyA9IFVOU1BFQ19QTFVTX0NBUlJZX0RQUF9T SFI7CiAKICAgaWYgKHVzZV9leHRlbmRzKQogICAgIHsKLSAgICAgIHJ0eCB0bXAgPSBnZW5f cmVnX3J0eCAoVjY0U0ltb2RlKTsKKyAgICAgIG1vZGUgPSBWbk1PREUgKHZmLCBTSW1vZGUp OworICAgICAgcnR4IHRtcCA9IGdlbl9yZWdfcnR4IChtb2RlKTsKICAgICAgIGNvbnZlcnRf bW92ZSAodG1wLCBzcmMsIHVuc2lnbmVkcCk7CiAgICAgICBzcmMgPSB0bXA7Ci0gICAgICBt b2RlID0gVjY0U0ltb2RlOwogICAgIH0KIAogICAvKiBQZXJmb3JtIHJlZHVjdGlvbiBieSBm aXJzdCBwZXJmb3JtaW5nIHRoZSByZWR1Y3Rpb24gb3BlcmF0aW9uIG9uIGV2ZXJ5CkBAIC00 OTY4LDcgKzQ5NzAsOCBAQCBnY25fZXhwYW5kX3JlZHVjX3NjYWxhciAobWFjaGluZV9tb2Rl IG1vZGUsIHJ0eCBzcmMsIGludCB1bnNwZWMpCiAgICAgIGl0ZXJhdGlvbiAodGhlcmVieSBl ZmZlY3RpdmVseSByZWR1Y2luZyBldmVyeSA0IGxhbmVzKSBhbmQgc28gb24gdW50aWwKICAg ICAgYWxsIGxhbmVzIGFyZSByZWR1Y2VkLiAgKi8KICAgcnR4IGluLCBvdXQgPSBmb3JjZV9y ZWcgKG1vZGUsIHNyYyk7Ci0gIGZvciAoaW50IGkgPSAwLCBzaGlmdCA9IDE7IGkgPCA2OyBp KyssIHNoaWZ0IDw8PSAxKQorICBpbnQgaXRlcmF0aW9ucyA9IGV4YWN0X2xvZzIgKHZmKTsK KyAgZm9yIChpbnQgaSA9IDAsIHNoaWZ0ID0gMTsgaSA8IGl0ZXJhdGlvbnM7IGkrKywgc2hp ZnQgPDw9IDEpCiAgICAgewogICAgICAgcnR4IHNoaWZ0X3ZhbCA9IGdlbl9ydHhfQ09OU1Rf SU5UIChWT0lEbW9kZSwgc2hpZnQpOwogICAgICAgaW4gPSBvdXQ7CmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL2djbi9nY24ubWQgYi9nY2MvY29uZmlnL2djbi9nY24ubWQKaW5kZXggYTNj OTUyM2NkNmQuLjZjMWE0MzhmOWQxIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2djbi9nY24u bWQKKysrIGIvZ2NjL2NvbmZpZy9nY24vZ2NuLm1kCkBAIC03OCw3ICs3OCw2IEBAIChkZWZp bmVfY19lbnVtICJ1bnNwZWMiIFsKICAgVU5TUEVDX1BMVVNfQ0FSUllfRFBQX1NIUiBVTlNQ RUNfUExVU19DQVJSWV9JTl9EUFBfU0hSCiAgIFVOU1BFQ19BTkRfRFBQX1NIUiBVTlNQRUNf SU9SX0RQUF9TSFIgVU5TUEVDX1hPUl9EUFBfU0hSCiAgIFVOU1BFQ19NT1ZfRFBQX1NIUgot ICBVTlNQRUNfTU9WX0ZST01fTEFORTYzCiAgIFVOU1BFQ19HQVRIRVIKICAgVU5TUEVDX1ND QVRURVIKICAgVU5TUEVDX1JDUAo= --------------MQTzWZwW0O05BrhgM0yLSW0g--