From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60070.outbound.protection.outlook.com [40.107.6.70]) by sourceware.org (Postfix) with ESMTPS id E7FBE3865470 for ; Thu, 10 Jun 2021 16:15:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E7FBE3865470 Received: from DB6PR0501CA0014.eurprd05.prod.outlook.com (2603:10a6:4:8f::24) by DBBPR08MB6043.eurprd08.prod.outlook.com (2603:10a6:10:20b::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 10 Jun 2021 16:15:25 +0000 Received: from DB5EUR03FT022.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:8f:cafe::4d) by DB6PR0501CA0014.outlook.office365.com (2603:10a6:4:8f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Thu, 10 Jun 2021 16:15:25 +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 DB5EUR03FT022.mail.protection.outlook.com (10.152.20.171) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Thu, 10 Jun 2021 16:15:25 +0000 Received: ("Tessian outbound f02dc08cb398:v93"); Thu, 10 Jun 2021 16:15:24 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a16fd64ec89fc88e X-CR-MTA-TID: 64aa7808 Received: from 5e5424fb4fa1.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 53C4D4BF-140E-44A3-9125-AA28269D2D37.1; Thu, 10 Jun 2021 16:15:18 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5e5424fb4fa1.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 10 Jun 2021 16:15:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NHqL/dkdLqv6QBvf3QJUb7CRkWTVWxctOJQQhDX+O4/KDDaGPe4XK1flNzxPu+j3Sbm0PEezAzTCUdgLU2588pEE1NoeyywQjLKBLMMzdT8w/m0BZ/VoRbR58RE10p9BmhRu/R9hVKofxzfojx7EjWuRX/GxEgzTDpWsvOovKTT2LJvdSn3rQS1AH0Y8kM6gZL0UGnU6EZ9fQSK5CW5lnzp46to9SFqmRCntUz5Yezfs7YaO6jJSQ6+wFpe0dGaE4Jnx3a52Jwrz6FI11APy2ROUHuzgPDb9J7HsFXspQmuxoEcKqCQw9CLi9xvgqeWDfsSxd162myo0hjGq3VU0lA== 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=EHhd/N4xaPs+3xxp1Tar2d7xE4kwV/jl8hObVCesk/o=; b=BXz5nw5tLR++jBtcJ1vJUEFtynPZxrIOAxaoN8WRCz0y0LC9dNeWtcXPO5tOQg+zTSzfd9b9N6wPYs6DnLjc/nWYoHSXy1zWx7w56j3dlS11OVzTDwHgm4UguROtCjFO7OJKC74JqBm2gd6PPnK89eSAO/kDLqN6eDYpEQWYV7BmXswaSlNzeys5EReOylvowSu/OAai7REs5tF/FsGkpe0ljppDnAE30wlZ7jbdNlFkA0hTN/zcPOraHRd2V+vMz2tBcUDtdjjhgd0jQqFVryyvuUs8aIsRO/fx8iLchnvUFAsN4jVARcOSoM5DM4MO+rP2jbPOVJdaD5kXR6YV8g== 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 Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; Received: from VI1PR0802MB2368.eurprd08.prod.outlook.com (2603:10a6:800:9d::10) by VI1PR08MB4480.eurprd08.prod.outlook.com (2603:10a6:803:f6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.22; Thu, 10 Jun 2021 16:15:13 +0000 Received: from VI1PR0802MB2368.eurprd08.prod.outlook.com ([fe80::44e5:2f6b:2aa1:ff11]) by VI1PR0802MB2368.eurprd08.prod.outlook.com ([fe80::44e5:2f6b:2aa1:ff11%11]) with mapi id 15.20.4195.030; Thu, 10 Jun 2021 16:15:13 +0000 Content-Type: multipart/mixed; boundary="===============6033172372798357756==" From: Srinath Parvathaneni Date: Thu, 10 Jun 2021 17:14:09 +0100 To: gcc-patches@gcc.gnu.org Cc: Kyrylo.Tkachov@arm.com, Richard.Earnshaw@arm.com Subject: [GCC][PATCH] arm: Fix polymorphic variants failing with undefined reference to `__ARM_undef` error. X-Originating-IP: [217.140.106.50] X-ClientProxiedBy: LO2P123CA0037.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600::25) To VI1PR0802MB2368.eurprd08.prod.outlook.com (2603:10a6:800:9d::10) Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from e120703-lin.cambridge.arm.com (217.140.106.50) by LO2P123CA0037.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.20 via Frontend Transport; Thu, 10 Jun 2021 16:15:12 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3962ded4-e9b9-41c5-5f14-08d92c2af467 X-MS-TrafficTypeDiagnostic: VI1PR08MB4480:|DBBPR08MB6043: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:8273;OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: +eP3IsSQF9dOHMoKYNP0j/VMLwmPPaF9VgvXnL+v6J2zezwdfexUR4pD8vi5rLlmQJz9ginBgrqVIdKVwrY5XoQ2cglXR1rSJbRo16SMPEM7SkmS/RrnHLOFGzMU6nnm8mAZCTi63WT39ScB6yfEn+7dQVdGGZdZ/RqOGbNPMlTFrZVvCt1Cs74xhyxBL1hqywXDr3ZacrD1d3gsPDVE2NWG6BAzBBYrW74pj/1nJwoq9qfuDTsKdrYuKN7eOScg5f9mcg0wqQjl0SzWIyQ6tQufaYtN+5xk1Nv5pKGzUkYS3vDrvU2vpGILpXBQcBEck3wLQ7Yo5L21N7ndHvnmt4zFc0aFcy/QIPzt/P/9NebDuS9Vk/y4Q9TCjIozHGs7A6KaiQ0f9BaT5nLS0bUJEU8gZRGUB8HmdYVlJ/nYW39U5scxrwTXlBoh1oRUW0F+Dt5jDk4ePSXajUqgEqbwHu4RigMykQkLanS6bzg8R0L6jvZfbVKC2zKprCy8TcfBeSv/QYvhDAFU6970PZJqOdSHeIG5khi5tAOSyDHMjbiDBP6KCAItfH4e9tyqn1rxhd+6ysy1zyD6tqzm1hVIrB3lAZccy4o76OU660leEpFSk23VZBLVRRsiZ6IeOITHS6yRGsilniawBotGxvp/FiB4O4C6CaPaqwvyEtGxyDXd/+aVQIadvOs+km/6BTWteez95HvM/KhPbCW8+IszGA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR0802MB2368.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39850400004)(366004)(376002)(396003)(136003)(52116002)(235185007)(5660300002)(6916009)(86362001)(956004)(2906002)(33964004)(30864003)(316002)(52536014)(66616009)(4326008)(38100700002)(38350700002)(6512007)(478600001)(186003)(8936002)(16526019)(33656002)(26005)(8676002)(6486002)(44832011)(66556008)(66946007)(66476007)(6666004)(9686003)(81973001)(357404004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?n0DCaJ5L47tifN1Bc6kz+zOWgtgMe7EEPniH+J5l4J41sQ8US2swUbaXw4Ng?= =?us-ascii?Q?StQhIzM4JYIH0U78N4Bg3ugC3vTzRK97/ymSHs9Dyl6tmkHkH10iuwmOssf3?= =?us-ascii?Q?vlpct3+QhboGvpf/6O8zUhr/ewayS8D5lsPT8VrPynpMpHNRW73UDrQaCO/e?= =?us-ascii?Q?tyuzkMLnX7ZtifgLkjEco+G3tS2tIkn1lgR5rc4Y4fh10KQyD8K9MpBE1bqB?= =?us-ascii?Q?3ronYODNvnrxwbXDszWs9wV0DSHFFLKtprSysRSoiNtH4TCgrSqYhnWKAd+V?= =?us-ascii?Q?mqltdKRP5qMBc82MPUbF8JSFFk4+1afGtjY/UDRA2QL/Tq76vro2sMhU03aG?= =?us-ascii?Q?84DX72M/HO92vFd9+BHodGibOCiGsr2o83J+npCQnUc8iNapagtks50sSVhv?= =?us-ascii?Q?FbWkC56jpR84dQDP2SsdLXn7/clIFxAaQVovFfBIvB0Lh2yR68IkMSV9S6mQ?= =?us-ascii?Q?8gvw7HQ62CzqqSmeDe4G4ICFI5OV7CF6RBzfeRvWXj5CR96ILuTJnsX14LE3?= =?us-ascii?Q?NDmQtxCw8rsOl4sfHx4m9Z0YCzA57M48YmKc4hmTt6PzUjy/377pdf3J/QVV?= =?us-ascii?Q?MKqbl5LVtuOgVrTMx3MDWk/djh8SWBs6qZRmYFI14PkBL3xbZflJ7lHxpOBq?= =?us-ascii?Q?rb5b6ubyGH+42aKB/+5xXlpav/nHagNXc0vxFKPECIYE7ZlqsNk+FCl0Sb0G?= =?us-ascii?Q?5eSEfTp7x47F5m0ECLDSHhiFOkjDS8ZsDf2GD2e0ALYvZWv7/zN+ZOmIVPqz?= =?us-ascii?Q?tI7FN0wWbsUhkMix0DHLowyx9+KPQo0u6iEdTRA0tSN3ZtKNSSDHuh5tSoTS?= =?us-ascii?Q?4bMWyGk0bgkckAVxF+ZyaBJjlsBe9KBJTw8SVxL0j31hUavadTZUhrC/X51v?= =?us-ascii?Q?nz/ogosoHKVz8ymtixoQNoH3fFdI5w1iM/a9uDTXfxUDlFPM6Y8Ah1AzET54?= =?us-ascii?Q?Ej7Sg+R7cb/ate0V/V3WksPW+tjo6WHvzDR0VGaS2FGipVVYIMddiCb2JiBB?= =?us-ascii?Q?BMIYGzbdlpGg8Huc3bkmyDz0AzEXRW+IfW4iTt2XFL6D0jl4OTrususodJwB?= =?us-ascii?Q?uL3N6Dlesk/uRT+XM9wm/TzRLESXeG11P7sFe6aCcjBss/9Zc7VO6BDWL9fU?= =?us-ascii?Q?HOhQnceSARYXg5SkbfKhWCfS4YYG9Qa/3jkMFBtiV2CY9besE+Psp9oNy/3Y?= =?us-ascii?Q?l80e6dsxFiqDiEBwRHXzu6lze69y4B1raSQg4XazxsdEaKP+xF1fNmhljFcb?= =?us-ascii?Q?8Y+4WYmdJeOBYz2PY3Sy245I1g2MMjtEEtJwaOtJJvGJ4806Dn2Twfs0A/tJ?= =?us-ascii?Q?LIYrZGQGJyqGtsaVUQYG/UM5?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4480 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT022.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 9004fd5c-b05f-4f44-64e3-08d92c2aecce X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a0hCGGh9rYOayTTbLO84C1+YyT/52Ku2OCKCJLGi3qPGiF/UPIYZ8Q9N9p1CD/QygXm+huOlGe7GDmZGJZvNFEcRzL11SSioBwRBMAfn2LDinASM8lDl3X2WYAQ1vQ794w9qrtQV9k3X8MgEaQvNijcTLXwErFn32cF5/tAUfTOsg3860eYIcRie9yeY/OoFG16b8gyhnclFT7F6DD7o5tKPc//UU90P4nGU4qbOsicm0PfRyMFlSvmcChDcHsY0liN0hVx8yDEaQXqqltBg7ciusUP6ZTUYgG6bmJ3Pn7AVV6DZ0Bp1BGftMafgZinUrzjLukQUmVqaBctG6/kHXE/Y6xKN+AelbnCrOrD6ri6fA5st9kEW1IRes8vJX0nZh++m12ulLh4zbkZEyIT5Jpc1kxJGtHMQz2iu/DnJXgF37QYtwwp/0PQenug9f8heqAZ560lPP/UxFjSEDSMHwXjBaB1Bz3hyzQf307PbPtmWVgYxB3Qu63i/zZixT31jOMF/dJuxK0EitMBTwp0S6wcb7pLTQcAoDKQedtPP5lIzthlRp0gQHWC3MIRjaZiqcn4oOuZu5tTZ+0kZTGmqQqSrpzLGuz+xNEC1US6qLJgzVDFSeRxs3sBHdLJyhzqpGuqrX5H83ka+er8ewiujbjLW/6eVGTF2Nh0dasIq3I8e5PCOI5IQH5VNPF3a4jsQOsC25PNqChMBEQ1jvn0m5Q== 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)(346002)(136003)(396003)(39850400004)(36840700001)(46966006)(47076005)(235185007)(2906002)(5660300002)(30864003)(82740400003)(6666004)(16526019)(956004)(44832011)(26005)(81166007)(33656002)(336012)(8936002)(8676002)(33964004)(186003)(316002)(6486002)(86362001)(9686003)(356005)(6916009)(36860700001)(82310400003)(4326008)(478600001)(52536014)(66616009)(70586007)(70206006)(6512007)(81973001)(357404004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2021 16:15:25.0219 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3962ded4-e9b9-41c5-5f14-08d92c2af467 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: DB5EUR03FT022.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6043 X-Spam-Status: No, score=-14.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, 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: Thu, 10 Jun 2021 16:15:36 -0000 --===============6033172372798357756== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, This patch fixes the issue mentioned in PR101016, which is mve polymorphic variants failing at linking with undefined reference to "__ARM_undef" error. Regression tested on arm-none-eabi and found no regressions. Ok for master? Regards, Srinath. gcc/ChangeLog: 2021-06-10 Srinath Parvathaneni PR target/101016 * config/arm/arm_mve.h (__arm_vld1q): Change __ARM_mve_coerce(p0, int8_t const *) to __ARM_mve_coerce1(p0, int8_t *) in the argument for the polymorphic variants matching code. (__arm_vld1q_z): Likewise. (__arm_vld2q): Likewise. (__arm_vld4q): Likewise. (__arm_vldrbq_gather_offset): Likewise. (__arm_vldrbq_gather_offset_z): Likewise. gcc/testsuite/ChangeLog: 2021-06-10 Srinath Parvathaneni PR target/101016 * gcc.target/arm/mve/intrinsics/pr101016.c: New test. ############### Attachment also inlined for ease of reply ############### diff --git a/gcc/config/arm/arm_mve.h b/gcc/config/arm/arm_mve.h index 1380f3acbfe64026bc882c308bb1c243e27ac4b3..83f10036990fc3df956fb2fa4818d1304138b485 100644 --- a/gcc/config/arm/arm_mve.h +++ b/gcc/config/arm/arm_mve.h @@ -37565,47 +37565,47 @@ extern void *__ARM_undef; #define __arm_vld1q(p0) (\ _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \ - int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \ - int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \ - int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \ - int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \ - int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce(p0, uint32_t const *)), \ - int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_f16 (__ARM_mve_coerce(p0, float16_t const *)), \ - int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_f32 (__ARM_mve_coerce(p0, float32_t const *)))) + int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ + int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ + int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ + int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ + int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ + int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \ + int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \ + int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_f32 (__ARM_mve_coerce1(p0, float32_t *)))) #define __arm_vld1q_z(p0,p1) ( \ _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce(p0, int8_t const *), p1), \ - int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce(p0, int16_t const *), p1), \ - int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce(p0, int32_t const *), p1), \ - int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce(p0, uint8_t const *), p1), \ - int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce(p0, uint16_t const *), p1), \ - int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce(p0, uint32_t const *), p1), \ - int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_z_f16 (__ARM_mve_coerce(p0, float16_t const *), p1), \ - int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_z_f32 (__ARM_mve_coerce(p0, float32_t const *), p1))) + int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce1(p0, int8_t *), p1), \ + int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce1(p0, int16_t *), p1), \ + int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce1(p0, int32_t *), p1), \ + int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), p1), \ + int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), p1), \ + int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1), \ + int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_z_f16 (__ARM_mve_coerce1(p0, float16_t *), p1), \ + int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_z_f32 (__ARM_mve_coerce1(p0, float32_t *), p1))) #define __arm_vld2q(p0) ( \ _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \ - int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \ - int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \ - int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \ - int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \ - int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce(p0, uint32_t const *)), \ - int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld2q_f16 (__ARM_mve_coerce(p0, float16_t const *)), \ - int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld2q_f32 (__ARM_mve_coerce(p0, float32_t const *)))) + int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ + int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ + int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ + int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ + int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ + int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \ + int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld2q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \ + int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld2q_f32 (__ARM_mve_coerce1(p0, float32_t *)))) #define __arm_vld4q(p0) ( \ _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \ - int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \ - int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \ - int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \ - int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \ - int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce(p0, uint32_t const *)), \ - int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld4q_f16 (__ARM_mve_coerce(p0, float16_t const *)), \ - int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld4q_f32 (__ARM_mve_coerce(p0, float32_t const *)))) + int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ + int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ + int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ + int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ + int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ + int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \ + int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld4q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \ + int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld4q_f32 (__ARM_mve_coerce1(p0, float32_t *)))) #define __arm_vldrhq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ @@ -39631,25 +39631,26 @@ extern void *__ARM_undef; #define __arm_vldrbq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint32x4_t)), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint32x4_t)));}) + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) #define __arm_vstrwq_scatter_base_p(p0,p1,p2,p3) ({ __typeof(p2) __p2 = (p2); \ _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \ int (*)[__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_base_p_s32 (p0, p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ int (*)[__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_base_p_u32 (p0, p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));}) -#define __arm_vld1q(p0) (_Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \ - int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \ - int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \ - int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \ - int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \ - int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce(p0, uint32_t const *)))) +#define __arm_vld1q(p0) (\ + _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ + int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ + int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ + int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ + int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ + int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ + int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce1(p0, uint32_t *)))) #define __arm_vldrhq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ @@ -40146,29 +40147,29 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_uint32x4_t]: __arm_vbrsrq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), p2, p3));}) #define __arm_vld1q_z(p0,p1) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce(p0, int8_t const *), p1), \ - int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce(p0, int16_t const *), p1), \ - int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce(p0, int32_t const *), p1), \ - int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce(p0, uint8_t const *), p1), \ - int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce(p0, uint16_t const *), p1), \ - int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce(p0, uint32_t const *), p1))) + int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce1(p0, int8_t *), p1), \ + int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce1(p0, int16_t *), p1), \ + int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce1(p0, int32_t *), p1), \ + int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), p1), \ + int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), p1), \ + int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1))) #define __arm_vld2q(p0) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \ - int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \ - int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \ - int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \ - int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \ - int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce(p0, uint32_t const *)))) + int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ + int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ + int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ + int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ + int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ + int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce1(p0, uint32_t *)))) #define __arm_vld4q(p0) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \ - int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \ - int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \ - int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \ - int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \ - int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce(p0, uint32_t const *)))) + int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \ + int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \ + int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \ + int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \ + int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \ + int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce1(p0, uint32_t *)))) #define __arm_vgetq_lane(p0,p1) ({ __typeof(p0) __p0 = (p0); \ _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ @@ -40515,12 +40516,12 @@ extern void *__ARM_undef; #define __arm_vldrbq_gather_offset_z(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \ _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_s8 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_s16 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_s32 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_u8 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_u16 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_u32 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_s8 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_s16 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_s32 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_u16 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_u32 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));}) #define __arm_vqrdmlahq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ __typeof(p1) __p1 = (p1); \ @@ -41201,12 +41202,12 @@ extern void *__ARM_undef; #define __arm_vldrbq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \ _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint32x4_t)), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint8x16_t)), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint16x8_t)), \ - int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint32x4_t)));}) + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ + int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));}) #define __arm_vidupq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ __typeof(p1) __p1 = (p1); \ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c new file mode 100644 index 0000000000000000000000000000000000000000..b12786d04f558474ed9b3df9998663c7f9bc4d1a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c @@ -0,0 +1,136 @@ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ + +#include "arm_mve.h" + +void +foo (void) +{ + mve_pred16_t p; + int8x16_t a; + int8_t a1[10]; + int16x8_t b; + int16_t b1[10]; + int32x4_t c; + int32_t c1[10]; + uint8x16_t ua; + uint8_t ua1[10]; + uint16x8_t ub; + uint16_t ub1[10]; + uint32x4_t uc; + uint32_t uc1[10]; + float16x8_t fb; + float16_t fb1[10]; + float32x4_t fc; + float32_t fc1[10]; + + fb = vld1q (fb1); + fc = vld1q (fc1); + b = vld1q (b1); + c = vld1q (c1); + a = vld1q (a1); + ub = vld1q (ub1); + uc = vld1q (uc1); + ua = vld1q (ua1); + fb = vld1q_z (fb1, p); + fc = vld1q_z (fc1, p); + b = vld1q_z (b1, p); + c = vld1q_z (c1, p); + a = vld1q_z (a1, p); + ub = vld1q_z (ub1, p); + uc = vld1q_z (uc1, p); + ua = vld1q_z (ua1, p); +} + +void +foo1 (void) +{ + mve_pred16_t p; + int8x16x2_t a; + int8_t a1[10]; + int16x8x2_t b; + int16_t b1[10]; + int32x4x2_t c; + int32_t c1[10]; + uint8x16x2_t ua; + uint8_t ua1[10]; + uint16x8x2_t ub; + uint16_t ub1[10]; + uint32x4x2_t uc; + uint32_t uc1[10]; + float16x8x2_t fb; + float16_t fb1[10]; + float32x4x2_t fc; + float32_t fc1[10]; + + fb = vld2q (fb1); + fc = vld2q (fc1); + b = vld2q (b1); + c = vld2q (c1); + a = vld2q (a1); + ub = vld2q (ub1); + uc = vld2q (uc1); + ua = vld2q (ua1); +} + +void +foo2 (void) +{ + mve_pred16_t p; + int8x16x4_t a; + int8_t a1[10]; + int16x8x4_t b; + int16_t b1[10]; + int32x4x4_t c; + int32_t c1[10]; + uint8x16x4_t ua; + uint8_t ua1[10]; + uint16x8x4_t ub; + uint16_t ub1[10]; + uint32x4x4_t uc; + uint32_t uc1[10]; + float16x8x4_t fb; + float16_t fb1[10]; + float32x4x4_t fc; + float32_t fc1[10]; + + fb = vld4q (fb1); + fc = vld4q (fc1); + b = vld4q (b1); + c = vld4q (c1); + a = vld4q (a1); + ub = vld4q (ub1); + uc = vld4q (uc1); + ua = vld4q (ua1); +} + +void +foo3 (void) +{ + mve_pred16_t p; + int16x8_t a; + uint16x8_t ua; + int8_t a1[10]; + uint8_t ua1[10]; + uint16x8_t offset_a; + int8x16_t b; + uint8x16_t ub; + uint8x16_t offset_b; + int32x4_t c; + uint32x4_t uc; + uint32x4_t offset_c; + + a = vldrbq_gather_offset (a1, offset_a); + ua = vldrbq_gather_offset (ua1, offset_a); + b = vldrbq_gather_offset (a1, offset_b); + ub = vldrbq_gather_offset (ua1, offset_b); + c = vldrbq_gather_offset (a1, offset_c); + uc = vldrbq_gather_offset (ua1, offset_c); + a = vldrbq_gather_offset_z (a1, offset_a, p); + ua = vldrbq_gather_offset_z (ua1, offset_a, p); + b = vldrbq_gather_offset_z (a1, offset_b, p); + ub = vldrbq_gather_offset_z (ua1, offset_b, p); + c = vldrbq_gather_offset_z (a1, offset_c, p); + uc = vldrbq_gather_offset_z (ua1, offset_c, p); +} +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ --===============6033172372798357756== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rb14533.patch" ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybV9tdmUuaCBiL2djYy9jb25maWcvYXJtL2Fy bV9tdmUuaAppbmRleCAxMzgwZjNhY2JmZTY0MDI2YmM4ODJjMzA4YmIxYzI0M2UyN2FjNGIzLi44 M2YxMDAzNjk5MGZjM2RmOTU2ZmIyZmE0ODE4ZDEzMDQxMzhiNDg1IDEwMDY0NAotLS0gYS9nY2Mv Y29uZmlnL2FybS9hcm1fbXZlLmgKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtX212ZS5oCkBAIC0z NzU2NSw0NyArMzc1NjUsNDcgQEAgZXh0ZXJuIHZvaWQgKl9fQVJNX3VuZGVmOwogCiAjZGVmaW5l IF9fYXJtX3ZsZDFxKHAwKSAoXAogICBfR2VuZXJpYyggKGludCAoKilbX19BUk1fbXZlX3R5cGVp ZChwMCldKTAsIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQ4X3RfcHRyXTogX19hcm1f dmxkMXFfczggKF9fQVJNX212ZV9jb2VyY2UocDAsIGludDhfdCBjb25zdCAqKSksIFwKLSAgaW50 ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQxNl90X3B0cl06IF9fYXJtX3ZsZDFxX3MxNiAoX19BUk1f bXZlX2NvZXJjZShwMCwgaW50MTZfdCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVf dHlwZV9pbnQzMl90X3B0cl06IF9fYXJtX3ZsZDFxX3MzMiAoX19BUk1fbXZlX2NvZXJjZShwMCwg aW50MzJfdCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0 cl06IF9fYXJtX3ZsZDFxX3U4IChfX0FSTV9tdmVfY29lcmNlKHAwLCB1aW50OF90IGNvbnN0ICop KSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX3VpbnQxNl90X3B0cl06IF9fYXJtX3ZsZDFx X3UxNiAoX19BUk1fbXZlX2NvZXJjZShwMCwgdWludDE2X3QgY29uc3QgKikpLCBcCi0gIGludCAo KilbX19BUk1fbXZlX3R5cGVfdWludDMyX3RfcHRyXTogX19hcm1fdmxkMXFfdTMyIChfX0FSTV9t dmVfY29lcmNlKHAwLCB1aW50MzJfdCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVf dHlwZV9mbG9hdDE2X3RfcHRyXTogX19hcm1fdmxkMXFfZjE2IChfX0FSTV9tdmVfY29lcmNlKHAw LCBmbG9hdDE2X3QgY29uc3QgKikpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfZmxvYXQz Ml90X3B0cl06IF9fYXJtX3ZsZDFxX2YzMiAoX19BUk1fbXZlX2NvZXJjZShwMCwgZmxvYXQzMl90 IGNvbnN0ICopKSkpCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl06IF9fYXJt X3ZsZDFxX3M4IChfX0FSTV9tdmVfY29lcmNlMShwMCwgaW50OF90ICopKSwgXAorICBpbnQgKCop W19fQVJNX212ZV90eXBlX2ludDE2X3RfcHRyXTogX19hcm1fdmxkMXFfczE2IChfX0FSTV9tdmVf Y29lcmNlMShwMCwgaW50MTZfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQz Ml90X3B0cl06IF9fYXJtX3ZsZDFxX3MzMiAoX19BUk1fbXZlX2NvZXJjZTEocDAsIGludDMyX3Qg KikpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDhfdF9wdHJdOiBfX2FybV92bGQx cV91OCAoX19BUk1fbXZlX2NvZXJjZTEocDAsIHVpbnQ4X3QgKikpLCBcCisgIGludCAoKilbX19B Uk1fbXZlX3R5cGVfdWludDE2X3RfcHRyXTogX19hcm1fdmxkMXFfdTE2IChfX0FSTV9tdmVfY29l cmNlMShwMCwgdWludDE2X3QgKikpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDMy X3RfcHRyXTogX19hcm1fdmxkMXFfdTMyIChfX0FSTV9tdmVfY29lcmNlMShwMCwgdWludDMyX3Qg KikpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfZmxvYXQxNl90X3B0cl06IF9fYXJtX3Zs ZDFxX2YxNiAoX19BUk1fbXZlX2NvZXJjZTEocDAsIGZsb2F0MTZfdCAqKSksIFwKKyAgaW50ICgq KVtfX0FSTV9tdmVfdHlwZV9mbG9hdDMyX3RfcHRyXTogX19hcm1fdmxkMXFfZjMyIChfX0FSTV9t dmVfY29lcmNlMShwMCwgZmxvYXQzMl90ICopKSkpCiAKICNkZWZpbmUgX19hcm1fdmxkMXFfeihw MCxwMSkgKCBcCiAgIF9HZW5lcmljKCAoaW50ICgqKVtfX0FSTV9tdmVfdHlwZWlkKHAwKV0pMCwg XAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDhfdF9wdHJdOiBfX2FybV92bGQxcV96X3M4 IChfX0FSTV9tdmVfY29lcmNlKHAwLCBpbnQ4X3QgY29uc3QgKiksIHAxKSwgXAotICBpbnQgKCop W19fQVJNX212ZV90eXBlX2ludDE2X3RfcHRyXTogX19hcm1fdmxkMXFfel9zMTYgKF9fQVJNX212 ZV9jb2VyY2UocDAsIGludDE2X3QgY29uc3QgKiksIHAxKSwgXAotICBpbnQgKCopW19fQVJNX212 ZV90eXBlX2ludDMyX3RfcHRyXTogX19hcm1fdmxkMXFfel9zMzIgKF9fQVJNX212ZV9jb2VyY2Uo cDAsIGludDMyX3QgY29uc3QgKiksIHAxKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX3Vp bnQ4X3RfcHRyXTogX19hcm1fdmxkMXFfel91OCAoX19BUk1fbXZlX2NvZXJjZShwMCwgdWludDhf dCBjb25zdCAqKSwgcDEpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDE2X3RfcHRy XTogX19hcm1fdmxkMXFfel91MTYgKF9fQVJNX212ZV9jb2VyY2UocDAsIHVpbnQxNl90IGNvbnN0 ICopLCBwMSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MzJfdF9wdHJdOiBfX2Fy bV92bGQxcV96X3UzMiAoX19BUk1fbXZlX2NvZXJjZShwMCwgdWludDMyX3QgY29uc3QgKiksIHAx KSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX2Zsb2F0MTZfdF9wdHJdOiBfX2FybV92bGQx cV96X2YxNiAoX19BUk1fbXZlX2NvZXJjZShwMCwgZmxvYXQxNl90IGNvbnN0ICopLCBwMSksIFwK LSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9mbG9hdDMyX3RfcHRyXTogX19hcm1fdmxkMXFfel9m MzIgKF9fQVJNX212ZV9jb2VyY2UocDAsIGZsb2F0MzJfdCBjb25zdCAqKSwgcDEpKSkKKyAgaW50 ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQ4X3RfcHRyXTogX19hcm1fdmxkMXFfel9zOCAoX19BUk1f bXZlX2NvZXJjZTEocDAsIGludDhfdCAqKSwgcDEpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5 cGVfaW50MTZfdF9wdHJdOiBfX2FybV92bGQxcV96X3MxNiAoX19BUk1fbXZlX2NvZXJjZTEocDAs IGludDE2X3QgKiksIHAxKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDMyX3RfcHRy XTogX19hcm1fdmxkMXFfel9zMzIgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQzMl90ICopLCBw MSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl06IF9fYXJtX3ZsZDFx X3pfdTggKF9fQVJNX212ZV9jb2VyY2UxKHAwLCB1aW50OF90ICopLCBwMSksIFwKKyAgaW50ICgq KVtfX0FSTV9tdmVfdHlwZV91aW50MTZfdF9wdHJdOiBfX2FybV92bGQxcV96X3UxNiAoX19BUk1f bXZlX2NvZXJjZTEocDAsIHVpbnQxNl90ICopLCBwMSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVf dHlwZV91aW50MzJfdF9wdHJdOiBfX2FybV92bGQxcV96X3UzMiAoX19BUk1fbXZlX2NvZXJjZTEo cDAsIHVpbnQzMl90ICopLCBwMSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9mbG9hdDE2 X3RfcHRyXTogX19hcm1fdmxkMXFfel9mMTYgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBmbG9hdDE2 X3QgKiksIHAxKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX2Zsb2F0MzJfdF9wdHJdOiBf X2FybV92bGQxcV96X2YzMiAoX19BUk1fbXZlX2NvZXJjZTEocDAsIGZsb2F0MzJfdCAqKSwgcDEp KSkKIAogI2RlZmluZSBfX2FybV92bGQycShwMCkgKCBcCiAgIF9HZW5lcmljKCAoaW50ICgqKVtf X0FSTV9tdmVfdHlwZWlkKHAwKV0pMCwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDhf dF9wdHJdOiBfX2FybV92bGQycV9zOCAoX19BUk1fbXZlX2NvZXJjZShwMCwgaW50OF90IGNvbnN0 ICopKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDE2X3RfcHRyXTogX19hcm1fdmxk MnFfczE2IChfX0FSTV9tdmVfY29lcmNlKHAwLCBpbnQxNl90IGNvbnN0ICopKSwgXAotICBpbnQg KCopW19fQVJNX212ZV90eXBlX2ludDMyX3RfcHRyXTogX19hcm1fdmxkMnFfczMyIChfX0FSTV9t dmVfY29lcmNlKHAwLCBpbnQzMl90IGNvbnN0ICopKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90 eXBlX3VpbnQ4X3RfcHRyXTogX19hcm1fdmxkMnFfdTggKF9fQVJNX212ZV9jb2VyY2UocDAsIHVp bnQ4X3QgY29uc3QgKikpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDE2X3RfcHRy XTogX19hcm1fdmxkMnFfdTE2IChfX0FSTV9tdmVfY29lcmNlKHAwLCB1aW50MTZfdCBjb25zdCAq KSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MzJfdF9wdHJdOiBfX2FybV92bGQy cV91MzIgKF9fQVJNX212ZV9jb2VyY2UocDAsIHVpbnQzMl90IGNvbnN0ICopKSwgXAotICBpbnQg KCopW19fQVJNX212ZV90eXBlX2Zsb2F0MTZfdF9wdHJdOiBfX2FybV92bGQycV9mMTYgKF9fQVJN X212ZV9jb2VyY2UocDAsIGZsb2F0MTZfdCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtfX0FSTV9t dmVfdHlwZV9mbG9hdDMyX3RfcHRyXTogX19hcm1fdmxkMnFfZjMyIChfX0FSTV9tdmVfY29lcmNl KHAwLCBmbG9hdDMyX3QgY29uc3QgKikpKSkKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQ4 X3RfcHRyXTogX19hcm1fdmxkMnFfczggKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQ4X3QgKikp LCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50MTZfdF9wdHJdOiBfX2FybV92bGQycV9z MTYgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQxNl90ICopKSwgXAorICBpbnQgKCopW19fQVJN X212ZV90eXBlX2ludDMyX3RfcHRyXTogX19hcm1fdmxkMnFfczMyIChfX0FSTV9tdmVfY29lcmNl MShwMCwgaW50MzJfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0 cl06IF9fYXJtX3ZsZDJxX3U4IChfX0FSTV9tdmVfY29lcmNlMShwMCwgdWludDhfdCAqKSksIFwK KyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MTZfdF9wdHJdOiBfX2FybV92bGQycV91MTYg KF9fQVJNX212ZV9jb2VyY2UxKHAwLCB1aW50MTZfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FSTV9t dmVfdHlwZV91aW50MzJfdF9wdHJdOiBfX2FybV92bGQycV91MzIgKF9fQVJNX212ZV9jb2VyY2Ux KHAwLCB1aW50MzJfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9mbG9hdDE2X3Rf cHRyXTogX19hcm1fdmxkMnFfZjE2IChfX0FSTV9tdmVfY29lcmNlMShwMCwgZmxvYXQxNl90ICop KSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX2Zsb2F0MzJfdF9wdHJdOiBfX2FybV92bGQy cV9mMzIgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBmbG9hdDMyX3QgKikpKSkKIAogI2RlZmluZSBf X2FybV92bGQ0cShwMCkgKCBcCiAgIF9HZW5lcmljKCAoaW50ICgqKVtfX0FSTV9tdmVfdHlwZWlk KHAwKV0pMCwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDhfdF9wdHJdOiBfX2FybV92 bGQ0cV9zOCAoX19BUk1fbXZlX2NvZXJjZShwMCwgaW50OF90IGNvbnN0ICopKSwgXAotICBpbnQg KCopW19fQVJNX212ZV90eXBlX2ludDE2X3RfcHRyXTogX19hcm1fdmxkNHFfczE2IChfX0FSTV9t dmVfY29lcmNlKHAwLCBpbnQxNl90IGNvbnN0ICopKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90 eXBlX2ludDMyX3RfcHRyXTogX19hcm1fdmxkNHFfczMyIChfX0FSTV9tdmVfY29lcmNlKHAwLCBp bnQzMl90IGNvbnN0ICopKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX3VpbnQ4X3RfcHRy XTogX19hcm1fdmxkNHFfdTggKF9fQVJNX212ZV9jb2VyY2UocDAsIHVpbnQ4X3QgY29uc3QgKikp LCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDE2X3RfcHRyXTogX19hcm1fdmxkNHFf dTE2IChfX0FSTV9tdmVfY29lcmNlKHAwLCB1aW50MTZfdCBjb25zdCAqKSksIFwKLSAgaW50ICgq KVtfX0FSTV9tdmVfdHlwZV91aW50MzJfdF9wdHJdOiBfX2FybV92bGQ0cV91MzIgKF9fQVJNX212 ZV9jb2VyY2UocDAsIHVpbnQzMl90IGNvbnN0ICopKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90 eXBlX2Zsb2F0MTZfdF9wdHJdOiBfX2FybV92bGQ0cV9mMTYgKF9fQVJNX212ZV9jb2VyY2UocDAs IGZsb2F0MTZfdCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9mbG9hdDMy X3RfcHRyXTogX19hcm1fdmxkNHFfZjMyIChfX0FSTV9tdmVfY29lcmNlKHAwLCBmbG9hdDMyX3Qg Y29uc3QgKikpKSkKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQ4X3RfcHRyXTogX19hcm1f dmxkNHFfczggKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQ4X3QgKikpLCBcCisgIGludCAoKilb X19BUk1fbXZlX3R5cGVfaW50MTZfdF9wdHJdOiBfX2FybV92bGQ0cV9zMTYgKF9fQVJNX212ZV9j b2VyY2UxKHAwLCBpbnQxNl90ICopKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDMy X3RfcHRyXTogX19hcm1fdmxkNHFfczMyIChfX0FSTV9tdmVfY29lcmNlMShwMCwgaW50MzJfdCAq KSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl06IF9fYXJtX3ZsZDRx X3U4IChfX0FSTV9tdmVfY29lcmNlMShwMCwgdWludDhfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FS TV9tdmVfdHlwZV91aW50MTZfdF9wdHJdOiBfX2FybV92bGQ0cV91MTYgKF9fQVJNX212ZV9jb2Vy Y2UxKHAwLCB1aW50MTZfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MzJf dF9wdHJdOiBfX2FybV92bGQ0cV91MzIgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCB1aW50MzJfdCAq KSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9mbG9hdDE2X3RfcHRyXTogX19hcm1fdmxk NHFfZjE2IChfX0FSTV9tdmVfY29lcmNlMShwMCwgZmxvYXQxNl90ICopKSwgXAorICBpbnQgKCop W19fQVJNX212ZV90eXBlX2Zsb2F0MzJfdF9wdHJdOiBfX2FybV92bGQ0cV9mMzIgKF9fQVJNX212 ZV9jb2VyY2UxKHAwLCBmbG9hdDMyX3QgKikpKSkKIAogI2RlZmluZSBfX2FybV92bGRyaHFfZ2F0 aGVyX29mZnNldChwMCxwMSkgKHsgX190eXBlb2YocDEpIF9fcDEgPSAocDEpOyBcCiAgIF9HZW5l cmljKCAoaW50ICgqKVtfX0FSTV9tdmVfdHlwZWlkKHAwKV1bX19BUk1fbXZlX3R5cGVpZChfX3Ax KV0pMCwgXApAQCAtMzk2MzEsMjUgKzM5NjMxLDI2IEBAIGV4dGVybiB2b2lkICpfX0FSTV91bmRl ZjsKIAogI2RlZmluZSBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldChwMCxwMSkgKHsgX190eXBl b2YocDEpIF9fcDEgPSAocDEpOyBcCiAgIF9HZW5lcmljKCAoaW50ICgqKVtfX0FSTV9tdmVfdHlw ZWlkKHAwKV1bX19BUk1fbXZlX3R5cGVpZChfX3AxKV0pMCwgXAotICBpbnQgKCopW19fQVJNX212 ZV90eXBlX2ludDhfdF9wdHJdW19fQVJNX212ZV90eXBlX3VpbnQ4eDE2X3RdOiBfX2FybV92bGRy YnFfZ2F0aGVyX29mZnNldF9zOCAoX19BUk1fbXZlX2NvZXJjZShwMCwgaW50OF90IGNvbnN0ICop LCBfX0FSTV9tdmVfY29lcmNlKF9fcDEsIHVpbnQ4eDE2X3QpKSwgXAotICBpbnQgKCopW19fQVJN X212ZV90eXBlX2ludDhfdF9wdHJdW19fQVJNX212ZV90eXBlX3VpbnQxNng4X3RdOiBfX2FybV92 bGRyYnFfZ2F0aGVyX29mZnNldF9zMTYgKF9fQVJNX212ZV9jb2VyY2UocDAsIGludDhfdCBjb25z dCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50MTZ4OF90KSksIFwKLSAgaW50ICgqKVtf X0FSTV9tdmVfdHlwZV9pbnQ4X3RfcHRyXVtfX0FSTV9tdmVfdHlwZV91aW50MzJ4NF90XTogX19h cm1fdmxkcmJxX2dhdGhlcl9vZmZzZXRfczMyIChfX0FSTV9tdmVfY29lcmNlKHAwLCBpbnQ4X3Qg Y29uc3QgKiksIF9fQVJNX212ZV9jb2VyY2UoX19wMSwgdWludDMyeDRfdCkpLCBcCi0gIGludCAo KilbX19BUk1fbXZlX3R5cGVfdWludDhfdF9wdHJdW19fQVJNX212ZV90eXBlX3VpbnQ4eDE2X3Rd OiBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF91OCAoX19BUk1fbXZlX2NvZXJjZShwMCwgdWlu dDhfdCBjb25zdCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50OHgxNl90KSksIFwKLSAg aW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl1bX19BUk1fbXZlX3R5cGVfdWludDE2 eDhfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3UxNiAoX19BUk1fbXZlX2NvZXJjZShw MCwgdWludDhfdCBjb25zdCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50MTZ4OF90KSks IFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl1bX19BUk1fbXZlX3R5cGVf dWludDMyeDRfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3UzMiAoX19BUk1fbXZlX2Nv ZXJjZShwMCwgdWludDhfdCBjb25zdCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50MzJ4 NF90KSkpO30pCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl1bX19BUk1fbXZl X3R5cGVfdWludDh4MTZfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3M4IChfX0FSTV9t dmVfY29lcmNlMShwMCwgaW50OF90ICopLCBfX0FSTV9tdmVfY29lcmNlKF9fcDEsIHVpbnQ4eDE2 X3QpKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDhfdF9wdHJdW19fQVJNX212ZV90 eXBlX3VpbnQxNng4X3RdOiBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF9zMTYgKF9fQVJNX212 ZV9jb2VyY2UxKHAwLCBpbnQ4X3QgKiksIF9fQVJNX212ZV9jb2VyY2UoX19wMSwgdWludDE2eDhf dCkpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl1bX19BUk1fbXZlX3R5 cGVfdWludDMyeDRfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3MzMiAoX19BUk1fbXZl X2NvZXJjZTEocDAsIGludDhfdCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50MzJ4NF90 KSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl1bX19BUk1fbXZlX3R5 cGVfdWludDh4MTZfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3U4IChfX0FSTV9tdmVf Y29lcmNlMShwMCwgdWludDhfdCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50OHgxNl90 KSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl1bX19BUk1fbXZlX3R5 cGVfdWludDE2eDhfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3UxNiAoX19BUk1fbXZl X2NvZXJjZTEocDAsIHVpbnQ4X3QgKiksIF9fQVJNX212ZV9jb2VyY2UoX19wMSwgdWludDE2eDhf dCkpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDhfdF9wdHJdW19fQVJNX212ZV90 eXBlX3VpbnQzMng0X3RdOiBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF91MzIgKF9fQVJNX212 ZV9jb2VyY2UxKHAwLCB1aW50OF90ICopLCBfX0FSTV9tdmVfY29lcmNlKF9fcDEsIHVpbnQzMng0 X3QpKSk7fSkKIAogI2RlZmluZSBfX2FybV92c3Ryd3Ffc2NhdHRlcl9iYXNlX3AocDAscDEscDIs cDMpICh7IF9fdHlwZW9mKHAyKSBfX3AyID0gKHAyKTsgXAogICBfR2VuZXJpYyggKGludCAoKilb X19BUk1fbXZlX3R5cGVpZChfX3AyKV0pMCwgXAogICBpbnQgKCopW19fQVJNX212ZV90eXBlX2lu dDMyeDRfdF06IF9fYXJtX3ZzdHJ3cV9zY2F0dGVyX2Jhc2VfcF9zMzIgKHAwLCBwMSwgX19BUk1f bXZlX2NvZXJjZShfX3AyLCBpbnQzMng0X3QpLCBwMyksIFwKICAgaW50ICgqKVtfX0FSTV9tdmVf dHlwZV91aW50MzJ4NF90XTogX19hcm1fdnN0cndxX3NjYXR0ZXJfYmFzZV9wX3UzMiAocDAsIHAx LCBfX0FSTV9tdmVfY29lcmNlKF9fcDIsIHVpbnQzMng0X3QpLCBwMykpO30pCiAKLSNkZWZpbmUg X19hcm1fdmxkMXEocDApIChfR2VuZXJpYyggKGludCAoKilbX19BUk1fbXZlX3R5cGVpZChwMCld KTAsIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQ4X3RfcHRyXTogX19hcm1fdmxkMXFf czggKF9fQVJNX212ZV9jb2VyY2UocDAsIGludDhfdCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtf X0FSTV9tdmVfdHlwZV9pbnQxNl90X3B0cl06IF9fYXJtX3ZsZDFxX3MxNiAoX19BUk1fbXZlX2Nv ZXJjZShwMCwgaW50MTZfdCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9p bnQzMl90X3B0cl06IF9fYXJtX3ZsZDFxX3MzMiAoX19BUk1fbXZlX2NvZXJjZShwMCwgaW50MzJf dCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl06IF9f YXJtX3ZsZDFxX3U4IChfX0FSTV9tdmVfY29lcmNlKHAwLCB1aW50OF90IGNvbnN0ICopKSwgXAot ICBpbnQgKCopW19fQVJNX212ZV90eXBlX3VpbnQxNl90X3B0cl06IF9fYXJtX3ZsZDFxX3UxNiAo X19BUk1fbXZlX2NvZXJjZShwMCwgdWludDE2X3QgY29uc3QgKikpLCBcCi0gIGludCAoKilbX19B Uk1fbXZlX3R5cGVfdWludDMyX3RfcHRyXTogX19hcm1fdmxkMXFfdTMyIChfX0FSTV9tdmVfY29l cmNlKHAwLCB1aW50MzJfdCBjb25zdCAqKSkpKQorI2RlZmluZSBfX2FybV92bGQxcShwMCkgKFwK KyAgX0dlbmVyaWMoIChpbnQgKCopW19fQVJNX212ZV90eXBlaWQocDApXSkwLCBcCisgIGludCAo KilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl06IF9fYXJtX3ZsZDFxX3M4IChfX0FSTV9tdmVf Y29lcmNlMShwMCwgaW50OF90ICopKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDE2 X3RfcHRyXTogX19hcm1fdmxkMXFfczE2IChfX0FSTV9tdmVfY29lcmNlMShwMCwgaW50MTZfdCAq KSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQzMl90X3B0cl06IF9fYXJtX3ZsZDFx X3MzMiAoX19BUk1fbXZlX2NvZXJjZTEocDAsIGludDMyX3QgKikpLCBcCisgIGludCAoKilbX19B Uk1fbXZlX3R5cGVfdWludDhfdF9wdHJdOiBfX2FybV92bGQxcV91OCAoX19BUk1fbXZlX2NvZXJj ZTEocDAsIHVpbnQ4X3QgKikpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDE2X3Rf cHRyXTogX19hcm1fdmxkMXFfdTE2IChfX0FSTV9tdmVfY29lcmNlMShwMCwgdWludDE2X3QgKikp LCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDMyX3RfcHRyXTogX19hcm1fdmxkMXFf dTMyIChfX0FSTV9tdmVfY29lcmNlMShwMCwgdWludDMyX3QgKikpKSkKIAogI2RlZmluZSBfX2Fy bV92bGRyaHFfZ2F0aGVyX29mZnNldChwMCxwMSkgKHsgX190eXBlb2YocDEpIF9fcDEgPSAocDEp OyBcCiAgIF9HZW5lcmljKCAoaW50ICgqKVtfX0FSTV9tdmVfdHlwZWlkKHAwKV1bX19BUk1fbXZl X3R5cGVpZChfX3AxKV0pMCwgXApAQCAtNDAxNDYsMjkgKzQwMTQ3LDI5IEBAIGV4dGVybiB2b2lk ICpfX0FSTV91bmRlZjsKICAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MzJ4NF90XTogX19h cm1fdmJyc3JxX3hfbl91MzIgKF9fQVJNX212ZV9jb2VyY2UoX19wMSwgdWludDMyeDRfdCksIHAy LCBwMykpO30pCiAKICNkZWZpbmUgX19hcm1fdmxkMXFfeihwMCxwMSkgKCBfR2VuZXJpYyggKGlu dCAoKilbX19BUk1fbXZlX3R5cGVpZChwMCldKTAsIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlw ZV9pbnQ4X3RfcHRyXTogX19hcm1fdmxkMXFfel9zOCAoX19BUk1fbXZlX2NvZXJjZShwMCwgaW50 OF90IGNvbnN0ICopLCBwMSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQxNl90X3B0 cl06IF9fYXJtX3ZsZDFxX3pfczE2IChfX0FSTV9tdmVfY29lcmNlKHAwLCBpbnQxNl90IGNvbnN0 ICopLCBwMSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQzMl90X3B0cl06IF9fYXJt X3ZsZDFxX3pfczMyIChfX0FSTV9tdmVfY29lcmNlKHAwLCBpbnQzMl90IGNvbnN0ICopLCBwMSks IFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl06IF9fYXJtX3ZsZDFxX3pf dTggKF9fQVJNX212ZV9jb2VyY2UocDAsIHVpbnQ4X3QgY29uc3QgKiksIHAxKSwgXAotICBpbnQg KCopW19fQVJNX212ZV90eXBlX3VpbnQxNl90X3B0cl06IF9fYXJtX3ZsZDFxX3pfdTE2IChfX0FS TV9tdmVfY29lcmNlKHAwLCB1aW50MTZfdCBjb25zdCAqKSwgcDEpLCBcCi0gIGludCAoKilbX19B Uk1fbXZlX3R5cGVfdWludDMyX3RfcHRyXTogX19hcm1fdmxkMXFfel91MzIgKF9fQVJNX212ZV9j b2VyY2UocDAsIHVpbnQzMl90IGNvbnN0ICopLCBwMSkpKQorICBpbnQgKCopW19fQVJNX212ZV90 eXBlX2ludDhfdF9wdHJdOiBfX2FybV92bGQxcV96X3M4IChfX0FSTV9tdmVfY29lcmNlMShwMCwg aW50OF90ICopLCBwMSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQxNl90X3B0cl06 IF9fYXJtX3ZsZDFxX3pfczE2IChfX0FSTV9tdmVfY29lcmNlMShwMCwgaW50MTZfdCAqKSwgcDEp LCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50MzJfdF9wdHJdOiBfX2FybV92bGQxcV96 X3MzMiAoX19BUk1fbXZlX2NvZXJjZTEocDAsIGludDMyX3QgKiksIHAxKSwgXAorICBpbnQgKCop W19fQVJNX212ZV90eXBlX3VpbnQ4X3RfcHRyXTogX19hcm1fdmxkMXFfel91OCAoX19BUk1fbXZl X2NvZXJjZTEocDAsIHVpbnQ4X3QgKiksIHAxKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBl X3VpbnQxNl90X3B0cl06IF9fYXJtX3ZsZDFxX3pfdTE2IChfX0FSTV9tdmVfY29lcmNlMShwMCwg dWludDE2X3QgKiksIHAxKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX3VpbnQzMl90X3B0 cl06IF9fYXJtX3ZsZDFxX3pfdTMyIChfX0FSTV9tdmVfY29lcmNlMShwMCwgdWludDMyX3QgKiks IHAxKSkpCiAKICNkZWZpbmUgX19hcm1fdmxkMnEocDApICggX0dlbmVyaWMoIChpbnQgKCopW19f QVJNX212ZV90eXBlaWQocDApXSkwLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90 X3B0cl06IF9fYXJtX3ZsZDJxX3M4IChfX0FSTV9tdmVfY29lcmNlKHAwLCBpbnQ4X3QgY29uc3Qg KikpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50MTZfdF9wdHJdOiBfX2FybV92bGQy cV9zMTYgKF9fQVJNX212ZV9jb2VyY2UocDAsIGludDE2X3QgY29uc3QgKikpLCBcCi0gIGludCAo KilbX19BUk1fbXZlX3R5cGVfaW50MzJfdF9wdHJdOiBfX2FybV92bGQycV9zMzIgKF9fQVJNX212 ZV9jb2VyY2UocDAsIGludDMyX3QgY29uc3QgKikpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5 cGVfdWludDhfdF9wdHJdOiBfX2FybV92bGQycV91OCAoX19BUk1fbXZlX2NvZXJjZShwMCwgdWlu dDhfdCBjb25zdCAqKSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MTZfdF9wdHJd OiBfX2FybV92bGQycV91MTYgKF9fQVJNX212ZV9jb2VyY2UocDAsIHVpbnQxNl90IGNvbnN0ICop KSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX3VpbnQzMl90X3B0cl06IF9fYXJtX3ZsZDJx X3UzMiAoX19BUk1fbXZlX2NvZXJjZShwMCwgdWludDMyX3QgY29uc3QgKikpKSkKKyAgaW50ICgq KVtfX0FSTV9tdmVfdHlwZV9pbnQ4X3RfcHRyXTogX19hcm1fdmxkMnFfczggKF9fQVJNX212ZV9j b2VyY2UxKHAwLCBpbnQ4X3QgKikpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50MTZf dF9wdHJdOiBfX2FybV92bGQycV9zMTYgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQxNl90ICop KSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDMyX3RfcHRyXTogX19hcm1fdmxkMnFf czMyIChfX0FSTV9tdmVfY29lcmNlMShwMCwgaW50MzJfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FS TV9tdmVfdHlwZV91aW50OF90X3B0cl06IF9fYXJtX3ZsZDJxX3U4IChfX0FSTV9tdmVfY29lcmNl MShwMCwgdWludDhfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MTZfdF9w dHJdOiBfX2FybV92bGQycV91MTYgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCB1aW50MTZfdCAqKSks IFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MzJfdF9wdHJdOiBfX2FybV92bGQycV91 MzIgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCB1aW50MzJfdCAqKSkpKQogCiAKICNkZWZpbmUgX19h cm1fdmxkNHEocDApICggX0dlbmVyaWMoIChpbnQgKCopW19fQVJNX212ZV90eXBlaWQocDApXSkw LCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl06IF9fYXJtX3ZsZDRxX3M4 IChfX0FSTV9tdmVfY29lcmNlKHAwLCBpbnQ4X3QgY29uc3QgKikpLCBcCi0gIGludCAoKilbX19B Uk1fbXZlX3R5cGVfaW50MTZfdF9wdHJdOiBfX2FybV92bGQ0cV9zMTYgKF9fQVJNX212ZV9jb2Vy Y2UocDAsIGludDE2X3QgY29uc3QgKikpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50 MzJfdF9wdHJdOiBfX2FybV92bGQ0cV9zMzIgKF9fQVJNX212ZV9jb2VyY2UocDAsIGludDMyX3Qg Y29uc3QgKikpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWludDhfdF9wdHJdOiBfX2Fy bV92bGQ0cV91OCAoX19BUk1fbXZlX2NvZXJjZShwMCwgdWludDhfdCBjb25zdCAqKSksIFwKLSAg aW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MTZfdF9wdHJdOiBfX2FybV92bGQ0cV91MTYgKF9f QVJNX212ZV9jb2VyY2UocDAsIHVpbnQxNl90IGNvbnN0ICopKSwgXAotICBpbnQgKCopW19fQVJN X212ZV90eXBlX3VpbnQzMl90X3B0cl06IF9fYXJtX3ZsZDRxX3UzMiAoX19BUk1fbXZlX2NvZXJj ZShwMCwgdWludDMyX3QgY29uc3QgKikpKSkKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQ4 X3RfcHRyXTogX19hcm1fdmxkNHFfczggKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQ4X3QgKikp LCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50MTZfdF9wdHJdOiBfX2FybV92bGQ0cV9z MTYgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQxNl90ICopKSwgXAorICBpbnQgKCopW19fQVJN X212ZV90eXBlX2ludDMyX3RfcHRyXTogX19hcm1fdmxkNHFfczMyIChfX0FSTV9tdmVfY29lcmNl MShwMCwgaW50MzJfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0 cl06IF9fYXJtX3ZsZDRxX3U4IChfX0FSTV9tdmVfY29lcmNlMShwMCwgdWludDhfdCAqKSksIFwK KyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50MTZfdF9wdHJdOiBfX2FybV92bGQ0cV91MTYg KF9fQVJNX212ZV9jb2VyY2UxKHAwLCB1aW50MTZfdCAqKSksIFwKKyAgaW50ICgqKVtfX0FSTV9t dmVfdHlwZV91aW50MzJfdF9wdHJdOiBfX2FybV92bGQ0cV91MzIgKF9fQVJNX212ZV9jb2VyY2Ux KHAwLCB1aW50MzJfdCAqKSkpKQogCiAjZGVmaW5lIF9fYXJtX3ZnZXRxX2xhbmUocDAscDEpICh7 IF9fdHlwZW9mKHAwKSBfX3AwID0gKHAwKTsgXAogICBfR2VuZXJpYyggKGludCAoKilbX19BUk1f bXZlX3R5cGVpZChfX3AwKV0pMCwgXApAQCAtNDA1MTUsMTIgKzQwNTE2LDEyIEBAIGV4dGVybiB2 b2lkICpfX0FSTV91bmRlZjsKIAogI2RlZmluZSBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF96 KHAwLHAxLHAyKSAoeyBfX3R5cGVvZihwMSkgX19wMSA9IChwMSk7IFwKICAgX0dlbmVyaWMoIChp bnQgKCopW19fQVJNX212ZV90eXBlaWQocDApXVtfX0FSTV9tdmVfdHlwZWlkKF9fcDEpXSkwLCBc Ci0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl1bX19BUk1fbXZlX3R5cGVfdWlu dDh4MTZfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfczggKF9fQVJNX212ZV9jb2Vy Y2UocDAsIGludDhfdCBjb25zdCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50OHgxNl90 KSwgcDIpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl1bX19BUk1fbXZl X3R5cGVfdWludDE2eDhfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfczE2IChfX0FS TV9tdmVfY29lcmNlKHAwLCBpbnQ4X3QgY29uc3QgKiksIF9fQVJNX212ZV9jb2VyY2UoX19wMSwg dWludDE2eDhfdCksIHAyKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDhfdF9wdHJd W19fQVJNX212ZV90eXBlX3VpbnQzMng0X3RdOiBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF96 X3MzMiAoX19BUk1fbXZlX2NvZXJjZShwMCwgaW50OF90IGNvbnN0ICopLCBfX0FSTV9tdmVfY29l cmNlKF9fcDEsIHVpbnQzMng0X3QpLCBwMiksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91 aW50OF90X3B0cl1bX19BUk1fbXZlX3R5cGVfdWludDh4MTZfdF06IF9fYXJtX3ZsZHJicV9nYXRo ZXJfb2Zmc2V0X3pfdTggKF9fQVJNX212ZV9jb2VyY2UocDAsIHVpbnQ4X3QgY29uc3QgKiksIF9f QVJNX212ZV9jb2VyY2UoX19wMSwgdWludDh4MTZfdCksIHAyKSwgXAotICBpbnQgKCopW19fQVJN X212ZV90eXBlX3VpbnQ4X3RfcHRyXVtfX0FSTV9tdmVfdHlwZV91aW50MTZ4OF90XTogX19hcm1f dmxkcmJxX2dhdGhlcl9vZmZzZXRfel91MTYgKF9fQVJNX212ZV9jb2VyY2UocDAsIHVpbnQ4X3Qg Y29uc3QgKiksIF9fQVJNX212ZV9jb2VyY2UoX19wMSwgdWludDE2eDhfdCksIHAyKSwgXAotICBp bnQgKCopW19fQVJNX212ZV90eXBlX3VpbnQ4X3RfcHRyXVtfX0FSTV9tdmVfdHlwZV91aW50MzJ4 NF90XTogX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXRfel91MzIgKF9fQVJNX212ZV9jb2VyY2Uo cDAsIHVpbnQ4X3QgY29uc3QgKiksIF9fQVJNX212ZV9jb2VyY2UoX19wMSwgdWludDMyeDRfdCks IHAyKSk7fSkKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQ4X3RfcHRyXVtfX0FSTV9tdmVf dHlwZV91aW50OHgxNl90XTogX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9zOCAoX19BUk1f bXZlX2NvZXJjZTEocDAsIGludDhfdCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50OHgx Nl90KSwgcDIpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl1bX19BUk1f bXZlX3R5cGVfdWludDE2eDhfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3pfczE2IChf X0FSTV9tdmVfY29lcmNlMShwMCwgaW50OF90ICopLCBfX0FSTV9tdmVfY29lcmNlKF9fcDEsIHVp bnQxNng4X3QpLCBwMiksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV9pbnQ4X3RfcHRyXVtf X0FSTV9tdmVfdHlwZV91aW50MzJ4NF90XTogX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZzZXRfel9z MzIgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQ4X3QgKiksIF9fQVJNX212ZV9jb2VyY2UoX19w MSwgdWludDMyeDRfdCksIHAyKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX3VpbnQ4X3Rf cHRyXVtfX0FSTV9tdmVfdHlwZV91aW50OHgxNl90XTogX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZz ZXRfel91OCAoX19BUk1fbXZlX2NvZXJjZTEocDAsIHVpbnQ4X3QgKiksIF9fQVJNX212ZV9jb2Vy Y2UoX19wMSwgdWludDh4MTZfdCksIHAyKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX3Vp bnQ4X3RfcHRyXVtfX0FSTV9tdmVfdHlwZV91aW50MTZ4OF90XTogX19hcm1fdmxkcmJxX2dhdGhl cl9vZmZzZXRfel91MTYgKF9fQVJNX212ZV9jb2VyY2UxKHAwLCB1aW50OF90ICopLCBfX0FSTV9t dmVfY29lcmNlKF9fcDEsIHVpbnQxNng4X3QpLCBwMiksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVf dHlwZV91aW50OF90X3B0cl1bX19BUk1fbXZlX3R5cGVfdWludDMyeDRfdF06IF9fYXJtX3ZsZHJi cV9nYXRoZXJfb2Zmc2V0X3pfdTMyIChfX0FSTV9tdmVfY29lcmNlMShwMCwgdWludDhfdCAqKSwg X19BUk1fbXZlX2NvZXJjZShfX3AxLCB1aW50MzJ4NF90KSwgcDIpKTt9KQogCiAjZGVmaW5lIF9f YXJtX3ZxcmRtbGFocV9tKHAwLHAxLHAyLHAzKSAoeyBfX3R5cGVvZihwMCkgX19wMCA9IChwMCk7 IFwKICAgX190eXBlb2YocDEpIF9fcDEgPSAocDEpOyBcCkBAIC00MTIwMSwxMiArNDEyMDIsMTIg QEAgZXh0ZXJuIHZvaWQgKl9fQVJNX3VuZGVmOwogCiAjZGVmaW5lIF9fYXJtX3ZsZHJicV9nYXRo ZXJfb2Zmc2V0KHAwLHAxKSAoeyBfX3R5cGVvZihwMSkgX19wMSA9IChwMSk7IFwKICAgX0dlbmVy aWMoIChpbnQgKCopW19fQVJNX212ZV90eXBlaWQocDApXVtfX0FSTV9tdmVfdHlwZWlkKF9fcDEp XSkwLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl1bX19BUk1fbXZlX3R5 cGVfdWludDh4MTZfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3M4IChfX0FSTV9tdmVf Y29lcmNlKHAwLCBpbnQ4X3QgY29uc3QgKiksIF9fQVJNX212ZV9jb2VyY2UoX19wMSwgdWludDh4 MTZfdCkpLCBcCi0gIGludCAoKilbX19BUk1fbXZlX3R5cGVfaW50OF90X3B0cl1bX19BUk1fbXZl X3R5cGVfdWludDE2eDhfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3MxNiAoX19BUk1f bXZlX2NvZXJjZShwMCwgaW50OF90IGNvbnN0ICopLCBfX0FSTV9tdmVfY29lcmNlKF9fcDEsIHVp bnQxNng4X3QpKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX2ludDhfdF9wdHJdW19fQVJN X212ZV90eXBlX3VpbnQzMng0X3RdOiBfX2FybV92bGRyYnFfZ2F0aGVyX29mZnNldF9zMzIgKF9f QVJNX212ZV9jb2VyY2UocDAsIGludDhfdCBjb25zdCAqKSwgX19BUk1fbXZlX2NvZXJjZShfX3Ax LCB1aW50MzJ4NF90KSksIFwKLSAgaW50ICgqKVtfX0FSTV9tdmVfdHlwZV91aW50OF90X3B0cl1b X19BUk1fbXZlX3R5cGVfdWludDh4MTZfdF06IF9fYXJtX3ZsZHJicV9nYXRoZXJfb2Zmc2V0X3U4 IChfX0FSTV9tdmVfY29lcmNlKHAwLCB1aW50OF90IGNvbnN0ICopLCBfX0FSTV9tdmVfY29lcmNl KF9fcDEsIHVpbnQ4eDE2X3QpKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX3VpbnQ4X3Rf cHRyXVtfX0FSTV9tdmVfdHlwZV91aW50MTZ4OF90XTogX19hcm1fdmxkcmJxX2dhdGhlcl9vZmZz ZXRfdTE2IChfX0FSTV9tdmVfY29lcmNlKHAwLCB1aW50OF90IGNvbnN0ICopLCBfX0FSTV9tdmVf Y29lcmNlKF9fcDEsIHVpbnQxNng4X3QpKSwgXAotICBpbnQgKCopW19fQVJNX212ZV90eXBlX3Vp bnQ4X3RfcHRyXVtfX0FSTV9tdmVfdHlwZV91aW50MzJ4NF90XTogX19hcm1fdmxkcmJxX2dhdGhl cl9vZmZzZXRfdTMyIChfX0FSTV9tdmVfY29lcmNlKHAwLCB1aW50OF90IGNvbnN0ICopLCBfX0FS TV9tdmVfY29lcmNlKF9fcDEsIHVpbnQzMng0X3QpKSk7fSkKKyAgaW50ICgqKVtfX0FSTV9tdmVf dHlwZV9pbnQ4X3RfcHRyXVtfX0FSTV9tdmVfdHlwZV91aW50OHgxNl90XTogX19hcm1fdmxkcmJx X2dhdGhlcl9vZmZzZXRfczgoX19BUk1fbXZlX2NvZXJjZTEocDAsIGludDhfdCAqKSwgX19BUk1f bXZlX2NvZXJjZShfX3AxLCB1aW50OHgxNl90KSksIFwKKyAgaW50ICgqKVtfX0FSTV9tdmVfdHlw ZV9pbnQ4X3RfcHRyXVtfX0FSTV9tdmVfdHlwZV91aW50MTZ4OF90XTogX19hcm1fdmxkcmJxX2dh dGhlcl9vZmZzZXRfczE2KF9fQVJNX212ZV9jb2VyY2UxKHAwLCBpbnQ4X3QgKiksIF9fQVJNX212 ZV9jb2VyY2UoX19wMSwgdWludDE2eDhfdCkpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVf aW50OF90X3B0cl1bX19BUk1fbXZlX3R5cGVfdWludDMyeDRfdF06IF9fYXJtX3ZsZHJicV9nYXRo ZXJfb2Zmc2V0X3MzMihfX0FSTV9tdmVfY29lcmNlMShwMCwgaW50OF90ICopLCBfX0FSTV9tdmVf Y29lcmNlKF9fcDEsIHVpbnQzMng0X3QpKSwgXAorICBpbnQgKCopW19fQVJNX212ZV90eXBlX3Vp bnQ4X3RfcHRyXVtfX0FSTV9tdmVfdHlwZV91aW50OHgxNl90XTogX19hcm1fdmxkcmJxX2dhdGhl cl9vZmZzZXRfdTgoX19BUk1fbXZlX2NvZXJjZTEocDAsIHVpbnQ4X3QgKiksIF9fQVJNX212ZV9j b2VyY2UoX19wMSwgdWludDh4MTZfdCkpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWlu dDhfdF9wdHJdW19fQVJNX212ZV90eXBlX3VpbnQxNng4X3RdOiBfX2FybV92bGRyYnFfZ2F0aGVy X29mZnNldF91MTYoX19BUk1fbXZlX2NvZXJjZTEocDAsIHVpbnQ4X3QgKiksIF9fQVJNX212ZV9j b2VyY2UoX19wMSwgdWludDE2eDhfdCkpLCBcCisgIGludCAoKilbX19BUk1fbXZlX3R5cGVfdWlu dDhfdF9wdHJdW19fQVJNX212ZV90eXBlX3VpbnQzMng0X3RdOiBfX2FybV92bGRyYnFfZ2F0aGVy X29mZnNldF91MzIoX19BUk1fbXZlX2NvZXJjZTEocDAsIHVpbnQ4X3QgKiksIF9fQVJNX212ZV9j b2VyY2UoX19wMSwgdWludDMyeDRfdCkpKTt9KQogCiAjZGVmaW5lIF9fYXJtX3ZpZHVwcV9tKHAw LHAxLHAyLHAzKSAoeyBfX3R5cGVvZihwMCkgX19wMCA9IChwMCk7IFwKICBfX3R5cGVvZihwMSkg X19wMSA9IChwMSk7IFwKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0v bXZlL2ludHJpbnNpY3MvcHIxMDEwMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0v bXZlL2ludHJpbnNpY3MvcHIxMDEwMTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTI3ODZkMDRmNTU4NDc0ZWQ5 YjNkZjk5OTg2NjNjN2Y5YmM0ZDFhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FybS9tdmUvaW50cmluc2ljcy9wcjEwMTAxNi5jCkBAIC0wLDAgKzEsMTM2IEBA CisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fdjhfMW1fbXZlX2ZwX29rIH0g Ki8KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJtX3Y4XzFtX212ZV9mcCB9ICovCisKKyNpbmNsdWRl ICJhcm1fbXZlLmgiCisKK3ZvaWQKK2ZvbyAodm9pZCkKK3sKKyAgbXZlX3ByZWQxNl90IHA7Cisg IGludDh4MTZfdCBhOworICBpbnQ4X3QgYTFbMTBdOworICBpbnQxNng4X3QgYjsKKyAgaW50MTZf dCBiMVsxMF07CisgIGludDMyeDRfdCBjOworICBpbnQzMl90IGMxWzEwXTsKKyAgdWludDh4MTZf dCB1YTsKKyAgdWludDhfdCB1YTFbMTBdOworICB1aW50MTZ4OF90IHViOworICB1aW50MTZfdCB1 YjFbMTBdOworICB1aW50MzJ4NF90IHVjOworICB1aW50MzJfdCB1YzFbMTBdOworICBmbG9hdDE2 eDhfdCBmYjsKKyAgZmxvYXQxNl90IGZiMVsxMF07CisgIGZsb2F0MzJ4NF90IGZjOworICBmbG9h dDMyX3QgZmMxWzEwXTsKKworICBmYiA9IHZsZDFxIChmYjEpOworICBmYyA9IHZsZDFxIChmYzEp OworICBiID0gdmxkMXEgKGIxKTsKKyAgYyA9IHZsZDFxIChjMSk7CisgIGEgPSB2bGQxcSAoYTEp OworICB1YiA9IHZsZDFxICh1YjEpOworICB1YyA9IHZsZDFxICh1YzEpOworICB1YSA9IHZsZDFx ICh1YTEpOworICBmYiA9IHZsZDFxX3ogKGZiMSwgcCk7CisgIGZjID0gdmxkMXFfeiAoZmMxLCBw KTsKKyAgYiA9IHZsZDFxX3ogKGIxLCBwKTsKKyAgYyA9IHZsZDFxX3ogKGMxLCBwKTsKKyAgYSA9 IHZsZDFxX3ogKGExLCBwKTsKKyAgdWIgPSB2bGQxcV96ICh1YjEsIHApOworICB1YyA9IHZsZDFx X3ogKHVjMSwgcCk7CisgIHVhID0gdmxkMXFfeiAodWExLCBwKTsKK30KKwordm9pZAorZm9vMSAo dm9pZCkKK3sKKyAgbXZlX3ByZWQxNl90IHA7CisgIGludDh4MTZ4Ml90IGE7CisgIGludDhfdCBh MVsxMF07CisgIGludDE2eDh4Ml90IGI7CisgIGludDE2X3QgYjFbMTBdOworICBpbnQzMng0eDJf dCBjOworICBpbnQzMl90IGMxWzEwXTsKKyAgdWludDh4MTZ4Ml90IHVhOworICB1aW50OF90IHVh MVsxMF07CisgIHVpbnQxNng4eDJfdCB1YjsKKyAgdWludDE2X3QgdWIxWzEwXTsKKyAgdWludDMy eDR4Ml90IHVjOworICB1aW50MzJfdCB1YzFbMTBdOworICBmbG9hdDE2eDh4Ml90IGZiOworICBm bG9hdDE2X3QgZmIxWzEwXTsKKyAgZmxvYXQzMng0eDJfdCBmYzsKKyAgZmxvYXQzMl90IGZjMVsx MF07CisKKyAgZmIgPSB2bGQycSAoZmIxKTsKKyAgZmMgPSB2bGQycSAoZmMxKTsKKyAgYiA9IHZs ZDJxIChiMSk7CisgIGMgPSB2bGQycSAoYzEpOworICBhID0gdmxkMnEgKGExKTsKKyAgdWIgPSB2 bGQycSAodWIxKTsKKyAgdWMgPSB2bGQycSAodWMxKTsKKyAgdWEgPSB2bGQycSAodWExKTsKK30K Kwordm9pZAorZm9vMiAodm9pZCkKK3sKKyAgbXZlX3ByZWQxNl90IHA7CisgIGludDh4MTZ4NF90 IGE7CisgIGludDhfdCBhMVsxMF07CisgIGludDE2eDh4NF90IGI7CisgIGludDE2X3QgYjFbMTBd OworICBpbnQzMng0eDRfdCBjOworICBpbnQzMl90IGMxWzEwXTsKKyAgdWludDh4MTZ4NF90IHVh OworICB1aW50OF90IHVhMVsxMF07CisgIHVpbnQxNng4eDRfdCB1YjsKKyAgdWludDE2X3QgdWIx WzEwXTsKKyAgdWludDMyeDR4NF90IHVjOworICB1aW50MzJfdCB1YzFbMTBdOworICBmbG9hdDE2 eDh4NF90IGZiOworICBmbG9hdDE2X3QgZmIxWzEwXTsKKyAgZmxvYXQzMng0eDRfdCBmYzsKKyAg ZmxvYXQzMl90IGZjMVsxMF07CisKKyAgZmIgPSB2bGQ0cSAoZmIxKTsKKyAgZmMgPSB2bGQ0cSAo ZmMxKTsKKyAgYiA9IHZsZDRxIChiMSk7CisgIGMgPSB2bGQ0cSAoYzEpOworICBhID0gdmxkNHEg KGExKTsKKyAgdWIgPSB2bGQ0cSAodWIxKTsKKyAgdWMgPSB2bGQ0cSAodWMxKTsKKyAgdWEgPSB2 bGQ0cSAodWExKTsKK30KKwordm9pZAorZm9vMyAodm9pZCkKK3sKKyAgbXZlX3ByZWQxNl90IHA7 CisgIGludDE2eDhfdCBhOworICB1aW50MTZ4OF90IHVhOworICBpbnQ4X3QgYTFbMTBdOworICB1 aW50OF90IHVhMVsxMF07CisgIHVpbnQxNng4X3Qgb2Zmc2V0X2E7CisgIGludDh4MTZfdCBiOwor ICB1aW50OHgxNl90IHViOworICB1aW50OHgxNl90IG9mZnNldF9iOworICBpbnQzMng0X3QgYzsK KyAgdWludDMyeDRfdCB1YzsKKyAgdWludDMyeDRfdCBvZmZzZXRfYzsKKworICBhID0gdmxkcmJx X2dhdGhlcl9vZmZzZXQgKGExLCBvZmZzZXRfYSk7CisgIHVhID0gdmxkcmJxX2dhdGhlcl9vZmZz ZXQgKHVhMSwgb2Zmc2V0X2EpOworICBiID0gdmxkcmJxX2dhdGhlcl9vZmZzZXQgKGExLCBvZmZz ZXRfYik7CisgIHViID0gdmxkcmJxX2dhdGhlcl9vZmZzZXQgKHVhMSwgb2Zmc2V0X2IpOworICBj ID0gdmxkcmJxX2dhdGhlcl9vZmZzZXQgKGExLCBvZmZzZXRfYyk7CisgIHVjID0gdmxkcmJxX2dh dGhlcl9vZmZzZXQgKHVhMSwgb2Zmc2V0X2MpOworICBhID0gdmxkcmJxX2dhdGhlcl9vZmZzZXRf eiAoYTEsIG9mZnNldF9hLCBwKTsKKyAgdWEgPSB2bGRyYnFfZ2F0aGVyX29mZnNldF96ICh1YTEs IG9mZnNldF9hLCBwKTsKKyAgYiA9IHZsZHJicV9nYXRoZXJfb2Zmc2V0X3ogKGExLCBvZmZzZXRf YiwgcCk7CisgIHViID0gdmxkcmJxX2dhdGhlcl9vZmZzZXRfeiAodWExLCBvZmZzZXRfYiwgcCk7 CisgIGMgPSB2bGRyYnFfZ2F0aGVyX29mZnNldF96IChhMSwgb2Zmc2V0X2MsIHApOworICB1YyA9 IHZsZHJicV9nYXRoZXJfb2Zmc2V0X3ogKHVhMSwgb2Zmc2V0X2MsIHApOworfQorLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX19BUk1fdW5kZWYiIH0gfSAqLwoK --===============6033172372798357756==--