From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v3 33/34] x86emul: basic AVX512DQ testing Date: Tue, 18 Sep 2018 06:14:32 -0600 Message-ID: <5BA0EC2802000078001E96A4@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 us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g2Eto-0002dk-6a for xen-devel@lists.xenproject.org; Tue, 18 Sep 2018 12:14:36 +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 c3NlIHNzZTIgc3NlNCBhdnggYXZ4MiB4b3AgYXZ4NTEyZiBhdng1MTJidworU0lNRCA6PSAzZG5v dyBzc2Ugc3NlMiBzc2U0IGF2eCBhdngyIHhvcCBhdng1MTJmIGF2eDUxMmJ3IGF2eDUxMmRxCiBG TUEgOj0gZm1hNCBmbWEKIFNHIDo9IGF2eDItc2cKIFRFU1RDQVNFUyA6PSBibG93ZmlzaCAkKFNJ TUQpICQoRk1BKSAkKFNHKQpAQCAtNTgsOSArNTgsMTIgQEAgYXZ4NTEyZi1mbHRzIDo9IDQgOAog YXZ4NTEyYnctdmVjcyA6PSAkKGF2eDUxMmYtdmVjcykKIGF2eDUxMmJ3LWludHMgOj0gMSAyCiBh dng1MTJidy1mbHRzIDo9Cithdng1MTJkcS12ZWNzIDo9ICQoYXZ4NTEyZi12ZWNzKQorYXZ4NTEy ZHEtaW50cyA6PSAkKGF2eDUxMmYtaW50cykKK2F2eDUxMmRxLWZsdHMgOj0gJChhdng1MTJmLWZs dHMpCiAKIGF2eDUxMmYtb3BtYXNrLXZlY3MgOj0gMgotYXZ4NTEyZHEtb3BtYXNrLXZlY3MgOj0g MQorYXZ4NTEyZHEtb3BtYXNrLXZlY3MgOj0gMSAyCiBhdng1MTJidy1vcG1hc2stdmVjcyA6PSA0 IDgKIAogIyBGb3IgQVZYIGFuZCBsYXRlciwgaGF2ZSB0aGUgY29tcGlsZXIgYXZvaWQgWE1NMCB0 byB3aWRlbiBjb3ZlcmFnZSBvZgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC5o CisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmgKQEAgLTEyMSw2ICsxMjEsMzQg QEAgdHlwZWRlZiBpbnQgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoRQogdHlwZWRlZiBsb25n IGxvbmcgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoRUlHSFRIX1NJWkUpKSkgdmRpX2VpZ2h0 aF90OwogIyBlbmRpZgogCisjIGRlZmluZSBERUNMX1BBSVIodykgXAordHlwZWRlZiB3ICMjIF90 IHBhaXJfdDsgXAordHlwZWRlZiB2c2lfICMjIHcgIyMgX3QgdnNpX3BhaXJfdDsgXAordHlwZWRl ZiB2ZGlfICMjIHcgIyMgX3QgdmRpX3BhaXJfdAorIyBkZWZpbmUgREVDTF9RVUFSVEVUKHcpIFwK K3R5cGVkZWYgdyAjIyBfdCBxdWFydGV0X3Q7IFwKK3R5cGVkZWYgdnNpXyAjIyB3ICMjIF90IHZz aV9xdWFydGV0X3Q7IFwKK3R5cGVkZWYgdmRpXyAjIyB3ICMjIF90IHZkaV9xdWFydGV0X3QKKyMg ZGVmaW5lIERFQ0xfT0NURVQodykgXAordHlwZWRlZiB3ICMjIF90IG9jdGV0X3Q7IFwKK3R5cGVk ZWYgdnNpXyAjIyB3ICMjIF90IHZzaV9vY3RldF90OyBcCit0eXBlZGVmIHZkaV8gIyMgdyAjIyBf dCB2ZGlfb2N0ZXRfdAorCisjIGlmIEVMRU1fQ09VTlQgPT0gNAorREVDTF9QQUlSKGhhbGYpOwor IyBlbGlmIEVMRU1fQ09VTlQgPT0gOAorREVDTF9QQUlSKHF1YXJ0ZXIpOworREVDTF9RVUFSVEVU KGhhbGYpOworIyBlbGlmIEVMRU1fQ09VTlQgPT0gMTYKK0RFQ0xfUEFJUihlaWdodGgpOworREVD TF9RVUFSVEVUKHF1YXJ0ZXIpOworREVDTF9PQ1RFVChoYWxmKTsKKyMgZW5kaWYKKworIyB1bmRl ZiBERUNMX09DVEVUCisjIHVuZGVmIERFQ0xfUVVBUlRFVAorIyB1bmRlZiBERUNMX1BBSVIKKwog I2VuZGlmCiAKICNpZiBWRUNfU0laRSA9PSAxNgpAQCAtMTQ2LDYgKzE3NCwxNCBAQCB0eXBlZGVm IGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3JfCiAjaWZkZWYgX19BVlg1MTJGX18KIAog LyogU2FkbHkgdGhlcmUgYXJlIGEgZmV3IGV4Y2VwdGlvbnMgdG8gdGhlIGdlbmVyYWwgbmFtaW5n IHJ1bGVzLiAqLworI2RlZmluZSBfX2J1aWx0aW5faWEzMl9icm9hZGNhc3RmMzJ4NF81MTJfbWFz ayBfX2J1aWx0aW5faWEzMl9icm9hZGNhc3RmMzJ4NF81MTIKKyNkZWZpbmUgX19idWlsdGluX2lh MzJfYnJvYWRjYXN0aTMyeDRfNTEyX21hc2sgX19idWlsdGluX2lhMzJfYnJvYWRjYXN0aTMyeDRf NTEyCisjZGVmaW5lIF9fYnVpbHRpbl9pYTMyX2luc2VydGYzMng0XzUxMl9tYXNrIF9fYnVpbHRp bl9pYTMyX2luc2VydGYzMng0X21hc2sKKyNkZWZpbmUgX19idWlsdGluX2lhMzJfaW5zZXJ0ZjMy eDhfNTEyX21hc2sgX19idWlsdGluX2lhMzJfaW5zZXJ0ZjMyeDhfbWFzaworI2RlZmluZSBfX2J1 aWx0aW5faWEzMl9pbnNlcnRmNjR4NF81MTJfbWFzayBfX2J1aWx0aW5faWEzMl9pbnNlcnRmNjR4 NF9tYXNrCisjZGVmaW5lIF9fYnVpbHRpbl9pYTMyX2luc2VydGkzMng0XzUxMl9tYXNrIF9fYnVp bHRpbl9pYTMyX2luc2VydGkzMng0X21hc2sKKyNkZWZpbmUgX19idWlsdGluX2lhMzJfaW5zZXJ0 aTMyeDhfNTEyX21hc2sgX19idWlsdGluX2lhMzJfaW5zZXJ0aTMyeDhfbWFzaworI2RlZmluZSBf X2J1aWx0aW5faWEzMl9pbnNlcnRpNjR4NF81MTJfbWFzayBfX2J1aWx0aW5faWEzMl9pbnNlcnRp NjR4NF9tYXNrCiAjZGVmaW5lIF9fYnVpbHRpbl9pYTMyX3NodWZfZjMyeDRfNTEyX21hc2sgX19i dWlsdGluX2lhMzJfc2h1Zl9mMzJ4NF9tYXNrCiAjZGVmaW5lIF9fYnVpbHRpbl9pYTMyX3NodWZf ZjY0eDJfNTEyX21hc2sgX19idWlsdGluX2lhMzJfc2h1Zl9mNjR4Ml9tYXNrCiAjZGVmaW5lIF9f YnVpbHRpbl9pYTMyX3NodWZfaTMyeDRfNTEyX21hc2sgX19idWlsdGluX2lhMzJfc2h1Zl9pMzJ4 NF9tYXNrCkBAIC0zMjksNiArMzY1LDE4IEBAIE9WUihzbGxkcSk7CiBPVlIoc3JsZHEpOwogI2Vu ZGlmCiAKKyNpZmRlZiBfX0FWWDUxMkRRX18KK09WUl9WRlAoYW5kKTsKK09WUl9WRlAoYW5kbik7 CitPVlJfVkZQKG9yKTsKK09WUihwZXh0cmQpOworT1ZSKHBleHRycSk7CitPVlIocGluc3JkKTsK K09WUihwaW5zcnEpOworT1ZSKHBtdWxscSk7CitPVlJfVkZQKHhvcik7CisjZW5kaWYKKwogI3Vu ZGVmIE9WUl9WRlAKICN1bmRlZiBPVlJfU0ZQCiAjdW5kZWYgT1ZSX0lOVAotLS0gYS90b29scy90 ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYworKysgYi90b29scy90ZXN0cy94 ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwpAQCAtMjMsNiArMjMsNyBAQCBhc20gKCAi LnB1c2hzZWN0aW9uIC50ZXN0LCBcImF4XCIsIEBwcm9nCiAjaW5jbHVkZSAiYXZ4NTEyYnctb3Bt YXNrLmgiCiAjaW5jbHVkZSAiYXZ4NTEyZi5oIgogI2luY2x1ZGUgImF2eDUxMmJ3LmgiCisjaW5j bHVkZSAiYXZ4NTEyZHEuaCIKIAogI2RlZmluZSB2ZXJib3NlIGZhbHNlIC8qIFN3aXRjaCB0byB0 cnVlIGZvciBmYXIgbW9yZSBsb2dnaW5nLiAqLwogCkBAIC0xMDAsNiArMTAxLDExIEBAIHN0YXRp YyBib29sIHNpbWRfY2hlY2tfYXZ4NTEyZHEodm9pZCkKIH0KICNkZWZpbmUgc2ltZF9jaGVja19h dng1MTJkcV9vcG1hc2sgc2ltZF9jaGVja19hdng1MTJkcQogCitzdGF0aWMgYm9vbCBzaW1kX2No ZWNrX2F2eDUxMmRxX3ZsKHZvaWQpCit7CisgICAgcmV0dXJuIGNwdV9oYXNfYXZ4NTEyZHEgJiYg Y3B1X2hhc19hdng1MTJ2bDsKK30KKwogc3RhdGljIGJvb2wgc2ltZF9jaGVja19hdng1MTJidyh2 b2lkKQogewogICAgIHJldHVybiBjcHVfaGFzX2F2eDUxMmJ3OwpAQCAtMjY3LDkgKzI3MywxMCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICBTSU1EKFhPUCBpMzJ4OCwgICAgICAgICAgICAg ICB4b3AsICAgICAgMzJpNCksCiAgICAgU0lNRChYT1AgaTY0eDQsICAgICAgICAgICAgICAgeG9w LCAgICAgIDMyaTgpLAogICAgIFNJTUQoT1BNQVNLL3csICAgICBhdng1MTJmX29wbWFzaywgICAg ICAgICAyKSwKLSAgICBTSU1EKE9QTUFTSy9iLCAgICBhdng1MTJkcV9vcG1hc2ssICAgICAgICAg MSksCi0gICAgU0lNRChPUE1BU0svZCwgICAgYXZ4NTEyYndfb3BtYXNrLCAgICAgICAgIDQpLAot ICAgIFNJTUQoT1BNQVNLL3EsICAgIGF2eDUxMmJ3X29wbWFzaywgICAgICAgICA4KSwKKyAgICBT SU1EKE9QTUFTSytEUS9iLCBhdng1MTJkcV9vcG1hc2ssICAgICAgICAgMSksCisgICAgU0lNRChP UE1BU0srRFEvdywgYXZ4NTEyZHFfb3BtYXNrLCAgICAgICAgIDIpLAorICAgIFNJTUQoT1BNQVNL K0JXL2QsIGF2eDUxMmJ3X29wbWFzaywgICAgICAgICA0KSwKKyAgICBTSU1EKE9QTUFTSytCVy9x LCBhdng1MTJid19vcG1hc2ssICAgICAgICAgOCksCiAgICAgU0lNRChBVlg1MTJGIGYzMiBzY2Fs YXIsICBhdng1MTJmLCAgICAgICAgZjQpLAogICAgIFNJTUQoQVZYNTEyRiBmMzJ4MTYsICAgICAg YXZ4NTEyZiwgICAgICA2NGY0KSwKICAgICBTSU1EKEFWWDUxMkYgZjY0IHNjYWxhciwgIGF2eDUx MmYsICAgICAgICBmOCksCkBAIC0zMDIsNiArMzA5LDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ewogICAgIEFWWDUxMlZMKEJXK1ZMIHUxNng4LCAgICBhdng1MTJidywgICAgICAxNnUyKSwKICAg ICBBVlg1MTJWTChCVytWTCBzMTZ4MTYsICAgYXZ4NTEyYncsICAgICAgMzJpMiksCiAgICAgQVZY NTEyVkwoQlcrVkwgdTE2eDE2LCAgIGF2eDUxMmJ3LCAgICAgIDMydTIpLAorICAgIFNJTUQoQVZY NTEyRFEgZjMyeDE2LCAgICBhdng1MTJkcSwgICAgICA2NGY0KSwKKyAgICBTSU1EKEFWWDUxMkRR IGY2NHg4LCAgICAgYXZ4NTEyZHEsICAgICAgNjRmOCksCisgICAgU0lNRChBVlg1MTJEUSBzMzJ4 MTYsICAgIGF2eDUxMmRxLCAgICAgIDY0aTQpLAorICAgIFNJTUQoQVZYNTEyRFEgdTMyeDE2LCAg ICBhdng1MTJkcSwgICAgICA2NHU0KSwKKyAgICBTSU1EKEFWWDUxMkRRIHM2NHg4LCAgICAgYXZ4 NTEyZHEsICAgICAgNjRpOCksCisgICAgU0lNRChBVlg1MTJEUSB1NjR4OCwgICAgIGF2eDUxMmRx LCAgICAgIDY0dTgpLAorICAgIEFWWDUxMlZMKERRK1ZMIGYzMng0LCAgICBhdng1MTJkcSwgICAg ICAxNmY0KSwKKyAgICBBVlg1MTJWTChEUStWTCBmNjR4MiwgICAgYXZ4NTEyZHEsICAgICAgMTZm OCksCisgICAgQVZYNTEyVkwoRFErVkwgZjMyeDgsICAgIGF2eDUxMmRxLCAgICAgIDMyZjQpLAor ICAgIEFWWDUxMlZMKERRK1ZMIGY2NHg0LCAgICBhdng1MTJkcSwgICAgICAzMmY4KSwKKyAgICBB Vlg1MTJWTChEUStWTCBzMzJ4NCwgICAgYXZ4NTEyZHEsICAgICAgMTZpNCksCisgICAgQVZYNTEy VkwoRFErVkwgdTMyeDQsICAgIGF2eDUxMmRxLCAgICAgIDE2dTQpLAorICAgIEFWWDUxMlZMKERR K1ZMIHMzMng4LCAgICBhdng1MTJkcSwgICAgICAzMmk0KSwKKyAgICBBVlg1MTJWTChEUStWTCB1 MzJ4OCwgICAgYXZ4NTEyZHEsICAgICAgMzJ1NCksCisgICAgQVZYNTEyVkwoRFErVkwgczY0eDIs ICAgIGF2eDUxMmRxLCAgICAgIDE2aTgpLAorICAgIEFWWDUxMlZMKERRK1ZMIHU2NHgyLCAgICBh dng1MTJkcSwgICAgICAxNnU4KSwKKyAgICBBVlg1MTJWTChEUStWTCBzNjR4NCwgICAgYXZ4NTEy ZHEsICAgICAgMzJpOCksCisgICAgQVZYNTEyVkwoRFErVkwgdTY0eDQsICAgIGF2eDUxMmRxLCAg ICAgIDMydTgpLAogI3VuZGVmIEFWWDUxMlZMXwogI3VuZGVmIEFWWDUxMlZMCiAjdW5kZWYgU0lN RF8KLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQuYworKysgYi90b29scy90ZXN0 cy94ODZfZW11bGF0b3Ivc2ltZC5jCkBAIC0xMzQsNiArMTM0LDI3IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBfdG9fYm9vbChieXRlX3ZlY190IGIKICNlbGlmIGRlZmluZWQoRkxPQVRfU0laRSkgJiYg ZGVmaW5lZChfX0FWWDUxMkZfXykgJiYgXAogICAgICAgKFZFQ19TSVpFID09IDY0IHx8IGRlZmlu ZWQoX19BVlg1MTJWTF9fKSkKICMgaWYgVkVDX1NJWkUgPiBGTE9BVF9TSVpFCisjICBpZiBFTEVN X0NPVU5UID09IDggLyogdmV4dHJhY3RmezMyLDY0fXg0ICovIHx8IFwKKyAgICAgICAoRUxFTV9D T1VOVCA9PSAxNiAmJiBFTEVNX1NJWkUgPT0gNCAmJiBkZWZpbmVkKF9fQVZYNTEyRFFfXykpIC8q IHZleHRyYWN0ZjMyeDggKi8gfHwgXAorICAgICAgIChFTEVNX0NPVU5UID09IDQgJiYgRUxFTV9T SVpFID09IDggJiYgZGVmaW5lZChfX0FWWDUxMkRRX18pKSAvKiB2ZXh0cmFjdGY2NHgyICovCisj ICAgZGVmaW5lIGxvd19oYWxmKHgpICh7IFwKKyAgICBoYWxmX3QgdF87IFwKKyAgICBhc20gKCAi dmV4dHJhY3RmJWNbd114JWNbbl0gJDAsICVbc10sICVbZF0iIFwKKyAgICAgICAgICA6IFtkXSAi PW0iICh0XykgXAorICAgICAgICAgIDogW3NdICJ2IiAoeCksIFt3XSAiaSIgKEVMRU1fU0laRSAq IDgpLCBbbl0gImkiIChFTEVNX0NPVU5UIC8gMikgKTsgXAorICAgIHRfOyBcCit9KQorIyAgZW5k aWYKKyMgIGlmIChFTEVNX0NPVU5UID09IDE2ICYmIEVMRU1fU0laRSA9PSA0KSAvKiB2ZXh0cmFj dGYzMng0ICovIHx8IFwKKyAgICAgICAoRUxFTV9DT1VOVCA9PSA4ICYmIEVMRU1fU0laRSA9PSA4 ICYmIGRlZmluZWQoX19BVlg1MTJEUV9fKSkgLyogdmV4dHJhY3RmNjR4MiAqLworIyAgIGRlZmlu ZSBsb3dfcXVhcnRlcih4KSAoeyBcCisgICAgcXVhcnRlcl90IHRfOyBcCisgICAgYXNtICggInZl eHRyYWN0ZiVjW3ddeCVjW25dICQwLCAlW3NdLCAlW2RdIiBcCisgICAgICAgICAgOiBbZF0gIj1t IiAodF8pIFwKKyAgICAgICAgICA6IFtzXSAidiIgKHgpLCBbd10gImkiIChFTEVNX1NJWkUgKiA4 KSwgW25dICJpIiAoRUxFTV9DT1VOVCAvIDQpICk7IFwKKyAgICB0XzsgXAorfSkKKyMgIGVuZGlm CiAjICBpZiBGTE9BVF9TSVpFID09IDQKICMgICBkZWZpbmUgYnJvYWRjYXN0KHgpICh7IFwKICAg ICB2ZWNfdCB0XzsgXApAQCAtMTQxLDYgKzE2MiwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX3Rv X2Jvb2woYnl0ZV92ZWNfdCBiCiAgICAgICAgICAgOiAiPXYiICh0XykgOiAibSIgKCooZmxvYXRb MV0peyB4IH0pICk7IFwKICAgICB0XzsgXAogfSkKKyMgICBpZiBWRUNfU0laRSA+PSAzMiAmJiBk ZWZpbmVkKF9fQVZYNTEyRFFfXykKKyMgICAgZGVmaW5lIGJyb2FkY2FzdF9wYWlyKHgpICh7IFwK KyAgICB2ZWNfdCB0XzsgXAorICAgIGFzbSAoICJ2YnJvYWRjYXN0ZjMyeDIgJTEsICUwIiA6ICI9 diIgKHRfKSA6ICJtIiAoeCkgKTsgXAorICAgIHRfOyBcCit9KQorIyAgIGVuZGlmCisjICAgaWYg VkVDX1NJWkUgPT0gNjQgJiYgZGVmaW5lZChfX0FWWDUxMkRRX18pCisjICAgIGRlZmluZSBicm9h ZGNhc3Rfb2N0ZXQoeCkgQihicm9hZGNhc3RmMzJ4OF8sIF9tYXNrLCB4LCB1bmRlZigpLCB+MCkK KyMgICAgZGVmaW5lIGluc2VydF9vY3RldCh4LCB5LCBwKSBCKGluc2VydGYzMng4XywgX21hc2ss IHgsIHksIHAsIHVuZGVmKCksIH4wKQorIyAgIGVuZGlmCiAjICAgZGVmaW5lIG1heCh4LCB5KSBC Ul8obWF4cHMsIF9tYXNrLCB4LCB5LCB1bmRlZigpLCB+MCkKICMgICBkZWZpbmUgbWluKHgsIHkp IEJSXyhtaW5wcywgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQogIyAgIGRlZmluZSBtaXgoeCwg eSkgQihtb3ZhcHMsIF9tYXNrLCB4LCB5LCAoMGIwMTAxMDEwMTAxMDEwMTAxICYgQUxMX1RSVUUp KQpAQCAtMTQ5LDYgKzE4MSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX3RvX2Jvb2woYnl0ZV92 ZWNfdCBiCiAjICAgIGRlZmluZSBpbnRlcmxlYXZlX2xvKHgsIHkpIEIodW5wY2tscHMsIF9tYXNr LCB4LCB5LCB1bmRlZigpLCB+MCkKICMgICAgZGVmaW5lIHN3YXAoeCkgQihzaHVmcHMsIF9tYXNr LCB4LCB4LCAwYjAwMDExMDExLCB1bmRlZigpLCB+MCkKICMgICBlbHNlCisjICAgIGRlZmluZSBi cm9hZGNhc3RfcXVhcnRldCh4KSBCKGJyb2FkY2FzdGYzMng0XywgX21hc2ssIHgsIHVuZGVmKCks IH4wKQorIyAgICBkZWZpbmUgaW5zZXJ0X3BhaXIoeCwgeSwgcCkgXAorICAgIEIoaW5zZXJ0ZjMy eDRfLCBfbWFzaywgeCwgXAorICAgICAgLyogQ2FzdCBuZWVkZWQgYmVsb3cgdG8gd29yayBhcm91 bmQgZ2NjIDcueCBxdWlyay4gKi8gXAorICAgICAgKHApICYgMSA/ICh0eXBlb2YoeSkpX19idWls dGluX2lhMzJfc2h1ZnBzKHksIHksIDBiMDEwMDAxMDApIDogKHkpLCBcCisgICAgICAocCkgPj4g MSwgeCwgMyA8PCAoKHApICogMikpCisjICAgIGRlZmluZSBpbnNlcnRfcXVhcnRldCh4LCB5LCBw KSBCKGluc2VydGYzMng0XywgX21hc2ssIHgsIHksIHAsIHVuZGVmKCksIH4wKQogIyAgICBkZWZp bmUgaW50ZXJsZWF2ZV9oaSh4LCB5KSBCKHZwZXJtaTJ2YXJwcywgX21hc2ssIHgsIGludGVybGVh dmVfaGksIHksIH4wKQogIyAgICBkZWZpbmUgaW50ZXJsZWF2ZV9sbyh4LCB5KSBCKHZwZXJtdDJ2 YXJwcywgX21hc2ssIGludGVybGVhdmVfbG8sIHgsIHksIH4wKQogIyAgICBkZWZpbmUgc3dhcCh4 KSAoeyBcCkBAIC0xNzIsNiArMjExLDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfdG9fYm9vbChi eXRlX3ZlY190IGIKICAgICB0XzsgXAogfSkKICMgICBlbmRpZgorIyAgIGlmIFZFQ19TSVpFID49 IDMyICYmIGRlZmluZWQoX19BVlg1MTJEUV9fKQorIyAgICBkZWZpbmUgYnJvYWRjYXN0X3BhaXIo eCkgQihicm9hZGNhc3RmNjR4Ml8sIF9tYXNrLCB4LCB1bmRlZigpLCB+MCkKKyMgICAgZGVmaW5l IGluc2VydF9wYWlyKHgsIHksIHApIEIoaW5zZXJ0ZjY0eDJfLCBfbWFzaywgeCwgeSwgcCwgdW5k ZWYoKSwgfjApCisjICAgZW5kaWYKKyMgICBpZiBWRUNfU0laRSA9PSA2NAorIyAgICBkZWZpbmUg YnJvYWRjYXN0X3F1YXJ0ZXQoeCkgQihicm9hZGNhc3RmNjR4NF8sICwgeCwgdW5kZWYoKSwgfjAp CisjICAgIGRlZmluZSBpbnNlcnRfcXVhcnRldCh4LCB5LCBwKSBCKGluc2VydGY2NHg0XywgX21h c2ssIHgsIHksIHAsIHVuZGVmKCksIH4wKQorIyAgIGVuZGlmCiAjICAgZGVmaW5lIG1heCh4LCB5 KSBCUl8obWF4cGQsIF9tYXNrLCB4LCB5LCB1bmRlZigpLCB+MCkKICMgICBkZWZpbmUgbWluKHgs IHkpIEJSXyhtaW5wZCwgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQogIyAgIGRlZmluZSBtaXgo eCwgeSkgQihtb3ZhcGQsIF9tYXNrLCB4LCB5LCAwYjAxMDEwMTAxKQpAQCAtMzAwLDYgKzM0Nywx NiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX3RvX2Jvb2woYnl0ZV92ZWNfdCBiCiAgICAgdF87IFwK IH0pCiAjIGVuZGlmCisjIGlmIChFTEVNX0NPVU5UID09IDE2ICYmIEVMRU1fU0laRSA9PSA0KSAv KiB2ZXh0cmFjdGkzMng0ICovIHx8IFwKKyAgICAgICAoRUxFTV9DT1VOVCA9PSA4ICYmIEVMRU1f U0laRSA9PSA4ICYmIGRlZmluZWQoX19BVlg1MTJEUV9fKSkgLyogdmV4dHJhY3RpNjR4MiAqLwor IyAgZGVmaW5lIGxvd19xdWFydGVyKHgpICh7IFwKKyAgICBxdWFydGVyX3QgdF87IFwKKyAgICBh c20gKCAidmV4dHJhY3RpJWNbd114JWNbbl0gJDAsICVbc10sICVbZF0iIFwKKyAgICAgICAgICA6 IFtkXSAiPW0iICh0XykgXAorICAgICAgICAgIDogW3NdICJ2IiAoeCksIFt3XSAiaSIgKEVMRU1f U0laRSAqIDgpLCBbbl0gImkiIChFTEVNX0NPVU5UIC8gNCkgKTsgXAorICAgIHRfOyBcCit9KQor IyBlbmRpZgogIyBpZiBJTlRfU0laRSA9PSA0IHx8IFVJTlRfU0laRSA9PSA0CiAjICBkZWZpbmUg YnJvYWRjYXN0KHgpICh7IFwKICAgICB2ZWNfdCB0XzsgXApAQCAtMzEyLDExICszNjksMzAgQEAg c3RhdGljIGlubGluZSBib29sIF90b19ib29sKGJ5dGVfdmVjX3QgYgogICAgIGFzbSAoICJ2cGJy b2FkY2FzdGQgJWsxLCAlMCIgOiAiPXYiICh0XykgOiAiciIgKHgpICk7IFwKICAgICB0XzsgXAog fSkKKyMgIGlmZGVmIF9fQVZYNTEyRFFfXworIyAgIGRlZmluZSBicm9hZGNhc3RfcGFpcih4KSAo eyBcCisgICAgdmVjX3QgdF87IFwKKyAgICBhc20gKCAidmJyb2FkY2FzdGkzMngyICUxLCAlMCIg OiAiPXYiICh0XykgOiAibSIgKHgpICk7IFwKKyAgICB0XzsgXAorfSkKKyMgIGVuZGlmCisjICBp ZiBWRUNfU0laRSA9PSA2NCAmJiBkZWZpbmVkKF9fQVZYNTEyRFFfXykKKyMgICBkZWZpbmUgYnJv YWRjYXN0X29jdGV0KHgpICgodmVjX3QpQihicm9hZGNhc3RpMzJ4OF8sIF9tYXNrLCAodnNpX29j dGV0X3QpKHgpLCAodnNpX3QpdW5kZWYoKSwgfjApKQorIyAgIGRlZmluZSBpbnNlcnRfb2N0ZXQo eCwgeSwgcCkgKCh2ZWNfdClCKGluc2VydGkzMng4XywgX21hc2ssICh2c2lfdCkoeCksICh2c2lf b2N0ZXRfdCkoeSksIHAsICh2c2lfdCl1bmRlZigpLCB+MCkpCisjICBlbmRpZgogIyAgaWYgVkVD X1NJWkUgPT0gMTYKICMgICBkZWZpbmUgaW50ZXJsZWF2ZV9oaSh4LCB5KSAoKHZlY190KUIocHVu cGNraGRxLCBfbWFzaywgKHZzaV90KSh4KSwgKHZzaV90KSh5KSwgKHZzaV90KXVuZGVmKCksIH4w KSkKICMgICBkZWZpbmUgaW50ZXJsZWF2ZV9sbyh4LCB5KSAoKHZlY190KUIocHVucGNrbGRxLCBf bWFzaywgKHZzaV90KSh4KSwgKHZzaV90KSh5KSwgKHZzaV90KXVuZGVmKCksIH4wKSkKICMgICBk ZWZpbmUgc3dhcCh4KSAoKHZlY190KUIocHNodWZkLCBfbWFzaywgKHZzaV90KSh4KSwgMGIwMDAx MTAxMSwgKHZzaV90KXVuZGVmKCksIH4wKSkKICMgIGVsc2UKKyMgICBkZWZpbmUgYnJvYWRjYXN0 X3F1YXJ0ZXQoeCkgKCh2ZWNfdClCKGJyb2FkY2FzdGkzMng0XywgX21hc2ssICh2c2lfcXVhcnRl dF90KSh4KSwgKHZzaV90KXVuZGVmKCksIH4wKSkKKyMgICBkZWZpbmUgaW5zZXJ0X3BhaXIoeCwg eSwgcCkgXAorICAgICh2ZWNfdCkoQihpbnNlcnRpMzJ4NF8sIF9tYXNrLCAodnNpX3QpKHgpLCBc CisgICAgICAgICAgICAgIC8qIEZpcnN0IGNhc3QgbmVlZGVkIGJlbG93IHRvIHdvcmsgYXJvdW5k IGdjYyA3LnggcXVpcmsuICovIFwKKyAgICAgICAgICAgICAgKHApICYgMSA/ICh2c2lfcGFpcl90 KV9fYnVpbHRpbl9pYTMyX3BzaHVmZCgodnNpX3BhaXJfdCkoeSksIDBiMDEwMDAxMDApIFwKKyAg ICAgICAgICAgICAgICAgICAgICA6ICh2c2lfcGFpcl90KSh5KSwgXAorICAgICAgICAgICAgICAo cCkgPj4gMSwgKHZzaV90KSh4KSwgMyA8PCAoKHApICogMikpKQorIyAgIGRlZmluZSBpbnNlcnRf cXVhcnRldCh4LCB5LCBwKSAoKHZlY190KUIoaW5zZXJ0aTMyeDRfLCBfbWFzaywgKHZzaV90KSh4 KSwgKHZzaV9xdWFydGV0X3QpKHkpLCBwLCAodnNpX3QpdW5kZWYoKSwgfjApKQogIyAgIGRlZmlu ZSBpbnRlcmxlYXZlX2hpKHgsIHkpICgodmVjX3QpQih2cGVybWkydmFyZCwgX21hc2ssICh2c2lf dCkoeCksIGludGVybGVhdmVfaGksICh2c2lfdCkoeSksIH4wKSkKICMgICBkZWZpbmUgaW50ZXJs ZWF2ZV9sbyh4LCB5KSAoKHZlY190KUIodnBlcm10MnZhcmQsIF9tYXNrLCBpbnRlcmxlYXZlX2xv LCAodnNpX3QpKHgpLCAodnNpX3QpKHkpLCB+MCkpCiAjICAgZGVmaW5lIHN3YXAoeCkgKCh2ZWNf dClCKHBzaHVmZCwgX21hc2ssIFwKQEAgLTM0MSw2ICs0MTcsMTQgQEAgc3RhdGljIGlubGluZSBi b29sIF90b19ib29sKGJ5dGVfdmVjX3QgYgogICAgIHRfOyBcCiB9KQogIyAgZW5kaWYKKyMgIGlm IFZFQ19TSVpFID49IDMyICYmIGRlZmluZWQoX19BVlg1MTJEUV9fKQorIyAgIGRlZmluZSBicm9h ZGNhc3RfcGFpcih4KSAoKHZlY190KUIoYnJvYWRjYXN0aTY0eDJfLCBfbWFzaywgKHZkaV9wYWly X3QpKHgpLCAodmRpX3QpdW5kZWYoKSwgfjApKQorIyAgIGRlZmluZSBpbnNlcnRfcGFpcih4LCB5 LCBwKSAoKHZlY190KUIoaW5zZXJ0aTY0eDJfLCBfbWFzaywgKHZkaV90KSh4KSwgKHZkaV9wYWly X3QpKHkpLCBwLCAodmRpX3QpdW5kZWYoKSwgfjApKQorIyAgZW5kaWYKKyMgIGlmIFZFQ19TSVpF ID09IDY0CisjICAgZGVmaW5lIGJyb2FkY2FzdF9xdWFydGV0KHgpICgodmVjX3QpQihicm9hZGNh c3RpNjR4NF8sICwgKHZkaV9xdWFydGV0X3QpKHgpLCAodmRpX3QpdW5kZWYoKSwgfjApKQorIyAg IGRlZmluZSBpbnNlcnRfcXVhcnRldCh4LCB5LCBwKSAoKHZlY190KUIoaW5zZXJ0aTY0eDRfLCBf bWFzaywgKHZkaV90KSh4KSwgKHZkaV9xdWFydGV0X3QpKHkpLCBwLCAodmRpX3QpdW5kZWYoKSwg fjApKQorIyAgZW5kaWYKICMgIGlmIFZFQ19TSVpFID09IDE2CiAjICAgZGVmaW5lIGludGVybGVh dmVfaGkoeCwgeSkgKCh2ZWNfdClCKHB1bnBja2hxZHEsIF9tYXNrLCAodmRpX3QpKHgpLCAodmRp X3QpKHkpLCAodmRpX3QpdW5kZWYoKSwgfjApKQogIyAgIGRlZmluZSBpbnRlcmxlYXZlX2xvKHgs IHkpICgodmVjX3QpQihwdW5wY2tscWRxLCBfbWFzaywgKHZkaV90KSh4KSwgKHZkaV90KSh5KSwg KHZkaV90KXVuZGVmKCksIH4wKSkKQEAgLTg5Miw3ICs5NzYsNyBAQCBzdGF0aWMgaW5saW5lIGVp Z2h0aF90IGxvd19laWdodGgodmVjX3QKICAgICBlaWdodGhfdCB5OwogICAgIHVuc2lnbmVkIGlu dCBpOwogCi0gICAgZm9yICggaSA9IDA7IGkgPCBFTEVNX0NPVU5UIC8gNDsgKytpICkKKyAgICBm b3IgKCBpID0gMDsgaSA8IEVMRU1fQ09VTlQgLyA4OyArK2kgKQogICAgICAgICB5W2ldID0geFtp XTsKIAogICAgIHJldHVybiB5OwpAQCAtOTA0LDYgKzk4OCw1MCBAQCBzdGF0aWMgaW5saW5lIGVp Z2h0aF90IGxvd19laWdodGgodmVjX3QKIAogI2VuZGlmCiAKKyNpZmRlZiBicm9hZGNhc3RfcGFp cgorIyBpZiBFTEVNX0NPVU5UID09IDQKKyMgIGRlZmluZSBicm9hZGNhc3RfaGFsZiBicm9hZGNh c3RfcGFpcgorIyBlbGlmIEVMRU1fQ09VTlQgPT0gOAorIyAgZGVmaW5lIGJyb2FkY2FzdF9xdWFy dGVyIGJyb2FkY2FzdF9wYWlyCisjIGVsaWYgRUxFTV9DT1VOVCA9PSAxNgorIyAgZGVmaW5lIGJy b2FkY2FzdF9laWdodGggYnJvYWRjYXN0X3BhaXIKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYg aW5zZXJ0X3BhaXIKKyMgaWYgRUxFTV9DT1VOVCA9PSA0CisjICBkZWZpbmUgaW5zZXJ0X2hhbGYg aW5zZXJ0X3BhaXIKKyMgZWxpZiBFTEVNX0NPVU5UID09IDgKKyMgIGRlZmluZSBpbnNlcnRfcXVh cnRlciBpbnNlcnRfcGFpcgorIyBlbGlmIEVMRU1fQ09VTlQgPT0gMTYKKyMgIGRlZmluZSBpbnNl cnRfZWlnaHRoIGluc2VydF9wYWlyCisjIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIGJyb2FkY2Fz dF9xdWFydGV0CisjIGlmIEVMRU1fQ09VTlQgPT0gOAorIyAgZGVmaW5lIGJyb2FkY2FzdF9oYWxm IGJyb2FkY2FzdF9xdWFydGV0CisjIGVsaWYgRUxFTV9DT1VOVCA9PSAxNgorIyAgZGVmaW5lIGJy b2FkY2FzdF9xdWFydGVyIGJyb2FkY2FzdF9xdWFydGV0CisjIGVuZGlmCisjZW5kaWYKKworI2lm ZGVmIGluc2VydF9xdWFydGV0CisjIGlmIEVMRU1fQ09VTlQgPT0gOAorIyAgZGVmaW5lIGluc2Vy dF9oYWxmIGluc2VydF9xdWFydGV0CisjIGVsaWYgRUxFTV9DT1VOVCA9PSAxNgorIyAgZGVmaW5l IGluc2VydF9xdWFydGVyIGluc2VydF9xdWFydGV0CisjIGVuZGlmCisjZW5kaWYKKworI2lmIGRl ZmluZWQoYnJvYWRjYXN0X29jdGV0KSAmJiBFTEVNX0NPVU5UID09IDE2CisjIGRlZmluZSBicm9h ZGNhc3RfaGFsZiBicm9hZGNhc3Rfb2N0ZXQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChpbnNlcnRf b2N0ZXQpICYmIEVMRU1fQ09VTlQgPT0gMTYKKyMgZGVmaW5lIGluc2VydF9oYWxmIGluc2VydF9v Y3RldAorI2VuZGlmCisKICNpZiBkZWZpbmVkKF9fQVZYNTEyRl9fKSAmJiBkZWZpbmVkKEZMT0FU X1NJWkUpCiAjIGluY2x1ZGUgInNpbWQtZm1hLmMiCiAjZW5kaWYKQEAgLTExOTksNiArMTMyNyw2 MCBAQCBpbnQgc2ltZF90ZXN0KHZvaWQpCiAgICAgaWYgKCAhZXEoYnJvYWRjYXN0MihFTEVNX0NP VU5UICsgMSksIHNyYyArIGludikgKSByZXR1cm4gX19MSU5FX187CiAjZW5kaWYKIAorI2lmIGRl ZmluZWQoYnJvYWRjYXN0X2hhbGYpICYmIGRlZmluZWQoaW5zZXJ0X2hhbGYpCisgICAgeworICAg ICAgICBoYWxmX3QgYXV4ID0gbG93X2hhbGYoc3JjKTsKKworICAgICAgICB0b3VjaChhdXgpOwor ICAgICAgICB4ID0gYnJvYWRjYXN0X2hhbGYoYXV4KTsKKyAgICAgICAgdG91Y2goYXV4KTsKKyAg ICAgICAgeSA9IGluc2VydF9oYWxmKHNyYywgYXV4LCAxKTsKKyAgICAgICAgaWYgKCAhZXEoeCwg eSkgKSByZXR1cm4gX19MSU5FX187CisgICAgfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKGJyb2Fk Y2FzdF9xdWFydGVyKSAmJiBkZWZpbmVkKGluc2VydF9xdWFydGVyKQorICAgIHsKKyAgICAgICAg cXVhcnRlcl90IGF1eCA9IGxvd19xdWFydGVyKHNyYyk7CisKKyAgICAgICAgdG91Y2goYXV4KTsK KyAgICAgICAgeCA9IGJyb2FkY2FzdF9xdWFydGVyKGF1eCk7CisgICAgICAgIHRvdWNoKGF1eCk7 CisgICAgICAgIHkgPSBpbnNlcnRfcXVhcnRlcihzcmMsIGF1eCwgMSk7CisgICAgICAgIHRvdWNo KGF1eCk7CisgICAgICAgIHkgPSBpbnNlcnRfcXVhcnRlcih5LCBhdXgsIDIpOworICAgICAgICB0 b3VjaChhdXgpOworICAgICAgICB5ID0gaW5zZXJ0X3F1YXJ0ZXIoeSwgYXV4LCAzKTsKKyAgICAg ICAgaWYgKCAhZXEoeCwgeSkgKSByZXR1cm4gX19MSU5FX187CisgICAgfQorI2VuZGlmCisKKyNp ZiBkZWZpbmVkKGJyb2FkY2FzdF9laWdodGgpICYmIGRlZmluZWQoaW5zZXJ0X2VpZ2h0aCkgJiYg XAorICAgIC8qIEF0IGxlYXN0IGdjYyA3LjMgIm9wdGltaXplcyIgYXdheSBhbGwgaW5zZXJ0X2Vp Z2h0aCgpIGNhbGxzIGJlbG93LiAqLyBcCisgICAgX19HTlVDX18gPj0gOAorICAgIHsKKyAgICAg ICAgZWlnaHRoX3QgYXV4ID0gbG93X2VpZ2h0aChzcmMpOworCisgICAgICAgIHRvdWNoKGF1eCk7 CisgICAgICAgIHggPSBicm9hZGNhc3RfZWlnaHRoKGF1eCk7CisgICAgICAgIHRvdWNoKGF1eCk7 CisgICAgICAgIHkgPSBpbnNlcnRfZWlnaHRoKHNyYywgYXV4LCAxKTsKKyAgICAgICAgdG91Y2go YXV4KTsKKyAgICAgICAgeSA9IGluc2VydF9laWdodGgoeSwgYXV4LCAyKTsKKyAgICAgICAgdG91 Y2goYXV4KTsKKyAgICAgICAgeSA9IGluc2VydF9laWdodGgoeSwgYXV4LCAzKTsKKyAgICAgICAg dG91Y2goYXV4KTsKKyAgICAgICAgeSA9IGluc2VydF9laWdodGgoeSwgYXV4LCA0KTsKKyAgICAg ICAgdG91Y2goYXV4KTsKKyAgICAgICAgeSA9IGluc2VydF9laWdodGgoeSwgYXV4LCA1KTsKKyAg ICAgICAgdG91Y2goYXV4KTsKKyAgICAgICAgeSA9IGluc2VydF9laWdodGgoeSwgYXV4LCA2KTsK KyAgICAgICAgdG91Y2goYXV4KTsKKyAgICAgICAgeSA9IGluc2VydF9laWdodGgoeSwgYXV4LCA3 KTsKKyAgICAgICAgaWYgKCAhZXEoeCwgeSkgKSByZXR1cm4gX19MSU5FX187CisgICAgfQorI2Vu ZGlmCisKICNpZiBkZWZpbmVkKGludGVybGVhdmVfbG8pICYmIGRlZmluZWQoaW50ZXJsZWF2ZV9o aSkKICAgICB0b3VjaChzcmMpOwogICAgIHggPSBpbnRlcmxlYXZlX2xvKGludiwgc3JjKTsKCgoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=