From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29035 invoked by alias); 6 Jun 2018 17:14:13 -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 28983 invoked by uid 89); 6 Jun 2018 17:14:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=utilized, Hx-languages-length:1410, henderson, Henderson X-HELO: EUR02-HE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr10080.outbound.protection.outlook.com (HELO EUR02-HE1-obe.outbound.protection.outlook.com) (40.107.1.80) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 06 Jun 2018 17:14:10 +0000 Received: from VI1PR08MB3053.eurprd08.prod.outlook.com (52.133.14.146) by VI1PR08MB0782.eurprd08.prod.outlook.com (10.164.93.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.12; Wed, 6 Jun 2018 17:14:04 +0000 Received: from VI1PR08MB3053.eurprd08.prod.outlook.com ([fe80::a9c4:b7a:1ada:34a2]) by VI1PR08MB3053.eurprd08.prod.outlook.com ([fe80::a9c4:b7a:1ada:34a2%5]) with mapi id 15.20.0841.011; Wed, 6 Jun 2018 17:14:04 +0000 From: Michael Collison To: GCC Patches CC: nd Subject: [PATCH][Aarch64] v2: Arithmetic overflow common functions [Patch 1/4] Date: Wed, 06 Jun 2018 17:14:00 -0000 Message-ID: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Michael.Collison@arm.com; x-ms-publictraffictype: Email x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-ms-traffictypediagnostic: VI1PR08MB0782: nodisclaimer: True x-exchange-antispam-report-test: UriScan:(180628864354917)(22074186197030)(183786458502308); x-ms-exchange-senderadcheck: 1 x-forefront-prvs: 06952FC175 received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_002_VI1PR08MB3053A847F7701FCC505D396895650VI1PR08MB3053eurp_" MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 1da0afd9-709e-43fa-a300-08d5cbd0e794 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1da0afd9-709e-43fa-a300-08d5cbd0e794 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2018 17:14:04.0676 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB0782 X-SW-Source: 2018-06/txt/msg00319.txt.bz2 --_002_VI1PR08MB3053A847F7701FCC505D396895650VI1PR08MB3053eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 1357 This is a respin of a AArch64 patch that adds support for builtin arithmeti= c overflow operations. This update separates the patch into multiple pieces= and addresses comments made by Richard Earnshaw here: https://gcc.gnu.org/ml/gcc-patches/2017-07/msg00249.html Original patch and motivation for patch here: https://gcc.gnu.org/ml/gcc-patches/2017-05/msg01512.html This patch primarily contains common functions in aarch64.c for generating = TImode scratch registers, and common rtl functions utilized by the overflow patterns in aarch64.md. I= n addition a new mode representing overflow CC_Vmode is introduced. Bootstrapped and tested on aarch64-linux-gnu. Okay for trunk? 2018-05-31 Michael Collison Richard Henderson * config/aarch64/aarch64-modes.def (CC_V): New. * config/aarch64/aarch64-protos.h (aarch64_add_128bit_scratch_regs): Declare (aarch64_subv_128bit_scratch_regs): Declare. (aarch64_expand_subvti): Declare. (aarch64_gen_unlikely_cbranch): Declare * config/aarch64/aarch64.c (aarch64_select_cc_mode): Test for signed overflow using CC_Vmode. (aarch64_get_condition_code_1): Handle CC_Vmode. (aarch64_gen_unlikely_cbranch): New function. (aarch64_add_128bit_scratch_regs): New function. (aarch64_subv_128bit_scratch_regs): New function. (aarch64_expand_subvti): New function. --_002_VI1PR08MB3053A847F7701FCC505D396895650VI1PR08MB3053eurp_ Content-Type: application/octet-stream; name="gnutools-6308-pt1.patch" Content-Description: gnutools-6308-pt1.patch Content-Disposition: attachment; filename="gnutools-6308-pt1.patch"; size=8062; creation-date="Wed, 06 Jun 2018 17:13:38 GMT"; modification-date="Wed, 06 Jun 2018 17:04:37 GMT" Content-Transfer-Encoding: base64 Content-length: 10932 RnJvbSA4MTgwMmYwODdkMGExNWQ4ZjEwODE5MTdlYmU3NWFiYTcwODk3ZWM4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIENvbGxp c29uIDxtaWNoYWVsLmNvbGxpc29uQGFybS5jb20+CkRhdGU6IEZyaSwgMSBK dW4gMjAxOCAwMDoxMToxNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtQQVRD SCAxLzRdIEdudXRvb2xzIDYzMDggY29tbW9uIGZpbGVzCgotLS0KIGdjYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0LW1vZGVzLmRlZiB8ICAgMSArCiBnY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1wcm90b3MuaCAgfCAgMTMgKysrLQog Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYyAgICAgICAgIHwgMTQxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo YW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbW9kZXMuZGVm IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbW9kZXMuZGVmCmluZGV4 IDFhMDViNmMuLmVhN2VjYzIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LW1vZGVzLmRlZgorKysgYi9nY2MvY29uZmlnL2FhcmNo NjQvYWFyY2g2NC1tb2Rlcy5kZWYKQEAgLTI0LDYgKzI0LDcgQEAgQ0NfTU9E RSAoQ0NfU1dQKTsKIENDX01PREUgKENDX05aKTsgICAgLyogT25seSBOIGFu ZCBaIGJpdHMgb2YgY29uZGl0aW9uIGZsYWdzIGFyZSB2YWxpZC4gICovCiBD Q19NT0RFIChDQ19aKTsgICAgIC8qIE9ubHkgWiBiaXQgb2YgY29uZGl0aW9u IGZsYWdzIGlzIHZhbGlkLiAgKi8KIENDX01PREUgKENDX0MpOyAgICAgLyog T25seSBDIGJpdCBvZiBjb25kaXRpb24gZmxhZ3MgaXMgdmFsaWQuICAqLwor Q0NfTU9ERSAoQ0NfVik7ICAgICAvKiBPbmx5IFYgYml0IG9mIGNvbmRpdGlv biBmbGFncyBpcyB2YWxpZC4gICovCiAKIC8qIEhhbGYtcHJlY2lzaW9uIGZs b2F0aW5nIHBvaW50IGZvciBfX2ZwMTYuICAqLwogRkxPQVRfTU9ERSAoSEYs IDIsIDApOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNo NjQtcHJvdG9zLmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1wcm90 b3MuaAppbmRleCA0ZWE1MGFjLi4wOTBlZDJjIDEwMDY0NAotLS0gYS9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1wcm90b3MuaAorKysgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1wcm90b3MuaApAQCAtNDY3LDYgKzQ2Nywx NiBAQCB2b2lkIGFhcmNoNjRfcmVsYXlvdXRfc2ltZF90eXBlcyAodm9pZCk7 CiB2b2lkIGFhcmNoNjRfcmVzZXRfcHJldmlvdXNfZm5kZWNsICh2b2lkKTsK IGJvb2wgYWFyY2g2NF9yZXR1cm5fYWRkcmVzc19zaWduaW5nX2VuYWJsZWQg KHZvaWQpOwogdm9pZCBhYXJjaDY0X3NhdmVfcmVzdG9yZV90YXJnZXRfZ2xv YmFscyAodHJlZSk7Cit2b2lkIGFhcmNoNjRfYWRkXzEyOGJpdF9zY3JhdGNo X3JlZ3MgKHJ0eCwgcnR4LCBydHggKiwKKwkJCQkgICAgICBydHggKiwgcnR4 ICosCisJCQkJICAgICAgcnR4ICosIHJ0eCAqLAorCQkJCSAgICAgIHJ0eCAq KTsKK3ZvaWQgYWFyY2g2NF9zdWJ2XzEyOGJpdF9zY3JhdGNoX3JlZ3MgKHJ0 eCwgcnR4LCBydHggKiwKKwkJCQkgICAgICAgcnR4ICosIHJ0eCAqLAorCQkJ CSAgICAgICBydHggKiwgcnR4ICosIHJ0eCAqKTsKK3ZvaWQgYWFyY2g2NF9l eHBhbmRfc3VidnRpIChydHgsIHJ0eCwgcnR4LAorCQkJICAgIHJ0eCwgcnR4 LCBydHgsIHJ0eCk7CisKIAogLyogSW5pdGlhbGl6ZSBidWlsdGlucyBmb3Ig U0lNRCBpbnRyaW5zaWNzLiAgKi8KIHZvaWQgaW5pdF9hYXJjaDY0X3NpbWRf YnVpbHRpbnMgKHZvaWQpOwpAQCAtNDkzLDcgKzUwMyw4IEBAIHZvaWQgYWFy Y2g2NF9zcGxpdF9zaW1kX21vdmUgKHJ0eCwgcnR4KTsKIGJvb2wgYWFyY2g2 NF9mbG9hdF9jb25zdF9yZXByZXNlbnRhYmxlX3AgKHJ0eCk7CiAKICNpZiBk ZWZpbmVkIChSVFhfQ09ERSkKLQordm9pZCBhYXJjaDY0X2dlbl91bmxpa2Vs eV9jYnJhbmNoIChlbnVtIHJ0eF9jb2RlLCBtYWNoaW5lX21vZGUgY2NfbW9k ZSwKKwkJCQkgICBydHggbGFiZWxfcmVmKTsKIGJvb2wgYWFyY2g2NF9sZWdp dGltYXRlX2FkZHJlc3NfcCAobWFjaGluZV9tb2RlLCBydHgsIGJvb2wsCiAJ CQkJICAgYWFyY2g2NF9hZGRyX3F1ZXJ5X3R5cGUgPSBBRERSX1FVRVJZX00p OwogbWFjaGluZV9tb2RlIGFhcmNoNjRfc2VsZWN0X2NjX21vZGUgKFJUWF9D T0RFLCBydHgsIHJ0eCk7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNo NjQvYWFyY2g2NC5jIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYwpp bmRleCBjOTRmNzA5Li5hZjhiNmNjIDEwMDY0NAotLS0gYS9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC5jCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9h YXJjaDY0LmMKQEAgLTYzNzcsNiArNjM3NywxMyBAQCBhYXJjaDY0X3NlbGVj dF9jY19tb2RlIChSVFhfQ09ERSBjb2RlLCBydHggeCwgcnR4IHkpCiAgICAg ICAmJiBHRVRfQ09ERSAoeSkgPT0gWkVST19FWFRFTkQpCiAgICAgcmV0dXJu IENDX0Ntb2RlOwogCisgIC8qIEEgdGVzdCBmb3Igc2lnbmVkIG92ZXJmbG93 LiAgKi8KKyAgaWYgKChHRVRfTU9ERSAoeCkgPT0gREltb2RlIHx8IEdFVF9N T0RFICh4KSA9PSBUSW1vZGUpCisgICAgICAmJiBjb2RlID09IE5FCisgICAg ICAmJiBHRVRfQ09ERSAoeCkgPT0gUExVUworICAgICAgJiYgR0VUX0NPREUg KHkpID09IFNJR05fRVhURU5EKQorICAgIHJldHVybiBDQ19WbW9kZTsKKwog ICAvKiBGb3IgZXZlcnl0aGluZyBlbHNlLCByZXR1cm4gQ0Ntb2RlLiAgKi8K ICAgcmV0dXJuIENDbW9kZTsKIH0KQEAgLTY0ODMsNiArNjQ5MCwxNSBAQCBh YXJjaDY0X2dldF9jb25kaXRpb25fY29kZV8xIChtYWNoaW5lX21vZGUgbW9k ZSwgZW51bSBydHhfY29kZSBjb21wX2NvZGUpCiAJfQogICAgICAgYnJlYWs7 CiAKKyAgICBjYXNlIEVfQ0NfVm1vZGU6CisgICAgICBzd2l0Y2ggKGNvbXBf Y29kZSkKKwl7CisJY2FzZSBORTogcmV0dXJuIEFBUkNINjRfVlM7CisJY2Fz ZSBFUTogcmV0dXJuIEFBUkNINjRfVkM7CisJZGVmYXVsdDogcmV0dXJuIC0x OworCX0KKyAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgIHJl dHVybiAtMTsKICAgICB9CkBAIC0xNjMzNyw2ICsxNjM1MywxMzEgQEAgYWFy Y2g2NF9zcGxpdF9kaW1vZGVfY29uc3Rfc3RvcmUgKHJ0eCBkc3QsIHJ0eCBz cmMpCiAgIHJldHVybiB0cnVlOwogfQogCisvKiBHZW5lcmF0ZSBSVEwgZm9y IGEgY29uZGl0aW9uYWwgYnJhbmNoIHdpdGggcnR4IGNvbXBhcmlzb24gQ09E RSBpbgorICAgbW9kZSBDQ19NT0RFLiAgVGhlIGRlc3RpbmF0aW9uIG9mIHRo ZSB1bmxpa2VseSBjb25kaXRpb25hbCBicmFuY2gKKyAgIGlzIExBQkVMX1JF Ri4gICovCisKK3ZvaWQKK2FhcmNoNjRfZ2VuX3VubGlrZWx5X2NicmFuY2gg KGVudW0gcnR4X2NvZGUgY29kZSwgbWFjaGluZV9tb2RlIGNjX21vZGUsCisJ CQkgICAgICBydHggbGFiZWxfcmVmKQoreworICBydHggeDsKKyAgeCA9IGdl bl9ydHhfZm10X2VlIChjb2RlLCBWT0lEbW9kZSwKKwkJICAgICAgZ2VuX3J0 eF9SRUcgKGNjX21vZGUsIENDX1JFR05VTSksCisJCSAgICAgIGNvbnN0MF9y dHgpOworCisgIHggPSBnZW5fcnR4X0lGX1RIRU5fRUxTRSAoVk9JRG1vZGUs IHgsCisJCQkgICAgZ2VuX3J0eF9MQUJFTF9SRUYgKFZPSURtb2RlLCBsYWJl bF9yZWYpLAorCQkJICAgIHBjX3J0eCk7CisgIGFhcmNoNjRfZW1pdF91bmxp a2VseV9qdW1wIChnZW5fcnR4X1NFVCAocGNfcnR4LCB4KSk7Cit9CisKKy8q IEdlbmVyYXRlIERJbW9kZSBzY3JhdGNoIHJlZ2lzdGVycyBmb3IgMTI4LWJp dCAoVEltb2RlKSBhZGRpdGlvbi4KKworICAgT1AxIHJlcHJlc2VudHMgdGhl IFRJbW9kZSBkZXN0aW5hdGlvbiBvcGVyYW5kIDEKKyAgIE9QMiByZXByZXNl bnRzIHRoZSBUSW1vZGUgZGVzdGluYXRpb24gb3BlcmFuZCAyCisgICBMT1df REVTVCByZXByZXNlbnRzIHRoZSBsb3cgaGFsZiAoREltb2RlKSBvZiBUSW1v ZGUgb3BlcmFuZCAwCisgICBMT1dfSU4xIHJlcHJlc2VudHMgdGhlIGxvdyBo YWxmIChESW1vZGUpIG9mIFRJbW9kZSBvcGVyYW5kIDEKKyAgIExPV19JTjIg cmVwcmVzZW50cyB0aGUgbG93IGhhbGYgKERJbW9kZSkgb2YgVEltb2RlIG9w ZXJhbmQgMgorICAgSElHSF9ERVNUIHJlcHJlc2VudHMgdGhlIGhpZ2ggaGFs ZiAoREltb2RlKSBvZiBUSW1vZGUgb3BlcmFuZCAwCisgICBISUdIX0lOMSBy ZXByZXNlbnRzIHRoZSBoaWdoIGhhbGYgKERJbW9kZSkgb2YgVEltb2RlIG9w ZXJhbmQgMQorICAgSElHSF9JTjIgcmVwcmVzZW50cyB0aGUgaGlnaCBoYWxm IChESW1vZGUpIG9mIFRJbW9kZSBvcGVyYW5kIDIuICAqLworCit2b2lkCith YXJjaDY0X2FkZF8xMjhiaXRfc2NyYXRjaF9yZWdzIChydHggb3AxLCBydHgg b3AyLCBydHggKmxvd19kZXN0LAorCQkJCSBydHggKmxvd19pbjEsIHJ0eCAq bG93X2luMiwKKwkJCQkgcnR4ICpoaWdoX2Rlc3QsIHJ0eCAqaGlnaF9pbjEs CisJCQkJIHJ0eCAqaGlnaF9pbjIpCit7CisgICpsb3dfZGVzdCA9IGdlbl9y ZWdfcnR4IChESW1vZGUpOworICAqbG93X2luMSA9IGdlbl9sb3dwYXJ0IChE SW1vZGUsIG9wMSk7CisgICpsb3dfaW4yID0gc2ltcGxpZnlfZ2VuX3N1YnJl ZyAoREltb2RlLCBvcDIsIFRJbW9kZSwKKwkJCQkgIHN1YnJlZ19sb3dwYXJ0 X29mZnNldCAoREltb2RlLCBUSW1vZGUpKTsKKyAgKmhpZ2hfZGVzdCA9IGdl bl9yZWdfcnR4IChESW1vZGUpOworICAqaGlnaF9pbjEgPSBnZW5faGlnaHBh cnQgKERJbW9kZSwgb3AxKTsKKyAgKmhpZ2hfaW4yID0gc2ltcGxpZnlfZ2Vu X3N1YnJlZyAoREltb2RlLCBvcDIsIFRJbW9kZSwKKwkJCQkgICBzdWJyZWdf aGlnaHBhcnRfb2Zmc2V0IChESW1vZGUsIFRJbW9kZSkpOworfQorCisvKiBH ZW5lcmF0ZSBESW1vZGUgc2NyYXRjaCByZWdpc3RlcnMgZm9yIDEyOC1iaXQg KFRJbW9kZSkgc3VidHJhY3Rpb24uCisKKyAgIFRoaXMgZnVuY3Rpb24gZGlm ZmVycyBmcm9tICdhcmNoNjRfYWRkXzEyOGJpdF9zY3JhdGNoX3JlZ3MnIGlu IHRoYXQKKyAgIE9QMSBjYW4gYmUgYW4gaW1tZWRpYXRlIGNvbnN0YW50ICh6 ZXJvKS4gV2UgbXVzdCBjYWxsCisgICBzdWJyZWdfaGlnaHBhcnRfb2Zmc2V0 IHdpdGggREltb2RlIGFuZCBUSW1vZGUgYXJndW1lbnRzLCBvdGhlcndpc2UK KyAgIFZPSURtb2RlIHdpbGwgYmUgdXNlZCBmb3IgdGhlIGNvbnN0X2ludCB3 aGljaCBnZW5lcmF0ZXMgYW4gaW50ZXJuYWwKKyAgIGVycm9yIGZyb20gc3Vi cmVnX3NpemVfaGlnaHBhcnRfb2Zmc2V0IHdoaWNoIGRvZXMgbm90IGV4cGVj dCBhIHNpemUgb2YgemVyby4KKworICAgT1AxIHJlcHJlc2VudHMgdGhlIFRJ bW9kZSBkZXN0aW5hdGlvbiBvcGVyYW5kIDEKKyAgIE9QMiByZXByZXNlbnRz IHRoZSBUSW1vZGUgZGVzdGluYXRpb24gb3BlcmFuZCAyCisgICBMT1dfREVT VCByZXByZXNlbnRzIHRoZSBsb3cgaGFsZiAoREltb2RlKSBvZiBUSW1vZGUg b3BlcmFuZCAwCisgICBMT1dfSU4xIHJlcHJlc2VudHMgdGhlIGxvdyBoYWxm IChESW1vZGUpIG9mIFRJbW9kZSBvcGVyYW5kIDEKKyAgIExPV19JTjIgcmVw cmVzZW50cyB0aGUgbG93IGhhbGYgKERJbW9kZSkgb2YgVEltb2RlIG9wZXJh bmQgMgorICAgSElHSF9ERVNUIHJlcHJlc2VudHMgdGhlIGhpZ2ggaGFsZiAo REltb2RlKSBvZiBUSW1vZGUgb3BlcmFuZCAwCisgICBISUdIX0lOMSByZXBy ZXNlbnRzIHRoZSBoaWdoIGhhbGYgKERJbW9kZSkgb2YgVEltb2RlIG9wZXJh bmQgMQorICAgSElHSF9JTjIgcmVwcmVzZW50cyB0aGUgaGlnaCBoYWxmIChE SW1vZGUpIG9mIFRJbW9kZSBvcGVyYW5kIDIuICAqLworCisKK3ZvaWQKK2Fh cmNoNjRfc3Vidl8xMjhiaXRfc2NyYXRjaF9yZWdzIChydHggb3AxLCBydHgg b3AyLCBydHggKmxvd19kZXN0LAorCQkJCSAgcnR4ICpsb3dfaW4xLCBydHgg Kmxvd19pbjIsCisJCQkJICBydHggKmhpZ2hfZGVzdCwgcnR4ICpoaWdoX2lu MSwKKwkJCQkgIHJ0eCAqaGlnaF9pbjIpCit7CisgICpsb3dfZGVzdCA9IGdl bl9yZWdfcnR4IChESW1vZGUpOworICAqbG93X2luMSA9IHNpbXBsaWZ5X2dl bl9zdWJyZWcgKERJbW9kZSwgb3AxLCBUSW1vZGUsCisJCQkJICBzdWJyZWdf bG93cGFydF9vZmZzZXQgKERJbW9kZSwgVEltb2RlKSk7CisKKyAgKmxvd19p bjIgPSBzaW1wbGlmeV9nZW5fc3VicmVnIChESW1vZGUsIG9wMiwgVEltb2Rl LAorCQkJCSAgc3VicmVnX2xvd3BhcnRfb2Zmc2V0IChESW1vZGUsIFRJbW9k ZSkpOworICAqaGlnaF9kZXN0ID0gZ2VuX3JlZ19ydHggKERJbW9kZSk7CisK KyAgKmhpZ2hfaW4xID0gc2ltcGxpZnlfZ2VuX3N1YnJlZyAoREltb2RlLCBv cDEsIFRJbW9kZSwKKwkJCQkgICBzdWJyZWdfaGlnaHBhcnRfb2Zmc2V0IChE SW1vZGUsIFRJbW9kZSkpOworICAqaGlnaF9pbjIgPSBzaW1wbGlmeV9nZW5f c3VicmVnIChESW1vZGUsIG9wMiwgVEltb2RlLAorCQkJCSAgIHN1YnJlZ19o aWdocGFydF9vZmZzZXQgKERJbW9kZSwgVEltb2RlKSk7Cit9CisKKy8qIEdl bmVyYXRlIFJUTCBmb3IgMTI4LWJpdCAoVEltb2RlKSBzdWJ0cmFjdGlvbiB3 aXRoIG92ZXJmbG93LgorCisgICBPUDAgcmVwcmVzZW50cyB0aGUgVEltb2Rl IGRlc3RpbmF0aW9uIG9wZXJhbmQgMAorICAgTE9XX0RFU1QgcmVwcmVzZW50 cyB0aGUgbG93IGhhbGYgKERJbW9kZSkgb2YgVEltb2RlIG9wZXJhbmQgMAor ICAgTE9XX0lOMSByZXByZXNlbnRzIHRoZSBsb3cgaGFsZiAoREltb2RlKSBv ZiBUSW1vZGUgb3BlcmFuZCAxCisgICBMT1dfSU4yIHJlcHJlc2VudHMgdGhl IGxvdyBoYWxmIChESW1vZGUpIG9mIFRJbW9kZSBvcGVyYW5kIDIKKyAgIEhJ R0hfREVTVCByZXByZXNlbnRzIHRoZSBoaWdoIGhhbGYgKERJbW9kZSkgb2Yg VEltb2RlIG9wZXJhbmQgMAorICAgSElHSF9JTjEgcmVwcmVzZW50cyB0aGUg aGlnaCBoYWxmIChESW1vZGUpIG9mIFRJbW9kZSBvcGVyYW5kIDEKKyAgIEhJ R0hfSU4yIHJlcHJlc2VudHMgdGhlIGhpZ2ggaGFsZiAoREltb2RlKSBvZiBU SW1vZGUgb3BlcmFuZCAyLiAgKi8KKwordm9pZAorYWFyY2g2NF9leHBhbmRf c3VidnRpIChydHggb3AwLCBydHggbG93X2Rlc3QsIHJ0eCBsb3dfaW4xLAor CQkgICAgICAgcnR4IGxvd19pbjIsIHJ0eCBoaWdoX2Rlc3QsIHJ0eCBoaWdo X2luMSwKKwkJICAgICAgIHJ0eCBoaWdoX2luMikKK3sKKyAgaWYgKGxvd19p bjIgPT0gY29uc3QwX3J0eCkKKyAgICB7CisgICAgICBsb3dfZGVzdCA9IGxv d19pbjE7CisgICAgICBlbWl0X2luc24gKGdlbl9zdWJkaTNfY29tcGFyZTEg KGhpZ2hfZGVzdCwgaGlnaF9pbjEsCisJCQkJICAgICAgZm9yY2VfcmVnIChE SW1vZGUsIGhpZ2hfaW4yKSkpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgIGlmIChDT05TVF9JTlRfUCAobG93X2luMikpCisJeworCSAgbG93X2lu MiA9IGZvcmNlX3JlZyAoREltb2RlLCBHRU5fSU5UICgtVUlOVFZBTCAobG93 X2luMikpKTsKKwkgIGhpZ2hfaW4yID0gZm9yY2VfcmVnIChESW1vZGUsIGhp Z2hfaW4yKTsKKwkgIGVtaXRfaW5zbiAoZ2VuX2FkZGRpM19jb21wYXJlQyAo bG93X2Rlc3QsIGxvd19pbjEsIGxvd19pbjIpKTsKKwl9CisgICAgICBlbHNl CisJZW1pdF9pbnNuIChnZW5fc3ViZGkzX2NvbXBhcmUxIChsb3dfZGVzdCwg bG93X2luMSwgbG93X2luMikpOworICAgICAgZW1pdF9pbnNuIChnZW5fc3Vi ZGkzX2NhcnJ5aW5DViAoaGlnaF9kZXN0LAorCQkJCSAgICAgICBmb3JjZV9y ZWcgKERJbW9kZSwgaGlnaF9pbjEpLAorCQkJCSAgICAgICBoaWdoX2luMikp OworICAgIH0KKworICBlbWl0X21vdmVfaW5zbiAoZ2VuX2xvd3BhcnQgKERJ bW9kZSwgb3AwKSwgbG93X2Rlc3QpOworICBlbWl0X21vdmVfaW5zbiAoZ2Vu X2hpZ2hwYXJ0IChESW1vZGUsIG9wMCksIGhpZ2hfZGVzdCk7CisKK30KKwog LyogSW1wbGVtZW50IHRoZSBUQVJHRVRfQVNBTl9TSEFET1dfT0ZGU0VUIGhv b2suICAqLwogCiBzdGF0aWMgdW5zaWduZWQgSE9TVF9XSURFX0lOVAotLSAK Mi43LjQKCg== --_002_VI1PR08MB3053A847F7701FCC505D396895650VI1PR08MB3053eurp_--