From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Herbert.Guan@arm.com>
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 <dev@dpdk.org>; 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 <Herbert.Guan@arm.com>
To: Pavan Nikhilesh Bhagavatula <pbhagavatula@caviumnetworks.com>, Jianbo Liu
 <Jianbo.Liu@arm.com>
CC: "dev@dpdk.org" <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: <HE1PR08MB28095A501C132A65A961D40B863F0@HE1PR08MB2809.eurprd08.prod.outlook.com>
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: <HE1PR0801MB1353A9EE5E66A15ACA8AC737863F0@HE1PR0801MB1353.eurprd08.prod.outlook.com>
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 <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=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=