From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on2083.outbound.protection.outlook.com [40.107.14.83]) by sourceware.org (Postfix) with ESMTPS id D21AE385842E for ; Wed, 30 Nov 2022 17:40:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D21AE385842E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fL2vOU3cFq2NiDySZbn0PKZxe7NRPZbMtgc0KmtB1ENZ1nkxfxNdzvwfxSrxYT9o1GkjGcru5FGaVw+GWa6pMA1g08o08StfUGGNDzEDA6czQdnZ1EBr4CaalrUQyl1gAm/mUJIxGdwNP9YFEs7ynF25/8VzbL/SKaGecNlf50pBqZ8PmdpNF8taDApkbC2oT3XfBGaKb9JmjST0/15JiABJG8D2wghvx67UjHDfT7/kXLaBNvvQRRtbB65dWRPNZCOT/yrgV0NIcT1SCUAZp9eue0/egBLpbFAcrcUojZk+Efu6ikZ6EM7SnrlHvnQYRfsGdMlMFEpFgbkQwV8qTg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Afmp0UvDpxmflq5ASIk3+aWxTZe1QOykJ4CZIdj4CW4=; b=mNHln/wXwIGnD+WkDbdpN5n50Vp5KK6fvtUdO5OT/HzeiFYBPOIsI5x0xbTm9YPhDr9GxI4TUAseKC+hKywuUxMxM9CiudvzXkY8HdXh1kOQdkZJ0Zpza4nzLkr4eUeWJ93bjd+jm+HJjNQMNboo2BC0h8MPa3kl27FjuhMAVQJggVXLvSMceCmLLILGm5ePUV5uvEkHtt7cAPL9BSETm8kbnXUG74BPycJtCZZv5ElfZBVbH9uEdtib9GquKDZCRJvkHQaeyP30ZWq013ip/UKAyRYrHF6qjmEKDq8KzzSLDpVPkn2pzqkNB1w4p+2Ji6tvVksyVr91xXsVkuqaSQ== 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=Afmp0UvDpxmflq5ASIk3+aWxTZe1QOykJ4CZIdj4CW4=; b=mJBhRZBgry141dmVU/jco7nMjEuwhiRzOo6lRWr1AbbZ54InDNEs0jg9ggONIV4xDqfrnq/byzRI+PRnhbdNtgN+7doOhgYD+mQsmEdepdIE5N4wCxWXCbonUfNl6lJq+6GI7g4DsvfwxvZVOCJMrT/+S+EQcwiwkdi4yDXKyGg= Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by DB9PR08MB7605.eurprd08.prod.outlook.com (2603:10a6:10:308::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.8; Wed, 30 Nov 2022 17:40:16 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::a7d2:445d:606d:7046]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::a7d2:445d:606d:7046%7]) with mapi id 15.20.5880.008; Wed, 30 Nov 2022 17:40:16 +0000 From: Kyrylo Tkachov To: "gcc-patches@gcc.gnu.org" Subject: [PATCH] aarch64: Specify that FEAT_MOPS sequences clobber CC Thread-Topic: [PATCH] aarch64: Specify that FEAT_MOPS sequences clobber CC Thread-Index: AdkE4rg2RUxEEVeoSE+1WMyMV8x7aw== Date: Wed, 30 Nov 2022 17:40:16 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAXPR08MB6926:EE_|DB9PR08MB7605:EE_ x-ms-office365-filtering-correlation-id: d0822178-951f-4f72-9cf7-08dad2f9f191 nodisclaimer: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nLZw0dRSCpD7y25MjyPqj6bWarKyfnSIMRs1UMSgyowfCuVvXcKiyq/Qgs02fj6IG4YO4Tg7Rm5D6yuB37yjCpUWWLICiIPQgPMpthJKYylLzVHDUeF53LE9D5eUHwMM1veoFpp51fRQAqYeHKZ0yjByr9JcLC8Lo6PDEnDG1MxgrXWAMm1Cy7Zf7+PntszCgqr4VcAeUfYALmy5yvLlYfK/QYsrBURK+zk8BDgMtUODIh2b/mi//Fdr83LtnJ8NcF4s4UEqrNsurQhSBd+73QwrtRfXtNmKuB5eJCYI+gVjcxdK4CtaMRPooXXijosU7axJmqfpOhCyb+j6m04RmyPGZPqETEwdk+8LL4ygvi37o6tc7j7iCMrPPGAOJ4DYqtsKQ30QOkIYoghg36g8GIBK62kItprWeibqnqmqW7r2/E3gWDUuBbXW9FXynN7jLXp+Bi9BIQrp8i71XE6z4bo/ldZPLD52emDxtaVbf5VZ0IdJ+4XpKBfYnDV7dH+dtHlMGOOtVwOrc0oTSBAEn1klWq3w4BmiLoBf8B7NMuAzQ6cksNbPW3WVjj9Au8qEmyyTgHB4Tap+VRnv1OZJUpNfld+jmlKAY7U6iU5WVPu/g/hsdV22aGi6l/Ib3OfyLMCGn2OcMA4NYZ40v8DL9NtDa8M9+4NhrC5UZ4KN0bTXOtIWNXFFEQ48ZjQozjJbaTZ4HSreRZ8dXNHrsudzwsdhgx0p0WBTc7LQcbx60MFz0kTJ8O6fF9oWgJgmlM5m2WWJH7KYtfTRSr7JZ7kojw== x-forefront-antispam-report: 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:(13230022)(4636009)(396003)(376002)(39860400002)(136003)(346002)(366004)(451199015)(76116006)(66946007)(66446008)(66476007)(66556008)(8936002)(33656002)(8676002)(5660300002)(41300700001)(64756008)(86362001)(52536014)(9686003)(478600001)(71200400001)(26005)(6506007)(7696005)(186003)(6916009)(38070700005)(122000001)(316002)(99936003)(55016003)(38100700002)(2906002)(84970400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?xob7fzpCKga8heb/LjNCUt2ekuajL8qvFOl5t0DYWAgp5GqM+Sd5JYXBCB7h?= =?us-ascii?Q?IUXZV/xVV3AReLVxopFGOj17gwnNjrkCxNeM/QXgyFT47kx4WWtPv6Dn9T++?= =?us-ascii?Q?SC43+UT+LSE8tAK6m9MR3lCYjyW/Fy/vSu9XwCYJWoW9588pU3OzIlZ8wgNR?= =?us-ascii?Q?2Ah3pW/2Zo5G4xL+KpRahen0ml55cRc1fVZRPLA3NWLNd9rW5b4L3U5PUbRb?= =?us-ascii?Q?QJYtIcFQmcgNKSLFPRQ/VWjWZPMxiQ9GLDX3jZ9Vc06RMf9XFyezCflt+9+9?= =?us-ascii?Q?OCqbz4w3dnX7IIWaLZ3vy20xNaK1es0s7+8LIeQbQrLsvHwQYEOT8zhl3KD4?= =?us-ascii?Q?b81b8Qe4w+txO67f/XHERjy52kcrwkxvpTLvoBUzU+dAmZ0pRKNVWDVyCkjd?= =?us-ascii?Q?nSTx0VNIrwVgsYVpePz/Bp3qxgZCMC+csjH03TDUvDkBbA6rJjcSR8PZnXnR?= =?us-ascii?Q?u/zKxncZh68dyLbn+JW0SjulHlmF8VDkIMOedWi3s9vpzzj9E0hCEBLUrmrY?= =?us-ascii?Q?Y7jsgT2u5j3fOslgQVrxSDTAmBitArIkPBNThWiSTtBepU9DwfSVtrXLkIIJ?= =?us-ascii?Q?WWwMZdmK67rzqk2CYLWGby+A5uAsqlxbeLNAJGizq/EtpoTDxtNQ05zH6SOT?= =?us-ascii?Q?qTij1zF6nsInJ67XDe4CzyXUWm0Fp5cXusDP2DTaCO+j7j/8r+falpcbncV0?= =?us-ascii?Q?pLLYHwGYz3wMjHwQ07vfIicRUw8N/1mNNcUUZigHJJxKSp+OFKc8ngCKz0ku?= =?us-ascii?Q?1y41per6UDaCaCtx6OSfdmLAglnvxWz5ECT9sdd0ZbY9GOp5Gepwv7Zn+kvi?= =?us-ascii?Q?e5xbd/R58xBeSmB632OHl1SDUMrOujrfuZ6Y20X9IiQwm9R7DA2wwG0MG/99?= =?us-ascii?Q?QZXA6C0KaAQlyJhGBICn9fhEoPoIsO9VJGQ5c0uQ9iWe8tTzcd8l7YJgQ2kt?= =?us-ascii?Q?xMxKjUhlG8G+SdkiiGBYtiLjZfPMlTDy3qO1r0LX1bVQuIMLuKgoZtGsz9GN?= =?us-ascii?Q?c7arsK2P5z3SS0r6rpA6ZeLHBZ8mR+rhVtPojEPPTBZuct3jTqKw6yFoKVZU?= =?us-ascii?Q?XUbiOp1C8AryrGvrRKJq9RZkYcQ7SnLDOJYYJNad2FXsWlw77wu4WUs3jXsO?= =?us-ascii?Q?e3Hm1Asb+v/IZCCNKkmkSlqvlRgzqgxci78UqCPAmubleA+5ABB4OabmAME4?= =?us-ascii?Q?CgUPra+nfq/2i038iXP5GRSJQ8Xow2ltAYBst5nGqssDxkn/iWTaOUdezvq3?= =?us-ascii?Q?RGQDwurc3Wst2l9wpKv95ZY0t1XTDVe6cOpjSeX5LISWbSzchwrz1ro+trpy?= =?us-ascii?Q?cxvgrHJhOkUJw4rJdu3NslVaux0OhBLUTnT/OG4t/DT6y+z9oEHrvDo7Yf2y?= =?us-ascii?Q?uBHZ2T/Bq/DK+DQ0CaccjQBjjxQuwUMZanwsdOFxQqGKYAYdaxDjSOYh+DZl?= =?us-ascii?Q?HP4vfuVZ+USu53sekIUO+zYvgGHoA5Rygj9ZOo7+CQl19EqC+L4f8No6Ri9X?= =?us-ascii?Q?RdayT0Xx4uG5e7RdA1+ETxiH8XzPn4jFMrlv0PUHbP5vz0Js3ng60dkh+yD9?= =?us-ascii?Q?5aJ54QQYJ9Fp54/wMicVXD7T1/ftA+L99eEYrl7K?= Content-Type: multipart/mixed; boundary="_002_PAXPR08MB6926BDABBC3C304C37B3E3AE93159PAXPR08MB6926eurp_" MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAXPR08MB6926.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d0822178-951f-4f72-9cf7-08dad2f9f191 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2022 17:40:16.7263 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hgtmpUxWkQQFgHZ/w1kV1tleR8jofem3phCLuhlKh3/nzqbjYI7JDnYbOdrQQKSArXWPN4osB9kzITPZCHSUKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7605 X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_PAXPR08MB6926BDABBC3C304C37B3E3AE93159PAXPR08MB6926eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, According to the architecture pseudocode the FEAT_MOPS sequences overwrite = the NZCV flags as part of their operation, so GCC needs to model that in the relevant RTL = patterns. For the testcase: void g(); void foo (int a, size_t N, char *__restrict__ in, char *__restrict__ out) { if (a !=3D 3) __builtin_memcpy (out, in, N); if (a > 3) g (); } we will currently generate: foo: cmp w0, 3 bne .L6 .L1: ret .L6: cpyfp [x3]!, [x2]!, x1! cpyfm [x3]!, [x2]!, x1! cpyfe [x3]!, [x2]!, x1! ble .L1 // Flags reused after CPYF* sequence b g This is wrong as the result of cmp needs to be recalculated after the MOPS = sequence. With this patch we'll insert a "cmp w0, 3" before the ble, like what clang = does. Bootstrapped and tested on aarch64-none-linux-gnu. Pushing to trunk and to the GCC 12 branch after some baking time. Thanks, Kyrill gcc/ChangeLog: * config/aarch64/aarch64.md (aarch64_cpymemdi): Specify clobber of CC reg. (*aarch64_cpymemdi): Likewise. (aarch64_movmemdi): Likewise. (aarch64_setmemdi): Likewise. (*aarch64_setmemdi): Likewise. gcc/testsuite/ChangeLog: * gcc.target/aarch64/mops_5.c: New test. * gcc.target/aarch64/mops_6.c: Likewise. * gcc.target/aarch64/mops_7.c: Likewise. --_002_PAXPR08MB6926BDABBC3C304C37B3E3AE93159PAXPR08MB6926eurp_ Content-Type: application/octet-stream; name="mops-cc.patch" Content-Description: mops-cc.patch Content-Disposition: attachment; filename="mops-cc.patch"; size=3910; creation-date="Wed, 30 Nov 2022 17:39:23 GMT"; modification-date="Wed, 30 Nov 2022 17:40:16 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kIGIvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQubWQKaW5kZXggNzZiNjg5OGNhMDQ4YzU1OWZmN2Y3ZmJhNzgxMTkxNjFi M2QzODJmNi4uOGExODQwNWIwNGVhMGRmOGFkNzRjMjQ3MTljZDMxNWIyNjVjNTAxYyAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQKKysrIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQubWQKQEAgLTE1OTIsNiArMTU5Miw3IEBAIChkZWZpbmVfZXhwYW5kICJhYXJj aDY0X2NweW1lbWRpIgogICAgICBbKHNldCAobWF0Y2hfb3BlcmFuZCAyKSAoY29uc3RfaW50IDAp KQogICAgICAgKGNsb2JiZXIgKG1hdGNoX2R1cCAzKSkKICAgICAgIChjbG9iYmVyIChtYXRjaF9k dXAgNCkpCisgICAgICAoY2xvYmJlciAocmVnOkNDIENDX1JFR05VTSkpCiAgICAgICAoc2V0ICht YXRjaF9vcGVyYW5kIDApCiAJICAgKHVuc3BlYzpCTEsgWyhtYXRjaF9vcGVyYW5kIDEpIChtYXRj aF9kdXAgMildIFVOU1BFQ19DUFlNRU0pKV0pXQogICAiVEFSR0VUX01PUFMiCkBAIC0xNjA1LDYg KzE2MDYsNyBAQCAoZGVmaW5lX2luc24gIiphYXJjaDY0X2NweW1lbWRpIgogICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpESSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiKyZyIikgKGNvbnN0X2ludCAwKSkK ICAgIChjbG9iYmVyIChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICIrJnIi KSkKICAgIChjbG9iYmVyIChtYXRjaF9vcGVyYW5kOkRJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIr JnIiKSkKKyAgIChjbG9iYmVyIChyZWc6Q0MgQ0NfUkVHTlVNKSkKICAgIChzZXQgKG1lbTpCTEsg KG1hdGNoX2R1cCAwKSkKICAgICAgICAgKHVuc3BlYzpCTEsgWyhtZW06QkxLIChtYXRjaF9kdXAg MSkpIChtYXRjaF9kdXAgMildIFVOU1BFQ19DUFlNRU0pKV0KICAgIlRBUkdFVF9NT1BTIgpAQCAt MTYzNSw2ICsxNjM3LDcgQEAgKGRlZmluZV9pbnNuICJhYXJjaDY0X21vdm1lbWRpIgogICAgKHNl dCAobWF0Y2hfb3BlcmFuZDpESSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiKyZyIikgKGNvbnN0X2lu dCAwKSkKICAgIChjbG9iYmVyIChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQi ICIrJnIiKSkKICAgIChjbG9iYmVyIChtYXRjaF9vcGVyYW5kOkRJIDEgInJlZ2lzdGVyX29wZXJh bmQiICIrJnIiKSkKKyAgIChjbG9iYmVyIChyZWc6Q0MgQ0NfUkVHTlVNKSkKICAgIChzZXQgKG1l bTpCTEsgKG1hdGNoX2R1cCAwKSkKICAgICAgICAgKHVuc3BlYzpCTEsgWyhtZW06QkxLIChtYXRj aF9kdXAgMSkpIChtYXRjaF9kdXAgMildIFVOU1BFQ19NT1ZNRU0pKV0pXQogICJUQVJHRVRfTU9Q UyIKQEAgLTE2ODAsNiArMTY4Myw3IEBAIChkZWZpbmVfZXhwYW5kICJhYXJjaDY0X3NldG1lbWRp IgogICBbKHBhcmFsbGVsCiAgICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kIDIpIChjb25zdF9pbnQg MCkpCiAgICAgICAoY2xvYmJlciAobWF0Y2hfZHVwIDMpKQorICAgICAgKGNsb2JiZXIgKHJlZzpD QyBDQ19SRUdOVU0pKQogICAgICAgKHNldCAobWF0Y2hfb3BlcmFuZCAwKQogCSAgICh1bnNwZWM6 QkxLIFsobWF0Y2hfb3BlcmFuZCAxKQogCQkJKG1hdGNoX2R1cCAyKV0gVU5TUEVDX1NFVE1FTSkp XSldCkBAIC0xNjkyLDYgKzE2OTYsNyBAQCAoZGVmaW5lX2V4cGFuZCAiYWFyY2g2NF9zZXRtZW1k aSIKIChkZWZpbmVfaW5zbiAiKmFhcmNoNjRfc2V0bWVtZGkiCiAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOkRJIDIgInJlZ2lzdGVyX29wZXJhbmQiICIrJnIiKSAoY29uc3RfaW50IDApKQogICAgKGNs b2JiZXIgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIismciIpKQorICAg KGNsb2JiZXIgKHJlZzpDQyBDQ19SRUdOVU0pKQogICAgKHNldCAobWVtOkJMSyAobWF0Y2hfZHVw IDApKQogICAgICAgICAodW5zcGVjOkJMSyBbKG1hdGNoX29wZXJhbmQ6UUkgMSAiYWFyY2g2NF9y ZWdfb3JfemVybyIgInJaIikKIAkJICAgICAobWF0Y2hfZHVwIDIpXSBVTlNQRUNfU0VUTUVNKSld CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9tb3BzXzUuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L21vcHNfNS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhh MjYyNjc4NmViNTEwZWQ4ODA4NTBmYzZhYjg5OTI0ODJhOTU1ZGUKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9tb3BzXzUuYwpAQCAtMCwwICsxLDE3 IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hcmNo PWFybXY4LjYtYSttb3BzIiB9ICovCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwordm9pZCBnKCk7 Cit2b2lkIGZvbyAoaW50IGEsIHNpemVfdCBOLCBjaGFyICpfX3Jlc3RyaWN0X18gaW4sCisgICAg ICAgICBjaGFyICpfX3Jlc3RyaWN0X18gb3V0KQoreworICBpZiAoYSAhPSAzKQorICAgIF9fYnVp bHRpbl9tZW1jcHkgKG91dCwgaW4sIE4pOworICBpZiAoYSA+IDMpCisgICAgZyAoKTsKK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtjbXBcdHcwLCAqfSAyIH0gfSAq LworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9tb3BzXzYu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L21vcHNfNi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmM2YzlhNTQ4MzUxZTRlOGUxMjk2MDEzOGM1NTYzMGIxMjU5OTRlZDcKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9tb3BzXzYuYwpAQCAtMCwwICsx LDE3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1h cmNoPWFybXY4LjYtYSttb3BzIiB9ICovCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwordm9pZCBn KCk7Cit2b2lkIGZvbyAoaW50IGEsIHNpemVfdCBOLCBjaGFyICpfX3Jlc3RyaWN0X18gaW4sCisg ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0X18gb3V0KQoreworICBpZiAoYSAhPSAzKQorICAgIF9f YnVpbHRpbl9tZW1tb3ZlIChvdXQsIGluLCBOKTsKKyAgaWYgKGEgPiAzKQorICAgIGcgKCk7Cit9 CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7Y21wXHR3MCwgKn0gMiB9 IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvbW9w c183LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9tb3BzXzcuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi43OTcyMGNhMTY0YzQwMDA2MWRhMWZjMmQwZWY3YTk2OWI2MDMxOTBjCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvbW9wc183LmMKQEAgLTAs MCArMSwxNiBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8y IC1tYXJjaD1hcm12OC42LWErbW9wcyIgfSAqLworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKK3Zv aWQgZygpOwordm9pZCBmb28gKGludCBhLCBzaXplX3QgTiwgY2hhciAqX19yZXN0cmljdF9fIG91 dCkKK3sKKyAgaWYgKGEgIT0gMykKKyAgICBfX2J1aWx0aW5fbWVtc2V0IChvdXQsIDAsIE4pOwor ICBpZiAoYSA+IDMpCisgICAgZyAoKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzIHtjbXBcdHcwLCAqfSAyIH0gfSAqLworCg== --_002_PAXPR08MB6926BDABBC3C304C37B3E3AE93159PAXPR08MB6926eurp_--