From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70042.outbound.protection.outlook.com [40.107.7.42]) by dpdk.org (Postfix) with ESMTP id CF97E1D90 for ; Sun, 3 Dec 2017 13:38:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=pcdfJ1V63M2BmIy0bVZmD4JGAxhninKaWLwWQ0ofhWM=; b=KPvSu5i1qKZrlAJrrucL2VKeebfZjpp0Ks5L9y19LOSdxXPd9ElDq85GU6FoXHdA6+VL7dTrlL1dQmRwKu9FOsocTw+jYhAalQpGf5CvsSYPyOD2pmakkEZFNCqtJa6UmzVUwASNhk6cRkF7mNcv7X0QbiQAIQTmVjUG5mgmIXI= Received: from HE1PR08MB2809.eurprd08.prod.outlook.com (10.170.246.148) by HE1PR0801MB1353.eurprd08.prod.outlook.com (10.167.248.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Sun, 3 Dec 2017 12:38:35 +0000 Received: from HE1PR08MB2809.eurprd08.prod.outlook.com ([fe80::54fd:d63d:4cce:8f32]) by HE1PR08MB2809.eurprd08.prod.outlook.com ([fe80::54fd:d63d:4cce:8f32%13]) with mapi id 15.20.0282.010; Sun, 3 Dec 2017 12:38:35 +0000 From: Herbert Guan To: Pavan Nikhilesh Bhagavatula , Jianbo Liu CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] arch/arm: optimization for memcpy on AArch64 Thread-Index: AQHTZ1RSZ4k73Wd8i0Ow+NbtDaNy7KMvsOgAgAHWZ0A= Date: Sun, 3 Dec 2017 12:38:35 +0000 Message-ID: References: <1511768985-21639-1-git-send-email-herbert.guan@arm.com> <20171202073300.yozet72nnvlwrkgj@Pavan-LT> In-Reply-To: <20171202073300.yozet72nnvlwrkgj@Pavan-LT> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Herbert.Guan@arm.com; x-originating-ip: [218.92.220.194] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1353; 6:kV3gf0JNSdTT7Heff7nLG+ohtECZJ+jEZC4zd9vSibx5R3Rx2t4CJL1lTtYnjK1QDKHCbp6ZtblVNTA1yYhB3gSFcLMnyQ5UjBaIjMzMbYJ6QPYqbapPDyws2EK+6u0LtMFHza59IhlqhbTyNN8fHVW4P/75V+aUxBvEiEF3ImMtfYjf5n5uljfEkTmxPH9G1FkvNZtZKGdt9UYichRDOiebfUMjf+AEdkoOZbq9Bp53HsjThj+nIGA6ERmA1pLifz0IDxHyoqDzxZN2qfGxcIAgkJ6XZ1+qdLKuizuCdMPKTYDAAaxjdmY/8hqyvafsxiwEZmEC5b98w4zReSCS5QOUcK3ol3gRmt8iOHL5aHI=; 5:gKfOnnyih/daDSAKB+CHfeWp6kss0ZdgFcncNCaP0B788XPjZWC4mAf5e5tZxBiBDAd45e73pv3GMFeSmA0MdbaTl/gjQUT1EvjkKQdhyjYLTpuJTg/6iNuiBlHoYqVaC8WtLwFTrqbQbCSYB6FfBXuK9gcxvRWZri39GT+mA+U=; 24:bPpIHaZE4AUip3uPtiZJc+W/aKTMYh3dy7iZfA8FZJQZFRSXHv23Kt/6wvRgR/tWLwdtAjoG3gKAFnAxrDbmeQ3IPqECMEg0ij+BWmMqcpE=; 7:qIRgzBa2k8hBJFr2ANwkGtrQPAGGe4RsMXgnT9aTDDpINu+YigYLeStX70ew05h+N6KsOyYKz8PhepqY4h82f3l3FJHvHtsBPSeraNdHQhXoFSxHly03C3JU64XcloKN6yLfMZFzFd7Zk9nbw8Kcv/lyiovIYUyDBMjzpEAzBC6uZJywVHWpRJVP3ax8FRSLruJGVpvj6/zxVtH8/u1IF7JkCER1PrbVzGVHN+iIwzSd8nLnjb3kYLqzm6tuo9kw x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 36799dd3-7c92-419b-ec17-08d53a4ac520 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603286); SRVR:HE1PR0801MB1353; x-ms-traffictypediagnostic: HE1PR0801MB1353: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(8121501046)(5005006)(3002001)(3231022)(10201501046)(93006095)(93001095)(6055026)(6041248)(20161123558100)(20161123560025)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(6072148)(201708071742011); SRVR:HE1PR0801MB1353; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0801MB1353; x-forefront-prvs: 05102978A2 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(366004)(346002)(39860400002)(24454002)(189002)(40434004)(199003)(13464003)(97736004)(66066001)(575784001)(86362001)(101416001)(105586002)(106356001)(5890100001)(2900100001)(33656002)(3660700001)(2906002)(3280700002)(55016002)(478600001)(25786009)(72206003)(14454004)(189998001)(6246003)(53546010)(5660300001)(8936002)(6636002)(99286004)(9686003)(74316002)(102836003)(6116002)(3846002)(305945005)(8676002)(2950100002)(53936002)(316002)(81166006)(81156014)(110136005)(54356011)(76176011)(6506006)(7696005)(6436002)(229853002)(68736007)(5250100002)(7736002)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1353; H:HE1PR08MB2809.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36799dd3-7c92-419b-ec17-08d53a4ac520 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Dec 2017 12:38:35.0490 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1353 Subject: Re: [dpdk-dev] [PATCH] arch/arm: optimization for memcpy on AArch64 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 Dec 2017 12:38:37 -0000 UGF2YW4sDQoNClRoYW5rcyBmb3IgcmV2aWV3IGFuZCBjb21tZW50cy4gIFBsZWFzZSBmaW5kIG15 IGNvbW1lbnRzIGlubGluZSBiZWxvdy4NCg0KQmVzdCByZWdhcmRzLA0KSGVyYmVydA0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFBhdmFuIE5pa2hpbGVzaCBCaGFnYXZh dHVsYQ0KPiBbbWFpbHRvOnBiaGFnYXZhdHVsYUBjYXZpdW1uZXR3b3Jrcy5jb21dDQo+IFNlbnQ6 IFNhdHVyZGF5LCBEZWNlbWJlciAyLCAyMDE3IDE1OjMzDQo+IFRvOiBIZXJiZXJ0IEd1YW4gPEhl cmJlcnQuR3VhbkBhcm0uY29tPjsgSmlhbmJvIExpdQ0KPiA8SmlhbmJvLkxpdUBhcm0uY29tPg0K PiBDYzogZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSF0gYXJj aC9hcm06IG9wdGltaXphdGlvbiBmb3IgbWVtY3B5IG9uDQo+IEFBcmNoNjQNCj4NCj4gT24gTW9u LCBOb3YgMjcsIDIwMTcgYXQgMDM6NDk6NDVQTSArMDgwMCwgSGVyYmVydCBHdWFuIHdyb3RlOg0K PiA+IFRoaXMgcGF0Y2ggcHJvdmlkZXMgYW4gb3B0aW9uIHRvIGRvIHJ0ZV9tZW1jcHkoKSB1c2lu ZyAncmVzdHJpY3QnDQo+ID4gcXVhbGlmaWVyLCB3aGljaCBjYW4gaW5kdWNlIEdDQyB0byBkbyBv cHRpbWl6YXRpb25zIGJ5IHVzaW5nIG1vcmUNCj4gPiBlZmZpY2llbnQgaW5zdHJ1Y3Rpb25zLCBw cm92aWRpbmcgc29tZSBwZXJmb3JtYW5jZSBnYWluIG92ZXIgbWVtY3B5KCkNCj4gPiBvbiBzb21l IEFBcmNoNjQgcGxhdGZvcm1zL2Vudmlyb21lbnRzLg0KPiA+DQo+ID4gVGhlIG1lbW9yeSBjb3B5 IHBlcmZvcm1hbmNlIGRpZmZlcnMgYmV0d2VlbiBkaWZmZXJlbnQgQUFyY2g2NA0KPiA+IHBsYXRm b3Jtcy4gQW5kIGEgbW9yZSByZWNlbnQgZ2xpYmMgKGUuZy4gMi4yMyBvciBsYXRlcikgY2FuIHBy b3ZpZGUgYQ0KPiA+IGJldHRlciBtZW1jcHkoKSBwZXJmb3JtYW5jZSBjb21wYXJlZCB0byBvbGQg Z2xpYmMgdmVyc2lvbnMuIEl0J3MNCj4gPiBhbHdheXMgc3VnZ2VzdGVkIHRvIHVzZSBhIG1vcmUg cmVjZW50IGdsaWJjIGlmIHBvc3NpYmxlLCBmcm9tIHdoaWNoDQo+ID4gdGhlIGVudGlyZSBzeXN0 ZW0gY2FuIGdldCBiZW5lZml0LiBJZiBmb3Igc29tZSByZWFzb24gYW4gb2xkIGdsaWJjIGhhcw0K PiA+IHRvIGJlIHVzZWQsIHRoaXMgcGF0Y2ggaXMgcHJvdmlkZWQgZm9yIGFuIGFsdGVybmF0aXZl Lg0KPiA+DQo+ID4gVGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gaW1wcm92ZSBtZW1vcnkgY29weSBv biBzb21lIEFBcmNoNjQNCj4gcGxhdGZvcm1zLA0KPiA+IHdoZW4gYW4gb2xkIGdsaWJjIChlLmcu IDIuMTksIDIuMTcuLi4pIGlzIGJlaW5nIHVzZWQuDQo+ID4gSXQgaXMgZGlzYWJsZWQgYnkgZGVm YXVsdCBhbmQgbmVlZHMgIlJURV9BUkNIX0FSTTY0X01FTUNQWSINCj4gPiBkZWZpbmVkIHRvIGFj dGl2YXRlLiBJdCdzIG5vdCBhbHdheXMgcHJvdmluZyBiZXR0ZXIgcGVyZm9ybWFuY2UgdGhhbg0K PiA+IG1lbWNweSgpIHNvIHVzZXJzIG5lZWQgdG8gcnVuIERQREsgdW5pdCB0ZXN0ICJtZW1jcHlf cGVyZl9hdXRvdGVzdCINCj4gPiBhbmQgY3VzdG9taXplIHBhcmFtZXRlcnMgaW4gImN1c3RvbWl6 YXRpb24gc2VjdGlvbiIgaW4gcnRlX21lbWNweV82NC5oDQo+ID4gZm9yIGJlc3QgcGVyZm9ybWFu Y2UuDQo+ID4NCj4gPiBDb21waWxlciB2ZXJzaW9uIHdpbGwgYWxzbyBpbXBhY3QgdGhlIHJ0ZV9t ZW1jcHkoKSBwZXJmb3JtYW5jZS4NCj4gPiBJdCdzIG9ic2VydmVkIG9uIHNvbWUgcGxhdGZvcm1z IGFuZCB3aXRoIHRoZSBzYW1lIGNvZGUsIEdDQyA3LjIuMA0KPiA+IGNvbXBpbGVkIGJpbmFyeSBj YW4gcHJvdmlkZSBiZXR0ZXIgcGVyZm9ybWFuY2UgdGhhbiBHQ0MgNC44LjUuIEl0J3MNCj4gPiBz dWdnZXN0ZWQgdG8gdXNlIEdDQyA1LjQuMCBvciBsYXRlci4NCj4gPg0KPiA+IFNpZ25lZC1vZmYt Ynk6IEhlcmJlcnQgR3VhbiA8aGVyYmVydC5ndWFuQGFybS5jb20+DQo+ID4gLS0tDQo+ID4gIC4u Li9jb21tb24vaW5jbHVkZS9hcmNoL2FybS9ydGVfbWVtY3B5XzY0LmggICAgICAgIHwgMTkzDQo+ ICsrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTkzIGluc2VydGlv bnMoKykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2VhbC9jb21tb24vaW5jbHVk ZS9hcmNoL2FybS9ydGVfbWVtY3B5XzY0LmgNCj4gPiBiL2xpYi9saWJydGVfZWFsL2NvbW1vbi9p bmNsdWRlL2FyY2gvYXJtL3J0ZV9tZW1jcHlfNjQuaA0KPiA+IGluZGV4IGI4MGQ4YmEuLjFmNDJi M2MgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvYXJjaC9h cm0vcnRlX21lbWNweV82NC5oDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1 ZGUvYXJjaC9hcm0vcnRlX21lbWNweV82NC5oDQo+ID4gQEAgLTQyLDYgKzQyLDE5NyBAQA0KPiA+ DQo+ID4gICNpbmNsdWRlICJnZW5lcmljL3J0ZV9tZW1jcHkuaCINCj4gPg0KPiA+ICsjaWZkZWYg UlRFX0FSQ0hfQVJNNjRfTUVNQ1BZDQo+DQo+IFRoZXJlIGlzIGFuIGV4aXN0aW5nIGZsYWcgZm9y IGFybTMyIHRvIGVuYWJsZSBuZW9uIGJhc2VkIG1lbWNweQ0KPiBSVEVfQVJDSF9BUk1fTkVPTl9N RU1DUFkgd2UgY291bGQgcmV1c2UgdGhhdCBoZXJlIGFzIHJlc3RyaWN0IGRvZXMNCj4gdGhlIHNh bWUuDQo+DQpUaGlzIGltcGxlbWVudGF0aW9uIGlzIGFjdHVhbGx5IG5vdCB1c2luZyBBUk0gTkVP TiBpbnN0cnVjdGlvbnMgc28gdGhlIGV4aXN0aW5nIGZsYWcgaXMgbm90IGRlc2NyaWJpbmcgdGhl IG9wdGlvbiBleGFjdGx5LiAgSXQnbGwgYmUgZ29vZCBpZiB0aGUgZXhpc3RpbmcgZmxhZyBpcyAi UlRFX0FSQ0hfQVJNX01FTUNQWSIgYnV0IHVuZm9ydHVuYXRlbHkgaXQgbWlnaHQgYmUgdG9vIGxh dGUgbm93IHRvIGdldCB0aGUgZmxhZ3MgYWxpZ25lZC4NCg0KPiA+ICsjaW5jbHVkZSA8cnRlX2Nv bW1vbi5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2JyYW5jaF9wcmVkaWN0aW9uLmg+DQo+ID4gKw0K PiA+DQo+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqDQo+ICoqKioqKioqKioqDQo+ID4gKyoqKioqKioqKioqDQo+ID4gKyAqIFRoZSBt ZW1vcnkgY29weSBwZXJmb3JtYW5jZSBkaWZmZXJzIG9uIGRpZmZlcmVudCBBQXJjaDY0IG1pY3Jv LQ0KPiBhcmNoaXRlY3R1cmVzLg0KPiA+ICsgKiBBbmQgdGhlIG1vc3QgcmVjZW50IGdsaWJjIChl LmcuIDIuMjMgb3IgbGF0ZXIpIGNhbiBwcm92aWRlIGENCj4gPiArYmV0dGVyIG1lbWNweSgpDQo+ ID4gKyAqIHBlcmZvcm1hbmNlIGNvbXBhcmVkIHRvIG9sZCBnbGliYyB2ZXJzaW9ucy4gSXQncyBh bHdheXMgc3VnZ2VzdGVkDQo+ID4gK3RvIHVzZSBhDQo+ID4gKyAqIG1vcmUgcmVjZW50IGdsaWJj IGlmIHBvc3NpYmxlLCBmcm9tIHdoaWNoIHRoZSBlbnRpcmUgc3lzdGVtIGNhbiBnZXQNCj4gYmVu ZWZpdC4NCj4gPiArICoNCj4gPiArICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpbXByb3ZlcyBtZW1v cnkgY29weSBvbiBzb21lIGFhcmNoNjQNCj4gPiArbWljcm8tYXJjaGl0ZWN0dXJlcywNCj4gPiAr ICogd2hlbiBhbiBvbGQgZ2xpYmMgKGUuZy4gMi4xOSwgMi4xNy4uLikgaXMgYmVpbmcgdXNlZC4g SXQgaXMNCj4gPiArZGlzYWJsZWQgYnkNCj4gPiArICogZGVmYXVsdCBhbmQgbmVlZHMgIlJURV9B UkNIX0FSTTY0X01FTUNQWSIgZGVmaW5lZCB0byBhY3RpdmF0ZS4NCj4gPiArSXQncyBub3QNCj4g PiArICogYWx3YXlzIHByb3ZpZGluZyBiZXR0ZXIgcGVyZm9ybWFuY2UgdGhhbiBtZW1jcHkoKSBz byB1c2VycyBuZWVkIHRvDQo+ID4gK3J1biB1bml0DQo+ID4gKyAqIHRlc3QgIm1lbWNweV9wZXJm X2F1dG90ZXN0IiBhbmQgY3VzdG9taXplIHBhcmFtZXRlcnMgaW4NCj4gPiArY3VzdG9taXphdGlv biBzZWN0aW9uDQo+ID4gKyAqIGJlbG93IGZvciBiZXN0IHBlcmZvcm1hbmNlLg0KPiA+ICsgKg0K PiA+ICsgKiBDb21waWxlciB2ZXJzaW9uIHdpbGwgYWxzbyBpbXBhY3QgdGhlIHJ0ZV9tZW1jcHko KSBwZXJmb3JtYW5jZS4NCj4gPiArSXQncyBvYnNlcnZlZA0KPiA+ICsgKiBvbiBzb21lIHBsYXRm b3JtcyBhbmQgd2l0aCB0aGUgc2FtZSBjb2RlLCBHQ0MgNy4yLjAgY29tcGlsZWQNCj4gPiArYmlu YXJpZXMgY2FuDQo+ID4gKyAqIHByb3ZpZGUgYmV0dGVyIHBlcmZvcm1hbmNlIHRoYW4gR0NDIDQu OC41IGNvbXBpbGVkIGJpbmFyaWVzLg0KPiA+ICsNCj4gPg0KPiArKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioqKioqKg0K PiA+ICsqKioqKioqKiovDQo+ID4gKw0KPiA+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioNCj4gPiArICogQmVnaW5uaW5nIG9mIGN1c3RvbWl6YXRpb24gc2VjdGlvbg0K PiA+ICsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCj4gPiArI2RlZmlu ZSBBTElHTk1FTlRfTUFTSyAweDBGDQo+ID4gKyNpZm5kZWYgUlRFX0FSQ0hfQVJNNjRfTUVNQ1BZ X1NUUklDVF9BTElHTg0KPiA+ICsvLyBPbmx5IHNyYyB1bmFsaWdubWVudCB3aWxsIGJlIHRyZWFl ZCBhcyB1bmFsaWduZWQgY29weSAjZGVmaW5lDQo+ID4gK0lTX1VOQUxJR05FRF9DT1BZKGRzdCwg c3JjKSAoKHVpbnRwdHJfdCkoZHN0KSAmIEFMSUdOTUVOVF9NQVNLKQ0KPg0KPiBXZSBjYW4gdXNl IGV4aXN0aW5nIGBydGVfaXNfYWxpZ25lZGAgZnVuY3Rpb24gaW5zdGVhZC4NCg0KVGhlIGV4aXNp bmcgJ3J0ZV9pc19hbGlnbmVkKCknIGlubGluZSBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIGEgcmVs YXRpdmVseSBjb21wbGV4IHdheSwgYW5kIHRoZXJlIHdpbGwgYmUgbW9yZSBpbnN0cnVjdGlvbnMg Z2VuZXJhdGVkICh1c2luZyBHQ0MgNy4yLjApOg0KDQowMDAwMDAwMDAwMDAwMDAwIDxhbGlnbl9j aGVja19ydGU+OiAgIC8vIHVzaW5nIHJ0ZV9pc19hbGlnbmVkKCkNCiAgIDA6OTEwMDNjMDEgYWRk eDEsIHgwLCAjMHhmDQogICA0OjkyN2NlYzIxIGFuZHgxLCB4MSwgIzB4ZmZmZmZmZmZmZmZmZmZm MA0KICAgODplYjAxMDAxZiBjbXB4MCwgeDENCiAgIGM6MWE5ZjA3ZTAgY3NldHcwLCBuZSAgLy8g bmUgPSBhbnkNCiAgMTA6ZDY1ZjAzYzAgcmV0DQogIDE0OmQ1MDMyMDFmIG5vcA0KDQowMDAwMDAw MDAwMDAwMDE4IDxhbGlnbl9jaGVja19zaW1wPjogICAvLyB1c2luZyBhYm92ZSBleHByZXNzaW9u DQogIDE4OjEyMDAwYzAwIGFuZHcwLCB3MCwgIzB4Zg0KICAxYzpkNjVmMDNjMCByZXQNCg0KU28g dG8gZ2V0IGJldHRlciBwZXJmb3JtYW5jZSwgaXQncyBiZXR0ZXIgdG8gdXNlIHRoZSBzaW1wbGUg bG9naWMuDQoNCg0KPg0KPiA+ICsjZWxzZQ0KPiA+ICsvLyBCb3RoIGRzdCBhbmQgc3JjIHVuYWxp Z25tZW50IHdpbGwgYmUgdHJlYXRlZCBhcyB1bmFsaWduZWQgY29weQ0KPiA+ICsjZGVmaW5lIElT X1VOQUxJR05FRF9DT1BZKGRzdCwgc3JjKSBcDQo+ID4gKygoKHVpbnRwdHJfdCkoZHN0KSB8ICh1 aW50cHRyX3QpKHNyYykpICYgQUxJR05NRU5UX01BU0spDQo+ICNlbmRpZg0KPiA+ICsNCj4gPiAr DQo+ID4gKy8vIElmIGNvcHkgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aHJlc2hvbGQsIG1lbWNweSgp IHdpbGwgYmUgdXNlZC4NCj4gPiArLy8gUnVuICJtZW1jcHlfcGVyZl9hdXRvdGVzdCIgdG8gZGV0 ZXJtaW5lIHRoZSBwcm9wZXIgdGhyZXNob2xkLg0KPiA+ICsjZGVmaW5lIEFMSUdORURfVEhSRVNI T0xEICAgICAgICgoc2l6ZV90KSgweGZmZmZmZmZmKSkNCj4gPiArI2RlZmluZSBVTkFMSUdORURf VEhSRVNIT0xEICAgICAoKHNpemVfdCkoMHhmZmZmZmZmZikpDQo+ID4gKw0KPiA+ICsNCj4gPiAr LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ID4gKyAqIEVuZCBvZiBj dXN0b21pemF0aW9uIHNlY3Rpb24NCj4gPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLw0KPiA+ICsjaWZkZWYgUlRFX1RPT0xDSEFJTl9HQ0MNCj4gPiArI2lmIChHQ0Nf VkVSU0lPTiA8IDUwNDAwKQ0KPiA+ICsjd2FybmluZyAiVGhlIEdDQyB2ZXJzaW9uIGlzIHF1aXRl IG9sZCwgd2hpY2ggbWF5IHJlc3VsdCBpbg0KPiA+ICtzdWItb3B0aW1hbCBcIHBlcmZvcm1hbmNl IG9mIHRoZSBjb21waWxlZCBjb2RlLiBJdCBpcyBzdWdnZXN0ZWQgdGhhdA0KPiA+ICthdCBsZWFz dCBHQ0MgNS40LjAgXCBiZSB1c2VkLiINCj4gPiArI2VuZGlmDQo+ID4gKyNlbmRpZg0KPiA+ICsN Cj4gPiArc3RhdGljIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVf XykpDQo+IHVzZSBfX3J0ZV9hbHdheXNfaW5saW5lIGluc3RlYWQuDQo+ID4gK3J0ZV9tb3YxNih1 aW50OF90ICpyZXN0cmljdCBkc3QsIGNvbnN0IHVpbnQ4X3QgKnJlc3RyaWN0IHNyYykgew0KPiA+ ICtfX2ludDEyOCAqIHJlc3RyaWN0IGRzdDEyOCA9IChfX2ludDEyOCAqIHJlc3RyaWN0KWRzdDsN Cj4gPiArY29uc3QgX19pbnQxMjggKiByZXN0cmljdCBzcmMxMjggPSAoY29uc3QgX19pbnQxMjgg KiByZXN0cmljdClzcmM7DQo+ID4gKypkc3QxMjggPSAqc3JjMTI4Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9f KSkNCj4gPiArcnRlX21vdjY0KHVpbnQ4X3QgKnJlc3RyaWN0IGRzdCwgY29uc3QgdWludDhfdCAq cmVzdHJpY3Qgc3JjKSB7DQo+ID4gK19faW50MTI4ICogcmVzdHJpY3QgZHN0MTI4ID0gKF9faW50 MTI4ICogcmVzdHJpY3QpZHN0Ow0KPg0KPiBJU08gQyBkb2VzIG5vdCBzdXBwb3J0IOKAmF9faW50 MTI44oCZIHBsZWFzZSB1c2UgJ19faW50MTI4X3QnIG9yICdfX3VpbnQxMjhfdCcuDQoNClZlcnkg Z29vZCBwb2ludC4gIFRoYW5rcyBmb3IgdGhpcyByZW1pbmRpbmcgYW5kIEknbGwgdXBkYXRlIHRv IHVzZSAnX191aW50MTI4X3QnIGluIHRoZSBuZXh0IHZlcnNpb24uDQoNCj4NCj4gPiArY29uc3Qg X19pbnQxMjggKiByZXN0cmljdCBzcmMxMjggPSAoY29uc3QgX19pbnQxMjggKiByZXN0cmljdClz cmM7DQo+ID4gK2RzdDEyOFswXSA9IHNyYzEyOFswXTsNCj4gPiArZHN0MTI4WzFdID0gc3JjMTI4 WzFdOw0KPiA+ICtkc3QxMjhbMl0gPSBzcmMxMjhbMl07DQo+ID4gK2RzdDEyOFszXSA9IHNyYzEy OFszXTsNCj4gPiArfQ0KPiA+ICsNCj4gPHNuaXA+DQo+DQo+IFdvdWxkIGRvaW5nIHRoaXMgc3Rp bGwgYmVuaWZpdCBpZiBzaXplIGlzIGNvbXBpbGUgdGltZSBjb25zdGFudD8gaS5lLiB3aGVuDQo+ IF9fYnVpbHRpbl9jb25zdGFudF9wKG4pIGlzIHRydWUuDQo+DQpZZXMsIHBlcmZvcm1hbmNlIG1h cmdpbiBpcyBvYnNlcnZlZCBpZiBzaXplIGlzIGNvbXBpbGUgdGltZSBjb25zdGFudCBvbiBzb21l IHRlc3RlZCBwbGF0Zm9ybXMuDQoNCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCAqX19h dHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkNCj4gPiArcnRlX21lbWNweSh2b2lkICpy ZXN0cmljdCBkc3QsIGNvbnN0IHZvaWQgKnJlc3RyaWN0IHNyYywgc2l6ZV90IG4pIHsNCj4gPiAr aWYgKG4gPCAxNikgew0KPiA+ICtydGVfbWVtY3B5X2x0MTYoKHVpbnQ4X3QgKilkc3QsIChjb25z dCB1aW50OF90ICopc3JjLCBuKTsNCj4gPiArcmV0dXJuIGRzdDsNCj4gPiArfQ0KPiA+ICtpZiAo biA8IDY0KSB7DQo+ID4gK3J0ZV9tZW1jcHlfZ2UxNl9sdDY0KCh1aW50OF90ICopZHN0LCAoY29u c3QgdWludDhfdCAqKXNyYywNCj4gbik7DQo+ID4gK3JldHVybiBkc3Q7DQo+ID4gK30NCj4gPiAr X19idWlsdGluX3ByZWZldGNoKHNyYywgMCwgMCk7DQo+ID4gK19fYnVpbHRpbl9wcmVmZXRjaChk c3QsIDEsIDApOw0KPiA+ICtpZiAobGlrZWx5KA0KPiA+ICsgICghSVNfVU5BTElHTkVEX0NPUFko ZHN0LCBzcmMpICYmIG4gPD0NCj4gQUxJR05FRF9USFJFU0hPTEQpDQo+ID4gKyAgIHx8IChJU19V TkFMSUdORURfQ09QWShkc3QsIHNyYykgJiYgbiA8PQ0KPiBVTkFMSUdORURfVEhSRVNIT0xEKQ0K PiA+ICsgICkpIHsNCj4gPiArcnRlX21lbWNweV9nZTY0KCh1aW50OF90ICopZHN0LCAoY29uc3Qg dWludDhfdCAqKXNyYywgbik7DQo+ID4gK3JldHVybiBkc3Q7DQo+ID4gK30gZWxzZQ0KPiA+ICty ZXR1cm4gbWVtY3B5KGRzdCwgc3JjLCBuKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKyNl bHNlDQo+ID4gIHN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ICBydGVfbW92MTYodWludDhfdCAqZHN0 LCBjb25zdCB1aW50OF90ICpzcmMpICB7IEBAIC04MCw2ICsyNzEsOCBAQA0KPiA+DQo+ID4gICNk ZWZpbmUgcnRlX21lbWNweShkLCBzLCBuKW1lbWNweSgoZCksIChzKSwgKG4pKQ0KPiA+DQo+ID4g KyNlbmRpZg0KPiA+ICsNCj4gPiAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4gIH0NCj4gPiAgI2Vu ZGlmDQo+ID4gLS0NCj4gPiAxLjguMy4xDQo+ID4NCj4gUmVnYXJkcywNCj4gUGF2YW4uDQpJTVBP UlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1l bnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBh cmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBp bW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIg cGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZv cm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuDQo=