From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on2059.outbound.protection.outlook.com [40.107.15.59]) by sourceware.org (Postfix) with ESMTPS id 0D5993830FE2 for ; Wed, 14 Dec 2022 11:19:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0D5993830FE2 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=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=qN+CWpjqmYg/d+XBcMD3JiOUWzSGLUDP+Fa5C0PzBHc=; b=5Lb2KQGSYutoBaMy94FMK/ozAJtQB1PyxXuUMWsa6L3aitjgkykhz9IFqz2cds5NcwLmFo+epr8bYsMtlsGkzBvhp5BAC/wliFYjuI48OXohvSTPHyuC3LZcUKuwn8UNMiv/GT5FnGnZb4rkKsGVyNGHMecFfxj9PwnmBKJj6Mc= Received: from ZR2P278CA0047.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::12) by AS8PR08MB6471.eurprd08.prod.outlook.com (2603:10a6:20b:338::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.11; Wed, 14 Dec 2022 11:19:01 +0000 Received: from VI1EUR03FT049.eop-EUR03.prod.protection.outlook.com (2603:10a6:910:53:cafe::d6) by ZR2P278CA0047.outlook.office365.com (2603:10a6:910:53::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.11 via Frontend Transport; Wed, 14 Dec 2022 11:19:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass 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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VI1EUR03FT049.mail.protection.outlook.com (100.127.144.168) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5901.21 via Frontend Transport; Wed, 14 Dec 2022 11:19:00 +0000 Received: ("Tessian outbound 2ff13c8f2c05:v130"); Wed, 14 Dec 2022 11:19:00 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 72cf70845aa9ff31 X-CR-MTA-TID: 64aa7808 Received: from 36bef9e80a82.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5BF7AAAC-C4CC-4B5C-BDB0-F05F1CA63D8B.1; Wed, 14 Dec 2022 11:18:50 +0000 Received: from EUR02-AM0-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 36bef9e80a82.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 14 Dec 2022 11:18:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UsLCEhx7qs00L2isQkxmXTfDWp3rmJkbEfn0I5KCawsjrmPcba1JnpI1lfNWnHeyh/sYrmU56bu8pKxBC8+e6qw7lA0xRoCeZ2/yMa6CR/uiRa52SuSDFjzQQ4v6ndK1C3lhnqyx9NuOV+AZenEoIq3SsBxV2KJQbKHdkH99JAMY4Cfxo0pUDGJnKV5zadZNokkv7cLqWxKCEOLta4Axbl0+yDufPHudnkaPgfOGGKjoTJ/pC2qYtpJ/u9Yt7P4HFdo7vw637UyRJPoeLiPP4LOmHZEZZ8bYGCLjWWYEK258qzq9RzWGceBUeDjPPBi9SxQenxQZnpMs/EOaSLPqEg== 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=qN+CWpjqmYg/d+XBcMD3JiOUWzSGLUDP+Fa5C0PzBHc=; b=IG7HX5JeBc3L1wgdoK/L0ZFlA59s0mbVzNK+8s8kGU6WmgzTKBIVuTVa3zp5DQQA5QGE9IZIJokri2WRQPHVDy9pWlKG4fYrxhZxSm2ixE3M67JrT+gi34CsVkNcNVOUTJizLq6lVDvVevn/6mOTVfHDaXfdeumU0D8NoeqjJ90GlP0vfC2QqSC5xee8F3nghdOyjy0xnXOXHY29FoelZ7c3x85vYstURZocDzDREOLUSmW3cP8chBI1y/Q7AQeK5dJxy3A4XKU98F5qjnlrThj9iIm2HXKt28T7vwHuH/rvLDeSQ2z4CzGDgFJH2GmIgEt2SXDeEGdE2gPalfdANQ== 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=qN+CWpjqmYg/d+XBcMD3JiOUWzSGLUDP+Fa5C0PzBHc=; b=5Lb2KQGSYutoBaMy94FMK/ozAJtQB1PyxXuUMWsa6L3aitjgkykhz9IFqz2cds5NcwLmFo+epr8bYsMtlsGkzBvhp5BAC/wliFYjuI48OXohvSTPHyuC3LZcUKuwn8UNMiv/GT5FnGnZb4rkKsGVyNGHMecFfxj9PwnmBKJj6Mc= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DU0PR08MB9297.eurprd08.prod.outlook.com (2603:10a6:10:41c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.10; Wed, 14 Dec 2022 11:18:38 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd2a:aff9:b1a0:2fc7]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd2a:aff9:b1a0:2fc7%5]) with mapi id 15.20.5924.011; Wed, 14 Dec 2022 11:18:37 +0000 From: Tamar Christina To: Richard Sandiford , Richard Earnshaw CC: "gcc-patches@gcc.gnu.org" , nd , Richard Earnshaw , Marcus Shawcroft , Kyrylo Tkachov Subject: RE: [PATCH]AArch64 div-by-255, ensure that arguments are registers. [PR107988] Thread-Topic: [PATCH]AArch64 div-by-255, ensure that arguments are registers. [PR107988] Thread-Index: AQHZCyOce0UGlYNUake0/I3k0pk7ja5kNsgAgADs/ziACCEPgA== Date: Wed, 14 Dec 2022 11:18:37 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: F402B775CA31A84FBCF5A8724AD0D7F8.0 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|DU0PR08MB9297:EE_|VI1EUR03FT049:EE_|AS8PR08MB6471:EE_ X-MS-Office365-Filtering-Correlation-Id: 31bb1b57-e603-4a92-4322-08daddc50062 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: GMIDF0IjQGCH89RuUpHximcgM7QjzgUoUMMa3SabnXJIePxMriZOeaW4DmqhyBLLqOqJ0L3FEvO318YfDSsnpfXyYaAIb0Q/uMEWpX+H7eDY5aW2qU7JoLhyxcs/mzb4bbOnMPvfcoEqRysZaxK8QY+d42cdxPoxt965ieZ1xSDelqViEW/CxZNEccCnh5a14VtUyiac09tM4LNR3zic2dr1aI5A3+zh8h5UnJIUfwwjSHdlykw2Ppc89Y9Z0T41BxGGjIWOmOioaMHmnFrakstCjM9R8bNeH6nLNHrNLPPSSnZaCzBtk7kuHBXFRFAHnJBP6PAqLDxiWrM3MTT3ZJDNrmWrzXiik0sj8NQuIhiD49XEV0U/JCxJ+knZAMEpI9l0AJZ2oqKnepAnf+PB/0bRcoS6AIRak2Of7LxF7tbMmn2qr6lN8v+WezDyXS3vdEPifZVi+zHbOHz+vQ3bKmNL7AhiEWH9zWZ+VlAhZ00tPkr+Vxm+ZUobV0Sqo9j/+SDknM8otLe3F2H6qIsSKDFhSSufT3bDlXyAAofnloZ+Zhh/hFXCWyDM0LMrSQDdDdmaOpgXFJ2QZ5XO8+waU1ZlTzRaZDh8M12mqdMsOi0Pns7Qw+EPdOr7JW3dUyB4mBIMNae8c3zF6H98CI28Hk1e1fOmHKbX86673azSJkKuhemf8KNkbCnQ7ywQmCOmwY77v6yuDORDMxEESuLo0q0Ex0fZmZWAggpHIeGdLX0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(366004)(346002)(376002)(396003)(136003)(451199015)(38070700005)(38100700002)(55016003)(86362001)(122000001)(110136005)(54906003)(478600001)(316002)(8676002)(41300700001)(66946007)(2906002)(71200400001)(5660300002)(66446008)(66556008)(64756008)(66476007)(52536014)(4326008)(8936002)(76116006)(99936003)(6506007)(26005)(9686003)(33656002)(7696005)(186003)(53546011)(83380400001)(84970400001);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB532541D593A0984E3FF8AD41FFE09VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9297 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VI1EUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dcbe997f-bc3d-4881-1b2f-08daddc4f238 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: c1Q+wsk5rQyEWmkoT5KuATzSKc4fqv/SOflTrqG4mLgO2/UcYJIIpA3fzp0g5YzVYNbpazt+TdcFVXyXejFFyv8PP6oONAjjj2tVzuSg11Mi8OkWM4fVhauY6yzR7OTtFYFokYwpD/Lnl/OlfcmdNU8FVLgglv2tpOGvcWAjT5EDE/ST9NmsviJ+KAIijEdfckG26rNzCxRfjPCZn4K+BkqUNEdxiFHJisddhvq0QJsyxeAB1DVR2GZvVq14aZYq5IW/uzjShm/jBTgjuJKEsqHy6cSMPqZp4rLagCIy6kTBTXc7q6Lr+MujW+ywyZFDIS1lgAIQMvh/lt9sgQ5oJNiADJcvPB8XfVkGyG/xSOdzZHKpk1/D4j+dBHro2Yqu7JPD5bmMDPhWRWC73/nPvzlDZx4a+c6V07GXyA1Qr+7n+TiMYi5w2+9Y/1YYJ0GQXE/y5N73tJZToB8V2mVjXJYdcwg8TvqC5OJFDYdhi7i9Qs/0bjzS6Z2UiLkbTqqcVE33BaBdkqCjrrtKZt2jMo/cdpzsf2/oMSwESc+ritrQ78UNtFQbE9VJjiCsJGb4tdrWTDyj+o79ELb0vZXF636qyCgk3rXFDkDspd1qhWAkUAOtefjFAqo4Z0m9MFL7+F9U9UmQgbwqIkE+75t2aqulJ8gcsNiz8fzy820CxSgY3ima9TZc01g/1ZPpy66zw1HUjOClbYJ7EixInp1l0ZiOoPkCQ2w4ES43IGDiz6E= 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:(13230022)(4636009)(396003)(376002)(136003)(39860400002)(346002)(451199015)(46966006)(40470700004)(36840700001)(8676002)(84970400001)(4326008)(83380400001)(356005)(40460700003)(33656002)(52536014)(235185007)(81166007)(186003)(70586007)(70206006)(26005)(41300700001)(6506007)(9686003)(53546011)(7696005)(478600001)(336012)(316002)(47076005)(110136005)(54906003)(5660300002)(2906002)(99936003)(40480700001)(36860700001)(82310400005)(86362001)(55016003)(8936002)(82740400003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2022 11:19:00.9675 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 31bb1b57-e603-4a92-4322-08daddc50062 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: VI1EUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6471 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=ham 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_VI1PR08MB532541D593A0984E3FF8AD41FFE09VI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Richard Sandiford > Sent: Friday, December 9, 2022 7:08 AM > To: Richard Earnshaw > Cc: Tamar Christina ; gcc-patches@gcc.gnu.org; > nd ; Richard Earnshaw ; > Marcus Shawcroft ; Kyrylo Tkachov > > Subject: Re: [PATCH]AArch64 div-by-255, ensure that arguments are > registers. [PR107988] >=20 > Richard Earnshaw writes: > > On 08/12/2022 16:39, Tamar Christina via Gcc-patches wrote: > >> Hi All, > >> > >> At -O0 (as opposed to e.g. volatile) we can get into the situation > >> where the > >> in0 and result RTL arguments passed to the division function are > >> memory locations instead of registers. I think we could reject these > >> early on by checking that the gimple values are GIMPLE registers, but > >> I think it's better to handle it. > >> > >> As such I force them to registers and emit a move to the memory > >> locations and leave it up to reload to handle. This fixes the ICE > >> and still allows the optimization in these cases, which improves the = code > quality a lot. > >> > >> Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. > >> > >> Ok for master? > >> > >> Thanks, > >> Tamar > >> > >> > >> > >> gcc/ChangeLog: > >> > >> PR target/107988 > >> * config/aarch64/aarch64.cc > >> (aarch64_vectorize_can_special_div_by_constant): Ensure input and > output > >> RTL are registers. > >> > >> gcc/testsuite/ChangeLog: > >> > >> PR target/107988 > >> * gcc.target/aarch64/pr107988-1.c: New test. > >> > >> --- inline copy of patch -- > >> diff --git a/gcc/config/aarch64/aarch64.cc > >> b/gcc/config/aarch64/aarch64.cc index > >> > b8dc3f070c8afc47c85fa18768c4da92c774338f..9f96424993c4fcccce90e1b241f > >> cb3aa97025225 100644 > >> --- a/gcc/config/aarch64/aarch64.cc > >> +++ b/gcc/config/aarch64/aarch64.cc > >> @@ -24337,12 +24337,27 @@ > aarch64_vectorize_can_special_div_by_constant (enum tree_code code, > >> if (!VECTOR_TYPE_P (vectype)) > >> return false; > >> > >> + if (!REG_P (in0)) > >> + in0 =3D force_reg (GET_MODE (in0), in0); > >> + > >> gcc_assert (output); > >> > >> - if (!*output) > >> - *output =3D gen_reg_rtx (TYPE_MODE (vectype)); > >> + rtx res =3D NULL_RTX; > >> + > >> + /* Once e get to this point we cannot reject the RTL, if it's not = a reg > then > >> + Create a new reg and write the result to the output afterwards. > >> + */ if (!*output || !REG_P (*output)) > >> + res =3D gen_reg_rtx (TYPE_MODE (vectype)); else > >> + res =3D *output; > > > > Why not write > > rtx res =3D *output > > if (!res || !REG_P (res)) > > res =3D gen_reg_rtx... > > > > then you don't need either the else clause or the dead NULL_RTX > assignment. >=20 > I'd prefer that we use the expand_insn interface, which already has logic= for > coercing inputs and outputs to predicates. Something like: >=20 > machine_mode mode =3D TYPE_MODE (vectype); > unsigned int flags =3D aarch64_classify_vector_mode (mode); > if ((flags & VEC_ANY_SVE) && !TARGET_SVE2) > return false; >=20 > ... >=20 > expand_operand ops[3]; > create_output_operand (&ops[0], *output, mode); > create_input_operand (&ops[1], in0, mode); > create_fixed_operand (&ops[2], in1); > expand_insn (insn_code, 3, ops); > *output =3D ops[0].value; > return true; >=20 > On this function: why do we have the VECTOR_TYPE_P condition in: >=20 It was left over after checking for optabs support. It's superfluous now. Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: PR target/107988 * config/aarch64/aarch64.cc (aarch64_vectorize_can_special_div_by_constant): Ensure input and output RTL are registers. gcc/testsuite/ChangeLog: PR target/107988 * gcc.target/aarch64/pr107988-1.c: New test. --- inline copy of patch --- diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 7bb0b7602ff6474410059494dd86b7be1621dde5..e1f34ef5da170ef11727e0c99a5= bd42849c5d185 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -24395,7 +24395,8 @@ aarch64_vectorize_can_special_div_by_constant (enum= tree_code code, || !TYPE_UNSIGNED (vectype)) return false; =20 - unsigned int flags =3D aarch64_classify_vector_mode (TYPE_MODE (vectype)= ); + machine_mode mode =3D TYPE_MODE (vectype); + unsigned int flags =3D aarch64_classify_vector_mode (mode); if ((flags & VEC_ANY_SVE) && !TARGET_SVE2) return false; =20 @@ -24411,15 +24412,14 @@ aarch64_vectorize_can_special_div_by_constant (en= um tree_code code, if (in0 =3D=3D NULL_RTX && in1 =3D=3D NULL_RTX) return true; =20 - if (!VECTOR_TYPE_P (vectype)) - return false; - gcc_assert (output); =20 - if (!*output) - *output =3D gen_reg_rtx (TYPE_MODE (vectype)); - - emit_insn (gen_aarch64_bitmask_udiv3 (TYPE_MODE (vectype), *output, in0,= in1)); + expand_operand ops[3]; + create_output_operand (&ops[0], *output, mode); + create_input_operand (&ops[1], in0, mode); + create_fixed_operand (&ops[2], in1); + expand_insn (insn_code, 3, ops); + *output =3D ops[0].value; return true; } =20 diff --git a/gcc/testsuite/gcc.target/aarch64/pr107988-1.c b/gcc/testsuite/= gcc.target/aarch64/pr107988-1.c new file mode 100644 index 0000000000000000000000000000000000000000..c4fd290271b738345173b569bdc= 58c092fba7fe9 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pr107988-1.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-O0" } */ +typedef unsigned short __attribute__((__vector_size__ (16))) V; + +V +foo (V v) +{ + v /=3D 255; + return v; +} --_002_VI1PR08MB532541D593A0984E3FF8AD41FFE09VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb16679.patch" Content-Description: rb16679.patch Content-Disposition: attachment; filename="rb16679.patch"; size=1752; creation-date="Wed, 14 Dec 2022 11:18:08 GMT"; modification-date="Wed, 14 Dec 2022 11:18:37 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjIGIvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQuY2MKaW5kZXggN2JiMGI3NjAyZmY2NDc0NDEwMDU5NDk0ZGQ4NmI3YmUx NjIxZGRlNS4uZTFmMzRlZjVkYTE3MGVmMTE3MjdlMGM5OWE1YmQ0Mjg0OWM1ZDE4NSAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MKKysrIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQuY2MKQEAgLTI0Mzk1LDcgKzI0Mzk1LDggQEAgYWFyY2g2NF92ZWN0b3JpemVf Y2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0YW50IChlbnVtIHRyZWVfY29kZSBjb2RlLAogICAgICAg fHwgIVRZUEVfVU5TSUdORUQgKHZlY3R5cGUpKQogICAgIHJldHVybiBmYWxzZTsKIAotICB1bnNp Z25lZCBpbnQgZmxhZ3MgPSBhYXJjaDY0X2NsYXNzaWZ5X3ZlY3Rvcl9tb2RlIChUWVBFX01PREUg KHZlY3R5cGUpKTsKKyAgbWFjaGluZV9tb2RlIG1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOwor ICB1bnNpZ25lZCBpbnQgZmxhZ3MgPSBhYXJjaDY0X2NsYXNzaWZ5X3ZlY3Rvcl9tb2RlIChtb2Rl KTsKICAgaWYgKChmbGFncyAmIFZFQ19BTllfU1ZFKSAmJiAhVEFSR0VUX1NWRTIpCiAgICAgcmV0 dXJuIGZhbHNlOwogCkBAIC0yNDQxMSwxNSArMjQ0MTIsMTQgQEAgYWFyY2g2NF92ZWN0b3JpemVf Y2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0YW50IChlbnVtIHRyZWVfY29kZSBjb2RlLAogICBpZiAo aW4wID09IE5VTExfUlRYICYmIGluMSA9PSBOVUxMX1JUWCkKICAgICByZXR1cm4gdHJ1ZTsKIAot ICBpZiAoIVZFQ1RPUl9UWVBFX1AgKHZlY3R5cGUpKQotICAgcmV0dXJuIGZhbHNlOwotCiAgIGdj Y19hc3NlcnQgKG91dHB1dCk7CiAKLSAgaWYgKCEqb3V0cHV0KQotICAgICpvdXRwdXQgPSBnZW5f cmVnX3J0eCAoVFlQRV9NT0RFICh2ZWN0eXBlKSk7Ci0KLSAgZW1pdF9pbnNuIChnZW5fYWFyY2g2 NF9iaXRtYXNrX3VkaXYzIChUWVBFX01PREUgKHZlY3R5cGUpLCAqb3V0cHV0LCBpbjAsIGluMSkp OworICBleHBhbmRfb3BlcmFuZCBvcHNbM107CisgIGNyZWF0ZV9vdXRwdXRfb3BlcmFuZCAoJm9w c1swXSwgKm91dHB1dCwgbW9kZSk7CisgIGNyZWF0ZV9pbnB1dF9vcGVyYW5kICgmb3BzWzFdLCBp bjAsIG1vZGUpOworICBjcmVhdGVfZml4ZWRfb3BlcmFuZCAoJm9wc1syXSwgaW4xKTsKKyAgZXhw YW5kX2luc24gKGluc25fY29kZSwgMywgb3BzKTsKKyAgKm91dHB1dCA9IG9wc1swXS52YWx1ZTsK ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L3ByMTA3OTg4LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3ByMTA3OTg4LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGZkMjkwMjcxYjczODM0NTE3M2I1NjliZGM1OGMw OTJmYmE3ZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvcHIxMDc5ODgtMS5jCkBAIC0wLDAgKzEsMTAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLU8wIiB9ICovCit0eXBlZGVmIHVuc2ln bmVkIHNob3J0IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyAoMTYpKSkgVjsKKworVgor Zm9vIChWIHYpCit7CisgIHYgLz0gMjU1OworICByZXR1cm4gdjsKK30K --_002_VI1PR08MB532541D593A0984E3FF8AD41FFE09VI1PR08MB5325eurp_--