Commit | Line | Data |
---|---|---|
252b5132 RH |
1 | .psize 0 |
2 | .text | |
71851002 AM |
3 | #test jumps and calls |
4 | 1: jmp 1b | |
5 | jmp xxx | |
6 | jmp *xxx | |
7 | jmp xxx(,1) | |
8 | jmp *%edi | |
9 | jmp %edi | |
10 | jmp *(%edi) | |
11 | jmp (%edi) | |
12 | ljmp *xxx(,%edi,4) | |
13 | ljmp xxx(,%edi,4) | |
14 | ljmp *xxx | |
15 | ljmp xxx(,1) | |
16 | ljmp $0x1234,$xxx | |
17 | ||
18 | call 1b | |
19 | call xxx | |
20 | call *xxx | |
21 | call xxx(,1) | |
22 | call *%edi | |
23 | call %edi | |
24 | call *(%edi) | |
25 | call (%edi) | |
26 | lcall *xxx(,%edi,4) | |
27 | lcall xxx(,%edi,4) | |
28 | lcall *xxx | |
29 | lcall xxx(,1) | |
30 | lcall $0x1234,$xxx | |
31 | ||
252b5132 RH |
32 | # test various segment reg insns |
33 | push %ds | |
34 | pushl %ds | |
35 | pop %ds | |
36 | popl %ds | |
37 | mov %ds,%eax | |
38 | movl %ds,%eax | |
39 | movl %ds,%ax | |
40 | mov %eax,%ds | |
41 | movl %ax,%ds | |
42 | movl %eax,%ds | |
43 | ||
44 | pushw %ds | |
45 | popw %ds | |
46 | mov %ds,%ax | |
47 | movw %ds,%ax | |
48 | movw %ds,%eax | |
49 | mov %ax,%ds | |
50 | movw %ax,%ds | |
51 | movw %eax,%ds | |
52 | ||
53 | # test various pushes | |
54 | pushl $10 | |
55 | pushw $10 | |
56 | push $10 | |
57 | pushl $1000 | |
58 | pushw $1000 | |
59 | push $1000 | |
60 | pushl 1f | |
61 | pushw 1f | |
62 | push 1f | |
63 | push (1f-.)(%ebx) | |
64 | push 1f-. | |
65 | # these, and others like them should have no operand size prefix | |
66 | 1: lldt %cx | |
67 | lmsw %ax | |
68 | ||
69 | # Just to make sure these don't become illegal due to over-enthusiastic | |
70 | # register checking | |
71 | movsbw %al,%di | |
72 | movsbl %al,%ecx | |
73 | movswl %ax,%ecx | |
74 | movzbw %al,%di | |
75 | movzbl %al,%ecx | |
76 | movzwl %ax,%ecx | |
77 | ||
78 | in %dx,%al | |
79 | in %dx,%ax | |
80 | in %dx,%eax | |
81 | in (%dx),%al | |
82 | in (%dx),%ax | |
83 | in (%dx),%eax | |
84 | inb %dx,%al | |
85 | inw %dx,%ax | |
86 | inl %dx,%eax | |
87 | inb %dx | |
88 | inw %dx | |
89 | inl %dx | |
90 | inb $255 | |
91 | inw $2 | |
92 | inl $4 | |
252b5132 | 93 | in $13, %ax |
cc5ca5ce AM |
94 | out %al,%dx |
95 | out %ax,%dx | |
96 | out %eax,%dx | |
97 | out %al,(%dx) | |
98 | out %ax,(%dx) | |
99 | out %eax,(%dx) | |
100 | outb %al,%dx | |
101 | outw %ax,%dx | |
102 | outl %eax,%dx | |
103 | outb %dx | |
104 | outw %dx | |
105 | outl %dx | |
106 | outb $255 | |
107 | outw $2 | |
108 | outl $4 | |
109 | out %ax, $13 | |
252b5132 RH |
110 | # These are used in AIX. |
111 | inw (%dx) | |
112 | outw (%dx) | |
113 | ||
114 | movsb | |
115 | cmpsw | |
116 | scasl | |
117 | xlatb | |
118 | movsl %cs:(%esi),%es:(%edi) | |
119 | setae (%ebx) | |
120 | setaeb (%ebx) | |
121 | setae %al | |
122 | ||
123 | #these should give warnings | |
124 | orb $1,%ax | |
125 | orb $1,%eax | |
126 | orb $1,%bx | |
127 | orb $1,%ebx | |
128 | fldl %st(1) | |
129 | fstl %st(2) | |
130 | fstpl %st(3) | |
131 | fcoml %st(4) | |
132 | fcompl %st(5) | |
133 | faddp %st(1),%st | |
134 | fmulp %st(2),%st | |
135 | fsubp %st(3),%st | |
136 | fsubrp %st(4),%st | |
137 | fdivp %st(5),%st | |
138 | fdivrp %st(6),%st | |
139 | fadd | |
140 | fsub | |
141 | fmul | |
142 | fdiv | |
143 | fsubr | |
144 | fdivr | |
145 | #these should all be legal | |
146 | btl %edx, 0x123456 | |
147 | btl %edx, %eax | |
148 | orb $1,%al | |
149 | orb $1,%bl | |
150 | movl 17,%eax | |
151 | mov 17,%eax | |
152 | inw %dx,%ax | |
153 | inl %dx,%eax | |
154 | inw (%dx),%ax | |
155 | inl (%dx),%eax | |
156 | in (%dx),%al | |
157 | in (%dx),%ax | |
158 | in (%dx),%eax | |
159 | movzbl (%edi,%esi),%edx | |
160 | movzbl 28(%ebp),%eax | |
161 | movzbl %al,%eax | |
162 | movzbl %cl,%esi | |
163 | xlat %es:(%ebx) | |
164 | xlat | |
165 | xlatb | |
166 | 1: fstp %st(0) | |
167 | loop 1b | |
168 | divb %cl | |
169 | divw %cx | |
170 | divl %ecx | |
171 | div %cl | |
172 | div %cx | |
173 | div %ecx | |
174 | div %cl,%al | |
175 | div %cx,%ax | |
176 | div %ecx,%eax | |
177 | mov %si,%ds | |
178 | movl %si,%ds # warning here | |
179 | pushl %ds | |
180 | push %ds | |
181 | mov 0,%al | |
182 | mov 0x10000,%ax | |
183 | mov %eax,%ebx | |
184 | pushf | |
185 | pushfl | |
186 | pushfw | |
187 | popf | |
188 | popfl | |
189 | popfw | |
190 | mov %esi,(,%ebx,1) | |
191 | andb $~0x80,foo | |
192 | ||
71851002 AM |
193 | and $0xfffe,%ax |
194 | and $0xff00,%ax | |
195 | and $0xfffe,%eax | |
196 | and $0xff00,%eax | |
197 | and $0xfffffffe,%eax | |
198 | ||
199 | .code16 | |
200 | and $0xfffe,%ax | |
201 | and $0xff00,%ax | |
202 | and $0xfffe,%eax | |
203 | and $0xff00,%eax | |
204 | and $0xfffffffe,%eax | |
205 | ||
b23bac36 AM |
206 | #check 16-bit code auto address prefix |
207 | .code16gcc | |
208 | leal -256(%ebp),%edx | |
209 | mov %al,-129(%ebp) | |
210 | mov %ah,-128(%ebp) | |
211 | leal -1760(%ebp),%ebx | |
212 | movl %eax,140(%esp) | |
213 | ||
3b645373 L |
214 | .code32 |
215 | # Make sure that we won't remove movzb by accident. | |
216 | movzb %al,%di | |
217 | movzb %al,%ecx | |
218 | ||
252b5132 | 219 | # Force a good alignment. |
171a4983 | 220 | .p2align 4,0 |