From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2083.outbound.protection.outlook.com [40.107.247.83]) by sourceware.org (Postfix) with ESMTPS id 321E93858C5E for ; Tue, 30 May 2023 09:38:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 321E93858C5E 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=HhWcnKgX+fkNSmJQq5jnmKuplqS4eLB2JhDLFBV3Bks=; b=30tpRoF27TpG8WTMJrM7wS2X7vEvbpY3uiNUPKZB5lZVAar5E60toQeV1XMpbWulRbwAHIgyZmM7aXg4wslPI+h9sytpxr0QWiHYE1hYw7GViJJVoSxry8l4Uj3D1rMh+D91dZdlw79pYw850Rr4v/gYYBHscEQEldyrJh12ioI= Received: from DUZPR01CA0052.eurprd01.prod.exchangelabs.com (2603:10a6:10:469::8) by GV1PR08MB9916.eurprd08.prod.outlook.com (2603:10a6:150:a6::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.22; Tue, 30 May 2023 09:38:17 +0000 Received: from DBAEUR03FT053.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:469:cafe::85) by DUZPR01CA0052.outlook.office365.com (2603:10a6:10:469::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23 via Frontend Transport; Tue, 30 May 2023 09:38:17 +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 DBAEUR03FT053.mail.protection.outlook.com (100.127.142.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22 via Frontend Transport; Tue, 30 May 2023 09:38:17 +0000 Received: ("Tessian outbound 5bb4c51d5a1f:v136"); Tue, 30 May 2023 09:38:17 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 5324452873b40e65 X-CR-MTA-TID: 64aa7808 Received: from c56de2d4b895.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id DEF1D07A-98B8-40DB-8AB0-BBB53E6191D2.1; Tue, 30 May 2023 09:38:09 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id c56de2d4b895.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 30 May 2023 09:38:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y50/tVh0eXixfvxkQEdkkqMIxHs7i7BDIkAyepRrqQsx3vkfsEdMASz1am00NS3geHYiYXA3v+1qUzDPTxt9gm1l2sHq45MB3QquNCMNZhGi/gfsD0VEohzZu4X4yd/9bM1e70z5s1YTW57hR1D9YsI/taff60/ufM1yFRSnYBHTqp8hN98wElDl5B/RFIueGSBOUmMoflyjOJMdxXdv0yt8AS+J1Jvoj98pAk1Cx+548mJ6+lwaFTOgq14Dq+UsuFlB9NZ6UmUB8Jw/mgr2aqAoVoryAR6Ph4az9MQPFDGqDUN9INxKkrsWf7riWq+xolD3zCr3RZ0VcJeEtdLKCg== 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=HhWcnKgX+fkNSmJQq5jnmKuplqS4eLB2JhDLFBV3Bks=; b=lBwLgSkleUnRsdvpHIiYKF838zcQgd3LGT6lgOPFsz1/DhtCFgGWqVIlM5rwHtPfAfD6JQgl1sgR5t/+qwRcfvQ6OYNALshIXQFtLcklopL92e/3rwbRcgwE4INMzFYHc9WNRvnNUBWjINb55S1w0765vc//Pv3gpF3aiEKhTkltgdQqaew+RXtTh50si37Hkoh/zzQYagJdwl9zJGUd8sdyyqyWwvFVEntrYSRIriNZt+RmP3L53OOao7jfqxSD0SIFNd+3+bOm0dm+w/aeYGaedt7LqXnNmVu7U5qhsKSopxVgPIRxC+/ZieJIi2GIUK2ACq3dLIfDQCcwBVZj0A== 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=HhWcnKgX+fkNSmJQq5jnmKuplqS4eLB2JhDLFBV3Bks=; b=30tpRoF27TpG8WTMJrM7wS2X7vEvbpY3uiNUPKZB5lZVAar5E60toQeV1XMpbWulRbwAHIgyZmM7aXg4wslPI+h9sytpxr0QWiHYE1hYw7GViJJVoSxry8l4Uj3D1rMh+D91dZdlw79pYw850Rr4v/gYYBHscEQEldyrJh12ioI= Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by DBBPR08MB5947.eurprd08.prod.outlook.com (2603:10a6:10:207::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23; Tue, 30 May 2023 09:38:08 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::db73:66ba:ae70:1ff1]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::db73:66ba:ae70:1ff1%3]) with mapi id 15.20.6433.022; Tue, 30 May 2023 09:38:08 +0000 From: Kyrylo Tkachov To: "gcc-patches@gcc.gnu.org" Subject: [PATCH][committed] aarch64: Reimplement v(r)hadd and vhsub intrinsics with RTL codes Thread-Topic: [PATCH][committed] aarch64: Reimplement v(r)hadd and vhsub intrinsics with RTL codes Thread-Index: AdmS2mqHhXL7icEIQbCAiKhhLoo91Q== Date: Tue, 30 May 2023 09:38:07 +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_|DBBPR08MB5947:EE_|DBAEUR03FT053:EE_|GV1PR08MB9916:EE_ X-MS-Office365-Filtering-Correlation-Id: 58ab1e46-5339-47ca-1c3c-08db60f19923 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: rTODM2C3nyGogMH38BPGz8eXd1hNHNcx35c0JeLkVDq8IPmUCJCu5GpOxrzGSfpQgY7AuuUE7ny1amEvKngfuewH8DHIHWYvUhETO7cfPOkDcvZE2C4PQyMYgpYiZzNQUN3xa1iCYd3uvTb4qXVVjtCSuTqcPvVWLBULLAu7XmMgvAFgLrhZn5P5Hm5Hi7UtUob1rQsQwoNKn48eDKccoyDW/hdpLf2AYUz9FhHfS4cRRzq8QzbTON85imlb1GsKQjQPK5pGbuUZuGd8Z+Sl/IxsUVmxxK3/sUPj53svFTzjY/lScxS299XVUznrrJohpsNAE4HL1THBB5LF9jhFB/bWOigZa0jR6mii6byRYc7bFg65nrqil9KCwWnbCb+x/AK40ouNYKf6qPHAdUbzpjugX0yZEU1odVYe4LuX2FQenm5n7ZO+ABPkEPK4xhbXATxUHQOaMH2jSBOtAvFMu8vo8BRBG9ehrKSkGE7n2HGM93Z9g7/C60GNCST34ljAfjXEdy0ceSzbJ+TNoGnliYS/AU9vOLLeDACYXoeNh7GDH1GXLWSgp4v3/s76OfS9FPC4h+nWDehPXvWBFL3ckgRp7i/Aagon+yaBWY0IHFXGdFCq5TmohzdhRUDHAPZT 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)(376002)(346002)(136003)(39860400002)(366004)(451199021)(99936003)(71200400001)(478600001)(8936002)(8676002)(52536014)(5660300002)(2906002)(86362001)(38070700005)(33656002)(66556008)(66946007)(6916009)(76116006)(64756008)(66446008)(122000001)(66476007)(316002)(55016003)(38100700002)(41300700001)(26005)(6506007)(186003)(9686003)(7696005);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_PAXPR08MB69262AE6D8EFA265E0F4547B934B9PAXPR08MB6926eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB5947 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: DBAEUR03FT053.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: ca30e436-d82a-4509-ee0f-08db60f19361 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0LgJBqcz/78tlw08kIArrk3t4vjHY4sJk4y9ra7D+BiQK8BErW6SRdf8dKxUcGyu+6Eh3hMHpQ/WN6Re+w3F+cZI/PQdz8VDDzV/dU/afmfYDN2qa8eRFzahSKKLCd8+IXcmq7wZJm7wPrLR/YZkf9un6TOr+QxJT/fDu0Y9KNMts+QDLvfXjbhWMXqRNE5av6BFBzBaJXSCyfxtE6fEIl140wPxK93FYqRb0us3DxRjwhZ/5NlJqN7RKADzNHvyBBWpGBbZ90jiG3gqrdBMM386tPZ4Qy0ydRvN0zdj4plAPpRyBjo+CbhVbUHVkmwmzj6WIL1h4UsWXEJEGlyvPnBp1i7YoUZi4XEssImLhAi/VqcD6iwD4+0vbLk2tVCLsTegx8WzANsiSU96+mkPdYGVS+pcKiMUMH83AkFgg3aHgqmSAvlht4ajT9YL/WkMBVdUF1otqCIn0/iYDYN8833DKeGTPXuWKzuWj4IEpHgLQODFpMbNRyf/EaSbvXv5BtD3VICvCZmrlQ/cbAb6RVLSylPYKBt6x7MQxlJLbmx/sy4CLKLBXG0Tz2Aywl2wkQTjRmgsa82oVow+bN370sV1TlglSP1rQbv4tihJEqodKSyurCJbOl4e6lUH2AqEqvUgJyuOTY+ATL4HLCIZXciD8h00Gchs5lspeTwB5VOCsuVTjyOMEUYDZtjGP+xmvS5CSlKiWW2eJ/jHGATFMgpgcTsOGYdHb8iPNXObBz7z/PWQoTR1yhHHJLP7OCvM 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)(136003)(376002)(39860400002)(346002)(451199021)(36840700001)(46966006)(40470700004)(9686003)(6506007)(186003)(2906002)(478600001)(26005)(336012)(47076005)(36860700001)(40460700003)(8936002)(7696005)(86362001)(81166007)(8676002)(82740400003)(356005)(41300700001)(99936003)(40480700001)(55016003)(70206006)(70586007)(316002)(5660300002)(33656002)(82310400005)(52536014)(235185007)(6916009);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2023 09:38:17.5500 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 58ab1e46-5339-47ca-1c3c-08db60f19923 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: DBAEUR03FT053.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB9916 X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,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=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_PAXPR08MB69262AE6D8EFA265E0F4547B934B9PAXPR08MB6926eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, This patch reimplements the MD patterns for the UHADD,SHADD,UHSUB,SHSUB,URH= ADD,SRHADD instructions using standard RTL operations rather than unspecs. The correct RTL representation= s involves widening the inputs before adding them and halving, followed by a truncation back to= the original mode. An unfortunate wart in the patch is that we end up having very similar expa= nders for the intrinsics through the aarch64_h and aarch64_rhadd n= ames and the standard names for the vector averaging optabs avg3_floor and avg3_cei= l. I'd like to reuse avg3_ceil for the intrinsics builtin as well bu= t our scheme in aarch64-simd-builtins.def and aarch64-builtins.cc makes it awkward by on= ly allowing mappings of entries in aarch64-simd-builtins.def to: 0 - CODE_FOR_aarch64_ 1-9 - CODE_FOR_<1-9> 10 - CODE_FOR_ whereas here we want a string after the i.e. CODE_FOR_uavg3_ce= il. This patch adds a bit of remapping logic in aarch64-builtins.cc before the = construction of the builtin info that remaps the CODE_FOR_* definitions in aarch64-simd-builtin= s.def to the optab-derived ones. CODE_FOR_aarch64_srhaddv4si gets remapped to CODE_FOR_a= vgv4si3_ceil, for example. It's a bit specific to this case, but this solution requires the least inva= sive changes while avoiding having duplicate expanders just for the sake of a different pattern name. Bootstrapped and tested on aarch64-none-linux-gnu and aarch64_be-none-elf. Pushing to trunk. Thanks, Kyrill gcc/ChangeLog: * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd, srhadd, urhadd builtin codes for standard optab ones. * config/aarch64/aarch64-simd.md (avg3_floor): Rename to... (avg3_floor): ... This. Expand to RTL codes rather than unspec. (avg3_ceil): Rename to... (avg3_ceil): ... This. Expand to RTL codes rather than unspec. (aarch64_hsub): New define_expand. (aarch64_h): Split into... (*aarch64_h_insn): ... This... (*aarch64_rhadd_insn): ... And this. --_002_PAXPR08MB69262AE6D8EFA265E0F4547B934B9PAXPR08MB6926eurp_ Content-Type: application/octet-stream; name="vrhadd.patch" Content-Description: vrhadd.patch Content-Disposition: attachment; filename="vrhadd.patch"; size=5576; creation-date="Tue, 30 May 2023 09:37:46 GMT"; modification-date="Tue, 30 May 2023 09:38:07 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWJ1aWx0aW5zLmNjIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2MKaW5kZXggY2I2YWFlM2YxZmFmYjQ4 ODNjMzE1MjcxOGIzMWQzNmFjYjMyZDc0My4uZTBiYjIxMjhlMDI5NjE0MzU2MDBiZGZkYTJhYWMx YmQ1YjMyOWQ4NSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRp bnMuY2MKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYnVpbHRpbnMuY2MKQEAgLTUw Miw4ICs1MDIsMTEgQEAgYWFyY2g2NF90eXBlc19zdG9yZXN0cnVjdF9sYW5lX3BfcXVhbGlmaWVy c1tTSU1EX01BWF9CVUlMVElOX0FSR1NdCiAjZGVmaW5lIENGNChOLCBYKSBDT0RFX0ZPUl8jI04j I1gjIzQKICNkZWZpbmUgQ0YxMChOLCBYKSBDT0RFX0ZPUl8jI04jI1gKIAotI2RlZmluZSBWQVIx KFQsIE4sIE1BUCwgRkxBRywgQSkgXAotICB7I04gI0EsIFVQIChBKSwgQ0YjI01BUCAoTiwgQSks IDAsIFRZUEVTXyMjVCwgRkxBR18jI0ZMQUd9LAorLyogRGVmaW5lIGNhc2NhZGluZyBWQVI8Tj4g bWFjcm9zIHRoYXQgYXJlIHVzZWQgZnJvbQorICAgYWFyY2g2NC1idWlsdGluLWl0ZXJhdG9ycy5o IHRvIGl0ZXJhdGUgb3ZlciBtb2Rlcy4gIFRoZXNlIGRlZmluaXRpb25zCisgICB3aWxsIGVuZCB1 cCBnZW5lcmF0aW5nIGEgbnVtYmVyIG9mIFZBUjEgZXhwYW5zaW9ucyBhbmQgY29kZSBsYXRlciBv biBpbiB0aGUKKyAgIGZpbGUgc2hvdWxkIHJlZGVmaW5lIFZBUjEgdG8gd2hhdGV2ZXIgaXQgbmVl ZHMgdG8gcHJvY2VzcyBvbiBhIHBlci1tb2RlCisgICBiYXNpcy4gICovCiAjZGVmaW5lIFZBUjIo VCwgTiwgTUFQLCBGTEFHLCBBLCBCKSBcCiAgIFZBUjEgKFQsIE4sIE1BUCwgRkxBRywgQSkgXAog ICBWQVIxIChULCBOLCBNQVAsIEZMQUcsIEIpCkBAIC01NTIsNiArNTU1LDI2IEBAIGFhcmNoNjRf dHlwZXNfc3RvcmVzdHJ1Y3RfbGFuZV9wX3F1YWxpZmllcnNbU0lNRF9NQVhfQlVJTFRJTl9BUkdT XQogCiAjaW5jbHVkZSAiYWFyY2g2NC1idWlsdGluLWl0ZXJhdG9ycy5oIgogCisvKiBUaGUgYnVp bHRpbnMgYmVsb3cgc2hvdWxkIGJlIGV4cGFuZGVkIHRocm91Z2ggdGhlIHN0YW5kYXJkIG9wdGFi cworICAgQ09ERV9GT1JfW3VdYXZnPG1vZGU+M19bZmxvb3IsY2VpbF0uICBIb3dldmVyIHRoZSBt YXBwaW5nIHNjaGVtZSBpbgorICAgYWFyY2g2NC1zaW1kLWJ1aWx0aW5zLmRlZiBkb2VzIG5vdCBl YXNpbHkgYWxsb3cgdXMgdG8gaGF2ZSBhIHByZS1tb2RlCisgICAoInVhdmciKSBhbmQgcG9zdC1t b2RlIHN0cmluZyAoIl9jZWlsIikgaW4gdGhlIENPREVfRk9SXyogY29uc3RydWN0aW9uLgorICAg U28gdGhlIGJ1aWx0aW5zIHVzZSBhIG5hbWUgdGhhdCBpcyBuYXR1cmFsIGZvciBBQXJjaDY0IGlu c3RydWN0aW9ucworICAgZS5nLiAiYWFyY2g2NF9zcmhhZGQ8bW9kZT4iIGFuZCB3ZSByZS1tYXAg dGhlc2UgdG8gdGhlIG9wdGFiLXJlbGF0ZWQKKyAgIENPREVfRk9SXyBoZXJlLiAgKi8KKyN1bmRl ZiBWQVIxCisjZGVmaW5lIFZBUjEoRixUMSxUMixJLE0pIFwKK2NvbnN0ZXhwciBpbnNuX2NvZGUg Q09ERV9GT1JfYWFyY2g2NF8jI0YjI00gPSBDT0RFX0ZPUl8jI1QxIyNNIyMzIyNUMjsKKworQlVJ TFRJTl9WRFFfQkhTSSAoc3JoYWRkLCBhdmcsIF9jZWlsLCAwKQorQlVJTFRJTl9WRFFfQkhTSSAo dXJoYWRkLCB1YXZnLCBfY2VpbCwgMCkKK0JVSUxUSU5fVkRRX0JIU0kgKHNoYWRkLCBhdmcsIF9m bG9vciwgMCkKK0JVSUxUSU5fVkRRX0JIU0kgKHVoYWRkLCB1YXZnLCBfZmxvb3IsIDApCisKKyN1 bmRlZiBWQVIxCisjZGVmaW5lIFZBUjEoVCwgTiwgTUFQLCBGTEFHLCBBKSBcCisgIHsjTiAjQSwg VVAgKEEpLCBDRiMjTUFQIChOLCBBKSwgMCwgVFlQRVNfIyNULCBGTEFHXyMjRkxBR30sCisKIHN0 YXRpYyBhYXJjaDY0X3NpbWRfYnVpbHRpbl9kYXR1bSBhYXJjaDY0X3NpbWRfYnVpbHRpbl9kYXRh W10gPSB7CiAjaW5jbHVkZSAiYWFyY2g2NC1zaW1kLWJ1aWx0aW5zLmRlZiIKIH07CmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQtc2ltZC5tZAppbmRleCA0YWEyZjMyNGI3OTVmNjZjNmM1NjQ3N2ZjZWJhNzE0 N2Q1MWJmODMyLi5jZjRjNTA2OGFmZDIyMDdlZWJjM2I5ZTgyYWZmOWEwNjFmYzBjZTliIDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kCisrKyBiL2djYy9jb25m aWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQKQEAgLTQ5MDMsMzAgKzQ5MDMsODYgQEAgKGRlZmlu ZV9leHBhbmQgImFhcmNoNjRfPEFOWV9FWFRFTkQ6c3U+PEFERFNVQjpvcHRhYj53Mjxtb2RlPiIK IAogOzsgPHN1PjxyPmg8YWRkc3ViPi4KIAotKGRlZmluZV9leHBhbmQgIjx1PmF2Zzxtb2RlPjNf Zmxvb3IiCisoZGVmaW5lX2V4cGFuZCAiPHN1X29wdGFiPmF2Zzxtb2RlPjNfZmxvb3IiCiAgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZEUV9CSFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotCSh1bnNw ZWM6VkRRX0JIU0kgWyhtYXRjaF9vcGVyYW5kOlZEUV9CSFNJIDEgInJlZ2lzdGVyX29wZXJhbmQi KQotCQkJICAobWF0Y2hfb3BlcmFuZDpWRFFfQkhTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIildCi0J CQkgSEFERCkpXQorCSh0cnVuY2F0ZTpWRFFfQkhTSQorCSAgKGFzaGlmdHJ0OjxWMlhXSURFPgor CSAgICAocGx1czo8VjJYV0lERT4KKwkgICAgICAoQU5ZX0VYVEVORDo8VjJYV0lERT4KKwkJKG1h dGNoX29wZXJhbmQ6VkRRX0JIU0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIpKQorCSAgICAgIChBTllf RVhURU5EOjxWMlhXSURFPgorCQkobWF0Y2hfb3BlcmFuZDpWRFFfQkhTSSAyICJyZWdpc3Rlcl9v cGVyYW5kIikpKQorCSAgICAobWF0Y2hfZHVwIDMpKSkpXQogICAiVEFSR0VUX1NJTUQiCisgIHsK KyAgICBvcGVyYW5kc1szXSA9IENPTlNUMV9SVFggKDxWMlhXSURFPm1vZGUpOworICB9CiApCiAK LShkZWZpbmVfZXhwYW5kICI8dT5hdmc8bW9kZT4zX2NlaWwiCisoZGVmaW5lX2V4cGFuZCAiPHN1 X29wdGFiPmF2Zzxtb2RlPjNfY2VpbCIKICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkRRX0JIU0kg MCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JKHVuc3BlYzpWRFFfQkhTSSBbKG1hdGNoX29wZXJhbmQ6 VkRRX0JIU0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIpCi0JCQkgIChtYXRjaF9vcGVyYW5kOlZEUV9C SFNJIDIgInJlZ2lzdGVyX29wZXJhbmQiKV0KLQkJCSBSSEFERCkpXQorCSh0cnVuY2F0ZTpWRFFf QkhTSQorCSAgKGFzaGlmdHJ0OjxWMlhXSURFPgorCSAgICAocGx1czo8VjJYV0lERT4KKwkgICAg ICAocGx1czo8VjJYV0lERT4KKwkJKEFOWV9FWFRFTkQ6PFYyWFdJREU+CisJCSAgKG1hdGNoX29w ZXJhbmQ6VkRRX0JIU0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIpKQorCQkoQU5ZX0VYVEVORDo8VjJY V0lERT4KKwkJICAobWF0Y2hfb3BlcmFuZDpWRFFfQkhTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIikp KQorCSAgICAgICAobWF0Y2hfZHVwIDMpKQorCSAgICAobWF0Y2hfZHVwIDMpKSkpXQogICAiVEFS R0VUX1NJTUQiCisgIHsKKyAgICBvcGVyYW5kc1szXSA9IENPTlNUMV9SVFggKDxWMlhXSURFPm1v ZGUpOworICB9CiApCiAKLShkZWZpbmVfaW5zbiAiYWFyY2g2NF88c3VyPmg8YWRkc3ViPjxtb2Rl Pjx2Y3psZT48dmN6YmU+IgorKGRlZmluZV9leHBhbmQgImFhcmNoNjRfPHN1PmhzdWI8bW9kZT4i CisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZEUV9CSFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiKQor CSh0cnVuY2F0ZTpWRFFfQkhTSQorCSAgKGFzaGlmdHJ0OjxWMlhXSURFPgorCSAgICAobWludXM6 PFYyWFdJREU+CisJICAgICAgKEFOWV9FWFRFTkQ6PFYyWFdJREU+CisJCShtYXRjaF9vcGVyYW5k OlZEUV9CSFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiKSkKKwkgICAgICAoQU5ZX0VYVEVORDo8VjJY V0lERT4KKwkJKG1hdGNoX29wZXJhbmQ6VkRRX0JIU0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIpKSkK KwkgICAgKG1hdGNoX2R1cCAzKSkpKV0KKyAgIlRBUkdFVF9TSU1EIgorICB7CisgICAgb3BlcmFu ZHNbM10gPSBDT05TVDFfUlRYICg8VjJYV0lERT5tb2RlKTsKKyAgfQorKQorCisoZGVmaW5lX2lu c24gIiphYXJjaDY0XzxzdT5oPEFERFNVQjpvcHRhYj48bW9kZT48dmN6bGU+PHZjemJlPl9pbnNu IgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRFFfQkhTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXciKQotICAgICAgICAodW5zcGVjOlZEUV9CSFNJIFsobWF0Y2hfb3BlcmFuZDpWRFFfQkhTSSAx ICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpCi0JCSAgICAgIChtYXRjaF9vcGVyYW5kOlZEUV9CSFNJ IDIgInJlZ2lzdGVyX29wZXJhbmQiICJ3IildCi0JCSAgICAgSEFERFNVQikpXQorCSh0cnVuY2F0 ZTpWRFFfQkhTSQorCSAgKGFzaGlmdHJ0OjxWMlhXSURFPgorCSAgICAoQUREU1VCOjxWMlhXSURF PgorCSAgICAgIChBTllfRVhURU5EOjxWMlhXSURFPgorCQkobWF0Y2hfb3BlcmFuZDpWRFFfQkhT SSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKQorCSAgICAgIChBTllfRVhURU5EOjxWMlhXSURF PgorCQkobWF0Y2hfb3BlcmFuZDpWRFFfQkhTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKSkK KwkgICAgKG1hdGNoX29wZXJhbmQ6PFYyWFdJREU+IDMgImFhcmNoNjRfc2ltZF9pbW1fb25lIikp KSldCiAgICJUQVJHRVRfU0lNRCIKLSAgIjxzdXI+aDxhZGRzdWI+XFx0JTAuPFZ0eXBlPiwgJTEu PFZ0eXBlPiwgJTIuPFZ0eXBlPiIKLSAgWyhzZXRfYXR0ciAidHlwZSIgIm5lb25fPGFkZHN1Yj5f aGFsdmU8cT4iKV0KKyAgIjxzdT5oPEFERFNVQjpvcHRhYj5cXHQlMC48VnR5cGU+LCAlMS48VnR5 cGU+LCAlMi48VnR5cGU+IgorICBbKHNldF9hdHRyICJ0eXBlIiAibmVvbl88QUREU1VCOm9wdGFi Pl9oYWx2ZTxxPiIpXQorKQorCisoZGVmaW5lX2luc24gIiphYXJjaDY0XzxzdT5yaGFkZDxtb2Rl Pjx2Y3psZT48dmN6YmU+X2luc24iCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZEUV9CSFNJIDAg InJlZ2lzdGVyX29wZXJhbmQiICI9dyIpCisJKHRydW5jYXRlOlZEUV9CSFNJCisJICAoYXNoaWZ0 cnQ6PFYyWFdJREU+CisJICAgIChwbHVzOjxWMlhXSURFPgorCSAgICAgIChwbHVzOjxWMlhXSURF PgorCQkoQU5ZX0VYVEVORDo8VjJYV0lERT4KKwkJICAobWF0Y2hfb3BlcmFuZDpWRFFfQkhTSSAx ICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKQorCQkoQU5ZX0VYVEVORDo8VjJYV0lERT4KKwkJICAo bWF0Y2hfb3BlcmFuZDpWRFFfQkhTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKSkKKwkgICAg ICAgKG1hdGNoX29wZXJhbmQ6PFYyWFdJREU+IDMgImFhcmNoNjRfc2ltZF9pbW1fb25lIikpCisJ ICAgIChtYXRjaF9kdXAgMykpKSldCisgICJUQVJHRVRfU0lNRCIKKyAgIjxzdT5yaGFkZFxcdCUw LjxWdHlwZT4sICUxLjxWdHlwZT4sICUyLjxWdHlwZT4iCisgIFsoc2V0X2F0dHIgInR5cGUiICJu ZW9uX2FkZF9oYWx2ZTxxPiIpXQogKQogCiA7OyA8cj48YWRkc3ViPmhuPHE+Lgo= --_002_PAXPR08MB69262AE6D8EFA265E0F4547B934B9PAXPR08MB6926eurp_--