From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v4 25/44] x86emul: support AVX512{F, BW, DQ} integer broadcast insns Date: Tue, 25 Sep 2018 07:41:59 -0600 Message-ID: <5BAA3B2702000078001EBABD@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 all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g4nbI-00086c-DW for xen-devel@lists.xenproject.org; Tue, 25 Sep 2018 13:42:04 +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 , Jan Beulich Cc: George Dunlap , Andrew Cooper , Wei Liu List-Id: xen-devel@lists.xenproject.org Tm90ZSB0aGF0IHRoZSBwYnJvYWRjYXN0dyB0YWJsZSBlbnRyeSBpbiBldmV4LWRpc3A4LmMgaXMg c2xpZ2h0bHkKZGlmZmVyZW50IGZyb20gd2hhdCBvbmUgd291bGQgZXhwZWN0LCBkdWUgdG8gaXQg cmVxdWlyaW5nIEVWRVguVyB0byBiZQp6ZXJvLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjM6IE5ldy4KCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci9ldmV4LWRpc3A4LmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgt ZGlzcDguYwpAQCAtMTUzLDYgKzE1Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1 MTJmX2FsbFtdID0KICAgICBJTlNOKHBhZGRxLCAgICAgICAgNjYsICAgMGYsIGQ0LCAgICB2bCwg ICAgICBxLCB2bCksCiAgICAgSU5TTihwYW5kLCAgICAgICAgIDY2LCAgIDBmLCBkYiwgICAgdmws ICAgICBkcSwgdmwpLAogICAgIElOU04ocGFuZG4sICAgICAgICA2NiwgICAwZiwgZGYsICAgIHZs LCAgICAgZHEsIHZsKSwKKy8vICAgICAgIHBicm9hZGNhc3QsICAgNjYsIDBmMzgsIDdjLCAgICAg ICAgICBkcTY0CisgICAgSU5TTihwYnJvYWRjYXN0ZCwgIDY2LCAwZjM4LCA1OCwgICAgZWwsICAg ICAgZCwgZWwpLAorICAgIElOU04ocGJyb2FkY2FzdHEsICA2NiwgMGYzOCwgNTksICAgIGVsLCAg ICAgIHEsIGVsKSwKICAgICBJTlNOKHBjbXAsICAgICAgICAgNjYsIDBmM2EsIDFmLCAgICB2bCwg ICAgIGRxLCB2bCksCiAgICAgSU5TTihwY21wZXFkLCAgICAgIDY2LCAgIDBmLCA3NiwgICAgdmws ICAgICAgZCwgdmwpLAogICAgIElOU04ocGNtcGVxcSwgICAgICA2NiwgMGYzOCwgMjksICAgIHZs LCAgICAgIHEsIHZsKSwKQEAgLTIxMSw2ICsyMTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRl c3QgYXZ4NTEyZl8xMjhbXSA9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmX25v MTI4W10gPSB7CiAgICAgSU5TTihicm9hZGNhc3RmMzJ4NCwgNjYsIDBmMzgsIDFhLCBlbF80LCAg ZCwgdmwpLAorICAgIElOU04oYnJvYWRjYXN0aTMyeDQsIDY2LCAwZjM4LCA1YSwgZWxfNCwgIGQs IHZsKSwKICAgICBJTlNOKGJyb2FkY2FzdHNkLCAgICA2NiwgMGYzOCwgMTksIGVsLCAgICBxLCBl bCksCiAgICAgSU5TTihleHRyYWN0ZjMyeDQsICAgNjYsIDBmM2EsIDE5LCBlbF80LCAgZCwgdmwp LAogICAgIElOU04oZXh0cmFjdGkzMng0LCAgIDY2LCAwZjNhLCAzOSwgZWxfNCwgIGQsIHZsKSwK QEAgLTIyMCw2ICsyMjQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZl9ubzEy OFtdCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmXzUxMltdID0gewogICAgIElO U04oYnJvYWRjYXN0ZjY0eDQsIDY2LCAwZjM4LCAxYiwgZWxfNCwgcSwgdmwpLAorICAgIElOU04o YnJvYWRjYXN0aTY0eDQsIDY2LCAwZjM4LCA1YiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oZXh0 cmFjdGY2NHg0LCAgIDY2LCAwZjNhLCAxYiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oZXh0cmFj dGk2NHg0LCAgIDY2LCAwZjNhLCAzYiwgZWxfNCwgcSwgdmwpLAogICAgIElOU04oaW5zZXJ0ZjY0 eDQsICAgIDY2LCAwZjNhLCAxYSwgZWxfNCwgcSwgdmwpLApAQCAtMjM5LDYgKzI0NCwxMCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyYndfYWxsW10KICAgICBJTlNOKHBhZGR3LCAg ICAgICA2NiwgICAwZiwgZmQsICAgIHZsLCAgICB3LCB2bCksCiAgICAgSU5TTihwYXZnYiwgICAg ICAgNjYsICAgMGYsIGUwLCAgICB2bCwgICAgYiwgdmwpLAogICAgIElOU04ocGF2Z3csICAgICAg IDY2LCAgIDBmLCBlMywgICAgdmwsICAgIHcsIHZsKSwKKyAgICBJTlNOKHBicm9hZGNhc3RiLCA2 NiwgMGYzOCwgNzgsICAgIGVsLCAgICBiLCBlbCksCisvLyAgICAgICBwYnJvYWRjYXN0YiwgNjYs IDBmMzgsIDdhLCAgICAgICAgICAgYgorICAgIElOU04ocGJyb2FkY2FzdHcsIDY2LCAwZjM4LCA3 OSwgICAgZWxfMiwgIGIsIHZsKSwKKy8vICAgICAgIHBicm9hZGNhc3R3LCA2NiwgMGYzOCwgN2Is ICAgICAgICAgICBiCiAgICAgSU5TTihwY21wLCAgICAgICAgNjYsIDBmM2EsIDNmLCAgICB2bCwg ICBidywgdmwpLAogICAgIElOU04ocGNtcGVxYiwgICAgIDY2LCAgIDBmLCA3NCwgICAgdmwsICAg IGIsIHZsKSwKICAgICBJTlNOKHBjbXBlcXcsICAgICA2NiwgICAwZiwgNzUsICAgIHZsLCAgICB3 LCB2bCksCkBAIC0yOTAsNiArMjk5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2eDUx MmJ3XzEyOFtdCiBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEyZHFfYWxsW10gPSB7CiAg ICAgSU5TTl9QRlAoYW5kLCAgICAgICAgICAgICAgMGYsIDU0KSwKICAgICBJTlNOX1BGUChhbmRu LCAgICAgICAgICAgICAwZiwgNTUpLAorICAgIElOU04oYnJvYWRjYXN0aTMyeDIsIDY2LCAwZjM4 LCA1OSwgZWxfMiwgIGQsIHZsKSwKICAgICBJTlNOX1BGUChvciwgICAgICAgICAgICAgICAwZiwg NTYpLAogICAgIElOU04ocG11bGxxLCAgICAgICAgIDY2LCAwZjM4LCA0MCwgICB2bCwgIHEsIHZs KSwKICAgICBJTlNOX1BGUCh4b3IsICAgICAgICAgICAgICAwZiwgNTcpLApAQCAtMzAzLDYgKzMx Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJkcV8xMjhbXQogc3RhdGljIGNv bnN0IHN0cnVjdCB0ZXN0IGF2eDUxMmRxX25vMTI4W10gPSB7CiAgICAgSU5TTihicm9hZGNhc3Rm MzJ4MiwgNjYsIDBmMzgsIDE5LCBlbF8yLCBkLCB2bCksCiAgICAgSU5TTihicm9hZGNhc3RmNjR4 MiwgNjYsIDBmMzgsIDFhLCBlbF8yLCBxLCB2bCksCisgICAgSU5TTihicm9hZGNhc3RpNjR4Miwg NjYsIDBmMzgsIDVhLCBlbF8yLCBxLCB2bCksCiAgICAgSU5TTihleHRyYWN0ZjY0eDIsICAgNjYs IDBmM2EsIDE5LCBlbF8yLCBxLCB2bCksCiAgICAgSU5TTihleHRyYWN0aTY0eDIsICAgNjYsIDBm M2EsIDM5LCBlbF8yLCBxLCB2bCksCiAgICAgSU5TTihpbnNlcnRmNjR4MiwgICAgNjYsIDBmM2Es IDE4LCBlbF8yLCBxLCB2bCksCkBAIC0zMTEsNiArMzIyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCB0ZXN0IGF2eDUxMmRxX25vMTI4WwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3QgYXZ4NTEy ZHFfNTEyW10gPSB7CiAgICAgSU5TTihicm9hZGNhc3RmMzJ4OCwgNjYsIDBmMzgsIDFiLCBlbF84 LCBkLCB2bCksCisgICAgSU5TTihicm9hZGNhc3RpMzJ4OCwgNjYsIDBmMzgsIDViLCBlbF84LCBk LCB2bCksCiAgICAgSU5TTihleHRyYWN0ZjMyeDgsICAgNjYsIDBmM2EsIDFiLCBlbF84LCBkLCB2 bCksCiAgICAgSU5TTihleHRyYWN0aTMyeDgsICAgNjYsIDBmM2EsIDNiLCBlbF84LCBkLCB2bCks CiAgICAgSU5TTihpbnNlcnRmMzJ4OCwgICAgNjYsIDBmM2EsIDFhLCBlbF84LCBkLCB2bCksCi0t LSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3NpbWQuYwpAQCAtMjcyLDkgKzI3MiwzMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg X3RvX2Jvb2woYnl0ZV92ZWNfdCBiCiAjaWYgKElOVF9TSVpFID09IDQgfHwgVUlOVF9TSVpFID09 IDQgfHwgSU5UX1NJWkUgPT0gOCB8fCBVSU5UX1NJWkUgPT0gOCkgJiYgXAogICAgICBkZWZpbmVk KF9fQVZYNTEyRl9fKSAmJiAoVkVDX1NJWkUgPT0gNjQgfHwgZGVmaW5lZChfX0FWWDUxMlZMX18p KQogIyBpZiBJTlRfU0laRSA9PSA0IHx8IFVJTlRfU0laRSA9PSA0CisjICBkZWZpbmUgYnJvYWRj YXN0KHgpICh7IFwKKyAgICB2ZWNfdCB0XzsgXAorICAgIGFzbSAoICIle2V2ZXglfSB2cGJyb2Fk Y2FzdGQgJTEsICUwIiBcCisgICAgICAgICAgOiAiPXYiICh0XykgOiAibSIgKCooaW50WzFdKXsg eCB9KSApOyBcCisgICAgdF87IFwKK30pCisjICBkZWZpbmUgYnJvYWRjYXN0Mih4KSAoeyBcCisg ICAgdmVjX3QgdF87IFwKKyAgICBhc20gKCAidnBicm9hZGNhc3RkICVrMSwgJTAiIDogIj12IiAo dF8pIDogInIiICh4KSApOyBcCisgICAgdF87IFwKK30pCiAjICBkZWZpbmUgbWl4KHgsIHkpICgo dmVjX3QpQihtb3ZkcWEzMl8sIF9tYXNrLCAodnNpX3QpKHgpLCAodnNpX3QpKHkpLCBcCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoMGIwMTAxMDEwMTAxMDEwMTAxICYgKCgxIDw8IEVM RU1fQ09VTlQpIC0gMSkpKSkKICMgZWxpZiBJTlRfU0laRSA9PSA4IHx8IFVJTlRfU0laRSA9PSA4 CisjICBkZWZpbmUgYnJvYWRjYXN0KHgpICh7IFwKKyAgICB2ZWNfdCB0XzsgXAorICAgIGFzbSAo ICIle2V2ZXglfSB2cGJyb2FkY2FzdHEgJTEsICUwIiBcCisgICAgICAgICAgOiAiPXYiICh0Xykg OiAibSIgKCoobG9uZyBsb25nWzFdKXsgeCB9KSApOyBcCisgICAgdF87IFwKK30pCisjICBpZmRl ZiBfX3g4Nl82NF9fCisjICAgZGVmaW5lIGJyb2FkY2FzdDIoeCkgKHsgXAorICAgIHZlY190IHRf OyBcCisgICAgYXNtICggInZwYnJvYWRjYXN0cSAlMSwgJTAiIDogIj12IiAodF8pIDogInIiICgo eCkgKyAwVUxMKSApOyBcCisgICAgdF87IFwKK30pCisjICBlbmRpZgogIyAgZGVmaW5lIG1peCh4 LCB5KSAoKHZlY190KUIobW92ZHFhNjRfLCBfbWFzaywgKHZkaV90KSh4KSwgKHZkaV90KSh5KSwg MGIwMTAxMDEwMSkpCiAjIGVuZGlmCiAjIGlmIElOVF9TSVpFID09IDQKQEAgLTk3MSwxMCArOTk1 LDE0IEBAIGludCBzaW1kX3Rlc3Qodm9pZCkKICAgICBpZiAoICFlcShzd2FwMihzcmMpLCBpbnYp ICkgcmV0dXJuIF9fTElORV9fOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKGJyb2FkY2FzdCkKKyNp ZmRlZiBicm9hZGNhc3QKICAgICBpZiAoICFlcShicm9hZGNhc3QoRUxFTV9DT1VOVCArIDEpLCBz cmMgKyBpbnYpICkgcmV0dXJuIF9fTElORV9fOwogI2VuZGlmCiAKKyNpZmRlZiBicm9hZGNhc3Qy CisgICAgaWYgKCAhZXEoYnJvYWRjYXN0MihFTEVNX0NPVU5UICsgMSksIHNyYyArIGludikgKSBy ZXR1cm4gX19MSU5FX187CisjZW5kaWYKKwogI2lmIGRlZmluZWQoaW50ZXJsZWF2ZV9sbykgJiYg ZGVmaW5lZChpbnRlcmxlYXZlX2hpKQogICAgIHRvdWNoKHNyYyk7CiAgICAgeCA9IGludGVybGVh dmVfbG8oaW52LCBzcmMpOwotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxh dGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtNDU0 LDkgKzQ1NCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4dDBmMzhfdGFibGUgewogICAgIFsw eDQwXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ludCwgLmQ4cyA9IGQ4c192bCB9LAog ICAgIFsweDQxXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ludCwgLnR3b19vcCA9IDEg fSwKICAgICBbMHg0NSAuLi4gMHg0N10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQs IC5kOHMgPSBkOHNfdmwgfSwKLSAgICBbMHg1OCAuLi4gMHg1OV0gPSB7IC5zaW1kX3NpemUgPSBz aW1kX290aGVyLCAudHdvX29wID0gMSB9LAotICAgIFsweDVhXSA9IHsgLnNpbWRfc2l6ZSA9IHNp bWRfMTI4LCAudHdvX29wID0gMSB9LAotICAgIFsweDc4IC4uLiAweDc5XSA9IHsgLnNpbWRfc2l6 ZSA9IHNpbWRfb3RoZXIsIC50d29fb3AgPSAxIH0sCisgICAgWzB4NThdID0geyAuc2ltZF9zaXpl ID0gc2ltZF9vdGhlciwgLnR3b19vcCA9IDEsIC5kOHMgPSAyIH0sCisgICAgWzB4NTldID0geyAu c2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnR3b19vcCA9IDEsIC5kOHMgPSAzIH0sCisgICAgWzB4 NWFdID0geyAuc2ltZF9zaXplID0gc2ltZF8xMjgsIC50d29fb3AgPSAxLCAuZDhzID0gNCB9LAor ICAgIFsweDViXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfMjU2LCAudHdvX29wID0gMSwgLmQ4cyA9 IGQ4c192bF9ieV8yIH0sCisgICAgWzB4NzhdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwg LnR3b19vcCA9IDEgfSwKKyAgICBbMHg3OV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVyLCAu dHdvX29wID0gMSwgLmQ4cyA9IDEgfSwKKyAgICBbMHg3YSAuLi4gMHg3Y10gPSB7IC5zaW1kX3Np emUgPSBzaW1kX25vbmUsIC50d29fb3AgPSAxIH0sCiAgICAgWzB4OGNdID0geyAuc2ltZF9zaXpl ID0gc2ltZF9wYWNrZWRfaW50IH0sCiAgICAgWzB4OGVdID0geyAuc2ltZF9zaXplID0gc2ltZF9w YWNrZWRfaW50LCAudG9fbWVtID0gMSB9LAogICAgIFsweDkwIC4uLiAweDkzXSA9IHsgLnNpbWRf c2l6ZSA9IHNpbWRfb3RoZXIsIC52c2liID0gMSB9LApAQCAtMjYyMCw2ICsyNjI0LDExIEBAIHg4 Nl9kZWNvZGVfMGYzOCgKICAgICAgICAgY3R4dC0+b3Bjb2RlIHw9IE1BU0tfSU5TUih2ZXgucGZ4 LCBYODZFTVVMX09QQ19QRlhfTUFTSyk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBYODZF TVVMX09QQ19FVkVYXzY2KDAsIDB4N2EpOiAvKiB2cGJyb2FkY2FzdGIgKi8KKyAgICBjYXNlIFg4 NkVNVUxfT1BDX0VWRVhfNjYoMCwgMHg3Yik6IC8qIHZwYnJvYWRjYXN0dyAqLworICAgIGNhc2Ug WDg2RU1VTF9PUENfRVZFWF82NigwLCAweDdjKTogLyogdnBicm9hZGNhc3R7ZCxxfSAqLworICAg ICAgICBicmVhazsKKwogICAgIGNhc2UgMHhmMDogLyogbW92YmUgLyBjcmMzMiAqLwogICAgICAg ICBzdGF0ZS0+ZGVzYyB8PSByZXBuZV9wcmVmaXgoKSA/IEJ5dGVPcCA6IE1vdjsKICAgICAgICAg aWYgKCByZXBfcHJlZml4KCkgKQpAQCAtODE5Myw2ICs4MjAyLDggQEAgeDg2X2VtdWxhdGUoCiAg ICAgICAgIGdvdG8gYXZ4NTEyZl9ub19zYWU7CiAKICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhf NjYoMHgwZjM4LCAweDE4KTogLyogdmJyb2FkY2FzdHNzIHhtbS9tMzIsW3h5el1tbXtrfSAqLwor ICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4NTgpOiAvKiB2cGJyb2FkY2Fz dGQgeG1tL20zMixbeHl6XW1te2t9ICovCisgICAgICAgIG9wX2J5dGVzID0gZWxlbV9ieXRlczsK ICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGV2ZXgudyB8fCBldmV4LmJyLCBFWENfVUQp OwogICAgIGF2eDUxMl9icm9hZGNhc3Q6CiAgICAgICAgIC8qCkBAIC04MjExLDE3ICs4MjIyLDI3 IEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwg MHgxYik6IC8qIHZicm9hZGNhc3RmMzJ4OCBtMjU2LHptbXtrfSAqLwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YnJvYWRjYXN0ZjY0eDQgbTI1Nix6bW17 a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDViKTogLyogdmJy b2FkY2FzdGkzMng4IG0yNTYsem1te2t9ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIHZicm9hZGNhc3RpNjR4NCBtMjU2LHptbXtrfSAqLwogICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZWEudHlwZSAhPSBPUF9NRU0gfHwgZXZleC5sciAhPSAy LCBFWENfVUQpOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBjYXNlIFg4NkVNVUxf T1BDX0VWRVhfNjYoMHgwZjM4LCAweDE5KTogLyogdmJyb2FkY2FzdHNkIHhtbS9tNjQse3ksen1t bXtrfSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2 YnJvYWRjYXN0ZjMyeDIgeG1tL202NCx7eSx6fW1te2t9ICovCi0gICAgICAgIGdlbmVyYXRlX2V4 Y2VwdGlvbl9pZighZXZleC5sciB8fCBldmV4LmJyLCBFWENfVUQpOworICAgICAgICBnZW5lcmF0 ZV9leGNlcHRpb25faWYoIWV2ZXgubHIsIEVYQ19VRCk7CisgICAgICAgIC8qIGZhbGwgdGhyb3Vn aCAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4NTkpOiAvKiB2cGJy b2FkY2FzdHEgeG1tL202NCxbeHl6XW1te2t9ICovCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIHZicm9hZGNhc3RpMzJ4MiB4bW0vbTY0LFt4eXpdbW17a30g Ki8KKyAgICAgICAgaWYgKCBiID09IDB4NTkgKQorICAgICAgICAgICAgb3BfYnl0ZXMgPSA4Owor ICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZXZleC5iciwgRVhDX1VEKTsKICAgICAgICAg aWYgKCAhZXZleC53ICkKICAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUx MmRxKTsKICAgICAgICAgZ290byBhdng1MTJfYnJvYWRjYXN0OwogCiAgICAgY2FzZSBYODZFTVVM X09QQ19FVkVYXzY2KDB4MGYzOCwgMHgxYSk6IC8qIHZicm9hZGNhc3RmMzJ4NCBtMTI4LHt5LHp9 bW17a30gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog dmJyb2FkY2FzdGY2NHgyIG0xMjgse3ksen1tbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENf RVZFWF82NigweDBmMzgsIDB4NWEpOiAvKiB2YnJvYWRjYXN0aTMyeDQgbTEyOCx7eSx6fW1te2t9 ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZicm9h ZGNhc3RpNjR4MiBtMTI4LHt5LHp9bW17a30gKi8KICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9u X2lmKGVhLnR5cGUgIT0gT1BfTUVNIHx8ICFldmV4LmxyIHx8IGV2ZXguYnIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFWENfVUQpOwogICAgICAgICBpZiAoIGV2ZXgudyApCkBAIC04 NDE1LDYgKzg0MzYsNDUgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlv bl9pZihlYS50eXBlICE9IE9QX01FTSB8fCAhdmV4LmwgfHwgdmV4LncsIEVYQ19VRCk7CiAgICAg ICAgIGdvdG8gc2ltZF8wZl9hdngyOwogCisgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4 MGYzOCwgMHg3OCk6IC8qIHZwYnJvYWRjYXN0YiB4bW0vbTgsW3h5el1tbXtrfSAqLworICAgIGNh c2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4NzkpOiAvKiB2cGJyb2FkY2FzdHcgeG1t L20xNixbeHl6XW1te2t9ICovCisgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUx MmJ3KTsKKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGV2ZXgudyB8fCBldmV4LmJyLCBF WENfVUQpOworICAgICAgICBvcF9ieXRlcyA9IGVsZW1fYnl0ZXMgPSAxIDw8IChiICYgMSk7Cisg ICAgICAgIC8qIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgYXZ4NTEyX2Jyb2FkY2FzdCBsYWJlbC4g Ki8KKyAgICAgICAgb3BfbWFzayB8PSAhKGIgJiAxID8gISh1aW50MzJfdClvcF9tYXNrIDogIW9w X21hc2spOworICAgICAgICBnb3RvIGF2eDUxMmZfbm9fc2FlOworCisgICAgY2FzZSBYODZFTVVM X09QQ19FVkVYXzY2KDB4MGYzOCwgMHg3YSk6IC8qIHZwYnJvYWRjYXN0YiByMzIsW3h5el1tbXtr fSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4N2IpOiAvKiB2cGJy b2FkY2FzdHcgcjMyLFt4eXpdbW17a30gKi8KKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hh dmUoYXZ4NTEyYncpOworICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZXZleC53LCBFWENf VUQpOworICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VW RVhfNjYoMHgwZjM4LCAweDdjKTogLyogdnBicm9hZGNhc3R7ZCxxfSByZWcsW3h5el1tbXtrfSAq LworICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoKGVhLnR5cGUgIT0gT1BfUkVHIHx8IGV2 ZXguYnIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmV4LnJlZyAhPSAweGYg fHwgIWV2ZXguUlgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDX1VEKTsKKyAg ICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyZik7CisgICAgICAgIGF2eDUxMl92 bGVuX2NoZWNrKGZhbHNlKTsKKyAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV96bW0pOworCisg ICAgICAgIG9wYyA9IGluaXRfZXZleChzdHViKTsKKyAgICAgICAgb3BjWzBdID0gYjsKKyAgICAg ICAgLyogQ29udmVydCBHUFIgc291cmNlIHRvICVyQVguICovCisgICAgICAgIGV2ZXguYiA9IDE7 CisgICAgICAgIGlmICggIW1vZGVfNjRiaXQoKSApCisgICAgICAgICAgICBldmV4LncgPSAwOwor ICAgICAgICBvcGNbMV0gPSBtb2RybSAmIDB4Zjg7CisgICAgICAgIGluc25fYnl0ZXMgPSBFVkVY X1BGWF9CWVRFUyArIDI7CisgICAgICAgIG9wY1syXSA9IDB4YzM7CisKKyAgICAgICAgY29weV9F VkVYKG9wYywgZXZleCk7CisgICAgICAgIGludm9rZV9zdHViKCIiLCAiIiwgIittIiAoc3JjLnZh bCkgOiAiYSIgKHNyYy52YWwpKTsKKworICAgICAgICBwdXRfc3R1YihzdHViKTsKKyAgICAgICAg QVNTRVJUKCFzdGF0ZS0+c2ltZF9zaXplKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFg4 NkVNVUxfT1BDX1ZFWF82NigweDBmMzgsIDB4OGMpOiAvKiB2cG1hc2ttb3Z7ZCxxfSBtZW0se3gs eX1tbSx7eCx5fW1tICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjM4LCAweDhl KTogLyogdnBtYXNrbW92e2QscX0ge3gseX1tbSx7eCx5fW1tLG1lbSAqLwogICAgICAgICBnZW5l cmF0ZV9leGNlcHRpb25faWYoZWEudHlwZSAhPSBPUF9NRU0sIEVYQ19VRCk7CgoKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs