From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qv1-xf2a.google.com (mail-qv1-xf2a.google.com [IPv6:2607:f8b0:4864:20::f2a]) by sourceware.org (Postfix) with ESMTPS id 4949E3860C33 for ; Wed, 9 Sep 2020 15:51:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 4949E3860C33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=bell-sw.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=anton.youdkevitch@bell-sw.com Received: by mail-qv1-xf2a.google.com with SMTP id ef16so1739628qvb.8 for ; Wed, 09 Sep 2020 08:51:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bell-sw-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=9YdA9/xnnOia2y+AgWOkNiSXEQrF4synmBgb7daDa98=; b=M6dvlWNs6nNiXfKPKI83ctfQwoBgQ2buBaKcwIAmoc7cSviVbrSrJ0FYkNqYVYGPae oc8to63gHHM1eYVSfYiSuGcYlOe5rG7PzMKoiu1FzWRS7Zu1wbwCuc+e2Nd9OmxmiXXh oFHpCJ/zZPoz0DAaCf2mfXHdtElrz/DvskcPBZTSbUHzKIjkwa7DxqL55yLfmYoV95Mc 0AE7bGfVRpvu9e3cJZ/x/cyWi6wetfcrddlbVGg6jV3YnkwOvN1tl1NqgvaMbbD0rQdQ SbaQ3SBqqi5dk7mkHvf+/GT8WN5WT1kBlxkXgVOP7qWtA4opIr8VcMk9o5IEd8MUAdwI eFsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=9YdA9/xnnOia2y+AgWOkNiSXEQrF4synmBgb7daDa98=; b=NBRj4YxJK96Bn2eExe2jXkNxZUQKanN0PysjbVGl37EDU6m8vzlHP5iUSTppKRsZh5 TYLat4sDtOqLaK5NR2riUHNxbsFApHLyWWZp7wctpyEecOmh0D91BeKbCss6Pvg1ammB m3zIQXCXyEKrpOZpKOpSxVmxoBPxLZFcI+6nAbTZ7En8EEQf0ZElc3Su84dk7m0UsMpL 703KR1yMa/AnpENlEBPuiXKUe2pgfaf61f4Lar15xQ2aiBN9zdPbrFmvQ5n3suQyD2Vf 5R7HAiepFW6x0xgLzsdnLPdth0j+whcT/tnizPVeVzoyk9zIHBPgXvszU/WMFhkDKXR3 vDEw== X-Gm-Message-State: AOAM533x6zAkiMOYuyAT1G7Rb6pGKM2Ns6GAe2wVTs+s5Q/TjZedSa20 YdRH+vR0UDEk6XFdF8ubNinMdEUzOsuJVvgZSHoGmmJ1VawR8Svw X-Google-Smtp-Source: ABdhPJwwzHFBDh2+WydGBpPpp6sQ/TpkhwaJYRgLi/1kXBK3mqCq/KSmb+7jHgxONjHBtZPDw1qIrHcN3R235DzoCmc= X-Received: by 2002:a0c:b92f:: with SMTP id u47mr4755697qvf.24.1599666669615; Wed, 09 Sep 2020 08:51:09 -0700 (PDT) MIME-Version: 1.0 From: Anton Youdkevitch Date: Wed, 9 Sep 2020 17:50:57 +0200 Message-ID: Subject: [RFC] Aarch64: Replace nested FP min/max with conditionals for TX2 To: GCC Patches Content-Type: multipart/mixed; boundary="0000000000009a307205aee36be5" X-Spam-Status: No, score=-6.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, HTML_MESSAGE, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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: Wed, 09 Sep 2020 15:51:12 -0000 --0000000000009a307205aee36be5 Content-Type: text/plain; charset="UTF-8" ThunderxT2 chip has an odd property that nested scalar FP min and max are slower than logically the same sequence of compares and branches. Here is the patch where I'm trying to implement that transformation. Please advise if the "combine" pass (actually after the pass itself) is the appropriate place to do this. I was considering the possibility to implement this in aarch64.md (which would be much cleaner) but didn't manage to figure out how to make fmin/fmax survive until later passes and replace them only then. -- Thanks, Anton --0000000000009a307205aee36be5 Content-Type: application/octet-stream; name="0001-WIP-MIN-to-conditionals-1.patch" Content-Disposition: attachment; filename="0001-WIP-MIN-to-conditionals-1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kevk06040 RnJvbSBmZDE1ZjQ4YTRjMmNmYzNjZjUxZjk0MWI5NTU1ODYyOTc2OGMxZGU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbiBZb3Vka2V2aXRjaCA8YW50b24ueW91ZGtldml0Y2hA YmVsbC1zdy5jb20+CkRhdGU6IFR1ZSwgOCBTZXAgMjAyMCAwNjowNzo1NCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0hdIFdJUCBNSU4gdG8gY29uZGl0aW9uYWxzCgpUcnlpbmcgdG8gcmV2ZXJ0IG5lc3Rl ZCBtaW5zIGNvbmRpdGlvbmFscyBhdApsYXRlciBydGwgcGFzc2VzLgoKRGlzYWJsZWQgY21vdmUg Y29udmVyc2lvbiBvZiBjb25kaXRpb25hbHMgaWYKYSBjb25kaXRpb25hbCBvcGVyYXRlcyBvbiBG UCB0eXBlcy4KCkFkZGVkIHRhcmdldCBob29rIHRvIHF1ZXJ5IGlmIHRoZSBtYWNoaW5lCmJlbmVm aXRzIGZyb20gdXNpbmcgdGhpcyB0cmFuc29mb3JtYXRpb24uCgpDcmVhdGVkIG5ldyBleHRyYSB0 dW5lIGZsYWcgQUFSQ0g2NF9FWFRSQV9UVU5JTkdfTUlOTUFYX1RPX0NPTkQKYW5kIGFkZGVkIGl0 IHRvIFRYMiB0dW5pbmcgZmxhZ3MuCgpBZGRlZCBuZXcgLW1taW5tYXgtdG8tY29uZCB0YXJnZXQg ZmxhZy4KCkltcGxlbWVudGVkIGFhcmNoNjQgdGFyZ2V0IGhvb2sgdG8gZm9yClRBUkdFVF9NSU5N QVhfVE9fQ09ORF9QUk9GSVRBQkxFX1AuCi0tLQogZ2NjL2NvbWJpbmUuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDE0MCArKysrKysrKysrKysrKysrKysrKysrKysrKystCiBnY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC10dW5pbmctZmxhZ3MuZGVmIHwgICAyICsKIGdjYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LmMgICAgICAgICAgICAgICAgfCAgMTMgKystCiBnY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC5vcHQgICAgICAgICAgICAgIHwgICA0ICsKIGdjYy9kb2MvdG0udGV4 aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogZ2NjL2RvYy90bS50ZXhpLmlu ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBnY2MvaWZjdnQuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrKwogZ2NjL3RhcmdldC5kZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNyArKwogOCBmaWxlcyBjaGFuZ2VkLCAxODUgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvY29tYmluZS5jIGIvZ2Nj L2NvbWJpbmUuYwppbmRleCA0ZmVlMTE0Li5mNDNlMWVjIDEwMDY0NAotLS0gYS9nY2MvY29tYmlu ZS5jCisrKyBiL2djYy9jb21iaW5lLmMKQEAgLTQ5NSw4ICs0OTUsOSBAQCBzdGF0aWMgYm9vbCB1 bm1lbnRpb25lZF9yZWdfcCAocnR4LCBydHgpOwogc3RhdGljIHZvaWQgcmVjb3JkX3RydW5jYXRl ZF92YWx1ZXMgKHJ0eCAqLCB2b2lkICopOwogc3RhdGljIGJvb2wgcmVnX3RydW5jYXRlZF90b19t b2RlIChtYWNoaW5lX21vZGUsIGNvbnN0X3J0eCk7CiBzdGF0aWMgcnR4IGdlbl9sb3dwYXJ0X29y X3RydW5jYXRlIChtYWNoaW5lX21vZGUsIHJ0eCk7Ci0MCitzdGF0aWMgdm9pZCBzdWJzdF9taW5t YXhfd2l0aF9jb25kKCk7CiAKKwwKIC8qIEl0IGlzIG5vdCBzYWZlIHRvIHVzZSBvcmRpbmFyeSBn ZW5fbG93cGFydCBpbiBjb21iaW5lLgogICAgU2VlIGNvbW1lbnRzIGluIGdlbl9sb3dwYXJ0X2Zv cl9jb21iaW5lLiAgKi8KICN1bmRlZiBSVExfSE9PS1NfR0VOX0xPV1BBUlQKQEAgLTE1MzIsNiAr MTUzMywxMiBAQCByZXRyeToKICAgZGVmYXVsdF9ydGxfcHJvZmlsZSAoKTsKICAgY2xlYXJfYmJf ZmxhZ3MgKCk7CiAgIG5ld19kaXJlY3RfanVtcF9wIHw9IHB1cmdlX2FsbF9kZWFkX2VkZ2VzICgp OworCisgIC8qIHRoZSB3YXkgdGhlIGVkZ2VzIGFyZSBjcmVhdGVkIHdoaWxlIGRvaW5nIHN1YnN0 CisgICAgIG1pbi9tYXggbWFrZXMgdGhlIG9wdGltaXplciBwdXJnZSBGVCBibG9ja3MgKi8KKyAg aWYgKCB0YXJnZXRtLm1pbm1heF90b19jb25kX3Byb2ZpdGFibGVfcCAoKSkKKyAgICBzdWJzdF9t aW5tYXhfd2l0aF9jb25kICgpOworCiAgIG5ld19kaXJlY3RfanVtcF9wIHw9IGRlbGV0ZV9ub29w X21vdmVzICgpOwogCiAgIC8qIENsZWFuIHVwLiAgKi8KQEAgLTY0NzYsNiArNjQ4MywxMzcgQEAg Y29tYmluZV9zaW1wbGlmeV9ydHggKHJ0eCB4LCBtYWNoaW5lX21vZGUgb3AwX21vZGUsIGludCBp bl9kZXN0LAogICByZXR1cm4geDsKIH0KIAwKKworc3RhdGljIHZvaWQKK3N1YnN0X21pbm1heF93 aXRoX2NvbmQoKQoreworICBiYXNpY19ibG9jayBiYjsKKworICBGT1JfRUFDSF9CQl9SRVZFUlNF X0ZOIChiYiwgY2Z1bikKKyAgICB7CisgICAgICBydHhfaW5zbiAqaW5zbiwgKm5leHQ7CisKKyAg ICAgIGZvciAoaW5zbiA9IEJCX0hFQUQgKGJiKTsgaW5zbiAhPSBORVhUX0lOU04gKEJCX0VORCAo YmIpKTsgaW5zbiA9IG5leHQpCisJeworCSAgbmV4dCA9IE5FWFRfSU5TTiAoaW5zbik7CisJICBp ZiAoIU5PTkpVTVBfSU5TTl9QIChpbnNuKSB8fCBpbnNuLT5kZWxldGVkICgpCisJICAgICAgfHwg R0VUX0NPREUgKFBBVFRFUk4gKGluc24pKSAhPSBTRVQKKwkgICAgICB8fCAhU0NBTEFSX0ZMT0FU X01PREVfUCAoR0VUX01PREUgKFNFVF9TUkMgKFBBVFRFUk4gKGluc24pKSkpKQorCSAgICBjb250 aW51ZTsKKworCSAgcnR4IHggPSBTRVRfU1JDIChQQVRURVJOIChpbnNuKSk7CisJICBydHhfY29k ZSBjb2RlMSA9IEdFVF9DT0RFICh4KTsKKworCSAgaWYgKGNvZGUxICE9IFNNSU4gJiYgY29kZTEg IT0gVU1JTiAmJgorCSAgICAgIGNvZGUxICE9IFNNQVggJiYgY29kZTEgIT0gVU1BWCkKKwkgICAg Y29udGludWU7CisKKwkgIHJ0eF9pbnNuICp1c2UgPSBOVUxMOworCisJICBpZiAoIWZpbmRfc2lu Z2xlX3VzZSAoU0VUX0RFU1QgKFBBVFRFUk4gKGluc24pKSwgaW5zbiwgJnVzZSkpCisJICAgIGNv bnRpbnVlOworCisJICBydHhfY29kZSBjb2RlMiA9IEdFVF9DT0RFIChTRVRfU1JDIChQQVRURVJO ICh1c2UpKSk7CisKKwkgIGlmIChjb2RlMiAhPSBTTUlOICYmIGNvZGUyICE9IFVNSU4gJiYKKwkg ICAgICBjb2RlMiAhPSBTTUFYICYmIGNvZGUyICE9IFVNQVgpCisJICAgIGNvbnRpbnVlOworCisJ ICBib29sIHNpZ25lZDEgPSAoY29kZTEgPT0gU01JTiB8fCBjb2RlMSA9PSBTTUFYKTsKKwkgIGJv b2wgc2lnbmVkMiA9IChjb2RlMiA9PSBTTUlOIHx8IGNvZGUyID09IFNNQVgpOworCisJICBpZiAo c2lnbmVkMSAhPSBzaWduZWQyKQorCSAgICBjb250aW51ZTsKKworCSAgcnR4IGEgPSBYRVhQICh4 LCAwKTsKKwkgIHJ0eCBiID0gWEVYUCAoeCwgMSk7CisJICBydHggYyA9IFhFWFAgKFNFVF9TUkMg KFBBVFRFUk4gKHVzZSkpLCAxKTsKKworCSAgaWYgKEdFVF9DT0RFIChhKSAhPSBSRUcgfHwgR0VU X0NPREUgKGIpICE9IFJFRworCSAgICAgIHx8IEdFVF9DT0RFIChjKSAhPSBSRUcpCisJICAgIGNv bnRpbnVlOworCisJICBydHhfY29kZV9sYWJlbCAqbGFiMTsKKwkgIHJ0eF9pbnNuICppajEsICpp ajI7CisJICBydHggcmVzID0gZ2VuX3JlZ19ydHggKEdFVF9NT0RFIChhKSk7CisJICBiYXNpY19i bG9jayBiYjEgPSBiYjsKKworCSAgLyoKKwkgICBCQjEKKwkgICAgIG1vdiByZXMsIGEKKwkgICAg IGNtcCByZXMsYgorCSAgICAgYi5ndCBsMQorCSAgIEJCMgorICAgICAgICAgICAgIGwxOgorICAg ICAgICAgICAgIG1vdiByZXMsIGIKKyAgICAgICAgICAgQkIzIChmYWxsdHJvdWdoIGZyb20gQkIp CisgICAgICAgICAgICAgY21wIHJlcywgYgorICAgICAgICAgICAgIGIuZ3QgbDIKKyAgICAgICAg ICAgQkI0CisgICAgICAgICAgICAgbDI6CisgICAgICAgICAgICAgbW92IHJlcywgYworICAgICAg ICAgICBCQjUgKGZhbGx0cm91Z2ggZnJvbSBCQjMpCisgICAgICAgICAgICAgbW92IHJldCwgcmVz CisJICAgKi8KKwkgIHN0YXJ0X3NlcXVlbmNlICgpOworCSAgZW1pdF9tb3ZlX2luc24gKHJlcywg YSk7CisKKwkgIG1hY2hpbmVfbW9kZSBjY19tb2RlID0gU0VMRUNUX0NDX01PREUgKEdULCByZXMs IGEpOworCSAgcnR4IGNjX3JlZyA9IGdlbl9ydHhfUkVHIChjY19tb2RlLCBDQ19SRUdOVU0pOwor CSAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoY2NfcmVnLCBnZW5fcnR4X0NPTVBBUkUgKGNjX21v ZGUsIHJlcywgYikpKTsKKwkgIGxhYjEgPSBnZW5fbGFiZWxfcnR4ICgpOworCSAgcnR4IHo7CisJ ICBpZiAoY29kZTEgPT0gU01JTiB8fCBjb2RlMSA9PSBVTUlOKQorCSAgICB6ID0gZ2VuX3J0eF9H VCAoVk9JRG1vZGUsIGNjX3JlZywgY29uc3QwX3J0eCk7CisJICBlbHNlCisJICAgIHogPSBnZW5f cnR4X0xUIChWT0lEbW9kZSwgY2NfcmVnLCBjb25zdDBfcnR4KTsKKworCSAgeiA9IGdlbl9ydHhf SUZfVEhFTl9FTFNFIChWT0lEbW9kZSwgeiwKKwkJCQkgICAgZ2VuX3J0eF9MQUJFTF9SRUYgKFBt b2RlLCBsYWIxKSwgcGNfcnR4KTsKKwkgIGlqMSA9IGVtaXRfanVtcF9pbnNuIChnZW5fcnR4X1NF VCAocGNfcnR4LCB6KSk7CisKKwkgIGVtaXRfbGFiZWwgKGxhYjEpOworCSAgcnR4X2luc24qIG1v djEgPSBlbWl0X21vdmVfaW5zbiAocmVzLCBiKTsKKwkgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQg KGNjX3JlZywgZ2VuX3J0eF9DT01QQVJFIChjY19tb2RlLCByZXMsIGMpKSk7CisJICBsYWIxID0g Z2VuX2xhYmVsX3J0eCAoKTsKKwkgIGlmIChjb2RlMiA9PSBTTUlOIHx8IGNvZGUyID09IFVNSU4p CisJICAgIHogPSBnZW5fcnR4X0dUIChWT0lEbW9kZSwgY2NfcmVnLCBjb25zdDBfcnR4KTsKKwkg IGVsc2UKKwkgICAgeiA9IGdlbl9ydHhfTFQgKFZPSURtb2RlLCBjY19yZWcsIGNvbnN0MF9ydHgp OworCSAgeiA9IGdlbl9ydHhfSUZfVEhFTl9FTFNFIChWT0lEbW9kZSwgeiwKKwkJCQkgICAgZ2Vu X3J0eF9MQUJFTF9SRUYgKFBtb2RlLCBsYWIxKSwgcGNfcnR4KTsKKwkgIGlqMiA9IGVtaXRfanVt cF9pbnNuIChnZW5fcnR4X1NFVCAocGNfcnR4LCB6KSk7CisJICBlbWl0X2xhYmVsIChsYWIxKTsK KwkgIHJ0eF9pbnNuKiBtb3YyID0gZW1pdF9tb3ZlX2luc24gKHJlcywgYyk7CisKKwkgIC8qIHJl dXNlIGRlc3QgcGFydCBvZiB0aGUgc2Vjb25kIE1JTiBpbnNuICovCisJICBlbWl0X21vdmVfaW5z biAoU0VUX0RFU1QgKFBBVFRFUk4gKHVzZSkpLCByZXMpOworCisJICBydHhfaW5zbiogc2VxID0g Z2V0X2luc25zICgpOworCSAgZW5kX3NlcXVlbmNlICgpOworCSAgZW1pdF9pbnNuX2JlZm9yZSAo c2VxLCBpbnNuKTsKKworCSAgLyogY2hhbmdpbmcgQ0ZHIHRvIGFjY29tb2RhdGUgdGhlIGNvbmRp dGlvbmFsIGJyYW5jaGVzICovCisJICBlZGdlIGUxID0gc3BsaXRfYmxvY2sgKGJiMSwgaWoxKTsK KwkgIGVkZ2UgZTIgPSBzcGxpdF9ibG9jayAoZTEtPmRlc3QsIG1vdjEpOworCSAgbWFrZV9lZGdl IChiYjEsIGUyLT5kZXN0LCBFREdFX0ZBTExUSFJVKTsKKwkgIGUxLT5mbGFncyAmPSB+RURHRV9G QUxMVEhSVTsgLyogdGhpcyBpcyBhIGNvbmRpdGlvbmFsIGp1bXAsIHJlbW92ZQorCQkJCQkgIEZB TExUSFJVIGZsYWcgKi8KKwkgIGJiMSA9IGUyLT5kZXN0OworCSAgZTEgPSBzcGxpdF9ibG9jayAo YmIxLCBpajIpOworCSAgZTIgPSBzcGxpdF9ibG9jayAoZTEtPmRlc3QsIG1vdjIpOworCSAgbWFr ZV9lZGdlIChiYjEsIGUyLT5kZXN0LCBFREdFX0ZBTExUSFJVKTsKKwkgIGUxLT5mbGFncyAmPSB+ RURHRV9GQUxMVEhSVTsKKworCSAgZGVsZXRlX2luc24gKGluc24pOworCSAgZGVsZXRlX2luc24g KHVzZSk7CisJICBicmVhazsKKwl9CisgICAgfQorfQorCisKKwogLyogU2ltcGxpZnkgWCwgYW4g SUZfVEhFTl9FTFNFIGV4cHJlc3Npb24uICBSZXR1cm4gdGhlIG5ldyBleHByZXNzaW9uLiAgKi8K IAogc3RhdGljIHJ0eApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtdHVu aW5nLWZsYWdzLmRlZiBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXR1bmluZy1mbGFncy5k ZWYKaW5kZXggY2NlZjNjMC4uODZkYzhiYyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQtdHVuaW5nLWZsYWdzLmRlZgorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2 NC10dW5pbmctZmxhZ3MuZGVmCkBAIC00Niw0ICs0Niw2IEBAIEFBUkNINjRfRVhUUkFfVFVOSU5H X09QVElPTiAoIm5vX2xkcF9zdHBfcXJlZ3MiLCBOT19MRFBfU1RQX1FSRUdTKQogCiBBQVJDSDY0 X0VYVFJBX1RVTklOR19PUFRJT04gKCJyZW5hbWVfbG9hZF9yZWdzIiwgUkVOQU1FX0xPQURfUkVH UykKIAorQUFSQ0g2NF9FWFRSQV9UVU5JTkdfT1BUSU9OICgibWlubWF4X3RvX2NvbmQiLCBNSU5N QVhfVE9fQ09ORCkKKwogI3VuZGVmIEFBUkNINjRfRVhUUkFfVFVOSU5HX09QVElPTgpkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYyBiL2djYy9jb25maWcvYWFyY2g2NC9h YXJjaDY0LmMKaW5kZXggMmEwZmQ3MS4uZWY3OGY2YyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQuYworKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jCkBAIC0x MjY4LDcgKzEyNjgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHR1bmVfcGFyYW1zIHRodW5kZXJ4 MnQ5OV90dW5pbmdzID0KICAgMiwJLyogbWluX2Rpdl9yZWNpcF9tdWxfZGYuICAqLwogICAwLAkv KiBtYXhfY2FzZV92YWx1ZXMuICAqLwogICB0dW5lX3BhcmFtczo6QVVUT1BSRUZFVENIRVJfV0VB SywJLyogYXV0b3ByZWZldGNoZXJfbW9kZWwuICAqLwotICAoQUFSQ0g2NF9FWFRSQV9UVU5FX05P TkUpLAkvKiB0dW5lX2ZsYWdzLiAgKi8KKyAgKEFBUkNINjRfRVhUUkFfVFVORV9NSU5NQVhfVE9f Q09ORCksCS8qIHR1bmVfZmxhZ3MuICAqLwogICAmdGh1bmRlcngydDk5X3ByZWZldGNoX3R1bmUK IH07CiAKQEAgLTIzMDQxLDYgKzIzMDQxLDE0IEBAIGFhcmNoNjRfaW52YWxpZF91bmFyeV9vcCAo aW50IG9wLCBjb25zdF90cmVlIHR5cGUpCiAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgYm9v bAorYWFyY2g2NF9taW5tYXhfdG9fY29uZF9wcm9maXRhYmxlX3AgKCkKK3sKKyAgcmV0dXJuICgo YWFyY2g2NF90dW5lX3BhcmFtcy5leHRyYV90dW5pbmdfZmxhZ3MgJgorCSAgQUFSQ0g2NF9FWFRS QV9UVU5FX01JTk1BWF9UT19DT05EKSAmJgorCSAgYWFyY2g2NF9mbGFnX21pbm1heF90b19jb25k KTsKK30KKwogLyogUmV0dXJuIHRoZSBkaWFnbm9zdGljIG1lc3NhZ2Ugc3RyaW5nIGlmIHRoZSBi aW5hcnkgb3BlcmF0aW9uIE9QIGlzCiAgICBub3QgcGVybWl0dGVkIG9uIFRZUEUxIGFuZCBUWVBF MiwgTlVMTCBvdGhlcndpc2UuICAqLwogCkBAIC0yMzg5OCw2ICsyMzkwNiw5IEBAIGFhcmNoNjRf bGliZ2NjX2Zsb2F0aW5nX21vZGVfc3VwcG9ydGVkX3AKICN1bmRlZiBUQVJHRVRfQVNNX0ZVTkNU SU9OX0VQSUxPR1VFCiAjZGVmaW5lIFRBUkdFVF9BU01fRlVOQ1RJT05fRVBJTE9HVUUgYWFyY2g2 NF9zbHNfZW1pdF9ibHJfZnVuY3Rpb25fdGh1bmtzCiAKKyN1bmRlZiBUQVJHRVRfTUlOTUFYX1RP X0NPTkRfUFJPRklUQUJMRV9QCisjZGVmaW5lIFRBUkdFVF9NSU5NQVhfVE9fQ09ORF9QUk9GSVRB QkxFX1AgYWFyY2g2NF9taW5tYXhfdG9fY29uZF9wcm9maXRhYmxlX3AKKwogc3RydWN0IGdjY190 YXJnZXQgdGFyZ2V0bSA9IFRBUkdFVF9JTklUSUFMSVpFUjsKIAogI2luY2x1ZGUgImd0LWFhcmNo NjQuaCIKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm9wdCBiL2djYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0Lm9wdAppbmRleCA1MTcwMzYxLi40YzBiYWQ4IDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5vcHQKKysrIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQub3B0CkBAIC0yNzUsMyArMjc1LDcgQEAgVGhlIG51bWJlciBvZiBOZXd0b24g aXRlcmF0aW9ucyBmb3IgY2FsY3VsYXRpbmcgdGhlIHJlY2lwcm9jYWwgZm9yIGZsb2F0IHR5cGUu CiBUYXJnZXQgSm9pbmVkIFVJbnRlZ2VyIFZhcihhYXJjaDY0X2RvdWJsZV9yZWNwX3ByZWNpc2lv bikgSW5pdCgyKSBJbnRlZ2VyUmFuZ2UoMSwgNSkgUGFyYW0KIFRoZSBudW1iZXIgb2YgTmV3dG9u IGl0ZXJhdGlvbnMgZm9yIGNhbGN1bGF0aW5nIHRoZSByZWNpcHJvY2FsIGZvciBkb3VibGUgdHlw ZS4gIFRoZSBwcmVjaXNpb24gb2YgZGl2aXNpb24gaXMgcHJvcG9ydGlvbmFsIHRvIHRoaXMgcGFy YW0gd2hlbiBkaXZpc2lvbiBhcHByb3hpbWF0aW9uIGlzIGVuYWJsZWQuICBUaGUgZGVmYXVsdCB2 YWx1ZSBpcyAyLgogCittbWlubWF4LXRvLWNvbmQKK1RhcmdldCBWYXIoYWFyY2g2NF9mbGFnX21p bm1heF90b19jb25kKSBPcHRpbWl6YXRpb24KK0NvbnZlcnQgbmVzdGVkIG1pbm1heCBpbnN0cnVj dGlvbnMgaW50byB0aGUgc2VxdWVuY2UKK29mIGNvbmRpdGlvbmFscwpkaWZmIC0tZ2l0IGEvZ2Nj L2RvYy90bS50ZXhpIGIvZ2NjL2RvYy90bS50ZXhpCmluZGV4IDQxYjllMTAuLjI1MGUzM2YgMTAw NjQ0Ci0tLSBhL2djYy9kb2MvdG0udGV4aQorKysgYi9nY2MvZG9jL3RtLnRleGkKQEAgLTEyMjAw LDYgKzEyMjAwLDExIEBAIFRoaXMgdGFyZ2V0IGhvb2sgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUg YSB0YXJnZXQtc3BlY2lmaWMgY29kZQogIGVtaXRzIGEgQGNvZGV7c3BlY3VsYXRpb25fYmFycmll cn0gaW5zdHJ1Y3Rpb24gaWYgdGhhdCBpcyBkZWZpbmVkLgogQGVuZCBkZWZ0eXBlZm4KIAorQGRl ZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IGJvb2wgVEFSR0VUX01JTk1BWF9UT19DT05EX1BST0ZJVEFC TEVfUCAodm9pZCkKK1RoZXJlIGFyZSBjYXNlcyB3aGVuIGl0IGlzIHByb2ZpdGFibGUgdG8gcmVw bGFjZSBuZXN0ZWQgbWluL21heAorICBpbnN0cnVjdGlvbnMgYnkgdGhlIHNlcXVlbmNlIG9mIGNv bmRpdGlvbmFscy4KK0BlbmQgZGVmdHlwZWZuCisKIEBkZWZ0eXBlZm4ge1RhcmdldCBIb29rfSB2 b2lkIFRBUkdFVF9SVU5fVEFSR0VUX1NFTEZURVNUUyAodm9pZCkKIElmIHNlbGZ0ZXN0cyBhcmUg ZW5hYmxlZCwgcnVuIGFueSBzZWxmdGVzdHMgZm9yIHRoaXMgdGFyZ2V0LgogQGVuZCBkZWZ0eXBl Zm4KZGlmZiAtLWdpdCBhL2djYy9kb2MvdG0udGV4aS5pbiBiL2djYy9kb2MvdG0udGV4aS5pbgpp bmRleCAzYmU5ODRiLi4zOWM1ODQ4IDEwMDY0NAotLS0gYS9nY2MvZG9jL3RtLnRleGkuaW4KKysr IGIvZ2NjL2RvYy90bS50ZXhpLmluCkBAIC04MTc5LDQgKzgxNzksNiBAQCBtYWludGFpbmVyIGlz IGZhbWlsaWFyIHdpdGguCiAKIEBob29rIFRBUkdFVF9TUEVDVUxBVElPTl9TQUZFX1ZBTFVFCiAK K0Bob29rIFRBUkdFVF9NSU5NQVhfVE9fQ09ORF9QUk9GSVRBQkxFX1AKKwogQGhvb2sgVEFSR0VU X1JVTl9UQVJHRVRfU0VMRlRFU1RTCmRpZmYgLS1naXQgYS9nY2MvaWZjdnQuYyBiL2djYy9pZmN2 dC5jCmluZGV4IGE5ZWE3YjEuLjkwOTFlNmEgMTAwNjQ0Ci0tLSBhL2djYy9pZmN2dC5jCisrKyBi L2djYy9pZmN2dC5jCkBAIC0xNzY4LDYgKzE3NjgsMTEgQEAgbm9jZV90cnlfY21vdmUgKHN0cnVj dCBub2NlX2lmX2luZm8gKmlmX2luZm8pCiAgIGlmICghbm9jZV9zaW1wbGVfYmJzIChpZl9pbmZv KSkKICAgICByZXR1cm4gRkFMU0U7CiAKKyAgLyogZG9uJ3QgYm90aGVyIHRvIGNvbnZlcnQgYnJh bmNoZXMgdG8gY21vdmVzIGZvciBGUCAqLworICBpZiAoU0NBTEFSX0ZMT0FUX01PREVfUCAoR0VU X01PREUgKFhFWFAgKGlmX2luZm8tPmNvbmQsIDApKSkKKyAgICAgICYmIHRhcmdldG0ubWlubWF4 X3RvX2NvbmRfcHJvZml0YWJsZV9wICgpKQorICAgIHJldHVybiBGQUxTRTsKKwogICBpZiAoKENP TlNUQU5UX1AgKGlmX2luZm8tPmEpIHx8IHJlZ2lzdGVyX29wZXJhbmQgKGlmX2luZm8tPmEsIFZP SURtb2RlKSkKICAgICAgICYmIChDT05TVEFOVF9QIChpZl9pbmZvLT5iKSB8fCByZWdpc3Rlcl9v cGVyYW5kIChpZl9pbmZvLT5iLCBWT0lEbW9kZSkpKQogICAgIHsKQEAgLTIwNDgsNiArMjA1Mywx MSBAQCBub2NlX3RyeV9jbW92ZV9hcml0aCAoc3RydWN0IG5vY2VfaWZfaW5mbyAqaWZfaW5mbykK ICAgcnR4IGNvbmQgPSBpZl9pbmZvLT5jb25kOwogICBydHhfaW5zbiAqaWZjdnRfc2VxOwogCisg IC8qIGRvbid0IGJvdGhlciB0byBjb252ZXJ0IGJyYW5jaGVzIHRvIGNtb3ZlcyBmb3IgRlAgKi8K KyAgaWYgKFNDQUxBUl9GTE9BVF9NT0RFX1AgKEdFVF9NT0RFIChYRVhQIChpZl9pbmZvLT5jb25k LCAwKSkpCisgICAgICAmJiB0YXJnZXRtLm1pbm1heF90b19jb25kX3Byb2ZpdGFibGVfcCAoKSkK KyAgICByZXR1cm4gRkFMU0U7CisKICAgLyogQSBjb25kaXRpb25hbCBtb3ZlIGZyb20gdHdvIG1l bW9yeSBzb3VyY2VzIGlzIGVxdWl2YWxlbnQgdG8gYQogICAgICBjb25kaXRpb25hbCBvbiB0aGVp ciBhZGRyZXNzZXMgZm9sbG93ZWQgYnkgYSBsb2FkLiAgRG9uJ3QgZG8gdGhpcwogICAgICBlYXJs eSBiZWNhdXNlIGl0J2xsIHNjcmV3IGFsaWFzIGFuYWx5c2lzLiAgTm90ZSB0aGF0IHdlJ3ZlCkBA IC0yNDYyLDYgKzI0NzIsMTAgQEAgbm9jZV90cnlfbWlubWF4IChzdHJ1Y3Qgbm9jZV9pZl9pbmZv ICppZl9pbmZvKQogICBpZiAoIW5vY2Vfc2ltcGxlX2JicyAoaWZfaW5mbykpCiAgICAgcmV0dXJu IEZBTFNFOwogCisgIGlmIChTQ0FMQVJfRkxPQVRfTU9ERV9QIChHRVRfTU9ERSAoWEVYUCAoaWZf aW5mby0+Y29uZCwgMCkpKQorICAgICAgJiYgdGFyZ2V0bS5taW5tYXhfdG9fY29uZF9wcm9maXRh YmxlX3AgKCkpCisgICAgcmV0dXJuIEZBTFNFOworCiAgIC8qID8/PyBSZWplY3QgbW9kZXMgd2l0 aCBOYU5zIG9yIHNpZ25lZCB6ZXJvcyBzaW5jZSB3ZSBkb24ndCBrbm93IGhvdwogICAgICB0aGV5 IHdpbGwgYmUgcmVzb2x2ZWQgd2l0aCBhbiBTTUlOL1NNQVguICBJdCB3b3VsZG4ndCBiZSB0b28g aGFyZAogICAgICB0byBnZXQgdGhlIHRhcmdldCB0byB0ZWxsIHVzLi4uICAqLwpkaWZmIC0tZ2l0 IGEvZ2NjL3RhcmdldC5kZWYgYi9nY2MvdGFyZ2V0LmRlZgppbmRleCBmMmYzMTRlLi5iNTliNWU3 IDEwMDY0NAotLS0gYS9nY2MvdGFyZ2V0LmRlZgorKysgYi9nY2MvdGFyZ2V0LmRlZgpAQCAtMzIy OCw2ICszMjI4LDEzIEBAIERFRkhPT0sKICBib29sLCAoYW9fcmVmICpyZWYpLAogIGRlZmF1bHRf cmVmX21heV9hbGlhc19lcnJubykKIAorREVGSE9PSworKG1pbm1heF90b19jb25kX3Byb2ZpdGFi bGVfcCwKKyAiVGhlcmUgYXJlIGNhc2VzIHdoZW4gaXQgaXMgcHJvZml0YWJsZSB0byByZXBsYWNl IG5lc3RlZCBtaW4vbWF4XG5cCisgIGluc3RydWN0aW9ucyBieSB0aGUgc2VxdWVuY2Ugb2YgY29u ZGl0aW9uYWxzLiIsCisgIGJvb2wsICh2b2lkKSwgaG9va19ib29sX3ZvaWRfZmFsc2UpCisKKwog LyogU3VwcG9ydCBmb3IgbmFtZWQgYWRkcmVzcyBzcGFjZXMuICAqLwogI3VuZGVmIEhPT0tfUFJF RklYCiAjZGVmaW5lIEhPT0tfUFJFRklYICJUQVJHRVRfQUREUl9TUEFDRV8iCi0tIAoyLjcuNAoK --0000000000009a307205aee36be5--