From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2049.outbound.protection.outlook.com [40.107.241.49]) by sourceware.org (Postfix) with ESMTPS id 5542C3858D1E for ; Tue, 20 Jun 2023 10:03:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5542C3858D1E 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=8TVAvn6/6LuhTwq9Eopa+w23Q6zTKV5xYB43mcUtSSw=; b=h9ffLLrLemdpZMKUJvkjJJWO7ADPLFDqGyR+pW/HkdZmDoAMIsz7/+8WViApXKP11Lk1zRTKhG9h22grxHCIntkjuZhbfPF9gFuwwdSm6bJea00ahzcjQQVbwKUC9Q3KKTCm3/0hJyhfeTdjdnWpHqpLqHDdFS5Ng4IsIwF16T4= Received: from DUZPR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:10:3c3::11) by AS8PR08MB7792.eurprd08.prod.outlook.com (2603:10a6:20b:52c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.31; Tue, 20 Jun 2023 10:03:47 +0000 Received: from DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:3c3:cafe::9b) by DUZPR01CA0007.outlook.office365.com (2603:10a6:10:3c3::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.37 via Frontend Transport; Tue, 20 Jun 2023 10:03:47 +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 DBAEUR03FT021.mail.protection.outlook.com (100.127.142.184) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.21 via Frontend Transport; Tue, 20 Jun 2023 10:03:47 +0000 Received: ("Tessian outbound 5bb4c51d5a1f:v136"); Tue, 20 Jun 2023 10:03:47 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 487e11e782e2c2a7 X-CR-MTA-TID: 64aa7808 Received: from 59f9290fbec8.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 7C634762-0633-45CE-B7AE-4AAFCD40B7FD.1; Tue, 20 Jun 2023 10:03:40 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 59f9290fbec8.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 20 Jun 2023 10:03:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WD3/YZtTNJNmwGYwliICMuB8MZ+jB9VS1biWeew/6DiMpIHSZQkdBnOvz/YwggVbZ6AGE2700pDU+//Uyd+v1bvdV0c6aiuuGUx33gbsHtyNNH68avfUP8MzE3f7qpmao3Pmb1/r/BI7c/c1vWjAGfAH0PGT2GyRJfZHGEM+XeQ12R6tA3sWd8BL2aofF5oS5yVu/hxmyCXy93/QjB3WYf+tSinCwVAgKn6PAc6VsMgzowX1VGmqRuIoOXLElxsjNPBtmWYi8Puyx6rihFwxvULpMR8lkpEgTnkl5zxnBvsglODWOphOsGo0KfSGt1d2yLFkCEdjycVSG+J1e9NFhg== 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=8TVAvn6/6LuhTwq9Eopa+w23Q6zTKV5xYB43mcUtSSw=; b=Zb8lKSs6kL9r8C+GnfXuwbNv7qvZaMSH7v8HRHban+/T1eYwx8RTSjY6Ty0mcz9zNqSKE3BgvbVv3qAj9n7k/Qw/pMYiwSa1f5qw+0CidyWBUP/kvFNzFZxdyrwT7PZFONAH8Yg1eIllnkRSrQJXhhZfI6pSEAapFAPyxilsSFwowCPGAKQBsiXkm6EL/ve0qCYKkCv1dEGtzGqpq6t40TO0sKYPzZJhszkO4WCwoAh/bzBR7xDmdf3qwyQJszEBOV3jDCTEJu+/bolX7145vAPcugIsmgwnbuX226JdwBONIc/2XTosH3+6t2NgEJbV7etVhsnzPMmsnoYTs2NTPg== 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=8TVAvn6/6LuhTwq9Eopa+w23Q6zTKV5xYB43mcUtSSw=; b=h9ffLLrLemdpZMKUJvkjJJWO7ADPLFDqGyR+pW/HkdZmDoAMIsz7/+8WViApXKP11Lk1zRTKhG9h22grxHCIntkjuZhbfPF9gFuwwdSm6bJea00ahzcjQQVbwKUC9Q3KKTCm3/0hJyhfeTdjdnWpHqpLqHDdFS5Ng4IsIwF16T4= Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by DU2PR08MB7325.eurprd08.prod.outlook.com (2603:10a6:10:2e4::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.37; Tue, 20 Jun 2023 10:03:39 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::2978:61ca:4677:30f8]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::2978:61ca:4677:30f8%5]) with mapi id 15.20.6500.036; Tue, 20 Jun 2023 10:03:37 +0000 From: Kyrylo Tkachov To: "gcc-patches@gcc.gnu.org" Subject: [PATCH][committed] aarch64: Optimise ADDP with same source operands Thread-Topic: [PATCH][committed] aarch64: Optimise ADDP with same source operands Thread-Index: AdmjXnAi6RNmQXZzRcC5Kherr3xITA== Date: Tue, 20 Jun 2023 10:03:37 +0000 Message-ID: Accept-Language: en-GB, 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: PAXPR08MB6926:EE_|DU2PR08MB7325:EE_|DBAEUR03FT021:EE_|AS8PR08MB7792:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b28b276-78c8-401e-101b-08db7175a399 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: GJg5CmojORvJEQgT2huqVoLGauArBmEy6lo0ISa4lvic8XJB6MFRezQRsxRaB0XmQMYnWrBjMDQhBp6VsNhbjI48P9JmR43kjeSbi9iD7yIhD5wmcGSOgqZmyWUDKX+UbNkMZ/QIHeR3xloxLYWdDQAoJaVpBHFCy/fZYmS59mhFwGYCwlPA7IonCJYfkpEay4p3Yz5IpVVeOio4cEeJiXSPvQedEnyzfBi/S9+dhDAVx352fd4X+RncmFzmXSaL6+SShR/QaW7Dn5lEUqdLNdMuBHqQ8EMvPKifkAlnlF7PtvlsWZMhyN19x5TzlcVkKFTDLqjAZbtUhrJmI6rErPp2qRSi/tEtH5PfOXYmiRBU9Tq6khT/QtbKTMX6EBIqqpMSGetwCrs9O6JOyQlqI7YFvI+uWaE2WVCuxcVUvyg6w3nlsQVfPMnMK0KStVjAyLlT287qzpQt6gYZeIAaOhYnu/PJ/lNS/lW1ZcjTfTbFSlIos5Kw0EcJIrda9rqpPJnAQpSJJhJ6kcJAyHvYYMKi3kf2XLOO3VRYBM/gXjzAyIL/rPq6rqry9DQvPs1cLgRuDXhTC6/aBsGJlmqpRSrMUFXYp5X9gSR0M5TWFFc= X-Forefront-Antispam-Report-Untrusted: 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:(13230028)(4636009)(396003)(39860400002)(346002)(376002)(366004)(136003)(451199021)(55016003)(316002)(6916009)(76116006)(66946007)(64756008)(66476007)(66446008)(66556008)(86362001)(2906002)(4744005)(38070700005)(8936002)(52536014)(8676002)(5660300002)(33656002)(122000001)(99936003)(38100700002)(71200400001)(186003)(26005)(9686003)(6506007)(41300700001)(84970400001)(7696005)(478600001);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_PAXPR08MB6926A4B4D8A9E94A6E96ACEA935CAPAXPR08MB6926eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB7325 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: DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 652fdc6e-8052-4846-c0f9-08db71759dae X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3BaDKKzcIySaYM8CX9maBiS04ucBrm7mQyOuhJsua+gmwaKu/oejzwCkkt6sn/tE3v6CTXtffx4Ftrj9HO2Jj7LVr9h6Qc5BN6mcY5wWJu+3AOuwuUX0dsKjOZgE7E8X/vipEevsROIOVgyfTK2W1I2iHFXgkoMzgXQ2T3dIFih75EuNflhrObPfiz1GwXZQ1jMvgihj0zB6Dg1nz8/efzc9r7rz/zDCk/T0/amc5jkqklOMMQUZXUkSckRfcTGKSO3SBWsxjUzIvSjMoqroCUPJjBhMkWpmJGSLAuzVknll7tOOpkSG/XpefuHd61s8Kn5VtxsDAwxfkpxqpjXDwbk95U9wxzoiu9z7FhD/ANs9e00uCXVAZMfL9xKn1fwR8OuX19Cw4yM1cuUzx5mkDkZPEDiM419aLqcq27P5/ZC49AOtcboMgcNLBpIhmJVI66tI4yKOePcOlu3lKK+UCOUlzogaq8wcibwbpPXCL0APzm9/812GjfQ5/XeT3LTrG1y8O2sd59sA6WoPHNF5g+AhzY5kNvgGSlh3P4EMG8n/cxieQr+2pVoKEKCty076/8EpOnUv1PugVWYQEKOwOuE8LyXibtVmmgKRSMuuXvP/u8sCfRAMTLPcEJNMZvZGbedAdWm9jjDGN2DBA8eP+TOts+LCDAlpXWrA7yAKwmStIt13FN/giu0oe58hixbcBBFaemuJoaLU7QDhUHo+it461bBYKjHxo1vv4Xwt8vs= 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)(376002)(346002)(136003)(39860400002)(396003)(451199021)(40470700004)(36840700001)(46966006)(336012)(186003)(2906002)(84970400001)(478600001)(55016003)(26005)(36860700001)(40460700003)(9686003)(6506007)(47076005)(356005)(81166007)(40480700001)(82740400003)(316002)(99936003)(86362001)(82310400005)(8936002)(8676002)(33656002)(5660300002)(235185007)(52536014)(6916009)(41300700001)(7696005)(70206006)(70586007);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2023 10:03:47.2730 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b28b276-78c8-401e-101b-08db7175a399 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: DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7792 X-Spam-Status: No, score=-5.4 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,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY 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_PAXPR08MB6926A4B4D8A9E94A6E96ACEA935CAPAXPR08MB6926eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, We've been asked to optimise the testcase in this patch of a 64-bit ADDP wi= th the low and high halves of the same 128-bit vector. This can be done by a single .4s ADDP followed by just reading the bottom 64 bits. A splitter for this is quite straightforward now that all the vec_concat stuff is collapse= d by simplify-rtx. With this patch we generate a single: addp v0.4s, v0.4s, v0.4s instead of: dup d31, v0.d[1] addp v0.2s, v0.2s, v31.2s ret Bootstrapped and tested on aarch64-none-linux-gnu and aarch64_be-none-elf. Pushing to trunk. Thanks, Kyrill gcc/ChangeLog: * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg): New define_insn_and_split. gcc/testsuite/ChangeLog: * gcc.target/aarch64/simd/addp-same-low_1.c: New test. --_002_PAXPR08MB6926A4B4D8A9E94A6E96ACEA935CAPAXPR08MB6926eurp_ Content-Type: application/octet-stream; name="addp-q.patch" Content-Description: addp-q.patch Content-Disposition: attachment; filename="addp-q.patch"; size=2303; creation-date="Tue, 20 Jun 2023 10:03:09 GMT"; modification-date="Tue, 20 Jun 2023 10:03:37 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kCmluZGV4IDU2MjJkODRjZjM3ODFiMDdlOWE0ZjY3 ODBlNTZhYTNmNzRjMTk0YTUuLmMxN2YyMWY2ODgyNjczOTRkZjM0MDAxYzU1MDI3ZTRmMWVjYzU2 ZjMgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQKKysrIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZApAQCAtNzMyNyw2ICs3MzI3LDM2IEBA IChkZWZpbmVfaW5zbiAiYWFyY2g2NF9hZGRwPG1vZGU+PHZjemxlPjx2Y3piZT5faW5zbiIKICAg WyhzZXRfYXR0ciAidHlwZSIgIm5lb25fcmVkdWNfYWRkPHE+IildCiApCiAKKzs7IEEgY29tbW9u IHVzZWNhc2Ugb2YgNjQtYml0IEFERFAgaXMgdG8gaGF2ZSBib3RoIG9wZXJhbmRzIGNvbWUgZnJv bSB0aGUgc2FtZQorOzsgMTI4LWJpdCB2ZWN0b3IgYW5kIHByb2R1Y2UgdGhlIHBhaXJ3aXNlIGFk ZGl0aW9uIHJlc3VsdHMgaW4gdGhlIGxvd2VyIGhhbGYuCis7OyBTcGxpdCBpbnRvIHRoZSAxMjgt Yml0IEFERFAgZm9ybSBhbmQgZXh0cmFjdCB0aGUgbG93IGhhbGYuCisoZGVmaW5lX2luc25fYW5k X3NwbGl0ICIqYWFyY2g2NF9hZGRwX3NhbWVfcmVnPG1vZGU+IgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDo8VkhBTEY+IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9dyIpCisJKHBsdXM6PFZIQUxGPgor CSAgKHZlY19zZWxlY3Q6PFZIQUxGPgorCSAgICAobWF0Y2hfb3BlcmFuZDpWUV9JIDEgInJlZ2lz dGVyX29wZXJhbmQiICJ3IikKKwkgICAgKG1hdGNoX29wZXJhbmQ6VlFfSSAyICJ2ZWN0X3Bhcl9j bnN0X2V2ZW5fb3Jfb2RkX2hhbGYiKSkKKwkgICh2ZWNfc2VsZWN0OjxWSEFMRj4KKwkgICAgKG1h dGNoX2R1cCAxKQorCSAgICAobWF0Y2hfb3BlcmFuZDpWUV9JIDMgInZlY3RfcGFyX2Nuc3RfZXZl bl9vcl9vZGRfaGFsZiIpKSkpXQorICAiVEFSR0VUX1NJTUQgJiYgIXJ0eF9lcXVhbF9wIChvcGVy YW5kc1syXSwgb3BlcmFuZHNbM10pIgorICAiIyIKKyAgIiYmIDEiCisgIFsoY29uc3RfaW50IDAp XQorICB7CisgICAgcnR4IHNjcmF0Y2g7CisgICAgaWYgKGNhbl9jcmVhdGVfcHNldWRvX3AgKCkp CisgICAgICBzY3JhdGNoID0gZ2VuX3JlZ19ydHggKDxNT0RFPm1vZGUpOworICAgIGVsc2UKKyAg ICAgIHNjcmF0Y2ggPSBsb3dwYXJ0X3N1YnJlZyAoPE1PREU+bW9kZSwgb3BlcmFuZHNbMF0sIDxW SEFMRj5tb2RlKTsKKworICAgIGVtaXRfaW5zbiAoZ2VuX2FhcmNoNjRfYWRkcDxtb2RlPl9pbnNu IChzY3JhdGNoLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMV0sCisJCQkJCSAgICBvcGVyYW5kc1sy XSwgb3BlcmFuZHNbM10pKTsKKyAgICBlbWl0X21vdmVfaW5zbiAob3BlcmFuZHNbMF0sIGdlbl9s b3dwYXJ0ICg8VkhBTEY+bW9kZSwgc2NyYXRjaCkpOworICAgIERPTkU7CisgIH0KKykKKwogKGRl ZmluZV9leHBhbmQgImFhcmNoNjRfYWRkcDxtb2RlPiIKICAgWyhtYXRjaF9vcGVyYW5kOlZEUV9J IDAgInJlZ2lzdGVyX29wZXJhbmQiKQogICAgKG1hdGNoX29wZXJhbmQ6VkRRX0kgMSAicmVnaXN0 ZXJfb3BlcmFuZCIpCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9zaW1kL2FkZHAtc2FtZS1sb3dfMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvc2ltZC9hZGRwLXNhbWUtbG93XzEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmQ4ZGI3N2YxYzkxNzQ4ZjU0 MzUwN2FhOWYxMzE2YjI0MmZmZDhiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc2ltZC9hZGRwLXNhbWUtbG93XzEuYwpAQCAtMCwwICsxLDIwIEBA CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1P IiB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhYXJjaDY0X2xpdHRsZV9l bmRpYW4gfSAqLworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIi ICIiIH0gfSAqLworCisjaW5jbHVkZSA8YXJtX25lb24uaD4KKworCisvKgorKiogZm9vOgorKioJ YWRkcAl2MFwuNHMsIHYwXC40cywgdjBcLjRzCisqKglyZXQKKyovCisKK2ludDMyeDJfdAorZm9v IChpbnQzMng0X3QgYSkKK3sKKyAgcmV0dXJuIHZwYWRkX3MzMiAodmdldF9sb3dfczMyKGEpLCB2 Z2V0X2hpZ2hfczMyKGEpKTsKK30KKwo= --_002_PAXPR08MB6926A4B4D8A9E94A6E96ACEA935CAPAXPR08MB6926eurp_--