From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 36734 invoked by alias); 23 May 2017 03:19:11 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 36677 invoked by uid 89); 23 May 2017 03:19:10 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-23.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=empirical, modular X-HELO: mail-oi0-f43.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=0tlQfkuLxoH5e3/OOtuZsGQcMTyOi6J4Jz0BnRqBfxU=; b=PdI1eNVKrrW27IvKDuNnXsb+9y4PNWFBFHHauqeaKG/ahbNtEPOgFhBb9E6pFcLsG3 0RAjsKsvn/PAsTxjxMIxSGpp6u+wXk0RfwZpmNJm0B59perysmj4l2DBbKWBireXsmjj bh4Mh4RCAgI1x+XlF+GojxOiCBmrg5mk6+x7tLlalkZGA5ZZDsSrRR8tuivITN+kswFy c86DP4RqT0wIjVJuB+9FfNcdyF5a5OXFMJy6pYi3/RKfivPU+vPTzrptFmZfV3sd2S33 4qkrU/aj+go744l80iwrrnS4yj31XU6zJHS7NvVS2qEn+FP/HjI7/5P6RZKkd2Gneon0 23MQ== X-Gm-Message-State: AODbwcD6p649psKycbIscSAwbqcgMrJoUxhIlHjHAOcO/lvntjspUnFK 1nR5iMvtOOivTfeHij+DQHqhkK5SHWBM X-Received: by 10.202.207.141 with SMTP id f135mr14230857oig.211.1495509550236; Mon, 22 May 2017 20:19:10 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <9c563a4b-424b-242f-b82f-4650ab2637f7@redhat.com> <28e34264-e8c5-5570-c48c-9125893808b2@redhat.com> From: Erich Elsen Date: Tue, 23 May 2017 03:19:00 -0000 Message-ID: Subject: Re: memcpy performance regressions 2.19 -> 2.24(5) To: "H.J. Lu" Cc: "Carlos O'Donell" , GNU C Library Content-Type: multipart/mixed; boundary="001a113ad55e80a49005502873b3" X-SW-Source: 2017-05/txt/msg00684.txt.bz2 --001a113ad55e80a49005502873b3 Content-Type: text/plain; charset="UTF-8" Content-length: 1175 Here is the patch that slightly refactors how init_cacheinfo is called. On Mon, May 22, 2017 at 7:24 PM, H.J. Lu wrote: > On Mon, May 22, 2017 at 6:23 PM, Erich Elsen wrote: >> I definitely think increasing the size in the case of processors with >> a large number of cores makes sense. Hopefully with some testing we >> can confirm it is a net win and/or find a more empirical number. >> >> Thanks for that patch with the tunable support. I've just put a >> similar patch in review for sharing right now. It adds support in the >> case that HAVE_TUNABLES isn't defined like the similar code in arena.c >> and also makes a minor change that turns init_cacheinfo into a >> init_cacheinfo_impl (a hidden callable). init_cacheinfo is now a >> constructor that just calls the impl and passes the cpu_features >> struct. This is useful in that it makes the code a bit more modular >> (something that we'll need to be able to test this internally). > > This sounds a good idea. I'd also like to add tunable support in > init_cpu_features to turn on/off CPU features. non_temporal_threshold > will be one of them. > > > -- > H.J. --001a113ad55e80a49005502873b3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-add-tunable-for-non-temporal-store.-slightly-refacto.patch" Content-Disposition: attachment; filename="0001-add-tunable-for-non-temporal-store.-slightly-refacto.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j30zq1730 Content-length: 9565 RnJvbSA4N2IxMzNhM2RmNTVlNGU0NDRmODkzYTM1NGYwMWUxMGU3NTU3YWM2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljaCBFbHNlbiA8 ZXJpY2hlQGdvb2dsZS5jb20+CkRhdGU6IE1vbiwgMjIgTWF5IDIwMTcgMTg6 MDg6NTggLTA3MDAKU3ViamVjdDogW1BBVENIIDEvMl0gYWRkIHR1bmFibGUg Zm9yIG5vbiB0ZW1wb3JhbCBzdG9yZS4gc2xpZ2h0bHkgcmVmYWN0b3IKIGNh Y2hlIGluZm8gY29kZSB0byBiZSBhbGxvdyBmb3IgdGhlIHBvc3NpYmxpdHkg b2YgY2FsbGluZyB0aGUgaW1wbGVtZW50YXRpb24uCgotLS0KIGVsZi9kbC10 dW5hYmxlcy5saXN0ICAgIHwgIDcgKysrKwogc3lzZGVwcy94ODYvY2FjaGVp bmZvLmMgfCA5NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlv bnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2VsZi9kbC10 dW5hYmxlcy5saXN0IGIvZWxmL2RsLXR1bmFibGVzLmxpc3QKaW5kZXggYjlm MTQ4ODc5OC4uZDE5ZmIwZjE3NSAxMDA2NDQKLS0tIGEvZWxmL2RsLXR1bmFi bGVzLmxpc3QKKysrIGIvZWxmL2RsLXR1bmFibGVzLmxpc3QKQEAgLTMwLDYg KzMwLDEzIEBACiAjIAkgICAgIE5PTkU6IFJlYWQgYWxsIHRoZSB0aW1lLgog CiBnbGliYyB7CisgIHg4Nl9jYWNoZSB7CisgICAgeDg2X3NoYXJlZF9ub25f dGVtcG9yYWxfdGhyZXNob2xkIHsKKyAgICAgIHR5cGU6IFNJWkVfVAorICAg ICAgZW52X2FsaWFzOiBTSEFSRURfTk9OX1RFTVBPUkFMX1RIUkVTSE9MRAor ICAgICAgc2VjdXJpdHlfbGV2ZWw6IFNYSURfSUdOT1JFCisgICAgfQorICB9 CiAgIG1hbGxvYyB7CiAgICAgY2hlY2sgewogICAgICAgdHlwZTogSU5UXzMy CmRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Ni9jYWNoZWluZm8uYyBiL3N5c2Rl cHMveDg2L2NhY2hlaW5mby5jCmluZGV4IDFjY2JlNDFiOGYuLjI2MTljNWE4 M2MgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMveDg2L2NhY2hlaW5mby5jCisrKyBi L3N5c2RlcHMveDg2L2NhY2hlaW5mby5jCkBAIC0yMyw2ICsyMywxNSBAQAog I2luY2x1ZGUgPGNwdWlkLmg+CiAjaW5jbHVkZSA8aW5pdC1hcmNoLmg+CiAK KyNpZiBIQVZFX1RVTkFCTEVTCisjIGRlZmluZSBUVU5BQkxFX05BTUVTUEFD RSB4ODZfY2FjaGUKKyNlbHNlCisgICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAg ZXh0ZXJuIGNoYXIgKipfZW52aXJvbjsKKyNlbmRpZgorI2luY2x1ZGUgPGVs Zi9kbC10dW5hYmxlcy5oPgorCisKICNkZWZpbmUgaXNfaW50ZWwgR0xSTyhk bF94ODZfY3B1X2ZlYXR1cmVzKS5raW5kID09IGFyY2hfa2luZF9pbnRlbAog I2RlZmluZSBpc19hbWQgR0xSTyhkbF94ODZfY3B1X2ZlYXR1cmVzKS5raW5k ID09IGFyY2hfa2luZF9hbWQKICNkZWZpbmUgbWF4X2NwdWlkIEdMUk8oZGxf eDg2X2NwdV9mZWF0dXJlcykubWF4X2NwdWlkCkBAIC0xMjgsNyArMTM3LDcg QEAgaW50ZWxfMDJfa25vd25fY29tcGFyZSAoY29uc3Qgdm9pZCAqcDEsIGNv bnN0IHZvaWQgKnAyKQogc3RhdGljIGxvbmcgaW50CiBfX2F0dHJpYnV0ZV9f ICgobm9pbmxpbmUpKQogaW50ZWxfY2hlY2tfd29yZCAoaW50IG5hbWUsIHVu c2lnbmVkIGludCB2YWx1ZSwgYm9vbCAqaGFzX2xldmVsXzIsCi0JCSAgYm9v bCAqbm9fbGV2ZWxfMl9vcl8zKQorCQkgIGJvb2wgKm5vX2xldmVsXzJfb3Jf MywgY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlcyogeDg2X2NwdV9mZWF0dXJl cykKIHsKICAgaWYgKCh2YWx1ZSAmIDB4ODAwMDAwMDApICE9IDApCiAgICAg LyogVGhlIHJlZ2lzdGVyIHZhbHVlIGlzIHJlc2VydmVkLiAgKi8KQEAgLTIw Niw4ICsyMTUsOCBAQCBpbnRlbF9jaGVja193b3JkIChpbnQgbmFtZSwgdW5z aWduZWQgaW50IHZhbHVlLCBib29sICpoYXNfbGV2ZWxfMiwKIAkgICAgICAv KiBJbnRlbCByZXVzZWQgdGhpcyB2YWx1ZS4gIEZvciBmYW1pbHkgMTUsIG1v ZGVsIDYgaXQKIAkJIHNwZWNpZmllcyB0aGUgM3JkIGxldmVsIGNhY2hlLiAg T3RoZXJ3aXNlIHRoZSAybmQKIAkJIGxldmVsIGNhY2hlLiAgKi8KLQkgICAg ICB1bnNpZ25lZCBpbnQgZmFtaWx5ID0gR0xSTyhkbF94ODZfY3B1X2ZlYXR1 cmVzKS5mYW1pbHk7Ci0JICAgICAgdW5zaWduZWQgaW50IG1vZGVsID0gR0xS TyhkbF94ODZfY3B1X2ZlYXR1cmVzKS5tb2RlbDsKKwkgICAgICB1bnNpZ25l ZCBpbnQgZmFtaWx5ID0geDg2X2NwdV9mZWF0dXJlcy0+ZmFtaWx5OworCSAg ICAgIHVuc2lnbmVkIGludCBtb2RlbCA9IHg4Nl9jcHVfZmVhdHVyZXMtPm1v ZGVsOwogCiAJICAgICAgaWYgKGZhbWlseSA9PSAxNSAmJiBtb2RlbCA9PSA2 KQogCQl7CkBAIC0yNTcsNyArMjY2LDggQEAgaW50ZWxfY2hlY2tfd29yZCAo aW50IG5hbWUsIHVuc2lnbmVkIGludCB2YWx1ZSwgYm9vbCAqaGFzX2xldmVs XzIsCiAKIAogc3RhdGljIGxvbmcgaW50IF9fYXR0cmlidXRlX18gKChub2lu bGluZSkpCi1oYW5kbGVfaW50ZWwgKGludCBuYW1lLCB1bnNpZ25lZCBpbnQg bWF4aWR4KQoraGFuZGxlX2ludGVsIChpbnQgbmFtZSwgdW5zaWduZWQgaW50 IG1heGlkeCwKKyAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGNwdV9mZWF0 dXJlcyogeDg2X2NwdV9mZWF0dXJlcykKIHsKICAgLyogUmV0dXJuIC0xIGZv ciBvbGRlciBDUFVzLiAgKi8KICAgaWYgKG1heGlkeCA8IDIpCkBAIC0yODks MTkgKzI5OSwyMyBAQCBoYW5kbGVfaW50ZWwgKGludCBuYW1lLCB1bnNpZ25l ZCBpbnQgbWF4aWR4KQogCX0KIAogICAgICAgLyogUHJvY2VzcyB0aGUgaW5k aXZpZHVhbCByZWdpc3RlcnMnIHZhbHVlLiAgKi8KLSAgICAgIHJlc3VsdCA9 IGludGVsX2NoZWNrX3dvcmQgKG5hbWUsIGVheCwgJmhhc19sZXZlbF8yLCAm bm9fbGV2ZWxfMl9vcl8zKTsKKyAgICAgIHJlc3VsdCA9IGludGVsX2NoZWNr X3dvcmQgKG5hbWUsIGVheCwgJmhhc19sZXZlbF8yLCAmbm9fbGV2ZWxfMl9v cl8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDg2X2Nw dV9mZWF0dXJlcyk7CiAgICAgICBpZiAocmVzdWx0ICE9IDApCiAJcmV0dXJu IHJlc3VsdDsKIAotICAgICAgcmVzdWx0ID0gaW50ZWxfY2hlY2tfd29yZCAo bmFtZSwgZWJ4LCAmaGFzX2xldmVsXzIsICZub19sZXZlbF8yX29yXzMpOwor ICAgICAgcmVzdWx0ID0gaW50ZWxfY2hlY2tfd29yZCAobmFtZSwgZWJ4LCAm aGFzX2xldmVsXzIsICZub19sZXZlbF8yX29yXzMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4ODZfY3B1X2ZlYXR1cmVzKTsKICAgICAg IGlmIChyZXN1bHQgIT0gMCkKIAlyZXR1cm4gcmVzdWx0OwogCi0gICAgICBy ZXN1bHQgPSBpbnRlbF9jaGVja193b3JkIChuYW1lLCBlY3gsICZoYXNfbGV2 ZWxfMiwgJm5vX2xldmVsXzJfb3JfMyk7CisgICAgICByZXN1bHQgPSBpbnRl bF9jaGVja193b3JkIChuYW1lLCBlY3gsICZoYXNfbGV2ZWxfMiwgJm5vX2xl dmVsXzJfb3JfMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHg4Nl9jcHVfZmVhdHVyZXMpOwogICAgICAgaWYgKHJlc3VsdCAhPSAwKQog CXJldHVybiByZXN1bHQ7CiAKLSAgICAgIHJlc3VsdCA9IGludGVsX2NoZWNr X3dvcmQgKG5hbWUsIGVkeCwgJmhhc19sZXZlbF8yLCAmbm9fbGV2ZWxfMl9v cl8zKTsKKyAgICAgIHJlc3VsdCA9IGludGVsX2NoZWNrX3dvcmQgKG5hbWUs IGVkeCwgJmhhc19sZXZlbF8yLCAmbm9fbGV2ZWxfMl9vcl8zLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDg2X2NwdV9mZWF0dXJlcyk7 CiAgICAgICBpZiAocmVzdWx0ICE9IDApCiAJcmV0dXJuIHJlc3VsdDsKICAg ICB9CkBAIC00MzcsNyArNDUxLDcgQEAgYXR0cmlidXRlX2hpZGRlbgogX19j YWNoZV9zeXNjb25mIChpbnQgbmFtZSkKIHsKICAgaWYgKGlzX2ludGVsKQot ICAgIHJldHVybiBoYW5kbGVfaW50ZWwgKG5hbWUsIG1heF9jcHVpZCk7Cisg ICAgcmV0dXJuIGhhbmRsZV9pbnRlbCAobmFtZSwgbWF4X2NwdWlkLCAmR0xS TyhkbF94ODZfY3B1X2ZlYXR1cmVzKSk7CiAKICAgaWYgKGlzX2FtZCkKICAg ICByZXR1cm4gaGFuZGxlX2FtZCAobmFtZSk7CkBAIC00NzUsOSArNDg5LDkg QEAgaW50IF9feDg2X3ByZWZldGNodyBhdHRyaWJ1dGVfaGlkZGVuOwogI2Vu ZGlmCiAKIAotc3RhdGljIHZvaWQKLV9fYXR0cmlidXRlX18oKGNvbnN0cnVj dG9yKSkKLWluaXRfY2FjaGVpbmZvICh2b2lkKQordm9pZAorYXR0cmlidXRl X2hpZGRlbgorX19pbml0X2NhY2hlaW5mb19pbXBsIChjb25zdCBzdHJ1Y3Qg Y3B1X2ZlYXR1cmVzKiB4ODZfY3B1X2ZlYXR1cmVzKQogewogICAvKiBGaW5k IG91dCB3aGF0IGJyYW5kIG9mIHByb2Nlc3Nvci4gICovCiAgIHVuc2lnbmVk IGludCBlYXg7CkBAIC00OTIsMTQgKzUwNiwxNyBAQCBpbml0X2NhY2hlaW5m byAodm9pZCkKIAogICBpZiAoaXNfaW50ZWwpCiAgICAgewotICAgICAgZGF0 YSA9IGhhbmRsZV9pbnRlbCAoX1NDX0xFVkVMMV9EQ0FDSEVfU0laRSwgbWF4 X2NwdWlkKTsKKyAgICAgIGRhdGEgPSBoYW5kbGVfaW50ZWwgKF9TQ19MRVZF TDFfRENBQ0hFX1NJWkUsIG1heF9jcHVpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHg4Nl9jcHVfZmVhdHVyZXMpOwogCi0gICAgICBsb25nIGlu dCBjb3JlID0gaGFuZGxlX2ludGVsIChfU0NfTEVWRUwyX0NBQ0hFX1NJWkUs IG1heF9jcHVpZCk7CisgICAgICBsb25nIGludCBjb3JlID0gaGFuZGxlX2lu dGVsIChfU0NfTEVWRUwyX0NBQ0hFX1NJWkUsIG1heF9jcHVpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg4Nl9jcHVfZmVhdHVy ZXMpOwogICAgICAgYm9vbCBpbmNsdXNpdmVfY2FjaGUgPSB0cnVlOwogCiAg ICAgICAvKiBUcnkgTDMgZmlyc3QuICAqLwogICAgICAgbGV2ZWwgID0gMzsK LSAgICAgIHNoYXJlZCA9IGhhbmRsZV9pbnRlbCAoX1NDX0xFVkVMM19DQUNI RV9TSVpFLCBtYXhfY3B1aWQpOworICAgICAgc2hhcmVkID0gaGFuZGxlX2lu dGVsIChfU0NfTEVWRUwzX0NBQ0hFX1NJWkUsIG1heF9jcHVpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeDg2X2NwdV9mZWF0dXJlcyk7CiAK ICAgICAgIC8qIE51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvcnMgc2hhcmlu ZyBMMiBjYWNoZS4gICovCiAgICAgICBpbnQgdGhyZWFkc19sMjsKQEAgLTUy OSw4ICs1NDYsOCBAQCBpbml0X2NhY2hlaW5mbyAodm9pZCkKIAkgICAgIGhp Z2hlc3QgY2FjaGUgbGV2ZWwuICAqLwogCSAgaWYgKG1heF9jcHVpZCA+PSA0 KQogCSAgICB7Ci0JICAgICAgdW5zaWduZWQgaW50IGZhbWlseSA9IEdMUk8o ZGxfeDg2X2NwdV9mZWF0dXJlcykuZmFtaWx5OwotCSAgICAgIHVuc2lnbmVk IGludCBtb2RlbCA9IEdMUk8oZGxfeDg2X2NwdV9mZWF0dXJlcykubW9kZWw7 CisJCQkJdW5zaWduZWQgaW50IGZhbWlseSA9IHg4Nl9jcHVfZmVhdHVyZXMt PmZhbWlseTsKKwkJCQl1bnNpZ25lZCBpbnQgbW9kZWwgPSB4ODZfY3B1X2Zl YXR1cmVzLT5tb2RlbDsKIAogCSAgICAgIGludCBpID0gMDsKIApAQCAtNjcz LDcgKzY5MCw3IEBAIGludGVsX2J1Z19ub19jYWNoZV9pbmZvOgogCQkgbGV2 ZWwuICAqLwogCiAJICAgICAgdGhyZWFkcwotCQk9ICgoR0xSTyhkbF94ODZf Y3B1X2ZlYXR1cmVzKS5jcHVpZFtDT01NT05fQ1BVSURfSU5ERVhfMV0uZWJ4 CisJCT0gKCh4ODZfY3B1X2ZlYXR1cmVzLT5jcHVpZFtDT01NT05fQ1BVSURf SU5ERVhfMV0uZWJ4CiAJCSAgICA+PiAxNikgJiAweGZmKTsKIAkgICAgfQog CkBAIC03NjgsNCArNzg1LDQ2IEBAIGludGVsX2J1Z19ub19jYWNoZV9pbmZv OgogICAgICBzaGFyZWQgY2FjaGUgc2l6ZSBpcyB0aGUgYXBwcm94aW1hdGUg dmFsdWUgYWJvdmUgd2hpY2ggbm9uLXRlbXBvcmFsCiAgICAgIHN0b3JlIGJl Y29tZXMgZmFzdGVyLiAgKi8KICAgX194ODZfc2hhcmVkX25vbl90ZW1wb3Jh bF90aHJlc2hvbGQgPSBfX3g4Nl9zaGFyZWRfY2FjaGVfc2l6ZSAqIDY7CisK KyNpZiBIQVZFX1RVTkFCTEVTCisgIFRVTkFCTEVfU0VUX1ZBTCh4ODZfc2hh cmVkX25vbl90ZW1wb3JhbF90aHJlc2hvbGQsCisgICAgICAgICAgICAgICAg ICAmX194ODZfc2hhcmVkX25vbl90ZW1wb3JhbF90aHJlc2hvbGQpOworI2Vs c2UKKyAgaWYgKF9fZ2xpYmNfbGlrZWx5IChfZW52aXJvbiAhPSBOVUxMKSkK KyAgICB7CisgICAgICBjaGFyICoqcnVucCA9IF9lbnZpcm9uOworICAgICAg Y2hhciAqZW52bGluZTsKKworICAgICAgd2hpbGUgKCpydW5wICE9IE5VTEwp CisgICAgICAgIHsKKyAgICAgICAgICBlbnZsaW5lID0gKnJ1bnA7CisgICAg ICAgICAgcnVucCsrOworICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJjc3Bu IChlbnZsaW5lLCAiPSIpOworCisgICAgICAgICAgaWYgKGVudmxpbmVbbGVu XSAhPSAnPScpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg IHN3aXRjaCAobGVuKQorICAgICAgICAgICAgeworICAgICAgICAgICAgY2Fz ZSAyOToKKyAgICAgICAgICAgICAgaWYgKCFfX2J1aWx0aW5fZXhwZWN0IChf X2xpYmNfZW5hYmxlX3NlY3VyZSwgMCkpCisgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCAoZW52bGluZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJTSEFSRURfTk9OX1RFTVBPUkFM X1RIUkVTSE9MRCIsIDI5KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICBf X3g4Nl9zaGFyZWRfbm9uX3RlbXBvcmFsX3RocmVzaG9sZCA9IGF0b2kgKCZl bnZsaW5lWzI5XSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2Vu ZGlmCit9CisKK3N0YXRpYyB2b2lkCitfX2F0dHJpYnV0ZV9fKChjb25zdHJ1 Y3RvcikpCitpbml0X2NhY2hlaW5mbyAodm9pZCkKK3sKKyAgX19pbml0X2Nh Y2hlaW5mb19pbXBsICgmR0xSTyhkbF94ODZfY3B1X2ZlYXR1cmVzKSk7CiB9 Ci0tIAoyLjEzLjAuMjE5LmdkYjY1YWNjODgyLWdvb2cKCg== --001a113ad55e80a49005502873b3--