Skip to content

Commit fc82905

Browse files
author
H. Peter Anvin
committed
test: add some additional test cases
Some test cases, mostly from bug reports. Signed-off-by: H. Peter Anvin <[email protected]>
1 parent 1e965e3 commit fc82905

File tree

10 files changed

+159
-0
lines changed

10 files changed

+159
-0
lines changed

test/baddq.asm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
%assign foo 'abcdefgh'
2+
dq foo

test/br3392711.asm

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
;
2+
; In br33927711 we've not been expanding %?? and %*?? correctly
3+
;
4+
section .text
5+
6+
%define label(prefix, suffix) prefix %+ suffix
7+
8+
label_1:
9+
mov eax, label(%??, _1)
10+
label_2:
11+
mov eax, label(%?, _2)
12+
13+
%define label0123456789a0123456789a0123456789a0123456789a0123456789a0123456789a0123456789(prefix, suffix) prefix %+ suffix
14+
15+
label0123456789a0123456789a0123456789a0123456789a0123456789a0123456789a0123456789_1:
16+
mov eax, label0123456789a0123456789a0123456789a0123456789a0123456789a0123456789a0123456789(%??, _1)
17+
label0123456789a0123456789a0123456789a0123456789a0123456789a0123456789a0123456789_2:
18+
mov eax, label0123456789a0123456789a0123456789a0123456789a0123456789a0123456789a0123456789(%??, _2)

test/join.asm

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
%define join(sep) ''
2+
%define _join(sep,str) sep,str
3+
%define join(sep,s1,sn+) %strcat(s1, %map(_join:(sep) %, sn))
4+
5+
db join(':')
6+
db join(':','a')
7+
db join(':','a','b')
8+
db join(':','a','b','c')
9+
db join(':','a','b','c','d')

test/mapi.asm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
%define what(&x,i,n) %str(i+1),"/",%str(n),"=", x, `\n`
2+
db %map(what:(%mapi,%mapn),foo,bar,baz)

test/memleak.asm

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
%imacro call 1.nolist
2+
%push
3+
%assign %$size 2
4+
%assign %$isreg 0
5+
%assign %$exit 0
6+
%rep 2
7+
%ifn %$exit
8+
%if %$size == 2
9+
%define %$regnames "ax cx dx bx sp bp si di "
10+
%elif %$size == 4
11+
%define %$regnames "eax ecx edx ebx esp ebp esi edi "
12+
%endif
13+
%assign %$index 0
14+
%rep 8
15+
%ifn %$exit
16+
%substr %$reg %$regnames %$index * 4 + 1, 4
17+
%deftok %$reg %$reg
18+
%ifnempty %$reg
19+
%ifidni %$reg, %1
20+
%assign %$isreg %$size
21+
%assign %$exit 1
22+
%exitrep
23+
%endif
24+
%endif
25+
%endif
26+
%assign %$index %$index + 1
27+
%endrep
28+
%if %$exit
29+
%exitrep
30+
%endif
31+
%assign %$size %$size * 2
32+
%endif
33+
%endrep
34+
35+
%assign %$ismulti 0
36+
%assign %$ismem 0
37+
%defstr %$string %1
38+
%strlen %$length %$string
39+
%assign %$ii 0
40+
%rep %$length
41+
%substr %$point %$string %$ii + 1, 1
42+
%if %$point == 32 || %$point == 9
43+
%assign %$ismulti 1
44+
%endif
45+
%ifidn %$point, '['
46+
%assign %$ismem 1
47+
%endif
48+
%assign %$ii %$ii + 1
49+
%endrep
50+
%pop
51+
%endmacro
52+
53+
54+
%ifndef _OUTER
55+
%assign _OUTER 100
56+
%endif
57+
%ifndef _INNER
58+
%assign _INNER 50
59+
%endif
60+
61+
%rep _OUTER
62+
call cx
63+
call near [0]
64+
call .
65+
%rep _INNER
66+
call label
67+
call labelfoo
68+
call labelbar
69+
call labelbaz
70+
%endrep
71+
%endrep

test/omferr.asm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
section _TEXT class=CODE
2+
nop
3+
nop
4+
nop
5+
jmp far $

test/sm3-64.asm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
;Testname=sm3-64; Arguments=-felf64 -osm3-64.o -O0; Files=stdout stderr sm3-64.o
2+
BITS 64
3+
vsm3rnds2 xmm1, xmm2, xmm0, 0
4+
vsm3msg1 xmm1, xmm2, xmm3
5+
vsm3msg2 xmm1, xmm2, xmm3

test/sm3.asm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
;Testname=sm3; Arguments=-felf -osm3.o -O0; Files=stdout stderr sm3.o
2+
BITS 32
3+
vsm3rnds2 xmm1, xmm2, xmm0, 0
4+
vsm3msg1 xmm1, xmm2, xmm3
5+
vsm3msg2 xmm1, xmm2, xmm3

test/sm4-64.asm

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
;Testname=sm4-64; Arguments=-felf -osm4-64.o -O0; Files=stdout stderr sm4-64.o
2+
BITS 64
3+
vsm4rnds4 xmm1, xmm2, xmm0
4+
vsm4rnds4 xmm2, xmm3, [rax]
5+
vsm4rnds4 xmm3, xmm4, [rax+0x12]
6+
vsm4rnds4 xmm4, xmm5, [rax+rbx*2]
7+
8+
vsm4rnds4 ymm1, ymm2, ymm0
9+
vsm4rnds4 ymm2, ymm3, [rax]
10+
vsm4rnds4 ymm3, ymm4, [rax+0x12]
11+
vsm4rnds4 ymm4, ymm5, [rax+rbx*2]
12+
13+
vsm4key4 xmm1, xmm2, xmm0
14+
vsm4key4 xmm2, xmm3, [rax]
15+
vsm4key4 xmm3, xmm4, [rax+0x12]
16+
vsm4key4 xmm4, xmm5, [rax+rbx*2]
17+
18+
vsm4key4 ymm1, ymm2, ymm0
19+
vsm4key4 ymm2, ymm3, [rax]
20+
vsm4key4 ymm3, ymm4, [rax+0x12]
21+
vsm4key4 ymm4, ymm5, [rax+rbx*2]

test/sm4.asm

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
;Testname=sm4; Arguments=-felf -osm4.o -O0; Files=stdout stderr sm4.o
2+
BITS 32
3+
vsm4rnds4 xmm1, xmm2, xmm0
4+
vsm4rnds4 xmm2, xmm3, [eax]
5+
vsm4rnds4 xmm3, xmm4, [eax+0x12]
6+
vsm4rnds4 xmm4, xmm5, [eax+ebx*2]
7+
8+
vsm4rnds4 ymm1, ymm2, ymm0
9+
vsm4rnds4 ymm2, ymm3, [eax]
10+
vsm4rnds4 ymm3, ymm4, [eax+0x12]
11+
vsm4rnds4 ymm4, ymm5, [eax+ebx*2]
12+
13+
vsm4key4 xmm1, xmm2, xmm0
14+
vsm4key4 xmm2, xmm3, [eax]
15+
vsm4key4 xmm3, xmm4, [eax+0x12]
16+
vsm4key4 xmm4, xmm5, [eax+ebx*2]
17+
18+
vsm4key4 ymm1, ymm2, ymm0
19+
vsm4key4 ymm2, ymm3, [eax]
20+
vsm4key4 ymm3, ymm4, [eax+0x12]
21+
vsm4key4 ymm4, ymm5, [eax+ebx*2]

0 commit comments

Comments
 (0)