From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29798 invoked by alias); 3 Apr 2013 07:58:47 -0000 Mailing-List: contact libc-ports-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: libc-ports-owner@sourceware.org Received: (qmail 29788 invoked by uid 89); 3 Apr 2013 07:58:47 -0000 X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=BAYES_50,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,TW_CP autolearn=ham version=3.3.1 Received: from youngberry.canonical.com (HELO youngberry.canonical.com) (91.189.89.112) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Wed, 03 Apr 2013 07:58:44 +0000 Received: from mail-we0-f169.google.com ([74.125.82.169]) by youngberry.canonical.com with esmtpsa (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1UNIag-0003Fr-4s for libc-ports@sourceware.org; Wed, 03 Apr 2013 07:58:42 +0000 Received: by mail-we0-f169.google.com with SMTP id x43so976387wey.14 for ; Wed, 03 Apr 2013 00:58:41 -0700 (PDT) X-Received: by 10.180.187.129 with SMTP id fs1mr1104348wic.5.1364975921972; Wed, 03 Apr 2013 00:58:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.194.119.168 with HTTP; Wed, 3 Apr 2013 00:58:20 -0700 (PDT) From: "Shih-Yuan Lee (FourDollars)" Date: Wed, 03 Apr 2013 07:58:00 -0000 Message-ID: Subject: [PATCH] ARM: NEON detected memcpy. To: patches@eglibc.org, libc-ports@sourceware.org Cc: rex.tsai@canonical.com, jesse.sung@canonical.com, yc.cheng@canonical.com, Shih-Yuan Lee Content-Type: multipart/mixed; boundary=001a11c26722f4d35704d9703863 X-Virus-Found: No X-SW-Source: 2013-04/txt/msg00003.txt.bz2 --001a11c26722f4d35704d9703863 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 560 Hi, I am working on the NEON detected memcpy. This is based on what Siarhei Siamashka did at 2009 [1]. The idea is to use HWCAP and check NEON bit. If there is a NEON bit, using NEON optimized memcpy. If not, using the original memcpy instead. If using NEON optimized memcpy, the performance of memcpy will be raised up by about 50% [2]. How do you think about this idea? Any comment is welcome. [1]: http://sourceware.org/ml/libc-ports/2009-07/msg00003.html [2]: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka13544.html Regards, $4 --001a11c26722f4d35704d9703863 Content-Type: application/octet-stream; name="0001-ARM-NEON-optimized-implementation-of-memcpy.patch" Content-Disposition: attachment; filename="0001-ARM-NEON-optimized-implementation-of-memcpy.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hf26p11i0 Content-length: 5694 RnJvbSA4ZDc0NmJiNGUwNWNhYjVhNTQzMGU1OTY1M2RkYWMyZDZjYjYyZTMy IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTaWFyaGVpIFNpYW1h c2hrYSA8c2lhcmhlaS5zaWFtYXNoa2FAbm9raWEuY29tPgpEYXRlOiBTdW4s IDUgSnVsIDIwMDkgMTg6MjE6MDMgKzAzMDAKU3ViamVjdDogW1BBVENIIDEv Ml0gQVJNOiBORU9OIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBtZW1j cHkuCgotLS0KIHBvcnRzL3N5c2RlcHMvYXJtL21lbWNweS5TIHwgIDEzMiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvcG9ydHMvc3lzZGVwcy9hcm0vbWVtY3B5LlMgYi9wb3J0cy9zeXNkZXBz L2FybS9tZW1jcHkuUwppbmRleCBhZGQ4MmUyLi5jMWIxMzU3IDEwMDY0NAot LS0gYS9wb3J0cy9zeXNkZXBzL2FybS9tZW1jcHkuUworKysgYi9wb3J0cy9z eXNkZXBzL2FybS9tZW1jcHkuUwpAQCAtMiw2ICsyLDcgQEAKICAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgogCiAgICBDb250 cmlidXRlZCBieSBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuICh3cml0dGVu IGJ5IE5pY29sYXMgUGl0cmUpCisgICBORU9OIGNvZGUgY29udHJpYnV0ZWQg YnkgTm9raWEgQ29ycG9yYXRpb24gKHdyaXR0ZW4gYnkgU2lhcmhlaSBTaWFt YXNoa2EpCiAKICAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwpAQCAtMjIsNiArMjMsMTM1IEBACiAjaW5jbHVkZSA8c3lzZGVw Lmg+CiAjaW5jbHVkZSA8YXJtLWZlYXR1cmVzLmg+CiAKKyNpZmRlZiBfX0FS TV9ORU9OX18KKwkJLnRleHQKKwkJLmZwdSAgICBuZW9uCisKKy8qCisgKiBF TkFCTEVfVU5BTElHTkVEX01FTV9BQ0NFU1NFUyBtYWNybyBjYW4gYmUgZGVm aW5lZCB0byBwZXJtaXQgdGhlIHVzZQorICogb2YgdW5hbGlnbmVkIGxvYWQv c3RvcmUgbWVtb3J5IGFjY2Vzc2VzIHN1cHBvcnRlZCBzaW5jZSBBUk12Ni4g VGhpcworICogd2lsbCBmdXJ0aGVyIGltcHJvdmUgcGVyZm9ybWFuY2UsIGJ1 dCBjYW4gcHVyZWx5IHRoZW9yZXRpY2FsbHkgY2F1c2UKKyAqIHByb2JsZW1z IGlmIHNvbWVib2R5IGRlY2lkZXMgdG8gc2V0IFNDVExSLkEgYml0IGluIHRo ZSBPUyBrZXJuZWwKKyAqICh0byB0cmFwIGVhY2ggdW5hbGlnbmVkIG1lbW9y eSBhY2Nlc3MpIG9yIHNvbWVob3cgbWVzcyB3aXRoIHN0cm9uZ2x5CisgKiBv cmRlcmVkL2RldmljZSBtZW1vcnkuCisgKi8KKworI2RlZmluZSBORU9OX01B WF9QUkVGRVRDSF9ESVNUQU5DRSAzMjAKKworRU5UUlkobWVtY3B5KQorCQlt b3YJaXAsIHIwCisJCWNtcAlyMiwgIzE2CisJCWJsdAk0ZglAIEhhdmUgbGVz cyB0aGFuIDE2IGJ5dGVzIHRvIGNvcHkKKworCQlAIEZpcnN0IGVuc3VyZSAx NiBieXRlIGFsaWdubWVudCBmb3IgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgor CQl0c3QJcjAsICMweEYKKwkJYmVxCTJmCisJCXRzdAlyMCwgIzEKKwkJbGRy bmViCXIzLCBbcjFdLCAjMQorCQlzdHJuZWIJcjMsIFtpcF0sICMxCisJCXN1 Ym5lCXIyLCByMiwgIzEKKwkJdHN0CWlwLCAjMgorI2lmZGVmIEVOQUJMRV9V TkFMSUdORURfTUVNX0FDQ0VTU0VTCisJCWxkcm5laAlyMywgW3IxXSwgIzIK KwkJc3RybmVoCXIzLCBbaXBdLCAjMgorI2Vsc2UKKwkJbGRybmViCXIzLCBb cjFdLCAjMQorCQlzdHJuZWIJcjMsIFtpcF0sICMxCisJCWxkcm5lYglyMywg W3IxXSwgIzEKKwkJc3RybmViCXIzLCBbaXBdLCAjMQorI2VuZGlmCisJCXN1 Ym5lCXIyLCByMiwgIzIKKworCQl0c3QJaXAsICM0CisJCWJlcQkxZgorCQl2 bGQ0LjgJe2QwWzBdLCBkMVswXSwgZDJbMF0sIGQzWzBdfSwgW3IxXSEKKwkJ dnN0NC44CXtkMFswXSwgZDFbMF0sIGQyWzBdLCBkM1swXX0sIFtpcCwgOjMy XSEKKwkJc3ViCXIyLCByMiwgIzQKKzE6CisJCXRzdAlpcCwgIzgKKwkJYmVx CTJmCisJCXZsZDEuOAl7ZDB9LCBbcjFdIQorCQl2c3QxLjgJe2QwfSwgW2lw LCA6NjRdIQorCQlzdWIJcjIsIHIyLCAjOAorMjoKKwkJc3VicwlyMiwgcjIs ICMzMgorCQlibHQJM2YKKwkJbW92CXIzLCAjMzIKKworCQlAIE1haW4gY29w eSBsb29wLCAzMiBieXRlcyBhcmUgcHJvY2Vzc2VkIHBlciBpdGVyYXRpb24u CisJCUAgQVJNIGluc3RydWN0aW9ucyBhcmUgdXNlZCBmb3IgZG9pbmcgZmlu ZS1ncmFpbmVkIHByZWZldGNoLAorCQlAIGluY3JlYXNpbmcgcHJlZmV0Y2gg ZGlzdGFuY2UgcHJvZ3Jlc3NpdmVseSB1cCB0bworCQlAIE5FT05fTUFYX1BS RUZFVENIX0RJU1RBTkNFIGF0IHJ1bnRpbWUKKzE6CisJCXZsZDEuOAl7ZDAt ZDN9LCBbcjFdIQorCQljbXAJcjMsICMoTkVPTl9NQVhfUFJFRkVUQ0hfRElT VEFOQ0UgLSAzMikKKwkJcGxkCVtyMSwgcjNdCisJCWFkZGxlCXIzLCByMywg IzMyCisJCXZzdDEuOAl7ZDAtZDN9LCBbaXAsIDoxMjhdIQorCQlzdWIJcjIs IHIyLCAjMzIKKwkJY21wCXIyLCByMworCQliZ2UJMWIKKwkJY21wCXIyLCAj MAorCQlibHQJM2YKKzE6CQlAIENvcHkgdGhlIHJlbWFpbmluZyBwYXJ0IG9m IHRoZSBidWZmZXIgKGFscmVhZHkgcHJlZmV0Y2hlZCkKKwkJdmxkMS44CXtk MC1kM30sIFtyMV0hCisJCXN1YnMJcjIsIHIyLCAjMzIKKwkJdnN0MS44CXtk MC1kM30sIFtpcCwgOjEyOF0hCisJCWJnZQkxYgorMzoJCUAgQ29weSB1cCB0 byAzMSByZW1haW5pbmcgYnl0ZXMKKwkJdHN0CXIyLCAjMTYKKwkJYmVxCTRm CisJCXZsZDEuOAl7ZDAsIGQxfSwgW3IxXSEKKwkJdnN0MS44CXtkMCwgZDF9 LCBbaXAsIDoxMjhdIQorNDoKKwkJQCBVc2UgQVJNIGluc3RydWN0aW9ucyBl eGNsdXNpdmVseSBmb3IgdGhlIGZpbmFsIHRyYWlsaW5nIHBhcnQKKwkJQCBu b3QgZnVsbHkgZml0dGluZyBpbnRvIGZ1bGwgMTYgYnl0ZSBhbGlnbmVkIGJs b2NrIGluIG9yZGVyCisJCUAgdG8gYXZvaWQgIkFSTSBzdG9yZSBhZnRlciBO RU9OIHN0b3JlIiBoYXphcmQuIEFsc28gTkVPTgorCQlAIHBpcGVsaW5lIHdp bGwgYmUgKG1vc3RseSkgZmx1c2hlZCBieSB0aGUgdGltZSB3aGVuIHRoZQor CQlAIGNvbnRyb2wgcmV0dXJucyB0byB0aGUgY2FsbGVyLCBtYWtpbmcgdGhl IHVzZSBvZiBORU9OIG1vc3RseQorCQlAIHRyYW5zcGFyZW50IChhbmQgYXZv aWRpbmcgaGF6YXJkcyBpbiB0aGUgY2FsbGVyIGNvZGUpCisKKyNpZmRlZiBF TkFCTEVfVU5BTElHTkVEX01FTV9BQ0NFU1NFUworCQltb3ZzCXIzLCByMiwg bHNsICMyOQorCQlsZHJjcwlyMywgW3IxXSwgIzQKKwkJc3RyY3MJcjMsIFtp cF0sICM0CisJCWxkcmNzCXIzLCBbcjFdLCAjNAorCQlzdHJjcwlyMywgW2lw XSwgIzQKKwkJbGRybWkJcjMsIFtyMV0sICM0CisJCXN0cm1pCXIzLCBbaXBd LCAjNAorCQltb3ZzCXIyLCByMiwgbHNsICMzMQorCQlsZHJjc2gJcjMsIFty MV0sICMyCisJCXN0cmNzaAlyMywgW2lwXSwgIzIKKwkJbGRybWliCXIzLCBb cjFdLCAjMQorCQlzdHJtaWIJcjMsIFtpcF0sICMxCisjZWxzZQorCQltb3Zz CXIzLCByMiwgbHNsICMyOQorCQliY2MJMWYKKwkucmVwdAk4CisJCWxkcmNz YglyMywgW3IxXSwgIzEKKwkJc3RyY3NiCXIzLCBbaXBdLCAjMQorCS5lbmRy CisxOgorCQlicGwJMWYKKwkucmVwdAk0CisJCWxkcm1pYglyMywgW3IxXSwg IzEKKwkJc3RybWliCXIzLCBbaXBdLCAjMQorCS5lbmRyCisxOgorCQltb3Zz CXIyLCByMiwgbHNsICMzMQorCQlsZHJjc2IJcjMsIFtyMV0sICMxCisJCXN0 cmNzYglyMywgW2lwXSwgIzEKKwkJbGRyY3NiCXIzLCBbcjFdLCAjMQorCQlz dHJjc2IJcjMsIFtpcF0sICMxCisJCWxkcm1pYglyMywgW3IxXSwgIzEKKwkJ c3RybWliCXIzLCBbaXBdLCAjMQorI2VuZGlmCisJCWJ4CWxyCitFTkQobWVt Y3B5KQorbGliY19oaWRkZW5fYnVpbHRpbl9kZWYgKG1lbWNweSkKKworI2Vs c2UKKwogLyoKICAqIERhdGEgcHJlbG9hZCBmb3IgYXJjaGl0ZWN0dXJlcyB0 aGF0IHN1cHBvcnQgaXQgKEFSTSBWNVRFIGFuZCBhYm92ZSkKICAqLwpAQCAt MzQyLDMgKzQ3Miw1IEBAIEVOVFJZKG1lbWNweSkKIAogRU5EKG1lbWNweSkK IGxpYmNfaGlkZGVuX2J1aWx0aW5fZGVmIChtZW1jcHkpCisKKyNlbmRpZgot LSAKMS43LjEwLjQKCg== --001a11c26722f4d35704d9703863 Content-Type: application/octet-stream; name="0002-ARM-NEON-detected-memcpy.patch" Content-Disposition: attachment; filename="0002-ARM-NEON-detected-memcpy.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hf26p12j1 Content-length: 6206 RnJvbSA2NDI5OWQ3YmQ4NTMzMTRiYzNiYzk2ODUzMjIwNDYxNTMzZjI2MDY5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiU2hpaC1ZdWFuIExl ZSAoRm91ckRvbGxhcnMpIiA8c3lsZWVAY2Fub25pY2FsLmNvbT4KRGF0ZTog V2VkLCAzIEFwciAyMDEzIDE0OjA3OjM3ICswODAwClN1YmplY3Q6IFtQQVRD SCAyLzJdIEFSTTogTkVPTiBkZXRlY3RlZCBtZW1jcHkuCgotLS0KIHBvcnRz L3N5c2RlcHMvYXJtL21lbWNweS5TIHwgIDEyMCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDc5IGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3BvcnRzL3N5c2RlcHMvYXJtL21lbWNweS5TIGIvcG9ydHMvc3lzZGVw cy9hcm0vbWVtY3B5LlMKaW5kZXggYzFiMTM1Ny4uOTRmZThlMiAxMDA2NDQK LS0tIGEvcG9ydHMvc3lzZGVwcy9hcm0vbWVtY3B5LlMKKysrIGIvcG9ydHMv c3lzZGVwcy9hcm0vbWVtY3B5LlMKQEAgLTMsNiArMyw4IEBACiAKICAgIENv bnRyaWJ1dGVkIGJ5IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4gKHdyaXR0 ZW4gYnkgTmljb2xhcyBQaXRyZSkKICAgIE5FT04gY29kZSBjb250cmlidXRl ZCBieSBOb2tpYSBDb3Jwb3JhdGlvbiAod3JpdHRlbiBieSBTaWFyaGVpIFNp YW1hc2hrYSkKKyAgIE5FT04gZGV0ZWN0aW9uIGNvbnRyaWJ1dGVkIGJ5IENh bm9uaWNhbCBMdGQuICh3cml0dGVuIGJ5IFNoaWgtWXVhbiBMZWUKKyAgIGFr YSBGb3VyRG9sbGFycykKIAogICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCkBAIC0yMyw5ICsyNSwzNiBAQAogI2luY2x1ZGUg PHN5c2RlcC5oPgogI2luY2x1ZGUgPGFybS1mZWF0dXJlcy5oPgogCi0jaWZk ZWYgX19BUk1fTkVPTl9fCi0JCS50ZXh0Ci0JCS5mcHUgICAgbmVvbgorLyoK KyAqIERhdGEgcHJlbG9hZCBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IHN1cHBv cnQgaXQgKEFSTSBWNVRFIGFuZCBhYm92ZSkKKyAqLworI2lmICghZGVmaW5l ZCAoX19BUk1fQVJDSF8yX18pICYmICFkZWZpbmVkIChfX0FSTV9BUkNIXzNf XykgXAorICAgICAmJiAhZGVmaW5lZCAoX19BUk1fQVJDSF8zTV9fKSAmJiAh ZGVmaW5lZCAoX19BUk1fQVJDSF80X18pIFwKKyAgICAgJiYgIWRlZmluZWQg KF9fQVJNX0FSQ0hfNFRfXykgJiYgIWRlZmluZWQgKF9fQVJNX0FSQ0hfNV9f KSBcCisgICAgICYmICFkZWZpbmVkIChfX0FSTV9BUkNIXzVUX18pKQorI2Rl ZmluZSBQTEQoY29kZS4uLikgICAgY29kZQorI2Vsc2UKKyNkZWZpbmUgUExE KGNvZGUuLi4pCisjZW5kaWYKKworLyoKKyAqIFRoaXMgY2FuIGJlIHVzZWQg dG8gZW5hYmxlIGNvZGUgdG8gY2FjaGVsaW5lIGFsaWduIHRoZSBzb3VyY2Ug cG9pbnRlci4KKyAqIEV4cGVyaW1lbnRzIG9uIHRlc3RlZCBhcmNoaXRlY3R1 cmVzIChTdHJvbmdBUk0gYW5kIFhTY2FsZSkgZGlkbid0IHNob3cKKyAqIHRo aXMgYSB3b3J0aHdoaWxlIHRoaW5nIHRvIGRvLiAgVGhhdCBtaWdodCBiZSBk aWZmZXJlbnQgaW4gdGhlIGZ1dHVyZS4KKyAqLworLy8jZGVmaW5lIENBTEdO KGNvZGUuLi4pICAgICAgICBjb2RlCisjZGVmaW5lIENBTEdOKGNvZGUuLi4p CisKKy8qCisgKiBFbmRpYW4gaW5kZXBlbmRlbnQgbWFjcm9zIGZvciBzaGlm dGluZyBieXRlcyB3aXRoaW4gcmVnaXN0ZXJzLgorICovCisjaWZuZGVmIF9f QVJNRUJfXworI2RlZmluZSBQVUxMICAgICAgICAgICAgbHNyCisjZGVmaW5l IFBVU0ggICAgICAgICAgICBsc2wKKyNlbHNlCisjZGVmaW5lIFBVTEwgICAg ICAgICAgICBsc2wKKyNkZWZpbmUgUFVTSCAgICAgICAgICAgIGxzcgorI2Vu ZGlmCiAKIC8qCiAgKiBFTkFCTEVfVU5BTElHTkVEX01FTV9BQ0NFU1NFUyBt YWNybyBjYW4gYmUgZGVmaW5lZCB0byBwZXJtaXQgdGhlIHVzZQpAQCAtMzYs OSArNjUsNDQgQEAKICAqIG9yZGVyZWQvZGV2aWNlIG1lbW9yeS4KICAqLwog CisjaWZkZWYgX19BUk1fRkVBVFVSRV9VTkFMSUdORUQKKyNkZWZpbmUgRU5B QkxFX1VOQUxJR05FRF9NRU1fQUNDRVNTRVMgMQorI2VuZGlmCisKICNkZWZp bmUgTkVPTl9NQVhfUFJFRkVUQ0hfRElTVEFOQ0UgMzIwCiAKKwkJLnRleHQK KwkJLmZwdSAgICBuZW9uCisKKy8qIFByb3RvdHlwZTogdm9pZCAqbWVtY3B5 KHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pOyAqLwor CiBFTlRSWShtZW1jcHkpCisJCXN0bWZkCXNwISwge3IwLCByMX0KKworCQlA IENoZWNrIGlmIHRoZXJlIGlzIGEgTkVPTiBleHRlbnNpb24uCisjaWZkZWYg SVNfSU5fcnRsZAorCQlsZHIJYTEsIDVmCisJCWxkcglhMiwgTHJ0bGRfbG9j YWxfcm8KKzA6CQlhZGQJYTEsIHBjLCBhMQorCQlhZGQJYTEsIGExLCBhMgor CQlsZHIJYTEsIFthMSwgI1JUTERfR0xPQkFMX1JPX0RMX0hXQ0FQX09GRlNF VF0KKyNlbHNlCisjaWZkZWYgUElDCisJCWxkcglhMSwgNWYKKwkJbGRyCWEy LCBMcnRsZF9nbG9iYWxfcm8KKzA6CQlhZGQJYTEsIHBjLCBhMQorCQlsZHIJ YTEsIFthMSwgYTJdCisJCWxkcglhMSwgW2ExLCAjUlRMRF9HTE9CQUxfUk9f RExfSFdDQVBfT0ZGU0VUXQorI2Vsc2UKKwkJbGRyCWExLCBMaHdjYXAKKwkJ bGRyCWExLCBbYTEsICMwXQorI2VuZGlmCisjZW5kaWYKKwkJdHN0CWExLCAj SFdDQVBfQVJNX05FT04KKwkJbGRtZmQJc3AhLCB7cjAsIHIxfQorCQliZXEJ TG5vX25lb24KKworCQlAIE9wdGltaXplZCBtZW1jcHkgYnkgTkVPTiBleHRl bnNpb24uCiAJCW1vdglpcCwgcjAKIAkJY21wCXIyLCAjMTYKIAkJYmx0CTRm CUAgSGF2ZSBsZXNzIHRoYW4gMTYgYnl0ZXMgdG8gY29weQpAQCAtMTQ3LDQ5 ICsyMTEsMjQgQEAgRU5UUlkobWVtY3B5KQogCQlzdHJtaWIJcjMsIFtpcF0s ICMxCiAjZW5kaWYKIAkJYngJbHIKLUVORChtZW1jcHkpCi1saWJjX2hpZGRl bl9idWlsdGluX2RlZiAobWVtY3B5KQogCisjaWZkZWYgSVNfSU5fcnRsZAor NToJLmxvbmcJX0dMT0JBTF9PRkZTRVRfVEFCTEVfIC0gMGIgLSA4CitMcnRs ZF9sb2NhbF9ybzoKKwkubG9uZwlDX1NZTUJPTF9OQU1FKF9ydGxkX2xvY2Fs X3JvKShHT1RPRkYpCiAjZWxzZQotCi0vKgotICogRGF0YSBwcmVsb2FkIGZv ciBhcmNoaXRlY3R1cmVzIHRoYXQgc3VwcG9ydCBpdCAoQVJNIFY1VEUgYW5k IGFib3ZlKQotICovCi0jaWYgKCFkZWZpbmVkIChfX0FSTV9BUkNIXzJfXykg JiYgIWRlZmluZWQgKF9fQVJNX0FSQ0hfM19fKSBcCi0gICAgICYmICFkZWZp bmVkIChfX0FSTV9BUkNIXzNNX18pICYmICFkZWZpbmVkIChfX0FSTV9BUkNI XzRfXykgXAotICAgICAmJiAhZGVmaW5lZCAoX19BUk1fQVJDSF80VF9fKSAm JiAhZGVmaW5lZCAoX19BUk1fQVJDSF81X18pIFwKLSAgICAgJiYgIWRlZmlu ZWQgKF9fQVJNX0FSQ0hfNVRfXykpCi0jZGVmaW5lIFBMRChjb2RlLi4uKSAg ICBjb2RlCisjaWZkZWYgUElDCis1OgkubG9uZwlfR0xPQkFMX09GRlNFVF9U QUJMRV8gLSAwYiAtIDgKK0xydGxkX2dsb2JhbF9ybzoKKwkubG9uZwlDX1NZ TUJPTF9OQU1FKF9ydGxkX2dsb2JhbF9ybykoR09UKQogI2Vsc2UKLSNkZWZp bmUgUExEKGNvZGUuLi4pCitMaHdjYXA6CisJLmxvbmcJQ19TWU1CT0xfTkFN RShfZGxfaHdjYXApCiAjZW5kaWYKLQotLyoKLSAqIFRoaXMgY2FuIGJlIHVz ZWQgdG8gZW5hYmxlIGNvZGUgdG8gY2FjaGVsaW5lIGFsaWduIHRoZSBzb3Vy Y2UgcG9pbnRlci4KLSAqIEV4cGVyaW1lbnRzIG9uIHRlc3RlZCBhcmNoaXRl Y3R1cmVzIChTdHJvbmdBUk0gYW5kIFhTY2FsZSkgZGlkbid0IHNob3cKLSAq IHRoaXMgYSB3b3J0aHdoaWxlIHRoaW5nIHRvIGRvLiAgVGhhdCBtaWdodCBi ZSBkaWZmZXJlbnQgaW4gdGhlIGZ1dHVyZS4KLSAqLwotLy8jZGVmaW5lIENB TEdOKGNvZGUuLi4pICAgICAgICBjb2RlCi0jZGVmaW5lIENBTEdOKGNvZGUu Li4pCi0KLS8qCi0gKiBFbmRpYW4gaW5kZXBlbmRlbnQgbWFjcm9zIGZvciBz aGlmdGluZyBieXRlcyB3aXRoaW4gcmVnaXN0ZXJzLgotICovCi0jaWZuZGVm IF9fQVJNRUJfXwotI2RlZmluZSBQVUxMICAgICAgICAgICAgbHNyCi0jZGVm aW5lIFBVU0ggICAgICAgICAgICBsc2wKLSNlbHNlCi0jZGVmaW5lIFBVTEwg ICAgICAgICAgICBsc2wKLSNkZWZpbmUgUFVTSCAgICAgICAgICAgIGxzcgog I2VuZGlmCiAKLQkJLnRleHQKLQkJLnN5bnRheCB1bmlmaWVkCi0KLS8qIFBy b3RvdHlwZTogdm9pZCAqbWVtY3B5KHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQg KnNyYywgc2l6ZV90IG4pOyAqLwotCi1FTlRSWShtZW1jcHkpCi0KK0xub19u ZW9uOgorCQlAIEdlbmVyaWMgQVJNIG1lbWNweS4KIAkJcHVzaAl7cjAsIHI0 LCBscn0KIAkJY2ZpX2FkanVzdF9jZmFfb2Zmc2V0ICgxMikKIAkJY2ZpX3Jl bF9vZmZzZXQgKHI0LCA0KQpAQCAtNDczLDQgKzUxMiwzIEBAIEVOVFJZKG1l bWNweSkKIEVORChtZW1jcHkpCiBsaWJjX2hpZGRlbl9idWlsdGluX2RlZiAo bWVtY3B5KQogCi0jZW5kaWYKLS0gCjEuNy4xMC40Cgo= --001a11c26722f4d35704d9703863--