From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v3 32/34] x86emul: basic AVX512BW testing Date: Tue, 18 Sep 2018 06:14:08 -0600 Message-ID: <5BA0EC1002000078001E96A1@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 1g2EtR-0002a8-Fn for xen-devel@lists.xenproject.org; Tue, 18 Sep 2018 12:14:13 +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 VGVzdCB2YXJpb3VzIG9mIHRoZSBpbnNucyB3aGljaCBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgYWxy ZWFkeS4KClNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0t CnYzOiBOZXcuCgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUKKysrIGIv dG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCkBAIC0xMSw3ICsxMSw3IEBAIGFsbDog JChUQVJHRVQpCiBydW46ICQoVEFSR0VUKQogCS4vJChUQVJHRVQpCiAKLVNJTUQgOj0gM2Rub3cg c3NlIHNzZTIgc3NlNCBhdnggYXZ4MiB4b3AgYXZ4NTEyZgorU0lNRCA6PSAzZG5vdyBzc2Ugc3Nl MiBzc2U0IGF2eCBhdngyIHhvcCBhdng1MTJmIGF2eDUxMmJ3CiBGTUEgOj0gZm1hNCBmbWEKIFNH IDo9IGF2eDItc2cKIFRFU1RDQVNFUyA6PSBibG93ZmlzaCAkKFNJTUQpICQoRk1BKSAkKFNHKQpA QCAtNTUsNiArNTUsOSBAQCB4b3AtZmx0cyA6PSAkKGF2eC1mbHRzKQogYXZ4NTEyZi12ZWNzIDo9 IDY0IDE2IDMyCiBhdng1MTJmLWludHMgOj0gNCA4CiBhdng1MTJmLWZsdHMgOj0gNCA4Cithdng1 MTJidy12ZWNzIDo9ICQoYXZ4NTEyZi12ZWNzKQorYXZ4NTEyYnctaW50cyA6PSAxIDIKK2F2eDUx MmJ3LWZsdHMgOj0KIAogYXZ4NTEyZi1vcG1hc2stdmVjcyA6PSAyCiBhdng1MTJkcS1vcG1hc2st dmVjcyA6PSAxCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKKysrIGIvdG9v bHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuYwpAQCAtMzEsNiArMzEsMTAgQEAgRU5UUlkoc2lt ZF90ZXN0KTsKICMgIGRlZmluZSBlcSh4LCB5KSAoKEJSKGNtcHBzLCBfbWFzaywgeCwgeSwgMCwg LTEpICYgQUxMX1RSVUUpID09IEFMTF9UUlVFKQogIyBlbGlmIEZMT0FUX1NJWkUgPT0gOAogIyAg ZGVmaW5lIGVxKHgsIHkpIChCUihjbXBwZCwgX21hc2ssIHgsIHksIDAsIC0xKSA9PSBBTExfVFJV RSkKKyMgZWxpZiBJTlRfU0laRSA9PSAxCisjICBkZWZpbmUgZXEoeCwgeSkgKEIocGNtcGVxYiwg X21hc2ssICh2cWlfdCkoeCksICh2cWlfdCkoeSksIC0xKSA9PSBBTExfVFJVRSkKKyMgZWxpZiBJ TlRfU0laRSA9PSAyCisjICBkZWZpbmUgZXEoeCwgeSkgKEIocGNtcGVxdywgX21hc2ssIHgsIHks IC0xKSA9PSBBTExfVFJVRSkKICMgZWxpZiBJTlRfU0laRSA9PSA0CiAjICBkZWZpbmUgZXEoeCwg eSkgKEIocGNtcGVxZCwgX21hc2ssIHgsIHksIC0xKSA9PSBBTExfVFJVRSkKICMgZWxpZiBJTlRf U0laRSA9PSA4CkBAIC0zNjgsNiArMzcyLDg3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9fYm9v bChieXRlX3ZlY190IGIKICMgIGRlZmluZSBtYXgoeCwgeSkgKCh2ZWNfdClCKHBtYXh1cSwgX21h c2ssICh2ZGlfdCkoeCksICh2ZGlfdCkoeSksICh2ZGlfdCl1bmRlZigpLCB+MCkpCiAjICBkZWZp bmUgbWluKHgsIHkpICgodmVjX3QpQihwbWludXEsIF9tYXNrLCAodmRpX3QpKHgpLCAodmRpX3Qp KHkpLCAodmRpX3QpdW5kZWYoKSwgfjApKQogIyBlbmRpZgorI2VsaWYgKElOVF9TSVpFID09IDEg fHwgVUlOVF9TSVpFID09IDEgfHwgSU5UX1NJWkUgPT0gMiB8fCBVSU5UX1NJWkUgPT0gMikgJiYg XAorICAgICAgZGVmaW5lZChfX0FWWDUxMkJXX18pICYmIChWRUNfU0laRSA9PSA2NCB8fCBkZWZp bmVkKF9fQVZYNTEyVkxfXykpCisjIGlmIElOVF9TSVpFID09IDEgfHwgVUlOVF9TSVpFID09IDEK KyMgIGRlZmluZSBicm9hZGNhc3QoeCkgKHsgXAorICAgIHZlY190IHRfOyBcCisgICAgYXNtICgg IiV7ZXZleCV9IHZwYnJvYWRjYXN0YiAlMSwgJTAiIFwKKyAgICAgICAgICA6ICI9diIgKHRfKSA6 ICJtIiAoKihjaGFyWzFdKXsgeCB9KSApOyBcCisgICAgdF87IFwKK30pCisjICBkZWZpbmUgYnJv YWRjYXN0Mih4KSAoeyBcCisgICAgdmVjX3QgdF87IFwKKyAgICBhc20gKCAidnBicm9hZGNhc3Ri ICVrMSwgJTAiIDogIj12IiAodF8pIDogInIiICh4KSApOyBcCisgICAgdF87IFwKK30pCisjICBp ZiBWRUNfU0laRSA9PSAxNgorIyAgIGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3Qp QihwdW5wY2toYncsIF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYo KSwgfjApKQorIyAgIGRlZmluZSBpbnRlcmxlYXZlX2xvKHgsIHkpICgodmVjX3QpQihwdW5wY2ts YncsIF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYoKSwgfjApKQor IyAgIGRlZmluZSBzd2FwKHgpICgodmVjX3QpQihwc2h1ZmIsIF9tYXNrLCAodnFpX3QpKHgpLCAo dnFpX3QpKGludiAtIDEpLCAodnFpX3QpdW5kZWYoKSwgfjApKQorIyAgZWxpZiBkZWZpbmVkKF9f QVZYNTEyVkJNSV9fKQorIyAgIGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpQih2 cGVybWkydmFycWksIF9tYXNrLCAodnFpX3QpKHgpLCBpbnRlcmxlYXZlX2hpLCAodnFpX3QpKHkp LCB+MCkpCisjICAgZGVmaW5lIGludGVybGVhdmVfbG8oeCwgeSkgKCh2ZWNfdClCKHZwZXJtdDJ2 YXJxaSwgX21hc2ssIGludGVybGVhdmVfbG8sICh2cWlfdCkoeCksICh2cWlfdCkoeSksIH4wKSkK KyMgIGVuZGlmCisjICBkZWZpbmUgbWl4KHgsIHkpICgodmVjX3QpQihtb3ZkcXVxaSwgX21hc2ss ICh2cWlfdCkoeCksICh2cWlfdCkoeSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgwYjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEw MTAxMDEwMTAxMDFMTCAmIEFMTF9UUlVFKSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSAoKGhhbGZf dClCKHBtb3Z3YiwgX21hc2ssICh2aGlfdCkoeCksICh2cWlfaGFsZl90KXt9LCB+MCkpCisjICBk ZWZpbmUgc2hyaW5rMih4KSAoKHF1YXJ0ZXJfdClCKHBtb3ZkYiwgX21hc2ssICh2c2lfdCkoeCks ICh2cWlfcXVhcnRlcl90KXt9LCB+MCkpCisjICBkZWZpbmUgc2hyaW5rMyh4KSAoKGVpZ2h0aF90 KUIocG1vdnFiLCBfbWFzaywgKHZkaV90KSh4KSwgKHZxaV9laWdodGhfdCl7fSwgfjApKQorIyBl bGlmIElOVF9TSVpFID09IDIgfHwgVUlOVF9TSVpFID09IDIKKyMgIGRlZmluZSBicm9hZGNhc3Qo eCkgKHsgXAorICAgIHZlY190IHRfOyBcCisgICAgYXNtICggIiV7ZXZleCV9IHZwYnJvYWRjYXN0 dyAlMSwgJTAiIFwKKyAgICAgICAgICA6ICI9diIgKHRfKSA6ICJtIiAoKihzaG9ydFsxXSl7IHgg fSkgKTsgXAorICAgIHRfOyBcCit9KQorIyAgZGVmaW5lIGJyb2FkY2FzdDIoeCkgKHsgXAorICAg IHZlY190IHRfOyBcCisgICAgYXNtICggInZwYnJvYWRjYXN0dyAlazEsICUwIiA6ICI9diIgKHRf KSA6ICJyIiAoeCkgKTsgXAorICAgIHRfOyBcCit9KQorIyAgaWYgVkVDX1NJWkUgPT0gMTYKKyMg ICBkZWZpbmUgaW50ZXJsZWF2ZV9oaSh4LCB5KSAoKHZlY190KUIocHVucGNraHdkLCBfbWFzaywg KHZoaV90KSh4KSwgKHZoaV90KSh5KSwgKHZoaV90KXVuZGVmKCksIH4wKSkKKyMgICBkZWZpbmUg aW50ZXJsZWF2ZV9sbyh4LCB5KSAoKHZlY190KUIocHVucGNrbHdkLCBfbWFzaywgKHZoaV90KSh4 KSwgKHZoaV90KSh5KSwgKHZoaV90KXVuZGVmKCksIH4wKSkKKyMgICBkZWZpbmUgc3dhcCh4KSAo KHZlY190KUIocHNodWZkLCBfbWFzaywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dnNpX3QpQihwc2h1Zmh3LCBfbWFzaywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCKHBzaHVmbHcsIF9tYXNrLCAodmhpX3QpKHgpLCAwYjAwMDExMDExLCAodmhpX3Qp dW5kZWYoKSwgfjApLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBi MDAwMTEwMTEsICh2aGlfdCl1bmRlZigpLCB+MCksIFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMGIwMTAwMTExMCwgKHZzaV90KXVuZGVmKCksIH4wKSkKKyMgIGVsc2UKKyMgICBkZWZp bmUgaW50ZXJsZWF2ZV9oaSh4LCB5KSAoKHZlY190KUIodnBlcm1pMnZhcmhpLCBfbWFzaywgKHZo aV90KSh4KSwgaW50ZXJsZWF2ZV9oaSwgKHZoaV90KSh5KSwgfjApKQorIyAgIGRlZmluZSBpbnRl cmxlYXZlX2xvKHgsIHkpICgodmVjX3QpQih2cGVybXQydmFyaGksIF9tYXNrLCBpbnRlcmxlYXZl X2xvLCAodmhpX3QpKHgpLCAodmhpX3QpKHkpLCB+MCkpCisjICBlbmRpZgorIyAgZGVmaW5lIG1p eCh4LCB5KSAoKHZlY190KUIobW92ZHF1aGksIF9tYXNrLCAodmhpX3QpKHgpLCAodmhpX3QpKHkp LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMGIwMTAxMDEwMTAxMDEwMTAxMDEw MTAxMDEwMTAxMDEwMSAmIEFMTF9UUlVFKSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSAoKGhhbGZf dClCKHBtb3ZkdywgX21hc2ssICh2c2lfdCkoeCksICh2aGlfaGFsZl90KXt9LCB+MCkpCisjICBk ZWZpbmUgc2hyaW5rMih4KSAoKHF1YXJ0ZXJfdClCKHBtb3ZxdywgX21hc2ssICh2ZGlfdCkoeCks ICh2aGlfcXVhcnRlcl90KXt9LCB+MCkpCisjIGVuZGlmCisjIGlmIElOVF9TSVpFID09IDEKKyMg IGRlZmluZSBtYXgoeCwgeSkgKCh2ZWNfdClCKHBtYXhzYiwgX21hc2ssICh2cWlfdCkoeCksICh2 cWlfdCkoeSksICh2cWlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgbWluKHgsIHkpICgodmVj X3QpQihwbWluc2IsIF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYo KSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnN4YncsIF9tYXNrLCAo dnFpX2hhbGZfdCkoeCksICh2aGlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4yKHgp ICgodmVjX3QpQihwbW92c3hiZCwgX21hc2ssICh2cWlfcXVhcnRlcl90KSh4KSwgKHZzaV90KXVu ZGVmKCksIH4wKSkKKyMgIGRlZmluZSB3aWRlbjMoeCkgKCh2ZWNfdClCKHBtb3ZzeGJxLCBfbWFz aywgKHZxaV9laWdodGhfdCkoeCksICh2ZGlfdCl1bmRlZigpLCB+MCkpCisjIGVsaWYgVUlOVF9T SVpFID09IDEKKyMgIGRlZmluZSBtYXgoeCwgeSkgKCh2ZWNfdClCKHBtYXh1YiwgX21hc2ssICh2 cWlfdCkoeCksICh2cWlfdCkoeSksICh2cWlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgbWlu KHgsIHkpICgodmVjX3QpQihwbWludWIsIF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKHkpLCAo dnFpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnp4 YncsIF9tYXNrLCAodnFpX2hhbGZfdCkoeCksICh2aGlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZp bmUgd2lkZW4yKHgpICgodmVjX3QpQihwbW92enhiZCwgX21hc2ssICh2cWlfcXVhcnRlcl90KSh4 KSwgKHZzaV90KXVuZGVmKCksIH4wKSkKKyMgIGRlZmluZSB3aWRlbjMoeCkgKCh2ZWNfdClCKHBt b3Z6eGJxLCBfbWFzaywgKHZxaV9laWdodGhfdCkoeCksICh2ZGlfdCl1bmRlZigpLCB+MCkpCisj IGVsaWYgSU5UX1NJWkUgPT0gMgorIyAgZGVmaW5lIG1heCh4LCB5KSBCKHBtYXhzdywgX21hc2ss IHgsIHksIHVuZGVmKCksIH4wKQorIyAgZGVmaW5lIG1pbih4LCB5KSBCKHBtaW5zdywgX21hc2ss IHgsIHksIHVuZGVmKCksIH4wKQorIyAgZGVmaW5lIG11bF9oaSh4LCB5KSBCKHBtdWxodywgX21h c2ssIHgsIHksIHVuZGVmKCksIH4wKQorIyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1v dnN4d2QsIF9tYXNrLCB4LCAodnNpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMih4 KSAoKHZlY190KUIocG1vdnN4d3EsIF9tYXNrLCB4LCAodmRpX3QpdW5kZWYoKSwgfjApKQorIyBl bGlmIFVJTlRfU0laRSA9PSAyCisjICBkZWZpbmUgbWF4KHgsIHkpICgodmVjX3QpQihwbWF4dXcs IF9tYXNrLCAodmhpX3QpKHgpLCAodmhpX3QpKHkpLCAodmhpX3QpdW5kZWYoKSwgfjApKQorIyAg ZGVmaW5lIG1pbih4LCB5KSAoKHZlY190KUIocG1pbnV3LCBfbWFzaywgKHZoaV90KSh4KSwgKHZo aV90KSh5KSwgKHZoaV90KXVuZGVmKCksIH4wKSkKKyMgIGRlZmluZSBtdWxfaGkoeCwgeSkgKCh2 ZWNfdClCKHBtdWxodXcsIF9tYXNrLCAodmhpX3QpKHgpLCAodmhpX3QpKHkpLCAodmhpX3QpdW5k ZWYoKSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnp4d2QsIF9tYXNr LCAodmhpX2hhbGZfdCkoeCksICh2c2lfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4y KHgpICgodmVjX3QpQihwbW92enh3cSwgX21hc2ssICh2aGlfcXVhcnRlcl90KSh4KSwgKHZkaV90 KXVuZGVmKCksIH4wKSkKKyMgZW5kaWYKICNlbGlmIFZFQ19TSVpFID09IDE2ICYmIGRlZmluZWQo X19TU0UyX18pCiAjIGlmIElOVF9TSVpFID09IDEgfHwgVUlOVF9TSVpFID09IDEKICMgIGRlZmlu ZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpX19idWlsdGluX2lhMzJfcHVucGNraGJ3MTI4 KCh2cWlfdCkoeCksICh2cWlfdCkoeSkpKQpAQCAtNTU5LDcgKzY0NCw3IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBfdG9fYm9vbChieXRlX3ZlY190IGIKICMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYK LSNpZiBWRUNfU0laRSA9PSAxNiAmJiBkZWZpbmVkKF9fU1NTRTNfXykKKyNpZiBWRUNfU0laRSA9 PSAxNiAmJiBkZWZpbmVkKF9fU1NTRTNfXykgJiYgIWRlZmluZWQoX19BVlg1MTJWTF9fKQogIyBp ZiBJTlRfU0laRSA9PSAxCiAjICBkZWZpbmUgYWJzKHgpICgodmVjX3QpX19idWlsdGluX2lhMzJf cGFic2IxMjgoKHZxaV90KSh4KSkpCiAjIGVsaWYgSU5UX1NJWkUgPT0gMgpAQCAtNzgzLDYgKzg2 OCw0MCBAQCBzdGF0aWMgaW5saW5lIGhhbGZfdCBsb3dfaGFsZih2ZWNfdCB4KQogfQogIyBlbmRp ZgogCisjIGlmICFkZWZpbmVkKGxvd19xdWFydGVyKSAmJiBkZWZpbmVkKFFVQVJURVJfU0laRSkK K3N0YXRpYyBpbmxpbmUgcXVhcnRlcl90IGxvd19xdWFydGVyKHZlY190IHgpCit7CisjICBpZiBR VUFSVEVSX1NJWkUgPCBWRUNfU0laRQorICAgIHF1YXJ0ZXJfdCB5OworICAgIHVuc2lnbmVkIGlu dCBpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBFTEVNX0NPVU5UIC8gNDsgKytpICkKKyAgICAg ICAgeVtpXSA9IHhbaV07CisKKyAgICByZXR1cm4geTsKKyMgIGVsc2UKKyAgICByZXR1cm4geDsK KyMgIGVuZGlmCit9CisjIGVuZGlmCisKKyMgaWYgIWRlZmluZWQobG93X2VpZ2h0aCkgJiYgZGVm aW5lZChFSUdIVEhfU0laRSkKK3N0YXRpYyBpbmxpbmUgZWlnaHRoX3QgbG93X2VpZ2h0aCh2ZWNf dCB4KQoreworIyAgaWYgRUlHSFRIX1NJWkUgPCBWRUNfU0laRQorICAgIGVpZ2h0aF90IHk7Cisg ICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEVMRU1fQ09VTlQgLyA0 OyArK2kgKQorICAgICAgICB5W2ldID0geFtpXTsKKworICAgIHJldHVybiB5OworIyAgZWxzZQor ICAgIHJldHVybiB4OworIyAgZW5kaWYKK30KKyMgZW5kaWYKKwogI2VuZGlmCiAKICNpZiBkZWZp bmVkKF9fQVZYNTEyRl9fKSAmJiBkZWZpbmVkKEZMT0FUX1NJWkUpCkBAIC0xMTExLDcgKzEyMzAs NyBAQCBpbnQgc2ltZF90ZXN0KHZvaWQpCiAgICAgeSA9IGludGVybGVhdmVfbG8oYWx0IDwgMCwg YWx0IDwgMCk7CiAgICAgeSA9IGludGVybGVhdmVfbG8oeiwgeSk7CiAgICAgdG91Y2goeCk7Ci0g ICAgeiA9IHdpZGVuMih4KTsKKyAgICB6ID0gd2lkZW4yKGxvd19xdWFydGVyKHgpKTsKICAgICB0 b3VjaCh4KTsKICAgICBpZiAoICFlcSh6LCB5KSApIHJldHVybiBfX0xJTkVfXzsKIApAQCAtMTEy MCw3ICsxMjM5LDcgQEAgaW50IHNpbWRfdGVzdCh2b2lkKQogICAgIHkgPSBpbnRlcmxlYXZlX2xv KHksIHkpOwogICAgIHkgPSBpbnRlcmxlYXZlX2xvKHosIHkpOwogICAgIHRvdWNoKHgpOwotICAg IHogPSB3aWRlbjMoeCk7CisgICAgeiA9IHdpZGVuMyhsb3dfZWlnaHRoKHgpKTsKICAgICB0b3Vj aCh4KTsKICAgICBpZiAoICFlcSh6LCB5KSApIHJldHVybiBfX0xJTkVfXzsKICMgIGVuZGlmCkBA IC0xMTQyLDE0ICsxMjYxLDE0IEBAIGludCBzaW1kX3Rlc3Qodm9pZCkKIAogIyBpZmRlZiB3aWRl bjIKICAgICB0b3VjaChzcmMpOwotICAgIHggPSB3aWRlbjIoc3JjKTsKKyAgICB4ID0gd2lkZW4y KGxvd19xdWFydGVyKHNyYykpOwogICAgIHRvdWNoKHNyYyk7CiAgICAgaWYgKCAhZXEoeCwgeikg KSByZXR1cm4gX19MSU5FX187CiAjIGVuZGlmCiAKICMgaWZkZWYgd2lkZW4zCiAgICAgdG91Y2go c3JjKTsKLSAgICB4ID0gd2lkZW4zKHNyYyk7CisgICAgeCA9IHdpZGVuMyhsb3dfZWlnaHRoKHNy YykpOwogICAgIHRvdWNoKHNyYyk7CiAgICAgaWYgKCAhZXEoeCwgaW50ZXJsZWF2ZV9sbyh6LCAo dmVjX3Qpe30pKSApIHJldHVybiBfX0xJTkVfXzsKICMgZW5kaWYKQEAgLTExNjksNiArMTI4OCwz NiBAQCBpbnQgc2ltZF90ZXN0KHZvaWQpCiAgICAgICAgICAgICBpZiAoIGF1eDJbaV0gIT0gc3Jj W2ldICkKICAgICAgICAgICAgICAgICByZXR1cm4gX19MSU5FX187CiAgICAgfQorI2VuZGlmCisK KyNpZiBkZWZpbmVkKHdpZGVuMikgJiYgZGVmaW5lZChzaHJpbmsyKQorICAgIHsKKyAgICAgICAg cXVhcnRlcl90IGF1eDEgPSBsb3dfcXVhcnRlcihzcmMpLCBhdXgyOworCisgICAgICAgIHRvdWNo KGF1eDEpOworICAgICAgICB4ID0gd2lkZW4yKGF1eDEpOworICAgICAgICB0b3VjaCh4KTsKKyAg ICAgICAgYXV4MiA9IHNocmluazIoeCk7CisgICAgICAgIHRvdWNoKGF1eDIpOworICAgICAgICBm b3IgKCBpID0gMDsgaSA8IEVMRU1fQ09VTlQgLyA0OyArK2kgKQorICAgICAgICAgICAgaWYgKCBh dXgyW2ldICE9IHNyY1tpXSApCisgICAgICAgICAgICAgICAgcmV0dXJuIF9fTElORV9fOworICAg IH0KKyNlbmRpZgorCisjaWYgZGVmaW5lZCh3aWRlbjMpICYmIGRlZmluZWQoc2hyaW5rMykKKyAg ICB7CisgICAgICAgIGVpZ2h0aF90IGF1eDEgPSBsb3dfZWlnaHRoKHNyYyksIGF1eDI7CisKKyAg ICAgICAgdG91Y2goYXV4MSk7CisgICAgICAgIHggPSB3aWRlbjMoYXV4MSk7CisgICAgICAgIHRv dWNoKHgpOworICAgICAgICBhdXgyID0gc2hyaW5rMyh4KTsKKyAgICAgICAgdG91Y2goYXV4Mik7 CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgRUxFTV9DT1VOVCAvIDg7ICsraSApCisgICAgICAg ICAgICBpZiAoIGF1eDJbaV0gIT0gc3JjW2ldICkKKyAgICAgICAgICAgICAgICByZXR1cm4gX19M SU5FX187CisgICAgfQogI2VuZGlmCiAKICNpZmRlZiBkdXBfbG8KLS0tIGEvdG9vbHMvdGVzdHMv eDg2X2VtdWxhdG9yL3NpbWQuaAorKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC5o CkBAIC05NSw2ICs5NSwzMiBAQCB0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6 ZShICiB0eXBlZGVmIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJ WkUpKSkgdmRpX2hhbGZfdDsKICMgZW5kaWYKIAorIyBpZiBFTEVNX0NPVU5UID49IDQKKyMgIGlm IFZFQ19TSVpFID4gNjQKKyMgICBkZWZpbmUgUVVBUlRFUl9TSVpFIChWRUNfU0laRSAvIDQpCisj ICBlbHNlCisjICAgZGVmaW5lIFFVQVJURVJfU0laRSAxNgorIyAgZW5kaWYKK3R5cGVkZWYgdHlw ZW9mKCh2ZWNfdCl7fVswXSkgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoUVVBUlRFUl9TSVpF KSkpIHF1YXJ0ZXJfdDsKK3R5cGVkZWYgY2hhciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShR VUFSVEVSX1NJWkUpKSkgdnFpX3F1YXJ0ZXJfdDsKK3R5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVf XygodmVjdG9yX3NpemUoUVVBUlRFUl9TSVpFKSkpIHZoaV9xdWFydGVyX3Q7Cit0eXBlZGVmIGlu dCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShRVUFSVEVSX1NJWkUpKSkgdnNpX3F1YXJ0ZXJf dDsKK3R5cGVkZWYgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKFFVQVJURVJf U0laRSkpKSB2ZGlfcXVhcnRlcl90OworIyBlbmRpZgorCisjIGlmIEVMRU1fQ09VTlQgPj0gOAor IyAgaWYgVkVDX1NJWkUgPiAxMjgKKyMgICBkZWZpbmUgRUlHSFRIX1NJWkUgKFZFQ19TSVpFIC8g OCkKKyMgIGVsc2UKKyMgICBkZWZpbmUgRUlHSFRIX1NJWkUgMTYKKyMgIGVuZGlmCit0eXBlZGVm IHR5cGVvZigodmVjX3Qpe31bMF0pIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEVJR0hUSF9T SVpFKSkpIGVpZ2h0aF90OwordHlwZWRlZiBjaGFyIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXpl KEVJR0hUSF9TSVpFKSkpIHZxaV9laWdodGhfdDsKK3R5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVf XygodmVjdG9yX3NpemUoRUlHSFRIX1NJWkUpKSkgdmhpX2VpZ2h0aF90OwordHlwZWRlZiBpbnQg X19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoRUlHSFRIX1NJWkUpKSkgdnNpX2VpZ2h0aF90Owor dHlwZWRlZiBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoRUlHSFRIX1NJWkUp KSkgdmRpX2VpZ2h0aF90OworIyBlbmRpZgorCiAjZW5kaWYKIAogI2lmIFZFQ19TSVpFID09IDE2 CkBAIC0xODIsNiArMjA4LDkgQEAgT1ZSX1NGUChicm9hZGNhc3QpOwogT1ZSX1NGUChjb21pKTsK IE9WUl9GUChhZGQpOwogT1ZSX0lOVChhZGQpOworT1ZSX0JXKGFkZHMpOworT1ZSX0JXKGFkZHVz KTsKK09WUl9CVyhhdmcpOwogT1ZSX0ZQKGRpdik7CiBPVlIoZXh0cmFjdHBzKTsKIE9WUl9GTUEo Zm1hZGQsIEZQKTsKQEAgLTIyOSw2ICsyNTgsOCBAQCBPVlJfSU5UKHNybCk7CiBPVlJfRFEoc3Js dik7CiBPVlJfRlAoc3ViKTsKIE9WUl9JTlQoc3ViKTsKK09WUl9CVyhzdWJzKTsKK09WUl9CVyhz dWJ1cyk7CiBPVlJfU0ZQKHVjb21pKTsKIE9WUl9WRlAodW5wY2toKTsKIE9WUl9WRlAodW5wY2ts KTsKQEAgLTI3NSw2ICszMDYsMjkgQEAgT1ZSKHBtdWxkcSk7CiBPVlIocG11bHVkcSk7CiAjZW5k aWYKIAorI2lmZGVmIF9fQVZYNTEyQldfXworT1ZSKHBleHRyYik7CitPVlIocGV4dHJ3KTsKK09W UihwaW5zcmIpOworT1ZSKHBpbnNydyk7CitPVlIocG1hZGR3ZCk7CitPVlIocG1vdnN4YncpOwor T1ZSKHBtb3Z6eGJ3KTsKK09WUihwbXVsaHV3KTsKK09WUihwbXVsaHcpOworT1ZSKHBtdWxsdyk7 CitPVlIocHNhZGJ3KTsKK09WUihwc2h1ZmIpOworT1ZSKHBzaHVmaHcpOworT1ZSKHBzaHVmbHcp OworT1ZSKHB1bnBja2hidyk7CitPVlIocHVucGNraHdkKTsKK09WUihwdW5wY2tsYncpOworT1ZS KHB1bnBja2x3ZCk7CitPVlIoc2xsZHEpOworT1ZSKHNybGRxKTsKKyNlbmRpZgorCiAjdW5kZWYg T1ZSX1ZGUAogI3VuZGVmIE9WUl9TRlAKICN1bmRlZiBPVlJfSU5UCi0tLSBhL3Rvb2xzL3Rlc3Rz L3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCkBAIC0yMiw2ICsyMiw3IEBAIGFzbSAoICIucHVz aHNlY3Rpb24gLnRlc3QsIFwiYXhcIiwgQHByb2cKICNpbmNsdWRlICJhdng1MTJkcS1vcG1hc2su aCIKICNpbmNsdWRlICJhdng1MTJidy1vcG1hc2suaCIKICNpbmNsdWRlICJhdng1MTJmLmgiCisj aW5jbHVkZSAiYXZ4NTEyYncuaCIKIAogI2RlZmluZSB2ZXJib3NlIGZhbHNlIC8qIFN3aXRjaCB0 byB0cnVlIGZvciBmYXIgbW9yZSBsb2dnaW5nLiAqLwogCkBAIC0xMDUsNiArMTA2LDExIEBAIHN0 YXRpYyBib29sIHNpbWRfY2hlY2tfYXZ4NTEyYncodm9pZCkKIH0KICNkZWZpbmUgc2ltZF9jaGVj a19hdng1MTJid19vcG1hc2sgc2ltZF9jaGVja19hdng1MTJidwogCitzdGF0aWMgYm9vbCBzaW1k X2NoZWNrX2F2eDUxMmJ3X3ZsKHZvaWQpCit7CisgICAgcmV0dXJuIGNwdV9oYXNfYXZ4NTEyYncg JiYgY3B1X2hhc19hdng1MTJ2bDsKK30KKwogc3RhdGljIHZvaWQgc2ltZF9zZXRfcmVncyhzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIHsKICAgICBpZiAoIGNwdV9oYXNfbW14ICkKQEAgLTI4 NCw2ICsyOTAsMTggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CiAgICAgQVZYNTEyVkwoVkwgdTY0 eDIsICAgICAgICBhdng1MTJmLCAgICAgIDE2dTgpLAogICAgIEFWWDUxMlZMKFZMIHM2NHg0LCAg ICAgICAgYXZ4NTEyZiwgICAgICAzMmk4KSwKICAgICBBVlg1MTJWTChWTCB1NjR4NCwgICAgICAg IGF2eDUxMmYsICAgICAgMzJ1OCksCisgICAgU0lNRChBVlg1MTJCVyBzOHg2NCwgICAgIGF2eDUx MmJ3LCAgICAgIDY0aTEpLAorICAgIFNJTUQoQVZYNTEyQlcgdTh4NjQsICAgICBhdng1MTJidywg ICAgICA2NHUxKSwKKyAgICBTSU1EKEFWWDUxMkJXIHMxNngzMiwgICAgYXZ4NTEyYncsICAgICAg NjRpMiksCisgICAgU0lNRChBVlg1MTJCVyB1MTZ4MzIsICAgIGF2eDUxMmJ3LCAgICAgIDY0dTIp LAorICAgIEFWWDUxMlZMKEJXK1ZMIHM4eDE2LCAgICBhdng1MTJidywgICAgICAxNmkxKSwKKyAg ICBBVlg1MTJWTChCVytWTCB1OHgxNiwgICAgYXZ4NTEyYncsICAgICAgMTZ1MSksCisgICAgQVZY NTEyVkwoQlcrVkwgczh4MzIsICAgIGF2eDUxMmJ3LCAgICAgIDMyaTEpLAorICAgIEFWWDUxMlZM KEJXK1ZMIHU4eDMyLCAgICBhdng1MTJidywgICAgICAzMnUxKSwKKyAgICBBVlg1MTJWTChCVytW TCBzMTZ4OCwgICAgYXZ4NTEyYncsICAgICAgMTZpMiksCisgICAgQVZYNTEyVkwoQlcrVkwgdTE2 eDgsICAgIGF2eDUxMmJ3LCAgICAgIDE2dTIpLAorICAgIEFWWDUxMlZMKEJXK1ZMIHMxNngxNiwg ICBhdng1MTJidywgICAgICAzMmkyKSwKKyAgICBBVlg1MTJWTChCVytWTCB1MTZ4MTYsICAgYXZ4 NTEyYncsICAgICAgMzJ1MiksCiAjdW5kZWYgQVZYNTEyVkxfCiAjdW5kZWYgQVZYNTEyVkwKICN1 bmRlZiBTSU1EXwoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==