From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v4 39/44] x86emul: support AVX512F floating-point conversion insns Date: Tue, 25 Sep 2018 07:51:15 -0600 Message-ID: <5BAA3D5302000078001EBB6C@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5BAA34B502000078001EB9B6@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g4nkK-0001vh-Jz for xen-devel@lists.xenproject.org; Tue, 25 Sep 2018 13:51:24 +0000 In-Reply-To: <5BAA34B502000078001EB9B6@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Wei Liu List-Id: xen-devel@lists.xenproject.org VkNWVFBTMlBELCBzaGFyaW5nIGl0cyBtYWluIG9wY29kZSB3aXRoIG90aGVycywgbmVlZHMgYSAi bWFudWFsIgpvdmVycmlkZSBvZiBkaXNwOHNjYWxlLgoKVGhlIHNpbWRfc2l6ZSBjaGFuZ2UgZm9y IHR3b2J5dGVfdGFibGVbMHg1YV0gaXMgYmVuaWduIHRvIHByZS1leGlzdGluZwpjb2RlLCBidXQg YWxsb3dzIGRlY29kZV9kaXNwOHNjYWxlKCkgdG8gd29yayBhcyBpcyBoZXJlLgoKQWxzbyBjb3Jy ZWN0IHRoZSBjb21tZW50IG9uIGFuIEFWWCBjb3VudGVycGFydC4KClNpZ25lZC1vZmYtYnk6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnY0OiBOZXcuCgotLS0gYS90b29scy90 ZXN0cy94ODZfZW11bGF0b3IvZXZleC1kaXNwOC5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVs YXRvci9ldmV4LWRpc3A4LmMKQEAgLTk4LDYgKzk4LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dGVzdCBhdng1MTJmX2FsbFtdID0KICAgICBJTlNOX0ZQKGNtcCwgICAgICAgICAgICAgMGYsIGMy KSwKICAgICBJTlNOKGNvbWlzZCwgICAgICAgNjYsICAgMGYsIDJmLCAgICBlbCwgICAgICBxLCBl bCksCiAgICAgSU5TTihjb21pc3MsICAgICAgICAgLCAgIDBmLCAyZiwgICAgZWwsICAgICAgZCwg ZWwpLAorICAgIElOU04oY3Z0cGQycHMsICAgICA2NiwgICAwZiwgNWEsICAgIHZsLCAgICAgIHEs IHZsKSwKKyAgICBJTlNOKGN2dHBoMnBzLCAgICAgNjYsIDBmMzgsIDEzLCAgICB2bF8yLCBkX25i LCB2bCksCisgICAgSU5TTihjdnRwczJwZCwgICAgICAgLCAgIDBmLCA1YSwgICAgdmxfMiwgICAg ZCwgdmwpLAorICAgIElOU04oY3Z0cHMycGgsICAgICA2NiwgMGYzYSwgMWQsICAgIHZsXzIsIGRf bmIsIHZsKSwKKyAgICBJTlNOKGN2dHNkMnNzLCAgICAgZjIsICAgMGYsIDVhLCAgICBlbCwgICAg ICBxLCBlbCksCisgICAgSU5TTihjdnRzczJzZCwgICAgIGYzLCAgIDBmLCA1YSwgICAgZWwsICAg ICAgZCwgZWwpLAogICAgIElOU05fRlAoZGl2LCAgICAgICAgICAgICAwZiwgNWUpLAogICAgIElO U04oZm1hZGQxMzIsICAgICA2NiwgMGYzOCwgOTgsICAgIHZsLCAgICAgc2QsIHZsKSwKICAgICBJ TlNOKGZtYWRkMTMyLCAgICAgNjYsIDBmMzgsIDk5LCAgICBlbCwgICAgIHNkLCBlbCksCi0tLSBh L3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2Vt dWxhdG9yL3NpbWQuYwpAQCAtMTc2LDYgKzE3Niw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9f Ym9vbChieXRlX3ZlY190IGIKICMgICBkZWZpbmUgbWF4KHgsIHkpIEJSXyhtYXhwcywgX21hc2ss IHgsIHksIHVuZGVmKCksIH4wKQogIyAgIGRlZmluZSBtaW4oeCwgeSkgQlJfKG1pbnBzLCBfbWFz aywgeCwgeSwgdW5kZWYoKSwgfjApCiAjICAgZGVmaW5lIG1peCh4LCB5KSBCKG1vdmFwcywgX21h c2ssIHgsIHksICgwYjAxMDEwMTAxMDEwMTAxMDEgJiBBTExfVFJVRSkpCisjICAgZGVmaW5lIHNo cmluazEoeCkgQlJfKGN2dHBkMnBzLCBfbWFzaywgKHZkZl90KSh4KSwgKHZzZl9oYWxmX3Qpe30s IH4wKQorIyAgIGRlZmluZSB3aWRlbjEoeCkgKCh2ZWNfdClCUihjdnRwczJwZCwgX21hc2ssIHgs ICh2ZGZfdCl1bmRlZigpLCB+MCkpCiAjICAgaWYgVkVDX1NJWkUgPT0gMTYKICMgICAgZGVmaW5l IGludGVybGVhdmVfaGkoeCwgeSkgQih1bnBja2hwcywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4w KQogIyAgICBkZWZpbmUgaW50ZXJsZWF2ZV9sbyh4LCB5KSBCKHVucGNrbHBzLCBfbWFzaywgeCwg eSwgdW5kZWYoKSwgfjApCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmgKKysr IGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuaApAQCAtNjgsNiArNjgsNyBAQCB0eXBl ZGVmIHNob3J0IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplCiB0eXBlZGVmIGludCBfX2F0dHJp YnV0ZV9fKCh2ZWN0b3Jfc2l6ZShWRUNfU0laRSkpKSB2c2lfdDsKICNpZiBWRUNfU0laRSA+PSA4 CiB0eXBlZGVmIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShWRUNfU0laRSkp KSB2ZGlfdDsKK3R5cGVkZWYgZG91YmxlIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKFZFQ19T SVpFKSkpIHZkZl90OwogI2VuZGlmCiAKICNpZiBFTEVNX1NJWkUgPT0gMQpAQCAtOTMsNiArOTQs NyBAQCB0eXBlZGVmIGNoYXIgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoCiB0eXBlZGVmIHNo b3J0IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEhBTEZfU0laRSkpKSB2aGlfaGFsZl90Owog dHlwZWRlZiBpbnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoSEFMRl9TSVpFKSkpIHZzaV9o YWxmX3Q7CiB0eXBlZGVmIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxG X1NJWkUpKSkgdmRpX2hhbGZfdDsKK3R5cGVkZWYgZmxvYXQgX19hdHRyaWJ1dGVfXygodmVjdG9y X3NpemUoSEFMRl9TSVpFKSkpIHZzZl9oYWxmX3Q7CiAjIGVuZGlmCiAKICMgaWYgRUxFTV9DT1VO VCA+PSA0CkBAIC0zMjgsNiArMzMwLDEzIEBAIFJFTihwYW5kbiwgLCBkKTsKIFJFTihwb3IsICwg ZCk7CiBSRU4ocHhvciwgLCBkKTsKICMgZW5kaWYKK09WUihjdnRwZDJwc3gpOworT1ZSKGN2dHBk MnBzeSk7CitPVlIoY3Z0cGgycHMpOworT1ZSKGN2dHBzMnBkKTsKK09WUihjdnRwczJwaCk7CitP VlIoY3Z0c2Qyc3MpOworT1ZSKGN2dHNzMnNkKTsKIE9WUihtb3ZkZHVwKTsKIE9WUihtb3ZudGRx KTsKIE9WUihtb3ZudGRxYSk7Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4 Nl9lbXVsYXRvci5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVs YXRvci5jCkBAIC0zODQyLDYgKzM4NDIsNDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogICAgIGVsc2UKICAgICAgICAgcHJpbnRmKCJza2lwcGVkXG4iKTsKIAorICAgIHByaW50 ZigiJS00MHMiLCAiVGVzdGluZyB2Y3Z0cGgycHMgMzIoJWVjeCksJXptbTd7JWs0fS4uLiIpOwor ICAgIGlmICggc3RhY2tfZXhlYyAmJiBjcHVfaGFzX2F2eDUxMmYgKQorICAgIHsKKyAgICAgICAg ZGVjbF9pbnNuKGV2ZXhfdmN2dHBoMnBzKTsKKyAgICAgICAgZGVjbF9pbnNuKGV2ZXhfdmN2dHBz MnBoKTsKKworICAgICAgICBhc20gdm9sYXRpbGUgKCAidnB0ZXJubG9nZCAkMHg4MSwgJSV6bW03 LCAlJXptbTcsICUlem1tN1xuXHQiCisgICAgICAgICAgICAgICAgICAgICAgICJrbW92dyAlMSwl JWs0XG4iCisgICAgICAgICAgICAgICAgICAgICAgIHB1dF9pbnNuKGV2ZXhfdmN2dHBoMnBzLCAi dmN2dHBoMnBzIDMyKCUwKSwgJSV6bW03JXslJWs0JX0iKQorICAgICAgICAgICAgICAgICAgICAg ICA6OiAiYyIgKE5VTEwpLCAiciIgKDB4MzMzMykgKTsKKworICAgICAgICBzZXRfaW5zbihldmV4 X3ZjdnRwaDJwcyk7CisgICAgICAgIG1lbXNldChyZXMsIDB4ZmYsIDEyOCk7CisgICAgICAgIHJl c1s4XSA9IDB4NDAwMDNjMDA7IC8qICgxLjAsIDIuMCkgKi8KKyAgICAgICAgcmVzWzEwXSA9IDB4 NDQwMDQyMDA7IC8qICgzLjAsIDQuMCkgKi8KKyAgICAgICAgcmVzWzEyXSA9IDB4MzQwMGI4MDA7 IC8qICgtLjUsIC4yNSkgKi8KKyAgICAgICAgcmVzWzE0XSA9IDB4YmMwMDAwMDA7IC8qICgwLjAs IC0xLikgKi8KKyAgICAgICAgcmVncy5lY3ggPSAodW5zaWduZWQgbG9uZylyZXM7CisgICAgICAg IHJjID0geDg2X2VtdWxhdGUoJmN0eHQsICZlbXVsb3BzKTsKKyAgICAgICAgYXNtIHZvbGF0aWxl ICggInZtb3Z1cHMgJSV6bW03LCAlMCIgOiAiPW0iIChyZXNbMTZdKSApOworICAgICAgICBpZiAo IHJjICE9IFg4NkVNVUxfT0tBWSB8fCAhY2hlY2tfZWlwKGV2ZXhfdmN2dHBoMnBzKSApCisgICAg ICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIHByaW50Zigib2theVxuIik7CisKKyAgICAgICAg cHJpbnRmKCIlLTQwcyIsICJUZXN0aW5nIHZjdnRwczJwaCAkMCwlem1tMyw2NCglZWR4KXslazR9 Li4uIik7CisgICAgICAgIGFzbSB2b2xhdGlsZSAoICJ2bW92dXBzICUwLCAlJXptbTNcbiIKKyAg ICAgICAgICAgICAgICAgICAgICAgcHV0X2luc24oZXZleF92Y3Z0cHMycGgsICJ2Y3Z0cHMycGgg JDAsICUlem1tMywgMTI4KCUxKSV7JSVrNCV9IikKKyAgICAgICAgICAgICAgICAgICAgICAgOjog Im0iIChyZXNbMTZdKSwgImQiIChOVUxMKSApOworCisgICAgICAgIHNldF9pbnNuKGV2ZXhfdmN2 dHBzMnBoKTsKKyAgICAgICAgcmVncy5lZHggPSAodW5zaWduZWQgbG9uZylyZXM7CisgICAgICAg IG1lbXNldChyZXMgKyAzMiwgMHhjYywgMzIpOworICAgICAgICByYyA9IHg4Nl9lbXVsYXRlKCZj dHh0LCAmZW11bG9wcyk7CisgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZIHx8ICFjaGVj a19laXAoZXZleF92Y3Z0cHMycGgpICkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAg cmVzWzE1XSA9IHJlc1sxM10gPSByZXNbMTFdID0gcmVzWzldID0gMHhjY2NjY2NjYzsKKyAgICAg ICAgaWYgKCBtZW1jbXAocmVzICsgOCwgcmVzICsgMzIsIDMyKSApCisgICAgICAgICAgICBnb3Rv IGZhaWw7CisgICAgICAgIHByaW50Zigib2theVxuIik7CisgICAgfQorICAgIGVsc2UKKyAgICAg ICAgcHJpbnRmKCJza2lwcGVkXG4iKTsKKwogI3VuZGVmIGRlY2xfaW5zbgogI3VuZGVmIHB1dF9p bnNuCiAjdW5kZWYgc2V0X2luc24KLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKQEAg LTMxMCw3ICszMTAsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHR3b2J5dGVfdGFibGUgewogICAg IFsweDUyIC4uLiAweDUzXSA9IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNfFR3b09wLCBzaW1k X3NpbmdsZV9mcCB9LAogICAgIFsweDU0IC4uLiAweDU3XSA9IHsgRHN0SW1wbGljaXR8U3JjTWVt fE1vZFJNLCBzaW1kX3BhY2tlZF9mcCwgZDhzX3ZsIH0sCiAgICAgWzB4NTggLi4uIDB4NTldID0g eyBEc3RJbXBsaWNpdHxTcmNNZW18TW9kUk0sIHNpbWRfYW55X2ZwLCBkOHNfdmwgfSwKLSAgICBb MHg1YSAuLi4gMHg1Yl0gPSB7IERzdEltcGxpY2l0fFNyY01lbXxNb2RSTXxNb3YsIHNpbWRfb3Ro ZXIgfSwKKyAgICBbMHg1YV0gPSB7IERzdEltcGxpY2l0fFNyY01lbXxNb2RSTXxNb3YsIHNpbWRf YW55X2ZwLCBkOHNfdmwgfSwKKyAgICBbMHg1Yl0gPSB7IERzdEltcGxpY2l0fFNyY01lbXxNb2RS TXxNb3YsIHNpbWRfb3RoZXIgfSwKICAgICBbMHg1YyAuLi4gMHg1Zl0gPSB7IERzdEltcGxpY2l0 fFNyY01lbXxNb2RSTSwgc2ltZF9hbnlfZnAsIGQ4c192bCB9LAogICAgIFsweDYwIC4uLiAweDYy XSA9IHsgRHN0SW1wbGljaXR8U3JjTWVtfE1vZFJNLCBzaW1kX290aGVyLCBkOHNfdmwgfSwKICAg ICBbMHg2MyAuLi4gMHg2N10gPSB7IERzdEltcGxpY2l0fFNyY01lbXxNb2RSTSwgc2ltZF9wYWNr ZWRfaW50LCBkOHNfdmwgfSwKQEAgLTQzNyw3ICs0MzgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGV4dDBmMzhfdGFibGUgewogICAgIFsweDBjIC4uLiAweDBkXSA9IHsgLnNpbWRfc2l6ZSA9IHNp bWRfcGFja2VkX2ZwLCAuZDhzID0gZDhzX3ZsIH0sCiAgICAgWzB4MGUgLi4uIDB4MGZdID0geyAu c2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAgfSwKICAgICBbMHgxMCAuLi4gMHgxMl0gPSB7IC5z aW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBkOHNfdmwgfSwKLSAgICBbMHgxM10g PSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVyLCAudHdvX29wID0gMSB9LAorICAgIFsweDEzXSA9 IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3ZsX2J5 XzIgfSwKICAgICBbMHgxNCAuLi4gMHgxNl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9m cCwgLmQ4cyA9IGQ4c192bCB9LAogICAgIFsweDE3XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFj a2VkX2ludCwgLnR3b19vcCA9IDEgfSwKICAgICBbMHgxOF0gPSB7IC5zaW1kX3NpemUgPSBzaW1k X3NjYWxhcl9vcGMsIC50d29fb3AgPSAxLCAuZDhzID0gMiB9LApAQCAtNTQxLDcgKzU0Miw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0MGYzYV90YWJsZSB7CiAgICAgWzB4MTldID0geyAuc2lt ZF9zaXplID0gc2ltZF8xMjgsIC50b19tZW0gPSAxLCAudHdvX29wID0gMSwgLmQ4cyA9IDQgfSwK ICAgICBbMHgxYV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kXzI1NiwgLmQ4cyA9IGQ4c192bF9ieV8y IH0sCiAgICAgWzB4MWJdID0geyAuc2ltZF9zaXplID0gc2ltZF8yNTYsIC50b19tZW0gPSAxLCAu dHdvX29wID0gMSwgLmQ4cyA9IGQ4c192bF9ieV8yIH0sCi0gICAgWzB4MWRdID0geyAuc2ltZF9z aXplID0gc2ltZF9vdGhlciwgLnRvX21lbSA9IDEsIC50d29fb3AgPSAxIH0sCisgICAgWzB4MWRd ID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnRvX21lbSA9IDEsIC50d29fb3AgPSAxLCAu ZDhzID0gZDhzX3ZsX2J5XzIgfSwKICAgICBbMHgxZSAuLi4gMHgxZl0gPSB7IC5zaW1kX3NpemUg PSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHgyMF0gPSB7IC5zaW1k X3NpemUgPSBzaW1kX25vbmUsIC5kOHMgPSAwIH0sCiAgICAgWzB4MjFdID0geyAuc2ltZF9zaXpl ID0gc2ltZF9vdGhlciwgLmQ4cyA9IDIgfSwKQEAgLTMwNTksNiArMzA2MCwxMSBAQCB4ODZfZGVj b2RlKAogICAgICAgICAgICAgICAgIG1vZHJtX21vZCA9IDM7CiAgICAgICAgICAgICAgICAgYnJl YWs7CiAKKyAgICAgICAgICAgIGNhc2UgMHg1YTogLyogdmN2dHBzMnBkIG5lZWRzIHNwZWNpYWwg Y2FzaW5nICovCisgICAgICAgICAgICAgICAgaWYgKCBkaXNwOHNjYWxlICYmICFldmV4LnBmeCAm JiAhZXZleC5iciApCisgICAgICAgICAgICAgICAgICAgIC0tZGlzcDhzY2FsZTsKKyAgICAgICAg ICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAweDdlOiAvKiB2bW92cSB4bW0vbTY0 LHhtbSBuZWVkcyBzcGVjaWFsIGNhc2luZyAqLwogICAgICAgICAgICAgICAgIGlmICggZGlzcDhz Y2FsZSA9PSAyICYmIGV2ZXgucGZ4ID09IHZleF9mMyApCiAgICAgICAgICAgICAgICAgICAgIGRp c3A4c2NhbGUgPSAzOwpAQCAtNTk2Niw2ICs1OTcyLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgQ0FT RV9TSU1EX0FMTF9GUChfRVZFWCwgMHgwZiwgMHg1ZCk6ICAgIC8qIHZtaW57cCxzfXtzLGR9IFt4 eXpdbW0vbWVtLFt4eXpdbW0sW3h5el1tbXtrfSAqLwogICAgIENBU0VfU0lNRF9BTExfRlAoX0VW RVgsIDB4MGYsIDB4NWUpOiAgICAvKiB2ZGl2e3Asc317cyxkfSBbeHl6XW1tL21lbSxbeHl6XW1t LFt4eXpdbW17a30gKi8KICAgICBDQVNFX1NJTURfQUxMX0ZQKF9FVkVYLCAweDBmLCAweDVmKTog ICAgLyogdm1heHtwLHN9e3MsZH0gW3h5el1tbS9tZW0sW3h5el1tbSxbeHl6XW1te2t9ICovCisg ICAgYXZ4NTEyZl9hbGxfZnA6CiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZigoZXZleC53 ICE9IChldmV4LnBmeCAmIFZFWF9QUkVGSVhfRE9VQkxFX01BU0spIHx8CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVhLnR5cGUgPT0gT1BfTUVNICYmIGV2ZXguYnIgJiYKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZXgucGZ4ICYgVkVYX1BSRUZJWF9TQ0FMQVJf TUFTSykpKSwKQEAgLTY1MjMsNyArNjUzMCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBnb3Rv IHNpbWRfem1tOwogCiAgICAgQ0FTRV9TSU1EX0FMTF9GUCgsIDB4MGYsIDB4NWEpOiAgICAgICAg LyogY3Z0e3Asc317cyxkfTJ7cCxzfXtzLGR9IHhtbS9tZW0seG1tICovCi0gICAgQ0FTRV9TSU1E X0FMTF9GUChfVkVYLCAweDBmLCAweDVhKTogICAgLyogdmN2dHB7cyxkfTJwe3MsZH0geG1tL21l bSx4bW0gKi8KKyAgICBDQVNFX1NJTURfQUxMX0ZQKF9WRVgsIDB4MGYsIDB4NWEpOiAgICAvKiB2 Y3Z0cHtzLGR9MnB7cyxkfSB7eCx5fW1tL21lbSx7eCx5fW1tICovCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmN2dHN7cyxkfTJze3MsZH0geG1tL21lbSx4 bW0seG1tICovCiAgICAgICAgIG9wX2J5dGVzID0gNCA8PCAoKCh2ZXgucGZ4ICYgVkVYX1BSRUZJ WF9TQ0FMQVJfTUFTSykgPyAwIDogMSArIHZleC5sKSArCiAgICAgICAgICAgICAgICAgICAgICAg ICAgISEodmV4LnBmeCAmIFZFWF9QUkVGSVhfRE9VQkxFX01BU0spKTsKQEAgLTY1MzIsNiArNjUz OSwxMiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGdvdG8gc2ltZF8wZl9zc2UyOwogICAg ICAgICBnb3RvIHNpbWRfMGZfYXZ4OwogCisgICAgQ0FTRV9TSU1EX0FMTF9GUChfRVZFWCwgMHgw ZiwgMHg1YSk6ICAgLyogdmN2dHB7cyxkfTJwe3MsZH0gW3h5el1tbS9tZW0sW3h5el1tbXtrfSAq LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZjdnRze3Ms ZH0yc3tzLGR9IHhtbS9tZW0seG1tLHhtbXtrfSAqLworICAgICAgICBvcF9ieXRlcyA9IDQgPDwg KCgoZXZleC5wZnggJiBWRVhfUFJFRklYX1NDQUxBUl9NQVNLKSA/IDAgOiAxICsgZXZleC5scikg KworICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZXgudyk7CisgICAgICAgIGdvdG8gYXZ4NTEy Zl9hbGxfZnA7CisKICAgICBDQVNFX1NJTURfUEFDS0VEX0ZQKCwgMHgwZiwgMHg1Yik6ICAgICAv KiBjdnR7cHMsZHF9MntkcSxwc30geG1tL21lbSx4bW0gKi8KICAgICBDQVNFX1NJTURfUEFDS0VE X0ZQKF9WRVgsIDB4MGYsIDB4NWIpOiAvKiB2Y3Z0e3BzLGRxfTJ7ZHEscHN9IHt4LHl9bW0vbWVt LHt4LHl9bW0gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX0YzKDB4MGYsIDB4NWIpOiAgICAgICAv KiBjdnR0cHMyZHEgeG1tL21lbSx4bW0gKi8KQEAgLTg0MTQsNiArODQyNywxNSBAQCB4ODZfZW11 bGF0ZSgKICAgICAgICAgb3BfYnl0ZXMgPSA4IDw8IHZleC5sOwogICAgICAgICBnb3RvIHNpbWRf MGZfeW1tOwogCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHgxMyk6IC8q IHZjdnRwaDJwcyB7eCx5fW1tL21lbSxbeHl6XW1te2t9ICovCisgICAgICAgIGdlbmVyYXRlX2V4 Y2VwdGlvbl9pZihldmV4LncgfHwgKGVhLnR5cGUgPT0gT1BfTUVNICYmIGV2ZXguYnIpLCBFWENf VUQpOworICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsKKyAgICAgICAg aWYgKCAhZXZleC5iciApCisgICAgICAgICAgICBhdng1MTJfdmxlbl9jaGVjayhmYWxzZSk7Cisg ICAgICAgIG9wX2J5dGVzID0gOCA8PCBldmV4LmxyOworICAgICAgICBlbGVtX2J5dGVzID0gMjsK KyAgICAgICAgZ290byBzaW1kX3ptbTsKKwogICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4 MGYzOCwgMHgxNik6IC8qIHZwZXJtcHMgeW1tL20yNTYseW1tLHltbSAqLwogICAgIGNhc2UgWDg2 RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgzNik6IC8qIHZwZXJtZCB5bW0vbTI1Nix5bW0seW1t ICovCiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighdmV4LmwgfHwgdmV4LncsIEVYQ19V RCk7CkBAIC05MjM3LDI3ICs5MjU5LDc5IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBnb3RvIGF2 eDUxMmZfaW1tX25vX3NhZTsKIAogICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzYSwg MHgxZCk6IC8qIHZjdnRwczJwaCAkaW1tOCx7eCx5fW1tLHhtbS9tZW0gKi8KKyAgICBjYXNlIFg4 NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjNhLCAweDFkKTogLyogdmN2dHBzMnBoICRpbW04LFt4eXpd bW0se3gseX1tbS9tZW17a30gKi8KICAgICB7CiAgICAgICAgIHVpbnQzMl90IG14Y3NyOwogCi0g ICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgudyB8fCB2ZXgucmVnICE9IDB4ZiwgRVhD X1VEKTsKLSAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoZjE2Yyk7CiAgICAgICAgIGZh aWxfaWYoIW9wcy0+d3JpdGUpOworICAgICAgICBpZiAoIGV2ZXhfZW5jb2RlZCgpICkKKyAgICAg ICAgeworICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKChldmV4LncgfHwgZXZleC5y ZWcgIT0gMHhmIHx8ICFldmV4LlJYIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChlYS50eXBlID09IE9QX01FTSAmJiAoZXZleC56IHx8IGV2ZXguYnIpKSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDX1VEKTsKKyAgICAgICAgICAgIGhvc3RfYW5k X3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmYpOworICAgICAgICAgICAgYXZ4NTEyX3ZsZW5fY2hlY2so ZmFsc2UpOworICAgICAgICAgICAgb3BjID0gaW5pdF9ldmV4KHN0dWIpOworICAgICAgICB9Cisg ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lm KHZleC53IHx8IHZleC5yZWcgIT0gMHhmLCBFWENfVUQpOworICAgICAgICAgICAgaG9zdF9hbmRf dmNwdV9tdXN0X2hhdmUoZjE2Yyk7CisgICAgICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0 dWIpOworICAgICAgICB9CisKKyAgICAgICAgb3BfYnl0ZXMgPSA4IDw8IGV2ZXgubHI7CiAKLSAg ICAgICAgb3BjID0gaW5pdF9wcmVmaXhlcyhzdHViKTsKICAgICAgICAgb3BjWzBdID0gYjsKICAg ICAgICAgb3BjWzFdID0gbW9kcm07CiAgICAgICAgIGlmICggZWEudHlwZSA9PSBPUF9NRU0gKQog ICAgICAgICB7CiAgICAgICAgICAgICAvKiBDb252ZXJ0IG1lbW9yeSBvcGVyYW5kIHRvICglckFY KS4gKi8KICAgICAgICAgICAgIHZleC5iID0gMTsKKyAgICAgICAgICAgIGV2ZXguYiA9IDE7CiAg ICAgICAgICAgICBvcGNbMV0gJj0gMHgzODsKICAgICAgICAgfQogICAgICAgICBvcGNbMl0gPSBp bW0xOwotICAgICAgICBpbnNuX2J5dGVzID0gUEZYX0JZVEVTICsgMzsKKyAgICAgICAgaWYgKCBl dmV4X2VuY29kZWQoKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBmdWxs ID0gMDsKKworICAgICAgICAgICAgaW5zbl9ieXRlcyA9IEVWRVhfUEZYX0JZVEVTICsgMzsKKyAg ICAgICAgICAgIGNvcHlfRVZFWChvcGMsIGV2ZXgpOworCisgICAgICAgICAgICBpZiAoIGVhLnR5 cGUgPT0gT1BfTUVNICYmIGV2ZXgub3Btc2sgKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIGZ1bGwgPSAweGZmZmYgPj4gKDE2IC0gb3BfYnl0ZXMgLyAyKTsKKyAgICAgICAgICAgICAg ICBvcF9tYXNrICY9IGZ1bGw7CisgICAgICAgICAgICAgICAgaWYgKCAhb3BfbWFzayApCisgICAg ICAgICAgICAgICAgICAgIGdvdG8gY29tcGxldGVfaW5zbjsKKworICAgICAgICAgICAgICAgIGZp cnN0X2J5dGUgPSBfX2J1aWx0aW5fY3R6KG9wX21hc2spOworICAgICAgICAgICAgICAgIG9wX21h c2sgPj49IGZpcnN0X2J5dGU7CisgICAgICAgICAgICAgICAgZnVsbCA+Pj0gZmlyc3RfYnl0ZTsK KyAgICAgICAgICAgICAgICBmaXJzdF9ieXRlIDw8PSAxOworICAgICAgICAgICAgICAgIG9wX2J5 dGVzID0gKDMyIC0gX19idWlsdGluX2NseihvcF9tYXNrKSkgPDwgMTsKKworICAgICAgICAgICAg ICAgIC8qCisgICAgICAgICAgICAgICAgICogV2UgbWF5IG5lZWQgdG8gcmVhZCAocGFydHMgb2Yp IHRoZSBtZW1vcnkgb3BlcmFuZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICogcHVycG9zZSBv ZiBtZXJnaW5nIGluIG9yZGVyIHRvIGF2b2lkIHNwbGl0dGluZyB0aGUgd3JpdGUKKyAgICAgICAg ICAgICAgICAgKiBiZWxvdyBpbnRvIG11bHRpcGxlIG9uZXMuCisgICAgICAgICAgICAgICAgICov CisgICAgICAgICAgICAgICAgaWYgKCBvcF9tYXNrICE9IGZ1bGwgJiYKKyAgICAgICAgICAgICAg ICAgICAgIChyYyA9IG9wcy0+cmVhZChlYS5tZW0uc2VnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRydW5jYXRlX2VhKGVhLm1lbS5vZmYgKyBmaXJzdF9ieXRlKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKW1tdmFscCArIGZpcnN0 X2J5dGUsIG9wX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0 eHQpKSAhPSBYODZFTVVMX09LQVkgKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg ICAgICBpbnNuX2J5dGVzID0gUEZYX0JZVEVTICsgMzsKKyAgICAgICAgICAgIGNvcHlfVkVYKG9w YywgdmV4KTsKKyAgICAgICAgfQogICAgICAgICBvcGNbM10gPSAweGMzOwogCi0gICAgICAgIGNv cHlfVkVYKG9wYywgdmV4KTsKICAgICAgICAgLyogTGF0Y2ggTVhDU1IgLSB3ZSBtYXkgbmVlZCB0 byByZXN0b3JlIGl0IGJlbG93LiAqLwogICAgICAgICBpbnZva2Vfc3R1Yigic3RteGNzciAlW214 Y3NyXSIsICIiLAogICAgICAgICAgICAgICAgICAgICAiPW0iICgqbW12YWxwKSwgW214Y3NyXSAi PW0iIChteGNzcikgOiAiYSIgKG1tdmFscCkpOwpAQCAtOTI2Niw3ICs5MzQwLDggQEAgeDg2X2Vt dWxhdGUoCiAKICAgICAgICAgaWYgKCBlYS50eXBlID09IE9QX01FTSApCiAgICAgICAgIHsKLSAg ICAgICAgICAgIHJjID0gb3BzLT53cml0ZShlYS5tZW0uc2VnLCBlYS5tZW0ub2ZmLCBtbXZhbHAs IDggPDwgdmV4LmwsIGN0eHQpOworICAgICAgICAgICAgcmMgPSBvcHMtPndyaXRlKGVhLm1lbS5z ZWcsIHRydW5jYXRlX2VhKGVhLm1lbS5vZmYgKyBmaXJzdF9ieXRlKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodm9pZCAqKW1tdmFscCArIGZpcnN0X2J5dGUsIG9wX2J5dGVzLCBjdHh0 KTsKICAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICBhc20gdm9sYXRpbGUgKCAibGRteGNzciAlMCIgOjogIm0iIChteGNz cikgKTsKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0 dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=