x86-64: also diagnose far returns / IRET with ambiguous operand size
[deliverable/binutils-gdb.git] / gas / testsuite / gas / i386 / x86_64.s
1 .text
2 .intel_syntax noprefix
3 # REX prefix and addressing modes.
4 add edx,ecx
5 add edx,r9d
6 add r10d,ecx
7 add rdx,rcx
8 add r10,r9
9 add r8d,eax
10 add r8w,ax
11 add r8,rax
12 add eax,0x44332211
13 add rax,0xfffffffff4332211
14 add ax,0x4433
15 add rax,0x44332211
16 add dl,cl
17 add bh,dh
18 add dil,sil
19 add r15b,sil
20 add dil,r14b
21 add r15b,r14b
22 PUSH RAX
23 PUSH R8
24 POP R9
25 ADD AL,0x11
26 ADD AH,0x11
27 ADD SPL,0x11
28 ADD R8B,0x11
29 ADD R12B,0x11
30 MOV RAX,CR0
31 MOV R8,CR0
32 MOV RAX,CR8
33 MOV CR8,RAX
34 REP MOVSQ #[RSI],[RDI]
35 REP MOVSW #[RSI,[RDI]
36 REP MOVSQ #[RSI],[RDI]
37 MOV AL, 0x11
38 MOV AH, 0x11
39 MOV SPL, 0x11
40 MOV R12B, 0x11
41 MOV EAX,0x11223344
42 MOV R8D,0x11223344
43 MOV RAX,0x1122334455667788
44 MOV R8,0x1122334455667788
45 add eax,[rax]
46 ADD EAX,[R8]
47 ADD R8D,[R8]
48 ADD RAX,[R8]
49 ADD EAX,[0x22222222+RIP]
50 ADD EAX,[RBP+0x00]
51 ADD EAX,FLAT:[0x22222222]
52 ADD EAX,[R13+0]
53 ADD EAX,[RAX+RAX*4]
54 ADD EAX,[R8+RAX*4]
55 ADD R8D,[R8+RAX*4]
56 ADD EAX,[R8+R8*4]
57 ADD [RCX+R8*4],R8D
58 ADD EDX,[RAX+RAX*8]
59 ADD EDX,[RAX+RCX*8]
60 ADD EDX,[RAX+RDX*8]
61 ADD EDX,[RAX+RBX*8]
62 ADD EDX,[RAX]
63 ADD EDX,[RAX+RBP*8]
64 ADD EDX,[RAX+RSI*8]
65 ADD EDX,[RAX+RDI*8]
66 ADD EDX,[RAX+R8*8]
67 ADD EDX,[RAX+R9*8]
68 ADD EDX,[RAX+R10*8]
69 ADD EDX,[RAX+R11*8]
70 ADD EDX,[RAX+R12*8]
71 ADD EDX,[RAX+R13*8]
72 ADD EDX,[RAX+R14*8]
73 ADD EDX,[RAX+R15*8]
74 ADD ECX,0x11
75 ADD DWORD PTR [RAX],0x11
76 ADD QWORD PTR [RAX],0x11
77 ADD DWORD PTR [R8],0x11
78 ADD DWORD PTR [RCX+RAX*4],0x11
79 ADD DWORD PTR [R9+RAX*4],0x11
80 ADD DWORD PTR [RCX+R8*4],0x11
81 ADD DWORD PTR [0x22222222+RIP],0x33
82 ADD QWORD PTR [RIP+0x22222222],0x33
83 ADD DWORD PTR [RIP+0x22222222],0x33333333
84 ADD QWORD PTR [RIP+0x22222222],0x33333333
85 ADD DWORD PTR [RAX*8+0x22222222],0x33
86 ADD DWORD PTR [RAX+0x22222222],0x33
87 ADD DWORD PTR [RAX+0x22222222],0x33
88 ADD DWORD PTR [R8+RBP*8],0x33
89 ADD DWORD PTR FLAT:[0x22222222],0x33
90 #new instructions
91 MOVABS AL,FLAT:[0x8877665544332211]
92 MOVABS EAX,FLAT:[0x8877665544332211]
93 MOVABS FLAT:[0x8877665544332211],AL
94 MOVABS FLAT:[0x8877665544332211],EAX
95 MOVABS RAX,FLAT:[0x8877665544332211]
96 MOVABS FLAT:[0x8877665544332211],RAX
97 cqo
98 cdqe
99 movsx rax, eax
100 movsx rax, ax
101 movsx rax, al
102 retf
103 retf 16
104 retfw
105 retfw 2
106 retfd
107 retfd 4
108 retfq
109 retfq 8
110 bar:
111 .att_syntax
112 #testcase for symbol references.
113
114 #immediates - various sizes:
115
116 mov $symbol, %al
117 mov $symbol, %ax
118 mov $symbol, %eax
119 mov $symbol, %rax
120
121 #addressing modes:
122
123 #absolute 64bit addressing
124 movabs symbol, %eax
125
126 #absolute 32bit addressing
127 mov symbol, %eax
128
129 #arithmetic
130 mov symbol(%rax), %eax
131
132 #RIP relative
133 mov symbol(%rip), %eax
134
135 .intel_syntax noprefix
136
137 #immediates - various sizes:
138 mov al, offset flat:symbol
139 mov ax, offset flat:symbol
140 mov eax, offset flat:symbol
141 mov rax, offset flat:symbol
142
143 #parts aren't supported by the parser, yet (and not at all for symbol refs)
144 #mov eax, high part symbol
145 #mov eax, low part symbol
146
147 #addressing modes
148
149 #absolute 64bit addressing
150 movabs eax, [symbol]
151
152 #absolute 32bit addressing
153 mov eax, [symbol]
154
155 #arithmetic
156 mov eax, [rax+symbol]
157
158 #RIP relative
159 mov eax, [rip+symbol]
160
161 foo:
162 .att_syntax
163 #absolute 64bit addressing
164 mov 0x8877665544332211,%al
165 mov 0x8877665544332211,%ax
166 mov 0x8877665544332211,%eax
167 mov 0x8877665544332211,%rax
168 mov %al,0x8877665544332211
169 mov %ax,0x8877665544332211
170 mov %eax,0x8877665544332211
171 mov %rax,0x8877665544332211
172 movb 0x8877665544332211,%al
173 movw 0x8877665544332211,%ax
174 movl 0x8877665544332211,%eax
175 movq 0x8877665544332211,%rax
176 movb %al,0x8877665544332211
177 movw %ax,0x8877665544332211
178 movl %eax,0x8877665544332211
179 movq %rax,0x8877665544332211
180
181 #absolute signed 32bit addressing
182 mov 0xffffffffff332211,%al
183 mov 0xffffffffff332211,%ax
184 mov 0xffffffffff332211,%eax
185 mov 0xffffffffff332211,%rax
186 mov %al,0xffffffffff332211
187 mov %ax,0xffffffffff332211
188 mov %eax,0xffffffffff332211
189 mov %rax,0xffffffffff332211
190 movb 0xffffffffff332211,%al
191 movw 0xffffffffff332211,%ax
192 movl 0xffffffffff332211,%eax
193 movq 0xffffffffff332211,%rax
194 movb %al,0xffffffffff332211
195 movw %ax,0xffffffffff332211
196 movl %eax,0xffffffffff332211
197 movq %rax,0xffffffffff332211
198
199 cmpxchg16b (%rax)
200
201 .intel_syntax noprefix
202 cmpxchg16b oword ptr [rax]
203
204 .att_syntax
205 movsx %al, %si
206 movsx %al, %esi
207 movsx %al, %rsi
208 movsx %ax, %esi
209 movsx %ax, %rsi
210 movsx %eax, %rsi
211 movsx (%rax), %edx
212 movsx (%rax), %rdx
213 movsx (%rax), %dx
214 movsbl (%rax), %edx
215 movsbq (%rax), %rdx
216 movsbw (%rax), %dx
217 movswl (%rax), %edx
218 movswq (%rax), %rdx
219
220 movzx %al, %si
221 movzx %al, %esi
222 movzx %al, %rsi
223 movzx %ax, %esi
224 movzx %ax, %rsi
225 movzx (%rax), %edx
226 movzx (%rax), %rdx
227 movzx (%rax), %dx
228 movzb (%rax), %edx
229 movzb (%rax), %rdx
230 movzb (%rax), %dx
231 movzbl (%rax), %edx
232 movzbq (%rax), %rdx
233 movzbw (%rax), %dx
234 movzwl (%rax), %edx
235 movzwq (%rax), %rdx
236
237 .intel_syntax noprefix
238 movsx si,al
239 movsx esi,al
240 movsx rsi,al
241 movsx esi,ax
242 movsx rsi,ax
243 movsx rsi,eax
244 movsx edx,BYTE PTR [rax]
245 movsx rdx,BYTE PTR [rax]
246 movsx dx,BYTE PTR [rax]
247 movsx edx,WORD PTR [rax]
248 movsx rdx,WORD PTR [rax]
249
250 movzx si,al
251 movzx esi,al
252 movzx rsi,al
253 movzx esi,ax
254 movzx rsi,ax
255 movzx edx,BYTE PTR [rax]
256 movzx rdx,BYTE PTR [rax]
257 movzx dx,BYTE PTR [rax]
258 movzx edx,WORD PTR [rax]
259 movzx rdx,WORD PTR [rax]
260
261 movq xmm1,QWORD PTR [rsp]
262 movq xmm1,[rsp]
263 movq QWORD PTR [rsp],xmm1
264 movq [rsp],xmm1
265
266 .att_syntax
267 fnstsw
268 fnstsw %ax
269 fstsw
270 fstsw %ax
271
272 .intel_syntax noprefix
273 fnstsw
274 fnstsw ax
275 fstsw
276 fstsw ax
277
278 .att_syntax
279 movsx (%rax),%ax
280 movsx (%rax),%eax
281 movsx (%rax),%rax
282 movsxb (%rax), %dx
283 movsxb (%rax), %edx
284 movsxb (%rax), %rdx
285 movsxw (%rax), %edx
286 movsxw (%rax), %rdx
287 movsxl (%rax), %rdx
288 movsxd (%rax),%rax
289 movzx (%rax),%ax
290 movzx (%rax),%eax
291 movzx (%rax),%rax
292 movzxb (%rax), %dx
293 movzxb (%rax), %edx
294 movzxb (%rax), %rdx
295 movzxw (%rax), %edx
296 movzxw (%rax), %rdx
297
298 movnti %eax, (%rax)
299 movntil %eax, (%rax)
300 movnti %rax, (%rax)
301 movntiq %rax, (%rax)
302
303 .intel_syntax noprefix
304
305 movsx ax, BYTE PTR [rax]
306 movsx eax, BYTE PTR [rax]
307 movsx eax, WORD PTR [rax]
308 movsx rax, WORD PTR [rax]
309 movsx rax, DWORD PTR [rax]
310 movsxd rax, [rax]
311 movzx ax, BYTE PTR [rax]
312 movzx eax, BYTE PTR [rax]
313 movzx eax, WORD PTR [rax]
314 movzx rax, WORD PTR [rax]
315
316 movnti dword ptr [rax], eax
317 movnti qword ptr [rax], rax
This page took 0.058923 seconds and 5 git commands to generate.