From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2062.outbound.protection.outlook.com [40.107.21.62]) by sourceware.org (Postfix) with ESMTPS id 8D1AB3840008 for ; Wed, 28 Jul 2021 13:36:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8D1AB3840008 Received: from AM5PR0601CA0051.eurprd06.prod.outlook.com (2603:10a6:206::16) by AM6PR08MB4408.eurprd08.prod.outlook.com (2603:10a6:20b:be::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.24; Wed, 28 Jul 2021 13:36:57 +0000 Received: from AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:0:cafe::38) by AM5PR0601CA0051.outlook.office365.com (2603:10a6:206::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.18 via Frontend Transport; Wed, 28 Jul 2021 13:36:57 +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=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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT015.mail.protection.outlook.com (10.152.16.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.24 via Frontend Transport; Wed, 28 Jul 2021 13:36:57 +0000 Received: ("Tessian outbound 072c11bad1a2:v100"); Wed, 28 Jul 2021 13:36:56 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a8f05f75f5f6ed0e X-CR-MTA-TID: 64aa7808 Received: from 9d24ff629a66.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 807D5397-F570-4F47-BDEE-90FA0FF5966F.1; Wed, 28 Jul 2021 13:36:49 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 9d24ff629a66.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 28 Jul 2021 13:36:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZdVToBTB1T48rW/My1Z+ZzfGFH6EEEaPWqEmkyVHAOVcFFP9xR6iPns4VObEZsZ1xISoQBbSTanhRU68M5oksNMoYAc2AJiY24QpqnEHfH2kk5WRn+EBHCXpsMKzaOpHJIlaXBdS9ocCwoxL5G3V/OeMfwv7ZfcGdfP+5ZIlWSCjVBt27X/vaSigkgy3UOPSrXP68RJ+7jG5F30Zmn7q8b1E9cQm9nXDJuYAKUgxgg8+D74Tm5R/kdIKAu+XzCKq+NjDYu+dKJ5CHyC7Rb9/ehSGZshGAaO7n7qH7BHmIrbbjITgwQ6bqUfElFiVT4wpr4TY500wwmZVsMet8Uy+Qw== 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=NvYfIArEjc4RASG9FwczFTBOis+TAm1VD0LKQEn9tW8=; b=MBPSUiDNSH4vh+fM0uHrCKjXy8JeMLJxzRNpbos0rBjIkwGMomqPPXpxlaXFr/0xMjrQj1ytCZBg+4JcruOMFiSywq3ZaeC00vkt5+mdGwHkdMEJzilhayiK8KS68z6U0CCVmAVr+6eNnscZAUKgYsJLQ0i9BP8Pjwq9pcMBn9QkwvOxX4+xFXRMyhcrnqVFu/VfoXrLZN6BOF5XlD7UAi9vN+0ixrqAqghNvlTeLwuu/Gr3p42UfdClAA+nv91ZZ/ZPZsv+eeHWMfdFpElydku6YUee3wq2MK/BllUNK7hNW/utqOolM1yioiD8Abs6zuw+7dCbcjZRC3FE3KKWUw== 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 DB9PR08MB6959.eurprd08.prod.outlook.com (2603:10a6:10:2bf::11) by DB8PR08MB5338.eurprd08.prod.outlook.com (2603:10a6:10:111::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.18; Wed, 28 Jul 2021 13:36:48 +0000 Received: from DB9PR08MB6959.eurprd08.prod.outlook.com ([fe80::ac6e:79e7:6ffc:28e2]) by DB9PR08MB6959.eurprd08.prod.outlook.com ([fe80::ac6e:79e7:6ffc:28e2%5]) with mapi id 15.20.4352.032; Wed, 28 Jul 2021 13:36:48 +0000 From: Jonathan Wright To: "gcc-patches@gcc.gnu.org" CC: Richard Sandiford , Kyrylo Tkachov Subject: [PATCH] aarch64: Don't include vec_select high-half in SIMD multiply cost Thread-Topic: [PATCH] aarch64: Don't include vec_select high-half in SIMD multiply cost Thread-Index: AQHXg7Vqmqk4uJIBBECHS5p+QCeMCw== Date: Wed, 28 Jul 2021 13:36:48 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: yes X-MS-TNEF-Correlator: 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: 376ac427-30df-4326-0a72-08d951ccc527 x-ms-traffictypediagnostic: DB8PR08MB5338:|AM6PR08MB4408: x-ms-exchange-transport-forked: True 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: IHVGQS7w96zKiyy1u66U4FE7YiE8ZpdzZ5BvYxwFuJLJ9AfvbPezEj2Nz00udUdKb5hjr+AothbE7WAAICV/g5D8TALAKwadE1KoVYnWvxrOALQrXsHEogeEvqs2uf1lU8NCPlCO5uEC7iBt6pEz5BneQ8/51AjTynAH0jXnxDv90kCnvfHZIR9JXTwVRPV+no8LF5gypzqWYZVcezuTt+niVHSdboCYf7ppU5NSqLSHc9GmJ+BA8fQ72SsRQxqH+/3lGMF9zCgSdTa8l37sb7ecZqW+ukcuOC5ok7jFh2wOr+SfhmvshH7pHtexIR+O/wNchghgxmmZ0COmjRwuXXStbMFQiCJQGby4eaZp+Fwd1QnQy9WBnITq4qbVzRcODkcQFbUBSEzMMU78mul8XlrJ3k65I3PX8EBaAh/1gssOcAIWcLJzrTf5v9PLnIMj5LKxrZzm3BQnIOOROug0PhHkoZFVQI0FGgrByhYszIWxb6co57bHkud19eqXyl5MlbBhpdoX6JU/zhHr8BkiKstGVdaEJxmeP+zFF2wM31XW2Ra/hIuey4WiWOAzYaqdICDWBcbAAUAr3vKNW2oF5jc6DZuT+GkZ4VQpLKGSed0TQ/i3D94LYA2/GcK5WBpqV3VgVZmrCZd20Ovi333YpvBRHgVvGd7NXjUHj4T2bcesOxUTFoyjXgTqvmQ23YNyb2z0YRPDJjOhfU6u/FGlzkn54HQkV1V3l73x0s8UZWtec408PDwyPPsSXJtN2IpFDoRa70+qgmr0/CLEA21PzclP/rRT0ORckO88e+nFIZI= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR08MB6959.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(39850400004)(396003)(346002)(136003)(376002)(86362001)(2906002)(55016002)(9686003)(8936002)(71200400001)(8676002)(4326008)(99936003)(7696005)(316002)(38100700002)(76116006)(478600001)(26005)(5660300002)(6506007)(66476007)(66946007)(91956017)(66556008)(33656002)(6916009)(122000001)(186003)(64756008)(66446008)(66616009)(52536014)(54906003)(38070700005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?d4CXXoJM2Wt9+pIJlXuGuqJOtuCfB4jXz8ach4hrRNNnKhtPIE+QoIeGFJ?= =?iso-8859-1?Q?mYyLdpaGabp1u+RoRqDcmKvzyU6+XO/iXaVUNSHgp9xgcRBBqE9Tp5IkSv?= =?iso-8859-1?Q?5JXm06nk1aG/U3uMSPVMOcnb4Ng7L1Dz7knlw8u8XUcZsdpGYUw2PevYAU?= =?iso-8859-1?Q?xjz/A60IhUA2CVfQ3O9MEaLAerUyA9hlgOTA/njoThEThl7PxSdrzoESzA?= =?iso-8859-1?Q?XOaJYKC4qQNEPiS209s9VIVmGgS0ZlhpKP5/1fpYKJSkjX5HPNl4xTAqSI?= =?iso-8859-1?Q?UD956ho/pIFTi4GwulR2CdwLnZD+NKGw2x7VGNiqsqlXp3Dtuw1povzyL3?= =?iso-8859-1?Q?/8jfTj3VMg95xCO5D/nh4gaNxKsdLbx+YfNGZXe9TDTgT+vbXJCn+4PccO?= =?iso-8859-1?Q?HmXBt6es0TIGFGRafzhXQ5TETKtvTPR0nGjwlWmyBjk0Er9mO6XGDMqe2o?= =?iso-8859-1?Q?6azgtKlpDyKCPcdM3JDJPmW9TmUOaF2JTwhtcOeVfA0IhXphqXi4Qq5kB8?= =?iso-8859-1?Q?vfpELPAmW10Czgb1xMAg4qAnvfJSw+Dv1ZXunjlOUmP8F6DhMyvqA868xi?= =?iso-8859-1?Q?QJm9qrgj/iSKxZteFFE+dgkXaUdeyFyG2w4uvvhCjtveyWtySadDDieB5G?= =?iso-8859-1?Q?lWuSW/hru1OKagM3lRT/lYygU4YCfClql0OlZarOy/FwRyIz++f9s6yLwy?= =?iso-8859-1?Q?IIBsx12TGdUIkrN4qAY6g/7plHqLtp2klUNSVTXQKiyXs16Q6Gph/QRYTU?= =?iso-8859-1?Q?V/Qb5BpBpp/Y3uHbk86EXzHOPAVQIYyN+sqyOC/lKJNb3YRDjIZsAT4WKV?= =?iso-8859-1?Q?FBJHQ7N+HSZ3ZNY4OQ7S3pbRjEUEMefxJv5qt3bQQZthJDNFFkIUTDofw1?= =?iso-8859-1?Q?lrS1tOHZcqXd7blEt3dQF4/bnJO6+JeoH+0hs31qHfiduw6BE0ScK4P5wQ?= =?iso-8859-1?Q?ZYDnfV8C7dl7jP5jGY8mUeqgbsF1JDxyn7ooWo5JappNd0hNbBNIxZ69JZ?= =?iso-8859-1?Q?SjfKIMvpp7FY54uCY+QU/+sNwGa7YbHNu+FKO03wrB2hkr7o1NKWRO6l9X?= =?iso-8859-1?Q?2vm/n8/+pBfLkm6eG26MbU9wLQ3Xzk4FgnvRNN3meEt8OWkBeq0Ado0aWK?= =?iso-8859-1?Q?645BUyYUB8yin9Vw99yCVkKak792lg06sDhMnxIzs4XO+FItGItu14Utq1?= =?iso-8859-1?Q?4084NTWzVwOtR7AaEkzxdA7C6ruy3EPSQTog5QO2Zl8/3LYFTvHCegaIRD?= =?iso-8859-1?Q?RNW4IqOXgcKvcrpv+rU9VZP28hHjajStH6iDe2dNifqBAh7LDrmx7+UPie?= =?iso-8859-1?Q?50G5B6/nAgYw5RYUDBBIEqI9MglEgn2U8oqTBSGaoO0OtSg=3D?= Content-Type: multipart/mixed; boundary="_002_DB9PR08MB695955EFA2E6BE37F00B3EA9EBEA9DB9PR08MB6959eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5338 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: AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: bd665fa0-1765-48d1-5dad-08d951ccc01a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mbMp03MDFNr9ebQHNQbEXyLJtEYZS366KF17f9ZRvjIDgxbA8q86YHQZUq44zu8B7RTyyoZzq11dBVASl8aAABZETI+ktzW3+gFmQkTEGWpghRmMVKW9llon9KrZu/zZKbabCm1UBeMrW6+crLQ/oHH7O9u/oGxw3/edtFMHByM8VeHBekMDNHB7YhDClRyOayQ0xI0tZzGcfz91VAdL+PqLyIgAg+AtOW0CPylovITXJwRovf9PDRn6kYl+5SJ0hZYyz8eGn7enV1zbgp6D8zWwW9plVMuK8Acm1UgNf0xxiiGfztCjDmtxU/ghOVmm2m9oFI+is247gvqPfnhfGSQ6XmHhtD6n2hJWU65A93CaYZxK7wQLcQSFtc4ETLB3Rkh0HbbG25kSYme+zZmxfLPbGGEqYscQ2I6bKIxI2S09CWjCg6pH9m5kYc3LMksZzQrHDfBfHNEIWtvHqT8vLd1kfWWF2clNvFxbJlxwLkyJ8FQNG16XGSHjz+i3IHCvbwfIBbadyxC8Ej8qgPTLXlQPOTH5WEYjXge9J5PpEAjHr4j5JpSgEUFnisLxWs8Cxj3LZQvdq9KMGfDk8o+bGgU/myMPVZ4ZeB93x5IwvmVxt8sgUbFE48PFe+oPV5jNuNedi1edxSv8nAFw0utkoQrIqqg+pL0xmnDsC4DWKNdHxchu5N8S7rOuSgUYjp5VKE33qdNg1QFj2B91cdzcCJIImtEBkv88JqODuHsTVEeKyuchpRIW51hJs//y+56dIc1puNYUb09FdnuKAQcNf1eZsruprGuayL9FDdLRD7E= 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)(376002)(136003)(39850400004)(346002)(396003)(36840700001)(46966006)(82310400003)(26005)(70586007)(66616009)(8936002)(9686003)(55016002)(7696005)(356005)(36860700001)(81166007)(478600001)(8676002)(70206006)(6506007)(52536014)(235185007)(4326008)(99936003)(5660300002)(336012)(6916009)(47076005)(316002)(2906002)(82740400003)(86362001)(54906003)(33656002)(186003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2021 13:36:57.1084 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 376ac427-30df-4326-0a72-08d951ccc527 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: AM5EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4408 X-Spam-Status: No, score=-6.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham 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, 28 Jul 2021 13:37:02 -0000 --_002_DB9PR08MB695955EFA2E6BE37F00B3EA9EBEA9DB9PR08MB6959eurp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi,=0A= =0A= The Neon multiply/multiply-accumulate/multiply-subtract instructions=0A= can select the top or bottom half of the operand registers. This=0A= selection does not change the cost of the underlying instruction and=0A= this should be reflected by the RTL cost function.=0A= =0A= This patch adds RTL tree traversal in the Neon multiply cost function=0A= to match vec_select high-half of its operands. This traversal=0A= prevents the cost of the vec_select from being added into the cost of=0A= the multiply - meaning that these instructions can now be emitted in=0A= the combine pass as they are no longer deemed prohibitively=0A= expensive.=0A= =0A= Regression tested and bootstrapped on aarch64-none-linux-gnu - no=0A= issues.=0A= =0A= Ok for master?=0A= =0A= Thanks,=0A= Jonathan=0A= =0A= ---=0A= =0A= gcc/ChangeLog:=0A= =0A= 2021-07-19 =A0Jonathan Wright =A0=0A= =0A= * config/aarch64/aarch64.c (aarch64_vec_select_high_operand_p):=0A= Define.=0A= (aarch64_rtx_mult_cost): Traverse RTL tree to prevent cost of=0A= vec_select high-half from being added into Neon multiply=0A= cost.=0A= * rtlanal.c (vec_series_highpart_p): Define.=0A= * rtlanal.h (vec_series_highpart_p): Declare.=0A= =0A= gcc/testsuite/ChangeLog:=0A= =0A= * gcc.target/aarch64/vmul_high_cost.c: New test.=0A= --_002_DB9PR08MB695955EFA2E6BE37F00B3EA9EBEA9DB9PR08MB6959eurp_ Content-Type: application/octet-stream; name="rb14704.patch" Content-Description: rb14704.patch Content-Disposition: attachment; filename="rb14704.patch"; size=6947; creation-date="Wed, 28 Jul 2021 13:36:40 GMT"; modification-date="Wed, 28 Jul 2021 13:36:40 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMgYi9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5jCmluZGV4IDU4MDk4ODc5OTczMDUzMTdjNWE4MTQyMTA4OWRiNDMxNjg1 ZTI5MjcuLmE0OTY3MmFmZTc4NWUzNTE3MjUwZDMyNDQ2OGVkYWNjZWFiNWM5ZDMgMTAwNjQ0Ci0t LSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQuYwpAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgImZ1bmN0aW9uLWFiaS5oIgog I2luY2x1ZGUgImdpbXBsZS1wcmV0dHktcHJpbnQuaCIKICNpbmNsdWRlICJ0cmVlLXNzYS1sb29w LW5pdGVyLmgiCisjaW5jbHVkZSAicnRsYW5hbC5oIgogCiAvKiBUaGlzIGZpbGUgc2hvdWxkIGJl IGluY2x1ZGVkIGxhc3QuICAqLwogI2luY2x1ZGUgInRhcmdldC1kZWYuaCIKQEAgLTExOTcwLDYg KzExOTcxLDE5IEBAIGFhcmNoNjRfY2hlYXBfbXVsdF9zaGlmdF9wIChydHggeCkKICAgcmV0dXJu IGZhbHNlOwogfQogCisvKiBSZXR1cm4gdHJ1ZSBpZmYgWCBpcyBhbiBvcGVyYW5kIG9mIGEgc2Vs ZWN0LWhpZ2gtaGFsZiB2ZWN0b3IKKyAgIGluc3RydWN0aW9uLiAgKi8KKworc3RhdGljIGJvb2wK K2FhcmNoNjRfdmVjX3NlbGVjdF9oaWdoX29wZXJhbmRfcCAocnR4IHgpCit7CisgIHJldHVybiAo KEdFVF9DT0RFICh4KSA9PSBaRVJPX0VYVEVORCB8fCBHRVRfQ09ERSAoeCkgPT0gU0lHTl9FWFRF TkQpCisJICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09IFZFQ19TRUxFQ1QKKwkgICYmIHZl Y19zZXJpZXNfaGlnaHBhcnRfcCAoR0VUX01PREUgKFhFWFAgKHgsIDApKSwKKwkJCQkgICAgR0VU X01PREUgKFhFWFAgKFhFWFAgKHgsIDApLCAwKSksCisJCQkJICAgIFhFWFAgKFhFWFAgKHgsIDAp LCAxKSkpOworfQorCiAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHJ0eCBjb3N0IGNhbGN1bGF0aW9u LiAgQ2FsY3VsYXRlIHRoZSBjb3N0IG9mCiAgICBhIE1VTFQgb3IgQVNISUZULCB3aGljaCBtYXkg YmUgcGFydCBvZiBhIGNvbXBvdW5kIFBMVVMvTUlOVVMgcnR4LgogICAgUmV0dXJuIHRoZSBjYWxj dWxhdGVkIGNvc3Qgb2YgdGhlIGV4cHJlc3Npb24sIHJlY3Vyc2luZyBtYW51YWxseSBpbiB0bwpA QCAtMTE5OTUsNiArMTIwMDksMTMgQEAgYWFyY2g2NF9ydHhfbXVsdF9jb3N0IChydHggeCwgZW51 bSBydHhfY29kZSBjb2RlLCBpbnQgb3V0ZXIsIGJvb2wgc3BlZWQpCiAgICAgICB1bnNpZ25lZCBp bnQgdmVjX2ZsYWdzID0gYWFyY2g2NF9jbGFzc2lmeV92ZWN0b3JfbW9kZSAobW9kZSk7CiAgICAg ICBpZiAodmVjX2ZsYWdzICYgVkVDX0FEVlNJTUQpCiAJeworCSAgLyogVGhlIHNlbGVjdC1vcGVy YW5kLWhpZ2gtaGFsZiB2ZXJzaW9ucyBvZiB0aGUgaW5zdHJ1Y3Rpb24gaGF2ZSB0aGUKKwkgICAg IHNhbWUgY29zdCBhcyB0aGUgdGhyZWUgdmVjdG9yIHZlcnNpb24gLSBkb24ndCBhZGQgdGhlIGNv c3RzIG9mIHRoZQorCSAgICAgc2VsZWN0IGludG8gdGhlIGNvc3RzIG9mIHRoZSBtdWx0aXBseS4g ICovCisJICBpZiAoYWFyY2g2NF92ZWNfc2VsZWN0X2hpZ2hfb3BlcmFuZF9wIChvcDApKQorCSAg ICBvcDAgPSBYRVhQIChYRVhQIChvcDAsIDApLCAwKTsKKwkgIGlmIChhYXJjaDY0X3ZlY19zZWxl Y3RfaGlnaF9vcGVyYW5kX3AgKG9wMSkpCisJICAgIG9wMSA9IFhFWFAgKFhFWFAgKG9wMSwgMCks IDApOwogCSAgLyogVGhlIGJ5LWVsZW1lbnQgdmVyc2lvbnMgb2YgdGhlIGluc3RydWN0aW9uIGhh dmUgdGhlIHNhbWUgY29zdHMgYXMKIAkgICAgIHRoZSBub3JtYWwgMy12ZWN0b3IgdmVyc2lvbi4g IFNvIGRvbid0IGFkZCB0aGUgY29zdHMgb2YgdGhlCiAJICAgICBkdXBsaWNhdGUgb3Igc3Vic2Vx dWVudCBzZWxlY3QgaW50byB0aGUgY29zdHMgb2YgdGhlIG11bHRpcGx5LiAgV2UKZGlmZiAtLWdp dCBhL2djYy9ydGxhbmFsLmggYi9nY2MvcnRsYW5hbC5oCmluZGV4IGUxNjQyNDI0ZGI4OTczNjY3 NWFjM2UwZDUwNWFlYWE1OWRjYThiYWQuLjU0MmRjNzg5OGJlYWQyN2QzZGE4OWU1MTM4YzQ5NTYz YmEyMjZlYWUgMTAwNjQ0Ci0tLSBhL2djYy9ydGxhbmFsLmgKKysrIGIvZ2NjL3J0bGFuYWwuaApA QCAtMzMxLDYgKzMzMSwxMCBAQCBpbmxpbmUgdmVjX3J0eF9wcm9wZXJ0aWVzX2Jhc2U6On52ZWNf cnR4X3Byb3BlcnRpZXNfYmFzZSAoKQogICAgY29sbGVjdGluZyB0aGUgcmVmZXJlbmNlcyBhIHNl Y29uZCB0aW1lLiAgKi8KIHVzaW5nIHZlY19ydHhfcHJvcGVydGllcyA9IGdyb3dpbmdfcnR4X3By b3BlcnRpZXM8dmVjX3J0eF9wcm9wZXJ0aWVzX2Jhc2U+OwogCitib29sCit2ZWNfc2VyaWVzX2hp Z2hwYXJ0X3AgKG1hY2hpbmVfbW9kZSByZXN1bHRfbW9kZSwgbWFjaGluZV9tb2RlIG9wX21vZGUs CisJCSAgICAgICBydHggc2VsKTsKKwogYm9vbAogdmVjX3Nlcmllc19sb3dwYXJ0X3AgKG1hY2hp bmVfbW9kZSByZXN1bHRfbW9kZSwgbWFjaGluZV9tb2RlIG9wX21vZGUsIHJ0eCBzZWwpOwogCmRp ZmYgLS1naXQgYS9nY2MvcnRsYW5hbC5jIGIvZ2NjL3J0bGFuYWwuYwppbmRleCBlYzdhMDYyODI5 Y2I0ZWFkM2VhZWRmMTU0Njk1NjEwN2Y0YWQzYmIyLi4zZGI0OWU3YTgyMzdiZWY4ZmZkOWFhNDAz NmJiMmNmZGIxY2VlNmQ1IDEwMDY0NAotLS0gYS9nY2MvcnRsYW5hbC5jCisrKyBiL2djYy9ydGxh bmFsLmMKQEAgLTY5NDEsNiArNjk0MSwyNSBAQCByZWdpc3Rlcl9hc21fcCAoY29uc3RfcnR4IHgp CiAJICAmJiBERUNMX1JFR0lTVEVSIChSRUdfRVhQUiAoeCkpKTsKIH0KIAorLyogUmV0dXJuIHRy dWUgaWYsIGZvciBhbGwgT1Agb2YgbW9kZSBPUF9NT0RFOgorCisgICAgICh2ZWNfc2VsZWN0OlJF U1VMVF9NT0RFIE9QIFNFTCkKKworICAgaXMgZXF1aXZhbGVudCB0byB0aGUgaGlnaHBhcnQgUkVT VUxUX01PREUgb2YgT1AuICAqLworCitib29sCit2ZWNfc2VyaWVzX2hpZ2hwYXJ0X3AgKG1hY2hp bmVfbW9kZSByZXN1bHRfbW9kZSwgbWFjaGluZV9tb2RlIG9wX21vZGUsIHJ0eCBzZWwpCit7Cisg IGludCBudW5pdHM7CisgIGlmIChHRVRfTU9ERV9OVU5JVFMgKG9wX21vZGUpLmlzX2NvbnN0YW50 ICgmbnVuaXRzKQorICAgICAgJiYgdGFyZ2V0bS5jYW5fY2hhbmdlX21vZGVfY2xhc3MgKG9wX21v ZGUsIHJlc3VsdF9tb2RlLCBBTExfUkVHUykpCisgICAgeworICAgICAgaW50IG9mZnNldCA9IEJZ VEVTX0JJR19FTkRJQU4gPyAwIDogbnVuaXRzIC0gWFZFQ0xFTiAoc2VsLCAwKTsKKyAgICAgIHJl dHVybiBydHZlY19zZXJpZXNfcCAoWFZFQyAoc2VsLCAwKSwgb2Zmc2V0KTsKKyAgICB9CisgIHJl dHVybiBmYWxzZTsKK30KKwogLyogUmV0dXJuIHRydWUgaWYsIGZvciBhbGwgT1Agb2YgbW9kZSBP UF9NT0RFOgogCiAgICAgICh2ZWNfc2VsZWN0OlJFU1VMVF9NT0RFIE9QIFNFTCkKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ZtdWxfaGlnaF9jb3N0LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92bXVsX2hpZ2hfY29zdC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLmVjYzAyZTY1MmE0YmE0MGUyZmQ2ODE1NGNhOGJlNWQzMjJmNDM0NjgKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92bXVsX2hpZ2hfY29zdC5j CkBAIC0wLDAgKzEsODUgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMyIgfSAqLworCisjaW5jbHVkZSA8YXJtX25lb24uaD4KKworI2RlZmluZSBURVNUX01V TExfVkVDKG5hbWUsIHJldHR5cGUsIGludHlwZSwgdHMsIHJzKSBcCisgIHJldHR5cGUgdGVzdF8g IyMgbmFtZSAjIyBfICMjIHRzIChpbnR5cGUgYSwgaW50eXBlIGIsIGludHlwZSBjKSBcCisJeyBc CisJCXJldHR5cGUgdDAgPSBuYW1lICMjIF8gIyMgdHMgKHZnZXRfaGlnaF8gIyMgdHMgKGEpLCBc CisJCQkJCSAgICAgIHZnZXRfaGlnaF8gIyMgdHMgKGMpKTsgXAorCQlyZXR0eXBlIHQxID0gbmFt ZSAjIyBfICMjIHRzICh2Z2V0X2hpZ2hfICMjIHRzIChiKSwgXAorCQkJCQkgICAgICB2Z2V0X2hp Z2hfICMjIHRzIChjKSk7IFwKKwkJcmV0dXJuIHZxYWRkcSAjIyBfICMjIHJzICh0MCwgdDEpOyBc CisJfQorCitURVNUX01VTExfVkVDICh2bXVsbCwgaW50MTZ4OF90LCBpbnQ4eDE2X3QsIHM4LCBz MTYpCitURVNUX01VTExfVkVDICh2bXVsbCwgdWludDE2eDhfdCwgdWludDh4MTZfdCwgdTgsIHUx NikKK1RFU1RfTVVMTF9WRUMgKHZtdWxsLCBpbnQzMng0X3QsIGludDE2eDhfdCwgczE2LCBzMzIp CitURVNUX01VTExfVkVDICh2bXVsbCwgdWludDMyeDRfdCwgdWludDE2eDhfdCwgdTE2LCB1MzIp CitURVNUX01VTExfVkVDICh2bXVsbCwgaW50NjR4Ml90LCBpbnQzMng0X3QsIHMzMiwgczY0KQor VEVTVF9NVUxMX1ZFQyAodm11bGwsIHVpbnQ2NHgyX3QsIHVpbnQzMng0X3QsIHUzMiwgdTY0KQor CitURVNUX01VTExfVkVDICh2cWRtdWxsLCBpbnQzMng0X3QsIGludDE2eDhfdCwgczE2LCBzMzIp CitURVNUX01VTExfVkVDICh2cWRtdWxsLCBpbnQ2NHgyX3QsIGludDMyeDRfdCwgczMyLCBzNjQp CisKKyNkZWZpbmUgVEVTVF9NVUxMX04obmFtZSwgcmV0dHlwZSwgaW50eXBlLCB0cywgcnMpIFwK KyAgcmV0dHlwZSB0ZXN0XyAjIyBuYW1lICMjIF8gIyMgdHMgKGludHlwZSBhLCBpbnR5cGUgYiwg aW50eXBlIGMpIFwKKwl7IFwKKwkJcmV0dHlwZSB0MCA9IG5hbWUgIyMgXyAjIyB0cyAodmdldF9o aWdoXyAjIyB0cyAoYSksIGJbMV0pOyBcCisJCXJldHR5cGUgdDEgPSBuYW1lICMjIF8gIyMgdHMg KHZnZXRfaGlnaF8gIyMgdHMgKGEpLCBjWzFdKTsgXAorCQlyZXR1cm4gdnFhZGRxICMjIF8gIyMg cnMgKHQwLCB0MSk7IFwKKwl9CisKK1RFU1RfTVVMTF9OICh2bXVsbF9uLCBpbnQzMng0X3QsIGlu dDE2eDhfdCwgczE2LCBzMzIpCitURVNUX01VTExfTiAodm11bGxfbiwgdWludDMyeDRfdCwgdWlu dDE2eDhfdCwgdTE2LCB1MzIpCitURVNUX01VTExfTiAodm11bGxfbiwgaW50NjR4Ml90LCBpbnQz Mng0X3QsIHMzMiwgczY0KQorVEVTVF9NVUxMX04gKHZtdWxsX24sIHVpbnQ2NHgyX3QsIHVpbnQz Mng0X3QsIHUzMiwgdTY0KQorCitURVNUX01VTExfTiAodnFkbXVsbF9uLCBpbnQzMng0X3QsIGlu dDE2eDhfdCwgczE2LCBzMzIpCitURVNUX01VTExfTiAodnFkbXVsbF9uLCBpbnQ2NHgyX3QsIGlu dDMyeDRfdCwgczMyLCBzNjQpCisKKyNkZWZpbmUgVEVTVF9NTFhMX1ZFQyhuYW1lLCByZXR0eXBl LCBpbnR5cGUsIHRzKSBcCisgIHJldHR5cGUgdGVzdF8gIyMgbmFtZSAjIyBfICMjIHRzIChyZXR0 eXBlIGFjYywgaW50eXBlIGEsIGludHlwZSBiLCBcCisJCQkJICAgIGludHlwZSBjKSBcCisJeyBc CisJCWFjYyA9IG5hbWUgIyMgXyAjIyB0cyAoYWNjLCB2Z2V0X2hpZ2hfICMjIHRzIChhKSwgXAor CQkJCQkgICAgdmdldF9oaWdoXyAjIyB0cyAoYikpOyBcCisJCXJldHVybiBuYW1lICMjIF8gIyMg dHMgKGFjYywgdmdldF9oaWdoXyAjIyB0cyAoYSksIFwKKwkJCQkJICAgICB2Z2V0X2hpZ2hfICMj IHRzIChjKSk7IFwKKwl9CisKK1RFU1RfTUxYTF9WRUMgKHZtbGFsLCBpbnQxNng4X3QsIGludDh4 MTZfdCwgczgpCitURVNUX01MWExfVkVDICh2bWxhbCwgdWludDE2eDhfdCwgdWludDh4MTZfdCwg dTgpCitURVNUX01MWExfVkVDICh2bWxhbCwgaW50MzJ4NF90LCBpbnQxNng4X3QsIHMxNikKK1RF U1RfTUxYTF9WRUMgKHZtbGFsLCB1aW50MzJ4NF90LCB1aW50MTZ4OF90LCB1MTYpCisKK1RFU1Rf TUxYTF9WRUMgKHZtbHNsLCBpbnQxNng4X3QsIGludDh4MTZfdCwgczgpCitURVNUX01MWExfVkVD ICh2bWxzbCwgdWludDE2eDhfdCwgdWludDh4MTZfdCwgdTgpCitURVNUX01MWExfVkVDICh2bWxz bCwgaW50MzJ4NF90LCBpbnQxNng4X3QsIHMxNikKK1RFU1RfTUxYTF9WRUMgKHZtbHNsLCB1aW50 MzJ4NF90LCB1aW50MTZ4OF90LCB1MTYpCisKKyNkZWZpbmUgVEVTVF9NTFhMX04obmFtZSwgcmV0 dHlwZSwgaW50eXBlLCB0cykgXAorICByZXR0eXBlIHRlc3RfICMjIG5hbWUgIyMgXyAjIyB0cyAo cmV0dHlwZSBhY2MsIGludHlwZSBhLCBpbnR5cGUgYikgXAorCXsgXAorCQlhY2MgPSBuYW1lICMj IF8gIyMgdHMgKGFjYywgdmdldF9oaWdoXyAjIyB0cyAoYSksIGJbMV0pOyBcCisJCXJldHVybiBu YW1lICMjIF8gIyMgdHMgKGFjYywgdmdldF9oaWdoXyAjIyB0cyAoYSksIGJbMV0pOyBcCisJfQor CitURVNUX01MWExfTiAodm1sYWxfbiwgaW50MzJ4NF90LCBpbnQxNng4X3QsIHMxNikKK1RFU1Rf TUxYTF9OICh2bWxhbF9uLCB1aW50MzJ4NF90LCB1aW50MTZ4OF90LCB1MTYpCitURVNUX01MWExf TiAodm1sYWxfbiwgaW50NjR4Ml90LCBpbnQzMng0X3QsIHMzMikKK1RFU1RfTUxYTF9OICh2bWxh bF9uLCB1aW50NjR4Ml90LCB1aW50MzJ4NF90LCB1MzIpCisKK1RFU1RfTUxYTF9OICh2bWxzbF9u LCBpbnQzMng0X3QsIGludDE2eDhfdCwgczE2KQorVEVTVF9NTFhMX04gKHZtbHNsX24sIHVpbnQz Mng0X3QsIHVpbnQxNng4X3QsIHUxNikKK1RFU1RfTUxYTF9OICh2bWxzbF9uLCBpbnQ2NHgyX3Qs IGludDMyeDRfdCwgczMyKQorVEVTVF9NTFhMX04gKHZtbHNsX24sIHVpbnQ2NHgyX3QsIHVpbnQz Mng0X3QsIHUzMikKKworVEVTVF9NTFhMX04gKHZxZG1sYWxfbiwgaW50MzJ4NF90LCBpbnQxNng4 X3QsIHMxNikKK1RFU1RfTUxYTF9OICh2cWRtbGFsX24sIGludDY0eDJfdCwgaW50MzJ4NF90LCBz MzIpCisKK1RFU1RfTUxYTF9OICh2cWRtbHNsX24sIGludDMyeDRfdCwgaW50MTZ4OF90LCBzMTYp CitURVNUX01MWExfTiAodnFkbWxzbF9uLCBpbnQ2NHgyX3QsIGludDMyeDRfdCwgczMyKQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJkdXBcXHQiIH0gfSAqLwo= --_002_DB9PR08MB695955EFA2E6BE37F00B3EA9EBEA9DB9PR08MB6959eurp_--