From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00062.outbound.protection.outlook.com [40.107.0.62]) by sourceware.org (Postfix) with ESMTPS id 7BB61393C86D for ; Fri, 25 Sep 2020 10:26:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7BB61393C86D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Kyrylo.Tkachov@arm.com 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=JPXQNuRNAk9zjj9bY1X8QYt5btn/mOMWsFY9HopdN/c=; b=ncX45k3CCzLBDb6MaCiMeXR4cI+X1inJQwCsRyFgGXtlqyRIyC9F+J7iJSsO7sooIEVudrpVzRb9C/0+R/L7JIw9uJHbes3A2MWBIZphHqBc/BeQ1eJ8g7Ylm3j26IQa0s7sEP39exmPVR8Ex7rZ6oHJwbPzlo9sThcBftnhBPs= Received: from MR2P264CA0141.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:30::33) by AM4PR08MB2883.eurprd08.prod.outlook.com (2603:10a6:205:9::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.15; Fri, 25 Sep 2020 10:26:37 +0000 Received: from VE1EUR03FT040.eop-EUR03.prod.protection.outlook.com (2603:10a6:500:30:cafe::99) by MR2P264CA0141.outlook.office365.com (2603:10a6:500:30::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22 via Frontend Transport; Fri, 25 Sep 2020 10:26:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT040.mail.protection.outlook.com (10.152.18.210) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.21 via Frontend Transport; Fri, 25 Sep 2020 10:26:37 +0000 Received: ("Tessian outbound a0bffebca527:v64"); Fri, 25 Sep 2020 10:26:37 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 3b61f18e59523e48 X-CR-MTA-TID: 64aa7808 Received: from 2a822a7ac9a4.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E95341AC-0EB4-4043-B2FA-A53E861CC03C.1; Fri, 25 Sep 2020 10:25:57 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2a822a7ac9a4.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 25 Sep 2020 10:25:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JotBI1/KjE1Y+lFz/IfN47r/jRXvfyu/hYHOjDxnHUhirMUaqzZReAlhfX4B2bHVxXgABKhap5F31R5qTUeVFf+ApzZ2fz1tKMdQh9GZhfOXTGXfXvRUckd4pjQY3zH5BQFdMWnJjYU/csd/nG5/g2s2hw0MLr+Q1pUDpmj5vKqOqIdkJarD0PldeAQ4D7/pnqkKVmNJ925tWo/VA7xdnP0bseAej6NmYSmCtlHd70B/uclie2/GzGwQJ/6GjubIuCUtNugnhvF+yxS2hu6OlTuSCK0wz8hNjnbhVnKpG7HmURPCazlourONr111eFteWKrFJdWoi2drlBoAkcDF8g== 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-SenderADCheck; bh=JPXQNuRNAk9zjj9bY1X8QYt5btn/mOMWsFY9HopdN/c=; b=oKXqLVYn7GSbuQ/XyafgsGC9xkFVCe0brtbFSPFtA01QTobmZ4pJU3rR82UYLuBBLkU9+NU6zDDfNB95u07bBWveDXoZ16b04gUPcoB/afEHtXXkwjDqOy5ip7hvQuLDqwc/mytABUGLBsB2rwRSwOC+JEK/XBFSfsxmRsZu42P2RySPs2JIdiqiL0tl7SDwzUmy4MMtsh++zmEbZgLMDvwsIzTDSe50fS5jxoVp4weV1G+35ZYYMifRMWO3m8OfOM+vXKylr0ifQdMxRFZklb6+GxTDwVJKbauDeScmtJCCcYcObYehnwEkShfhMp42/idFd3WuSIBjHB1LGGg6Gg== 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=JPXQNuRNAk9zjj9bY1X8QYt5btn/mOMWsFY9HopdN/c=; b=ncX45k3CCzLBDb6MaCiMeXR4cI+X1inJQwCsRyFgGXtlqyRIyC9F+J7iJSsO7sooIEVudrpVzRb9C/0+R/L7JIw9uJHbes3A2MWBIZphHqBc/BeQ1eJ8g7Ylm3j26IQa0s7sEP39exmPVR8Ex7rZ6oHJwbPzlo9sThcBftnhBPs= Received: from DB7PR08MB3002.eurprd08.prod.outlook.com (2603:10a6:5:20::25) by DBBPR08MB4300.eurprd08.prod.outlook.com (2603:10a6:10:c5::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.21; Fri, 25 Sep 2020 10:25:54 +0000 Received: from DB7PR08MB3002.eurprd08.prod.outlook.com ([fe80::9ce1:1ded:d7a5:af85]) by DB7PR08MB3002.eurprd08.prod.outlook.com ([fe80::9ce1:1ded:d7a5:af85%7]) with mapi id 15.20.3391.027; Fri, 25 Sep 2020 10:25:54 +0000 From: Kyrylo Tkachov To: "gcc-patches@gcc.gnu.org" Subject: [PATCH][AArch64][GCC 9] Implement __rndr, __rndrrs intrinsics Thread-Topic: [PATCH][AArch64][GCC 9] Implement __rndr, __rndrrs intrinsics Thread-Index: AdaTJae+OA2SCz9RTruwSMgROZ4tjw== Date: Fri, 25 Sep 2020 10:25:54 +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: F6BD7519387CD641A0E290835A46F06D.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-originating-ip: [80.5.218.175] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8a8d4420-e8b1-4990-b183-08d8613d7c18 x-ms-traffictypediagnostic: DBBPR08MB4300:|AM4PR08MB2883: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: hHPerkSlVFx+BDFn3ECc19XieXFidXvWYpRJ+N3LryqFaLqOgkJ6uAOO5DMOOq1Z3UyzzGJO6gKkMcmXkdvtDQm7kejQMvEEOxw3YjKMN3i5xHoBKyVwd5vrVpr8O40cX8e8INO+0VVfGGODb9fqygE3RA9O2/CHG/a/NNu0Jwrco+lZxRjiod7t0Xpk0XLqys1f/YlP2+Dbarb/5JjDa4uv406hDDguk6ew6B7U+20HVjDZsMhDDsybidD/LTubfgaPKUA25p6DPGwZbI1JlDFY+y11KFU2JlAImSlz7fxS10hvHbutjx/Cr+ewvhMytOY2OvdM3yGZEyV36TKglCBrgobuw4LTNt0gINkGioC3tCXBwkHQlFL4S+wpXWsPfQv9nQwlB6zqlfQG+1IsDg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR08MB3002.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(376002)(366004)(39860400002)(136003)(396003)(66476007)(316002)(66446008)(966005)(66616009)(66556008)(66946007)(6916009)(71200400001)(186003)(64756008)(2906002)(8936002)(55016002)(86362001)(76116006)(99936003)(33656002)(83380400001)(9686003)(5660300002)(8676002)(26005)(478600001)(6506007)(7696005)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 6/AoUFtJu2kWAVCt89h255WDhcH0+HV0MeIYkvJJ3coLZxDS+ZN44MNhi0ASxKAPmUCGdZqZXvlOb+AVMuGhzEnCKY8nCp027nHqHdgnIdoGeotOVLqTWKZas+SAzHGELuLiRO3gt/flLM9T6Jw4oqZOUY/PwNfOmeGS1KnZauf/1BLh2ladKicU7oMb7Wl/ptbDOa/87U79JHhqYxS/Xg/lBZYEHF7RBGFBf6gPebS7QWZcuh7ortRkmWg+9llu3iucR6y2Ak60RBHqEL6A5DPMBjYKbG7crONeOhHCONqWw4PrcGVAsOXmH4xEC9n/Ai+i8TvoCOO4OOM/lzcHEqwPDnCtvD3FZWSMP3fZ2w5Vac4beV3TIXZj8Z2KOXsnrlH5vkSwj2kXgHWS071E4E03ji19HpVkkbie/yVYdgeVToLyczSrSWkAVm1TiLiqlqFhfb6azX9P3NVpmrl2ST8KuJ4d5/zQgBNW1mZaGB8AC+ziedqWgiGpNGLqfu5JemXYWya4yrJjra0CjRRTstYVblbZ96C7k9AkEZBjDhTFl/EdgQ8zUbRE5PhDOW3gT5KeIcPfjeQc00SPnI0UeQICrXSG8e34Ywey4VMK5Rrck4ZOxJsYwzRGjHBopAr6HEbHsxdG5qNNiBhaY0ncaQ== x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_DB7PR08MB30021E7333C6BCA204A91EE193360DB7PR08MB3002eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4300 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: VE1EUR03FT040.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 60a514ec-8864-4ffd-1e77-08d8613d623e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sJK3fx3UZetK8oMY0s/AP20IplXbBsKms8toT8+CCwWSL0GyXm9m1sfLnLdE8q52XDPVmJNnpofrzx5W3zgiyjNw7q0kfMJGiaBoEujFH1WrL/lZ9cF01JG908vqYg/hdpMyjSiU8D7hvOyC1IGt+lHFSnDL6y+Nk2qEKaapYCEQG04P1g7UubiT4UVS4nFBzjHFNjPKTTpTk0LHBge9NUacOulmGh4YJIws+4q4wGBlbLKxCZDCeqcuFuF4SPgqau7dT/xwdEjQMTxhu3WbbbEJ7/eObSWXr30Dc0fOpDHvqWmW4YxLSNlDiH7u4Z8l3iozHbIAzFvO56W9WQJZXAv8G00wIPUDq45K4qcwJcBSZofznGcN4yTvA51W1C85CPaybkSWRCkyj/O6Mx8AHcV1mGgWVe1tTYkSLZSEx/9c9ytri1iuNSjVqtfKcfgAOcL6qFX1MYqru4A9d9BOyQWa4hQFVEH17AmME/ttTDM= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(346002)(39850400004)(396003)(376002)(136003)(46966005)(235185007)(316002)(356005)(81166007)(6506007)(478600001)(26005)(33656002)(5660300002)(86362001)(7696005)(186003)(36906005)(336012)(8676002)(8936002)(55016002)(9686003)(82740400003)(2906002)(6916009)(70586007)(966005)(52536014)(99936003)(66616009)(47076004)(82310400003)(83380400001)(70206006); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2020 10:26:37.4318 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8a8d4420-e8b1-4990-b183-08d8613d7c18 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT040.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB2883 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Fri, 25 Sep 2020 10:26:44 -0000 --_002_DB7PR08MB30021E7333C6BCA204A91EE193360DB7PR08MB3002eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, I'd like to backport this patch to the GCC 9 branch implementing the RNG in= trinsics from Armv8.5-a. It should have been supported there from the start. It doesn't apply cleanly since the SVE ACLE work in GCC 10 reworked some of= the builtin handling, but the resolution isn't complex. Bootstrapped, tested and pushed on the branch. Thanks, Kyrill This patch implements the recently published[1] __rndr and __rndrrs intrinsics used to access the RNG in Armv8.5-A. The __rndrrs intrinsics can be used to reseed the generator too. They are guarded by the __ARM_FEATURE_RNG feature macro. A quirk with these intrinsics is that they store the random number in their pointer argument and return a status code if the generation succeeded. The instructions themselves write the CC flags indicating the success of the operation that we can then read with a CSET. Therefore this implementation makes use of the IGNORE indicator to the builtin expand machinery to avoid generating the CSET if its result is unused (the CC reg clobbering effect is still reflected in the pattern). I've checked that using unspec_volatile prevents undesirable CSEing of the instructions. [1] https://developer.arm.com/docs/101028/latest/data-processing-intrinsics gcc/ PR target/71233 * config/aarch64/aarch64.md (UNSPEC_RNDR, UNSPEC_RNDRRS): Define. (aarch64_rndr): New define_insn. (aarch64_rndrrs): Likewise. * config/aarch64/aarch64.h (AARCH64_ISA_RNG): Define. (TARGET_RNG): Likewise. * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): Add AARCH64_BUILTIN_RNG_RNDR, AARCH64_BUILTIN_RNG_RNDRRS. (aarch64_init_rng_builtins): Define. (aarch64_init_builtins): Call aarch64_init_rng_builtins. (aarch64_expand_rng_builtin): Define. (aarch64_expand_builtin): Use IGNORE argument, handle RNG builtins. * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define __ARM_FEATURE_RNG when TARGET_RNG. * config/aarch64/arm_acle.h (__rndr, __rndrrs): Define. gcc/testsuite/ PR target/71233 * gcc.target/aarch64/acle/rng_1.c: New test. --_002_DB7PR08MB30021E7333C6BCA204A91EE193360DB7PR08MB3002eurp_ Content-Type: application/octet-stream; name="rndr-9.patch" Content-Description: rndr-9.patch Content-Disposition: attachment; filename="rndr-9.patch"; size=8582; creation-date="Fri, 25 Sep 2020 10:21:11 GMT"; modification-date="Fri, 25 Sep 2020 10:20:47 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5zLmMgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1idWlsdGlucy5jCmluZGV4IGQ0NDcxNmMwNTA2MjY5OGYz MDdmM2Y3ODI2NDI0YjJhMDMyYWMwMTEuLmYyMmY2NDc5N2EyNTA5ZTJmM2Y2ZDYwMTVjMTgxNjE0 NjdlNzY1MDQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5z LmMKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuYwpAQCAtNDM4LDYg KzQzOCw5IEBAIGVudW0gYWFyY2g2NF9idWlsdGlucwogICBBQVJDSDY0X1NJTURfRkNNTEFfTEFO RVFfQlVJTFRJTlMKICAgLyogQnVpbHRpbiBmb3IgQXJtOC4zLWEgSmF2YXNjcmlwdCBjb252ZXJz aW9uIGluc3RydWN0aW9uLiAgKi8KICAgQUFSQ0g2NF9KU0NWVCwKKyAgLyogQXJtdjguNS1hIFJO RyBpbnN0cnVjdGlvbiBidWlsdGlucy4gICovCisgIEFBUkNINjRfQlVJTFRJTl9STkdfUk5EUiwK KyAgQUFSQ0g2NF9CVUlMVElOX1JOR19STkRSUlMsCiAgIEFBUkNINjRfQlVJTFRJTl9NQVgKIH07 CiAKQEAgLTEwNTksNiArMTA2MiwyNSBAQCBhYXJjaDY0X2luaXRfcGF1dGhfaGludF9idWlsdGlu cyAodm9pZCkKIAkJCSAgICBOVUxMX1RSRUUpOwogfQogCisvKiBBZGQgYnVpbHRpbnMgZm9yIFJh bmRvbSBOdW1iZXIgaW5zdHJ1Y3Rpb25zLiAgKi8KKworc3RhdGljIHZvaWQKK2FhcmNoNjRfaW5p dF9ybmdfYnVpbHRpbnMgKHZvaWQpCit7CisgIHRyZWUgdW5zaWduZWRfcHRyX3R5cGUgPSBidWls ZF9wb2ludGVyX3R5cGUgKHVuc2lnbmVkX2ludERJX3R5cGVfbm9kZSk7CisgIHRyZWUgZnR5cGUK KyAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIHVuc2ln bmVkX3B0cl90eXBlLCBOVUxMKTsKKyAgYWFyY2g2NF9idWlsdGluX2RlY2xzW0FBUkNINjRfQlVJ TFRJTl9STkdfUk5EUl0KKyAgICA9IGFkZF9idWlsdGluX2Z1bmN0aW9uICgiX19idWlsdGluX2Fh cmNoNjRfcm5kciIsIGZ0eXBlLAorCQkJICAgIEFBUkNINjRfQlVJTFRJTl9STkdfUk5EUiwgQlVJ TFRfSU5fTUQsIE5VTEwsCisJCQkgICAgTlVMTF9UUkVFKTsKKyAgYWFyY2g2NF9idWlsdGluX2Rl Y2xzW0FBUkNINjRfQlVJTFRJTl9STkdfUk5EUlJTXQorICAgID0gYWRkX2J1aWx0aW5fZnVuY3Rp b24gKCJfX2J1aWx0aW5fYWFyY2g2NF9ybmRycnMiLCBmdHlwZSwKKwkJCSAgICBBQVJDSDY0X0JV SUxUSU5fUk5HX1JORFJSUywgQlVJTFRfSU5fTUQsIE5VTEwsCisJCQkgICAgTlVMTF9UUkVFKTsK K30KKworCiB2b2lkCiBhYXJjaDY0X2luaXRfYnVpbHRpbnMgKHZvaWQpCiB7CkBAIC0xMDg3LDYg KzExMDksNyBAQCBhYXJjaDY0X2luaXRfYnVpbHRpbnMgKHZvaWQpCiAKICAgYWFyY2g2NF9pbml0 X2NyYzMyX2J1aWx0aW5zICgpOwogICBhYXJjaDY0X2luaXRfYnVpbHRpbl9yc3FydCAoKTsKKyAg YWFyY2g2NF9pbml0X3JuZ19idWlsdGlucyAoKTsKIAogICB0cmVlIGZ0eXBlX2pjdnQKICAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50U0lfdHlwZV9ub2RlLCBkb3VibGVfdHlwZV9u b2RlLCBOVUxMKTsKQEAgLTE1MDUsNiArMTUyOCw0MiBAQCBhYXJjaDY0X2V4cGFuZF9mY21sYV9i dWlsdGluICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgaW50IGZjb2RlKQogICByZXR1cm4gdGFyZ2V0 OwogfQogCisvKiBFeHBhbmQgYSByYW5kb20gbnVtYmVyIGJ1aWx0aW4gRVhQIHdpdGggY29kZSBG Q09ERSwgcHV0dGluZyB0aGUgcmVzdWx0CisgICBpbnQgVEFSR0VULiAgSWYgSUdOT1JFIGlzIHRy dWUgdGhlIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLiAgKi8KKworcnR4CithYXJjaDY0X2V4cGFu ZF9ybmdfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIGludCBmY29kZSwgaW50IGlnbm9y ZSkKK3sKKyAgcnR4IHBhdDsKKyAgZW51bSBpbnNuX2NvZGUgaWNvZGU7CisgIGlmIChmY29kZSA9 PSBBQVJDSDY0X0JVSUxUSU5fUk5HX1JORFIpCisgICAgaWNvZGUgPSBDT0RFX0ZPUl9hYXJjaDY0 X3JuZHI7CisgIGVsc2UgaWYgKGZjb2RlID09IEFBUkNINjRfQlVJTFRJTl9STkdfUk5EUlJTKQor ICAgIGljb2RlID0gQ09ERV9GT1JfYWFyY2g2NF9ybmRycnM7CisgIGVsc2UKKyAgICBnY2NfdW5y ZWFjaGFibGUgKCk7CisKKyAgcnR4IHJhbmQgPSBnZW5fcmVnX3J0eCAoREltb2RlKTsKKyAgcGF0 ID0gR0VOX0ZDTiAoaWNvZGUpIChyYW5kKTsKKyAgaWYgKCFwYXQpCisgICAgcmV0dXJuIE5VTExf UlRYOworCisgIHRyZWUgYXJnMCA9IENBTExfRVhQUl9BUkcgKGV4cCwgMCk7CisgIHJ0eCByZXNf YWRkciA9IGV4cGFuZF9ub3JtYWwgKGFyZzApOworICByZXNfYWRkciA9IGNvbnZlcnRfbWVtb3J5 X2FkZHJlc3MgKFBtb2RlLCByZXNfYWRkcik7CisgIHJ0eCByZXNfbWVtID0gZ2VuX3J0eF9NRU0g KERJbW9kZSwgcmVzX2FkZHIpOworICBlbWl0X2luc24gKHBhdCk7CisgIGVtaXRfbW92ZV9pbnNu IChyZXNfbWVtLCByYW5kKTsKKyAgLyogSWYgdGhlIHN0YXR1cyByZXN1bHQgaXMgdW51c2VkIGRv bid0IGdlbmVyYXRlIHRoZSBDU0VUIGNvZGUuICAqLworICBpZiAoaWdub3JlKQorICAgIHJldHVy biB0YXJnZXQ7CisKKyAgcnR4IGNjX3JlZyA9IGdlbl9ydHhfUkVHIChDQ19abW9kZSwgQ0NfUkVH TlVNKTsKKyAgcnR4IGNtcF9ydHggPSBnZW5fcnR4X2ZtdF9lZSAoTkUsIFNJbW9kZSwgY2NfcmVn LCBjb25zdDBfcnR4KTsKKyAgZW1pdF9pbnNuIChnZW5fYWFyY2g2NF9jc3RvcmVzaSAodGFyZ2V0 LCBjbXBfcnR4LCBjY19yZWcpKTsKKyAgcmV0dXJuIHRhcmdldDsKK30KKwogLyogRXhwYW5kIGFu IGV4cHJlc3Npb24gRVhQIHRoYXQgY2FsbHMgYSBidWlsdC1pbiBmdW5jdGlvbiwKICAgIHdpdGgg cmVzdWx0IGdvaW5nIHRvIFRBUkdFVCBpZiB0aGF0J3MgY29udmVuaWVudC4gICovCiBydHgKQEAg LTE2MDMsNiArMTY2Miw5IEBAIGFhcmNoNjRfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLAogICAg IGNhc2UgQUFSQ0g2NF9TSU1EX0JVSUxUSU5fRkNNTEFfTEFORVExODBfVjRIRjoKICAgICBjYXNl IEFBUkNINjRfU0lNRF9CVUlMVElOX0ZDTUxBX0xBTkVRMjcwX1Y0SEY6CiAgICAgICByZXR1cm4g YWFyY2g2NF9leHBhbmRfZmNtbGFfYnVpbHRpbiAoZXhwLCB0YXJnZXQsIGZjb2RlKTsKKyAgICBj YXNlIEFBUkNINjRfQlVJTFRJTl9STkdfUk5EUjoKKyAgICBjYXNlIEFBUkNINjRfQlVJTFRJTl9S TkdfUk5EUlJTOgorICAgICAgcmV0dXJuIGFhcmNoNjRfZXhwYW5kX3JuZ19idWlsdGluIChleHAs IHRhcmdldCwgZmNvZGUsIGlnbm9yZSk7CiAgICAgfQogCiAgIGlmIChmY29kZSA+PSBBQVJDSDY0 X1NJTURfQlVJTFRJTl9CQVNFICYmIGZjb2RlIDw9IEFBUkNINjRfU0lNRF9CVUlMVElOX01BWCkK ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWMuYyBiL2djYy9jb25maWcv YWFyY2g2NC9hYXJjaDY0LWMuYwppbmRleCBjZTJkMGFlZmRlMWY4NmFkYzYxZWQ3YTAxYmQwMjQ5 NWE5MTc0M2VlLi4xODEyMzg3ZGVlNjdhYmY0NTY1ODRiOGVjMTI0MjAxYTg1OWE2NTY1IDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jLmMKKysrIGIvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQtYy5jCkBAIC0xNjksNiArMTY5LDggQEAgYWFyY2g2NF91cGRhdGVfY3Bw X2J1aWx0aW5zIChjcHBfcmVhZGVyICpwZmlsZSkKICAgICAgIGJ1aWx0aW5fZGVmaW5lX3dpdGhf aW50X3ZhbHVlICgiX19BUk1fRkVBVFVSRV9QQUNfREVGQVVMVCIsIHYpOwogICAgIH0KIAorICBh YXJjaDY0X2RlZl9vcl91bmRlZiAoVEFSR0VUX1JORywgIl9fQVJNX0ZFQVRVUkVfUk5HIiwgcGZp bGUpOworCiAgIC8qIE5vdCBmb3IgQUNMRSwgYnV0IHJlcXVpcmVkIHRvIGtlZXAgImZsb2F0Lmgi IGNvcnJlY3QgaWYgd2Ugc3dpdGNoCiAgICAgIHRhcmdldCBiZXR3ZWVuIGltcGxlbWVudGF0aW9u cyB0aGF0IGRvIG9yIGRvIG5vdCBzdXBwb3J0IEFSTXY4LjItQQogICAgICAxNi1iaXQgZmxvYXRp bmctcG9pbnQgZXh0ZW5zaW9ucy4gICovCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuaAppbmRleCBmZWRhN2ExMzg1 ZWUxZmI1YzgzNTFiYjlkNzE1ODRhZmE4NzIyOTk4Li5hY2U4MGFjNGNlZmFmMGViYzQzOWE2OGQ0 Y2UxNmFjMTNlZGUyOTFlIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5o CisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmgKQEAgLTIzNCw2ICsyMzQsNyBAQCBl eHRlcm4gdW5zaWduZWQgYWFyY2g2NF9hcmNoaXRlY3R1cmVfdmVyc2lvbjsKICNkZWZpbmUgQUFS Q0g2NF9JU0FfU0hBMwkgICAoYWFyY2g2NF9pc2FfZmxhZ3MgJiBBQVJDSDY0X0ZMX1NIQTMpCiAj ZGVmaW5lIEFBUkNINjRfSVNBX0YxNkZNTAkgICAoYWFyY2g2NF9pc2FfZmxhZ3MgJiBBQVJDSDY0 X0ZMX0YxNkZNTCkKICNkZWZpbmUgQUFSQ0g2NF9JU0FfUkNQQzhfNAkgICAoYWFyY2g2NF9pc2Ff ZmxhZ3MgJiBBQVJDSDY0X0ZMX1JDUEM4XzQpCisjZGVmaW5lIEFBUkNINjRfSVNBX1JORwkJICAg KGFhcmNoNjRfaXNhX2ZsYWdzICYgQUFSQ0g2NF9GTF9STkcpCiAjZGVmaW5lIEFBUkNINjRfSVNB X1Y4XzUJICAgKGFhcmNoNjRfaXNhX2ZsYWdzICYgQUFSQ0g2NF9GTF9WOF81KQogI2RlZmluZSBB QVJDSDY0X0lTQV9TQgkJICAgKGFhcmNoNjRfaXNhX2ZsYWdzICYgQUFSQ0g2NF9GTF9TQikKIApA QCAtMjgwLDYgKzI4MSw5IEBAIGV4dGVybiB1bnNpZ25lZCBhYXJjaDY0X2FyY2hpdGVjdHVyZV92 ZXJzaW9uOwogLyogQXJtdjguMy1hIENvbXBsZXggbnVtYmVyIGV4dGVuc2lvbiB0byBBZHZTSU1E IGV4dGVuc2lvbnMuICAqLwogI2RlZmluZSBUQVJHRVRfQ09NUExFWCAoVEFSR0VUX1NJTUQgJiYg VEFSR0VUX0FSTVY4XzMpCiAKKy8qIFJhbmRvbSBudW1iZXIgaW5zdHJ1Y3Rpb25zIGZyb20gQXJt djguNS1hLiAgKi8KKyNkZWZpbmUgVEFSR0VUX1JORyAoQUFSQ0g2NF9JU0FfUk5HKQorCiAvKiBN YWtlIHN1cmUgdGhpcyBpcyBhbHdheXMgZGVmaW5lZCBzbyB3ZSBkb24ndCBoYXZlIHRvIGNoZWNr IGZvciBpZmRlZnMKICAgIGJ1dCByYXRoZXIgdXNlIG5vcm1hbCBpZnMuICAqLwogI2lmbmRlZiBU QVJHRVRfRklYX0VSUl9BNTNfODM1NzY5X0RFRkFVTFQKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv YWFyY2g2NC9hYXJjaDY0Lm1kIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQKaW5kZXgg Yjk5YzM0MDI2NTI5ZDkxYWY4YmI2MDczMTM1ZDI4ZTQxNzU3ZjNkYy4uOGQ3MTk5NDYxMWRmMGE4 MzkzMTExMTA0YzUwMTQ5MGUxM2E0NmZlYSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQubWQKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQKQEAgLTI0Nyw2 ICsyNDcsOCBAQAogICAgIFVOU1BFQ1ZfQlRJX0MJCTsgUmVwcmVzZW50IEJUSSBjLgogICAgIFVO U1BFQ1ZfQlRJX0oJCTsgUmVwcmVzZW50IEJUSSBqLgogICAgIFVOU1BFQ1ZfQlRJX0pDCQk7IFJl cHJlc2VudCBCVEkgamMuCisgICAgVU5TUEVDX1JORFIJCQk7IFJlcHJlc2VudCBSTkRSCisgICAg VU5TUEVDX1JORFJSUwkJOyBSZXByZXNlbnQgUk5EUlJTCiAgIF0KICkKIApAQCAtNzI3MCw2ICs3 MjcyLDI2IEBACiAgICAoc2V0X2F0dHIgInNwZWN1bGF0aW9uX2JhcnJpZXIiICJ0cnVlIildCiAp CiAKKyhkZWZpbmVfaW5zbiAiYWFyY2g2NF9ybmRyIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpE SSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQorCSh1bnNwZWNfdm9sYXRpbGU6REkgWyhjb25z dF9pbnQgMCldIFVOU1BFQ19STkRSKSkKKyAgIChzZXQgKHJlZzpDQ19aIENDX1JFR05VTSkKKwko dW5zcGVjX3ZvbGF0aWxlOkNDX1ogWyhjb25zdF9pbnQgMCldIFVOU1BFQ19STkRSKSldCisgICJU QVJHRVRfUk5HIgorICAibXJzXHQlMCwgUk5EUiIKKyAgWyhzZXRfYXR0ciAidHlwZSIgIm1ycyIp XQorKQorCisoZGVmaW5lX2luc24gImFhcmNoNjRfcm5kcnJzIgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQorCSh1bnNwZWNfdm9sYXRpbGU6REkg Wyhjb25zdF9pbnQgMCldIFVOU1BFQ19STkRSUlMpKQorICAgKHNldCAocmVnOkNDX1ogQ0NfUkVH TlVNKQorCSh1bnNwZWNfdm9sYXRpbGU6Q0NfWiBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX1JORFJS UykpXQorICAiVEFSR0VUX1JORyIKKyAgIm1yc1x0JTAsIFJORFJSUyIKKyAgWyhzZXRfYXR0ciAi dHlwZSIgIm1ycyIpXQorKQorCiA7OyBBZHZTSU1EIFN0dWZmCiAoaW5jbHVkZSAiYWFyY2g2NC1z aW1kLm1kIikKIApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FybV9hY2xlLmggYi9n Y2MvY29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaAppbmRleCAyOTg4MDc5M2JkYzc1Mzg3MDVlYWNk N2QzNjU1ODM2MzM1YTk5MWY3Li40MjMxMzZlY2VmZDVkM2Q3MmJjM2MxZjU2N2IxNGIzOGZkODQz MTg2IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaAorKysgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYXJtX2FjbGUuaApAQCAtOTksNiArOTksMjQgQEAgX19jcmMzMmQgKHVp bnQzMl90IF9fYSwgdWludDY0X3QgX19iKQogICByZXR1cm4gX19idWlsdGluX2FhcmNoNjRfY3Jj MzJ4IChfX2EsIF9fYik7CiB9CiAKKyNwcmFnbWEgR0NDIHBvcF9vcHRpb25zCisKKyNwcmFnbWEg R0NDIHB1c2hfb3B0aW9ucworI3ByYWdtYSBHQ0MgdGFyZ2V0ICgiK25vdGhpbmcrcm5nIikKK19f ZXh0ZW5zaW9uX18gc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNf aW5saW5lX18pKQorX19ybmRyICh1aW50NjRfdCAqX19yZXMpCit7CisgIHJldHVybiBfX2J1aWx0 aW5fYWFyY2g2NF9ybmRyIChfX3Jlcyk7Cit9CisKK19fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5s aW5lIGludCBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKQorX19ybmRycnMgKHVp bnQ2NF90ICpfX3JlcykKK3sKKyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X3JuZHJycyAoX19y ZXMpOworfQorCisjcHJhZ21hIEdDQyBwb3Bfb3B0aW9ucworCiAjaWZkZWYgX19jcGx1c3BsdXMK IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv YWNsZS9ybmdfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYWNsZS9ybmdf MS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLjFmYmRiNjI3NjYzMjIyMWQ1ZGFhNzgwNWExOWM4NmYyMGNhZTg4MGUK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hY2xl L3JuZ18xLmMKQEAgLTAsMCArMSw1MyBAQAorLyogVGVzdCB0aGUgX19ybmRyIEFDTEUgaW50cmlu c2ljLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAt bWFyY2g9YXJtdjguNS1hK3JuZyIgfSAqLworCisjaW5jbHVkZSA8YXJtX2FjbGUuaD4KKworI2lm ZGVmIF9fQVJNX0ZFQVRVUkVfUk5HCisvKiBDaGVjayB0aGF0IGluc3RydWN0aW9uIGlzIGdlbmVy YXRlZCB3aGVuIHN0YXR1cyByZXN1bHQgaXMgdW51c2VkLiAgKi8KK3VpbnQ2NF90Cit0ZXN0X3Ju ZHJfbm9fc3RhdCAodm9pZCkKK3sKKyAgdWludDY0X3QgcmVzOworICBfX3JuZHIgKCZyZXMpOwor ICByZXR1cm4gcmVzOworfQorCisvKiBDaGVjayB0aGF0IGluc3RydWN0aW9uIGlzIGdlbmVyYXRl ZCB3aGVuIHJhbmRvbSBudW1iZXIgcmVzdWx0CisgICBpcyB1bnVzZWQuICAqLworaW50Cit0ZXN0 X3JuZHJfZXJyb3JfY2hlY2sgKHZvaWQpCit7CisgIHVpbnQ2NF90IHJlczsKKyAgaW50IGZhaWwg PSBfX3JuZHIgKCZyZXMpOworICBpZiAoZmFpbCkKKyAgICByZXR1cm4gMDsKKyAgcmV0dXJuIC0x OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1yc1x0eC4uPywg Uk5EUlxuIiAyIH0gfSAqLworCisvKiBDaGVjayB0aGF0IGluc3RydWN0aW9uIGlzIGdlbmVyYXRl ZCB3aGVuIHN0YXR1cyByZXN1bHQgaXMgdW51c2VkLiAgKi8KK3VpbnQ2NF90Cit0ZXN0X3JuZHJy c19ub19zdGF0ICh2b2lkKQoreworICB1aW50NjRfdCByZXM7CisgIF9fcm5kcnJzICgmcmVzKTsK KyAgcmV0dXJuIHJlczsKK30KKworLyogQ2hlY2sgdGhhdCBpbnN0cnVjdGlvbiBpcyBnZW5lcmF0 ZWQgd2hlbiByYW5kb20gbnVtYmVyIHJlc3VsdAorICAgaXMgdW51c2VkLiAgKi8KK2ludAordGVz dF9ybmRycnNfZXJyb3JfY2hlY2sgKHZvaWQpCit7CisgIHVpbnQ2NF90IHJlczsKKyAgaW50IGZh aWwgPSBfX3JuZHJycyAoJnJlcyk7CisgIGlmIChmYWlsKQorICAgIHJldHVybiAwOworICByZXR1 cm4gLTE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibXJzXHR4 Li4/LCBSTkRSUlNcbiIgMiB9IH0gKi8KKyNlbmRpZgo= --_002_DB7PR08MB30021E7333C6BCA204A91EE193360DB7PR08MB3002eurp_--