[nasm:nasm-2.16.xx] test: add some additional test cases
nasm-bot for H. Peter Anvin
hpa at zytor.com
Mon Jan 29 17:27:06 PST 2024
Commit-ID: fc82905b3c65dfc1270c1e6472288d81997facb1
Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=fc82905b3c65dfc1270c1e6472288d81997facb1
Author: H. Peter Anvin <hpa at zytor.com>
AuthorDate: Mon, 29 Jan 2024 17:25:23 -0800
Committer: H. Peter Anvin <hpa at zytor.com>
CommitDate: Mon, 29 Jan 2024 17:25:23 -0800
test: add some additional test cases
Some test cases, mostly from bug reports.
Signed-off-by: H. Peter Anvin <hpa at zytor.com>
---
test/baddq.asm | 2 ++
{travis/test => test}/br3392711.asm | 0
test/join.asm | 9 +++++
test/mapi.asm | 2 ++
test/memleak.asm | 71 +++++++++++++++++++++++++++++++++++++
test/omferr.asm | 5 +++
test/sm3-64.asm | 5 +++
test/sm3.asm | 5 +++
test/sm4-64.asm | 21 +++++++++++
test/sm4.asm | 21 +++++++++++
10 files changed, 141 insertions(+)
diff --git a/test/baddq.asm b/test/baddq.asm
new file mode 100644
index 00000000..3c9f2972
--- /dev/null
+++ b/test/baddq.asm
@@ -0,0 +1,2 @@
+%assign foo 'abcdefgh'
+ dq foo
diff --git a/travis/test/br3392711.asm b/test/br3392711.asm
similarity index 100%
copy from travis/test/br3392711.asm
copy to test/br3392711.asm
diff --git a/test/join.asm b/test/join.asm
new file mode 100644
index 00000000..63b8f9f8
--- /dev/null
+++ b/test/join.asm
@@ -0,0 +1,9 @@
+%define join(sep) ''
+%define _join(sep,str) sep,str
+%define join(sep,s1,sn+) %strcat(s1, %map(_join:(sep) %, sn))
+
+ db join(':')
+ db join(':','a')
+ db join(':','a','b')
+ db join(':','a','b','c')
+ db join(':','a','b','c','d')
diff --git a/test/mapi.asm b/test/mapi.asm
new file mode 100644
index 00000000..a0f37e98
--- /dev/null
+++ b/test/mapi.asm
@@ -0,0 +1,2 @@
+%define what(&x,i,n) %str(i+1),"/",%str(n),"=", x, `\n`
+ db %map(what:(%mapi,%mapn),foo,bar,baz)
diff --git a/test/memleak.asm b/test/memleak.asm
new file mode 100644
index 00000000..998771b9
--- /dev/null
+++ b/test/memleak.asm
@@ -0,0 +1,71 @@
+ %imacro call 1.nolist
+%push
+ %assign %$size 2
+ %assign %$isreg 0
+ %assign %$exit 0
+ %rep 2
+ %ifn %$exit
+ %if %$size == 2
+ %define %$regnames "ax cx dx bx sp bp si di "
+ %elif %$size == 4
+ %define %$regnames "eax ecx edx ebx esp ebp esi edi "
+ %endif
+ %assign %$index 0
+ %rep 8
+ %ifn %$exit
+ %substr %$reg %$regnames %$index * 4 + 1, 4
+ %deftok %$reg %$reg
+ %ifnempty %$reg
+ %ifidni %$reg, %1
+ %assign %$isreg %$size
+ %assign %$exit 1
+ %exitrep
+ %endif
+ %endif
+ %endif
+ %assign %$index %$index + 1
+ %endrep
+ %if %$exit
+ %exitrep
+ %endif
+ %assign %$size %$size * 2
+ %endif
+ %endrep
+
+ %assign %$ismulti 0
+ %assign %$ismem 0
+ %defstr %$string %1
+ %strlen %$length %$string
+ %assign %$ii 0
+ %rep %$length
+ %substr %$point %$string %$ii + 1, 1
+ %if %$point == 32 || %$point == 9
+ %assign %$ismulti 1
+ %endif
+ %ifidn %$point, '['
+ %assign %$ismem 1
+ %endif
+ %assign %$ii %$ii + 1
+ %endrep
+%pop
+ %endmacro
+
+
+%ifndef _OUTER
+ %assign _OUTER 100
+%endif
+%ifndef _INNER
+ %assign _INNER 50
+%endif
+
+%rep _OUTER
+call cx
+call near [0]
+call .
+ %rep _INNER
+call label
+call labelfoo
+call labelbar
+call labelbaz
+ %endrep
+%endrep
diff --git a/test/omferr.asm b/test/omferr.asm
new file mode 100644
index 00000000..8ad2b481
--- /dev/null
+++ b/test/omferr.asm
@@ -0,0 +1,5 @@
+ section _TEXT class=CODE
+ nop
+ nop
+ nop
+ jmp far $
diff --git a/test/sm3-64.asm b/test/sm3-64.asm
new file mode 100644
index 00000000..0d155f1e
--- /dev/null
+++ b/test/sm3-64.asm
@@ -0,0 +1,5 @@
+;Testname=sm3-64; Arguments=-felf64 -osm3-64.o -O0; Files=stdout stderr sm3-64.o
+BITS 64
+ vsm3rnds2 xmm1, xmm2, xmm0, 0
+ vsm3msg1 xmm1, xmm2, xmm3
+ vsm3msg2 xmm1, xmm2, xmm3
diff --git a/test/sm3.asm b/test/sm3.asm
new file mode 100644
index 00000000..69fe1be8
--- /dev/null
+++ b/test/sm3.asm
@@ -0,0 +1,5 @@
+;Testname=sm3; Arguments=-felf -osm3.o -O0; Files=stdout stderr sm3.o
+BITS 32
+ vsm3rnds2 xmm1, xmm2, xmm0, 0
+ vsm3msg1 xmm1, xmm2, xmm3
+ vsm3msg2 xmm1, xmm2, xmm3
diff --git a/test/sm4-64.asm b/test/sm4-64.asm
new file mode 100644
index 00000000..aafa93b1
--- /dev/null
+++ b/test/sm4-64.asm
@@ -0,0 +1,21 @@
+;Testname=sm4-64; Arguments=-felf -osm4-64.o -O0; Files=stdout stderr sm4-64.o
+BITS 64
+ vsm4rnds4 xmm1, xmm2, xmm0
+ vsm4rnds4 xmm2, xmm3, [rax]
+ vsm4rnds4 xmm3, xmm4, [rax+0x12]
+ vsm4rnds4 xmm4, xmm5, [rax+rbx*2]
+
+ vsm4rnds4 ymm1, ymm2, ymm0
+ vsm4rnds4 ymm2, ymm3, [rax]
+ vsm4rnds4 ymm3, ymm4, [rax+0x12]
+ vsm4rnds4 ymm4, ymm5, [rax+rbx*2]
+
+ vsm4key4 xmm1, xmm2, xmm0
+ vsm4key4 xmm2, xmm3, [rax]
+ vsm4key4 xmm3, xmm4, [rax+0x12]
+ vsm4key4 xmm4, xmm5, [rax+rbx*2]
+
+ vsm4key4 ymm1, ymm2, ymm0
+ vsm4key4 ymm2, ymm3, [rax]
+ vsm4key4 ymm3, ymm4, [rax+0x12]
+ vsm4key4 ymm4, ymm5, [rax+rbx*2]
diff --git a/test/sm4.asm b/test/sm4.asm
new file mode 100644
index 00000000..8bdf50e9
--- /dev/null
+++ b/test/sm4.asm
@@ -0,0 +1,21 @@
+;Testname=sm4; Arguments=-felf -osm4.o -O0; Files=stdout stderr sm4.o
+BITS 32
+ vsm4rnds4 xmm1, xmm2, xmm0
+ vsm4rnds4 xmm2, xmm3, [eax]
+ vsm4rnds4 xmm3, xmm4, [eax+0x12]
+ vsm4rnds4 xmm4, xmm5, [eax+ebx*2]
+
+ vsm4rnds4 ymm1, ymm2, ymm0
+ vsm4rnds4 ymm2, ymm3, [eax]
+ vsm4rnds4 ymm3, ymm4, [eax+0x12]
+ vsm4rnds4 ymm4, ymm5, [eax+ebx*2]
+
+ vsm4key4 xmm1, xmm2, xmm0
+ vsm4key4 xmm2, xmm3, [eax]
+ vsm4key4 xmm3, xmm4, [eax+0x12]
+ vsm4key4 xmm4, xmm5, [eax+ebx*2]
+
+ vsm4key4 ymm1, ymm2, ymm0
+ vsm4key4 ymm2, ymm3, [eax]
+ vsm4key4 ymm3, ymm4, [eax+0x12]
+ vsm4key4 ymm4, ymm5, [eax+ebx*2]
More information about the Nasm-commits
mailing list