From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v3 27/34] x86emul: support AVX512{F, BW} down conversion moves Date: Tue, 18 Sep 2018 06:09:58 -0600 Message-ID: <5BA0EB1602000078001E9654@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5BA0E58F02000078001E94CE@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g2EpO-0001Ux-SH for xen-devel@lists.xenproject.org; Tue, 18 Sep 2018 12:10:02 +0000 In-Reply-To: <5BA0E58F02000078001E94CE@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 Tm90ZSB0aGF0IHRoZSB2cG1vdnsscyx1c317ZCxxfXcgdGFibGUgZW50cmllcyBpbiBldmV4LWRp c3A4LmMgYXJlCnNsaWdodGx5IGRpZmZlcmVudCBmcm9tIHdoYXQgb25lIHdvdWxkIGV4cGVjdCwg ZHVlIHRvIHRoZW0gcmVxdWlyaW5nCkVWRVguVyB0byBiZSB6ZXJvLgoKU2lnbmVkLW9mZi1ieTog SmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjM6IE5ldy4KCi0tLSBhL3Rvb2xz L3Rlc3RzL3g4Nl9lbXVsYXRvci9ldmV4LWRpc3A4LmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2Vt dWxhdG9yL2V2ZXgtZGlzcDguYwpAQCAtMTYzLDExICsxNjMsMjYgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCB0ZXN0IGF2eDUxMmZfYWxsW10gPQogICAgIElOU04ocG1heHUsICAgICAgICA2NiwgMGYz OCwgM2YsICAgIHZsLCAgICAgZHEsIHZsKSwKICAgICBJTlNOKHBtaW5zLCAgICAgICAgNjYsIDBm MzgsIDM5LCAgICB2bCwgICAgIGRxLCB2bCksCiAgICAgSU5TTihwbWludSwgICAgICAgIDY2LCAw ZjM4LCAzYiwgICAgdmwsICAgICBkcSwgdmwpLAorICAgIElOU04ocG1vdmRiLCAgICAgICBmMywg MGYzOCwgMzEsICAgIHZsXzQsICAgIGIsIHZsKSwKKyAgICBJTlNOKHBtb3ZkdywgICAgICAgZjMs IDBmMzgsIDMzLCAgICB2bF8yLCAgICBiLCB2bCksCisgICAgSU5TTihwbW92cWIsICAgICAgIGYz LCAwZjM4LCAzMiwgICAgdmxfOCwgICAgYiwgdmwpLAorICAgIElOU04ocG1vdnFkLCAgICAgICBm MywgMGYzOCwgMzUsICAgIHZsXzIsIGRfbmIsIHZsKSwKKyAgICBJTlNOKHBtb3ZxdywgICAgICAg ZjMsIDBmMzgsIDM0LCAgICB2bF80LCAgICBiLCB2bCksCisgICAgSU5TTihwbW92c2RiLCAgICAg IGYzLCAwZjM4LCAyMSwgICAgdmxfNCwgICAgYiwgdmwpLAorICAgIElOU04ocG1vdnNkdywgICAg ICBmMywgMGYzOCwgMjMsICAgIHZsXzIsICAgIGIsIHZsKSwKKyAgICBJTlNOKHBtb3ZzcWIsICAg ICAgZjMsIDBmMzgsIDIyLCAgICB2bF84LCAgICBiLCB2bCksCisgICAgSU5TTihwbW92c3FkLCAg ICAgIGYzLCAwZjM4LCAyNSwgICAgdmxfMiwgZF9uYiwgdmwpLAorICAgIElOU04ocG1vdnNxdywg ICAgICBmMywgMGYzOCwgMjQsICAgIHZsXzQsICAgIGIsIHZsKSwKICAgICBJTlNOKHBtb3ZzeGJk LCAgICAgNjYsIDBmMzgsIDIxLCAgICB2bF80LCAgICBiLCB2bCksCiAgICAgSU5TTihwbW92c3hi cSwgICAgIDY2LCAwZjM4LCAyMiwgICAgdmxfOCwgICAgYiwgdmwpLAogICAgIElOU04ocG1vdnN4 d2QsICAgICA2NiwgMGYzOCwgMjMsICAgIHZsXzIsICAgIHcsIHZsKSwKICAgICBJTlNOKHBtb3Zz eHdxLCAgICAgNjYsIDBmMzgsIDI0LCAgICB2bF80LCAgICB3LCB2bCksCiAgICAgSU5TTihwbW92 c3hkcSwgICAgIDY2LCAwZjM4LCAyNSwgICAgdmxfMiwgZF9uYiwgdmwpLAorICAgIElOU04ocG1v dnVzZGIsICAgICBmMywgMGYzOCwgMTEsICAgIHZsXzQsICAgIGIsIHZsKSwKKyAgICBJTlNOKHBt b3Z1c2R3LCAgICAgZjMsIDBmMzgsIDEzLCAgICB2bF8yLCAgICBiLCB2bCksCisgICAgSU5TTihw bW92dXNxYiwgICAgIGYzLCAwZjM4LCAxMiwgICAgdmxfOCwgICAgYiwgdmwpLAorICAgIElOU04o cG1vdnVzcWQsICAgICBmMywgMGYzOCwgMTUsICAgIHZsXzIsIGRfbmIsIHZsKSwKKyAgICBJTlNO KHBtb3Z1c3F3LCAgICAgZjMsIDBmMzgsIDE0LCAgICB2bF80LCAgICBiLCB2bCksCiAgICAgSU5T TihwbW92enhiZCwgICAgIDY2LCAwZjM4LCAzMSwgICAgdmxfNCwgICAgYiwgdmwpLAogICAgIElO U04ocG1vdnp4YnEsICAgICA2NiwgMGYzOCwgMzIsICAgIHZsXzgsICAgIGIsIHZsKSwKICAgICBJ TlNOKHBtb3Z6eHdkLCAgICAgNjYsIDBmMzgsIDMzLCAgICB2bF8yLCAgICB3LCB2bCksCkBAIC0y NzAsNyArMjg1LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJid19hbGxbXQog ICAgIElOU04ocG1pbnN3LCAgICAgIDY2LCAgIDBmLCBlYSwgICAgdmwsICAgdywgdmwpLAogICAg IElOU04ocG1pbnViLCAgICAgIDY2LCAgIDBmLCBkYSwgICAgdmwsICAgYiwgdmwpLAogICAgIElO U04ocG1pbnV3LCAgICAgIDY2LCAwZjM4LCAzYSwgICAgdmwsICAgdywgdmwpLAorICAgIElOU04o cG1vdnN3YiwgICAgIGYzLCAwZjM4LCAyMCwgICAgdmxfMiwgYiwgdmwpLAogICAgIElOU04ocG1v dnN4YncsICAgIDY2LCAwZjM4LCAyMCwgICAgdmxfMiwgYiwgdmwpLAorICAgIElOU04ocG1vdnVz d2IsICAgIGYzLCAwZjM4LCAxMCwgICAgdmxfMiwgYiwgdmwpLAorICAgIElOU04ocG1vdndiLCAg ICAgIGYzLCAwZjM4LCAzMCwgICAgdmxfMiwgYiwgdmwpLAogICAgIElOU04ocG1vdnp4YncsICAg IDY2LCAwZjM4LCAzMCwgICAgdmxfMiwgYiwgdmwpLAogICAgIElOU04ocG11bGh1dywgICAgIDY2 LCAgIDBmLCBlNCwgICAgdmwsICAgdywgdmwpLAogICAgIElOU04ocG11bGh3LCAgICAgIDY2LCAg IDBmLCBlNSwgICAgdmwsICAgdywgdmwpLAotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv c2ltZC5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKQEAgLTI3MSw2ICsy NzEsMTcgQEAgc3RhdGljIGlubGluZSBib29sIF90b19ib29sKGJ5dGVfdmVjX3QgYgogI2VuZGlm CiAjaWYgKElOVF9TSVpFID09IDQgfHwgVUlOVF9TSVpFID09IDQgfHwgSU5UX1NJWkUgPT0gOCB8 fCBVSU5UX1NJWkUgPT0gOCkgJiYgXAogICAgICBkZWZpbmVkKF9fQVZYNTEyRl9fKSAmJiAoVkVD X1NJWkUgPT0gNjQgfHwgZGVmaW5lZChfX0FWWDUxMlZMX18pKQorIyBpZiBFTEVNX0NPVU5UID09 IDggLyogdmV4dHJhY3RpezMyLDY0fXg0ICovIHx8IFwKKyAgICAgKEVMRU1fQ09VTlQgPT0gMTYg JiYgRUxFTV9TSVpFID09IDQgJiYgZGVmaW5lZChfX0FWWDUxMkRRX18pKSAvKiB2ZXh0cmFjdGkz Mng4ICovIHx8IFwKKyAgICAgKEVMRU1fQ09VTlQgPT0gNCAmJiBFTEVNX1NJWkUgPT0gOCAmJiBk ZWZpbmVkKF9fQVZYNTEyRFFfXykpIC8qIHZleHRyYWN0aTY0eDIgKi8KKyMgIGRlZmluZSBsb3df aGFsZih4KSAoeyBcCisgICAgaGFsZl90IHRfOyBcCisgICAgYXNtICggInZleHRyYWN0aSVjW3dd eCVjW25dICQwLCAlW3NdLCAlW2RdIiBcCisgICAgICAgICAgOiBbZF0gIj1tIiAodF8pIFwKKyAg ICAgICAgICA6IFtzXSAidiIgKHgpLCBbd10gImkiIChFTEVNX1NJWkUgKiA4KSwgW25dICJpIiAo RUxFTV9DT1VOVCAvIDIpICk7IFwKKyAgICB0XzsgXAorfSkKKyMgZW5kaWYKICMgaWYgSU5UX1NJ WkUgPT0gNCB8fCBVSU5UX1NJWkUgPT0gNAogIyAgZGVmaW5lIGJyb2FkY2FzdCh4KSAoeyBcCiAg ICAgdmVjX3QgdF87IFwKQEAgLTI4NSw2ICsyOTYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX3Rv X2Jvb2woYnl0ZV92ZWNfdCBiCiB9KQogIyAgZGVmaW5lIG1peCh4LCB5KSAoKHZlY190KUIobW92 ZHFhMzJfLCBfbWFzaywgKHZzaV90KSh4KSwgKHZzaV90KSh5KSwgXAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKDBiMDEwMTAxMDEwMTAxMDEwMSAmICgoMSA8PCBFTEVNX0NPVU5UKSAt IDEpKSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSAoKGhhbGZfdClCKHBtb3ZxZCwgX21hc2ssICh2 ZGlfdCkoeCksICh2c2lfaGFsZl90KXt9LCB+MCkpCiAjIGVsaWYgSU5UX1NJWkUgPT0gOCB8fCBV SU5UX1NJWkUgPT0gOAogIyAgZGVmaW5lIGJyb2FkY2FzdCh4KSAoeyBcCiAgICAgdmVjX3QgdF87 IFwKQEAgLTcxNCw2ICs3MjYsMjcgQEAgc3RhdGljIGlubGluZSBib29sIF90b19ib29sKGJ5dGVf dmVjX3QgYgogIyBlbmRpZgogI2VuZGlmCiAKKyNpZiBWRUNfU0laRSA+PSAxNgorCisjIGlmICFk ZWZpbmVkKGxvd19oYWxmKSAmJiBkZWZpbmVkKEhBTEZfU0laRSkKK3N0YXRpYyBpbmxpbmUgaGFs Zl90IGxvd19oYWxmKHZlY190IHgpCit7CisjICBpZiBIQUxGX1NJWkUgPCBWRUNfU0laRQorICAg IGhhbGZfdCB5OworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBF TEVNX0NPVU5UIC8gMjsgKytpICkKKyAgICAgICAgeVtpXSA9IHhbaV07CisKKyAgICByZXR1cm4g eTsKKyMgIGVsc2UKKyAgICByZXR1cm4geDsKKyMgIGVuZGlmCit9CisjIGVuZGlmCisKKyNlbmRp ZgorCiAjaWYgZGVmaW5lZChfX0FWWDUxMkZfXykgJiYgZGVmaW5lZChGTE9BVF9TSVpFKQogIyBp bmNsdWRlICJzaW1kLWZtYS5jIgogI2VuZGlmCkBAIC0xMDgxLDYgKzExMTQsMjEgQEAgaW50IHNp bWRfdGVzdCh2b2lkKQogCiAjZW5kaWYKIAorI2lmIGRlZmluZWQod2lkZW4xKSAmJiBkZWZpbmVk KHNocmluazEpCisgICAgeworICAgICAgICBoYWxmX3QgYXV4MSA9IGxvd19oYWxmKHNyYyksIGF1 eDI7CisKKyAgICAgICAgdG91Y2goYXV4MSk7CisgICAgICAgIHggPSB3aWRlbjEoYXV4MSk7Cisg ICAgICAgIHRvdWNoKHgpOworICAgICAgICBhdXgyID0gc2hyaW5rMSh4KTsKKyAgICAgICAgdG91 Y2goYXV4Mik7CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgRUxFTV9DT1VOVCAvIDI7ICsraSAp CisgICAgICAgICAgICBpZiAoIGF1eDJbaV0gIT0gc3JjW2ldICkKKyAgICAgICAgICAgICAgICBy ZXR1cm4gX19MSU5FX187CisgICAgfQorI2VuZGlmCisKICNpZmRlZiBkdXBfbG8KICAgICB0b3Vj aChzcmMpOwogICAgIHggPSBkdXBfbG8oc3JjKTsKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxh dG9yL3NpbWQuaAorKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC5oCkBAIC03MCw2 ICs3MCwyMyBAQCB0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShWCiB0eXBl ZGVmIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShWRUNfU0laRSkpKSB2ZGlf dDsKICNlbmRpZgogCisjaWYgVkVDX1NJWkUgPj0gMTYKKworIyBpZiBFTEVNX0NPVU5UID49IDIK KyMgIGlmIFZFQ19TSVpFID4gMzIKKyMgICBkZWZpbmUgSEFMRl9TSVpFIChWRUNfU0laRSAvIDIp CisjICBlbHNlCisjICAgZGVmaW5lIEhBTEZfU0laRSAxNgorIyAgZW5kaWYKK3R5cGVkZWYgdHlw ZW9mKCh2ZWNfdCl7fVswXSkgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoSEFMRl9TSVpFKSkp IGhhbGZfdDsKK3R5cGVkZWYgY2hhciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJ WkUpKSkgdnFpX2hhbGZfdDsKK3R5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3Np emUoSEFMRl9TSVpFKSkpIHZoaV9oYWxmX3Q7Cit0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2 ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdnNpX2hhbGZfdDsKK3R5cGVkZWYgbG9uZyBsb25nIF9f YXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEhBTEZfU0laRSkpKSB2ZGlfaGFsZl90OworIyBlbmRp ZgorCisjZW5kaWYKKwogI2lmIFZFQ19TSVpFID09IDE2CiAjIGRlZmluZSBCKG4sIHMsIGEuLi4p ICAgX19idWlsdGluX2lhMzJfICMjIG4gIyMgMTI4ICMjIHMoYSkKICMgZGVmaW5lIEJfKG4sIHMs IGEuLi4pICBfX2J1aWx0aW5faWEzMl8gIyMgbiAjIyAgICAgICAgcyhhKQotLS0gYS94ZW4vYXJj aC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2Vt dWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtMzA0Niw3ICszMDQ2LDIyIEBAIHg4Nl9kZWNvZGUoCiAg ICAgICAgICAgICAgICAgZCB8PSB2U0lCOwogICAgICAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9 IGV4dDBmMzhfdGFibGVbYl0uc2ltZF9zaXplOwogICAgICAgICAgICAgaWYgKCBldmV4X2VuY29k ZWQoKSApCi0gICAgICAgICAgICAgICAgZGlzcDhzY2FsZSA9IGRlY29kZV9kaXNwOHNjYWxlKGV4 dDBmMzhfdGFibGVbYl0uZDhzLCBzdGF0ZSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgLyoKKyAgICAgICAgICAgICAgICAgKiBWUE1PVlVTKiBhcmUgaWRlbnRpY2FsIHRvIFZQTU9W UyogRGlzcDgtc2NhbGluZy13aXNlLCBidXQKKyAgICAgICAgICAgICAgICAgKiB0aGVpciBhdHRy aWJ1dGVzIGRvbid0IG1hdGNoIHRob3NlIG9mIHRoZSB2ZXhfNjYgZW5jb2RlZAorICAgICAgICAg ICAgICAgICAqIGluc25zIHdpdGggdGhlIHNhbWUgYmFzZSBvcGNvZGVzLiBSYXRoZXIgdGhhbiBh ZGRpbmcgbmV3CisgICAgICAgICAgICAgICAgICogY29sdW1ucyB0byB0aGUgdGFibGUsIGhhbmRs ZSB0aGlzIGhlcmUgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAg ICBpZiAoIGV2ZXgucGZ4ICE9IHZleF9mMyB8fCAoYiAmIDB4ZjgpICE9IDB4MTAgKQorICAgICAg ICAgICAgICAgICAgICBkaXNwOHNjYWxlID0gZGVjb2RlX2Rpc3A4c2NhbGUoZXh0MGYzOF90YWJs ZVtiXS5kOHMsIHN0YXRlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICBkaXNwOHNjYWxlID0gZGVjb2RlX2Rpc3A4c2NhbGUoZXh0 MGYzOF90YWJsZVtiICsgMHgxMF0uZDhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RhdGUpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+ c2ltZF9zaXplID0gc2ltZF9vdGhlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIGV4dF8wZjNhOgpAQCAtODMwNywx MCArODMyMiwxNCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgb3BfYnl0ZXMgPSAxNiA+PiAocG1v dl9jb252ZXJ0X2RlbHRhW2IgJiA3XSAtIHZleC5sKTsKICAgICAgICAgZ290byBzaW1kXzBmX2lu dDsKIAorICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygweDBmMzgsIDB4MTApOiAvKiB2cG1v dnVzd2IgW3h5el1tbSx7eCx5fW1tL21lbXtrfSAqLwogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZF WF82NigweDBmMzgsIDB4MjApOiAvKiB2cG1vdnN4Yncge3gseX1tbS9tZW0sW3h5el1tbXtrfSAq LworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygweDBmMzgsIDB4MjApOiAvKiB2cG1vdnN3 YiBbeHl6XW1tLHt4LHl9bW0vbWVte2t9ICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2 KDB4MGYzOCwgMHgzMCk6IC8qIHZwbW92enhidyB7eCx5fW1tL21lbSxbeHl6XW1te2t9ICovCisg ICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgzMCk6IC8qIHZwbW92d2IgW3h5 el1tbSx7eCx5fW1tL21lbXtrfSAqLwogICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShh dng1MTJidyk7Ci0gICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBpZiAoIGV2ZXgu cGZ4ICE9IHZleF9mMyApCisgICAgICAgIHsKICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYo MHgwZjM4LCAweDIxKTogLyogdnBtb3ZzeGJkIHhtbS9tZW0sW3h5el1tbXtrfSAqLwogICAgIGNh c2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4MjIpOiAvKiB2cG1vdnN4YnEgeG1tL21l bSxbeHl6XW1te2t9ICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHgy Myk6IC8qIHZwbW92c3h3ZCB7eCx5fW1tL21lbSxbeHl6XW1te2t9ICovCkBAIC04MzIxLDcgKzgz NDAsMjggQEAgeDg2X2VtdWxhdGUoCiAgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYz OCwgMHgzMyk6IC8qIHZwbW92enh3ZCB7eCx5fW1tL21lbSxbeHl6XW1te2t9ICovCiAgICAgY2Fz ZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHgzNCk6IC8qIHZwbW92enh3cSB4bW0vbWVt LFt4eXpdbW17a30gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDM1 KTogLyogdnBtb3Z6eGRxIHt4LHl9bW0vbWVtLFt4eXpdbW17a30gKi8KLSAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKGV2ZXgudyAmJiAoYiAmIDcpID09IDUsIEVYQ19VRCk7CisgICAgICAg ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZXZleC53ICYmIChiICYgNykgPT0gNSwgRVhDX1VE KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICBjYXNlIFg4NkVNVUxf T1BDX0VWRVhfRjMoMHgwZjM4LCAweDExKTogLyogdnBtb3Z1c2RiIFt4eXpdbW0seG1tL21lbXtr fSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygweDBmMzgsIDB4MTIpOiAvKiB2cG1v dnVzcWIgW3h5el1tbSx4bW0vbWVte2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0Yz KDB4MGYzOCwgMHgxMyk6IC8qIHZwbW92dXNkdyBbeHl6XW1tLHt4LHl9bW0vbWVte2t9ICovCisg ICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgxNCk6IC8qIHZwbW92dXNxdyBb eHl6XW1tLHhtbS9tZW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfRjMoMHgwZjM4 LCAweDE1KTogLyogdnBtb3Z1c3FkIFt4eXpdbW0se3gseX1tbS9tZW17a30gKi8KKyAgICBjYXNl IFg4NkVNVUxfT1BDX0VWRVhfRjMoMHgwZjM4LCAweDIxKTogLyogdnBtb3ZzZGIgW3h5el1tbSx4 bW0vbWVte2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgyMik6 IC8qIHZwbW92c3FiIFt4eXpdbW0seG1tL21lbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENf RVZFWF9GMygweDBmMzgsIDB4MjMpOiAvKiB2cG1vdnNkdyBbeHl6XW1tLHt4LHl9bW0vbWVte2t9 ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgyNCk6IC8qIHZwbW92 c3F3IFt4eXpdbW0seG1tL21lbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygw eDBmMzgsIDB4MjUpOiAvKiB2cG1vdnNxZCBbeHl6XW1tLHt4LHl9bW0vbWVte2t9ICovCisgICAg Y2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgzMSk6IC8qIHZwbW92ZGIgW3h5el1t bSx4bW0vbWVte2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYX0YzKDB4MGYzOCwgMHgz Mik6IC8qIHZwbW92cWIgW3h5el1tbSx4bW0vbWVte2t9ICovCisgICAgY2FzZSBYODZFTVVMX09Q Q19FVkVYX0YzKDB4MGYzOCwgMHgzMyk6IC8qIHZwbW92ZHcgW3h5el1tbSx7eCx5fW1tL21lbXtr fSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygweDBmMzgsIDB4MzQpOiAvKiB2cG1v dnF3IFt4eXpdbW0seG1tL21lbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF9GMygw eDBmMzgsIDB4MzUpOiAvKiB2cG1vdnFkIFt4eXpdbW0se3gseX1tbS9tZW17a30gKi8KKyAgICAg ICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihldmV4LncsIEVYQ19VRCk7CisgICAgICAgICAg ICBkID0gRHN0TWVtIHwgU3JjUmVnIHwgVHdvT3A7CisgICAgICAgIH0KICAgICAgICAgb3BfYnl0 ZXMgPSAzMiA+PiAocG1vdl9jb252ZXJ0X2RlbHRhW2IgJiA3XSArIDEgLSBldmV4LmxyKTsKICAg ICAgICAgZWxlbV9ieXRlcyA9IChiICYgNykgPCAzID8gMSA6IChiICYgNykgIT0gNSA/IDIgOiA0 OwogICAgICAgICBnb3RvIGF2eDUxMmZfbm9fc2FlOwoKCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==