From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v5 21/47] x86emul: support AVX512{F, BW, DQ} integer broadcast insns Date: Mon, 19 Nov 2018 03:25:09 -0700 Message-ID: <5BF28F8502000078001FD4C6@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5BF289D802000078001FD3DF@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 1gOgjy-0000mD-KV for xen-devel@lists.xenproject.org; Mon, 19 Nov 2018 10:25:14 +0000 In-Reply-To: <5BF289D802000078001FD3DF@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 , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org Tm90ZSB0aGF0IHRoZSBwYnJvYWRjYXN0dyB0YWJsZSBlbnRyeSBpbiBldmV4LWRpc3A4LmMgaXMg c2xpZ2h0bHkKZGlmZmVyZW50IGZyb20gd2hhdCBvbmUgd291bGQgZXhwZWN0LCBkdWUgdG8gaXQg cmVxdWlyaW5nIEVWRVguVyB0byBiZQp6ZXJvLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjM6IE5ldy4KCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci9ldmV4LWRpc3A4LmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgt ZGlzcDguYwpAQCAtMTY0LDYgKzE2NCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1 MTJmX2FsbFtdID0KICAgICBJTlNOKHBhZGRxLCAgICAgICAgNjYsICAgMGYsIGQ0LCAgICB2bCwg ICAgICBxLCB2bCksCiAgICAgSU5TTihwYW5kLCAgICAgICAgIDY2LCAgIDBmLCBkYiwgICAgdmws ICAgICBkcSwgdmwpLAogICAgIElOU04ocGFuZG4sICAgICAgICA2NiwgICAwZiwgZGYsICAgIHZs LCAgICAgZHEsIHZsKSwKKy8vICAgICAgIHBicm9hZGNhc3QsICAgNjYsIDBmMzgsIDdjLCAgICAg ICAgICBkcTY0CisgICAgSU5TTihwYnJvYWRjYXN0ZCwgIDY2LCAwZjM4LCA1OCwgICAgZWwsICAg ICAgZCwgZWwpLAorICAgIElOU04ocGJyb2FkY2FzdHEsICA2NiwgMGYzOCwgNTksICAgIGVsLCAg ICAgIHEsIGVsKSwKICAgICBJTlNOKHBjbXAsICAgICAgICAgNjYsIDBmM2EsIDFmLCAgICB2bCwg ICAgIGRxLCB2bCksCiAgICAgSU5TTihwY21wZXFkLCAgICAgIDY2LCAgIDBmLCA3NiwgICAgdmws ICAgICAgZCwgdmwpLAogICAgIElOU04ocGNtcGVxcSwgICAgICA2NiwgMGYzOCwgMjksICAgIHZs LCAgICAgIHEsIHZsKSwKQEAgLTIyMiw2ICsyMjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRl c3QgYXZ4NTEyZl8xMjhbXSA9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmX25v MTI4W10gPSB7CiAgICAgSU5TTihicm9hZGNhc3RmMzJ4NCwgNjYsIDBmMzgsIDFhLCBlbF80LCAg ZCwgdmwpLAorICAgIElOU04oYnJvYWRjYXN0aTMyeDQsIDY2LCAwZjM4LCA1YSwgZWxfNCwgIGQs IHZsKSwKICAgICBJTlNOKGJyb2FkY2FzdHNkLCAgICA2NiwgMGYzOCwgMTksIGVsLCAgICBxLCBl bCksCiAgICAgSU5TTihleHRyYWN0ZjMyeDQsICAgNjYsIDBmM2EsIDE5LCBlbF80LCAgZCwgdmwp LAogICAgIElOU04oZXh0cmFjdGkzMng0LCAgIDY2LCAwZjNhLCAzOSwgZWxfNCwgIGQsIHZsKSwK QEAgLTIzMSw2ICsyMzUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZl9ubzEy OFtdCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmXzUxMltdID0gewogICAgIElO U04oYnJvYWRjYXN0ZjY0eDQsIDY2LCAwZjM4LCAxYiwgZWxfNCwgcSwgdmwpLAorICAgIElOU04o YnJvYWRjYXN0aTY0eDQsIDY2LCAwZjM4LCA1YiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oZXh0 cmFjdGY2NHg0LCAgIDY2LCAwZjNhLCAxYiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oZXh0cmFj dGk2NHg0LCAgIDY2LCAwZjNhLCAzYiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oaW5zZXJ0ZjY0 eDQsICAgIDY2LCAwZjNhLCAxYSwgZWxfNCwgcSwgdmwpLApAQCAtMjUwLDYgKzI1NSwxMCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyYndfYWxsW10KICAgICBJTlNOKHBhZGR3LCAg ICAgICA2NiwgICAwZiwgZmQsICAgIHZsLCAgICB3LCB2bCksCiAgICAgSU5TTihwYXZnYiwgICAg ICAgNjYsICAgMGYsIGUwLCAgICB2bCwgICAgYiwgdmwpLAogICAgIElOU04ocGF2Z3csICAgICAg IDY2LCAgIDBmLCBlMywgICAgdmwsICAgIHcsIHZsKSwKKyAgICBJTlNOKHBicm9hZGNhc3RiLCA2 NiwgMGYzOCwgNzgsICAgIGVsLCAgICBiLCBlbCksCisvLyAgICAgICBwYnJvYWRjYXN0YiwgNjYs IDBmMzgsIDdhLCAgICAgICAgICAgYgorICAgIElOU04ocGJyb2FkY2FzdHcsIDY2LCAwZjM4LCA3 OSwgICAgZWxfMiwgIGIsIHZsKSwKKy8vICAgICAgIHBicm9hZGNhc3R3LCA2NiwgMGYzOCwgN2Is ICAgICAgICAgICBiCiAgICAgSU5TTihwY21wLCAgICAgICAgNjYsIDBmM2EsIDNmLCAgICB2bCwg ICBidywgdmwpLAogICAgIElOU04ocGNtcGVxYiwgICAgIDY2LCAgIDBmLCA3NCwgICAgdmwsICAg IGIsIHZsKSwKICAgICBJTlNOKHBjbXBlcXcsICAgICA2NiwgICAwZiwgNzUsICAgIHZsLCAgICB3 LCB2bCksCkBAIC0zMDEsNiArMzEwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2eDUx MmJ3XzEyOFtdCiBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZHFfYWxsW10gPSB7CiAg ICAgSU5TTl9QRlAoYW5kLCAgICAgICAgICAgICAgMGYsIDU0KSwKICAgICBJTlNOX1BGUChhbmRu LCAgICAgICAgICAgICAwZiwgNTUpLAorICAgIElOU04oYnJvYWRjYXN0aTMyeDIsIDY2LCAwZjM4 LCA1OSwgZWxfMiwgIGQsIHZsKSwKICAgICBJTlNOX1BGUChvciwgICAgICAgICAgICAgICAwZiwg NTYpLAogICAgIElOU04ocG11bGxxLCAgICAgICAgIDY2LCAwZjM4LCA0MCwgICB2bCwgIHEsIHZs KSwKICAgICBJTlNOX1BGUCh4b3IsICAgICAgICAgICAgICAwZiwgNTcpLApAQCAtMzE0LDYgKzMy NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJkcV8xMjhbXQogc3RhdGljIGNv bnN0IHN0cnVjdCB0ZXN0IGF2eDUxMmRxX25vMTI4W10gPSB7CiAgICAgSU5TTihicm9hZGNhc3Rm MzJ4MiwgNjYsIDBmMzgsIDE5LCBlbF8yLCBkLCB2bCksCiAgICAgSU5TTihicm9hZGNhc3RmNjR4 MiwgNjYsIDBmMzgsIDFhLCBlbF8yLCBxLCB2bCksCisgICAgSU5TTihicm9hZGNhc3RpNjR4Miwg NjYsIDBmMzgsIDVhLCBlbF8yLCBxLCB2bCksCiAgICAgSU5TTihleHRyYWN0ZjY0eDIsICAgNjYs IDBmM2EsIDE5LCBlbF8yLCBxLCB2bCksCiAgICAgSU5TTihleHRyYWN0aTY0eDIsICAgNjYsIDBm M2EsIDM5LCBlbF8yLCBxLCB2bCksCiAgICAgSU5TTihpbnNlcnRmNjR4MiwgICAgNjYsIDBmM2Es IDE4LCBlbF8yLCBxLCB2bCksCkBAIC0zMjIsNiArMzMzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCB0ZXN0IGF2eDUxMmRxX25vMTI4WwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEy ZHFfNTEyW10gPSB7CiAgICAgSU5TTihicm9hZGNhc3RmMzJ4OCwgNjYsIDBmMzgsIDFiLCBlbF84 LCBkLCB2bCksCisgICAgSU5TTihicm9hZGNhc3RpMzJ4OCwgNjYsIDBmMzgsIDViLCBlbF84LCBk LCB2bCksCiAgICAgSU5TTihleHRyYWN0ZjMyeDgsICAgNjYsIDBmM2EsIDFiLCBlbF84LCBkLCB2 bCksCiAgICAgSU5TTihleHRyYWN0aTMyeDgsICAgNjYsIDBmM2EsIDNiLCBlbF84LCBkLCB2bCks CiAgICAgSU5TTihpbnNlcnRmMzJ4OCwgICAgNjYsIDBmM2EsIDFhLCBlbF84LCBkLCB2bCksCi0t LSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3NpbWQuYwpAQCAtMjc4LDkgKzI3OCwzMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg X3RvX2Jvb2woYnl0ZV92ZWNfdCBiCiAjaWYgKElOVF9TSVpFID09IDQgfHwgVUlOVF9TSVpFID09 IDQgfHwgSU5UX1NJWkUgPT0gOCB8fCBVSU5UX1NJWkUgPT0gOCkgJiYgXAogICAgICBkZWZpbmVk KF9fQVZYNTEyRl9fKSAmJiAoVkVDX1NJWkUgPT0gNjQgfHwgZGVmaW5lZChfX0FWWDUxMlZMX18p KQogIyBpZiBJTlRfU0laRSA9PSA0IHx8IFVJTlRfU0laRSA9PSA0CisjICBkZWZpbmUgYnJvYWRj YXN0KHgpICh7IFwKKyAgICB2ZWNfdCB0XzsgXAorICAgIGFzbSAoICIle2V2ZXglfSB2cGJyb2Fk Y2FzdGQgJTEsICUwIiBcCisgICAgICAgICAgOiAiPXYiICh0XykgOiAibSIgKCooaW50WzFdKXsg eCB9KSApOyBcCisgICAgdF87IFwKK30pCisjICBkZWZpbmUgYnJvYWRjYXN0Mih4KSAoeyBcCisg ICAgdmVjX3QgdF87IFwKKyAgICBhc20gKCAidnBicm9hZGNhc3RkICVrMSwgJTAiIDogIj12IiAo dF8pIDogInIiICh4KSApOyBcCisgICAgdF87IFwKK30pCiAjICBkZWZpbmUgbWl4KHgsIHkpICgo dmVjX3QpQihtb3ZkcWEzMl8sIF9tYXNrLCAodnNpX3QpKHgpLCAodnNpX3QpKHkpLCBcCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoMGIwMTAxMDEwMTAxMDEwMTAxICYgKCgxIDw8IEVM RU1fQ09VTlQpIC0gMSkpKSkKICMgZWxpZiBJTlRfU0laRSA9PSA4IHx8IFVJTlRfU0laRSA9PSA4 CisjICBkZWZpbmUgYnJvYWRjYXN0KHgpICh7IFwKKyAgICB2ZWNfdCB0XzsgXAorICAgIGFzbSAo ICIle2V2ZXglfSB2cGJyb2FkY2FzdHEgJTEsICUwIiBcCisgICAgICAgICAgOiAiPXYiICh0Xykg OiAibSIgKCoobG9uZyBsb25nWzFdKXsgeCB9KSApOyBcCisgICAgdF87IFwKK30pCisjICBpZmRl ZiBfX3g4Nl82NF9fCisjICAgZGVmaW5lIGJyb2FkY2FzdDIoeCkgKHsgXAorICAgIHZlY190IHRf OyBcCisgICAgYXNtICggInZwYnJvYWRjYXN0cSAlMSwgJTAiIDogIj12IiAodF8pIDogInIiICgo eCkgKyAwVUxMKSApOyBcCisgICAgdF87IFwKK30pCisjICBlbmRpZgogIyAgZGVmaW5lIG1peCh4 LCB5KSAoKHZlY190KUIobW92ZHFhNjRfLCBfbWFzaywgKHZkaV90KSh4KSwgKHZkaV90KSh5KSwg MGIwMTAxMDEwMSkpCiAjIGVuZGlmCiAjIGlmIElOVF9TSVpFID09IDQKQEAgLTk3NywxMCArMTAw MSwxNCBAQCBpbnQgc2ltZF90ZXN0KHZvaWQpCiAgICAgaWYgKCAhZXEoc3dhcDIoc3JjKSwgaW52 KSApIHJldHVybiBfX0xJTkVfXzsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChicm9hZGNhc3QpCisj aWZkZWYgYnJvYWRjYXN0CiAgICAgaWYgKCAhZXEoYnJvYWRjYXN0KEVMRU1fQ09VTlQgKyAxKSwg c3JjICsgaW52KSApIHJldHVybiBfX0xJTkVfXzsKICNlbmRpZgogCisjaWZkZWYgYnJvYWRjYXN0 MgorICAgIGlmICggIWVxKGJyb2FkY2FzdDIoRUxFTV9DT1VOVCArIDEpLCBzcmMgKyBpbnYpICkg cmV0dXJuIF9fTElORV9fOworI2VuZGlmCisKICNpZiBkZWZpbmVkKGludGVybGVhdmVfbG8pICYm IGRlZmluZWQoaW50ZXJsZWF2ZV9oaSkKICAgICB0b3VjaChzcmMpOwogICAgIHggPSBpbnRlcmxl YXZlX2xvKGludiwgc3JjKTsKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTQ1 NCw5ICs0NTQsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHQwZjM4X3RhYmxlIHsKICAgICBb MHg0MF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBkOHNfdmwgfSwK ICAgICBbMHg0MV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC50d29fb3AgPSAx IH0sCiAgICAgWzB4NDUgLi4uIDB4NDddID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50 LCAuZDhzID0gZDhzX3ZsIH0sCi0gICAgWzB4NTggLi4uIDB4NTldID0geyAuc2ltZF9zaXplID0g c2ltZF9vdGhlciwgLnR3b19vcCA9IDEgfSwKLSAgICBbMHg1YV0gPSB7IC5zaW1kX3NpemUgPSBz aW1kXzEyOCwgLnR3b19vcCA9IDEgfSwKLSAgICBbMHg3OCAuLi4gMHg3OV0gPSB7IC5zaW1kX3Np emUgPSBzaW1kX290aGVyLCAudHdvX29wID0gMSB9LAorICAgIFsweDU4XSA9IHsgLnNpbWRfc2l6 ZSA9IHNpbWRfb3RoZXIsIC50d29fb3AgPSAxLCAuZDhzID0gMiB9LAorICAgIFsweDU5XSA9IHsg LnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC50d29fb3AgPSAxLCAuZDhzID0gMyB9LAorICAgIFsw eDVhXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfMTI4LCAudHdvX29wID0gMSwgLmQ4cyA9IDQgfSwK KyAgICBbMHg1Yl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kXzI1NiwgLnR3b19vcCA9IDEsIC5kOHMg PSBkOHNfdmxfYnlfMiB9LAorICAgIFsweDc4XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIs IC50d29fb3AgPSAxIH0sCisgICAgWzB4NzldID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwg LnR3b19vcCA9IDEsIC5kOHMgPSAxIH0sCisgICAgWzB4N2EgLi4uIDB4N2NdID0geyAuc2ltZF9z aXplID0gc2ltZF9ub25lLCAudHdvX29wID0gMSB9LAogICAgIFsweDhjXSA9IHsgLnNpbWRfc2l6 ZSA9IHNpbWRfcGFja2VkX2ludCB9LAogICAgIFsweDhlXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRf cGFja2VkX2ludCwgLnRvX21lbSA9IDEgfSwKICAgICBbMHg5MCAuLi4gMHg5M10gPSB7IC5zaW1k X3NpemUgPSBzaW1kX290aGVyLCAudnNpYiA9IDEgfSwKQEAgLTI2MjcsNiArMjYzMSwxMSBAQCB4 ODZfZGVjb2RlXzBmMzgoCiAgICAgICAgIGN0eHQtPm9wY29kZSB8PSBNQVNLX0lOU1IodmV4LnBm eCwgWDg2RU1VTF9PUENfUEZYX01BU0spOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgWDg2 RU1VTF9PUENfRVZFWF82NigwLCAweDdhKTogLyogdnBicm9hZGNhc3RiICovCisgICAgY2FzZSBY ODZFTVVMX09QQ19FVkVYXzY2KDAsIDB4N2IpOiAvKiB2cGJyb2FkY2FzdHcgKi8KKyAgICBjYXNl IFg4NkVNVUxfT1BDX0VWRVhfNjYoMCwgMHg3Yyk6IC8qIHZwYnJvYWRjYXN0e2QscX0gKi8KKyAg ICAgICAgYnJlYWs7CisKICAgICBjYXNlIDB4ZjA6IC8qIG1vdmJlIC8gY3JjMzIgKi8KICAgICAg ICAgc3RhdGUtPmRlc2MgfD0gcmVwbmVfcHJlZml4KCkgPyBCeXRlT3AgOiBNb3Y7CiAgICAgICAg IGlmICggcmVwX3ByZWZpeCgpICkKQEAgLTgxOTgsNiArODIwNyw4IEBAIHg4Nl9lbXVsYXRlKAog ICAgICAgICBnb3RvIGF2eDUxMmZfbm9fc2FlOwogCiAgICAgY2FzZSBYODZFTVVMX09QQ19FVkVY XzY2KDB4MGYzOCwgMHgxOCk6IC8qIHZicm9hZGNhc3RzcyB4bW0vbTMyLFt4eXpdbW17a30gKi8K KyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDU4KTogLyogdnBicm9hZGNh c3RkIHhtbS9tMzIsW3h5el1tbXtrfSAqLworICAgICAgICBvcF9ieXRlcyA9IGVsZW1fYnl0ZXM7 CiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihldmV4LncgfHwgZXZleC5iciwgRVhDX1VE KTsKICAgICBhdng1MTJfYnJvYWRjYXN0OgogICAgICAgICAvKgpAQCAtODIxNywxNyArODIyOCwy NyBAQCB4ODZfZW11bGF0ZSgKIAogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgs IDB4MWIpOiAvKiB2YnJvYWRjYXN0ZjMyeDggbTI1Nix6bW17a30gKi8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmJyb2FkY2FzdGY2NHg0IG0yNTYsem1t e2t9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHg1Yik6IC8qIHZi cm9hZGNhc3RpMzJ4OCBtMjU2LHptbXtrfSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiB2YnJvYWRjYXN0aTY0eDQgbTI1Nix6bW17a30gKi8KICAgICAg ICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGVhLnR5cGUgIT0gT1BfTUVNIHx8IGV2ZXgubHIgIT0g MiwgRVhDX1VEKTsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgY2FzZSBYODZFTVVM X09QQ19FVkVYXzY2KDB4MGYzOCwgMHgxOSk6IC8qIHZicm9hZGNhc3RzZCB4bW0vbTY0LHt5LHp9 bW17a30gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog dmJyb2FkY2FzdGYzMngyIHhtbS9tNjQse3ksen1tbXtrfSAqLwotICAgICAgICBnZW5lcmF0ZV9l eGNlcHRpb25faWYoIWV2ZXgubHIgfHwgZXZleC5iciwgRVhDX1VEKTsKKyAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKCFldmV4LmxyLCBFWENfVUQpOworICAgICAgICAvKiBmYWxsIHRocm91 Z2ggKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDU5KTogLyogdnBi cm9hZGNhc3RxIHhtbS9tNjQsW3h5el1tbXtrfSAqLworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiB2YnJvYWRjYXN0aTMyeDIgeG1tL202NCxbeHl6XW1te2t9 ICovCisgICAgICAgIGlmICggYiA9PSAweDU5ICkKKyAgICAgICAgICAgIG9wX2J5dGVzID0gODsK KyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGV2ZXguYnIsIEVYQ19VRCk7CiAgICAgICAg IGlmICggIWV2ZXgudyApCiAgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1 MTJkcSk7CiAgICAgICAgIGdvdG8gYXZ4NTEyX2Jyb2FkY2FzdDsKIAogICAgIGNhc2UgWDg2RU1V TF9PUENfRVZFWF82NigweDBmMzgsIDB4MWEpOiAvKiB2YnJvYWRjYXN0ZjMyeDQgbTEyOCx7eSx6 fW1te2t9ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IHZicm9hZGNhc3RmNjR4MiBtMTI4LHt5LHp9bW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BD X0VWRVhfNjYoMHgwZjM4LCAweDVhKTogLyogdmJyb2FkY2FzdGkzMng0IG0xMjgse3ksen1tbXtr fSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YnJv YWRjYXN0aTY0eDIgbTEyOCx7eSx6fW1te2t9ICovCiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlv bl9pZihlYS50eXBlICE9IE9QX01FTSB8fCAhZXZleC5sciB8fCBldmV4LmJyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRVhDX1VEKTsKICAgICAgICAgaWYgKCBldmV4LncgKQpAQCAt ODQyMSw2ICs4NDQyLDQ1IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBnZW5lcmF0ZV9leGNlcHRp b25faWYoZWEudHlwZSAhPSBPUF9NRU0gfHwgIXZleC5sIHx8IHZleC53LCBFWENfVUQpOwogICAg ICAgICBnb3RvIHNpbWRfMGZfYXZ4MjsKIAorICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82Nigw eDBmMzgsIDB4NzgpOiAvKiB2cGJyb2FkY2FzdGIgeG1tL204LFt4eXpdbW17a30gKi8KKyAgICBj YXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDc5KTogLyogdnBicm9hZGNhc3R3IHht bS9tMTYsW3h5el1tbXtrfSAqLworICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1 MTJidyk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihldmV4LncgfHwgZXZleC5iciwg RVhDX1VEKTsKKyAgICAgICAgb3BfYnl0ZXMgPSBlbGVtX2J5dGVzID0gMSA8PCAoYiAmIDEpOwor ICAgICAgICAvKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIGF2eDUxMl9icm9hZGNhc3QgbGFiZWwu ICovCisgICAgICAgIG9wX21hc2sgfD0gIShiICYgMSA/ICEodWludDMyX3Qpb3BfbWFzayA6ICFv cF9tYXNrKTsKKyAgICAgICAgZ290byBhdng1MTJmX25vX3NhZTsKKworICAgIGNhc2UgWDg2RU1V TF9PUENfRVZFWF82NigweDBmMzgsIDB4N2EpOiAvKiB2cGJyb2FkY2FzdGIgcjMyLFt4eXpdbW17 a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDdiKTogLyogdnBi cm9hZGNhc3R3IHIzMixbeHl6XW1te2t9ICovCisgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9o YXZlKGF2eDUxMmJ3KTsKKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGV2ZXgudywgRVhD X1VEKTsKKyAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgY2FzZSBYODZFTVVMX09QQ19F VkVYXzY2KDB4MGYzOCwgMHg3Yyk6IC8qIHZwYnJvYWRjYXN0e2QscX0gcmVnLFt4eXpdbW17a30g Ki8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKChlYS50eXBlICE9IE9QX1JFRyB8fCBl dmV4LmJyIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZleC5yZWcgIT0gMHhm IHx8ICFldmV4LlJYKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ19VRCk7Cisg ICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmYpOworICAgICAgICBhdng1MTJf dmxlbl9jaGVjayhmYWxzZSk7CisgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfem1tKTsKKwor ICAgICAgICBvcGMgPSBpbml0X2V2ZXgoc3R1Yik7CisgICAgICAgIG9wY1swXSA9IGI7CisgICAg ICAgIC8qIENvbnZlcnQgR1BSIHNvdXJjZSB0byAlckFYLiAqLworICAgICAgICBldmV4LmIgPSAx OworICAgICAgICBpZiAoICFtb2RlXzY0Yml0KCkgKQorICAgICAgICAgICAgZXZleC53ID0gMDsK KyAgICAgICAgb3BjWzFdID0gbW9kcm0gJiAweGY4OworICAgICAgICBpbnNuX2J5dGVzID0gRVZF WF9QRlhfQllURVMgKyAyOworICAgICAgICBvcGNbMl0gPSAweGMzOworCisgICAgICAgIGNvcHlf RVZFWChvcGMsIGV2ZXgpOworICAgICAgICBpbnZva2Vfc3R1YigiIiwgIiIsICIrbSIgKHNyYy52 YWwpIDogImEiIChzcmMudmFsKSk7CisKKyAgICAgICAgcHV0X3N0dWIoc3R1Yik7CisgICAgICAg IEFTU0VSVCghc3RhdGUtPnNpbWRfc2l6ZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBY ODZFTVVMX09QQ19WRVhfNjYoMHgwZjM4LCAweDhjKTogLyogdnBtYXNrbW92e2QscX0gbWVtLHt4 LHl9bW0se3gseX1tbSAqLwogICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHg4 ZSk6IC8qIHZwbWFza21vdntkLHF9IHt4LHl9bW0se3gseX1tbSxtZW0gKi8KICAgICAgICAgZ2Vu ZXJhdGVfZXhjZXB0aW9uX2lmKGVhLnR5cGUgIT0gT1BfTUVNLCBFWENfVUQpOwoKCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==