From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00066.outbound.protection.outlook.com [40.107.0.66]) by sourceware.org (Postfix) with ESMTPS id 2C6E13857C66 for ; Mon, 14 Jun 2021 12:09:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2C6E13857C66 Received: from AM5PR0301CA0018.eurprd03.prod.outlook.com (2603:10a6:206:14::31) by DB6PR0802MB2199.eurprd08.prod.outlook.com (2603:10a6:4:82::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.23; Mon, 14 Jun 2021 12:09:17 +0000 Received: from AM5EUR03FT050.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:14:cafe::3f) by AM5PR0301CA0018.outlook.office365.com (2603:10a6:206:14::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Mon, 14 Jun 2021 12:09:17 +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 AM5EUR03FT050.mail.protection.outlook.com (10.152.17.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Mon, 14 Jun 2021 12:09:16 +0000 Received: ("Tessian outbound d5fe3fdc5a40:v93"); Mon, 14 Jun 2021 12:09:16 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: dc0e6f7d11ea5918 X-CR-MTA-TID: 64aa7808 Received: from dabcdb0d950b.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id A28222E5-9904-48EA-855B-D714B4F7868D.1; Mon, 14 Jun 2021 12:08:37 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id dabcdb0d950b.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 14 Jun 2021 12:08:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VbG9WTGNVu7ZexXdlJB62nLVQpurtbGEzf87rtPxGii2foxbJLeiBL/2wRuD7IEOgHodswFtOyO+S9bohQJPeO0xNPoXET2ReDBSJbDXYSg+hdzbfNk5wZZdmzorl4yBO/GRkyo8oENDzC12MS4GRx8bbCxXD+XdT01FJE2Or08mfms5OsjXCkL2oFgS5JpgMACCPG7BK43jl/wNzaTYLDZKq6tCdq5I0ilXTK3hvu+OeChZwmytX8NktQdV9SU0SEbktbYCfuPGx1/eKqhahtUFIkTHfaqHCZGjn83ETZvoEg+91wBtg9nrS5Ip1RqnpT5TsDx2YwErDqBtWLIDQw== 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=bandkPpM1GfQjilrJbVc5RbTnZMyTYVuTkQ9LAxwCv8=; b=YyDM+FWmgeTSLAuVSlx74gkyCx3Pw2JwtdJ3JvialgDugAedaIuHiTyb/QragbkTtTB+l95pwy4/ZgmgOgJHu+aOagcxquNWp5gGDGPUnH27E1lOylg333OvARnPmY4TGip00fMqmEazEGoG5JqG4vPcbq9bKOeCoh8n5Lf+5Mpf3h7v9LnL+Xa/oRtXDHzLSPkNp4pYS/clttDuoe4lbaPFHGVW/2T5h/cJjA4H9ecRzQKy6PTzOUiOuqVHaoVosFuVYdM+mtimFEhJW+F2RfF3qh3Wqm7ZBvH76pAisli2D/oB0iVFRea1E+DPvqtwsXoPaAEnGw/dJMdmo5jekg== 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 VI1PR08MB4382.eurprd08.prod.outlook.com (2603:10a6:803:f5::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20; Mon, 14 Jun 2021 12:08:34 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::69b2:ae3a:1d7b:5e3c]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::69b2:ae3a:1d7b:5e3c%7]) with mapi id 15.20.4219.025; Mon, 14 Jun 2021 12:08:34 +0000 From: Tamar Christina To: Richard Biener CC: nd , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH 4/4]middle-end: Add tests middle end generic tests for sign differing dotproduct. Thread-Topic: [PATCH 4/4]middle-end: Add tests middle end generic tests for sign differing dotproduct. Thread-Index: AQHXQdWl2GMA01eht0ml/Iq9yRCX9qr0eRuAgAEY2wCAHhYZUA== Date: Mon, 14 Jun 2021 12:08:34 +0000 Message-ID: References: <20210505173947.GA24190@arm.com> <11s2181-8856-30rq-26or-84q8o7qrr2o@fhfr.qr> In-Reply-To: <11s2181-8856-30rq-26or-84q8o7qrr2o@fhfr.qr> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: BCD76AA50325CB41B5C8555094F3B907.0 x-checkrecipientchecked: true Authentication-Results-Original: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.11.185.166] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: a81ff237-e031-4cb9-4df4-08d92f2d3b7b x-ms-traffictypediagnostic: VI1PR08MB4382:|DB6PR0802MB2199: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:6790;OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ulJym178mY2ZnzPn4zzp6Llx6vCx/BjqQGFTDKI6gHodIzJEuVZXPjT/YaTLcxSvw8vbwld+3rGU8ozQVbKio8LeKCESra5BuPQE9uKiTH+psc8MJhERcOZTN7Pu+qadsuS+h6QH3GgG/kGoEZBTTvg3/U9VuTCjEK+LXPl6VutIAIr3U+uS1qvuoDYRW2xUlB/i4BLgSG9dd0Q2QzromdIvNYUm6NXx58Nioz+zqZSM54br90vrlB5BRJ2Mag2BO2lsWLyBkb9La0vk7iC2opvZ9H2mxaXMVw2L+/uwet4TvOfqcjBaAsNhCizRfuovYfOqd+I6DcfHQjyVughb1ZIO/Spzu15L7Vow5g4e8b04N1lUu2w7Qr5pe8xuuOLWp4hQfwUhd5BIW6Co3NebPe2keGaJH42zvyP7zucSowifzzAPn0S8cYieWQgjq5DEYMFV6j6fse8meqOLqKv5f1hzcu087i+Xnd7Y8CvZhVZdMg4x4xIWGnqbMS52ztn/hxAhRWZOd7j/G4noQSRmDtTPeBJjoNOg0+9djgRS+Xp+4hsihpkLd2UM5LrYShDy8nwWb53f1ynZMseKx00J38X9hbgfouF44QDAKqCqYRI3COd+ondRBgOISgWhG87k4INLvjKRLZhkFS8qHdBUHQ== 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)(39840400004)(376002)(396003)(136003)(346002)(38100700002)(66446008)(4326008)(64756008)(66946007)(66556008)(99936003)(66616009)(55016002)(66476007)(33656002)(8936002)(54906003)(30864003)(86362001)(76116006)(316002)(122000001)(26005)(53546011)(9686003)(83380400001)(6916009)(186003)(5660300002)(71200400001)(7696005)(478600001)(2906002)(8676002)(6506007)(52536014)(41533002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?bmW4IcrWezFcJDiGH7jKRfRlZnTbPWu8TzcbkiFU+JFnl3ovyjdm2OiszK4q?= =?us-ascii?Q?A+SF1cdLSaiDjvzT/IZj36prFncwIagIQPU5859YHplGjRgqXcN7h1pcopgC?= =?us-ascii?Q?IsOpwG9BxzMSGsbHmuQK3TJKVS6ban09ldt02NMh5GRjOkbeXvNmQDdHyHKt?= =?us-ascii?Q?m1nOy+qJ5z1TILsfFXDAYbES17HCXxjiJgdaGSSbt3F5XfDcNCe4i38F4qcj?= =?us-ascii?Q?vAPCYeS4x6Rwmqcf12wDs1ahQnK/OfClpFd8AeJ3YmiREP06Peen9rkfov++?= =?us-ascii?Q?ZPUxqnIbP4WxHIyAmkYsObfB0cB0Ayg2JVa7ijcpJ/uOMhc3xYmF4v5NVjv4?= =?us-ascii?Q?18tyri5htQo2hFttunY4JcsxLy6r3VQgM0DF8RDSd9C7cxdzEkbU8XWG4AMk?= =?us-ascii?Q?lVHJCo0SPAgaEY82f/9UOFG92hdGldPseFQSZ6onzTmCrCOhEqlWNXY6yi4v?= =?us-ascii?Q?ncfaRY/6aHXXYSSx6vIeKrwpuKDEbcw0GEK/Q+rmQqrm8DIlQ4s4SY0V4eHt?= =?us-ascii?Q?mlK0Ie4vdP3PAQB/dVpBmQx8jeQ1U7cF5ziPD9aOdSznwL4dLvHhEoDBAJjC?= =?us-ascii?Q?fqKgZ2ZDGSIGeQIJ4pw+Ky1EwvavSLgUf8vhbkS8l5LqGwDqH0UabAEKbNit?= =?us-ascii?Q?2EL7KfPDxMywx4vwEVGOQvtNBkF5inyzUvifxxbELnfYDzOzdYpmQradOVY0?= =?us-ascii?Q?O1ycK4TvOCToHJH10Cwh7qRLJjAsqIEDPlz33Wg8DMV4xFkc+6zuZB1Hep8L?= =?us-ascii?Q?dVCOL85kVlK0ATE2i+OKlXiSuR7SwF35uXv31iwGj1GSeA2Vz3TkdNxKrR5t?= =?us-ascii?Q?IFIcYlChOjMIpFbD4Cuan90dfM11RdiK0PRbgYX++hfEJjvG4Z3nOV+rYVRC?= =?us-ascii?Q?hvDvVoOo64ZEkyderVqcMAQNr1U/jy5ckOMF/ZNTjKIgg0WzGCtEoR5EA9+i?= =?us-ascii?Q?tXDgEc46ByebkZgh7OyWfqExAIcYCRdV3md2rB+Whwx8WwO8X2+iTsiPF8GG?= =?us-ascii?Q?r9KdPsN+JICBAdqyXfWuMYDlWTRBzhGnT24I/P0kLPo/l+Havnmwq80FxEl/?= =?us-ascii?Q?3xL5suNDFKp89H9dfl8U4aTgScUT5qPxQoLDNkYKy1hE0PVUcuIIKk7dwn/M?= =?us-ascii?Q?2fYUOt9VuoxuKS6zxFHDVh0BDucAcotbcRO+R6fJiQkSq1ZFlcDEg2a6ZKCz?= =?us-ascii?Q?4sheAKrdyo5+sBxAqujeM39IWeaGWUvhFNknrBrSQ2UXE920Wa7Ng4pCJJM6?= =?us-ascii?Q?J9HfA+jsGMjsloAJFGQ5UFAb3f3PYQ14SO1zB5v0MDd43RDH3d/BodwGW8Oi?= =?us-ascii?Q?CpHr2AJa70KmYHc36aUdlFxI?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_VI1PR08MB532515C197BE8CFBCF6BB086FF319VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4382 Original-Authentication-Results: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT050.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 7402c2a8-0ac8-4161-87fa-08d92f2d228c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: N+l4/OOhwq8vhQtKtONcAzyLBohH0e5e4qV9w1VwlPbIU+2Ql+3HnMGWNG270DqS74uyY+ZYi/0OFDwczVHcZKZ+LryZn/bdye/jUga/k2bh/yTGidWzkWC4dCktvFMI0rvIOjCXAldaYthfhzk43fsYB7wrna85AustDmetX7lHF1lSSFZTFj2a5LzRSjT4g6S9jSqUMxP5dW7r9RG3ztIgXcWlZBdqgbCt7qKNu4F8IAJwNnoR6vfl+MldHWW7b890onCAgLhhUTkqXjWPsyTX1Hap+pK2qV1tEFTeR+2vPS6A9KKjPhxQJ9FLLwLvFZ8E2t0saoBHpy4TNdbfMlVXhiKJ3NIIm5ge2F1MFbIM/zrby7QVpEtpLifivA+OMNkXVxfjR0AdXRnsESVPKvrElqGMYRbDdK0ifH7GMdb0G3tSN4AhQqUhOHkDRqNaSo/H+RhM9/kudyZmaS6ykRxxrMYqUajytFFRVVzkpCOgKfU7IiPTbOkMgWtdKo0myamTZ5zuq3mgXpTOEtaOGPRPTpBfEAKfjM7Q9r6RhhasVSeHHDzkH6z7ZTVX8/0EU+hGqUE9jtwqm4jNPy9knjmi9PWR/ZRmxuU49HczcbuH9ravWvUd3Yv7y9kWiksLQo+jXHLbQrrU4yYI6mlATgRnUy6YDc2XRecRJu+NMbug85BsBB+FXUvMXULtWRHp 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)(396003)(39860400002)(136003)(346002)(46966006)(36840700001)(47076005)(4326008)(53546011)(6506007)(8676002)(9686003)(81166007)(82740400003)(478600001)(55016002)(2906002)(7696005)(99936003)(8936002)(6862004)(336012)(36860700001)(70586007)(30864003)(83380400001)(52536014)(33656002)(5660300002)(235185007)(86362001)(26005)(356005)(82310400003)(66616009)(70206006)(186003)(54906003)(316002)(41533002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2021 12:09:16.6786 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a81ff237-e031-4cb9-4df4-08d92f2d3b7b 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: AM5EUR03FT050.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2199 X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Mon, 14 Jun 2021 12:09:22 -0000 --_002_VI1PR08MB532515C197BE8CFBCF6BB086FF319VI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, Just adding 7 more tests, I will assume the OK still stands as it's more of= the same. Thanks, Tamar > -----Original Message----- > From: Richard Biener > Sent: Wednesday, May 26, 2021 9:41 AM > To: Tamar Christina > Cc: nd > Subject: RE: [PATCH 4/4]middle-end: Add tests middle end generic tests fo= r > sign differing dotproduct. >=20 > On Tue, 25 May 2021, Tamar Christina wrote: >=20 > > Hi All, > > > > Adding a few more tests > > > > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. > > > > Ok for master? >=20 > OK. >=20 > > Thanks, > > Tamar > > > > gcc/ChangeLog: > > > > * doc/sourcebuild.texi (arm_v8_2a_i8mm_neon_hw): Document. > > > > gcc/testsuite/ChangeLog: > > > > * lib/target-supports.exp > > (check_effective_target_arm_v8_2a_imm8_neon_ok_nocache, > > check_effective_target_arm_v8_2a_i8mm_neon_hw, > > check_effective_target_vect_usdot_qi): New. > > * gcc.dg/vect/vect-reduc-dot-9.c: New test. > > * gcc.dg/vect/vect-reduc-dot-10.c: New test. > > * gcc.dg/vect/vect-reduc-dot-11.c: New test. > > * gcc.dg/vect/vect-reduc-dot-12.c: New test. > > * gcc.dg/vect/vect-reduc-dot-13.c: New test. > > * gcc.dg/vect/vect-reduc-dot-14.c: New test. > > * gcc.dg/vect/vect-reduc-dot-15.c: New test. > > * gcc.dg/vect/vect-reduc-dot-16.c: New test. > > * gcc.dg/vect/vect-reduc-dot-17.c: New test. > > * gcc.dg/vect/vect-reduc-dot-18.c: New test. > > > > > -----Original Message----- > > > From: Gcc-patches On Behalf Of > > > Tamar Christina via Gcc-patches > > > Sent: Wednesday, May 5, 2021 6:40 PM > > > To: gcc-patches@gcc.gnu.org > > > Cc: nd ; rguenther@suse.de > > > Subject: [PATCH 4/4]middle-end: Add tests middle end generic tests > > > for sign differing dotproduct. > > > > > > Hi All, > > > > > > This adds testcases to test for auto-vect detection of the new sign > > > differing dot product. > > > > > > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. > > > > > > Ok for master? > > > > > > Thanks, > > > Tamar > > > > > > gcc/ChangeLog: > > > > > > * doc/sourcebuild.texi (arm_v8_2a_i8mm_neon_hw): Document. > > > > > > gcc/testsuite/ChangeLog: > > > > > > * lib/target-supports.exp > > > (check_effective_target_arm_v8_2a_imm8_neon_ok_nocache, > > > check_effective_target_arm_v8_2a_i8mm_neon_hw, > > > check_effective_target_vect_usdot_qi): New. > > > * gcc.dg/vect/vect-reduc-dot-10.c: New test. > > > * gcc.dg/vect/vect-reduc-dot-11.c: New test. > > > * gcc.dg/vect/vect-reduc-dot-12.c: New test. > > > * gcc.dg/vect/vect-reduc-dot-13.c: New test. > > > * gcc.dg/vect/vect-reduc-dot-14.c: New test. > > > * gcc.dg/vect/vect-reduc-dot-15.c: New test. > > > * gcc.dg/vect/vect-reduc-dot-16.c: New test. > > > * gcc.dg/vect/vect-reduc-dot-9.c: New test. > > > > > > --- inline copy of patch -- > > > diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi > > > index > > > > b0001247795947c9dcab1a14884ecd585976dfdd..0034ac9d86b26e6674d71090b > > > 9d04b6148f99e17 100644 > > > --- a/gcc/doc/sourcebuild.texi > > > +++ b/gcc/doc/sourcebuild.texi > > > @@ -1672,6 +1672,10 @@ Target supports a vector dot-product of > > > @code{signed char}. > > > @item vect_udot_qi > > > Target supports a vector dot-product of @code{unsigned char}. > > > > > > +@item vect_usdot_qi > > > +Target supports a vector dot-product where one operand of the > > > +multiply is @code{signed char} and the other of @code{unsigned char}= . > > > + > > > @item vect_sdot_hi > > > Target supports a vector dot-product of @code{signed short}. > > > > > > @@ -1947,6 +1951,11 @@ ARM target supports executing instructions > > > from ARMv8.2-A with the Dot Product extension. Some multilibs may > > > be incompatible with these options. > > > Implies arm_v8_2a_dotprod_neon_ok. > > > > > > +@item arm_v8_2a_i8mm_neon_hw > > > +ARM target supports executing instructions from ARMv8.2-A with the > > > +8-bit Matrix Multiply extension. Some multilibs may be > > > +incompatible with these options. Implies arm_v8_2a_i8mm_ok. > > > + > > > @item arm_fp16fml_neon_ok > > > @anchor{arm_fp16fml_neon_ok} > > > ARM target supports extensions to generate the @code{VFMAL} and > > > @code{VFMLS} diff --git > > > a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c > > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c > > > new file mode 100644 > > > index > > > > 0000000000000000000000000000000000000000..7ce86965ea97d37c43d96b4d2 > > > 271df667dcb2aae > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c > > > @@ -0,0 +1,13 @@ > > > +/* { dg-require-effective-target vect_int } */ > > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > > +aarch64*-*-* || arm*-*-* } } } */ > > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > > + > > > +#define SIGNEDNESS_1 unsigned > > > +#define SIGNEDNESS_2 unsigned > > > +#define SIGNEDNESS_3 unsigned > > > +#define SIGNEDNESS_4 signed > > > + > > > +#include "vect-reduc-dot-9.c" > > > + > > > +/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: > > > +detected" "vect" } } */ > > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > > +target vect_usdot_qi } } } */ > > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-11.c > > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-11.c > > > new file mode 100644 > > > index > > > > 0000000000000000000000000000000000000000..0f7cbbb87ef028f166366aea55 > > > bc4ef49d2f8e9b > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-11.c > > > @@ -0,0 +1,13 @@ > > > +/* { dg-require-effective-target vect_int } */ > > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > > +aarch64*-*-* || arm*-*-* } } } */ > > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > > + > > > +#define SIGNEDNESS_1 unsigned > > > +#define SIGNEDNESS_2 signed > > > +#define SIGNEDNESS_3 unsigned > > > +#define SIGNEDNESS_4 signed > > > + > > > +#include "vect-reduc-dot-9.c" > > > + > > > +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: > detected" > > > +"vect" } } */ > > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > > +target vect_usdot_qi } } } */ > > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-12.c > > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-12.c > > > new file mode 100644 > > > index > > > > 0000000000000000000000000000000000000000..08412614fc67045d3067b5b55 > > > ba032d297595237 > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-12.c > > > @@ -0,0 +1,13 @@ > > > +/* { dg-require-effective-target vect_int } */ > > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > > +aarch64*-*-* || arm*-*-* } } } */ > > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > > + > > > +#define SIGNEDNESS_1 unsigned > > > +#define SIGNEDNESS_2 signed > > > +#define SIGNEDNESS_3 signed > > > +#define SIGNEDNESS_4 unsigned > > > + > > > +#include "vect-reduc-dot-9.c" > > > + > > > +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: > detected" > > > +"vect" } } */ > > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > > +target vect_usdot_qi } } } */ > > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-13.c > > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-13.c > > > new file mode 100644 > > > index > > > > 0000000000000000000000000000000000000000..7ee0f45f64296442204ee13d5f > > > 880f4b7716fb85 > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-13.c > > > @@ -0,0 +1,13 @@ > > > +/* { dg-require-effective-target vect_int } */ > > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > > +aarch64*-*-* || arm*-*-* } } } */ > > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > > + > > > +#define SIGNEDNESS_1 signed > > > +#define SIGNEDNESS_2 unsigned > > > +#define SIGNEDNESS_3 signed > > > +#define SIGNEDNESS_4 unsigned > > > + > > > +#include "vect-reduc-dot-9.c" > > > + > > > +/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: > > > +detected" "vect" } } */ > > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > > +target vect_usdot_qi } } } */ > > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-14.c > > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-14.c > > > new file mode 100644 > > > index > > > > 0000000000000000000000000000000000000000..2de1434528b87f0c32c54150b1 > > > 6791f3f2a469b5 > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-14.c > > > @@ -0,0 +1,13 @@ > > > +/* { dg-require-effective-target vect_int } */ > > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > > +aarch64*-*-* || arm*-*-* } } } */ > > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > > + > > > +#define SIGNEDNESS_1 signed > > > +#define SIGNEDNESS_2 unsigned > > > +#define SIGNEDNESS_3 unsigned > > > +#define SIGNEDNESS_4 signed > > > + > > > +#include "vect-reduc-dot-9.c" > > > + > > > +/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: > > > +detected" "vect" } } */ > > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > > +target vect_usdot_qi } } } */ > > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-15.c > > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-15.c > > > new file mode 100644 > > > index > > > > 0000000000000000000000000000000000000000..dc48f95a32bf76c54a906ee81d > > > dee99b16aea84a > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-15.c > > > @@ -0,0 +1,13 @@ > > > +/* { dg-require-effective-target vect_int } */ > > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > > +aarch64*-*-* || arm*-*-* } } } */ > > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > > + > > > +#define SIGNEDNESS_1 signed > > > +#define SIGNEDNESS_2 signed > > > +#define SIGNEDNESS_3 unsigned > > > +#define SIGNEDNESS_4 signed > > > + > > > +#include "vect-reduc-dot-9.c" > > > + > > > +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: > detected" > > > +"vect" } } */ > > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > > +target vect_usdot_qi } } } */ > > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-16.c > > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-16.c > > > new file mode 100644 > > > index > > > > 0000000000000000000000000000000000000000..aec628789366673321aea88c60 > > > 316a68fe16cbc5 > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-16.c > > > @@ -0,0 +1,13 @@ > > > +/* { dg-require-effective-target vect_int } */ > > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > > +aarch64*-*-* || arm*-*-* } } } */ > > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > > + > > > +#define SIGNEDNESS_1 signed > > > +#define SIGNEDNESS_2 signed > > > +#define SIGNEDNESS_3 signed > > > +#define SIGNEDNESS_4 unsigned > > > + > > > +#include "vect-reduc-dot-9.c" > > > + > > > +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: > detected" > > > +"vect" } } */ > > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > > +target vect_usdot_qi } } } */ > > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-9.c > > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-9.c > > > new file mode 100644 > > > index > > > > 0000000000000000000000000000000000000000..cbbeedec3bfd0810a8ce8036e > > > 6670585d9334924 > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-9.c > > > @@ -0,0 +1,52 @@ > > > +/* { dg-require-effective-target vect_int } */ > > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > > +aarch64*-*-* || arm*-*-* } } } */ > > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > > + > > > +#include "tree-vect.h" > > > + > > > +#define N 50 > > > + > > > +#ifndef SIGNEDNESS_1 > > > +#define SIGNEDNESS_1 unsigned > > > +#define SIGNEDNESS_2 unsigned > > > +#define SIGNEDNESS_3 signed > > > +#define SIGNEDNESS_4 unsigned > > > +#endif > > > + > > > +SIGNEDNESS_1 int __attribute__ ((noipa)) f (SIGNEDNESS_1 int res, > > > +SIGNEDNESS_3 char *restrict a, > > > + SIGNEDNESS_4 char *restrict b) > > > +{ > > > + for (__INTPTR_TYPE__ i =3D 0; i < N; ++i) > > > + { > > > + int av =3D a[i]; > > > + int bv =3D b[i]; > > > + SIGNEDNESS_2 short mult =3D av * bv; > > > + res +=3D mult; > > > + } > > > + return res; > > > +} > > > + > > > +#define BASE ((SIGNEDNESS_3 int) -1 < 0 ? -126 : 4) #define OFFSET > > > +20 > > > + > > > +int > > > +main (void) > > > +{ > > > + check_vect (); > > > + > > > + SIGNEDNESS_3 char a[N], b[N]; > > > + int expected =3D 0x12345; > > > + for (int i =3D 0; i < N; ++i) > > > + { > > > + a[i] =3D BASE + i * 5; > > > + b[i] =3D BASE + OFFSET + i * 4; > > > + asm volatile ("" ::: "memory"); > > > + expected +=3D (SIGNEDNESS_2 short) (a[i] * b[i]); > > > + } > > > + if (f (0x12345, a, b) !=3D expected) > > > + __builtin_abort (); > > > +} > > > + > > > +/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: > > > +detected" "vect" } } */ > > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > > +target vect_usdot_qi } } } */ > > > diff --git a/gcc/testsuite/lib/target-supports.exp > > > b/gcc/testsuite/lib/target- supports.exp index > > > > ad323107f2ec5d55a77214beca5e4135643528b4..db9bd605ab4c838f65667fa61 > > > 6da334a171d9dfb 100644 > > > --- a/gcc/testsuite/lib/target-supports.exp > > > +++ b/gcc/testsuite/lib/target-supports.exp > > > @@ -5240,6 +5240,36 @@ proc > > > check_effective_target_arm_v8_2a_dotprod_neon_ok_nocache { } { > > > return 0; > > > } > > > > > > +# Return 1 if the target supports ARMv8.2 Adv.SIMD imm8 # > > > +instructions, > > > +0 otherwise. The test is valid for ARM and for AArch64. > > > +# Record the command line options needed. > > > + > > > +proc check_effective_target_arm_v8_2a_imm8_neon_ok_nocache { } { > > > + global et_arm_v8_2a_imm8_neon_flags > > > + set et_arm_v8_2a_imm8_neon_flags "" > > > + > > > + if { ![istarget arm*-*-*] && ![istarget aarch64*-*-*] } { > > > + return 0; > > > + } > > > + > > > + # Iterate through sets of options to find the compiler flags tha= t > > > + # need to be added to the -march option. > > > + foreach flags {"" "-mfloat-abi=3Dsoftfp -mfpu=3Dneon-fp-armv8" > > > + "-mfloat- > > > abi=3Dhard -mfpu=3Dneon-fp-armv8"} { > > > + if { [check_no_compiler_messages_nocache \ > > > + arm_v8_2a_imm8_neon_ok object { > > > + #include > > > + #if !defined (__ARM_FEATURE_MATMUL_INT8) > > > + #error "__ARM_FEATURE_MATMUL_INT8 not defined" > > > + #endif > > > + } "$flags -march=3Darmv8.2-a+imm8"] } { > > > + set et_arm_v8_2a_imm8_neon_flags "$flags > > > +-march=3Darmv8.2- > > > a+imm8" > > > + return 1 > > > + } > > > + } > > > + > > > + return 0; > > > +} > > > + > > > # Return 1 if the target supports ARMv8.1-M MVE # instructions, 0 > > > otherwise. The test is valid for ARM. > > > # Record the command line options needed. > > > @@ -5667,6 +5697,43 @@ proc > > > check_effective_target_arm_v8_2a_dotprod_neon_hw { } { > > > } [add_options_for_arm_v8_2a_dotprod_neon ""]] } > > > > > > +# Return 1 if the target supports executing AdvSIMD instructions > > > +from > > > +ARMv8.2 # with the i8mm extension, 0 otherwise. The test is valid > > > +for ARM and for # AArch64. > > > + > > > +proc check_effective_target_arm_v8_2a_i8mm_neon_hw { } { > > > + if { ![check_effective_target_arm_v8_2a_i8mm_ok] } { > > > + return 0; > > > + } > > > + return [check_runtime arm_v8_2a_i8mm_neon_hw_available { > > > + #include "arm_neon.h" > > > + int > > > + main (void) > > > + { > > > + > > > + uint32x2_t results =3D {0,0}; > > > + uint8x8_t a =3D {1,1,1,1,2,2,2,2}; > > > + int8x8_t b =3D {2,2,2,2,3,3,3,3}; > > > + > > > + #ifdef __ARM_ARCH_ISA_A64 > > > + asm ("usdot %0.2s, %1.8b, %2.8b" > > > + : "=3Dw"(results) > > > + : "w"(a), "w"(b) > > > + : /* No clobbers. */); > > > + > > > + #else > > > + asm ("vusdot.u8 %P0, %P1, %P2" > > > + : "=3Dw"(results) > > > + : "w"(a), "w"(b) > > > + : /* No clobbers. */); > > > + #endif > > > + > > > + return (vget_lane_u32 (results, 0) =3D=3D 8 > > > + && vget_lane_u32 (results, 1) =3D=3D 24) ? 1 : 0; > > > + } > > > + } [add_options_for_arm_v8_2a_i8mm ""]] } > > > + > > > # Return 1 if this is a ARM target with NEON enabled. > > > > > > proc check_effective_target_arm_neon { } { @@ -7022,6 +7089,19 @@ > > > proc check_effective_target_vect_udot_qi { } { > > > && [et-is-effective-target mips_msa]) }}] } > > > > > > +# Return 1 if the target plus current options supports a vector # > > > +dot-product where one operand of the multiply is signed char # and > > > +the other unsigned chars, 0 otherwise. > > > +# > > > +# This won't change for different subtargets so cache the result. > > > + > > > +proc check_effective_target_vect_usdot_qi { } { > > > + return [check_cached_effective_target_indexed vect_usdot_qi { > > > + expr { [istarget aarch64*-*-*] > > > + || [istarget arm*-*-*] }}] > > > +} > > > + > > > + > > > # Return 1 if the target plus current options supports a vector # > > > dot-product of signed shorts, 0 otherwise. > > > # > > > > > > > > > -- > > >=20 > -- > Richard Biener > SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 > Nuernberg, Germany; GF: Felix Imend --_002_VI1PR08MB532515C197BE8CFBCF6BB086FF319VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb14436.patch" Content-Description: rb14436.patch Content-Disposition: attachment; filename="rb14436.patch"; size=21842; creation-date="Mon, 14 Jun 2021 12:08:00 GMT"; modification-date="Mon, 14 Jun 2021 12:08:00 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9kb2Mvc291cmNlYnVpbGQudGV4aSBiL2djYy9kb2Mvc291cmNlYnVp bGQudGV4aQppbmRleCAxNmM2YTNiOGU5OTU2ZTdlZDVlYTA3NjZjMmJkNzM4ZDJhMTEyY2Q0Li5i MWZmZmQ1ZTkwZjhiOTM4YTRjNTBjODVmNWM5ZWYwZWZlNDQwNDY4IDEwMDY0NAotLS0gYS9nY2Mv ZG9jL3NvdXJjZWJ1aWxkLnRleGkKKysrIGIvZ2NjL2RvYy9zb3VyY2VidWlsZC50ZXhpCkBAIC0x NzgwLDYgKzE3ODAsMTAgQEAgVGFyZ2V0IHN1cHBvcnRzIGEgdmVjdG9yIGRvdC1wcm9kdWN0IG9m IEBjb2Rle3NpZ25lZCBjaGFyfS4KIEBpdGVtIHZlY3RfdWRvdF9xaQogVGFyZ2V0IHN1cHBvcnRz IGEgdmVjdG9yIGRvdC1wcm9kdWN0IG9mIEBjb2Rle3Vuc2lnbmVkIGNoYXJ9LgogCitAaXRlbSB2 ZWN0X3VzZG90X3FpCitUYXJnZXQgc3VwcG9ydHMgYSB2ZWN0b3IgZG90LXByb2R1Y3Qgd2hlcmUg b25lIG9wZXJhbmQgb2YgdGhlIG11bHRpcGx5IGlzCitAY29kZXtzaWduZWQgY2hhcn0gYW5kIHRo ZSBvdGhlciBvZiBAY29kZXt1bnNpZ25lZCBjaGFyfS4KKwogQGl0ZW0gdmVjdF9zZG90X2hpCiBU YXJnZXQgc3VwcG9ydHMgYSB2ZWN0b3IgZG90LXByb2R1Y3Qgb2YgQGNvZGV7c2lnbmVkIHNob3J0 fS4KIApAQCAtMjA1NSw2ICsyMDU5LDExIEBAIEFSTSB0YXJnZXQgc3VwcG9ydHMgZXhlY3V0aW5n IGluc3RydWN0aW9ucyBmcm9tIEFSTXY4LjItQSB3aXRoIHRoZSBEb3QKIFByb2R1Y3QgZXh0ZW5z aW9uLiBTb21lIG11bHRpbGlicyBtYXkgYmUgaW5jb21wYXRpYmxlIHdpdGggdGhlc2Ugb3B0aW9u cy4KIEltcGxpZXMgYXJtX3Y4XzJhX2RvdHByb2RfbmVvbl9vay4KIAorQGl0ZW0gYXJtX3Y4XzJh X2k4bW1fbmVvbl9odworQVJNIHRhcmdldCBzdXBwb3J0cyBleGVjdXRpbmcgaW5zdHJ1Y3Rpb25z IGZyb20gQVJNdjguMi1BIHdpdGggdGhlIDgtYml0CitNYXRyaXggTXVsdGlwbHkgZXh0ZW5zaW9u LiAgU29tZSBtdWx0aWxpYnMgbWF5IGJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlCitvcHRpb25z LiAgSW1wbGllcyBhcm1fdjhfMmFfaThtbV9vay4KKwogQGl0ZW0gYXJtX2ZwMTZmbWxfbmVvbl9v awogQGFuY2hvcnthcm1fZnAxNmZtbF9uZW9uX29rfQogQVJNIHRhcmdldCBzdXBwb3J0cyBleHRl bnNpb25zIHRvIGdlbmVyYXRlIHRoZSBAY29kZXtWRk1BTH0gYW5kIEBjb2Rle1ZGTUxTfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xMC5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xMC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjdjZTg2OTY1ZWE5N2QzN2M0M2Q5NmI0ZDIyNzFkZjY2N2RjYjJhYWUKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTEwLmMKQEAgLTAs MCArMSwxMyBAQAorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAq LworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX3Y4XzJhX2k4bW1fbmVvbl9o dyB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB8fCBhcm0qLSotKiB9IH0gfSAqLworLyogeyBkZy1h ZGQtb3B0aW9ucyBhcm1fdjhfMmFfaThtbSB9ICAqLworCisjZGVmaW5lIFNJR05FRE5FU1NfMSB1 bnNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzIgdW5zaWduZWQKKyNkZWZpbmUgU0lHTkVETkVT U18zIHVuc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1NfNCBzaWduZWQKKworI2luY2x1ZGUgInZl Y3QtcmVkdWMtZG90LTkuYyIKKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAi dmVjdF9yZWNvZ19kb3RfcHJvZF9wYXR0ZXJuOiBkZXRlY3RlZCIgInZlY3QiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcCIgMSAi dmVjdCIgeyB0YXJnZXQgdmVjdF91c2RvdF9xaSB9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmN2NiYmI4N2VmMDI4 ZjE2NjM2NmFlYTU1YmM0ZWY0OWQyZjhlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTExLmMKQEAgLTAsMCArMSwxMyBAQAorLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLworLyogeyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX3Y4XzJhX2k4bW1fbmVvbl9odyB7IHRhcmdldCB7IGFh cmNoNjQqLSotKiB8fCBhcm0qLSotKiB9IH0gfSAqLworLyogeyBkZy1hZGQtb3B0aW9ucyBhcm1f djhfMmFfaThtbSB9ICAqLworCisjZGVmaW5lIFNJR05FRE5FU1NfMSB1bnNpZ25lZAorI2RlZmlu ZSBTSUdORURORVNTXzIgc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1NfMyB1bnNpZ25lZAorI2Rl ZmluZSBTSUdORURORVNTXzQgc2lnbmVkCisKKyNpbmNsdWRlICJ2ZWN0LXJlZHVjLWRvdC05LmMi CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidmVjdF9yZWNvZ19kb3RfcHJvZF9w YXR0ZXJuOiBkZXRlY3RlZCIgInZlY3QiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcCIgMSAidmVjdCIgeyB0YXJnZXQgdmVjdF91 c2RvdF9xaSB9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92 ZWN0LXJlZHVjLWRvdC0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVj LWRvdC0xMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4NDEyNjE0ZmM2NzA0NWQzMDY3YjViNTViYTAzMmQyOTc1 OTUyMzcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qt cmVkdWMtZG90LTEyLmMKQEAgLTAsMCArMSwxMyBAQAorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2 ZS10YXJnZXQgdmVjdF9pbnQgfSAqLworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQg YXJtX3Y4XzJhX2k4bW1fbmVvbl9odyB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB8fCBhcm0qLSot KiB9IH0gfSAqLworLyogeyBkZy1hZGQtb3B0aW9ucyBhcm1fdjhfMmFfaThtbSB9ICAqLworCisj ZGVmaW5lIFNJR05FRE5FU1NfMSB1bnNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzIgc2lnbmVk CisjZGVmaW5lIFNJR05FRE5FU1NfMyBzaWduZWQKKyNkZWZpbmUgU0lHTkVETkVTU180IHVuc2ln bmVkCisKKyNpbmNsdWRlICJ2ZWN0LXJlZHVjLWRvdC05LmMiCisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAidmVjdF9yZWNvZ19kb3RfcHJvZF9wYXR0ZXJuOiBkZXRlY3RlZCIgInZl Y3QiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3Jp emVkIDEgbG9vcCIgMSAidmVjdCIgeyB0YXJnZXQgdmVjdF91c2RvdF9xaSB9IH0gfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xMy5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xMy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjdlZTBmNDVmNjQyOTY0NDIyMDRlZTEzZDVmODgwZjRiNzcxNmZiODUKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTEzLmMKQEAgLTAs MCArMSwxMyBAQAorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAq LworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX3Y4XzJhX2k4bW1fbmVvbl9o dyB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB8fCBhcm0qLSotKiB9IH0gfSAqLworLyogeyBkZy1h ZGQtb3B0aW9ucyBhcm1fdjhfMmFfaThtbSB9ICAqLworCisjZGVmaW5lIFNJR05FRE5FU1NfMSBz aWduZWQKKyNkZWZpbmUgU0lHTkVETkVTU18yIHVuc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1Nf MyBzaWduZWQKKyNkZWZpbmUgU0lHTkVETkVTU180IHVuc2lnbmVkCisKKyNpbmNsdWRlICJ2ZWN0 LXJlZHVjLWRvdC05LmMiCisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgInZl Y3RfcmVjb2dfZG90X3Byb2RfcGF0dGVybjogZGV0ZWN0ZWQiICJ2ZWN0IiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3AiIDEgInZl Y3QiIHsgdGFyZ2V0IHZlY3RfdXNkb3RfcWkgfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWR1Yy1kb3QtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1yZWR1Yy1kb3QtMTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGUxNDM0NTI4Yjg3ZjBj MzJjNTQxNTBiMTY3OTFmM2YyYTQ2OWI1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xNC5jCkBAIC0wLDAgKzEsMTMgQEAKKy8qIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8KKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV92OF8yYV9pOG1tX25lb25faHcgeyB0YXJnZXQgeyBhYXJj aDY0Ki0qLSogfHwgYXJtKi0qLSogfSB9IH0gKi8KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJtX3Y4 XzJhX2k4bW0gfSAgKi8KKworI2RlZmluZSBTSUdORURORVNTXzEgc2lnbmVkCisjZGVmaW5lIFNJ R05FRE5FU1NfMiB1bnNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzMgdW5zaWduZWQKKyNkZWZp bmUgU0lHTkVETkVTU180IHNpZ25lZAorCisjaW5jbHVkZSAidmVjdC1yZWR1Yy1kb3QtOS5jIgor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJ2ZWN0X3JlY29nX2RvdF9wcm9k X3BhdHRlcm46IGRldGVjdGVkIiAidmVjdCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wIiAxICJ2ZWN0IiB7IHRhcmdldCB2ZWN0 X3VzZG90X3FpIH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0 L3ZlY3QtcmVkdWMtZG90LTE1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVk dWMtZG90LTE1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM0OGY5NWEzMmJmNzZjNTRhOTA2ZWU4MWRkZWU5OWIx NmFlYTg0YQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVj dC1yZWR1Yy1kb3QtMTUuYwpAQCAtMCwwICsxLDEzIEBACisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdl dCBhcm1fdjhfMmFfaThtbV9uZW9uX2h3IHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIHx8IGFybSot Ki0qIH0gfSB9ICovCisvKiB7IGRnLWFkZC1vcHRpb25zIGFybV92OF8yYV9pOG1tIH0gICovCisK KyNkZWZpbmUgU0lHTkVETkVTU18xIHNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzIgc2lnbmVk CisjZGVmaW5lIFNJR05FRE5FU1NfMyB1bnNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzQgc2ln bmVkCisKKyNpbmNsdWRlICJ2ZWN0LXJlZHVjLWRvdC05LmMiCisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAidmVjdF9yZWNvZ19kb3RfcHJvZF9wYXR0ZXJuOiBkZXRlY3RlZCIgInZl Y3QiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3Jp emVkIDEgbG9vcCIgMSAidmVjdCIgeyB0YXJnZXQgdmVjdF91c2RvdF9xaSB9IH0gfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xNi5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xNi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmFlYzYyODc4OTM2NjY3MzMyMWFlYTg4YzYwMzE2YTY4ZmUxNmNiYzUKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTE2LmMKQEAgLTAs MCArMSwxMyBAQAorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAq LworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX3Y4XzJhX2k4bW1fbmVvbl9o dyB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB8fCBhcm0qLSotKiB9IH0gfSAqLworLyogeyBkZy1h ZGQtb3B0aW9ucyBhcm1fdjhfMmFfaThtbSB9ICAqLworCisjZGVmaW5lIFNJR05FRE5FU1NfMSBz aWduZWQKKyNkZWZpbmUgU0lHTkVETkVTU18yIHNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzMg c2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1NfNCB1bnNpZ25lZAorCisjaW5jbHVkZSAidmVjdC1y ZWR1Yy1kb3QtOS5jIgorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInZlY3RfcmVj b2dfZG90X3Byb2RfcGF0dGVybjogZGV0ZWN0ZWQiICJ2ZWN0IiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3AiIDEgInZlY3QiIHsg dGFyZ2V0IHZlY3RfdXNkb3RfcWkgfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3ZlY3QvdmVjdC1yZWR1Yy1kb3QtMTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Zl Y3QvdmVjdC1yZWR1Yy1kb3QtMTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTI2OWM0ZDY1N2Y2NWUwN2UzNmRm N2YzZmQwMDk4Y2YzYWFmNGQwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC0xNy5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qIHsgZGctcmVx dWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZl Y3RpdmUtdGFyZ2V0IGFybV92OF8yYV9pOG1tX25lb25faHcgeyB0YXJnZXQgeyBhYXJjaDY0Ki0q LSogfHwgYXJtKi0qLSogfSB9IH0gKi8KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJtX3Y4XzJhX2k4 bW0gfSAgKi8KKworI2luY2x1ZGUgInRyZWUtdmVjdC5oIgorCisjZGVmaW5lIE4gNTAKKworI2lm bmRlZiBTSUdORURORVNTXzEKKyNkZWZpbmUgU0lHTkVETkVTU18xIHVuc2lnbmVkCisjZGVmaW5l IFNJR05FRE5FU1NfMiB1bnNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzMgc2lnbmVkCisjZGVm aW5lIFNJR05FRE5FU1NfNCB1bnNpZ25lZAorI2VuZGlmCisKK1NJR05FRE5FU1NfMSBpbnQgX19h dHRyaWJ1dGVfXyAoKG5vaXBhKSkKK2YgKFNJR05FRE5FU1NfMSBpbnQgcmVzLCBTSUdORURORVNT XzMgY2hhciAqcmVzdHJpY3QgYSwKKyAgIFNJR05FRE5FU1NfNCBjaGFyICpyZXN0cmljdCBiKQor eworICBmb3IgKF9fSU5UUFRSX1RZUEVfXyBpID0gMDsgaSA8IE47ICsraSkKKyAgICB7CisgICAg ICBpbnQgYXYgPSBhW2ldOworICAgICAgaW50IGJ2ID0gYltpXTsKKyAgICAgIFNJR05FRE5FU1Nf MiBpbnQgbXVsdCA9IGF2ICogYnY7CisgICAgICByZXMgKz0gbXVsdDsKKyAgICB9CisgIHJldHVy biByZXM7Cit9CisKKyNkZWZpbmUgQkFTRSAoKFNJR05FRE5FU1NfMyBpbnQpIC0xIDwgMCA/IC0x MjYgOiA0KQorI2RlZmluZSBPRkZTRVQgMjAKKworaW50CittYWluICh2b2lkKQoreworICBjaGVj a192ZWN0ICgpOworCisgIFNJR05FRE5FU1NfMyBjaGFyIGFbTl0sIGJbTl07CisgIGludCBleHBl Y3RlZCA9IDB4MTIzNDU7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKQorICAgIHsKKyAg ICAgIGFbaV0gPSBCQVNFICsgaSAqIDU7CisgICAgICBiW2ldID0gQkFTRSArIE9GRlNFVCArIGkg KiA0OworICAgICAgYXNtIHZvbGF0aWxlICgiIiA6OjogIm1lbW9yeSIpOworICAgICAgZXhwZWN0 ZWQgKz0gKFNJR05FRE5FU1NfMiBpbnQpIChhW2ldICogYltpXSk7CisgICAgfQorICBpZiAoZiAo MHgxMjM0NSwgYSwgYikgIT0gZXhwZWN0ZWQpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInZlY3RfcmVjb2dfZG90X3Byb2RfcGF0 dGVybjogZGV0ZWN0ZWQiICJ2ZWN0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3AiIDEgInZlY3QiIHsgdGFyZ2V0IHZlY3RfdXNk b3RfcWkgfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVj dC1yZWR1Yy1kb3QtMTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWR1Yy1k b3QtMTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi4yYjFjYzA0MTFjMzI1NmNjZDg3NmQ4YjRkYTE4Y2U0ODgxZGMw YWY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJl ZHVjLWRvdC0xOC5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IHZlY3RfaW50IH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFy bV92OF8yYV9pOG1tX25lb25faHcgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfHwgYXJtKi0qLSog fSB9IH0gKi8KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJtX3Y4XzJhX2k4bW0gfSAgKi8KKworI2lu Y2x1ZGUgInRyZWUtdmVjdC5oIgorCisjZGVmaW5lIE4gNTAKKworI2lmbmRlZiBTSUdORURORVNT XzEKKyNkZWZpbmUgU0lHTkVETkVTU18xIHVuc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1NfMiBz aWduZWQKKyNkZWZpbmUgU0lHTkVETkVTU18zIHNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzQg dW5zaWduZWQKKyNlbmRpZgorCitTSUdORURORVNTXzEgaW50IF9fYXR0cmlidXRlX18gKChub2lw YSkpCitmIChTSUdORURORVNTXzEgaW50IHJlcywgU0lHTkVETkVTU18zIGNoYXIgKnJlc3RyaWN0 IGEsCisgICBTSUdORURORVNTXzQgY2hhciAqcmVzdHJpY3QgYikKK3sKKyAgZm9yIChfX0lOVFBU Ul9UWVBFX18gaSA9IDA7IGkgPCBOOyArK2kpCisgICAgeworICAgICAgaW50IGF2ID0gYVtpXTsK KyAgICAgIGludCBidiA9IGJbaV07CisgICAgICBTSUdORURORVNTXzIgaW50IG11bHQgPSBhdiAq IGJ2OworICAgICAgcmVzICs9IG11bHQ7CisgICAgfQorICByZXR1cm4gcmVzOworfQorCisjZGVm aW5lIEJBU0UgKChTSUdORURORVNTXzMgaW50KSAtMSA8IDAgPyAtMTI2IDogNCkKKyNkZWZpbmUg T0ZGU0VUIDIwCisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgY2hlY2tfdmVjdCAoKTsKKworICBT SUdORURORVNTXzMgY2hhciBhW05dLCBiW05dOworICBpbnQgZXhwZWN0ZWQgPSAweDEyMzQ1Owor ICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkKKyAgICB7CisgICAgICBhW2ldID0gQkFTRSAr IGkgKiA1OworICAgICAgYltpXSA9IEJBU0UgKyBPRkZTRVQgKyBpICogNDsKKyAgICAgIGFzbSB2 b2xhdGlsZSAoIiIgOjo6ICJtZW1vcnkiKTsKKyAgICAgIGV4cGVjdGVkICs9IChTSUdORURORVNT XzIgaW50KSAoYVtpXSAqIGJbaV0pOworICAgIH0KKyAgaWYgKGYgKDB4MTIzNDUsIGEsIGIpICE9 IGV4cGVjdGVkKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJ2ZWN0X3JlY29nX2RvdF9wcm9kX3BhdHRlcm46IGRldGVjdGVkIiAi dmVjdCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInZlY3Rv cml6ZWQgMSBsb29wIiAxICJ2ZWN0IiB7IHRhcmdldCB2ZWN0X3VzZG90X3FpIH0gfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTE5LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTE5LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uZGJlYWFlYzI0YTEwOTViNzczMGQ5ZTEyNjJmNWE5NTFmZDIzMTJmYwotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWR1Yy1kb3QtMTkuYwpAQCAt MCwwICsxLDUyIEBACisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9 ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fdjhfMmFfaThtbV9uZW9u X2h3IHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIHx8IGFybSotKi0qIH0gfSB9ICovCisvKiB7IGRn LWFkZC1vcHRpb25zIGFybV92OF8yYV9pOG1tIH0gICovCisKKyNpbmNsdWRlICJ0cmVlLXZlY3Qu aCIKKworI2RlZmluZSBOIDUwCisKKyNpZm5kZWYgU0lHTkVETkVTU18xCisjZGVmaW5lIFNJR05F RE5FU1NfMSB1bnNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzIgc2lnbmVkCisjZGVmaW5lIFNJ R05FRE5FU1NfMyBzaWduZWQKKyNkZWZpbmUgU0lHTkVETkVTU180IHVuc2lnbmVkCisjZW5kaWYK KworU0lHTkVETkVTU18xIGxvbmcgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkKK2YgKFNJR05FRE5F U1NfMSBsb25nIHJlcywgU0lHTkVETkVTU18zIGNoYXIgKnJlc3RyaWN0IGEsCisgICBTSUdORURO RVNTXzQgc2hvcnQgKnJlc3RyaWN0IGIpCit7CisgIGZvciAoX19JTlRQVFJfVFlQRV9fIGkgPSAw OyBpIDwgTjsgKytpKQorICAgIHsKKyAgICAgIGludCBhdiA9IGFbaV07CisgICAgICBpbnQgYnYg PSBiW2ldOworICAgICAgU0lHTkVETkVTU18yIGxvbmcgbXVsdCA9IGF2ICogYnY7CisgICAgICBy ZXMgKz0gbXVsdDsKKyAgICB9CisgIHJldHVybiByZXM7Cit9CisKKyNkZWZpbmUgQkFTRSAoKFNJ R05FRE5FU1NfMyBpbnQpIC0xIDwgMCA/IC0xMjYgOiA0KQorI2RlZmluZSBPRkZTRVQgMjAKKwor aW50CittYWluICh2b2lkKQoreworICBjaGVja192ZWN0ICgpOworCisgIFNJR05FRE5FU1NfMyBj aGFyIGFbTl07CisgIFNJR05FRE5FU1NfNCBzaG9ydCBiW05dOworICBpbnQgZXhwZWN0ZWQgPSAw eDEyMzQ1OworICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkKKyAgICB7CisgICAgICBhW2ld ID0gQkFTRSArIGkgKiA1OworICAgICAgYltpXSA9IEJBU0UgKyBPRkZTRVQgKyBpICogNDsKKyAg ICAgIGFzbSB2b2xhdGlsZSAoIiIgOjo6ICJtZW1vcnkiKTsKKyAgICAgIGV4cGVjdGVkICs9IChT SUdORURORVNTXzIgaW50KSAoYVtpXSAqIGJbaV0pOworICAgIH0KKyAgaWYgKGYgKDB4MTIzNDUs IGEsIGIpICE9IGV4cGVjdGVkKQorICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0X3JlY29nX2RvdF9wcm9kX3BhdHRlcm46IGRl dGVjdGVkIiAidmVjdCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92 ZWN0L3ZlY3QtcmVkdWMtZG90LTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qt cmVkdWMtZG90LTIwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1N2ZiMTU2MTViYTc5ZGVkY2JmYzQ0NDA3ZDNm MzYzMjc0YWQyNgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3Qv dmVjdC1yZWR1Yy1kb3QtMjAuYwpAQCAtMCwwICsxLDUyIEBACisvKiB7IGRnLXJlcXVpcmUtZWZm ZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCBhcm1fdjhfMmFfaThtbV9uZW9uX2h3IHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIHx8IGFy bSotKi0qIH0gfSB9ICovCisvKiB7IGRnLWFkZC1vcHRpb25zIGFybV92OF8yYV9pOG1tIH0gICov CisKKyNpbmNsdWRlICJ0cmVlLXZlY3QuaCIKKworI2RlZmluZSBOIDUwCisKKyNpZm5kZWYgU0lH TkVETkVTU18xCisjZGVmaW5lIFNJR05FRE5FU1NfMSB1bnNpZ25lZAorI2RlZmluZSBTSUdORURO RVNTXzIgc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1NfMyBzaWduZWQKKyNkZWZpbmUgU0lHTkVE TkVTU180IHVuc2lnbmVkCisjZW5kaWYKKworU0lHTkVETkVTU18xIGxvbmcgX19hdHRyaWJ1dGVf XyAoKG5vaXBhKSkKK2YgKFNJR05FRE5FU1NfMSBsb25nIHJlcywgU0lHTkVETkVTU18zIHNob3J0 ICpyZXN0cmljdCBhLAorICAgU0lHTkVETkVTU180IGNoYXIgKnJlc3RyaWN0IGIpCit7CisgIGZv ciAoX19JTlRQVFJfVFlQRV9fIGkgPSAwOyBpIDwgTjsgKytpKQorICAgIHsKKyAgICAgIGludCBh diA9IGFbaV07CisgICAgICBpbnQgYnYgPSBiW2ldOworICAgICAgU0lHTkVETkVTU18yIGxvbmcg bXVsdCA9IGF2ICogYnY7CisgICAgICByZXMgKz0gbXVsdDsKKyAgICB9CisgIHJldHVybiByZXM7 Cit9CisKKyNkZWZpbmUgQkFTRSAoKFNJR05FRE5FU1NfMyBpbnQpIC0xIDwgMCA/IC0xMjYgOiA0 KQorI2RlZmluZSBPRkZTRVQgMjAKKworaW50CittYWluICh2b2lkKQoreworICBjaGVja192ZWN0 ICgpOworCisgIFNJR05FRE5FU1NfMyBzaG9ydCBhW05dOworICBTSUdORURORVNTXzQgY2hhciBi W05dOworICBpbnQgZXhwZWN0ZWQgPSAweDEyMzQ1OworICBmb3IgKGludCBpID0gMDsgaSA8IE47 ICsraSkKKyAgICB7CisgICAgICBhW2ldID0gQkFTRSArIGkgKiA1OworICAgICAgYltpXSA9IEJB U0UgKyBPRkZTRVQgKyBpICogNDsKKyAgICAgIGFzbSB2b2xhdGlsZSAoIiIgOjo6ICJtZW1vcnki KTsKKyAgICAgIGV4cGVjdGVkICs9IChTSUdORURORVNTXzIgaW50KSAoYVtpXSAqIGJbaV0pOwor ICAgIH0KKyAgaWYgKGYgKDB4MTIzNDUsIGEsIGIpICE9IGV4cGVjdGVkKQorICAgIF9fYnVpbHRp bl9hYm9ydCAoKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0X3Jl Y29nX2RvdF9wcm9kX3BhdHRlcm46IGRldGVjdGVkIiAidmVjdCIgfSB9ICovCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTIxLmMgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTIxLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQwOGJm NDQ3OGJlODNkZTg2YjA5NzU1MjQ2ODdhNzVkMDI1MTIzZQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWR1Yy1kb3QtMjEuYwpAQCAtMCwwICsxLDUy IEBACisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovCisvKiB7 IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fdjhfMmFfaThtbV9uZW9uX2h3IHsgdGFy Z2V0IHsgYWFyY2g2NCotKi0qIHx8IGFybSotKi0qIH0gfSB9ICovCisvKiB7IGRnLWFkZC1vcHRp b25zIGFybV92OF8yYV9pOG1tIH0gICovCisKKyNpbmNsdWRlICJ0cmVlLXZlY3QuaCIKKworI2Rl ZmluZSBOIDUwCisKKyNpZm5kZWYgU0lHTkVETkVTU18xCisjZGVmaW5lIFNJR05FRE5FU1NfMSB1 bnNpZ25lZAorI2RlZmluZSBTSUdORURORVNTXzIgc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1Nf MyBzaWduZWQKKyNkZWZpbmUgU0lHTkVETkVTU180IHVuc2lnbmVkCisjZW5kaWYKKworU0lHTkVE TkVTU18xIGxvbmcgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkKK2YgKFNJR05FRE5FU1NfMSBsb25n IHJlcywgU0lHTkVETkVTU18zIGNoYXIgKnJlc3RyaWN0IGEsCisgICBTSUdORURORVNTXzQgc2hv cnQgKnJlc3RyaWN0IGIpCit7CisgIGZvciAoX19JTlRQVFJfVFlQRV9fIGkgPSAwOyBpIDwgTjsg KytpKQorICAgIHsKKyAgICAgIGludCBhdiA9IGFbaV07CisgICAgICBpbnQgYnYgPSBiW2ldOwor ICAgICAgU0lHTkVETkVTU18yIGludCBtdWx0ID0gYXYgKiBidjsKKyAgICAgIHJlcyArPSBtdWx0 OworICAgIH0KKyAgcmV0dXJuIHJlczsKK30KKworI2RlZmluZSBCQVNFICgoU0lHTkVETkVTU18z IGludCkgLTEgPCAwID8gLTEyNiA6IDQpCisjZGVmaW5lIE9GRlNFVCAyMAorCitpbnQKK21haW4g KHZvaWQpCit7CisgIGNoZWNrX3ZlY3QgKCk7CisKKyAgU0lHTkVETkVTU18zIGNoYXIgYVtOXTsK KyAgU0lHTkVETkVTU180IHNob3J0IGJbTl07CisgIGludCBleHBlY3RlZCA9IDB4MTIzNDU7Cisg IGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKQorICAgIHsKKyAgICAgIGFbaV0gPSBCQVNFICsg aSAqIDU7CisgICAgICBiW2ldID0gQkFTRSArIE9GRlNFVCArIGkgKiA0OworICAgICAgYXNtIHZv bGF0aWxlICgiIiA6OjogIm1lbW9yeSIpOworICAgICAgZXhwZWN0ZWQgKz0gKFNJR05FRE5FU1Nf MiBpbnQpIChhW2ldICogYltpXSk7CisgICAgfQorICBpZiAoZiAoMHgxMjM0NSwgYSwgYikgIT0g ZXhwZWN0ZWQpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgInZlY3RfcmVjb2dfZG90X3Byb2RfcGF0dGVybjogZGV0ZWN0ZWQiICJ2 ZWN0IiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1y ZWR1Yy1kb3QtMjIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWR1Yy1kb3Qt MjIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi5mZWJlYjE5Nzg0YzZhYWNhNzJkYzA4NzFhZjBkMzJjYzkxZmE2ZWEy Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVj LWRvdC0yMi5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFy Z2V0IHZlY3RfaW50IH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFybV92 OF8yYV9pOG1tX25lb25faHcgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfHwgYXJtKi0qLSogfSB9 IH0gKi8KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJtX3Y4XzJhX2k4bW0gfSAgKi8KKworI2luY2x1 ZGUgInRyZWUtdmVjdC5oIgorCisjZGVmaW5lIE4gNTAKKworI2lmbmRlZiBTSUdORURORVNTXzEK KyNkZWZpbmUgU0lHTkVETkVTU18xIHVuc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1NfMiB1bnNp Z25lZAorI2RlZmluZSBTSUdORURORVNTXzMgc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1NfNCB1 bnNpZ25lZAorI2VuZGlmCisKK1NJR05FRE5FU1NfMSBsb25nIF9fYXR0cmlidXRlX18gKChub2lw YSkpCitmIChTSUdORURORVNTXzEgbG9uZyByZXMsIFNJR05FRE5FU1NfMyBjaGFyICpyZXN0cmlj dCBhLAorICAgU0lHTkVETkVTU180IHNob3J0ICpyZXN0cmljdCBiKQoreworICBmb3IgKF9fSU5U UFRSX1RZUEVfXyBpID0gMDsgaSA8IE47ICsraSkKKyAgICB7CisgICAgICBpbnQgYXYgPSBhW2ld OworICAgICAgaW50IGJ2ID0gYltpXTsKKyAgICAgIFNJR05FRE5FU1NfMiBpbnQgbXVsdCA9IGF2 ICogYnY7CisgICAgICByZXMgKz0gbXVsdDsKKyAgICB9CisgIHJldHVybiByZXM7Cit9CisKKyNk ZWZpbmUgQkFTRSAoKFNJR05FRE5FU1NfMyBpbnQpIC0xIDwgMCA/IC0xMjYgOiA0KQorI2RlZmlu ZSBPRkZTRVQgMjAKKworaW50CittYWluICh2b2lkKQoreworICBjaGVja192ZWN0ICgpOworCisg IFNJR05FRE5FU1NfMyBjaGFyIGFbTl07CisgIFNJR05FRE5FU1NfNCBzaG9ydCBiW05dOworICBp bnQgZXhwZWN0ZWQgPSAweDEyMzQ1OworICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkKKyAg ICB7CisgICAgICBhW2ldID0gQkFTRSArIGkgKiA1OworICAgICAgYltpXSA9IEJBU0UgKyBPRkZT RVQgKyBpICogNDsKKyAgICAgIGFzbSB2b2xhdGlsZSAoIiIgOjo6ICJtZW1vcnkiKTsKKyAgICAg IGV4cGVjdGVkICs9IChTSUdORURORVNTXzIgaW50KSAoYVtpXSAqIGJbaV0pOworICAgIH0KKyAg aWYgKGYgKDB4MTIzNDUsIGEsIGIpICE9IGV4cGVjdGVkKQorICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAidmVjdF9yZWNvZ19k b3RfcHJvZF9wYXR0ZXJuOiBkZXRlY3RlZCIgInZlY3QiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC05LmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy92ZWN0L3ZlY3QtcmVkdWMtZG90LTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmJlZWRlYzNiZmQw ODEwYThjZTgwMzZlNjY3MDU4NWQ5MzM0OTI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlZHVjLWRvdC05LmMKQEAgLTAsMCArMSw1MiBAQAorLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLworLyogeyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXJtX3Y4XzJhX2k4bW1fbmVvbl9odyB7IHRhcmdldCB7IGFh cmNoNjQqLSotKiB8fCBhcm0qLSotKiB9IH0gfSAqLworLyogeyBkZy1hZGQtb3B0aW9ucyBhcm1f djhfMmFfaThtbSB9ICAqLworCisjaW5jbHVkZSAidHJlZS12ZWN0LmgiCisKKyNkZWZpbmUgTiA1 MAorCisjaWZuZGVmIFNJR05FRE5FU1NfMQorI2RlZmluZSBTSUdORURORVNTXzEgdW5zaWduZWQK KyNkZWZpbmUgU0lHTkVETkVTU18yIHVuc2lnbmVkCisjZGVmaW5lIFNJR05FRE5FU1NfMyBzaWdu ZWQKKyNkZWZpbmUgU0lHTkVETkVTU180IHVuc2lnbmVkCisjZW5kaWYKKworU0lHTkVETkVTU18x IGludCBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKQorZiAoU0lHTkVETkVTU18xIGludCByZXMsIFNJ R05FRE5FU1NfMyBjaGFyICpyZXN0cmljdCBhLAorICAgU0lHTkVETkVTU180IGNoYXIgKnJlc3Ry aWN0IGIpCit7CisgIGZvciAoX19JTlRQVFJfVFlQRV9fIGkgPSAwOyBpIDwgTjsgKytpKQorICAg IHsKKyAgICAgIGludCBhdiA9IGFbaV07CisgICAgICBpbnQgYnYgPSBiW2ldOworICAgICAgU0lH TkVETkVTU18yIHNob3J0IG11bHQgPSBhdiAqIGJ2OworICAgICAgcmVzICs9IG11bHQ7CisgICAg fQorICByZXR1cm4gcmVzOworfQorCisjZGVmaW5lIEJBU0UgKChTSUdORURORVNTXzMgaW50KSAt MSA8IDAgPyAtMTI2IDogNCkKKyNkZWZpbmUgT0ZGU0VUIDIwCisKK2ludAorbWFpbiAodm9pZCkK K3sKKyAgY2hlY2tfdmVjdCAoKTsKKworICBTSUdORURORVNTXzMgY2hhciBhW05dLCBiW05dOwor ICBpbnQgZXhwZWN0ZWQgPSAweDEyMzQ1OworICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkK KyAgICB7CisgICAgICBhW2ldID0gQkFTRSArIGkgKiA1OworICAgICAgYltpXSA9IEJBU0UgKyBP RkZTRVQgKyBpICogNDsKKyAgICAgIGFzbSB2b2xhdGlsZSAoIiIgOjo6ICJtZW1vcnkiKTsKKyAg ICAgIGV4cGVjdGVkICs9IChTSUdORURORVNTXzIgc2hvcnQpIChhW2ldICogYltpXSk7CisgICAg fQorICBpZiAoZiAoMHgxMjM0NSwgYSwgYikgIT0gZXhwZWN0ZWQpCisgICAgX19idWlsdGluX2Fi b3J0ICgpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJ2ZWN0X3Jl Y29nX2RvdF9wcm9kX3BhdHRlcm46IGRldGVjdGVkIiAidmVjdCIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wIiAxICJ2ZWN0IiB7 IHRhcmdldCB2ZWN0X3VzZG90X3FpIH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2xpYi90YXJnZXQtc3VwcG9ydHMuZXhwIGIvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBv cnRzLmV4cAppbmRleCA3Zjc4YzU1OTNhYzQzOTRmYTVjYTA1OGU0MTUxN2Q3ZTdjOThiZDA2Li5h NTNmZTgyOTI5ZTE0OGVhZTE5MTJmNTY4MWI2MWM1MGZmYTk4M2ExIDEwMDY0NAotLS0gYS9nY2Mv dGVzdHN1aXRlL2xpYi90YXJnZXQtc3VwcG9ydHMuZXhwCisrKyBiL2djYy90ZXN0c3VpdGUvbGli L3RhcmdldC1zdXBwb3J0cy5leHAKQEAgLTUyNjcsNiArNTI2NywzNiBAQCBwcm9jIGNoZWNrX2Vm ZmVjdGl2ZV90YXJnZXRfYXJtX3Y4XzJhX2RvdHByb2RfbmVvbl9va19ub2NhY2hlIHsgfSB7CiAg ICAgcmV0dXJuIDA7CiB9CiAKKyMgUmV0dXJuIDEgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyBBUk12 OC4yIEFkdi5TSU1EIGltbTgKKyMgaW5zdHJ1Y3Rpb25zLCAwIG90aGVyd2lzZS4gIFRoZSB0ZXN0 IGlzIHZhbGlkIGZvciBBUk0gYW5kIGZvciBBQXJjaDY0LgorIyBSZWNvcmQgdGhlIGNvbW1hbmQg bGluZSBvcHRpb25zIG5lZWRlZC4KKworcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X2FybV92 OF8yYV9pbW04X25lb25fb2tfbm9jYWNoZSB7IH0geworICAgIGdsb2JhbCBldF9hcm1fdjhfMmFf aW1tOF9uZW9uX2ZsYWdzCisgICAgc2V0IGV0X2FybV92OF8yYV9pbW04X25lb25fZmxhZ3MgIiIK KworICAgIGlmIHsgIVtpc3RhcmdldCBhcm0qLSotKl0gJiYgIVtpc3RhcmdldCBhYXJjaDY0Ki0q LSpdIH0geworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAjIEl0ZXJhdGUgdGhyb3Vn aCBzZXRzIG9mIG9wdGlvbnMgdG8gZmluZCB0aGUgY29tcGlsZXIgZmxhZ3MgdGhhdAorICAgICMg bmVlZCB0byBiZSBhZGRlZCB0byB0aGUgLW1hcmNoIG9wdGlvbi4KKyAgICBmb3JlYWNoIGZsYWdz IHsiIiAiLW1mbG9hdC1hYmk9c29mdGZwIC1tZnB1PW5lb24tZnAtYXJtdjgiICItbWZsb2F0LWFi aT1oYXJkIC1tZnB1PW5lb24tZnAtYXJtdjgifSB7CisgICAgICAgIGlmIHsgW2NoZWNrX25vX2Nv bXBpbGVyX21lc3NhZ2VzX25vY2FjaGUgXAorICAgICAgICAgICAgICAgICAgYXJtX3Y4XzJhX2lt bThfbmVvbl9vayBvYmplY3QgeworCSAgICAjaW5jbHVkZSA8c3RkaW50Lmg+CisgICAgICAgICAg ICAjaWYgIWRlZmluZWQgKF9fQVJNX0ZFQVRVUkVfTUFUTVVMX0lOVDgpCisgICAgICAgICAgICAj ZXJyb3IgIl9fQVJNX0ZFQVRVUkVfTUFUTVVMX0lOVDggbm90IGRlZmluZWQiCisgICAgICAgICAg ICAjZW5kaWYKKyAgICAgICAgfSAiJGZsYWdzIC1tYXJjaD1hcm12OC4yLWEraW1tOCJdIH0gewor ICAgICAgICAgICAgc2V0IGV0X2FybV92OF8yYV9pbW04X25lb25fZmxhZ3MgIiRmbGFncyAtbWFy Y2g9YXJtdjguMi1hK2ltbTgiCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICB9CisgICAg fQorCisgICAgcmV0dXJuIDA7Cit9CisKICMgUmV0dXJuIDEgaWYgdGhlIHRhcmdldCBzdXBwb3J0 cyBBUk12OC4xLU0gTVZFCiAjIGluc3RydWN0aW9ucywgMCBvdGhlcndpc2UuICBUaGUgdGVzdCBp cyB2YWxpZCBmb3IgQVJNLgogIyBSZWNvcmQgdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIG5lZWRl ZC4KQEAgLTU2OTQsNiArNTcyNCw0MyBAQCBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfYXJt X3Y4XzJhX2RvdHByb2RfbmVvbl9odyB7IH0gewogICAgIH0gW2FkZF9vcHRpb25zX2Zvcl9hcm1f djhfMmFfZG90cHJvZF9uZW9uICIiXV0KIH0KIAorIyBSZXR1cm4gMSBpZiB0aGUgdGFyZ2V0IHN1 cHBvcnRzIGV4ZWN1dGluZyBBZHZTSU1EIGluc3RydWN0aW9ucyBmcm9tIEFSTXY4LjIKKyMgd2l0 aCB0aGUgaThtbSBleHRlbnNpb24sIDAgb3RoZXJ3aXNlLiAgVGhlIHRlc3QgaXMgdmFsaWQgZm9y IEFSTSBhbmQgZm9yCisjIEFBcmNoNjQuCisKK3Byb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9h cm1fdjhfMmFfaThtbV9uZW9uX2h3IHsgfSB7CisgICAgaWYgeyAhW2NoZWNrX2VmZmVjdGl2ZV90 YXJnZXRfYXJtX3Y4XzJhX2k4bW1fb2tdIH0geworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg ICAgcmV0dXJuIFtjaGVja19ydW50aW1lIGFybV92OF8yYV9pOG1tX25lb25faHdfYXZhaWxhYmxl IHsKKyAgICAgICAgI2luY2x1ZGUgImFybV9uZW9uLmgiCisgICAgICAgIGludAorICAgICAgICBt YWluICh2b2lkKQorICAgICAgICB7CisKKwkgIHVpbnQzMngyX3QgcmVzdWx0cyA9IHswLDB9Owor CSAgdWludDh4OF90IGEgPSB7MSwxLDEsMSwyLDIsMiwyfTsKKwkgIGludDh4OF90IGIgPSB7Miwy LDIsMiwzLDMsMywzfTsKKworICAgICAgICAgICNpZmRlZiBfX0FSTV9BUkNIX0lTQV9BNjQKKyAg ICAgICAgICBhc20gKCJ1c2RvdCAlMC4ycywgJTEuOGIsICUyLjhiIgorICAgICAgICAgICAgICAg OiAiPXciKHJlc3VsdHMpCisgICAgICAgICAgICAgICA6ICJ3IihhKSwgInciKGIpCisgICAgICAg ICAgICAgICA6IC8qIE5vIGNsb2JiZXJzLiAgKi8pOworCisJICAjZWxzZQorICAgICAgICAgIGFz bSAoInZ1c2RvdC51OCAlUDAsICVQMSwgJVAyIgorICAgICAgICAgICAgICAgOiAiPXciKHJlc3Vs dHMpCisgICAgICAgICAgICAgICA6ICJ3IihhKSwgInciKGIpCisgICAgICAgICAgICAgICA6IC8q IE5vIGNsb2JiZXJzLiAgKi8pOworICAgICAgICAgICNlbmRpZgorCisgICAgICAgICAgcmV0dXJu ICh2Z2V0X2xhbmVfdTMyIChyZXN1bHRzLCAwKSA9PSA4CisJCSAgJiYgdmdldF9sYW5lX3UzMiAo cmVzdWx0cywgMSkgPT0gMjQpID8gMSA6IDA7CisgICAgICAgIH0KKyAgICB9IFthZGRfb3B0aW9u c19mb3JfYXJtX3Y4XzJhX2k4bW0gIiJdXQorfQorCiAjIFJldHVybiAxIGlmIHRoaXMgaXMgYSBB Uk0gdGFyZ2V0IHdpdGggTkVPTiBlbmFibGVkLgogCiBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJn ZXRfYXJtX25lb24geyB9IHsKQEAgLTcwNDksNiArNzExNiwxOSBAQCBwcm9jIGNoZWNrX2VmZmVj dGl2ZV90YXJnZXRfdmVjdF91ZG90X3FpIHsgfSB7CiAJCSAmJiBbZXQtaXMtZWZmZWN0aXZlLXRh cmdldCBtaXBzX21zYV0pIH19XQogfQogCisjIFJldHVybiAxIGlmIHRoZSB0YXJnZXQgcGx1cyBj dXJyZW50IG9wdGlvbnMgc3VwcG9ydHMgYSB2ZWN0b3IKKyMgZG90LXByb2R1Y3Qgd2hlcmUgb25l IG9wZXJhbmQgb2YgdGhlIG11bHRpcGx5IGlzIHNpZ25lZCBjaGFyCisjIGFuZCB0aGUgb3RoZXIg dW5zaWduZWQgY2hhcnMsIDAgb3RoZXJ3aXNlLgorIworIyBUaGlzIHdvbid0IGNoYW5nZSBmb3Ig ZGlmZmVyZW50IHN1YnRhcmdldHMgc28gY2FjaGUgdGhlIHJlc3VsdC4KKworcHJvYyBjaGVja19l ZmZlY3RpdmVfdGFyZ2V0X3ZlY3RfdXNkb3RfcWkgeyB9IHsKKyAgICByZXR1cm4gW2NoZWNrX2Nh Y2hlZF9lZmZlY3RpdmVfdGFyZ2V0X2luZGV4ZWQgdmVjdF91c2RvdF9xaSB7CisgICAgICBleHBy IHsgW2lzdGFyZ2V0IGFhcmNoNjQqLSotKl0KKwkgICAgIHx8IFtpc3RhcmdldCBhcm0qLSotKl0g fX1dCit9CisKKwogIyBSZXR1cm4gMSBpZiB0aGUgdGFyZ2V0IHBsdXMgY3VycmVudCBvcHRpb25z IHN1cHBvcnRzIGEgdmVjdG9yCiAjIGRvdC1wcm9kdWN0IG9mIHNpZ25lZCBzaG9ydHMsIDAgb3Ro ZXJ3aXNlLgogIwo= --_002_VI1PR08MB532515C197BE8CFBCF6BB086FF319VI1PR08MB5325eurp_--