From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v3 24/34] x86emul: support AVX512{F, BW, DQ} integer broadcast insns Date: Tue, 18 Sep 2018 06:08:11 -0600 Message-ID: <5BA0EAAB02000078001E95F8@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 1g2Eng-0000y6-50 for xen-devel@lists.xenproject.org; Tue, 18 Sep 2018 12:08:16 +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 Tm90ZSB0aGF0IHRoZSBwYnJvYWRjYXN0dyB0YWJsZSBlbnRyeSBpbiBldmV4LWRpc3A4LmMgaXMg c2xpZ2h0bHkKZGlmZmVyZW50IGZyb20gd2hhdCBvbmUgd291bGQgZXhwZWN0LCBkdWUgdG8gaXQg cmVxdWlyaW5nIEVWRVguVyB0byBiZQp6ZXJvLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjM6IE5ldy4KCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci9ldmV4LWRpc3A4LmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgt ZGlzcDguYwpAQCAtMTUwLDYgKzE1MCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1 MTJmX2FsbFtdID0KICAgICBJTlNOKHBhZGRxLCAgICAgICAgNjYsICAgMGYsIGQ0LCAgICB2bCwg ICAgICBxLCB2bCksCiAgICAgSU5TTihwYW5kLCAgICAgICAgIDY2LCAgIDBmLCBkYiwgICAgdmws ICAgICBkcSwgdmwpLAogICAgIElOU04ocGFuZG4sICAgICAgICA2NiwgICAwZiwgZGYsICAgIHZs LCAgICAgZHEsIHZsKSwKKy8vICAgICAgIHBicm9hZGNhc3QsICAgNjYsIDBmMzgsIDdjLCAgICAg ICAgICBkcTY0CisgICAgSU5TTihwYnJvYWRjYXN0ZCwgIDY2LCAwZjM4LCA1OCwgICAgZWwsICAg ICAgZCwgZWwpLAorICAgIElOU04ocGJyb2FkY2FzdHEsICA2NiwgMGYzOCwgNTksICAgIGVsLCAg ICAgIHEsIGVsKSwKICAgICBJTlNOKHBjbXAsICAgICAgICAgNjYsIDBmM2EsIDFmLCAgICB2bCwg ICAgIGRxLCB2bCksCiAgICAgSU5TTihwY21wZXFkLCAgICAgIDY2LCAgIDBmLCA3NiwgICAgdmws ICAgICAgZCwgdmwpLAogICAgIElOU04ocGNtcGVxcSwgICAgICA2NiwgMGYzOCwgMjksICAgIHZs LCAgICAgIHEsIHZsKSwKQEAgLTIwOCw2ICsyMTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRl c3QgYXZ4NTEyZl8xMjhbXSA9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmX25v MTI4W10gPSB7CiAgICAgSU5TTihicm9hZGNhc3RmMzJ4NCwgNjYsIDBmMzgsIDFhLCBlbF80LCAg ZCwgdmwpLAorICAgIElOU04oYnJvYWRjYXN0aTMyeDQsIDY2LCAwZjM4LCA1YSwgZWxfNCwgIGQs IHZsKSwKICAgICBJTlNOKGJyb2FkY2FzdHNkLCAgICA2NiwgMGYzOCwgMTksIGVsLCAgICBxLCBl bCksCiAgICAgSU5TTihleHRyYWN0ZjMyeDQsICAgNjYsIDBmM2EsIDE5LCBlbF80LCAgZCwgdmwp LAogICAgIElOU04oZXh0cmFjdGkzMng0LCAgIDY2LCAwZjNhLCAzOSwgZWxfNCwgIGQsIHZsKSwK QEAgLTIxNyw2ICsyMjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZl9ubzEy OFtdCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmXzUxMltdID0gewogICAgIElO U04oYnJvYWRjYXN0ZjY0eDQsIDY2LCAwZjM4LCAxYiwgZWxfNCwgcSwgdmwpLAorICAgIElOU04o YnJvYWRjYXN0aTY0eDQsIDY2LCAwZjM4LCA1YiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oZXh0 cmFjdGY2NHg0LCAgIDY2LCAwZjNhLCAxYiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oZXh0cmFj dGk2NHg0LCAgIDY2LCAwZjNhLCAzYiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oaW5zZXJ0ZjY0 eDQsICAgIDY2LCAwZjNhLCAxYSwgZWxfNCwgcSwgdmwpLApAQCAtMjM2LDYgKzI0MSwxMCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyYndfYWxsW10KICAgICBJTlNOKHBhZGR3LCAg ICAgICA2NiwgICAwZiwgZmQsICAgIHZsLCAgIHcsIHZsKSwKICAgICBJTlNOKHBhdmdiLCAgICAg ICA2NiwgICAwZiwgZTAsICAgIHZsLCAgIGIsIHZsKSwKICAgICBJTlNOKHBhdmd3LCAgICAgICA2 NiwgICAwZiwgZTMsICAgIHZsLCAgIHcsIHZsKSwKKyAgICBJTlNOKHBicm9hZGNhc3RiLCA2Niwg MGYzOCwgNzgsICAgIGVsLCAgIGIsIGVsKSwKKy8vICAgICAgIHBicm9hZGNhc3RiLCA2NiwgMGYz OCwgN2EsICAgICAgICAgIGIKKyAgICBJTlNOKHBicm9hZGNhc3R3LCA2NiwgMGYzOCwgNzksICAg IGVsXzIsIGIsIHZsKSwKKy8vICAgICAgIHBicm9hZGNhc3R3LCA2NiwgMGYzOCwgN2IsICAgICAg ICAgIGIKICAgICBJTlNOKHBjbXAsICAgICAgICA2NiwgMGYzYSwgM2YsICAgIHZsLCAgYncsIHZs KSwKICAgICBJTlNOKHBjbXBlcWIsICAgICA2NiwgICAwZiwgNzQsICAgIHZsLCAgIGIsIHZsKSwK ICAgICBJTlNOKHBjbXBlcXcsICAgICA2NiwgICAwZiwgNzUsICAgIHZsLCAgIHcsIHZsKSwKQEAg LTI4Nyw2ICsyOTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyYndfMTI4W10K IHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJkcV9hbGxbXSA9IHsKICAgICBJTlNOX1BG UChhbmQsICAgICAgICAgICAgICAwZiwgNTQpLAogICAgIElOU05fUEZQKGFuZG4sICAgICAgICAg ICAgIDBmLCA1NSksCisgICAgSU5TTihicm9hZGNhc3RpMzJ4MiwgNjYsIDBmMzgsIDU5LCBlbF8y LCAgZCwgdmwpLAogICAgIElOU05fUEZQKG9yLCAgICAgICAgICAgICAgIDBmLCA1NiksCiAgICAg SU5TTihwbXVsbHEsICAgICAgICAgNjYsIDBmMzgsIDQwLCAgIHZsLCAgcSwgdmwpLAogICAgIElO U05fUEZQKHhvciwgICAgICAgICAgICAgIDBmLCA1NyksCkBAIC0zMDAsNiArMzEwLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2eDUxMmRxXzEyOFtdCiBzdGF0aWMgY29uc3Qgc3RydWN0 IHRlc3QgYXZ4NTEyZHFfbm8xMjhbXSA9IHsKICAgICBJTlNOKGJyb2FkY2FzdGYzMngyLCA2Niwg MGYzOCwgMTksIGVsXzIsIGQsIHZsKSwKICAgICBJTlNOKGJyb2FkY2FzdGY2NHgyLCA2NiwgMGYz OCwgMWEsIGVsXzIsIHEsIHZsKSwKKyAgICBJTlNOKGJyb2FkY2FzdGk2NHgyLCA2NiwgMGYzOCwg NWEsIGVsXzIsIHEsIHZsKSwKICAgICBJTlNOKGV4dHJhY3RmNjR4MiwgICA2NiwgMGYzYSwgMTks IGVsXzIsIHEsIHZsKSwKICAgICBJTlNOKGV4dHJhY3RpNjR4MiwgICA2NiwgMGYzYSwgMzksIGVs XzIsIHEsIHZsKSwKICAgICBJTlNOKGluc2VydGY2NHgyLCAgICA2NiwgMGYzYSwgMTgsIGVsXzIs IHEsIHZsKSwKQEAgLTMwOCw2ICszMTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4 NTEyZHFfbm8xMjhbCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJkcV81MTJbXSA9 IHsKICAgICBJTlNOKGJyb2FkY2FzdGYzMng4LCA2NiwgMGYzOCwgMWIsIGVsXzgsIGQsIHZsKSwK KyAgICBJTlNOKGJyb2FkY2FzdGkzMng4LCA2NiwgMGYzOCwgNWIsIGVsXzgsIGQsIHZsKSwKICAg ICBJTlNOKGV4dHJhY3RmMzJ4OCwgICA2NiwgMGYzYSwgMWIsIGVsXzgsIGQsIHZsKSwKICAgICBJ TlNOKGV4dHJhY3RpMzJ4OCwgICA2NiwgMGYzYSwgM2IsIGVsXzgsIGQsIHZsKSwKICAgICBJTlNO KGluc2VydGYzMng4LCAgICA2NiwgMGYzYSwgMWEsIGVsXzgsIGQsIHZsKSwKLS0tIGEvdG9vbHMv dGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuYworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv c2ltZC5jCkBAIC0yNzIsOSArMjcyLDMzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9fYm9vbChi eXRlX3ZlY190IGIKICNpZiAoSU5UX1NJWkUgPT0gNCB8fCBVSU5UX1NJWkUgPT0gNCB8fCBJTlRf U0laRSA9PSA4IHx8IFVJTlRfU0laRSA9PSA4KSAmJiBcCiAgICAgIGRlZmluZWQoX19BVlg1MTJG X18pICYmIChWRUNfU0laRSA9PSA2NCB8fCBkZWZpbmVkKF9fQVZYNTEyVkxfXykpCiAjIGlmIElO VF9TSVpFID09IDQgfHwgVUlOVF9TSVpFID09IDQKKyMgIGRlZmluZSBicm9hZGNhc3QoeCkgKHsg XAorICAgIHZlY190IHRfOyBcCisgICAgYXNtICggIiV7ZXZleCV9IHZwYnJvYWRjYXN0ZCAlMSwg JTAiIFwKKyAgICAgICAgICA6ICI9diIgKHRfKSA6ICJtIiAoKihpbnRbMV0peyB4IH0pICk7IFwK KyAgICB0XzsgXAorfSkKKyMgIGRlZmluZSBicm9hZGNhc3QyKHgpICh7IFwKKyAgICB2ZWNfdCB0 XzsgXAorICAgIGFzbSAoICJ2cGJyb2FkY2FzdGQgJWsxLCAlMCIgOiAiPXYiICh0XykgOiAiciIg KHgpICk7IFwKKyAgICB0XzsgXAorfSkKICMgIGRlZmluZSBtaXgoeCwgeSkgKCh2ZWNfdClCKG1v dmRxYTMyXywgX21hc2ssICh2c2lfdCkoeCksICh2c2lfdCkoeSksIFwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgwYjAxMDEwMTAxMDEwMTAxMDEgJiAoKDEgPDwgRUxFTV9DT1VOVCkg LSAxKSkpKQogIyBlbGlmIElOVF9TSVpFID09IDggfHwgVUlOVF9TSVpFID09IDgKKyMgIGRlZmlu ZSBicm9hZGNhc3QoeCkgKHsgXAorICAgIHZlY190IHRfOyBcCisgICAgYXNtICggIiV7ZXZleCV9 IHZwYnJvYWRjYXN0cSAlMSwgJTAiIFwKKyAgICAgICAgICA6ICI9diIgKHRfKSA6ICJtIiAoKihs b25nIGxvbmdbMV0peyB4IH0pICk7IFwKKyAgICB0XzsgXAorfSkKKyMgIGlmZGVmIF9feDg2XzY0 X18KKyMgICBkZWZpbmUgYnJvYWRjYXN0Mih4KSAoeyBcCisgICAgdmVjX3QgdF87IFwKKyAgICBh c20gKCAidnBicm9hZGNhc3RxICUxLCAlMCIgOiAiPXYiICh0XykgOiAiciIgKCh4KSArIDBVTEwp ICk7IFwKKyAgICB0XzsgXAorfSkKKyMgIGVuZGlmCiAjICBkZWZpbmUgbWl4KHgsIHkpICgodmVj X3QpQihtb3ZkcWE2NF8sIF9tYXNrLCAodmRpX3QpKHgpLCAodmRpX3QpKHkpLCAwYjAxMDEwMTAx KSkKICMgZW5kaWYKICMgaWYgSU5UX1NJWkUgPT0gNApAQCAtOTcxLDEwICs5OTUsMTQgQEAgaW50 IHNpbWRfdGVzdCh2b2lkKQogICAgIGlmICggIWVxKHN3YXAyKHNyYyksIGludikgKSByZXR1cm4g X19MSU5FX187CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoYnJvYWRjYXN0KQorI2lmZGVmIGJyb2Fk Y2FzdAogICAgIGlmICggIWVxKGJyb2FkY2FzdChFTEVNX0NPVU5UICsgMSksIHNyYyArIGludikg KSByZXR1cm4gX19MSU5FX187CiAjZW5kaWYKIAorI2lmZGVmIGJyb2FkY2FzdDIKKyAgICBpZiAo ICFlcShicm9hZGNhc3QyKEVMRU1fQ09VTlQgKyAxKSwgc3JjICsgaW52KSApIHJldHVybiBfX0xJ TkVfXzsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChpbnRlcmxlYXZlX2xvKSAmJiBkZWZpbmVkKGlu dGVybGVhdmVfaGkpCiAgICAgdG91Y2goc3JjKTsKICAgICB4ID0gaW50ZXJsZWF2ZV9sbyhpbnYs IHNyYyk7Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBi L3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC00NTIsOSArNDUyLDEz IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0MGYzOF90YWJsZSB7CiAgICAgWzB4NDBdID0geyAu c2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50LCAuZDhzID0gZDhzX3ZsIH0sCiAgICAgWzB4NDFd ID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50LCAudHdvX29wID0gMSB9LAogICAgIFsw eDQ1IC4uLiAweDQ3XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ludCwgLmQ4cyA9IGQ4 c192bCB9LAotICAgIFsweDU4IC4uLiAweDU5XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIs IC50d29fb3AgPSAxIH0sCi0gICAgWzB4NWFdID0geyAuc2ltZF9zaXplID0gc2ltZF8xMjgsIC50 d29fb3AgPSAxIH0sCi0gICAgWzB4NzggLi4uIDB4NzldID0geyAuc2ltZF9zaXplID0gc2ltZF9v dGhlciwgLnR3b19vcCA9IDEgfSwKKyAgICBbMHg1OF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290 aGVyLCAudHdvX29wID0gMSwgLmQ4cyA9IDIgfSwKKyAgICBbMHg1OV0gPSB7IC5zaW1kX3NpemUg PSBzaW1kX290aGVyLCAudHdvX29wID0gMSwgLmQ4cyA9IDMgfSwKKyAgICBbMHg1YV0gPSB7IC5z aW1kX3NpemUgPSBzaW1kXzEyOCwgLnR3b19vcCA9IDEsIC5kOHMgPSA0IH0sCisgICAgWzB4NWJd ID0geyAuc2ltZF9zaXplID0gc2ltZF8yNTYsIC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3ZsX2J5 XzIgfSwKKyAgICBbMHg3OF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVyLCAudHdvX29wID0g MSB9LAorICAgIFsweDc5XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC50d29fb3AgPSAx LCAuZDhzID0gMSB9LAorICAgIFsweDdhIC4uLiAweDdjXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRf bm9uZSwgLnR3b19vcCA9IDEgfSwKICAgICBbMHg4Y10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3Bh Y2tlZF9pbnQgfSwKICAgICBbMHg4ZV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQs IC50b19tZW0gPSAxIH0sCiAgICAgWzB4OTAgLi4uIDB4OTNdID0geyAuc2ltZF9zaXplID0gc2lt ZF9vdGhlciwgLnZzaWIgPSAxIH0sCkBAIC0yNjE1LDYgKzI2MTksMTEgQEAgeDg2X2RlY29kZV8w ZjM4KAogICAgICAgICBjdHh0LT5vcGNvZGUgfD0gTUFTS19JTlNSKHZleC5wZngsIFg4NkVNVUxf T1BDX1BGWF9NQVNLKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VW RVhfNjYoMCwgMHg3YSk6IC8qIHZwYnJvYWRjYXN0YiAqLworICAgIGNhc2UgWDg2RU1VTF9PUENf RVZFWF82NigwLCAweDdiKTogLyogdnBicm9hZGNhc3R3ICovCisgICAgY2FzZSBYODZFTVVMX09Q Q19FVkVYXzY2KDAsIDB4N2MpOiAvKiB2cGJyb2FkY2FzdHtkLHF9ICovCisgICAgICAgIGJyZWFr OworCiAgICAgY2FzZSAweGYwOiAvKiBtb3ZiZSAvIGNyYzMyICovCiAgICAgICAgIHN0YXRlLT5k ZXNjIHw9IHJlcG5lX3ByZWZpeCgpID8gQnl0ZU9wIDogTW92OwogICAgICAgICBpZiAoIHJlcF9w cmVmaXgoKSApCkBAIC04MTgyLDYgKzgxOTEsOCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgZ290 byBhdng1MTJmX25vX3NhZTsKIAogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgs IDB4MTgpOiAvKiB2YnJvYWRjYXN0c3MgeG1tL20zMixbeHl6XW1te2t9ICovCisgICAgY2FzZSBY ODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHg1OCk6IC8qIHZwYnJvYWRjYXN0ZCB4bW0vbTMy LFt4eXpdbW17a30gKi8KKyAgICAgICAgb3BfYnl0ZXMgPSBlbGVtX2J5dGVzOwogICAgICAgICBn ZW5lcmF0ZV9leGNlcHRpb25faWYoZXZleC53IHx8IGV2ZXguYnIsIEVYQ19VRCk7CiAgICAgYXZ4 NTEyX2Jyb2FkY2FzdDoKICAgICAgICAgLyoKQEAgLTgyMDAsMTcgKzgyMTEsMjcgQEAgeDg2X2Vt dWxhdGUoCiAKICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDFiKTogLyog dmJyb2FkY2FzdGYzMng4IG0yNTYsem1te2t9ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIHZicm9hZGNhc3RmNjR4NCBtMjU2LHptbXtrfSAqLworICAg IGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4NWIpOiAvKiB2YnJvYWRjYXN0aTMy eDggbTI1Nix6bW17a30gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogdmJyb2FkY2FzdGk2NHg0IG0yNTYsem1te2t9ICovCiAgICAgICAgIGdlbmVyYXRl X2V4Y2VwdGlvbl9pZihlYS50eXBlICE9IE9QX01FTSB8fCBldmV4LmxyICE9IDIsIEVYQ19VRCk7 CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82 NigweDBmMzgsIDB4MTkpOiAvKiB2YnJvYWRjYXN0c2QgeG1tL202NCx7eSx6fW1te2t9ICovCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZicm9hZGNhc3Rm MzJ4MiB4bW0vbTY0LHt5LHp9bW17a30gKi8KLSAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lm KCFldmV4LmxyIHx8IGV2ZXguYnIsIEVYQ19VRCk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlv bl9pZighZXZleC5sciwgRVhDX1VEKTsKKyAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAg Y2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHg1OSk6IC8qIHZwYnJvYWRjYXN0cSB4 bW0vbTY0LFt4eXpdbW17a30gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogdmJyb2FkY2FzdGkzMngyIHhtbS9tNjQsW3h5el1tbXtrfSAqLworICAgICAg ICBpZiAoIGIgPT0gMHg1OSApCisgICAgICAgICAgICBvcF9ieXRlcyA9IDg7CisgICAgICAgIGdl bmVyYXRlX2V4Y2VwdGlvbl9pZihldmV4LmJyLCBFWENfVUQpOwogICAgICAgICBpZiAoICFldmV4 LncgKQogICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyZHEpOwogICAg ICAgICBnb3RvIGF2eDUxMl9icm9hZGNhc3Q7CiAKICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhf NjYoMHgwZjM4LCAweDFhKTogLyogdmJyb2FkY2FzdGYzMng0IG0xMjgse3ksen1tbXtrfSAqLwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YnJvYWRjYXN0 ZjY0eDIgbTEyOCx7eSx6fW1te2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4 MGYzOCwgMHg1YSk6IC8qIHZicm9hZGNhc3RpMzJ4NCBtMTI4LHt5LHp9bW17a30gKi8KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmJyb2FkY2FzdGk2NHgy IG0xMjgse3ksen1tbXtrfSAqLwogICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZWEudHlw ZSAhPSBPUF9NRU0gfHwgIWV2ZXgubHIgfHwgZXZleC5iciwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVYQ19VRCk7CiAgICAgICAgIGlmICggZXZleC53ICkKQEAgLTg0MDQsNiArODQy NSw0NSBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGVhLnR5 cGUgIT0gT1BfTUVNIHx8ICF2ZXgubCB8fCB2ZXgudywgRVhDX1VEKTsKICAgICAgICAgZ290byBz aW1kXzBmX2F2eDI7CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDc4 KTogLyogdnBicm9hZGNhc3RiIHhtbS9tOCxbeHl6XW1te2t9ICovCisgICAgY2FzZSBYODZFTVVM X09QQ19FVkVYXzY2KDB4MGYzOCwgMHg3OSk6IC8qIHZwYnJvYWRjYXN0dyB4bW0vbTE2LFt4eXpd bW17a30gKi8KKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyYncpOworICAg ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZXZleC53IHx8IGV2ZXguYnIsIEVYQ19VRCk7Cisg ICAgICAgIG9wX2J5dGVzID0gZWxlbV9ieXRlcyA9IDEgPDwgKGIgJiAxKTsKKyAgICAgICAgLyog U2VlIHRoZSBjb21tZW50IGF0IHRoZSBhdng1MTJfYnJvYWRjYXN0IGxhYmVsLiAqLworICAgICAg ICBvcF9tYXNrIHw9ICEoYiAmIDEgPyAhKHVpbnQzMl90KW9wX21hc2sgOiAhb3BfbWFzayk7Cisg ICAgICAgIGdvdG8gYXZ4NTEyZl9ub19zYWU7CisKKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhf NjYoMHgwZjM4LCAweDdhKTogLyogdnBicm9hZGNhc3RiIHIzMixbeHl6XW1te2t9ICovCisgICAg Y2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHg3Yik6IC8qIHZwYnJvYWRjYXN0dyBy MzIsW3h5el1tbXtrfSAqLworICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJi dyk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihldmV4LncsIEVYQ19VRCk7CisgICAg ICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBm MzgsIDB4N2MpOiAvKiB2cGJyb2FkY2FzdHtkLHF9IHJlZyxbeHl6XW1te2t9ICovCisgICAgICAg IGdlbmVyYXRlX2V4Y2VwdGlvbl9pZigoZWEudHlwZSAhPSBPUF9SRUcgfHwgZXZleC5iciB8fAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZXgucmVnICE9IDB4ZiB8fCAhZXZleC5S WCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfVUQpOworICAgICAgICBob3N0 X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsKKyAgICAgICAgYXZ4NTEyX3ZsZW5fY2hlY2so ZmFsc2UpOworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3ptbSk7CisKKyAgICAgICAgb3Bj ID0gaW5pdF9ldmV4KHN0dWIpOworICAgICAgICBvcGNbMF0gPSBiOworICAgICAgICAvKiBDb252 ZXJ0IEdQUiBzb3VyY2UgdG8gJXJBWC4gKi8KKyAgICAgICAgZXZleC5iID0gMTsKKyAgICAgICAg aWYgKCAhbW9kZV82NGJpdCgpICkKKyAgICAgICAgICAgIGV2ZXgudyA9IDA7CisgICAgICAgIG9w Y1sxXSA9IG1vZHJtICYgMHhmODsKKyAgICAgICAgaW5zbl9ieXRlcyA9IEVWRVhfUEZYX0JZVEVT ICsgMjsKKyAgICAgICAgb3BjWzJdID0gMHhjMzsKKworICAgICAgICBjb3B5X0VWRVgob3BjLCBl dmV4KTsKKyAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20iIChzcmMudmFsKSA6ICJhIiAo c3JjLnZhbCkpOworCisgICAgICAgIHB1dF9zdHViKHN0dWIpOworICAgICAgICBBU1NFUlQoIXN0 YXRlLT5zaW1kX3NpemUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgWDg2RU1VTF9PUENf VkVYXzY2KDB4MGYzOCwgMHg4Yyk6IC8qIHZwbWFza21vdntkLHF9IG1lbSx7eCx5fW1tLHt4LHl9 bW0gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmMzgsIDB4OGUpOiAvKiB2cG1h c2ttb3Z7ZCxxfSB7eCx5fW1tLHt4LHl9bW0sbWVtICovCiAgICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9pZihlYS50eXBlICE9IE9QX01FTSwgRVhDX1VEKTsKCgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=