1 # ia64 cpu description file
3 # The instruction lengths are very conservative, it doesn't matter on ia64
4 # since there are no short branches.
12 rethrow: src1:i len:48
13 ckfinite: dest:f src1:f len:48
19 localloc: dest:i src1:i len:92
20 compare: src1:i src2:i len:48
21 lcompare: src1:i src2:i len:48
22 icompare: src1:i src2:i len:48
23 compare_imm: src1:i len:48
24 icompare_imm: src1:i len:48
25 fcompare: src1:f src2:f clob:a len:48
26 oparglist: src1:b len:48
27 setlret: dest:r src1:i src2:i len:48
28 checkthis: src1:b len:48
29 call: dest:r clob:c len:80
30 voidcall: clob:c len:80
31 voidcall_reg: src1:i clob:c len:80
32 voidcall_membase: src1:b clob:c len:80
33 fcall: dest:g len:80 clob:c
34 fcall_reg: dest:g src1:i len:80 clob:c
35 fcall_membase: dest:g src1:b len:80 clob:c
36 lcall: dest:r len:80 clob:c
37 lcall_reg: dest:r src1:i len:80 clob:c
38 lcall_membase: dest:r src1:b len:80 clob:c
40 vcall_reg: src1:i len:80 clob:c
41 vcall_membase: src1:b len:80 clob:c
42 call_reg: dest:r src1:i len:80 clob:c
43 call_membase: dest:r src1:b len:80 clob:c
45 i8const: dest:i len:48
46 r4const: dest:f len:48
47 r8const: dest:f len:48
48 store_membase_imm: dest:b len:48
49 store_membase_reg: dest:b src1:i len:48
50 storei8_membase_reg: dest:b src1:i len:48
51 storei1_membase_imm: dest:b len:48
52 storei1_membase_reg: dest:b src1:c len:48
53 storei2_membase_imm: dest:b len:48
54 storei2_membase_reg: dest:b src1:i len:48
55 storei4_membase_imm: dest:b len:48
56 storei4_membase_reg: dest:b src1:i len:48
57 storei8_membase_imm: dest:b len:48
58 storer4_membase_reg: dest:b src1:f len:48
59 storer8_membase_reg: dest:b src1:f len:48
60 load_membase: dest:i src1:b len:48
61 loadi1_membase: dest:c src1:b len:48
62 loadu1_membase: dest:c src1:b len:48
63 loadi2_membase: dest:i src1:b len:48
64 loadu2_membase: dest:i src1:b len:48
65 loadi4_membase: dest:i src1:b len:48
66 loadu4_membase: dest:i src1:b len:48
67 loadi8_membase: dest:i src1:b len:48
68 loadr4_membase: dest:f src1:b len:48
69 loadr8_membase: dest:f src1:b len:48
70 loadu4_mem: dest:i len:48
71 move: dest:i src1:i len:48
72 add_imm: dest:i src1:i len:48
73 sub_imm: dest:i src1:i len:48
74 mul_imm: dest:i src1:i len:48
75 # there is no actual support for division or reminder by immediate
76 # we simulate them, though (but we need to change the burg rules
77 # to allocate a symbolic reg for src2)
78 div_imm: dest:a src1:i src2:i len:48 clob:d
79 div_un_imm: dest:a src1:i src2:i len:48 clob:d
80 rem_imm: dest:d src1:i src2:i len:48 clob:a
81 rem_un_imm: dest:d src1:i src2:i len:48 clob:a
82 and_imm: dest:i src1:i len:48
83 or_imm: dest:i src1:i len:48
84 xor_imm: dest:i src1:i len:48
85 shl_imm: dest:i src1:i len:48
86 shr_imm: dest:i src1:i len:48
87 shr_un_imm: dest:i src1:i len:48
89 cond_exc_ne_un: len:48
91 cond_exc_lt_un: len:48
93 cond_exc_gt_un: len:48
95 cond_exc_ge_un: len:48
97 cond_exc_le_un: len:48
114 float_add: dest:f src1:f src2:f len:48
115 float_sub: dest:f src1:f src2:f len:48
116 float_mul: dest:f src1:f src2:f len:48
117 float_div: dest:f src1:f src2:f len:48
118 float_div_un: dest:f src1:f src2:f len:48
119 float_rem: dest:f src1:f src2:f len:48
120 float_rem_un: dest:f src1:f src2:f len:48
121 float_neg: dest:f src1:f len:48
122 float_not: dest:f src1:f len:48
123 float_conv_to_i1: dest:i src1:f len:112
124 float_conv_to_i2: dest:i src1:f len:112
125 float_conv_to_i4: dest:i src1:f len:112
126 float_conv_to_i8: dest:i src1:f len:112
127 float_conv_to_r4: dest:f src1:f len:112
128 float_conv_to_r8: dest:f src1:f len:112
129 float_conv_to_u4: dest:i src1:f len:112
130 float_conv_to_u8: dest:i src1:f len:112
131 float_conv_to_u2: dest:i src1:f len:112
132 float_conv_to_u1: dest:i src1:f len:112
133 float_conv_to_i: dest:i src1:f len:112
134 float_conv_to_ovf_i: dest:a src1:f len:112
135 float_conv_to_ovd_u: dest:a src1:f len:112
137 float_ceq: dest:i src1:f src2:f len:48
138 float_cgt: dest:i src1:f src2:f len:48
139 float_cgt_un: dest:i src1:f src2:f len:48
140 float_clt: dest:i src1:f src2:f len:48
141 float_clt_un: dest:i src1:f src2:f len:48
142 float_ceq_membase: dest:i src1:f src2:b len:48
143 float_cgt_membase: dest:i src1:f src2:b len:48
144 float_cgt_un_membase: dest:i src1:f src2:b len:48
145 float_clt_membase: dest:i src1:f src2:b len:48
146 float_clt_un_membase: dest:i src1:f src2:b len:48
147 float_conv_to_u: dest:i src1:f len:48
148 fmove: dest:f src1:f len:48
149 call_handler: len:96 clob:c
150 start_handler: len:96
153 aot_const: dest:i len:48
154 tls_get: dest:i len:48
155 atomic_add_i4: src1:b src2:i dest:i len:48
156 atomic_add_new_i4: src1:b src2:i dest:i len:48
157 atomic_exchange_i4: src1:b src2:i dest:i len:48
158 atomic_add_i8: src1:b src2:i dest:i len:48
159 atomic_add_new_i8: src1:b src2:i dest:i len:48
160 atomic_add_imm_new_i4: src1:b dest:i len:48
161 atomic_add_imm_new_i8: src1:b dest:i len:48
162 atomic_exchange_i8: src1:b src2:i dest:i len:48
163 memory_barrier: len:48
164 adc: dest:i src1:i src2:i len:48
165 addcc: dest:i src1:i src2:i len:48
166 subcc: dest:i src1:i src2:i len:48
167 adc_imm: dest:i src1:i len:48
168 sbb: dest:i src1:i src2:i len:48
169 sbb_imm: dest:i src1:i len:48
170 br_reg: src1:i len:48
171 sin: dest:f src1:f len:48
172 cos: dest:f src1:f len:48
173 abs: dest:f src1:f len:48
174 tan: dest:f src1:f len:48
175 atan: dest:f src1:f len:48
176 sqrt: dest:f src1:f len:48
177 bigmul: len:48 dest:i src1:a src2:i
178 bigmul_un: len:48 dest:i src1:a src2:i
179 sext_i1: dest:i src1:i len:48
180 sext_i2: dest:i src1:i len:48
181 sext_i4: dest:i src1:i len:48
182 zext_i1: dest:i src1:i len:48
183 zext_i2: dest:i src1:i len:48
184 zext_i4: dest:i src1:i len:48
187 int_add: dest:i src1:i src2:i len:48
188 int_sub: dest:i src1:i src2:i len:48
189 int_mul: dest:i src1:i src2:i len:48
190 int_mul_ovf: dest:i src1:i src2:i len:48
191 int_mul_ovf_un: dest:i src1:i src2:i len:48
192 int_div: dest:a src1:a src2:i clob:d len:48
193 int_div_un: dest:a src1:a src2:i clob:d len:48
194 int_rem: dest:d src1:a src2:i clob:a len:48
195 int_rem_un: dest:d src1:a src2:i clob:a len:48
196 int_and: dest:i src1:i src2:i len:48
197 int_or: dest:i src1:i src2:i len:48
198 int_xor: dest:i src1:i src2:i len:48
199 int_shl: dest:i src1:i src2:s len:48
200 int_shr: dest:i src1:i src2:s len:48
201 int_shr_un: dest:i src1:i src2:s len:48
202 int_adc: dest:i src1:i src2:i len:48
203 int_adc_imm: dest:i src1:i len:48
204 int_sbb: dest:i src1:i src2:i len:48
205 int_sbb_imm: dest:i src1:i len:48
206 int_addcc: dest:i src1:i src2:i len:96
207 int_subcc: dest:i src1:i src2:i len:96
208 int_add_imm: dest:i src1:i len:48
209 int_sub_imm: dest:i src1:i len:48
210 int_mul_imm: dest:i src1:i len:48
211 int_div_imm: dest:a src1:i clob:d len:48
212 int_div_un_imm: dest:a src1:i clob:d len:48
213 int_rem_imm: dest:d src1:i clob:a len:48
214 int_rem_un_imm: dest:d src1:i clob:a len:48
215 int_and_imm: dest:i src1:i len:48
216 int_or_imm: dest:i src1:i len:48
217 int_xor_imm: dest:i src1:i len:48
218 int_shl_imm: dest:i src1:i len:48
219 int_shr_imm: dest:i src1:i len:48
220 int_shr_un_imm: dest:i src1:i len:48
221 int_neg: dest:i src1:i len:48
222 int_not: dest:i src1:i len:48
223 int_ceq: dest:c len:48
224 int_cgt: dest:c len:48
225 int_cgt_un: dest:c len:48
226 int_clt: dest:c len:48
227 int_clt_un: dest:c len:48
238 int_conv_to_r4: dest:f src1:i len:112
239 int_conv_to_r8: dest:f src1:i len:112
242 long_add: dest:i src1:i src2:i len:48
243 long_sub: dest:i src1:i src2:i len:48
244 long_mul: dest:i src1:i src2:i len:48
245 long_div: dest:a src1:a src2:i len:48 clob:d
246 long_div_un: dest:a src1:a src2:i len:48 clob:d
247 long_rem: dest:d src1:a src2:i len:48 clob:a
248 long_rem_un: dest:d src1:a src2:i len:48 clob:a
249 long_and: dest:i src1:i src2:i len:48
250 long_or: dest:i src1:i src2:i len:48
251 long_xor: dest:i src1:i src2:i len:48
252 long_shl: dest:i src1:i src2:s len:48
253 long_shr: dest:i src1:i src2:s len:48
254 long_shr_un: dest:i src1:i src2:s len:48
255 long_neg: dest:i src1:i len:48
256 long_not: dest:i src1:i len:48
257 long_conv_to_i1: dest:i src1:i len:48
258 long_conv_to_i2: dest:i src1:i len:48
259 long_conv_to_i4: dest:i src1:i len:48
260 long_conv_to_i8: dest:i src1:i len:48
261 long_conv_to_r4: dest:f src1:i len:112
262 long_conv_to_r8: dest:f src1:i len:112
263 long_conv_to_u4: dest:i src1:i len:112
264 long_conv_to_u8: dest:i src1:i len:112
265 long_conv_to_r_un: dest:f src1:i len:48
266 long_conv_to_ovf_i: dest:i src1:i src2:i len:48
267 long_conv_to_ovf_i4_un: dest:i src1:i len:96
268 long_conv_to_ovf_u4: dest:i src1:i len:48
269 long_conv_to_u2: dest:i src1:i len:48
270 long_conv_to_u1: dest:i src1:i len:48
271 long_conv_to_i: dest:i src1:i len:48
273 long_mul_imm: dest:i src1:i src2:i len:48
274 long_mul_ovf: dest:i src1:i src2:i len:48
275 long_mul_ovf_un: dest:i src1:i src2:i len:48
276 long_shr_imm: dest:i src1:i len:48
277 long_shr_un_imm: dest:i src1:i len:48
278 long_shl_imm: dest:i src1:i len:48
291 ia64_cmp4_eq: src1:i src2:i len:48
292 ia64_cmp4_ne: src1:i src2:i len:48
293 ia64_cmp4_le: src1:i src2:i len:48
294 ia64_cmp4_lt: src1:i src2:i len:48
295 ia64_cmp4_ge: src1:i src2:i len:48
296 ia64_cmp4_gt: src1:i src2:i len:48
297 ia64_cmp4_le_un: src1:i src2:i len:48
298 ia64_cmp4_lt_un: src1:i src2:i len:48
299 ia64_cmp4_ge_un: src1:i src2:i len:48
300 ia64_cmp4_gt_un: src1:i src2:i len:48
301 ia64_cmp_eq: src1:i src2:i len:48
302 ia64_cmp_ne: src1:i src2:i len:48
303 ia64_cmp_le: src1:i src2:i len:48
304 ia64_cmp_lt: src1:i src2:i len:48
305 ia64_cmp_ge: src1:i src2:i len:48
306 ia64_cmp_gt: src1:i src2:i len:48
307 ia64_cmp_lt_un: src1:i src2:i len:48
308 ia64_cmp_gt_un: src1:i src2:i len:48
309 ia64_cmp_le_un: src1:i src2:i len:48
310 ia64_cmp_ge_un: src1:i src2:i len:48
312 ia64_cmp4_eq_imm: src2:i len:48
313 ia64_cmp4_ne_imm: src2:i len:48
314 ia64_cmp4_le_imm: src2:i len:48
315 ia64_cmp4_lt_imm: src2:i len:48
316 ia64_cmp4_ge_imm: src2:i len:48
317 ia64_cmp4_gt_imm: src2:i len:48
318 ia64_cmp4_le_un_imm: src2:i len:48
319 ia64_cmp4_lt_un_imm: src2:i len:48
320 ia64_cmp4_ge_un_imm: src2:i len:48
321 ia64_cmp4_gt_un_imm: src2:i len:48
322 ia64_cmp_eq_imm: src2:i len:48
323 ia64_cmp_ne_imm: src2:i len:48
324 ia64_cmp_le_imm: src2:i len:48
325 ia64_cmp_lt_imm: src2:i len:48
326 ia64_cmp_ge_imm: src2:i len:48
327 ia64_cmp_gt_imm: src2:i len:48
328 ia64_cmp_lt_un_imm: src2:i len:48
329 ia64_cmp_gt_un_imm: src2:i len:48
330 ia64_cmp_le_un_imm: src2:i len:48
331 ia64_cmp_ge_un_imm: src2:i len:48
333 ia64_fcmp_eq: src1:f src2:f len:48
334 ia64_fcmp_ne: src1:f src2:f len:48
335 ia64_fcmp_le: src1:f src2:f len:48
336 ia64_fcmp_lt: src1:f src2:f len:48
337 ia64_fcmp_ge: src1:f src2:f len:48
338 ia64_fcmp_gt: src1:f src2:f len:48
339 ia64_fcmp_lt_un: src1:f src2:f len:96
340 ia64_fcmp_gt_un: src1:f src2:f len:96
341 ia64_fcmp_le_un: src1:f src2:f len:96
342 ia64_fcmp_ge_un: src1:f src2:f len:96
345 ia64_cond_exc: len:48
346 ia64_cset: dest:i len:48
348 ia64_storei8_membase_inc_reg: dest:b src1:i len:48
349 ia64_storei1_membase_inc_reg: dest:b src1:c len:48
350 ia64_storei2_membase_inc_reg: dest:b src1:i len:48
351 ia64_storei4_membase_inc_reg: dest:b src1:i len:48
352 ia64_storer4_membase_inc_reg: dest:b src1:f len:48
353 ia64_storer8_membase_inc_reg: dest:b src1:f len:48
354 # 'b' tells the register allocator to avoid allocating sreg1 and dreg to the
355 # same physical register
356 ia64_loadi1_membase_inc: dest:b src1:i len:48
357 ia64_loadu1_membase_inc: dest:b src1:i len:48
358 ia64_loadi2_membase_inc: dest:b src1:i len:48
359 ia64_loadu2_membase_inc: dest:b src1:i len:48
360 ia64_loadi4_membase_inc: dest:b src1:i len:48
361 ia64_loadu4_membase_inc: dest:b src1:i len:48
362 ia64_loadi8_membase_inc: dest:b src1:i len:48
363 ia64_loadr4_membase_inc: dest:b src1:i len:48
364 ia64_loadr8_membase_inc: dest:b src1:i len:48
370 dummy_use: src1:i len:0
373 not_null: src1:i len:0
375 jump_table: dest:i len:48
377 localloc_imm: dest:i len:92
379 vcall2: len:80 clob:c
380 vcall2_reg: src1:i len:80 clob:c
381 vcall2_membase: src1:b len:80 clob:c
383 int_conv_to_i1: dest:i src1:i len:48
384 int_conv_to_u1: dest:i src1:i len:48
385 int_conv_to_i2: dest:i src1:i len:48
386 int_conv_to_u2: dest:i src1:i len:48
387 int_conv_to_i4: dest:i src1:i len:48
388 int_conv_to_u4: dest:i src1:i len:48
389 int_conv_to_i8: dest:i src1:i len:48
390 int_conv_to_u8: dest:i src1:i len:48
392 long_add_imm: dest:i src1:i len:48
393 long_sub_imm: dest:i src1:i len:48
394 long_and_imm: dest:i src1:i len:48
395 long_or_imm: dest:i src1:i len:48
396 long_xor_imm: dest:i src1:i len:48