From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v6 28/42] x86emul: support AVX512F floating point manipulation insns Date: Thu, 06 Dec 2018 03:05:36 -0700 Message-ID: <5C08F470020000780020389C@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C08EFAE020000780020373E@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 1gUqXM-0006RZ-7d for xen-devel@lists.xenproject.org; Thu, 06 Dec 2018 10:05:40 +0000 In-Reply-To: <5C08EFAE020000780020373E@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 U2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjU6IE5l dy4KCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9ldmV4LWRpc3A4LmMKKysrIGIvdG9v bHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgtZGlzcDguYwpAQCAtMTQwLDYgKzE0MCw4IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmX2FsbFtdID0KICAgICBJTlNOKGN2dHVzaTJz ZCwgICAgZjIsICAgMGYsIDdiLCAgICBlbCwgICBkcTY0LCBlbCksCiAgICAgSU5TTihjdnR1c2ky c3MsICAgIGYzLCAgIDBmLCA3YiwgICAgZWwsICAgZHE2NCwgZWwpLAogICAgIElOU05fRlAoZGl2 LCAgICAgICAgICAgICAwZiwgNWUpLAorICAgIElOU04oZml4dXBpbW0sICAgICA2NiwgMGYzYSwg NTQsICAgIHZsLCAgICAgc2QsIHZsKSwKKyAgICBJTlNOKGZpeHVwaW1tLCAgICAgNjYsIDBmM2Es IDU1LCAgICBlbCwgICAgIHNkLCBlbCksCiAgICAgSU5TTihmbWFkZDEzMiwgICAgIDY2LCAwZjM4 LCA5OCwgICAgdmwsICAgICBzZCwgdmwpLAogICAgIElOU04oZm1hZGQxMzIsICAgICA2NiwgMGYz OCwgOTksICAgIGVsLCAgICAgc2QsIGVsKSwKICAgICBJTlNOKGZtYWRkMjEzLCAgICAgNjYsIDBm MzgsIGE4LCAgICB2bCwgICAgIHNkLCB2bCksCkBAIC0xNzAsNiArMTcyLDEwIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJmX2FsbFtdID0KICAgICBJTlNOKGZubXN1YjIxMywgICAg NjYsIDBmMzgsIGFmLCAgICBlbCwgICAgIHNkLCBlbCksCiAgICAgSU5TTihmbm1zdWIyMzEsICAg IDY2LCAwZjM4LCBiZSwgICAgdmwsICAgICBzZCwgdmwpLAogICAgIElOU04oZm5tc3ViMjMxLCAg ICA2NiwgMGYzOCwgYmYsICAgIGVsLCAgICAgc2QsIGVsKSwKKyAgICBJTlNOKGdldGV4cCwgICAg ICAgNjYsIDBmMzgsIDQyLCAgICB2bCwgICAgIHNkLCB2bCksCisgICAgSU5TTihnZXRleHAsICAg ICAgIDY2LCAwZjM4LCA0MywgICAgZWwsICAgICBzZCwgZWwpLAorICAgIElOU04oZ2V0bWFudCwg ICAgICA2NiwgMGYzYSwgMjYsICAgIHZsLCAgICAgc2QsIHZsKSwKKyAgICBJTlNOKGdldG1hbnQs ICAgICAgNjYsIDBmM2EsIDI3LCAgICBlbCwgICAgIHNkLCBlbCksCiAgICAgSU5TTl9GUChtYXgs ICAgICAgICAgICAgIDBmLCA1ZiksCiAgICAgSU5TTl9GUChtaW4sICAgICAgICAgICAgIDBmLCA1 ZCksCiAgICAgSU5TTl9TRlAobW92LCAgICAgICAgICAgIDBmLCAxMCksCkBAIC0yODYsNiArMjky LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0IGF2eDUxMmZfYWxsW10gPQogICAgIElOU04o cm5kc2NhbGVzcywgICA2NiwgMGYzYSwgMGEsICAgIGVsLCAgICAgIGQsIGVsKSwKICAgICBJTlNO KHJzcXJ0MTQsICAgICAgNjYsIDBmMzgsIDRlLCAgICB2bCwgICAgIHNkLCB2bCksCiAgICAgSU5T Tihyc3FydDE0LCAgICAgIDY2LCAwZjM4LCA0ZiwgICAgZWwsICAgICBzZCwgZWwpLAorICAgIElO U04oc2NhbGVmLCAgICAgICA2NiwgMGYzOCwgMmMsICAgIHZsLCAgICAgc2QsIHZsKSwKKyAgICBJ TlNOKHNjYWxlZiwgICAgICAgNjYsIDBmMzgsIDJkLCAgICBlbCwgICAgIHNkLCBlbCksCiAgICAg SU5TTl9QRlAoc2h1ZiwgICAgICAgICAgIDBmLCBjNiksCiAgICAgSU5TTl9GUChzcXJ0LCAgICAg ICAgICAgIDBmLCA1MSksCiAgICAgSU5TTl9GUChzdWIsICAgICAgICAgICAgIDBmLCA1YyksCi0t LSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3NpbWQuYwpAQCAtMTc0LDYgKzE3NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg X3RvX2Jvb2woYnl0ZV92ZWNfdCBiCiAgICAgYXNtICggb3AgOiBbb3V0XSAiPSZ4IiAocl8pIDog W2luXSAibSIgKHgpICk7IFwKICAgICAodmVjX3QpeyByX1swXSB9OyBcCiB9KQorIyBkZWZpbmUg c2NhbGFyXzJvcCh4LCB5LCBvcCkgKHsgXAorICAgIHR5cGVvZigoeClbMF0pIF9fYXR0cmlidXRl X18oKHZlY3Rvcl9zaXplKDE2KSkpIHJfID0geyB4WzBdIH07IFwKKyAgICBhc20gKCBvcCA6IFtv dXRdICI9JngiIChyXykgOiBbaW4xXSAiW291dF0iIChyXyksIFtpbjJdICJtIiAoeSkgKTsgXAor ICAgICh2ZWNfdCl7IHJfWzBdIH07IFwKK30pCiAjZW5kaWYKIAogI2lmIFZFQ19TSVpFID09IDE2 ICYmIEZMT0FUX1NJWkUgPT0gNCAmJiBkZWZpbmVkKF9fU1NFX18pCkBAIC0yMTAsNiArMjE1LDgg QEAgc3RhdGljIGlubGluZSB2ZWNfdCBtb3ZsaHBzKHZlY190IHgsIHZlYwogfSkKICNlbGlmIGRl ZmluZWQoRkxPQVRfU0laRSkgJiYgVkVDX1NJWkUgPT0gRkxPQVRfU0laRSAmJiBkZWZpbmVkKF9f QVZYNTEyRl9fKQogIyBpZiBGTE9BVF9TSVpFID09IDQKKyMgIGRlZmluZSBnZXRleHAoeCkgc2Nh bGFyXzFvcCh4LCAidmdldGV4cHNzICVbaW5dLCAlW291dF0sICVbb3V0XSIpCisjICBkZWZpbmUg Z2V0bWFudCh4KSBzY2FsYXJfMW9wKHgsICJ2Z2V0bWFudHNzICQwLCAlW2luXSwgJVtvdXRdLCAl W291dF0iKQogIyAgaWZkZWYgX19BVlg1MTJFUl9fCiAjICAgZGVmaW5lIHJlY2lwKHgpIHNjYWxh cl8xb3AoeCwgInZyY3AyOHNzICVbaW5dLCAlW291dF0sICVbb3V0XSIpCiAjICAgZGVmaW5lIHJz cXJ0KHgpIHNjYWxhcl8xb3AoeCwgInZyc3FydDI4c3MgJVtpbl0sICVbb3V0XSwgJVtvdXRdIikK QEAgLTIxNyw5ICsyMjQsMTIgQEAgc3RhdGljIGlubGluZSB2ZWNfdCBtb3ZsaHBzKHZlY190IHgs IHZlYwogIyAgIGRlZmluZSByZWNpcCh4KSBzY2FsYXJfMW9wKHgsICJ2cmNwMTRzcyAlW2luXSwg JVtvdXRdLCAlW291dF0iKQogIyAgIGRlZmluZSByc3FydCh4KSBzY2FsYXJfMW9wKHgsICJ2cnNx cnQxNHNzICVbaW5dLCAlW291dF0sICVbb3V0XSIpCiAjICBlbmRpZgorIyAgZGVmaW5lIHNjYWxl KHgsIHkpIHNjYWxhcl8yb3AoeCwgeSwgInZzY2FsZWZzcyAlW2luMl0sICVbaW4xXSwgJVtvdXRd IikKICMgIGRlZmluZSBzcXJ0KHgpIHNjYWxhcl8xb3AoeCwgInZzcXJ0c3MgJVtpbl0sICVbb3V0 XSwgJVtvdXRdIikKICMgIGRlZmluZSB0cnVuYyh4KSBzY2FsYXJfMW9wKHgsICJ2cm5kc2NhbGVz cyAkMGIxMDExLCAlW2luXSwgJVtvdXRdLCAlW291dF0iKQogIyBlbGlmIEZMT0FUX1NJWkUgPT0g OAorIyAgZGVmaW5lIGdldGV4cCh4KSBzY2FsYXJfMW9wKHgsICJ2Z2V0ZXhwc2QgJVtpbl0sICVb b3V0XSwgJVtvdXRdIikKKyMgIGRlZmluZSBnZXRtYW50KHgpIHNjYWxhcl8xb3AoeCwgInZnZXRt YW50c2QgJDAsICVbaW5dLCAlW291dF0sICVbb3V0XSIpCiAjICBpZmRlZiBfX0FWWDUxMkVSX18K ICMgICBkZWZpbmUgcmVjaXAoeCkgc2NhbGFyXzFvcCh4LCAidnJjcDI4c2QgJVtpbl0sICVbb3V0 XSwgJVtvdXRdIikKICMgICBkZWZpbmUgcnNxcnQoeCkgc2NhbGFyXzFvcCh4LCAidnJzcXJ0Mjhz ZCAlW2luXSwgJVtvdXRdLCAlW291dF0iKQpAQCAtMjI3LDYgKzIzNyw3IEBAIHN0YXRpYyBpbmxp bmUgdmVjX3QgbW92bGhwcyh2ZWNfdCB4LCB2ZWMKICMgICBkZWZpbmUgcmVjaXAoeCkgc2NhbGFy XzFvcCh4LCAidnJjcDE0c2QgJVtpbl0sICVbb3V0XSwgJVtvdXRdIikKICMgICBkZWZpbmUgcnNx cnQoeCkgc2NhbGFyXzFvcCh4LCAidnJzcXJ0MTRzZCAlW2luXSwgJVtvdXRdLCAlW291dF0iKQog IyAgZW5kaWYKKyMgIGRlZmluZSBzY2FsZSh4LCB5KSBzY2FsYXJfMm9wKHgsIHksICJ2c2NhbGVm c2QgJVtpbjJdLCAlW2luMV0sICVbb3V0XSIpCiAjICBkZWZpbmUgc3FydCh4KSBzY2FsYXJfMW9w KHgsICJ2c3FydHNkICVbaW5dLCAlW291dF0sICVbb3V0XSIpCiAjICBkZWZpbmUgdHJ1bmMoeCkg c2NhbGFyXzFvcCh4LCAidnJuZHNjYWxlc2QgJDBiMTAxMSwgJVtpbl0sICVbb3V0XSwgJVtvdXRd IikKICMgZW5kaWYKQEAgLTI3NCw5ICsyODUsMTIgQEAgc3RhdGljIGlubGluZSB2ZWNfdCBtb3Zs aHBzKHZlY190IHgsIHZlYwogIyAgIGRlZmluZSBicm9hZGNhc3Rfb2N0ZXQoeCkgQihicm9hZGNh c3RmMzJ4OF8sIF9tYXNrLCB4LCB1bmRlZigpLCB+MCkKICMgICBkZWZpbmUgaW5zZXJ0X29jdGV0 KHgsIHksIHApIEIoaW5zZXJ0ZjMyeDhfLCBfbWFzaywgeCwgeSwgcCwgdW5kZWYoKSwgfjApCiAj ICBlbmRpZgorIyAgZGVmaW5lIGdldGV4cCh4KSBCUihnZXRleHBwcywgX21hc2ssIHgsIHVuZGVm KCksIH4wKQorIyAgZGVmaW5lIGdldG1hbnQoeCkgQlIoZ2V0bWFudHBzLCBfbWFzaywgeCwgMCwg dW5kZWYoKSwgfjApCiAjICBkZWZpbmUgbWF4KHgsIHkpIEJSXyhtYXhwcywgX21hc2ssIHgsIHks IHVuZGVmKCksIH4wKQogIyAgZGVmaW5lIG1pbih4LCB5KSBCUl8obWlucHMsIF9tYXNrLCB4LCB5 LCB1bmRlZigpLCB+MCkKICMgIGRlZmluZSBtaXgoeCwgeSkgQihtb3ZhcHMsIF9tYXNrLCB4LCB5 LCAoMGIwMTAxMDEwMTAxMDEwMTAxICYgQUxMX1RSVUUpKQorIyAgZGVmaW5lIHNjYWxlKHgsIHkp IEJSKHNjYWxlZnBzLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCiAjICBpZiBWRUNfU0laRSA9 PSA2NCAmJiBkZWZpbmVkKF9fQVZYNTEyRVJfXykKICMgICBkZWZpbmUgcmVjaXAoeCkgQlIocmNw MjhwcywgX21hc2ssIHgsIHVuZGVmKCksIH4wKQogIyAgIGRlZmluZSByc3FydCh4KSBCUihyc3Fy dDI4cHMsIF9tYXNrLCB4LCB1bmRlZigpLCB+MCkKQEAgLTMzNiw5ICszNTAsMTIgQEAgc3RhdGlj IGlubGluZSB2ZWNfdCBtb3ZsaHBzKHZlY190IHgsIHZlYwogIyAgIGRlZmluZSBicm9hZGNhc3Rf cXVhcnRldCh4KSBCKGJyb2FkY2FzdGY2NHg0XywgLCB4LCB1bmRlZigpLCB+MCkKICMgICBkZWZp bmUgaW5zZXJ0X3F1YXJ0ZXQoeCwgeSwgcCkgQihpbnNlcnRmNjR4NF8sIF9tYXNrLCB4LCB5LCBw LCB1bmRlZigpLCB+MCkKICMgIGVuZGlmCisjICBkZWZpbmUgZ2V0ZXhwKHgpIEJSKGdldGV4cHBk LCBfbWFzaywgeCwgdW5kZWYoKSwgfjApCisjICBkZWZpbmUgZ2V0bWFudCh4KSBCUihnZXRtYW50 cGQsIF9tYXNrLCB4LCAwLCB1bmRlZigpLCB+MCkKICMgIGRlZmluZSBtYXgoeCwgeSkgQlJfKG1h eHBkLCBfbWFzaywgeCwgeSwgdW5kZWYoKSwgfjApCiAjICBkZWZpbmUgbWluKHgsIHkpIEJSXyht aW5wZCwgX21hc2ssIHgsIHksIHVuZGVmKCksIH4wKQogIyAgZGVmaW5lIG1peCh4LCB5KSBCKG1v dmFwZCwgX21hc2ssIHgsIHksIDBiMDEwMTAxMDEpCisjICBkZWZpbmUgc2NhbGUoeCwgeSkgQlIo c2NhbGVmcGQsIF9tYXNrLCB4LCB5LCB1bmRlZigpLCB+MCkKICMgIGlmIFZFQ19TSVpFID09IDY0 ICYmIGRlZmluZWQoX19BVlg1MTJFUl9fKQogIyAgIGRlZmluZSByZWNpcCh4KSBCUihyY3AyOHBk LCBfbWFzaywgeCwgdW5kZWYoKSwgfjApCiAjICAgZGVmaW5lIHJzcXJ0KHgpIEJSKHJzcXJ0Mjhw ZCwgX21hc2ssIHgsIHVuZGVmKCksIH4wKQpAQCAtMTc2Niw2ICsxNzgzLDI4IEBAIGludCBzaW1k X3Rlc3Qodm9pZCkKICMgZW5kaWYKICNlbmRpZgogCisjaWYgZGVmaW5lZChnZXRleHApICYmIGRl ZmluZWQoZ2V0bWFudCkKKyAgICB0b3VjaChzcmMpOworICAgIHggPSBnZXRtYW50KHNyYyk7Cisg ICAgdG91Y2goc3JjKTsKKyAgICB5ID0gZ2V0ZXhwKHNyYyk7CisgICAgdG91Y2goc3JjKTsKKyAg ICBmb3IgKCBqID0gaSA9IDA7IGkgPCBFTEVNX0NPVU5UOyArK2kgKQorICAgIHsKKyAgICAgICAg aWYgKCB5W2ldICE9IGogKSByZXR1cm4gX19MSU5FX187CisKKyAgICAgICAgaWYgKCAhKChpICsg MSkgJiAoaSArIDIpKSApCisgICAgICAgICAgICArK2o7CisKKyAgICAgICAgaWYgKCAhKGkgJiAo aSArIDEpKSAmJiB4W2ldICE9IDEgKSByZXR1cm4gX19MSU5FX187CisgICAgfQorIyBpZmRlZiBz Y2FsZQorICAgIHRvdWNoKHkpOworICAgIHogPSBzY2FsZSh4LCB5KTsKKyAgICBpZiAoICFlcShz cmMsIHopICkgcmV0dXJuIF9fTElORV9fOworIyBlbmRpZgorI2VuZGlmCisKICNpZiAoZGVmaW5l ZChfX1hPUF9fKSAmJiBWRUNfU0laRSA9PSAxNiAmJiAoSU5UX1NJWkUgPT0gMiB8fCBJTlRfU0la RSA9PSA0KSkgfHwgXAogICAgIChkZWZpbmVkKF9fQVZYNTEyRl9fKSAmJiBkZWZpbmVkKEZMT0FU X1NJWkUpKQogICAgIHJldHVybiAtZm1hX3Rlc3QoKTsKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2Vt dWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9y L3Rlc3RfeDg2X2VtdWxhdG9yLmMKQEAgLTM4OTUsNiArMzg5NSw0NCBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAgICAgZWxzZQogICAgICAgICBwcmludGYoInNraXBwZWRcbiIp OwogCisgICAgcHJpbnRmKCIlLTQwcyIsICJUZXN0aW5nIHZmaXh1cGltbXBkICQwLDgoJWVkeCl7 MXRvOH0sJXptbTMsJXptbTQuLi4iKTsKKyAgICBpZiAoIHN0YWNrX2V4ZWMgJiYgY3B1X2hhc19h dng1MTJmICkKKyAgICB7CisgICAgICAgIGRlY2xfaW5zbih2Zml4dXBpbW1wZCk7CisgICAgICAg IHN0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgICAgICAgICAgZG91YmxlIGRbNF07CisgICAgICAg IH0KKyAgICAgICAgc3JjID0geyB7IC0xLCAwLCAxLCAyIH0gfSwKKyAgICAgICAgZHN0ID0geyB7 IDMsIDQsIDUsIDYgfSB9LAorICAgICAgICBvdXQgPSB7IHsgLjUsIC0xLCA5MCwgMiB9IH07CisK KyAgICAgICAgYXNtIHZvbGF0aWxlICggInZicm9hZGNhc3RmNjR4NCAlMSwgJSV6bW0zXG5cdCIK KyAgICAgICAgICAgICAgICAgICAgICAgInZicm9hZGNhc3RmNjR4NCAlMiwgJSV6bW00XG4iCisg ICAgICAgICAgICAgICAgICAgICAgIHB1dF9pbnNuKHZmaXh1cGltbXBkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAidmZpeHVwaW1tcGQgJDAsIDgoJTApJXsxdG84JX0sICUlem1t MywgJSV6bW00IikKKyAgICAgICAgICAgICAgICAgICAgICAgOjogImQiIChOVUxMKSwgIm0iIChz cmMpLCAibSIgKGRzdCkgKTsKKworICAgICAgICBzZXRfaW5zbih2Zml4dXBpbW1wZCk7CisgICAg ICAgIC8qCisgICAgICAgICAqIE5pYmJsZSAodG9rZW4pIG1hcHBpbmcgKHVudXNlZCBvbmVzIHNp bXBseSBzZXQgdG8gemVybyk6CisgICAgICAgICAqIDIgKFpFUk8pICAgIC0+ICAtMSAoMHg5KQor ICAgICAgICAgKiAzIChQT1NfT05FKSAtPiAgOTAgKDB4YykKKyAgICAgICAgICogNiAoTkVHKSAg ICAgLT4gMS8yICgweGIpCisgICAgICAgICAqIDcgKFBPUykgICAgIC0+IHNyYyAoMHgxKQorICAg ICAgICAgKi8KKyAgICAgICAgcmVzWzJdID0gMHgxYjAwYzkwMDsKKyAgICAgICAgcmVncy5lZHgg PSAodW5zaWduZWQgbG9uZylyZXM7CisgICAgICAgIHJjID0geDg2X2VtdWxhdGUoJmN0eHQsICZl bXVsb3BzKTsKKyAgICAgICAgYXNtIHZvbGF0aWxlICggInZtb3Z1cGQgJSV6bW00LCAlMCIgOiAi PW0iIChyZXNbMF0pICk7CisgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZIHx8ICFjaGVj a19laXAodmZpeHVwaW1tcGQpIHx8CisgICAgICAgICAgICAgbWVtY21wKHJlcyArIDAsICZvdXQs IHNpemVvZihvdXQpKSB8fAorICAgICAgICAgICAgIG1lbWNtcChyZXMgKyA4LCAmb3V0LCBzaXpl b2Yob3V0KSkgKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBwcmludGYoIm9rYXlc biIpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHByaW50Zigic2tpcHBlZFxuIik7CisKICN1 bmRlZiBkZWNsX2luc24KICN1bmRlZiBwdXRfaW5zbgogI3VuZGVmIHNldF9pbnNuCi0tLSBhL3hl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94 ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC00NTksNyArNDU5LDggQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBleHQwZjM4X3RhYmxlIHsKICAgICBbMHgyNiAuLi4gMHgyOV0gPSB7IC5zaW1kX3Np emUgPSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHgyYV0gPSB7IC5z aW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3ZsIH0s CiAgICAgWzB4MmJdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50LCAuZDhzID0gZDhz X3ZsIH0sCi0gICAgWzB4MmMgLi4uIDB4MmRdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRf ZnAgfSwKKyAgICBbMHgyY10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLmQ4cyA9 IGQ4c192bCB9LAorICAgIFsweDJkXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwLCAu ZDhzID0gZDhzX2RxIH0sCiAgICAgWzB4MmUgLi4uIDB4MmZdID0geyAuc2ltZF9zaXplID0gc2lt ZF9wYWNrZWRfZnAsIC50b19tZW0gPSAxIH0sCiAgICAgWzB4MzBdID0geyAuc2ltZF9zaXplID0g c2ltZF9vdGhlciwgLnR3b19vcCA9IDEsIC5kOHMgPSBkOHNfdmxfYnlfMiB9LAogICAgIFsweDMx XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3Zs X2J5XzQgfSwKQEAgLTQ3MCw2ICs0NzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4dDBmMzhf dGFibGUgewogICAgIFsweDM2IC4uLiAweDNmXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2Vk X2ludCwgLmQ4cyA9IGQ4c192bCB9LAogICAgIFsweDQwXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRf cGFja2VkX2ludCwgLmQ4cyA9IGQ4c192bCB9LAogICAgIFsweDQxXSA9IHsgLnNpbWRfc2l6ZSA9 IHNpbWRfcGFja2VkX2ludCwgLnR3b19vcCA9IDEgfSwKKyAgICBbMHg0Ml0gPSB7IC5zaW1kX3Np emUgPSBzaW1kX3BhY2tlZF9mcCwgLnR3b19vcCA9IDEsIC5kOHMgPSBkOHNfdmwgfSwKKyAgICBb MHg0M10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl92ZXh3LCAuZDhzID0gZDhzX2RxIH0s CiAgICAgWzB4NDUgLi4uIDB4NDddID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50LCAu ZDhzID0gZDhzX3ZsIH0sCiAgICAgWzB4NGNdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRf ZnAsIC50d29fb3AgPSAxLCAuZDhzID0gZDhzX3ZsIH0sCiAgICAgWzB4NGRdID0geyAuc2ltZF9z aXplID0gc2ltZF9zY2FsYXJfdmV4dywgLmQ4cyA9IGQ4c19kcSB9LApAQCAtNTYzLDYgKzU2Niw4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0MGYzYV90YWJsZSB7CiAgICAgWzB4MjJdID0geyAu c2ltZF9zaXplID0gc2ltZF9ub25lLCAuZDhzID0gZDhzX2RxNjQgfSwKICAgICBbMHgyM10gPSB7 IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHgy NV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBkOHNfdmwgfSwKKyAg ICBbMHgyNl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLnR3b19vcCA9IDEsIC5k OHMgPSBkOHNfdmwgfSwKKyAgICBbMHgyN10gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl92 ZXh3LCAuZDhzID0gZDhzX2RxIH0sCiAgICAgWzB4MzAgLi4uIDB4MzNdID0geyAuc2ltZF9zaXpl ID0gc2ltZF9vdGhlciwgLnR3b19vcCA9IDEgfSwKICAgICBbMHgzOF0gPSB7IC5zaW1kX3NpemUg PSBzaW1kXzEyOCwgLmQ4cyA9IDQgfSwKICAgICBbMHgzYV0gPSB7IC5zaW1kX3NpemUgPSBzaW1k XzI1NiwgLmQ4cyA9IGQ4c192bF9ieV8yIH0sCkBAIC01NzcsNiArNTgyLDggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBleHQwZjNhX3RhYmxlIHsKICAgICBbMHg0OCAuLi4gMHg0OV0gPSB7IC5zaW1k X3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLmZvdXJfb3AgPSAxIH0sCiAgICAgWzB4NGEgLi4uIDB4 NGJdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAsIC5mb3VyX29wID0gMSB9LAogICAg IFsweDRjXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ludCwgLmZvdXJfb3AgPSAxIH0s CisgICAgWzB4NTRdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAsIC5kOHMgPSBkOHNf dmwgfSwKKyAgICBbMHg1NV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl92ZXh3LCAuZDhz ID0gZDhzX2RxIH0sCiAgICAgWzB4NWMgLi4uIDB4NWZdID0geyAuc2ltZF9zaXplID0gc2ltZF9w YWNrZWRfZnAsIC5mb3VyX29wID0gMSB9LAogICAgIFsweDYwIC4uLiAweDYzXSA9IHsgLnNpbWRf c2l6ZSA9IHNpbWRfcGFja2VkX2ludCwgLnR3b19vcCA9IDEgfSwKICAgICBbMHg2OCAuLi4gMHg2 OV0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9mcCwgLmZvdXJfb3AgPSAxIH0sCkBAIC0y Njc3LDYgKzI2ODQsMTAgQEAgeDg2X2RlY29kZV8wZjM4KAogICAgICAgICBjdHh0LT5vcGNvZGUg fD0gTUFTS19JTlNSKHZleC5wZngsIFg4NkVNVUxfT1BDX1BGWF9NQVNLKTsKICAgICAgICAgYnJl YWs7CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMCwgMHgyZCk6IC8qIHZzY2FsZWZz e2Qsc30gKi8KKyAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNpbWRfc2NhbGFyX3ZleHc7Cisg ICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDAsIDB4N2EpOiAv KiB2cGJyb2FkY2FzdGIgKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMCwgMHg3Yik6 IC8qIHZwYnJvYWRjYXN0dyAqLwogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigwLCAweDdj KTogLyogdnBicm9hZGNhc3R7ZCxxfSAqLwpAQCAtOTA0MSw2ICs5MDUyLDggQEAgeDg2X2VtdWxh dGUoCiAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGZtYSk7CiAgICAgICAgIGdvdG8g c2ltZF8wZl95bW07CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDJj KTogLyogdnNjYWxlZnB7cyxkfSBbeHl6XW1tL21lbSxbeHl6XW1tLFt4eXpdbW17a30gKi8KKyAg ICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDQyKTogLyogdmdldGV4cHB7cyxk fSBbeHl6XW1tL21lbSxbeHl6XW1te2t9ICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2 KDB4MGYzOCwgMHg5Nik6IC8qIHZmbWFkZHN1YjEzMnB7cyxkfSBbeHl6XW1tL21lbSxbeHl6XW1t LFt4eXpdbW17a30gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDk3 KTogLyogdmZtc3ViYWRkMTMycHtzLGR9IFt4eXpdbW0vbWVtLFt4eXpdbW0sW3h5el1tbXtrfSAq LwogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4OTgpOiAvKiB2Zm1hZGQx MzJwe3MsZH0gW3h5el1tbS9tZW0sW3h5el1tbSxbeHl6XW1te2t9ICovCkBAIC05MDY0LDYgKzkw NzcsOCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGF2eDUxMl92bGVuX2NoZWNrKGZhbHNl KTsKICAgICAgICAgZ290byBzaW1kX3ptbTsKIAorICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82 NigweDBmMzgsIDB4MmQpOiAvKiB2c2NhbGVmc3tzLGR9IHhtbS9tZW0seG1tLHhtbXtrfSAqLwor ICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmMzgsIDB4NDMpOiAvKiB2Z2V0ZXhwc3tz LGR9IHhtbS9tZW0seG1tLHhtbXtrfSAqLwogICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82Nigw eDBmMzgsIDB4OTkpOiAvKiB2Zm1hZGQxMzJze3MsZH0geG1tL21lbSx4bW0seG1te2t9ICovCiAg ICAgY2FzZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzOCwgMHg5Yik6IC8qIHZmbXN1YjEzMnN7 cyxkfSB4bW0vbWVtLHhtbSx4bW17a30gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYo MHgwZjM4LCAweDlkKTogLyogdmZubWFkZDEzMnN7cyxkfSB4bW0vbWVtLHhtbSx4bW17a30gKi8K QEAgLTk2MjcsNiArOTY0MiwyMyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgb3BfYnl0ZXMgPSA0 OwogICAgICAgICBnb3RvIHNpbWRfaW1tOF96bW07CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VW RVhfNjYoMHgwZjNhLCAweDI2KTogLyogdmdldG1hbnRwe3MsZH0gJGltbTgsW3h5el1tbS9tZW0s W3h5el1tbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82NigweDBmM2EsIDB4NTQp OiAvKiB2Zml4dXBpbW1we3MsZH0gJGltbTgsW3h5el1tbS9tZW0sW3h5el1tbSxbeHl6XW1te2t9 ICovCisgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmYpOworICAgICAgICBp ZiAoIGVhLnR5cGUgPT0gT1BfTUVNIHx8ICFldmV4LmJyICkKKyAgICAgICAgICAgIGF2eDUxMl92 bGVuX2NoZWNrKGZhbHNlKTsKKyAgICAgICAgZ290byBzaW1kX2ltbThfem1tOworCisgICAgY2Fz ZSBYODZFTVVMX09QQ19FVkVYXzY2KDB4MGYzYSwgMHgyNyk6IC8qIHZnZXRtYW50c3tzLGR9ICRp bW04LHhtbS9tZW0seG1tLHhtbXtrfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfRVZFWF82Nigw eDBmM2EsIDB4NTUpOiAvKiB2Zml4dXBpbW1ze3MsZH0gJGltbTgseG1tL21lbSx4bW0seG1te2t9 ICovCisgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmYpOworICAgICAgICBp ZiAoIGVhLnR5cGUgPT0gT1BfTUVNICkKKyAgICAgICAgeworICAgICAgICAgICAgZ2VuZXJhdGVf ZXhjZXB0aW9uX2lmKGV2ZXguYnIsIEVYQ19VRCk7CisgICAgICAgICAgICBhdng1MTJfdmxlbl9j aGVjayh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIHNpbWRfaW1tOF96bW07CisKICAg ICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmM2EsIDB4MzApOiAvKiBrc2hpZnRye2Isd30g JGltbTgsayxrICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjNhLCAweDMyKTog Lyoga3NoaWZ0bHtiLHd9ICRpbW04LGssayAqLwogICAgICAgICBpZiAoICF2ZXgudyApCgoKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs