From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2079.outbound.protection.outlook.com [40.107.7.79]) by sourceware.org (Postfix) with ESMTPS id E9E8E3858D35 for ; Thu, 1 Dec 2022 18:20:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E9E8E3858D35 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P4pYFHkXHDnjiMCIrZP18dOMMXdRRaIilJ7Dm2QqSa49NZZqRiBFfvyHRyx+Cidw1+Ul2xj0T9RFJCoGeSPY9dUfkUFs/1jfHfa/fHWXPeMolz3HhmQTDH9AD+NLxMLgIM5JoIq+ViwXmBjjrLYpZsFFviKlju/zihaFIIRIThAKwv6vwGI14ZyQK6o4DOlW+xGDg/lekxaDcyu8EhW4MQErM64cX5RVFdvew9luBF69XjZhbkIkxDpvCRW2234Cgys3y0SmE726t6UMySxXmYuO87qqhCD6u0M/iz8dJB7lTIPv9YHvR8fPDbVHwN28DMOpLyuTTlmcnvaf1EYQqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=t5H4a6QagDeI0EZT8P6Dn07XGBLOqbvITjG0KWf8b/g=; b=GEkvzUMt1SyCPxycAsViKZcDu/R7hKfnHBcmpxkfg/bZlRn/ux/GPLpkeLygF0ioTR21cPiaZsXcYePvO+z5TBVGV3zDJBBrF9XxY5Qg4KRNr8j/cQL8PQaoD9tB/qhTV8ap7QH0UcCvpI6MxaKk9LWJm1DKy2mUcanMlcR1KVO5tSAQM72NfGMClx28eJ0bCdkMOEjb+HOy9cbxKmtkTbBez14Xuh+IYyTAlE2OxkNo6M1SGMGCFEUzhOT/49gRvBaMaK2wxdps/D08VfJOR4asYrz9D5X6ji2U73cMzuq/xgKLPNFeS5hxnaUZEhShzc2ppnBVOxir2XryRrMZmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t5H4a6QagDeI0EZT8P6Dn07XGBLOqbvITjG0KWf8b/g=; b=JdZC/d1CYv+Ii8XwY8Tk3qFqM6Z4T6RX/8y+iF9T6l+0q5lY/ZrWMsGBVIwpZRXyMQBp7IBAZ7swL6vty5fZP5eY+OxVa9n29vmqEACUobw2Pi+V2ii3O50i5S6wdrFdIi6koVBjAsvzFSFtbDEL1/pzhSJuW36/CXr+wjdJNho= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6503.eurprd08.prod.outlook.com (2603:10a6:20b:33b::18) by AS2PR08MB8285.eurprd08.prod.outlook.com (2603:10a6:20b:554::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.10; Thu, 1 Dec 2022 18:20:03 +0000 Received: from AS8PR08MB6503.eurprd08.prod.outlook.com ([fe80::6ba0:d8b5:6133:e36b]) by AS8PR08MB6503.eurprd08.prod.outlook.com ([fe80::6ba0:d8b5:6133:e36b%2]) with mapi id 15.20.5880.008; Thu, 1 Dec 2022 18:20:03 +0000 Content-Type: multipart/mixed; boundary="------------dTXYyYgIMbGMrffE0ivg7VhZ" Message-ID: Date: Thu, 1 Dec 2022 18:19:47 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Content-Language: en-US To: "gcc-patches@gcc.gnu.org" Cc: Kyrylo Tkachov From: Stam Markianos-Wright Subject: [PATCH] arm: Split up MVE _Generic associations to prevent type clashes [PR107515] X-ClientProxiedBy: LO6P123CA0054.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:310::11) To AS8PR08MB6503.eurprd08.prod.outlook.com (2603:10a6:20b:33b::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB6503:EE_|AS2PR08MB8285:EE_ X-MS-Office365-Filtering-Correlation-Id: e6d38cc2-78c4-4154-1ece-08dad3c8aa1f NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0q/S9muvrwYSgywQ4HVP8coX8JXoqYqoQy6MW0VG13YC9X9eCGQD8SwOuTY2/gBzCBjV68kR3AQIBcuUu2cYOic7NF2fdMXLiUhCGDix4PdphjNSfmBpYwkYoQfzr3Wq6tgCKd8mmH9A9eXXAgQOmRO9SxE+ZxkmJ0zOOerG0+xWlqXUoI+LtwQvfAwoT26oUl9kuEl9C6LxRD21u8kNMZYcM/hvRpNETS3DOm/W4PbkgdqFyk1l3adoWkUSRAqp+GwSDxTmcqywfyz1+RFa9yvEepo7BXBhBtydKAnSufwlOmQOJVoLUKntMWufOOBZMbz5aTbC8kcAYo6Werg3mDW1EvmShJ8iOC3uL3zs3VH9PL9OeTklz7lpXAMNalZDk1yFMyzJ02WJyXhD9pNgJg5D64/pDIDyYaktFWw0DWT6lTnZv2x8Ud+4xFZFALTd8EgxnuxlNu0csP1eHXRo4z1uvL2oCJF5rbSFhwA2V2xLj62+l4TaZ57Da0Blcd8u/RxNkas86PMw63B+x5ogrKtVBRnj4EKLJS6JdiBgqEhmB58eSKrwmBiKdcYa/rxiWp+CbMOgx/TMnAl/px9M+40ob3+PVUK1+VJRAUw+IoG3jLg2ZM81NB4ZSriI6j34zje8M/jEhjNWY+fm8qIXQnBkuMzIlpV8xhqkG5uETiBg9qTiqaGPO415ggzPxdRPJIwlDXVW+XaXkA7zhhWgDm8hn+7UynhTHFb5UMAdU+7vJc4hn7UUJaDygvNn039ssdPacNBeDVMvG8L26+CizWKfMboa43snsRarFwotCownZXsFd7mU/93RFd4Jn7oG X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6503.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(366004)(346002)(136003)(376002)(451199015)(83380400001)(86362001)(31696002)(38100700002)(8936002)(2906002)(8676002)(4326008)(66476007)(66556008)(66946007)(5660300002)(235185007)(41300700001)(33964004)(6666004)(6512007)(6506007)(26005)(186003)(2616005)(6916009)(316002)(478600001)(6486002)(966005)(31686004)(36756003)(84970400001)(41533002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dngyTmE3K1JJMU92REt4WG1ucE5VcW5JdlBZR2VZR1lGM3J3V21rOHE2NGky?= =?utf-8?B?SkRteWN5RVlKekxiWi9FbXdxeEUyV3A5OFBpMThuRi9BaC9TekhCREJqS1Rr?= =?utf-8?B?Z0twRFY5SXRKaXFDamJHMy9GWTRGS2RBbnBrYjNuZGhWQjhpVkQ2Uzdjb1Iw?= =?utf-8?B?ek0ycmVjMlM4Y0t2NmJ3SGJXMkk5K3hUN1RETkxaa3dVQUVjUGQ0eTljb05C?= =?utf-8?B?TlpJQTQrcTZCaWRBVk9MN2dTeWlpcUlUL09ITHMvWUp5YXpFTFlKS1RCTWI1?= =?utf-8?B?Y3dLNWo1MExDN1BTS1JMc3Z2RGU5RkhqQnZSRllrTlYrK1gxZEtrMkthdzZp?= =?utf-8?B?OUdjVWx4Rk9zMTRsczJJSmt1aWFEQmhvZFpERC9rYWZVV005d2p0Z1N0K09w?= =?utf-8?B?SVFPcCtQTGJYUnoxR0NyeVFwMEROd1lGNUhDbGxlbTlQZndtUXZ2OG11Y3Zm?= =?utf-8?B?UTlJZHhKcGdsSWNoRCs1WGszYTJzOU5jRW1jbHRWRTdtbUM2dU5tVEtTNTIr?= =?utf-8?B?YTl3KzdJdVhxTWZIakFaT0dtaUNiZFZGTFhqY0tocmVPcjUyQ3VzZlVaa2E4?= =?utf-8?B?OUJrckIvWUhFN1h6bG5hMW5XL2VIVW5qVVhQVTYyazA2bitvUEVyYlM3dzlk?= =?utf-8?B?bllsVUZsYnNyWGxWVzcvN1NYY3A5VjZGVHZkaXZ6SUw1V2RBbHhQUmhyRGhV?= =?utf-8?B?V0tDT2doZUVHSEhSdGtoMTA5UWQ0R25RTzRmRkEwNVVQZkFHOStNcjl1MTBr?= =?utf-8?B?NFQrUWhZaStwNmJsT0cxRVozc1g5WE1zZlowMDBzaHdURmNtdHhMNDlJcmdv?= =?utf-8?B?d08zK29lZFF1VHpmbFJkV3M2WmZ0K2NyY0RCMWFkQWxiTGVvOWkzUWh4OXJx?= =?utf-8?B?SjBOaUtrWmEzdjN1VW5xQjJZVDhxS3dTRittdFBuSHNPTTJGbVRWRE9ORHRv?= =?utf-8?B?Ny9RWnBoazRWcFNyWVZ0RGZ4bjVJQ2ttOTB5RzlBOTJINi9qMjl2ZmVXWlRa?= =?utf-8?B?Q0lpcTJJL0JSOVAyM3dtdnNOSmRoaTZ5RDJyRVBYeGNYNE5DQzhCb3BVS05D?= =?utf-8?B?TnNzeHlOaVVWQ0F0dnhpeWFpdWR2VXNBQ0FkYThaSVdPN2F3SCtSSmhPemdK?= =?utf-8?B?b0ZDV3grRkdON1B4Wi8wSG1jYVVhbS8xaFVFOW4zS3Fqa1cwdHQyZ00zY2lt?= =?utf-8?B?YVdYTEVicXRrVHhhMjZXSVp1dkM4RTYzN0Vyb1IwMERNUVQ4NWo3NWtnbnp0?= =?utf-8?B?ZGFLSUt2OHJMT3RjNVl0NzBzeWpKWVhkYWpZT1UwaXErQzA4cUxveW5jeUdv?= =?utf-8?B?cWlwWW9iNVFITkJVU092aUJMbXhWV2xFUXhtTWgvTWROdytTeTRjODE1OEUr?= =?utf-8?B?SEJUeXBOWE1kemw4Nkt2MWJOMndZQTlPelNrY001bitENytUakwyQzN1bE5Q?= =?utf-8?B?aWtabEVlOFZRbUNmcm9GazJjMFgzekVVUTdpOW5iVWNveXdpVlZORmRIY09z?= =?utf-8?B?ZzRNTGZEVGlQMEJoSDNTbk1uMDNxWnVORTUyMmRibWtGbTJwNy93VGZ1T0Y0?= =?utf-8?B?V0loaEszVVFvZXNCYkVKVktmVURmamptV2hQWDEzWDhMWjdWUWZUYkhRbE1U?= =?utf-8?B?SStTNWpzcWJUK3BjdkJUQVpZUjJDTDlubGxicHROWEJJMDZDaHVCVVF2N2JH?= =?utf-8?B?eDlmQU4zZndsUlVnYVZYNTJLQlN1NHBnMElqYndaV0MyNUNGWHM1ZG9HVjdk?= =?utf-8?B?akZkUHJWUkp1WEdjUUxlTmpoVmZ5MG1Pc05pQTZLd3ZtcVRVOW1IM2FiRGhD?= =?utf-8?B?UjhKam9FQmMrbVdHYWZ2b2RZSWFPWnJjY1VSaU5Hd1p0VHdBZjEwZDc3d3pM?= =?utf-8?B?Q0ZvNzdkeldGQnEzTXVEUm5PRjdneFFza1VMd3d4RXh1ZHlLUk1CTGV6VnVt?= =?utf-8?B?KzBhL2l2elNlemhFcnJnQ0FGSFNmazNUR1RpTm5ZcDZSUmJpQThBeFRqNG1w?= =?utf-8?B?S1Zmd3hTY3Z0OXY4RTdrZjZ0MzZoMjY3UW5LcWYwQkdSLzFlMGc1ZnRFbmdV?= =?utf-8?B?cmZ5S2NFcFhkSW1QSnZaY0lKOHlBaFNvT3YwZHJtZDR3WEVMRXB3bFRPYnlB?= =?utf-8?B?WFZpbG9KTVZWWEI1Qm9aUXdsMDFIRHFQc2VrMnBzdXljWlB4QkdHSEp1eklv?= =?utf-8?B?Q3c9PQ==?= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6d38cc2-78c4-4154-1ece-08dad3c8aa1f X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB6503.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2022 18:20:02.9306 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MJ/xgDduJ0wZmG7n41WMgJmplv4URzWz/palKgSbo19v8CfXZQNM8LDK1FGOmwD3E6u098W338YBxbV7EZgqOpocykLKpjiPifJHGl9BGLU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8285 X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------dTXYyYgIMbGMrffE0ivg7VhZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi all, With these previous patches: https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606586.html https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606587.html we enabled the MVE overloaded _Generic associations to handle more scalar types, however at PR 107515 we found a new regression that wasn't detected in our testing: With glibc's `posix/types.h`: ``` typedef signed int __int32_t; ... typedef __int32_t int32_t; ``` We would get a `error: '_Generic' specifies two compatible types` from `__ARM_mve_coerce3` because of `type: param`, when `type` is `int` and `int32_t: param` both being the same under the hood. The same did not happen with Newlib's header `sys/_stdint.h`: ``` typedef long int __int32_t; ... typedef __int32_t int32_t ; ``` which worked fine, because it uses `long int`. The same could feasibly happen in `__ARM_mve_coerce2` between `__fp16` and `float16_t`. The solution here is to break the _Generic down, so that the similar types don't appear at the same level, as is done in `__ARM_mve_typeid`. Ok for trunk? Thanks, Stam Markianos-Wright gcc/ChangeLog:         PR target/96795         PR target/107515         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.         (__ARM_mve_coerce3): Likewise. gcc/testsuite/ChangeLog:         PR target/96795         PR target/107515         * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c: New test.         * gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c: New test. =========== Inline Ctrl+C, Ctrl+V or patch =========== diff --git a/gcc/config/arm/arm_mve.h b/gcc/config/arm/arm_mve.h index 09167ec118ed3310c5077145e119196f29d83cac..70003653db65736fcfd019e83d9f18153be650dc 100644 --- a/gcc/config/arm/arm_mve.h +++ b/gcc/config/arm/arm_mve.h @@ -35659,9 +35659,9 @@ extern void *__ARM_undef;  #define __ARM_mve_coerce1(param, type) \      _Generic(param, type: param, const type: param, default: *(type *)__ARM_undef)  #define __ARM_mve_coerce2(param, type) \ -    _Generic(param, type: param, float16_t: param, float32_t: param, default: *(type *)__ARM_undef) +    _Generic(param, type: param, __fp16: param, default: _Generic (param, _Float16: param, float16_t: param, float32_t: param, default: *(type *)__ARM_undef))  #define __ARM_mve_coerce3(param, type) \ -    _Generic(param, type: param, int8_t: param, int16_t: param, int32_t: param, int64_t: param, uint8_t: param, uint16_t: param, uint32_t: param, uint64_t: param, default: *(type *)__ARM_undef) +    _Generic(param, type: param, default: _Generic (param, int8_t: param, int16_t: param, int32_t: param, int64_t: param, uint8_t: param, uint16_t: param, uint32_t: param, uint64_t: param, default: *(type *)__ARM_undef))  #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c new file mode 100644 index 0000000000000000000000000000000000000000..427dcacb5ff59b53d5eab1f1582ef6460da3f2f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c @@ -0,0 +1,65 @@ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2 -Wno-pedantic -Wno-long-long" } */ +#include "arm_mve.h" + +float f1; +double f2; +float16_t f3; +float32_t f4; +__fp16 f5; +_Float16 f6; + +int i1; +short i2; +long i3; +long long i4; +int8_t i5; +int16_t i6; +int32_t i7; +int64_t i8; + +const int ci1; +const short ci2; +const long ci3; +const long long ci4; +const int8_t ci5; +const int16_t ci6; +const int32_t ci7; +const int64_t ci8; + +float16x8_t floatvec; +int16x8_t intvec; + +void test(void) +{ +    /* Test a few different supported ways of passing an int value.  The +    intrinsic vmulq was chosen arbitrarily, but it is representative of +    all intrinsics that take a non-const scalar value.  */ +    intvec = vmulq(intvec, 2); +    intvec = vmulq(intvec, (int32_t) 2); +    intvec = vmulq(intvec, (short) 2); +    intvec = vmulq(intvec, i1); +    intvec = vmulq(intvec, i2); +    intvec = vmulq(intvec, i3); +    intvec = vmulq(intvec, i4); +    intvec = vmulq(intvec, i5); +    intvec = vmulq(intvec, i6); +    intvec = vmulq(intvec, i7); +    intvec = vmulq(intvec, i8); + +    /* Test a few different supported ways of passing a float value.  */ +    floatvec = vmulq(floatvec, 0.5); +    floatvec = vmulq(floatvec, 0.5f); +    floatvec = vmulq(floatvec, (__fp16) 0.5); +    floatvec = vmulq(floatvec, f1); +    floatvec = vmulq(floatvec, f2); +    floatvec = vmulq(floatvec, f3); +    floatvec = vmulq(floatvec, f4); +    floatvec = vmulq(floatvec, f5); +    floatvec = vmulq(floatvec, f6); +    floatvec = vmulq(floatvec, 0.15f16); +    floatvec = vmulq(floatvec, (_Float16) 0.15); +} + +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ \ No newline at end of file diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c new file mode 100644 index 0000000000000000000000000000000000000000..d0e3b3eb30f46cb8327e7b976713990721305c9b --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c @@ -0,0 +1,45 @@ +/* { dg-require-effective-target arm_v8_1m_mve_ok } */ +/* { dg-add-options arm_v8_1m_mve } */ +/* { dg-additional-options "-O2 -Wno-pedantic -Wno-long-long" } */ + +#include "arm_mve.h" + +int i1; +short i2; +long i3; +long long i4; +int8_t i5; +int16_t i6; +int32_t i7; +int64_t i8; + +const int ci1; +const short ci2; +const long ci3; +const long long ci4; +const int8_t ci5; +const int16_t ci6; +const int32_t ci7; +const int64_t ci8; + +int16x8_t intvec; + +void test(void) +{ +    /* Test a few different supported ways of passing an int value.  The +    intrinsic vmulq was chosen arbitrarily, but it is representative of +    all intrinsics that take a non-const scalar value.  */ +    intvec = vmulq(intvec, 2); +    intvec = vmulq(intvec, (int32_t) 2); +    intvec = vmulq(intvec, (short) 2); +    intvec = vmulq(intvec, i1); +    intvec = vmulq(intvec, i2); +    intvec = vmulq(intvec, i3); +    intvec = vmulq(intvec, i4); +    intvec = vmulq(intvec, i5); +    intvec = vmulq(intvec, i6); +    intvec = vmulq(intvec, i7); +    intvec = vmulq(intvec, i8); +} + +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ \ No newline at end of file --------------dTXYyYgIMbGMrffE0ivg7VhZ Content-Type: text/x-patch; charset=UTF-8; name="rb16663.patch" Content-Disposition: attachment; filename="rb16663.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybV9tdmUuaCBiL2djYy9jb25maWcvYXJtL2Fy bV9tdmUuaAppbmRleCAwOTE2N2VjMTE4ZWQzMzEwYzUwNzcxNDVlMTE5MTk2ZjI5ZDgzY2FjLi43 MDAwMzY1M2RiNjU3MzZmY2ZkMDE5ZTgzZDlmMTgxNTNiZTY1MGRjIDEwMDY0NAotLS0gYS9nY2Mv Y29uZmlnL2FybS9hcm1fbXZlLmgKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtX212ZS5oCkBAIC0z NTY1OSw5ICszNTY1OSw5IEBAIGV4dGVybiB2b2lkICpfX0FSTV91bmRlZjsKICNkZWZpbmUgX19B Uk1fbXZlX2NvZXJjZTEocGFyYW0sIHR5cGUpIFwKICAgICBfR2VuZXJpYyhwYXJhbSwgdHlwZTog cGFyYW0sIGNvbnN0IHR5cGU6IHBhcmFtLCBkZWZhdWx0OiAqKHR5cGUgKilfX0FSTV91bmRlZikK ICNkZWZpbmUgX19BUk1fbXZlX2NvZXJjZTIocGFyYW0sIHR5cGUpIFwKLSAgICBfR2VuZXJpYyhw YXJhbSwgdHlwZTogcGFyYW0sIGZsb2F0MTZfdDogcGFyYW0sIGZsb2F0MzJfdDogcGFyYW0sIGRl ZmF1bHQ6ICoodHlwZSAqKV9fQVJNX3VuZGVmKQorICAgIF9HZW5lcmljKHBhcmFtLCB0eXBlOiBw YXJhbSwgX19mcDE2OiBwYXJhbSwgZGVmYXVsdDogX0dlbmVyaWMgKHBhcmFtLCBfRmxvYXQxNjog cGFyYW0sIGZsb2F0MTZfdDogcGFyYW0sIGZsb2F0MzJfdDogcGFyYW0sIGRlZmF1bHQ6ICoodHlw ZSAqKV9fQVJNX3VuZGVmKSkKICNkZWZpbmUgX19BUk1fbXZlX2NvZXJjZTMocGFyYW0sIHR5cGUp IFwKLSAgICBfR2VuZXJpYyhwYXJhbSwgdHlwZTogcGFyYW0sIGludDhfdDogcGFyYW0sIGludDE2 X3Q6IHBhcmFtLCBpbnQzMl90OiBwYXJhbSwgaW50NjRfdDogcGFyYW0sIHVpbnQ4X3Q6IHBhcmFt LCB1aW50MTZfdDogcGFyYW0sIHVpbnQzMl90OiBwYXJhbSwgdWludDY0X3Q6IHBhcmFtLCBkZWZh dWx0OiAqKHR5cGUgKilfX0FSTV91bmRlZikKKyAgICBfR2VuZXJpYyhwYXJhbSwgdHlwZTogcGFy YW0sIGRlZmF1bHQ6IF9HZW5lcmljIChwYXJhbSwgaW50OF90OiBwYXJhbSwgaW50MTZfdDogcGFy YW0sIGludDMyX3Q6IHBhcmFtLCBpbnQ2NF90OiBwYXJhbSwgdWludDhfdDogcGFyYW0sIHVpbnQx Nl90OiBwYXJhbSwgdWludDMyX3Q6IHBhcmFtLCB1aW50NjRfdDogcGFyYW0sIGRlZmF1bHQ6ICoo dHlwZSAqKV9fQVJNX3VuZGVmKSkKIAogI2lmIChfX0FSTV9GRUFUVVJFX01WRSAmIDIpIC8qIE1W RSBGbG9hdGluZyBwb2ludC4gICovCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hcm0vbXZlL2ludHJpbnNpY3MvbXZlX2ludHJpbnNpY190eXBlX292ZXJsb2Fkcy1mcC5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9tdmUvaW50cmluc2ljcy9tdmVfaW50cmlu c2ljX3R5cGVfb3ZlcmxvYWRzLWZwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI3ZGNhY2I1ZmY1OWI1M2Q1ZWFi MWYxNTgyZWY2NDYwZGEzZjJmMwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hcm0vbXZlL2ludHJpbnNpY3MvbXZlX2ludHJpbnNpY190eXBlX292ZXJsb2Fkcy1m cC5jCkBAIC0wLDAgKzEsNjUgQEAKKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGFy bV92OF8xbV9tdmVfZnBfb2sgfSAqLworLyogeyBkZy1hZGQtb3B0aW9ucyBhcm1fdjhfMW1fbXZl X2ZwIH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItTzIgLVduby1wZWRhbnRpYyAt V25vLWxvbmctbG9uZyIgfSAqLworI2luY2x1ZGUgImFybV9tdmUuaCIKKworZmxvYXQgZjE7Citk b3VibGUgZjI7CitmbG9hdDE2X3QgZjM7CitmbG9hdDMyX3QgZjQ7CitfX2ZwMTYgZjU7CitfRmxv YXQxNiBmNjsKKworaW50IGkxOworc2hvcnQgaTI7Citsb25nIGkzOworbG9uZyBsb25nIGk0Owor aW50OF90IGk1OworaW50MTZfdCBpNjsKK2ludDMyX3QgaTc7CitpbnQ2NF90IGk4OworCitjb25z dCBpbnQgY2kxOworY29uc3Qgc2hvcnQgY2kyOworY29uc3QgbG9uZyBjaTM7Citjb25zdCBsb25n IGxvbmcgY2k0OworY29uc3QgaW50OF90IGNpNTsKK2NvbnN0IGludDE2X3QgY2k2OworY29uc3Qg aW50MzJfdCBjaTc7Citjb25zdCBpbnQ2NF90IGNpODsKKworZmxvYXQxNng4X3QgZmxvYXR2ZWM7 CitpbnQxNng4X3QgaW50dmVjOworCit2b2lkIHRlc3Qodm9pZCkKK3sKKyAgICAvKiBUZXN0IGEg ZmV3IGRpZmZlcmVudCBzdXBwb3J0ZWQgd2F5cyBvZiBwYXNzaW5nIGFuIGludCB2YWx1ZS4gIFRo ZQorICAgIGludHJpbnNpYyB2bXVscSB3YXMgY2hvc2VuIGFyYml0cmFyaWx5LCBidXQgaXQgaXMg cmVwcmVzZW50YXRpdmUgb2YKKyAgICBhbGwgaW50cmluc2ljcyB0aGF0IHRha2UgYSBub24tY29u c3Qgc2NhbGFyIHZhbHVlLiAgKi8KKyAgICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMsIDIpOworICAg IGludHZlYyA9IHZtdWxxKGludHZlYywgKGludDMyX3QpIDIpOworICAgIGludHZlYyA9IHZtdWxx KGludHZlYywgKHNob3J0KSAyKTsKKyAgICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMsIGkxKTsKKyAg ICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMsIGkyKTsKKyAgICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMs IGkzKTsKKyAgICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMsIGk0KTsKKyAgICBpbnR2ZWMgPSB2bXVs cShpbnR2ZWMsIGk1KTsKKyAgICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMsIGk2KTsKKyAgICBpbnR2 ZWMgPSB2bXVscShpbnR2ZWMsIGk3KTsKKyAgICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMsIGk4KTsK KworICAgIC8qIFRlc3QgYSBmZXcgZGlmZmVyZW50IHN1cHBvcnRlZCB3YXlzIG9mIHBhc3Npbmcg YSBmbG9hdCB2YWx1ZS4gICovCisgICAgZmxvYXR2ZWMgPSB2bXVscShmbG9hdHZlYywgMC41KTsK KyAgICBmbG9hdHZlYyA9IHZtdWxxKGZsb2F0dmVjLCAwLjVmKTsKKyAgICBmbG9hdHZlYyA9IHZt dWxxKGZsb2F0dmVjLCAoX19mcDE2KSAwLjUpOworICAgIGZsb2F0dmVjID0gdm11bHEoZmxvYXR2 ZWMsIGYxKTsKKyAgICBmbG9hdHZlYyA9IHZtdWxxKGZsb2F0dmVjLCBmMik7CisgICAgZmxvYXR2 ZWMgPSB2bXVscShmbG9hdHZlYywgZjMpOworICAgIGZsb2F0dmVjID0gdm11bHEoZmxvYXR2ZWMs IGY0KTsKKyAgICBmbG9hdHZlYyA9IHZtdWxxKGZsb2F0dmVjLCBmNSk7CisgICAgZmxvYXR2ZWMg PSB2bXVscShmbG9hdHZlYywgZjYpOworICAgIGZsb2F0dmVjID0gdm11bHEoZmxvYXR2ZWMsIDAu MTVmMTYpOworICAgIGZsb2F0dmVjID0gdm11bHEoZmxvYXR2ZWMsIChfRmxvYXQxNikgMC4xNSk7 Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9fQVJNX3VuZGVmIiB9 IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYXJtL212ZS9pbnRyaW5zaWNzL212ZV9pbnRyaW5zaWNfdHlwZV9vdmVy bG9hZHMtaW50LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL212ZS9pbnRyaW5zaWNz L212ZV9pbnRyaW5zaWNfdHlwZV9vdmVybG9hZHMtaW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBlM2IzZWIz MGY0NmNiODMyN2U3Yjk3NjcxMzk5MDcyMTMwNWM5YgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vbXZlL2ludHJpbnNpY3MvbXZlX2ludHJpbnNpY190eXBl X292ZXJsb2Fkcy1pbnQuYwpAQCAtMCwwICsxLDQ1IEBACisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCBhcm1fdjhfMW1fbXZlX29rIH0gKi8KKy8qIHsgZGctYWRkLW9wdGlvbnMgYXJt X3Y4XzFtX212ZSB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLU8yIC1Xbm8tcGVk YW50aWMgLVduby1sb25nLWxvbmciIH0gKi8KKworI2luY2x1ZGUgImFybV9tdmUuaCIKKworaW50 IGkxOworc2hvcnQgaTI7Citsb25nIGkzOworbG9uZyBsb25nIGk0OworaW50OF90IGk1OworaW50 MTZfdCBpNjsKK2ludDMyX3QgaTc7CitpbnQ2NF90IGk4OworCitjb25zdCBpbnQgY2kxOworY29u c3Qgc2hvcnQgY2kyOworY29uc3QgbG9uZyBjaTM7Citjb25zdCBsb25nIGxvbmcgY2k0OworY29u c3QgaW50OF90IGNpNTsKK2NvbnN0IGludDE2X3QgY2k2OworY29uc3QgaW50MzJfdCBjaTc7Citj b25zdCBpbnQ2NF90IGNpODsKKworaW50MTZ4OF90IGludHZlYzsKKwordm9pZCB0ZXN0KHZvaWQp Cit7CisgICAgLyogVGVzdCBhIGZldyBkaWZmZXJlbnQgc3VwcG9ydGVkIHdheXMgb2YgcGFzc2lu ZyBhbiBpbnQgdmFsdWUuICBUaGUKKyAgICBpbnRyaW5zaWMgdm11bHEgd2FzIGNob3NlbiBhcmJp dHJhcmlseSwgYnV0IGl0IGlzIHJlcHJlc2VudGF0aXZlIG9mCisgICAgYWxsIGludHJpbnNpY3Mg dGhhdCB0YWtlIGEgbm9uLWNvbnN0IHNjYWxhciB2YWx1ZS4gICovCisgICAgaW50dmVjID0gdm11 bHEoaW50dmVjLCAyKTsKKyAgICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMsIChpbnQzMl90KSAyKTsK KyAgICBpbnR2ZWMgPSB2bXVscShpbnR2ZWMsIChzaG9ydCkgMik7CisgICAgaW50dmVjID0gdm11 bHEoaW50dmVjLCBpMSk7CisgICAgaW50dmVjID0gdm11bHEoaW50dmVjLCBpMik7CisgICAgaW50 dmVjID0gdm11bHEoaW50dmVjLCBpMyk7CisgICAgaW50dmVjID0gdm11bHEoaW50dmVjLCBpNCk7 CisgICAgaW50dmVjID0gdm11bHEoaW50dmVjLCBpNSk7CisgICAgaW50dmVjID0gdm11bHEoaW50 dmVjLCBpNik7CisgICAgaW50dmVjID0gdm11bHEoaW50dmVjLCBpNyk7CisgICAgaW50dmVjID0g dm11bHEoaW50dmVjLCBpOCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3QgIl9fQVJNX3VuZGVmIiB9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg== --------------dTXYyYgIMbGMrffE0ivg7VhZ--