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