From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2064.outbound.protection.outlook.com [40.107.22.64]) by sourceware.org (Postfix) with ESMTPS id A323538582BE for ; Wed, 5 Oct 2022 07:24:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A323538582BE 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=PwzM2X7deRE19w9bBJ0Q9BCQsJBrlvYwgC3hA5sDIwGTzEIF1zdzcFSYDK07Q6XwvBt9oOMQOviiW+9NmqkbtlkEHb/CEj74fS+++M6vCZNl1j7TY2Y56+5Kw+IpVkNXyL9g7N//ZLCcPaB/KzIi1yu6HHLiMfvkahTmJqRxueWn9TP5DclAquaEJjDU3iqt1YopDVWyEchcp6gM9VHyRIQt/Tvsv05iMgKwwkO219NY9Pq9+mErqTlk/LLhKSs9gFz2iAtNeMEUt3k3ZR6dyHBN/cjZVav2H2t5wI2Lxs7fAINREAQIqcrXht7U6HdrfsHJwx4+ka/OfmmEb1582w== 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=PnY6+BAmSjTGR/zPEu1AWeS5Zx1lXZA/nSO76OlRM+k=; b=ijX3/aW1LcYZv13Ndd+XEyzhcncMLBk1FiPyQcpq4f6zGI/YyX9HN/LOJC/4EvnyPGQQjQot3aEREAOO2w7KHEBP+4Df3jco+ooEzQmhmj9pXYlXudEVdcihw3SGJbuyZNqBUO4ycUbalcNoImpwCzcDtFNVBrFjsuWlUJ6X68wPE3QrLEPxHGx8oaBrgt02OEZz1UHkEvHp55UwNZhOH8YPk+WfqlsUUIAxK1f6Mop3BEXjTvi1ZXo2nIuEs8ea8WzmNnop7UTBWD7nKLLIIF9PTM7e0VKCbtcNIyZqj2RzSfQTy8kvFd/zcLwy+2lUb0IDh471VCXHAxZAAUQ5mg== 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=PnY6+BAmSjTGR/zPEu1AWeS5Zx1lXZA/nSO76OlRM+k=; b=CcSrTch5Ux6LPSHO//oYRvhf5YRJjfikI9emzohrXDmwIHkHreudyolwjMs5doEteOtrXiOZjA2FJvX/6fVPvETYGBlLyUluBgYG6bneLB7qndjD641AfpEYGUANgRDnZjPvWqp6xX2rOk9WkgL2f19MkPyJsBURiuJGc90tWHZRiI2Eeg1XIxKk4kAhGwTpJMIa1cEvIfUUqCMCzWaGqsPm0BkUdB0CjFsmbt11V1ft5Y2NII6Wua3C2M42SzpoGZU3pOVdN+bEezbl0k0dkCs7SjHTKqolVNJ7yXKba2UU6FdEKCTUkk00h1nTTi9kktWBwQeLqb44nEYIPxHniQ== 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 AS8PR04MB7751.eurprd04.prod.outlook.com (2603:10a6:20b:2a2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.32; Wed, 5 Oct 2022 07:24:23 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2459:15ae:e6cb:218a%7]) with mapi id 15.20.5676.031; Wed, 5 Oct 2022 07:24:23 +0000 Message-ID: Date: Wed, 5 Oct 2022 09:24:20 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: [PATCH v3 4/7] x86-64: further re-work insn/suffix recognition to also cover MOVSL Content-Language: en-US To: Binutils References: <20e2773a-2e47-869b-1900-709f8ad4cd6b@suse.com> Cc: "H.J. Lu" From: Jan Beulich In-Reply-To: <20e2773a-2e47-869b-1900-709f8ad4cd6b@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0042.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:48::9) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB7751:EE_ X-MS-Office365-Filtering-Correlation-Id: 80416b2c-78ee-40e7-aa93-08daa6a29f42 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nHb43tdpmy2iyF/INmjy/DTB5wxJyW9HeDSV0kmuC0+3YJVCq9hAfTF6Z9vni51RfozLiG8DpITFWzaMk35HlEP68FkP+ymfj+6mNeR7rclCBQnx6f1X2UF/urhRsGk4Uu1KUxSPU3Kv4r7lh6GNUpA893SU99scKfQjirgKdx8hds0H2DxKz77kxJ2MB+yfnUnjUvOr7m4rXz4oES+dQYndpIalJoLppwZd5fECDnooRbQBfiU58qfPGw5MzKrFDX6I+vYGH/62VdruZ5ju7i0lFxgFpIpoJa4ZVLY+n0mHj3DjTyt+rY+Y+3zsQrGl6xJcpFElHrjEz8PEgpH8AA7W4qq0+B3p41E+Qtdp2kL//EGCRGIm/WO+s4nAdg7nhf6BRr8ulGVuvmOcyvAqmYqUK6HvH4W/iMcpShzrBCVCUYlbXPIIkfUsSxYkMybzoRQG8RuZDMTFnNF8VExusHyW0F4OXiqcxKWy9M1nmWlWtf3EL78nD1QSfOCF+KyIlFnkaqRTnbf6z/AstGjCalMOsRczUTL5I7TLDyFLUZW+oGD6yQKBoOc9v/jtVNpOEydnP613u8H+8a/J5PQT9fPsJRTRMm+BKg41mhnGa9rdz6H6I3Ka9PJwy+ny00movbW0fH2WyC8FrDQY2Fq2KALLYa1XsX1l3t825tf1OCLcKFF6ImNq9XlDB1N8mdX84x5U1HFenXvZr8SnarzwgZEkIsw1LJodiPGIHuWjbn2Rm0X+qlrQZ9H0PTl4tvn6Yiq/K8mZegLXX6eHKYPH2Y+D+41QAlHoklxJLUY/Hcw= 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:(13230022)(376002)(136003)(346002)(366004)(396003)(39860400002)(451199015)(31686004)(36756003)(31696002)(2906002)(5660300002)(2616005)(83380400001)(38100700002)(186003)(6506007)(6512007)(6486002)(478600001)(26005)(66946007)(66476007)(4326008)(316002)(86362001)(8676002)(66556008)(41300700001)(8936002)(6916009)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RDNpaC9KamRGaFlWNFRPUHpJeXpJTmc0bDV4dkZPZ1hZeWV5bHBRYytvYzN6?= =?utf-8?B?cDQ0VDB0NWRNSmE3VkVBSHZqeG9UVHc3a3BnTHRyMWtVb1BOMnd1ZzVQQXNP?= =?utf-8?B?YzJQZTE2MGYzeHV0cndOMnRZZGpwRWpDZjJWYjYzRWwvL2J2WThPS1U5UnRi?= =?utf-8?B?aElwMWs1cFhtRXhjWUgzb25xODBnL3BWZXBnRzFSK0ZVa0hzM095OWgrSUxV?= =?utf-8?B?cC9jajlkMlV5L1NyQTkrMmZUcFppWU1ZaGtUNUEwcm1HMERyb0VjUk1tOFVk?= =?utf-8?B?MG00bExuYkpkb3cyS2p2b1dmdWdncFFCWkhIKzIweGZLa1ZBNSsyTFhyUWo4?= =?utf-8?B?bzlzL2hFUllwVjJYMGtxNmtHVHJZMnlTNGQxOFVBWmxNNFpCZHpqQ01OaVhm?= =?utf-8?B?YVBVeHZzNkJDNGQvakVTUE43YXp6a3hXTEpFV0JMc01UeXdWYjZwZ1IyV0F0?= =?utf-8?B?TTRGNStUdW5tRnhpTW1SRWRXbVk1TkQzaE0ybHcwWU9KOXR5MktjM3dlQXpG?= =?utf-8?B?SWw0SG05U01ROVNDSjdIa2JDUnpjVnI5WTdqZG1yZGs0THl4SDg1VjJaelVa?= =?utf-8?B?cDBpVTBIbFBZKzUzQmNJWDRZckVZUEZwMHQ4UjQ4dUx1aEdNMjluZzVweSts?= =?utf-8?B?ZkdiVTBhTDB6RmtGWTlwVkJGUDNlbEpsRHFtVXBEdktkZnlHbjJQSzg2Mjcv?= =?utf-8?B?eDJtZzcwTnd5SFlSSk92WlNmL01yMEt5cDBEYlFJdHN1STAzakkxN2xSKzFa?= =?utf-8?B?WFZVbGFKY1QrOHdIZ29CQ0lLUk1MNXFUZjZSRlE4bjNjMUR0Sm5vVVNsZnVa?= =?utf-8?B?MEJ1VUlLQXFmV2lhLzFhOGc0UDlpMDZLQTA4TzhleFlCOGZSQkdITWJlWHJ2?= =?utf-8?B?NVRCcTUxSHJNbWZRK2szYTBIS3lCUlpYOWh0ZGRUWlhBRjlUN1ZJVVJUS3R0?= =?utf-8?B?elB2SzhJYWtaZlJNRnhyS2l6dVBCVUF3bHMwU0tCOFdCSEU0VXJPZ1ZIaEJG?= =?utf-8?B?bEQ5Sk9BSzYyUE5DWkVlNXhVQUZTcGRZZ0M3WGJmR3BLR1FwUERGSytlR0J2?= =?utf-8?B?QVl1MHp4TVZNSHl4WUNwblhjeHZrajEyWVhzUHh5ZFdRRlJnMDBFTlRnSjd3?= =?utf-8?B?S1Uvc0VPaE1nRzU5WlNnNnhFdnJHdGx3QkZhSDdCdWpYRmNVT1JySHhHc0ps?= =?utf-8?B?NGxVL3J2Y3d6cytWbkFUdU9WVGJjMEYvT28xdHg3SksrMjQ0dWpPQjBML04w?= =?utf-8?B?VGhhVmk4Z090eWVOZ2ZkT0VjVkxqY1o3ZDBVVElpM0ZzTnVhK3hHeFZyUi9v?= =?utf-8?B?UWFRSlhKZWVqcU5yNk1CS2VmR1JCemNLVjZ5VE9zRHlCcTJDOC8wb0dVYUY5?= =?utf-8?B?RE40dk8wRkYySnBmQlZxNjJ6OUNSM3VVWEdVWmtCWVpvN1JOV0k1dE92bkJa?= =?utf-8?B?R29VRXlVMGY5UFlLZ0N5R0RxVFdiNHFWdjd2WTNOZGdoaWl1NGpSSXY2dW00?= =?utf-8?B?ZEhIYnk2eVhVN0czV1EzaWV0dkUwamYxMkE4V2RoQTgzdEt4Q2VxMU5sQjlu?= =?utf-8?B?YzlzN3BnVzM4NzNUMXREY0hkd0wyWUlvOVFuYi9mc2w5RWd1QWRmUUc5TFNr?= =?utf-8?B?eUJsVk5vREYrd1cyUzd5SmJCWG1YeUFmNUpFekxhM0dJZVVPOGdjOEY2QU4y?= =?utf-8?B?VnJOQmMrMFJpVVd1bjJsa1BERVQzTG1mb1lITmwyVEFnVkYwLy9sck5ZMjFw?= =?utf-8?B?SHQ5OXdtMzg0Z3VtSUJzU091SGxuaEYwdDFpM0N3dXRJMVBlSVkvNWRQL2tY?= =?utf-8?B?czR6Q0h6SWZVOFBrK1hrUWplbEQ3aE9PZ0R6SVRkQmhMVUszWEhxeUEyeWdk?= =?utf-8?B?V1JCYXpyN0M4UERXUDBmcTljekVVb1d5K1FjTEROczhNWU9TWmorQTVrN3Na?= =?utf-8?B?Q2xESzl6ZG1paDMrNTcvOHgxckdwS2NTZlk2OGJFZUR3cnZqV01Xb3cydHk5?= =?utf-8?B?YjRKV1NlQmYvVnkxbFRzTU13eHorY0ZIdU1aVjl3Zk5ocldDVXZza2NGblR4?= =?utf-8?B?Q1BSY2kyRE9xL1NjTHhETWJPRkZDTGNLQVFFVFJBNzNaZEtFOURjSFhuQVIv?= =?utf-8?Q?NKzxAqsoWoch7PlSEdqaq57V4?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80416b2c-78ee-40e7-aa93-08daa6a29f42 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2022 07:24:22.9298 (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: ASaNB+cCHXhIcu3PdACcG1lSB9D9nl6a2Xp+DqAJbMvA4zAMcGgctJXAvgcYHfnNCDA/xFAi9XVudRBMk0zkvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7751 X-Spam-Status: No, score=-3029.9 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 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. --- v3: Re-base over changes to earlier patches (incl use of Pass2). --- 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, @@ -4849,6 +4851,15 @@ md_assemble (char *line) { if (pass1_mnem != NULL) goto match_error; + if (i.error != no_error) + { + gas_assert (current_templates != NULL); + if (current_templates->start->opcode_modifier.pass2 && !i.suffix) + goto no_match; + /* No point in trying a 2nd pass - it'll only find the same suffix + again. */ + goto match_error; + } return; } if (current_templates->start->opcode_modifier.pass2) @@ -4948,12 +4959,21 @@ md_assemble (char *line) { line = copy; copy = NULL; + no_match: pass1_err = i.error; pass1_mnem = current_templates->start->name; 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: @@ -4986,6 +5006,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; @@ -5601,16 +5632,13 @@ parse_insn (const char *line, char *mnem 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|Pass2, { Reg8|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } movsw, 0xfbf, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_sSuf|No_ldSuf|Pass2, { 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|Pass2, { 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 }