From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10085.outbound.protection.outlook.com [40.107.1.85]) by sourceware.org (Postfix) with ESMTPS id 1C7043858D28 for ; Wed, 29 Sep 2021 10:21:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1C7043858D28 Received: from AS8PR05CA0027.eurprd05.prod.outlook.com (2603:10a6:20b:311::32) by AM0PR08MB2978.eurprd08.prod.outlook.com (2603:10a6:208:66::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.13; Wed, 29 Sep 2021 10:21:01 +0000 Received: from VE1EUR03FT063.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:311:cafe::33) by AS8PR05CA0027.outlook.office365.com (2603:10a6:20b:311::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15 via Frontend Transport; Wed, 29 Sep 2021 10:21:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.33.187.114) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.33.187.114 as permitted sender) receiver=protection.outlook.com; client-ip=63.33.187.114; helo=64aa7808-outbound-2.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-2.mta.getcheckrecipient.com (63.33.187.114) by VE1EUR03FT063.mail.protection.outlook.com (10.152.18.236) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Wed, 29 Sep 2021 10:21:00 +0000 Received: ("Tessian outbound 1fd2edb24cb2:v103"); Wed, 29 Sep 2021 10:21:00 +0000 X-CR-MTA-TID: 64aa7808 Received: from 44909cb01985.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 85F8D21D-44E2-4ACC-8023-DF70D0CB8D4B.1; Wed, 29 Sep 2021 10:20:48 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 44909cb01985.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 29 Sep 2021 10:20:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MRsR0TO1pNKl8SUW/HkIoNpLf1l/T6/y/yVt2pTwf8bIc3X8K97cdJcl95+OQANUJ5P8p9D5By1oLiZJ/DV7b7TiRoPKWe26YhKMpK2AeXmO2AgYey5yb5ygkiXEhatfxzf7PuXSckhHNYW63wI2nav+dRJ9EegPNh/AR3AlDgIt7M2OGpEm421YqfYGhh/HYVnOM/5k2U623YQfxx3rF3olS1XXtCgPJ/2gkXWfywBaStk8YI+ppRsZgUTLQMWq5ta4Atn9zXLjZh6+NOP05u4yU3f8tf/PvbJsw019cUl4MI461jnxrvXTTIS1yDTE87GsuV0FVafSL02ETzd9tA== 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; bh=BbirlPsePy/6QuhZxAp5/c8lgOkRzXqK3kmwxcypXkM=; b=OJf2bHZnhIXsvimbE4HyL15i+aqkBadwXYuIK0PKT7k1qqlXFBreoJgC7uJ+MvkbdQz3etPcLSTARBPogVOiL9QggLCrL5l9R9g8VCiDXKoS/Dw39nNqUANkqCk0VAxwQM2kVnIe8PeSuLB4fw/8TTxLfBz1LjRVGcdWjMjfkUcaShat9yH3RV/I+j3HcFghJlOOqZuTtct8yx3KJZtVAbXIqGQBNbNFfU1NVs74WzsvhN9bcDZEdLkUHnDmdUpfRz0t+8aXyDMe6ApndT8UD8Ny5wo9Q8NfHsfnGMIuJgSDcNlrMsT+WpbKCoobZdpdBLNxbta/EIJNdJgxWwG0TA== 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 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by PR3PR08MB5706.eurprd08.prod.outlook.com (2603:10a6:102:80::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13; Wed, 29 Sep 2021 10:20:47 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::5c36:b98e:4d17:df49]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::5c36:b98e:4d17:df49%7]) with mapi id 15.20.4566.015; Wed, 29 Sep 2021 10:20:47 +0000 From: Kyrylo Tkachov To: "gcc-patches@gcc.gnu.org" Subject: [PATCH] aarch64: Improve size heuristic for cpymem expansion Thread-Topic: [PATCH] aarch64: Improve size heuristic for cpymem expansion Thread-Index: Ade1G5uoSfPEv9jCQ8Cz/D7BjSdTig== Date: Wed, 29 Sep 2021 10:20:47 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 32F600D8C52EBD41AC33B2DFC6B3EBB6.0 x-checkrecipientchecked: true Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: c9d6af88-6bc2-48a3-f17b-08d98332d5d6 x-ms-traffictypediagnostic: PR3PR08MB5706:|AM0PR08MB2978: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:6430;OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: /ikP7kU49uKD1WxhYbnaMrAFrNVdPSMApsrc357UWdu79H44hTP1bZ6OKiryEZ/MX7Tt2H4fbKt8FUkeUbj5Df8tQ9zHQYfbTur318YgkNY5RreW0EAmiPJ3pDUxzzdD80gXhGbOibvxCmDLJlqpDXdyV9OjQX3kuwsCEWAkYUYSEFPW5z/C04XWKPF4GCAT/GDfRLmshKW/ST33K36UnapxBEhkqOenvwfipdX8PHpEEQ8j6w6HcTRgoOUQ8bSelY0vkBvTFbV8pMvzFjS9DA8urD+l/5ko0rqFC/Poe5F9xPXZjv3dEH9CCeFOLLw78/q7xWQ/3lwLMJO4tqYfgyj7UozzNb8f+NavN9YeAm6V1Jf29yfCwxSzxOTYHYv07nQUwV4RqhBKnfSBkUCOX7Sx0b5q0NGwJtGx0ynuuRW4KVGGqSeLhS/Wy7IQ4qO5M26hfIjMoP2JuPQWAsyB2qDmZ2mm7WzmDQjtA8evDDbsAxoA0NJ8I1dXA/QXGAou7yEzBDUJuf5C4x7MnBDRW2y8I2FL7DZbDi/3rvjkQVJlsQ1C4YdbMwEsUSvLS0ijeurZWCwMIRFe05Z4HCGMdYBVzonaylcQ9peAyJIgd9CdY20GewfluPmbafidaGaILlXzh5Sn/e1pUzRKcI+XTJhv2lVFW+ecofnx/+5n2Fhs9K7H7WQoo/7lgihj7AHDDyiAc9NaicH30xfI45UHJVHhsJsewkOTwiKN146CBmP/icfEKbL9lVBiDpVbZvBGoH8BDj7iK1yfc7khqK08Pt9VNssO/8P7lt1E+dhe7+w= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB6926.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(52536014)(508600001)(38100700002)(38070700005)(66446008)(64756008)(66556008)(66476007)(66616009)(6916009)(76116006)(122000001)(66946007)(2906002)(33656002)(8676002)(8936002)(55016002)(9686003)(316002)(86362001)(7696005)(99936003)(186003)(26005)(5660300002)(71200400001)(6506007); DIR:OUT; SFP:1101; x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_PAXPR08MB6926327FD9852F84C7D4AF6593A99PAXPR08MB6926eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5706 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT063.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: cc4474bf-00aa-41ed-f3b4-08d98332cdd1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: c/qOQ6K7icNmIKw+LQgz09MtTu4bFlxc/BnAFDk1MzvphfMOHfqSF4ieYcdr2lyGf4fsESMVgP+mg+BK2iY7TI4Gfhew8YDMzbQKlrl3OiBAuVB23nvLkBIaMn1vay1aiME/aVZsjdWU4UhXPBihKpQ6+XKPG9mI49KoeIVpz17KYLH2F9S43J8s7EC+9cE9CYHNz7Q/Ns4fBvemIog056Ol+Vhh5gzCa97Mae1LltxKTEkyOevuGlBoVjZRdZ7nW3KBux1wyMYRVNFtiERLuvgsyNlAQCWy/DyXRzCiKw554XfHQsqXwbo+t5VcKCHgDsT130BieEFwM9AwfVf+PitVYLIAffDsGNndOgNMLY1LffA+h8S9mDIjqCbX/920Qlh5eww3T5qfBkOYEh9ArAjTVk5O9mBVqkveh0/UT/iNEImlhT4f5FD1ay4ie/x4/84D7oR5gAF1E1n8yzerkovnGkFcU+wBtYByKpI6xxvc4Ggi0Po6+7k8I6KqrH5Dc/0HuJJmr9zbOYm7frj7X51Lq3FC72r5aAwi3OqscDap+is+rkE83aRSsziaqELZsuigYjn9s6/esCvo261HPQUywkmyBuPAXkhDHlpPmgjFQ2NkU4a2krr6x2IoKND+oPKSEirYOx+gbcxivsoaToBbs+pkTdzZ49a5DGef0ZgQjOuBT9dwuBILlO0EiJco73JYy/Bx4uPBt8INXHt0Kgpgi1HbGe8vEwh5aPOgJWMxoB7d8xNzV2l9Bn0g98x1Lvpi9GBRi2ujbhKarqB9vKh/jnZy40ZsZImrNYjaJdk= X-Forefront-Antispam-Report: CIP:63.33.187.114; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-2.mta.getcheckrecipient.com; PTR:ec2-63-33-187-114.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(46966006)(36840700001)(8676002)(36860700001)(6506007)(7696005)(33656002)(70206006)(55016002)(9686003)(70586007)(82310400003)(52536014)(66616009)(8936002)(2906002)(47076005)(86362001)(508600001)(99936003)(356005)(81166007)(316002)(235185007)(26005)(336012)(186003)(5660300002)(6916009); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2021 10:21:00.7433 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c9d6af88-6bc2-48a3-f17b-08d98332d5d6 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.33.187.114]; Helo=[64aa7808-outbound-2.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT063.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB2978 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SCC_5_SHORT_WORD_LINES, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Sep 2021 10:21:06 -0000 --_002_PAXPR08MB6926327FD9852F84C7D4AF6593A99PAXPR08MB6926eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, Similar to my previous patch for setmem this one does the same for the cpym= em expansion. We count the number of ops emitted and compare it against the alternative o= f just calling the library function when optimising for size. For the code: void cpy_127 (char *out, char *in) { __builtin_memcpy (out, in, 127); } void cpy_128 (char *out, char *in) { __builtin_memcpy (out, in, 128); } we now emit a call to memcpy (with an extra MOV-immediate instruction for t= he size) instead of: cpy_127(char*, char*): ldp q0, q1, [x1] stp q0, q1, [x0] ldp q0, q1, [x1, 32] stp q0, q1, [x0, 32] ldp q0, q1, [x1, 64] stp q0, q1, [x0, 64] ldr q0, [x1, 96] str q0, [x0, 96] ldr q0, [x1, 111] str q0, [x0, 111] ret cpy_128(char*, char*): ldp q0, q1, [x1] stp q0, q1, [x0] ldp q0, q1, [x1, 32] stp q0, q1, [x0, 32] ldp q0, q1, [x1, 64] stp q0, q1, [x0, 64] ldp q0, q1, [x1, 96] stp q0, q1, [x0, 96] ret which is a clear code size win. Speed optimisation heuristics remain unchan= ged. Bootstrapped and tested on aarch64-none-linux-gnu. Pushing to trunk. Thanks, Kyrill 2021-09-29 Kyrylo Tkachov * config/aarch64/aarch64.c (aarch64_expand_cpymem): Count number of emitted operations and adjust heuristic for code size. =20 2021-09-29 Kyrylo Tkachov * gcc.target/aarch64/cpymem-size.c: New test. --_002_PAXPR08MB6926327FD9852F84C7D4AF6593A99PAXPR08MB6926eurp_ Content-Type: application/octet-stream; name="cpmem-s.patch" Content-Description: cpmem-s.patch Content-Disposition: attachment; filename="cpmem-s.patch"; size=3319; creation-date="Wed, 29 Sep 2021 10:20:07 GMT"; modification-date="Wed, 29 Sep 2021 10:20:00 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMgYi9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5jCmluZGV4IGFjMTdjMWM4OGZiNDJkYzFhODU0M2I2NDkzNGE2MjRkNDlm MTc3OWQuLmE5YTE4MDBhZjUzYjE4MzA2NDY1ZTM4MmU5ZGQxNDlkMGUzMzViMDkgMTAwNjQ0Ci0t LSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQuYwpAQCAtMjMzOTAsNyArMjMzOTAsOCBAQCBhYXJjaDY0X2NvcHlfb25lX2Jsb2Nr X2FuZF9wcm9ncmVzc19wb2ludGVycyAocnR4ICpzcmMsIHJ0eCAqZHN0LAogfQogCiAvKiBFeHBh bmQgY3B5bWVtLCBhcyBpZiBmcm9tIGEgX19idWlsdGluX21lbWNweS4gIFJldHVybiB0cnVlIGlm Ci0gICB3ZSBzdWNjZWVkLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLiAgKi8KKyAgIHdlIHN1Y2Nl ZWQsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UsIGluZGljYXRpbmcgdGhhdCBhIGxpYmNhbGwgdG8K KyAgIG1lbWNweSBzaG91bGQgYmUgZW1pdHRlZC4gICovCiAKIGJvb2wKIGFhcmNoNjRfZXhwYW5k X2NweW1lbSAocnR4ICpvcGVyYW5kcykKQEAgLTIzNDA3LDExICsyMzQwOCwxMyBAQCBhYXJjaDY0 X2V4cGFuZF9jcHltZW0gKHJ0eCAqb3BlcmFuZHMpCiAKICAgdW5zaWduZWQgSE9TVF9XSURFX0lO VCBzaXplID0gSU5UVkFMIChvcGVyYW5kc1syXSk7CiAKLSAgLyogSW5saW5lIHVwIHRvIDI1NiBi eXRlcyB3aGVuIG9wdGltaXppbmcgZm9yIHNwZWVkLiAgKi8KKyAgLyogVHJ5IHRvIGlubGluZSB1 cCB0byAyNTYgYnl0ZXMuICAqLwogICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIG1heF9jb3B5X3Np emUgPSAyNTY7CiAKLSAgaWYgKG9wdGltaXplX2Z1bmN0aW9uX2Zvcl9zaXplX3AgKGNmdW4pKQot ICAgIG1heF9jb3B5X3NpemUgPSAxMjg7CisgIGJvb2wgc2l6ZV9wID0gb3B0aW1pemVfZnVuY3Rp b25fZm9yX3NpemVfcCAoY2Z1bik7CisKKyAgaWYgKHNpemUgPiBtYXhfY29weV9zaXplKQorICAg IHJldHVybiBmYWxzZTsKIAogICBpbnQgY29weV9iaXRzID0gMjU2OwogCkBAIC0yMzQyMSwxMyAr MjM0MjQsMTQgQEAgYWFyY2g2NF9leHBhbmRfY3B5bWVtIChydHggKm9wZXJhbmRzKQogICAgICAg fHwgIVRBUkdFVF9TSU1ECiAgICAgICB8fCAoYWFyY2g2NF90dW5lX3BhcmFtcy5leHRyYV90dW5p bmdfZmxhZ3MKIAkgICYgQUFSQ0g2NF9FWFRSQV9UVU5FX05PX0xEUF9TVFBfUVJFR1MpKQotICAg IHsKLSAgICAgIGNvcHlfYml0cyA9IDEyODsKLSAgICAgIG1heF9jb3B5X3NpemUgPSBtYXhfY29w eV9zaXplIC8gMjsKLSAgICB9CisgICAgY29weV9iaXRzID0gMTI4OwogCi0gIGlmIChzaXplID4g bWF4X2NvcHlfc2l6ZSkKLSAgICByZXR1cm4gZmFsc2U7CisgIC8qIEVtaXQgYW4gaW5saW5lIGxv YWQrc3RvcmUgc2VxdWVuY2UgYW5kIGNvdW50IHRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucworICAg ICBpbnZvbHZlZC4gIFdlIHVzZSBhIHNpbXBsZSBjb3VudCBvZiBqdXN0IHRoZSBsb2FkcyBhbmQg c3RvcmVzIGVtaXR0ZWQKKyAgICAgcmF0aGVyIHRoYW4gcnR4X2luc24gY291bnQgYXMgYWxsIHRo ZSBwb2ludGVyIGFkanVzdG1lbnRzIGFuZCByZWcgY29weWluZworICAgICBpbiB0aGlzIGZ1bmN0 aW9uIHdpbGwgZ2V0IG9wdGltaXplZCBhd2F5IGxhdGVyIGluIHRoZSBwaXBlbGluZS4gICovCisg IHN0YXJ0X3NlcXVlbmNlICgpOworICB1bnNpZ25lZCBub3BzID0gMDsKIAogICBiYXNlID0gY29w eV90b19tb2RlX3JlZyAoUG1vZGUsIFhFWFAgKGRzdCwgMCkpOwogICBkc3QgPSBhZGp1c3RfYXV0 b21vZGlmeV9hZGRyZXNzIChkc3QsIFZPSURtb2RlLCBiYXNlLCAwKTsKQEAgLTIzNDU2LDcgKzIz NDYwLDggQEAgYWFyY2g2NF9leHBhbmRfY3B5bWVtIChydHggKm9wZXJhbmRzKQogCWN1cl9tb2Rl ID0gVjRTSW1vZGU7CiAKICAgICAgIGFhcmNoNjRfY29weV9vbmVfYmxvY2tfYW5kX3Byb2dyZXNz X3BvaW50ZXJzICgmc3JjLCAmZHN0LCBjdXJfbW9kZSk7Ci0KKyAgICAgIC8qIEEgc2luZ2xlIGJs b2NrIGNvcHkgaXMgMSBsb2FkICsgMSBzdG9yZS4gICovCisgICAgICBub3BzICs9IDI7CiAgICAg ICBuIC09IG1vZGVfYml0czsKIAogICAgICAgLyogRW1pdCB0cmFpbGluZyBjb3BpZXMgdXNpbmcg b3ZlcmxhcHBpbmcgdW5hbGlnbmVkIGFjY2Vzc2VzIC0gdGhpcyBpcwpAQCAtMjM0NzEsNyArMjM0 NzYsMTYgQEAgYWFyY2g2NF9leHBhbmRfY3B5bWVtIChydHggKm9wZXJhbmRzKQogCSAgbiA9IG5f Yml0czsKIAl9CiAgICAgfQorICBydHhfaW5zbiAqc2VxID0gZ2V0X2luc25zICgpOworICBlbmRf c2VxdWVuY2UgKCk7CisKKyAgLyogQSBtZW1jcHkgbGliY2FsbCBpbiB0aGUgd29yc3QgY2FzZSB0 YWtlcyAzIGluc3RydWN0aW9ucyB0byBwcmVwYXJlIHRoZQorICAgICBhcmd1bWVudHMgKyAxIGZv ciB0aGUgY2FsbC4gICovCisgIHVuc2lnbmVkIGxpYmNhbGxfY29zdCA9IDQ7CisgIGlmIChzaXpl X3AgJiYgbGliY2FsbF9jb3N0IDwgbm9wcykKKyAgICByZXR1cm4gZmFsc2U7CiAKKyAgZW1pdF9p bnNuIChzZXEpOwogICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvY3B5bWVtLXNpemUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L2NweW1lbS1zaXplLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ0ODhiNzQzMDFkZDZiZjYz MjEzNzJhMDk4NTc3MWIwZTRkNWMwNwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2NweW1lbS1zaXplLmMKQEAgLTAsMCArMSwyOSBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU9zIiB9ICovCisKKyNpbmNsdWRl IDxzdGRsaWIuaD4KKworLyoKKyoqIGNweV8xMjc6CisqKiAgICAgIG1vdgl4MiwgMTI3CisqKiAg ICAgIGIJbWVtY3B5CisqLwordm9pZAorY3B5XzEyNyAoY2hhciAqb3V0LCBjaGFyICppbikKK3sK KyAgX19idWlsdGluX21lbWNweSAob3V0LCBpbiwgMTI3KTsKK30KKworLyoKKyoqIGNweV8xMjg6 CisqKiAgICAgIG1vdgl4MiwgMTI4CisqKiAgICAgIGIJbWVtY3B5CisqLwordm9pZAorY3B5XzEy OCAoY2hhciAqb3V0LCBjaGFyICppbikKK3sKKyAgX19idWlsdGluX21lbWNweSAob3V0LCBpbiwg MTI4KTsKK30KKworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIi ICIiIH0gfSAqLworCg== --_002_PAXPR08MB6926327FD9852F84C7D4AF6593A99PAXPR08MB6926eurp_--