From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id EAA413858402 for ; Thu, 11 Nov 2021 17:51:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EAA413858402 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8A57D101E; Thu, 11 Nov 2021 09:51:01 -0800 (PST) Received: from [10.57.26.224] (unknown [10.57.26.224]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F41483F718; Thu, 11 Nov 2021 09:51:00 -0800 (PST) Content-Type: multipart/mixed; boundary="------------oeQrl9ytXUxyuxJCl2qNtaCr" Message-ID: <8225375c-eb9e-f9b3-6bcd-9fbccf2fc87b@arm.com> Date: Thu, 11 Nov 2021 17:51:08 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.1 Content-Language: en-US To: "gcc-patches@gcc.gnu.org" Cc: Richard Sandiford , Richard Biener From: "Andre Vieira (lists)" Subject: [AArch64] Enable generation of FRINTNZ instructions X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, BODY_8BITS, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LOTSOFHASH, KAM_SHORT, 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, 11 Nov 2021 17:51:06 -0000 This is a multi-part message in MIME format. --------------oeQrl9ytXUxyuxJCl2qNtaCr Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, This patch introduces two IFN's FTRUNC32 and FTRUNC64, the corresponding optabs and mappings. It also creates a backend pattern to implement them for aarch64 and a match.pd pattern to idiom recognize these. These IFN's (and optabs) represent a truncation towards zero, as if performed by first casting it to a signed integer of 32 or 64 bits and then back to the same floating point type/mode. The match.pd pattern choses to use these, when supported, regardless of trapping math, since these new patterns mimic the original behavior of truncating through an integer. I didn't think any of the existing IFN's represented these. I know it's a bit late in stage 1, but I thought this might be OK given it's only used by a single target and should have very little impact on anything else. Bootstrapped on aarch64-none-linux. OK for trunk? gcc/ChangeLog:         * config/aarch64/aarch64.md (ftrunc2): New pattern.         * config/aarch64/iterators.md (FRINTZ): New iterator.         * doc/md.texi: New entry for ftrunc pattern name.         * internal-fn.def (FTRUNC32): New IFN.         (FTRUNC64): Likewise.         * match.pd: Add to the existing TRUNC pattern match.         * optabs.def (OPTAB_D): New entries for ftrunc. gcc/testsuite/ChangeLog:         * gcc.target/aarch64/merge_trunc1.c: Adapted to skip if frintNz instruction available.         * lib/target-supports.exp: Added arm_v8_5a_frintnzx_ok target.         * gcc.target/aarch64/frintnz.c: New test. --------------oeQrl9ytXUxyuxJCl2qNtaCr Content-Type: text/plain; charset=UTF-8; name="frintnz.patch" Content-Disposition: attachment; filename="frintnz.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kIGIvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQubWQKaW5kZXggNDAzNWUwNjE3MDY3OTM4NDljNjhhZTA5YmNi MmU0Yjk1ODBhYjdiNi4uYWQ0ZTA0ZDdjODc0ZGEwOTU1MTM0NDJlN2Q3ZjI0Nzc5MWQ4OTIx ZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQKKysrIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQKQEAgLTczNDUsNiArNzM0NSwxNiBAQCAoZGVm aW5lX2luc24gImRlc3BlY3VsYXRlX3NpbXBsZXRpIgogICAgKHNldF9hdHRyICJzcGVjdWxh dGlvbl9iYXJyaWVyIiAidHJ1ZSIpXQogKQogCisoZGVmaW5lX2luc24gImZ0cnVuYzxtb2Rl PjxmcmludG56X21vZGU+MiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNGREYgMCAicmVn aXN0ZXJfb3BlcmFuZCIgIj13IikKKyAgICAgICAgKHVuc3BlYzpWU0ZERiBbKG1hdGNoX29w ZXJhbmQ6VlNGREYgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInciKV0KKwkJICAgICAgRlJJTlRO WikpXQorICAiVEFSR0VUX0ZSSU5UICYmIFRBUkdFVF9GTE9BVAorICAgJiYgIShWRUNUT1Jf TU9ERV9QICg8TU9ERT5tb2RlKSAmJiAhVEFSR0VUX1NJTUQpIgorICAiPGZyaW50bnpzX29w PlxcdCU8dj4wPFZtdHlwZT4sICU8dj4xPFZtdHlwZT4iCisgIFsoc2V0X2F0dHIgInR5cGUi ICJmX3JpbnQ8c3R5cGU+IildCispCisKIChkZWZpbmVfaW5zbiAiYWFyY2g2NF88ZnJpbnRu enNfb3A+PG1vZGU+IgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU0ZERiAwICJyZWdpc3Rl cl9vcGVyYW5kIiAiPXciKQogCSh1bnNwZWM6VlNGREYgWyhtYXRjaF9vcGVyYW5kOlZTRkRG IDEgInJlZ2lzdGVyX29wZXJhbmQiICJ3IildCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2Fh cmNoNjQvaXRlcmF0b3JzLm1kIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9ycy5tZApp bmRleCBiZGM4YmEzNTc2Y2YyYzliNGFlOTZiNDVhMzgyMjM0ZTRlMjViMTNmLi40OTUxMDQ4 OGEyYTgwMDY4OWU5NWMzOTlmMmU2Yzk2N2I1NjY1MTZkIDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9pdGVy YXRvcnMubWQKQEAgLTMwNjcsNiArMzA2Nyw4IEBAIChkZWZpbmVfaW50X2l0ZXJhdG9yIEZD TUxBIFtVTlNQRUNfRkNNTEEKIChkZWZpbmVfaW50X2l0ZXJhdG9yIEZSSU5UTlpYIFtVTlNQ RUNfRlJJTlQzMlogVU5TUEVDX0ZSSU5UMzJYCiAJCQkgICAgICAgVU5TUEVDX0ZSSU5UNjRa IFVOU1BFQ19GUklOVDY0WF0pCiAKKyhkZWZpbmVfaW50X2l0ZXJhdG9yIEZSSU5UTlogW1VO U1BFQ19GUklOVDMyWiBVTlNQRUNfRlJJTlQ2NFpdKQorCiAoZGVmaW5lX2ludF9pdGVyYXRv ciBTVkVfQlJLX1VOQVJZIFtVTlNQRUNfQlJLQSBVTlNQRUNfQlJLQl0pCiAKIChkZWZpbmVf aW50X2l0ZXJhdG9yIFNWRV9CUktfQklOQVJZIFtVTlNQRUNfQlJLTiBVTlNQRUNfQlJLUEEg VU5TUEVDX0JSS1BCXSkKQEAgLTM0ODIsNiArMzQ4NCw4IEBAIChkZWZpbmVfaW50X2F0dHIg ZjE2bWFjMSBbKFVOU1BFQ19GTUxBTCAiYSIpIChVTlNQRUNfRk1MU0wgInMiKQogKGRlZmlu ZV9pbnRfYXR0ciBmcmludG56c19vcCBbKFVOU1BFQ19GUklOVDMyWiAiZnJpbnQzMnoiKSAo VU5TUEVDX0ZSSU5UMzJYICJmcmludDMyeCIpCiAJCQkgICAgICAoVU5TUEVDX0ZSSU5UNjRa ICJmcmludDY0eiIpIChVTlNQRUNfRlJJTlQ2NFggImZyaW50NjR4IildKQogCisoZGVmaW5l X2ludF9hdHRyIGZyaW50bnpfbW9kZSBbKFVOU1BFQ19GUklOVDMyWiAic2kiKSAoVU5TUEVD X0ZSSU5UNjRaICJkaSIpXSkKKwogOzsgVGhlIGNvbmRpdGlvbiBhc3NvY2lhdGVkIHdpdGgg YW4gVU5TUEVDX0NPTkRfPHh4Pi4KIChkZWZpbmVfaW50X2F0dHIgY21wX29wIFsoVU5TUEVD X0NPTkRfQ01QRVFfV0lERSAiZXEiKQogCQkJIChVTlNQRUNfQ09ORF9DTVBHRV9XSURFICJn ZSIpCmRpZmYgLS1naXQgYS9nY2MvZG9jL21kLnRleGkgYi9nY2MvZG9jL21kLnRleGkKaW5k ZXggNDFmMTg1MGJmNmU5NTAwNTY0N2NhOTdhNDk1YTk3ZDdlMTg0ZDEzNy4uN2JkNjY4MTgx NDRlODdlMWRjYTJlZjEzYmVmMWQ2ZjIxZjIzOTU3MCAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9t ZC50ZXhpCisrKyBiL2djYy9kb2MvbWQudGV4aQpAQCAtNjE3NSw2ICs2MTc1LDEzIEBAIG9w ZXJhbmRzOyBvdGhlcndpc2UsIGl0IG1heSBub3QuCiAKIFRoaXMgcGF0dGVybiBpcyBub3Qg YWxsb3dlZCB0byBAY29kZXtGQUlMfS4KIAorQGNpbmRleCBAY29kZXtmdHJ1bmNAdmFye219 QHZhcntufTJ9IGluc3RydWN0aW9uIHBhdHRlcm4KK0BpdGVtIEBzYW1we2Z0cnVuY0B2YXJ7 bX1AdmFye259Mn0KK1RydW5jYXRlIG9wZXJhbmQgMSB0byBhIEB2YXJ7bn0gbW9kZSBzaWdu ZWQgaW50ZWdlciwgdG93YXJkcyB6ZXJvLCBhbmQgc3RvcmUKK3RoZSByZXN1bHQgaW4gb3Bl cmFuZCAwLiBCb3RoIG9wZXJhbmRzIGhhdmUgbW9kZSBAdmFye219LCB3aGljaCBpcyBhIHNj YWxhciBvcgordmVjdG9yIGZsb2F0aW5nLXBvaW50IG1vZGUuCisKKwogQGNpbmRleCBAY29k ZXtyb3VuZEB2YXJ7bX0yfSBpbnN0cnVjdGlvbiBwYXR0ZXJuCiBAaXRlbSBAc2FtcHtyb3Vu ZEB2YXJ7bX0yfQogUm91bmQgb3BlcmFuZCAxIHRvIHRoZSBuZWFyZXN0IGludGVnZXIsIHJv dW5kaW5nIGF3YXkgZnJvbSB6ZXJvIGluIHRoZQpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFs LWZuLmRlZiBiL2djYy9pbnRlcm5hbC1mbi5kZWYKaW5kZXggYmIxM2M2Y2NlMWJmNTU2MzM3 NjBiYzE0OTgwNDAyZjFmMGFjMTY4OS4uNjQyNjNjYmI4MzU0OGIxNDBmNjEzY2I0YmY1Y2U2 NTY1MzczZjk2ZCAxMDA2NDQKLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRlZgorKysgYi9nY2Mv aW50ZXJuYWwtZm4uZGVmCkBAIC0yNjksNiArMjY5LDggQEAgREVGX0lOVEVSTkFMX0ZMVF9G TE9BVE5fRk4gKFJJTlQsIEVDRl9DT05TVCwgcmludCwgdW5hcnkpCiBERUZfSU5URVJOQUxf RkxUX0ZMT0FUTl9GTiAoUk9VTkQsIEVDRl9DT05TVCwgcm91bmQsIHVuYXJ5KQogREVGX0lO VEVSTkFMX0ZMVF9GTE9BVE5fRk4gKFJPVU5ERVZFTiwgRUNGX0NPTlNULCByb3VuZGV2ZW4s IHVuYXJ5KQogREVGX0lOVEVSTkFMX0ZMVF9GTE9BVE5fRk4gKFRSVU5DLCBFQ0ZfQ09OU1Qs IGJ0cnVuYywgdW5hcnkpCitERUZfSU5URVJOQUxfT1BUQUJfRk4gKEZUUlVOQzMyLCBFQ0Zf Q09OU1QsIGZ0cnVuYzMyLCB1bmFyeSkKK0RFRl9JTlRFUk5BTF9PUFRBQl9GTiAoRlRSVU5D NjQsIEVDRl9DT05TVCwgZnRydW5jNjQsIHVuYXJ5KQogCiAvKiBCaW5hcnkgbWF0aCBmdW5j dGlvbnMuICAqLwogREVGX0lOVEVSTkFMX0ZMVF9GTiAoQVRBTjIsIEVDRl9DT05TVCwgYXRh bjIsIGJpbmFyeSkKZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZApp bmRleCBhMzE5YWVmYTgwODFhYzE3Nzk4MWFkNDI1YzQ2MWY4YTc3MTEyOGY0Li43OTM3ZWVi Nzg2NWNlMDVkMzJkZDVmZGMyYTkwNjk5YTBlMTUyMzBlIDEwMDY0NAotLS0gYS9nY2MvbWF0 Y2gucGQKKysrIGIvZ2NjL21hdGNoLnBkCkBAIC0zNzEzLDEyICszNzEzLDIyIEBAIERFRklO RV9JTlRfQU5EX0ZMT0FUX1JPVU5EX0ZOIChSSU5UKQogICAgdHJhcHBpbmcgYmVoYXZpb3Vy LCBzbyByZXF1aXJlICFmbGFnX3RyYXBwaW5nX21hdGguICovCiAjaWYgR0lNUExFCiAoc2lt cGxpZnkKLSAgIChmbG9hdCAoZml4X3RydW5jIEAwKSkKLSAgIChpZiAoIWZsYWdfdHJhcHBp bmdfbWF0aAotCSYmIHR5cGVzX21hdGNoICh0eXBlLCBUUkVFX1RZUEUgKEAwKSkKLQkmJiBk aXJlY3RfaW50ZXJuYWxfZm5fc3VwcG9ydGVkX3AgKElGTl9UUlVOQywgdHlwZSwKLQkJCQkJ ICBPUFRJTUlaRV9GT1JfQk9USCkpCi0gICAgICAoSUZOX1RSVU5DIEAwKSkpCisgICAoZmxv YXQgKGZpeF90cnVuY0AxIEAwKSkKKyAgIChpZiAodHlwZXNfbWF0Y2ggKHR5cGUsIFRSRUVf VFlQRSAoQDApKSkKKyAgICAoaWYgKFRZUEVfU0lHTiAoVFJFRV9UWVBFIChAMSkpID09IFNJ R05FRAorCSAmJiBUWVBFX01PREUgKFRSRUVfVFlQRSAoQDEpKSA9PSBTSW1vZGUKKwkgJiYg ZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wIChJRk5fRlRSVU5DMzIsIHR5cGUsCisJ CQkJCSAgICBPUFRJTUlaRV9GT1JfQk9USCkpCisgICAgIChJRk5fRlRSVU5DMzIgQDApCisg ICAgIChpZiAoVFlQRV9TSUdOIChUUkVFX1RZUEUgKEAxKSkgPT0gU0lHTkVECisJICAmJiBU WVBFX01PREUgKFRSRUVfVFlQRSAoQDEpKSA9PSBESW1vZGUKKwkgICYmIGRpcmVjdF9pbnRl cm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX0ZUUlVOQzY0LCB0eXBlLAorCQkJCQkgICAgIE9Q VElNSVpFX0ZPUl9CT1RIKSkKKyAgICAgIChJRk5fRlRSVU5DNjQgQDApCisgICAgICAoaWYg KCFmbGFnX3RyYXBwaW5nX21hdGgKKwkgICAmJiBkaXJlY3RfaW50ZXJuYWxfZm5fc3VwcG9y dGVkX3AgKElGTl9UUlVOQywgdHlwZSwKKwkJCQkJICAgICAgT1BUSU1JWkVfRk9SX0JPVEgp KQorICAgICAgIChJRk5fVFJVTkMgQDApKSkpKSkKICNlbmRpZgogCiAvKiBJZiB3ZSBoYXZl IGEgbmFycm93aW5nIGNvbnZlcnNpb24gdG8gYW4gaW50ZWdyYWwgdHlwZSB0aGF0IGlzIGZl ZCBieSBhCmRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVmCmlu ZGV4IGI4ODlhZDJlNWEwODYxM2RiNTFkMTZkMDcyMDgwYWM2Y2I0ODQwNGYuLjc0MGFmMTlm Y2Y1YzUzZTI1NjYzMDM4ZmY2YzJlODhjZjhkNzMzNGYgMTAwNjQ0Ci0tLSBhL2djYy9vcHRh YnMuZGVmCisrKyBiL2djYy9vcHRhYnMuZGVmCkBAIC0yODIsNiArMjgyLDggQEAgT1BUQUJf RCAoZmxvb3Jfb3B0YWIsICJmbG9vciRhMiIpCiBPUFRBQl9EIChjZWlsX29wdGFiLCAiY2Vp bCRhMiIpCiBPUFRBQl9EIChidHJ1bmNfb3B0YWIsICJidHJ1bmMkYTIiKQogT1BUQUJfRCAo bmVhcmJ5aW50X29wdGFiLCAibmVhcmJ5aW50JGEyIikKK09QVEFCX0QgKGZ0cnVuYzMyX29w dGFiLCAiZnRydW5jJGFzaTIiKQorT1BUQUJfRCAoZnRydW5jNjRfb3B0YWIsICJmdHJ1bmMk YWRpMiIpCiAKIE9QVEFCX0QgKGFjb3Nfb3B0YWIsICJhY29zJGEyIikKIE9QVEFCX0QgKGFj b3NoX29wdGFiLCAiYWNvc2gkYTIiKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvZnJpbnRuei5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvZnJpbnRuei5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMTk3MWY4YWExMWQ4Yjk1ZjQ1NGQw M2EwM2UwNTBhM2JmOTY3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9mcmludG56LmMKQEAgLTAsMCArMSw4OCBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXJjaD1hcm12OC41LWEi IH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV92OF81YV9mcmlu dG56eF9vayB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIq KiIgIiIgfSB9ICovCisKKy8qCisqKiBmMToKKyoqCS4uLgorKioJZnJpbnQzMnoJczAsIHMw CisqKgkuLi4KKyovCitmbG9hdAorZjEgKGZsb2F0IHgpCit7CisgIGludCB5ID0geDsKKyAg cmV0dXJuIChmbG9hdCkgeTsKK30KKworLyoKKyoqIGYyOgorKioJLi4uCisqKglmcmludDY0 eglzMCwgczAKKyoqCS4uLgorKi8KK2Zsb2F0CitmMiAoZmxvYXQgeCkKK3sKKyAgbG9uZyBs b25nIGludCB5ID0geDsKKyAgcmV0dXJuIChmbG9hdCkgeTsKK30KKworLyoKKyoqIGYzOgor KioJLi4uCisqKglmcmludDMyeglkMCwgZDAKKyoqCS4uLgorKi8KK2RvdWJsZQorZjMgKGRv dWJsZSB4KQoreworICBpbnQgeSA9IHg7CisgIHJldHVybiAoZG91YmxlKSB5OworfQorCisv KgorKiogZjQ6CisqKgkuLi4KKyoqCWZyaW50NjR6CWQwLCBkMAorKioJLi4uCisqLworZG91 YmxlCitmNCAoZG91YmxlIHgpCit7CisgIGxvbmcgbG9uZyBpbnQgeSA9IHg7CisgIHJldHVy biAoZG91YmxlKSB5OworfQorCitmbG9hdAorZjFfZG9udCAoZmxvYXQgeCkKK3sKKyAgdW5z aWduZWQgaW50IHkgPSB4OworICByZXR1cm4gKGZsb2F0KSB5OworfQorCitmbG9hdAorZjJf ZG9udCAoZmxvYXQgeCkKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIGludCB5ID0geDsKKyAg cmV0dXJuIChmbG9hdCkgeTsKK30KKworZG91YmxlCitmM19kb250IChkb3VibGUgeCkKK3sK KyAgdW5zaWduZWQgaW50IHkgPSB4OworICByZXR1cm4gKGRvdWJsZSkgeTsKK30KKworZG91 YmxlCitmNF9kb250IChkb3VibGUgeCkKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIGludCB5 ID0geDsKKyAgcmV0dXJuIChkb3VibGUpIHk7Cit9CisKKy8qIE1ha2Ugc3VyZSB0aGUgJ2Rv bnQncyBkb24ndCBnZW5lcmF0ZSBhbnkgZnJpbnROei4gICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMge2ZyaW50MzJ6fSAyIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmcmludDY0en0gMiB9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L21lcmdlX3RydW5jMS5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvbWVyZ2VfdHJ1bmMxLmMKaW5kZXgg MDcyMTcwNjRlMmJhNTRmY2Y0ZjVlZGM0NDBlNmVjMTlkZGFlNjZlMS4uM2IzNGRjM2FkNzlm MTQwNmE0MWVjNGMwMGRiMTAzNDdiYTFjYTJjNCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvbWVyZ2VfdHJ1bmMxLmMKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvbWVyZ2VfdHJ1bmMxLmMKQEAgLTEsNSArMSw2IEBACiAv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLwogLyogeyBkZy1vcHRpb25zICItTzIgLWZmYXN0LW1h dGgiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7IGFybV92OF81YV9mcmludG56eF9vayB9 IH0gKi8KIAogZmxvYXQKIGYxIChmbG9hdCB4KQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cCBiL2djYy90ZXN0c3VpdGUvbGliL3RhcmdldC1z dXBwb3J0cy5leHAKaW5kZXggOGNiZGExOTJmZTBmYWU1OWVhMjA4ZWU0MzY5NmI0ZDIyYzQz ZTYxZS4uMGQ2NGFjYjk4NzYxNDcxMGQ4NDQ5MGZjZTIwZTQ5ZGIyZWJmMmU0OCAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cAorKysgYi9nY2Mv dGVzdHN1aXRlL2xpYi90YXJnZXQtc3VwcG9ydHMuZXhwCkBAIC0xMTM2NSw2ICsxMTM2NSwz MyBAQCBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfYXJtX3Y4XzNhX2JrZXlfZGlyZWN0 aXZlIHsgfSB7CiAJfV0KIH0KIAorIyBSZXR1cm4gMSBpZiB0aGUgdGFyZ2V0IHN1cHBvcnRz IEFybXY4LjUtQSBzY2FsYXIgYW5kIEFkdmFuY2VkIFNJTUQKKyMgRlJJTlQzMltaWF0gYW5k IEZSSU5UNjRbWlhdIGluc3RydWN0aW9ucywgMCBvdGhlcndpc2UuIFRoZSB0ZXN0IGlzIHZh bGlkCisjIGZvciBBQXJjaDY0LgorCitwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfYXJt X3Y4XzVhX2ZyaW50bnp4X29rX25vY2FjaGUgeyB9IHsKKworICAgIGlmIHsgIVtpc3Rhcmdl dCBhYXJjaDY0Ki0qLSpdIH0geworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBp ZiB7IFtjaGVja19ub19jb21waWxlcl9tZXNzYWdlc19ub2NhY2hlIFwKKwkgICAgICBhcm1f djhfNWFfZnJpbnRuenhfb2sgYXNzZW1ibHkgeworCSNpZiAhZGVmaW5lZCAoX19BUk1fRkVB VFVSRV9GUklOVCkKKwkjZXJyb3IgIl9fQVJNX0ZFQVRVUkVfRlJJTlQgbm90IGRlZmluZWQi CisJI2VuZGlmCisgICAgfSBbY3VycmVudF9jb21waWxlcl9mbGFnc11dIH0geworCXJldHVy biAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitwcm9jIGNoZWNrX2VmZmVjdGl2 ZV90YXJnZXRfYXJtX3Y4XzVhX2ZyaW50bnp4X29rIHsgfSB7CisgICAgcmV0dXJuIFtjaGVj a19jYWNoZWRfZWZmZWN0aXZlX3RhcmdldCBhcm1fdjhfNWFfZnJpbnRuenhfb2sgXAorICAg ICAgICAgICAgICAgIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfYXJtX3Y4XzVhX2ZyaW50bnp4 X29rX25vY2FjaGVdIAorfQorCiAjIFJldHVybiAxIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMg ZXhlY3V0aW5nIHRoZSBBcm12OC4xLU0gTWFpbmxpbmUgTG93CiAjIE92ZXJoZWFkIExvb3As IDAgb3RoZXJ3aXNlLiAgVGhlIHRlc3QgaXMgdmFsaWQgZm9yIEFSTS4KIAo= --------------oeQrl9ytXUxyuxJCl2qNtaCr--