From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80054.outbound.protection.outlook.com [40.107.8.54]) by sourceware.org (Postfix) with ESMTPS id 9230C3857424 for ; Tue, 12 Oct 2021 16:18:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9230C3857424 Received: from DU2PR04CA0255.eurprd04.prod.outlook.com (2603:10a6:10:28e::20) by VI1PR08MB5502.eurprd08.prod.outlook.com (2603:10a6:803:12f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.18; Tue, 12 Oct 2021 16:18:22 +0000 Received: from DB5EUR03FT037.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:28e:cafe::43) by DU2PR04CA0255.outlook.office365.com (2603:10a6:10:28e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.25 via Frontend Transport; Tue, 12 Oct 2021 16:18:22 +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 DB5EUR03FT037.mail.protection.outlook.com (10.152.20.215) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.18 via Frontend Transport; Tue, 12 Oct 2021 16:18:21 +0000 Received: ("Tessian outbound b9598e0ead92:v103"); Tue, 12 Oct 2021 16:18:21 +0000 X-CR-MTA-TID: 64aa7808 Received: from 8ab586b1c01d.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id ED956B78-DD04-4477-8C25-C51FCFA5E132.1; Tue, 12 Oct 2021 16:18:16 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 8ab586b1c01d.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 12 Oct 2021 16:18:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j3a38fA3H4cgeg4lZtf/CXWWBTpdBQALUB8ATHgRZKXXILldlFCKiX4gPoQWQYZwme0SnCJMsn+BpjFue3eQYZzDXlCGdToZrZsXuaa+mbt4A547MnDDs6Y7/5+Kk2ZQJZ0m//AC9bYMkdRoU/XKJ4y1tYZsGSfSgjoJw6LrHZBTWHdTxKQfg37X+6IsgVXVEbTZc/BcYLJt89klNVo27qTH7zl3O7DUJV04f0rQ7EDr2tWkTsDttmQlumfotcG15238Jsf66zKeh7Gw4UAp78ZE18uKR7vNWCx2KH3FecOf7J8HvLk27R3DR6ftjwqVG8GUVylC3xxTHYs7a+UWfA== 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=zBlpT9OJWcvLOEwSFxlhdGYeCg7DcAFk2eCvxbb8iG0=; b=Upzc6W+bHel6RL9+6NojpP0MiX8EB5YecN0A+yzK9p381CVGtchjVYXyaDPpBCBKUWrTZ1yHYKX8LFWNvb6o9G0zUBM6JEQhwz6eVDnZxYrvP3h2lXxJ7Mf1i8iz4Av3vdej2ZxH20HUv6aAfkejrPTLezPDwL5qXfQQVKdUyPVTwLP39NS/3X6GdDYRYp+DmnFdcohgP89+Uy13mpJ4B2g6EMsq8+vLZltdyaQGPZeHrR8lNPvui2jUdLcgmwwAfVmV7mrLg77oJj7OgzdqSix4IpWCve0UXLL3kVXKbU8K7gJ/QW65w53DGJV/2BwMPJp0Vqv1jldfVOn+ukfxBA== 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 VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR0801MB1680.eurprd08.prod.outlook.com (2603:10a6:800:5a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.25; Tue, 12 Oct 2021 16:18:14 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd45:5ad5:f666:272a]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd45:5ad5:f666:272a%4]) with mapi id 15.20.4587.026; Tue, 12 Oct 2021 16:18:14 +0000 From: Tamar Christina To: Richard Sandiford , Kyrylo Tkachov CC: "gcc-patches@gcc.gnu.org" , nd , Richard Earnshaw , Marcus Shawcroft Subject: RE: [PATCH 1/7]AArch64 Add combine patterns for right shift and narrow Thread-Topic: [PATCH 1/7]AArch64 Add combine patterns for right shift and narrow Thread-Index: AQHXtU3DS4IDe4zhCUehuxog5Dq8Bau8RbOAgAnNz3aACYrWYA== Date: Tue, 12 Oct 2021 16:18:14 +0000 Message-ID: References: <20210929161920.GA26634@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 4EF440B688ABF749AD54B184097A6DD0.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: ed924481-6800-45e7-bf96-08d98d9be915 x-ms-traffictypediagnostic: VI1PR0801MB1680:|VI1PR08MB5502: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:660;OLM:660; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: cWXBnaooKwR/G8F/wraqdxfN0eTVMUESXdRK0+5ZKG/zf8DIAqQd0+MNWZH84Kq5eN0oVLo65pbUWM2MRjdoyLBtz7Y7qhZx3/vzpmIrEW9EM6ezCnwzdwitDEaEMInB7hIuIXQryu/hvxdHNz2gjBDZmBXpKyv/aPdGCtqOcghEWL8va+C/F22nYOp1IfhDD37X1sEmiZBaq0mKjzsp/lh2De8BJmi+c++S5rhuItBw4NfIUl1VdefTm+khddd+THiNp7vBxAd/Wwu8fCNpcGBXV7AbA6KptpJCxl3JLxMKahZ8bwKrFmtzop2PzdQ8yisaHk609Qc8PJQKjQBc2NdRlnwTMcEW4W3pXjlExwi7nDonWzbY1Mk/KQLtfXXnamcTD7kdtGEpw+fJxlixVmMS4pyKu742o+ECVCpqq73U2M0o9RVfqZnSKlouloWd8/0/I1Tq28Dz4WmkZEiXFZWaSFCWIVp9ueoWHVdOJSJJoW7EbqcAILLCXfmrHplNl3h/US35ak/SZM2LP7Zg9EQb4kHnPnXgWs8SJuI2S0YJGLO0dK+d+KUfDXmzag0h3nHIs34cf5rLpurBodl5a2Y7zlBewCicsKpseJSWT0FzqAdpGHjdAHExHrOrl/PQVLFRFNtQg1wjyONssffqEmQlo1pMt2uQKZjz7gB+t4eh5bYtXCVMPNErfaBkhQgOKIYjF/3lWoCxj7bKJFL7HP0lpjm9Ce7qp1AZ58hL3mRBr8CN6KmHXWGrmfU+pxAw8MW1zP1j151mw7q3RXNDr205CYbdE4jXLSFyiYwRr+garY4WzjtfWMfoI1CgeZLA31j6BSvD/arW7G+HISPQlQ== 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:(4636009)(366004)(76116006)(66446008)(66556008)(64756008)(9686003)(66476007)(2906002)(55016002)(38070700005)(38100700002)(122000001)(71200400001)(66946007)(8676002)(54906003)(7696005)(110136005)(8936002)(33656002)(86362001)(6506007)(316002)(26005)(186003)(6636002)(52536014)(508600001)(5660300002)(99936003)(4326008); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB532516D75431C3F9BA6DA6B7FFB69VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1680 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT037.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 05a7f1b0-56d2-416c-4cb1-08d98d9be4c4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: l3/DcN+aH5YjqoFUB+NT3AEyo8d1x82T7CPKNfV78UXSvhkRq5sBQhZBAP2nBb1TIbjC8rTKoObJUt/ZTkLFOZAo1LuUylUloa9UKmZaoKta3veMTZJ063ES/zokjFxYbXAqdBuGKrmssky0oep5K5vlhzQ2FDUHPz1xxWY1AIjodxtUqikeGBWyHadLPZ2g0hPK+7leMGsti2XTbl7GtRRQpxTFT0eAhaFtgMaRs0fj8Coz1PZe+GWaTWABbLr4uq8RAAjGuRgV3MhaCXn3+L/mFtE2eH4D2sY0pNjS+hTcJ25wh1ZfWyiSiDJxK2hUjCrEB3Gj7g1/y7Cz7/5ifa4io6L+7ymA1Oa+Z7xuiFon1WkQIGzQLac7ivLV6dfoIIGjRsxjU4W7NYvW5gyeGn6YarFoOrOENh6vyKuJOGbKaZI9YR836zvTx4FcDzgpYo0GFcTsr2gKKY6sTF0bNLY0yTlHv+VrxEGnM5brI66iP9UhLPFDNc2yfLrQY4yZzJgBglTh0zZsUaGhhxhWAJZPnvJ33ZL3J5xrep4ocvlDdW7O+9lInHRDy5JxLDLCCWEVmzLUr1l9HXN4tlnjhgfxHwzMYUPCCYpdR1BL4lBhLG9t9BFHa3esLVT766TyrTAZ+AsAXbC+LSa5Yyx66Vy3bILP90NPe4YG2uKaCVLj5fvVVA5rznFACWxaNmCbN3TQpQAAS1jDBj9ycgFptmF3ZDTSw1oSxo1ZuI1KJEEJ+e+Q+w9XMuKNoyP9JReXI41kezqud7nDlJFQMCo3IzTj+mf6rIKeEm9hAwhXP5aW6ujo7Y2pTfiDF9i3ssiWqF/5LECEVq7Ai3m/xXeARg== 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)(46966006)(36840700001)(54906003)(6636002)(36860700001)(6506007)(336012)(70586007)(8936002)(81166007)(26005)(70206006)(7696005)(356005)(33656002)(9686003)(508600001)(52536014)(55016002)(110136005)(4326008)(186003)(5660300002)(8676002)(316002)(99936003)(47076005)(235185007)(86362001)(2906002)(82310400003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2021 16:18:21.9519 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ed924481-6800-45e7-bf96-08d98d9be915 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: DB5EUR03FT037.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5502 X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, 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: Tue, 12 Oct 2021 16:18:29 -0000 --_002_VI1PR08MB532516D75431C3F9BA6DA6B7FFB69VI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi All, Here's a new version with big-endian support and more tests > > > > I think this needs to be guarded on !BYTES_BIG_ENDIAN and a similar > pattern added for BYTES_BIG_ENDIAN with the vec_concat operands > swapped around. > > This is similar to the aarch64_xtn2_insn_be pattern, for example. >=20 > Yeah. I think that applies to 2/7 and 4/7 too. >=20 Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: * config/aarch64/aarch64-simd.md (*aarch64_shrn_vect, *aarch64_shrn2_vect_le, *aarch64_shrn2_vect_be): New. * config/aarch64/iterators.md (srn_op): New. gcc/testsuite/ChangeLog: * gcc.target/aarch64/shrn-combine-1.c: New test. * gcc.target/aarch64/shrn-combine-2.c: New test. * gcc.target/aarch64/shrn-combine-3.c: New test. * gcc.target/aarch64/shrn-combine-4.c: New test. --- inline copy of patch --- diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch6= 4-simd.md index 48eddf64e05afe3788abfa05141f6544a9323ea1..5715db4e1e1386e724e4d4defd5= e5ed9efd8a874 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -1818,6 +1818,40 @@ (define_insn "aarch64_shrn_insn_be" [(set_attr "type" "neon_shift_imm_narrow_q")] ) =20 +(define_insn "*aarch64_shrn_vect" + [(set (match_operand: 0 "register_operand" "=3Dw") + (truncate: + (SHIFTRT:VQN (match_operand:VQN 1 "register_operand" "w") + (match_operand:VQN 2 "aarch64_simd_shift_imm_vec_")))= )] + "TARGET_SIMD" + "shrn\\t%0., %1., %2" + [(set_attr "type" "neon_shift_imm_narrow_q")] +) + +(define_insn "*aarch64_shrn2_vect_le" + [(set (match_operand: 0 "register_operand" "=3Dw") + (vec_concat: + (match_operand: 1 "register_operand" "0") + (truncate: + (SHIFTRT:VQN (match_operand:VQN 2 "register_operand" "w") + (match_operand:VQN 3 "aarch64_simd_shift_imm_vec_")))))] + "TARGET_SIMD && !BYTES_BIG_ENDIAN" + "shrn2\\t%0., %2., %3" + [(set_attr "type" "neon_shift_imm_narrow_q")] +) + +(define_insn "*aarch64_shrn2_vect_be" + [(set (match_operand: 0 "register_operand" "=3Dw") + (vec_concat: + (truncate: + (SHIFTRT:VQN (match_operand:VQN 2 "register_operand" "w") + (match_operand:VQN 3 "aarch64_simd_shift_imm_vec_"))) + (match_operand: 1 "register_operand" "0")))] + "TARGET_SIMD && BYTES_BIG_ENDIAN" + "shrn2\\t%0., %2., %3" + [(set_attr "type" "neon_shift_imm_narrow_q")] +) + (define_expand "aarch64_shrn" [(set (match_operand: 0 "register_operand") (truncate: diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators= .md index caa42f8f169fbf2cf46a90cf73dee05619acc300..8dbeed3b0d4a44cdc17dd333ed3= 97b39a33f386a 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -2003,6 +2003,9 @@ (define_code_attr shift [(ashift "lsl") (ashiftrt "as= r") ;; Op prefix for shift right and accumulate. (define_code_attr sra_op [(ashiftrt "s") (lshiftrt "u")]) =20 +;; op prefix for shift right and narrow. +(define_code_attr srn_op [(ashiftrt "r") (lshiftrt "")]) + ;; Map shift operators onto underlying bit-field instructions (define_code_attr bfshift [(ashift "ubfiz") (ashiftrt "sbfx") (lshiftrt "ubfx") (rotatert "extr")]) diff --git a/gcc/testsuite/gcc.target/aarch64/shrn-combine-1.c b/gcc/testsu= ite/gcc.target/aarch64/shrn-combine-1.c new file mode 100644 index 0000000000000000000000000000000000000000..a28524662edca8eb149e34c2242= 091b51a167b71 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/shrn-combine-1.c @@ -0,0 +1,13 @@ +/* { dg-do assemble } */ +/* { dg-options "-O3 --save-temps --param=3Dvect-epilogues-nomask=3D0" } *= / + +#define TYPE char + +void foo (unsigned TYPE * restrict a, TYPE * restrict d, int n) +{ + for( int i =3D 0; i < n; i++ ) + d[i] =3D (a[i] * a[i]) >> 2; +} + +/* { dg-final { scan-assembler-times {\tshrn\t} 1 } } */ +/* { dg-final { scan-assembler-times {\tshrn2\t} 1 } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/shrn-combine-2.c b/gcc/testsu= ite/gcc.target/aarch64/shrn-combine-2.c new file mode 100644 index 0000000000000000000000000000000000000000..012135b424f98abadc480e7ef13= fcab080d99c28 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/shrn-combine-2.c @@ -0,0 +1,13 @@ +/* { dg-do assemble } */ +/* { dg-options "-O3 --save-temps --param=3Dvect-epilogues-nomask=3D0" } *= / + +#define TYPE short + +void foo (unsigned TYPE * restrict a, TYPE * restrict d, int n) +{ + for( int i =3D 0; i < n; i++ ) + d[i] =3D (a[i] * a[i]) >> 2; +} + +/* { dg-final { scan-assembler-times {\tshrn\t} 1 } } */ +/* { dg-final { scan-assembler-times {\tshrn2\t} 1 } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/shrn-combine-3.c b/gcc/testsu= ite/gcc.target/aarch64/shrn-combine-3.c new file mode 100644 index 0000000000000000000000000000000000000000..8b5b360de623b0ada0da1531795= ba6b428c7f9e1 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/shrn-combine-3.c @@ -0,0 +1,13 @@ +/* { dg-do assemble } */ +/* { dg-options "-O3 --save-temps --param=3Dvect-epilogues-nomask=3D0" } *= / + +#define TYPE int + +void foo (unsigned long long * restrict a, TYPE * restrict d, int n) +{ + for( int i =3D 0; i < n; i++ ) + d[i] =3D a[i] >> 3; +} + +/* { dg-final { scan-assembler-times {\tshrn\t} 1 } } */ +/* { dg-final { scan-assembler-times {\tshrn2\t} 1 } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/shrn-combine-4.c b/gcc/testsu= ite/gcc.target/aarch64/shrn-combine-4.c new file mode 100644 index 0000000000000000000000000000000000000000..fedca7621e2a82df0df9d12b91c= 5c0c9fd3dfc60 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/shrn-combine-4.c @@ -0,0 +1,13 @@ +/* { dg-do assemble } */ +/* { dg-options "-O3 --save-temps --param=3Dvect-epilogues-nomask=3D0" } *= / + +#define TYPE long long + +void foo (unsigned TYPE * restrict a, TYPE * restrict d, int n) +{ + for( int i =3D 0; i < n; i++ ) + d[i] =3D (a[i] * a[i]) >> 2; +} + +/* { dg-final { scan-assembler-not {\tshrn\t} } } */ +/* { dg-final { scan-assembler-not {\tshrn2\t} } } */ --_002_VI1PR08MB532516D75431C3F9BA6DA6B7FFB69VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb14892.patch" Content-Description: rb14892.patch Content-Disposition: attachment; filename="rb14892.patch"; size=5358; creation-date="Tue, 12 Oct 2021 16:18:09 GMT"; modification-date="Tue, 12 Oct 2021 16:14:39 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kCmluZGV4IDQ4ZWRkZjY0ZTA1YWZlMzc4OGFiZmEw NTE0MWY2NTQ0YTkzMjNlYTEuLjU3MTVkYjRlMWUxMzg2ZTcyNGU0ZDRkZWZkNWU1ZWQ5ZWZkOGE4 NzQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQKKysrIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZApAQCAtMTgxOCw2ICsxODE4LDQwIEBA IChkZWZpbmVfaW5zbiAiYWFyY2g2NF9zaHJuPG1vZGU+X2luc25fYmUiCiAgIFsoc2V0X2F0dHIg InR5cGUiICJuZW9uX3NoaWZ0X2ltbV9uYXJyb3dfcSIpXQogKQogCisoZGVmaW5lX2luc24gIiph YXJjaDY0Xzxzcm5fb3A+c2hybjxtb2RlPl92ZWN0IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8 Vk5BUlJPV1E+IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9dyIpCisgICAgICAgICh0cnVuY2F0ZTo8 Vk5BUlJPV1E+CisgICAgICAgICAgKFNISUZUUlQ6VlFOIChtYXRjaF9vcGVyYW5kOlZRTiAxICJy ZWdpc3Rlcl9vcGVyYW5kIiAidyIpCisgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWUU4gMiAi YWFyY2g2NF9zaW1kX3NoaWZ0X2ltbV92ZWNfPHZuX21vZGU+IikpKSldCisgICJUQVJHRVRfU0lN RCIKKyAgInNocm5cXHQlMC48Vm50eXBlPiwgJTEuPFZ0eXBlPiwgJTIiCisgIFsoc2V0X2F0dHIg InR5cGUiICJuZW9uX3NoaWZ0X2ltbV9uYXJyb3dfcSIpXQorKQorCisoZGVmaW5lX2luc24gIiph YXJjaDY0Xzxzcm5fb3A+c2hybjxtb2RlPjJfdmVjdF9sZSIKKyAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6PFZOQVJST1dRMj4gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13IikKKwkodmVjX2NvbmNhdDo8 Vk5BUlJPV1EyPgorCSAgKG1hdGNoX29wZXJhbmQ6PFZOQVJST1dRPiAxICJyZWdpc3Rlcl9vcGVy YW5kIiAiMCIpCisJICAodHJ1bmNhdGU6PFZOQVJST1dRPgorCSAgICAoU0hJRlRSVDpWUU4gKG1h dGNoX29wZXJhbmQ6VlFOIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ3IikKKwkgICAgICAobWF0Y2hf b3BlcmFuZDpWUU4gMyAiYWFyY2g2NF9zaW1kX3NoaWZ0X2ltbV92ZWNfPHZuX21vZGU+IikpKSkp XQorICAiVEFSR0VUX1NJTUQgJiYgIUJZVEVTX0JJR19FTkRJQU4iCisgICJzaHJuMlxcdCUwLjxW Mm50eXBlPiwgJTIuPFZ0eXBlPiwgJTMiCisgIFsoc2V0X2F0dHIgInR5cGUiICJuZW9uX3NoaWZ0 X2ltbV9uYXJyb3dfcSIpXQorKQorCisoZGVmaW5lX2luc24gIiphYXJjaDY0Xzxzcm5fb3A+c2hy bjxtb2RlPjJfdmVjdF9iZSIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZOQVJST1dRMj4gMCAi cmVnaXN0ZXJfb3BlcmFuZCIgIj13IikKKwkodmVjX2NvbmNhdDo8Vk5BUlJPV1EyPgorCSAgKHRy dW5jYXRlOjxWTkFSUk9XUT4KKwkgICAgKFNISUZUUlQ6VlFOIChtYXRjaF9vcGVyYW5kOlZRTiAy ICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpCisJICAgICAgKG1hdGNoX29wZXJhbmQ6VlFOIDMgImFh cmNoNjRfc2ltZF9zaGlmdF9pbW1fdmVjXzx2bl9tb2RlPiIpKSkKKwkgIChtYXRjaF9vcGVyYW5k OjxWTkFSUk9XUT4gMSAicmVnaXN0ZXJfb3BlcmFuZCIgIjAiKSkpXQorICAiVEFSR0VUX1NJTUQg JiYgQllURVNfQklHX0VORElBTiIKKyAgInNocm4yXFx0JTAuPFYybnR5cGU+LCAlMi48VnR5cGU+ LCAlMyIKKyAgWyhzZXRfYXR0ciAidHlwZSIgIm5lb25fc2hpZnRfaW1tX25hcnJvd19xIildCisp CisKIChkZWZpbmVfZXhwYW5kICJhYXJjaDY0X3Nocm48bW9kZT4iCiAgIFsoc2V0IChtYXRjaF9v cGVyYW5kOjxWTkFSUk9XUT4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpCiAJKHRydW5jYXRlOjxWTkFS Uk9XUT4KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvaXRlcmF0b3JzLm1kCmluZGV4IGNhYTQyZjhmMTY5ZmJmMmNmNDZhOTBj ZjczZGVlMDU2MTlhY2MzMDAuLjhkYmVlZDNiMGQ0YTQ0Y2RjMTdkZDMzM2VkMzk3YjM5YTMzZjM4 NmEgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9pdGVyYXRvcnMubWQKKysrIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2l0ZXJhdG9ycy5tZApAQCAtMjAwMyw2ICsyMDAzLDkgQEAgKGRlZmlu ZV9jb2RlX2F0dHIgc2hpZnQgWyhhc2hpZnQgImxzbCIpIChhc2hpZnRydCAiYXNyIikKIDs7IE9w IHByZWZpeCBmb3Igc2hpZnQgcmlnaHQgYW5kIGFjY3VtdWxhdGUuCiAoZGVmaW5lX2NvZGVfYXR0 ciBzcmFfb3AgWyhhc2hpZnRydCAicyIpIChsc2hpZnRydCAidSIpXSkKIAorOzsgb3AgcHJlZml4 IGZvciBzaGlmdCByaWdodCBhbmQgbmFycm93LgorKGRlZmluZV9jb2RlX2F0dHIgc3JuX29wIFso YXNoaWZ0cnQgInIiKSAobHNoaWZ0cnQgIiIpXSkKKwogOzsgTWFwIHNoaWZ0IG9wZXJhdG9ycyBv bnRvIHVuZGVybHlpbmcgYml0LWZpZWxkIGluc3RydWN0aW9ucwogKGRlZmluZV9jb2RlX2F0dHIg YmZzaGlmdCBbKGFzaGlmdCAidWJmaXoiKSAoYXNoaWZ0cnQgInNiZngiKQogCQkJICAgKGxzaGlm dHJ0ICJ1YmZ4IikgKHJvdGF0ZXJ0ICJleHRyIildKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc2hybi1jb21iaW5lLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L3Nocm4tY29tYmluZS0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI4NTI0NjYyZWRj YThlYjE0OWUzNGMyMjQyMDkxYjUxYTE2N2I3MQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3Nocm4tY29tYmluZS0xLmMKQEAgLTAsMCArMSwxMyBA QAorLyogeyBkZy1kbyBhc3NlbWJsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMyAtLXNhdmUt dGVtcHMgLS1wYXJhbT12ZWN0LWVwaWxvZ3Vlcy1ub21hc2s9MCIgfSAqLworCisjZGVmaW5lIFRZ UEUgY2hhcgorCit2b2lkIGZvbyAodW5zaWduZWQgVFlQRSAqIHJlc3RyaWN0IGEsIFRZUEUgKiBy ZXN0cmljdCBkLCBpbnQgbikKK3sKKyAgICBmb3IoIGludCBpID0gMDsgaSA8IG47IGkrKyApCisg ICAgICBkW2ldID0gKGFbaV0gKiBhW2ldKSA+PiAyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge1x0c2hyblx0fSAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzIHtcdHNocm4yXHR9IDEgfSB9ICovCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zaHJuLWNvbWJpbmUtMi5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc2hybi1jb21iaW5lLTIuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTIx MzViNDI0Zjk4YWJhZGM0ODBlN2VmMTNmY2FiMDgwZDk5YzI4Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc2hybi1jb21iaW5lLTIuYwpAQCAtMCww ICsxLDEzIEBACisvKiB7IGRnLWRvIGFzc2VtYmxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8z IC0tc2F2ZS10ZW1wcyAtLXBhcmFtPXZlY3QtZXBpbG9ndWVzLW5vbWFzaz0wIiB9ICovCisKKyNk ZWZpbmUgVFlQRSBzaG9ydAorCit2b2lkIGZvbyAodW5zaWduZWQgVFlQRSAqIHJlc3RyaWN0IGEs IFRZUEUgKiByZXN0cmljdCBkLCBpbnQgbikKK3sKKyAgICBmb3IoIGludCBpID0gMDsgaSA8IG47 IGkrKyApCisgICAgICBkW2ldID0gKGFbaV0gKiBhW2ldKSA+PiAyOworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0c2hyblx0fSAxIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHNocm4yXHR9IDEgfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zaHJuLWNvbWJpbmUtMy5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc2hybi1jb21iaW5lLTMuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi44YjViMzYwZGU2MjNiMGFkYTBkYTE1MzE3OTViYTZiNDI4YzdmOWUxCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc2hybi1jb21iaW5lLTMu YwpAQCAtMCwwICsxLDEzIEBACisvKiB7IGRnLWRvIGFzc2VtYmxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLU8zIC0tc2F2ZS10ZW1wcyAtLXBhcmFtPXZlY3QtZXBpbG9ndWVzLW5vbWFzaz0wIiB9 ICovCisKKyNkZWZpbmUgVFlQRSBpbnQKKwordm9pZCBmb28gKHVuc2lnbmVkIGxvbmcgbG9uZyAq IHJlc3RyaWN0IGEsIFRZUEUgKiByZXN0cmljdCBkLCBpbnQgbikKK3sKKyAgICBmb3IoIGludCBp ID0gMDsgaSA8IG47IGkrKyApCisgICAgICBkW2ldID0gYVtpXSA+PiAzOworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0c2hyblx0fSAxIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHNocm4yXHR9IDEgfSB9ICovCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zaHJuLWNvbWJpbmUtNC5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc2hybi1jb21iaW5lLTQuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi5mZWRjYTc2MjFlMmE4MmRmMGRmOWQxMmI5MWM1YzBjOWZkM2RmYzYwCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc2hybi1jb21iaW5l LTQuYwpAQCAtMCwwICsxLDEzIEBACisvKiB7IGRnLWRvIGFzc2VtYmxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8zIC0tc2F2ZS10ZW1wcyAtLXBhcmFtPXZlY3QtZXBpbG9ndWVzLW5vbWFzaz0w IiB9ICovCisKKyNkZWZpbmUgVFlQRSBsb25nIGxvbmcKKwordm9pZCBmb28gKHVuc2lnbmVkIFRZ UEUgKiByZXN0cmljdCBhLCBUWVBFICogcmVzdHJpY3QgZCwgaW50IG4pCit7CisgICAgZm9yKCBp bnQgaSA9IDA7IGkgPCBuOyBpKysgKQorICAgICAgZFtpXSA9IChhW2ldICogYVtpXSkgPj4gMjsK K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHRzaHJuXHR9IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHRzaHJuMlx0fSB9IH0gKi8K --_002_VI1PR08MB532516D75431C3F9BA6DA6B7FFB69VI1PR08MB5325eurp_--