From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7456 invoked by alias); 12 Sep 2016 16:19:49 -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 7446 invoked by uid 89); 12 Sep 2016 16:19:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.0 required=5.0 tests=AWL,BAYES_50,KAM_LOTSOFHASH,SPF_PASS autolearn=no version=3.3.2 spammy=type_precision, lastly, TYPE_PRECISION, exponent X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (146.101.78.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 12 Sep 2016 16:19:38 +0000 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp0055.outbound.protection.outlook.com [213.199.154.55]) (Using TLS) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-47-qhtyeAWyM3ehxFvaKKscPw-1; Mon, 12 Sep 2016 17:19:35 +0100 Received: from VI1PR0801MB2031.eurprd08.prod.outlook.com (10.173.74.140) by VI1PR0801MB2030.eurprd08.prod.outlook.com (10.173.74.139) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.619.10; Mon, 12 Sep 2016 16:19:32 +0000 Received: from VI1PR0801MB2031.eurprd08.prod.outlook.com ([10.173.74.140]) by VI1PR0801MB2031.eurprd08.prod.outlook.com ([10.173.74.140]) with mapi id 15.01.0619.011; Mon, 12 Sep 2016 16:19:32 +0000 From: Tamar Christina To: GCC Patches , "jakub@redhat.com" , "rguenther@suse.de" , "law@redhat.com" CC: nd Subject: [PATCH] Optimise the fpclassify builtin to perform integer operations when possible Date: Mon, 12 Sep 2016 16:21:00 -0000 Message-ID: x-ms-office365-filtering-correlation-id: fe44b5de-5471-4422-43ad-08d3db289476 x-microsoft-exchange-diagnostics: 1;VI1PR0801MB2030;20:BwO+0WynquAuiOrfKnvu2gEKgcrPrEqcrYDrBsyy+3882kYX05IkWIQgcfSJm4Uc9008Rilp6N6ofDFoRtD6mJRwp97yfr9uzX7T68KrOnEoviBY0XT53SSrQwr3GT3yysI3fcbJ1ZEgDZUfU2mFMCb0txsU9F4D98KDOeLxiPc= x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB2030; nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(102415321)(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:VI1PR0801MB2030;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB2030; x-forefront-prvs: 006339698F x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(7916002)(377424004)(53754006)(19580405001)(2906002)(3280700002)(102836003)(50986999)(3660700001)(19580395003)(6116002)(2201001)(3846002)(5002640100001)(87936001)(87386001)(99936001)(7696004)(11100500001)(86362001)(7736002)(8936002)(4326007)(122556002)(5660300001)(4001520100001)(5001770100001)(7846002)(33656002)(54356999)(586003)(8676002)(9686002)(10400500002)(76576001)(189998001)(74316002)(81166006)(2501003)(305945005)(229853001)(106116001)(92566002)(77096005)(66066001)(2900100001)(5004840100003);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0801MB2030;H:VI1PR0801MB2031.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2016 16:19:32.2292 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB2030 X-MC-Unique: qhtyeAWyM3ehxFvaKKscPw-1 Content-Type: multipart/mixed; boundary="_002_VI1PR0801MB2031BC0C70CCAD966A9B2933FFFF0VI1PR0801MB2031_" X-IsSubscribed: yes X-SW-Source: 2016-09/txt/msg00640.txt.bz2 --_002_VI1PR0801MB2031BC0C70CCAD966A9B2933FFFF0VI1PR0801MB2031_ Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Content-length: 3033 Hi All, This patch adds an optimized route to the fpclassify builtin for floating point numbers which are similar to IEEE-754 in format. The goal is to make it faster by: 1. Trying to determine the most common case first (e.g. the float is a Normal number) and then the rest. The amount of code generated at -O2 are about the same +/- 1 instruction, but the code is much better. 2. Using integer operation in the optimized path. At a high level, the optimized path uses integer operations to perform the following: if (exponent bits aren't all set or unset) return Normal; else if (no bits are set on the number after masking out sign bits then) return Zero; else if (exponent has no bits set) return Subnormal; else if (mantissa has no bits set) return Infinite; else return NaN; In case the optimization can't be applied the old implementation is used as a fall-back. A limitation with this new approach is that the exponent of the floating point has to fit in 31 bits and the floating point has to have an IEEE like format and values for NaN and INF (e.g. for NaN and INF all bits of the exp must be set). To determine this IEEE likeness a new boolean was added to real_format. Regression tests ran on aarch64-none-linux and arm-none-linux-gnueabi and no regression. x86 uses it's own implementation other than=20 the fpclassify builtin. As an example, Aarch64 now generates for classification of doubles: f: fmov x1, d0 mov w0, 7 sbfx x2, x1, 52, 11 add w3, w2, 1 tst w3, 0x07FE bne .L1 mov w0, 13 tst x1, 0x7fffffffffffffff beq .L1 mov w0, 11 tbz x2, 0, .L1 tst x1, 0xfffffffffffff mov w0, 3 mov w1, 5 csel w0, w0, w1, ne .L1: ret No new tests as there are existing tests to test functionality. glibc benchmarks ran against the builtin and this shows a 31.3% performance gain. Ok for trunk? Thanks, Tamar PS. I don't have commit rights so if OK can someone apply the patch for me. gcc/ 2016-08-25 Tamar Christina Wilco Dijkstra * gcc/builtins.c (fold_builtin_fpclassify): Added optimized version.=20 * gcc/real.h (real_format): Added is_ieee_compatible field. * gcc/real.c (ieee_single_format): Set is_ieee_compatible flag. (mips_single_format): Likewise. (motorola_single_format): Likewise. (spu_single_format): Likewise. (ieee_double_format): Likewise. (mips_double_format): Likewise. (motorola_double_format): Likewise. (ieee_extended_motorola_format): Likewise. (ieee_extended_intel_128_format): Likewise. (ieee_extended_intel_96_round_53_format): Likewise. (ibm_extended_format): Likewise. (mips_extended_format): Likewise. (ieee_quad_format): Likewise. (mips_quad_format): Likewise. (vax_f_format): Likewise. (vax_d_format): Likewise. (vax_g_format): Likewise. (decimal_single_format): Likewise. (decimal_quad_format): Likewise. (iee_half_format): Likewise. (mips_single_format): Likewise. (arm_half_format): Likewise. (real_internal_format): Likewise.= --_002_VI1PR0801MB2031BC0C70CCAD966A9B2933FFFF0VI1PR0801MB2031_ Content-Type: text/x-patch; name=gcc-public.patch Content-Description: gcc-public.patch Content-Disposition: attachment; filename="gcc-public.patch"; size=11013; creation-date="Mon, 12 Sep 2016 16:11:48 GMT"; modification-date="Mon, 12 Sep 2016 16:11:48 GMT" Content-Transfer-Encoding: base64 Content-length: 14929 ZGlmZiAtLWdpdCBhL2djYy9idWlsdGlucy5jIGIvZ2NjL2J1aWx0aW5zLmMK aW5kZXggMTA3M2UzNWIxN2IxYmMxZjY5NzRjNzFjOTQwYmQ5ZDgyYmJiZmMw Zi4uNThiZjEyOWY5YTAyMjg2NTlmZDNiOTc2ZDM4ZDAyMWQxZDViZDZiYiAx MDA2NDQKLS0tIGEvZ2NjL2J1aWx0aW5zLmMKKysrIGIvZ2NjL2J1aWx0aW5z LmMKQEAgLTc5NDcsMTAgKzc5NDcsOCBAQCBzdGF0aWMgdHJlZQogZm9sZF9i dWlsdGluX2ZwY2xhc3NpZnkgKGxvY2F0aW9uX3QgbG9jLCB0cmVlICphcmdz LCBpbnQgbmFyZ3MpCiB7CiAgIHRyZWUgZnBfbmFuLCBmcF9pbmZpbml0ZSwg ZnBfbm9ybWFsLCBmcF9zdWJub3JtYWwsIGZwX3plcm8sCi0gICAgYXJnLCB0 eXBlLCByZXMsIHRtcDsKKyAgICBhcmcsIHR5cGUsIHJlczsKICAgbWFjaGlu ZV9tb2RlIG1vZGU7Ci0gIFJFQUxfVkFMVUVfVFlQRSByOwotICBjaGFyIGJ1 ZlsxMjhdOwogCiAgIC8qIFZlcmlmeSB0aGUgcmVxdWlyZWQgYXJndW1lbnRz IGluIHRoZSBvcmlnaW5hbCBjYWxsLiAgKi8KICAgaWYgKG5hcmdzICE9IDYK QEAgLTc5NzAsMTQgKzc5NjgsMTQzIEBAIGZvbGRfYnVpbHRpbl9mcGNsYXNz aWZ5IChsb2NhdGlvbl90IGxvYywgdHJlZSAqYXJncywgaW50IG5hcmdzKQog ICBhcmcgPSBhcmdzWzVdOwogICB0eXBlID0gVFJFRV9UWVBFIChhcmcpOwog ICBtb2RlID0gVFlQRV9NT0RFICh0eXBlKTsKLSAgYXJnID0gYnVpbHRpbl9z YXZlX2V4cHIgKGZvbGRfYnVpbGQxX2xvYyAobG9jLCBBQlNfRVhQUiwgdHlw ZSwgYXJnKSk7CisgIGNvbnN0IHJlYWxfZm9ybWF0ICpmb3JtYXQgPSBSRUFM X01PREVfRk9STUFUIChtb2RlKTsKKworICAvKgorICBGb3IgSUVFRSA3NTQg dHlwZXM6CisKKyAgZnBjbGFzc2lmeSAoeCkgLT4KKyAgICAgICAhKChleHAg KyAxKSAmIChleHBfbWFzayAmIH4xKSkgLy8gZXhwb25lbnQgYml0cyBub3Qg YWxsIHNldCBvciB1bnNldAorCSA/ICh4ICYgc2lnbl9tYXNrID09IDAgPyBG UF9aRVJPIDoKKwkgICAoZXhwICYgZXhwX21hc2sgPT0gZXhwX21hc2sKKwkg ICAgICA/IChtYW50aXNhID09IDAgPyBGUF9JTkZJTklURSA6IEZQX05BTikg OgorCSAgICAgIEZQX1NVQk5PUk1BTCkpOgorICAgICAgIEZQX05PUk1BTC4K KworICBPdGhlcndpc2UKKworICBmcGNsYXNzaWZ5ICh4KSAtPgorICAgICAg IGlzbmFuICh4KSA/IEZQX05BTiA6CisJKGZhYnMgKHgpID09IEluZiA/IEZQ X0lORklOSVRFIDoKKwkgICAoZmFicyAoeCkgPj0gREJMX01JTiA/IEZQX05P Uk1BTCA6CisJICAgICAoeCA9PSAwID8gRlBfWkVSTyA6IEZQX1NVQk5PUk1B TCkpKS4KKyAgKi8KKworICAvKiBDaGVjayBpZiB0aGUgbnVtYmVyIHRoYXQg aXMgYmVpbmcgY2xhc3NpZmllZCBpcyBjbG9zZSBlbm91Z2ggdG8gSUVFRSA3 NTQKKyAgICAgZm9ybWF0IHRvIGJlIGFibGUgdG8gZ28gaW4gdGhlIGVhcmx5 IGV4aXQgY29kZS4gICovCisgIGlmIChmb3JtYXQtPmlzX2JpbmFyeV9pZWVl X2NvbXBhdGlibGUpCisgICAgeworICAgICAgZ2NjX2Fzc2VydCAoZm9ybWF0 LT5iID09IDIpOworCisgICAgICBjb25zdCB0cmVlIGludF90eXBlID0gaW50 ZWdlcl90eXBlX25vZGU7CisgICAgICBjb25zdCBpbnQgZXhwX2JpdHMgID0g KEdFVF9NT0RFX1NJWkUgKG1vZGUpICogQklUU19QRVJfVU5JVCkgLSBmb3Jt YXQtPnA7CisgICAgICBjb25zdCBpbnQgZXhwX21hc2sgID0gKDEgPDwgZXhw X2JpdHMpIC0gMTsKKworICAgICAgdHJlZSBleHAsIHNwZWNpYWxzLCBleHBf Yml0ZmllbGQsCisJICAgY29uc3RfYXJnMCwgY29uc3RfYXJnMSwgY29uc3Qw LCBjb25zdDEsCisJICAgbm90X3NpZ25fbWFzaywgemVyb19jaGVjaywgbWFu dGlzc2FfbWFzaywKKwkgICBtYW50aXNzYV9hbnlfc2V0LCBleHBfbHNiX3Nl dCwgbWFza19jaGVjazsKKyAgICAgIHRyZWUgaW50X2FyZ190eXBlLCBpbnRf YXJnOworCisgICAgICAvKiBSZS1pbnRlcnByZXQgdGhlIGZsb2F0IGFzIGFu IHVuc2lnbmVkIGludGVnZXIgdHlwZQorCSB3aXRoIGVxdWFsIHByZWNpc2lv bi4gICovCisgICAgICBpbnRfYXJnX3R5cGUgPSBidWlsZF9ub25zdGFuZGFy ZF9pbnRlZ2VyX3R5cGUgKFRZUEVfUFJFQ0lTSU9OICh0eXBlKSwgMCk7Cisg ICAgICBpbnRfYXJnID0gZm9sZF9idWlsZDFfbG9jIChsb2MsIElORElSRUNU X1JFRiwgaW50X2FyZ190eXBlLAorCQkgIGZvbGRfYnVpbGQxX2xvYyAobG9j LCBOT1BfRVhQUiwKKwkJCQkgICBidWlsZF9wb2ludGVyX3R5cGUgKGludF9h cmdfdHlwZSksCisJCSAgICBmb2xkX2J1aWxkMV9sb2MgKGxvYywgQUREUl9F WFBSLAorCQkJCSAgICAgYnVpbGRfcG9pbnRlcl90eXBlICh0eXBlKSwgYXJn KSkpOworCisgICAgICAvKiBFeHRyYWN0IGV4cCBiaXRzIGZyb20gdGhlIGZs b2F0LCB3aGVyZSB3ZSBleHBlY3QgdGhlIGV4cG9uZW50IHRvIGJlLgorCSBX ZSBjcmVhdGUgYSBuZXcgdHlwZSBiZWNhdXNlIEJJVF9GSUVMRF9SRUYgZG9l cyBub3QgYWxsb3cgeW91IHRvCisJIGV4dHJhY3QgbGVzcyBiaXRzIHRoYW4g dGhlIHByZWNpc2lvbiBvZiB0aGUgc3RvcmFnZSB2YXJpYWJsZS4gICovCisg ICAgICBleHBfYml0ZmllbGQgPSBmb2xkX2J1aWxkM19sb2MgKGxvYywgQklU X0ZJRUxEX1JFRiwKKwkJCWJ1aWxkX25vbnN0YW5kYXJkX2ludGVnZXJfdHlw ZSAoZXhwX2JpdHMsIDApLCBpbnRfYXJnLAorCQkJYnVpbGRfaW50X2NzdCAo aW50X3R5cGUsIGV4cF9iaXRzKSwKKwkJCWJ1aWxkX2ludF9jc3QgKGludF90 eXBlLCBmb3JtYXQtPnAgLSAxKSk7CisKKyAgICAgIC8qIFJlLWludGVycHJl dCB0aGUgZXh0cmFjdGVkIGV4cG9uZW50IGJpdHMgYXMgYSAzMiBiaXQgaW50 LgorCSBUaGlzIGFsbG93cyB1cyB0byBjb250aW51ZSBkb2luZyBvcGVyYXRp b25zIGFzIGludF90eXBlLiAgKi8KKyAgICAgIGV4cCA9IGZvbGRfYnVpbGQx X2xvYyAobG9jLCBOT1BfRVhQUiwgaW50X3R5cGUsIGV4cF9iaXRmaWVsZCk7 CisKKyAgICAgIC8qIFNldCB1cCBzb21lIG9mdGVuIHVzZWQgY29uc3RhbnRz LiAgKi8KKyAgICAgIGNvbnN0X2FyZzAgPSBidWlsZF9pbnRfY3N0IChpbnRf YXJnX3R5cGUsIDApOworICAgICAgY29uc3RfYXJnMSA9IGJ1aWxkX2ludF9j c3QgKGludF9hcmdfdHlwZSwgMSk7CisgICAgICBjb25zdDAgPSBidWlsZF9p bnRfY3N0IChpbnRfdHlwZSwgMCk7CisgICAgICBjb25zdDEgPSBidWlsZF9p bnRfY3N0IChpbnRfdHlwZSwgMSk7CisKKyAgICAgIC8qIDEpIEZpcnN0IGNo ZWNrIGZvciAwIGJ5IGZpcnN0IG1hc2tpbmcgb3V0IHNpZ24gYml0LgorCSAy KSBUaGVuIGNoZWNrIGZvciBOYU5zIHVzaW5nIGEgYml0IG1hc2sgYnkgY2hl Y2tpbmcgZmlyc3QgaWYgdGhlCisJICAgIGV4cG9uZW50IGhhcyBhbGwgYml0 cyBzZXQsIGlmIGl0IGRvZXMgaXQgY2FuIGJlIGVpdGhlciBOYU4gb3IgSU5G LgorCSAzKSBBbnl0aGluZyBlbHNlIGFyZSBzdWJub3JtYWwgbnVtYmVycy4g ICovCisKKyAgICAgIC8qIH4oMSA8PCBsb2NhdGlvbl9zaWduX2JpdCkuCisJ IFRoaXMgY3JlYXRlcyBhIG1hc2sgdGhhdCBjYW4gYmUgdXNlZCB0byBtYXNr IG91dCB0aGUgc2lnbiBiaXQuICAqLworICAgICAgbm90X3NpZ25fbWFzayA9 IGZvbGRfYnVpbGQxX2xvYyAobG9jLCBCSVRfTk9UX0VYUFIsIGludF9hcmdf dHlwZSwKKwkJCWZvbGRfYnVpbGQyX2xvYyAobG9jLCBMU0hJRlRfRVhQUiwg aW50X2FyZ190eXBlLAorCQkJICBjb25zdF9hcmcxLAorCQkJICBidWlsZF9p bnRfY3N0IChpbnRfYXJnX3R5cGUsIGZvcm1hdC0+c2lnbmJpdF9ydykpKTsK KworICAgICAgLyogbnVtICYgbm90X3NpZ25fbWFzayA9PSAwLgorCSBUaGlz IGNoZWNrcyB0byBzZWUgaWYgdGhlIG51bWJlciBpcyB6ZXJvLiAgKi8KKyAg ICAgIHplcm9fY2hlY2sgPSBmb2xkX2J1aWxkMl9sb2MgKGxvYywgRVFfRVhQ UiwgaW50X3R5cGUsIGNvbnN0X2FyZzAsCisJCQkgZm9sZF9idWlsZDJfbG9j IChsb2MsIEJJVF9BTkRfRVhQUiwgaW50X2FyZ190eXBlLAorCQkJICAgaW50 X2FyZywgbm90X3NpZ25fbWFzaykpOworCisgICAgICAvKiBiXihwLTEpIC0g MSBvciAxIDw8IChwIC0gMikKKwkgVGhpcyBjcmVhdGVzIGEgbWFzayB0byBi ZSB1c2VkIHRvIGNoZWNrIHRoZSBtYW50aXNzYSB2YWx1ZS4gICovCisgICAg ICBtYW50aXNzYV9tYXNrID0gZm9sZF9idWlsZDJfbG9jIChsb2MsIE1JTlVT X0VYUFIsIGludF9hcmdfdHlwZSwKKwkJCSBmb2xkX2J1aWxkMl9sb2MgKGxv YywgTFNISUZUX0VYUFIsIGludF9hcmdfdHlwZSwKKwkJCSAgICBidWlsZF9p bnRfY3N0IChpbnRfYXJnX3R5cGUsIGZvcm1hdC0+YiksCisJCQkgICAgYnVp bGRfaW50X2NzdCAoaW50X2FyZ190eXBlLCBmb3JtYXQtPnAgLSAyKSksCisJ CQkgY29uc3RfYXJnMSk7CisKKyAgICAgIC8qIG51bSAmIG1hbnRpc3NhX21h c2sgIT0gMC4gICovCisgICAgICBtYW50aXNzYV9hbnlfc2V0ID0gZm9sZF9i dWlsZDJfbG9jIChsb2MsIE5FX0VYUFIsIGludF90eXBlLCBjb25zdF9hcmcw LAorCQkJICAgIGZvbGRfYnVpbGQyX2xvYyAobG9jLCBCSVRfQU5EX0VYUFIs IGludF9hcmdfdHlwZSwKKwkJCSAgICAgIG1hbnRpc3NhX21hc2ssIGludF9h cmcpKTsKKworICAgICAgLyogKGV4cCAmIDEpICE9IDAuCisJIFRoaXMgY2hl Y2sgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIGV4cCBpcyBhbGwgMCBv ciBhbGwgMS4KKwkgQXQgdGhlIHBvaW50IGl0IGlzIHVzZWQgdGhlIGV4cCBp cyBlaXRoZXIgYWxsIDEgb3IgMCwgc28gY2hlY2tpbmcKKwkgb25lIGJpdCBp cyBlbm91Z2ggdG8gZGlzYW1iaWd1YXRlIGJldHdlZW4gdGhlIHR3by4gICov CisgICAgICBleHBfbHNiX3NldCA9IGZvbGRfYnVpbGQyX2xvYyAobG9jLCBO RV9FWFBSLCBpbnRfdHlwZSwgY29uc3QwLAorCQkJICAgIGZvbGRfYnVpbGQy X2xvYyAobG9jLCBCSVRfQU5EX0VYUFIsIGludF90eXBlLAorCQkJCQkgICAg IGV4cCwgY29uc3QxKSk7CisKKyAgICAgIC8qIENvbWJpbmUgdGhlIHZhbHVl cyB0b2dldGhlci4gICovCisgICAgICBzcGVjaWFscyA9IGZvbGRfYnVpbGQz X2xvYyAobG9jLCBDT05EX0VYUFIsIGludF90eXBlLCB6ZXJvX2NoZWNrLCBm cF96ZXJvLAorCQkgICBmb2xkX2J1aWxkM19sb2MgKGxvYywgQ09ORF9FWFBS LCBpbnRfdHlwZSwgZXhwX2xzYl9zZXQsCisJCSAgICBmb2xkX2J1aWxkM19s b2MgKGxvYywgQ09ORF9FWFBSLCBpbnRfdHlwZSwgbWFudGlzc2FfYW55X3Nl dCwKKwkJICAgICAgSE9OT1JfTkFOUyAobW9kZSkgPyBmcF9uYW4gOiBmcF9u b3JtYWwsCisJCSAgICAgIEhPTk9SX0lORklOSVRJRVMgKG1vZGUpID8gZnBf aW5maW5pdGUgOiBmcF9ub3JtYWwpLAorCQkgICAgZnBfc3Vibm9ybWFsKSk7 CisKKyAgICAgIC8qIFRvcCBsZXZlbCBjb21wYXJlIG9mIHRoZSBtb3N0IGdl bmVyYWwgY2FzZSwKKwkgdHJ5IHRvIHNlZSBpZiBpdCdzIGEgbm9ybWFsIHJl YWwuICAqLworCisgICAgICAvKiBleHBfbWFzayAmIH4xLiAgKi8KKyAgICAg IG1hc2tfY2hlY2sgPSBmb2xkX2J1aWxkMl9sb2MgKGxvYywgQklUX0FORF9F WFBSLCBpbnRfdHlwZSwKKwkJCSAgYnVpbGRfaW50X2NzdCAoaW50X3R5cGUs IGV4cF9tYXNrKSwKKwkJCSAgZm9sZF9idWlsZDFfbG9jIChsb2MsIEJJVF9O T1RfRVhQUiwgaW50X3R5cGUsCisJCQkJCSAgIGNvbnN0MSkpOworCisgICAg ICByZXMgPSBmb2xkX2J1aWxkM19sb2MgKGxvYywgQ09ORF9FWFBSLCBpbnRf dHlwZSwKKwkgICAgICAgZm9sZF9idWlsZDJfbG9jIChsb2MsIE5FX0VYUFIs IGludF90eXBlLCBjb25zdDAsCisJCSAvKiAoZXhwICsgMSkgJiBtYXNrX2No ZWNrLgorCQkgICAgQ2hlY2sgdG8gc2VlIGlmIGV4cCBpcyBub3QgYWxsIDAg b3IgYWxsIDEuICAqLworCQkgZm9sZF9idWlsZDJfbG9jIChsb2MsIEJJVF9B TkRfRVhQUiwgaW50X3R5cGUsCisJCSAgIGZvbGRfYnVpbGQyX2xvYyAobG9j LCBQTFVTX0VYUFIsIGludF90eXBlLCBleHAsIGNvbnN0MSksCisJCSAgICAg bWFza19jaGVjaykpLAorCQkgICBmcF9ub3JtYWwsIHNwZWNpYWxzKTsKIAot ICAvKiBmcGNsYXNzaWZ5KHgpIC0+Ci0gICAgICAgaXNuYW4oeCkgPyBGUF9O QU4gOgotICAgICAgICAgKGZhYnMoeCkgPT0gSW5mID8gRlBfSU5GSU5JVEUg OgotCSAgIChmYWJzKHgpID49IERCTF9NSU4gPyBGUF9OT1JNQUwgOgotCSAg ICAgKHggPT0gMCA/IEZQX1pFUk8gOiBGUF9TVUJOT1JNQUwpKSkuICAqLwor ICAgICAgcmV0dXJuIHJlczsKKyAgICB9CiAKKyAgUkVBTF9WQUxVRV9UWVBF IHI7CisgIHRyZWUgdG1wOworICBjaGFyIGJ1ZlsxMjhdOworICBhcmcgPSBi dWlsdGluX3NhdmVfZXhwciAoZm9sZF9idWlsZDFfbG9jIChsb2MsIEFCU19F WFBSLCB0eXBlLCBhcmcpKTsKICAgdG1wID0gZm9sZF9idWlsZDJfbG9jIChs b2MsIEVRX0VYUFIsIGludGVnZXJfdHlwZV9ub2RlLCBhcmcsCiAJCSAgICAg YnVpbGRfcmVhbCAodHlwZSwgZGNvbnN0MCkpOwogICByZXMgPSBmb2xkX2J1 aWxkM19sb2MgKGxvYywgQ09ORF9FWFBSLCBpbnRlZ2VyX3R5cGVfbm9kZSwK ZGlmZiAtLWdpdCBhL2djYy9yZWFsLmggYi9nY2MvcmVhbC5oCmluZGV4IDU5 YWY1ODBlNzhmMjYzN2JlODRmNzFiOThiNDVlYzY2MTEwNTMyMjIuLjM2ZGVk NTdjZjRkYjdjMzBjOTM1YmRiMjQyMTlhMTY3NDgwZjM5YzggMTAwNjQ0Ci0t LSBhL2djYy9yZWFsLmgKKysrIGIvZ2NjL3JlYWwuaApAQCAtMTYxLDYgKzE2 MSwxNSBAQCBzdHJ1Y3QgcmVhbF9mb3JtYXQKICAgYm9vbCBoYXNfc2lnbmVk X3plcm87CiAgIGJvb2wgcW5hbl9tc2Jfc2V0OwogICBib29sIGNhbm9uaWNh bF9uYW5fbHNic19zZXQ7CisKKyAgLyogVGhpcyBmbGFnIGluZGljYXRlcyB3 aGV0aGVyIHRoZSBmb3JtYXQgY2FuIGJlIHVzZWQgaW4gdGhlIG9wdGltaXpl ZAorICAgICBjb2RlIHBhdGhzIGZvciB0aGUgX19idWlsdGluX2ZwY2xhc3Np ZnkgZnVuY3Rpb24gYW5kIGZyaWVuZHMuCisgICAgIFRoZSBmb3JtYXQgaGFz IHRvIGhhdmUgdGhlIHNhbWUgTmFOIGFuZCBJTkYgcmVwcmVzZW50YXRpb24g YXMgbm9ybWFsCisgICAgIElFRUUgZmxvYXRzIChlLmcuIGV4cCBtdXN0IGhh dmUgYWxsIGJpdHMgc2V0KSwgbW9zdCBzaWduaWZpY2FudCBiaXQgbXVzdCBi ZQorICAgICBzaWduIGJpdCwgZm9sbG93ZWQgYnkgZXhwIGJpdHMgb2YgYXQg bW9zdCAzMiBiaXRzLiAgTGFzdGx5IHRoZSBmbG9hdGluZworICAgICBwb2lu dCBudW1iZXIgbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIGFuIGludGVnZXIu ICBUaGUgYmFzZSBvZiB0aGUgbnVtYmVyCisgICAgIGFsc28gbXVzdCBiZSBi YXNlIDIuICAqLworICBib29sIGlzX2JpbmFyeV9pZWVlX2NvbXBhdGlibGU7 CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiB9OwogCmRpZmYgLS1naXQgYS9nY2Mv cmVhbC5jIGIvZ2NjL3JlYWwuYwppbmRleCA2NmU4OGUyYWQzNjZmNzg0ODYw OWQxNTcwNzRjODA0MjBkNzc4YmNmLi5hOWFkNjMwNzJiNWQ1ODAzZWIwNDhk MzBhZjU1NDZlMGI0NThmODU3IDEwMDY0NAotLS0gYS9nY2MvcmVhbC5jCisr KyBiL2djYy9yZWFsLmMKQEAgLTMwNTIsNiArMzA1Miw3IEBAIGNvbnN0IHN0 cnVjdCByZWFsX2Zvcm1hdCBpZWVlX3NpbmdsZV9mb3JtYXQgPQogICAgIHRy dWUsCiAgICAgdHJ1ZSwKICAgICBmYWxzZSwKKyAgICB0cnVlLAogICAgICJp ZWVlX3NpbmdsZSIKICAgfTsKIApAQCAtMzA3NSw2ICszMDc2LDcgQEAgY29u c3Qgc3RydWN0IHJlYWxfZm9ybWF0IG1pcHNfc2luZ2xlX2Zvcm1hdCA9CiAg ICAgdHJ1ZSwKICAgICBmYWxzZSwKICAgICB0cnVlLAorICAgIHRydWUsCiAg ICAgIm1pcHNfc2luZ2xlIgogICB9OwogCkBAIC0zMDk4LDYgKzMxMDAsNyBA QCBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgbW90b3JvbGFfc2luZ2xlX2Zv cm1hdCA9CiAgICAgdHJ1ZSwKICAgICB0cnVlLAogICAgIHRydWUsCisgICAg dHJ1ZSwKICAgICAibW90b3JvbGFfc2luZ2xlIgogICB9OwogCkBAIC0zMTMy LDYgKzMxMzUsNyBAQCBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgc3B1X3Np bmdsZV9mb3JtYXQgPQogICAgIHRydWUsCiAgICAgZmFsc2UsCiAgICAgZmFs c2UsCisgICAgZmFsc2UsCiAgICAgInNwdV9zaW5nbGUiCiAgIH07CiAMCkBA IC0zMzQzLDYgKzMzNDcsNyBAQCBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQg aWVlZV9kb3VibGVfZm9ybWF0ID0KICAgICB0cnVlLAogICAgIHRydWUsCiAg ICAgZmFsc2UsCisgICAgdHJ1ZSwKICAgICAiaWVlZV9kb3VibGUiCiAgIH07 CiAKQEAgLTMzNjYsNiArMzM3MSw3IEBAIGNvbnN0IHN0cnVjdCByZWFsX2Zv cm1hdCBtaXBzX2RvdWJsZV9mb3JtYXQgPQogICAgIHRydWUsCiAgICAgZmFs c2UsCiAgICAgdHJ1ZSwKKyAgICB0cnVlLAogICAgICJtaXBzX2RvdWJsZSIK ICAgfTsKIApAQCAtMzM4OSw2ICszMzk1LDcgQEAgY29uc3Qgc3RydWN0IHJl YWxfZm9ybWF0IG1vdG9yb2xhX2RvdWJsZV9mb3JtYXQgPQogICAgIHRydWUs CiAgICAgdHJ1ZSwKICAgICB0cnVlLAorICAgIHRydWUsCiAgICAgIm1vdG9y b2xhX2RvdWJsZSIKICAgfTsKIAwKQEAgLTM3MzUsNiArMzc0Miw3IEBAIGNv bnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBpZWVlX2V4dGVuZGVkX21vdG9yb2xh X2Zvcm1hdCA9CiAgICAgdHJ1ZSwKICAgICB0cnVlLAogICAgIHRydWUsCisg ICAgZmFsc2UsCiAgICAgImllZWVfZXh0ZW5kZWRfbW90b3JvbGEiCiAgIH07 CiAKQEAgLTM3NTgsNiArMzc2Niw3IEBAIGNvbnN0IHN0cnVjdCByZWFsX2Zv cm1hdCBpZWVlX2V4dGVuZGVkX2ludGVsXzk2X2Zvcm1hdCA9CiAgICAgdHJ1 ZSwKICAgICB0cnVlLAogICAgIGZhbHNlLAorICAgIGZhbHNlLAogICAgICJp ZWVlX2V4dGVuZGVkX2ludGVsXzk2IgogICB9OwogCkBAIC0zNzgxLDYgKzM3 OTAsNyBAQCBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9leHRlbmRl ZF9pbnRlbF8xMjhfZm9ybWF0ID0KICAgICB0cnVlLAogICAgIHRydWUsCiAg ICAgZmFsc2UsCisgICAgZmFsc2UsCiAgICAgImllZWVfZXh0ZW5kZWRfaW50 ZWxfMTI4IgogICB9OwogCkBAIC0zODA2LDYgKzM4MTYsNyBAQCBjb25zdCBz dHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9leHRlbmRlZF9pbnRlbF85Nl9yb3Vu ZF81M19mb3JtYXQgPQogICAgIHRydWUsCiAgICAgdHJ1ZSwKICAgICBmYWxz ZSwKKyAgICBmYWxzZSwKICAgICAiaWVlZV9leHRlbmRlZF9pbnRlbF85Nl9y b3VuZF81MyIKICAgfTsKIAwKQEAgLTM4OTYsNiArMzkwNyw3IEBAIGNvbnN0 IHN0cnVjdCByZWFsX2Zvcm1hdCBpYm1fZXh0ZW5kZWRfZm9ybWF0ID0KICAg ICB0cnVlLAogICAgIHRydWUsCiAgICAgZmFsc2UsCisgICAgZmFsc2UsCiAg ICAgImlibV9leHRlbmRlZCIKICAgfTsKIApAQCAtMzkxOSw2ICszOTMxLDcg QEAgY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IG1pcHNfZXh0ZW5kZWRfZm9y bWF0ID0KICAgICB0cnVlLAogICAgIGZhbHNlLAogICAgIHRydWUsCisgICAg ZmFsc2UsCiAgICAgIm1pcHNfZXh0ZW5kZWQiCiAgIH07CiAKQEAgLTQxODQs NiArNDE5Nyw3IEBAIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBpZWVlX3F1 YWRfZm9ybWF0ID0KICAgICB0cnVlLAogICAgIHRydWUsCiAgICAgZmFsc2Us CisgICAgZmFsc2UsCiAgICAgImllZWVfcXVhZCIKICAgfTsKIApAQCAtNDIw Nyw2ICs0MjIxLDcgQEAgY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IG1pcHNf cXVhZF9mb3JtYXQgPQogICAgIHRydWUsCiAgICAgZmFsc2UsCiAgICAgdHJ1 ZSwKKyAgICBmYWxzZSwKICAgICAibWlwc19xdWFkIgogICB9OwogDApAQCAt NDUwOSw2ICs0NTI0LDcgQEAgY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IHZh eF9mX2Zvcm1hdCA9CiAgICAgZmFsc2UsCiAgICAgZmFsc2UsCiAgICAgZmFs c2UsCisgICAgZmFsc2UsCiAgICAgInZheF9mIgogICB9OwogCkBAIC00NTMy LDYgKzQ1NDgsNyBAQCBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgdmF4X2Rf Zm9ybWF0ID0KICAgICBmYWxzZSwKICAgICBmYWxzZSwKICAgICBmYWxzZSwK KyAgICBmYWxzZSwKICAgICAidmF4X2QiCiAgIH07CiAKQEAgLTQ1NTUsNiAr NDU3Miw3IEBAIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCB2YXhfZ19mb3Jt YXQgPQogICAgIGZhbHNlLAogICAgIGZhbHNlLAogICAgIGZhbHNlLAorICAg IGZhbHNlLAogICAgICJ2YXhfZyIKICAgfTsKIAwKQEAgLTQ2MzMsNiArNDY1 MSw3IEBAIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBkZWNpbWFsX3Npbmds ZV9mb3JtYXQgPQogICAgIHRydWUsCiAgICAgdHJ1ZSwKICAgICBmYWxzZSwK KyAgICBmYWxzZSwKICAgICAiZGVjaW1hbF9zaW5nbGUiCiAgIH07CiAKQEAg LTQ2NTcsNiArNDY3Niw3IEBAIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBk ZWNpbWFsX2RvdWJsZV9mb3JtYXQgPQogICAgIHRydWUsCiAgICAgdHJ1ZSwK ICAgICBmYWxzZSwKKyAgICBmYWxzZSwKICAgICAiZGVjaW1hbF9kb3VibGUi CiAgIH07CiAKQEAgLTQ2ODEsNiArNDcwMSw3IEBAIGNvbnN0IHN0cnVjdCBy ZWFsX2Zvcm1hdCBkZWNpbWFsX3F1YWRfZm9ybWF0ID0KICAgICB0cnVlLAog ICAgIHRydWUsCiAgICAgZmFsc2UsCisgICAgZmFsc2UsCiAgICAgImRlY2lt YWxfcXVhZCIKICAgfTsKIAwKQEAgLTQ4MjAsNiArNDg0MSw3IEBAIGNvbnN0 IHN0cnVjdCByZWFsX2Zvcm1hdCBpZWVlX2hhbGZfZm9ybWF0ID0KICAgICB0 cnVlLAogICAgIHRydWUsCiAgICAgZmFsc2UsCisgICAgZmFsc2UsCiAgICAg ImllZWVfaGFsZiIKICAgfTsKIApAQCAtNDg0Niw2ICs0ODY4LDcgQEAgY29u c3Qgc3RydWN0IHJlYWxfZm9ybWF0IGFybV9oYWxmX2Zvcm1hdCA9CiAgICAg dHJ1ZSwKICAgICBmYWxzZSwKICAgICBmYWxzZSwKKyAgICBmYWxzZSwKICAg ICAiYXJtX2hhbGYiCiAgIH07CiAMCkBAIC00ODkzLDYgKzQ5MTYsNyBAQCBj b25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgcmVhbF9pbnRlcm5hbF9mb3JtYXQg PQogICAgIHRydWUsCiAgICAgdHJ1ZSwKICAgICBmYWxzZSwKKyAgICBmYWxz ZSwKICAgICAicmVhbF9pbnRlcm5hbCIKICAgfTsKIAwK --_002_VI1PR0801MB2031BC0C70CCAD966A9B2933FFFF0VI1PR0801MB2031_--