From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v4 33/44] x86emul: basic AVX512BW testing Date: Tue, 25 Sep 2018 07:47:34 -0600 Message-ID: <5BAA3C7602000078001EBB19@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 us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g4ngm-0000gw-5d for xen-devel@lists.xenproject.org; Tue, 25 Sep 2018 13:47:44 +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 Cc: George Dunlap , Andrew Cooper , Wei Liu List-Id: xen-devel@lists.xenproject.org VGVzdCB2YXJpb3VzIG9mIHRoZSBpbnNucyB3aGljaCBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgYWxy ZWFkeS4KClNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0t CnY0OiBBZGQgX19BVlg1MTJWTF9fIGNvbmRpdGlvbmFsIGFyb3VuZCBtYWpvcml0eSBvZiBPVlIo KSBhZGRpdGlvbnMuCiAgICBDb3JyZWN0IGVxKCkgZm9yIDEtIGFuZCAyLWJ5dGUgY2FzZXMuCnYz OiBOZXcuCgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUKKysrIGIvdG9v bHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCkBAIC0xMyw3ICsxMyw3IEBAIGFsbDogJChU QVJHRVQpCiBydW46ICQoVEFSR0VUKQogCS4vJChUQVJHRVQpCiAKLVNJTUQgOj0gM2Rub3cgc3Nl IHNzZTIgc3NlNCBhdnggYXZ4MiB4b3AgYXZ4NTEyZgorU0lNRCA6PSAzZG5vdyBzc2Ugc3NlMiBz c2U0IGF2eCBhdngyIHhvcCBhdng1MTJmIGF2eDUxMmJ3CiBGTUEgOj0gZm1hNCBmbWEKIFNHIDo9 IGF2eDItc2cKIFRFU1RDQVNFUyA6PSBibG93ZmlzaCAkKFNJTUQpICQoRk1BKSAkKFNHKQpAQCAt NjMsNiArNjMsOSBAQCB4b3AtZmx0cyA6PSAkKGF2eC1mbHRzKQogYXZ4NTEyZi12ZWNzIDo9IDY0 IDE2IDMyCiBhdng1MTJmLWludHMgOj0gNCA4CiBhdng1MTJmLWZsdHMgOj0gNCA4Cithdng1MTJi dy12ZWNzIDo9ICQoYXZ4NTEyZi12ZWNzKQorYXZ4NTEyYnctaW50cyA6PSAxIDIKK2F2eDUxMmJ3 LWZsdHMgOj0KIAogYXZ4NTEyZi1vcG1hc2stdmVjcyA6PSAyCiBhdng1MTJkcS1vcG1hc2stdmVj cyA6PSAxCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKKysrIGIvdG9vbHMv dGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuYwpAQCAtMzEsNiArMzEsMTAgQEAgRU5UUlkoc2ltZF90 ZXN0KTsKICMgIGRlZmluZSBlcSh4LCB5KSAoKEJSKGNtcHBzLCBfbWFzaywgeCwgeSwgMCwgLTEp ICYgQUxMX1RSVUUpID09IEFMTF9UUlVFKQogIyBlbGlmIEZMT0FUX1NJWkUgPT0gOAogIyAgZGVm aW5lIGVxKHgsIHkpIChCUihjbXBwZCwgX21hc2ssIHgsIHksIDAsIC0xKSA9PSBBTExfVFJVRSkK KyMgZWxpZiAoSU5UX1NJWkUgPT0gMSB8fCBVSU5UX1NJWkUgPT0gMSkgJiYgZGVmaW5lZChfX0FW WDUxMkJXX18pCisjICBkZWZpbmUgZXEoeCwgeSkgKEIocGNtcGVxYiwgX21hc2ssICh2cWlfdCko eCksICh2cWlfdCkoeSksIC0xKSA9PSBBTExfVFJVRSkKKyMgZWxpZiAoSU5UX1NJWkUgPT0gMiB8 fCBVSU5UX1NJWkUgPT0gMikgJiYgZGVmaW5lZChfX0FWWDUxMkJXX18pCisjICBkZWZpbmUgZXEo eCwgeSkgKEIocGNtcGVxdywgX21hc2ssICh2aGlfdCkoeCksICh2aGlfdCkoeSksIC0xKSA9PSBB TExfVFJVRSkKICMgZWxpZiBJTlRfU0laRSA9PSA0IHx8IFVJTlRfU0laRSA9PSA0CiAjICBkZWZp bmUgZXEoeCwgeSkgKEIocGNtcGVxZCwgX21hc2ssICh2c2lfdCkoeCksICh2c2lfdCkoeSksIC0x KSA9PSBBTExfVFJVRSkKICMgZWxpZiBJTlRfU0laRSA9PSA4IHx8IFVJTlRfU0laRSA9PSA4CkBA IC0zNjgsNiArMzcyLDg3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9fYm9vbChieXRlX3ZlY190 IGIKICMgIGRlZmluZSBtYXgoeCwgeSkgKCh2ZWNfdClCKHBtYXh1cSwgX21hc2ssICh2ZGlfdCko eCksICh2ZGlfdCkoeSksICh2ZGlfdCl1bmRlZigpLCB+MCkpCiAjICBkZWZpbmUgbWluKHgsIHkp ICgodmVjX3QpQihwbWludXEsIF9tYXNrLCAodmRpX3QpKHgpLCAodmRpX3QpKHkpLCAodmRpX3Qp dW5kZWYoKSwgfjApKQogIyBlbmRpZgorI2VsaWYgKElOVF9TSVpFID09IDEgfHwgVUlOVF9TSVpF ID09IDEgfHwgSU5UX1NJWkUgPT0gMiB8fCBVSU5UX1NJWkUgPT0gMikgJiYgXAorICAgICAgZGVm aW5lZChfX0FWWDUxMkJXX18pICYmIChWRUNfU0laRSA9PSA2NCB8fCBkZWZpbmVkKF9fQVZYNTEy VkxfXykpCisjIGlmIElOVF9TSVpFID09IDEgfHwgVUlOVF9TSVpFID09IDEKKyMgIGRlZmluZSBi cm9hZGNhc3QoeCkgKHsgXAorICAgIHZlY190IHRfOyBcCisgICAgYXNtICggIiV7ZXZleCV9IHZw YnJvYWRjYXN0YiAlMSwgJTAiIFwKKyAgICAgICAgICA6ICI9diIgKHRfKSA6ICJtIiAoKihjaGFy WzFdKXsgeCB9KSApOyBcCisgICAgdF87IFwKK30pCisjICBkZWZpbmUgYnJvYWRjYXN0Mih4KSAo eyBcCisgICAgdmVjX3QgdF87IFwKKyAgICBhc20gKCAidnBicm9hZGNhc3RiICVrMSwgJTAiIDog Ij12IiAodF8pIDogInIiICh4KSApOyBcCisgICAgdF87IFwKK30pCisjICBpZiBWRUNfU0laRSA9 PSAxNgorIyAgIGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpQihwdW5wY2toYncs IF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYoKSwgfjApKQorIyAg IGRlZmluZSBpbnRlcmxlYXZlX2xvKHgsIHkpICgodmVjX3QpQihwdW5wY2tsYncsIF9tYXNrLCAo dnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYoKSwgfjApKQorIyAgIGRlZmluZSBz d2FwKHgpICgodmVjX3QpQihwc2h1ZmIsIF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKGludiAt IDEpLCAodnFpX3QpdW5kZWYoKSwgfjApKQorIyAgZWxpZiBkZWZpbmVkKF9fQVZYNTEyVkJNSV9f KQorIyAgIGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpQih2cGVybWkydmFycWks IF9tYXNrLCAodnFpX3QpKHgpLCBpbnRlcmxlYXZlX2hpLCAodnFpX3QpKHkpLCB+MCkpCisjICAg ZGVmaW5lIGludGVybGVhdmVfbG8oeCwgeSkgKCh2ZWNfdClCKHZwZXJtdDJ2YXJxaSwgX21hc2ss IGludGVybGVhdmVfbG8sICh2cWlfdCkoeCksICh2cWlfdCkoeSksIH4wKSkKKyMgIGVuZGlmCisj ICBkZWZpbmUgbWl4KHgsIHkpICgodmVjX3QpQihtb3ZkcXVxaSwgX21hc2ssICh2cWlfdCkoeCks ICh2cWlfdCkoeSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwYjAxMDEwMTAx MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDFM TCAmIEFMTF9UUlVFKSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSAoKGhhbGZfdClCKHBtb3Z3Yiwg X21hc2ssICh2aGlfdCkoeCksICh2cWlfaGFsZl90KXt9LCB+MCkpCisjICBkZWZpbmUgc2hyaW5r Mih4KSAoKHF1YXJ0ZXJfdClCKHBtb3ZkYiwgX21hc2ssICh2c2lfdCkoeCksICh2cWlfcXVhcnRl cl90KXt9LCB+MCkpCisjICBkZWZpbmUgc2hyaW5rMyh4KSAoKGVpZ2h0aF90KUIocG1vdnFiLCBf bWFzaywgKHZkaV90KSh4KSwgKHZxaV9laWdodGhfdCl7fSwgfjApKQorIyBlbGlmIElOVF9TSVpF ID09IDIgfHwgVUlOVF9TSVpFID09IDIKKyMgIGRlZmluZSBicm9hZGNhc3QoeCkgKHsgXAorICAg IHZlY190IHRfOyBcCisgICAgYXNtICggIiV7ZXZleCV9IHZwYnJvYWRjYXN0dyAlMSwgJTAiIFwK KyAgICAgICAgICA6ICI9diIgKHRfKSA6ICJtIiAoKihzaG9ydFsxXSl7IHggfSkgKTsgXAorICAg IHRfOyBcCit9KQorIyAgZGVmaW5lIGJyb2FkY2FzdDIoeCkgKHsgXAorICAgIHZlY190IHRfOyBc CisgICAgYXNtICggInZwYnJvYWRjYXN0dyAlazEsICUwIiA6ICI9diIgKHRfKSA6ICJyIiAoeCkg KTsgXAorICAgIHRfOyBcCit9KQorIyAgaWYgVkVDX1NJWkUgPT0gMTYKKyMgICBkZWZpbmUgaW50 ZXJsZWF2ZV9oaSh4LCB5KSAoKHZlY190KUIocHVucGNraHdkLCBfbWFzaywgKHZoaV90KSh4KSwg KHZoaV90KSh5KSwgKHZoaV90KXVuZGVmKCksIH4wKSkKKyMgICBkZWZpbmUgaW50ZXJsZWF2ZV9s byh4LCB5KSAoKHZlY190KUIocHVucGNrbHdkLCBfbWFzaywgKHZoaV90KSh4KSwgKHZoaV90KSh5 KSwgKHZoaV90KXVuZGVmKCksIH4wKSkKKyMgICBkZWZpbmUgc3dhcCh4KSAoKHZlY190KUIocHNo dWZkLCBfbWFzaywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodnNpX3QpQihwc2h1 Zmh3LCBfbWFzaywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCKHBz aHVmbHcsIF9tYXNrLCAodmhpX3QpKHgpLCAwYjAwMDExMDExLCAodmhpX3QpdW5kZWYoKSwgfjAp LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBiMDAwMTEwMTEsICh2 aGlfdCl1bmRlZigpLCB+MCksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGIwMTAw MTExMCwgKHZzaV90KXVuZGVmKCksIH4wKSkKKyMgIGVsc2UKKyMgICBkZWZpbmUgaW50ZXJsZWF2 ZV9oaSh4LCB5KSAoKHZlY190KUIodnBlcm1pMnZhcmhpLCBfbWFzaywgKHZoaV90KSh4KSwgaW50 ZXJsZWF2ZV9oaSwgKHZoaV90KSh5KSwgfjApKQorIyAgIGRlZmluZSBpbnRlcmxlYXZlX2xvKHgs IHkpICgodmVjX3QpQih2cGVybXQydmFyaGksIF9tYXNrLCBpbnRlcmxlYXZlX2xvLCAodmhpX3Qp KHgpLCAodmhpX3QpKHkpLCB+MCkpCisjICBlbmRpZgorIyAgZGVmaW5lIG1peCh4LCB5KSAoKHZl Y190KUIobW92ZHF1aGksIF9tYXNrLCAodmhpX3QpKHgpLCAodmhpX3QpKHkpLCBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoMGIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEw MSAmIEFMTF9UUlVFKSkpCisjICBkZWZpbmUgc2hyaW5rMSh4KSAoKGhhbGZfdClCKHBtb3Zkdywg X21hc2ssICh2c2lfdCkoeCksICh2aGlfaGFsZl90KXt9LCB+MCkpCisjICBkZWZpbmUgc2hyaW5r Mih4KSAoKHF1YXJ0ZXJfdClCKHBtb3ZxdywgX21hc2ssICh2ZGlfdCkoeCksICh2aGlfcXVhcnRl cl90KXt9LCB+MCkpCisjIGVuZGlmCisjIGlmIElOVF9TSVpFID09IDEKKyMgIGRlZmluZSBtYXgo eCwgeSkgKCh2ZWNfdClCKHBtYXhzYiwgX21hc2ssICh2cWlfdCkoeCksICh2cWlfdCkoeSksICh2 cWlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgbWluKHgsIHkpICgodmVjX3QpQihwbWluc2Is IF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYoKSwgfjApKQorIyAg ZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnN4YncsIF9tYXNrLCAodnFpX2hhbGZfdCko eCksICh2aGlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4yKHgpICgodmVjX3QpQihw bW92c3hiZCwgX21hc2ssICh2cWlfcXVhcnRlcl90KSh4KSwgKHZzaV90KXVuZGVmKCksIH4wKSkK KyMgIGRlZmluZSB3aWRlbjMoeCkgKCh2ZWNfdClCKHBtb3ZzeGJxLCBfbWFzaywgKHZxaV9laWdo dGhfdCkoeCksICh2ZGlfdCl1bmRlZigpLCB+MCkpCisjIGVsaWYgVUlOVF9TSVpFID09IDEKKyMg IGRlZmluZSBtYXgoeCwgeSkgKCh2ZWNfdClCKHBtYXh1YiwgX21hc2ssICh2cWlfdCkoeCksICh2 cWlfdCkoeSksICh2cWlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgbWluKHgsIHkpICgodmVj X3QpQihwbWludWIsIF9tYXNrLCAodnFpX3QpKHgpLCAodnFpX3QpKHkpLCAodnFpX3QpdW5kZWYo KSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnp4YncsIF9tYXNrLCAo dnFpX2hhbGZfdCkoeCksICh2aGlfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4yKHgp ICgodmVjX3QpQihwbW92enhiZCwgX21hc2ssICh2cWlfcXVhcnRlcl90KSh4KSwgKHZzaV90KXVu ZGVmKCksIH4wKSkKKyMgIGRlZmluZSB3aWRlbjMoeCkgKCh2ZWNfdClCKHBtb3Z6eGJxLCBfbWFz aywgKHZxaV9laWdodGhfdCkoeCksICh2ZGlfdCl1bmRlZigpLCB+MCkpCisjIGVsaWYgSU5UX1NJ WkUgPT0gMgorIyAgZGVmaW5lIG1heCh4LCB5KSBCKHBtYXhzdywgX21hc2ssIHgsIHksIHVuZGVm KCksIH4wKQorIyAgZGVmaW5lIG1pbih4LCB5KSBCKHBtaW5zdywgX21hc2ssIHgsIHksIHVuZGVm KCksIH4wKQorIyAgZGVmaW5lIG11bF9oaSh4LCB5KSBCKHBtdWxodywgX21hc2ssIHgsIHksIHVu ZGVmKCksIH4wKQorIyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnN4d2QsIF9tYXNr LCB4LCAodnNpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIHdpZGVuMih4KSAoKHZlY190KUIo cG1vdnN4d3EsIF9tYXNrLCB4LCAodmRpX3QpdW5kZWYoKSwgfjApKQorIyBlbGlmIFVJTlRfU0la RSA9PSAyCisjICBkZWZpbmUgbWF4KHgsIHkpICgodmVjX3QpQihwbWF4dXcsIF9tYXNrLCAodmhp X3QpKHgpLCAodmhpX3QpKHkpLCAodmhpX3QpdW5kZWYoKSwgfjApKQorIyAgZGVmaW5lIG1pbih4 LCB5KSAoKHZlY190KUIocG1pbnV3LCBfbWFzaywgKHZoaV90KSh4KSwgKHZoaV90KSh5KSwgKHZo aV90KXVuZGVmKCksIH4wKSkKKyMgIGRlZmluZSBtdWxfaGkoeCwgeSkgKCh2ZWNfdClCKHBtdWxo dXcsIF9tYXNrLCAodmhpX3QpKHgpLCAodmhpX3QpKHkpLCAodmhpX3QpdW5kZWYoKSwgfjApKQor IyAgZGVmaW5lIHdpZGVuMSh4KSAoKHZlY190KUIocG1vdnp4d2QsIF9tYXNrLCAodmhpX2hhbGZf dCkoeCksICh2c2lfdCl1bmRlZigpLCB+MCkpCisjICBkZWZpbmUgd2lkZW4yKHgpICgodmVjX3Qp QihwbW92enh3cSwgX21hc2ssICh2aGlfcXVhcnRlcl90KSh4KSwgKHZkaV90KXVuZGVmKCksIH4w KSkKKyMgZW5kaWYKICNlbGlmIFZFQ19TSVpFID09IDE2ICYmIGRlZmluZWQoX19TU0UyX18pCiAj IGlmIElOVF9TSVpFID09IDEgfHwgVUlOVF9TSVpFID09IDEKICMgIGRlZmluZSBpbnRlcmxlYXZl X2hpKHgsIHkpICgodmVjX3QpX19idWlsdGluX2lhMzJfcHVucGNraGJ3MTI4KCh2cWlfdCkoeCks ICh2cWlfdCkoeSkpKQpAQCAtNTU5LDcgKzY0NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9f Ym9vbChieXRlX3ZlY190IGIKICMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKLSNpZiBWRUNfU0la RSA9PSAxNiAmJiBkZWZpbmVkKF9fU1NTRTNfXykKKyNpZiBWRUNfU0laRSA9PSAxNiAmJiBkZWZp bmVkKF9fU1NTRTNfXykgJiYgIWRlZmluZWQoX19BVlg1MTJWTF9fKQogIyBpZiBJTlRfU0laRSA9 PSAxCiAjICBkZWZpbmUgYWJzKHgpICgodmVjX3QpX19idWlsdGluX2lhMzJfcGFic2IxMjgoKHZx aV90KSh4KSkpCiAjIGVsaWYgSU5UX1NJWkUgPT0gMgpAQCAtNzgzLDYgKzg2OCw0MCBAQCBzdGF0 aWMgaW5saW5lIGhhbGZfdCBsb3dfaGFsZih2ZWNfdCB4KQogfQogIyBlbmRpZgogCisjIGlmICFk ZWZpbmVkKGxvd19xdWFydGVyKSAmJiBkZWZpbmVkKFFVQVJURVJfU0laRSkKK3N0YXRpYyBpbmxp bmUgcXVhcnRlcl90IGxvd19xdWFydGVyKHZlY190IHgpCit7CisjICBpZiBRVUFSVEVSX1NJWkUg PCBWRUNfU0laRQorICAgIHF1YXJ0ZXJfdCB5OworICAgIHVuc2lnbmVkIGludCBpOworCisgICAg Zm9yICggaSA9IDA7IGkgPCBFTEVNX0NPVU5UIC8gNDsgKytpICkKKyAgICAgICAgeVtpXSA9IHhb aV07CisKKyAgICByZXR1cm4geTsKKyMgIGVsc2UKKyAgICByZXR1cm4geDsKKyMgIGVuZGlmCit9 CisjIGVuZGlmCisKKyMgaWYgIWRlZmluZWQobG93X2VpZ2h0aCkgJiYgZGVmaW5lZChFSUdIVEhf U0laRSkKK3N0YXRpYyBpbmxpbmUgZWlnaHRoX3QgbG93X2VpZ2h0aCh2ZWNfdCB4KQoreworIyAg aWYgRUlHSFRIX1NJWkUgPCBWRUNfU0laRQorICAgIGVpZ2h0aF90IHk7CisgICAgdW5zaWduZWQg aW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEVMRU1fQ09VTlQgLyA0OyArK2kgKQorICAg ICAgICB5W2ldID0geFtpXTsKKworICAgIHJldHVybiB5OworIyAgZWxzZQorICAgIHJldHVybiB4 OworIyAgZW5kaWYKK30KKyMgZW5kaWYKKwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9fQVZYNTEy Rl9fKSAmJiBkZWZpbmVkKEZMT0FUX1NJWkUpCkBAIC0xMTExLDcgKzEyMzAsNyBAQCBpbnQgc2lt ZF90ZXN0KHZvaWQpCiAgICAgeSA9IGludGVybGVhdmVfbG8oYWx0IDwgMCwgYWx0IDwgMCk7CiAg ICAgeSA9IGludGVybGVhdmVfbG8oeiwgeSk7CiAgICAgdG91Y2goeCk7Ci0gICAgeiA9IHdpZGVu Mih4KTsKKyAgICB6ID0gd2lkZW4yKGxvd19xdWFydGVyKHgpKTsKICAgICB0b3VjaCh4KTsKICAg ICBpZiAoICFlcSh6LCB5KSApIHJldHVybiBfX0xJTkVfXzsKIApAQCAtMTEyMCw3ICsxMjM5LDcg QEAgaW50IHNpbWRfdGVzdCh2b2lkKQogICAgIHkgPSBpbnRlcmxlYXZlX2xvKHksIHkpOwogICAg IHkgPSBpbnRlcmxlYXZlX2xvKHosIHkpOwogICAgIHRvdWNoKHgpOwotICAgIHogPSB3aWRlbjMo eCk7CisgICAgeiA9IHdpZGVuMyhsb3dfZWlnaHRoKHgpKTsKICAgICB0b3VjaCh4KTsKICAgICBp ZiAoICFlcSh6LCB5KSApIHJldHVybiBfX0xJTkVfXzsKICMgIGVuZGlmCkBAIC0xMTQyLDE0ICsx MjYxLDE0IEBAIGludCBzaW1kX3Rlc3Qodm9pZCkKIAogIyBpZmRlZiB3aWRlbjIKICAgICB0b3Vj aChzcmMpOwotICAgIHggPSB3aWRlbjIoc3JjKTsKKyAgICB4ID0gd2lkZW4yKGxvd19xdWFydGVy KHNyYykpOwogICAgIHRvdWNoKHNyYyk7CiAgICAgaWYgKCAhZXEoeCwgeikgKSByZXR1cm4gX19M SU5FX187CiAjIGVuZGlmCiAKICMgaWZkZWYgd2lkZW4zCiAgICAgdG91Y2goc3JjKTsKLSAgICB4 ID0gd2lkZW4zKHNyYyk7CisgICAgeCA9IHdpZGVuMyhsb3dfZWlnaHRoKHNyYykpOwogICAgIHRv dWNoKHNyYyk7CiAgICAgaWYgKCAhZXEoeCwgaW50ZXJsZWF2ZV9sbyh6LCAodmVjX3Qpe30pKSAp IHJldHVybiBfX0xJTkVfXzsKICMgZW5kaWYKQEAgLTExNjksNiArMTI4OCwzNiBAQCBpbnQgc2lt ZF90ZXN0KHZvaWQpCiAgICAgICAgICAgICBpZiAoIGF1eDJbaV0gIT0gc3JjW2ldICkKICAgICAg ICAgICAgICAgICByZXR1cm4gX19MSU5FX187CiAgICAgfQorI2VuZGlmCisKKyNpZiBkZWZpbmVk KHdpZGVuMikgJiYgZGVmaW5lZChzaHJpbmsyKQorICAgIHsKKyAgICAgICAgcXVhcnRlcl90IGF1 eDEgPSBsb3dfcXVhcnRlcihzcmMpLCBhdXgyOworCisgICAgICAgIHRvdWNoKGF1eDEpOworICAg ICAgICB4ID0gd2lkZW4yKGF1eDEpOworICAgICAgICB0b3VjaCh4KTsKKyAgICAgICAgYXV4MiA9 IHNocmluazIoeCk7CisgICAgICAgIHRvdWNoKGF1eDIpOworICAgICAgICBmb3IgKCBpID0gMDsg aSA8IEVMRU1fQ09VTlQgLyA0OyArK2kgKQorICAgICAgICAgICAgaWYgKCBhdXgyW2ldICE9IHNy Y1tpXSApCisgICAgICAgICAgICAgICAgcmV0dXJuIF9fTElORV9fOworICAgIH0KKyNlbmRpZgor CisjaWYgZGVmaW5lZCh3aWRlbjMpICYmIGRlZmluZWQoc2hyaW5rMykKKyAgICB7CisgICAgICAg IGVpZ2h0aF90IGF1eDEgPSBsb3dfZWlnaHRoKHNyYyksIGF1eDI7CisKKyAgICAgICAgdG91Y2go YXV4MSk7CisgICAgICAgIHggPSB3aWRlbjMoYXV4MSk7CisgICAgICAgIHRvdWNoKHgpOworICAg ICAgICBhdXgyID0gc2hyaW5rMyh4KTsKKyAgICAgICAgdG91Y2goYXV4Mik7CisgICAgICAgIGZv ciAoIGkgPSAwOyBpIDwgRUxFTV9DT1VOVCAvIDg7ICsraSApCisgICAgICAgICAgICBpZiAoIGF1 eDJbaV0gIT0gc3JjW2ldICkKKyAgICAgICAgICAgICAgICByZXR1cm4gX19MSU5FX187CisgICAg fQogI2VuZGlmCiAKICNpZmRlZiBkdXBfbG8KLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9y L3NpbWQuaAorKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC5oCkBAIC05NSw2ICs5 NSwzMiBAQCB0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShICiB0eXBlZGVm IGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShIQUxGX1NJWkUpKSkgdmRpX2hh bGZfdDsKICMgZW5kaWYKIAorIyBpZiBFTEVNX0NPVU5UID49IDQKKyMgIGlmIFZFQ19TSVpFID4g NjQKKyMgICBkZWZpbmUgUVVBUlRFUl9TSVpFIChWRUNfU0laRSAvIDQpCisjICBlbHNlCisjICAg ZGVmaW5lIFFVQVJURVJfU0laRSAxNgorIyAgZW5kaWYKK3R5cGVkZWYgdHlwZW9mKCh2ZWNfdCl7 fVswXSkgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoUVVBUlRFUl9TSVpFKSkpIHF1YXJ0ZXJf dDsKK3R5cGVkZWYgY2hhciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZShRVUFSVEVSX1NJWkUp KSkgdnFpX3F1YXJ0ZXJfdDsKK3R5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3Np emUoUVVBUlRFUl9TSVpFKSkpIHZoaV9xdWFydGVyX3Q7Cit0eXBlZGVmIGludCBfX2F0dHJpYnV0 ZV9fKCh2ZWN0b3Jfc2l6ZShRVUFSVEVSX1NJWkUpKSkgdnNpX3F1YXJ0ZXJfdDsKK3R5cGVkZWYg bG9uZyBsb25nIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKFFVQVJURVJfU0laRSkpKSB2ZGlf cXVhcnRlcl90OworIyBlbmRpZgorCisjIGlmIEVMRU1fQ09VTlQgPj0gOAorIyAgaWYgVkVDX1NJ WkUgPiAxMjgKKyMgICBkZWZpbmUgRUlHSFRIX1NJWkUgKFZFQ19TSVpFIC8gOCkKKyMgIGVsc2UK KyMgICBkZWZpbmUgRUlHSFRIX1NJWkUgMTYKKyMgIGVuZGlmCit0eXBlZGVmIHR5cGVvZigodmVj X3Qpe31bMF0pIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEVJR0hUSF9TSVpFKSkpIGVpZ2h0 aF90OwordHlwZWRlZiBjaGFyIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKEVJR0hUSF9TSVpF KSkpIHZxaV9laWdodGhfdDsKK3R5cGVkZWYgc2hvcnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3Np emUoRUlHSFRIX1NJWkUpKSkgdmhpX2VpZ2h0aF90OwordHlwZWRlZiBpbnQgX19hdHRyaWJ1dGVf XygodmVjdG9yX3NpemUoRUlHSFRIX1NJWkUpKSkgdnNpX2VpZ2h0aF90OwordHlwZWRlZiBsb25n IGxvbmcgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoRUlHSFRIX1NJWkUpKSkgdmRpX2VpZ2h0 aF90OworIyBlbmRpZgorCiAjZW5kaWYKIAogI2lmIFZFQ19TSVpFID09IDE2CkBAIC0xODIsNiAr MjA4LDkgQEAgT1ZSX1NGUChicm9hZGNhc3QpOwogT1ZSX1NGUChjb21pKTsKIE9WUl9GUChhZGQp OwogT1ZSX0lOVChhZGQpOworT1ZSX0JXKGFkZHMpOworT1ZSX0JXKGFkZHVzKTsKK09WUl9CVyhh dmcpOwogT1ZSX0ZQKGRpdik7CiBPVlIoZXh0cmFjdHBzKTsKIE9WUl9GTUEoZm1hZGQsIEZQKTsK QEAgLTIxNCw2ICsyNDMsOCBAQCBPVlJfSU5UKHNybCk7CiBPVlJfRFEoc3Jsdik7CiBPVlJfRlAo c3ViKTsKIE9WUl9JTlQoc3ViKTsKK09WUl9CVyhzdWJzKTsKK09WUl9CVyhzdWJ1cyk7CiBPVlJf U0ZQKHVjb21pKTsKIE9WUl9WRlAodW5wY2toKTsKIE9WUl9WRlAodW5wY2tsKTsKQEAgLTI3NSw2 ICszMDYsMzEgQEAgT1ZSKHB1bnBja2xkcSk7CiBPVlIocHVucGNrbHFkcSk7CiAjZW5kaWYKIAor I2lmZGVmIF9fQVZYNTEyQldfXworT1ZSKHBleHRyYik7CitPVlIocGV4dHJ3KTsKK09WUihwaW5z cmIpOworT1ZSKHBpbnNydyk7CisjIGlmZGVmIF9fQVZYNTEyVkxfXworT1ZSKHBtYWRkd2QpOwor T1ZSKHBtb3ZzeGJ3KTsKK09WUihwbW92enhidyk7CitPVlIocG11bGh1dyk7CitPVlIocG11bGh3 KTsKK09WUihwbXVsbHcpOworT1ZSKHBzYWRidyk7CitPVlIocHNodWZiKTsKK09WUihwc2h1Zmh3 KTsKK09WUihwc2h1Zmx3KTsKK09WUihwdW5wY2toYncpOworT1ZSKHB1bnBja2h3ZCk7CitPVlIo cHVucGNrbGJ3KTsKK09WUihwdW5wY2tsd2QpOworT1ZSKHNsbGRxKTsKK09WUihzcmxkcSk7Cisj IGVuZGlmCisjZW5kaWYKKwogI3VuZGVmIE9WUl9WRlAKICN1bmRlZiBPVlJfU0ZQCiAjdW5kZWYg T1ZSX0lOVAotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3Iu YworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwpAQCAt MjIsNiArMjIsNyBAQCBhc20gKCAiLnB1c2hzZWN0aW9uIC50ZXN0LCBcImF4XCIsIEBwcm9nCiAj aW5jbHVkZSAiYXZ4NTEyZHEtb3BtYXNrLmgiCiAjaW5jbHVkZSAiYXZ4NTEyYnctb3BtYXNrLmgi CiAjaW5jbHVkZSAiYXZ4NTEyZi5oIgorI2luY2x1ZGUgImF2eDUxMmJ3LmgiCiAKICNkZWZpbmUg dmVyYm9zZSBmYWxzZSAvKiBTd2l0Y2ggdG8gdHJ1ZSBmb3IgZmFyIG1vcmUgbG9nZ2luZy4gKi8K IApAQCAtMTA1LDYgKzEwNiwxMSBAQCBzdGF0aWMgYm9vbCBzaW1kX2NoZWNrX2F2eDUxMmJ3KHZv aWQpCiB9CiAjZGVmaW5lIHNpbWRfY2hlY2tfYXZ4NTEyYndfb3BtYXNrIHNpbWRfY2hlY2tfYXZ4 NTEyYncKIAorc3RhdGljIGJvb2wgc2ltZF9jaGVja19hdng1MTJid192bCh2b2lkKQoreworICAg IHJldHVybiBjcHVfaGFzX2F2eDUxMmJ3ICYmIGNwdV9oYXNfYXZ4NTEydmw7Cit9CisKIHN0YXRp YyB2b2lkIHNpbWRfc2V0X3JlZ3Moc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiB7CiAgICAg aWYgKCBjcHVfaGFzX21teCApCkBAIC0yODQsNiArMjkwLDE4IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgewogICAgIEFWWDUxMlZMKFZMIHU2NHgyLCAgICAgICAgYXZ4NTEyZiwgICAgICAxNnU4KSwK ICAgICBBVlg1MTJWTChWTCBzNjR4NCwgICAgICAgIGF2eDUxMmYsICAgICAgMzJpOCksCiAgICAg QVZYNTEyVkwoVkwgdTY0eDQsICAgICAgICBhdng1MTJmLCAgICAgIDMydTgpLAorICAgIFNJTUQo QVZYNTEyQlcgczh4NjQsICAgICBhdng1MTJidywgICAgICA2NGkxKSwKKyAgICBTSU1EKEFWWDUx MkJXIHU4eDY0LCAgICAgYXZ4NTEyYncsICAgICAgNjR1MSksCisgICAgU0lNRChBVlg1MTJCVyBz MTZ4MzIsICAgIGF2eDUxMmJ3LCAgICAgIDY0aTIpLAorICAgIFNJTUQoQVZYNTEyQlcgdTE2eDMy LCAgICBhdng1MTJidywgICAgICA2NHUyKSwKKyAgICBBVlg1MTJWTChCVytWTCBzOHgxNiwgICAg YXZ4NTEyYncsICAgICAgMTZpMSksCisgICAgQVZYNTEyVkwoQlcrVkwgdTh4MTYsICAgIGF2eDUx MmJ3LCAgICAgIDE2dTEpLAorICAgIEFWWDUxMlZMKEJXK1ZMIHM4eDMyLCAgICBhdng1MTJidywg ICAgICAzMmkxKSwKKyAgICBBVlg1MTJWTChCVytWTCB1OHgzMiwgICAgYXZ4NTEyYncsICAgICAg MzJ1MSksCisgICAgQVZYNTEyVkwoQlcrVkwgczE2eDgsICAgIGF2eDUxMmJ3LCAgICAgIDE2aTIp LAorICAgIEFWWDUxMlZMKEJXK1ZMIHUxNng4LCAgICBhdng1MTJidywgICAgICAxNnUyKSwKKyAg ICBBVlg1MTJWTChCVytWTCBzMTZ4MTYsICAgYXZ4NTEyYncsICAgICAgMzJpMiksCisgICAgQVZY NTEyVkwoQlcrVkwgdTE2eDE2LCAgIGF2eDUxMmJ3LCAgICAgIDMydTIpLAogI3VuZGVmIEFWWDUx MlZMXwogI3VuZGVmIEFWWDUxMlZMCiAjdW5kZWYgU0lNRF8KCgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=