From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00074.outbound.protection.outlook.com [40.107.0.74]) by sourceware.org (Postfix) with ESMTPS id 19A69385702F for ; Mon, 12 Jul 2021 12:29:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 19A69385702F Received: from DB9PR01CA0013.eurprd01.prod.exchangelabs.com (2603:10a6:10:1d8::18) by DBBPR08MB4553.eurprd08.prod.outlook.com (2603:10a6:10:d2::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.24; Mon, 12 Jul 2021 12:29:31 +0000 Received: from DB5EUR03FT044.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:1d8:cafe::5) by DB9PR01CA0013.outlook.office365.com (2603:10a6:10:1d8::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.19 via Frontend Transport; Mon, 12 Jul 2021 12:29:31 +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 DB5EUR03FT044.mail.protection.outlook.com (10.152.21.167) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.20 via Frontend Transport; Mon, 12 Jul 2021 12:29:31 +0000 Received: ("Tessian outbound 17c2a40a31ce:v98"); Mon, 12 Jul 2021 12:29:31 +0000 X-CR-MTA-TID: 64aa7808 Received: from 921181a347f3.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6F57CF1D-7BFE-42ED-989F-D52D808A7839.1; Mon, 12 Jul 2021 12:29:26 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 921181a347f3.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 12 Jul 2021 12:29:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L3znaR3lFH6DJW31Xw9qpRFxwOTsOXP9wR6qVsNrefhQ9VCU2xzuHDHk19ucjf5/iPd0/GxT65BmSGdW8uLRsWXN+shDtrXZGh6TziszOfkLRerSNqe0EuZiZR9HOj6JVEoXmx7aGKnVO1FIAD1sxmd5zXxZq1KZ1VVz5RWLz9ZwwnKGcQ8jKL6BRHYwQGCNGqpG6LDvqF2WrkLbMaJTbcOiNbZcYuRdSnONlkLJ76WNUpFNHQarPUk7b191zGu9pX7E1ShmHBY2HTcsAkxmfccT9qAZdwlfREUI1UWqiCbc7tg1y58I6HRUxNxAk5WqMvtHCyk8DVw1AAzPUjOBNQ== 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=i3g7MBqhSIPqMv/kxmIpjiTewxrOvJTXYoUU+wi92gg=; b=Z6rMwQlMDWplndAmnwDu//chUFOAetl4E6U8IGyX+cJPrM7Mxoc6URW0I7WecBDbkyBuU7w/ipHz84cW30MTzhlz8xcF6iZadnjurLmUQ4sQexQ7z6uCWDw9UOWparlyP8KiF3zBHXPf9F7L0acde0V0yzgBxj64lEovpuOoIbXuibi02f3f95p90MKBdYCoQDDoOj4gHm66fWsrQ8UGb3hjJ87mN+u0K2Fvk9c8d+v83qOczHpnlCnBtKlF7sG1YFpOQoYaUDA08G5lideIYEQL4iw5wps+VFoSzksBhCUZTNHjhUhyAhbTvEeqNAGf54D8xZ/R+YcQjhi2lXgJQA== 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 VI1PR08MB5453.eurprd08.prod.outlook.com (2603:10a6:803:132::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4308.20; Mon, 12 Jul 2021 12:29:23 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::cdbb:a6b9:e814:19c7]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::cdbb:a6b9:e814:19c7%8]) with mapi id 15.20.4308.026; Mon, 12 Jul 2021 12:29:23 +0000 From: Tamar Christina To: Richard Sandiford CC: Richard Biener , nd , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH 1/4]middle-end Vect: Add support for dot-product where the sign for the multiplicant changes. Thread-Topic: [PATCH 1/4]middle-end Vect: Add support for dot-product where the sign for the multiplicant changes. Thread-Index: AQHXQdV4g2WFnSd+rEyE6iZSy1EmNqrX6WiAgAABSHCABLQJgIAAAwwAgAAbeYCAF6c1YIABMgmAgAsI3tCAAzBucIAEtzcggAsfWKCADICC1oAABcOWgB9MZOCAAAbnvIAAA6YggAAJWyWAACGeIA== Date: Mon, 12 Jul 2021 12:29:23 +0000 Message-ID: References: <7q3oonr2-92r0-8o9q-s27q-9r735s4n3s3@fhfr.qr> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: BC631BEFA98AE644A0E60DA2F85CF85E.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: 28e24aeb-a305-4015-08fc-08d94530b326 x-ms-traffictypediagnostic: VI1PR08MB5453:|DBBPR08MB4553: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:2733;OLM:2733; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: F7CdaizzTHHVaQaTWBsG7lp+3d2tj6Ih+j1kXfWziyQRT/NxROOiwi2e3dnU7mQ2LVqiDH0qq6iwfDsvNledR3JISzYLlu78+AkviAZq45J0dmtAgGHygHAH6pV1HcxQ3Vl0GJ0mX9bH7iQ36qpiQEL6KHGy9ZLMHx0HpeKv2647AYWIZ3kdHmQuLPB1+S637BA9BgFnZDFrYsDJk4iUExqhm5m99PRuo0BSIfeU0LFykoTmpE2HWwEe18HgGc2sf21a74rmDfBwnKEqRJEqju16UV69KRyuKbImi99Drx8GhOiIPLTlZ8bLY9ag6deQRNBtwOgPJqCoLHaa7kZreCfErSWfKWJq05y/T3YMRc550tvplmNY/sIjoo0GvB5RZMvPH1nbKPGHZDcVXC99oVdqtdaKZhl6XdyEY4c14lNzPQocvbeeOKbRPTHntFbV0B53yv2ekZO5Jx2GQ8Sg9PqXWI5S5evCiatyqRirsLBoZD/T9EjzFKk8K/Ez9jEB3iZWFLZKgrEgNSUXKiAFf7mxpsiQBHJ4qoqaYyzfIJexuIbGaTLwv1thrSPze7U9h+GhH8K1zFJvx1Nsrl649IZV+22NxeBRKpmNZSrsHz1bK6wzsUREVg8CXt/5d3XcVwU1grfrD9Cxxwhn1TPYiARJh45A/e/wQL0eoD+qMCLUoruApdFgFby+GwiJ90q3MvnzZ5LO/+vahEwcp0yXJJ9lxQDv76IgduUC2gZ9GgjL4xWYa4XgSJPXDL1jsB/YMe9LREEgPtDzWj5PB2xQgg== 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)(396003)(366004)(346002)(376002)(136003)(39860400002)(8936002)(966005)(38100700002)(186003)(5660300002)(6636002)(6506007)(54906003)(99936003)(6862004)(8676002)(55016002)(76116006)(9686003)(53546011)(316002)(52536014)(478600001)(64756008)(33656002)(66556008)(66616009)(66476007)(122000001)(26005)(66446008)(83380400001)(2906002)(7696005)(71200400001)(86362001)(4326008)(66946007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?V8izmvQt41p/7ZDev8xVGXSb18meDP9OUgj3lroCZFTWJPZcDzGsacMRAsZG?= =?us-ascii?Q?FkFFuePXSgbLsJ0PnWaH/TjrZ2haK+qTz2bxeBE6KjE4DHFPK3Zi30heiyxe?= =?us-ascii?Q?JvqmcjvqRc8GUfnKOoBu8x7KK0ODSds4U3PRNUtnFrqYXGDd0ozZ0XgBaUha?= =?us-ascii?Q?6rGlUxq48/ECnsmNFdP9mmDeYHUR0nNpBnVL92qhJDGfGHLGeikWVRR8ORXw?= =?us-ascii?Q?cB89kucfK32GO+UuFnPvggS2OdXQU44IvtkiPdYBP68i3fxxWYNgfC4XYZl0?= =?us-ascii?Q?Xp9XLOeW4ApbGRorbXYDOrDikjYAuiTl/Z9CMIw0EbaIt4Py/eSqxfyQieys?= =?us-ascii?Q?3N4nxgyjAPM/qoJdidD1BIydylpoSWCaWY6sV03GQjRaeCAirw8Z4/fZrlak?= =?us-ascii?Q?boIZeJJxTwUu97LfGGVtunqB/mEw6v0POdDlRmKQPXsROEvnfy+TFOZMK87L?= =?us-ascii?Q?IcKzl0rba6E8GuKcFvHq6wZprnXKbsqtcviF8Syf1tqtX4XgY+XBSdIWFoH0?= =?us-ascii?Q?aQ0I8Yt+kzrIB5z6aSplnlRPzBoEw6pi458oZSG5+ejkv/8smfpIMLd1Gxaj?= =?us-ascii?Q?AHVPSGFTJarK5IuSGO2uEn5rUuilY7izYQk49QBwiHWv/w+nv82PY18ebZ+t?= =?us-ascii?Q?TovGDYd5TTA5PiQH0Vh/s2qOfmyJXPNU8N7SZ3x/r+r0ptSb8Q8i0gza5yZG?= =?us-ascii?Q?38mNR0I+kP1LhCfjrrnH7xy250H2g1qg2ejdYIhLep+TKOv7fFF1GooMWqQP?= =?us-ascii?Q?ANKfKJpwyx8AbOYF7chnyP2jguWStQUTGWp+74KEcPjVsc18UG7dCVoaBZgZ?= =?us-ascii?Q?SECrVdod+xzY8FpMoG4Bxb2NJlM4p7rUU5x5WW/Z4+tG3LaxjZnz56QpPPpX?= =?us-ascii?Q?UmhksH7sqhT4cpyMDCviTknOYEQb0utIMAHK5qaoEN1Duq2nc3e2leKdTf4A?= =?us-ascii?Q?Heh599Vm+dGf2b5A8VIkV+z4zbyPSCLu6FrIq+qSErlAZn9+sQu0c/QqyytN?= =?us-ascii?Q?K7Cpe26jt9Eljn8d1ulg56pLShUumKRD1dB61NLJ4JEOcRZJQxvPXziHJZuk?= =?us-ascii?Q?ynFe3z5eJuVHS5r8jMoOwl2efskpVcMJ3FCyey59vRYAFI/wN8Hvz7uwzl6l?= =?us-ascii?Q?N7wC3Ga5lH+egmDbdi9sbWfm2vNOm1Lk71YKP43tutje+JtJh9ka87HctIId?= =?us-ascii?Q?N8wevAn+O+3jx1s3tBrSV5Op8ThbskMOWSA5piV3p+I1GqqYLI4xvzveV8mM?= =?us-ascii?Q?ZHbYs+lIWhgBOx2wks4gQBN+ve5hvzqLbWEB9SC1hsO5RjGJAugVzHEVNe66?= =?us-ascii?Q?Glc6er7v1jVeq0dN9co6gBh8?= Content-Type: multipart/mixed; boundary="_002_VI1PR08MB532570940234239E9F607285FF159VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5453 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: DB5EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 1405481e-63d4-41ac-59dd-08d94530ae7c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lIiFJjiIgSU4VXmRUuhLgX9Pn6MgZCt5l+Jh8bKyLBW0OtD07PQm2sWB4rwG7vCr+GCn8JXEGL7X6YZ75492iZiuyuDDvdmLh1VQkUCHkxwB23zZkSQvZA6sIcUPT/rr4vGooFbL5MHeRgVNKCffrIE07DYjopsiShfoXcAKyK5zN4IzT8mnLBOYDzzXFdxqqLpz/rMfG/rfjTXQI+duUh49bO73TyRC0AIQtd8PnejTyALVwjt3qEOLyn1S0Z3PfsP+UQq3bx3gf87PHYz361jB7phup6BKtIxp7q6tDOXOpWiufC3iKtF+gG7xuZIEFxiqG1o9FOnl3JPN03N2nLcYN6lAPF2/MRCq4pRLqa8cAiuA0hxdybq5yF+nGo2oGHjjDq0zbXqdkKPGC/5Y3qQehucfAEyZzW05IT14TdfRDGz7pJMLHSBZQDOtsFzVK3UI9uzKw/E+4cz+uyVLKhJn3rx6wuB+CZVBX6P0nN8MVYJFhMk+0Ff5NIUuuQHNieFPnOncN5u2aN3oWkOK3ER4+f9Gf+YbRwCarpLwSrUmigdPPIZYPFaq1lLr1QQL6sHDeZmpfJXfFBTflfWbFRhT++3pYtnt2DrurNP+n6lN5c1DyjfFrRROF0n2j64Kt6yLV8ivDhKUm0CYUnd//QE618qQtJSYL7gJ3arx5o5xIRThT1pSHMR2g5iBf+5GgL34TUb79Ijn3fPRsTcAp21M2LTS/BvmGUowiR3/UxHxsnMT0LrSt7jD1MYUpceQO92r8ALMoXxeCyBf/e0ykaJ1TAQL1vhHXbUISiEVXC+CVTCo6YUghR+qrGLveRkFmOaDo3wp1YPiwmCY0FC4wA== 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)(136003)(39850400004)(396003)(376002)(346002)(36840700001)(46966006)(235185007)(52536014)(82740400003)(86362001)(8936002)(47076005)(7696005)(55016002)(99936003)(82310400003)(81166007)(5660300002)(36860700001)(356005)(83380400001)(186003)(6862004)(26005)(70586007)(66616009)(70206006)(6636002)(6506007)(53546011)(478600001)(4326008)(8676002)(966005)(33656002)(54906003)(2906002)(336012)(316002)(9686003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2021 12:29:31.5906 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 28e24aeb-a305-4015-08fc-08d94530b326 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: DB5EUR03FT044.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4553 X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, KAM_SHORT, RCVD_IN_DNSWL_LOW, 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: Mon, 12 Jul 2021 12:29:40 -0000 --_002_VI1PR08MB532570940234239E9F607285FF159VI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Richard Sandiford > Sent: Monday, July 12, 2021 11:26 AM > To: Tamar Christina > Cc: Richard Biener ; nd ; gcc- > patches@gcc.gnu.org > Subject: Re: [PATCH 1/4]middle-end Vect: Add support for dot-product > where the sign for the multiplicant changes. >=20 > Tamar Christina writes: > >> -----Original Message----- > >> From: Richard Sandiford > >> Sent: Monday, July 12, 2021 10:39 AM > >> To: Tamar Christina > >> Cc: Richard Biener ; nd ; gcc- > >> patches@gcc.gnu.org > >> Subject: Re: [PATCH 1/4]middle-end Vect: Add support for dot-product > >> where the sign for the multiplicant changes. > >> > >> Tamar Christina writes: > >> > Hi, > >> > > >> >> Richard Sandiford writes: > >> >> >> @@ -992,21 +1029,27 @@ vect_recog_dot_prod_pattern (vec_info > >> >> *vinfo, > >> >> >> /* FORNOW. Can continue analyzing the def-use chain when > >> >> >> this stmt in > >> >> a phi > >> >> >> inside the loop (in case we are analyzing an outer-loop). = */ > >> >> >> vect_unpromoted_value unprom0[2]; > >> >> >> + enum optab_subtype subtype =3D optab_vector; > >> >> >> if (!vect_widened_op_tree (vinfo, mult_vinfo, MULT_EXPR, > >> >> WIDEN_MULT_EXPR, > >> >> >> - false, 2, unprom0, &half_type)) > >> >> >> + false, 2, unprom0, &half_type, &subtype)) > >> >> >> + return NULL; > >> >> >> + > >> >> >> + if (subtype =3D=3D optab_vector_mixed_sign > >> >> >> + && TYPE_UNSIGNED (unprom_mult.type) > >> >> >> + && TYPE_PRECISION (half_type) * 4 > TYPE_PRECISION > >> >> >> + (unprom_mult.type)) > >> >> >> return NULL; > >> >> > > >> >> > Isn't the final condition here instead that TYPE1 is narrower tha= n > TYPE2? > >> >> > I.e. we need to reject the case in which we multiply a signed > >> >> > and an unsigned value to get a (logically) signed result, but > >> >> > then zero-extend it (rather than sign-extend it) to the > >> >> > precision of the > >> addition. > >> >> > > >> >> > That would make the test: > >> >> > > >> >> > if (subtype =3D=3D optab_vector_mixed_sign > >> >> > && TYPE_UNSIGNED (unprom_mult.type) > >> >> > && TYPE_PRECISION (unprom_mult.type) < TYPE_PRECISION > (type)) > >> >> > return NULL; > >> >> > > >> >> > instead. > >> >> > >> >> And folding that into the existing test gives: > >> >> > >> >> /* If there are two widening operations, make sure they agree on > >> >> the > >> sign > >> >> of the extension. The result of an optab_vector_mixed_sign > operation > >> >> is signed; otherwise, the result has the same sign as the oper= ands. > */ > >> >> if (TYPE_PRECISION (unprom_mult.type) !=3D TYPE_PRECISION (type) > >> >> && (subtype =3D=3D optab_vector_mixed_sign > >> >> ? TYPE_UNSIGNED (unprom_mult.type) > >> >> : TYPE_SIGN (unprom_mult.type) !=3D TYPE_SIGN (half_type))) > >> >> return NULL; > >> >> > >> > > >> > I went with the first one which doesn't add the extra constraints > >> > for the normal dotproduct as that makes it too restrictive. It's > >> > the type of the multiplication that determines the operation so > >> > dotproduct can be used a bit more than where we currently do. > >> > > >> > This was relaxed in an earlier patch. > >> > >> I didn't mean that we should add extra constraints to the normal case > though. > >> The existing test I was referring to above was: > >> > >> /* If there are two widening operations, make sure they agree on > >> the sign of the extension. */ > >> if (TYPE_PRECISION (unprom_mult.type) !=3D TYPE_PRECISION (type) > >> && TYPE_SIGN (unprom_mult.type) !=3D TYPE_SIGN (half_type)) > >> return NULL; > > > > But as I mentioned, this restriction is unneeded and has been removed > hence why it's not in my patchset's diff. > > It's removed by > > https://gcc.gnu.org/pipermail/gcc-patches/2021-May/569851.html which > Richi conditioned on the rest of these patches being approved. > > > > This change needlessly blocks test vect-reduc-dot-[2,3,6,7].c from > > being dotproducts for instance > > > > It's also part of the deficiency between GCC codegen and Clang > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D88492#c6 >=20 > Hmm, OK. Just removing the check regresses: >=20 > unsigned long __attribute__ ((noipa)) > f (signed short *x, signed short *y) > { > unsigned long res =3D 0; > for (int i =3D 0; i < 100; ++i) > res +=3D (unsigned int) x[i] * (unsigned int) y[i]; > return res; > } >=20 > int > main (void) > { > signed short x[100], y[100]; > for (int i =3D 0; i < 100; ++i) > { > x[i] =3D -1; > y[i] =3D 1; > } > if (f (x, y) !=3D 0x6400000000ULL - 100) > __builtin_abort (); > return 0; > } >=20 > on SVE. We then use SDOT even though the result of the multiplication is > zero- rather than sign-extended to 64 bits. Does something else in the s= eries > stop that from that happening? No, and I hadn't noticed it before because it looks like the mid-end tests = that are execution test don't turn on dot-product for arm targets :/=20 I'll look at it separately, for now I've then added the check back in. Ok for trunk now? Thanks, Tamar >=20 > Richard --_002_VI1PR08MB532570940234239E9F607285FF159VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb14433.patch" Content-Description: rb14433.patch Content-Disposition: attachment; filename="rb14433.patch"; size=16746; creation-date="Mon, 12 Jul 2021 12:28:00 GMT"; modification-date="Mon, 12 Jul 2021 12:28:00 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQudGV4aSBiL2djYy9kb2MvbWQudGV4aQppbmRleCAxYjkx ODE0NDMzMDU3YjFiMzc3MjgzZmQxZjQwY2I5NzBkYzNkMjQzLi4zMjNiYThlYWI3OGUyYjJlNTgy ZmEwNjMzNzUyOTMwMTgyZTgzZWU1IDEwMDY0NAotLS0gYS9nY2MvZG9jL21kLnRleGkKKysrIGIv Z2NjL2RvYy9tZC50ZXhpCkBAIC01NDQ2LDEzICs1NDQ2LDU1IEBAIExpa2UgQHNhbXB7Zm9sZF9s ZWZ0X3BsdXNfQHZhcnttfX0sIGJ1dCB0YWtlcyBhbiBhZGRpdGlvbmFsIG1hc2sgb3BlcmFuZAog CiBAY2luZGV4IEBjb2Rle3Nkb3RfcHJvZEB2YXJ7bX19IGluc3RydWN0aW9uIHBhdHRlcm4KIEBp dGVtIEBzYW1we3Nkb3RfcHJvZEB2YXJ7bX19CisKK0NvbXB1dGUgdGhlIHN1bSBvZiB0aGUgcHJv ZHVjdHMgb2YgdHdvIHNpZ25lZCBlbGVtZW50cy4KK09wZXJhbmQgMSBhbmQgb3BlcmFuZCAyIGFy ZSBvZiB0aGUgc2FtZSBtb2RlLiBUaGVpcgorcHJvZHVjdCwgd2hpY2ggaXMgb2YgYSB3aWRlciBt b2RlLCBpcyBjb21wdXRlZCBhbmQgYWRkZWQgdG8gb3BlcmFuZCAzLgorT3BlcmFuZCAzIGlzIG9m IGEgbW9kZSBlcXVhbCBvciB3aWRlciB0aGFuIHRoZSBtb2RlIG9mIHRoZSBwcm9kdWN0LiBUaGUK K3Jlc3VsdCBpcyBwbGFjZWQgaW4gb3BlcmFuZCAwLCB3aGljaCBpcyBvZiB0aGUgc2FtZSBtb2Rl IGFzIG9wZXJhbmQgMy4KKworU2VtYW50aWNhbGx5IHRoZSBleHByZXNzaW9ucyBwZXJmb3JtIHRo ZSBtdWx0aXBsaWNhdGlvbiBpbiB0aGUgZm9sbG93aW5nIHNpZ25zCisKK0BzbWFsbGV4YW1wbGUK K3Nkb3Q8c2lnbmVkIGMsIHNpZ25lZCBhLCBzaWduZWQgYj4gPT0KKyAgIHJlcyA9IHNpZ24tZXh0 IChhKSAqIHNpZ24tZXh0IChiKSArIGMKK0Bkb3Rze30KK0BlbmQgc21hbGxleGFtcGxlCisKIEBj aW5kZXggQGNvZGV7dWRvdF9wcm9kQHZhcnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybgotQGl0ZW14 IEBzYW1we3Vkb3RfcHJvZEB2YXJ7bX19Ci1Db21wdXRlIHRoZSBzdW0gb2YgdGhlIHByb2R1Y3Rz IG9mIHR3byBzaWduZWQvdW5zaWduZWQgZWxlbWVudHMuCi1PcGVyYW5kIDEgYW5kIG9wZXJhbmQg MiBhcmUgb2YgdGhlIHNhbWUgbW9kZS4gVGhlaXIgcHJvZHVjdCwgd2hpY2ggaXMgb2YgYQotd2lk ZXIgbW9kZSwgaXMgY29tcHV0ZWQgYW5kIGFkZGVkIHRvIG9wZXJhbmQgMy4gT3BlcmFuZCAzIGlz IG9mIGEgbW9kZSBlcXVhbCBvcgotd2lkZXIgdGhhbiB0aGUgbW9kZSBvZiB0aGUgcHJvZHVjdC4g VGhlIHJlc3VsdCBpcyBwbGFjZWQgaW4gb3BlcmFuZCAwLCB3aGljaAotaXMgb2YgdGhlIHNhbWUg bW9kZSBhcyBvcGVyYW5kIDMuCitAaXRlbSBAc2FtcHt1ZG90X3Byb2RAdmFye219fQorCitDb21w dXRlIHRoZSBzdW0gb2YgdGhlIHByb2R1Y3RzIG9mIHR3byB1bnNpZ25lZCBlbGVtZW50cy4KK09w ZXJhbmQgMSBhbmQgb3BlcmFuZCAyIGFyZSBvZiB0aGUgc2FtZSBtb2RlLiBUaGVpcgorcHJvZHVj dCwgd2hpY2ggaXMgb2YgYSB3aWRlciBtb2RlLCBpcyBjb21wdXRlZCBhbmQgYWRkZWQgdG8gb3Bl cmFuZCAzLgorT3BlcmFuZCAzIGlzIG9mIGEgbW9kZSBlcXVhbCBvciB3aWRlciB0aGFuIHRoZSBt b2RlIG9mIHRoZSBwcm9kdWN0LiBUaGUKK3Jlc3VsdCBpcyBwbGFjZWQgaW4gb3BlcmFuZCAwLCB3 aGljaCBpcyBvZiB0aGUgc2FtZSBtb2RlIGFzIG9wZXJhbmQgMy4KKworU2VtYW50aWNhbGx5IHRo ZSBleHByZXNzaW9ucyBwZXJmb3JtIHRoZSBtdWx0aXBsaWNhdGlvbiBpbiB0aGUgZm9sbG93aW5n IHNpZ25zCisKK0BzbWFsbGV4YW1wbGUKK3Vkb3Q8dW5zaWduZWQgYywgdW5zaWduZWQgYSwgdW5z aWduZWQgYj4gPT0KKyAgIHJlcyA9IHplcm8tZXh0IChhKSAqIHplcm8tZXh0IChiKSArIGMKK0Bk b3Rze30KK0BlbmQgc21hbGxleGFtcGxlCisKKworCitAY2luZGV4IEBjb2Rle3VzZG90X3Byb2RA dmFye219fSBpbnN0cnVjdGlvbiBwYXR0ZXJuCitAaXRlbSBAc2FtcHt1c2RvdF9wcm9kQHZhcntt fX0KK0NvbXB1dGUgdGhlIHN1bSBvZiB0aGUgcHJvZHVjdHMgb2YgZWxlbWVudHMgb2YgZGlmZmVy ZW50IHNpZ25zLgorT3BlcmFuZCAxIG11c3QgYmUgdW5zaWduZWQgYW5kIG9wZXJhbmQgMiBzaWdu ZWQuIFRoZWlyCitwcm9kdWN0LCB3aGljaCBpcyBvZiBhIHdpZGVyIG1vZGUsIGlzIGNvbXB1dGVk IGFuZCBhZGRlZCB0byBvcGVyYW5kIDMuCitPcGVyYW5kIDMgaXMgb2YgYSBtb2RlIGVxdWFsIG9y IHdpZGVyIHRoYW4gdGhlIG1vZGUgb2YgdGhlIHByb2R1Y3QuIFRoZQorcmVzdWx0IGlzIHBsYWNl ZCBpbiBvcGVyYW5kIDAsIHdoaWNoIGlzIG9mIHRoZSBzYW1lIG1vZGUgYXMgb3BlcmFuZCAzLgor CitTZW1hbnRpY2FsbHkgdGhlIGV4cHJlc3Npb25zIHBlcmZvcm0gdGhlIG11bHRpcGxpY2F0aW9u IGluIHRoZSBmb2xsb3dpbmcgc2lnbnMKKworQHNtYWxsZXhhbXBsZQordXNkb3Q8dW5zaWduZWQg YywgdW5zaWduZWQgYSwgc2lnbmVkIGI+ID09CisgICByZXMgPSAoKHVuc2lnbmVkLWNvbnYpIHNp Z24tZXh0IChhKSkgKiB6ZXJvLWV4dCAoYikgKyBjCitAZG90c3t9CitAZW5kIHNtYWxsZXhhbXBs ZQogCiBAY2luZGV4IEBjb2Rle3NzYWRAdmFye219fSBpbnN0cnVjdGlvbiBwYXR0ZXJuCiBAaXRl bSBAc2FtcHtzc2FkQHZhcnttfX0KZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMtdHJlZS5oIGIvZ2Nj L29wdGFicy10cmVlLmgKaW5kZXggYzNhYWExYTQxNjk5MWU4NTZkM2UyNGRhNDU5NjhhOTJlYmFk YTgyYy4uZmJkMmIwNmI4ZGJmZDU2MGRmYjY2YjMxNDgzMGU2YjU2NGIzN2FiYiAxMDA2NDQKLS0t IGEvZ2NjL29wdGFicy10cmVlLmgKKysrIGIvZ2NjL29wdGFicy10cmVlLmgKQEAgLTI5LDcgKzI5 LDggQEAgZW51bSBvcHRhYl9zdWJ0eXBlCiB7CiAgIG9wdGFiX2RlZmF1bHQsCiAgIG9wdGFiX3Nj YWxhciwKLSAgb3B0YWJfdmVjdG9yCisgIG9wdGFiX3ZlY3RvciwKKyAgb3B0YWJfdmVjdG9yX21p eGVkX3NpZ24KIH07CiAKIC8qIFJldHVybiB0aGUgb3B0YWIgdXNlZCBmb3IgY29tcHV0aW5nIHRo ZSBnaXZlbiBvcGVyYXRpb24gb24gdGhlIHR5cGUgZ2l2ZW4gYnkKZGlmZiAtLWdpdCBhL2djYy9v cHRhYnMtdHJlZS5jIGIvZ2NjL29wdGFicy10cmVlLmMKaW5kZXggOTVmZmUzOTdjMjNlODBjMTA1 YWZlYTUyZTlkNDcyMTZiZjUyZjU1YS4uZWViNWFlZWQzMjAyY2M2OTcxYjY0NDc5OTRiYzUzMTFl OWMwMTBiYiAxMDA2NDQKLS0tIGEvZ2NjL29wdGFicy10cmVlLmMKKysrIGIvZ2NjL29wdGFicy10 cmVlLmMKQEAgLTEyNyw3ICsxMjcsMTIgQEAgb3B0YWJfZm9yX3RyZWVfY29kZSAoZW51bSB0cmVl X2NvZGUgY29kZSwgY29uc3RfdHJlZSB0eXBlLAogICAgICAgcmV0dXJuIFRZUEVfVU5TSUdORUQg KHR5cGUpID8gdXN1bV93aWRlbl9vcHRhYiA6IHNzdW1fd2lkZW5fb3B0YWI7CiAKICAgICBjYXNl IERPVF9QUk9EX0VYUFI6Ci0gICAgICByZXR1cm4gVFlQRV9VTlNJR05FRCAodHlwZSkgPyB1ZG90 X3Byb2Rfb3B0YWIgOiBzZG90X3Byb2Rfb3B0YWI7CisgICAgICB7CisJaWYgKHN1YnR5cGUgPT0g b3B0YWJfdmVjdG9yX21peGVkX3NpZ24pCisJICByZXR1cm4gdXNkb3RfcHJvZF9vcHRhYjsKKwor CXJldHVybiAoVFlQRV9VTlNJR05FRCAodHlwZSkgPyB1ZG90X3Byb2Rfb3B0YWIgOiBzZG90X3By b2Rfb3B0YWIpOworICAgICAgfQogCiAgICAgY2FzZSBTQURfRVhQUjoKICAgICAgIHJldHVybiBU WVBFX1VOU0lHTkVEICh0eXBlKSA/IHVzYWRfb3B0YWIgOiBzc2FkX29wdGFiOwpkaWZmIC0tZ2l0 IGEvZ2NjL29wdGFicy5jIGIvZ2NjL29wdGFicy5jCmluZGV4IDYyYTZiZGI0YzU5YmY4MjYzYzQ5 OTI0NTc5NTU3NjE5OTYwNmQzNzIuLjE0ZDhhZDJmMzNmZDc1Mzg4NDM1ZmU5MTIzODBlMTc3Zjhm M2M1NGIgMTAwNjQ0Ci0tLSBhL2djYy9vcHRhYnMuYworKysgYi9nY2Mvb3B0YWJzLmMKQEAgLTI2 Miw2ICsyNjIsMTEgQEAgZXhwYW5kX3dpZGVuX3BhdHRlcm5fZXhwciAoc2Vwb3BzIG9wcywgcnR4 IG9wMCwgcnR4IG9wMSwgcnR4IHdpZGVfb3AsCiAgIGJvb2wgc2Jvb2wgPSBmYWxzZTsKIAogICBv cHJuZDAgPSBvcHMtPm9wMDsKKyAgaWYgKG5vcHMgPj0gMikKKyAgICBvcHJuZDEgPSBvcHMtPm9w MTsKKyAgaWYgKG5vcHMgPj0gMykKKyAgICBvcHJuZDIgPSBvcHMtPm9wMjsKKwogICB0bW9kZTAg PSBUWVBFX01PREUgKFRSRUVfVFlQRSAob3BybmQwKSk7CiAgIGlmIChvcHMtPmNvZGUgPT0gVkVD X1VOUEFDS19GSVhfVFJVTkNfSElfRVhQUgogICAgICAgfHwgb3BzLT5jb2RlID09IFZFQ19VTlBB Q0tfRklYX1RSVU5DX0xPX0VYUFIpCkBAIC0yODUsNiArMjkwLDI3IEBAIGV4cGFuZF93aWRlbl9w YXR0ZXJuX2V4cHIgKHNlcG9wcyBvcHMsIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0eCB3aWRlX29wLAog CSAgID8gdmVjX3VucGFja3Nfc2Jvb2xfaGlfb3B0YWIgOiB2ZWNfdW5wYWNrc19zYm9vbF9sb19v cHRhYik7CiAgICAgICBzYm9vbCA9IHRydWU7CiAgICAgfQorICBlbHNlIGlmIChvcHMtPmNvZGUg PT0gRE9UX1BST0RfRVhQUikKKyAgICB7CisgICAgICBlbnVtIG9wdGFiX3N1YnR5cGUgc3VidHlw ZSA9IG9wdGFiX2RlZmF1bHQ7CisgICAgICBzaWdub3Agc2lnbjEgPSBUWVBFX1NJR04gKFRSRUVf VFlQRSAob3BybmQwKSk7CisgICAgICBzaWdub3Agc2lnbjIgPSBUWVBFX1NJR04gKFRSRUVfVFlQ RSAob3BybmQxKSk7CisgICAgICBpZiAoc2lnbjEgPT0gc2lnbjIpCisJOworICAgICAgZWxzZSBp ZiAoc2lnbjEgPT0gU0lHTkVEICYmIHNpZ24yID09IFVOU0lHTkVEKQorCXsKKwkgIHN1YnR5cGUg PSBvcHRhYl92ZWN0b3JfbWl4ZWRfc2lnbjsKKwkgIC8qIFNhbWUgYXMgb3B0YWJfdmVjdG9yX21p eGVkX3NpZ24gYnV0IGZsaXAgdGhlIG9wZXJhbmRzLiAgKi8KKwkgIHN0ZDo6c3dhcCAob3AwLCBv cDEpOworCX0KKyAgICAgIGVsc2UgaWYgKHNpZ24xID09IFVOU0lHTkVEICYmIHNpZ24yID09IFNJ R05FRCkKKwlzdWJ0eXBlID0gb3B0YWJfdmVjdG9yX21peGVkX3NpZ247CisgICAgICBlbHNlCisJ Z2NjX3VucmVhY2hhYmxlICgpOworCisgICAgICB3aWRlbl9wYXR0ZXJuX29wdGFiCisJPSBvcHRh Yl9mb3JfdHJlZV9jb2RlIChvcHMtPmNvZGUsIFRSRUVfVFlQRSAob3BybmQwKSwgc3VidHlwZSk7 CisgICAgfQogICBlbHNlCiAgICAgd2lkZW5fcGF0dGVybl9vcHRhYgogICAgICAgPSBvcHRhYl9m b3JfdHJlZV9jb2RlIChvcHMtPmNvZGUsIFRSRUVfVFlQRSAob3BybmQwKSwgb3B0YWJfZGVmYXVs dCk7CkBAIC0yOTgsMTAgKzMyNCw3IEBAIGV4cGFuZF93aWRlbl9wYXR0ZXJuX2V4cHIgKHNlcG9w cyBvcHMsIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0eCB3aWRlX29wLAogICBnY2NfYXNzZXJ0IChpY29k ZSAhPSBDT0RFX0ZPUl9ub3RoaW5nKTsKIAogICBpZiAobm9wcyA+PSAyKQotICAgIHsKLSAgICAg IG9wcm5kMSA9IG9wcy0+b3AxOwotICAgICAgdG1vZGUxID0gVFlQRV9NT0RFIChUUkVFX1RZUEUg KG9wcm5kMSkpOwotICAgIH0KKyAgICB0bW9kZTEgPSBUWVBFX01PREUgKFRSRUVfVFlQRSAob3By bmQxKSk7CiAgIGVsc2UgaWYgKHNib29sKQogICAgIHsKICAgICAgIG5vcHMgPSAyOwpAQCAtMzE2 LDcgKzMzOSw2IEBAIGV4cGFuZF93aWRlbl9wYXR0ZXJuX2V4cHIgKHNlcG9wcyBvcHMsIHJ0eCBv cDAsIHJ0eCBvcDEsIHJ0eCB3aWRlX29wLAogICAgIHsKICAgICAgIGdjY19hc3NlcnQgKHRtb2Rl MSA9PSB0bW9kZTApOwogICAgICAgZ2NjX2Fzc2VydCAob3AxKTsKLSAgICAgIG9wcm5kMiA9IG9w cy0+b3AyOwogICAgICAgd21vZGUgPSBUWVBFX01PREUgKFRSRUVfVFlQRSAob3BybmQyKSk7CiAg ICAgfQogCmRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVmCmluZGV4 IDQxYWIyNTk4ZWI2YzMyYzAwM2NiZWQ0OTA3OTZhYmYyNWQyZWUzMTUuLjU3NGQzNTViNmIzMDky Y2Y4OTNmNWFiMGU4YWUwZjZkOWZmY2VmYmQgMTAwNjQ0Ci0tLSBhL2djYy9vcHRhYnMuZGVmCisr KyBiL2djYy9vcHRhYnMuZGVmCkBAIC0zNTIsNiArMzUyLDcgQEAgT1BUQUJfRCAodWF2Z19jZWls X29wdGFiLCAidWF2ZyRhM19jZWlsIikKIE9QVEFCX0QgKHNkb3RfcHJvZF9vcHRhYiwgInNkb3Rf cHJvZCRJJGEiKQogT1BUQUJfRCAoc3N1bV93aWRlbl9vcHRhYiwgIndpZGVuX3NzdW0kSSRhMyIp CiBPUFRBQl9EICh1ZG90X3Byb2Rfb3B0YWIsICJ1ZG90X3Byb2QkSSRhIikKK09QVEFCX0QgKHVz ZG90X3Byb2Rfb3B0YWIsICJ1c2RvdF9wcm9kJEkkYSIpCiBPUFRBQl9EICh1c3VtX3dpZGVuX29w dGFiLCAid2lkZW5fdXN1bSRJJGEzIikKIE9QVEFCX0QgKHVzYWRfb3B0YWIsICJ1c2FkJEkkYSIp CiBPUFRBQl9EIChzc2FkX29wdGFiLCAic3NhZCRJJGEiKQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUt Y2ZnLmMgYi9nY2MvdHJlZS1jZmcuYwppbmRleCBjNzNlMWNiZGRhNmI5MzgwMTkwYjAzZGU2NmNh ZWU0OGM0ZTE3M2UzLi4zNzUwZDI4ODFjYmI3ZmQxZTcxYzBlYjhjMGQ0OTI5OTI1ZmQ0MTUyIDEw MDY0NAotLS0gYS9nY2MvdHJlZS1jZmcuYworKysgYi9nY2MvdHJlZS1jZmcuYwpAQCAtNDQzNCw3 ICs0NDM0LDggQEAgdmVyaWZ5X2dpbXBsZV9hc3NpZ25fdGVybmFyeSAoZ2Fzc2lnbiAqc3RtdCkK IAkJICAmJiAhU0NBTEFSX0ZMT0FUX1RZUEVfUCAocmhzMV90eXBlKSkKIAkJIHx8ICghSU5URUdS QUxfVFlQRV9QIChsaHNfdHlwZSkKIAkJICAgICAmJiAhU0NBTEFSX0ZMT0FUX1RZUEVfUCAobGhz X3R5cGUpKSkpCi0JICAgIHx8ICF0eXBlc19jb21wYXRpYmxlX3AgKHJoczFfdHlwZSwgcmhzMl90 eXBlKQorCSAgICAvKiByaHMxX3R5cGUgYW5kIHJoczJfdHlwZSBtYXkgZGlmZmVyIGluIHNpZ24u ICAqLworCSAgICB8fCAhdHJlZV9ub3BfY29udmVyc2lvbl9wIChyaHMxX3R5cGUsIHJoczJfdHlw ZSkKIAkgICAgfHwgIXVzZWxlc3NfdHlwZV9jb252ZXJzaW9uX3AgKGxoc190eXBlLCByaHMzX3R5 cGUpCiAJICAgIHx8IG1heWJlX2x0IChHRVRfTU9ERV9TSVpFIChlbGVtZW50X21vZGUgKHJoczNf dHlwZSkpLAogCQkJIDIgKiBHRVRfTU9ERV9TSVpFIChlbGVtZW50X21vZGUgKHJoczFfdHlwZSkp KSkKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC5jIGIvZ2NjL3RyZWUtdmVjdC1sb29w LmMKaW5kZXggNTFhNDZhNmQ4NTJmYjM0MjI3OGJiOTUxM2QwMTM3MDJjZmY0Yjg2OC4uNGU2M2U4 NGNjNzBjYTYwYzcwNmMxOTM2N2NjZjI1NmVhM2Y4NTFiNSAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUt dmVjdC1sb29wLmMKKysrIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmMKQEAgLTY2NjMsNiArNjY2Mywx MiBAQCB2ZWN0b3JpemFibGVfcmVkdWN0aW9uIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sCiAg IGJvb2wgbGFuZV9yZWR1Y19jb2RlX3AKICAgICA9IChjb2RlID09IERPVF9QUk9EX0VYUFIgfHwg Y29kZSA9PSBXSURFTl9TVU1fRVhQUiB8fCBjb2RlID09IFNBRF9FWFBSKTsKICAgaW50IG9wX3R5 cGUgPSBUUkVFX0NPREVfTEVOR1RIIChjb2RlKTsKKyAgZW51bSBvcHRhYl9zdWJ0eXBlIG9wdGFi X3F1ZXJ5X2tpbmQgPSBvcHRhYl92ZWN0b3I7CisgIGlmIChjb2RlID09IERPVF9QUk9EX0VYUFIK KyAgICAgICYmIFRZUEVfU0lHTiAoVFJFRV9UWVBFIChnaW1wbGVfYXNzaWduX3JoczEgKHN0bXQp KSkKKwkgICAhPSBUWVBFX1NJR04gKFRSRUVfVFlQRSAoZ2ltcGxlX2Fzc2lnbl9yaHMyIChzdG10 KSkpKQorICAgIG9wdGFiX3F1ZXJ5X2tpbmQgPSBvcHRhYl92ZWN0b3JfbWl4ZWRfc2lnbjsKKwog CiAgIHNjYWxhcl9kZXN0ID0gZ2ltcGxlX2Fzc2lnbl9saHMgKHN0bXQpOwogICBzY2FsYXJfdHlw ZSA9IFRSRUVfVFlQRSAoc2NhbGFyX2Rlc3QpOwpAQCAtNzE5MCw3ICs3MTk2LDcgQEAgdmVjdG9y aXphYmxlX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLAogICAgICAgYm9vbCBv ayA9IHRydWU7CiAKICAgICAgIC8qIDQuMS4gY2hlY2sgc3VwcG9ydCBmb3IgdGhlIG9wZXJhdGlv biBpbiB0aGUgbG9vcCAgKi8KLSAgICAgIG9wdGFiIG9wdGFiID0gb3B0YWJfZm9yX3RyZWVfY29k ZSAoY29kZSwgdmVjdHlwZV9pbiwgb3B0YWJfdmVjdG9yKTsKKyAgICAgIG9wdGFiIG9wdGFiID0g b3B0YWJfZm9yX3RyZWVfY29kZSAoY29kZSwgdmVjdHlwZV9pbiwgb3B0YWJfcXVlcnlfa2luZCk7 CiAgICAgICBpZiAoIW9wdGFiKQogCXsKIAkgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkKZGlmZiAt LWdpdCBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuYyBiL2djYy90cmVlLXZlY3QtcGF0dGVybnMu YwppbmRleCBiMmU3ZmMyY2M3YWRhZDcyNjk3YjhkNzZkZWIwNDQ4ZDBiMDNlMGE4Li43MTUzM2U2 MWM5MzRjNjNkZDA1YTMzYzhmNzE1OTE4NWU5YjExYTFiIDEwMDY0NAotLS0gYS9nY2MvdHJlZS12 ZWN0LXBhdHRlcm5zLmMKKysrIGIvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJucy5jCkBAIC0xOTEsOSAr MTkxLDkgQEAgdmVjdF9nZXRfZXh0ZXJuYWxfZGVmX2VkZ2UgKHZlY19pbmZvICp2aW5mbywgdHJl ZSB2YXIpCiB9CiAKIC8qIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgYSB2ZWN0 b3IgdmVyc2lvbiBvZiBDT0RFLAotICAgd2hlcmUgQ09ERSBpcyBrbm93biB0byBtYXAgdG8gYSBk aXJlY3Qgb3B0YWIuICBJVFlQRSBzcGVjaWZpZXMKLSAgIHRoZSB0eXBlIG9mIChzb21lIG9mKSB0 aGUgc2NhbGFyIGlucHV0cyBhbmQgT1RZUEUgc3BlY2lmaWVzIHRoZQotICAgdHlwZSBvZiB0aGUg c2NhbGFyIHJlc3VsdC4KKyAgIHdoZXJlIENPREUgaXMga25vd24gdG8gbWFwIHRvIGEgZGlyZWN0 IG9wdGFiIHdpdGggdGhlIGdpdmVuIFNVQlRZUEUuCisgICBJVFlQRSBzcGVjaWZpZXMgdGhlIHR5 cGUgb2YgKHNvbWUgb2YpIHRoZSBzY2FsYXIgaW5wdXRzIGFuZCBPVFlQRQorICAgc3BlY2lmaWVz IHRoZSB0eXBlIG9mIHRoZSBzY2FsYXIgcmVzdWx0LgogCiAgICBJZiBDT0RFIGFsbG93cyB0aGUg aW5wdXRzIGFuZCBvdXRwdXRzIHRvIGhhdmUgZGlmZmVyZW50IHR5cGUKICAgIChzdWNoIGFzIGZv ciBXSURFTl9TVU1fRVhQUiksIGl0IGlzIHRoZSBpbnB1dCBtb2RlIHJhdGhlcgpAQCAtMjA4LDcg KzIwOCw4IEBAIHZlY3RfZ2V0X2V4dGVybmFsX2RlZl9lZGdlICh2ZWNfaW5mbyAqdmluZm8sIHRy ZWUgdmFyKQogc3RhdGljIGJvb2wKIHZlY3Rfc3VwcG9ydGFibGVfZGlyZWN0X29wdGFiX3AgKHZl Y19pbmZvICp2aW5mbywgdHJlZSBvdHlwZSwgdHJlZV9jb2RlIGNvZGUsCiAJCQkJIHRyZWUgaXR5 cGUsIHRyZWUgKnZlY290eXBlX291dCwKLQkJCQkgdHJlZSAqdmVjaXR5cGVfb3V0ID0gTlVMTCkK KwkJCQkgdHJlZSAqdmVjaXR5cGVfb3V0ID0gTlVMTCwKKwkJCQkgZW51bSBvcHRhYl9zdWJ0eXBl IHN1YnR5cGUgPSBvcHRhYl9kZWZhdWx0KQogewogICB0cmVlIHZlY2l0eXBlID0gZ2V0X3ZlY3R5 cGVfZm9yX3NjYWxhcl90eXBlICh2aW5mbywgaXR5cGUpOwogICBpZiAoIXZlY2l0eXBlKQpAQCAt MjE4LDcgKzIxOSw3IEBAIHZlY3Rfc3VwcG9ydGFibGVfZGlyZWN0X29wdGFiX3AgKHZlY19pbmZv ICp2aW5mbywgdHJlZSBvdHlwZSwgdHJlZV9jb2RlIGNvZGUsCiAgIGlmICghdmVjb3R5cGUpCiAg ICAgcmV0dXJuIGZhbHNlOwogCi0gIG9wdGFiIG9wdGFiID0gb3B0YWJfZm9yX3RyZWVfY29kZSAo Y29kZSwgdmVjaXR5cGUsIG9wdGFiX2RlZmF1bHQpOworICBvcHRhYiBvcHRhYiA9IG9wdGFiX2Zv cl90cmVlX2NvZGUgKGNvZGUsIHZlY2l0eXBlLCBzdWJ0eXBlKTsKICAgaWYgKCFvcHRhYikKICAg ICByZXR1cm4gZmFsc2U7CiAKQEAgLTUyMSw2ICs1MjIsNyBAQCB2ZWN0X2pvdXN0X3dpZGVuZWRf dHlwZSAodHJlZSB0eXBlLCB0cmVlIG5ld190eXBlLCB0cmVlICpjb21tb25fdHlwZSkKICAgdW5z aWduZWQgaW50IHByZWNpc2lvbiA9IE1BWCAoVFlQRV9QUkVDSVNJT04gKCpjb21tb25fdHlwZSks CiAJCQkJVFlQRV9QUkVDSVNJT04gKG5ld190eXBlKSk7CiAgIHByZWNpc2lvbiAqPSAyOworCiAg IGlmIChwcmVjaXNpb24gKiAyID4gVFlQRV9QUkVDSVNJT04gKHR5cGUpKQogICAgIHJldHVybiBm YWxzZTsKIApAQCAtNTM5LDYgKzU0MSwxMCBAQCB2ZWN0X2pvdXN0X3dpZGVuZWRfdHlwZSAodHJl ZSB0eXBlLCB0cmVlIG5ld190eXBlLCB0cmVlICpjb21tb25fdHlwZSkKICAgIHRvIGEgdHlwZSB0 aGF0IChhKSBpcyBuYXJyb3dlciB0aGFuIHRoZSByZXN1bHQgb2YgU1RNVF9JTkZPIGFuZAogICAg KGIpIGNhbiBob2xkIGFsbCBsZWFmIG9wZXJhbmQgdmFsdWVzLgogCisgICBJZiBTVUJUWVBFIHRo ZW4gYWxsb3cgdGhhdCB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzCisgICBtYXkgZGlmZmVyIGlu IHNpZ25zIGJ1dCBub3QgaW4gcHJlY2lzaW9uLiAgU1VCVFlQRSBpcyB1cGRhdGVkIHRvIHJlZmxl Y3QKKyAgIHRoaXMuCisKICAgIFJldHVybiAwIGlmIFNUTVRfSU5GTyBpc24ndCBzdWNoIGEgdHJl ZSwgb3IgaWYgbm8gc3VjaCBDT01NT05fVFlQRQogICAgZXhpc3RzLiAgKi8KIApAQCAtNTQ2LDcg KzU1Miw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQKIHZlY3Rfd2lkZW5lZF9vcF90cmVlICh2ZWNf aW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLCB0cmVlX2NvZGUgY29kZSwKIAkJ ICAgICAgdHJlZV9jb2RlIHdpZGVuZWRfY29kZSwgYm9vbCBzaGlmdF9wLAogCQkgICAgICB1bnNp Z25lZCBpbnQgbWF4X25vcHMsCi0JCSAgICAgIHZlY3RfdW5wcm9tb3RlZF92YWx1ZSAqdW5wcm9t LCB0cmVlICpjb21tb25fdHlwZSkKKwkJICAgICAgdmVjdF91bnByb21vdGVkX3ZhbHVlICp1bnBy b20sIHRyZWUgKmNvbW1vbl90eXBlLAorCQkgICAgICBlbnVtIG9wdGFiX3N1YnR5cGUgKnN1YnR5 cGUgPSBOVUxMKQogewogICAvKiBDaGVjayBmb3IgYW4gaW50ZWdlciBvcGVyYXRpb24gd2l0aCB0 aGUgcmlnaHQgY29kZS4gICovCiAgIGdhc3NpZ24gKmFzc2lnbiA9IGR5bl9jYXN0IDxnYXNzaWdu ICo+IChzdG10X2luZm8tPnN0bXQpOwpAQCAtNjA3LDcgKzYxNCw4IEBAIHZlY3Rfd2lkZW5lZF9v cF90cmVlICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLCB0cmVlX2Nv ZGUgY29kZSwKIAkJPSB2aW5mby0+bG9va3VwX2RlZiAodGhpc191bnByb20tPm9wKTsKIAkgICAg ICBub3BzID0gdmVjdF93aWRlbmVkX29wX3RyZWUgKHZpbmZvLCBkZWZfc3RtdF9pbmZvLCBjb2Rl LAogCQkJCQkgICB3aWRlbmVkX2NvZGUsIHNoaWZ0X3AsIG1heF9ub3BzLAotCQkJCQkgICB0aGlz X3VucHJvbSwgY29tbW9uX3R5cGUpOworCQkJCQkgICB0aGlzX3VucHJvbSwgY29tbW9uX3R5cGUs CisJCQkJCSAgIHN1YnR5cGUpOwogCSAgICAgIGlmIChub3BzID09IDApCiAJCXJldHVybiAwOwog CkBAIC02MjUsNyArNjMzLDE4IEBAIHZlY3Rfd2lkZW5lZF9vcF90cmVlICh2ZWNfaW5mbyAqdmlu Zm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLCB0cmVlX2NvZGUgY29kZSwKIAkJKmNvbW1vbl90 eXBlID0gdGhpc191bnByb20tPnR5cGU7CiAJICAgICAgZWxzZSBpZiAoIXZlY3Rfam91c3Rfd2lk ZW5lZF90eXBlICh0eXBlLCB0aGlzX3VucHJvbS0+dHlwZSwKIAkJCQkJCSBjb21tb25fdHlwZSkp Ci0JCXJldHVybiAwOworCQl7CisJCSAgaWYgKHN1YnR5cGUpCisJCSAgICB7CisJCSAgICAgIC8q IFNlZSBpZiB3ZSBjYW4gc2lnbiBleHRlbmQgdGhlIHNtYWxsZXIgdHlwZS4gICovCisJCSAgICAg IGlmIChUWVBFX1BSRUNJU0lPTiAodGhpc191bnByb20tPnR5cGUpCisJCQkgID4gVFlQRV9QUkVD SVNJT04gKCpjb21tb25fdHlwZSkpCisJCQkqY29tbW9uX3R5cGUgPSB0aGlzX3VucHJvbS0+dHlw ZTsKKwkJICAgICAgKnN1YnR5cGUgPSBvcHRhYl92ZWN0b3JfbWl4ZWRfc2lnbjsKKwkJICAgIH0K KwkJICBlbHNlCisJCSAgICByZXR1cm4gMDsKKwkJfQogCSAgICB9CiAJfQogICAgICAgbmV4dF9v cCArPSBub3BzOwpAQCAtNzI1LDEyICs3NDQsMjIgQEAgdmVjdF9zcGxpdF9zdGF0ZW1lbnQgKHZl Y19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10Ml9pbmZvLCB0cmVlIG5ld19yaHMsCiAK IC8qIENvbnZlcnQgVU5QUk9NIHRvIFRZUEUgYW5kIHJldHVybiB0aGUgcmVzdWx0LCBhZGRpbmcg bmV3IHN0YXRlbWVudHMKICAgIHRvIFNUTVRfSU5GTydzIHBhdHRlcm4gZGVmaW5pdGlvbiBzdGF0 ZW1lbnRzIGlmIG5vIGJldHRlciB3YXkgaXMKLSAgIGF2YWlsYWJsZS4gIFZFQ1RZUEUgaXMgdGhl IHZlY3RvciBmb3JtIG9mIFRZUEUuICAqLworICAgYXZhaWxhYmxlLiAgVkVDVFlQRSBpcyB0aGUg dmVjdG9yIGZvcm0gb2YgVFlQRS4KKworICAgSWYgU1VCVFlQRSB0aGVuIGNvbnZlcnQgdGhlIHR5 cGUgYmFzZWQgb24gdGhlIHN1YnR5cGUuICAqLwogCiBzdGF0aWMgdHJlZQogdmVjdF9jb252ZXJ0 X2lucHV0ICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLCB0cmVlIHR5 cGUsCi0JCSAgICB2ZWN0X3VucHJvbW90ZWRfdmFsdWUgKnVucHJvbSwgdHJlZSB2ZWN0eXBlKQor CQkgICAgdmVjdF91bnByb21vdGVkX3ZhbHVlICp1bnByb20sIHRyZWUgdmVjdHlwZSwKKwkJICAg IGVudW0gb3B0YWJfc3VidHlwZSBzdWJ0eXBlID0gb3B0YWJfZGVmYXVsdCkKIHsKKworICAvKiBV cGRhdGUgdGhlIHR5cGUgaWYgdGhlIHNpZ25zIGRpZmZlci4gICovCisgIGlmIChzdWJ0eXBlID09 IG9wdGFiX3ZlY3Rvcl9taXhlZF9zaWduCisgICAgICAmJiBUWVBFX1NJR04gKHR5cGUpICE9IFRZ UEVfU0lHTiAoVFJFRV9UWVBFICh1bnByb20tPm9wKSkpCisgICAgdHlwZSA9IGJ1aWxkX25vbnN0 YW5kYXJkX2ludGVnZXJfdHlwZSAoVFlQRV9QUkVDSVNJT04gKHR5cGUpLAorCQkJCQkgICBUWVBF X1NJR04gKHVucHJvbS0+dHlwZSkpOworCiAgIC8qIENoZWNrIGZvciBhIG5vLW9wIGNvbnZlcnNp b24uICAqLwogICBpZiAodHlwZXNfY29tcGF0aWJsZV9wICh0eXBlLCBUUkVFX1RZUEUgKHVucHJv bS0+b3ApKSkKICAgICByZXR1cm4gdW5wcm9tLT5vcDsKQEAgLTgwNiwxMiArODM1LDE0IEBAIHZl Y3RfY29udmVydF9pbnB1dCAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5m bywgdHJlZSB0eXBlLAogfQogCiAvKiBJbnZva2UgdmVjdF9jb252ZXJ0X2lucHV0IGZvciBOIGVs ZW1lbnRzIG9mIFVOUFJPTSBhbmQgc3RvcmUgdGhlCi0gICByZXN1bHQgaW4gdGhlIGNvcnJlc3Bv bmRpbmcgZWxlbWVudHMgb2YgUkVTVUxULiAgKi8KKyAgIHJlc3VsdCBpbiB0aGUgY29ycmVzcG9u ZGluZyBlbGVtZW50cyBvZiBSRVNVTFQuCisKKyAgIElmIFNVQlRZUEUgdGhlbiBjb252ZXJ0IHRo ZSB0eXBlIGJhc2VkIG9uIHRoZSBzdWJ0eXBlLiAgKi8KIAogc3RhdGljIHZvaWQKIHZlY3RfY29u dmVydF9pbnB1dHMgKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sIHVu c2lnbmVkIGludCBuLAogCQkgICAgIHRyZWUgKnJlc3VsdCwgdHJlZSB0eXBlLCB2ZWN0X3VucHJv bW90ZWRfdmFsdWUgKnVucHJvbSwKLQkJICAgICB0cmVlIHZlY3R5cGUpCisJCSAgICAgdHJlZSB2 ZWN0eXBlLCBlbnVtIG9wdGFiX3N1YnR5cGUgc3VidHlwZSA9IG9wdGFiX2RlZmF1bHQpCiB7CiAg IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgIHsKQEAgLTgxOSwxMSAr ODUwLDEyIEBAIHZlY3RfY29udmVydF9pbnB1dHMgKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNf aW5mbyBzdG10X2luZm8sIHVuc2lnbmVkIGludCBuLAogICAgICAgZm9yIChqID0gMDsgaiA8IGk7 ICsraikKIAlpZiAodW5wcm9tW2pdLm9wID09IHVucHJvbVtpXS5vcCkKIAkgIGJyZWFrOworCiAg ICAgICBpZiAoaiA8IGkpCiAJcmVzdWx0W2ldID0gcmVzdWx0W2pdOwogICAgICAgZWxzZQogCXJl c3VsdFtpXSA9IHZlY3RfY29udmVydF9pbnB1dCAodmluZm8sIHN0bXRfaW5mbywKLQkJCQkJdHlw ZSwgJnVucHJvbVtpXSwgdmVjdHlwZSk7CisJCQkJCXR5cGUsICZ1bnByb21baV0sIHZlY3R5cGUs IHN1YnR5cGUpOwogICAgIH0KIH0KIApAQCAtODk1LDcgKzkyNyw4IEBAIHZlY3RfcmVhc3NvY2lh dGluZ19yZWR1Y3Rpb25fcCAodmVjX2luZm8gKnZpbmZvLAogCiAgICBUcnkgdG8gZmluZCB0aGUg Zm9sbG93aW5nIHBhdHRlcm46CiAKLSAgICAgdHlwZSB4X3QsIHlfdDsKKyAgICAgdHlwZTFhIHhf dAorICAgICB0eXBlMWIgeV90OwogICAgICBUWVBFMSBwcm9kOwogICAgICBUWVBFMiBzdW0gPSBp bml0OwogICAgbG9vcDoKQEAgLTkwOCw5ICs5NDEsOSBAQCB2ZWN0X3JlYXNzb2NpYXRpbmdfcmVk dWN0aW9uX3AgKHZlY19pbmZvICp2aW5mbywKICAgICAgW1M2ICBwcm9kID0gKFRZUEUyKSBwcm9k OyAgI29wdGlvbmFsXQogICAgICBTNyAgc3VtXzEgPSBwcm9kICsgc3VtXzA7CiAKLSAgIHdoZXJl ICdUWVBFMScgaXMgZXhhY3RseSBkb3VibGUgdGhlIHNpemUgb2YgdHlwZSAndHlwZScsIGFuZCAn VFlQRTInIGlzIHRoZQotICAgc2FtZSBzaXplIG9mICdUWVBFMScgb3IgYmlnZ2VyLiBUaGlzIGlz IGEgc3BlY2lhbCBjYXNlIG9mIGEgcmVkdWN0aW9uCi0gICBjb21wdXRhdGlvbi4KKyAgIHdoZXJl ICdUWVBFMScgaXMgZXhhY3RseSBkb3VibGUgdGhlIHNpemUgb2YgdHlwZSAndHlwZTFhJyBhbmQg J3R5cGUxYicsCisgICB0aGUgc2lnbiBvZiAnVFlQRTEnIG11c3QgYmUgb25lIG9mICd0eXBlMWEn IG9yICd0eXBlMWInIGJ1dCB0aGUgc2lnbiBvZgorICAgJ3R5cGUxYScgYW5kICd0eXBlMWInIGNh biBkaWZmZXIuCiAKICAgIElucHV0OgogCkBAIC05NTMsNyArOTg2LDggQEAgdmVjdF9yZWNvZ19k b3RfcHJvZF9wYXR0ZXJuICh2ZWNfaW5mbyAqdmluZm8sCiAgICAgIEluIHdoaWNoCiAgICAgIC0g RFggaXMgZG91YmxlIHRoZSBzaXplIG9mIFgKICAgICAgLSBEWSBpcyBkb3VibGUgdGhlIHNpemUg b2YgWQotICAgICAtIERYLCBEWSwgRFBST0QgYWxsIGhhdmUgdGhlIHNhbWUgdHlwZQorICAgICAt IERYLCBEWSwgRFBST0QgYWxsIGhhdmUgdGhlIHNhbWUgdHlwZSBidXQgdGhlIHNpZ24KKyAgICAg ICBiZXR3ZWVuIFgsIFkgYW5kIERQUk9EIGNhbiBkaWZmZXIuCiAgICAgIC0gc3VtIGlzIHRoZSBz YW1lIHNpemUgb2YgRFBST0Qgb3IgYmlnZ2VyCiAgICAgIC0gc3VtIGhhcyBiZWVuIHJlY29nbml6 ZWQgYXMgYSByZWR1Y3Rpb24gdmFyaWFibGUuCiAKQEAgLTk5MSw4ICsxMDI1LDE4IEBAIHZlY3Rf cmVjb2dfZG90X3Byb2RfcGF0dGVybiAodmVjX2luZm8gKnZpbmZvLAogICAvKiBGT1JOT1cuICBD YW4gY29udGludWUgYW5hbHl6aW5nIHRoZSBkZWYtdXNlIGNoYWluIHdoZW4gdGhpcyBzdG10IGlu IGEgcGhpCiAgICAgIGluc2lkZSB0aGUgbG9vcCAoaW4gY2FzZSB3ZSBhcmUgYW5hbHl6aW5nIGFu IG91dGVyLWxvb3ApLiAgKi8KICAgdmVjdF91bnByb21vdGVkX3ZhbHVlIHVucHJvbTBbMl07Cisg IGVudW0gb3B0YWJfc3VidHlwZSBzdWJ0eXBlID0gb3B0YWJfdmVjdG9yOwogICBpZiAoIXZlY3Rf d2lkZW5lZF9vcF90cmVlICh2aW5mbywgbXVsdF92aW5mbywgTVVMVF9FWFBSLCBXSURFTl9NVUxU X0VYUFIsCi0JCQkgICAgIGZhbHNlLCAyLCB1bnByb20wLCAmaGFsZl90eXBlKSkKKwkJCSAgICAg ZmFsc2UsIDIsIHVucHJvbTAsICZoYWxmX3R5cGUsICZzdWJ0eXBlKSkKKyAgICByZXR1cm4gTlVM TDsKKworICAvKiBJZiB0aGVyZSBhcmUgdHdvIHdpZGVuaW5nIG9wZXJhdGlvbnMsIG1ha2Ugc3Vy ZSB0aGV5IGFncmVlIG9uIHRoZSBzaWduCisgICAgIG9mIHRoZSBleHRlbnNpb24uICBUaGUgcmVz dWx0IG9mIGFuIG9wdGFiX3ZlY3Rvcl9taXhlZF9zaWduIG9wZXJhdGlvbgorICAgICBpcyBzaWdu ZWQ7IG90aGVyd2lzZSwgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgc2lnbiBhcyB0aGUgb3BlcmFu ZHMuICAqLworICBpZiAoVFlQRV9QUkVDSVNJT04gKHVucHJvbV9tdWx0LnR5cGUpICE9IFRZUEVf UFJFQ0lTSU9OICh0eXBlKQorICAgICAgJiYgKHN1YnR5cGUgPT0gb3B0YWJfdmVjdG9yX21peGVk X3NpZ24KKwk/IFRZUEVfVU5TSUdORUQgKHVucHJvbV9tdWx0LnR5cGUpCisJOiBUWVBFX1NJR04g KHVucHJvbV9tdWx0LnR5cGUpICE9IFRZUEVfU0lHTiAoaGFsZl90eXBlKSkpCiAgICAgcmV0dXJu IE5VTEw7CiAKICAgLyogSWYgdGhlcmUgYXJlIHR3byB3aWRlbmluZyBvcGVyYXRpb25zLCBtYWtl IHN1cmUgdGhleSBhZ3JlZSBvbgpAQCAtMTAwNSwxMyArMTA0OSwxMyBAQCB2ZWN0X3JlY29nX2Rv dF9wcm9kX3BhdHRlcm4gKHZlY19pbmZvICp2aW5mbywKIAogICB0cmVlIGhhbGZfdmVjdHlwZTsK ICAgaWYgKCF2ZWN0X3N1cHBvcnRhYmxlX2RpcmVjdF9vcHRhYl9wICh2aW5mbywgdHlwZSwgRE9U X1BST0RfRVhQUiwgaGFsZl90eXBlLAotCQkJCQl0eXBlX291dCwgJmhhbGZfdmVjdHlwZSkpCisJ CQkJCXR5cGVfb3V0LCAmaGFsZl92ZWN0eXBlLCBzdWJ0eXBlKSkKICAgICByZXR1cm4gTlVMTDsK IAogICAvKiBHZXQgdGhlIGlucHV0cyBpbiB0aGUgYXBwcm9wcmlhdGUgdHlwZXMuICAqLwogICB0 cmVlIG11bHRfb3BybmRbMl07CiAgIHZlY3RfY29udmVydF9pbnB1dHMgKHZpbmZvLCBzdG10X3Zp bmZvLCAyLCBtdWx0X29wcm5kLCBoYWxmX3R5cGUsCi0JCSAgICAgICB1bnByb20wLCBoYWxmX3Zl Y3R5cGUpOworCQkgICAgICAgdW5wcm9tMCwgaGFsZl92ZWN0eXBlLCBzdWJ0eXBlKTsKIAogICB2 YXIgPSB2ZWN0X3JlY29nX3RlbXBfc3NhX3ZhciAodHlwZSwgTlVMTCk7CiAgIHBhdHRlcm5fc3Rt dCA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKHZhciwgRE9UX1BST0RfRVhQUiwK --_002_VI1PR08MB532570940234239E9F607285FF159VI1PR08MB5325eurp_--