From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2042.outbound.protection.outlook.com [40.107.20.42]) by sourceware.org (Postfix) with ESMTPS id 5867A3858D1E for ; Thu, 3 Aug 2023 12:56:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5867A3858D1E 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=3HN4BIAVwiZntiBSUs5Bg134rCjhpQY0hAQXZqTf+dQ=; b=8kfNnBUMKJT/DROrLN4e6UDtf3GApXy4V2SJLIRhLdViunNShkt1JM7au2zpr8bgeNpDp53ZUxff4Fl6ju3VLWN45xpvzRNu9DDL/VI1iYwMkhlHC9WwrJXqewiyySbirgq38mOfKpNmWSzdEvrQHsgHg+5dL++nz8pll0AvZco= Received: from AS8P251CA0027.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:2f2::9) by GV1PR08MB7939.eurprd08.prod.outlook.com (2603:10a6:150:8c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.47; Thu, 3 Aug 2023 12:56:50 +0000 Received: from AM7EUR03FT028.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:2f2:cafe::87) by AS8P251CA0027.outlook.office365.com (2603:10a6:20b:2f2::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.20 via Frontend Transport; Thu, 3 Aug 2023 12:56:49 +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 AM7EUR03FT028.mail.protection.outlook.com (100.127.140.192) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.44 via Frontend Transport; Thu, 3 Aug 2023 12:56:49 +0000 Received: ("Tessian outbound ba2f3d95109c:v145"); Thu, 03 Aug 2023 12:56:49 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 4dc3aed3e4eeafe4 X-CR-MTA-TID: 64aa7808 Received: from 078984e9f84f.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F027D9D3-7BDA-45AC-AD8A-59D143D8C478.1; Thu, 03 Aug 2023 12:56:42 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 078984e9f84f.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 03 Aug 2023 12:56:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K/Nc3gSMC0ITFFkh7JX3s0fBujT6Nfnoz7IA1qNfoMSqnJhFewa38XZs3fiUacoGjtNE+4dAH7KCR0t+WNy8bHRVdzQgX08xqJrH93O6bLhaXMbyiusLwp+aNBKagAXo+6yky0ZfyOAEBpZ7jU9cL8mLVyEfOMfSHXKlSjeMAY3ZMgUHCUh6rVe2h1vIxqa2yZJFwTCdQEwqWM50SRcr7cOltJPdlG3DdqzQRJUroN/m4lj0TC6NreKukfxg7u4EETS7oz41ML4VsDBhjXIShGON3ke6nssK59/CZNG5CQQpn0JEu+ilApQ7dh69epQcrZjUUuDOe7g60HHLfPzmhA== 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=3HN4BIAVwiZntiBSUs5Bg134rCjhpQY0hAQXZqTf+dQ=; b=Qls0oz1aAtABk5zWA9EqtOKtGKe9NNHKV5khTwEzwNjix5Y2GNo763D2EMa0ENu24pq1mHPXc+sssWDx6g5mB9fdKDhQ9H99OToA5A7hzS1WL150p4XWzHokltKT1Kc7M04fHN7cJWDkgNnoEA+RoXmsw6+aMFU6NYhxvtVh6lcD90a0gJ9rNYstS4GFqTqMios3GarryhbgRKiVQK3VgCDfp57AaF/BeQLxr0hAD0iL462aogZKdAQk2fWt7ma0LUdGCWb8nSP5Wn9vwgDKeFHaRVh5o0uhJgClGPxNHUjnGjaYaZ8cOTwDefbVL8oAVxayz4DsxgJ+QVGUdcFhZA== 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=3HN4BIAVwiZntiBSUs5Bg134rCjhpQY0hAQXZqTf+dQ=; b=8kfNnBUMKJT/DROrLN4e6UDtf3GApXy4V2SJLIRhLdViunNShkt1JM7au2zpr8bgeNpDp53ZUxff4Fl6ju3VLWN45xpvzRNu9DDL/VI1iYwMkhlHC9WwrJXqewiyySbirgq38mOfKpNmWSzdEvrQHsgHg+5dL++nz8pll0AvZco= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by PR3PR08MB5642.eurprd08.prod.outlook.com (2603:10a6:102:8b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.47; Thu, 3 Aug 2023 12:56:40 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::a85:6d3:5dd7:7d3]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::a85:6d3:5dd7:7d3%7]) with mapi id 15.20.6631.046; Thu, 3 Aug 2023 12:56:40 +0000 From: Tamar Christina To: Richard Sandiford CC: "gcc-patches@gcc.gnu.org" , nd , Richard Earnshaw , Marcus Shawcroft , Kyrylo Tkachov Subject: RE: [PATCH]AArch64 update costing for MLA by invariant Thread-Topic: [PATCH]AArch64 update costing for MLA by invariant Thread-Index: AQHZxSszt4QOVrr3KE+qFQhDGU/mqK/W0ho1gAAA42CAAAKwPYABse/Q Date: Thu, 3 Aug 2023 12:56:39 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|PR3PR08MB5642:EE_|AM7EUR03FT028:EE_|GV1PR08MB7939:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a76cf8a-d9e8-433c-91ff-08db94211a28 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: phmjGZttm8B2PYKFxXmCv5T3otCFRyibeHESUFLVCBnXdxEuOGOZZOBm+m6S2w8flraH07uDNQfLTBSi6Ab4sEKFiZbzjGcjScbqbEtKHiAwIcirbynUCZPJ6QFayXZyLf1QNT+MD/JLOlI2X3gmHtF0Pk1Ub3MMrmtVsevGb35Cd6PWl2H6CuM7nJOHCH9SnimoyPgZkr7Jjvm7Upaf+OJGZucOc/+WI0lfc93fLk7kiejPkoMuhUE6zjzOLKPZHEgta9NvyGvOFVr3HZI7Y0g/MSQ28lC1ohAwd5W4+5k4ho0dwa8B2wRYoAZXS+YPu4fFEJyb5jLRskLaLsFJXa51e/GWRU4AQgNJ5DX4cQS4D33iGwrZY7lBI7PpMZicvZn3Cm0mTVWyehwAfQVX54WIK5wNXQa//lnrD68vwLlZZbwYLqLQuC9r/OWKRU+nQ2Hp7DX7rkoG9HlMsz8KQB44WdoKudQOL+vfEfy5RE5L24Bhuujy4e/fyoHO9VLlHBu5PiOotj3b8AzfIxHTJJE2+5xGcd8z9WS4E7uX3SqVnQeqkmZmoUlgb1FY4jhA8oHxQPQg71BEb5Re6VyFhsdG8txVmNEjT6rkcsvhryZodA3nXe+ChNNSnT7xoyXf 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:(13230028)(4636009)(396003)(376002)(346002)(136003)(366004)(39860400002)(451199021)(15650500001)(41300700001)(66556008)(66446008)(316002)(2906002)(4326008)(76116006)(64756008)(66946007)(6636002)(66476007)(52536014)(6862004)(8936002)(8676002)(5660300002)(122000001)(99936003)(38100700002)(33656002)(26005)(186003)(38070700005)(6506007)(86362001)(83380400001)(9686003)(478600001)(54906003)(7696005)(71200400001)(55016003);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB53250AF0ACBFE13F7FBBAF8EFF08AVI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5642 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: AM7EUR03FT028.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 54a105d8-7625-4330-6676-08db9421141d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZcRT4+MBbLduqLIAfh0imThl98hVEq4oWqSWjBwkkDO8Mrz6OYJ8OR6/RZgMDkgi3Mf9CE9u3YBxU7kpl5F3c4KsMxtbJ9qgG22Haa7x+B7guEhueua+ICRQ+ZLnAnEGlScAseLQSotTka2g9J5tB3/Jmf+vc7v5gLWEuAmgZ07W++Ajf6XUnxuiLRU3SndRz5zzLWI+8vncIf5t/CmEGxhVN5UoOQosM0s2m21ggJput1iJrIU6L+zE+VF87UhN5UNLbJDBX70uE+C55OdvPpxvm8G50Jp+2H793S6ZT4J+J+5V8StKISrGlNHyxcQYzAyNTtPR4qRr40roptEd9hhWjIhbYT0VSXxMMtNwcSYD9dFS2IXMpGh+Lb/LsE7xQBGeUEP0wmVNmV8VoVvSbZYshaaZzASS6Bh5HXQ7S/4hNIYG82FkC21fd+jFd/znwqSJyROnlLwR6wbrvpvj783/zSjLlP8NZMVrCEIixJxECs87CYGNbqxmLW8IZVXgVD3h1qU0uOsdE7ZDe+IbamKL4h1QkG+I4GNLox+59XUsZsNUmTb9/hAuokQlNm5dSOoPa0yhhkpyNBK2MyBYrJg4Jt0rTWhaxiI18erl8wBTGJE2q1Je6grTxwnNA6IQyOo+q8KKdVjqk96ZpGNmpfS0L2IbuNfM5TMyHsaxvTRtUljKq59XHC42ZIRE6bYKxENbfLqt2A2Wu2OclMp/JpwPZJOgRKLZTnyO2wMTMcoFXjE+4IQS2NjkLWrylsxh 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:(13230028)(4636009)(396003)(376002)(346002)(136003)(39860400002)(451199021)(82310400008)(40470700004)(36840700001)(46966006)(15650500001)(41300700001)(40460700003)(316002)(2906002)(4326008)(70206006)(70586007)(6636002)(52536014)(6862004)(235185007)(8936002)(8676002)(5660300002)(356005)(81166007)(82740400003)(99936003)(33656002)(26005)(186003)(6506007)(86362001)(83380400001)(336012)(47076005)(36860700001)(9686003)(478600001)(54906003)(7696005)(55016003)(40480700001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2023 12:56:49.5974 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6a76cf8a-d9e8-433c-91ff-08db94211a28 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: AM7EUR03FT028.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7939 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,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_VI1PR08MB53250AF0ACBFE13F7FBBAF8EFF08AVI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > >> Do you see vect_constant_defs in practice, or is this just for complet= eness? > >> I would expect any constants to appear as direct operands. I don't > >> mind keeping it if it's just a belt-and-braces thing though. > > > > In the latency case where I had allow_constants the early rejection > > based on the operand itself wouldn't be rejected so in that case I > > still needed to reject them but do so after the multiply check. While > > they do appear as direct operands as well they also have their own > > nodes, in particular for SLP so the constants are handled as a group. >=20 > Ah, OK, thanks. >=20 > > But can also check CONSTANT_CLASS_P (rhs) if that's preferrable. >=20 > No, what you did is more correct. I just wasn't sure at first which case= it was > handling. Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling of constants.=20 (aarch64_adjust_stmt_cost): Use it. (aarch64_vector_costs::count_ops): Likewise. (aarch64_vector_costs::add_stmt_cost): Pass vinfo to aarch64_adjust_stmt_cost. --- inline copy of patch --- diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index d4d7602554592b9042b8eaf389eff1ec80c2090e..7cc5916ce06b2635346c807da93= 06738b939ebc6 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -16410,10 +16410,6 @@ aarch64_multiply_add_p (vec_info *vinfo, stmt_vec_= info stmt_info, if (code !=3D PLUS_EXPR && code !=3D MINUS_EXPR) return false; =20 - if (CONSTANT_CLASS_P (gimple_assign_rhs1 (assign)) - || CONSTANT_CLASS_P (gimple_assign_rhs2 (assign))) - return false; - for (int i =3D 1; i < 3; ++i) { tree rhs =3D gimple_op (assign, i); @@ -16441,7 +16437,8 @@ aarch64_multiply_add_p (vec_info *vinfo, stmt_vec_i= nfo stmt_info, return false; def_stmt_info =3D vinfo->lookup_def (rhs); if (!def_stmt_info - || STMT_VINFO_DEF_TYPE (def_stmt_info) =3D=3D vect_external_def) + || STMT_VINFO_DEF_TYPE (def_stmt_info) =3D=3D vect_external_def + || STMT_VINFO_DEF_TYPE (def_stmt_info) =3D=3D vect_constant_def) return false; } =20 @@ -16721,8 +16718,9 @@ aarch64_sve_adjust_stmt_cost (class vec_info *vinfo= , vect_cost_for_stmt kind, and which when vectorized would operate on vector type VECTYPE. Add th= e cost of any embedded operations. */ static fractional_cost -aarch64_adjust_stmt_cost (vect_cost_for_stmt kind, stmt_vec_info stmt_info= , - tree vectype, fractional_cost stmt_cost) +aarch64_adjust_stmt_cost (vec_info *vinfo, vect_cost_for_stmt kind, + stmt_vec_info stmt_info, tree vectype, + unsigned vec_flags, fractional_cost stmt_cost) { if (vectype) { @@ -16745,6 +16743,14 @@ aarch64_adjust_stmt_cost (vect_cost_for_stmt kind,= stmt_vec_info stmt_info, break; } =20 + gassign *assign =3D dyn_cast (STMT_VINFO_STMT (stmt_info)= ); + if (assign && !vect_is_reduction (stmt_info)) + { + /* For MLA we need to reduce the cost since MLA is 1 instruction. */ + if (aarch64_multiply_add_p (vinfo, stmt_info, vec_flags)) + return 0; + } + if (kind =3D=3D vector_stmt || kind =3D=3D vec_to_scalar) if (tree cmp_type =3D vect_embedded_comparison_type (stmt_info)) { @@ -16814,7 +16820,8 @@ aarch64_vector_costs::count_ops (unsigned int count= , vect_cost_for_stmt kind, } =20 /* Assume that multiply-adds will become a single operation. */ - if (stmt_info && aarch64_multiply_add_p (m_vinfo, stmt_info, m_vec_flags= )) + if (stmt_info + && aarch64_multiply_add_p (m_vinfo, stmt_info, m_vec_flags)) return; =20 /* Count the basic operation cost associated with KIND. */ @@ -17060,8 +17067,8 @@ aarch64_vector_costs::add_stmt_cost (int count, vec= t_cost_for_stmt kind, { /* Account for any extra "embedded" costs that apply additively to the base cost calculated above. */ - stmt_cost =3D aarch64_adjust_stmt_cost (kind, stmt_info, vectype, - stmt_cost); + stmt_cost =3D aarch64_adjust_stmt_cost (m_vinfo, kind, stmt_info, + vectype, m_vec_flags, stmt_cost); =20 /* If we're recording a nonzero vector loop body cost for the innermost loop, also estimate the operations that would need --_002_VI1PR08MB53250AF0ACBFE13F7FBBAF8EFF08AVI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb17618.patch" Content-Description: rb17618.patch Content-Disposition: attachment; filename="rb17618.patch"; size=3103; creation-date="Thu, 03 Aug 2023 12:56:30 GMT"; modification-date="Thu, 03 Aug 2023 12:56:39 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjIGIvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQuY2MKaW5kZXggZDRkNzYwMjU1NDU5MmI5MDQyYjhlYWYzODllZmYxZWM4 MGMyMDkwZS4uN2NjNTkxNmNlMDZiMjYzNTM0NmM4MDdkYTkzMDY3MzhiOTM5ZWJjNiAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MKKysrIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQuY2MKQEAgLTE2NDEwLDEwICsxNjQxMCw2IEBAIGFhcmNoNjRfbXVsdGlwbHlf YWRkX3AgKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sCiAgIGlmIChj b2RlICE9IFBMVVNfRVhQUiAmJiBjb2RlICE9IE1JTlVTX0VYUFIpCiAgICAgcmV0dXJuIGZhbHNl OwogCi0gIGlmIChDT05TVEFOVF9DTEFTU19QIChnaW1wbGVfYXNzaWduX3JoczEgKGFzc2lnbikp Ci0gICAgICB8fCBDT05TVEFOVF9DTEFTU19QIChnaW1wbGVfYXNzaWduX3JoczIgKGFzc2lnbikp KQotICAgIHJldHVybiBmYWxzZTsKLQogICBmb3IgKGludCBpID0gMTsgaSA8IDM7ICsraSkKICAg ICB7CiAgICAgICB0cmVlIHJocyA9IGdpbXBsZV9vcCAoYXNzaWduLCBpKTsKQEAgLTE2NDQxLDcg KzE2NDM3LDggQEAgYWFyY2g2NF9tdWx0aXBseV9hZGRfcCAodmVjX2luZm8gKnZpbmZvLCBzdG10 X3ZlY19pbmZvIHN0bXRfaW5mbywKIAkgICAgcmV0dXJuIGZhbHNlOwogCSAgZGVmX3N0bXRfaW5m byA9IHZpbmZvLT5sb29rdXBfZGVmIChyaHMpOwogCSAgaWYgKCFkZWZfc3RtdF9pbmZvCi0JICAg ICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQRSAoZGVmX3N0bXRfaW5mbykgPT0gdmVjdF9leHRlcm5h bF9kZWYpCisJICAgICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQRSAoZGVmX3N0bXRfaW5mbykgPT0g dmVjdF9leHRlcm5hbF9kZWYKKwkgICAgICB8fCBTVE1UX1ZJTkZPX0RFRl9UWVBFIChkZWZfc3Rt dF9pbmZvKSA9PSB2ZWN0X2NvbnN0YW50X2RlZikKIAkgICAgcmV0dXJuIGZhbHNlOwogCX0KIApA QCAtMTY3MjEsOCArMTY3MTgsOSBAQCBhYXJjaDY0X3N2ZV9hZGp1c3Rfc3RtdF9jb3N0IChjbGFz cyB2ZWNfaW5mbyAqdmluZm8sIHZlY3RfY29zdF9mb3Jfc3RtdCBraW5kLAogICAgYW5kIHdoaWNo IHdoZW4gdmVjdG9yaXplZCB3b3VsZCBvcGVyYXRlIG9uIHZlY3RvciB0eXBlIFZFQ1RZUEUuICBB ZGQgdGhlCiAgICBjb3N0IG9mIGFueSBlbWJlZGRlZCBvcGVyYXRpb25zLiAgKi8KIHN0YXRpYyBm cmFjdGlvbmFsX2Nvc3QKLWFhcmNoNjRfYWRqdXN0X3N0bXRfY29zdCAodmVjdF9jb3N0X2Zvcl9z dG10IGtpbmQsIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLAotCQkJICB0cmVlIHZlY3R5cGUsIGZy YWN0aW9uYWxfY29zdCBzdG10X2Nvc3QpCithYXJjaDY0X2FkanVzdF9zdG10X2Nvc3QgKHZlY19p bmZvICp2aW5mbywgdmVjdF9jb3N0X2Zvcl9zdG10IGtpbmQsCisJCQkgIHN0bXRfdmVjX2luZm8g c3RtdF9pbmZvLCB0cmVlIHZlY3R5cGUsCisJCQkgIHVuc2lnbmVkIHZlY19mbGFncywgZnJhY3Rp b25hbF9jb3N0IHN0bXRfY29zdCkKIHsKICAgaWYgKHZlY3R5cGUpCiAgICAgewpAQCAtMTY3NDUs NiArMTY3NDMsMTQgQEAgYWFyY2g2NF9hZGp1c3Rfc3RtdF9jb3N0ICh2ZWN0X2Nvc3RfZm9yX3N0 bXQga2luZCwgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sCiAJICBicmVhazsKIAl9CiAKKyAgICAg IGdhc3NpZ24gKmFzc2lnbiA9IGR5bl9jYXN0PGdhc3NpZ24gKj4gKFNUTVRfVklORk9fU1RNVCAo c3RtdF9pbmZvKSk7CisgICAgICBpZiAoYXNzaWduICYmICF2ZWN0X2lzX3JlZHVjdGlvbiAoc3Rt dF9pbmZvKSkKKwl7CisJICAvKiBGb3IgTUxBIHdlIG5lZWQgdG8gcmVkdWNlIHRoZSBjb3N0IHNp bmNlIE1MQSBpcyAxIGluc3RydWN0aW9uLiAgKi8KKwkgIGlmIChhYXJjaDY0X211bHRpcGx5X2Fk ZF9wICh2aW5mbywgc3RtdF9pbmZvLCB2ZWNfZmxhZ3MpKQorCSAgICByZXR1cm4gMDsKKwl9CisK ICAgICAgIGlmIChraW5kID09IHZlY3Rvcl9zdG10IHx8IGtpbmQgPT0gdmVjX3RvX3NjYWxhcikK IAlpZiAodHJlZSBjbXBfdHlwZSA9IHZlY3RfZW1iZWRkZWRfY29tcGFyaXNvbl90eXBlIChzdG10 X2luZm8pKQogCSAgewpAQCAtMTY4MTQsNyArMTY4MjAsOCBAQCBhYXJjaDY0X3ZlY3Rvcl9jb3N0 czo6Y291bnRfb3BzICh1bnNpZ25lZCBpbnQgY291bnQsIHZlY3RfY29zdF9mb3Jfc3RtdCBraW5k LAogICAgIH0KIAogICAvKiBBc3N1bWUgdGhhdCBtdWx0aXBseS1hZGRzIHdpbGwgYmVjb21lIGEg c2luZ2xlIG9wZXJhdGlvbi4gICovCi0gIGlmIChzdG10X2luZm8gJiYgYWFyY2g2NF9tdWx0aXBs eV9hZGRfcCAobV92aW5mbywgc3RtdF9pbmZvLCBtX3ZlY19mbGFncykpCisgIGlmIChzdG10X2lu Zm8KKyAgICAgICYmIGFhcmNoNjRfbXVsdGlwbHlfYWRkX3AgKG1fdmluZm8sIHN0bXRfaW5mbywg bV92ZWNfZmxhZ3MpKQogICAgIHJldHVybjsKIAogICAvKiBDb3VudCB0aGUgYmFzaWMgb3BlcmF0 aW9uIGNvc3QgYXNzb2NpYXRlZCB3aXRoIEtJTkQuICAqLwpAQCAtMTcwNjAsOCArMTcwNjcsOCBA QCBhYXJjaDY0X3ZlY3Rvcl9jb3N0czo6YWRkX3N0bXRfY29zdCAoaW50IGNvdW50LCB2ZWN0X2Nv c3RfZm9yX3N0bXQga2luZCwKICAgICB7CiAgICAgICAvKiBBY2NvdW50IGZvciBhbnkgZXh0cmEg ImVtYmVkZGVkIiBjb3N0cyB0aGF0IGFwcGx5IGFkZGl0aXZlbHkKIAkgdG8gdGhlIGJhc2UgY29z dCBjYWxjdWxhdGVkIGFib3ZlLiAgKi8KLSAgICAgIHN0bXRfY29zdCA9IGFhcmNoNjRfYWRqdXN0 X3N0bXRfY29zdCAoa2luZCwgc3RtdF9pbmZvLCB2ZWN0eXBlLAotCQkJCQkgICAgc3RtdF9jb3N0 KTsKKyAgICAgIHN0bXRfY29zdCA9IGFhcmNoNjRfYWRqdXN0X3N0bXRfY29zdCAobV92aW5mbywg a2luZCwgc3RtdF9pbmZvLAorCQkJCQkgICAgdmVjdHlwZSwgbV92ZWNfZmxhZ3MsIHN0bXRfY29z dCk7CiAKICAgICAgIC8qIElmIHdlJ3JlIHJlY29yZGluZyBhIG5vbnplcm8gdmVjdG9yIGxvb3Ag Ym9keSBjb3N0IGZvciB0aGUKIAkgaW5uZXJtb3N0IGxvb3AsIGFsc28gZXN0aW1hdGUgdGhlIG9w ZXJhdGlvbnMgdGhhdCB3b3VsZCBuZWVkCg== --_002_VI1PR08MB53250AF0ACBFE13F7FBBAF8EFF08AVI1PR08MB5325eurp_--