From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2053.outbound.protection.outlook.com [40.107.21.53]) by sourceware.org (Postfix) with ESMTPS id BA120384D188 for ; Fri, 26 Aug 2022 10:32:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BA120384D188 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nW8LFd5Jw+VjJDbdn85A7xFpWhT0dAnynph66nv8Av600c99eYY08L2DgM1lw1xtrwL6AYjZDUEf+7cyocEr1xlKT4+3fmg/vqYyJ/aEzkjtciNFO5nGFVFuxfjL/HHJAm25vKBjorDqi4cGCvXDKS1KphzHgidQM31JEyXYzVhuZelGJHJMw3vvocYGEdqoyF/LhqPYtbclN92VOR+zgGoIzlTRFSLcGppKHdrOxsSegPv/K31vfjlFj/YVsRh4lScfQflnUuVP2HggaQJDby2xpCkiheFwbKQa40bjQzvfRzS2e92sBB0nTL8mx+j29cV/lDyDRqwjVS9Di+TOBg== 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=wiwSN8exfTjf2gL2i4nM8enCECehDok9IrP6Qa+jRYc=; b=J+G7QkYIwc5UtKYs8jVZK9wm4CIviD9dM5e61s2TZPc0wBEVd6je2BgGt4o3UgncDwpJ8MjORcrBeZ1ab6cTr0lpdYXNlPg4GTbhNup6wlkYMNfNWMBdqYhyXvGnbPLtkI4Eo8b4JxJaij2vH1ID6MYAHqeaIAUmr559KJTpt7M2LyCX7yTE/MfdvzuUrVaagCUHFApADcPnVhATiOSvs8Lx9ucUTSVnukeFZCEvXO4vYPhdWAwdZcxWQmBoMYilBNkrOT8QFGh+p8wheKMtXo+nDEYNmSGt4t7PAvW7GuSWGjK7j4rgEn6nwXWH00HdibY1CqAecsCxqUddMqAjJg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wiwSN8exfTjf2gL2i4nM8enCECehDok9IrP6Qa+jRYc=; b=Idw9EYGJj/RN8O42Ock/hkOrR1Sm7YtSDKftWFiO1nJMi7H6qily9mkOB77qM93oRkqSZjkrDyglNNrPgqwMkW3ZS9q27imQFxddH8PCgU2ICD4cIz/0ESkn+bmbMlgZX2MD2A1FoymPDQZmmZn3MxbXAw8dUvENbt0zI0kn2zJ6jK9rGP3qlAdsx/0cOPUFpN2LM39DqbCNtUeuhq3haVM25ng0zaYu7L8sh6SKPqS5prEZEVq1QLRWQmsGyL04J1WK1KGkqYVhtd9KPcsWEqD0lV335fEnH1vUoai0Ir/KEP4I+kx356iR0A5uLubspHCTMhkUH8TfBMJvMLaHBg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM8PR04MB7473.eurprd04.prod.outlook.com (2603:10a6:20b:1d0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Fri, 26 Aug 2022 10:32:14 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad%4]) with mapi id 15.20.5566.015; Fri, 26 Aug 2022 10:32:14 +0000 Message-ID: Date: Fri, 26 Aug 2022 12:32:12 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: [PATCH v2 4/7] x86-64: further re-work insn/suffix recognition to also cover MOVSL Content-Language: en-US To: Binutils References: <4a27fbde-d2b2-e293-d09e-9709bc5b9792@suse.com> Cc: "H.J. Lu" From: Jan Beulich In-Reply-To: <4a27fbde-d2b2-e293-d09e-9709bc5b9792@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AS9PR06CA0507.eurprd06.prod.outlook.com (2603:10a6:20b:49b::33) 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: 5462a352-3032-4522-51df-08da874e3def X-MS-TrafficTypeDiagnostic: AM8PR04MB7473:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bc/BT8ATYtyplZU+PUW4nxNRA9kKqe04aftQ4QEUC4ak/Tiw2euotAFIgpFr71cGKr2hOu9HwQvKBF2JgDABNiYXdBo7U8odW2IY8yzARYg8uPp7R+KCd7kKtpi7SPx5eK77ditOM94BFO5eV7LMJXRAd4ho9US69R+pGjkap5iMf1LH3C7Uj5b3lx8C/9z+/8wrVaJC2Q9IanC98r/EIhAm1XTwb9nrrT324jLVYqCdkqqkhXye4Xp7d1o4BoDlHIAijuJjBkNkRVDvVZRcIcqO+VKnesVB+Zwu2JtVntVkCKbQFV2y5zIYxDvwfgaHHmqEOaYe8EXfoa5tqxRzFKM9Ux51v0bbfn4GT8CWsTGEfscLo9KNMyxjPDBVTGtX/KjwVCtQcg68GNi9UY+l2VMSdPBlCiN2FHHtuxKUEI7ZDxtCShDiZuYGLIDT/aw7gDOGVxtrVKs31Fbhg/mfrv10QUIojUW+e+tcWTTt/koxvCOW6l50QtEAEMchuoiGOVYtgv+bfDXhrJ7hmUEeoEWfmicMJ8s9+riT7MAwI4zPnevzpD3AcJy7otnw8zsb5I8RtnYHyPE0R6ziWBWhvY2vU2KSSTZR50tHsi7402jD93hmsy5RQuNk9lxjU3fmNwtb86z+vK9GqIFuI+3GPbcFBCaA8xoVwNyWnlfqLyc/W8K6X6ILZVXZ2+IjBeEuftjBXUNDkCZczcaFH0qHVVIx6s5UxGHFqBF8f8TENl3rrADUQuCrZVOo8c8yoKvxa6kUdSRfn7oeAQ3tMbJCcJvwto/OJCZ05jblkbKUcis= 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)(346002)(39860400002)(376002)(136003)(396003)(366004)(83380400001)(6486002)(41300700001)(66946007)(2616005)(4326008)(66476007)(36756003)(186003)(66556008)(31686004)(8676002)(6512007)(31696002)(38100700002)(26005)(86362001)(5660300002)(6916009)(2906002)(8936002)(478600001)(316002)(6506007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MTBsU0pkb2xDdGtlM0szNjRIb2NNR1dCQ21nd04zMG1qSUs5dDdQY2ZkOGVr?= =?utf-8?B?aUtwMDRpdU1rV01zcEp1QWxzQ1JldkhmVlkyWWw1TDJUMTA0czltQlprK3ly?= =?utf-8?B?M0hUUFZ3RDhIeHZ5bzIvcTM0ME9yTzNnRUtCUkNKcVI5VTRocWlJakphU29n?= =?utf-8?B?MFp2a3ZlcUgxZ2dadnVaM3YzVzVZNlhXYk9wRkdWVUdWaFBPbDFEK013czZl?= =?utf-8?B?aTVVREFOeXpJWEZqaFRSQ3kxWHBiQVZTb0dpeDMyakppOWxVZEdoWGtJNVhF?= =?utf-8?B?WlBjbkhaVzFxckhxOGMyNUhhMWJLQjNlQVVjU2RUbUp6RnA0bWNZeDJXY0hX?= =?utf-8?B?MXRDTVNGSDlNNVdCTk9paEFqYXIxVTNyUC8wQUFXUGJ5QlpCQ3NlTkxFMnJH?= =?utf-8?B?aFowR1ZSWWxCRmwydU00TmFzekl6aW5HRFZaWS83S25STlBzTGt4NjhCVEdG?= =?utf-8?B?dVlGd1d4MmNwdXhZNFFzWkZ2NUlqTWJNckRBOTA0RlRwQ3RNSWF0OWVCNXht?= =?utf-8?B?ZjcxUXJZZFd4ZmtEWnZJQlcxc0JnSW83UDNMdEo1UUdOVUdtUTZhazFYSWhV?= =?utf-8?B?OW8za1MzZ1owRitob2NEZmFCRWdOMkhkTEQrWE96cDhwaTZPeVpMZy85Vmpj?= =?utf-8?B?c3VNNDN0TXlhYUhHY1h0TW5zQXROZVpKVUJJVCtSeHhUeGROZTVTTjJsbVEr?= =?utf-8?B?MTJmOGJWcURUVk5CRkZBV0JaKzBuUk1EeGovMTdrRmtsb0FZaGJVdVBKWCt6?= =?utf-8?B?ZmJIUFlnVE0zdGZ1MGxjb0F6dXdnZHlxalkwSFdSajhvVUFIenJ0aVVKeE5v?= =?utf-8?B?TU1tSmkzNS8wUWF2d2JBaktncmJqbkNsalpsUHJVQVVMQnc1SXh4WGdBcTFk?= =?utf-8?B?UWVuQWJ0ZmkzOTcwRTd2VkJsS3VkQzYrQ2UwSnFnaDUzOEpXK1ZETlhDRzll?= =?utf-8?B?Ym8wK3RMY0Y2cVlBQzYvRnI0Vzg1S2U2Z2R6YytDR0NrOW9MS09aWmtjMzdu?= =?utf-8?B?c2w0TGxpNzRpNDBmM1FJbklJdi9YOWdQSEJqUzVpZVllSDhwTVh5ZFFWYlRQ?= =?utf-8?B?aisvRmVPa0ZDNzNxTjlBVDN1Vk1xTklVc0lSN0JyM2kwSlZBOFd4VUQvdUZB?= =?utf-8?B?ajdoUW93aHpkcWpoVjlIVUVBWlRuZW01c1FzVWdiTEk1T1BieXNTTmtOdzVv?= =?utf-8?B?QUE0QTBGdVdNQ2xCY21NOXg1S3lPay96Y0FZcGxVMHhVY0Q5aVN1MmFVY2Jh?= =?utf-8?B?V0NVYmlISVpIbFFleXFlbDNZNU9Od0NJUmJ6aGYxam1PL0E2QzNYMWhQbkNI?= =?utf-8?B?cEcwWjJ3VzFiK0gyZjlVZVZZWjZoazJTYmI1Znh6cExqNWFsQVFkV2JvdEF1?= =?utf-8?B?L0h0VW5BdjJkT21vSHJFbGt5dlB4dGxTd1VYcjFsbWlUMkx3QkozVWJaRjRJ?= =?utf-8?B?Snh5MUxBR2RITTVSemNscklKdm1NZ0tiMU1pSFlHT2xINHQ0RWJpcG5tM1hs?= =?utf-8?B?WTM5SnV2WE4vVy9WZGlyWWhQcG4rL3ZrdEJhYVdtOENOYlpYUHIyNG10cVhR?= =?utf-8?B?WmF5dC83Um9XZy9lVm1EY2lCSnhxYXg2V3FmL0h0QzFkakNNYlJXQlkzT09J?= =?utf-8?B?OGxXdUt2WGVzMzUvQzdqNUZnNmM1d0lCVnBXZzM0Rk5UbGp3bXZ5cktpMFdS?= =?utf-8?B?bnd3QmkxMWJVRlpJZWZQSHNZeG5NS1hxR01XWlprSVNheGJhOVFzeWFPRElP?= =?utf-8?B?OW1vYTY5TDZKbk5VYkEvZ2Y5aWpld3NlWkJrQ2w0NVR3NWQrbmVLWnJadUlP?= =?utf-8?B?aEdZWGQ4TWNjd1BUejloeFFIMjZGUVBBMytlcTVNYU1YTklUbVpyOUo1Qi9k?= =?utf-8?B?ZzFnYWVPbGlYakx0c2dsYXFwUG1JZFA0aFl6ZTlIMlI0RXpDdUFmVGQzK25L?= =?utf-8?B?emhZNnUrSW1OMmU0MUFHTTQvMGVUM2kxbU1Pc0w1R0t3di9uL25weENDcHV2?= =?utf-8?B?VWw5bEdJRFc5TnRFa3F4WTNaYndOMm5xVC92UEk5SUxGTk1jeDJxSHByWUxW?= =?utf-8?B?aDVTWVBXNEpWSFJFa2hhUlNCZ0NqMXp5Mm5DMmNwN1F0Y1NDVGpWYkdXWWo0?= =?utf-8?Q?AS9LfnHIePWlXtzj+5lsMW3vw?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5462a352-3032-4522-51df-08da874e3def X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2022 10:32:14.3577 (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: UcdL36Cv0E2iu+6VvhdD1OZNOcBFRcqt1mmvEItfjjgjr09PX9qUEaJCZcZCEY04cJLci9xh9aJhEhSBD9gGiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7473 X-Spam-Status: No, score=-3030.1 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 List-Id: PR gas/29524 In order to make MOVSL{,Q} behave similarly to MOVSB{W,L,Q} and MOVSW{L,Q} we need to defer parse_insn()'s emitting of errors unrelated to prefix parsing. Utilize i.error just like match_template() does. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -236,6 +236,8 @@ enum i386_error unsupported_with_intel_mnemonic, unsupported_syntax, unsupported, + unsupported_on_arch, + unsupported_64bit, invalid_sib_address, invalid_vsib_address, invalid_vector_register_set, @@ -4852,6 +4854,14 @@ md_assemble (char *line) { if (!copy) goto match_error; + if (i.error != no_error) + { + if (!i.suffix) + goto no_match; + /* No point in trying a 2nd pass - it'll only find the same suffix + again. */ + goto match_error; + } free (copy); return; } @@ -4944,14 +4954,23 @@ md_assemble (char *line) if (!mnem_suffix) { + no_match: pass1_err = i.error; pass1_mnem = current_templates->start->name; line = copy; copy = NULL; goto retry; } - free (copy); + + /* If a non-/only-64bit template (group) was found in pass 1, and if + _some_ template (group) was found in pass 2, squash pass 1's + error. */ + if (pass1_err == unsupported_64bit) + pass1_mnem = NULL; + match_error: + free (copy); + switch (pass1_mnem ? pass1_err : i.error) { default: @@ -4984,6 +5003,17 @@ md_assemble (char *line) as_bad (_("unsupported instruction `%s'"), pass1_mnem ? pass1_mnem : current_templates->start->name); return; + case unsupported_on_arch: + as_bad (_("`%s' is not supported on `%s%s'"), + pass1_mnem ? pass1_mnem : current_templates->start->name, + cpu_arch_name ? cpu_arch_name : default_arch, + cpu_sub_arch_name ? cpu_sub_arch_name : ""); + return; + case unsupported_64bit: + as_bad (_("`%s' is %s supported in 64-bit mode"), + pass1_mnem ? pass1_mnem : current_templates->start->name, + flag_code == CODE_64BIT ? _("not") : _("only")); + return; case invalid_sib_address: err_msg = _("invalid SIB address"); break; @@ -5600,16 +5630,13 @@ parse_insn (char *line, char *mnemonic) return l; } - if (!(supported & CPU_FLAGS_64BIT_MATCH)) - as_bad (flag_code == CODE_64BIT - ? _("`%s' is not supported in 64-bit mode") - : _("`%s' is only supported in 64-bit mode"), - current_templates->start->name); - else - as_bad (_("`%s' is not supported on `%s%s'"), - current_templates->start->name, - cpu_arch_name ? cpu_arch_name : default_arch, - cpu_sub_arch_name ? cpu_sub_arch_name : ""); + if (pass1) + { + if (supported & CPU_FLAGS_64BIT_MATCH) + i.error = unsupported_on_arch; + else + i.error = unsupported_64bit; + } return NULL; } --- a/gas/testsuite/gas/i386/movs.s +++ b/gas/testsuite/gas/i386/movs.s @@ -30,4 +30,10 @@ movs: .ifdef x86_64 movswq %ax,%rax movswq (%rax),%rax + + movsl %eax,%rax + movsl (%rax),%rax + + movslq %eax,%rax + movslq (%rax),%rax .endif --- a/gas/testsuite/gas/i386/movx64.l +++ b/gas/testsuite/gas/i386/movx64.l @@ -241,6 +241,46 @@ [ ]*[1-9][0-9]*[ ]+movswq %eax, %rcx [ ]*[1-9][0-9]*[ ]+movswq %rax, %rcx [ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %cl +[ ]*[1-9][0-9]*[ ]+movsl %ax, %cl +[ ]*[1-9][0-9]*[ ]+movsl %eax, %cl +[ ]*[1-9][0-9]*[ ]+movsl %rax, %cl +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %cx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %cx +[ ]*[1-9][0-9]*[ ]+movsl %eax, %cx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %cx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %eax, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %ecx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %rcx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %rcx +[ ]*[1-9][0-9]* \?\?\?\? 4863C8[ ]+movsl %eax, %rcx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %rcx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %cl +[ ]*[1-9][0-9]*[ ]+movslq %ax, %cl +[ ]*[1-9][0-9]*[ ]+movslq %eax, %cl +[ ]*[1-9][0-9]*[ ]+movslq %rax, %cl +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %cx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %cx +[ ]*[1-9][0-9]*[ ]+movslq %eax, %cx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %cx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %eax, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %ecx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %rcx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %rcx +[ ]*[1-9][0-9]* \?\?\?\? 4863C8[ ]+movslq %eax, %rcx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %rcx +[ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movzx: [ ]*[1-9][0-9]*[ ]+movzx %al, %cl [ ]*[1-9][0-9]*[ ]+movzx %ax, %cl --- a/gas/testsuite/gas/i386/movx64.s +++ b/gas/testsuite/gas/i386/movx64.s @@ -241,6 +241,46 @@ movsx: movswq %eax, %rcx movswq %rax, %rcx + movsl %al, %cl + movsl %ax, %cl + movsl %eax, %cl + movsl %rax, %cl + + movsl %al, %cx + movsl %ax, %cx + movsl %eax, %cx + movsl %rax, %cx + + movsl %al, %ecx + movsl %ax, %ecx + movsl %eax, %ecx + movsl %rax, %ecx + + movsl %al, %rcx + movsl %ax, %rcx + movsl %eax, %rcx + movsl %rax, %rcx + + movslq %al, %cl + movslq %ax, %cl + movslq %eax, %cl + movslq %rax, %cl + + movslq %al, %cx + movslq %ax, %cx + movslq %eax, %cx + movslq %rax, %cx + + movslq %al, %ecx + movslq %ax, %ecx + movslq %eax, %ecx + movslq %rax, %ecx + + movslq %al, %rcx + movslq %ax, %rcx + movslq %eax, %rcx + movslq %rax, %rcx + movzx: movzx %al, %cl movzx %ax, %cl --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -164,9 +164,7 @@ movbe, 0x0f38f0, None, CpuMovbe, D|Modrm // Move with sign extend. movsb, 0xfbe, None, Cpu386, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Reg8|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } movsw, 0xfbf, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg16|Unspecified|BaseIndex, Reg32|Reg64 } -// "movslq" must not be converted into "movsl" to avoid conflict with the -// "movsl" string move instruction. -movslq, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Size64, { Reg32|Dword|Unspecified|BaseIndex, Reg64 } +movsl, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg64 } movsx, 0xfbe, None, Cpu386, W|Modrm|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Reg16|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } movsx, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg32|Reg64 } movsxd, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg32|Reg64 } From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2053.outbound.protection.outlook.com [40.107.21.53]) by sourceware.org (Postfix) with ESMTPS id BA120384D188 for ; Fri, 26 Aug 2022 10:32:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BA120384D188 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nW8LFd5Jw+VjJDbdn85A7xFpWhT0dAnynph66nv8Av600c99eYY08L2DgM1lw1xtrwL6AYjZDUEf+7cyocEr1xlKT4+3fmg/vqYyJ/aEzkjtciNFO5nGFVFuxfjL/HHJAm25vKBjorDqi4cGCvXDKS1KphzHgidQM31JEyXYzVhuZelGJHJMw3vvocYGEdqoyF/LhqPYtbclN92VOR+zgGoIzlTRFSLcGppKHdrOxsSegPv/K31vfjlFj/YVsRh4lScfQflnUuVP2HggaQJDby2xpCkiheFwbKQa40bjQzvfRzS2e92sBB0nTL8mx+j29cV/lDyDRqwjVS9Di+TOBg== 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=wiwSN8exfTjf2gL2i4nM8enCECehDok9IrP6Qa+jRYc=; b=J+G7QkYIwc5UtKYs8jVZK9wm4CIviD9dM5e61s2TZPc0wBEVd6je2BgGt4o3UgncDwpJ8MjORcrBeZ1ab6cTr0lpdYXNlPg4GTbhNup6wlkYMNfNWMBdqYhyXvGnbPLtkI4Eo8b4JxJaij2vH1ID6MYAHqeaIAUmr559KJTpt7M2LyCX7yTE/MfdvzuUrVaagCUHFApADcPnVhATiOSvs8Lx9ucUTSVnukeFZCEvXO4vYPhdWAwdZcxWQmBoMYilBNkrOT8QFGh+p8wheKMtXo+nDEYNmSGt4t7PAvW7GuSWGjK7j4rgEn6nwXWH00HdibY1CqAecsCxqUddMqAjJg== 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 AM8PR04MB7473.eurprd04.prod.outlook.com (2603:10a6:20b:1d0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Fri, 26 Aug 2022 10:32:14 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2d5d:bae0:430f:70ad%4]) with mapi id 15.20.5566.015; Fri, 26 Aug 2022 10:32:14 +0000 Message-ID: Date: Fri, 26 Aug 2022 12:32:12 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: [PATCH v2 4/7] x86-64: further re-work insn/suffix recognition to also cover MOVSL Content-Language: en-US To: Binutils References: <4a27fbde-d2b2-e293-d09e-9709bc5b9792@suse.com> From: Jan Beulich In-Reply-To: <4a27fbde-d2b2-e293-d09e-9709bc5b9792@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AS9PR06CA0507.eurprd06.prod.outlook.com (2603:10a6:20b:49b::33) 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: 5462a352-3032-4522-51df-08da874e3def X-MS-TrafficTypeDiagnostic: AM8PR04MB7473:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bc/BT8ATYtyplZU+PUW4nxNRA9kKqe04aftQ4QEUC4ak/Tiw2euotAFIgpFr71cGKr2hOu9HwQvKBF2JgDABNiYXdBo7U8odW2IY8yzARYg8uPp7R+KCd7kKtpi7SPx5eK77ditOM94BFO5eV7LMJXRAd4ho9US69R+pGjkap5iMf1LH3C7Uj5b3lx8C/9z+/8wrVaJC2Q9IanC98r/EIhAm1XTwb9nrrT324jLVYqCdkqqkhXye4Xp7d1o4BoDlHIAijuJjBkNkRVDvVZRcIcqO+VKnesVB+Zwu2JtVntVkCKbQFV2y5zIYxDvwfgaHHmqEOaYe8EXfoa5tqxRzFKM9Ux51v0bbfn4GT8CWsTGEfscLo9KNMyxjPDBVTGtX/KjwVCtQcg68GNi9UY+l2VMSdPBlCiN2FHHtuxKUEI7ZDxtCShDiZuYGLIDT/aw7gDOGVxtrVKs31Fbhg/mfrv10QUIojUW+e+tcWTTt/koxvCOW6l50QtEAEMchuoiGOVYtgv+bfDXhrJ7hmUEeoEWfmicMJ8s9+riT7MAwI4zPnevzpD3AcJy7otnw8zsb5I8RtnYHyPE0R6ziWBWhvY2vU2KSSTZR50tHsi7402jD93hmsy5RQuNk9lxjU3fmNwtb86z+vK9GqIFuI+3GPbcFBCaA8xoVwNyWnlfqLyc/W8K6X6ILZVXZ2+IjBeEuftjBXUNDkCZczcaFH0qHVVIx6s5UxGHFqBF8f8TENl3rrADUQuCrZVOo8c8yoKvxa6kUdSRfn7oeAQ3tMbJCcJvwto/OJCZ05jblkbKUcis= 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)(346002)(39860400002)(376002)(136003)(396003)(366004)(83380400001)(6486002)(41300700001)(66946007)(2616005)(4326008)(66476007)(36756003)(186003)(66556008)(31686004)(8676002)(6512007)(31696002)(38100700002)(26005)(86362001)(5660300002)(6916009)(2906002)(8936002)(478600001)(316002)(6506007)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MTBsU0pkb2xDdGtlM0szNjRIb2NNR1dCQ21nd04zMG1qSUs5dDdQY2ZkOGVr?= =?utf-8?B?aUtwMDRpdU1rV01zcEp1QWxzQ1JldkhmVlkyWWw1TDJUMTA0czltQlprK3ly?= =?utf-8?B?M0hUUFZ3RDhIeHZ5bzIvcTM0ME9yTzNnRUtCUkNKcVI5VTRocWlJakphU29n?= =?utf-8?B?MFp2a3ZlcUgxZ2dadnVaM3YzVzVZNlhXYk9wRkdWVUdWaFBPbDFEK013czZl?= =?utf-8?B?aTVVREFOeXpJWEZqaFRSQ3kxWHBiQVZTb0dpeDMyakppOWxVZEdoWGtJNVhF?= =?utf-8?B?WlBjbkhaVzFxckhxOGMyNUhhMWJLQjNlQVVjU2RUbUp6RnA0bWNZeDJXY0hX?= =?utf-8?B?MXRDTVNGSDlNNVdCTk9paEFqYXIxVTNyUC8wQUFXUGJ5QlpCQ3NlTkxFMnJH?= =?utf-8?B?aFowR1ZSWWxCRmwydU00TmFzekl6aW5HRFZaWS83S25STlBzTGt4NjhCVEdG?= =?utf-8?B?dVlGd1d4MmNwdXhZNFFzWkZ2NUlqTWJNckRBOTA0RlRwQ3RNSWF0OWVCNXht?= =?utf-8?B?ZjcxUXJZZFd4ZmtEWnZJQlcxc0JnSW83UDNMdEo1UUdOVUdtUTZhazFYSWhV?= =?utf-8?B?OW8za1MzZ1owRitob2NEZmFCRWdOMkhkTEQrWE96cDhwaTZPeVpMZy85Vmpj?= =?utf-8?B?c3VNNDN0TXlhYUhHY1h0TW5zQXROZVpKVUJJVCtSeHhUeGROZTVTTjJsbVEr?= =?utf-8?B?MTJmOGJWcURUVk5CRkZBV0JaKzBuUk1EeGovMTdrRmtsb0FZaGJVdVBKWCt6?= =?utf-8?B?ZmJIUFlnVE0zdGZ1MGxjb0F6dXdnZHlxalkwSFdSajhvVUFIenJ0aVVKeE5v?= =?utf-8?B?TU1tSmkzNS8wUWF2d2JBaktncmJqbkNsalpsUHJVQVVMQnc1SXh4WGdBcTFk?= =?utf-8?B?UWVuQWJ0ZmkzOTcwRTd2VkJsS3VkQzYrQ2UwSnFnaDUzOEpXK1ZETlhDRzll?= =?utf-8?B?Ym8wK3RMY0Y2cVlBQzYvRnI0Vzg1S2U2Z2R6YytDR0NrOW9MS09aWmtjMzdu?= =?utf-8?B?c2w0TGxpNzRpNDBmM1FJbklJdi9YOWdQSEJqUzVpZVllSDhwTVh5ZFFWYlRQ?= =?utf-8?B?aisvRmVPa0ZDNzNxTjlBVDN1Vk1xTklVc0lSN0JyM2kwSlZBOFd4VUQvdUZB?= =?utf-8?B?ajdoUW93aHpkcWpoVjlIVUVBWlRuZW01c1FzVWdiTEk1T1BieXNTTmtOdzVv?= =?utf-8?B?QUE0QTBGdVdNQ2xCY21NOXg1S3lPay96Y0FZcGxVMHhVY0Q5aVN1MmFVY2Jh?= =?utf-8?B?V0NVYmlISVpIbFFleXFlbDNZNU9Od0NJUmJ6aGYxam1PL0E2QzNYMWhQbkNI?= =?utf-8?B?cEcwWjJ3VzFiK0gyZjlVZVZZWjZoazJTYmI1Znh6cExqNWFsQVFkV2JvdEF1?= =?utf-8?B?L0h0VW5BdjJkT21vSHJFbGt5dlB4dGxTd1VYcjFsbWlUMkx3QkozVWJaRjRJ?= =?utf-8?B?Snh5MUxBR2RITTVSemNscklKdm1NZ0tiMU1pSFlHT2xINHQ0RWJpcG5tM1hs?= =?utf-8?B?WTM5SnV2WE4vVy9WZGlyWWhQcG4rL3ZrdEJhYVdtOENOYlpYUHIyNG10cVhR?= =?utf-8?B?WmF5dC83Um9XZy9lVm1EY2lCSnhxYXg2V3FmL0h0QzFkakNNYlJXQlkzT09J?= =?utf-8?B?OGxXdUt2WGVzMzUvQzdqNUZnNmM1d0lCVnBXZzM0Rk5UbGp3bXZ5cktpMFdS?= =?utf-8?B?bnd3QmkxMWJVRlpJZWZQSHNZeG5NS1hxR01XWlprSVNheGJhOVFzeWFPRElP?= =?utf-8?B?OW1vYTY5TDZKbk5VYkEvZ2Y5aWpld3NlWkJrQ2w0NVR3NWQrbmVLWnJadUlP?= =?utf-8?B?aEdZWGQ4TWNjd1BUejloeFFIMjZGUVBBMytlcTVNYU1YTklUbVpyOUo1Qi9k?= =?utf-8?B?ZzFnYWVPbGlYakx0c2dsYXFwUG1JZFA0aFl6ZTlIMlI0RXpDdUFmVGQzK25L?= =?utf-8?B?emhZNnUrSW1OMmU0MUFHTTQvMGVUM2kxbU1Pc0w1R0t3di9uL25weENDcHV2?= =?utf-8?B?VWw5bEdJRFc5TnRFa3F4WTNaYndOMm5xVC92UEk5SUxGTk1jeDJxSHByWUxW?= =?utf-8?B?aDVTWVBXNEpWSFJFa2hhUlNCZ0NqMXp5Mm5DMmNwN1F0Y1NDVGpWYkdXWWo0?= =?utf-8?Q?AS9LfnHIePWlXtzj+5lsMW3vw?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5462a352-3032-4522-51df-08da874e3def X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2022 10:32:14.3577 (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: UcdL36Cv0E2iu+6VvhdD1OZNOcBFRcqt1mmvEItfjjgjr09PX9qUEaJCZcZCEY04cJLci9xh9aJhEhSBD9gGiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7473 X-Spam-Status: No, score=-3030.1 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: Fri, 26 Aug 2022 10:32:18 -0000 Message-ID: <20220826103212.nohfp-qX5AF7EbjsgTHTQbHWk0faNeo-0WjaKXtbLM8@z> PR gas/29524 In order to make MOVSL{,Q} behave similarly to MOVSB{W,L,Q} and MOVSW{L,Q} we need to defer parse_insn()'s emitting of errors unrelated to prefix parsing. Utilize i.error just like match_template() does. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -236,6 +236,8 @@ enum i386_error unsupported_with_intel_mnemonic, unsupported_syntax, unsupported, + unsupported_on_arch, + unsupported_64bit, invalid_sib_address, invalid_vsib_address, invalid_vector_register_set, @@ -4852,6 +4854,14 @@ md_assemble (char *line) { if (!copy) goto match_error; + if (i.error != no_error) + { + if (!i.suffix) + goto no_match; + /* No point in trying a 2nd pass - it'll only find the same suffix + again. */ + goto match_error; + } free (copy); return; } @@ -4944,14 +4954,23 @@ md_assemble (char *line) if (!mnem_suffix) { + no_match: pass1_err = i.error; pass1_mnem = current_templates->start->name; line = copy; copy = NULL; goto retry; } - free (copy); + + /* If a non-/only-64bit template (group) was found in pass 1, and if + _some_ template (group) was found in pass 2, squash pass 1's + error. */ + if (pass1_err == unsupported_64bit) + pass1_mnem = NULL; + match_error: + free (copy); + switch (pass1_mnem ? pass1_err : i.error) { default: @@ -4984,6 +5003,17 @@ md_assemble (char *line) as_bad (_("unsupported instruction `%s'"), pass1_mnem ? pass1_mnem : current_templates->start->name); return; + case unsupported_on_arch: + as_bad (_("`%s' is not supported on `%s%s'"), + pass1_mnem ? pass1_mnem : current_templates->start->name, + cpu_arch_name ? cpu_arch_name : default_arch, + cpu_sub_arch_name ? cpu_sub_arch_name : ""); + return; + case unsupported_64bit: + as_bad (_("`%s' is %s supported in 64-bit mode"), + pass1_mnem ? pass1_mnem : current_templates->start->name, + flag_code == CODE_64BIT ? _("not") : _("only")); + return; case invalid_sib_address: err_msg = _("invalid SIB address"); break; @@ -5600,16 +5630,13 @@ parse_insn (char *line, char *mnemonic) return l; } - if (!(supported & CPU_FLAGS_64BIT_MATCH)) - as_bad (flag_code == CODE_64BIT - ? _("`%s' is not supported in 64-bit mode") - : _("`%s' is only supported in 64-bit mode"), - current_templates->start->name); - else - as_bad (_("`%s' is not supported on `%s%s'"), - current_templates->start->name, - cpu_arch_name ? cpu_arch_name : default_arch, - cpu_sub_arch_name ? cpu_sub_arch_name : ""); + if (pass1) + { + if (supported & CPU_FLAGS_64BIT_MATCH) + i.error = unsupported_on_arch; + else + i.error = unsupported_64bit; + } return NULL; } --- a/gas/testsuite/gas/i386/movs.s +++ b/gas/testsuite/gas/i386/movs.s @@ -30,4 +30,10 @@ movs: .ifdef x86_64 movswq %ax,%rax movswq (%rax),%rax + + movsl %eax,%rax + movsl (%rax),%rax + + movslq %eax,%rax + movslq (%rax),%rax .endif --- a/gas/testsuite/gas/i386/movx64.l +++ b/gas/testsuite/gas/i386/movx64.l @@ -241,6 +241,46 @@ [ ]*[1-9][0-9]*[ ]+movswq %eax, %rcx [ ]*[1-9][0-9]*[ ]+movswq %rax, %rcx [ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %cl +[ ]*[1-9][0-9]*[ ]+movsl %ax, %cl +[ ]*[1-9][0-9]*[ ]+movsl %eax, %cl +[ ]*[1-9][0-9]*[ ]+movsl %rax, %cl +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %cx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %cx +[ ]*[1-9][0-9]*[ ]+movsl %eax, %cx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %cx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %eax, %ecx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %ecx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movsl %al, %rcx +[ ]*[1-9][0-9]*[ ]+movsl %ax, %rcx +[ ]*[1-9][0-9]* \?\?\?\? 4863C8[ ]+movsl %eax, %rcx +[ ]*[1-9][0-9]*[ ]+movsl %rax, %rcx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %cl +[ ]*[1-9][0-9]*[ ]+movslq %ax, %cl +[ ]*[1-9][0-9]*[ ]+movslq %eax, %cl +[ ]*[1-9][0-9]*[ ]+movslq %rax, %cl +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %cx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %cx +[ ]*[1-9][0-9]*[ ]+movslq %eax, %cx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %cx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %eax, %ecx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %ecx +[ ]*[1-9][0-9]*[ ]* +[ ]*[1-9][0-9]*[ ]+movslq %al, %rcx +[ ]*[1-9][0-9]*[ ]+movslq %ax, %rcx +[ ]*[1-9][0-9]* \?\?\?\? 4863C8[ ]+movslq %eax, %rcx +[ ]*[1-9][0-9]*[ ]+movslq %rax, %rcx +[ ]*[1-9][0-9]*[ ]* [ ]*[1-9][0-9]*[ ]+movzx: [ ]*[1-9][0-9]*[ ]+movzx %al, %cl [ ]*[1-9][0-9]*[ ]+movzx %ax, %cl --- a/gas/testsuite/gas/i386/movx64.s +++ b/gas/testsuite/gas/i386/movx64.s @@ -241,6 +241,46 @@ movsx: movswq %eax, %rcx movswq %rax, %rcx + movsl %al, %cl + movsl %ax, %cl + movsl %eax, %cl + movsl %rax, %cl + + movsl %al, %cx + movsl %ax, %cx + movsl %eax, %cx + movsl %rax, %cx + + movsl %al, %ecx + movsl %ax, %ecx + movsl %eax, %ecx + movsl %rax, %ecx + + movsl %al, %rcx + movsl %ax, %rcx + movsl %eax, %rcx + movsl %rax, %rcx + + movslq %al, %cl + movslq %ax, %cl + movslq %eax, %cl + movslq %rax, %cl + + movslq %al, %cx + movslq %ax, %cx + movslq %eax, %cx + movslq %rax, %cx + + movslq %al, %ecx + movslq %ax, %ecx + movslq %eax, %ecx + movslq %rax, %ecx + + movslq %al, %rcx + movslq %ax, %rcx + movslq %eax, %rcx + movslq %rax, %rcx + movzx: movzx %al, %cl movzx %ax, %cl --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -164,9 +164,7 @@ movbe, 0x0f38f0, None, CpuMovbe, D|Modrm // Move with sign extend. movsb, 0xfbe, None, Cpu386, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Reg8|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } movsw, 0xfbf, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg16|Unspecified|BaseIndex, Reg32|Reg64 } -// "movslq" must not be converted into "movsl" to avoid conflict with the -// "movsl" string move instruction. -movslq, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Size64, { Reg32|Dword|Unspecified|BaseIndex, Reg64 } +movsl, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg64 } movsx, 0xfbe, None, Cpu386, W|Modrm|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Reg16|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } movsx, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg32|Reg64 } movsxd, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg32|Unspecified|BaseIndex, Reg32|Reg64 }