diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-10-07 11:26:41 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-10-07 11:26:41 -0700 |
commit | 65feb5ae3376d02c6ac89b6e58a3e802da6a222e (patch) | |
tree | f2e144399bbed8030eb7ad10ef2020bd2eb6a9b7 /test/imul.asm | |
parent | 37c6d166d266b04fca3c384d00ad7576282ee583 (diff) | |
download | nasm-65feb5ae3376d02c6ac89b6e58a3e802da6a222e.tar.gz |
Add missing IMUL pattern: reg64,imm8
Make "imul rax,byte 5" work as expected.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'test/imul.asm')
-rw-r--r-- | test/imul.asm | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/test/imul.asm b/test/imul.asm new file mode 100644 index 00000000..5b0a8eac --- /dev/null +++ b/test/imul.asm @@ -0,0 +1,89 @@ +;Testname=test; Arguments=-fbin -oimul.bin; Files=stdout stderr imul.bin + +%macro test 1-2 5 + bits %1 + +%undef MEM +%if %1 == 16 + %define MEM [di] +%elif %1 == 32 + %define MEM [edi] +%elif %1 == 64 + %define MEM [rdi] +%endif + + imul al + imul byte MEM + imul ax + imul word MEM + imul eax + imul dword MEM +%if %1 == 64 + imul rdx + imul qword MEM +%endif + + imul ax,cx + imul ax,MEM + imul ax,word MEM + imul eax,ecx + imul eax,MEM + imul eax,dword MEM +%if %1 == 64 + imul rax,rcx + imul rax,MEM + imul rax,qword MEM +%endif + + imul ax,cx,%2 + imul ax,cx,byte %2 + imul ax,MEM,%2 + imul ax,word MEM,%2 + imul eax,ecx,%2 + imul eax,ecx,byte %2 + imul eax,MEM,%2 + imul eax,dword MEM,%2 +%if %1 == 64 + imul rax,rcx,%2 + imul rax,rcx,byte %2 + imul rax,MEM,%2 + imul rax,qword MEM,%2 +%endif + + imul ax,%2 + imul ax,byte %2 + imul eax,%2 + imul eax,byte %2 +%if %1 == 64 + imul rax,%2 +; imul rax,byte %2 ; ERROR +%endif + + imul ax,cx,0x1234 + imul ax,MEM,0x1234 + imul ax,word MEM,0x1234 + imul eax,ecx,0x12345678 + imul eax,MEM,0x12345678 + imul eax,dword MEM,0x12345678 +%if %1 == 64 + imul rax,rcx,0x12345678 + imul rax,MEM,0x12345678 + imul rax,qword MEM,0x12345678 +%endif + + imul ax,0x1234 + imul eax,0x12345678 +%if %1 == 64 + imul rax,0x12345678 +%endif +%endmacro + + test 16 + test 32 + test 64 + +%ifdef WARN + test 16,0x999 + test 32,0x999999 + test 64,0x999999999 +%endif |