Support Intel MPX
[platform/upstream/binutils.git] / gas / testsuite / gas / i386 / mpx.s
1 # MPX instructions
2         .allow_index_reg
3         .text
4
5         ### bndmk
6         bndmk (%eax), %bnd1
7         bndmk (0x399), %bnd1
8         bndmk 0x3(%edx), %bnd1
9         bndmk (%eax,%ecx), %bnd1
10         bndmk (,%ecx,1), %bnd1
11         bndmk 0x3(%ecx,%eax,1), %bnd1
12
13         ### bndmov
14         bndmov (%eax), %bnd1
15         bndmov (0x399), %bnd1
16         bndmov 0x3(%edx), %bnd2
17         bndmov (%eax,%edx), %bnd2
18         bndmov (,%eax,1), %bnd2
19         bndmov 0x3(%ecx,%eax,1), %bnd1
20         bndmov %bnd2, %bnd0
21
22         bndmov %bnd1, (%eax)
23         bndmov %bnd1, (0x399)
24         bndmov %bnd2, 0x3(%edx)
25         bndmov %bnd2, (%eax,%edx)
26         bndmov %bnd2, (,%eax,1)
27         bndmov %bnd1, 0x3(%ecx,%eax,1)
28         bndmov %bnd0, %bnd2
29
30         ### bndcl
31         bndcl (%ecx), %bnd1
32         bndcl %ecx, %bnd1
33         bndcl %ax, %bnd1
34         bndcl (0x399), %bnd1
35         bndcl 0x3(%edx), %bnd1
36         bndcl (%eax,%ecx), %bnd1
37         bndcl (,%ecx,1), %bnd1
38         bndcl 0x3(%ecx,%eax,1), %bnd1
39
40         ### bndcu
41         bndcu (%ecx), %bnd1
42         bndcu %ecx, %bnd1
43         bndcu %ax, %bnd1
44         bndcu (0x399), %bnd1
45         bndcu 0x3(%edx), %bnd1
46         bndcu (%eax,%ecx), %bnd1
47         bndcu (,%ecx,1), %bnd1
48         bndcu 0x3(%ecx,%eax,1), %bnd1
49
50         ### bndcn
51         bndcn (%ecx), %bnd1
52         bndcn %ecx, %bnd1
53         bndcn %ax, %bnd1
54         bndcn (0x399), %bnd1
55         bndcn 0x3(%edx), %bnd1
56         bndcn (%eax,%ecx), %bnd1
57         bndcn (,%ecx,1), %bnd1
58         bndcn 0x3(%ecx,%eax,1), %bnd1
59
60         ### bndstx
61         bndstx %bnd0, 0x3(%eax,%ebx,1)
62         bndstx %bnd2, 3(%ebx,%edx)
63         bndstx %bnd2, 3(,%edx,1)
64         bndstx %bnd3, 0x399(%edx)
65         bndstx %bnd2, 0x1234(%ebx)
66         bndstx %bnd2, 3(%ebx,1)
67         bndstx %bnd1, (%edx)
68
69         ### bndldx
70         bndldx 0x3(%eax,%ebx,1), %bnd0
71         bndldx 3(%ebx,%edx), %bnd2
72         bndldx 3(,%edx,1), %bnd2
73         bndldx 0x399(%edx), %bnd3
74         bndldx 0x1234(%ebx), %bnd2
75         bndldx 3(%ebx,1), %bnd2
76         bndldx (%edx), %bnd1
77
78         ### bnd
79         bnd call        foo
80         bnd call        *(%eax)
81         bnd je  foo
82         bnd jmp foo
83         bnd jmp *(%ecx)
84         bnd ret
85
86 .intel_syntax noprefix
87         bndmk bnd1, [eax]
88         bndmk bnd1, [0x399]
89         bndmk bnd1, [ecx+0x3]
90         bndmk bnd1, [eax+ecx]
91         bndmk bnd1, [ecx*1]
92         bndmk bnd1, [edx+1*eax+0x3]
93
94         ### bndmov
95         bndmov bnd1, [eax]
96         bndmov bnd1, [0x399]
97         bndmov bnd1, [ecx+0x3]
98         bndmov bnd1, [eax+ecx]
99         bndmov bnd1, [ecx*1]
100         bndmov bnd1, [edx+1*eax+0x3]
101         bndmov bnd0, bnd1
102
103         bndmov [eax], bnd1
104         bndmov [0x399], bnd1
105         bndmov [ecx+0x3], bnd1
106         bndmov [eax+ecx], bnd1
107         bndmov [ecx*1], bnd1
108         bndmov [edx+1*eax+0x3], bnd1
109         bndmov bnd1, bnd0
110
111         ### bndcl
112         bndcl bnd1, [eax]
113         bndcl bnd1, ecx
114         bndcl bnd1, ax
115         bndcl bnd1, [0x399]
116         bndcl bnd1, [ecx+0x3]
117         bndcl bnd1, [eax+ecx]
118         bndcl bnd1, [ecx*1]
119         bndcl bnd1, [edx+1*eax+0x3]
120
121         ### bndcu
122         bndcu bnd1, [eax]
123         bndcu bnd1, ecx
124         bndcu bnd1, ax
125         bndcu bnd1, [0x399]
126         bndcu bnd1, [ecx+0x3]
127         bndcu bnd1, [eax+ecx]
128         bndcu bnd1, [ecx*1]
129         bndcu bnd1, [edx+1*eax+0x3]
130
131         ### bndcn
132         bndcn bnd1, [eax]
133         bndcn bnd1, ecx
134         bndcn bnd1, ax
135         bndcn bnd1, [0x399]
136         bndcn bnd1, [ecx+0x3]
137         bndcn bnd1, [eax+ecx]
138         bndcn bnd1, [ecx*1]
139         bndcn bnd1, [edx+1*eax+0x3]
140
141         ### bndstx
142         bndstx [eax+ebx*1+0x3], bnd0
143         bndstx [ebx+edx+3], bnd2
144         bndstx [ecx*1], bnd2
145         bndstx [edx+0x399], bnd3
146         bndstx [1*ebx+3], bnd2
147         bndstx [edx], bnd1
148
149         ### bndldx
150         bndldx bnd0, [eax+ebx*1+0x3]
151         bndldx bnd2, [ebx+edx+3]
152         bndldx bnd2, [ecx*1]
153         bndldx bnd3, [edx+0x399]
154         bndldx bnd2, [1*ebx+3]
155         bndldx bnd1, [edx]
156
157         ### bnd
158         bnd call        foo
159         bnd call        eax
160         bnd je  foo
161         bnd jmp foo
162         bnd jmp ecx
163         bnd ret
164
165 foo:    bnd ret