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