From b87a996ef06603f98c570d66c3429cf123a89f7e Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Sun, 11 Nov 2018 12:50:28 +0300 Subject: [PATCH] test: nasm-t -- Add imul Signed-off-by: Cyrill Gorcunov --- travis/test/imul-nowarn.bin.t | Bin 0 -> 652 bytes travis/test/imul-warn.bin.t | Bin 0 -> 1365 bytes travis/test/imul-warn.stderr | 76 +++++++++++++++++++++++ travis/test/imul.asm | 114 ++++++++++++++++++++++++++++++++++ travis/test/imul.json | 20 ++++++ 5 files changed, 210 insertions(+) create mode 100644 travis/test/imul-nowarn.bin.t create mode 100644 travis/test/imul-warn.bin.t create mode 100644 travis/test/imul-warn.stderr create mode 100644 travis/test/imul.asm create mode 100644 travis/test/imul.json diff --git a/travis/test/imul-nowarn.bin.t b/travis/test/imul-nowarn.bin.t new file mode 100644 index 0000000000000000000000000000000000000000..c7fbb984528a33082a4962188dd0bb348466a5ed GIT binary patch literal 652 zcmbu6!3o1K3`GOQ=osi8A(srH2|9v7WPxtg73^(H2Z(QJ|BnncE$yYCFDWv%-*>jM zO|{f1))MP9-tu@0h=>ki4QoCz0wbbxvBxMeVw2_NY{3;RUoXo!TIh-;P7)_;-q*me zybl&!IC{siE-XBT0S9ztO;}6&R<`*dp20phSV5J;0kXVE1$=T?fD1JIcIHM;>}b-G zbDI#-Gl~nzWWN#+{kv0-KffYC zL7{8&+}z7{Ouhy4oxDt1#4+XS+6;P3AUWrEEeObKnQ!{IwKXEW_75<#8Z35|=)+$hRE_hFvQu7Dn#<>uJ_U{-H% pUj literal 0 HcmV?d00001 diff --git a/travis/test/imul-warn.stderr b/travis/test/imul-warn.stderr new file mode 100644 index 00000000..ba0b5c19 --- /dev/null +++ b/travis/test/imul-warn.stderr @@ -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] \ No newline at end of file diff --git a/travis/test/imul.asm b/travis/test/imul.asm new file mode 100644 index 00000000..bfb6e054 --- /dev/null +++ b/travis/test/imul.asm @@ -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 diff --git a/travis/test/imul.json b/travis/test/imul.json new file mode 100644 index 00000000..b5b9d9e8 --- /dev/null +++ b/travis/test/imul.json @@ -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" } + ] + } +]