From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com [IPv6:2a00:1450:4864:20::231]) by sourceware.org (Postfix) with ESMTPS id 486AF3857427 for ; Tue, 25 Oct 2022 17:11:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 486AF3857427 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lj1-x231.google.com with SMTP id bs14so17924675ljb.9 for ; Tue, 25 Oct 2022 10:11:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JltAg9d1aixO5b0fBs4t8ickNprsfpJJxxIHtfErazQ=; b=WsnC7cydiNqHeu9ytszsW1PCng8Gsh4oTWaqxjpzP6ACMC7mQQJs5oHrmden7hkL4H QHNgXZ1ynXAZVCwIbaKqRSXbS5Igm+HxkAkalpLWH2agQxT9njLt+cpkJmh0jDCB2RpP TCdCXvz4N2wSOpBoNE5MKzJjUMiBdBzPjJ8KBirPPv8CxqO9rNaF7gQtd4eCLbuvvOdY beTYOhqUsnpMz7WZ+sAVrpKftMPo89Nvf8yzGcXw8PW8sE2uDbZBoT5StYjvNwdACmwr etgta7N3kokTfE6N6Vuj35NyTqmASUfMDt49cX2+YaUFLGDnMh7cgU7GFoj1kZGArky5 83EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JltAg9d1aixO5b0fBs4t8ickNprsfpJJxxIHtfErazQ=; b=fZDMMPFrbhf5VAc6ijYrw4cTKbI6FcXw9Zwku/uBBWk62ksGKPDZutqCTBNWnTnWeQ ITSYDWYOAVRJEwgR/DemOELMspVG8iDGp7tTttUTxiegqsDdBYbS+OHVVguTFZxUHYHj v30lO1FppyEQ5ky0rd8ZgsKDaZaum0e+V/KYFqu2Nk/aOTsH/e4cx3Iu7ADuhypkg38w HimZWCBN4UVyfhVzm50wlDPprye9hi9vAflSiVyYrvXsNnY36Enag96idPH6pGPumZjq TYLlNsEINQVoqTfWZOx4AeZAe4BJUdPRB/xg/EP378VfRQhqqLT1l1Z3mz0PXA0TvoBI pvvA== X-Gm-Message-State: ACrzQf2yITbu2JDXjbjZfKqTMmXKBGgCA1bXEnW/TGWdVJowGAFIcyR/ HLcC4f3jfefoOEGcja8ZnpyntnfS4SpdkgO0d6p1guHe X-Google-Smtp-Source: AMsMyM5nhuEVbiGGK1IkaNQVSk2MzOEBNs7m2tqmesmURV7pSBjgTVTD0jgEaQICm/TwRvC/Pr8Af7WvBrh0Q5CMbfg= X-Received: by 2002:a05:651c:1947:b0:277:452:23a with SMTP id bs7-20020a05651c194700b002770452023amr6071985ljb.479.1666717888423; Tue, 25 Oct 2022 10:11:28 -0700 (PDT) MIME-Version: 1.0 References: <06ff83d4-4633-a07b-70e5-a8e049981dd4@suse.com> In-Reply-To: <06ff83d4-4633-a07b-70e5-a8e049981dd4@suse.com> From: "H.J. Lu" Date: Tue, 25 Oct 2022 10:10:52 -0700 Message-ID: Subject: Re: [PATCH v5 8/8] x86: further re-work insn/suffix recognition to also cover MOVSX To: Jan Beulich Cc: Binutils Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-3017.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,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: On Tue, Oct 25, 2022 at 12:29 AM Jan Beulich wrote: > > PR gas/29524 > > Having templates with a suffix explicitly present has always been > quirky. After prior adjustment all that's left to also eliminate the I prefer keeping the current MOVS behavior. Please submit a new patch set without MOVS changes. > anomaly from move-with-sign-extend is to consolidate the insn templates > (and extend testsuite coverage). > --- > v5: Split off from earlier patch, merged with prior patch dealing with > just x86-64's MOVSL. > > --- a/gas/testsuite/gas/i386/i386.exp > +++ b/gas/testsuite/gas/i386/i386.exp > @@ -73,6 +73,7 @@ if [gas_32_check] then { > run_dump_test "amd" > run_dump_test "katmai" > run_dump_test "jump" > + run_dump_test "movs32" > run_dump_test "movz32" > run_dump_test "relax-1" > run_dump_test "relax-2" > @@ -804,6 +805,7 @@ if [gas_64_check] then { > run_dump_test "x86-64-segovr" > run_list_test "x86-64-inval-seg" "-al" > run_dump_test "x86-64-branch" > + run_dump_test "movs64" > run_dump_test "movz64" > run_dump_test "x86-64-relax-1" > run_dump_test "svme64" > --- /dev/null > +++ b/gas/testsuite/gas/i386/movs.s > @@ -0,0 +1,39 @@ > + .text > +movs: > + movsb %al,%ax > + movsb (%eax),%ax > + movsb %al,%eax > + movsb (%eax),%eax > +.ifdef x86_64 > + movsb %al,%rax > + movsb (%rax),%rax > +.endif > + > + movsbw %al,%ax > + movsbw (%eax),%ax > + movsbl %al,%eax > + movsbl (%eax),%eax > +.ifdef x86_64 > + movsbq %al,%rax > + movsbq (%rax),%rax > +.endif > + > + movsw %ax,%eax > + movsw (%eax),%eax > +.ifdef x86_64 > + movsw %ax,%rax > + movsw (%rax),%rax > +.endif > + > + movswl %ax,%eax > + movswl (%eax),%eax > +.ifdef x86_64 > + movswq %ax,%rax > + movswq (%rax),%rax > + > + movsl %eax,%rax > + movsl (%rax),%rax > + > + movslq %eax,%rax > + movslq (%rax),%rax > +.endif > --- /dev/null > +++ b/gas/testsuite/gas/i386/movs32.d > @@ -0,0 +1,22 @@ > +#objdump: -dw > +#source: movs.s > +#name: x86 mov with sign-extend (32-bit object) > + > +.*: +file format .* > + > +Disassembly of section .text: > + > +0+ : > +[ ]*[a-f0-9]+: 66 0f be c0 * movsbw %al,%ax > +[ ]*[a-f0-9]+: 66 0f be 00 * movsbw \(%eax\),%ax > +[ ]*[a-f0-9]+: 0f be c0 * movsbl %al,%eax > +[ ]*[a-f0-9]+: 0f be 00 * movsbl \(%eax\),%eax > +[ ]*[a-f0-9]+: 66 0f be c0 * movsbw %al,%ax > +[ ]*[a-f0-9]+: 66 0f be 00 * movsbw \(%eax\),%ax > +[ ]*[a-f0-9]+: 0f be c0 * movsbl %al,%eax > +[ ]*[a-f0-9]+: 0f be 00 * movsbl \(%eax\),%eax > +[ ]*[a-f0-9]+: 0f bf c0 * movswl %ax,%eax > +[ ]*[a-f0-9]+: 0f bf 00 * movswl \(%eax\),%eax > +[ ]*[a-f0-9]+: 0f bf c0 * movswl %ax,%eax > +[ ]*[a-f0-9]+: 0f bf 00 * movswl \(%eax\),%eax > +#pass > --- /dev/null > +++ b/gas/testsuite/gas/i386/movs64.d > @@ -0,0 +1,30 @@ > +#objdump: -dw > +#source: movs.s > +#name: x86 mov with sign-extend (64-bit object) > + > +.*: +file format .* > + > +Disassembly of section .text: > + > +0+ : > +[ ]*[a-f0-9]+: 66 0f be c0 * movsbw %al,%ax > +[ ]*[a-f0-9]+: 67 66 0f be 00 * movsbw \(%eax\),%ax > +[ ]*[a-f0-9]+: 0f be c0 * movsbl %al,%eax > +[ ]*[a-f0-9]+: 67 0f be 00 * movsbl \(%eax\),%eax > +[ ]*[a-f0-9]+: 48 0f be c0 * movsbq %al,%rax > +[ ]*[a-f0-9]+: 48 0f be 00 * movsbq \(%rax\),%rax > +[ ]*[a-f0-9]+: 66 0f be c0 * movsbw %al,%ax > +[ ]*[a-f0-9]+: 67 66 0f be 00 * movsbw \(%eax\),%ax > +[ ]*[a-f0-9]+: 0f be c0 * movsbl %al,%eax > +[ ]*[a-f0-9]+: 67 0f be 00 * movsbl \(%eax\),%eax > +[ ]*[a-f0-9]+: 48 0f be c0 * movsbq %al,%rax > +[ ]*[a-f0-9]+: 48 0f be 00 * movsbq \(%rax\),%rax > +[ ]*[a-f0-9]+: 0f bf c0 * movswl %ax,%eax > +[ ]*[a-f0-9]+: 67 0f bf 00 * movswl \(%eax\),%eax > +[ ]*[a-f0-9]+: 48 0f bf c0 * movswq %ax,%rax > +[ ]*[a-f0-9]+: 48 0f bf 00 * movswq \(%rax\),%rax > +[ ]*[a-f0-9]+: 0f bf c0 * movswl %ax,%eax > +[ ]*[a-f0-9]+: 67 0f bf 00 * movswl \(%eax\),%eax > +[ ]*[a-f0-9]+: 48 0f bf c0 * movswq %ax,%rax > +[ ]*[a-f0-9]+: 48 0f bf 00 * movswq \(%rax\),%rax > +#pass > --- a/gas/testsuite/gas/i386/movx16.l > +++ b/gas/testsuite/gas/i386/movx16.l > @@ -41,11 +41,11 @@ > [ ]*[1-9][0-9]*[ ]+movsb %ax, %cl > [ ]*[1-9][0-9]*[ ]+movsb %eax, %cl > [ ]*[1-9][0-9]*[ ]* > -[ ]*[1-9][0-9]*[ ]+movsb %al, %cx > +[ ]*[1-9][0-9]* \?\?\?\? 0FBEC8[ ]+movsb %al, %cx > [ ]*[1-9][0-9]*[ ]+movsb %ax, %cx > [ ]*[1-9][0-9]*[ ]+movsb %eax, %cx > [ ]*[1-9][0-9]*[ ]* > -[ ]*[1-9][0-9]*[ ]+movsb %al, %ecx > +[ ]*[1-9][0-9]* \?\?\?\? 660FBEC8[ ]+movsb %al, %ecx > [ ]*[1-9][0-9]*[ ]+movsb %ax, %ecx > [ ]*[1-9][0-9]*[ ]+movsb %eax, %ecx > [ ]*[1-9][0-9]*[ ]* > @@ -82,7 +82,7 @@ > [ ]*[1-9][0-9]*[ ]+movsw %eax, %cx > [ ]*[1-9][0-9]*[ ]* > [ ]*[1-9][0-9]*[ ]+movsw %al, %ecx > -[ ]*[1-9][0-9]*[ ]+movsw %ax, %ecx > +[ ]*[1-9][0-9]* \?\?\?\? 660FBFC8[ ]+movsw %ax, %ecx > [ ]*[1-9][0-9]*[ ]+movsw %eax, %ecx > [ ]*[1-9][0-9]*[ ]* > [ ]*[1-9][0-9]*[ ]+movswl %al, %cl > --- a/gas/testsuite/gas/i386/movx32.l > +++ b/gas/testsuite/gas/i386/movx32.l > @@ -41,11 +41,11 @@ > [ ]*[1-9][0-9]*[ ]+movsb %ax, %cl > [ ]*[1-9][0-9]*[ ]+movsb %eax, %cl > [ ]*[1-9][0-9]*[ ]* > -[ ]*[1-9][0-9]*[ ]+movsb %al, %cx > +[ ]*[1-9][0-9]* \?\?\?\? 660FBEC8[ ]+movsb %al, %cx > [ ]*[1-9][0-9]*[ ]+movsb %ax, %cx > [ ]*[1-9][0-9]*[ ]+movsb %eax, %cx > [ ]*[1-9][0-9]*[ ]* > -[ ]*[1-9][0-9]*[ ]+movsb %al, %ecx > +[ ]*[1-9][0-9]* \?\?\?\? 0FBEC8[ ]+movsb %al, %ecx > [ ]*[1-9][0-9]*[ ]+movsb %ax, %ecx > [ ]*[1-9][0-9]*[ ]+movsb %eax, %ecx > [ ]*[1-9][0-9]*[ ]* > @@ -82,7 +82,7 @@ > [ ]*[1-9][0-9]*[ ]+movsw %eax, %cx > [ ]*[1-9][0-9]*[ ]* > [ ]*[1-9][0-9]*[ ]+movsw %al, %ecx > -[ ]*[1-9][0-9]*[ ]+movsw %ax, %ecx > +[ ]*[1-9][0-9]* \?\?\?\? 0FBFC8[ ]+movsw %ax, %ecx > [ ]*[1-9][0-9]*[ ]+movsw %eax, %ecx > [ ]*[1-9][0-9]*[ ]* > [ ]*[1-9][0-9]*[ ]+movswl %al, %cl > --- a/gas/testsuite/gas/i386/movx64.l > +++ b/gas/testsuite/gas/i386/movx64.l > @@ -106,17 +106,17 @@ > [ ]*[1-9][0-9]*[ ]+movsb %eax, %cl > [ ]*[1-9][0-9]*[ ]+movsb %rax, %cl > [ ]*[1-9][0-9]*[ ]* > -[ ]*[1-9][0-9]*[ ]+movsb %al, %cx > +[ ]*[1-9][0-9]* \?\?\?\? 660FBEC8[ ]+movsb %al, %cx > [ ]*[1-9][0-9]*[ ]+movsb %ax, %cx > [ ]*[1-9][0-9]*[ ]+movsb %eax, %cx > [ ]*[1-9][0-9]*[ ]+movsb %rax, %cx > [ ]*[1-9][0-9]*[ ]* > -[ ]*[1-9][0-9]*[ ]+movsb %al, %ecx > +[ ]*[1-9][0-9]* \?\?\?\? 0FBEC8[ ]+movsb %al, %ecx > [ ]*[1-9][0-9]*[ ]+movsb %ax, %ecx > [ ]*[1-9][0-9]*[ ]+movsb %eax, %ecx > [ ]*[1-9][0-9]*[ ]+movsb %rax, %ecx > [ ]*[1-9][0-9]*[ ]* > -[ ]*[1-9][0-9]*[ ]+movsb %al, %rcx > +[ ]*[1-9][0-9]* \?\?\?\? 480FBEC8[ ]+movsb %al, %rcx > [ ]*[1-9][0-9]*[ ]+movsb %ax, %rcx > [ ]*[1-9][0-9]*[ ]+movsb %eax, %rcx > [ ]*[1-9][0-9]*[ ]+movsb %rax, %rcx > @@ -192,12 +192,12 @@ > [ ]*[1-9][0-9]*[ ]+movsw %rax, %cx > [ ]*[1-9][0-9]*[ ]* > [ ]*[1-9][0-9]*[ ]+movsw %al, %ecx > -[ ]*[1-9][0-9]*[ ]+movsw %ax, %ecx > +[ ]*[1-9][0-9]* \?\?\?\? 0FBFC8[ ]+movsw %ax, %ecx > [ ]*[1-9][0-9]*[ ]+movsw %eax, %ecx > [ ]*[1-9][0-9]*[ ]+movsw %rax, %ecx > [ ]*[1-9][0-9]*[ ]* > [ ]*[1-9][0-9]*[ ]+movsw %al, %rcx > -[ ]*[1-9][0-9]*[ ]+movsw %ax, %rcx > +[ ]*[1-9][0-9]* \?\?\?\? 480FBFC8[ ]+movsw %ax, %rcx > [ ]*[1-9][0-9]*[ ]+movsw %eax, %rcx > [ ]*[1-9][0-9]*[ ]+movsw %rax, %rcx > [ ]*[1-9][0-9]*[ ]* > @@ -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 > @@ -162,14 +162,9 @@ mov, 0xf24, None, Cpu386|CpuNo64, D|RegM > movbe, 0x0f38f0, None, CpuMovbe, D|Modrm|No_bSuf|No_sSuf|No_ldSuf, { Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } > > // Move with sign extend. > -// "movsbl" & "movsbw" must not be unified into "movsb" to avoid > -// conflict with the "movs" string move instruction. > -movsbl, 0xfbe, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Byte|Unspecified|BaseIndex, Reg32 } > -movsbw, 0xfbe, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg8|Byte|Unspecified|BaseIndex, Reg16 } > -movswl, 0xfbf, None, Cpu386, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16|Word|Unspecified|BaseIndex, Reg32 } > -movsbq, 0xfbe, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Size64, { Reg8|Byte|Unspecified|BaseIndex, Reg64 } > -movswq, 0xfbf, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Size64, { Reg16|Word|Unspecified|BaseIndex, Reg64 } > -movslq, 0x63, None, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Size64, { Reg32|Dword|Unspecified|BaseIndex, Reg64 } > +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 } > +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 } > -- H.J.