From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v8 13/50] x86emul: basic AVX512BW testing Date: Fri, 15 Mar 2019 04:43:57 -0600 Message-ID: <5C8B81ED020000780021F170@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C8B7EC0020000780021F10B@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] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h4kJn-0004mX-Na for xen-devel@lists.xenproject.org; Fri, 15 Mar 2019 10:44:03 +0000 In-Reply-To: <5C8B7EC0020000780021F10B@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 VGVzdCB2YXJpb3VzIG9mIHRoZSBpbnNucyB3aGljaCBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgYWxy ZWFkeS4KClNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0t CnY4OiBDb3JyZWN0IFBTe1IsTH1MRFEgb3ZlcnJpZGVzLgp2NjogUmUtYmFzZSBvdmVyIGNoYW5n ZXMgZWFybGllciBpbiB0aGUgc2VyaWVzLgp2NDogQWRkIF9fQVZYNTEyVkxfXyBjb25kaXRpb25h bCBhcm91bmQgbWFqb3JpdHkgb2YgT1ZSKCkgYWRkaXRpb25zLgogICAgQ29ycmVjdCBlcSgpIGZv ciAxLSBhbmQgMi1ieXRlIGNhc2VzLgp2MzogTmV3LgoKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2Vt dWxhdG9yL01ha2VmaWxlCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9NYWtlZmlsZQpA QCAtMTYsNyArMTYsNyBAQCB2cGF0aCAlLmMgJChYRU5fUk9PVCkveGVuL2xpYi94ODYKIAogQ0ZM QUdTICs9ICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCiAKLVNJTUQgOj0gM2Rub3cgc3NlIHNzZTIgc3Nl NCBhdnggYXZ4MiB4b3AgYXZ4NTEyZgorU0lNRCA6PSAzZG5vdyBzc2Ugc3NlMiBzc2U0IGF2eCBh dngyIHhvcCBhdng1MTJmIGF2eDUxMmJ3CiBGTUEgOj0gZm1hNCBmbWEKIFNHIDo9IGF2eDItc2cK IFRFU1RDQVNFUyA6PSBibG93ZmlzaCAkKFNJTUQpICQoRk1BKSAkKFNHKQpAQCAtNjYsNiArNjYs OSBAQCB4b3AtZmx0cyA6PSAkKGF2eC1mbHRzKQogYXZ4NTEyZi12ZWNzIDo9IDY0IDE2IDMyCiBh dng1MTJmLWludHMgOj0gNCA4CiBhdng1MTJmLWZsdHMgOj0gNCA4Cithdng1MTJidy12ZWNzIDo9 ICQoYXZ4NTEyZi12ZWNzKQorYXZ4NTEyYnctaW50cyA6PSAxIDIKK2F2eDUxMmJ3LWZsdHMgOj0K IAogYXZ4NTEyZi1vcG1hc2stdmVjcyA6PSAyCiBhdng1MTJkcS1vcG1hc2stdmVjcyA6PSAxCi0t LSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3NpbWQuYwpAQCAtMzEsNiArMzEsMTAgQEAgRU5UUlkoc2ltZF90ZXN0KTsKICMg IGRlZmluZSBlcSh4LCB5KSAoKEJSKGNtcHBzLCBfbWFzaywgeCwgeSwgMCwgLTEpICYgQUxMX1RS VUUpID09IEFMTF9UUlVFKQogIyBlbGlmIEZMT0FUX1NJWkUgPT0gOAogIyAgZGVmaW5lIGVxKHgs IHkpIChCUihjbXBwZCwgX21hc2ssIHgsIHksIDAsIC0xKSA9PSBBTExfVFJVRSkKKyMgZWxpZiAo SU5UX1NJWkUgPT0gMSB8fCBVSU5UX1NJWkUgPT0gMSkgJiYgZGVmaW5lZChfX0FWWDUxMkJXX18p CisjICBkZWZpbmUgZXEoeCwgeSkgKEIocGNtcGVxYiwgX21hc2ssICh2cWlfdCkoeCksICh2cWlf dCkoeSksIC0xKSA9PSBBTExfVFJVRSkKKyMgZWxpZiAoSU5UX1NJWkUgPT0gMiB8fCBVSU5UX1NJ WkUgPT0gMikgJiYgZGVmaW5lZChfX0FWWDUxMkJXX18pCisjICBkZWZpbmUgZXEoeCwgeSkgKEIo cGNtcGVxdywgX21hc2ssICh2aGlfdCkoeCksICh2aGlfdCkoeSksIC0xKSA9PSBBTExfVFJVRSkK ICMgZWxpZiBJTlRfU0laRSA9PSA0IHx8IFVJTlRfU0laRSA9PSA0CiAjICBkZWZpbmUgZXEoeCwg eSkgKEIocGNtcGVxZCwgX21hc2ssICh2c2lfdCkoeCksICh2c2lfdCkoeSksIC0xKSA9PSBBTExf VFJVRSkKICMgZWxpZiBJTlRfU0laRSA9PSA4IHx8IFVJTlRfU0laRSA9PSA4CkBAIC0zNzQsNiAr Mzc4LDg3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9fYm9vbChieXRlX3ZlY190IGIKICMgIGRl ZmluZSBtYXgoeCwgeSkgKCh2ZWNfdClCKHBtYXh1cSwgX21hc2ssICh2ZGlfdCkoeCksICh2ZGlf dCkoeSksICh2ZGlfdCl1bmRlZigpLCB+MCkpCiAjICBkZWZpbmUgbWluKHgsIHkpICgodmVjX3Qp QihwbWludXEsIF9tYXNrLCAodmRpX3QpKHgpLCAodmRpX3QpKHkpLCAodmRpX3QpdW5kZWYoKSwg fjApKQogIyBlbmRpZgorI2VsaWYgKElOVF9TSVpFID09IDEgfHwgVUlOVF9TSVpFID09IDEgfHwg SU5UX1NJWkUgPT0gMiB8fCBVSU5UX1NJWkUgPT0gMikgJiYgXAorICAgICAgZGVmaW5lZChfX0FW WDUxMkJXX18pICYmIChWRUNfU0laRSA9PSA2NCB8fCBkZWZpbmVkKF9fQVZYNTEyVkxfXykpCisj IGlmIElOVF9TSVpFID09IDEgfHwgVUlOVF9TSVpFID09IDEKKyMgIGRlZmluZSBicm9hZGNhc3Qo eCkgKHsgXAorICAgIHZlY190IHRfOyBcCisgICAgYXNtICggIiV7ZXZleCV9IHZwYnJvYWRjYXN0 YiAlMSwgJTAiIFwKKyAgICAgICAgICA6ICI9diIgKHRfKSA6ICJtIiAoKihjaGFyWzFdKXsgeCB9 KSApOyBcCisgICAgdF87IFwKK30pCisjICBkZWZpbmUgYnJvYWRjYXN0Mih4KSAoeyBcCisgICAg dmVjX3QgdF87IFwKKyAgICBhc20gKCAidnBicm9hZGNhc3RiICVrMSwgJTAiIDogIj12IiAodF8p IDogInIiICh4KSApOyBcCisgICAgdF87IFwKK30pCisjICBpZiBWRUNfU0laRSA9PSAxNgorIyAg IGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpQihwdW5wY2toYncsIF9tYXNrLCAo dnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYoKSwgfjApKQorIyAgIGRlZmluZSBp bnRlcmxlYXZlX2xvKHgsIHkpICgodmVjX3QpQihwdW5wY2tsYncsIF9tYXNrLCAodnFpX3QpKHgp LCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYoKSwgfjApKQorIyAgIGRlZmluZSBzd2FwKHgpICgo dmVjX3QpQihwc2h1ZmIsIF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKGludiAtIDEpLCAodnFp X3QpdW5kZWYoKSwgfjApKQorIyAgZWxpZiBkZWZpbmVkKF9fQVZYNTEyVkJNSV9fKQorIyAgIGRl ZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpQih2cGVybWkydmFycWksIF9tYXNrLCAo dnFpX3QpKHgpLCBpbnRlcmxlYXZlX2hpLCAodnFpX3QpKHkpLCB+MCkpCisjICAgZGVmaW5lIGlu dGVybGVhdmVfbG8oeCwgeSkgKCh2ZWNfdClCKHZwZXJtdDJ2YXJxaSwgX21hc2ssIGludGVybGVh dmVfbG8sICh2cWlfdCkoeCksICh2cWlfdCkoeSksIH4wKSkKKyMgIGVuZGlmCisjICBkZWZpbmUg bWl4KHgsIHkpICgodmVjX3QpQihtb3ZkcXVxaSwgX21hc2ssICh2cWlfdCkoeCksICh2cWlfdCko eSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwYjAxMDEwMTAxMDEwMTAxMDEw MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDFMTCAmIEFMTF9U UlVFKSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSAoKGhhbGZfdClCKHBtb3Z3YiwgX21hc2ssICh2 aGlfdCkoeCksICh2cWlfaGFsZl90KXt9LCB+MCkpCisjICBkZWZpbmUgc2hyaW5rMih4KSAoKHF1 YXJ0ZXJfdClCKHBtb3ZkYiwgX21hc2ssICh2c2lfdCkoeCksICh2cWlfcXVhcnRlcl90KXt9LCB+ MCkpCisjICBkZWZpbmUgc2hyaW5rMyh4KSAoKGVpZ2h0aF90KUIocG1vdnFiLCBfbWFzaywgKHZk aV90KSh4KSwgKHZxaV9laWdodGhfdCl7fSwgfjApKQorIyBlbGlmIElOVF9TSVpFID09IDIgfHwg VUlOVF9TSVpFID09IDIKKyMgIGRlZmluZSBicm9hZGNhc3QoeCkgKHsgXAorICAgIHZlY190IHRf OyBcCisgICAgYXNtICggIiV7ZXZleCV9IHZwYnJvYWRjYXN0dyAlMSwgJTAiIFwKKyAgICAgICAg ICA6ICI9diIgKHRfKSA6ICJtIiAoKihzaG9ydFsxXSl7IHggfSkgKTsgXAorICAgIHRfOyBcCit9 KQorIyAgZGVmaW5lIGJyb2FkY2FzdDIoeCkgKHsgXAorICAgIHZlY190IHRfOyBcCisgICAgYXNt ICggInZwYnJvYWRjYXN0dyAlazEsICUwIiA6ICI9diIgKHRfKSA6ICJyIiAoeCkgKTsgXAorICAg IHRfOyBcCit9KQorIyAgaWYgVkVDX1NJWkUgPT0gMTYKKyMgICBkZWZpbmUgaW50ZXJsZWF2ZV9o aSh4LCB5KSAoKHZlY190KUIocHVucGNraHdkLCBfbWFzaywgKHZoaV90KSh4KSwgKHZoaV90KSh5 KSwgKHZoaV90KXVuZGVmKCksIH4wKSkKKyMgICBkZWZpbmUgaW50ZXJsZWF2ZV9sbyh4LCB5KSAo KHZlY190KUIocHVucGNrbHdkLCBfbWFzaywgKHZoaV90KSh4KSwgKHZoaV90KSh5KSwgKHZoaV90 KXVuZGVmKCksIH4wKSkKKyMgICBkZWZpbmUgc3dhcCh4KSAoKHZlY190KUIocHNodWZkLCBfbWFz aywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodnNpX3QpQihwc2h1Zmh3LCBfbWFz aywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCKHBzaHVmbHcsIF9t YXNrLCAodmhpX3QpKHgpLCAwYjAwMDExMDExLCAodmhpX3QpdW5kZWYoKSwgfjApLCBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBiMDAwMTEwMTEsICh2aGlfdCl1bmRl ZigpLCB+MCksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGIwMTAwMTExMCwgKHZz aV90KXVuZGVmKCksIH4wKSkKKyMgIGVsc2UKKyMgICBkZWZpbmUgaW50ZXJsZWF2ZV9oaSh4LCB5 KSAoKHZlY190KUIodnBlcm1pMnZhcmhpLCBfbWFzaywgKHZoaV90KSh4KSwgaW50ZXJsZWF2ZV9o aSwgKHZoaV90KSh5KSwgfjApKQorIyAgIGRlZmluZSBpbnRlcmxlYXZlX2xvKHgsIHkpICgodmVj X3QpQih2cGVybXQydmFyaGksIF9tYXNrLCBpbnRlcmxlYXZlX2xvLCAodmhpX3QpKHgpLCAodmhp X3QpKHkpLCB+MCkpCisjICBlbmRpZgorIyAgZGVmaW5lIG1peCh4LCB5KSAoKHZlY190KUIobW92 ZHF1aGksIF9tYXNrLCAodmhpX3QpKHgpLCAodmhpX3QpKHkpLCBcCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoMGIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMSAmIEFMTF9U UlVFKSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSAoKGhhbGZfdClCKHBtb3ZkdywgX21hc2ssICh2 c2lfdCkoeCksICh2aGlfaGFsZl90KXt9LCB+MCkpCisjICBkZWZpbmUgc2hyaW5rMih4KSAoKHF1 YXJ0ZXJfdClCKHBtb3ZxdywgX21hc2ssICh2ZGlfdCkoeCksICh2aGlfcXVhcnRlcl90KXt9LCB+ MCkpCisjIGVuZGlmCisjIGlmIElOVF9TSVpFID09IDEKKyMgIGRlZmluZSBtYXgoeCwgeSkgKCh2 ZWNfdClCKHBtYXhzYiwgX21hc2ssICh2cWlfdCkoeCksICh2cWlfdCkoeSksICh2cWlfdCl1bmRl ZigpLCB+MCkpCisjICBkZWZpbmUgbWluKHgsIHkpICgodmVjX3QpQihwbWluc2IsIF9tYXNrLCAo dnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIHdp ZGVuMSh4KSAoKHZlY190KUIocG1vdnN4YncsIF9tYXNrLCAodnFpX2hhbGZfdCkoeCksICh2aGlf dCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4yKHgpICgodmVjX3QpQihwbW92c3hiZCwg X21hc2ssICh2cWlfcXVhcnRlcl90KSh4KSwgKHZzaV90KXVuZGVmKCksIH4wKSkKKyMgIGRlZmlu ZSB3aWRlbjMoeCkgKCh2ZWNfdClCKHBtb3ZzeGJxLCBfbWFzaywgKHZxaV9laWdodGhfdCkoeCks ICh2ZGlfdCl1bmRlZigpLCB+MCkpCisjIGVsaWYgVUlOVF9TSVpFID09IDEKKyMgIGRlZmluZSBt YXgoeCwgeSkgKCh2ZWNfdClCKHBtYXh1YiwgX21hc2ssICh2cWlfdCkoeCksICh2cWlfdCkoeSks ICh2cWlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgbWluKHgsIHkpICgodmVjX3QpQihwbWlu dWIsIF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYoKSwgfjApKQor IyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnp4YncsIF9tYXNrLCAodnFpX2hhbGZf dCkoeCksICh2aGlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4yKHgpICgodmVjX3Qp QihwbW92enhiZCwgX21hc2ssICh2cWlfcXVhcnRlcl90KSh4KSwgKHZzaV90KXVuZGVmKCksIH4w KSkKKyMgIGRlZmluZSB3aWRlbjMoeCkgKCh2ZWNfdClCKHBtb3Z6eGJxLCBfbWFzaywgKHZxaV9l aWdodGhfdCkoeCksICh2ZGlfdCl1bmRlZigpLCB+MCkpCisjIGVsaWYgSU5UX1NJWkUgPT0gMgor IyAgZGVmaW5lIG1heCh4LCB5KSBCKHBtYXhzdywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQor IyAgZGVmaW5lIG1pbih4LCB5KSBCKHBtaW5zdywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQor IyAgZGVmaW5lIG11bF9oaSh4LCB5KSBCKHBtdWxodywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4w KQorIyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnN4d2QsIF9tYXNrLCB4LCAodnNp X3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMih4KSAoKHZlY190KUIocG1vdnN4d3Es IF9tYXNrLCB4LCAodmRpX3QpdW5kZWYoKSwgfjApKQorIyBlbGlmIFVJTlRfU0laRSA9PSAyCisj ICBkZWZpbmUgbWF4KHgsIHkpICgodmVjX3QpQihwbWF4dXcsIF9tYXNrLCAodmhpX3QpKHgpLCAo dmhpX3QpKHkpLCAodmhpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIG1pbih4LCB5KSAoKHZl Y190KUIocG1pbnV3LCBfbWFzaywgKHZoaV90KSh4KSwgKHZoaV90KSh5KSwgKHZoaV90KXVuZGVm KCksIH4wKSkKKyMgIGRlZmluZSBtdWxfaGkoeCwgeSkgKCh2ZWNfdClCKHBtdWxodXcsIF9tYXNr LCAodmhpX3QpKHgpLCAodmhpX3QpKHkpLCAodmhpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5l IHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnp4d2QsIF9tYXNrLCAodmhpX2hhbGZfdCkoeCksICh2 c2lfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4yKHgpICgodmVjX3QpQihwbW92enh3 cSwgX21hc2ssICh2aGlfcXVhcnRlcl90KSh4KSwgKHZkaV90KXVuZGVmKCksIH4wKSkKKyMgZW5k aWYKICNlbGlmIFZFQ19TSVpFID09IDE2ICYmIGRlZmluZWQoX19TU0UyX18pCiAjIGlmIElOVF9T SVpFID09IDEgfHwgVUlOVF9TSVpFID09IDEKICMgIGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkp ICgodmVjX3QpX19idWlsdGluX2lhMzJfcHVucGNraGJ3MTI4KCh2cWlfdCkoeCksICh2cWlfdCko eSkpKQpAQCAtNTY1LDcgKzY1MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9fYm9vbChieXRl X3ZlY190IGIKICMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKLSNpZiBWRUNfU0laRSA9PSAxNiAm JiBkZWZpbmVkKF9fU1NTRTNfXykKKyNpZiBWRUNfU0laRSA9PSAxNiAmJiBkZWZpbmVkKF9fU1NT RTNfXykgJiYgIWRlZmluZWQoX19BVlg1MTJWTF9fKQogIyBpZiBJTlRfU0laRSA9PSAxCiAjICBk ZWZpbmUgYWJzKHgpICgodmVjX3QpX19idWlsdGluX2lhMzJfcGFic2IxMjgoKHZxaV90KSh4KSkp CiAjIGVsaWYgSU5UX1NJWkUgPT0gMgpAQCAtNzg5LDYgKzg3NCw0MCBAQCBzdGF0aWMgaW5saW5l IGhhbGZfdCBsb3dfaGFsZih2ZWNfdCB4KQogfQogIyBlbmRpZgogCisjIGlmICFkZWZpbmVkKGxv d19xdWFydGVyKSAmJiBkZWZpbmVkKFFVQVJURVJfU0laRSkKK3N0YXRpYyBpbmxpbmUgcXVhcnRl cl90IGxvd19xdWFydGVyKHZlY190IHgpCit7CisjICBpZiBRVUFSVEVSX1NJWkUgPCBWRUNfU0la RQorICAgIHF1YXJ0ZXJfdCB5OworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yICggaSA9 IDA7IGkgPCBFTEVNX0NPVU5UIC8gNDsgKytpICkKKyAgICAgICAgeVtpXSA9IHhbaV07CisKKyAg ICByZXR1cm4geTsKKyMgIGVsc2UKKyAgICByZXR1cm4geDsKKyMgIGVuZGlmCit9CisjIGVuZGlm CisKKyMgaWYgIWRlZmluZWQobG93X2VpZ2h0aCkgJiYgZGVmaW5lZChFSUdIVEhfU0laRSkKK3N0 YXRpYyBpbmxpbmUgZWlnaHRoX3QgbG93X2VpZ2h0aCh2ZWNfdCB4KQoreworIyAgaWYgRUlHSFRI X1NJWkUgPCBWRUNfU0laRQorICAgIGVpZ2h0aF90IHk7CisgICAgdW5zaWduZWQgaW50IGk7CisK KyAgICBmb3IgKCBpID0gMDsgaSA8IEVMRU1fQ09VTlQgLyA0OyArK2kgKQorICAgICAgICB5W2ld ID0geFtpXTsKKworICAgIHJldHVybiB5OworIyAgZWxzZQorICAgIHJldHVybiB4OworIyAgZW5k aWYKK30KKyMgZW5kaWYKKwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9fQVZYNTEyRl9fKSAmJiBk ZWZpbmVkKEZMT0FUX1NJWkUpCkBAIC0xMTE3LDcgKzEyMzYsNyBAQCBpbnQgc2ltZF90ZXN0KHZv aWQpCiAgICAgeSA9IGludGVybGVhdmVfbG8oYWx0IDwgMCwgYWx0IDwgMCk7CiAgICAgeSA9IGlu dGVybGVhdmVfbG8oeiwgeSk7CiAgICAgdG91Y2goeCk7Ci0gICAgeiA9IHdpZGVuMih4KTsKKyAg ICB6ID0gd2lkZW4yKGxvd19xdWFydGVyKHgpKTsKICAgICB0b3VjaCh4KTsKICAgICBpZiAoICFl cSh6LCB5KSApIHJldHVybiBfX0xJTkVfXzsKIApAQCAtMTEyNiw3ICsxMjQ1LDcgQEAgaW50IHNp bWRfdGVzdCh2b2lkKQogICAgIHkgPSBpbnRlcmxlYXZlX2xvKHksIHkpOwogICAgIHkgPSBpbnRl cmxlYXZlX2xvKHosIHkpOwogICAgIHRvdWNoKHgpOwotICAgIHogPSB3aWRlbjMoeCk7CisgICAg eiA9IHdpZGVuMyhsb3dfZWlnaHRoKHgpKTsKICAgICB0b3VjaCh4KTsKICAgICBpZiAoICFlcSh6 LCB5KSApIHJldHVybiBfX0xJTkVfXzsKICMgIGVuZGlmCkBAIC0xMTQ4LDE0ICsxMjY3LDE0IEBA IGludCBzaW1kX3Rlc3Qodm9pZCkKIAogIyBpZmRlZiB3aWRlbjIKICAgICB0b3VjaChzcmMpOwot ICAgIHggPSB3aWRlbjIoc3JjKTsKKyAgICB4ID0gd2lkZW4yKGxvd19xdWFydGVyKHNyYykpOwog ICAgIHRvdWNoKHNyYyk7CiAgICAgaWYgKCAhZXEoeCwgeikgKSByZXR1cm4gX19MSU5FX187CiAj IGVuZGlmCiAKICMgaWZkZWYgd2lkZW4zCiAgICAgdG91Y2goc3JjKTsKLSAgICB4ID0gd2lkZW4z KHNyYyk7CisgICAgeCA9IHdpZGVuMyhsb3dfZWlnaHRoKHNyYykpOwogICAgIHRvdWNoKHNyYyk7 CiAgICAgaWYgKCAhZXEoeCwgaW50ZXJsZWF2ZV9sbyh6LCAodmVjX3Qpe30pKSApIHJldHVybiBf X0xJTkVfXzsKICMgZW5kaWYKQEAgLTExNzUsNiArMTI5NCwzNiBAQCBpbnQgc2ltZF90ZXN0KHZv aWQpCiAgICAgICAgICAgICBpZiAoIGF1eDJbaV0gIT0gc3JjW2ldICkKICAgICAgICAgICAgICAg ICByZXR1cm4gX19MSU5FX187CiAgICAgfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKHdpZGVuMikg JiYgZGVmaW5lZChzaHJpbmsyKQorICAgIHsKKyAgICAgICAgcXVhcnRlcl90IGF1eDEgPSBsb3df cXVhcnRlcihzcmMpLCBhdXgyOworCisgICAgICAgIHRvdWNoKGF1eDEpOworICAgICAgICB4ID0g d2lkZW4yKGF1eDEpOworICAgICAgICB0b3VjaCh4KTsKKyAgICAgICAgYXV4MiA9IHNocmluazIo eCk7CisgICAgICAgIHRvdWNoKGF1eDIpOworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEVMRU1f Q09VTlQgLyA0OyArK2kgKQorICAgICAgICAgICAgaWYgKCBhdXgyW2ldICE9IHNyY1tpXSApCisg ICAgICAgICAgICAgICAgcmV0dXJuIF9fTElORV9fOworICAgIH0KKyNlbmRpZgorCisjaWYgZGVm aW5lZCh3aWRlbjMpICYmIGRlZmluZWQoc2hyaW5rMykKKyAgICB7CisgICAgICAgIGVpZ2h0aF90 IGF1eDEgPSBsb3dfZWlnaHRoKHNyYyksIGF1eDI7CisKKyAgICAgICAgdG91Y2goYXV4MSk7Cisg ICAgICAgIHggPSB3aWRlbjMoYXV4MSk7CisgICAgICAgIHRvdWNoKHgpOworICAgICAgICBhdXgy ID0gc2hyaW5rMyh4KTsKKyAgICAgICAgdG91Y2goYXV4Mik7CisgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgRUxFTV9DT1VOVCAvIDg7ICsraSApCisgICAgICAgICAgICBpZiAoIGF1eDJbaV0gIT0g c3JjW2ldICkKKyAgICAgICAgICAgICAgICByZXR1cm4gX19MSU5FX187CisgICAgfQogI2VuZGlm CiAKICNpZmRlZiBkdXBfbG8KLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuaAor KysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC5oCkBAIC05NSw2ICs5NSwzMiBAQCB0 eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShICiB0eXBlZGVmIGxvbmcgbG9u ZyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdmRpX2hhbGZfdDsKICMg ZW5kaWYKIAorIyBpZiBFTEVNX0NPVU5UID49IDQKKyMgIGlmIFZFQ19TSVpFID4gNjQKKyMgICBk ZWZpbmUgUVVBUlRFUl9TSVpFIChWRUNfU0laRSAvIDQpCisjICBlbHNlCisjICAgZGVmaW5lIFFV QVJURVJfU0laRSAxNgorIyAgZW5kaWYKK3R5cGVkZWYgdHlwZW9mKCh2ZWNfdCl7fVswXSkgX19h dHRyaWJ1dGVfXygodmVjdG9yX3NpemUoUVVBUlRFUl9TSVpFKSkpIHF1YXJ0ZXJfdDsKK3R5cGVk ZWYgY2hhciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShRVUFSVEVSX1NJWkUpKSkgdnFpX3F1 YXJ0ZXJfdDsKK3R5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoUVVBUlRF Ul9TSVpFKSkpIHZoaV9xdWFydGVyX3Q7Cit0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2ZWN0 b3Jfc2l6ZShRVUFSVEVSX1NJWkUpKSkgdnNpX3F1YXJ0ZXJfdDsKK3R5cGVkZWYgbG9uZyBsb25n IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKFFVQVJURVJfU0laRSkpKSB2ZGlfcXVhcnRlcl90 OworIyBlbmRpZgorCisjIGlmIEVMRU1fQ09VTlQgPj0gOAorIyAgaWYgVkVDX1NJWkUgPiAxMjgK KyMgICBkZWZpbmUgRUlHSFRIX1NJWkUgKFZFQ19TSVpFIC8gOCkKKyMgIGVsc2UKKyMgICBkZWZp bmUgRUlHSFRIX1NJWkUgMTYKKyMgIGVuZGlmCit0eXBlZGVmIHR5cGVvZigodmVjX3Qpe31bMF0p IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEVJR0hUSF9TSVpFKSkpIGVpZ2h0aF90OwordHlw ZWRlZiBjaGFyIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEVJR0hUSF9TSVpFKSkpIHZxaV9l aWdodGhfdDsKK3R5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoRUlHSFRI X1NJWkUpKSkgdmhpX2VpZ2h0aF90OwordHlwZWRlZiBpbnQgX19hdHRyaWJ1dGVfXygodmVjdG9y X3NpemUoRUlHSFRIX1NJWkUpKSkgdnNpX2VpZ2h0aF90OwordHlwZWRlZiBsb25nIGxvbmcgX19h dHRyaWJ1dGVfXygodmVjdG9yX3NpemUoRUlHSFRIX1NJWkUpKSkgdmRpX2VpZ2h0aF90OworIyBl bmRpZgorCiAjZW5kaWYKIAogI2lmIFZFQ19TSVpFID09IDE2CkBAIC0xODIsNiArMjA4LDkgQEAg T1ZSX1NGUChicm9hZGNhc3QpOwogT1ZSX1NGUChjb21pKTsKIE9WUl9GUChhZGQpOwogT1ZSX0lO VChhZGQpOworT1ZSX0JXKGFkZHMpOworT1ZSX0JXKGFkZHVzKTsKK09WUl9CVyhhdmcpOwogT1ZS X0ZQKGRpdik7CiBPVlIoZXh0cmFjdHBzKTsKIE9WUl9GTUEoZm1hZGQsIEZQKTsKQEAgLTIxNCw2 ICsyNDMsOCBAQCBPVlJfSU5UKHNybCk7CiBPVlJfRFEoc3Jsdik7CiBPVlJfRlAoc3ViKTsKIE9W Ul9JTlQoc3ViKTsKK09WUl9CVyhzdWJzKTsKK09WUl9CVyhzdWJ1cyk7CiBPVlJfU0ZQKHVjb21p KTsKIE9WUl9WRlAodW5wY2toKTsKIE9WUl9WRlAodW5wY2tsKTsKQEAgLTI3NSw2ICszMDYsMzEg QEAgT1ZSKHB1bnBja2xkcSk7CiBPVlIocHVucGNrbHFkcSk7CiAjIGVuZGlmCiAKKyMgaWZkZWYg X19BVlg1MTJCV19fCitPVlIocGV4dHJiKTsKK09WUihwZXh0cncpOworT1ZSKHBpbnNyYik7CitP VlIocGluc3J3KTsKKyMgIGlmZGVmIF9fQVZYNTEyVkxfXworT1ZSKHBtYWRkd2QpOworT1ZSKHBt b3ZzeGJ3KTsKK09WUihwbW92enhidyk7CitPVlIocG11bGh1dyk7CitPVlIocG11bGh3KTsKK09W UihwbXVsbHcpOworT1ZSKHBzYWRidyk7CitPVlIocHNodWZiKTsKK09WUihwc2h1Zmh3KTsKK09W Uihwc2h1Zmx3KTsKK09WUihwc2xsZHEpOworT1ZSKHBzcmxkcSk7CitPVlIocHVucGNraGJ3KTsK K09WUihwdW5wY2tod2QpOworT1ZSKHB1bnBja2xidyk7CitPVlIocHVucGNrbHdkKTsKKyMgIGVu ZGlmCisjIGVuZGlmCisKICMgdW5kZWYgT1ZSX1ZGUAogIyB1bmRlZiBPVlJfU0ZQCiAjIHVuZGVm IE9WUl9JTlQKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9y LmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKQEAg LTIyLDYgKzIyLDcgQEAgYXNtICggIi5wdXNoc2VjdGlvbiAudGVzdCwgXCJheFwiLCBAcHJvZwog I2luY2x1ZGUgImF2eDUxMmRxLW9wbWFzay5oIgogI2luY2x1ZGUgImF2eDUxMmJ3LW9wbWFzay5o IgogI2luY2x1ZGUgImF2eDUxMmYuaCIKKyNpbmNsdWRlICJhdng1MTJidy5oIgogCiAjZGVmaW5l IHZlcmJvc2UgZmFsc2UgLyogU3dpdGNoIHRvIHRydWUgZm9yIGZhciBtb3JlIGxvZ2dpbmcuICov CiAKQEAgLTEwNSw2ICsxMDYsMTEgQEAgc3RhdGljIGJvb2wgc2ltZF9jaGVja19hdng1MTJidyh2 b2lkKQogfQogI2RlZmluZSBzaW1kX2NoZWNrX2F2eDUxMmJ3X29wbWFzayBzaW1kX2NoZWNrX2F2 eDUxMmJ3CiAKK3N0YXRpYyBib29sIHNpbWRfY2hlY2tfYXZ4NTEyYndfdmwodm9pZCkKK3sKKyAg ICByZXR1cm4gY3B1X2hhc19hdng1MTJidyAmJiBjcHVfaGFzX2F2eDUxMnZsOworfQorCiBzdGF0 aWMgdm9pZCBzaW1kX3NldF9yZWdzKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAg IGlmICggY3B1X2hhc19tbXggKQpAQCAtMjg0LDYgKzI5MCwxOCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHsKICAgICBBVlg1MTJWTChWTCB1NjR4MiwgICAgICAgIGF2eDUxMmYsICAgICAgMTZ1OCks CiAgICAgQVZYNTEyVkwoVkwgczY0eDQsICAgICAgICBhdng1MTJmLCAgICAgIDMyaTgpLAogICAg IEFWWDUxMlZMKFZMIHU2NHg0LCAgICAgICAgYXZ4NTEyZiwgICAgICAzMnU4KSwKKyAgICBTSU1E KEFWWDUxMkJXIHM4eDY0LCAgICAgYXZ4NTEyYncsICAgICAgNjRpMSksCisgICAgU0lNRChBVlg1 MTJCVyB1OHg2NCwgICAgIGF2eDUxMmJ3LCAgICAgIDY0dTEpLAorICAgIFNJTUQoQVZYNTEyQlcg czE2eDMyLCAgICBhdng1MTJidywgICAgICA2NGkyKSwKKyAgICBTSU1EKEFWWDUxMkJXIHUxNngz MiwgICAgYXZ4NTEyYncsICAgICAgNjR1MiksCisgICAgQVZYNTEyVkwoQlcrVkwgczh4MTYsICAg IGF2eDUxMmJ3LCAgICAgIDE2aTEpLAorICAgIEFWWDUxMlZMKEJXK1ZMIHU4eDE2LCAgICBhdng1 MTJidywgICAgICAxNnUxKSwKKyAgICBBVlg1MTJWTChCVytWTCBzOHgzMiwgICAgYXZ4NTEyYncs ICAgICAgMzJpMSksCisgICAgQVZYNTEyVkwoQlcrVkwgdTh4MzIsICAgIGF2eDUxMmJ3LCAgICAg IDMydTEpLAorICAgIEFWWDUxMlZMKEJXK1ZMIHMxNng4LCAgICBhdng1MTJidywgICAgICAxNmky KSwKKyAgICBBVlg1MTJWTChCVytWTCB1MTZ4OCwgICAgYXZ4NTEyYncsICAgICAgMTZ1MiksCisg ICAgQVZYNTEyVkwoQlcrVkwgczE2eDE2LCAgIGF2eDUxMmJ3LCAgICAgIDMyaTIpLAorICAgIEFW WDUxMlZMKEJXK1ZMIHUxNngxNiwgICBhdng1MTJidywgICAgICAzMnUyKSwKICN1bmRlZiBBVlg1 MTJWTF8KICN1bmRlZiBBVlg1MTJWTAogI3VuZGVmIFNJTURfCgoKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn L21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs