From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 94607 invoked by alias); 3 Sep 2019 15:23:10 -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 94594 invoked by uid 89); 3 Sep 2019 15:23:10 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-9.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Received: from mail-eopbgr150055.outbound.protection.outlook.com (HELO EUR01-DB5-obe.outbound.protection.outlook.com) (40.107.15.55) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 03 Sep 2019 15:23:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3sDEZ3n0mmv732u9a1MRdvBBVWfi2eBOxmulIAJEU24=; b=tGK0K/7wZdzMEFSkvVnBynlR5JeIJ4K0w/tsFgz02+KT+dBpiBnGk7nVpo84IT3zEqZWFy/NNoPEZdMEIfcNN+h/YCZOytphuRAtnd1DjR970P3td7qLCTBavXs+qYBAuCROo9M/nswPj31xnFWIPvxeYi23ucgCVOdXjqfdCjI= Received: from VI1PR08CA0109.eurprd08.prod.outlook.com (2603:10a6:800:d4::11) by HE1PR0802MB2601.eurprd08.prod.outlook.com (2603:10a6:3:d8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.18; Tue, 3 Sep 2019 15:23:02 +0000 Received: from VE1EUR03FT025.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::201) by VI1PR08CA0109.outlook.office365.com (2603:10a6:800:d4::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.13 via Frontend Transport; Tue, 3 Sep 2019 15:23:02 +0000 Authentication-Results: spf=temperror (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=temperror action=none header.from=arm.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of arm.com: DNS Timeout) Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT025.mail.protection.outlook.com (10.152.18.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.16 via Frontend Transport; Tue, 3 Sep 2019 15:22:59 +0000 Received: ("Tessian outbound ea3fc1501f20:v27"); Tue, 03 Sep 2019 15:22:57 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: aaf3903e15446109 X-CR-MTA-TID: 64aa7808 Received: from c8e3bae65eea.2 (ip-172-16-0-2.eu-west-1.compute.internal [104.47.1.58]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id F4E548F6-7351-4C57-A6A7-D9EC8D8269F6.1; Tue, 03 Sep 2019 15:22:52 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01lp2058.outbound.protection.outlook.com [104.47.1.58]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id c8e3bae65eea.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384); Tue, 03 Sep 2019 15:22:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LBeH3M3XUYbDQDMnyr2Jw1xFbxb0zqrly5KaP29QInIDDWKuvZm1DlE9seMpmiVVlyiKv8oaRXP3VLX6iMGCjmWYqqrVPeNtIK5QXDH4RuqDn6lv6fmr1mcRY3Xg8cnZhqF3ieg5NN7Tw+lntPsSJbhrELQrI0dTr3j61MkjZaygmU2HXC18PU5UpXqboxXoGswP4GSqIky54K+Ej6P/NQOxjm5+r5MOaj13FUf2UHPxmQOU8l/ClSqTUgTs+O4luX37O4Rk/nblsWjAov8RRUgCmcBT6EFwn0/TpQAg4HkieIDtw0wweyk5fzIgc23tnf0czs/KlME8i1GJJM9VxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3sDEZ3n0mmv732u9a1MRdvBBVWfi2eBOxmulIAJEU24=; b=noDBhxiCVRgl1Tam3zz4Fc3AMDhQ8ph5kJnjUsc8gcyqaZz1r954kDCOma2lYkGJ2nj6T7z50CZNt6fMYN5mlf3Y9iu58wM88fokUB/b8cjV8Liunj0HrB3sgqY29nKmDjZNaMcSeSw3xfo6J591hcnbCe2EDr6QOa4ZCEaa6oa/v2A74XyLRE6sMdMvodJczgpx5U1x6qsSGhzZ7gyhort89j25tevJueAji02xYrdNkqmKysno9UKvZN+LW+SLxQKbhxs4DHa4JnrFzUZ2/SIqYtQ4jZQwJVr+uNxgSYsn5q3Z+N8Ogj18vx/OadqhJl5bT9a/uTFqTJINUBOt8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3sDEZ3n0mmv732u9a1MRdvBBVWfi2eBOxmulIAJEU24=; b=tGK0K/7wZdzMEFSkvVnBynlR5JeIJ4K0w/tsFgz02+KT+dBpiBnGk7nVpo84IT3zEqZWFy/NNoPEZdMEIfcNN+h/YCZOytphuRAtnd1DjR970P3td7qLCTBavXs+qYBAuCROo9M/nswPj31xnFWIPvxeYi23ucgCVOdXjqfdCjI= Received: from DB7PR08MB3660.eurprd08.prod.outlook.com (20.176.239.139) by DB7PR08MB3129.eurprd08.prod.outlook.com (52.134.110.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.20; Tue, 3 Sep 2019 15:22:50 +0000 Received: from DB7PR08MB3660.eurprd08.prod.outlook.com ([fe80::f041:5d7b:3735:4f12]) by DB7PR08MB3660.eurprd08.prod.outlook.com ([fe80::f041:5d7b:3735:4f12%7]) with mapi id 15.20.2220.022; Tue, 3 Sep 2019 15:22:50 +0000 From: Barnaby Wilks To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , "law@redhat.com" , "ian@airs.com" , Tamar Christina , Wilco Dijkstra , Richard Sandiford Subject: Re: [PATCH][GCC] Simplify to single precision where possible for binary/builtin maths operations. Date: Tue, 03 Sep 2019 15:23:00 -0000 Message-ID: <99a19644-9826-ca59-3f8c-f5b93a0fff1a@arm.com> References: <571395fe-921b-5a68-ec8d-84850a732253@arm.com> In-Reply-To: Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Barnaby.Wilks@arm.com; X-Microsoft-Antispam-Untrusted: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DB7PR08MB3129; x-ms-exchange-transport-forked: True x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(366004)(396003)(136003)(39860400002)(54534003)(199004)(189003)(8936002)(31686004)(66066001)(36756003)(5660300002)(66946007)(66446008)(66476007)(66556008)(64756008)(4326008)(71190400001)(71200400001)(6916009)(25786009)(6246003)(53936002)(229853002)(6486002)(6512007)(76176011)(386003)(53546011)(6506007)(102836004)(44832011)(7736002)(14454004)(2906002)(11346002)(26005)(81166006)(81156014)(256004)(8676002)(486006)(2616005)(31696002)(476003)(14444005)(99286004)(52116002)(316002)(478600001)(54906003)(6436002)(6116002)(3846002)(186003)(446003)(86362001)(305945005);DIR:OUT;SFP:1101;SCL:1;SRVR:DB7PR08MB3129;H:DB7PR08MB3660.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info-Original: 3HLqoa+tRlGrVimy4rW+yo0/qaLjUB+7IuhqZ6WVOaUbc+vr5qReFwFFva7VHbK+l9XcmZcN11R+pCU8trPvw7lpxN6/4RhI5oFVAkMRsiHsrSvZdl9hJsTY7FjBP6Ar3zPmI0i1hFXKVHy6/96H7lFUxOAp3wW3oGNdlSVDfZ3AHWHOs3yWlA83fHuiOWK8kC0FvuTTIzYsaskSpEmPTczyxjrCW61gnqzig8ObV3g/1doYB4AZoIWziNkIjjsrLwc7pVib3bAgejPoRzRN1Nahn4epf/KJJT2vg3TQJSrGrxfEdwPQIbzhue3y/b4PSAUM2jHm9ppLPR1TJL3T4pfHXt/k34m0OI84NjIpt266jdwowyqQUJQL8oC+03J+RhYBCMHtxjH2qV2lhUwp/Tge2/j/rMHihV7IACnmRwU= Content-Type: text/plain; charset="utf-8" Content-ID: <012A3AD85CCBB14D9024A58A440F9CE4@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Barnaby.Wilks@arm.com; Return-Path: Barnaby.Wilks@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT025.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 9a596c06-7465-4dfe-96c7-08d730829534 X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg00126.txt.bz2 DQoNCk9uIDkvMy8xOSA5OjIzIEFNLCBSaWNoYXJkIEJpZW5lciB3cm90ZToN Cj4gT24gTW9uLCAyIFNlcCAyMDE5LCBCYXJuYWJ5IFdpbGtzIHdyb3RlOg0K PiANCj4+IEhlbGxvLA0KPj4NCj4+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBh biBvcHRpbWl6YXRpb24gZm9yIG5hcnJvd2luZyBiaW5hcnkgYW5kIGJ1aWx0 aW4NCj4+IG1hdGggb3BlcmF0aW9ucyB0byB0aGUgc21hbGxlc3QgdHlwZSB3 aGVuIHVuc2FmZSBtYXRoIG9wdGltaXphdGlvbnMgYXJlDQo+PiBlbmFibGVk ICh0eXBpY2FsbHkgLU9mYXN0IG9yIC1mZmFzdC1tYXRoKS4NCj4+DQo+PiBD b25zaWRlciB0aGUgZXhhbXBsZToNCj4+DQo+PiAgICAgZmxvYXQgZiAoZmxv YXQgeCkgew0KPj4gICAgICAgcmV0dXJuIDEuMCAvIHNxcnQgKHgpOw0KPj4g ICAgIH0NCj4+DQo+PiAgICAgZjoNCj4+ICAgICAgIGZjdnQJZDAsIHMwDQo+ PiAgICAgICBmbW92CWQxLCAxLjBlKzANCj4+ICAgICAgIGZzcXJ0CWQwLCBk MA0KPj4gICAgICAgZmRpdglkMCwgZDEsIGQwDQo+PiAgICAgICBmY3Z0CXMw LCBkMA0KPj4gICAgICAgcmV0DQo+Pg0KPj4gR2l2ZW4gdGhhdCBhbGwgb3V0 cHV0cyBhcmUgb2YgZmxvYXQgdHlwZSwgd2UgY2FuIGRvIHRoZSB3aG9sZQ0K Pj4gY2FsY3VsYXRpb24gaW4gc2luZ2xlIHByZWNpc2lvbiBhbmQgYXZvaWQg YW55IHBvdGVudGlhbGx5IGV4cGVuc2l2ZQ0KPj4gY29udmVyc2lvbnMgYmV0 d2VlbiBzaW5nbGUgYW5kIGRvdWJsZSBwcmVjaXNpb24uDQo+Pg0KPj4gQWth IHRoZSBleHByZXNzaW9uIHdvdWxkIGVuZCB1cCBsb29raW5nIG1vcmUgbGlr ZQ0KPj4NCj4+ICAgICBmbG9hdCBmIChmbG9hdCB4KSB7DQo+PiAgICAgICBy ZXR1cm4gMS4wZiAvIHNxcnRmICh4KTsNCj4+ICAgICB9DQo+Pg0KPj4gICAg IGY6DQo+PiAgICAgICBmc3FydAlzMCwgczANCj4+ICAgICAgIGZtb3YJczEs IDEuMGUrMA0KPj4gICAgICAgZmRpdglzMCwgczEsIHMwDQo+PiAgICAgICBy ZXQNCj4+DQo+PiBUaGlzIG9wdGltaXphdGlvbiB3aWxsIG5hcnJvdyBjYXN0 cyBhcm91bmQgbWF0aCBidWlsdGlucywgYW5kIGFsc28NCj4+IG5vdCB0cnkg dG8gZmluZCB0aGUgd2lkZXN0IHR5cGUgZm9yIGNhbGN1bGF0aW9ucyB3aGVu IHByb2Nlc3NpbmcgYmluYXJ5DQo+PiBtYXRoIG9wZXJhdGlvbnMgKGlmIHVu c2FmZSBtYXRoIG9wdGltaXphdGlvbnMgYXJlIGVuYWJsZSkuDQo+Pg0KPj4g QWRkZWQgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgbmFycm93ZXIgbWF0aCBidWls dGlucyBhcmUgY2hvc2VuIGFuZA0KPj4gbm8gdW5uZWNlc3NhcnkgY2FzdHMg YXJlIGludHJvZHVjZWQgd2hlbiBhcHByb3ByaWF0ZS4NCj4+DQo+PiBCb290 c3RyYXBwZWQgYW5kIHJlZ3Rlc3RlZCBvbiBhYXJjaDY0IGFuZCB4ODZfNjQg d2l0aCBubyByZWdyZXNzaW9ucy4NCj4+DQo+PiBJIGRvbid0IGhhdmUgd3Jp dGUgYWNjZXNzLCBzbyBpZiBPSyBmb3IgdHJ1bmsgdGhlbiBjYW4gc29tZW9u ZSBjb21taXQgb24NCj4+IG15IGJlaGFsZj8NCj4gDQo+IEBAIC01MDA0LDEw ICs1MDA0LDE4IEBAIERFRklORV9JTlRfQU5EX0ZMT0FUX1JPVU5EX0ZOIChS SU5UKQ0KPiAgICAgICAgICAgICAgICAmJiBuZXd0eXBlID09IHR5cGUNCj4g ICAgICAgICAgICAgICAgJiYgdHlwZXNfbWF0Y2ggKG5ld3R5cGUsIHR5cGUp KQ0KPiAgICAgICAgICAgICAgKG9wIChjb252ZXJ0Om5ld3R5cGUgQDEpIChj b252ZXJ0Om5ld3R5cGUgQDIpKQ0KPiAtICAgICAgICAgICAod2l0aCB7IGlm IChUWVBFX1BSRUNJU0lPTiAodHkxKSA+IFRZUEVfUFJFQ0lTSU9OIChuZXd0 eXBlKSkNCj4gKyAgICAgICAgICAgKHdpdGgNCj4gKyAgICAgICAgICAgICB7 DQo+ICsgICAgICAgICAgICAgICBpZiAoIWZsYWdfdW5zYWZlX21hdGhfb3B0 aW1pemF0aW9ucykNCj4gKyAgICAgICAgICAgICAgICAgew0KPiArICAgICAg ICAgICAgICAgICAgIGlmIChUWVBFX1BSRUNJU0lPTiAodHkxKSA+IFRZUEVf UFJFQ0lTSU9OIChuZXd0eXBlKSkNCj4gICAgICAgICAgICAgICAgICAgICAg ICBuZXd0eXBlID0gdHkxOw0KPiArDQo+ICAgICAgICAgICAgICAgICAgICAg IGlmIChUWVBFX1BSRUNJU0lPTiAodHkyKSA+IFRZUEVfUFJFQ0lTSU9OIChu ZXd0eXBlKSkNCj4gLSAgICAgICAgICAgICAgICAgICAgIG5ld3R5cGUgPSB0 eTI7IH0NCj4gKyAgICAgICAgICAgICAgICAgICAgIG5ld3R5cGUgPSB0eTI7 DQo+ICsgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICB9DQo+ ICsNCj4gICAgICAgICAgICAgICAgIC8qIFNvbWV0aW1lcyB0aGlzIHRyYW5z Zm9ybWF0aW9uIGlzIHNhZmUgKGNhbm5vdA0KPiAgICAgICAgICAgICAgICAg ICAgY2hhbmdlIHJlc3VsdHMgdGhyb3VnaCBhZmZlY3RpbmcgZG91YmxlIHJv dW5kaW5nDQo+ICAgICAgICAgICAgICAgICAgICBjYXNlcykgYW5kIHNvbWV0 aW1lcyBpdCBpcyBub3QuICBJZiBORVdUWVBFIGlzDQo+IA0KPiBUaGUgQ2hh bmdlTG9nIGRvZXNuJ3QgbWVudGlvbiB0aGlzIGNoYW5nZSBhbmQgSSB3b25k ZXIgd2hhdCBpdCBpcw0KPiBmb3IgLSBsYXRlciBmbGFnX3Vuc2FmZV9tYXRo X29wdGltaXphdGlvbnMgaXMgY2hlY2tlZCwgaW4gcGFydGljdWxhcg0KPiAN Cj4gICAgICAgICAgICAgICAgICAgICAmJiAoZmxhZ191bnNhZmVfbWF0aF9v cHRpbWl6YXRpb25zDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChU WVBFX1BSRUNJU0lPTiAobmV3dHlwZSkgPT0gVFlQRV9QUkVDSVNJT04NCj4g KHR5cGUpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByZWFs X2Nhbl9zaG9ydGVuX2FyaXRobWV0aWMgKFRZUEVfTU9ERQ0KPiAoaXR5cGUp LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUWVBFX01PREUNCj4gKHR5cGUpKQ0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWV4Y2Vzc19wcmVjaXNp b25fdHlwZSAobmV3dHlwZSkpKQ0KPiANCj4gbm90ZSB0aGUgIWV4Y2Vzc19w cmVjaXNpb25fdHlwZSAobmV3dHlwZSkgd2hpY2ggeW91IGZhaWwgdG8gY2hl Y2sNCj4gYmVsb3cuDQoNClRoaXMgY2hhbmdlIHByZXZlbnRzIHRoZSBwYXR0 ZXJuIGZyb20gY2FzdGluZyB0aGUgb3BlcmFuZHMgdG8gdGhlIHdpZGVzdCAN CnR5cGUgKHRoZSB3aWRlc3QgYmV0d2VlbiB0aGUgdHlwZSBvZiB0aGUgb3Bl cmFuZHMgYW5kIHRoZSB0eXBlIG9mIHRoZSANCmV4cHJlc3Npb24gYXMgYSB3 aG9sZSkgaWYgdW5zYWZlIG1hdGggb3B0aW1pemF0aW9ucyBhcmUgZW5hYmxl ZC4NCldoZXJlYXMgdGhlIHNlY29uZCBjaGVjayBvZiBmbGFnX3Vuc2FmZV9t YXRoX29wdGltaXphdGlvbnMgaXMgYSBzaG9ydGN1dCANCnRvIGVuYWJsZSB0 aGUgdHJhbnNmb3JtYXRpb24gYXMgYSB3aG9sZSwgYW5kIGRvZXMgbm90IGFm ZmVjdCB0aGUgdHlwZSANCnRoYXQgdGhlIG9wZXJhbmRzIGFyZSBiZWluZyBj YXN0IHRvLg0KDQpXaXRob3V0IHRoZSBmaXJzdCBjaGVjayB0aGVuIHRoZSBl eHByZXNzaW9uIHdpbGwgYWx3YXlzIHVzZSB0aGUgd2lkZXN0IA0KdHlwZSwg cmVzdWx0aW5nIGluIHVubmVjZXNzYXJ5IGNhc3RzLiBGb3IgZXhhbXBsZQ0K DQogICBmbG9hdCBmIChmbG9hdCB4LCBmbG9hdCB5KSB7DQogICAgIGRvdWJs ZSB6ID0gMS4wIC8geDsNCiAgICAgcmV0dXJuIHogKiB5Ow0KICAgfQ0KDQpX aWxsIGdlbmVyYXRlIChXaXRoIC1PZmFzdCkNCg0KICAgZmxvYXQgRC4zNDU5 Ow0KICAgZG91YmxlIHo7DQoNCiAgIF8xID0gKGRvdWJsZSkgeDsNCiAgIHog PSAxLjBlKzAgLyBfMTsNCiAgIF8yID0gKGRvdWJsZSkgeTsNCiAgIF8zID0g eiAqIF8yOw0KICAgRC4zNDU5ID0gKGZsb2F0KSBfMzsNCiAgIHJldHVybiBE LjM0NTk7DQoNCk5vdGUgaG93IHRoZSBwYXJhbWV0ZXJzIGFyZSBjYXN0IHRv IGRvdWJsZXMsIHRoZSB3aG9sZSBjYWxjdWxhdGlvbiBpcyANCmRvbmUgaW4g ZG91YmxlIHByZWNpc2lvbiBhbmQgdGhlbiBjYXN0IG91dCB0byBzaW5nbGUg cHJlY2lzaW9uIGF0IHRoZSANCmVuZC4gKGJlY2F1c2UgZG91YmxlIGlzIHRo ZSB3aWRlc3QgdHlwZSBpbiB0aGUgZXhwcmVzc2lvbikNCg0KV2hlcmVhcyBp ZiB5b3UgaW5jbHVkZSB0aGUgZmlyc3QgZmxhZ191bnNhZmVfbWF0aF9vcHRp bWl6YXRpb25zIGNoZWNrLCANCmFuZCBwcmV2ZW50IHRoZSB3aWRlbmluZyB0 aGVuIHlvdSBnZXQNCg0KICAgZmxvYXQgRC4zNDU5Ow0KICAgZG91YmxlIHo7 DQoNCiAgIF8xID0gKGRvdWJsZSkgeDsNCiAgIHogPSAxLjBlKzAgLyBfMTsN CiAgIF8yID0gKGZsb2F0KSB6Ow0KICAgRC4zNDU5ID0geSAqIF8yOw0KICAg cmV0dXJuIEQuMzQ1OTsNCg0KV2hlcmUgb25seSAiZG91YmxlIHogPSAxLjAg LyB4IiBoYXBwZW5zIGluIGRvdWJsZSBwcmVjaXNpb24sIGFuZCB0aGUgDQpy ZXN0IG9mIHRoZSBjYWxjdWxhdGlvbiBpcyBkb25lIGluIHNpbmdsZSBwcmVj aXNpb24sIHJlZHVjaW5nIHRoZSBhbW91bnQgDQpvZiBjYXN0cy4NCg0KVGhl IGJlbmVmaXRzIGhlcmUgY2FuIGJlIHNlZW4gaW4gdGhlIGdlbmVyYXRlZCBj b2RlOg0KV2l0aG91dCB0aGUgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRp b25zIGNoZWNrDQoNCiAgICAgICAgIGZjdnQgICAgZDEsIHMxDQogICAgICAg ICBmY3Z0ICAgIGQwLCBzMA0KICAgICAgICAgZmRpdiAgICBkMCwgZDEsIGQw DQogICAgICAgICBmY3Z0ICAgIHMwLCBkMA0KICAgICAgICAgcmV0DQoNCldp dGggdGhlIGNoZWNrDQoNCiAgICAgICAgIGZkaXYgICAgczAsIHMxLCBzMA0K ICAgICAgICAgcmV0DQoNCj4gDQo+IEBAIC01NjU0LDMgKzU2NjIsMjQgQEAg REVGSU5FX0lOVF9BTkRfRkxPQVRfUk9VTkRfRk4gKFJJTlQpDQo+ICAgKHNp bXBsaWZ5DQo+ICAgICh2ZWNfcGVybSB2ZWNfc2FtZV9lbGVtX3BAMCBAMCBA MSkNCj4gICAgQDApDQo+ICsNCj4gKy8qIENvbnZlcnQgZXhwcmVzc2lvbnMg b2YgdGhlIGZvcm0NCj4gKyAgICh4KSBtYXRoX2NhbGwxICgoeSkgeikgd2hl cmUgKHgpIGFuZCB6IGFyZSB0aGUgc2FtZSB0eXBlLCBpbnRvDQo+ICsgICBt YXRoX2NhbGwyICh6KSwgd2hlcmUgbWF0aF9jYWxsMiBpcyB0aGUgbWF0aCBi dWlsdGluIGZvcg0KPiArICAgdHlwZSB4LiAgVHlwZSB4IChhbmQgdGhlcmVm b3JlIHR5cGUgb2YgeikgbXVzdCBiZSBhIGxvd2VyIHByZWNpc2lvbg0KPiAr ICAgdGhhbiB5L21hdGhfY2FsbDEuICAqLw0KPiArKGlmIChmbGFnX3Vuc2Fm ZV9tYXRoX29wdGltaXphdGlvbnMgJiYgIWZsYWdfZXJybm9fbWF0aCkNCj4g KyAgKGZvciBvcCAoQ09TSCBFWFAgRVhQMTAgRVhQMiBFWFBNMSBHQU1NQSBK MCBKMSBMR0FNTUENCj4gKyAgICAgICAgICBQT1cxMCBTSU5IIFRHQU1NQSBZ MCBZMSBBQ09TIEFDT1NIIEFTSU4gQVNJTkgNCj4gKyAgICAgICAgICBBVEFO IEFUQU5IIENCUlQgQ09TIEVSRiBFUkZDIExPRyBMT0cxMCBMT0cyDQo+ICsg ICAgICAgICAgTE9HMVAgU0lOIFRBTiBUQU5IIFNRUlQgRkFCUyBMT0dCKQ0K PiArICAgIChzaW1wbGlmeQ0KPiArICAgICAgKGNvbnZlcnQgKG9wQDAgKGNv bnZlcnRAMSBAMikpKQ0KPiArICAgICAgIChpZiAoU0NBTEFSX0ZMT0FUX1RZ UEVfUCAodHlwZSkgJiYgU0NBTEFSX0ZMT0FUX1RZUEVfUCAoVFJFRV9UWVBF DQo+IChAMSkpDQo+ICsgICAgICAgICAgICAgJiYgU0NBTEFSX0ZMT0FUX1RZ UEVfUCAoVFJFRV9UWVBFIChAMikpDQo+ICsgICAgICAgICAgICAgJiYgdHlw ZXNfbWF0Y2ggKHR5cGUsIFRSRUVfVFlQRSAoQDIpKQ0KPiArICAgICAgICAg ICAgICYmIFRZUEVfUFJFQ0lTSU9OICh0eXBlKSA8IFRZUEVfUFJFQ0lTSU9O IChUUkVFX1RZUEUgKEAxKSkpDQo+ICsgICAgICAgICAod2l0aCB7IGVudW0g YnVpbHRfaW5fZnVuY3Rpb24gZmNvZGUgPSBidWlsdGluX21hdGhmbl9jb2Rl IChAMCk7DQo+ICsgICAgICAgICAgICAgICAgIHRyZWUgZm4gPSBtYXRoZm5f YnVpbHRfaW4gKHR5cGUsIGZjb2RlLCBmYWxzZSk7IH0NCj4gKyAgICAgICAg ICAgKGlmIChmbikNCj4gKyAgICAgICAgICAgICAoY29udmVydCB7IGJ1aWxk X2NhbGxfZXhwciAoZm4sIDEsIEAyKTsgfSkpKSkpKSkNCj4gDQo+IFRoaXMg KGNvbnZlcnQgeyBidWlsZF9jYWxsX2V4cHIgKC4uKSB9ICkgb25seSB3b3Jr cyBvbiBHRU5FUklDLg0KDQpJIGRpZG4ndCByZWFsaXplIHRoYXQgYnVpbGRf Y2FsbF9leHByIG9ubHkgd29ya3Mgb24gR0VORVJJQywgSSB0b29rDQp0aGF0 IHNuaXBwZXQgZnJvbSBjb252ZXJ0X3RvX3JlYWxfMSBpbiBjb252ZXJ0LmMs IHdoaWNoIGRvZXMgYSBzaW1pbGFyIA0KdGhpbmcsIGJ1dCBpcyBub3QgdmVy eSBnZW5lcmljIGFuZCB3b250IGNvdmVyIGFsbCB0aGUgY2FzZXMuDQpJIHN1 cHBvc2UgdGhpcyBkb2Vzbid0IG1hdHRlciBpZiB0aGUgdHJhbnNmb3JtYXRp b24gaXMgYmVpbmcgbW92ZWQgb3V0IA0Kb2YgbWF0Y2gucGQgaW50byB0aGUg YmFja3Byb3AgcGFzcywgb3IgaWYgbm90IGlzIHRoZXJlIGEgbW9yZSBnZW5l cmljIA0KKGlmIHlvdSBleGN1c2UgdGhlIHB1bikgd2F5IHRvIGNyZWF0ZSBm dW5jdGlvbiBjYWxsIG5vZGVzIGZvciBHSU1QTEUgJiANCkdFTkVSSUM/DQoN Cj4gSSBhbHNvIHdvbmRlciB3aHkgeW91IG5lZWRlZCB0aGUgbWF0aGZuX2J1 aWx0X2luIGNoYW5nZS4NCg0KQmVjYXVzZSBzb21lIGJ1aWx0aW5zIGFyZSBu b3QgbWFya2VkIGFzIGltcGxpY2l0IC0gb3IgbW9yZSBzcGVjaWZpY2FsbHkg DQpyZXNlcnZlZCBpbiBDOTAgYW5kIGFjdHVhbGx5IHNwZWNpZmllZCBpbiBD OTkuDQpUbyBiZSBob25lc3QsIEkgd2Fzbid0IHJlYWxseSBoYXBweSB3aXRo IGRvaW5nIHRoaXMsIGFzIEknbSBub3Qgc3VyZSBvZiANCml0J3MgaW1wbGlj YXRpb25zLCBzbyBpZiB5b3UgaGF2ZSBhIGJldHRlciB3YXkgdG8gZG8gdGhp cyB0aGVuIHRoYXQgDQp3b3VsZCBiZSBtdWNoIGFwcHJlY2lhdGVkPw0KIEZy b20gd2hhdCBJIGNhbiB0ZWxsIGl0cyB0aGUgZmxvYXQgdmVyc2lvbnMgb2Yg dGhlIG1hdGggYnVpbHRpbnMgdGhhdCANCmFyZSBub3QgaW1wbGljaXQsIGFu ZCB0aGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb3N0IGNvbW1v bmx5IA0KbmVlZGVkIHRvIG5hcnJvdyB0by4NCg0KPiBJZiB5b3UgbG9vayBh dCBvdGhlciBleGFtcGxlcyBpbiBtYXRjaC5wZCB5b3UnZCBzZWUgeW91IHNo b3VsZCBoYXZlDQo+IHVzZWQgc3RoIGxpa2UNCj4gDQo+ICAgKGZvciBvcCAo QlVJTFRfSU5fQ09TSCBCVUlMVF9JTl9FWFAgLi4uKQ0KPiAgICAgICAgb3Bm IChCVUlMVF9JTl9DT1NIRiBCVUlMVF9JTl9FWFBGIC4uLikNCj4gICAgIChz aW1wbGlmeQ0KPiAuLi4NCj4gICAgICAgIChpZiAodHlwZXNfbWF0Y2ggKHR5 cGUsIGZsb2F0X3R5cGVfbm9kZSkpDQo+ICAgICAgICAgIChvcGYgQDIpKSkN Cj4gDQo+IGFuZCB5b3UgaGF2ZSB0byByZXBlYXQgdGhpcyBmb3IgdGhlIENP U0hMIChsb25nIGRvdWJsZSkgY2FzZQ0KPiB3aXRoIGFwcHJvcHJpYXRlIG9w ZCBhbmQgb3BmIGxpc3RzLiAgSW4gdGhlb3J5LCBpZiB3ZSdkIGV4dGVuZA0K PiBnZW5tYXRjaCB0byAndHJhbnNmb3JtJyBidWlsdGluIGZ1bmN0aW9uIGtp bmRzIHRoYXQgY291bGQgYmUNCj4gZG9uZSBwcmV0dGllciBsaWtlIGZvciBl eGFtcGxlIHdpdGgNCg0KV2h5IHdvdWxkIHRoaXMgbmVlZCB0byBiZSB0aGUg Y2FzZT8gVGhlIGNvZGUgYWxyZWFkeSBkb2VzIHByYWN0aWFsbHkgdGhlIA0K c2FtZSB0aGluZyBieSBtYXRjaGluZyBvbiBhbGwgdGhlIGJ1aWx0aW5zIGFu ZCB0aGVuIHRyYW5zZm9ybWluZyBkb3duIHRvIA0KdGhlIG5hcnJvd2VzdCB0 eXBlIHdpdGggdGhlIGJ1aWx0aW5fbWF0aGZuX2NvZGUvbWF0aGZuX2J1aWx0 X2luIGNvbWJpbmF0aW9uLg0KDQo+ICAgKGZvciBvcCAoQ09TSCBFWFAgLi4u KQ0KPiAgICAoc2ltcGxpZnkNCj4gLi4uDQo+ICAgICAob3A6dHlwZSBAMikp DQo+IA0KPiB3aGljaCBJJ2Qga2luZC1vZiBsaWtlLiAgTm90ZSBpdCdzIG5v dCBhcyBzaW1wbGUgYXMgcGFzc2luZw0KPiAndHlwZScgdG8gbWF0aGZuX2J1 aWx0X2luIHNpbmNlIHRoYXQgZXhwZWN0cyBsaXRlcmFsDQo+IGRvdWJsZV90 eXBlX25vZGUgYW5kIGZyaWVuZHMgYnV0IHdlIGNvdWxkIHVzZSBhIHtnaW1w bGUsZ2VuZXJpY30tbWF0Y2guYw0KPiBwcml2YXRlIGhlbHBlciBmb3IgdGhh dC4NCg0KV291bGQgInR5cGUiIG5vdCBiZSBhIGRvdWJsZV90eXBlX25vZGUg KG9yIHJlbGF0ZWQpIGxpdGVyYWwgYWxyZWFkeT8NCklmIG1hdGhmbl9idWls dF9pbiBkb2VzIG5vdCByZWNvZ25pc2UgdGhlIGdpdmVuIHR5cGUgdGhlbiBp dCB3aWxsIGp1c3QgDQpzcGl0IG91dCBOVUxMX1RSRUUsIHdoaWNoIGlzIGNo ZWNrZWQgYnk6DQoNCiAgICsgICAgICAgICAgICAgICAgIHRyZWUgZm4gPSBt YXRoZm5fYnVpbHRfaW4gKHR5cGUsIGZjb2RlLCBmYWxzZSk7IH0NCiAgICsg ICAgICAgICAgIChpZiAoZm4pDQogICArICAgICAgICAgICAgIChjb252ZXJ0 IHsgYnVpbGRfY2FsbF9leHByIChmbiwgMSwgQDIpOyB9KSkpKSkpKQ0KDQoN CkFwb2xvZ2llcyBpZiBhbnkgb2YgdGhlc2Ugc2VlbSBvYnZpb3VzIHF1ZXN0 aW9ucyAtIEknbSBxdWl0ZSBuZXcgdG8gR0NDIA0KaW50ZXJuYWxzLg0KDQpS ZWdhcmRzLA0KQmFybmV5DQoNCj4gTm93IC0gYXMgYSBnZW5lcmFsIGNvbW1l bnQgSSB0aGluayBhZGRpbmcgdGhpcyBraW5kIG9mIG5hcnJvd2luZyBpcw0K PiBnb29kIGJ1dCBkb2luZyBpdCB2aWEgbWF0Y2gucGQgcGF0dGVybnMgaXMg cXVpdGUgbGltaXRpbmcgLSBldmVudHVhbGx5DQo+IHRoZSBiYWNrcHJvcCBw YXNzIHdvdWxkIGJlIGEgZml0IGZvciBwcm9wYWdhdGluZyAibmVlZGVkIHBy ZWNpc2lvbiINCj4gYW5kIG5hcnJvd2luZyBmZWVkaW5nIHN0bXRzIGFjY29y ZGluZ2x5IGluIGEgbW9yZSBnZW5lcmFsIHdheT8NCj4gUmljaGFyZCBjYW4g cHJvYmFibHkgdGVsbCBxdWlja2VzdCBpZiBpdCBpcyBmZWFzaWJsZSBpbiB0 aGF0IGZyYW1ld29yay4NCj4gDQo+IFRoYW5rcywNCj4gUmljaGFyZC4NCj4g DQo+IA0KPj4gUmVnYXJkcywNCj4+IEJhcm5leQ0KPj4NCj4+IGdjYy9DaGFu Z2VMb2c6DQo+Pg0KPj4gMjAxOS0wOS0wMiAgQmFybmFieSBXaWxrcyAgPGJh cm5hYnkud2lsa3NAYXJtLmNvbT4NCj4+DQo+PiAJKiBidWlsdGlucy5jICht YXRoZm5fYnVpbHRfaW4pOiBFeHBvc2UgZmluZCBpbXBsaWNpdCBidWlsdGlu IHBhcmFtZXRlci4NCj4+IAkqIGJ1aWx0aW5zLmggKG1hdGhmbl9idWlsdF9p bik6IExpa2V3aXNlLg0KPj4gCSogbWF0Y2gucGQ6IEFkZCBleHByZXNzaW9u cyBmb3Igc2ltcGxpZnlpbmcgYnVpbHRpbiBhbmQgYmluYXJ5DQo+PiAJbWF0 aCBleHByZXNzaW9ucy4NCj4+DQo+PiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxv ZzoNCj4+DQo+PiAyMDE5LTA5LTAyICBCYXJuYWJ5IFdpbGtzICA8YmFybmFi eS53aWxrc0Bhcm0uY29tPg0KPj4NCj4+IAkqIGdjYy5kZy9mb2xkLXNpbmds ZS1wcmVjaXNpb24uYzogTmV3IHRlc3QuDQo+Pg0KPiANCg==