aboutsummaryrefslogtreecommitdiffstats
path: root/test/mpx-64.asm
blob: d17762211c268ae78e623570138810e9b915af2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
;Testname=mpx-64; Arguments=-felf64 -ompx-64.o -O0; Files=stdout stderr mpx-64.o
BITS 64

	bndmk bnd1, [r11]
	bndmk bnd1, [rax]
	bndmk bnd1, [0x399]
	bndmk bnd1, [r9+0x3]
	bndmk bnd1, [rax+0x3]
	bndmk bnd1, [3,1*r12]
	bndmk bnd1, [rax+rcx]
	bndmk bnd1, [r11+1*rax+0x3]
	bndmk bnd1, [rbx+1*r9+0x3]

	; bndmov
	bndmov bnd1, [r11]
	bndmov bnd1, [rax]
	bndmov bnd1, [0x399]
	bndmov bnd2, [r9+0x3]
	bndmov bnd2, [rax+0x3]
	bndmov bnd0, [1*r12+0x3]
	bndmov bnd2, [rax+rdx]
	bndmov bnd1, [r11+1*rax+0x3]
	bndmov bnd1, [rbx+1*r9+0x3]
	bndmov bnd0, bnd2

	bndmov [r11], bnd1
	bndmov [rax], bnd1
	bndmov [0x399], bnd1
	bndmov [r9+0x3], bnd2
	bndmov [rax+0x3], bnd2
	bndmov [1*r12+0x3], bnd0
	bndmov [rax+rdx], bnd2
	bndmov [r11+1*rax+0x3], bnd1
	bndmov [rbx+1*r9+0x3], bnd1
	bndmov bnd2, bnd0

	; bndcl
	bndcl bnd1, [r11]
	bndcl bnd1, [rax]
	bndcl bnd1, r11
	bndcl bnd1, rcx
	bndcl bnd1, [0x399]
	bndcl bnd1, [r9+0x3]
	bndcl bnd1, [rax+0x3]
	bndcl bnd1, [1*r12+0x3]
	bndcl bnd1, [rax+rcx]
	bndcl bnd1, [r11+1*rax+0x3]
	bndcl bnd1, [rbx+1*r9+0x3]

	; bndcu
	bndcu bnd1, [r11]
	bndcu bnd1, [rax]
	bndcu bnd1, r11
	bndcu bnd1, rcx
	bndcu bnd1, [0x399]
	bndcu bnd1, [r9+0x3]
	bndcu bnd1, [rax+0x3]
	bndcu bnd1, [1*r12+0x3]
	bndcu bnd1, [rax+rcx]
	bndcu bnd1, [r11+1*rax+0x3]
	bndcu bnd1, [rbx+1*r9+0x3]

	; bndcn
	bndcn bnd1, [r11]
	bndcn bnd1, [rax]
	bndcn bnd1, r11
	bndcn bnd1, rcx
	bndcn bnd1, [0x399]
	bndcn bnd1, [r9+0x3]
	bndcn bnd1, [rax+0x3]
	bndcn bnd1, [1*r9+0x3]
	bndcn bnd1, [rax+rcx]
	bndcn bnd1, [r11+1*rax+0x3]
	bndcn bnd1, [rbx+1*r9+0x3]

	; bndstx
	; next 5 lines should be parsed same
	bndstx [rax+0x3,rbx], bnd0	; NASM - split EA
	bndstx [rax+rbx*1+0x3], bnd0	; GAS
	bndstx [rax+rbx+3], bnd0	; GAS
	bndstx [rax+0x3], bnd0, rbx	; ICC-1
	bndstx [rax+0x3], rbx, bnd0	; ICC-2

	; next 5 lines should be parsed same
	bndstx [,rcx*1], bnd2		; NASM
	bndstx [0,rcx*1], bnd2		; NASM
	bndstx [0], bnd2, rcx		; ICC-1
	bndstx [0], rcx, bnd2		; ICC-2
	bndstx [rcx*1], bnd2		; GAS - rcx is encoded as index only when it is mib

	; next 3 lines should be parsed same
	bndstx [3,1*r12], bnd2		; NASM
	bndstx [1*r12+3], bnd2		; GAS
	bndstx [3], r12, bnd2		; ICC

	bndstx [r12+0x399], bnd3
	bndstx [r11+0x1234], bnd1
	bndstx [rbx+0x1234], bnd2
	bndstx [rdx], bnd1

	; bndldx
	bndldx bnd0, [rax+rbx*1+0x3]
	bndldx bnd2, [rbx+rdx+3]
	bndldx bnd3, [r12+0x399]
	bndldx bnd1, [r11+0x1234]
	bndldx bnd2, [rbx+0x1234]
	bndldx bnd2, [1*rbx+3]
	bndldx bnd2, [1*r12+3]
	bndldx bnd1, [rdx]

	; bnd
	bnd ret
	bnd call      foo
	bnd jmp       foo	; when it becomes a Jb form - short jmp (eb),
				; bnd prefix is silently dropped
	bnd jmp       near 0	; near jmp (opcode e9)
;	bnd jmp       short 0	; explicit short jmp (opcode eb) : error
	bnd jno       foo

foo:	bnd ret