[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