| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- ;Testname=nowarn; Arguments=-fbin -oimul.bin; Files=stdout stderr imul.bin
- ;Testname=warn; Arguments=-DWARN -fbin -oimul.bin; Files=stdout stderr imul.bin
- %macro test 1-3 5 -2
- 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
- %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
- imul ax,cx,0xfffe
- imul ax,MEM,0xfffe
- imul ax,word MEM,0xfffe
- imul ax,cx,0xfe
- imul ax,MEM,0xfe
- imul ax,word MEM,0xfe
- imul eax,ecx,0xfffffffe
- imul eax,MEM,0xfffffffe
- imul eax,dword MEM,0xfffffffe
- imul eax,ecx,0xfffe
- imul eax,MEM,0xfffe
- imul eax,dword MEM,0xfffe
- %if %1 == 64
- imul rax,rcx,%3
- imul rax,MEM,%3
- imul rax,qword MEM,%3
- imul rax,rcx,0xfffe
- imul rax,MEM,0xfffe
- imul rax,qword MEM,0xfffe
- %endif
- imul ax,0xfffe
- imul eax,0xfffffffe
- %if %1 == 64
- imul rax,%3
- %endif
- %endmacro
- test 16
- test 32
- test 64
- %ifdef WARN
- test 16,0x999
- test 32,0x999999
- test 64,0x999999999,0xfffffffe
- %endif
|