From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2073.outbound.protection.outlook.com [40.107.20.73]) by sourceware.org (Postfix) with ESMTPS id E9260385AE6D for ; Tue, 5 Jul 2022 06:53:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E9260385AE6D ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eAVmphBNbcoshKYeMYsr8/f75q/TZdsM/sOawm/WjZH9wuq5v4/+dsAJx+2yG8kFLQB7wXdGyerklVQmwmeA085oLFfiZ00w9t26Bz8iEjJlIhT69y73NLzfm30bZrMXWabvAE2NxfRexFzq9dKo2XQDKMT+J4hmZsPJM9V9ITKB5uIIUlEjAuD12VR0k+eWCH7hzmc/uDGvL2uBUCzgVOZnBpUOp+IDir2NUxuEGPGVxawtFOn/DJfYCrLQKES/oTNRj7O/wLYAE9TMFAgTpuHsGtNn9OpRze5GW1iayKRHH61Hss7JsowgSbNd7qwRL9HemSN/xtE27QpGCMUq1A== 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=U2iZ4yuugEFeWDT4i6Cp7oTojTIUNL10OJGmDpmuaps=; b=nQjAfI7Y6tGT4glp5wGaKUBi/gRUNWzmT60CWb8lgR5hbWsanXOLKzZPyxc8JvKXwCabw3EI5mzygy6YqJ6YldFsUwqq8aRIBy434JeetH7wVkM22Xj6wqnECfLjHQ+9pomuoalDsZD5x6XZvecFefuDBNkBc/rV3F6NpzDtPs14OylZcwu2U9k6mUtssTRcXSPdMH0SsCRwwYDcG4ed93Eebnt0fHL5kN8bOIbR4GRaWx67ti+gKRJdRlkEMVBHWo4jdvHt7/hlLR0Q2Nn1ZUGHLmEEMlnuoVB6epaHXmuPdNiAAJCQq5cdoD6WQI07DfDo4tUoVQk+VazKcZu7sA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM4PR0401MB2356.eurprd04.prod.outlook.com (2603:10a6:200:49::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.21; Tue, 5 Jul 2022 06:53:15 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::dfa:a64a:432f:e26b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::dfa:a64a:432f:e26b%7]) with mapi id 15.20.5395.021; Tue, 5 Jul 2022 06:53:15 +0000 Message-ID: <9241d611-4d79-479e-7110-8bf6226b15b3@suse.com> Date: Tue, 5 Jul 2022 08:53:13 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: [PATCH 1/3] x86: fix 3-operand insn reverse-matching Content-Language: en-US To: Binutils References: From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0046.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:48::23) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 25486a5a-7ca6-4111-5c7f-08da5e5308d4 X-MS-TrafficTypeDiagnostic: AM4PR0401MB2356:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6tekuXhE2tsTlmj9E94cqMmCiNZRxqz6ZJH+PnLh0ytNvjfGLu4lendi34E2q2YVqvOMzp1aYGe/Z+2ePo8DsIIpWnK63beXaaSacdEM7i3Ncl2d5PFNdiVmVy+wilmfJp0Uz2bXmark8mo7/MPreFhDszdDav6f1cA9sa9KkQwugc0ylzo7V47+WWqQ0U44r1v0n7tKsyxAcgg7eY4RAenNFKYhAeqvUC1wGDKYOIHT81mo10WccPFxkLALMcMaQXH07iUoNlg9pP1KiWSp16oesAo/9RSVAsr3czme9nC1OsQHMzvPJYJOfOYccYhgauYKIWwNZfzaeBO7fFZQAXO8ltxnbWAxlq7PhqLQKmKP7qwADNZ3MipN60pKaQNBQkjtFQLBS5iMsSStfN9rk2zbSOIKJAnBeg1zESrAzgRP4NdAmAIjkpxOlQpOUh+wKkDFe7kp6gGM+6HI1hCgWxMHXBe3YcLGKU6H8C7hAKSm6qZdgbvhCCnATP/v/jbYcmHoVxOHzBND0P6wGd+T0XTrB2T/EzWNA7rS66N5M76zfZQQ3r8kAEL98LpSDjgzVqVtKmp772YSnWPfJy1p535PfExkoI0FT6ZcQRQxsrAxwr5jnBAowMFpsfv0Tq6tiUWIJ+8eWslRgOOaHjM/bRT9WFZC8FflWcTH50yrod9Y1JXIIn2AnXg/K76E0+tadq5eOR9Bjs9t+VnbbdNQ9yS8KB5hfPbnoQd7G3qhD54JIE4Jl3NYluxqwmOCLVPH/urVRt76a0dy0wBOdoW3RYZbG2wTO6Xp2wSWFZpwQKmm9jCgrcvxddy5/Wnddkf9ybvn4v9uDhXJMOb+M2b/F5QHMvURGgCH/npTntz0448= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR04MB6560.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(39860400002)(346002)(136003)(396003)(376002)(366004)(316002)(4326008)(8676002)(66476007)(6506007)(6486002)(478600001)(66556008)(41300700001)(66946007)(6916009)(8936002)(2906002)(5660300002)(31696002)(86362001)(31686004)(38100700002)(36756003)(186003)(2616005)(6512007)(26005)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SFpaWjAxR3BDOTdnVHhTRmdBWnQ3Q3VmNWtxYitTQytxMXZacGdhc1lkVWI5?= =?utf-8?B?VHI5YVErbEpLN2VIeFNKYkdhSDBjYkVLVVFLdXpXODNqYnJXY0IyZU9nL3lK?= =?utf-8?B?alBjSXprRzlqK1kwMTBOQkhLOUt4TmhkdEM0Mlo3N0lFa3pqZXBySGx3TnRi?= =?utf-8?B?Sys4aDNqd05mcW5hV1Q1MVNTWTZ2cG5FcUI0L3gyYnZieUJqVHNHYWhvOGZq?= =?utf-8?B?ZUxUdXRFQTdWTEY2QVUwTVpJZjIra0N0enRMRWhoNmY0MThmU2tMZWxzRDZT?= =?utf-8?B?bWJVeXY1bnZ1Nk8yMUR2MGdoR0lzMTF6T0V5K0d4SjV5RnNNY3AwclpZVlZn?= =?utf-8?B?KzV3K0FFR0k5OTVsTFNFbUE2dzdBUnZwSklvZmtJdTVINVhHbDN5eFhuQTd5?= =?utf-8?B?clZHQ1BOQ25nRTh1VDVrM3d4ZXh4bFB6aWtxV3ZLQnZtS1E0ZStnTHJ2ZVN0?= =?utf-8?B?Q3Era3pIdzk4MmpTNTNpN1dNYkZCWEFNUklXMDc2SitnTnNCZ3hLNm9QY0pL?= =?utf-8?B?eU16SFQwYlppcG1UY3lEYzUvaE1jWEovVEJQWkRraXU2MU96b1ROU0w1WnBS?= =?utf-8?B?Y21LMlNyUk0zckc4dzZXV21VVmxtMFZaRFlLRnp4bTREaElpUzgyZFp2Mi9n?= =?utf-8?B?SFhLVDQxMjBmVjAzb09tVE00SGo5OXZvT2tGMUtVMFBnblhpMnlkaFdPQTJQ?= =?utf-8?B?cDlXVFBTSm8rckV5MkowN0N3U3JoWGRCenNWY21BcTR0b0d4NG05VlVOM2F5?= =?utf-8?B?WW9uR3FpYkJvbUEvcnM5T05JaHpqRUlsdzdLdkJFb0QwMTBXSUorK1ZHN2hO?= =?utf-8?B?a1B0Q1c5bXZFNnNPaXJXK2ZoS0w0RWJkZ3d6eStQQjNWNC9VTkx3NnNzZkhG?= =?utf-8?B?WmRpaW1zb3d2M1ZLVFIyQ09EOVNNbjFxRE9XOVlEb2lQYXM5cUlqZ1E5dlJY?= =?utf-8?B?ZTg2aE9UZnl0ZDlORlZ6SHBwWHJjUEppUk5yK3ZiTXhJbk9oem9tVWlBWTZ3?= =?utf-8?B?TUFiTlVIRUVwMXUyb0wwREdSSmR3Qm5qRWZTSjhVRVM2SXd0UFJNSGlzZ2gy?= =?utf-8?B?K1h0YlBLc2l4bVRGZDhQMEtBUjV6c1ZuTTcvN3dBVkhRaE90aUhITzY2RU9j?= =?utf-8?B?OVBBUy9hK25pdm5WS0FtMGhiZk9OU2k2b01IYnpGNG5mdEpWZkh3MW5Oamtt?= =?utf-8?B?NmhhZWFRUHUzYnBkZEZwTnI5OW1XaVVDNS81Tk1lUUxHRkhiRUJXZzNGUUts?= =?utf-8?B?Q2RTdG1IMHJjSUVjYVdSWXZvOFlwdm53dm9CWlBOZVMzSXJHTjYwTXloQ21F?= =?utf-8?B?K0gzREtWM21oeXRweHdMTWcwVzlaYlFvWUZhM1VMR2VyWkFiYU5NN20wYnd1?= =?utf-8?B?ZUU3ako2NHgyOW9qc3pNVzlFb2I3Z1JyUG5laXYrM3BRRzY3S3JkUSt4cldF?= =?utf-8?B?QUtSOEFLSU5manBMaDZIMTlWVW9iMmwwSmo0TXZiK3ZTSFFrbW9BN2ZnZkRk?= =?utf-8?B?RnA2TTB3UDhHR2Riamk5czNSbUhoZnJrTnFSejNQdGxKTzA4b1REbDQxQVpP?= =?utf-8?B?TXF1K1plZDY1L1A1L244ekI4VE8xT2ZTRm1xcERtaWhyZElEcnVzQW53Qmp5?= =?utf-8?B?bkYwZnJiK2g4NEhrYUFrUjlxcEsvTmthamVtWVk3UWdjT1RIdnZXcXM2c29D?= =?utf-8?B?Q2NpTGJhQmpCQlU2WlN1WjBCczYvWmpyTUV1ZGxtY1c5ODJvVUhZS3Z3dklV?= =?utf-8?B?bTlSV0hJZGtINVpvZFpGcUtlVGM2eFk1andHd0d5cEVBaHMyNmlNcjBXWFd4?= =?utf-8?B?RFhKbUxVSmY1aWovZjdJVXZTU0JqTC9uVUlxZUdQbTV0dENxdEhrRlFXRzRE?= =?utf-8?B?dkFKRjNxNU8vYU1jK0I3N0s3Nkp4bUQ1U2d6RUdTRit2YjZ3a0tkR3BGS3M5?= =?utf-8?B?SVBxbkYwV0NQRGJjTVJXNHJaWTNzc1VCdDVZTVZ2L3htVXIybmpJT0RyYTZZ?= =?utf-8?B?OHluUEgwdFNNVW1aTlE5RC9DNVBKeCsrejhMUmtLeEgyOXp0aXg1SmtsWlox?= =?utf-8?B?V01ZS0FDWm12Q0F3Z2c3RlIxVmVXUmFHUjI5aEp6OG9DTkw2VmUwYUU3a2Jx?= =?utf-8?Q?1mmwRHqkp3VL7MxKENeSPYkca?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25486a5a-7ca6-4111-5c7f-08da5e5308d4 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2022 06:53:15.0871 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zg8b+jKWl2H4b6KA8KohKmG+RFNJyy9mI0iVrFb13b3qgzhXWFJkxkaFsB+xeTRbpItNfBGoN6ysuSdI7pUzNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0401MB2356 X-Spam-Status: No, score=-3030.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jul 2022 06:53:18 -0000 The middle operand would have gone entirely unchecked, allowing e.g. vmovss %xmm0, %esp, %xmm2 to assemble successfully, or e.g. vmovss %xmm0, $4, %xmm2 causing an internal error. Alongside dealing with this also drop a related comment, which hasn't been applicable anymore since the introduction of 3-operand patterns with D set (and which perhaps never had been logical to be there, as reverse-matched insns don't make it there in the first place). --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -6724,8 +6724,12 @@ match_template (char mnem_suffix) /* Try reversing direction of operands. */ overlap0 = operand_type_and (i.types[0], operand_types[i.operands - 1]); overlap1 = operand_type_and (i.types[i.operands - 1], operand_types[0]); + overlap2 = operand_type_and (i.types[1], operand_types[1]); + gas_assert (t->operands != 3 || !check_register); if (!operand_type_match (overlap0, i.types[0]) || !operand_type_match (overlap1, i.types[i.operands - 1]) + || (t->operands == 3 + && !operand_type_match (overlap2, i.types[1])) || (check_register && !operand_type_register_match (i.types[0], operand_types[i.operands - 1], @@ -6797,8 +6801,6 @@ match_template (char mnem_suffix) continue; /* Fall through. */ case 3: - /* Here we make use of the fact that there are no - reverse match 3 operand instructions. */ if (!operand_type_match (overlap2, i.types[2]) || ((check_register & 5) == 5 && !operand_type_register_match (i.types[0], --- a/gas/testsuite/gas/i386/inval-avx.l +++ b/gas/testsuite/gas/i386/inval-avx.l @@ -2,20 +2,13 @@ .*:4: Error: .* .*:5: Error: .* .*:6: Error: .* -.*:9: Error:.* ambiguous .* `vcvtpd2dq' -.*:10: Error:.* ambiguous .* `vcvtpd2ps' -.*:11: Error:.* ambiguous .* `vcvttpd2dq' +.*:8: Error: .* +.*:9: Error: .* +.*:10: Error: .* +.*:11: Error: .* +.*:12: Error: .* +.*:15: Error:.* ambiguous .* `vcvtpd2dq' +.*:16: Error:.* ambiguous .* `vcvtpd2ps' +.*:17: Error:.* ambiguous .* `vcvttpd2dq' GAS LISTING .* - - -[ ]*1[ ]+\# Check illegal AVX instructions -[ ]*2[ ]+\.text -[ ]*3[ ]+_start: -[ ]*4[ ]+vcvtpd2dq \(%ecx\),%xmm2 -[ ]*5[ ]+vcvtpd2ps \(%ecx\),%xmm2 -[ ]*6[ ]+vcvttpd2dq \(%ecx\),%xmm2 -[ ]*7[ ]+ -[ ]*8[ ]+\.intel_syntax noprefix -[ ]*9[ ]+vcvtpd2dq xmm2,\[ecx\] -[ ]*10[ ]+vcvtpd2ps xmm2,\[ecx\] -[ ]*11[ ]+vcvttpd2dq xmm2,\[ecx\] +#pass --- a/gas/testsuite/gas/i386/inval-avx.s +++ b/gas/testsuite/gas/i386/inval-avx.s @@ -5,6 +5,12 @@ _start: vcvtpd2ps (%ecx),%xmm2 vcvttpd2dq (%ecx),%xmm2 + vmovss %xmm0, (%esp), %xmm2 + vmovss %xmm0, $4, %xmm2 + vmovss %xmm0, %cr0, %xmm2 + vmovss %xmm0, %ymm4, %xmm2 + vmovss %xmm0, %mm4, %xmm2 + .intel_syntax noprefix vcvtpd2dq xmm2,[ecx] vcvtpd2ps xmm2,[ecx]