gas/
[external/binutils.git] / gas / testsuite / gas / i386 / intelok.s
1         .intel_syntax noprefix
2         .equiv byte, 1
3         .equiv word, 2
4         .equiv dword, 4
5         .equiv fword, 6
6         .equiv qword, 8
7         .equiv tbyte, 10
8         .equiv oword, 16
9         .equiv xmmword, 16
10         .text
11 start:
12
13         # operand sizes
14
15         add     al, [eax]
16         add     al, byte ptr [eax]
17         add     ax, [eax]
18         add     ax, word ptr [eax]
19         add     eax, [eax]
20         add     eax, dword ptr [eax]
21         add     byte ptr [eax], 1
22         add     dword ptr [eax], 1
23         add     word ptr [eax], 1
24         addpd   xmm0, [eax]
25         addpd   xmm0, xmmword ptr [eax]
26         addps   xmm0, [eax]
27         addps   xmm0, xmmword ptr [eax]
28         addsd   xmm0, [eax]
29         addsd   xmm0, qword ptr [eax]
30         addss   xmm0, [eax]
31         addss   xmm0, dword ptr [eax]
32         bound   ax, dword ptr [ecx]
33         bound   eax, qword ptr [ecx]
34         call    word ptr [eax]
35         call    dword ptr [eax]
36         call    fword ptr [eax]
37         cmps    [esi], byte ptr es:[edi]
38         cmps    dword ptr [esi], es:[edi]
39         cmps    word ptr [esi], word ptr es:[edi]
40         cmpxchg8b qword ptr [eax]
41         fadd    dword ptr [eax]
42         fadd    qword ptr [eax]
43         fbld    [eax]
44         fbld    tbyte ptr [eax]
45         fbstp   [eax]
46         fbstp   tbyte ptr [eax]
47         fiadd   dword ptr [eax]
48         fiadd   word ptr [eax]
49         fild    dword ptr [eax]
50         fild    qword ptr [eax]
51         fild    word ptr [eax]
52         fist    dword ptr [eax]
53         fist    word ptr [eax]
54         fistp   dword ptr [eax]
55         fistp   qword ptr [eax]
56         fistp   word ptr [eax]
57         fisttp  dword ptr [eax]
58         fisttp  qword ptr [eax]
59         fisttp  word ptr [eax]
60         fld     dword ptr [eax]
61         fld     qword ptr [eax]
62         fld     tbyte ptr [eax]
63         fldcw   [eax]
64         fldcw   word ptr [eax]
65         fldenv  [eax]
66         fldenvd [eax]
67         fldenvw [eax]
68         fst     dword ptr [eax]
69         fst     qword ptr [eax]
70         fstp    dword ptr [eax]
71         fstp    qword ptr [eax]
72         fstp    tbyte ptr [eax]
73         lds     ax, [eax]
74         lds     eax, [eax]
75         lds     ax, dword ptr [eax]
76         lds     eax, fword ptr [eax]
77         lea     eax, [eax]
78         lea     eax, byte ptr [eax]
79         lea     eax, dword ptr [eax]
80         lea     eax, fword ptr [eax]
81         lea     eax, qword ptr [eax]
82         lea     eax, tbyte ptr [eax]
83         lea     eax, word ptr [eax]
84         lea     eax, xmmword ptr [eax]
85         lgdt    [eax]
86         lgdtd   [eax]
87         lgdtw   [eax]
88         movs    es:[edi], byte ptr [esi]
89         movs    dword ptr es:[edi], [esi]
90         movs    word ptr es:[edi], word ptr [esi]
91         movsx   eax, byte ptr [eax]
92         movsx   eax, word ptr [eax]
93         paddb   mm0, [eax]
94         paddb   mm0, qword ptr [eax]
95         paddb   xmm0, [eax]
96         paddb   xmm0, xmmword ptr [eax]
97         pinsrw  mm0, word ptr [eax], 3
98         pinsrw  xmm0, word ptr [eax], 7
99         push    dword ptr [eax]
100         xlat    [ebx]
101         xlat    byte ptr [ebx]
102         xlatb
103
104         # memory operands
105
106         mov     eax, dword ptr [byte+eax]
107         mov     eax, dword ptr byte[eax]
108         mov     eax, [dword+eax]
109         mov     eax, dword[eax]
110         mov     eax, [fword+eax]
111         mov     eax, fword[eax]
112         mov     eax, [qword+eax+dword]
113         mov     eax, qword[eax+dword]
114         mov     eax, [tbyte+eax+dword*2]
115         mov     eax, tbyte[eax+dword*2]
116         mov     eax, [word+eax*dword]
117         mov     eax, word[eax*dword]
118
119         mov     eax, [eax*1]
120         mov     eax, [eax*+1]
121         mov     eax, [+1*eax]
122         mov     eax, [eax*+2]
123         mov     eax, [+2*eax]
124         mov     eax, [ecx*dword]
125         mov     eax, [dword*ecx]
126         mov     eax, 1[eax]
127         mov     eax, [eax]+1
128         mov     eax, [eax - 5 + ecx]
129         mov     eax, [eax + 5 and 3 + ecx]
130         mov     eax, [eax + 5*3 + ecx]
131         mov     eax, [oword][eax]
132         mov     eax, [eax][oword]
133         mov     eax, xmmword[eax][ecx]
134         mov     eax, [eax]+1[ecx]
135         mov     eax, [eax][ecx]+1
136         mov     eax, [1][eax][ecx]
137         mov     eax, [eax][1][ecx]
138         mov     eax, [eax][ecx][1]
139         mov     eax, [[eax]]
140         mov     eax, [eax[ecx]]
141         mov     eax, [[eax][ecx]]
142         mov     eax, es:[eax]
143
144         # expressions
145
146         push    + 1
147         push    - 1
148         push    not 1
149         push    1 + 1
150         push    2 - 1
151         push    2 * 2
152         push    3 / 2
153         push    3 mod 2
154         push    4 shl 1
155         push    5 shr 2
156         push    6 and 3
157         push    7 xor 4
158         push    8 or 5
159
160         push    +dword
161         push    -dword
162         push    not dword
163         push    not +dword
164         push    not -dword
165         push    not not dword
166
167         # offset expressions
168
169         mov     eax, offset x
170         mov     eax, offset flat:x
171         mov     eax, offset gs:x
172         mov     eax, offset [x]
173         mov     eax, offset flat:[x]
174         mov     eax, offset gs:[x]
175         mov     eax, [offset x]
176         mov     eax, [eax + offset x]
177         mov     eax, [eax + offset 1]
178         mov     eax, [offset x + eax]
179         mov     eax, offset x+1[eax]
180         mov     eax, [eax] + offset x
181         mov     eax, [eax] + offset 1
182         mov     eax, offset x + [1]
183         mov     eax, [offset x] - [1]
184         mov     eax, offset x + es:[2]
185         mov     eax, offset x + offset es:[3]
186         mov     eax, [4] + offset x
187         mov     eax, [5] + [offset x]
188         mov     eax, ss:[6] + offset x
189         mov     eax, ss:[7] + [offset x]
190         mov     eax, dword ptr [8]
191
192         # other operands
193         call    3:5
194         jmp     5:3
195         call    dword ptr xtrn
196         jmp     word ptr xtrn
197
198         # Force a good alignment.
199         .p2align        4,0