mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-07-24 10:25:42 -04:00
insns.dat: add MOVSX -> CBW/CWDE/CDQE optimiztion; add MOVZX[D]
Add MOVSX[D] -> CBW/CWDE/CDQE optimization patterns when the suitable form of the AX register are referenced. Add MOVZX reg64,rm32 pattern which converts to a 32-bit MOV. Add MOVZXD reg64,rm32 alias pattern for consistency. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
parent
de84c3dcc0
commit
19a6fca486
33
test/movszx.asm
Normal file
33
test/movszx.asm
Normal file
@ -0,0 +1,33 @@
|
||||
bits 64
|
||||
|
||||
movsx ax,al
|
||||
movsx eax,al
|
||||
movsx eax,ax
|
||||
movsx rax,al
|
||||
movsx rax,ax
|
||||
movsx rax,eax
|
||||
movsxd rax,eax
|
||||
|
||||
movsx cx,cl
|
||||
movsx ecx,cl
|
||||
movsx ecx,cx
|
||||
movsx rcx,cl
|
||||
movsx rcx,cx
|
||||
movsx rcx,ecx
|
||||
movsxd rcx,ecx
|
||||
|
||||
movzx ax,al
|
||||
movzx eax,al
|
||||
movzx eax,ax
|
||||
movzx rax,al
|
||||
movzx rax,ax
|
||||
movzx rax,eax
|
||||
movzxd rax,eax
|
||||
|
||||
movzx cx,cl
|
||||
movzx ecx,cl
|
||||
movzx ecx,cx
|
||||
movzx rcx,cl
|
||||
movzx rcx,cx
|
||||
movzx rcx,ecx
|
||||
movzxd rcx,ecx
|
@ -881,19 +881,25 @@ MOVSD void [ o32 a5] 386,NOAPX
|
||||
MOVSQ void [ o64 a5] X86_64,LONG,NOAPX
|
||||
MOVSW void [ o16 a5] 8086,NOAPX
|
||||
MOVSX reg16,mem [rm: o16 0f be /r] 386,SB
|
||||
MOVSX reg_ax,reg_al [--: o16 98] 8086,OPT,ND
|
||||
MOVSX reg16,reg8 [rm: o16 0f be /r] 386
|
||||
MOVSX reg32,rm8 [rm: o32 0f be /r] 386
|
||||
MOVSX reg_eax,reg_ax [--: o32 98] 386,OPT,ND
|
||||
MOVSX reg32,rm16 [rm: o32 0f bf /r] 386
|
||||
MOVSX reg64,rm8 [rm: o64 0f be /r] X86_64,LONG
|
||||
MOVSX reg64,rm16 [rm: o64 0f bf /r] X86_64,LONG
|
||||
MOVSXD reg_rax,reg_eax [--: o64 98] X86_64,LONG,OPT,ND
|
||||
MOVSXD reg64,rm32 [rm: o64 63 /r] X86_64,LONG
|
||||
MOVSX reg64,rm32 [rm: o64 63 /r] X86_64,LONG,ND
|
||||
MOVSX reg_rax,reg_eax [--: o64 98] X86_64,LONG,ND
|
||||
MOVSX reg64,rm32 [rm: o64 63 /r] X86_64,LONG,OPT,ND
|
||||
MOVZX reg16,mem [rm: o16 0f b6 /r] 386,SB
|
||||
MOVZX reg16,reg8 [rm: o16 0f b6 /r] 386
|
||||
MOVZX reg32,rm8 [rm: o32 0f b6 /r] 386
|
||||
MOVZX reg32,rm16 [rm: o32 0f b7 /r] 386
|
||||
MOVZX reg64,rm8 [rm: o64 0f b6 /r] X86_64,LONG
|
||||
MOVZX reg64,rm16 [rm: o64 0f b7 /r] X86_64,LONG
|
||||
MOVZXD reg64,rm32 [rm: o32 8b /r] X86_64,LONG,ND
|
||||
MOVZX reg64,rm32 [rm: o32 8b /r] X86_64,LONG,ND
|
||||
MUL rm8 [m: f6 /4] 8086
|
||||
MUL rm16 [m: o16 f7 /4] 8086
|
||||
MUL rm32 [m: o32 f7 /4] 386
|
||||
|
Loading…
x
Reference in New Issue
Block a user