From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2087.outbound.protection.outlook.com [40.107.20.87]) by sourceware.org (Postfix) with ESMTPS id F234A3858D32 for ; Mon, 16 Jan 2023 15:15:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F234A3858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com 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=cqu8ElgIUQDZfMbO095A4lwLMqb4vNfAXqVx20vfsxo=; b=4B9eZ2H75wjKWylq2aL5QumSOiMbL3y938fQf0avx6bVymhRGeB+JNrZazgE2h985AavOQZG3whlLFlUxDXK7dWnrCCmaXV1l6jA6TUwMierZsTxssxdrKZhhsOe9UNusnGvy2ZN3JqFYz5hZw4HF4mlkbXjwLrotJ+6M+Ary14= Received: from DUZPR01CA0021.eurprd01.prod.exchangelabs.com (2603:10a6:10:46b::15) by DU0PR08MB9252.eurprd08.prod.outlook.com (2603:10a6:10:41b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.23; Mon, 16 Jan 2023 15:15:17 +0000 Received: from DBAEUR03FT055.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:46b:cafe::65) by DUZPR01CA0021.outlook.office365.com (2603:10a6:10:46b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.19 via Frontend Transport; Mon, 16 Jan 2023 15:15:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT055.mail.protection.outlook.com (100.127.142.171) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.13 via Frontend Transport; Mon, 16 Jan 2023 15:15:17 +0000 Received: ("Tessian outbound b1d3ffe56e73:v132"); Mon, 16 Jan 2023 15:15:17 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 250c5f12bde9cff3 X-CR-MTA-TID: 64aa7808 Received: from 444d3799e5b4.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id EBCCAAC4-CE95-4074-93C4-CB29F63F0D6C.1; Mon, 16 Jan 2023 15:15:09 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 444d3799e5b4.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 16 Jan 2023 15:15:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ihKUAKxTew2l7SDPIXFWDGtq6Z68F6BrOeGHJQmY8d/5HdqeTdTE8dq5ZGDxUiJsmxS4dppigxxQrTLHGGI2fBIYjR5K4s8c10dYEOUZYDPyRJlri+8nN7jBJRUEy8xC9hV1eHefFND8wi6G2OM83y02wE2f7XYccqMO9sWs160amL/ZSLejwkaEheraIO47Lql9f8NkNbjHAj7VnD3f9St1JHznKfEi3j05G/s1cg4lWa1+EuNNGaNEcCqqbOVW9hqEAH7UsOj6sgjZuJ9itzvlpiLZ1O6o4w/DDlu2/L1CHe/3ClHSeQ3Nxjz6HEQ9dt6a6MYK1UTwInSToYW/xA== 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=cqu8ElgIUQDZfMbO095A4lwLMqb4vNfAXqVx20vfsxo=; b=gnqGT3iWKkxyzJauSXWs8kJJx6X96E9g7ZYnAdBRcYI3PZfZ5paQiH+010ft8wRgbYL8Y0/3rQjcSJVNL/qC1vONp3SAcPZBqeNU1C6Mf8ucIN+W0dciPhV+aZomsWPx2oOEr8pMGmEJRIUym3O3zKcrmcPLy66yaemeEwrcvEd/lDsHhDs4ycHbwnKqypF8G/WtDN0RXnSzkExNMLPS7uUUHyYCEAx0tIg7MgsXLRADzvQ/Cy4EJO4Qh11QGU7mPpzzEIs9hGVOu4hkObq1XrDZlXa5P+N9uNpZPxUNw4UTn8TqbbuwX72LerFdLcoAPJX9bVc+86qWsl4uF6Nx4w== 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=cqu8ElgIUQDZfMbO095A4lwLMqb4vNfAXqVx20vfsxo=; b=4B9eZ2H75wjKWylq2aL5QumSOiMbL3y938fQf0avx6bVymhRGeB+JNrZazgE2h985AavOQZG3whlLFlUxDXK7dWnrCCmaXV1l6jA6TUwMierZsTxssxdrKZhhsOe9UNusnGvy2ZN3JqFYz5hZw4HF4mlkbXjwLrotJ+6M+Ary14= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB9PR08MB6507.eurprd08.prod.outlook.com (2603:10a6:10:25a::6) by DU0PR08MB7921.eurprd08.prod.outlook.com (2603:10a6:10:3c8::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.13; Mon, 16 Jan 2023 15:15:07 +0000 Received: from DB9PR08MB6507.eurprd08.prod.outlook.com ([fe80::514:a882:342f:558f]) by DB9PR08MB6507.eurprd08.prod.outlook.com ([fe80::514:a882:342f:558f%5]) with mapi id 15.20.5986.023; Mon, 16 Jan 2023 15:15:06 +0000 Content-Type: multipart/mixed; boundary="------------clv2rW0LJjQqUr05gymObgtG" Message-ID: <1ff07fee-24f1-7aeb-8fb6-44457af557c4@arm.com> Date: Mon, 16 Jan 2023 15:14:42 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 From: Stamatis Markianos-Wright Subject: [PING][PATCH 1/2] gas: arm: Fix a further IT-predicated vcvt issue in the presense of MVE vcvtn To: binutils@sourceware.org References: <67cc7870-f49c-08ed-afb3-e83f4378095a@arm.com> Content-Language: en-US In-Reply-To: <67cc7870-f49c-08ed-afb3-e83f4378095a@arm.com> X-ClientProxiedBy: VI1PR09CA0157.eurprd09.prod.outlook.com (2603:10a6:800:120::11) To DB9PR08MB6507.eurprd08.prod.outlook.com (2603:10a6:10:25a::6) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DB9PR08MB6507:EE_|DU0PR08MB7921:EE_|DBAEUR03FT055:EE_|DU0PR08MB9252:EE_ X-MS-Office365-Filtering-Correlation-Id: c46d9495-3711-4824-9043-08daf7d479b8 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: +1jDac7exg8PYJy7CuyPicRQ/EZ98H0SDmRf7157WoQXkh0R4ZTO+0heTIdwI8C1sZinbz6kfSg560NdFRH3/Yf2PamKolsIkcWPWBdBSYRc4gqU/050tW7FtfFlJE8xiBY4ROlOpcp/iQiN8FbYVZNY7wc0sKI4jTP75IQ9FcNMn6nTjCBPxph0VETWY1cjHOWk1mlFbs7rC0Il950DuG+Au7lg9Sku3y6F2q+44eSRJFxGgjdHhM17qCsemZCPPPSRG1BvV/NNBff40wjDvhS2Q/Y0k3jIPJA1ebAez2SU40FjeF1KZsKuwXTP4Bxo2khuF8lSpGv2w9a7j31UfNJ06KDsCHMo/SKQPpZY8W88HNa9rx/nl/ngLvo5nZGBVmZEq8CniiSEE+Ey+aOELZ/RSrmrPjrcaDMXHKyYzAo3Ec+tkjV0LXsjaTyvdOHqzZKTa/bSkNx6MrAf8WHYhfmhhGurpVDPMAwpDF9Y2CbL3w/na/TDRWsRHQ3DyIslKEVCkIp+uMXEMMQmwr+UIS9BlgSOaQwE73HaVPBVdeD/iL21DFsbUzUqbrfSfrMJ+mCm5Co+wNjHdV2Kr4S3lUspWzhPM0/Oa+JwRwbyyiq81R3+Q+dp572aQHbgJgbFLbHqmmKnPWKZJLsm3u6C+DpNJRH+T7db4TFhoQSxCUz9ZwngBaKztbX5ZdB8CWicxdWU2RQkMOUvNS84aoi9TVmkuAhlubOr0OtODFF9tjVc++Kk2BoJkW3lWeHDjOScRCKnOokkQ20qxvpRkHQdN+tfeHkQHh8G/vQe4rJ0XWTONeira1TajyfBfiScJK7W X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6507.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(39860400002)(366004)(376002)(346002)(396003)(451199015)(478600001)(6666004)(8936002)(31686004)(66476007)(6916009)(41300700001)(66899015)(66946007)(66556008)(8676002)(2906002)(316002)(2616005)(38100700002)(26005)(5660300002)(235185007)(186003)(36756003)(31696002)(6486002)(86362001)(6512007)(33964004)(6506007)(966005)(83380400001)(17423001)(43740500002)(45980500001)(357404004);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB7921 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 51f659dd-89a1-4954-b8ba-08daf7d4732c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aucGO870/0s7wM5yPjdsHedrKKJoYiwtMZBhJWhHjvHxRDilJQXBi6zrsqiy8RdHuDVK0INzxWTIj71QrfmUX/R48Qnc2yLqGuTx5lOHqG0Vn7uGICNukRlyLOonkroZnLRljnO9tUYGVSzHYfPjuMD5k0lLJ67XdbivNZYyfiCB13f7VYSWrBRKRaId1l6+KKPkpGRUpRRVPraqsocxZCnvTGMiphxiLHALLbWb1GcAOrP8fdAV0+KWAQO706TTyDgJ8KC4O9KmN/PUapcCtfZ1IPXNY4nzVMp0K5bCdkbYWobCysq3yZW+3QlCKuypBD3SRMTzKWOB1njRxlmdsG5Cif0Z2fFZCXnN5n0wI/GyxFAzhC66nCtSsWz5y/b6TCREVPbVL4XUnVFyFbrv3PcyIk3qzexbhvHuIXhztyinjPlcqg2xFQWlAHYzZNdsJfZRJqVvK5Xc2ltqpYT4+uvCEBHQ6Cmj9FgtBBbJDIxAHKt7IDUMOt9kM/lpe8kDWb+ItDvnw8XiMOxI4Xiz6NAvDoR15QyKv9POUbrWVMaHWL7Usj9l/VYDXMFt+MoacmYevyw1lpo9pvwNUQ/WEDMa7FrklWevFFyPtiDs4c/ltLCOj4n3L3rRuoMhmvKfWEETsjIPCOy12mb/wtjanFo3QIimjDdQ9pEQn/ri/8mJfjex2tw2FwA/Ldqs4SGWUQgRF81e5MV5qa9008TA53Vs65Yu1k3kFCz34VUBmPMXp9UHCG5vnjd8Qr/5tkUxI2Mdd/MDFNgCV3d2HrovMpgLh3uigaPOZjiAr1RhBIhO9CDTj9ed6U15vGFKKoOB 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:(13230022)(4636009)(136003)(39860400002)(396003)(346002)(376002)(451199015)(40470700004)(46966006)(36840700001)(82740400003)(36860700001)(81166007)(83380400001)(86362001)(356005)(235185007)(70586007)(31696002)(2906002)(5660300002)(8936002)(6916009)(70206006)(8676002)(41300700001)(82310400005)(40480700001)(186003)(6506007)(33964004)(26005)(2616005)(6512007)(336012)(47076005)(6666004)(316002)(966005)(40460700003)(478600001)(6486002)(31686004)(66899015)(36756003)(17423001)(43740500002)(357404004);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2023 15:15:17.3456 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c46d9495-3711-4824-9043-08daf7d479b8 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: DBAEUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9252 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY 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: --------------clv2rW0LJjQqUr05gymObgtG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi all, Previously we had experienced issues with assembling a "VCVTNE" instruction in the presence of the MVE architecture extension, because it could be interpreted both as: * The base instruction VCVT + NE for IT predication when inside an IT block. * The MVE instruction VCVTN + E in the Else of a VPT block. Given a C reproducer of: ``` int test_function(float value) {   int ret_val = 10;   if (value != 0.0)   {     ret_val = (int) value;   }   return ret_val; } ``` GCC generates a VCVTNE instruction based on the `truncsisf2_vfp` pattern, which will look like: `vcvtne.s32.f32 s-reg, s-reg` This still triggers an error due to being misidentified as "vcvtn+e" Similar errors were found with other type combinations and instruction patterns (these have all been added to the testing of this patch). This class of errors was previously worked around by: https://sourceware.org/pipermail/binutils/2020-August/112728.html which addressed this by looking at the operand types, however, that isn't adequate to cover all the extra cases that have been found.  Instead, we add some special-casing logic earlier when the instructions are parsed that is conditional on whether we are in a VPT block or not, when the instruction is parsed. Note that in the follo-up 2/2 patch I have done a find n replace to change the misleading error message mentioning ARMv8.2. gas/ChangeLog:     * config/tc-arm.c (opcode_lookup): Add special vcvtn handling.     * testsuite/gas/arm/mve-vcvtne-it-bad.l: Add further testing.     * testsuite/gas/arm/mve-vcvtne-it-bad.s: Likewise.     * testsuite/gas/arm/mve-vcvtne-it.d: Likewise.     * testsuite/gas/arm/mve-vcvtne-it.s: Likewise. Inline copy of patch: diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 2e6d175482efe4bc58a2e277bd2cc4c48f9e1863..25506241f29cdb0db169bb7801604ea4e356989c 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -19143,16 +19143,6 @@ do_neon_cvt_1 (enum neon_cvt_mode mode) return; } - if ((rs == NS_FD || rs == NS_QQI) && mode == neon_cvt_mode_n - && ARM_CPU_HAS_FEATURE (cpu_variant, mve_ext)) - { - /* We are dealing with vcvt with the 'ne' condition. */ - inst.cond = 0x1; - inst.instruction = N_MNEM_vcvt; - do_neon_cvt_1 (neon_cvt_mode_z); - return; - } - /* VFP rather than Neon conversions. */ if (flavour >= neon_cvt_flavour_first_fp) { @@ -22748,6 +22738,23 @@ opcode_lookup (char **str) cond = (const struct asm_cond *) str_hash_find_n (arm_vcond_hsh, affix, 1); opcode = (const struct asm_opcode *) str_hash_find_n (arm_ops_hsh, base, affix - base); + + /* A known edge case is a conflict between an 'e' as a suffix for an + Else of a VPT predication block and an 'ne' suffix for an IT block. + If we detect that edge case here and we are not in a VPT VECTOR_PRED + block, reset opcode and cond, so that the 'ne' case can be detected + in the next section for 2-character conditional suffixes. + An example where this is a problem is between the MVE 'vcvtn' and the + non-MVE 'vcvt' instructions. */ + if (cond && opcode + && cond->template_name[0] == 'e' + && opcode->template_name[affix - base - 1] == 'n' + && now_pred.type != VECTOR_PRED) + { + opcode = NULL; + cond = NULL; + } + /* If this opcode can not be vector predicated then don't accept it with a vector predication code. */ if (opcode && !opcode->mayBeVecPred) diff --git a/gas/testsuite/gas/arm/mve-vcvtne-it-bad.l b/gas/testsuite/gas/arm/mve-vcvtne-it-bad.l index 8765ae0d6912e322ecabfb215f5401327fa97cbe..ca57a38537c62926f43119c1e9abd9dbaf549a1b 100644 --- a/gas/testsuite/gas/arm/mve-vcvtne-it-bad.l +++ b/gas/testsuite/gas/arm/mve-vcvtne-it-bad.l @@ -1,2 +1,17 @@ [^:]*: Assembler messages: [^:]*:3: Error: thumb conditional instruction should be in IT block -- `vcvtne.s32.f64 s13,d8' +[^:]*:4: Error: thumb conditional instruction should be in IT block -- `vcvtne.u32.f64 s13,d8' +[^:]*:5: Error: thumb conditional instruction should be in IT block -- `vcvtne.s32.f32 s13,s8' +[^:]*:6: Error: thumb conditional instruction should be in IT block -- `vcvtne.u32.f32 s13,s8' +[^:]*:7: Warning: ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is UNPREDICTABLE +[^:]*:7: Error: thumb conditional instruction should be in IT block -- `vcvtne.s32.f16 s13,s8' +[^:]*:8: Warning: ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is UNPREDICTABLE +[^:]*:8: Error: thumb conditional instruction should be in IT block -- `vcvtne.u32.f16 s13,s8' +[^:]*:9: Error: thumb conditional instruction should be in IT block -- `vcvtne.f64.s32 d13,s8' +[^:]*:10: Error: thumb conditional instruction should be in IT block -- `vcvtne.f64.u32 d13,s8' +[^:]*:11: Error: thumb conditional instruction should be in IT block -- `vcvtne.f32.s32 s13,s8' +[^:]*:12: Error: thumb conditional instruction should be in IT block -- `vcvtne.f32.u32 s13,s8' +[^:]*:13: Warning: ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is UNPREDICTABLE +[^:]*:13: Error: thumb conditional instruction should be in IT block -- `vcvtne.f16.s32 s13,s8' +[^:]*:14: Warning: ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is UNPREDICTABLE +[^:]*:14: Error: thumb conditional instruction should be in IT block -- `vcvtne.f16.u32 s13,s8' diff --git a/gas/testsuite/gas/arm/mve-vcvtne-it-bad.s b/gas/testsuite/gas/arm/mve-vcvtne-it-bad.s index e4c1b99906536c3c6cc8334e98d84cd170c19d76..b7d83f6fe0dfd4140b6cc11cf748d43787e932ba 100644 --- a/gas/testsuite/gas/arm/mve-vcvtne-it-bad.s +++ b/gas/testsuite/gas/arm/mve-vcvtne-it-bad.s @@ -1,3 +1,14 @@ .syntax unified .text vcvtne.s32.f64 s13, d8 +vcvtne.u32.f64 s13, d8 +vcvtne.s32.f32 s13, s8 +vcvtne.u32.f32 s13, s8 +vcvtne.s32.f16 s13, s8 +vcvtne.u32.f16 s13, s8 +vcvtne.f64.s32 d13, s8 +vcvtne.f64.u32 d13, s8 +vcvtne.f32.s32 s13, s8 +vcvtne.f32.u32 s13, s8 +vcvtne.f16.s32 s13, s8 +vcvtne.f16.u32 s13, s8 diff --git a/gas/testsuite/gas/arm/mve-vcvtne-it.d b/gas/testsuite/gas/arm/mve-vcvtne-it.d index 2bc069a77e5a46d83dd42d658b2d79a53e9da593..27e45753c6497fec85ee194e9ebae4a3fdbeee0f 100644 --- a/gas/testsuite/gas/arm/mve-vcvtne-it.d +++ b/gas/testsuite/gas/arm/mve-vcvtne-it.d @@ -1,10 +1,31 @@ # name: Armv8.1-M Mainline vcvt instruction in it block (with MVE) # as: -march=armv8.1-m.main+mve.fp+fp.dp +#warning: [^:]*: Assembler messages: +#warning: [^:]*:10: Warning: ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is UNPREDICTABLE +#warning: [^:]*:11: Warning: ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is UNPREDICTABLE +#warning: [^:]*:19: Warning: ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is UNPREDICTABLE +#warning: [^:]*:20: Warning: ARMv8.2 scalar fp16 instruction cannot be conditional, the behaviour is UNPREDICTABLE # objdump: -dr --prefix-addresses --show-raw-insn -marmv8.1-m.main .*: +file format .*arm.* Disassembly of section .text: -^[^>]*> bf18[ ]+it[ ]+ne +^[^>]*> bf1c[ ]+itt[ ]+ne ^[^>]*> eefd 6bc8[ ]+vcvtne.s32.f64[ ]+s13, d8 +^[^>]*> eefc 6bc8[ ]+vcvtne.u32.f64[ ]+s13, d8 +^[^>]*> bf1c[ ]+itt[ ]+ne +^[^>]*> eefd 6ac4[ ]+vcvtne.s32.f32[ ]+s13, s8 +^[^>]*> eefc 6ac4[ ]+vcvtne.u32.f32[ ]+s13, s8 +^[^>]*> bf1c[ ]+itt[ ]+ne +^[^>]*> eefd 69c4[ ]+vcvtne.s32.f16[ ]+s13, s8.* +^[^>]*> eefc 69c4[ ]+vcvtne.u32.f16[ ]+s13, s8.* +^[^>]*> bf1c[ ]+itt[ ]+ne +^[^>]*> eeb8 dbc4[ ]+vcvtne.f64.s32[ ]+d13, s8 +^[^>]*> eeb8 db44[ ]+vcvtne.f64.u32[ ]+d13, s8 +^[^>]*> bf1c[ ]+itt[ ]+ne +^[^>]*> eef8 6ac4[ ]+vcvtne.f32.s32[ ]+s13, s8 +^[^>]*> eef8 6a44[ ]+vcvtne.f32.u32[ ]+s13, s8 +^[^>]*> bf1c[ ]+itt[ ]+ne +^[^>]*> eef8 69c4[ ]+vcvtne.f16.s32[ ]+s13, s8.* +^[^>]*> eef8 6944[ ]+vcvtne.f16.u32[ ]+s13, s8.* #pass diff --git a/gas/testsuite/gas/arm/mve-vcvtne-it.s b/gas/testsuite/gas/arm/mve-vcvtne-it.s index a9f260681283c3c68bace0abaa6754a4cab9c62f..e8be576c2960fc6c2cf3582604c436561099d046 100644 --- a/gas/testsuite/gas/arm/mve-vcvtne-it.s +++ b/gas/testsuite/gas/arm/mve-vcvtne-it.s @@ -1,4 +1,20 @@ .syntax unified .text -it ne +itt ne vcvtne.s32.f64 s13, d8 +vcvtne.u32.f64 s13, d8 +itt ne +vcvtne.s32.f32 s13, s8 +vcvtne.u32.f32 s13, s8 +itt ne +vcvtne.s32.f16 s13, s8 +vcvtne.u32.f16 s13, s8 +itt ne +vcvtne.f64.s32 d13, s8 +vcvtne.f64.u32 d13, s8 +itt ne +vcvtne.f32.s32 s13, s8 +vcvtne.f32.u32 s13, s8 +itt ne +vcvtne.f16.s32 s13, s8 +vcvtne.f16.u32 s13, s8 --------------clv2rW0LJjQqUr05gymObgtG Content-Type: text/x-patch; charset=UTF-8; name="rb15967.patch" Content-Disposition: attachment; filename="rb15967.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtYXJtLmMgYi9nYXMvY29uZmlnL3RjLWFybS5jCmlu ZGV4IDJlNmQxNzU0ODJlZmU0YmM1OGEyZTI3N2JkMmNjNGM0OGY5ZTE4NjMuLjI1NTA2MjQxZjI5 Y2RiMGRiMTY5YmI3ODAxNjA0ZWE0ZTM1Njk4OWMgMTAwNjQ0Ci0tLSBhL2dhcy9jb25maWcvdGMt YXJtLmMKKysrIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwpAQCAtMTkxNDMsMTYgKzE5MTQzLDYgQEAg ZG9fbmVvbl9jdnRfMSAoZW51bSBuZW9uX2N2dF9tb2RlIG1vZGUpCiAgICAgICByZXR1cm47CiAg ICAgfQogCi0gIGlmICgocnMgPT0gTlNfRkQgfHwgcnMgPT0gTlNfUVFJKSAmJiBtb2RlID09IG5l b25fY3Z0X21vZGVfbgotICAgICAgJiYgQVJNX0NQVV9IQVNfRkVBVFVSRSAoY3B1X3ZhcmlhbnQs IG12ZV9leHQpKQotICAgIHsKLSAgICAgIC8qIFdlIGFyZSBkZWFsaW5nIHdpdGggdmN2dCB3aXRo IHRoZSAnbmUnIGNvbmRpdGlvbi4gICovCi0gICAgICBpbnN0LmNvbmQgPSAweDE7Ci0gICAgICBp bnN0Lmluc3RydWN0aW9uID0gTl9NTkVNX3ZjdnQ7Ci0gICAgICBkb19uZW9uX2N2dF8xIChuZW9u X2N2dF9tb2RlX3opOwotICAgICAgcmV0dXJuOwotICAgIH0KLQogICAvKiBWRlAgcmF0aGVyIHRo YW4gTmVvbiBjb252ZXJzaW9ucy4gICovCiAgIGlmIChmbGF2b3VyID49IG5lb25fY3Z0X2ZsYXZv dXJfZmlyc3RfZnApCiAgICAgewpAQCAtMjI3NDgsNiArMjI3MzgsMjMgQEAgb3Bjb2RlX2xvb2t1 cCAoY2hhciAqKnN0cikKICAgICAgY29uZCA9IChjb25zdCBzdHJ1Y3QgYXNtX2NvbmQgKikgc3Ry X2hhc2hfZmluZF9uIChhcm1fdmNvbmRfaHNoLCBhZmZpeCwgMSk7CiAgICAgIG9wY29kZSA9IChj b25zdCBzdHJ1Y3QgYXNtX29wY29kZSAqKSBzdHJfaGFzaF9maW5kX24gKGFybV9vcHNfaHNoLCBi YXNlLAogCQkJCQkJCSAgIGFmZml4IC0gYmFzZSk7CisKKyAgICAgLyogQSBrbm93biBlZGdlIGNh c2UgaXMgYSBjb25mbGljdCBiZXR3ZWVuIGFuICdlJyBhcyBhIHN1ZmZpeCBmb3IgYW4KKwlFbHNl IG9mIGEgVlBUIHByZWRpY2F0aW9uIGJsb2NrIGFuZCBhbiAnbmUnIHN1ZmZpeCBmb3IgYW4gSVQg YmxvY2suCisJSWYgd2UgZGV0ZWN0IHRoYXQgZWRnZSBjYXNlIGhlcmUgYW5kIHdlIGFyZSBub3Qg aW4gYSBWUFQgVkVDVE9SX1BSRUQKKwlibG9jaywgcmVzZXQgb3Bjb2RlIGFuZCBjb25kLCBzbyB0 aGF0IHRoZSAnbmUnIGNhc2UgY2FuIGJlIGRldGVjdGVkCisJaW4gdGhlIG5leHQgc2VjdGlvbiBm b3IgMi1jaGFyYWN0ZXIgY29uZGl0aW9uYWwgc3VmZml4ZXMuCisJQW4gZXhhbXBsZSB3aGVyZSB0 aGlzIGlzIGEgcHJvYmxlbSBpcyBiZXR3ZWVuIHRoZSBNVkUgJ3ZjdnRuJyBhbmQgdGhlCisJbm9u LU1WRSAndmN2dCcgaW5zdHJ1Y3Rpb25zLiAqLworICAgICBpZiAoY29uZCAmJiBvcGNvZGUKKwkg JiYgY29uZC0+dGVtcGxhdGVfbmFtZVswXSA9PSAnZScKKwkgJiYgb3Bjb2RlLT50ZW1wbGF0ZV9u YW1lW2FmZml4IC0gYmFzZSAtIDFdID09ICduJworCSAmJiBub3dfcHJlZC50eXBlICE9IFZFQ1RP Ul9QUkVEKQorICAgICAgIHsKKwkgb3Bjb2RlID0gTlVMTDsKKwkgY29uZCA9IE5VTEw7CisgICAg ICAgfQorCiAgICAgIC8qIElmIHRoaXMgb3Bjb2RlIGNhbiBub3QgYmUgdmVjdG9yIHByZWRpY2F0 ZWQgdGhlbiBkb24ndCBhY2NlcHQgaXQgd2l0aCBhCiAJdmVjdG9yIHByZWRpY2F0aW9uIGNvZGUu ICAqLwogICAgICBpZiAob3Bjb2RlICYmICFvcGNvZGUtPm1heUJlVmVjUHJlZCkKZGlmZiAtLWdp dCBhL2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9tdmUtdmN2dG5lLWl0LWJhZC5sIGIvZ2FzL3Rlc3Rz dWl0ZS9nYXMvYXJtL212ZS12Y3Z0bmUtaXQtYmFkLmwKaW5kZXggODc2NWFlMGQ2OTEyZTMyMmVj YWJmYjIxNWY1NDAxMzI3ZmE5N2NiZS4uY2E1N2EzODUzN2M2MjkyNmY0MzExOWMxZTlhYmQ5ZGJh ZjU0OWExYiAxMDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL212ZS12Y3Z0bmUtaXQt YmFkLmwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL212ZS12Y3Z0bmUtaXQtYmFkLmwKQEAg LTEsMiArMSwxNyBAQAogW146XSo6IEFzc2VtYmxlciBtZXNzYWdlczoKIFteOl0qOjM6IEVycm9y OiB0aHVtYiBjb25kaXRpb25hbCBpbnN0cnVjdGlvbiBzaG91bGQgYmUgaW4gSVQgYmxvY2sgLS0g YHZjdnRuZS5zMzIuZjY0IHMxMyxkOCcKK1teOl0qOjQ6IEVycm9yOiB0aHVtYiBjb25kaXRpb25h bCBpbnN0cnVjdGlvbiBzaG91bGQgYmUgaW4gSVQgYmxvY2sgLS0gYHZjdnRuZS51MzIuZjY0IHMx MyxkOCcKK1teOl0qOjU6IEVycm9yOiB0aHVtYiBjb25kaXRpb25hbCBpbnN0cnVjdGlvbiBzaG91 bGQgYmUgaW4gSVQgYmxvY2sgLS0gYHZjdnRuZS5zMzIuZjMyIHMxMyxzOCcKK1teOl0qOjY6IEVy cm9yOiB0aHVtYiBjb25kaXRpb25hbCBpbnN0cnVjdGlvbiBzaG91bGQgYmUgaW4gSVQgYmxvY2sg LS0gYHZjdnRuZS51MzIuZjMyIHMxMyxzOCcKK1teOl0qOjc6IFdhcm5pbmc6IEFSTXY4LjIgc2Nh bGFyIGZwMTYgaW5zdHJ1Y3Rpb24gY2Fubm90IGJlIGNvbmRpdGlvbmFsLCB0aGUgYmVoYXZpb3Vy IGlzIFVOUFJFRElDVEFCTEUKK1teOl0qOjc6IEVycm9yOiB0aHVtYiBjb25kaXRpb25hbCBpbnN0 cnVjdGlvbiBzaG91bGQgYmUgaW4gSVQgYmxvY2sgLS0gYHZjdnRuZS5zMzIuZjE2IHMxMyxzOCcK K1teOl0qOjg6IFdhcm5pbmc6IEFSTXY4LjIgc2NhbGFyIGZwMTYgaW5zdHJ1Y3Rpb24gY2Fubm90 IGJlIGNvbmRpdGlvbmFsLCB0aGUgYmVoYXZpb3VyIGlzIFVOUFJFRElDVEFCTEUKK1teOl0qOjg6 IEVycm9yOiB0aHVtYiBjb25kaXRpb25hbCBpbnN0cnVjdGlvbiBzaG91bGQgYmUgaW4gSVQgYmxv Y2sgLS0gYHZjdnRuZS51MzIuZjE2IHMxMyxzOCcKK1teOl0qOjk6IEVycm9yOiB0aHVtYiBjb25k aXRpb25hbCBpbnN0cnVjdGlvbiBzaG91bGQgYmUgaW4gSVQgYmxvY2sgLS0gYHZjdnRuZS5mNjQu czMyIGQxMyxzOCcKK1teOl0qOjEwOiBFcnJvcjogdGh1bWIgY29uZGl0aW9uYWwgaW5zdHJ1Y3Rp b24gc2hvdWxkIGJlIGluIElUIGJsb2NrIC0tIGB2Y3Z0bmUuZjY0LnUzMiBkMTMsczgnCitbXjpd KjoxMTogRXJyb3I6IHRodW1iIGNvbmRpdGlvbmFsIGluc3RydWN0aW9uIHNob3VsZCBiZSBpbiBJ VCBibG9jayAtLSBgdmN2dG5lLmYzMi5zMzIgczEzLHM4JworW146XSo6MTI6IEVycm9yOiB0aHVt YiBjb25kaXRpb25hbCBpbnN0cnVjdGlvbiBzaG91bGQgYmUgaW4gSVQgYmxvY2sgLS0gYHZjdnRu ZS5mMzIudTMyIHMxMyxzOCcKK1teOl0qOjEzOiBXYXJuaW5nOiBBUk12OC4yIHNjYWxhciBmcDE2 IGluc3RydWN0aW9uIGNhbm5vdCBiZSBjb25kaXRpb25hbCwgdGhlIGJlaGF2aW91ciBpcyBVTlBS RURJQ1RBQkxFCitbXjpdKjoxMzogRXJyb3I6IHRodW1iIGNvbmRpdGlvbmFsIGluc3RydWN0aW9u IHNob3VsZCBiZSBpbiBJVCBibG9jayAtLSBgdmN2dG5lLmYxNi5zMzIgczEzLHM4JworW146XSo6 MTQ6IFdhcm5pbmc6IEFSTXY4LjIgc2NhbGFyIGZwMTYgaW5zdHJ1Y3Rpb24gY2Fubm90IGJlIGNv bmRpdGlvbmFsLCB0aGUgYmVoYXZpb3VyIGlzIFVOUFJFRElDVEFCTEUKK1teOl0qOjE0OiBFcnJv cjogdGh1bWIgY29uZGl0aW9uYWwgaW5zdHJ1Y3Rpb24gc2hvdWxkIGJlIGluIElUIGJsb2NrIC0t IGB2Y3Z0bmUuZjE2LnUzMiBzMTMsczgnCmRpZmYgLS1naXQgYS9nYXMvdGVzdHN1aXRlL2dhcy9h cm0vbXZlLXZjdnRuZS1pdC1iYWQucyBiL2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9tdmUtdmN2dG5l LWl0LWJhZC5zCmluZGV4IGU0YzFiOTk5MDY1MzZjM2M2Y2M4MzM0ZTk4ZDg0Y2QxNzBjMTlkNzYu LmI3ZDgzZjZmZTBkZmQ0MTQwYjZjYzExY2Y3NDhkNDM3ODdlOTMyYmEgMTAwNjQ0Ci0tLSBhL2dh cy90ZXN0c3VpdGUvZ2FzL2FybS9tdmUtdmN2dG5lLWl0LWJhZC5zCisrKyBiL2dhcy90ZXN0c3Vp dGUvZ2FzL2FybS9tdmUtdmN2dG5lLWl0LWJhZC5zCkBAIC0xLDMgKzEsMTQgQEAKIC5zeW50YXgg dW5pZmllZAogLnRleHQKIHZjdnRuZS5zMzIuZjY0CXMxMywgZDgKK3ZjdnRuZS51MzIuZjY0CXMx MywgZDgKK3ZjdnRuZS5zMzIuZjMyCXMxMywgczgKK3ZjdnRuZS51MzIuZjMyCXMxMywgczgKK3Zj dnRuZS5zMzIuZjE2CXMxMywgczgKK3ZjdnRuZS51MzIuZjE2CXMxMywgczgKK3ZjdnRuZS5mNjQu czMyCWQxMywgczgKK3ZjdnRuZS5mNjQudTMyCWQxMywgczgKK3ZjdnRuZS5mMzIuczMyCXMxMywg czgKK3ZjdnRuZS5mMzIudTMyCXMxMywgczgKK3ZjdnRuZS5mMTYuczMyCXMxMywgczgKK3ZjdnRu ZS5mMTYudTMyCXMxMywgczgKZGlmZiAtLWdpdCBhL2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9tdmUt dmN2dG5lLWl0LmQgYi9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vbXZlLXZjdnRuZS1pdC5kCmluZGV4 IDJiYzA2OWE3N2U1YTQ2ZDgzZGQ0MmQ2NThiMmQ3OWE1M2U5ZGE1OTMuLjI3ZTQ1NzUzYzY0OTdm ZWM4NWVlMTk0ZTllYmFlNGEzZmRiZWVlMGYgMTAwNjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2Fz L2FybS9tdmUtdmN2dG5lLWl0LmQKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL212ZS12Y3Z0 bmUtaXQuZApAQCAtMSwxMCArMSwzMSBAQAogIyBuYW1lOiBBcm12OC4xLU0gTWFpbmxpbmUgdmN2 dCBpbnN0cnVjdGlvbiBpbiBpdCBibG9jayAod2l0aCBNVkUpCiAjIGFzOiAtbWFyY2g9YXJtdjgu MS1tLm1haW4rbXZlLmZwK2ZwLmRwCisjd2FybmluZzogW146XSo6IEFzc2VtYmxlciBtZXNzYWdl czoKKyN3YXJuaW5nOiBbXjpdKjoxMDogV2FybmluZzogQVJNdjguMiBzY2FsYXIgZnAxNiBpbnN0 cnVjdGlvbiBjYW5ub3QgYmUgY29uZGl0aW9uYWwsIHRoZSBiZWhhdmlvdXIgaXMgVU5QUkVESUNU QUJMRQorI3dhcm5pbmc6IFteOl0qOjExOiBXYXJuaW5nOiBBUk12OC4yIHNjYWxhciBmcDE2IGlu c3RydWN0aW9uIGNhbm5vdCBiZSBjb25kaXRpb25hbCwgdGhlIGJlaGF2aW91ciBpcyBVTlBSRURJ Q1RBQkxFCisjd2FybmluZzogW146XSo6MTk6IFdhcm5pbmc6IEFSTXY4LjIgc2NhbGFyIGZwMTYg aW5zdHJ1Y3Rpb24gY2Fubm90IGJlIGNvbmRpdGlvbmFsLCB0aGUgYmVoYXZpb3VyIGlzIFVOUFJF RElDVEFCTEUKKyN3YXJuaW5nOiBbXjpdKjoyMDogV2FybmluZzogQVJNdjguMiBzY2FsYXIgZnAx NiBpbnN0cnVjdGlvbiBjYW5ub3QgYmUgY29uZGl0aW9uYWwsIHRoZSBiZWhhdmlvdXIgaXMgVU5Q UkVESUNUQUJMRQogIyBvYmpkdW1wOiAtZHIgLS1wcmVmaXgtYWRkcmVzc2VzIC0tc2hvdy1yYXct aW5zbiAtbWFybXY4LjEtbS5tYWluCiAKIC4qOiArZmlsZSBmb3JtYXQgLiphcm0uKgogCiBEaXNh c3NlbWJseSBvZiBzZWN0aW9uIC50ZXh0OgotXltePl0qPiBiZjE4WyAJXStpdFsgCV0rbmUKK15b Xj5dKj4gYmYxY1sgCV0raXR0WyAJXStuZQogXltePl0qPiBlZWZkIDZiYzhbIAldK3ZjdnRuZS5z MzIuZjY0WyAJXStzMTMsIGQ4CiteW14+XSo+IGVlZmMgNmJjOFsgCV0rdmN2dG5lLnUzMi5mNjRb IAldK3MxMywgZDgKK15bXj5dKj4gYmYxY1sgCV0raXR0WyAJXStuZQorXltePl0qPiBlZWZkIDZh YzRbIAldK3ZjdnRuZS5zMzIuZjMyWyAJXStzMTMsIHM4CiteW14+XSo+IGVlZmMgNmFjNFsgCV0r dmN2dG5lLnUzMi5mMzJbIAldK3MxMywgczgKK15bXj5dKj4gYmYxY1sgCV0raXR0WyAJXStuZQor XltePl0qPiBlZWZkIDY5YzRbIAldK3ZjdnRuZS5zMzIuZjE2WyAJXStzMTMsIHM4LioKK15bXj5d Kj4gZWVmYyA2OWM0WyAJXSt2Y3Z0bmUudTMyLmYxNlsgCV0rczEzLCBzOC4qCiteW14+XSo+IGJm MWNbIAldK2l0dFsgCV0rbmUKK15bXj5dKj4gZWViOCBkYmM0WyAJXSt2Y3Z0bmUuZjY0LnMzMlsg CV0rZDEzLCBzOAorXltePl0qPiBlZWI4IGRiNDRbIAldK3ZjdnRuZS5mNjQudTMyWyAJXStkMTMs IHM4CiteW14+XSo+IGJmMWNbIAldK2l0dFsgCV0rbmUKK15bXj5dKj4gZWVmOCA2YWM0WyAJXSt2 Y3Z0bmUuZjMyLnMzMlsgCV0rczEzLCBzOAorXltePl0qPiBlZWY4IDZhNDRbIAldK3ZjdnRuZS5m MzIudTMyWyAJXStzMTMsIHM4CiteW14+XSo+IGJmMWNbIAldK2l0dFsgCV0rbmUKK15bXj5dKj4g ZWVmOCA2OWM0WyAJXSt2Y3Z0bmUuZjE2LnMzMlsgCV0rczEzLCBzOC4qCiteW14+XSo+IGVlZjgg Njk0NFsgCV0rdmN2dG5lLmYxNi51MzJbIAldK3MxMywgczguKgogI3Bhc3MKZGlmZiAtLWdpdCBh L2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9tdmUtdmN2dG5lLWl0LnMgYi9nYXMvdGVzdHN1aXRlL2dh cy9hcm0vbXZlLXZjdnRuZS1pdC5zCmluZGV4IGE5ZjI2MDY4MTI4M2MzYzY4YmFjZTBhYmFhNjc1 NGE0Y2FiOWM2MmYuLmU4YmU1NzZjMjk2MGZjNmMyY2YzNTgyNjA0YzQzNjU2MTA5OWQwNDYgMTAw NjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9tdmUtdmN2dG5lLWl0LnMKKysrIGIvZ2Fz L3Rlc3RzdWl0ZS9nYXMvYXJtL212ZS12Y3Z0bmUtaXQucwpAQCAtMSw0ICsxLDIwIEBACiAuc3lu dGF4IHVuaWZpZWQKIC50ZXh0Ci1pdCBuZQoraXR0IG5lCiB2Y3Z0bmUuczMyLmY2NAlzMTMsIGQ4 Cit2Y3Z0bmUudTMyLmY2NAlzMTMsIGQ4CitpdHQgbmUKK3ZjdnRuZS5zMzIuZjMyCXMxMywgczgK K3ZjdnRuZS51MzIuZjMyCXMxMywgczgKK2l0dCBuZQordmN2dG5lLnMzMi5mMTYJczEzLCBzOAor dmN2dG5lLnUzMi5mMTYJczEzLCBzOAoraXR0IG5lCit2Y3Z0bmUuZjY0LnMzMglkMTMsIHM4Cit2 Y3Z0bmUuZjY0LnUzMglkMTMsIHM4CitpdHQgbmUKK3ZjdnRuZS5mMzIuczMyCXMxMywgczgKK3Zj dnRuZS5mMzIudTMyCXMxMywgczgKK2l0dCBuZQordmN2dG5lLmYxNi5zMzIJczEzLCBzOAordmN2 dG5lLmYxNi51MzIJczEzLCBzOAo= --------------clv2rW0LJjQqUr05gymObgtG--