Revert "[mono][debugger] First PR to implement iCorDebug on mono (#20757)"
[mono-project.git] / mono / mini / cpu-amd64.md
blobe581a983944f7c5bf82bbef27c332306ae272e3b
1 # -*- mode:text; -*-
2 # x86-class cpu description file
3 # this file is read by genmdesc to pruduce a table with all the relevant information
4 # about the cpu instructions that may be used by the regsiter allocator, the scheduler
5 # and other parts of the arch-dependent part of mini.
7 # An opcode name is followed by a colon and optional specifiers.
8 # A specifier has a name, a colon and a value. Specifiers are separated by white space.
9 # Here is a description of the specifiers valid for this file and their possible values.
11 # dest:register       describes the destination register of an instruction
12 # src1:register       describes the first source register of an instruction
13 # src2:register       describes the second source register of an instruction
15 #       i  integer register
16 #       b  base register (used in address references)
17 #       f  floating point register
18 #       a  EAX register
19 #  d  EDX register
20 #       l  long reg (forced eax:edx)
21 #  s  ECX register
22 #  c  register which can be used as a byte register (RAX..RDX)
23 #  A - first arg reg (rdi/rcx)
25 # len:number         describe the maximun length in bytes of the instruction
26 #                    number is a positive integer.  If the length is not specified
27 #                    it defaults to zero.   But lengths are only checked if the given opcode
28 #                    is encountered during compilation. Some opcodes, like CONV_U4 are
29 #                    transformed into other opcodes in the brg files, so they do not show up
30 #                    during code generation.
32 # cost:number        describe how many cycles are needed to complete the instruction (unused)
34 # clob:spec          describe if the instruction clobbers registers or has special needs
36 #       c  clobbers caller-save registers
37 #       1  clobbers the first source register
38 #       a  EAX is clobbered
39 #   d  EDX is clobbered
40 #       x  both the source operands are clobbered (xchg)
41 #   m  sets an XMM reg
43 # flags:spec        describe if the instruction uses or sets the flags (unused)
45 #       s  sets the flags
46 #       u  uses the flags
47 #       m  uses and modifies the flags
49 # res:spec          describe what units are used in the processor (unused)
51 # delay:            describe delay slots (unused)
53 # the required specifiers are: len, clob (if registers are clobbered), the registers
54 # specifiers if the registers are actually used, flags (when scheduling is implemented).
56 # See the code in mini-x86.c for more details on how the specifiers are used.
59 break: len:2
60 tailcall: len:255 clob:c
61 tailcall_reg: src1:b len:255 clob:c
62 tailcall_membase: src1:b len:255 clob:c
64 # tailcall_parameter models the size of moving one parameter,
65 # so that the required size of a branch around a tailcall can
66 # be accurately estimated; something like:
67 # void f1(volatile long *a)
68 # {
69 # a[large] = a[another large]
70 # }
72 # If the offsets fit in 32bits, then len:14:
73 #       48 8b 87 e0 04 00 00    movq    1248(%rdi), %rax
74 #       48 89 87 00 08 00 00    movq    %rax, 2048(%rdi)
76 # else 64bits:
77 #       48 b8 e0 fc b3 c4 04 00 00 00   movabsq $20479999200, %rax
78 #       48 8b 04 07     movq    (%rdi,%rax), %rax
79 #       48 b9 00 00 b4 c4 04 00 00 00   movabsq $20480000000, %rcx
80 #       48 89 04 0f     movq    %rax, (%rdi,%rcx)
82 # Frame size is artificially limited to 1GB in mono_arch_tailcall_supported.
83 # This is presently redundant with tailcall len:255, as the limit of
84 # near branches is [-128, +127], after which the limit is
85 # [-2GB, +2GB-1]
86 # FIXME A fixed size sequence to move parameters would moot this.
87 tailcall_parameter: len:14
89 br: len:6
90 label: len:0
91 seq_point: len:46 clob:c
92 il_seq_point: len:0
94 long_add: dest:i src1:i src2:i len:3 clob:1
95 long_sub: dest:i src1:i src2:i len:3 clob:1
96 long_mul: dest:i src1:i src2:i len:4 clob:1
97 long_div: dest:a src1:a src2:i len:16 clob:d
98 long_div_un: dest:a src1:a src2:i len:16 clob:d
99 long_rem: dest:d src1:a src2:i len:16 clob:a
100 long_rem_un: dest:d src1:a src2:i len:16 clob:a
101 long_and: dest:i src1:i src2:i len:3 clob:1
102 long_or: dest:i src1:i src2:i len:3 clob:1
103 long_xor: dest:i src1:i src2:i len:3 clob:1
104 long_shl: dest:i src1:i src2:s clob:1 len:3
105 long_shr: dest:i src1:i src2:s clob:1 len:3
106 long_shr_un: dest:i src1:i src2:s clob:1 len:3
107 long_neg: dest:i src1:i len:3 clob:1
108 long_not: dest:i src1:i len:3 clob:1
109 long_conv_to_i1: dest:i src1:i len:4
110 long_conv_to_i2: dest:i src1:i len:4
111 long_conv_to_i4: dest:i src1:i len:3
112 long_conv_to_i8: dest:i src1:i len:3
113 long_conv_to_r4: dest:f src1:i len:15
114 long_conv_to_r8: dest:f src1:i len:9
115 long_conv_to_u4: dest:i src1:i len:3
116 long_conv_to_u8: dest:i src1:i len:3
117 long_conv_to_r_un: dest:f src1:i len:64
118 long_conv_to_ovf_i4_un: dest:i src1:i len:16
119 long_conv_to_ovf_u4: dest:i src1:i len:15
120 long_conv_to_u2: dest:i src1:i len:4
121 long_conv_to_u1: dest:i src1:i len:4
122 zext_i4: dest:i src1:i len:4
124 long_mul_imm: dest:i src1:i clob:1 len:16
125 long_min: dest:i src1:i src2:i len:16 clob:1
126 long_min_un: dest:i src1:i src2:i len:16 clob:1
127 long_max: dest:i src1:i src2:i len:16 clob:1
128 long_max_un: dest:i src1:i src2:i len:16 clob:1
130 throw: src1:i len:24
131 rethrow: src1:i len:24
132 start_handler: len:16
133 endfinally: len:9
134 endfilter: src1:a len:9
135 get_ex_obj: dest:a len:16
137 ckfinite: dest:f src1:f len:43
138 ceq: dest:c len:8
139 cgt: dest:c len:8
140 cgt_un: dest:c len:8
141 clt: dest:c len:8
142 clt_un: dest:c len:8
143 localloc: dest:i src1:i len:120
144 compare: src1:i src2:i len:3
145 lcompare: src1:i src2:i len:3
146 icompare: src1:i src2:i len:3
147 compare_imm: src1:i len:13
148 icompare_imm: src1:i len:8
149 fcompare: src1:f src2:f clob:a len:13
150 rcompare: src1:f src2:f clob:a len:13
151 arglist: src1:b len:11
152 check_this: src1:b len:5
153 call: dest:a clob:c len:32
154 voidcall: clob:c len:32
155 voidcall_reg: src1:i clob:c len:32
156 voidcall_membase: src1:b clob:c len:32
157 fcall: dest:f len:64 clob:c
158 fcall_reg: dest:f src1:i len:64 clob:c
159 fcall_membase: dest:f src1:b len:64 clob:c
160 rcall: dest:f len:64 clob:c
161 rcall_reg: dest:f src1:i len:64 clob:c
162 rcall_membase: dest:f src1:b len:64 clob:c
163 lcall: dest:a len:64 clob:c
164 lcall_reg: dest:a src1:i len:64 clob:c
165 lcall_membase: dest:a src1:b len:64 clob:c
166 vcall: len:64 clob:c
167 vcall_reg: src1:i len:64 clob:c
168 vcall_membase: src1:b len:64 clob:c
169 call_reg: dest:a src1:i len:32 clob:c
170 call_membase: dest:a src1:b len:32 clob:c
171 iconst: dest:i len:10
172 i8const: dest:i len:10
173 r4const: dest:f len:17
174 r8const: dest:f len:12
175 store_membase_imm: dest:b len:15
176 store_membase_reg: dest:b src1:i len:9
177 storei8_membase_reg: dest:b src1:i len:9
178 storei1_membase_imm: dest:b len:11
179 storei1_membase_reg: dest:b src1:c len:9
180 storei2_membase_imm: dest:b len:13
181 storei2_membase_reg: dest:b src1:i len:9
182 storei4_membase_imm: dest:b len:13
183 storei4_membase_reg: dest:b src1:i len:9
184 storei8_membase_imm: dest:b len:18
185 storer4_membase_reg: dest:b src1:f len:15
186 storer8_membase_reg: dest:b src1:f len:10
187 load_membase: dest:i src1:b len:8
188 loadi1_membase: dest:c src1:b len:9
189 loadu1_membase: dest:c src1:b len:9
190 loadi2_membase: dest:i src1:b len:9
191 loadu2_membase: dest:i src1:b len:9
192 loadi4_membase: dest:i src1:b len:9
193 loadu4_membase: dest:i src1:b len:9
194 loadi8_membase: dest:i src1:b len:18
195 loadr4_membase: dest:f src1:b len:16
196 loadr8_membase: dest:f src1:b len:16
197 loadu4_mem: dest:i len:10
198 amd64_loadi8_memindex: dest:i src1:i src2:i len:10
199 move: dest:i src1:i len:3
200 add_imm: dest:i src1:i len:8 clob:1
201 sub_imm: dest:i src1:i len:8 clob:1
202 mul_imm: dest:i src1:i len:12
203 and_imm: dest:i src1:i len:8 clob:1
204 or_imm: dest:i src1:i len:8 clob:1
205 xor_imm: dest:i src1:i len:8 clob:1
206 shl_imm: dest:i src1:i len:8 clob:1
207 shr_imm: dest:i src1:i len:8 clob:1
208 shr_un_imm: dest:i src1:i len:8 clob:1
209 cond_exc_eq: len:8
210 cond_exc_ne_un: len:8
211 cond_exc_lt: len:8
212 cond_exc_lt_un: len:8
213 cond_exc_gt: len:8
214 cond_exc_gt_un: len:8
215 cond_exc_ge: len:8
216 cond_exc_ge_un: len:8
217 cond_exc_le: len:8
218 cond_exc_le_un: len:8
219 cond_exc_ov: len:8
220 cond_exc_no: len:8
221 cond_exc_c: len:8
222 cond_exc_nc: len:8
223 cond_exc_iov: len:8
224 cond_exc_ic: len:8
226 long_mul_ovf: dest:i src1:i src2:i clob:1 len:16
227 long_mul_ovf_un: dest:i src1:i src2:i len:22
228 long_shr_imm: dest:i src1:i clob:1 len:11
229 long_shr_un_imm: dest:i src1:i clob:1 len:11
230 long_shl_imm: dest:i src1:i clob:1 len:11
232 long_beq: len:8
233 long_bge: len:8
234 long_bgt: len:8
235 long_ble: len:8
236 long_blt: len:8
237 long_bne_un: len:8
238 long_bge_un: len:8
239 long_bgt_un: len:8
240 long_ble_un: len:8
241 long_blt_un: len:8
243 float_beq: len:13
244 float_bne_un: len:18
245 float_blt: len:13
246 float_blt_un: len:30
247 float_bgt: len:13
248 float_bgt_un: len:30
249 float_bge: len:32
250 float_bge_un: len:13
251 float_ble: len:32
252 float_ble_un: len:13
253 float_add: dest:f src1:f src2:f clob:1 len:5
254 float_sub: dest:f src1:f src2:f clob:1 len:5
255 float_mul: dest:f src1:f src2:f clob:1 len:5
256 float_div: dest:f src1:f src2:f clob:1 len:5
257 float_div_un: dest:f src1:f src2:f clob:1 len:5
258 float_rem: dest:f src1:f src2:f clob:1 len:19
259 float_rem_un: dest:f src1:f src2:f clob:1 len:19
260 float_neg: dest:f src1:f clob:1 len:23
261 float_not: dest:f src1:f clob:1 len:3
262 float_conv_to_i1: dest:i src1:f len:49
263 float_conv_to_i2: dest:i src1:f len:49
264 float_conv_to_i4: dest:i src1:f len:49
265 float_conv_to_i8: dest:i src1:f len:49
266 float_conv_to_u4: dest:i src1:f len:49
267 float_conv_to_u8: dest:i src1:f len:49
268 float_conv_to_u2: dest:i src1:f len:49
269 float_conv_to_u1: dest:i src1:f len:49
270 float_conv_to_i: dest:i src1:f len:49
271 float_conv_to_ovf_i: dest:a src1:f len:40
272 float_conv_to_ovd_u: dest:a src1:f len:40
273 float_mul_ovf:
274 float_ceq: dest:i src1:f src2:f len:35
275 float_cgt: dest:i src1:f src2:f len:35
276 float_cgt_un: dest:i src1:f src2:f len:48
277 float_clt: dest:i src1:f src2:f len:35
278 float_clt_un: dest:i src1:f src2:f len:42
279 float_cneq: dest:i src1:f src2:f len:42
280 float_cge: dest:i src1:f src2:f len:35
281 float_cle: dest:i src1:f src2:f len:35
282 float_ceq_membase: dest:i src1:f src2:b len:35
283 float_cgt_membase: dest:i src1:f src2:b len:35
284 float_cgt_un_membase: dest:i src1:f src2:b len:48
285 float_clt_membase: dest:i src1:f src2:b len:35
286 float_clt_un_membase: dest:i src1:f src2:b len:42
287 float_conv_to_u: dest:i src1:f len:46
289 # R4 opcodes
290 r4_conv_to_i1: dest:i src1:f len:32
291 r4_conv_to_u1: dest:i src1:f len:32
292 r4_conv_to_i2: dest:i src1:f len:32
293 r4_conv_to_u2: dest:i src1:f len:32
294 r4_conv_to_i4: dest:i src1:f len:16
295 r4_conv_to_u4: dest:i src1:f len:32
296 r4_conv_to_i8: dest:i src1:f len:32
297 r4_conv_to_i: dest:i src1:f len:32
298 r4_conv_to_r8: dest:f src1:f len:17
299 r4_conv_to_r4: dest:f src1:f len:17
300 r4_add: dest:f src1:f src2:f clob:1 len:5
301 r4_sub: dest:f src1:f src2:f clob:1 len:5
302 r4_mul: dest:f src1:f src2:f clob:1 len:5
303 r4_div: dest:f src1:f src2:f clob:1 len:5
304 r4_neg: dest:f src1:f clob:1 len:23
305 r4_ceq: dest:i src1:f src2:f len:35
306 r4_cgt: dest:i src1:f src2:f len:35
307 r4_cgt_un: dest:i src1:f src2:f len:48
308 r4_clt: dest:i src1:f src2:f len:35
309 r4_clt_un: dest:i src1:f src2:f len:42
310 r4_cneq: dest:i src1:f src2:f len:42
311 r4_cge: dest:i src1:f src2:f len:35
312 r4_cle: dest:i src1:f src2:f len:35
314 fmove: dest:f src1:f len:8
315 rmove: dest:f src1:f len:8
316 move_f_to_i4: dest:i src1:f len:16
317 move_i4_to_f: dest:f src1:i len:16
318 move_f_to_i8: dest:i src1:f len:5
319 move_i8_to_f: dest:f src1:i len:5
320 call_handler: len:14 clob:c
321 aotconst: dest:i len:10
322 gc_safe_point: clob:c src1:i len:40
323 x86_test_null: src1:i len:5
324 x86_compare_membase_reg: src1:b src2:i len:9
325 x86_compare_membase_imm: src1:b len:13
326 x86_compare_reg_membase: src1:i src2:b len:8
327 x86_inc_reg: dest:i src1:i clob:1 len:3
328 x86_inc_membase: src1:b len:8
329 x86_dec_reg: dest:i src1:i clob:1 len:3
330 x86_dec_membase: src1:b len:8
331 x86_add_membase_imm: src1:b len:13
332 x86_sub_membase_imm: src1:b len:13
333 x86_push: src1:i len:3
334 x86_push_imm: len:6
335 x86_push_membase: src1:b len:8
336 x86_push_obj: src1:b len:40
337 x86_lea: dest:i src1:i src2:i len:8
338 x86_lea_membase: dest:i src1:i len:11
339 amd64_lea_membase: dest:i src1:i len:11
340 x86_xchg: src1:i src2:i clob:x len:2
341 x86_fpop: src1:f len:3
342 x86_seteq_membase: src1:b len:9
344 x86_add_reg_membase: dest:i src1:i src2:b clob:1 len:13
345 x86_sub_reg_membase: dest:i src1:i src2:b clob:1 len:13
346 x86_mul_reg_membase: dest:i src1:i src2:b clob:1 len:13
347 x86_and_reg_membase: dest:i src1:i src2:b clob:1 len:13
348 x86_or_reg_membase: dest:i src1:i src2:b clob:1 len:13
349 x86_xor_reg_membase: dest:i src1:i src2:b clob:1 len:13
351 amd64_test_null: src1:i len:5
352 amd64_icompare_membase_reg: src1:b src2:i len:8
353 amd64_icompare_membase_imm: src1:b len:13
354 amd64_icompare_reg_membase: src1:i src2:b len:8
355 amd64_set_xmmreg_r4: dest:f src1:f len:14 clob:m
356 amd64_set_xmmreg_r8: dest:f src1:f len:14 clob:m
357 amd64_save_sp_to_lmf: len:16
358 tls_get: dest:i len:32
359 tls_set: src1:i len:16
360 atomic_add_i4: src1:b src2:i dest:i len:32
361 atomic_add_i8: src1:b src2:i dest:i len:32
362 atomic_exchange_i4: src1:b src2:i dest:i len:12
363 atomic_exchange_i8: src1:b src2:i dest:i len:12
364 atomic_cas_i4: src1:b src2:i src3:a dest:a len:24
365 atomic_cas_i8: src1:b src2:i src3:a dest:a len:24
366 memory_barrier: len:3
367 atomic_load_i1: dest:c src1:b len:9
368 atomic_load_u1: dest:c src1:b len:9
369 atomic_load_i2: dest:i src1:b len:9
370 atomic_load_u2: dest:i src1:b len:9
371 atomic_load_i4: dest:i src1:b len:9
372 atomic_load_u4: dest:i src1:b len:9
373 atomic_load_i8: dest:i src1:b len:9
374 atomic_load_u8: dest:i src1:b len:9
375 atomic_load_r4: dest:f src1:b len:16
376 atomic_load_r8: dest:f src1:b len:16
377 atomic_store_i1: dest:b src1:c len:12
378 atomic_store_u1: dest:b src1:c len:12
379 atomic_store_i2: dest:b src1:i len:12
380 atomic_store_u2: dest:b src1:i len:12
381 atomic_store_i4: dest:b src1:i len:12
382 atomic_store_u4: dest:b src1:i len:12
383 atomic_store_i8: dest:b src1:i len:12
384 atomic_store_u8: dest:b src1:i len:12
385 atomic_store_r4: dest:b src1:f len:18
386 atomic_store_r8: dest:b src1:f len:13
387 adc: dest:i src1:i src2:i len:3 clob:1
388 addcc: dest:i src1:i src2:i len:3 clob:1
389 subcc: dest:i src1:i src2:i len:3 clob:1
390 adc_imm: dest:i src1:i len:8 clob:1
391 sbb: dest:i src1:i src2:i len:3 clob:1
392 sbb_imm: dest:i src1:i len:8 clob:1
393 br_reg: src1:i len:3
394 sin: dest:f src1:f len:32
395 cos: dest:f src1:f len:32
396 abs: dest:f src1:f clob:1 len:32
397 tan: dest:f src1:f len:59
398 atan: dest:f src1:f len:9
399 sqrt: dest:f src1:f len:32
400 sext_i1: dest:i src1:i len:4
401 sext_i2: dest:i src1:i len:4
402 sext_i4: dest:i src1:i len:8
404 laddcc: dest:i src1:i src2:i len:3 clob:1
405 lsubcc: dest:i src1:i src2:i len:3 clob:1
407 # 32 bit opcodes
408 int_add: dest:i src1:i src2:i clob:1 len:4
409 int_sub: dest:i src1:i src2:i clob:1 len:4
410 int_mul: dest:i src1:i src2:i clob:1 len:4
411 int_mul_ovf: dest:i src1:i src2:i clob:1 len:32
412 int_mul_ovf_un: dest:i src1:i src2:i clob:1 len:32
413 int_div: dest:a src1:a src2:i clob:d len:32
414 int_div_un: dest:a src1:a src2:i clob:d len:32
415 int_rem: dest:d src1:a src2:i clob:a len:32
416 int_rem_un: dest:d src1:a src2:i clob:a len:32
417 int_and: dest:i src1:i src2:i clob:1 len:4
418 int_or: dest:i src1:i src2:i clob:1 len:4
419 int_xor: dest:i src1:i src2:i clob:1 len:4
420 int_shl: dest:i src1:i src2:s clob:1 len:4
421 int_shr: dest:i src1:i src2:s clob:1 len:4
422 int_shr_un: dest:i src1:i src2:s clob:1 len:4
423 int_adc: dest:i src1:i src2:i clob:1 len:4
424 int_adc_imm: dest:i src1:i clob:1 len:8
425 int_sbb: dest:i src1:i src2:i clob:1 len:4
426 int_sbb_imm: dest:i src1:i clob:1 len:8
427 int_addcc: dest:i src1:i src2:i clob:1 len:16
428 int_subcc: dest:i src1:i src2:i clob:1 len:16
429 int_add_imm: dest:i src1:i clob:1 len:8
430 int_sub_imm: dest:i src1:i clob:1 len:8
431 int_mul_imm: dest:i src1:i clob:1 len:32
432 int_div_imm: dest:a src1:i clob:d len:32
433 int_div_un_imm: dest:a src1:i clob:d len:32
434 int_rem_un_imm: dest:d src1:i clob:a len:32
435 int_and_imm: dest:i src1:i clob:1 len:8
436 int_or_imm: dest:i src1:i clob:1 len:8
437 int_xor_imm: dest:i src1:i clob:1 len:8
438 int_shl_imm: dest:i src1:i clob:1 len:8
439 int_shr_imm: dest:i src1:i clob:1 len:8
440 int_shr_un_imm: dest:i src1:i clob:1 len:8
441 int_min: dest:i src1:i src2:i len:16 clob:1
442 int_max: dest:i src1:i src2:i len:16 clob:1
443 int_min_un: dest:i src1:i src2:i len:16 clob:1
444 int_max_un: dest:i src1:i src2:i len:16 clob:1
446 int_neg: dest:i src1:i clob:1 len:4
447 int_not: dest:i src1:i clob:1 len:4
448 int_conv_to_r4: dest:f src1:i len:15
449 int_conv_to_r8: dest:f src1:i len:9
450 int_ceq: dest:c len:8
451 int_cgt: dest:c len:8
452 int_cgt_un: dest:c len:8
453 int_clt: dest:c len:8
454 int_clt_un: dest:c len:8
456 int_cneq: dest:c len:8
457 int_cge: dest:c len:8
458 int_cle: dest:c len:8
459 int_cge_un: dest:c len:8
460 int_cle_un: dest:c len:8
462 int_beq: len:8
463 int_bne_un: len:8
464 int_blt: len:8
465 int_blt_un: len:8
466 int_bgt: len:8
467 int_bgt_un: len:8
468 int_bge: len:8
469 int_bge_un: len:8
470 int_ble: len:8
471 int_ble_un: len:8
473 card_table_wbarrier: src1:a src2:i clob:d len:56
475 relaxed_nop: len:2
476 hard_nop: len:1
478 # Linear IR opcodes
479 nop: len:0
480 dummy_use: src1:i len:0
481 dummy_iconst: dest:i len:0
482 dummy_i8const: dest:i len:0
483 dummy_r8const: dest:f len:0
484 dummy_r4const: dest:f len:0
485 not_reached: len:0
486 not_null: src1:i len:0
488 long_ceq: dest:c len:64
489 long_cgt: dest:c len:64
490 long_cgt_un: dest:c len:64
491 long_clt: dest:c len:64
492 long_clt_un: dest:c len:64
494 int_conv_to_i1: dest:i src1:i len:4
495 int_conv_to_i2: dest:i src1:i len:4
496 int_conv_to_i4: dest:i src1:i len:3
497 int_conv_to_i8: dest:i src1:i len:3
498 int_conv_to_u4: dest:i src1:i len:3
499 int_conv_to_u8: dest:i src1:i len:3
501 int_conv_to_u: dest:i src1:i len:4
502 int_conv_to_u2: dest:i src1:i len:4
503 int_conv_to_u1: dest:i src1:i len:4
504 int_conv_to_i: dest:i src1:i len:4
506 cond_exc_ieq: len:8
507 cond_exc_ine_un: len:8
508 cond_exc_ilt: len:8
509 cond_exc_ilt_un: len:8
510 cond_exc_igt: len:8
511 cond_exc_igt_un: len:8
512 cond_exc_ige: len:8
513 cond_exc_ige_un: len:8
514 cond_exc_ile: len:8
515 cond_exc_ile_un: len:8
516 cond_exc_ino: len:8
517 cond_exc_inc: len:8
519 x86_compare_membase8_imm: src1:b len:9
521 jump_table: dest:i len:18
523 cmov_ieq: dest:i src1:i src2:i len:16 clob:1
524 cmov_ige: dest:i src1:i src2:i len:16 clob:1
525 cmov_igt: dest:i src1:i src2:i len:16 clob:1
526 cmov_ile: dest:i src1:i src2:i len:16 clob:1
527 cmov_ilt: dest:i src1:i src2:i len:16 clob:1
528 cmov_ine_un: dest:i src1:i src2:i len:16 clob:1
529 cmov_ige_un: dest:i src1:i src2:i len:16 clob:1
530 cmov_igt_un: dest:i src1:i src2:i len:16 clob:1
531 cmov_ile_un: dest:i src1:i src2:i len:16 clob:1
532 cmov_ilt_un: dest:i src1:i src2:i len:16 clob:1
534 cmov_leq: dest:i src1:i src2:i len:16 clob:1
535 cmov_lge: dest:i src1:i src2:i len:16 clob:1
536 cmov_lgt: dest:i src1:i src2:i len:16 clob:1
537 cmov_lle: dest:i src1:i src2:i len:16 clob:1
538 cmov_llt: dest:i src1:i src2:i len:16 clob:1
539 cmov_lne_un: dest:i src1:i src2:i len:16 clob:1
540 cmov_lge_un: dest:i src1:i src2:i len:16 clob:1
541 cmov_lgt_un: dest:i src1:i src2:i len:16 clob:1
542 cmov_lle_un: dest:i src1:i src2:i len:16 clob:1
543 cmov_llt_un: dest:i src1:i src2:i len:16 clob:1
545 long_add_imm: dest:i src1:i clob:1 len:12
546 long_sub_imm: dest:i src1:i clob:1 len:12
547 long_and_imm: dest:i src1:i clob:1 len:12
548 long_or_imm: dest:i src1:i clob:1 len:12
549 long_xor_imm: dest:i src1:i clob:1 len:12
551 lcompare_imm: src1:i len:13
553 amd64_compare_membase_reg: src1:b src2:i len:9
554 amd64_compare_membase_imm: src1:b len:14
555 amd64_compare_reg_membase: src1:i src2:b len:9
557 amd64_add_reg_membase: dest:i src1:i src2:b clob:1 len:14
558 amd64_sub_reg_membase: dest:i src1:i src2:b clob:1 len:14
559 amd64_and_reg_membase: dest:i src1:i src2:b clob:1 len:14
560 amd64_or_reg_membase: dest:i src1:i src2:b clob:1 len:14
561 amd64_xor_reg_membase: dest:i src1:i src2:b clob:1 len:14
563 amd64_add_membase_imm: src1:b len:16
564 amd64_sub_membase_imm: src1:b len:16
565 amd64_and_membase_imm: src1:b len:13
566 amd64_or_membase_imm: src1:b len:13
567 amd64_xor_membase_imm: src1:b len:13
569 x86_and_membase_imm: src1:b len:12
570 x86_or_membase_imm: src1:b len:12
571 x86_xor_membase_imm: src1:b len:12
573 x86_add_membase_reg: src1:b src2:i len:12
574 x86_sub_membase_reg: src1:b src2:i len:12
575 x86_and_membase_reg: src1:b src2:i len:12
576 x86_or_membase_reg: src1:b src2:i len:12
577 x86_xor_membase_reg: src1:b src2:i len:12
578 x86_mul_membase_reg: src1:b src2:i len:14
580 amd64_add_membase_reg: src1:b src2:i len:13
581 amd64_sub_membase_reg: src1:b src2:i len:13
582 amd64_and_membase_reg: src1:b src2:i len:13
583 amd64_or_membase_reg: src1:b src2:i len:13
584 amd64_xor_membase_reg: src1:b src2:i len:13
585 amd64_mul_membase_reg: src1:b src2:i len:15
587 float_conv_to_r4: dest:f src1:f len:17
589 vcall2: len:64 clob:c
590 vcall2_reg: src1:i len:64 clob:c
591 vcall2_membase: src1:b len:64 clob:c
593 dyn_call: src1:i src2:i len:192 clob:c
595 localloc_imm: dest:i len:120
597 load_mem: dest:i len:16
598 loadi8_mem: dest:i len:16
599 loadi4_mem: dest:i len:16
600 loadu1_mem: dest:i len:16
601 loadu2_mem: dest:i len:16
604 #SIMD
606 addps: dest:x src1:x src2:x len:4 clob:1
607 divps: dest:x src1:x src2:x len:4 clob:1
608 mulps: dest:x src1:x src2:x len:4 clob:1
609 subps: dest:x src1:x src2:x len:4 clob:1
610 maxps: dest:x src1:x src2:x len:4 clob:1
611 minps: dest:x src1:x src2:x len:4 clob:1
612 compps: dest:x src1:x src2:x len:5 clob:1
613 andps: dest:x src1:x src2:x len:4 clob:1
614 andnps: dest:x src1:x src2:x len:4 clob:1
615 orps: dest:x src1:x src2:x len:4 clob:1
616 xorps: dest:x src1:x src2:x len:4 clob:1
618 haddps: dest:x src1:x src2:x len:5 clob:1
619 hsubps: dest:x src1:x src2:x len:5 clob:1
620 addsubps: dest:x src1:x src2:x len:5 clob:1
621 dupps_low: dest:x src1:x len:5
622 dupps_high: dest:x src1:x len:5
624 addpd: dest:x src1:x src2:x len:5 clob:1
625 divpd: dest:x src1:x src2:x len:5 clob:1
626 mulpd: dest:x src1:x src2:x len:5 clob:1
627 subpd: dest:x src1:x src2:x len:5 clob:1
628 maxpd: dest:x src1:x src2:x len:5 clob:1
629 minpd: dest:x src1:x src2:x len:5 clob:1
630 comppd: dest:x src1:x src2:x len:6 clob:1
631 andpd: dest:x src1:x src2:x len:5 clob:1
632 andnpd: dest:x src1:x src2:x len:5 clob:1
633 orpd: dest:x src1:x src2:x len:5 clob:1
634 xorpd: dest:x src1:x src2:x len:5 clob:1
635 sqrtpd: dest:x src1:x len:5 clob:1
637 haddpd: dest:x src1:x src2:x len:6 clob:1
638 hsubpd: dest:x src1:x src2:x len:6 clob:1
639 addsubpd: dest:x src1:x src2:x len:6 clob:1
640 duppd: dest:x src1:x len:6
642 pand: dest:x src1:x src2:x len:5 clob:1
643 pandn: dest:x src1:x src2:x len:5 clob:1
644 por: dest:x src1:x src2:x len:5 clob:1
645 pxor: dest:x src1:x src2:x len:5 clob:1
647 sqrtps: dest:x src1:x len:5
648 rsqrtps: dest:x src1:x len:5
649 rcpps: dest:x src1:x len:5
651 pshuflew_high: dest:x src1:x len:6
652 pshuflew_low: dest:x src1:x len:6
653 pshufled: dest:x src1:x len:6
654 shufps: dest:x src1:x src2:x len:5 clob:1
655 shufpd: dest:x src1:x src2:x len:6 clob:1
657 extract_mask: dest:i src1:x len:6
659 paddb: dest:x src1:x src2:x len:5 clob:1
660 paddw: dest:x src1:x src2:x len:5 clob:1
661 paddd: dest:x src1:x src2:x len:5 clob:1
662 paddq: dest:x src1:x src2:x len:5 clob:1
664 psubb: dest:x src1:x src2:x len:5 clob:1
665 psubw: dest:x src1:x src2:x len:5 clob:1
666 psubd: dest:x src1:x src2:x len:5 clob:1
667 psubq: dest:x src1:x src2:x len:5 clob:1
669 pmaxb_un: dest:x src1:x src2:x len:5 clob:1
670 pmaxw_un: dest:x src1:x src2:x len:6 clob:1
671 pmaxd_un: dest:x src1:x src2:x len:6 clob:1
673 pmaxb: dest:x src1:x src2:x len:6 clob:1
674 pmaxw: dest:x src1:x src2:x len:5 clob:1
675 pmaxd: dest:x src1:x src2:x len:6 clob:1
677 pavgb_un: dest:x src1:x src2:x len:5 clob:1
678 pavgw_un: dest:x src1:x src2:x len:5 clob:1
680 pminb_un: dest:x src1:x src2:x len:5 clob:1
681 pminw_un: dest:x src1:x src2:x len:6 clob:1
682 pmind_un: dest:x src1:x src2:x len:6 clob:1
684 pminb: dest:x src1:x src2:x len:6 clob:1
685 pminw: dest:x src1:x src2:x len:5 clob:1
686 pmind: dest:x src1:x src2:x len:6 clob:1
688 pcmpeqb: dest:x src1:x src2:x len:5 clob:1
689 pcmpeqw: dest:x src1:x src2:x len:5 clob:1
690 pcmpeqd: dest:x src1:x src2:x len:5 clob:1
691 pcmpeqq: dest:x src1:x src2:x len:6 clob:1
693 pcmpgtb: dest:x src1:x src2:x len:5 clob:1
694 pcmpgtw: dest:x src1:x src2:x len:5 clob:1
695 pcmpgtd: dest:x src1:x src2:x len:5 clob:1
696 pcmpgtq: dest:x src1:x src2:x len:6 clob:1
698 psum_abs_diff: dest:x src1:x src2:x len:5 clob:1
700 unpack_lowb: dest:x src1:x src2:x len:5 clob:1
701 unpack_loww: dest:x src1:x src2:x len:5 clob:1
702 unpack_lowd: dest:x src1:x src2:x len:5 clob:1
703 unpack_lowq: dest:x src1:x src2:x len:5 clob:1
704 unpack_lowps: dest:x src1:x src2:x len:5 clob:1
705 unpack_lowpd: dest:x src1:x src2:x len:5 clob:1
707 unpack_highb: dest:x src1:x src2:x len:5 clob:1
708 unpack_highw: dest:x src1:x src2:x len:5 clob:1
709 unpack_highd: dest:x src1:x src2:x len:5 clob:1
710 unpack_highq: dest:x src1:x src2:x len:5 clob:1
711 unpack_highps: dest:x src1:x src2:x len:5 clob:1
712 unpack_highpd: dest:x src1:x src2:x len:5 clob:1
714 packw: dest:x src1:x src2:x len:5 clob:1
715 packd: dest:x src1:x src2:x len:5 clob:1
717 packw_un: dest:x src1:x src2:x len:5 clob:1
718 packd_un: dest:x src1:x src2:x len:6 clob:1
720 paddb_sat: dest:x src1:x src2:x len:5 clob:1
721 paddb_sat_un: dest:x src1:x src2:x len:5 clob:1
723 paddw_sat: dest:x src1:x src2:x len:5 clob:1
724 paddw_sat_un: dest:x src1:x src2:x len:5 clob:1
726 psubb_sat: dest:x src1:x src2:x len:5 clob:1
727 psubb_sat_un: dest:x src1:x src2:x len:5 clob:1
729 psubw_sat: dest:x src1:x src2:x len:5 clob:1
730 psubw_sat_un: dest:x src1:x src2:x len:5 clob:1
732 pmulw: dest:x src1:x src2:x len:5 clob:1
733 pmuld: dest:x src1:x src2:x len:6 clob:1
734 pmulq: dest:x src1:x src2:x len:5 clob:1
736 pmulw_high_un: dest:x src1:x src2:x len:5 clob:1
737 pmulw_high: dest:x src1:x src2:x len:5 clob:1
739 pshrw: dest:x src1:x len:6 clob:1
740 pshrw_reg: dest:x src1:x src2:x len:5 clob:1
742 psarw: dest:x src1:x len:6 clob:1
743 psarw_reg: dest:x src1:x src2:x len:5 clob:1
745 pshlw: dest:x src1:x len:6 clob:1
746 pshlw_reg: dest:x src1:x src2:x len:5 clob:1
748 pshrd: dest:x src1:x len:6 clob:1
749 pshrd_reg: dest:x src1:x src2:x len:5 clob:1
751 psard: dest:x src1:x len:6 clob:1
752 psard_reg: dest:x src1:x src2:x len:5 clob:1
754 pshld: dest:x src1:x len:6 clob:1
755 pshld_reg: dest:x src1:x src2:x len:5 clob:1
757 pshrq: dest:x src1:x len:6 clob:1
758 pshrq_reg: dest:x src1:x src2:x len:5 clob:1
760 pshlq: dest:x src1:x len:6 clob:1
761 pshlq_reg: dest:x src1:x src2:x len:5 clob:1
763 cvtdq2pd: dest:x src1:x len:5 clob:1
764 cvtdq2ps: dest:x src1:x len:4 clob:1
765 cvtpd2dq: dest:x src1:x len:5 clob:1
766 cvtpd2ps: dest:x src1:x len:5 clob:1
767 cvtps2dq: dest:x src1:x len:5 clob:1
768 cvtps2pd: dest:x src1:x len:4 clob:1
769 cvttpd2dq: dest:x src1:x len:5 clob:1
770 cvttps2dq: dest:x src1:x len:5 clob:1
772 xmove: dest:x src1:x len:5
773 xzero: dest:x len:5
774 xones: dest:x len:5
776 iconv_to_x: dest:x src1:i len:5
777 extract_i4: dest:i src1:x len:5
779 extract_i8: dest:i src1:x len:9
781 extract_i2: dest:i src1:x len:13
782 extract_u2: dest:i src1:x len:13
783 extract_i1: dest:i src1:x len:13
784 extract_u1: dest:i src1:x len:13
785 extract_r8: dest:f src1:x len:5
787 iconv_to_r4_raw: dest:f src1:i len:10
789 insert_i2: dest:x src1:x src2:i len:6 clob:1
791 extractx_u2: dest:i src1:x len:6
792 insertx_u1_slow: dest:x src1:i src2:i len:18 clob:x
794 insertx_i4_slow: dest:x src1:x src2:i len:16 clob:x
795 insertx_i8_slow: dest:x src1:x src2:i len:13
796 insertx_r4_slow: dest:x src1:x src2:f len:24
797 insertx_r8_slow: dest:x src1:x src2:f len:24
799 loadx_membase: dest:x src1:b len:9
800 storex_membase: dest:b src1:x len:9
801 storex_membase_reg: dest:b src1:x len:9
803 loadx_aligned_membase: dest:x src1:b len:7
804 storex_aligned_membase_reg: dest:b src1:x len:7
805 storex_nta_membase_reg: dest:b src1:x len:7
807 fconv_to_r8_x: dest:x src1:f len:4
808 xconv_r8_to_i4: dest:y src1:x len:7
810 prefetch_membase: src1:b len:4
812 expand_i2: dest:x src1:i len:18
813 expand_i4: dest:x src1:i len:11
814 expand_i8: dest:x src1:i len:11
815 expand_r4: dest:x src1:f len:16
816 expand_r8: dest:x src1:f len:13
818 roundp: dest:x src1:x len:10
820 liverange_start: len:0
821 liverange_end: len:0
822 gc_liveness_def: len:0
823 gc_liveness_use: len:0
824 gc_spill_slot_liveness_def: len:0
825 gc_param_slot_liveness_def: len:0
827 generic_class_init: src1:A len:32 clob:c
828 get_last_error: dest:i len:32
830 fill_prof_call_ctx: src1:i len:128
832 lzcnt32: dest:i src1:i len:16
833 lzcnt64: dest:i src1:i len:16
834 popcnt32: dest:i src1:i len:16
835 popcnt64: dest:i src1:i len:16