From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT,WEIRD_QUOTING autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3FFB4C3F2D2 for ; Fri, 28 Feb 2020 17:23:32 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F274E24699 for ; Fri, 28 Feb 2020 17:23:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="fqiriyAZ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F274E24699 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:51230 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7jMJ-0006aZ-54 for qemu-devel@archiver.kernel.org; Fri, 28 Feb 2020 12:23:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58411) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7im2-0005bI-KO for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j7ilz-00079D-DJ for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:02 -0500 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:27035) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j7ilz-0005Ug-1V for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:45:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1582908359; x=1614444359; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=p+Vri9ID0v2qMPSRVZCDVR6Fjn8xFLAsEsVPVgd29To=; b=fqiriyAZHkvpHkKjB0u5NhVJEgQrSe89eXcaDw7WiLeP24qiw3d9kbBc u6h0JJuPTZUENzEUaPaYdm0p5GFrGzIdN/MV9gMG7f+1KZkg9dxxt9pa1 ZVN5kyvFvVQzTalv8ujmVr6shxtIbN+hUwvGukDdEhh7tdq67LytCN8eX U=; Received: from unknown (HELO ironmsg-SD-alpha.qualcomm.com) ([10.53.140.30]) by alexa-out-sd-02.qualcomm.com with ESMTP; 28 Feb 2020 08:44:34 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg-SD-alpha.qualcomm.com with ESMTP; 28 Feb 2020 08:44:33 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 74A951191; Fri, 28 Feb 2020 10:44:33 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 59/67] Hexagon HVX semantics generator Date: Fri, 28 Feb 2020 10:43:55 -0600 Message-Id: <1582908244-304-60-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> References: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 199.106.114.39 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, Taylor Simpson , philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" QWRkIEhWWCBzdXBwb3J0IHRvIHRoZSBzZW1hbnRpY3MgZ2VuZXJhdG9yCgpTaWduZWQtb2ZmLWJ5 OiBUYXlsb3IgU2ltcHNvbiA8dHNpbXBzb25AcXVpY2luYy5jb20+Ci0tLQogdGFyZ2V0L2hleGFn b24vZ2VuX3NlbWFudGljcy5jIHwgICA5ICsrKwogdGFyZ2V0L2hleGFnb24vZG9fcWVtdS5weSAg ICAgIHwgMTc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiAyIGZp bGVzIGNoYW5nZWQsIDE3MSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS90YXJnZXQvaGV4YWdvbi9nZW5fc2VtYW50aWNzLmMgYi90YXJnZXQvaGV4YWdvbi9nZW5f c2VtYW50aWNzLmMKaW5kZXggNjVkMDRmYS4uZjVlZTNhZSAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hl eGFnb24vZ2VuX3NlbWFudGljcy5jCisrKyBiL3RhcmdldC9oZXhhZ29uL2dlbl9zZW1hbnRpY3Mu YwpAQCAtODcsNiArODcsMTUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICNp bmNsdWRlICJpbXBvcnRlZC9tYWNyb3MuZGVmIgogI3VuZGVmIERFRl9NQUNSTwogCisvKgorICog UHJvY2VzcyB0aGUgbWFjcm9zIGZvciBIVlgKKyAqLworI2RlZmluZSBERUZfTUFDUk8oTU5BTUUs IFBBUkFNUywgU0RFU0MsIExERVNDLCBCRUgsIEFUVFJTKSBcCisgICAgZnByaW50ZihvdXRmaWxl LCAiTUFDUk9BVFRSSUIoXCIlc1wiLFwiXCJcIiVzXCJcIlwiLFwiJXNcIixcIiVzXCIpXG4iLCBc CisgICAgICAgICAgICAjTU5BTUUsIFNUUklOR0laRShCRUgpLCBTVFJJTkdJWkUoQVRUUlMpLCBF WFRTVFIpOworI2luY2x1ZGUgImltcG9ydGVkL2FsbGV4dF9tYWNyb3MuZGVmIgorI3VuZGVmIERF Rl9NQUNSTworCiAgICAgZmNsb3NlKG91dGZpbGUpOwogICAgIHJldHVybiAwOwogfQpkaWZmIC0t Z2l0IGEvdGFyZ2V0L2hleGFnb24vZG9fcWVtdS5weSBiL3RhcmdldC9oZXhhZ29uL2RvX3FlbXUu cHkKaW5kZXggMzI1NDNjOC4uMTMwNmU2ZSAxMDA3NTUKLS0tIGEvdGFyZ2V0L2hleGFnb24vZG9f cWVtdS5weQorKysgYi90YXJnZXQvaGV4YWdvbi9kb19xZW11LnB5CkBAIC0xMDcsNiArMTA3LDE2 IEBAIGRlZiBTRU1BTlRJQ1ModGFnLCBiZWgsIHNlbSk6CiAgICAgYXR0cmliZGljdFt0YWddID0g c2V0KCkKICAgICB0YWdzLmFwcGVuZCh0YWcpICAgICAgICAjIGRpY3RzIGhhdmUgbm8gb3JkZXIs IHRoaXMgaXMgZm9yIG9yZGVyCiAKK2RlZiBFWFRfU0VNQU5USUNTKGV4dCwgdGFnLCBiZWgsIHNl bSk6CisgICAgI3ByaW50IHRhZyxiZWgsc2VtCisgICAgZXh0bmFtZXNbZXh0XSA9IFRydWUKKyAg ICBleHRkaWN0W3RhZ10gPSBleHQKKyAgICBiZWhkaWN0W3RhZ10gPSBiZWgKKyAgICBzZW1kaWN0 W3RhZ10gPSBzZW0KKyAgICBhdHRyaWJkaWN0W3RhZ10gPSBzZXQoKQorICAgIHRhZ3MuYXBwZW5k KHRhZykgICAgICAgICMgZGljdHMgaGF2ZSBubyBvcmRlciwgdGhpcyBpcyBmb3Igb3JkZXIKKwor CiBkZWYgQVRUUklCVVRFUyh0YWcsIGF0dHJpYnN0cmluZyk6CiAgICAgYXR0cmlic3RyaW5nID0g XAogICAgICAgICBhdHRyaWJzdHJpbmcucmVwbGFjZSgiQVRUUklCUyIsIiIpLnJlcGxhY2UoIigi LCIiKS5yZXBsYWNlKCIpIiwiIikKQEAgLTE3MCw2ICsxODAsOSBAQCBkZWYgY29tcHV0ZV90YWdf aW1tZWRpYXRlcyh0YWcpOgogIyMgICAgICAgICAgUCAgICAgICAgICAgICAgICBwcmVkaWNhdGUg cmVnaXN0ZXIKICMjICAgICAgICAgIFIgICAgICAgICAgICAgICAgR1BSIHJlZ2lzdGVyCiAjIyAg ICAgICAgICBNICAgICAgICAgICAgICAgIG1vZGlmaWVyIHJlZ2lzdGVyCisjIyAgICAgICAgICBR ICAgICAgICAgICAgICAgIEhWWCBwcmVkaWNhdGUgdmVjdG9yCisjIyAgICAgICAgICBWICAgICAg ICAgICAgICAgIEhWWCB2ZWN0b3IgcmVnaXN0ZXIKKyMjICAgICAgICAgIE8gICAgICAgICAgICAg ICAgSFZYIG5ldyB2ZWN0b3IgcmVnaXN0ZXIKICMjICAgICAgcmVnaWQgY2FuIGJlIG9uZSBvZiB0 aGUgZm9sbG93aW5nCiAjIyAgICAgICAgICBkLCBlICAgICAgICAgICAgIGRlc3RpbmF0aW9uIHJl Z2lzdGVyCiAjIyAgICAgICAgICBkZCAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uIHJlZ2lzdGVy IHBhaXIKQEAgLTIwMSw2ICsyMTQsOSBAQCBkZWYgaXNfcmVhZHdyaXRlKHJlZ2lkKToKIGRlZiBp c19zY2FsYXJfcmVnKHJlZ3R5cGUpOgogICAgIHJldHVybiByZWd0eXBlIGluICJSUEMiCiAKK2Rl ZiBpc19odnhfcmVnKHJlZ3R5cGUpOgorICAgIHJldHVybiByZWd0eXBlIGluICJWUSIKKwogZGVm IGlzX29sZF92YWwocmVndHlwZSwgcmVnaWQsIHRhZyk6CiAgICAgcmV0dXJuIHJlZ3R5cGUrcmVn aWQrJ1YnIGluIHNlbWRpY3RbdGFnXQogCkBAIC0yMTEsNyArMjI3LDggQEAgdGFnaW1tcyA9IGRp Y3QoemlwKHRhZ3MsIGxpc3QobWFwKGNvbXB1dGVfdGFnX2ltbWVkaWF0ZXMsIHRhZ3MpKSkpCiAK IGRlZiBuZWVkX3Nsb3QodGFnKToKICAgICBpZiAoJ0FfQ09OREVYRUMnIGluIGF0dHJpYmRpY3Rb dGFnXSBvcgotICAgICAgICAnQV9TVE9SRScgaW4gYXR0cmliZGljdFt0YWddKToKKyAgICAgICAg J0FfU1RPUkUnIGluIGF0dHJpYmRpY3RbdGFnXSBvcgorICAgICAgICAnQV9DVkknIGluIGF0dHJp YmRpY3RbdGFnXSk6CiAgICAgICAgIHJldHVybiAxCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJu IDAKQEAgLTI5NywxOSArMzE0LDMyIEBAIGRlZiBnZW5faGVscGVyX3Byb3RvdHlwZShmLCB0YWcs IHJlZ3MsIGltbXMpOgogICAgICAgICAgICAgZi53cml0ZSgnREVGX0hFTFBFUl8lcyglcycgJSAo ZGVmX2hlbHBlcl9zaXplLCB0YWcpKQogCiAgICAgICAgICMjIEdlbmVyYXRlIHRoZSBxZW11IERF Rl9IRUxQRVIgdHlwZSBmb3IgZWFjaCByZXN1bHQKKyAgICAgICAgIyMgSXRlcmF0ZSBvdmVyIHRo aXMgbGlzdCB0d2ljZQorICAgICAgICAjIyAtIEVtaXQgdGhlIHNjYWxhciByZXN1bHQKKyAgICAg ICAgIyMgLSBFbWl0IHRoZSB2ZWN0b3IgcmVzdWx0CiAgICAgICAgIGk9MAogICAgICAgICBmb3Ig cmVndHlwZSxyZWdpZCx0b3NzLG51bXJlZ3MgaW4gcmVnczoKICAgICAgICAgICAgIGlmIChpc193 cml0dGVuKHJlZ2lkKSk6Ci0gICAgICAgICAgICAgICAgZ2VuX2RlZl9oZWxwZXJfb3BuKGYsIHRh ZywgcmVndHlwZSwgcmVnaWQsIHRvc3MsIG51bXJlZ3MsIGkpCisgICAgICAgICAgICAgICAgaWYg KG5vdCBpc19odnhfcmVnKHJlZ3R5cGUpKToKKyAgICAgICAgICAgICAgICAgICAgZ2VuX2RlZl9o ZWxwZXJfb3BuKGYsIHRhZywgcmVndHlwZSwgcmVnaWQsIHRvc3MsIG51bXJlZ3MsIGkpCiAgICAg ICAgICAgICAgICAgaSArPSAxCiAKICAgICAgICAgIyMgUHV0IHRoZSBlbnYgYmV0d2VlbiB0aGUg b3V0cHV0cyBhbmQgaW5wdXRzCiAgICAgICAgIGYud3JpdGUoJywgZW52JyApCiAgICAgICAgIGkg Kz0gMQogCisgICAgICAgICMgU2Vjb25kIHBhc3MKKyAgICAgICAgZm9yIHJlZ3R5cGUscmVnaWQs dG9zcyxudW1yZWdzIGluIHJlZ3M6CisgICAgICAgICAgICBpZiAoaXNfd3JpdHRlbihyZWdpZCkp OgorICAgICAgICAgICAgICAgIGlmIChpc19odnhfcmVnKHJlZ3R5cGUpKToKKyAgICAgICAgICAg ICAgICAgICAgZ2VuX2RlZl9oZWxwZXJfb3BuKGYsIHRhZywgcmVndHlwZSwgcmVnaWQsIHRvc3Ms IG51bXJlZ3MsIGkpCisgICAgICAgICAgICAgICAgICAgIGkgKz0gMQorCiAgICAgICAgICMjIEdl bmVyYXRlIHRoZSBxZW11IHR5cGUgZm9yIGVhY2ggaW5wdXQgb3BlcmFuZCAocmVncyBhbmQgaW1t ZWRpYXRlcykKICAgICAgICAgZm9yIHJlZ3R5cGUscmVnaWQsdG9zcyxudW1yZWdzIGluIHJlZ3M6 CiAgICAgICAgICAgICBpZiAoaXNfcmVhZChyZWdpZCkpOgorICAgICAgICAgICAgICAgIGlmIChp c19odnhfcmVnKHJlZ3R5cGUpIGFuZCBpc19yZWFkd3JpdGUocmVnaWQpKToKKyAgICAgICAgICAg ICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBnZW5fZGVmX2hlbHBlcl9vcG4oZiwg dGFnLCByZWd0eXBlLCByZWdpZCwgdG9zcywgbnVtcmVncywgaSkKICAgICAgICAgICAgICAgICBp ICs9IDEKICAgICAgICAgZm9yIGltbWxldHQsYml0cyxpbW1zaGlmdCBpbiBpbW1zOgpAQCAtNDM3 LDExICs0NjcsMzMgQEAgZGVmIGdlbnB0cl9kc3Rfd3JpdGUoZixyZWd0eXBlLCByZWdpZCk6CiAg ICAgbWFjcm8gPSAiV1JJVEVfJXNSRUdfJXMiICUgKHJlZ3R5cGUsIHJlZ2lkKQogICAgIGYud3Jp dGUoIiVzKCVzJXNOLCAlcyVzVik7XG4iICUgKG1hY3JvLCByZWd0eXBlLCByZWdpZCwgcmVndHlw ZSwgcmVnaWQpKQogCitkZWYgZ2VucHRyX2RzdF93cml0ZV9leHQoZiwgcmVndHlwZSwgcmVnaWQs IG5ld3Y9IjAiKToKKyAgICBtYWNybyA9ICJXUklURV8lc1JFR18lcyIgJSAocmVndHlwZSwgcmVn aWQpCisgICAgZi53cml0ZSgiJXMoJXMlc04sICVzJXNWLCVzKTtcbiIgJSBcCisgICAgICAgICAg ICAobWFjcm8sIHJlZ3R5cGUsIHJlZ2lkLCByZWd0eXBlLCByZWdpZCwgbmV3dikpCisKIGRlZiBn ZW5wdHJfZHN0X3dyaXRlX29wbihmLHJlZ3R5cGUsIHJlZ2lkLCB0YWcpOgogICAgIGlmIChpc19w YWlyKHJlZ2lkKSk6Ci0gICAgICAgIGdlbnB0cl9kc3Rfd3JpdGUoZiwgcmVndHlwZSwgcmVnaWQp CisgICAgICAgIGlmIChpc19odnhfcmVnKHJlZ3R5cGUpKToKKyAgICAgICAgICAgIGlmICgnQV9D VklfVE1QJyBpbiBhdHRyaWJkaWN0W3RhZ10gb3IKKyAgICAgICAgICAgICAgICAnQV9DVklfVE1Q X0RTVCcgaW4gYXR0cmliZGljdFt0YWddKToKKyAgICAgICAgICAgICAgICBnZW5wdHJfZHN0X3dy aXRlX2V4dChmLCByZWd0eXBlLCByZWdpZCwgIkVYVF9UTVAiKQorICAgICAgICAgICAgZWxzZToK KyAgICAgICAgICAgICAgICBnZW5wdHJfZHN0X3dyaXRlX2V4dChmLCByZWd0eXBlLCByZWdpZCkK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGdlbnB0cl9kc3Rfd3JpdGUoZiwgcmVndHlwZSwg cmVnaWQpCiAgICAgZWxpZiAoaXNfc2luZ2xlKHJlZ2lkKSk6Ci0gICAgICAgIGdlbnB0cl9kc3Rf d3JpdGUoZiwgcmVndHlwZSwgcmVnaWQpCisgICAgICAgIGlmIChpc19odnhfcmVnKHJlZ3R5cGUp KToKKyAgICAgICAgICAgIGlmICdBX0NWSV9ORVcnIGluIGF0dHJpYmRpY3RbdGFnXToKKyAgICAg ICAgICAgICAgICBnZW5wdHJfZHN0X3dyaXRlX2V4dChmLCByZWd0eXBlLCByZWdpZCwgIkVYVF9O RVciKQorICAgICAgICAgICAgZWxpZiAnQV9DVklfVE1QJyBpbiBhdHRyaWJkaWN0W3RhZ106Cisg ICAgICAgICAgICAgICAgZ2VucHRyX2RzdF93cml0ZV9leHQoZiwgcmVndHlwZSwgcmVnaWQsICJF WFRfVE1QIikKKyAgICAgICAgICAgIGVsaWYgJ0FfQ1ZJX1RNUF9EU1QnIGluIGF0dHJpYmRpY3Rb dGFnXToKKyAgICAgICAgICAgICAgICBnZW5wdHJfZHN0X3dyaXRlX2V4dChmLCByZWd0eXBlLCBy ZWdpZCwgIkVYVF9UTVAiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBnZW5w dHJfZHN0X3dyaXRlX2V4dChmLCByZWd0eXBlLCByZWdpZCwgIkVYVF9ERkwiKQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgZ2VucHRyX2RzdF93cml0ZShmLCByZWd0eXBlLCByZWdpZCkKICAg ICBlbHNlOgogICAgICAgICBwcmludCgiQmFkIHJlZ2lzdGVyIHBhcnNlOiAiLHJlZ3R5cGUscmVn aWQsdG9zcyxudW1yZWdzKQogCkBAIC01MDQsMTMgKzU1NiwyMyBAQCBkZWYgZ2VuX3RjZ19mdW5j KGYsIHRhZywgcmVncywgaW1tcyk6CiAgICAgIyMgSWYgdGhlcmUgaXMgYSBzY2FsYXIgcmVzdWx0 LCBpdCBpcyB0aGUgcmV0dXJuIHR5cGUKICAgICBmb3IgcmVndHlwZSxyZWdpZCx0b3NzLG51bXJl Z3MgaW4gcmVnczoKICAgICAgICAgaWYgKGlzX3dyaXR0ZW4ocmVnaWQpKToKKyAgICAgICAgICAg IGlmIChpc19odnhfcmVnKHJlZ3R5cGUpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAg ICAgICAgICAgZ2VuX2hlbHBlcl9jYWxsX29wbihmLCB0YWcsIHJlZ3R5cGUsIHJlZ2lkLCB0b3Nz LCBudW1yZWdzLCBpKQogICAgICAgICAgICAgaSArPSAxCiAgICAgaWYgKGkgPiAwKTogZi53cml0 ZSgiLCAiKQogICAgIGYud3JpdGUoImNwdV9lbnYiKQogICAgIGk9MQogICAgIGZvciByZWd0eXBl LHJlZ2lkLHRvc3MsbnVtcmVncyBpbiByZWdzOgorICAgICAgICBpZiAoaXNfd3JpdHRlbihyZWdp ZCkpOgorICAgICAgICAgICAgaWYgKG5vdCBpc19odnhfcmVnKHJlZ3R5cGUpKToKKyAgICAgICAg ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZ2VuX2hlbHBlcl9jYWxsX29wbihmLCB0YWcs IHJlZ3R5cGUsIHJlZ2lkLCB0b3NzLCBudW1yZWdzLCBpKQorICAgICAgICAgICAgaSArPSAxCisg ICAgZm9yIHJlZ3R5cGUscmVnaWQsdG9zcyxudW1yZWdzIGluIHJlZ3M6CiAgICAgICAgIGlmIChp c19yZWFkKHJlZ2lkKSk6CisgICAgICAgICAgICBpZiAoaXNfaHZ4X3JlZyhyZWd0eXBlKSBhbmQg aXNfcmVhZHdyaXRlKHJlZ2lkKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAg ICAgIGdlbl9oZWxwZXJfY2FsbF9vcG4oZiwgdGFnLCByZWd0eXBlLCByZWdpZCwgdG9zcywgbnVt cmVncywgaSkKICAgICAgICAgICAgIGkgKz0gMQogICAgIGZvciBpbW1sZXR0LGJpdHMsaW1tc2hp ZnQgaW4gaW1tczoKQEAgLTU3MywxMiArNjM1LDI2IEBAIGRlZiBnZW5faGVscGVyX2FyZ19wYWly KGYscmVndHlwZSxyZWdpZCxyZWdubyk6CiAgICAgaWYgcmVnbm8gPj0gMCA6IGYud3JpdGUoIiwg IikKICAgICBmLndyaXRlKCJpbnQ2NF90ICVzJXNWIiAlIChyZWd0eXBlLHJlZ2lkKSkKIAorZGVm IGdlbl9oZWxwZXJfYXJnX2V4dChmLHJlZ3R5cGUscmVnaWQscmVnbm8pOgorICAgIGlmIHJlZ25v ID4gMCA6IGYud3JpdGUoIiwgIikKKyAgICBmLndyaXRlKCJ2b2lkIColcyVzVl92b2lkIiAlIChy ZWd0eXBlLHJlZ2lkKSkKKworZGVmIGdlbl9oZWxwZXJfYXJnX2V4dF9wYWlyKGYscmVndHlwZSxy ZWdpZCxyZWdubyk6CisgICAgaWYgcmVnbm8gPiAwIDogZi53cml0ZSgiLCAiKQorICAgIGYud3Jp dGUoInZvaWQgKiVzJXNWX3ZvaWQiICUgKHJlZ3R5cGUscmVnaWQpKQorCiBkZWYgZ2VuX2hlbHBl cl9hcmdfb3BuKGYscmVndHlwZSxyZWdpZCxpKToKICAgICBpZiAoaXNfcGFpcihyZWdpZCkpOgot ICAgICAgICBnZW5faGVscGVyX2FyZ19wYWlyKGYscmVndHlwZSxyZWdpZCxpKQorICAgICAgICBp ZiAoaXNfaHZ4X3JlZyhyZWd0eXBlKSk6CisgICAgICAgICAgICBnZW5faGVscGVyX2FyZ19leHRf cGFpcihmLHJlZ3R5cGUscmVnaWQsaSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGdlbl9o ZWxwZXJfYXJnX3BhaXIoZixyZWd0eXBlLHJlZ2lkLGkpCiAgICAgZWxpZiAoaXNfc2luZ2xlKHJl Z2lkKSk6CiAgICAgICAgIGlmIGlzX29sZF92YWwocmVndHlwZSwgcmVnaWQsIHRhZyk6Ci0gICAg ICAgICAgICBnZW5faGVscGVyX2FyZyhmLHJlZ3R5cGUscmVnaWQsaSkKKyAgICAgICAgICAgIGlm IChpc19odnhfcmVnKHJlZ3R5cGUpKToKKyAgICAgICAgICAgICAgICBnZW5faGVscGVyX2FyZ19l eHQoZixyZWd0eXBlLHJlZ2lkLGkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg IGdlbl9oZWxwZXJfYXJnKGYscmVndHlwZSxyZWdpZCxpKQogICAgICAgICBlbGlmIGlzX25ld192 YWwocmVndHlwZSwgcmVnaWQsIHRhZyk6CiAgICAgICAgICAgICBnZW5faGVscGVyX2FyZ19uZXco ZixyZWd0eXBlLHJlZ2lkLGkpCiAgICAgICAgIGVsc2U6CkBAIC01OTcsMjUgKzY3Myw2MSBAQCBk ZWYgZ2VuX2hlbHBlcl9kZXN0X2RlY2xfcGFpcihmLHJlZ3R5cGUscmVnaWQscmVnbm8sc3ViZmll bGQ9IiIpOgogICAgIGYud3JpdGUoImludDY0X3QgJXMlc1YlcyA9IDA7XG4iICUgXAogICAgICAg ICAocmVndHlwZSxyZWdpZCxzdWJmaWVsZCkpCiAKK2RlZiBnZW5faGVscGVyX2Rlc3RfZGVjbF9l eHQoZixyZWd0eXBlLHJlZ2lkKToKKyAgICBmLndyaXRlKCIvKiAlcyVzViBpcyAqKG1tdmVjdG9y X3QqKSglcyVzVl92b2lkKSAqL1xuIiAlIFwKKyAgICAgICAgKHJlZ3R5cGUscmVnaWQscmVndHlw ZSxyZWdpZCkpCisKK2RlZiBnZW5faGVscGVyX2Rlc3RfZGVjbF9leHRfcGFpcihmLHJlZ3R5cGUs cmVnaWQscmVnbm8pOgorICAgIGYud3JpdGUoIi8qICVzJXNWIGlzICoobW12ZWN0b3JfcGFpcl90 KikpJXMlc1Zfdm9pZCkgKi9cbiIgJSBcCisgICAgICAgIChyZWd0eXBlLHJlZ2lkLHJlZ3R5cGUs IHJlZ2lkKSkKKwogZGVmIGdlbl9oZWxwZXJfZGVzdF9kZWNsX29wbihmLHJlZ3R5cGUscmVnaWQs aSk6CiAgICAgaWYgKGlzX3BhaXIocmVnaWQpKToKLSAgICAgICAgZ2VuX2hlbHBlcl9kZXN0X2Rl Y2xfcGFpcihmLHJlZ3R5cGUscmVnaWQsaSkKKyAgICAgICAgaWYgKGlzX2h2eF9yZWcocmVndHlw ZSkpOgorICAgICAgICAgICAgZ2VuX2hlbHBlcl9kZXN0X2RlY2xfZXh0X3BhaXIoZixyZWd0eXBl LHJlZ2lkLCBpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZ2VuX2hlbHBlcl9kZXN0X2Rl Y2xfcGFpcihmLHJlZ3R5cGUscmVnaWQsaSkKICAgICBlbGlmIChpc19zaW5nbGUocmVnaWQpKToK LSAgICAgICAgZ2VuX2hlbHBlcl9kZXN0X2RlY2woZixyZWd0eXBlLHJlZ2lkLGkpCisgICAgICAg IGlmIChpc19odnhfcmVnKHJlZ3R5cGUpKToKKyAgICAgICAgICAgIGdlbl9oZWxwZXJfZGVzdF9k ZWNsX2V4dChmLHJlZ3R5cGUscmVnaWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBnZW5f aGVscGVyX2Rlc3RfZGVjbChmLHJlZ3R5cGUscmVnaWQsaSkKICAgICBlbHNlOgogICAgICAgICBw cmludCgiQmFkIHJlZ2lzdGVyIHBhcnNlOiAiLHJlZ3R5cGUscmVnaWQsdG9zcyxudW1yZWdzKQog CitkZWYgZ2VuX2hlbHBlcl9zcmNfdmFyX2V4dChmLHJlZ3R5cGUscmVnaWQpOgorICAgIGYud3Jp dGUoIi8qICVzJXNWIGlzICoobW12ZWN0b3JfdCopKCVzJXNWX3ZvaWQpICovXG4iICUgXAorICAg ICAgICAocmVndHlwZSxyZWdpZCxyZWd0eXBlLHJlZ2lkKSkKKworZGVmIGdlbl9oZWxwZXJfc3Jj X3Zhcl9leHRfcGFpcihmLHJlZ3R5cGUscmVnaWQscmVnbm8pOgorICAgIGYud3JpdGUoIi8qICVz JXNWJXMgaXMgKihtbXZlY3Rvcl9wYWlyX3QqKSglcyVzViVzX3ZvaWQpICovXG4iICUgXAorICAg ICAgICAocmVndHlwZSxyZWdpZCxyZWdubyxyZWd0eXBlLHJlZ2lkLHJlZ25vKSkKKwogZGVmIGdl bl9oZWxwZXJfcmV0dXJuKGYscmVndHlwZSxyZWdpZCxyZWdubyk6CiAgICAgZi53cml0ZSgicmV0 dXJuICVzJXNWO1xuIiAlIChyZWd0eXBlLHJlZ2lkKSkKIAogZGVmIGdlbl9oZWxwZXJfcmV0dXJu X3BhaXIoZixyZWd0eXBlLHJlZ2lkLHJlZ25vKToKICAgICBmLndyaXRlKCJyZXR1cm4gJXMlc1Y7 XG4iICUgKHJlZ3R5cGUscmVnaWQpKQogCitkZWYgZ2VuX2hlbHBlcl9kc3Rfd3JpdGVfZXh0KGYs cmVndHlwZSxyZWdpZCk6CisgICAgZi53cml0ZSgiLyogJXMlc1YgaXMgKihtbXZlY3Rvcl90Kikl cyVzVl92b2lkICovXG4iICUgXAorICAgICAgICAocmVndHlwZSxyZWdpZCxyZWd0eXBlLHJlZ2lk KSkKKworZGVmIGdlbl9oZWxwZXJfZHN0X3dyaXRlX2V4dF9wYWlyKGYscmVndHlwZSxyZWdpZCk6 CisgICAgZi53cml0ZSgiLyogJXMlc1YgaXMgKihtbXZlY3Rvcl9wYWlyX3QqKSVzJXNWX3ZvaWQg Ki9cbiIgJSBcCisgICAgICAgIChyZWd0eXBlLHJlZ2lkLCByZWd0eXBlLHJlZ2lkKSkKKwogZGVm IGdlbl9oZWxwZXJfcmV0dXJuX29wbihmLCByZWd0eXBlLCByZWdpZCwgaSk6CiAgICAgaWYgKGlz X3BhaXIocmVnaWQpKToKLSAgICAgICAgZ2VuX2hlbHBlcl9yZXR1cm5fcGFpcihmLHJlZ3R5cGUs cmVnaWQsaSkKKyAgICAgICAgaWYgKGlzX2h2eF9yZWcocmVndHlwZSkpOgorICAgICAgICAgICAg Z2VuX2hlbHBlcl9kc3Rfd3JpdGVfZXh0X3BhaXIoZixyZWd0eXBlLHJlZ2lkKQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgZ2VuX2hlbHBlcl9yZXR1cm5fcGFpcihmLHJlZ3R5cGUscmVnaWQs aSkKICAgICBlbGlmIChpc19zaW5nbGUocmVnaWQpKToKLSAgICAgICAgZ2VuX2hlbHBlcl9yZXR1 cm4oZixyZWd0eXBlLHJlZ2lkLGkpCisgICAgICAgIGlmIChpc19odnhfcmVnKHJlZ3R5cGUpKToK KyAgICAgICAgICAgIGdlbl9oZWxwZXJfZHN0X3dyaXRlX2V4dChmLHJlZ3R5cGUscmVnaWQpCisg ICAgICAgIGVsc2U6CisgICAgICAgICAgICBnZW5faGVscGVyX3JldHVybihmLHJlZ3R5cGUscmVn aWQsaSkKICAgICBlbHNlOgogICAgICAgICBwcmludCgiQmFkIHJlZ2lzdGVyIHBhcnNlOiAiLHJl Z3R5cGUscmVnaWQsdG9zcyxudW1yZWdzKQogCkBAIC02NTQsMTQgKzc2NiwyMCBAQCBkZWYgZ2Vu X2hlbHBlcl9kZWZpbml0aW9uKGYsIHRhZywgcmVncywgaW1tcyk6CiAgICAgICAgICAgICAgICAg JSAodGFnLCB0YWcpKQogICAgIGVsc2U6CiAgICAgICAgICMjIFRoZSByZXR1cm4gdHlwZSBvZiB0 aGUgZnVuY3Rpb24gaXMgdGhlIHR5cGUgb2YgdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgICMjIHJl Z2lzdGVyCisgICAgICAgICMjIHJlZ2lzdGVyIChpZiBzY2FsYXIpCiAgICAgICAgIGk9MAogICAg ICAgICBmb3IgcmVndHlwZSxyZWdpZCx0b3NzLG51bXJlZ3MgaW4gcmVnczoKICAgICAgICAgICAg IGlmIChpc193cml0dGVuKHJlZ2lkKSk6CiAgICAgICAgICAgICAgICAgaWYgKGlzX3BhaXIocmVn aWQpKToKLSAgICAgICAgICAgICAgICAgICAgZ2VuX2hlbHBlcl9yZXR1cm5fdHlwZV9wYWlyKGYs cmVndHlwZSxyZWdpZCxpKQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNfaHZ4X3JlZyhyZWd0 eXBlKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX2hlbHBlcl9yZXR1cm5fdHlw ZV9wYWlyKGYscmVndHlwZSxyZWdpZCxpKQogICAgICAgICAgICAgICAgIGVsaWYgKGlzX3Npbmds ZShyZWdpZCkpOgotICAgICAgICAgICAgICAgICAgICBnZW5faGVscGVyX3JldHVybl90eXBlKGYs cmVndHlwZSxyZWdpZCxpKQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNfaHZ4X3JlZyhyZWd0 eXBlKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9oZWxwZXJfcmV0dXJu X3R5cGUoZixyZWd0eXBlLHJlZ2lkLGkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAg ICAgICAgICAgICAgcHJpbnQoIkJhZCByZWdpc3RlciBwYXJzZTogIixyZWd0eXBlLHJlZ2lkLHRv c3MsbnVtcmVncykKICAgICAgICAgICAgIGkgKz0gMQpAQCAtNjcwLDEwICs3ODgsMzAgQEAgZGVm IGdlbl9oZWxwZXJfZGVmaW5pdGlvbihmLCB0YWcsIHJlZ3MsIGltbXMpOgogICAgICAgICAgICAg Zi53cml0ZSgidm9pZCIpCiAgICAgICAgIGYud3JpdGUoIiBIRUxQRVIoJXMpKENQVUhleGFnb25T dGF0ZSAqZW52IiAlIHRhZykKIAorICAgICAgICAjIyBBcmd1bWVudHMgaW5jbHVkZSB0aGUgdmVj dG9yIGRlc3RpbmF0aW9uIG9wZXJhbmRzCiAgICAgICAgIGkgPSAxCisgICAgICAgIGZvciByZWd0 eXBlLHJlZ2lkLHRvc3MsbnVtcmVncyBpbiByZWdzOgorICAgICAgICAgICAgaWYgKGlzX3dyaXR0 ZW4ocmVnaWQpKToKKyAgICAgICAgICAgICAgICBpZiAoaXNfcGFpcihyZWdpZCkpOgorICAgICAg ICAgICAgICAgICAgICBpZiAoaXNfaHZ4X3JlZyhyZWd0eXBlKSk6CisgICAgICAgICAgICAgICAg ICAgICAgICBnZW5faGVscGVyX2FyZ19leHRfcGFpcihmLHJlZ3R5cGUscmVnaWQsaSkKKyAgICAg ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg ICAgICAgICAgICAgICAgZWxpZiAoaXNfc2luZ2xlKHJlZ2lkKSk6CisgICAgICAgICAgICAgICAg ICAgIGlmIChpc19odnhfcmVnKHJlZ3R5cGUpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGdl bl9oZWxwZXJfYXJnX2V4dChmLHJlZ3R5cGUscmVnaWQsaSkKKyAgICAgICAgICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgcmV0dXJuIHZhbHVl IG9mIHRoZSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiQmFkIHJlZ2lzdGVy IHBhcnNlOiAiLHJlZ3R5cGUscmVnaWQsdG9zcyxudW1yZWdzKQorICAgICAgICAgICAgICAgIGkg Kz0gMQorCiAgICAgICAgICMjIEFyZ3VtZW50cyB0byB0aGUgaGVscGVyIGZ1bmN0aW9uIGFyZSB0 aGUgc291cmNlIHJlZ3MgYW5kIGltbWVkaWF0ZXMKICAgICAgICAgZm9yIHJlZ3R5cGUscmVnaWQs dG9zcyxudW1yZWdzIGluIHJlZ3M6CiAgICAgICAgICAgICBpZiAoaXNfcmVhZChyZWdpZCkpOgor ICAgICAgICAgICAgICAgIGlmIChpc19odnhfcmVnKHJlZ3R5cGUpIGFuZCBpc19yZWFkd3JpdGUo cmVnaWQpKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBn ZW5faGVscGVyX2FyZ19vcG4oZixyZWd0eXBlLHJlZ2lkLGkpCiAgICAgICAgICAgICAgICAgaSAr PSAxCiAgICAgICAgIGZvciBpbW1sZXR0LGJpdHMsaW1tc2hpZnQgaW4gaW1tczoKQEAgLTY5Niw2 ICs4MzQsMTcgQEAgZGVmIGdlbl9oZWxwZXJfZGVmaW5pdGlvbihmLCB0YWcsIHJlZ3MsIGltbXMp OgogICAgICAgICAgICAgICAgIGdlbl9oZWxwZXJfZGVzdF9kZWNsX29wbihmLHJlZ3R5cGUscmVn aWQsaSkKICAgICAgICAgICAgIGkgKz0gMQogCisgICAgICAgIGZvciByZWd0eXBlLHJlZ2lkLHRv c3MsbnVtcmVncyBpbiByZWdzOgorICAgICAgICAgICAgaWYgKGlzX3JlYWQocmVnaWQpKToKKyAg ICAgICAgICAgICAgICBpZiAoaXNfcGFpcihyZWdpZCkpOgorICAgICAgICAgICAgICAgICAgICBp ZiAoaXNfaHZ4X3JlZyhyZWd0eXBlKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5faGVs cGVyX3NyY192YXJfZXh0X3BhaXIoZixyZWd0eXBlLHJlZ2lkLGkpCisgICAgICAgICAgICAgICAg ZWxpZiAoaXNfc2luZ2xlKHJlZ2lkKSk6CisgICAgICAgICAgICAgICAgICAgIGlmIChpc19odnhf cmVnKHJlZ3R5cGUpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9oZWxwZXJfc3JjX3Zh cl9leHQoZixyZWd0eXBlLHJlZ2lkKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgICAgICAgIHByaW50KCJCYWQgcmVnaXN0ZXIgcGFyc2U6ICIscmVndHlwZSxyZWdpZCx0b3Nz LG51bXJlZ3MpCisKICAgICAgICAgaWYgJ0FfRlBPUCcgaW4gYXR0cmliZGljdFt0YWddOgogICAg ICAgICAgICAgZi53cml0ZSgnZkZQT1BfU1RBUlQoKTtcbicpOwogCi0tIAoyLjcuNAoK