From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qv1-xf2f.google.com (mail-qv1-xf2f.google.com [IPv6:2607:f8b0:4864:20::f2f]) by sourceware.org (Postfix) with ESMTPS id 52E0D385BF9E for ; Mon, 29 Nov 2021 21:21:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 52E0D385BF9E Received: by mail-qv1-xf2f.google.com with SMTP id s9so15868101qvk.12 for ; Mon, 29 Nov 2021 13:21:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=BeScRR3LQVj03A516//bFOr6zfN/3JNur6vYGIhCYQE=; b=nyqjmq0tdruiZn42U7OUPGI/e5nvA34MiVC29BLHuqcrQR3EoUu8Z1G6RPIMj0LiX4 MYrxDpHzTdQpBBls265gKftysh87OnpU6raPaQuL4zIQXLXhO5F04G4UJifuz1Q0p0bW Nz/7zjGag+VQ02IKm1WHwuJx8wQd5ctkwgF+n3LC/t7APqTJkghqvdwWkUoIYiS+vC+B CA/F/E5e3GTOy6fBApsIDDO78QX6c+ltLC2PQiXbhkgkPeikljWprE4tkLsynNnehDuE 8v3k5jQhCYbO1xo6xm6GnHjHOs/R2JXehp1chjDqG/amzrSEMZJ7N6BGGJbB216Ded71 vycA== X-Gm-Message-State: AOAM533FHrmGwOCbUSJOb8TWrOVef5VsskTjYcpvA5MGtkRI2bUDMf8O LmAX2CBQy9Fa+iwXciV6vKIVv1R5LWFGcMi3lOhiJ82jNkzkMQ== X-Google-Smtp-Source: ABdhPJzUFB5RJFap4BSuHoHtmSMxQ6azcR+WVyw7Xpu3acJqz4UNY86voGA8EuDUBgLsMqgDPxmF/5UjJZNDC6bxwBQ= X-Received: by 2002:a05:6214:20e3:: with SMTP id 3mr46294136qvk.48.1638220868811; Mon, 29 Nov 2021 13:21:08 -0800 (PST) MIME-Version: 1.0 References: <20211129013246.77321-1-hongtao.liu@intel.com> In-Reply-To: From: Uros Bizjak Date: Mon, 29 Nov 2021 22:20:56 +0100 Message-ID: Subject: Re: [PATCH] Fix regression introduced by r12-5536. To: Hongtao Liu Cc: liuhongt , "gcc-patches@gcc.gnu.org" , "H. J. Lu" Content-Type: multipart/mixed; boundary="000000000000f32ccb05d1f404dd" X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, 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: Mon, 29 Nov 2021 21:21:11 -0000 --000000000000f32ccb05d1f404dd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Nov 29, 2021 at 10:48 AM Hongtao Liu wrote: > > On Mon, Nov 29, 2021 at 3:53 PM Uros Bizjak wrote: > > > > On Mon, Nov 29, 2021 at 2:32 AM liuhongt wrote: > > > > > > There're several failures reported in [1]: > > > 1. unsupported instruction `pextrw` for "pextrw $0, %xmm31, 16(%rax)= " > > > %vpextrw should be used in output templates. > > > 2. ICE in get_attr_memory for movhi_internal since some alternatives > > > are marked as TYPE_SSELOG. > > > Explicitly set memory_attr for those alternatives. > > > > > > Also this patch fixs a typo and some latent bugs which are related to > > > moving HImode from/to sse register w/o TARGET_AVX512FP16. Here are some more fixes: i386: Fix and improve movhi_internal and movhf_internal some more. An (*v,C) alternative can be added to movhi_internal to directly load HImode constant 0 to xmm register. Also, V4SFmode moves can be used for xmm->xmm moves instead of TImode moves when optimizing for size. Fix invalid %vpinsrw insn template, which needs to duplicate %xmm register for AVX targets. Optimize GPR moves in movhf_internal in the same way as in movhi_internal. Fix pinsrw and pextrw templates for AVX targets. Use sselog1 instead of sselog type. Also, handle TARGET_SSE_PARTIAL_REG_DEPENDENCY and TARGET_SSE_SPLIT_REGS targets. 2021-11-29 Uro=C5=A1 Bizjak gcc/ChangeLog: PR target/102811 * config/i386/i386.md (*movhi_internal): Introduce (*v,C) alternative. Do not allocate non-GPR registers. Optimize xmm->xmm moves when optimizing for size. Fix vpinsrw insn template. (*movhf_internal): Fix pinsrw and pextrw insn templates for AVX targets. Use sselog1 type instead of sselog. Optimize GPR moves. Optimize xmm->xmm moves for TARGET_SSE_PARTIAL_REG_DEPENDENCY and TARGET_SSE_SPLIT_REGS targets. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32} w/ and w/o -mf16c. Pushed to master. Uros. --000000000000f32ccb05d1f404dd Content-Type: text/plain; charset="US-ASCII"; name="p.diff.txt" Content-Disposition: attachment; filename="p.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kwl6ebxt0 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kz ODYubWQKaW5kZXggYTM4NGRhZTIzZTIuLmM4ODM3NGM5ZDJiIDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2kzODYvaTM4Ni5tZAorKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZApAQCAtMjQ5NSwx MSArMjQ5NSwxMiBAQAogCSAgIChzeW1ib2xfcmVmICJ0cnVlIikpKV0pCiAKIChkZWZpbmVfaW5z biAiKm1vdmhpX2ludGVybmFsIgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpISSAwICJub25pbW1l ZGlhdGVfb3BlcmFuZCIgIj1yLHIgLHIgLG0gLCprLCprICwqciwqbSwqayw/ciw/diwqdiwqdiwq bSIpCi0JKG1hdGNoX29wZXJhbmQ6SEkgMSAiZ2VuZXJhbF9vcGVyYW5kIiAgICAgICJyICxybixy bSxybiwqciwqa20sKmssKmssQ0JDLHYsIHIsIHYsIG0sIHYiKSldCisgIFsoc2V0IChtYXRjaF9v cGVyYW5kOkhJIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIgorICAgICI9cixyLHIsbSAsKmssKmsg LHIgLG0gLCprICw/ciw/KnYsKnYsKnYsKnYsbSIpCisJKG1hdGNoX29wZXJhbmQ6SEkgMSAiZ2Vu ZXJhbF9vcGVyYW5kIgorICAgICJyICxuLG0scm4sciAsKmttLCprLCprLENCQywqdixyICAsQyAs KnYsbSAsKnYiKSldCiAgICIhKE1FTV9QIChvcGVyYW5kc1swXSkgJiYgTUVNX1AgKG9wZXJhbmRz WzFdKSkKICAgICYmIGl4ODZfaGFyZHJlZ19tb3Zfb2sgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sx XSkiCi0KIHsKICAgc3dpdGNoIChnZXRfYXR0cl90eXBlIChpbnNuKSkKICAgICB7CkBAIC0yNTI2 LDEwICsyNTI3LDEzIEBACiAgICAgICByZXR1cm4gaXg4Nl9vdXRwdXRfc3NlbW92IChpbnNuLCBv cGVyYW5kcyk7CiAKICAgICBjYXNlIFRZUEVfU1NFTE9HMToKKyAgICAgIGlmIChzYXRpc2ZpZXNf Y29uc3RyYWludF9DIChvcGVyYW5kc1sxXSkpCisJcmV0dXJuIHN0YW5kYXJkX3NzZV9jb25zdGFu dF9vcGNvZGUgKGluc24sIG9wZXJhbmRzKTsKKwogICAgICAgaWYgKFNTRV9SRUdfUCAob3BlcmFu ZHNbMF0pKQogCXJldHVybiBNRU1fUCAob3BlcmFuZHNbMV0pCi0JICA/ICIldnBpbnNyd1x0eyQw LCAlMSwgJTB8JTAsICUxLCAwfSIKLQkgIDogIiV2cGluc3J3XHR7JDAsICVrMSwgJTB8JTAsICVr MSwgMH0iOworCSAgPyAiJXZwaW5zcndcdHskMCwgJTEsICVkMHwlZDAsICUxLCAwfSIKKwkgIDog IiV2cGluc3J3XHR7JDAsICVrMSwgJWQwfCVkMCwgJWsxLCAwfSI7CiAgICAgICBlbHNlCiAJcmV0 dXJuIE1FTV9QIChvcGVyYW5kc1swXSkKIAkgID8gIiV2cGV4dHJ3XHR7JDAsICUxLCAlMHwlMCwg JTEsIDB9IgpAQCAtMjU1MCwyMyArMjU1NCwyNSBAQAogICAgIH0KIH0KICAgWyhzZXQgKGF0dHIg ImlzYSIpCi0JKGNvbmQgWyhlcV9hdHRyICJhbHRlcm5hdGl2ZSIgIjksMTAsMTEsMTIiKQorCShj b25kIFsoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI5LDEwLDExLDEyLDEzIikKIAkJICAoY29uc3Rf c3RyaW5nICJzc2UyIikKLQkgICAgICAgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiMTMiKQorCSAg ICAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICIxNCIpCiAJCSAgKGNvbnN0X3N0cmluZyAic3Nl NCIpCiAJICAgICAgIF0KIAkgICAgICAgKGNvbnN0X3N0cmluZyAiKiIpKSkKICAgIChzZXQgKGF0 dHIgInR5cGUiKQotICAgICAoY29uZCBbKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiOSwxMCwxMiwx MyIpCisgICAgIChjb25kIFsoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI0LDUsNiw3IikKKwkgICAg ICAoY29uc3Rfc3RyaW5nICJtc2ttb3YiKQorCSAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI4 IikKKwkgICAgICAoY29uc3Rfc3RyaW5nICJtc2tsb2ciKQorCSAgICAoZXFfYXR0ciAiYWx0ZXJu YXRpdmUiICI5LDEwLDEzLDE0IikKIAkgICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICJU QVJHRVRfQVZYNTEyRlAxNiIpCiAJCShjb25zdF9zdHJpbmcgInNzZW1vdiIpCiAJCShjb25zdF9z dHJpbmcgInNzZWxvZzEiKSkKLQkgICAgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiNCw1LDYsNyIp Ci0JICAgICAgKGNvbnN0X3N0cmluZyAibXNrbW92IikKIAkgICAgKGVxX2F0dHIgImFsdGVybmF0 aXZlIiAiMTEiKQorCSAgICAgIChjb25zdF9zdHJpbmcgInNzZWxvZzEiKQorCSAgICAoZXFfYXR0 ciAiYWx0ZXJuYXRpdmUiICIxMiIpCiAJICAgICAgKGNvbnN0X3N0cmluZyAic3NlbW92IikKLQkg ICAgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiOCIpCi0JICAgICAgKGNvbnN0X3N0cmluZyAibXNr bG9nIikKIAkgICAgKG1hdGNoX3Rlc3QgIm9wdGltaXplX2Z1bmN0aW9uX2Zvcl9zaXplX3AgKGNm dW4pIikKIAkgICAgICAoY29uc3Rfc3RyaW5nICJpbW92IikKIAkgICAgKGFuZCAoZXFfYXR0ciAi YWx0ZXJuYXRpdmUiICIwIikKQEAgLTI1ODEsMzMgKzI1ODcsNTQgQEAKIAkgICAgICAoY29uc3Rf c3RyaW5nICJpbW92eCIpCiAJICAgXQogCSAgIChjb25zdF9zdHJpbmcgImltb3YiKSkpCi0gICAg KHNldCAoYXR0ciAicHJlZml4IikKLQkgKGNvbmQgWyhlcV9hdHRyICJhbHRlcm5hdGl2ZSIgIjks MTAsMTEsMTIsMTMiKQotCQkgIChjb25zdF9zdHJpbmcgIm1heWJlX2V2ZXgiKQotCQkoZXFfYXR0 ciAiYWx0ZXJuYXRpdmUiICI0LDUsNiw3LDgiKQotCQkgIChjb25zdF9zdHJpbmcgInZleCIpCi0J ICAgICAgIF0KLQkgICAgICAgKGNvbnN0X3N0cmluZyAib3JpZyIpKSkKLSAgICAoc2V0IChhdHRy ICJtb2RlIikKLSAgICAgIChjb25kIFsoZXFfYXR0ciAidHlwZSIgImltb3Z4IikKLQkgICAgICAg KGNvbnN0X3N0cmluZyAiU0kiKQotCSAgICAgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiOSwxMCwx MiwxMyIpCi0JICAgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIlRBUkdFVF9BVlg1MTJG UDE2IikKLQkJIChjb25zdF9zdHJpbmcgIkhJIikKLQkJIChjb25zdF9zdHJpbmcgIlRJIikpCi0J ICAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICIxMSIpCi0JICAgICAgIChpZl90aGVuX2Vsc2Ug KG1hdGNoX3Rlc3QgIlRBUkdFVF9BVlg1MTJGUDE2IikKLQkJIChjb25zdF9zdHJpbmcgIkhGIikK LQkJIChjb25zdF9zdHJpbmcgIlNGIikpCi0JICAgICAoYW5kIChlcV9hdHRyICJhbHRlcm5hdGl2 ZSIgIjEsMiIpCi0JCSAgKG1hdGNoX29wZXJhbmQ6SEkgMSAiYWxpZ25lZF9vcGVyYW5kIikpCi0J ICAgICAgIChjb25zdF9zdHJpbmcgIlNJIikKLQkgICAgIChhbmQgKGVxX2F0dHIgImFsdGVybmF0 aXZlIiAiMCIpCi0JCSAgKGlvciAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfUEFSVElBTF9SRUdf U1RBTEwiKSkKLQkJICAgICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9ISU1PREVfTUFUSCIp KSkpCi0JICAgICAgIChjb25zdF9zdHJpbmcgIlNJIikKKyAgIChzZXQgKGF0dHIgInByZWZpeCIp CisJKGNvbmQgWyhlcV9hdHRyICJhbHRlcm5hdGl2ZSIgIjQsNSw2LDcsOCIpCisJCSAoY29uc3Rf c3RyaW5nICJ2ZXgiKQorCSAgICAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI5LDEwLDExLDEy LDEzLDE0IikKKwkJIChjb25zdF9zdHJpbmcgIm1heWJlX2V2ZXgiKQorCSAgICAgIF0KKwkgICAg ICAoY29uc3Rfc3RyaW5nICJvcmlnIikpKQorICAgKHNldCAoYXR0ciAibW9kZSIpCisgICAgIChj b25kIFsoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI5LDEwLDEzLDE0IikKKwkgICAgICAoaWZfdGhl bl9lbHNlIChtYXRjaF90ZXN0ICJUQVJHRVRfQVZYNTEyRlAxNiIpCisJCShjb25zdF9zdHJpbmcg IkhJIikKKwkJKGNvbnN0X3N0cmluZyAiVEkiKSkKKwkgICAgKGVxX2F0dHIgImFsdGVybmF0aXZl IiAiMTEiKQorCSAgICAgIChjb25kIFsobWF0Y2hfdGVzdCAiVEFSR0VUX0FWWCIpCisJCSAgICAg ICAoY29uc3Rfc3RyaW5nICJUSSIpCisJCSAgICAgKGlvciAobm90IChtYXRjaF90ZXN0ICJUQVJH RVRfU1NFMiIpKQorCQkJICAobWF0Y2hfdGVzdCAib3B0aW1pemVfZnVuY3Rpb25fZm9yX3NpemVf cCAoY2Z1bikiKSkKKwkJICAgICAgIChjb25zdF9zdHJpbmcgIlY0U0YiKQorCQkgICAgXQorCQkg ICAgKGNvbnN0X3N0cmluZyAiVEkiKSkKKwkgICAgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiMTIi KQorCSAgICAgIChjb25kIFsobWF0Y2hfdGVzdCAiVEFSR0VUX0FWWDUxMkZQMTYiKQorCQkgICAg ICAgKGNvbnN0X3N0cmluZyAiSEkiKQorCQkgICAgIChtYXRjaF90ZXN0ICJUQVJHRVRfQVZYIikK KwkJICAgICAgIChjb25zdF9zdHJpbmcgIlRJIikKKwkJICAgICAoaW9yIChub3QgKG1hdGNoX3Rl c3QgIlRBUkdFVF9TU0UyIikpCisJCQkgIChtYXRjaF90ZXN0ICJvcHRpbWl6ZV9mdW5jdGlvbl9m b3Jfc2l6ZV9wIChjZnVuKSIpKQorCQkgICAgICAgKGNvbnN0X3N0cmluZyAiVjRTRiIpCisJCSAg ICBdCisJCSAgICAoY29uc3Rfc3RyaW5nICJUSSIpKQorCSAgICAoZXFfYXR0ciAidHlwZSIgImlt b3Z4IikKKwkgICAgICAoY29uc3Rfc3RyaW5nICJTSSIpCisJICAgIChhbmQgKGVxX2F0dHIgImFs dGVybmF0aXZlIiAiMSwyIikKKwkJIChtYXRjaF9vcGVyYW5kOkhJIDEgImFsaWduZWRfb3BlcmFu ZCIpKQorCSAgICAgIChjb25zdF9zdHJpbmcgIlNJIikKKwkgICAgKGFuZCAoZXFfYXR0ciAiYWx0 ZXJuYXRpdmUiICIwIikKKwkJIChpb3IgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1BBUlRJQUxf UkVHX1NUQUxMIikpCisJCSAgICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9ISU1PREVfTUFU SCIpKSkpCisJICAgICAgKGNvbnN0X3N0cmluZyAiU0kiKQogCSAgICBdCi0JICAgIChjb25zdF9z dHJpbmcgIkhJIikpKV0pCisJICAgIChjb25zdF9zdHJpbmcgIkhJIikpKQorICAgKHNldCAoYXR0 ciAicHJlZmVycmVkX2Zvcl9zcGVlZCIpCisgICAgIChjb25kIFsoZXFfYXR0ciAiYWx0ZXJuYXRp dmUiICI5IikKKwkgICAgICAoc3ltYm9sX3JlZiAiVEFSR0VUX0lOVEVSX1VOSVRfTU9WRVNfRlJP TV9WRUMiKQorCSAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICIxMCIpCisJICAgICAgKHN5bWJv bF9yZWYgIlRBUkdFVF9JTlRFUl9VTklUX01PVkVTX1RPX1ZFQyIpCisJICAgXQorCSAgIChzeW1i b2xfcmVmICJ0cnVlIikpKV0pCiAKIDs7IFNpdHVhdGlvbiBpcyBxdWl0ZSB0cmlja3kgYWJvdXQg d2hlbiB0byBjaG9vc2UgZnVsbCBzaXplZCAoU0ltb2RlKSBtb3ZlCiA7OyBvdmVyIFFJbW9kZSBt b3Zlcy4gIEZvciBRX1JFRyAtPiBRX1JFRyBtb3ZlIHdlIHVzZSBmdWxsIHNpemUgb25seSBmb3IK QEAgLTM3NzQsOTIgKzM4MDEsMTEwIEBACiAKIChkZWZpbmVfaW5zbiAiKm1vdmhmX2ludGVybmFs IgogIFsoc2V0IChtYXRjaF9vcGVyYW5kOkhGIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIgotCSAi PT9yLD9tLHYsdiw/cixtLD92LHYiKQorCSAiPT9yLD9yLD9yLD9tLHYsdiw/cixtLD92LHYiKQog ICAgICAgIChtYXRjaF9vcGVyYW5kOkhGIDEgImdlbmVyYWxfb3BlcmFuZCIKLQkgInJtRixyRixD LHYsIHYsdiwgcixtIikpXQorCSAiciAgLEYgLG0gLHJGLEMsdiwgdix2LHIgLG0iKSldCiAgIiEo TUVNX1AgKG9wZXJhbmRzWzBdKSAmJiBNRU1fUCAob3BlcmFuZHNbMV0pKQogICAmJiAobHJhX2lu X3Byb2dyZXNzCiAgICAgICB8fCByZWxvYWRfY29tcGxldGVkCiAgICAgICB8fCAhQ09OU1RfRE9V QkxFX1AgKG9wZXJhbmRzWzFdKQotICAgICAgfHwgKFRBUkdFVF9TU0UgJiYgVEFSR0VUX1NTRV9N QVRICisgICAgICB8fCAoVEFSR0VUX1NTRTIKIAkgICYmIHN0YW5kYXJkX3NzZV9jb25zdGFudF9w IChvcGVyYW5kc1sxXSwgSEZtb2RlKSA9PSAxKQogICAgICAgfHwgbWVtb3J5X29wZXJhbmQgKG9w ZXJhbmRzWzBdLCBIRm1vZGUpKSIKIHsKICAgc3dpdGNoIChnZXRfYXR0cl90eXBlIChpbnNuKSkK ICAgICB7Ci0gICAgY2FzZSBUWVBFX0lNT1Y6Ci0gICAgICByZXR1cm4gIm1vdnt3fVx0eyUxLCAl MHwlMCwgJTF9IjsKLQotICAgIGNhc2UgVFlQRV9TU0VMT0cxOgotICAgICAgcmV0dXJuIHN0YW5k YXJkX3NzZV9jb25zdGFudF9vcGNvZGUgKGluc24sIG9wZXJhbmRzKTsKKyAgICBjYXNlIFRZUEVf SU1PVlg6CisgICAgICAvKiBtb3Z6d2wgaXMgZmFzdGVyIHRoYW4gbW92dyBvbiBwMiBkdWUgdG8g cGFydGlhbCB3b3JkIHN0YWxscywKKwkgdGhvdWdoIG5vdCBhcyBmYXN0IGFzIGFuIGFsaWduZWQg bW92bC4gICovCisgICAgICByZXR1cm4gIm1vdnp7d2x8eH1cdHslMSwgJWswfCVrMCwgJTF9IjsK IAogICAgIGNhc2UgVFlQRV9TU0VNT1Y6CiAgICAgICByZXR1cm4gaXg4Nl9vdXRwdXRfc3NlbW92 IChpbnNuLCBvcGVyYW5kcyk7CiAKLSAgICBjYXNlIFRZUEVfU1NFTE9HOgorICAgIGNhc2UgVFlQ RV9TU0VMT0cxOgorICAgICAgaWYgKHNhdGlzZmllc19jb25zdHJhaW50X0MgKG9wZXJhbmRzWzFd KSkKKwlyZXR1cm4gc3RhbmRhcmRfc3NlX2NvbnN0YW50X29wY29kZSAoaW5zbiwgb3BlcmFuZHMp OworCiAgICAgICBpZiAoU1NFX1JFR19QIChvcGVyYW5kc1swXSkpCiAJcmV0dXJuIE1FTV9QIChv cGVyYW5kc1sxXSkKLQkgICAgICAgPyAicGluc3J3XHR7JDAsICUxLCAlMHwlMCwgJTEsIDB9Igot CSAgICAgICA6ICJwaW5zcndcdHskMCwgJWsxLCAlMHwlMCwgJWsxLCAwfSI7CisJICAgICAgID8g IiV2cGluc3J3XHR7JDAsICUxLCAlZDB8JWQwLCAlMSwgMH0iCisJICAgICAgIDogIiV2cGluc3J3 XHR7JDAsICVrMSwgJWQwfCVkMCwgJWsxLCAwfSI7CiAgICAgICBlbHNlCiAJcmV0dXJuIE1FTV9Q IChvcGVyYW5kc1swXSkKLQkgICAgICAgPyAicGV4dHJ3XHR7JDAsICUxLCAlMHwlMCwgJTEsIDB9 IgotCSAgICAgICA6ICJwZXh0cndcdHskMCwgJTEsICVrMHwlazAsICUxLCAwfSI7CisJICAgICAg ID8gIiV2cGV4dHJ3XHR7JDAsICUxLCAlMHwlMCwgJTEsIDB9IgorCSAgICAgICA6ICIldnBleHRy d1x0eyQwLCAlMSwgJWswfCVrMCwgJTEsIDB9IjsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICBnY2Nf dW5yZWFjaGFibGUgKCk7CisgICAgICBpZiAoZ2V0X2F0dHJfbW9kZSAoaW5zbikgPT0gTU9ERV9T SSkKKwlyZXR1cm4gIm1vdntsfVx0eyVrMSwgJWswfCVrMCwgJWsxfSI7CisgICAgICBlbHNlCisJ cmV0dXJuICJtb3Z7d31cdHslMSwgJTB8JTAsICUxfSI7CiAgICAgfQogfQogICBbKHNldCAoYXR0 ciAiaXNhIikKLQkoY29uZCBbKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiMiwzLDQsNiw3IikKKwko Y29uZCBbKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiNCw1LDYsOCw5IikKIAkJIChjb25zdF9zdHJp bmcgInNzZTIiKQotCSAgICAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI1IikKKwkgICAgICAg KGVxX2F0dHIgImFsdGVybmF0aXZlIiAiNyIpCiAJCSAoY29uc3Rfc3RyaW5nICJzc2U0IikKIAkg ICAgICBdCiAJICAgICAgKGNvbnN0X3N0cmluZyAiKiIpKSkKICAgIChzZXQgKGF0dHIgInR5cGUi KQotCShjb25kIFsoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICIwLDEiKQotCQkgKGNvbnN0X3N0cmlu ZyAiaW1vdiIpCi0JICAgICAgIChlcV9hdHRyICJhbHRlcm5hdGl2ZSIgIjIiKQorCShjb25kIFso ZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI0IikKIAkJIChjb25zdF9zdHJpbmcgInNzZWxvZzEiKQot CSAgICAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI0LDUsNiw3IikKKwkgICAgICAgKGVxX2F0 dHIgImFsdGVybmF0aXZlIiAiNSIpCisJCSAoY29uc3Rfc3RyaW5nICJzc2Vtb3YiKQorCSAgICAg ICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI2LDcsOCw5IikKIAkJIChpZl90aGVuX2Vsc2UKIAkJ ICAgKG1hdGNoX3Rlc3QgKCJUQVJHRVRfQVZYNTEyRlAxNiIpKQogCQkgICAoY29uc3Rfc3RyaW5n ICJzc2Vtb3YiKQotCQkgICAoY29uc3Rfc3RyaW5nICJzc2Vsb2ciKSkKLQkgICAgICBdCi0JICAg ICAgKGNvbnN0X3N0cmluZyAic3NlbW92IikpKQotICAgKHNldCAoYXR0ciAibWVtb3J5IikKLQko Y29uZCBbKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiNCw2IikKLQkJIChjb25zdF9zdHJpbmcgIm5v bmUiKQotCSAgICAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI1IikKLQkJIChjb25zdF9zdHJp bmcgInN0b3JlIikKLQkgICAgICAgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiNyIpCi0JCSAoY29u c3Rfc3RyaW5nICJsb2FkIikKLQkgICAgICBdCi0JICAgICAgKGNvbnN0X3N0cmluZyAiKiIpKSkK KwkJICAgKGNvbnN0X3N0cmluZyAic3NlbG9nMSIpKQorCSAgICAgICAobWF0Y2hfdGVzdCAib3B0 aW1pemVfZnVuY3Rpb25fZm9yX3NpemVfcCAoY2Z1bikiKQorCQkgKGNvbnN0X3N0cmluZyAiaW1v diIpCisJICAgICAgIChhbmQgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiMCIpCisJCSAgICAoaW9y IChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9QQVJUSUFMX1JFR19TVEFMTCIpKQorCQkJIChub3Qg KG1hdGNoX3Rlc3QgIlRBUkdFVF9ISU1PREVfTUFUSCIpKSkpCisJCSAoY29uc3Rfc3RyaW5nICJp bW92IikKKwkgICAgICAgKGFuZCAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICIxLDIiKQorCQkgICAg KG1hdGNoX29wZXJhbmQ6SEkgMSAiYWxpZ25lZF9vcGVyYW5kIikpCisJCSAoY29uc3Rfc3RyaW5n ICJpbW92IikKKwkgICAgICAgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX01PVlgiKQorCQkgICAg KGVxX2F0dHIgImFsdGVybmF0aXZlIiAiMCwyIikpCisJCSAoY29uc3Rfc3RyaW5nICJpbW92eCIp CisJCSBdCisJICAgICAgKGNvbnN0X3N0cmluZyAiaW1vdiIpKSkKICAgIChzZXQgKGF0dHIgInBy ZWZpeCIpCi0JKGNvbmQgWyhlcV9hdHRyICJhbHRlcm5hdGl2ZSIgIjAsMSIpCi0JCSAoY29uc3Rf c3RyaW5nICJvcmlnIikKKwkoY29uZCBbKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiNCw1LDYsNyw4 LDkiKQorCQkgKGNvbnN0X3N0cmluZyAibWF5YmVfdmV4IikKIAkgICAgICBdCi0JICAgICAgKGNv bnN0X3N0cmluZyAibWF5YmVfdmV4IikpKQorCSAgICAgIChjb25zdF9zdHJpbmcgIm9yaWciKSkp CiAgICAoc2V0IChhdHRyICJtb2RlIikKLQkoY29uZCBbKGVxX2F0dHIgImFsdGVybmF0aXZlIiAi MCwxIikKLQkJIChjb25zdF9zdHJpbmcgIkhJIikKLQkgICAgICAgKGVxX2F0dHIgImFsdGVybmF0 aXZlIiAiMiIpCisJKGNvbmQgWyhlcV9hdHRyICJhbHRlcm5hdGl2ZSIgIjQiKQogCQkgKGNvbnN0 X3N0cmluZyAiVjRTRiIpCi0JICAgICAgIChlcV9hdHRyICJhbHRlcm5hdGl2ZSIgIjQsNSw2LDci KQorCSAgICAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI2LDcsOCw5IikKIAkJIChpZl90aGVu X2Vsc2UKIAkJICAgKG1hdGNoX3Rlc3QgIlRBUkdFVF9BVlg1MTJGUDE2IikKIAkJICAgKGNvbnN0 X3N0cmluZyAiSEkiKQogCQkgICAoY29uc3Rfc3RyaW5nICJUSSIpKQotCSAgICAgICAoZXFfYXR0 ciAiYWx0ZXJuYXRpdmUiICIzIikKLQkJIChpZl90aGVuX2Vsc2UKLQkJICAgKG1hdGNoX3Rlc3Qg IlRBUkdFVF9BVlg1MTJGUDE2IikKLQkJICAgKGNvbnN0X3N0cmluZyAiSEYiKQotCQkgICAoY29u c3Rfc3RyaW5nICJTRiIpKQorCSAgICAgICAoZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICI1IikKKwkJ IChjb25kIFsobWF0Y2hfdGVzdCAiVEFSR0VUX0FWWDUxMkZQMTYiKQorCQkJICAoY29uc3Rfc3Ry aW5nICJIRiIpCisJCQkoaW9yIChtYXRjaF90ZXN0ICJUQVJHRVRfU1NFX1BBUlRJQUxfUkVHX0RF UEVOREVOQ1kiKQorCQkJICAgICAobWF0Y2hfdGVzdCAiVEFSR0VUX1NTRV9TUExJVF9SRUdTIikp CisJCQkgIChjb25zdF9zdHJpbmcgIlY0U0YiKQorCQkgICAgICAgXQorCQkgICAgICAgKGNvbnN0 X3N0cmluZyAiU0YiKSkKKwkgICAgICAgKGVxX2F0dHIgInR5cGUiICJpbW92eCIpCisJCSAoY29u c3Rfc3RyaW5nICJTSSIpCisJICAgICAgIChhbmQgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiMSwy IikKKwkJICAgIChtYXRjaF9vcGVyYW5kOkhJIDEgImFsaWduZWRfb3BlcmFuZCIpKQorCQkgKGNv bnN0X3N0cmluZyAiU0kiKQorCSAgICAgICAoYW5kIChlcV9hdHRyICJhbHRlcm5hdGl2ZSIgIjAi KQorCQkgICAgKGlvciAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfUEFSVElBTF9SRUdfU1RBTEwi KSkKKwkJCSAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfSElNT0RFX01BVEgiKSkpKQorCQkgKGNv bnN0X3N0cmluZyAiU0kiKQogCSAgICAgIF0KLQkgICAgICAoY29uc3Rfc3RyaW5nICIqIikpKV0p CisJICAgICAgKGNvbnN0X3N0cmluZyAiSEkiKSkpXSkKIAogKGRlZmluZV9zcGxpdAogICBbKHNl dCAobWF0Y2hfb3BlcmFuZCAwICJhbnlfZnBfcmVnaXN0ZXJfb3BlcmFuZCIpCg== --000000000000f32ccb05d1f404dd--