2 * amd64-codegen.h: Macros for generating amd64 code
5 * Paolo Molaro (lupus@ximian.com)
6 * Intel Corporation (ORP Project)
7 * Sergey Chaban (serge@wildwestsoftware.com)
8 * Dietmar Maurer (dietmar@ximian.com)
12 * Copyright (C) 2000 Intel Corporation. All rights reserved.
13 * Copyright (C) 2001, 2002 Ximian, Inc.
61 AMD64_REX_B = 1, /* The register in r/m field, base register in SIB byte, or reg in opcode is 8-15 rather than 0-7 */
62 AMD64_REX_X = 2, /* The index register in SIB byte is 8-15 rather than 0-7 */
63 AMD64_REX_R = 4, /* The reg field of ModRM byte is 8-15 rather than 0-7 */
64 AMD64_REX_W = 8 /* Opeartion is 64-bits instead of 32 (default) or 16 (with 0x66 prefix) */
67 #define AMD64_CALLEE_REGS ((1<<AMD64_RAX) | (1<<AMD64_RCX) | (1<<AMD64_RDX) | (1<<AMD64_RSI) | (1<<AMD64_RDI) | (1<<AMD64_R8) | (1<<AMD64_R9) | (1<<AMD64_R10))
68 #define AMD64_IS_CALLEE_REG(reg) (AMD64_CALLEE_REGS & (1 << (reg)))
70 #define AMD64_ARGUMENT_REGS ((1<<AMD64_RDI) | (1<<AMD64_RSI) | (1<<AMD64_RDX) | (1<<AMD64_RCX) | (1<<AMD64_R8) | (1<<AMD64_R9))
71 #define AMD64_IS_ARGUMENT_REG(reg) (AMD64_ARGUMENT_REGS & (1 << (reg)))
73 #define AMD64_CALLEE_SAVED_REGS ((1<<AMD64_RBX) | (1<<AMD64_R12) | (1<<AMD64_R13) | (1<<AMD64_R14) | (1<<AMD64_R15))
74 #define AMD64_IS_CALLEE_SAVED_REG(reg) (AMD64_CALLEE_SAVED_REGS & (1 << (reg)))
76 #define AMD64_REX(bits) ((unsigned char)(0x40 | (bits)))
77 #define amd64_emit_rex(inst, width, reg_modrm, reg_index, reg_rm_base_opcode) \
79 unsigned char _amd64_rex_bits = \
80 (((width) > 4) ? AMD64_REX_W : 0) | \
81 (((reg_modrm) > 7) ? AMD64_REX_R : 0) | \
82 (((reg_index) > 7) ? AMD64_REX_X : 0) | \
83 (((reg_rm_base_opcode) > 7) ? AMD64_REX_B : 0); \
84 if (_amd64_rex_bits != 0) *(inst)++ = AMD64_REX(_amd64_rex_bits); \
92 #include "../x86/x86-codegen.h"
95 /* Need to fill this info in for amd64. */
99 // bitvector mask for callee-saved registers
101 #define X86_ESI_MASK (1<<X86_ESI)
102 #define X86_EDI_MASK (1<<X86_EDI)
103 #define X86_EBX_MASK (1<<X86_EBX)
104 #define X86_EBP_MASK (1<<X86_EBP)
106 #define X86_CALLEE_REGS ((1<<X86_EAX) | (1<<X86_ECX) | (1<<X86_EDX))
107 #define X86_CALLER_REGS ((1<<X86_EBX) | (1<<X86_EBP) | (1<<X86_ESI) | (1<<X86_EDI))
108 #define X86_BYTE_REGS ((1<<X86_EAX) | (1<<X86_ECX) | (1<<X86_EDX) | (1<<X86_EBX))
110 #define X86_IS_SCRATCH(reg) (X86_CALLER_REGS & (1 << (reg))) /* X86_EAX, X86_ECX, or X86_EDX */
111 #define X86_IS_CALLEE(reg) (X86_CALLEE_REGS & (1 << (reg))) /* X86_ESI, X86_EDI, X86_EBX, or X86_EBP */
113 #define X86_IS_BYTE_REG(reg) ((reg) < 4)
118 // +--------------------------------+
119 // | in_arg[0] = var[0] |
120 // | in_arg[1] = var[1] |
122 // | in_arg[n_arg-1] = var[n_arg-1] |
123 // +--------------------------------+
125 // +--------------------------------+
126 // | saved EBP | <-- frame pointer (EBP)
127 // +--------------------------------+
129 // +--------------------------------+
131 // | var[n_arg+1] | local variables area
134 // +--------------------------------+
137 // | spill area | area for spilling mimic stack
139 // +--------------------------------|
141 // | ebp [ESP_Frame only] |
142 // | esi | 0..3 callee-saved regs
143 // | edi | <-- stack pointer (ESP)
144 // +--------------------------------+
146 // | stk1 | operand stack area/
147 // | . . . | out args
149 // +--------------------------------|
155 #define amd64_modrm_mod(modrm) ((modrm) >> 6)
156 #define amd64_modrm_reg(modrm) (((modrm) >> 3) & 0x7)
157 #define amd64_modrm_rm(modrm) ((modrm) & 0x7)
159 #define amd64_rex_r(rex) ((((rex) >> 2) & 0x1) << 3)
160 #define amd64_rex_x(rex) ((((rex) >> 1) & 0x1) << 3)
161 #define amd64_rex_b(rex) ((((rex) >> 0) & 0x1) << 3)
163 #define amd64_is_imm32(val) ((glong)val >= -((glong)1<<31) && (glong)val <= (((glong)1<<31)-1))
165 #define x86_imm_emit64(inst,imm) \
167 amd64_imm_buf imb; imb.val = (long) (imm); \
168 *(inst)++ = imb.b [0]; \
169 *(inst)++ = imb.b [1]; \
170 *(inst)++ = imb.b [2]; \
171 *(inst)++ = imb.b [3]; \
172 *(inst)++ = imb.b [4]; \
173 *(inst)++ = imb.b [5]; \
174 *(inst)++ = imb.b [6]; \
175 *(inst)++ = imb.b [7]; \
178 #define amd64_alu_reg_imm_size(inst,opc,reg,imm,size) \
180 if ((reg) == X86_EAX) { \
181 amd64_emit_rex(inst, size, 0, 0, 0); \
182 *(inst)++ = (((unsigned char)(opc)) << 3) + 5; \
183 x86_imm_emit32 ((inst), (imm)); \
186 if (x86_is_imm8((imm))) { \
187 amd64_emit_rex(inst, size, 0, 0, (reg)); \
188 *(inst)++ = (unsigned char)0x83; \
189 x86_reg_emit ((inst), (opc), (reg)); \
190 x86_imm_emit8 ((inst), (imm)); \
192 amd64_emit_rex(inst, size, 0, 0, (reg)); \
193 *(inst)++ = (unsigned char)0x81; \
194 x86_reg_emit ((inst), (opc), (reg)); \
195 x86_imm_emit32 ((inst), (imm)); \
199 #define amd64_alu_reg_imm(inst,opc,reg,imm) amd64_alu_reg_imm_size((inst),(opc),(reg),(imm),8)
201 #define amd64_alu_reg_reg_size(inst,opc,dreg,reg,size) \
203 amd64_emit_rex(inst, size, (dreg), 0, (reg)); \
204 *(inst)++ = (((unsigned char)(opc)) << 3) + 3; \
205 x86_reg_emit ((inst), (dreg), (reg)); \
208 #define amd64_alu_reg_reg(inst,opc,dreg,reg) amd64_alu_reg_reg_size ((inst),(opc),(dreg),(reg),8)
210 #define amd64_mov_regp_reg(inst,regp,reg,size) \
213 *(inst)++ = (unsigned char)0x66; \
214 amd64_emit_rex(inst, (size), (reg), 0, (regp)); \
216 case 1: *(inst)++ = (unsigned char)0x88; break; \
217 case 2: case 4: case 8: *(inst)++ = (unsigned char)0x89; break; \
218 default: assert (0); \
220 x86_regp_emit ((inst), (reg), (regp)); \
223 #define amd64_mov_membase_reg(inst,basereg,disp,reg,size) \
226 *(inst)++ = (unsigned char)0x66; \
227 amd64_emit_rex(inst, (size), (reg), 0, (basereg)); \
229 case 1: *(inst)++ = (unsigned char)0x88; break; \
230 case 2: case 4: case 8: *(inst)++ = (unsigned char)0x89; break; \
231 default: assert (0); \
233 x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \
237 #define amd64_mov_reg_reg(inst,dreg,reg,size) \
240 *(inst)++ = (unsigned char)0x66; \
241 amd64_emit_rex(inst, (size), (dreg), 0, (reg)); \
243 case 1: *(inst)++ = (unsigned char)0x8a; break; \
244 case 2: case 4: case 8: *(inst)++ = (unsigned char)0x8b; break; \
245 default: assert (0); \
247 x86_reg_emit ((inst), (dreg), (reg)); \
250 #define amd64_mov_reg_mem(inst,reg,mem,size) \
253 *(inst)++ = (unsigned char)0x66; \
254 amd64_emit_rex(inst, (size), (reg), 0, 0); \
256 case 1: *(inst)++ = (unsigned char)0x8a; break; \
257 case 2: case 4: case 8: *(inst)++ = (unsigned char)0x8b; break; \
258 default: assert (0); \
260 x86_address_byte ((inst), 0, (reg), 4); \
261 x86_address_byte ((inst), 0, 4, 5); \
262 x86_imm_emit32 ((inst), (mem)); \
265 #define amd64_mov_reg_membase(inst,reg,basereg,disp,size) \
268 *(inst)++ = (unsigned char)0x66; \
269 amd64_emit_rex(inst, (size), (reg), 0, (basereg)); \
271 case 1: *(inst)++ = (unsigned char)0x8a; break; \
272 case 2: case 4: case 8: *(inst)++ = (unsigned char)0x8b; break; \
273 default: assert (0); \
275 x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \
278 #define amd64_movzx_reg_membase(inst,reg,basereg,disp,size) \
280 amd64_emit_rex(inst, (size), (reg), 0, (basereg)); \
282 case 1: *(inst)++ = (unsigned char)0x0f; *(inst)++ = (unsigned char)0xb6; break; \
283 case 2: *(inst)++ = (unsigned char)0x0f; *(inst)++ = (unsigned char)0xb7; break; \
284 case 4: case 8: *(inst)++ = (unsigned char)0x8b; break; \
285 default: assert (0); \
287 x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \
290 #define amd64_movsxd_reg_membase(inst,reg,basereg,disp) \
292 amd64_emit_rex(inst,8,(reg),0,(basereg)); \
293 *(inst)++ = (unsigned char)0x63; \
294 x86_membase_emit ((inst), ((reg)&0x7), ((basereg)&0x7), (disp)); \
297 #define amd64_movsxd_reg_reg(inst,dreg,reg) \
299 amd64_emit_rex(inst,8,(dreg),0,(reg)); \
300 *(inst)++ = (unsigned char)0x63; \
301 x86_reg_emit ((inst), (dreg), (reg)); \
304 /* Pretty much the only instruction that supports a 64-bit immediate. Optimize for common case of
305 * 32-bit immediate. Pepper with casts to avoid warnings.
307 #define amd64_mov_reg_imm_size(inst,reg,imm,size) \
309 amd64_emit_rex(inst, (size), 0, 0, (reg)); \
310 *(inst)++ = (unsigned char)0xb8 + ((reg) & 0x7); \
312 x86_imm_emit64 ((inst), (long)(imm)); \
314 x86_imm_emit32 ((inst), (int)(long)(imm)); \
317 #define amd64_mov_reg_imm(inst,reg,imm) \
319 int _amd64_width_temp = ((long)(imm) == (long)(int)(long)(imm)); \
320 amd64_mov_reg_imm_size ((inst), (reg), (imm), (_amd64_width_temp ? 4 : 8)); \
323 #define amd64_set_reg_template(inst,reg) amd64_mov_reg_imm_size ((inst),(reg), 0, 8)
325 #define amd64_set_template(inst,reg) amd64_set_reg_template((inst),(reg))
327 #define amd64_mov_membase_imm(inst,basereg,disp,imm,size) \
330 *(inst)++ = (unsigned char)0x66; \
331 amd64_emit_rex(inst, (size), 0, 0, (basereg)); \
333 *(inst)++ = (unsigned char)0xc6; \
334 x86_membase_emit ((inst), 0, (basereg) & 0x7, (disp)); \
335 x86_imm_emit8 ((inst), (imm)); \
336 } else if ((size) == 2) { \
337 *(inst)++ = (unsigned char)0xc7; \
338 x86_membase_emit ((inst), 0, (basereg) & 0x7, (disp)); \
339 x86_imm_emit16 ((inst), (imm)); \
341 *(inst)++ = (unsigned char)0xc7; \
342 x86_membase_emit ((inst), 0, (basereg) & 0x7, (disp)); \
343 x86_imm_emit32 ((inst), (imm)); \
347 #define amd64_membase_emit(inst,reg,basereg,disp) do { \
348 if ((basereg) == AMD64_RIP) { \
349 x86_address_byte ((inst), 0, (reg)&0x7, 5); \
350 x86_imm_emit32 ((inst), (disp)); \
353 x86_membase_emit ((inst),(reg)&0x7, (basereg)&0x7, (disp)); \
356 #define amd64_lea_membase(inst,reg,basereg,disp) \
358 amd64_emit_rex(inst, 8, (reg), 0, (basereg)); \
359 *(inst)++ = (unsigned char)0x8d; \
360 amd64_membase_emit ((inst), (reg), (basereg), (disp)); \
363 /* Instruction are implicitly 64-bits so don't generate REX for just the size. */
364 #define amd64_push_reg(inst,reg) \
366 amd64_emit_rex(inst, 0, 0, 0, (reg)); \
367 *(inst)++ = (unsigned char)0x50 + ((reg) & 0x7); \
370 /* Instruction is implicitly 64-bits so don't generate REX for just the size. */
371 #define amd64_push_membase(inst,basereg,disp) \
373 amd64_emit_rex(inst, 0, 0, 0, (basereg)); \
374 *(inst)++ = (unsigned char)0xff; \
375 x86_membase_emit ((inst), 6, (basereg) & 0x7, (disp)); \
378 #define amd64_pop_reg(inst,reg) \
380 amd64_emit_rex(inst, 0, 0, 0, (reg)); \
381 *(inst)++ = (unsigned char)0x58 + ((reg) & 0x7); \
384 #define amd64_call_reg(inst,reg) \
386 amd64_emit_rex(inst, 8, 0, 0, (reg)); \
387 *(inst)++ = (unsigned char)0xff; \
388 x86_reg_emit ((inst), 2, ((reg) & 0x7)); \
391 #define amd64_ret(inst) do { *(inst)++ = (unsigned char)0xc3; } while (0)
392 #define amd64_leave(inst) do { *(inst)++ = (unsigned char)0xc9; } while (0)
393 #define amd64_movsd_reg_regp(inst,reg,regp) \
395 *(inst)++ = (unsigned char)0xf2; \
396 amd64_emit_rex(inst, 0, (reg), 0, (regp)); \
397 *(inst)++ = (unsigned char)0x0f; \
398 *(inst)++ = (unsigned char)0x10; \
399 x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7); \
402 #define amd64_movsd_regp_reg(inst,regp,reg) \
404 *(inst)++ = (unsigned char)0xf2; \
405 amd64_emit_rex(inst, 0, (reg), 0, (regp)); \
406 *(inst)++ = (unsigned char)0x0f; \
407 *(inst)++ = (unsigned char)0x11; \
408 x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7); \
411 #define amd64_movss_reg_regp(inst,reg,regp) \
413 *(inst)++ = (unsigned char)0xf3; \
414 amd64_emit_rex(inst, 0, (reg), 0, (regp)); \
415 *(inst)++ = (unsigned char)0x0f; \
416 *(inst)++ = (unsigned char)0x10; \
417 x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7); \
420 #define amd64_movss_regp_reg(inst,regp,reg) \
422 *(inst)++ = (unsigned char)0xf3; \
423 amd64_emit_rex(inst, 0, (reg), 0, (regp)); \
424 *(inst)++ = (unsigned char)0x0f; \
425 *(inst)++ = (unsigned char)0x11; \
426 x86_regp_emit ((inst), (reg) & 0x7, (regp) & 0x7); \
429 #define amd64_movsd_reg_membase(inst,reg,basereg,disp) \
431 *(inst)++ = (unsigned char)0xf2; \
432 amd64_emit_rex(inst, 0, (reg), 0, (basereg)); \
433 *(inst)++ = (unsigned char)0x0f; \
434 *(inst)++ = (unsigned char)0x10; \
435 x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp)); \
438 #define amd64_movss_reg_membase(inst,reg,basereg,disp) \
440 *(inst)++ = (unsigned char)0xf3; \
441 amd64_emit_rex(inst, 0, (reg), 0, (basereg)); \
442 *(inst)++ = (unsigned char)0x0f; \
443 *(inst)++ = (unsigned char)0x10; \
444 x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp)); \
447 #define amd64_movsd_membase_reg(inst,basereg,disp,reg) \
449 *(inst)++ = (unsigned char)0xf2; \
450 amd64_emit_rex(inst, 0, (reg), 0, (basereg)); \
451 *(inst)++ = (unsigned char)0x0f; \
452 *(inst)++ = (unsigned char)0x11; \
453 x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp)); \
456 #define amd64_movss_membase_reg(inst,basereg,disp,reg) \
458 *(inst)++ = (unsigned char)0xf3; \
459 amd64_emit_rex(inst, 0, (reg), 0, (basereg)); \
460 *(inst)++ = (unsigned char)0x0f; \
461 *(inst)++ = (unsigned char)0x11; \
462 x86_membase_emit ((inst), (reg) & 0x7, (basereg) & 0x7, (disp)); \
465 /* The original inc_reg opcode is used as the REX prefix */
466 #define amd64_inc_reg_size(inst,reg,size) \
468 amd64_emit_rex ((inst),(size),0,0,(reg)); \
469 *(inst)++ = (unsigned char)0xff; \
470 x86_reg_emit ((inst),0,(reg) & 0x7); \
473 #define amd64_dec_reg_size(inst,reg,size) \
475 amd64_emit_rex ((inst),(size),0,0,(reg)); \
476 *(inst)++ = (unsigned char)0xff; \
477 x86_reg_emit ((inst),1,(reg) & 0x7); \
480 #define amd64_padding_size(inst,size) \
481 do { if (size == 1) x86_padding ((inst),(size)); else { amd64_emit_rex ((inst),8,0,0,0); x86_padding((inst),(size) - 1); } } while (0)
483 #define amd64_fld_membase_size(inst,basereg,disp,is_double,size) do { \
484 amd64_emit_rex ((inst),0,0,0,(basereg)); \
485 *(inst)++ = (is_double) ? (unsigned char)0xdd : (unsigned char)0xd9; \
486 amd64_membase_emit ((inst), 0, (basereg), (disp)); \
489 /* Generated from x86-codegen.h */
491 #define amd64_breakpoint_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_breakpoint(inst); } while (0)
492 #define amd64_cld_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_cld(inst); } while (0)
493 #define amd64_stosb_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_stosb(inst); } while (0)
494 #define amd64_stosl_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_stosl(inst); } while (0)
495 #define amd64_stosd_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_stosd(inst); } while (0)
496 #define amd64_movsb_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_movsb(inst); } while (0)
497 #define amd64_movsl_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_movsl(inst); } while (0)
498 #define amd64_movsd_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_movsd(inst); } while (0)
499 #define amd64_prefix_size(inst,p,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_prefix((inst), p); } while (0)
500 #define amd64_rdtsc_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_rdtsc(inst); } while (0)
501 #define amd64_cmpxchg_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_cmpxchg_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
502 #define amd64_cmpxchg_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_cmpxchg_mem_reg((inst),(mem),((reg)&0x7)); } while (0)
503 #define amd64_cmpxchg_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_cmpxchg_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7)); } while (0)
504 #define amd64_xchg_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_xchg_reg_reg((inst),((dreg)&0x7),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
505 #define amd64_xchg_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_xchg_mem_reg((inst),(mem),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
506 #define amd64_xchg_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg))); x86_xchg_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
507 #define amd64_inc_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_inc_mem((inst),(mem)); } while (0)
508 #define amd64_inc_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_inc_membase((inst),((basereg)&0x7),(disp)); } while (0)
509 //#define amd64_inc_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_inc_reg((inst),((reg)&0x7)); } while (0)
510 #define amd64_dec_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_dec_mem((inst),(mem)); } while (0)
511 #define amd64_dec_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_dec_membase((inst),((basereg)&0x7),(disp)); } while (0)
512 //#define amd64_dec_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_dec_reg((inst),((reg)&0x7)); } while (0)
513 #define amd64_not_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_not_mem((inst),(mem)); } while (0)
514 #define amd64_not_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_not_membase((inst),((basereg)&0x7),(disp)); } while (0)
515 #define amd64_not_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_not_reg((inst),((reg)&0x7)); } while (0)
516 #define amd64_neg_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_neg_mem((inst),(mem)); } while (0)
517 #define amd64_neg_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_neg_membase((inst),((basereg)&0x7),(disp)); } while (0)
518 #define amd64_neg_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_neg_reg((inst),((reg)&0x7)); } while (0)
519 #define amd64_nop_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_nop(inst); } while (0)
520 //#define amd64_alu_reg_imm_size(inst,opc,reg,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_reg_imm((inst),(opc),((reg)&0x7),(imm)); } while (0)
521 #define amd64_alu_mem_imm_size(inst,opc,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_alu_mem_imm((inst),(opc),(mem),(imm)); } while (0)
522 #define amd64_alu_membase_imm_size(inst,opc,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_alu_membase_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); } while (0)
523 #define amd64_alu_mem_reg_size(inst,opc,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_mem_reg((inst),(opc),(mem),((reg)&0x7)); } while (0)
524 #define amd64_alu_membase_reg_size(inst,opc,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_alu_membase_reg((inst),(opc),((basereg)&0x7),(disp),((reg)&0x7)); } while (0)
525 //#define amd64_alu_reg_reg_size(inst,opc,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_alu_reg_reg((inst),(opc),((dreg)&0x7),((reg)&0x7)); } while (0)
526 #define amd64_alu_reg8_reg8_size(inst,opc,dreg,reg,is_dreg_h,is_reg_h,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_alu_reg8_reg8((inst),(opc),((dreg)&0x7),((reg)&0x7),(is_dreg_h),(is_reg_h)); } while (0)
527 #define amd64_alu_reg_mem_size(inst,opc,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_alu_reg_mem((inst),(opc),((reg)&0x7),(mem)); } while (0)
528 #define amd64_alu_reg_membase_size(inst,opc,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_alu_reg_membase((inst),(opc),((reg)&0x7),((basereg)&0x7),(disp)); } while (0)
529 #define amd64_test_reg_imm_size(inst,reg,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_test_reg_imm((inst),((reg)&0x7),(imm)); } while (0)
530 #define amd64_test_mem_imm_size(inst,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_test_mem_imm((inst),(mem),(imm)); } while (0)
531 #define amd64_test_membase_imm_size(inst,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_test_membase_imm((inst),((basereg)&0x7),(disp),(imm)); } while (0)
532 #define amd64_test_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_test_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
533 #define amd64_test_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_test_mem_reg((inst),(mem),((reg)&0x7)); } while (0)
534 #define amd64_test_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_test_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7)); } while (0)
535 #define amd64_shift_reg_imm_size(inst,opc,reg,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_reg_imm((inst),(opc),((reg)&0x7),(imm)); } while (0)
536 #define amd64_shift_mem_imm_size(inst,opc,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_mem_imm((inst),(opc),(mem),(imm)); } while (0)
537 #define amd64_shift_membase_imm_size(inst,opc,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_shift_membase_imm((inst),(opc),((basereg)&0x7),(disp),(imm)); } while (0)
538 #define amd64_shift_reg_size(inst,opc,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_reg((inst),(opc),((reg)&0x7)); } while (0)
539 #define amd64_shift_mem_size(inst,opc,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_shift_mem((inst),(opc),(mem)); } while (0)
540 #define amd64_shift_membase_size(inst,opc,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_shift_membase((inst),(opc),((basereg)&0x7),(disp)); } while (0)
541 #define amd64_shrd_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shrd_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
542 #define amd64_shrd_reg_imm_size(inst,dreg,reg,shamt,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shrd_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(shamt)); } while (0)
543 #define amd64_shld_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shld_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
544 #define amd64_shld_reg_imm_size(inst,dreg,reg,shamt,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_shld_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(shamt)); } while (0)
545 #define amd64_mul_reg_size(inst,reg,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mul_reg((inst),((reg)&0x7),(is_signed)); } while (0)
546 #define amd64_mul_mem_size(inst,mem,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_mul_mem((inst),(mem),(is_signed)); } while (0)
547 #define amd64_mul_membase_size(inst,basereg,disp,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_mul_membase((inst),((basereg)&0x7),(disp),(is_signed)); } while (0)
548 #define amd64_imul_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_imul_reg_reg((inst),((dreg)&0x7),((reg)&0x7)); } while (0)
549 #define amd64_imul_reg_mem_size(inst,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_imul_reg_mem((inst),((reg)&0x7),(mem)); } while (0)
550 #define amd64_imul_reg_membase_size(inst,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_imul_reg_membase((inst),((reg)&0x7),((basereg)&0x7),(disp)); } while (0)
551 #define amd64_imul_reg_reg_imm_size(inst,dreg,reg,imm,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_imul_reg_reg_imm((inst),((dreg)&0x7),((reg)&0x7),(imm)); } while (0)
552 #define amd64_imul_reg_mem_imm_size(inst,reg,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_imul_reg_mem_imm((inst),((reg)&0x7),(mem),(imm)); } while (0)
553 #define amd64_imul_reg_membase_imm_size(inst,reg,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_imul_reg_membase_imm((inst),((reg)&0x7),((basereg)&0x7),(disp),(imm)); } while (0)
554 #define amd64_div_reg_size(inst,reg,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_div_reg((inst),((reg)&0x7),(is_signed)); } while (0)
555 #define amd64_div_mem_size(inst,mem,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_div_mem((inst),(mem),(is_signed)); } while (0)
556 #define amd64_div_membase_size(inst,basereg,disp,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_div_membase((inst),((basereg)&0x7),(disp),(is_signed)); } while (0)
557 #define amd64_mov_mem_reg_size(inst,mem,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_mem_reg((inst),(mem),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
558 //#define amd64_mov_regp_reg_size(inst,regp,reg,size) do { amd64_emit_rex ((inst),(size),(regp),0,(reg)); x86_mov_regp_reg((inst),(regp),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
559 //#define amd64_mov_membase_reg_size(inst,basereg,disp,reg,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_mov_membase_reg((inst),((basereg)&0x7),(disp),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
560 #define amd64_mov_memindex_reg_size(inst,basereg,disp,indexreg,shift,reg,size) do { amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_mov_memindex_reg((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
561 #define amd64_mov_reg_reg_size(inst,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_mov_reg_reg((inst),((dreg)&0x7),((reg)&0x7),(size) == 8 ? 4 : (size)); } while (0)
562 //#define amd64_mov_reg_mem_size(inst,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_reg_mem((inst),((reg)&0x7),(mem),(size) == 8 ? 4 : (size)); } while (0)
563 //#define amd64_mov_reg_membase_size(inst,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),(reg),0,(basereg)); x86_mov_reg_membase((inst),((reg)&0x7),((basereg)&0x7),(disp),(size) == 8 ? 4 : (size)); } while (0)
564 #define amd64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) do { amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_mov_reg_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(size) == 8 ? 4 : (size)); } while (0)
565 #define amd64_clear_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_clear_reg((inst),((reg)&0x7)); } while (0)
566 //#define amd64_mov_reg_imm_size(inst,reg,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_mov_reg_imm((inst),((reg)&0x7),(imm)); } while (0)
567 #define amd64_mov_mem_imm_size(inst,mem,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_mov_mem_imm((inst),(mem),(imm),(size) == 8 ? 4 : (size)); } while (0)
568 //#define amd64_mov_membase_imm_size(inst,basereg,disp,imm,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_mov_membase_imm((inst),((basereg)&0x7),(disp),(imm),(size) == 8 ? 4 : (size)); } while (0)
569 #define amd64_mov_memindex_imm_size(inst,basereg,disp,indexreg,shift,imm,size) do { amd64_emit_rex ((inst),(size),0,(indexreg),(basereg)); x86_mov_memindex_imm((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(imm),(size) == 8 ? 4 : (size)); } while (0)
570 #define amd64_lea_mem_size(inst,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_lea_mem((inst),((reg)&0x7),(mem)); } while (0)
571 //#define amd64_lea_membase_size(inst,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_lea_membase((inst),((reg)&0x7),((basereg)&0x7),(disp)); } while (0)
572 #define amd64_lea_memindex_size(inst,reg,basereg,disp,indexreg,shift,size) do { amd64_emit_rex ((inst),(size),(reg),(indexreg),(basereg)); x86_lea_memindex((inst),((reg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift)); } while (0)
573 #define amd64_widen_reg_size(inst,dreg,reg,is_signed,is_half,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_widen_reg((inst),((dreg)&0x7),((reg)&0x7),(is_signed),(is_half)); } while (0)
574 #define amd64_widen_mem_size(inst,dreg,mem,is_signed,is_half,size) do { amd64_emit_rex ((inst),(size),(dreg),0,0); x86_widen_mem((inst),((dreg)&0x7),(mem),(is_signed),(is_half)); } while (0)
575 #define amd64_widen_membase_size(inst,dreg,basereg,disp,is_signed,is_half,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(basereg)); x86_widen_membase((inst),((dreg)&0x7),((basereg)&0x7),(disp),(is_signed),(is_half)); } while (0)
576 #define amd64_widen_memindex_size(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half,size) do { amd64_emit_rex ((inst),(size),(dreg),(indexreg),(basereg)); x86_widen_memindex((inst),((dreg)&0x7),((basereg)&0x7),(disp),((indexreg)&0x7),(shift),(is_signed),(is_half)); } while (0)
577 #define amd64_cdq_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_cdq(inst); } while (0)
578 #define amd64_wait_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_wait(inst); } while (0)
579 #define amd64_fp_op_mem_size(inst,opc,mem,is_double,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fp_op_mem((inst),(opc),(mem),(is_double)); } while (0)
580 #define amd64_fp_op_membase_size(inst,opc,basereg,disp,is_double,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fp_op_membase((inst),(opc),((basereg)&0x7),(disp),(is_double)); } while (0)
581 #define amd64_fp_op_size(inst,opc,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fp_op((inst),(opc),(index)); } while (0)
582 #define amd64_fp_op_reg_size(inst,opc,index,pop_stack,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fp_op_reg((inst),(opc),(index),(pop_stack)); } while (0)
583 #define amd64_fp_int_op_membase_size(inst,opc,basereg,disp,is_int,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fp_int_op_membase((inst),(opc),((basereg)&0x7),(disp),(is_int)); } while (0)
584 #define amd64_fstp_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fstp((inst),(index)); } while (0)
585 #define amd64_fcompp_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fcompp(inst); } while (0)
586 #define amd64_fucompp_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fucompp(inst); } while (0)
587 #define amd64_fnstsw_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fnstsw(inst); } while (0)
588 #define amd64_fnstcw_size(inst,mem,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fnstcw((inst),(mem)); } while (0)
589 #define amd64_fnstcw_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_fnstcw_membase((inst),((basereg)&0x7),(disp)); } while (0)
590 #define amd64_fldcw_size(inst,mem,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fldcw((inst),(mem)); } while (0)
591 #define amd64_fldcw_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fldcw_membase((inst),((basereg)&0x7),(disp)); } while (0)
592 #define amd64_fchs_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fchs(inst); } while (0)
593 #define amd64_frem_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_frem(inst); } while (0)
594 #define amd64_fxch_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fxch((inst),(index)); } while (0)
595 #define amd64_fcomi_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fcomi((inst),(index)); } while (0)
596 #define amd64_fcomip_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fcomip((inst),(index)); } while (0)
597 #define amd64_fucomi_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fucomi((inst),(index)); } while (0)
598 #define amd64_fucomip_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fucomip((inst),(index)); } while (0)
599 #define amd64_fld_size(inst,mem,is_double,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fld((inst),(mem),(is_double)); } while (0)
600 //#define amd64_fld_membase_size(inst,basereg,disp,is_double,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fld_membase((inst),((basereg)&0x7),(disp),(is_double)); } while (0)
601 #define amd64_fld80_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fld80_mem((inst),(mem)); } while (0)
602 #define amd64_fld80_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_fld80_membase((inst),((basereg)&0x7),(disp)); } while (0)
603 #define amd64_fild_size(inst,mem,is_long,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fild((inst),(mem),(is_long)); } while (0)
604 #define amd64_fild_membase_size(inst,basereg,disp,is_long,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fild_membase((inst),((basereg)&0x7),(disp),(is_long)); } while (0)
605 #define amd64_fld_reg_size(inst,index,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fld_reg((inst),(index)); } while (0)
606 #define amd64_fldz_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fldz(inst); } while (0)
607 #define amd64_fld1_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fld1(inst); } while (0)
608 #define amd64_fldpi_size(inst,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fldpi(inst); } while (0)
609 #define amd64_fst_size(inst,mem,is_double,pop_stack,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fst((inst),(mem),(is_double),(pop_stack)); } while (0)
610 #define amd64_fst_membase_size(inst,basereg,disp,is_double,pop_stack,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fst_membase((inst),((basereg)&0x7),(disp),(is_double),(pop_stack)); } while (0)
611 #define amd64_fst80_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fst80_mem((inst),(mem)); } while (0)
612 #define amd64_fst80_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fst80_membase((inst),((basereg)&0x7),(disp)); } while (0)
613 #define amd64_fist_pop_size(inst,mem,is_long,size) do { amd64_emit_rex ((inst),0,0,0,0); x86_fist_pop((inst),(mem),(is_long)); } while (0)
614 #define amd64_fist_pop_membase_size(inst,basereg,disp,is_long,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fist_pop_membase((inst),((basereg)&0x7),(disp),(is_long)); } while (0)
615 #define amd64_fstsw_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fstsw(inst); } while (0)
616 #define amd64_fist_membase_size(inst,basereg,disp,is_int,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_fist_membase((inst),((basereg)&0x7),(disp),(is_int)); } while (0)
617 //#define amd64_push_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_push_reg((inst),((reg)&0x7)); } while (0)
618 #define amd64_push_regp_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_push_regp((inst),((reg)&0x7)); } while (0)
619 #define amd64_push_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_push_mem((inst),(mem)); } while (0)
620 //#define amd64_push_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_push_membase((inst),((basereg)&0x7),(disp)); } while (0)
621 #define amd64_push_memindex_size(inst,basereg,disp,indexreg,shift,size) do { amd64_emit_rex ((inst),(size),0,(indexreg),(basereg)); x86_push_memindex((inst),((basereg)&0x7),(disp),((indexreg)&0x7),(shift)); } while (0)
622 #define amd64_push_imm_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_push_imm((inst),(imm)); } while (0)
623 //#define amd64_pop_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_pop_reg((inst),((reg)&0x7)); } while (0)
624 #define amd64_pop_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_pop_mem((inst),(mem)); } while (0)
625 #define amd64_pop_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_pop_membase((inst),((basereg)&0x7),(disp)); } while (0)
626 #define amd64_pushad_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_pushad(inst); } while (0)
627 #define amd64_pushfd_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_pushfd(inst); } while (0)
628 #define amd64_popad_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_popad(inst); } while (0)
629 #define amd64_popfd_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_popfd(inst); } while (0)
630 #define amd64_loop_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_loop((inst),(imm)); } while (0)
631 #define amd64_loope_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_loope((inst),(imm)); } while (0)
632 #define amd64_loopne_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_loopne((inst),(imm)); } while (0)
633 #define amd64_jump32_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_jump32((inst),(imm)); } while (0)
634 #define amd64_jump8_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_jump8((inst),(imm)); } while (0)
635 #define amd64_jump_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_jump_reg((inst),((reg)&0x7)); } while (0)
636 #define amd64_jump_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_jump_mem((inst),(mem)); } while (0)
637 #define amd64_jump_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_jump_membase((inst),((basereg)&0x7),(disp)); } while (0)
638 #define amd64_jump_code_size(inst,target,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_jump_code((inst),(target)); } while (0)
639 #define amd64_jump_disp_size(inst,disp,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_jump_disp((inst),(disp)); } while (0)
640 #define amd64_branch8_size(inst,cond,imm,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_branch8((inst),(cond),(imm),(is_signed)); } while (0)
641 #define amd64_branch32_size(inst,cond,imm,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_branch32((inst),(cond),(imm),(is_signed)); } while (0)
642 #define amd64_branch_size(inst,cond,target,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_branch((inst),(cond),(target),(is_signed)); } while (0)
643 #define amd64_branch_disp_size(inst,cond,disp,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_branch_disp((inst),(cond),(disp),(is_signed)); } while (0)
644 #define amd64_set_reg_size(inst,cond,reg,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_set_reg((inst),(cond),((reg)&0x7),(is_signed)); } while (0)
645 #define amd64_set_mem_size(inst,cond,mem,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_set_mem((inst),(cond),(mem),(is_signed)); } while (0)
646 #define amd64_set_membase_size(inst,cond,basereg,disp,is_signed,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_set_membase((inst),(cond),((basereg)&0x7),(disp),(is_signed)); } while (0)
647 #define amd64_call_imm_size(inst,disp,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_call_imm((inst),(disp)); } while (0)
648 //#define amd64_call_reg_size(inst,reg,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_call_reg((inst),((reg)&0x7)); } while (0)
649 #define amd64_call_mem_size(inst,mem,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_call_mem((inst),(mem)); } while (0)
650 #define amd64_call_membase_size(inst,basereg,disp,size) do { amd64_emit_rex ((inst),0,0,0,(basereg)); x86_call_membase((inst),((basereg)&0x7),(disp)); } while (0)
651 #define amd64_call_code_size(inst,target,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_call_code((inst),(target)); } while (0)
652 //#define amd64_ret_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_ret(inst); } while (0)
653 #define amd64_ret_imm_size(inst,imm,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_ret_imm((inst),(imm)); } while (0)
654 #define amd64_cmov_reg_size(inst,cond,is_signed,dreg,reg,size) do { amd64_emit_rex ((inst),(size),(dreg),0,(reg)); x86_cmov_reg((inst),(cond),(is_signed),((dreg)&0x7),((reg)&0x7)); } while (0)
655 #define amd64_cmov_mem_size(inst,cond,is_signed,reg,mem,size) do { amd64_emit_rex ((inst),(size),0,0,(reg)); x86_cmov_mem((inst),(cond),(is_signed),((reg)&0x7),(mem)); } while (0)
656 #define amd64_cmov_membase_size(inst,cond,is_signed,reg,basereg,disp,size) do { amd64_emit_rex ((inst),(size),0,0,(basereg)); x86_cmov_membase((inst),(cond),(is_signed),((reg)&0x7),((basereg)&0x7),(disp)); } while (0)
657 #define amd64_enter_size(inst,framesize) do { amd64_emit_rex ((inst),(size),0,0,0); x86_enter((inst),(framesize)); } while (0)
658 //#define amd64_leave_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_leave(inst); } while (0)
659 #define amd64_sahf_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_sahf(inst); } while (0)
660 #define amd64_fsin_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fsin(inst); } while (0)
661 #define amd64_fcos_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fcos(inst); } while (0)
662 #define amd64_fabs_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fabs(inst); } while (0)
663 #define amd64_ftst_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_ftst(inst); } while (0)
664 #define amd64_fxam_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fxam(inst); } while (0)
665 #define amd64_fpatan_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fpatan(inst); } while (0)
666 #define amd64_fprem_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fprem(inst); } while (0)
667 #define amd64_fprem1_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fprem1(inst); } while (0)
668 #define amd64_frndint_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_frndint(inst); } while (0)
669 #define amd64_fsqrt_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fsqrt(inst); } while (0)
670 #define amd64_fptan_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_fptan(inst); } while (0)
671 //#define amd64_padding_size(inst,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_padding((inst),(size)); } while (0)
672 #define amd64_prolog_size(inst,frame_size,reg_mask,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_prolog((inst),(frame_size),(reg_mask)); } while (0)
673 #define amd64_epilog_size(inst,reg_mask,size) do { amd64_emit_rex ((inst),(size),0,0,0); x86_epilog((inst),(reg_mask)); } while (0)
683 #define amd64_breakpoint(inst) amd64_breakpoint_size(inst,8)
684 #define amd64_cld(inst) amd64_cld_size(inst,8)
685 #define amd64_stosb(inst) amd64_stosb_size(inst,8)
686 #define amd64_stosl(inst) amd64_stosl_size(inst,8)
687 #define amd64_stosd(inst) amd64_stosd_size(inst,8)
688 #define amd64_movsb(inst) amd64_movsb_size(inst,8)
689 #define amd64_movsl(inst) amd64_movsl_size(inst,8)
690 #define amd64_movsd(inst) amd64_movsd_size(inst,8)
691 #define amd64_prefix(inst,p) amd64_prefix_size(inst,p,8)
692 #define amd64_rdtsc(inst) amd64_rdtsc_size(inst,8)
693 #define amd64_cmpxchg_reg_reg(inst,dreg,reg) amd64_cmpxchg_reg_reg_size(inst,dreg,reg,8)
694 #define amd64_cmpxchg_mem_reg(inst,mem,reg) amd64_cmpxchg_mem_reg_size(inst,mem,reg,8)
695 #define amd64_cmpxchg_membase_reg(inst,basereg,disp,reg) amd64_cmpxchg_membase_reg_size(inst,basereg,disp,reg,8)
696 #define amd64_xchg_reg_reg(inst,dreg,reg,size) amd64_xchg_reg_reg_size(inst,dreg,reg,size)
697 #define amd64_xchg_mem_reg(inst,mem,reg,size) amd64_xchg_mem_reg_size(inst,mem,reg,size)
698 #define amd64_xchg_membase_reg(inst,basereg,disp,reg,size) amd64_xchg_membase_reg_size(inst,basereg,disp,reg,size)
699 #define amd64_inc_mem(inst,mem) amd64_inc_mem_size(inst,mem,8)
700 #define amd64_inc_membase(inst,basereg,disp) amd64_inc_membase_size(inst,basereg,disp,8)
701 #define amd64_inc_reg(inst,reg) amd64_inc_reg_size(inst,reg,8)
702 #define amd64_dec_mem(inst,mem) amd64_dec_mem_size(inst,mem,8)
703 #define amd64_dec_membase(inst,basereg,disp) amd64_dec_membase_size(inst,basereg,disp,8)
704 #define amd64_dec_reg(inst,reg) amd64_dec_reg_size(inst,reg,8)
705 #define amd64_not_mem(inst,mem) amd64_not_mem_size(inst,mem,8)
706 #define amd64_not_membase(inst,basereg,disp) amd64_not_membase_size(inst,basereg,disp,8)
707 #define amd64_not_reg(inst,reg) amd64_not_reg_size(inst,reg,8)
708 #define amd64_neg_mem(inst,mem) amd64_neg_mem_size(inst,mem,8)
709 #define amd64_neg_membase(inst,basereg,disp) amd64_neg_membase_size(inst,basereg,disp,8)
710 #define amd64_neg_reg(inst,reg) amd64_neg_reg_size(inst,reg,8)
711 #define amd64_nop(inst) amd64_nop_size(inst,8)
712 //#define amd64_alu_reg_imm(inst,opc,reg,imm) amd64_alu_reg_imm_size(inst,opc,reg,imm,8)
713 #define amd64_alu_mem_imm(inst,opc,mem,imm) amd64_alu_mem_imm_size(inst,opc,mem,imm,8)
714 #define amd64_alu_membase_imm(inst,opc,basereg,disp,imm) amd64_alu_membase_imm_size(inst,opc,basereg,disp,imm,8)
715 #define amd64_alu_mem_reg(inst,opc,mem,reg) amd64_alu_mem_reg_size(inst,opc,mem,reg,8)
716 #define amd64_alu_membase_reg(inst,opc,basereg,disp,reg) amd64_alu_membase_reg_size(inst,opc,basereg,disp,reg,8)
717 //#define amd64_alu_reg_reg(inst,opc,dreg,reg) amd64_alu_reg_reg_size(inst,opc,dreg,reg,8)
718 #define amd64_alu_reg8_reg8(inst,opc,dreg,reg,is_dreg_h,is_reg_h) amd64_alu_reg8_reg8_size(inst,opc,dreg,reg,is_dreg_h,is_reg_h,8)
719 #define amd64_alu_reg_mem(inst,opc,reg,mem) amd64_alu_reg_mem_size(inst,opc,reg,mem,8)
720 #define amd64_alu_reg_membase(inst,opc,reg,basereg,disp) amd64_alu_reg_membase_size(inst,opc,reg,basereg,disp,8)
721 #define amd64_test_reg_imm(inst,reg,imm) amd64_test_reg_imm_size(inst,reg,imm,8)
722 #define amd64_test_mem_imm(inst,mem,imm) amd64_test_mem_imm_size(inst,mem,imm,8)
723 #define amd64_test_membase_imm(inst,basereg,disp,imm) amd64_test_membase_imm_size(inst,basereg,disp,imm,8)
724 #define amd64_test_reg_reg(inst,dreg,reg) amd64_test_reg_reg_size(inst,dreg,reg,8)
725 #define amd64_test_mem_reg(inst,mem,reg) amd64_test_mem_reg_size(inst,mem,reg,8)
726 #define amd64_test_membase_reg(inst,basereg,disp,reg) amd64_test_membase_reg_size(inst,basereg,disp,reg,8)
727 #define amd64_shift_reg_imm(inst,opc,reg,imm) amd64_shift_reg_imm_size(inst,opc,reg,imm,8)
728 #define amd64_shift_mem_imm(inst,opc,mem,imm) amd64_shift_mem_imm_size(inst,opc,mem,imm,8)
729 #define amd64_shift_membase_imm(inst,opc,basereg,disp,imm) amd64_shift_membase_imm_size(inst,opc,basereg,disp,imm,8)
730 #define amd64_shift_reg(inst,opc,reg) amd64_shift_reg_size(inst,opc,reg,8)
731 #define amd64_shift_mem(inst,opc,mem) amd64_shift_mem_size(inst,opc,mem,8)
732 #define amd64_shift_membase(inst,opc,basereg,disp) amd64_shift_membase_size(inst,opc,basereg,disp,8)
733 #define amd64_shrd_reg(inst,dreg,reg) amd64_shrd_reg_size(inst,dreg,reg,8)
734 #define amd64_shrd_reg_imm(inst,dreg,reg,shamt) amd64_shrd_reg_imm_size(inst,dreg,reg,shamt,8)
735 #define amd64_shld_reg(inst,dreg,reg) amd64_shld_reg_size(inst,dreg,reg,8)
736 #define amd64_shld_reg_imm(inst,dreg,reg,shamt) amd64_shld_reg_imm_size(inst,dreg,reg,shamt,8)
737 #define amd64_mul_reg(inst,reg,is_signed) amd64_mul_reg_size(inst,reg,is_signed,8)
738 #define amd64_mul_mem(inst,mem,is_signed) amd64_mul_mem_size(inst,mem,is_signed,8)
739 #define amd64_mul_membase(inst,basereg,disp,is_signed) amd64_mul_membase_size(inst,basereg,disp,is_signed,8)
740 #define amd64_imul_reg_reg(inst,dreg,reg) amd64_imul_reg_reg_size(inst,dreg,reg,8)
741 #define amd64_imul_reg_mem(inst,reg,mem) amd64_imul_reg_mem_size(inst,reg,mem,8)
742 #define amd64_imul_reg_membase(inst,reg,basereg,disp) amd64_imul_reg_membase_size(inst,reg,basereg,disp,8)
743 #define amd64_imul_reg_reg_imm(inst,dreg,reg,imm) amd64_imul_reg_reg_imm_size(inst,dreg,reg,imm,8)
744 #define amd64_imul_reg_mem_imm(inst,reg,mem,imm) amd64_imul_reg_mem_imm_size(inst,reg,mem,imm,8)
745 #define amd64_imul_reg_membase_imm(inst,reg,basereg,disp,imm) amd64_imul_reg_membase_imm_size(inst,reg,basereg,disp,imm,8)
746 #define amd64_div_reg(inst,reg,is_signed) amd64_div_reg_size(inst,reg,is_signed,8)
747 #define amd64_div_mem(inst,mem,is_signed) amd64_div_mem_size(inst,mem,is_signed,8)
748 #define amd64_div_membase(inst,basereg,disp,is_signed) amd64_div_membase_size(inst,basereg,disp,is_signed,8)
749 #define amd64_mov_mem_reg(inst,mem,reg,size) amd64_mov_mem_reg_size(inst,mem,reg,size)
750 //#define amd64_mov_regp_reg(inst,regp,reg,size) amd64_mov_regp_reg_size(inst,regp,reg,size)
751 //#define amd64_mov_membase_reg(inst,basereg,disp,reg,size) amd64_mov_membase_reg_size(inst,basereg,disp,reg,size)
752 #define amd64_mov_memindex_reg(inst,basereg,disp,indexreg,shift,reg,size) amd64_mov_memindex_reg_size(inst,basereg,disp,indexreg,shift,reg,size)
753 //#define amd64_mov_reg_reg(inst,dreg,reg,size) amd64_mov_reg_reg_size(inst,dreg,reg,size)
754 //#define amd64_mov_reg_mem(inst,reg,mem,size) amd64_mov_reg_mem_size(inst,reg,mem,size)
755 //#define amd64_mov_reg_membase(inst,reg,basereg,disp,size) amd64_mov_reg_membase_size(inst,reg,basereg,disp,size)
756 #define amd64_mov_reg_memindex(inst,reg,basereg,disp,indexreg,shift,size) amd64_mov_reg_memindex_size(inst,reg,basereg,disp,indexreg,shift,size)
757 #define amd64_clear_reg(inst,reg) amd64_clear_reg_size(inst,reg,8)
758 //#define amd64_mov_reg_imm(inst,reg,imm) amd64_mov_reg_imm_size(inst,reg,imm,8)
759 #define amd64_mov_mem_imm(inst,mem,imm,size) amd64_mov_mem_imm_size(inst,mem,imm,size)
760 //#define amd64_mov_membase_imm(inst,basereg,disp,imm,size) amd64_mov_membase_imm_size(inst,basereg,disp,imm,size)
761 #define amd64_mov_memindex_imm(inst,basereg,disp,indexreg,shift,imm,size) amd64_mov_memindex_imm_size(inst,basereg,disp,indexreg,shift,imm,size)
762 #define amd64_lea_mem(inst,reg,mem) amd64_lea_mem_size(inst,reg,mem,8)
763 //#define amd64_lea_membase(inst,reg,basereg,disp) amd64_lea_membase_size(inst,reg,basereg,disp,8)
764 #define amd64_lea_memindex(inst,reg,basereg,disp,indexreg,shift) amd64_lea_memindex_size(inst,reg,basereg,disp,indexreg,shift,8)
765 #define amd64_widen_reg(inst,dreg,reg,is_signed,is_half) amd64_widen_reg_size(inst,dreg,reg,is_signed,is_half,8)
766 #define amd64_widen_mem(inst,dreg,mem,is_signed,is_half) amd64_widen_mem_size(inst,dreg,mem,is_signed,is_half,8)
767 #define amd64_widen_membase(inst,dreg,basereg,disp,is_signed,is_half) amd64_widen_membase_size(inst,dreg,basereg,disp,is_signed,is_half,8)
768 #define amd64_widen_memindex(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half) amd64_widen_memindex_size(inst,dreg,basereg,disp,indexreg,shift,is_signed,is_half,8)
769 #define amd64_cdq(inst) amd64_cdq_size(inst,8)
770 #define amd64_wait(inst) amd64_wait_size(inst,8)
771 #define amd64_fp_op_mem(inst,opc,mem,is_double) amd64_fp_op_mem_size(inst,opc,mem,is_double,8)
772 #define amd64_fp_op_membase(inst,opc,basereg,disp,is_double) amd64_fp_op_membase_size(inst,opc,basereg,disp,is_double,8)
773 #define amd64_fp_op(inst,opc,index) amd64_fp_op_size(inst,opc,index,8)
774 #define amd64_fp_op_reg(inst,opc,index,pop_stack) amd64_fp_op_reg_size(inst,opc,index,pop_stack,8)
775 #define amd64_fp_int_op_membase(inst,opc,basereg,disp,is_int) amd64_fp_int_op_membase_size(inst,opc,basereg,disp,is_int,8)
776 #define amd64_fstp(inst,index) amd64_fstp_size(inst,index,8)
777 #define amd64_fcompp(inst) amd64_fcompp_size(inst,8)
778 #define amd64_fucompp(inst) amd64_fucompp_size(inst,8)
779 #define amd64_fnstsw(inst) amd64_fnstsw_size(inst,8)
780 #define amd64_fnstcw(inst,mem) amd64_fnstcw_size(inst,mem,8)
781 #define amd64_fnstcw_membase(inst,basereg,disp) amd64_fnstcw_membase_size(inst,basereg,disp,8)
782 #define amd64_fldcw(inst,mem) amd64_fldcw_size(inst,mem,8)
783 #define amd64_fldcw_membase(inst,basereg,disp) amd64_fldcw_membase_size(inst,basereg,disp,8)
784 #define amd64_fchs(inst) amd64_fchs_size(inst,8)
785 #define amd64_frem(inst) amd64_frem_size(inst,8)
786 #define amd64_fxch(inst,index) amd64_fxch_size(inst,index,8)
787 #define amd64_fcomi(inst,index) amd64_fcomi_size(inst,index,8)
788 #define amd64_fcomip(inst,index) amd64_fcomip_size(inst,index,8)
789 #define amd64_fucomi(inst,index) amd64_fucomi_size(inst,index,8)
790 #define amd64_fucomip(inst,index) amd64_fucomip_size(inst,index,8)
791 #define amd64_fld(inst,mem,is_double) amd64_fld_size(inst,mem,is_double,8)
792 #define amd64_fld_membase(inst,basereg,disp,is_double) amd64_fld_membase_size(inst,basereg,disp,is_double,8)
793 #define amd64_fld80_mem(inst,mem) amd64_fld80_mem_size(inst,mem,8)
794 #define amd64_fld80_membase(inst,basereg,disp) amd64_fld80_membase_size(inst,basereg,disp,8)
795 #define amd64_fild(inst,mem,is_long) amd64_fild_size(inst,mem,is_long,8)
796 #define amd64_fild_membase(inst,basereg,disp,is_long) amd64_fild_membase_size(inst,basereg,disp,is_long,8)
797 #define amd64_fld_reg(inst,index) amd64_fld_reg_size(inst,index,8)
798 #define amd64_fldz(inst) amd64_fldz_size(inst,8)
799 #define amd64_fld1(inst) amd64_fld1_size(inst,8)
800 #define amd64_fldpi(inst) amd64_fldpi_size(inst,8)
801 #define amd64_fst(inst,mem,is_double,pop_stack) amd64_fst_size(inst,mem,is_double,pop_stack,8)
802 #define amd64_fst_membase(inst,basereg,disp,is_double,pop_stack) amd64_fst_membase_size(inst,basereg,disp,is_double,pop_stack,8)
803 #define amd64_fst80_mem(inst,mem) amd64_fst80_mem_size(inst,mem,8)
804 #define amd64_fst80_membase(inst,basereg,disp) amd64_fst80_membase_size(inst,basereg,disp,8)
805 #define amd64_fist_pop(inst,mem,is_long) amd64_fist_pop_size(inst,mem,is_long,8)
806 #define amd64_fist_pop_membase(inst,basereg,disp,is_long) amd64_fist_pop_membase_size(inst,basereg,disp,is_long,8)
807 #define amd64_fstsw(inst) amd64_fstsw_size(inst,8)
808 #define amd64_fist_membase(inst,basereg,disp,is_int) amd64_fist_membase_size(inst,basereg,disp,is_int,8)
809 //#define amd64_push_reg(inst,reg) amd64_push_reg_size(inst,reg,8)
810 #define amd64_push_regp(inst,reg) amd64_push_regp_size(inst,reg,8)
811 #define amd64_push_mem(inst,mem) amd64_push_mem_size(inst,mem,8)
812 //#define amd64_push_membase(inst,basereg,disp) amd64_push_membase_size(inst,basereg,disp,8)
813 #define amd64_push_memindex(inst,basereg,disp,indexreg,shift) amd64_push_memindex_size(inst,basereg,disp,indexreg,shift,8)
814 #define amd64_push_imm(inst,imm) amd64_push_imm_size(inst,imm,8)
815 //#define amd64_pop_reg(inst,reg) amd64_pop_reg_size(inst,reg,8)
816 #define amd64_pop_mem(inst,mem) amd64_pop_mem_size(inst,mem,8)
817 #define amd64_pop_membase(inst,basereg,disp) amd64_pop_membase_size(inst,basereg,disp,8)
818 #define amd64_pushad(inst) amd64_pushad_size(inst,8)
819 #define amd64_pushfd(inst) amd64_pushfd_size(inst,8)
820 #define amd64_popad(inst) amd64_popad_size(inst,8)
821 #define amd64_popfd(inst) amd64_popfd_size(inst,8)
822 #define amd64_loop(inst,imm) amd64_loop_size(inst,imm,8)
823 #define amd64_loope(inst,imm) amd64_loope_size(inst,imm,8)
824 #define amd64_loopne(inst,imm) amd64_loopne_size(inst,imm,8)
825 #define amd64_jump32(inst,imm) amd64_jump32_size(inst,imm,8)
826 #define amd64_jump8(inst,imm) amd64_jump8_size(inst,imm,8)
827 #define amd64_jump_reg(inst,reg) amd64_jump_reg_size(inst,reg,8)
828 #define amd64_jump_mem(inst,mem) amd64_jump_mem_size(inst,mem,8)
829 #define amd64_jump_membase(inst,basereg,disp) amd64_jump_membase_size(inst,basereg,disp,8)
830 #define amd64_jump_code(inst,target) amd64_jump_code_size(inst,target,8)
831 #define amd64_jump_disp(inst,disp) amd64_jump_disp_size(inst,disp,8)
832 #define amd64_branch8(inst,cond,imm,is_signed) amd64_branch8_size(inst,cond,imm,is_signed,8)
833 #define amd64_branch32(inst,cond,imm,is_signed) amd64_branch32_size(inst,cond,imm,is_signed,8)
834 #define amd64_branch(inst,cond,target,is_signed) amd64_branch_size(inst,cond,target,is_signed,8)
835 #define amd64_branch_disp(inst,cond,disp,is_signed) amd64_branch_disp_size(inst,cond,disp,is_signed,8)
836 #define amd64_set_reg(inst,cond,reg,is_signed) amd64_set_reg_size(inst,cond,reg,is_signed,8)
837 #define amd64_set_mem(inst,cond,mem,is_signed) amd64_set_mem_size(inst,cond,mem,is_signed,8)
838 #define amd64_set_membase(inst,cond,basereg,disp,is_signed) amd64_set_membase_size(inst,cond,basereg,disp,is_signed,8)
839 #define amd64_call_imm(inst,disp) amd64_call_imm_size(inst,disp,8)
840 //#define amd64_call_reg(inst,reg) amd64_call_reg_size(inst,reg,8)
841 #define amd64_call_mem(inst,mem) amd64_call_mem_size(inst,mem,8)
842 #define amd64_call_membase(inst,basereg,disp) amd64_call_membase_size(inst,basereg,disp,8)
843 #define amd64_call_code(inst,target) amd64_call_code_size(inst,target,8)
844 //#define amd64_ret(inst) amd64_ret_size(inst,8)
845 #define amd64_ret_imm(inst,imm) amd64_ret_imm_size(inst,imm,8)
846 #define amd64_cmov_reg(inst,cond,is_signed,dreg,reg) amd64_cmov_reg_size(inst,cond,is_signed,dreg,reg,8)
847 #define amd64_cmov_mem(inst,cond,is_signed,reg,mem) amd64_cmov_mem_size(inst,cond,is_signed,reg,mem,8)
848 #define amd64_cmov_membase(inst,cond,is_signed,reg,basereg,disp) amd64_cmov_membase_size(inst,cond,is_signed,reg,basereg,disp,8)
849 #define amd64_enter(inst,framesize) amd64_enter_size(inst,framesize)
850 //#define amd64_leave(inst) amd64_leave_size(inst,8)
851 #define amd64_sahf(inst) amd64_sahf_size(inst,8)
852 #define amd64_fsin(inst) amd64_fsin_size(inst,8)
853 #define amd64_fcos(inst) amd64_fcos_size(inst,8)
854 #define amd64_fabs(inst) amd64_fabs_size(inst,8)
855 #define amd64_ftst(inst) amd64_ftst_size(inst,8)
856 #define amd64_fxam(inst) amd64_fxam_size(inst,8)
857 #define amd64_fpatan(inst) amd64_fpatan_size(inst,8)
858 #define amd64_fprem(inst) amd64_fprem_size(inst,8)
859 #define amd64_fprem1(inst) amd64_fprem1_size(inst,8)
860 #define amd64_frndint(inst) amd64_frndint_size(inst,8)
861 #define amd64_fsqrt(inst) amd64_fsqrt_size(inst,8)
862 #define amd64_fptan(inst) amd64_fptan_size(inst,8)
863 #define amd64_padding(inst,size) amd64_padding_size(inst,size)
864 #define amd64_prolog(inst,frame,reg_mask) amd64_prolog_size(inst,frame,reg_mask,8)
865 #define amd64_epilog(inst,reg_mask) amd64_epilog_size(inst,reg_mask,8)