0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-10-10 00:25:06 -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:
H. Peter Anvin
2024-08-04 16:21:52 -07:00
parent de84c3dcc0
commit 19a6fca486
2 changed files with 40 additions and 1 deletions

View File

@@ -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