test: nasm-t -- Add imul

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This commit is contained in:
Cyrill Gorcunov 2018-11-11 12:50:28 +03:00
parent bfe17213e0
commit b87a996ef0
5 changed files with 210 additions and 0 deletions

Binary file not shown.

BIN
travis/test/imul-warn.bin.t Normal file

Binary file not shown.

View File

@ -0,0 +1,76 @@
./travis/test/imul.asm:111: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:37: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:111: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:41: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:111: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:52: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:111: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:54: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:112: warning: word data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:36: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:112: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:37: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:112: warning: word data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:38: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:112: warning: word data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:39: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:112: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:41: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:112: warning: word data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:51: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:112: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:52: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:112: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:54: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: word data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:36: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:37: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: word data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:38: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: word data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:39: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: dword data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:40: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:41: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: dword data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:42: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: dword data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:43: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed dword immediate exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:45: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: dword data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:45: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:46: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed dword immediate exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:47: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: dword data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:47: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed dword immediate exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:48: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: dword data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:48: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: word data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:51: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:52: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: dword data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:53: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:54: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed dword immediate exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:56: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: dword data exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:56: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed byte value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:57: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed dword value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:91: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed dword value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:92: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed dword value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:93: ... from macro `test' defined here [-w+number-overflow]
./travis/test/imul.asm:113: warning: signed dword value exceeds bounds [-w+number-overflow]
./travis/test/imul.asm:102: ... from macro `test' defined here [-w+number-overflow]

114
travis/test/imul.asm Normal file
View File

@ -0,0 +1,114 @@
%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

20
travis/test/imul.json Normal file
View File

@ -0,0 +1,20 @@
[
{
"description": "Test warnings on imul operation (nowarn)",
"id": "imul",
"format": "bin",
"source": "imul.asm",
"target": [
{ "output": "imul-nowarn.bin" }
]
},
{
"description": "Test warnings on imul operation (warn)",
"ref": "imul",
"option": "-DWARN",
"target": [
{ "output": "imul-warn.bin" },
{ "stderr": "imul-warn.stderr" }
]
}
]