From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 127785 invoked by alias); 6 Aug 2018 22:14:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 127772 invoked by uid 89); 6 Aug 2018 22:14:03 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: =?ISO-8859-1?Q?No, score=-24.5 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=ab, the, the=c2, fairly?= X-HELO: NAM04-BN3-obe.outbound.protection.outlook.com Received: from mail-eopbgr680053.outbound.protection.outlook.com (HELO NAM04-BN3-obe.outbound.protection.outlook.com) (40.107.68.53) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 06 Aug 2018 22:13:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HhH1YB3AWGEMwEAiEieh20CA9Pww5nf8bTRX5k+2ndA=; b=NglzyeAS6OhL7lRba8GoKaJ0Z58NbFED3dgtXagD4dUWxFg/hon1p/VrisFjozPwhlik+UDKRv9JcMeMQMUG4yMKY/kTt5uPO7gv2W0IS6v8FsXMPbGk65VEdnVQY+rdgh8cineeALsjxCMXWMpkVqb1dROL8lyNeCOPZ28n8s8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Received: from sellcey-dt.caveonetworks.com (50.233.148.155) by BYAPR07MB5031.namprd07.prod.outlook.com (2603:10b6:a03:5b::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1017.18; Mon, 6 Aug 2018 22:13:54 +0000 Message-ID: <1533593632.3879.90.camel@cavium.com> Subject: Re: [Patch][Aarch64] Implement Aarch64 SIMD ABI and aarch64_vector_pcs attribute From: Steve Ellcey Reply-To: sellcey@cavium.com To: Kyrill Tkachov , gcc-patches Cc: Wilco Dijkstra , Richard Sandiford , Richard Earnshaw , James Greenhalgh , Marcus Shawcroft Date: Mon, 06 Aug 2018 22:14:00 -0000 In-Reply-To: <5B61A40E.1040501@foss.arm.com> References: <1533075888.3879.14.camel@cavium.com> <5B61A40E.1040501@foss.arm.com> Content-Type: multipart/mixed; boundary="=-ebR0E33sLd/Ze+zjyq89" Mime-Version: 1.0 Return-Path: sellcey@cavium.com Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-SW-Source: 2018-08/txt/msg00445.txt.bz2 --=-ebR0E33sLd/Ze+zjyq89 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Content-length: 2814 Thanks for the feedback Kyrill.  I have updated my patch and attached the new version to this email.  The one change I did not make was to remove load_pair_dw_tftf and store_pair_dw_tftf and use the load_pair and vec_store_pair patterns.  Having to add two new iterators to remove two instructions didn't seem like much of an advantage and I liked having the names for tf to match the other load_pair_dw/store_pair_dw instructions. If you feel strongly about this I can go ahead and make that change though. With respect to the new tests iterating over the various options, I am not sure how that works but it does.  I copied the aarch64-torture.exp file from one of the other targets and verified that it ran the tests with -O0, -O1, -O2, '-O3 -g', -Os, '-O2 -flto -fno-use-linker- plugin -flto-partition=none', and '-O2 -flto -fuse-linker-plugin -fno- fat-lto-objects'. Steve Ellcey sellcey@cavium.com 2018-08-06  Steve Ellcey   * config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p): New prototype. (aarch64_epilogue_uses): Ditto. * config/aarch64/aarch64.c (aarch64_attribute_table): New array. (aarch64_simd_decl_p): New function. (aarch64_reg_save_mode): New function. (aarch64_is_simd_call_p): New function. (aarch64_function_ok_for_sibcall): Check for simd calls. (aarch64_layout_frame): Check for simd function. (aarch64_gen_storewb_pair): Handle E_TFmode. (aarch64_push_regs): Use aarch64_reg_save_mode to get mode. (aarch64_gen_loadwb_pair): Handle E_TFmode. (aarch64_pop_regs): Use aarch64_reg_save_mode to get mode. (aarch64_gen_store_pair): Handle E_TFmode. (aarch64_gen_load_pair): Ditto. (aarch64_save_callee_saves): Handle different mode sizes. (aarch64_restore_callee_saves): Ditto. (aarch64_components_for_bb): Check for simd function. (aarch64_epilogue_uses): New function. (aarch64_process_components): Ditto. (aarch64_expand_prologue): Ditto. (aarch64_expand_epilogue): Ditto. (aarch64_expand_call): Ditto. (TARGET_ATTRIBUTE_TABLE): New define. * config/aarch64/aarch64.h (EPILOGUE_USES): Redefine. (FP_SIMD_SAVED_REGNUM_P): New macro. * config/aarch64/aarch64.md (V23_REGNUM) New constant. (simple_return): New define_expand. (load_pair_dw_tftf): New instruction. (store_pair_dw_tftf): Ditto. (loadwb_pair_): Ditto. ("storewb_pair_): Ditto. 2018-08-06  Steve Ellcey           * gcc.target/aarch64/torture/aarch64-torture.exp: New file.         * gcc.target/aarch64/torture/simd-abi-1.c: New test.         * gcc.target/aarch64/torture/simd-abi-2.c: Ditto.         * gcc.target/aarch64/torture/simd-abi-3.c: Ditto.         * gcc.target/aarch64/torture/simd-abi-4.c: Ditto. --=-ebR0E33sLd/Ze+zjyq89 Content-Disposition: attachment; filename="gcc-vect-abi.patch" Content-Type: text/x-patch; name="gcc-vect-abi.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 26747 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rv cy5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKaW5k ZXggYWY1ZGI5Yy4uOTljOTYyZiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQtcHJvdG9zLmgKQEAgLTQyMyw2ICs0MjMsNyBAQCBib29s IGFhcmNoNjRfc3BsaXRfZGltb2RlX2NvbnN0X3N0b3JlIChydHgsIHJ0eCk7 CiBib29sIGFhcmNoNjRfc3ltYm9saWNfYWRkcmVzc19wIChydHgpOwogYm9v bCBhYXJjaDY0X3VpbW0xMl9zaGlmdCAoSE9TVF9XSURFX0lOVCk7CiBib29s IGFhcmNoNjRfdXNlX3JldHVybl9pbnNuX3AgKHZvaWQpOworYm9vbCBhYXJj aDY0X3VzZV9zaW1wbGVfcmV0dXJuX2luc25fcCAodm9pZCk7CiBjb25zdCBj aGFyICphYXJjaDY0X21hbmdsZV9idWlsdGluX3R5cGUgKGNvbnN0X3RyZWUp OwogY29uc3QgY2hhciAqYWFyY2g2NF9vdXRwdXRfY2FzZXNpIChydHggKik7 CiAKQEAgLTUwNyw2ICs1MDgsOCBAQCB2b2lkIGFhcmNoNjRfc3BsaXRfc2lt ZF9tb3ZlIChydHgsIHJ0eCk7CiAvKiBDaGVjayBmb3IgYSBsZWdpdGltYXRl IGZsb2F0aW5nIHBvaW50IGNvbnN0YW50IGZvciBGTU9WLiAgKi8KIGJvb2wg YWFyY2g2NF9mbG9hdF9jb25zdF9yZXByZXNlbnRhYmxlX3AgKHJ0eCk7CiAK K2V4dGVybiBpbnQgYWFyY2g2NF9lcGlsb2d1ZV91c2VzIChpbnQpOworCiAj aWYgZGVmaW5lZCAoUlRYX0NPREUpCiB2b2lkIGFhcmNoNjRfZ2VuX3VubGlr ZWx5X2NicmFuY2ggKGVudW0gcnR4X2NvZGUsIG1hY2hpbmVfbW9kZSBjY19t b2RlLAogCQkJCSAgIHJ0eCBsYWJlbF9yZWYpOwpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYyBiL2djYy9jb25maWcvYWFyY2g2 NC9hYXJjaDY0LmMKaW5kZXggZmEwMTQ3NS4uN2FiMmE2MCAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYworKysgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC5jCkBAIC0xMDI3LDYgKzEwMjcsMTUgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jZXNzb3IgKnNlbGVjdGVkX3R1bmU7 CiAvKiBUaGUgY3VycmVudCB0dW5pbmcgc2V0LiAgKi8KIHN0cnVjdCB0dW5l X3BhcmFtcyBhYXJjaDY0X3R1bmVfcGFyYW1zID0gZ2VuZXJpY190dW5pbmdz OwogCisvKiBUYWJsZSBvZiBtYWNoaW5lIGF0dHJpYnV0ZXMuICAqLworc3Rh dGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBhYXJjaDY0X2F0dHJp YnV0ZV90YWJsZVtdID0KK3sKKyAgLyogeyBuYW1lLCBtaW5fbGVuLCBtYXhf bGVuLCBkZWNsX3JlcSwgdHlwZV9yZXEsIGZuX3R5cGVfcmVxLAorICAgICAg IGFmZmVjdHNfdHlwZV9pZGVudGl0eSwgaGFuZGxlciwgZXhjbHVkZSB9ICov CisgIHsgImFhcmNoNjRfdmVjdG9yX3BjcyIsIDAsIDAsIHRydWUsICBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBOVUxMLCBOVUxMIH0sCisgIHsgTlVMTCwgICAg ICAgICAgICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBOVUxMLCBOVUxMIH0KK307CisKICNkZWZpbmUgQUFSQ0g2NF9DUFVfREVG QVVMVF9GTEFHUyAoKHNlbGVjdGVkX2NwdSkgPyBzZWxlY3RlZF9jcHUtPmZs YWdzIDogMCkKIAogLyogQW4gSVNBIGV4dGVuc2lvbiBpbiB0aGUgY28tcHJv Y2Vzc29yIGFuZCBtYWluIGluc3RydWN0aW9uIHNldCBzcGFjZS4gICovCkBA IC0xNDA1LDYgKzE0MTQsMzEgQEAgYWFyY2g2NF9oYXJkX3JlZ25vX21vZGVf b2sgKHVuc2lnbmVkIHJlZ25vLCBtYWNoaW5lX21vZGUgbW9kZSkKICAgcmV0 dXJuIGZhbHNlOwogfQogCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGEg ZGVmaW5pdGlvbiBvZiBhIHZlY3Rvcml6ZWQgc2ltZCBmdW5jdGlvbi4gICov CisKK3N0YXRpYyBib29sCithYXJjaDY0X3NpbWRfZGVjbF9wICh0cmVlIGZu ZGVjbCkKK3sKKyAgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJhYXJjaDY0X3Zl Y3Rvcl9wY3MiLCBERUNMX0FUVFJJQlVURVMgKGZuZGVjbCkpICE9IE5VTEwp CisgICAgcmV0dXJuIHRydWU7CisgIGlmIChsb29rdXBfYXR0cmlidXRlICgi c2ltZCIsIERFQ0xfQVRUUklCVVRFUyAoZm5kZWNsKSkgPT0gTlVMTCkKKyAg ICByZXR1cm4gZmFsc2U7CisgIHJldHVybiAoVkVDVE9SX1RZUEVfUCAoVFJF RV9UWVBFIChUUkVFX1RZUEUgKGZuZGVjbCkpKSk7Cit9CisKKy8qIFJldHVy biB0aGUgbW9kZSBhIHJlZ2lzdGVyIHNhdmUvcmVzdG9yZSBzaG91bGQgdXNl LiAgREltb2RlIGZvciBpbnRlZ2VyCisgICByZWdpc3RlcnMsIERGbW9kZSBm b3IgRlAgcmVnaXN0ZXJzIGluIG5vbi1TSU1EIGZ1bmN0aW9ucyAodGhleSBv bmx5IHNhdmUKKyAgIHRoZSBib3R0b20gaGFsZiBvZiBhIDEyOCBiaXQgcmVn aXN0ZXIpLCBvciBURm1vZGUgZm9yIEZQIHJlZ2lzdGVycyBpbgorICAgU0lN RCBmdW5jdGlvbnMuICAqLworCitzdGF0aWMgbWFjaGluZV9tb2RlCithYXJj aDY0X3JlZ19zYXZlX21vZGUgKHRyZWUgZm5kZWNsLCB1bnNpZ25lZCByZWdu bykKK3sKKyAgcmV0dXJuIEdQX1JFR05VTV9QIChyZWdubykKKwkgICA/IEVf REltb2RlCisJICAgOiAoYWFyY2g2NF9zaW1kX2RlY2xfcCAoZm5kZWNsKSA/ IEVfVEZtb2RlIDogRV9ERm1vZGUpOworfQorCiAvKiBJbXBsZW1lbnQgVEFS R0VUX0hBUkRfUkVHTk9fQ0FMTF9QQVJUX0NMT0JCRVJFRC4gIFRoZSBjYWxs ZWUgb25seSBzYXZlcwogICAgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgt Yml0IHJlZ2lzdGVyLiAgVGVsbCB0aGUgY29tcGlsZXIgdGhlIGNhbGxlZQog ICAgY2xvYmJlcnMgdGhlIHRvcCA2NCBiaXRzIHdoZW4gcmVzdG9yaW5nIHRo ZSBib3R0b20gNjQgYml0cy4gICovCkBAIC0zMjcyLDcgKzMzMDYsOSBAQCBz dGF0aWMgYm9vbAogYWFyY2g2NF9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCAo dHJlZSBkZWNsIEFUVFJJQlVURV9VTlVTRUQsCiAJCQkJIHRyZWUgZXhwIEFU VFJJQlVURV9VTlVTRUQpCiB7Ci0gIC8qIEN1cnJlbnRseSwgYWx3YXlzIHRy dWUuICAqLworICBpZiAoYWFyY2g2NF9zaW1kX2RlY2xfcCAoY2Z1bi0+ZGVj bCkpCisgICAgcmV0dXJuIGZhbHNlOworCiAgIHJldHVybiB0cnVlOwogfQog CkBAIC00MDM1LDYgKzQwNzEsNyBAQCBhYXJjaDY0X2xheW91dF9mcmFtZSAo dm9pZCkKIHsKICAgSE9TVF9XSURFX0lOVCBvZmZzZXQgPSAwOwogICBpbnQg cmVnbm8sIGxhc3RfZnBfcmVnID0gSU5WQUxJRF9SRUdOVU07CisgIGJvb2wg c2ltZF9mdW5jdGlvbiA9IGFhcmNoNjRfc2ltZF9kZWNsX3AgKGNmdW4tPmRl Y2wpOwogCiAgIGlmIChyZWxvYWRfY29tcGxldGVkICYmIGNmdW4tPm1hY2hp bmUtPmZyYW1lLmxhaWRfb3V0KQogICAgIHJldHVybjsKQEAgLTQwNDcsNiAr NDA4NCwxNyBAQCBhYXJjaDY0X2xheW91dF9mcmFtZSAodm9pZCkKICAgY2Z1 bi0+bWFjaGluZS0+ZnJhbWUud2JfY2FuZGlkYXRlMSA9IElOVkFMSURfUkVH TlVNOwogICBjZnVuLT5tYWNoaW5lLT5mcmFtZS53Yl9jYW5kaWRhdGUyID0g SU5WQUxJRF9SRUdOVU07CiAKKyAgLyogSWYgdGhpcyBpcyBhIG5vbi1sZWFm IHNpbWQgZnVuY3Rpb24gd2l0aCBjYWxscyB3ZSBhc3N1bWUgdGhhdAorICAg ICBhdCBsZWFzdCBvbmUgb2YgdGhvc2UgY2FsbHMgaXMgdG8gYSBub24tc2lt ZCBmdW5jdGlvbiBhbmQgdGh1cworICAgICB3ZSBtdXN0IHNhdmUgVjggdG8g VjIzIGluIHRoZSBwcm9sb2d1ZS4gICovCisKKyAgaWYgKHNpbWRfZnVuY3Rp b24gJiYgIWNydGwtPmlzX2xlYWYpCisgICAgeworICAgICAgZm9yIChyZWdu byA9IFYwX1JFR05VTTsgcmVnbm8gPD0gVjMxX1JFR05VTTsgcmVnbm8rKykK KwlpZiAoRlBfU0lNRF9TQVZFRF9SRUdOVU1fUCAocmVnbm8pKQorIAkgIGRm X3NldF9yZWdzX2V2ZXJfbGl2ZSAocmVnbm8sIHRydWUpOworICAgIH0KKwog ICAvKiBGaXJzdCBtYXJrIGFsbCB0aGUgcmVnaXN0ZXJzIHRoYXQgcmVhbGx5 IG5lZWQgdG8gYmUgc2F2ZWQuLi4gICovCiAgIGZvciAocmVnbm8gPSBSMF9S RUdOVU07IHJlZ25vIDw9IFIzMF9SRUdOVU07IHJlZ25vKyspCiAgICAgY2Z1 bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdub10gPSBTTE9UX05P VF9SRVFVSVJFRDsKQEAgLTQwNjksNyArNDExNyw4IEBAIGFhcmNoNjRfbGF5 b3V0X2ZyYW1lICh2b2lkKQogCiAgIGZvciAocmVnbm8gPSBWMF9SRUdOVU07 IHJlZ25vIDw9IFYzMV9SRUdOVU07IHJlZ25vKyspCiAgICAgaWYgKGRmX3Jl Z3NfZXZlcl9saXZlX3AgKHJlZ25vKQotCSYmICFjYWxsX3VzZWRfcmVnc1ty ZWdub10pCisJJiYgKCFjYWxsX3VzZWRfcmVnc1tyZWdub10KKwkgICAgfHwg KHNpbWRfZnVuY3Rpb24gJiYgRlBfU0lNRF9TQVZFRF9SRUdOVU1fUCAocmVn bm8pKSkpCiAgICAgICB7CiAJY2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVnX29m ZnNldFtyZWdub10gPSBTTE9UX1JFUVVJUkVEOwogCWxhc3RfZnBfcmVnID0g cmVnbm87CkBAIC00MTA2LDcgKzQxNTUsOCBAQCBhYXJjaDY0X2xheW91dF9m cmFtZSAodm9pZCkKICAgICAgIHsKIAkvKiBJZiB0aGVyZSBpcyBhbiBhbGln bm1lbnQgZ2FwIGJldHdlZW4gaW50ZWdlciBhbmQgZnAgY2FsbGVlLXNhdmVz LAogCSAgIGFsbG9jYXRlIHRoZSBsYXN0IGZwIHJlZ2lzdGVyIHRvIGl0IGlm IHBvc3NpYmxlLiAgKi8KLQlpZiAocmVnbm8gPT0gbGFzdF9mcF9yZWcgJiYg aGFzX2FsaWduX2dhcCAmJiAob2Zmc2V0ICYgOCkgPT0gMCkKKwlpZiAocmVn bm8gPT0gbGFzdF9mcF9yZWcgJiYgaGFzX2FsaWduX2dhcAorCSAgICAmJiAh c2ltZF9mdW5jdGlvbiAmJiAob2Zmc2V0ICYgOCkgPT0gMCkKIAkgIHsKIAkg ICAgY2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdub10gPSBt YXhfaW50X29mZnNldDsKIAkgICAgYnJlYWs7CkBAIC00MTE4LDcgKzQxNjgs NyBAQCBhYXJjaDY0X2xheW91dF9mcmFtZSAodm9pZCkKIAllbHNlIGlmIChj ZnVuLT5tYWNoaW5lLT5mcmFtZS53Yl9jYW5kaWRhdGUyID09IElOVkFMSURf UkVHTlVNCiAJCSAmJiBjZnVuLT5tYWNoaW5lLT5mcmFtZS53Yl9jYW5kaWRh dGUxID49IFYwX1JFR05VTSkKIAkgIGNmdW4tPm1hY2hpbmUtPmZyYW1lLndi X2NhbmRpZGF0ZTIgPSByZWdubzsKLQlvZmZzZXQgKz0gVU5JVFNfUEVSX1dP UkQ7CisJb2Zmc2V0ICs9IHNpbWRfZnVuY3Rpb24gPyBVTklUU19QRVJfVlJF RyA6IFVOSVRTX1BFUl9XT1JEOwogICAgICAgfQogCiAgIG9mZnNldCA9IFJP VU5EX1VQIChvZmZzZXQsIFNUQUNLX0JPVU5EQVJZIC8gQklUU19QRVJfVU5J VCk7CkBAIC00MjYxLDYgKzQzMTEsMTAgQEAgYWFyY2g2NF9nZW5fc3RvcmV3 Yl9wYWlyIChtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGJhc2UsIHJ0eCByZWcs IHJ0eCByZWcyLAogICAgICAgcmV0dXJuIGdlbl9zdG9yZXdiX3BhaXJkZl9k aSAoYmFzZSwgYmFzZSwgcmVnLCByZWcyLAogCQkJCSAgICBHRU5fSU5UICgt YWRqdXN0bWVudCksCiAJCQkJICAgIEdFTl9JTlQgKFVOSVRTX1BFUl9XT1JE IC0gYWRqdXN0bWVudCkpOworICAgIGNhc2UgRV9URm1vZGU6CisgICAgICBy ZXR1cm4gZ2VuX3N0b3Jld2JfcGFpcnRmX2RpIChiYXNlLCBiYXNlLCByZWcs IHJlZzIsCisJCQkJICAgIEdFTl9JTlQgKC1hZGp1c3RtZW50KSwKKwkJCQkg ICAgR0VOX0lOVCAoVU5JVFNfUEVSX1ZSRUcgLSBhZGp1c3RtZW50KSk7CiAg ICAgZGVmYXVsdDoKICAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKICAgICB9 CkBAIC00MjczLDcgKzQzMjcsNyBAQCBzdGF0aWMgdm9pZAogYWFyY2g2NF9w dXNoX3JlZ3MgKHVuc2lnbmVkIHJlZ25vMSwgdW5zaWduZWQgcmVnbm8yLCBI T1NUX1dJREVfSU5UIGFkanVzdG1lbnQpCiB7CiAgIHJ0eF9pbnNuICppbnNu OwotICBtYWNoaW5lX21vZGUgbW9kZSA9IChyZWdubzEgPD0gUjMwX1JFR05V TSkgPyBFX0RJbW9kZSA6IEVfREZtb2RlOworICBtYWNoaW5lX21vZGUgbW9k ZSA9IGFhcmNoNjRfcmVnX3NhdmVfbW9kZSAoY2Z1bi0+ZGVjbCwgcmVnbm8x KTsKIAogICBpZiAocmVnbm8yID09IElOVkFMSURfUkVHTlVNKQogICAgIHJl dHVybiBhYXJjaDY0X3B1c2h3Yl9zaW5nbGVfcmVnIChtb2RlLCByZWdubzEs IGFkanVzdG1lbnQpOwpAQCAtNDMwMyw2ICs0MzU3LDkgQEAgYWFyY2g2NF9n ZW5fbG9hZHdiX3BhaXIgKG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYmFzZSwg cnR4IHJlZywgcnR4IHJlZzIsCiAgICAgY2FzZSBFX0RGbW9kZToKICAgICAg IHJldHVybiBnZW5fbG9hZHdiX3BhaXJkZl9kaSAoYmFzZSwgYmFzZSwgcmVn LCByZWcyLCBHRU5fSU5UIChhZGp1c3RtZW50KSwKIAkJCQkgICBHRU5fSU5U IChVTklUU19QRVJfV09SRCkpOworICAgIGNhc2UgRV9URm1vZGU6CisgICAg ICByZXR1cm4gZ2VuX2xvYWR3Yl9wYWlydGZfZGkgKGJhc2UsIGJhc2UsIHJl ZywgcmVnMiwgR0VOX0lOVCAoYWRqdXN0bWVudCksCisJCQkJICAgR0VOX0lO VCAoVU5JVFNfUEVSX1ZSRUcpKTsKICAgICBkZWZhdWx0OgogICAgICAgZ2Nj X3VucmVhY2hhYmxlICgpOwogICAgIH0KQEAgLTQzMTYsNyArNDM3Myw3IEBA IHN0YXRpYyB2b2lkCiBhYXJjaDY0X3BvcF9yZWdzICh1bnNpZ25lZCByZWdu bzEsIHVuc2lnbmVkIHJlZ25vMiwgSE9TVF9XSURFX0lOVCBhZGp1c3RtZW50 LAogCQkgIHJ0eCAqY2ZpX29wcykKIHsKLSAgbWFjaGluZV9tb2RlIG1vZGUg PSAocmVnbm8xIDw9IFIzMF9SRUdOVU0pID8gRV9ESW1vZGUgOiBFX0RGbW9k ZTsKKyAgbWFjaGluZV9tb2RlIG1vZGUgPSBhYXJjaDY0X3JlZ19zYXZlX21v ZGUgKGNmdW4tPmRlY2wsIHJlZ25vMSk7CiAgIHJ0eCByZWcxID0gZ2VuX3J0 eF9SRUcgKG1vZGUsIHJlZ25vMSk7CiAKICAgKmNmaV9vcHMgPSBhbGxvY19y ZWdfbm90ZSAoUkVHX0NGQV9SRVNUT1JFLCByZWcxLCAqY2ZpX29wcyk7CkBA IC00MzUxLDYgKzQ0MDgsOSBAQCBhYXJjaDY0X2dlbl9zdG9yZV9wYWlyICht YWNoaW5lX21vZGUgbW9kZSwgcnR4IG1lbTEsIHJ0eCByZWcxLCBydHggbWVt MiwKICAgICBjYXNlIEVfREZtb2RlOgogICAgICAgcmV0dXJuIGdlbl9zdG9y ZV9wYWlyX2R3X2RmZGYgKG1lbTEsIHJlZzEsIG1lbTIsIHJlZzIpOwogCisg ICAgY2FzZSBFX1RGbW9kZToKKyAgICAgIHJldHVybiBnZW5fc3RvcmVfcGFp cl9kd190ZnRmIChtZW0xLCByZWcxLCBtZW0yLCByZWcyKTsKKwogICAgIGRl ZmF1bHQ6CiAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CiAgICAgfQpAQCAt NDM3MSw2ICs0NDMxLDkgQEAgYWFyY2g2NF9nZW5fbG9hZF9wYWlyIChtYWNo aW5lX21vZGUgbW9kZSwgcnR4IHJlZzEsIHJ0eCBtZW0xLCBydHggcmVnMiwK ICAgICBjYXNlIEVfREZtb2RlOgogICAgICAgcmV0dXJuIGdlbl9sb2FkX3Bh aXJfZHdfZGZkZiAocmVnMSwgbWVtMSwgcmVnMiwgbWVtMik7CiAKKyAgICBj YXNlIEVfVEZtb2RlOgorICAgICAgcmV0dXJuIGdlbl9sb2FkX3BhaXJfZHdf dGZ0ZiAocmVnMSwgbWVtMSwgcmVnMiwgbWVtMik7CisKICAgICBkZWZhdWx0 OgogICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwogICAgIH0KQEAgLTQ0MDMs NiArNDQ2NiwxMCBAQCBhYXJjaDY0X3NhdmVfY2FsbGVlX3NhdmVzIChtYWNo aW5lX21vZGUgbW9kZSwgcG9seV9pbnQ2NCBzdGFydF9vZmZzZXQsCiAgIHJ0 eF9pbnNuICppbnNuOwogICB1bnNpZ25lZCByZWdubzsKICAgdW5zaWduZWQg cmVnbm8yOworICBIT1NUX1dJREVfSU5UIG1vZGVfc2l6ZTsKKworICBpZiAo IUdFVF9NT0RFX1NJWkUgKG1vZGUpLmlzX2NvbnN0YW50KCZtb2RlX3NpemUp KQorICAgIGdjY191bnJlYWNoYWJsZSAoKTsKIAogICBmb3IgKHJlZ25vID0g YWFyY2g2NF9uZXh0X2NhbGxlZV9zYXZlIChzdGFydCwgbGltaXQpOwogICAg ICAgIHJlZ25vIDw9IGxpbWl0OwpAQCAtNDQyOCw3ICs0NDk1LDcgQEAgYWFy Y2g2NF9zYXZlX2NhbGxlZV9zYXZlcyAobWFjaGluZV9tb2RlIG1vZGUsIHBv bHlfaW50NjQgc3RhcnRfb2Zmc2V0LAogCiAgICAgICBpZiAocmVnbm8yIDw9 IGxpbWl0CiAJICAmJiAhY2Z1bi0+bWFjaGluZS0+cmVnX2lzX3dyYXBwZWRf c2VwYXJhdGVseVtyZWdubzJdCi0JICAmJiAoKGNmdW4tPm1hY2hpbmUtPmZy YW1lLnJlZ19vZmZzZXRbcmVnbm9dICsgVU5JVFNfUEVSX1dPUkQpCisJICAm JiAoKGNmdW4tPm1hY2hpbmUtPmZyYW1lLnJlZ19vZmZzZXRbcmVnbm9dICsg bW9kZV9zaXplKQogCSAgICAgID09IGNmdW4tPm1hY2hpbmUtPmZyYW1lLnJl Z19vZmZzZXRbcmVnbm8yXSkpCiAKIAl7CkBAIC00NDY5LDYgKzQ1MzYsOSBA QCBhYXJjaDY0X3Jlc3RvcmVfY2FsbGVlX3NhdmVzIChtYWNoaW5lX21vZGUg bW9kZSwKICAgdW5zaWduZWQgcmVnbm87CiAgIHVuc2lnbmVkIHJlZ25vMjsK ICAgcG9seV9pbnQ2NCBvZmZzZXQ7CisgIEhPU1RfV0lERV9JTlQgbW9kZV9z aXplOworCisgIGdjY19hc3NlcnQgKEdFVF9NT0RFX1NJWkUgKG1vZGUpLmlz X2NvbnN0YW50KCZtb2RlX3NpemUpKTsKIAogICBmb3IgKHJlZ25vID0gYWFy Y2g2NF9uZXh0X2NhbGxlZV9zYXZlIChzdGFydCwgbGltaXQpOwogICAgICAg IHJlZ25vIDw9IGxpbWl0OwpAQCAtNDQ5Miw3ICs0NTYyLDcgQEAgYWFyY2g2 NF9yZXN0b3JlX2NhbGxlZV9zYXZlcyAobWFjaGluZV9tb2RlIG1vZGUsCiAK ICAgICAgIGlmIChyZWdubzIgPD0gbGltaXQKIAkgICYmICFjZnVuLT5tYWNo aW5lLT5yZWdfaXNfd3JhcHBlZF9zZXBhcmF0ZWx5W3JlZ25vMl0KLQkgICYm ICgoY2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdub10gKyBV TklUU19QRVJfV09SRCkKKwkgICYmICgoY2Z1bi0+bWFjaGluZS0+ZnJhbWUu cmVnX29mZnNldFtyZWdub10gKyBtb2RlX3NpemUpCiAJICAgICAgPT0gY2Z1 bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdubzJdKSkKIAl7CiAJ ICBydHggcmVnMiA9IGdlbl9ydHhfUkVHIChtb2RlLCByZWdubzIpOwpAQCAt NDYyOSwxMyArNDY5OSwxNSBAQCBhYXJjaDY0X2NvbXBvbmVudHNfZm9yX2Ji IChiYXNpY19ibG9jayBiYikKICAgYml0bWFwIGluID0gREZfTElWRV9JTiAo YmIpOwogICBiaXRtYXAgZ2VuID0gJkRGX0xJVkVfQkJfSU5GTyAoYmIpLT5n ZW47CiAgIGJpdG1hcCBraWxsID0gJkRGX0xJVkVfQkJfSU5GTyAoYmIpLT5r aWxsOworICBib29sIHNpbWRfZnVuY3Rpb24gPSBhYXJjaDY0X3NpbWRfZGVj bF9wIChjZnVuLT5kZWNsKTsKIAogICBzYml0bWFwIGNvbXBvbmVudHMgPSBz Yml0bWFwX2FsbG9jIChMQVNUX1NBVkVEX1JFR05VTSArIDEpOwogICBiaXRt YXBfY2xlYXIgKGNvbXBvbmVudHMpOwogCiAgIC8qIEdQUnMgYXJlIHVzZWQg aW4gYSBiYiBpZiB0aGV5IGFyZSBpbiB0aGUgSU4sIEdFTiwgb3IgS0lMTCBz ZXRzLiAgKi8KICAgZm9yICh1bnNpZ25lZCByZWdubyA9IDA7IHJlZ25vIDw9 IExBU1RfU0FWRURfUkVHTlVNOyByZWdubysrKQotICAgIGlmICgoIWNhbGxf dXNlZF9yZWdzW3JlZ25vXSkKKyAgICBpZiAoKCFjYWxsX3VzZWRfcmVnc1ty ZWdub10KKwl8fCAoc2ltZF9mdW5jdGlvbiAmJiBGUF9TSU1EX1NBVkVEX1JF R05VTV9QIChyZWdubykpKQogICAgICAgICYmIChiaXRtYXBfYml0X3AgKGlu LCByZWdubykKIAkgICB8fCBiaXRtYXBfYml0X3AgKGdlbiwgcmVnbm8pCiAJ ICAgfHwgYml0bWFwX2JpdF9wIChraWxsLCByZWdubykpKQpAQCAtNDcwNyw4 ICs0Nzc5LDEwIEBAIGFhcmNoNjRfcHJvY2Vzc19jb21wb25lbnRzIChzYml0 bWFwIGNvbXBvbmVudHMsIGJvb2wgcHJvbG9ndWVfcCkKICAgd2hpbGUgKHJl Z25vICE9IGxhc3RfcmVnbm8pCiAgICAgewogICAgICAgLyogQUFQQ1M2NCBz ZWN0aW9uIDUuMS4yIHJlcXVpcmVzIG9ubHkgdGhlIGJvdHRvbSA2NCBiaXRz IHRvIGJlIHNhdmVkCi0JIHNvIERGbW9kZSBmb3IgdGhlIHZlY3RvciByZWdp c3RlcnMgaXMgZW5vdWdoLiAgKi8KLSAgICAgIG1hY2hpbmVfbW9kZSBtb2Rl ID0gR1BfUkVHTlVNX1AgKHJlZ25vKSA/IEVfREltb2RlIDogRV9ERm1vZGU7 CisJIHNvIERGbW9kZSBmb3IgdGhlIHZlY3RvciByZWdpc3RlcnMgaXMgZW5v dWdoLiAgRm9yIHNpbWQgZnVuY3Rpb25zCisgICAgICAgICB3ZSB3YW50IHRv IHNhdmUgdGhlIGVudGlyZSByZWdpc3Rlci4gICovCisgICAgICBtYWNoaW5l X21vZGUgbW9kZSA9IGFhcmNoNjRfcmVnX3NhdmVfbW9kZSAoY2Z1bi0+ZGVj bCwgcmVnbm8pOworICAgICAgCiAgICAgICBydHggcmVnID0gZ2VuX3J0eF9S RUcgKG1vZGUsIHJlZ25vKTsKICAgICAgIHBvbHlfaW50NjQgb2Zmc2V0ID0g Y2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdub107CiAgICAg ICBpZiAoIWZyYW1lX3BvaW50ZXJfbmVlZGVkKQpAQCAtNDczNyw2ICs0ODEx LDcgQEAgYWFyY2g2NF9wcm9jZXNzX2NvbXBvbmVudHMgKHNiaXRtYXAgY29t cG9uZW50cywgYm9vbCBwcm9sb2d1ZV9wKQogCSBtZXJnZWFibGUgd2l0aCB0 aGUgY3VycmVudCBvbmUgaW50byBhIHBhaXIuICAqLwogICAgICAgaWYgKCFz YXRpc2ZpZXNfY29uc3RyYWludF9VbXAgKG1lbSkKIAkgIHx8IEdQX1JFR05V TV9QIChyZWdubykgIT0gR1BfUkVHTlVNX1AgKHJlZ25vMikKKwkgIHx8IChh YXJjaDY0X3NpbWRfZGVjbF9wIChjZnVuLT5kZWNsKSAmJiAoRlBfUkVHTlVN X1AgKHJlZ25vKSkpCiAJICB8fCBtYXliZV9uZSAoKG9mZnNldDIgLSBjZnVu LT5tYWNoaW5lLT5mcmFtZS5yZWdfb2Zmc2V0W3JlZ25vXSksCiAJCSAgICAg ICBHRVRfTU9ERV9TSVpFIChtb2RlKSkpCiAJewpAQCAtNDgwOCw2ICs0ODgz LDI1IEBAIGFhcmNoNjRfc2V0X2hhbmRsZWRfY29tcG9uZW50cyAoc2JpdG1h cCBjb21wb25lbnRzKQogICAgICAgY2Z1bi0+bWFjaGluZS0+cmVnX2lzX3dy YXBwZWRfc2VwYXJhdGVseVtyZWdub10gPSB0cnVlOwogfQogCisvKiBSZXR1 cm4gMSBpZiB0aGUgcmVnaXN0ZXIgaXMgdXNlZCBieSB0aGUgZXBpbG9ndWUu ICBXZSBuZWVkIHRvIHNheSB0aGUKKyAgIHJldHVybiByZWdpc3RlciBpcyB1 c2VkLCBidXQgb25seSBhZnRlciBlcGlsb2d1ZSBnZW5lcmF0aW9uIGlzIGNv bXBsZXRlLgorICAgTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIHNpYmNhbGxz LCB0aGUgdmFsdWVzICJ1c2VkIGJ5IHRoZSBlcGlsb2d1ZSIgYXJlCisgICBj b25zaWRlcmVkIGxpdmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjYWxsZWQgZnVu Y3Rpb24uCisKKyAgIEZvciBTSU1EIGZ1bmN0aW9ucyB3ZSBuZWVkIHRvIHJl dHVybiAxIGZvciBGUCByZWdpc3RlcnMgdGhhdCBhcmUgc2F2ZWQgYW5kCisg ICByZXN0b3JlZCBieSBhIGZ1bmN0aW9uIGJ1dCBub3QgemVybyBpbiBjYWxs X3VzZWRfcmVncy4gIElmIHdlIGRvIG5vdCBkbyAKKyAgIHRoaXMgb3B0aW1p emF0aW9ucyBtYXkgcmVtb3ZlIHRoZSByZXN0b3JlIG9mIHRoZSByZWdpc3Rl ci4gICovCisKK2ludAorYWFyY2g2NF9lcGlsb2d1ZV91c2VzIChpbnQgcmVn bm8pCit7CisgIGlmIChlcGlsb2d1ZV9jb21wbGV0ZWQgJiYgKHJlZ25vKSA9 PSBMUl9SRUdOVU0pCisgICAgcmV0dXJuIDE7CisgIGlmIChhYXJjaDY0X3Np bWRfZGVjbF9wIChjZnVuLT5kZWNsKSAmJiBGUF9TSU1EX1NBVkVEX1JFR05V TV9QIChyZWdubykpCisgICAgcmV0dXJuIDE7CisgIHJldHVybiAwOworfQor CiAvKiBBZGQgYSBSRUdfQ0ZBX0VYUFJFU1NJT04gbm90ZSB0byBJTlNOIHRv IHNheSB0aGF0IHJlZ2lzdGVyIFJFRwogICAgaXMgc2F2ZWQgYXQgQkFTRSAr IE9GRlNFVC4gICovCiAKQEAgLTQ5NTksOCArNTA1MywxMiBAQCBhYXJjaDY0 X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKIAogICBhYXJjaDY0X3NhdmVfY2Fs bGVlX3NhdmVzIChESW1vZGUsIGNhbGxlZV9vZmZzZXQsIFIwX1JFR05VTSwg UjMwX1JFR05VTSwKIAkJCSAgICAgY2FsbGVlX2FkanVzdCAhPSAwIHx8IGVt aXRfZnJhbWVfY2hhaW4pOwotICBhYXJjaDY0X3NhdmVfY2FsbGVlX3NhdmVz IChERm1vZGUsIGNhbGxlZV9vZmZzZXQsIFYwX1JFR05VTSwgVjMxX1JFR05V TSwKLQkJCSAgICAgY2FsbGVlX2FkanVzdCAhPSAwIHx8IGVtaXRfZnJhbWVf Y2hhaW4pOworICBpZiAoYWFyY2g2NF9zaW1kX2RlY2xfcCAoY2Z1bi0+ZGVj bCkpCisgICAgYWFyY2g2NF9zYXZlX2NhbGxlZV9zYXZlcyAoVEZtb2RlLCBj YWxsZWVfb2Zmc2V0LCBWMF9SRUdOVU0sIFYzMV9SRUdOVU0sCisJCQkgICAg ICAgY2FsbGVlX2FkanVzdCAhPSAwIHx8IGVtaXRfZnJhbWVfY2hhaW4pOwor ICBlbHNlCisgICAgYWFyY2g2NF9zYXZlX2NhbGxlZV9zYXZlcyAoREZtb2Rl LCBjYWxsZWVfb2Zmc2V0LCBWMF9SRUdOVU0sIFYzMV9SRUdOVU0sCisJCQkg ICAgICAgY2FsbGVlX2FkanVzdCAhPSAwIHx8IGVtaXRfZnJhbWVfY2hhaW4p OwogICBhYXJjaDY0X3N1Yl9zcCAoaXAxX3J0eCwgaXAwX3J0eCwgZmluYWxf YWRqdXN0LCAhZnJhbWVfcG9pbnRlcl9uZWVkZWQpOwogfQogCkBAIC00OTg0 LDYgKzUwODIsMTkgQEAgYWFyY2g2NF91c2VfcmV0dXJuX2luc25fcCAodm9p ZCkKICAgcmV0dXJuIGtub3duX2VxIChjZnVuLT5tYWNoaW5lLT5mcmFtZS5m cmFtZV9zaXplLCAwKTsKIH0KIAorLyogUmV0dXJuIGZhbHNlIGZvciBub24t bGVhZiBTSU1EIGZ1bmN0aW9ucyBpbiBvcmRlciB0byBhdm9pZAorICAgc2hy aW5rLXdyYXBwaW5nIHRoZW0uICBEb2luZyB0aGlzIHdpbGwgbG9zZSB0aGUg bmVjZXNzYXJ5CisgICBzYXZlL3Jlc3RvcmUgb2YgRlAgcmVnaXN0ZXJzLiAg Ki8KKworYm9vbAorYWFyY2g2NF91c2Vfc2ltcGxlX3JldHVybl9pbnNuX3Ag KHZvaWQpCit7CisgIGlmIChhYXJjaDY0X3NpbWRfZGVjbF9wIChjZnVuLT5k ZWNsKSAmJiAhY3J0bC0+aXNfbGVhZikKKyAgICByZXR1cm4gZmFsc2U7CisK KyAgcmV0dXJuIHRydWU7Cit9CisKIC8qIEdlbmVyYXRlIHRoZSBlcGlsb2d1 ZSBpbnN0cnVjdGlvbnMgZm9yIHJldHVybmluZyBmcm9tIGEgZnVuY3Rpb24u CiAgICBUaGlzIGlzIGFsbW9zdCBleGFjdGx5IHRoZSByZXZlcnNlIG9mIHRo ZSBwcm9sb2cgc2VxdWVuY2UsIGV4Y2VwdAogICAgdGhhdCB3ZSBuZWVkIHRv IGluc2VydCBiYXJyaWVycyB0byBhdm9pZCBzY2hlZHVsaW5nIGxvYWRzIHRo YXQgcmVhZApAQCAtNTA0MSw4ICs1MTUyLDEyIEBAIGFhcmNoNjRfZXhwYW5k X2VwaWxvZ3VlIChib29sIGZvcl9zaWJjYWxsKQogCiAgIGFhcmNoNjRfcmVz dG9yZV9jYWxsZWVfc2F2ZXMgKERJbW9kZSwgY2FsbGVlX29mZnNldCwgUjBf UkVHTlVNLCBSMzBfUkVHTlVNLAogCQkJCWNhbGxlZV9hZGp1c3QgIT0gMCwg JmNmaV9vcHMpOwotICBhYXJjaDY0X3Jlc3RvcmVfY2FsbGVlX3NhdmVzIChE Rm1vZGUsIGNhbGxlZV9vZmZzZXQsIFYwX1JFR05VTSwgVjMxX1JFR05VTSwK LQkJCQljYWxsZWVfYWRqdXN0ICE9IDAsICZjZmlfb3BzKTsKKyAgaWYgKGFh cmNoNjRfc2ltZF9kZWNsX3AgKGNmdW4tPmRlY2wpKQorICAgIGFhcmNoNjRf cmVzdG9yZV9jYWxsZWVfc2F2ZXMgKFRGbW9kZSwgY2FsbGVlX29mZnNldCwg VjBfUkVHTlVNLCBWMzFfUkVHTlVNLAorCQkJCSAgY2FsbGVlX2FkanVzdCAh PSAwLCAmY2ZpX29wcyk7CisgIGVsc2UKKyAgICBhYXJjaDY0X3Jlc3RvcmVf Y2FsbGVlX3NhdmVzIChERm1vZGUsIGNhbGxlZV9vZmZzZXQsIFYwX1JFR05V TSwgVjMxX1JFR05VTSwKKwkJCQkgIGNhbGxlZV9hZGp1c3QgIT0gMCwgJmNm aV9vcHMpOwogCiAgIGlmIChuZWVkX2JhcnJpZXJfcCkKICAgICBlbWl0X2lu c24gKGdlbl9zdGFja190aWUgKHN0YWNrX3BvaW50ZXJfcnR4LCBzdGFja19w b2ludGVyX3J0eCkpOwpAQCAtNjI4Nyw3ICs2NDAyLDcgQEAgYWFyY2g2NF9m aXhlZF9jb25kaXRpb25fY29kZV9yZWdzICh1bnNpZ25lZCBpbnQgKnAxLCB1 bnNpZ25lZCBpbnQgKnAyKQogdm9pZAogYWFyY2g2NF9leHBhbmRfY2FsbCAo cnR4IHJlc3VsdCwgcnR4IG1lbSwgYm9vbCBzaWJjYWxsKQogewotICBydHgg Y2FsbCwgY2FsbGVlLCB0bXA7CisgIHJ0eCBjYWxsLCBjYWxsX2luc24sIGNh bGxlZSwgdG1wOwogICBydHZlYyB2ZWM7CiAgIG1hY2hpbmVfbW9kZSBtb2Rl OwogCkBAIC02MzA1LDcgKzY0MjAsOCBAQCBhYXJjaDY0X2V4cGFuZF9jYWxs IChydHggcmVzdWx0LCBydHggbWVtLCBib29sIHNpYmNhbGwpCiAgICAgICA6 ICFSRUdfUCAoY2FsbGVlKSkKICAgICBYRVhQIChtZW0sIDApID0gZm9yY2Vf cmVnIChtb2RlLCBjYWxsZWUpOwogCi0gIGNhbGwgPSBnZW5fcnR4X0NBTEwg KFZPSURtb2RlLCBtZW0sIGNvbnN0MF9ydHgpOworICBjYWxsX2luc24gPSBn ZW5fcnR4X0NBTEwgKFZPSURtb2RlLCBtZW0sIGNvbnN0MF9ydHgpOworICBj YWxsID0gY2FsbF9pbnNuOwogCiAgIGlmIChyZXN1bHQgIT0gTlVMTF9SVFgp CiAgICAgY2FsbCA9IGdlbl9ydHhfU0VUIChyZXN1bHQsIGNhbGwpOwpAQCAt MTgyMTAsNiArMTgzMjYsOSBAQCBhYXJjaDY0X2xpYmdjY19mbG9hdGluZ19t b2RlX3N1cHBvcnRlZF9wCiAjdW5kZWYgVEFSR0VUX1NFTEVDVF9FQVJMWV9S RU1BVF9NT0RFUwogI2RlZmluZSBUQVJHRVRfU0VMRUNUX0VBUkxZX1JFTUFU X01PREVTIGFhcmNoNjRfc2VsZWN0X2Vhcmx5X3JlbWF0X21vZGVzCiAKKyN1 bmRlZiBUQVJHRVRfQVRUUklCVVRFX1RBQkxFCisjZGVmaW5lIFRBUkdFVF9B VFRSSUJVVEVfVEFCTEUgYWFyY2g2NF9hdHRyaWJ1dGVfdGFibGUKKwogI2lm IENIRUNLSU5HX1AKICN1bmRlZiBUQVJHRVRfUlVOX1RBUkdFVF9TRUxGVEVT VFMKICNkZWZpbmUgVEFSR0VUX1JVTl9UQVJHRVRfU0VMRlRFU1RTIHNlbGZ0 ZXN0OjphYXJjaDY0X3J1bl9zZWxmdGVzdHMKZGlmZiAtLWdpdCBhL2djYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0LmggYi9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC5oCmluZGV4IGMxMjE4NTAuLjg5ZjhlMDYgMTAwNjQ0Ci0tLSBh L2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmgKKysrIGIvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuaApAQCAtMzkyLDEzICszOTIsNyBAQCBleHRl cm4gdW5zaWduZWQgYWFyY2g2NF9hcmNoaXRlY3R1cmVfdmVyc2lvbjsKICAg ICBWX0FMSUFTRVMoMjgpLCBWX0FMSUFTRVMoMjkpLCBWX0FMSUFTRVMoMzAp LCBWX0FMSUFTRVMoMzEpICBcCiAgIH0KIAotLyogU2F5IHRoYXQgdGhlIHJl dHVybiBhZGRyZXNzIHJlZ2lzdGVyIGlzIHVzZWQgYnkgdGhlIGVwaWxvZ3Vl LCBidXQgb25seSBhZnRlcgotICAgZXBpbG9ndWUgZ2VuZXJhdGlvbiBpcyBj b21wbGV0ZS4gIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBzaWJjYWxscywg dGhlCi0gICB2YWx1ZXMgInVzZWQgYnkgdGhlIGVwaWxvZ3VlIiBhcmUgY29u c2lkZXJlZCBsaXZlIGF0IHRoZSBzdGFydCBvZiB0aGUgY2FsbGVkCi0gICBm dW5jdGlvbi4gICovCi0KLSNkZWZpbmUgRVBJTE9HVUVfVVNFUyhSRUdOTykg XAotICAoZXBpbG9ndWVfY29tcGxldGVkICYmIChSRUdOTykgPT0gTFJfUkVH TlVNKQorI2RlZmluZSBFUElMT0dVRV9VU0VTKFJFR05PKSAoYWFyY2g2NF9l cGlsb2d1ZV91c2VzIChSRUdOTykpCiAKIC8qIEVYSVRfSUdOT1JFX1NUQUNL IHNob3VsZCBiZSBub256ZXJvIGlmLCB3aGVuIHJldHVybmluZyBmcm9tIGEg ZnVuY3Rpb24sCiAgICB0aGUgc3RhY2sgcG9pbnRlciBkb2VzIG5vdCBtYXR0 ZXIuICBUaGlzIGlzIG9ubHkgdHJ1ZSBpZiB0aGUgZnVuY3Rpb24KQEAgLTUw Myw2ICs0OTcsOCBAQCBleHRlcm4gdW5zaWduZWQgYWFyY2g2NF9hcmNoaXRl Y3R1cmVfdmVyc2lvbjsKICNkZWZpbmUgUFJfTE9fUkVHTlVNX1AoUkVHTk8p XAogICAoKCh1bnNpZ25lZCkgKFJFR05PIC0gUDBfUkVHTlVNKSkgPD0gKFA3 X1JFR05VTSAtIFAwX1JFR05VTSkpCiAKKyNkZWZpbmUgRlBfU0lNRF9TQVZF RF9SRUdOVU1fUChSRUdOTykJCQlcCisgICgoKHVuc2lnbmVkKSAoUkVHTk8g LSBWOF9SRUdOVU0pKSA8PSAoVjIzX1JFR05VTSAtIFY4X1JFR05VTSkpCiAM CiAvKiBSZWdpc3RlciBhbmQgY29uc3RhbnQgY2xhc3Nlcy4gICovCiAKZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQKaW5kZXggZTljMTZmOS4uZDhk NjFiMSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQu bWQKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQKQEAgLTYz LDYgKzYzLDcgQEAKICAgICAoVjE1X1JFR05VTQkJNDcpCiAgICAgKFYxNl9S RUdOVU0JCTQ4KQogICAgIChWMjBfUkVHTlVNCQk1MikKKyAgICAoVjIzX1JF R05VTQkJNTUpCiAgICAgKFYyNF9SRUdOVU0JCTU2KQogICAgIChWMjhfUkVH TlVNCQk2MCkKICAgICAoVjMxX1JFR05VTQkJNjMpCkBAIC02NzcsNyArNjc4 LDEzIEBACiAgICIiCiApCiAKLShkZWZpbmVfaW5zbiAic2ltcGxlX3JldHVy biIKKyhkZWZpbmVfZXhwYW5kICJzaW1wbGVfcmV0dXJuIgorICBbKHNpbXBs ZV9yZXR1cm4pXQorICAiYWFyY2g2NF91c2Vfc2ltcGxlX3JldHVybl9pbnNu X3AgKCkiCisgICIiCispCisKKyhkZWZpbmVfaW5zbiAiKnNpbXBsZV9yZXR1 cm4iCiAgIFsoc2ltcGxlX3JldHVybildCiAgICIiCiAgICJyZXQiCkBAIC0x MzQ2LDYgKzEzNTMsMjEgQEAKICAgIChzZXRfYXR0ciAiZnAiICIqLHllcyIp XQogKQogCisoZGVmaW5lX2luc24gImxvYWRfcGFpcl9kd190ZnRmIgorICBb KHNldCAobWF0Y2hfb3BlcmFuZDpURiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXciKQorCShtYXRjaF9vcGVyYW5kOlRGIDEgImFhcmNoNjRfbWVtX3BhaXJf b3BlcmFuZCIgIlVtcCIpKQorICAgKHNldCAobWF0Y2hfb3BlcmFuZDpURiAy ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXciKQorCShtYXRjaF9vcGVyYW5kOlRG IDMgIm1lbW9yeV9vcGVyYW5kIiAibSIpKV0KKyAgICJUQVJHRVRfU0lNRCAm JgorICAgIHJ0eF9lcXVhbF9wIChYRVhQIChvcGVyYW5kc1szXSwgMCksCisJ CSBwbHVzX2NvbnN0YW50IChQbW9kZSwKKwkJCQlYRVhQIChvcGVyYW5kc1sx XSwgMCksCisJCQkJR0VUX01PREVfU0laRSAoVEZtb2RlKSkpIgorICAibGRw XFx0JXEwLCAlcTIsICUxIgorICBbKHNldF9hdHRyICJ0eXBlIiAibmVvbl9s ZHBfcSIpCisgICAoc2V0X2F0dHIgImZwIiAieWVzIildCispCisKIDs7IE9w ZXJhbmRzIDAgYW5kIDIgYXJlIHRpZWQgdG9nZXRoZXIgYnkgdGhlIGZpbmFs IGNvbmRpdGlvbjsgc28gd2UgYWxsb3cKIDs7IGZhaXJseSBsYXggY2hlY2tp bmcgb24gdGhlIHNlY29uZCBtZW1vcnkgb3BlcmF0aW9uLgogKGRlZmluZV9p bnNuICJzdG9yZV9wYWlyX3N3XzxTWDptb2RlPjxTWDI6bW9kZT4iCkBAIC0x MzgxLDYgKzE0MDMsMjEgQEAKICAgIChzZXRfYXR0ciAiZnAiICIqLHllcyIp XQogKQogCisoZGVmaW5lX2luc24gInN0b3JlX3BhaXJfZHdfdGZ0ZiIKKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VEYgMCAiYWFyY2g2NF9tZW1fcGFpcl9v cGVyYW5kIiAiPVVtcCIpCisJKG1hdGNoX29wZXJhbmQ6VEYgMSAicmVnaXN0 ZXJfb3BlcmFuZCIgInciKSkKKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6VEYg MiAibWVtb3J5X29wZXJhbmQiICI9bSIpCisJKG1hdGNoX29wZXJhbmQ6VEYg MyAicmVnaXN0ZXJfb3BlcmFuZCIgInciKSldCisgICAiVEFSR0VUX1NJTUQg JiYKKyAgICBydHhfZXF1YWxfcCAoWEVYUCAob3BlcmFuZHNbMl0sIDApLAor CQkgcGx1c19jb25zdGFudCAoUG1vZGUsCisJCQkJWEVYUCAob3BlcmFuZHNb MF0sIDApLAorCQkJCUdFVF9NT0RFX1NJWkUgKFRGbW9kZSkpKSIKKyAgInN0 cFxcdCVxMSwgJXEzLCAlMCIKKyAgWyhzZXRfYXR0ciAidHlwZSIgIm5lb25f c3RwX3EiKQorICAgKHNldF9hdHRyICJmcCIgInllcyIpXQorKQorCiA7OyBM b2FkIHBhaXIgd2l0aCBwb3N0LWluZGV4IHdyaXRlYmFjay4gIFRoaXMgaXMg cHJpbWFyaWx5IHVzZWQgaW4gZnVuY3Rpb24KIDs7IGVwaWxvZ3Vlcy4KIChk ZWZpbmVfaW5zbiAibG9hZHdiX3BhaXI8R1BJOm1vZGU+XzxQOm1vZGU+IgpA QCAtMTQxMyw2ICsxNDUwLDIxIEBACiAgIFsoc2V0X2F0dHIgInR5cGUiICJu ZW9uX2xvYWQxXzJyZWciKV0KICkKIAorKGRlZmluZV9pbnNuICJsb2Fkd2Jf cGFpcjxUWDptb2RlPl88UDptb2RlPiIKKyAgWyhwYXJhbGxlbAorICAgIFso c2V0IChtYXRjaF9vcGVyYW5kOlAgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1r IikKKyAgICAgICAgICAocGx1czpQIChtYXRjaF9vcGVyYW5kOlAgMSAicmVn aXN0ZXJfb3BlcmFuZCIgIjAiKQorICAgICAgICAgICAgICAgICAgKG1hdGNo X29wZXJhbmQ6UCA0ICJhYXJjaDY0X21lbV9wYWlyX29mZnNldCIgIm4iKSkp CisgICAgIChzZXQgKG1hdGNoX29wZXJhbmQ6VFggMiAicmVnaXN0ZXJfb3Bl cmFuZCIgIj13IikKKyAgICAgICAgICAobWVtOlRYIChtYXRjaF9kdXAgMSkp KQorICAgICAoc2V0IChtYXRjaF9vcGVyYW5kOlRYIDMgInJlZ2lzdGVyX29w ZXJhbmQiICI9dyIpCisgICAgICAgICAgKG1lbTpUWCAocGx1czpQIChtYXRj aF9kdXAgMSkKKyAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlAg NSAiY29uc3RfaW50X29wZXJhbmQiICJuIikpKSldKV0KKyAgIlRBUkdFVF9T SU1EICYmIElOVFZBTCAob3BlcmFuZHNbNV0pID09IEdFVF9NT0RFX1NJWkUg KDxUWDpNT0RFPm1vZGUpIgorICAibGRwXFx0JXEyLCAlcTMsIFslMV0sICU0 IgorICBbKHNldF9hdHRyICJ0eXBlIiAibmVvbl9sZHBfcSIpXQorKQorCiA7 OyBTdG9yZSBwYWlyIHdpdGggcHJlLWluZGV4IHdyaXRlYmFjay4gIFRoaXMg aXMgcHJpbWFyaWx5IHVzZWQgaW4gZnVuY3Rpb24KIDs7IHByb2xvZ3Vlcy4K IChkZWZpbmVfaW5zbiAic3RvcmV3Yl9wYWlyPEdQSTptb2RlPl88UDptb2Rl PiIKQEAgLTE0NDcsNiArMTQ5OSwyMyBAQAogICBbKHNldF9hdHRyICJ0eXBl IiAibmVvbl9zdG9yZTFfMnJlZzxxPiIpXQogKQogCisoZGVmaW5lX2luc24g InN0b3Jld2JfcGFpcjxUWDptb2RlPl88UDptb2RlPiIKKyAgWyhwYXJhbGxl bAorICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlAgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIj0mayIpCisgICAgICAgICAgKHBsdXM6UCAobWF0Y2hfb3BlcmFu ZDpQIDEgInJlZ2lzdGVyX29wZXJhbmQiICIwIikKKyAgICAgICAgICAgICAg ICAgIChtYXRjaF9vcGVyYW5kOlAgNCAiYWFyY2g2NF9tZW1fcGFpcl9vZmZz ZXQiICJuIikpKQorICAgICAoc2V0IChtZW06VFggKHBsdXM6UCAobWF0Y2hf ZHVwIDApCisgICAgICAgICAgICAgICAgICAobWF0Y2hfZHVwIDQpKSkKKyAg ICAgICAgICAobWF0Y2hfb3BlcmFuZDpUWCAyICJyZWdpc3Rlcl9vcGVyYW5k IiAidyIpKQorICAgICAoc2V0IChtZW06VFggKHBsdXM6UCAobWF0Y2hfZHVw IDApCisgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpQIDUgImNv bnN0X2ludF9vcGVyYW5kIiAibiIpKSkKKyAgICAgICAgICAobWF0Y2hfb3Bl cmFuZDpUWCAzICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKV0pXQorICAiVEFS R0VUX1NJTUQgJiYKKyAgIElOVFZBTCAob3BlcmFuZHNbNV0pID09IElOVFZB TCAob3BlcmFuZHNbNF0pICsgR0VUX01PREVfU0laRSAoPFRYOk1PREU+bW9k ZSkiCisgICJzdHBcXHQlcTIsICVxMywgWyUwLCAlNF0hIgorICBbKHNldF9h dHRyICJ0eXBlIiAibmVvbl9zdHBfcSIpXQorKQorCiA7OyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiA7OyBTaWduL1plcm8gZXh0ZW5zaW9uCiA7OyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCg== --=-ebR0E33sLd/Ze+zjyq89 Content-Disposition: attachment; filename="gcc-vect-abi-test.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="gcc-vect-abi-test.patch"; charset="UTF-8" Content-length: 12412 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3RvcnR1cmUvYWFyY2g2NC10b3J0dXJlLmV4cCBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3RvcnR1cmUvYWFyY2g2NC10b3J0dXJlLmV4 cAppbmRleCBlNjlkZTI5Li4yMmYwOGZmIDEwMDY0NAotLS0gYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC90b3J0dXJlL2FhcmNoNjQtdG9y dHVyZS5leHAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvdG9ydHVyZS9hYXJjaDY0LXRvcnR1cmUuZXhwCkBAIC0wLDAgKzEsNDEg QEAKKyMgICBDb3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMg CisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorIyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkcz LiAgSWYgbm90IHNlZQorIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisKKyMgR0NDIHRlc3RzdWl0ZSB0aGF0IHVzZXMgdGhlIGBnY2MtZGcu ZXhwJyBkcml2ZXIsIGxvb3Bpbmcgb3ZlcgorIyBvcHRpbWl6YXRpb24gb3B0 aW9ucy4KKworIyBFeGl0IGltbWVkaWF0ZWx5IGlmIHRoaXMgaXNuJ3QgYSBB YXJjaDY0IHRhcmdldC4KK2lmIHsgIVtpc3RhcmdldCBhYXJjaDY0Ki0qLSpd IH0gdGhlbiB7CisgIHJldHVybgorfQorCisjIExvYWQgc3VwcG9ydCBwcm9j cy4KK2xvYWRfbGliIGdjYy1kZy5leHAKKworIyBJZiBhIHRlc3RjYXNlIGRv ZXNuJ3QgaGF2ZSBzcGVjaWFsIG9wdGlvbnMsIHVzZSB0aGVzZS4KK2dsb2Jh bCBERUZBVUxUX0NGTEFHUworaWYgIVtpbmZvIGV4aXN0cyBERUZBVUxUX0NG TEFHU10gdGhlbiB7CisgICAgc2V0IERFRkFVTFRfQ0ZMQUdTICIgLWFuc2kg LXBlZGFudGljLWVycm9ycyIKK30KKworIyBJbml0aWFsaXplIGBkZycuCitk Zy1pbml0CisKKyMgTWFpbiBsb29wLgorZ2NjLWRnLXJ1bnRlc3QgW2xzb3J0 IFtnbG9iIC1ub2NvbXBsYWluICRzcmNkaXIvJHN1YmRpci8qLlxbY1NcXV1d ICIiICRERUZBVUxUX0NGTEFHUworCisjIEFsbCBkb25lLgorZGctZmluaXNo CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC90b3J0dXJlL3NpbWQtYWJpLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmktMS5jCmluZGV4IGU2OWRl MjkuLmUxMTU4MGEgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmktMS5jCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmkt MS5jCkBAIC0wLDAgKzEsNDEgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKGFhcmNoNjRfdmVjdG9yX3Bjcykp CitmICh2b2lkKQoreworICAvKiBDbG9iYmVyIGFsbCBmcC9zaW1kIHJlZ3Mg YW5kIHZlcmlmeSB0aGF0IHRoZSBjb3JyZWN0IG9uZXMgYXJlIHNhdmVkCisg ICAgIGFuZCByZXN0b3JlZCBpbiB0aGUgcHJvbG9ndWUgYW5kIGVwaWxvZ3Vl IG9mIGEgU0lNRCBmdW5jdGlvbi4gKi8KKyAgX19hc21fXyBfX3ZvbGF0aWxl X18gKCIiIDo6OiAgInEwIiwgICJxMSIsICAicTIiLCAgInEzIik7CisgIF9f YXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogICJxNCIsICAicTUiLCAgInE2 IiwgICJxNyIpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOjo6ICAi cTgiLCAgInE5IiwgInExMCIsICJxMTEiKTsKKyAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKCIiIDo6OiAicTEyIiwgInExMyIsICJxMTQiLCAicTE1Iik7Cisg IF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogInExNiIsICJxMTciLCAi cTE4IiwgInExOSIpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOjo6 ICJxMjAiLCAicTIxIiwgInEyMiIsICJxMjMiKTsKKyAgX19hc21fXyBfX3Zv bGF0aWxlX18gKCIiIDo6OiAicTI0IiwgInEyNSIsICJxMjYiLCAicTI3Iik7 CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogInEyOCIsICJxMjki LCAicTMwIiwgInEzMSIpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIlxbIFx0XF1zdHBcdHE4LCBxOSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1zdHBcdHExMCwgcTEx IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsg XHRcXXN0cFx0cTEyLCBxMTMiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJcWyBcdFxdc3RwXHRxMTQsIHExNSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1zdHBcdHEx NiwgcTE3IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAiXFsgXHRcXXN0cFx0cTE4LCBxMTkiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJcWyBcdFxdc3RwXHRxMjAsIHEyMSIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1z dHBcdHEyMiwgcTIzIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAiXFsgXHRcXWxkcFx0cTgsIHE5IiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXWxkcFx0cTEwLCBxMTEi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJcWyBc dFxdbGRwXHRxMTIsIHExMyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIlxbIFx0XF1sZHBcdHExNCwgcTE1IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXWxkcFx0cTE2 LCBxMTciIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJcWyBcdFxdbGRwXHRxMTgsIHExOSIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1sZHBcdHEyMCwgcTIxIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXWxk cFx0cTIyLCBxMjMiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCAiXFsgXHRcXXN0cFx0cVxbMDM0NTY3XF0iIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiXFsgXHRcXWxk cFx0cVxbMDM0NTY3XF0iIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCAiXFsgXHRcXXN0cFx0cTJcWzQ1Njc4OVxdIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIlxbIFx0 XF1sZHBcdHEyXFs0NTY3ODlcXSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90ICJcWyBcdFxdc3RwXHRkIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIlxbIFx0XF1sZHBc dGQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAiXFsgXHRcXXN0clx0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3QgIlxbIFx0XF1sZHJcdCIgfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC90b3J0dXJl L3NpbWQtYWJpLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3RvcnR1cmUvc2ltZC1hYmktMi5jCmluZGV4IGU2OWRlMjkuLmVjYzYw ZDAgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3RvcnR1cmUvc2ltZC1hYmktMi5jCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmktMi5jCkBAIC0w LDAgKzEsMzMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisKK3ZvaWQK K2YgKHZvaWQpCit7CisgIC8qIENsb2JiZXIgYWxsIGZwL3NpbWQgcmVncyBh bmQgdmVyaWZ5IHRoYXQgdGhlIGNvcnJlY3Qgb25lcyBhcmUgc2F2ZWQKKyAg ICAgYW5kIHJlc3RvcmVkIGluIHRoZSBwcm9sb2d1ZSBhbmQgZXBpbG9ndWUg b2YgYSBTSU1EIGZ1bmN0aW9uLiAqLworICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoIiIgOjo6ICAicTAiLCAgInExIiwgICJxMiIsICAicTMiKTsKKyAgX19h c21fXyBfX3ZvbGF0aWxlX18gKCIiIDo6OiAgInE0IiwgICJxNSIsICAicTYi LCAgInE3Iik7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogICJx OCIsICAicTkiLCAicTEwIiwgInExMSIpOworICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoIiIgOjo6ICJxMTIiLCAicTEzIiwgInExNCIsICJxMTUiKTsKKyAg X19hc21fXyBfX3ZvbGF0aWxlX18gKCIiIDo6OiAicTE2IiwgInExNyIsICJx MTgiLCAicTE5Iik7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6Ojog InEyMCIsICJxMjEiLCAicTIyIiwgInEyMyIpOworICBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoIiIgOjo6ICJxMjQiLCAicTI1IiwgInEyNiIsICJxMjciKTsK KyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIiIDo6OiAicTI4IiwgInEyOSIs ICJxMzAiLCAicTMxIik7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAiXFsgXHRcXXN0cFx0ZDgsIGQ5IiB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXXN0cFx0ZDEwLCBkMTEi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJcWyBc dFxdc3RwXHRkMTIsIGQxMyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIlxbIFx0XF1zdHBcdGQxNCwgZDE1IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXWxkcFx0ZDgs IGQ5IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi XFsgXHRcXWxkcFx0ZDEwLCBkMTEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJcWyBcdFxdbGRwXHRkMTIsIGQxMyIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1sZHBc dGQxNCwgZDE1IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci1ub3QgIlxbIFx0XF1zdHBcdHEiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiXFsgXHRcXWxkcFx0cSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJcWyBcdFxd c3RwXHRxXFswMTIzNDU2N1xdIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci1ub3QgIlxbIFx0XF1sZHBcdHFcWzAxMjM0NTY3XF0i IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAi XFsgXHRcXXN0cFx0cTFcWzY3ODlcXSIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItbm90ICJcWyBcdFxdbGRwXHRxMVxbNjc4OVxd IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qg IlxbIFx0XF1zdHJcdCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90ICJcWyBcdFxdbGRyXHQiIH0gfSAqLwpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvdG9ydHVyZS9z aW1kLWFiaS0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC90b3J0dXJlL3NpbWQtYWJpLTMuYwppbmRleCBlNjlkZTI5Li5kNzkyNmQz IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC90b3J0dXJlL3NpbWQtYWJpLTMuYworKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTMuYwpAQCAtMCww ICsxLDM0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworCitleHRlcm4g dm9pZCBnICh2b2lkKTsKKwordm9pZCBfX2F0dHJpYnV0ZV9fICgoYWFyY2g2 NF92ZWN0b3JfcGNzKSkKK2YgKHZvaWQpCit7CisJZygpOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1zdHBcdHE4LCBx OSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxb IFx0XF1zdHBcdHExMCwgcTExIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAiXFsgXHRcXXN0cFx0cTEyLCBxMTMiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJcWyBcdFxdc3RwXHRx MTQsIHExNSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgIlxbIFx0XF1zdHBcdHExNiwgcTE3IiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXXN0cFx0cTE4LCBxMTkiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJcWyBcdFxd c3RwXHRxMjAsIHEyMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIlxbIFx0XF1zdHBcdHEyMiwgcTIzIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXWxkcFx0cTgsIHE5 IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsg XHRcXWxkcFx0cTEwLCBxMTEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJcWyBcdFxdbGRwXHRxMTIsIHExMyIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1sZHBcdHEx NCwgcTE1IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAiXFsgXHRcXWxkcFx0cTE2LCBxMTciIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJcWyBcdFxdbGRwXHRxMTgsIHExOSIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1s ZHBcdHEyMCwgcTIxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAiXFsgXHRcXWxkcFx0cTIyLCBxMjMiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiXFsgXHRcXXN0cFx0cVxb MDM0NTY3XF0iIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCAiXFsgXHRcXWxkcFx0cVxbMDM0NTY3XF0iIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiXFsgXHRcXXN0cFx0 cTJcWzQ1Njc4OVxdIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci1ub3QgIlxbIFx0XF1sZHBcdHEyXFs0NTY3ODlcXSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJcWyBcdFxd c3RwXHRkIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3QgIlxbIFx0XF1sZHBcdGQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCAiXFsgXHRcXXN0clx0IiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIlxbIFx0XF1sZHJc dCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTQuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmktNC5jCmlu ZGV4IGU2OWRlMjkuLmUzOTk2OTAgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmktNC5jCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3RvcnR1cmUv c2ltZC1hYmktNC5jCkBAIC0wLDAgKzEsMzQgQEAKKy8qIGRnLWRvIHJ1biAq LworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1zdGQ9Yzk5IiB9ICAq LworCisKKworLyogVGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRo ZSBjYWxjdWxhdGlvbnMgaGVyZSwgdGhpcyBpcyBqdXN0CisgICBhIHRlc3Qg dGhhdCBjYW4gYmUgY29tcGlsZWQgYW5kIHJ1bi4gICovCisKK2V4dGVybiB2 b2lkIGFib3J0ICh2b2lkKTsKKworX19GbG9hdDY0eDJfdCBfX2F0dHJpYnV0 ZV9fICgobm9pbmxpbmUsIGFhcmNoNjRfdmVjdG9yX3BjcykpCitmb28oX19G bG9hdDY0eDJfdCBhLCBfX0Zsb2F0NjR4Ml90IGIsIF9fRmxvYXQ2NHgyX3Qg YywKKyAgICBfX0Zsb2F0NjR4Ml90IGQsIF9fRmxvYXQ2NHgyX3QgZSwgX19G bG9hdDY0eDJfdCBmLAorICAgIF9fRmxvYXQ2NHgyX3QgZywgX19GbG9hdDY0 eDJfdCBoLCBfX0Zsb2F0NjR4Ml90IGkpCit7CisJX19GbG9hdDY0eDJfdCB3 LCB4LCB5LCB6OworCXcgPSBhICsgYiAqIGM7CisJeCA9IGQgKyBlICogZjsK Kwl5ID0gZyArIGggKiBpOworCXJldHVybiB3ICsgeCAqIHk7Cit9CisKKwor aW50IG1haW4oKQoreworCV9fRmxvYXQ2NHgyX3QgYSwgYiwgYywgZDsKKwlh ID0gKF9fRmxvYXQ2NHgyX3QpIHsgMS4wLCAyLjAgfTsKKwliID0gKF9fRmxv YXQ2NHgyX3QpIHsgMy4wLCA0LjAgfTsKKwljID0gKF9fRmxvYXQ2NHgyX3Qp IHsgNS4wLCA2LjAgfTsKKwlkID0gZm9vIChhLCBiLCBjLCAoYStiKSwgKGIr YyksIChhK2MpLCAoYS1iKSwgKGItYyksIChhLWMpKSArIGEgKyBiICsgYzsK KwlpZiAoZFswXSAhPSAzMzcuMCB8fCBkWzFdICE9IDU1NC4wKQorCQlhYm9y dCAoKTsKKwlyZXR1cm4gMDsKK30K --=-ebR0E33sLd/Ze+zjyq89--