Upload Tizen:Base source
[external/binutils.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 bar:
103 .att_syntax
104 #testcase for symbol references.
105
106 #immediates - various sizes:
107
108 mov $symbol, %al
109 mov $symbol, %ax
110 mov $symbol, %eax
111 mov $symbol, %rax
112
113 #addressing modes:
114
115 #absolute 64bit addressing
116 movabs symbol, %eax
117
118 #absolute 32bit addressing
119 mov symbol, %eax
120
121 #arithmetic
122 mov symbol(%rax), %eax
123
124 #RIP relative
125 mov symbol(%rip), %eax
126
127 .intel_syntax noprefix
128
129 #immediates - various sizes:
130 mov al, offset flat:symbol
131 mov ax, offset flat:symbol
132 mov eax, offset flat:symbol
133 mov rax, offset flat:symbol
134
135 #parts aren't supported by the parser, yet (and not at all for symbol refs)
136 #mov eax, high part symbol
137 #mov eax, low part symbol
138
139 #addressing modes
140
141 #absolute 64bit addressing
142 movabs eax, [symbol]
143
144 #absolute 32bit addressing
145 mov eax, [symbol]
146
147 #arithmetic
148 mov eax, [rax+symbol]
149
150 #RIP relative
151 mov eax, [rip+symbol]
152
153 foo:
154 .att_syntax
155 #absolute 64bit addressing
156 mov 0x8877665544332211,%al
157 mov 0x8877665544332211,%ax
158 mov 0x8877665544332211,%eax
159 mov 0x8877665544332211,%rax
160 mov %al,0x8877665544332211
161 mov %ax,0x8877665544332211
162 mov %eax,0x8877665544332211
163 mov %rax,0x8877665544332211
164 movb 0x8877665544332211,%al
165 movw 0x8877665544332211,%ax
166 movl 0x8877665544332211,%eax
167 movq 0x8877665544332211,%rax
168 movb %al,0x8877665544332211
169 movw %ax,0x8877665544332211
170 movl %eax,0x8877665544332211
171 movq %rax,0x8877665544332211
172
173 #absolute signed 32bit addressing
174 mov 0xffffffffff332211,%al
175 mov 0xffffffffff332211,%ax
176 mov 0xffffffffff332211,%eax
177 mov 0xffffffffff332211,%rax
178 mov %al,0xffffffffff332211
179 mov %ax,0xffffffffff332211
180 mov %eax,0xffffffffff332211
181 mov %rax,0xffffffffff332211
182 movb 0xffffffffff332211,%al
183 movw 0xffffffffff332211,%ax
184 movl 0xffffffffff332211,%eax
185 movq 0xffffffffff332211,%rax
186 movb %al,0xffffffffff332211
187 movw %ax,0xffffffffff332211
188 movl %eax,0xffffffffff332211
189 movq %rax,0xffffffffff332211
190
191 cmpxchg16b (%rax)
192
193 .intel_syntax noprefix
194 cmpxchg16b oword ptr [rax]
195
196 .att_syntax
197         movsx   %al, %si
198         movsx   %al, %esi
199         movsx   %al, %rsi
200         movsx   %ax, %esi
201         movsx   %ax, %rsi
202         movsx   %eax, %rsi
203         movsx   (%rax), %edx
204         movsx   (%rax), %rdx
205         movsx   (%rax), %dx
206         movsbl  (%rax), %edx
207         movsbq  (%rax), %rdx
208         movsbw  (%rax), %dx
209         movswl  (%rax), %edx
210         movswq  (%rax), %rdx
211
212         movzx   %al, %si
213         movzx   %al, %esi
214         movzx   %al, %rsi
215         movzx   %ax, %esi
216         movzx   %ax, %rsi
217         movzx   (%rax), %edx
218         movzx   (%rax), %rdx
219         movzx   (%rax), %dx
220         movzb   (%rax), %edx
221         movzb   (%rax), %rdx
222         movzb   (%rax), %dx
223         movzbl  (%rax), %edx
224         movzbq  (%rax), %rdx
225         movzbw  (%rax), %dx
226         movzwl  (%rax), %edx
227         movzwq  (%rax), %rdx
228
229         .intel_syntax noprefix
230         movsx   si,al
231         movsx   esi,al
232         movsx   rsi,al
233         movsx   esi,ax
234         movsx   rsi,ax
235         movsx   rsi,eax
236         movsx   edx,BYTE PTR [rax]
237         movsx   rdx,BYTE PTR [rax]
238         movsx   dx,BYTE PTR [rax]
239         movsx   edx,WORD PTR [rax]
240         movsx   rdx,WORD PTR [rax]
241
242         movzx   si,al
243         movzx   esi,al
244         movzx   rsi,al
245         movzx   esi,ax
246         movzx   rsi,ax
247         movzx   edx,BYTE PTR [rax]
248         movzx   rdx,BYTE PTR [rax]
249         movzx   dx,BYTE PTR [rax]
250         movzx   edx,WORD PTR [rax]
251         movzx   rdx,WORD PTR [rax]
252
253         movq    xmm1,QWORD PTR [rsp]
254         movq    xmm1,[rsp]
255         movq    QWORD PTR [rsp],xmm1
256         movq    [rsp],xmm1
257
258 .att_syntax
259         fnstsw
260         fnstsw  %ax
261         fstsw
262         fstsw   %ax
263
264         .intel_syntax noprefix
265         fnstsw
266         fnstsw  ax
267         fstsw
268         fstsw   ax
269
270 .att_syntax
271 movsx (%rax),%ax
272 movsx (%rax),%eax
273 movsx (%rax),%rax
274 movsxb  (%rax), %dx
275 movsxb  (%rax), %edx
276 movsxb  (%rax), %rdx
277 movsxw  (%rax), %edx
278 movsxw  (%rax), %rdx
279 movsxl  (%rax), %rdx
280 movsxd (%rax),%rax
281 movzx (%rax),%ax
282 movzx (%rax),%eax
283 movzx (%rax),%rax
284 movzxb  (%rax), %dx
285 movzxb  (%rax), %edx
286 movzxb  (%rax), %rdx
287 movzxw  (%rax), %edx
288 movzxw  (%rax), %rdx
289
290 movnti %eax, (%rax)
291 movntil %eax, (%rax)
292 movnti %rax, (%rax)
293 movntiq %rax, (%rax)
294
295 .intel_syntax noprefix
296
297 movsx ax, BYTE PTR [rax]
298 movsx eax, BYTE PTR [rax]
299 movsx eax, WORD PTR [rax]
300 movsx rax, WORD PTR [rax]
301 movsx rax, DWORD PTR [rax]
302 movsxd rax, [rax]
303 movzx ax, BYTE PTR [rax]
304 movzx eax, BYTE PTR [rax]
305 movzx eax, WORD PTR [rax]
306 movzx rax, WORD PTR [rax]
307
308 movnti dword ptr [rax], eax
309 movnti qword ptr [rax], rax