Go to the documentation of this file.
27 #define CODEGEN_HPP_ 1
39 #define MCODECHECK(icnt) \
41 if ((cd->mcodeptr + (icnt) * 4) > cd->mcodeend) \
42 codegen_increase(cd); \
46 #define ALIGNCODENOP \
47 if ((s4) ((ptrint) cd->mcodeptr & 7)) { \
51 #define ICONST(r,c) emit_iconst(cd, (r), (c))
52 #define LCONST(r,c) emit_lconst(cd, (r), (c))
59 if (CODEGENDATA_HAS_FLAG_LONGBRANCHES(cd)) { \
76 #define PATCHER_CALL_INSTRUCTIONS 1
77 #define PATCHER_CALL_SIZE 1 * 4
79 #define PATCHER_NOPS \
98 #define M_ITYPE(op,rs,rt,imm) \
100 *((u4 *) cd->mcodeptr) = (((op) << 26) | ((rs) << 21) | ((rt) << 16) | ((imm) & 0xffff)); \
104 #define M_ITYPE_GET_RS(x) (((x) >> 21) & 0x1f )
105 #define M_ITYPE_GET_RT(x) (((x) >> 16) & 0x1f )
106 #define M_ITYPE_GET_IMM(x) ( (x) & 0xffff)
109 #define M_JTYPE(op,imm) \
111 *((u4 *) cd->mcodeptr) = (((op) << 26) | ((off) & 0x3ffffff)); \
115 #define M_RTYPE(op,rs,rt,rd,sa,fu) \
117 *((u4 *) cd->mcodeptr) = (((op) << 26) | ((rs) << 21) | ((rt) << 16) | ((rd) << 11) | ((sa) << 6) | (fu)); \
121 #define M_FP2(fu, fmt, fs, fd) M_RTYPE(0x11, fmt, 0, fs, fd, fu)
122 #define M_FP3(fu, fmt, fs, ft, fd) M_RTYPE(0x11, fmt, ft, fs, fd, fu)
132 #define M_RESERVED M_RTYPE(0x3b, 0, 0, 0, 0, 0)
136 #define M_LDA(a,b,disp) \
138 s4 lo = (short) (disp); \
139 s4 hi = (short) (((disp) - lo) >> 16); \
141 M_AADD_IMM(b,lo,a); \
143 M_LUI(REG_ITMP3, hi); \
144 M_AADD_IMM(REG_ITMP3, lo, REG_ITMP3); \
145 M_AADD(b, REG_ITMP3, a); \
149 #define M_BLDS(a,b,disp) M_ITYPE(0x20,b,a,disp)
150 #define M_BLDU(a,b,disp) M_ITYPE(0x24,b,a,disp)
151 #define M_SLDS(a,b,disp) M_ITYPE(0x21,b,a,disp)
152 #define M_SLDU(a,b,disp) M_ITYPE(0x25,b,a,disp)
154 #define M_ILD_INTERN(a,b,disp) M_ITYPE(0x23,b,a,disp)
156 #define M_ILD(a,b,disp) \
158 s4 lo = (short) (disp); \
159 s4 hi = (short) (((disp) - lo) >> 16); \
161 M_ILD_INTERN(a,b,lo); \
165 M_ILD_INTERN(a,a,lo); \
169 #if SIZEOF_VOID_P == 8
171 #define M_LLD_INTERN(a,b,disp) M_ITYPE(0x37,b,a,disp)
175 # if WORDS_BIGENDIAN == 1
179 #define M_LLD_INTERN(a,b,disp) \
181 M_ILD_INTERN(GET_HIGH_REG(a), b, disp); \
182 M_ILD_INTERN(GET_LOW_REG(a), b, disp + 4); \
188 #define M_LLD_GETFIELD(a,b,disp) \
190 s4 lo = (short) (disp); \
191 s4 hi = (short) (((disp) - lo) >> 16); \
193 if (GET_HIGH_REG(a) == (b)) { \
194 M_ILD_INTERN(GET_LOW_REG(a), b, disp + 4); \
195 M_ILD_INTERN(GET_HIGH_REG(a), b, disp); \
197 M_ILD_INTERN(GET_HIGH_REG(a), b, disp); \
198 M_ILD_INTERN(GET_LOW_REG(a), b, disp + 4); \
201 M_LUI(GET_LOW_REG(a), hi); \
202 M_AADD(b, GET_LOW_REG(a), GET_LOW_REG(a)); \
203 M_LLD_INTERN(a, GET_LOW_REG(a), lo); \
211 #define M_LLD_INTERN(a,b,disp) \
213 M_ILD_INTERN(GET_HIGH_REG(a), b, disp + 4); \
214 M_ILD_INTERN(GET_LOW_REG(a), b, disp); \
220 #define M_LLD_GETFIELD(a,b,disp) \
222 s4 lo = (short) (disp); \
223 s4 hi = (short) (((disp) - lo) >> 16); \
225 if (GET_HIGH_REG(a) == (b)) { \
226 M_ILD_INTERN(GET_LOW_REG(a), b, disp); \
227 M_ILD_INTERN(GET_HIGH_REG(a), b, disp + 4); \
229 M_ILD_INTERN(GET_HIGH_REG(a), b, disp + 4); \
230 M_ILD_INTERN(GET_LOW_REG(a), b, disp); \
233 M_LUI(GET_LOW_REG(a), hi); \
234 M_AADD(b, GET_LOW_REG(a), GET_LOW_REG(a)); \
235 M_LLD_INTERN(a, GET_LOW_REG(a), lo); \
243 #define M_LLD(a,b,disp) \
245 s4 lo = (short) (disp); \
246 s4 hi = (short) (((disp) - lo) >> 16); \
248 M_LLD_INTERN(a, b, lo); \
250 M_LUI(GET_LOW_REG(a), hi); \
251 M_AADD(b, GET_LOW_REG(a), GET_LOW_REG(a)); \
252 M_LLD_INTERN(a, GET_LOW_REG(a), lo); \
256 #define M_BST(a,b,disp) M_ITYPE(0x28,b,a,disp)
257 #define M_SST(a,b,disp) M_ITYPE(0x29,b,a,disp)
259 #define M_IST_INTERN(a,b,disp) M_ITYPE(0x2b,b,a,disp)
261 #define M_IST(a,b,disp) \
263 s4 lo = (short) (disp); \
264 s4 hi = (short) (((disp) - lo) >> 16); \
266 M_IST_INTERN(a,b,lo); \
268 M_LUI(REG_ITMP3, hi); \
269 M_AADD(b, REG_ITMP3, REG_ITMP3); \
270 M_IST_INTERN(a, REG_ITMP3, lo); \
274 #if SIZEOF_VOID_P == 8
276 #define M_LST_INTERN(a,b,disp) M_ITYPE(0x3f,b,a,disp)
280 #if WORDS_BIGENDIAN == 1
282 #define M_LST_INTERN(a,b,disp) \
284 M_IST_INTERN(GET_HIGH_REG(a), b, disp); \
285 M_IST_INTERN(GET_LOW_REG(a), b, disp + 4); \
290 #define M_LST_INTERN(a,b,disp) \
292 M_IST_INTERN(GET_HIGH_REG(a), b, disp + 4); \
293 M_IST_INTERN(GET_LOW_REG(a), b, disp); \
300 #define M_LST(a,b,disp) \
302 s4 lo = (short) (disp); \
303 s4 hi = (short) (((disp) - lo) >> 16); \
305 M_LST_INTERN(a,b,lo); \
307 M_LUI(REG_ITMP3, hi); \
308 M_AADD(b, REG_ITMP3, REG_ITMP3); \
309 M_LST_INTERN(a, REG_ITMP3, lo); \
313 #define M_FLD_INTERN(a,b,disp) M_ITYPE(0x31,b,a,disp)
314 #define M_DLD_INTERN(a,b,disp) M_ITYPE(0x35,b,a,disp)
316 #define M_FLD(a,b,disp) \
318 s4 lo = (short) (disp); \
319 s4 hi = (short) (((disp) - lo) >> 16); \
321 M_FLD_INTERN(a,b,lo); \
323 M_LUI(REG_ITMP3, hi); \
324 M_AADD(b, REG_ITMP3, REG_ITMP3); \
325 M_FLD_INTERN(a, REG_ITMP3, lo); \
329 #define M_DLD(a,b,disp) \
331 s4 lo = (short) (disp); \
332 s4 hi = (short) (((disp) - lo) >> 16); \
334 M_DLD_INTERN(a,b,lo); \
336 M_LUI(REG_ITMP3, hi); \
337 M_AADD(b, REG_ITMP3, REG_ITMP3); \
338 M_DLD_INTERN(a, REG_ITMP3, lo); \
342 #define M_FST_INTERN(a,b,disp) M_ITYPE(0x39,b,a,disp)
343 #define M_DST_INTERN(a,b,disp) M_ITYPE(0x3d,b,a,disp)
345 #define M_FST(a,b,disp) \
347 s4 lo = (short) (disp); \
348 s4 hi = (short) (((disp) - lo) >> 16); \
350 M_FST_INTERN(a,b,lo); \
352 M_LUI(REG_ITMP3, hi); \
353 M_AADD(b, REG_ITMP3, REG_ITMP3); \
354 M_FST_INTERN(a, REG_ITMP3, lo); \
358 #define M_DST(a,b,disp) \
360 s4 lo = (short) (disp); \
361 s4 hi = (short) (((disp) - lo) >> 16); \
363 M_DST_INTERN(a,b,lo); \
365 M_LUI(REG_ITMP3, hi); \
366 M_AADD(b, REG_ITMP3, REG_ITMP3); \
367 M_DST_INTERN(a, REG_ITMP3, lo); \
371 #define M_BEQ(a,b,disp) M_ITYPE(0x04,a,b,disp)
372 #define M_BNE(a,b,disp) M_ITYPE(0x05,a,b,disp)
373 #define M_BEQZ(a,disp) M_ITYPE(0x04,a,0,disp)
374 #define M_BLTZ(a,disp) M_ITYPE(0x01,a,0,disp)
375 #define M_BLEZ(a,disp) M_ITYPE(0x06,a,0,disp)
376 #define M_BNEZ(a,disp) M_ITYPE(0x05,a,0,disp)
377 #define M_BGEZ(a,disp) M_ITYPE(0x01,a,1,disp)
378 #define M_BGTZ(a,disp) M_ITYPE(0x07,a,0,disp)
381 #define M_BEQL(a,b,disp) M_ITYPE(0x14,a,b,disp)
382 #define M_BNEL(a,b,disp) M_ITYPE(0x15,a,b,disp)
383 #define M_BEQZL(a,disp) M_ITYPE(0x14,a,0,disp)
384 #define M_BLTZL(a,disp) M_ITYPE(0x01,a,2,disp)
385 #define M_BLEZL(a,disp) M_ITYPE(0x16,a,0,disp)
386 #define M_BNEZL(a,disp) M_ITYPE(0x15,a,0,disp)
387 #define M_BGEZL(a,disp) M_ITYPE(0x01,a,3,disp)
388 #define M_BGTZL(a,disp) M_ITYPE(0x17,a,0,disp)
391 #define M_BR(disp) M_ITYPE(0x04,0,0,disp)
392 #define M_BRS(disp) M_ITYPE(0x01,0,17,disp)
394 #define M_JMP(a) M_RTYPE(0,a,0,0,0,0x08)
395 #define M_JSR(r,a) M_RTYPE(0,a,0,r,0,0x09)
396 #define M_RET(a) M_RTYPE(0,a,0,0,0,0x08)
398 #define M_TGE(a,b,code) M_RTYPE(0,a,b,0,code&3ff,0x30)
399 #define M_TGEU(a,b,code) M_RTYPE(0,a,b,0,code&3ff,0x31)
400 #define M_TLT(a,b,code) M_RTYPE(0,a,b,0,code&3ff,0x32)
401 #define M_TLTU(a,b,code) M_RTYPE(0,a,b,0,code&3ff,0x33)
402 #define M_TEQ(a,b,code) M_RTYPE(0,a,b,0,code&3ff,0x34)
403 #define M_TNE(a,b,code) M_RTYPE(0,a,b,0,code&3ff,0x36)
404 #define M_TLE(a,b,code) M_RTYPE(0,b,a,0,code&3ff,0x30)
405 #define M_TLEU(a,b,code) M_RTYPE(0,b,a,0,code&3ff,0x31)
406 #define M_TGT(a,b,code) M_RTYPE(0,b,a,0,code&3ff,0x32)
407 #define M_TGTU(a,b,code) M_RTYPE(0,b,a,0,code&3ff,0x33)
409 #define M_TGE_IMM(a,b) M_ITYPE(1,a,0x08,b)
410 #define M_TGEU_IMM(a,b) M_ITYPE(1,a,0x09,b)
411 #define M_TLT_IMM(a,b) M_ITYPE(1,a,0x0a,b)
412 #define M_TLTU_IMM(a,b) M_ITYPE(1,a,0x0b,b)
413 #define M_TEQ_IMM(a,b) M_ITYPE(1,a,0x0c,b)
414 #define M_TNE_IMM(a,b) M_ITYPE(1,a,0x0e,b)
416 #define M_TGT_IMM(a,b) M_ITYPE(1,a,0x08,b+1)
417 #define M_TGTU_IMM(a,b) M_ITYPE(1,a,0x09,b+1)
418 #define M_TLE_IMM(a,b) M_ITYPE(1,a,0x0a,b+1)
419 #define M_TLEU_IMM(a,b) M_ITYPE(1,a,0x0b,b+1)
424 #define M_IADD(a,b,c) M_RTYPE(0,a,b,c,0,0x21)
425 #define M_LADD(a,b,c) M_RTYPE(0,a,b,c,0,0x2d)
426 #define M_ISUB(a,b,c) M_RTYPE(0,a,b,c,0,0x23)
427 #define M_LSUB(a,b,c) M_RTYPE(0,a,b,c,0,0x2f)
428 #define M_IMUL(a,b) M_ITYPE(0,a,b,0x18)
429 #define M_IMULU(a,b) M_ITYPE(0,a,b,0x19)
430 #define M_LMUL(a,b) M_ITYPE(0,a,b,0x1c)
431 #define M_IDIV(a,b) M_ITYPE(0,a,b,0x1a)
432 #define M_LDIV(a,b) M_ITYPE(0,a,b,0x1e)
434 #define M_MFLO(a) M_RTYPE(0,0,0,a,0,0x12)
435 #define M_MFHI(a) M_RTYPE(0,0,0,a,0,0x10)
437 #define M_IADD_IMM(a,b,c) M_ITYPE(0x09,a,c,b)
438 #define M_LADD_IMM(a,b,c) M_ITYPE(0x19,a,c,b)
439 #define M_ISUB_IMM(a,b,c) M_IADD_IMM(a,-(b),c)
440 #define M_LSUB_IMM(a,b,c) M_LADD_IMM(a,-(b),c)
442 #define M_LUI(a,imm) M_ITYPE(0x0f,0,a,imm)
444 #define M_CMPLT(a,b,c) M_RTYPE(0,a,b,c,0,0x2a)
445 #define M_CMPGT(a,b,c) M_RTYPE(0,b,a,c,0,0x2a)
447 #define M_CMPULT(a,b,c) M_RTYPE(0,a,b,c,0,0x2b)
448 #define M_CMPUGT(a,b,c) M_RTYPE(0,b,a,c,0,0x2b)
450 #define M_CMPLT_IMM(a,b,c) M_ITYPE(0x0a,a,c,b)
451 #define M_CMPULT_IMM(a,b,c) M_ITYPE(0x0b,a,c,b)
453 #define M_AND(a,b,c) M_RTYPE(0,a,b,c,0,0x24)
454 #define M_OR( a,b,c) M_RTYPE(0,a,b,c,0,0x25)
455 #define M_XOR(a,b,c) M_RTYPE(0,a,b,c,0,0x26)
457 #define M_AND_IMM(a,b,c) M_ITYPE(0x0c,a,c,b)
458 #define M_OR_IMM( a,b,c) M_ITYPE(0x0d,a,c,b)
459 #define M_XOR_IMM(a,b,c) M_ITYPE(0x0e,a,c,b)
461 #define M_ISLL(a,b,c) M_RTYPE(0,b,a,c,0,0x04)
462 #define M_ISRL(a,b,c) M_RTYPE(0,b,a,c,0,0x06)
463 #define M_ISRA(a,b,c) M_RTYPE(0,b,a,c,0,0x07)
464 #define M_LSLL(a,b,c) M_RTYPE(0,b,a,c,0,0x14)
465 #define M_LSRL(a,b,c) M_RTYPE(0,b,a,c,0,0x16)
466 #define M_LSRA(a,b,c) M_RTYPE(0,b,a,c,0,0x17)
468 #define M_ISLL_IMM(a,b,c) M_RTYPE(0,0,a,c,(b)&31,0x00)
469 #define M_ISRL_IMM(a,b,c) M_RTYPE(0,0,a,c,(b)&31,0x02)
470 #define M_ISRA_IMM(a,b,c) M_RTYPE(0,0,a,c,(b)&31,0x03)
471 #define M_LSLL_IMM(a,b,c) M_RTYPE(0,0,a,c,(b)&31,0x38+((b)>>3&4))
472 #define M_LSRL_IMM(a,b,c) M_RTYPE(0,0,a,c,(b)&31,0x3a+((b)>>3&4))
473 #define M_LSRA_IMM(a,b,c) M_RTYPE(0,0,a,c,(b)&31,0x3b+((b)>>3&4))
475 #define M_MOV(a,c) M_OR(a,0,c)
476 #define M_CLR(c) M_OR(0,0,c)
477 #define M_NOP M_ISLL_IMM(0,0,0)
481 #define M_FADD(a,b,c) M_FP3(0x00,FMT_F,a,b,c)
482 #define M_DADD(a,b,c) M_FP3(0x00,FMT_D,a,b,c)
483 #define M_FSUB(a,b,c) M_FP3(0x01,FMT_F,a,b,c)
484 #define M_DSUB(a,b,c) M_FP3(0x01,FMT_D,a,b,c)
485 #define M_FMUL(a,b,c) M_FP3(0x02,FMT_F,a,b,c)
486 #define M_DMUL(a,b,c) M_FP3(0x02,FMT_D,a,b,c)
487 #define M_FDIV(a,b,c) M_FP3(0x03,FMT_F,a,b,c)
488 #define M_DDIV(a,b,c) M_FP3(0x03,FMT_D,a,b,c)
490 #define M_FSQRT(a,c) M_FP2(0x04,FMT_F,a,c)
491 #define M_DSQRT(a,c) M_FP2(0x04,FMT_D,a,c)
492 #define M_FABS(a,c) M_FP2(0x05,FMT_F,a,c)
493 #define M_DABS(a,c) M_FP2(0x05,FMT_D,a,c)
494 #define M_FMOV(a,c) M_FP2(0x06,FMT_F,a,c)
495 #define M_DMOV(a,c) M_FP2(0x06,FMT_D,a,c)
496 #define M_FNEG(a,c) M_FP2(0x07,FMT_F,a,c)
497 #define M_DNEG(a,c) M_FP2(0x07,FMT_D,a,c)
499 #define M_ROUNDFI(a,c) M_FP2(0x0c,FMT_F,a,c)
500 #define M_ROUNDDI(a,c) M_FP2(0x0c,FMT_D,a,c)
501 #define M_TRUNCFI(a,c) M_FP2(0x0d,FMT_F,a,c)
502 #define M_TRUNCDI(a,c) M_FP2(0x0d,FMT_D,a,c)
503 #define M_CEILFI(a,c) M_FP2(0x0e,FMT_F,a,c)
504 #define M_CEILDI(a,c) M_FP2(0x0e,FMT_D,a,c)
505 #define M_FLOORFI(a,c) M_FP2(0x0f,FMT_F,a,c)
506 #define M_FLOORDI(a,c) M_FP2(0x0f,FMT_D,a,c)
508 #define M_ROUNDFL(a,c) M_FP2(0x08,FMT_F,a,c)
509 #define M_ROUNDDL(a,c) M_FP2(0x08,FMT_D,a,c)
510 #define M_TRUNCFL(a,c) M_FP2(0x09,FMT_F,a,c)
511 #define M_TRUNCDL(a,c) M_FP2(0x09,FMT_D,a,c)
512 #define M_CEILFL(a,c) M_FP2(0x0a,FMT_F,a,c)
513 #define M_CEILDL(a,c) M_FP2(0x0a,FMT_D,a,c)
514 #define M_FLOORFL(a,c) M_FP2(0x0b,FMT_F,a,c)
515 #define M_FLOORDL(a,c) M_FP2(0x0b,FMT_D,a,c)
517 #define M_CVTDF(a,c) M_FP2(0x20,FMT_D,a,c)
518 #define M_CVTIF(a,c) M_FP2(0x20,FMT_I,a,c)
519 #define M_CVTLF(a,c) M_FP2(0x20,FMT_L,a,c)
520 #define M_CVTFD(a,c) M_FP2(0x21,FMT_F,a,c)
521 #define M_CVTID(a,c) M_FP2(0x21,FMT_I,a,c)
522 #define M_CVTLD(a,c) M_FP2(0x21,FMT_L,a,c)
523 #define M_CVTFI(a,c) M_FP2(0x24,FMT_F,a,c)
524 #define M_CVTDI(a,c) M_FP2(0x24,FMT_D,a,c)
525 #define M_CVTFL(a,c) M_FP2(0x25,FMT_F,a,c)
526 #define M_CVTDL(a,c) M_FP2(0x25,FMT_D,a,c)
528 #define M_MOVDI(d,i) M_FP3(0,0,d,i,0)
529 #define M_MOVDL(d,l) M_FP3(0,1,d,l,0)
530 #define M_MOVID(i,d) M_FP3(0,4,d,i,0)
531 #define M_MOVLD(l,d) M_FP3(0,5,d,l,0)
533 #define M_MFC1(l,f) M_FP3(0,0,f,l,0)
534 #define M_MTC1(l,f) M_FP3(0,4,f,l,0)
536 #define M_DMFC1(l,f) M_FP3(0,1,f,l,0)
537 #define M_DMTC1(l,f) M_FP3(0,5,f,l,0)
539 #define M_FCMPFF(a,b) M_FP3(0x30,FMT_F,a,b,0)
540 #define M_FCMPFD(a,b) M_FP3(0x30,FMT_D,a,b,0)
541 #define M_FCMPUNF(a,b) M_FP3(0x31,FMT_F,a,b,0)
542 #define M_FCMPUND(a,b) M_FP3(0x31,FMT_D,a,b,0)
543 #define M_FCMPEQF(a,b) M_FP3(0x32,FMT_F,a,b,0)
544 #define M_FCMPEQD(a,b) M_FP3(0x32,FMT_D,a,b,0)
545 #define M_FCMPUEQF(a,b) M_FP3(0x33,FMT_F,a,b,0)
546 #define M_FCMPUEQD(a,b) M_FP3(0x33,FMT_D,a,b,0)
547 #define M_FCMPOLTF(a,b) M_FP3(0x34,FMT_F,a,b,0)
548 #define M_FCMPOLTD(a,b) M_FP3(0x34,FMT_D,a,b,0)
549 #define M_FCMPULTF(a,b) M_FP3(0x35,FMT_F,a,b,0)
550 #define M_FCMPULTD(a,b) M_FP3(0x35,FMT_D,a,b,0)
551 #define M_FCMPOLEF(a,b) M_FP3(0x36,FMT_F,a,b,0)
552 #define M_FCMPOLED(a,b) M_FP3(0x36,FMT_D,a,b,0)
553 #define M_FCMPULEF(a,b) M_FP3(0x37,FMT_F,a,b,0)
554 #define M_FCMPULED(a,b) M_FP3(0x37,FMT_D,a,b,0)
556 #define M_FBF(disp) M_ITYPE(0x11,8,0,disp)
557 #define M_FBT(disp) M_ITYPE(0x11,8,1,disp)
558 #define M_FBFL(disp) M_ITYPE(0x11,8,2,disp)
559 #define M_FBTL(disp) M_ITYPE(0x11,8,3,disp)
561 #define M_CMOVF(a,b) M_RTYPE(0x00,a,0,b,0,1)
562 #define M_CMOVT(a,b) M_RTYPE(0x00,a,1,b,0,1)
569 #if SIZEOF_VOID_P == 8
571 #define POINTERSHIFT 3
573 #define M_ALD_INTERN(a,b,disp) M_LLD_INTERN(a,b,disp)
574 #define M_ALD(a,b,disp) M_LLD(a,b,disp)
575 #define M_ALD_DSEG(a,disp) M_LLD(a,REG_PV,disp)
576 #define M_AST_INTERN(a,b,disp) M_LST_INTERN(a,b,disp)
577 #define M_AST(a,b,disp) M_LST(a,b,disp)
578 #define M_AADD(a,b,c) M_LADD(a,b,c)
579 #define M_AADD_IMM(a,b,c) M_LADD_IMM(a,b,c)
580 #define M_ASUB_IMM(a,b,c) M_LSUB_IMM(a,b,c)
581 #define M_ASLL_IMM(a,b,c) M_LSLL_IMM(a,b,c)
585 #define POINTERSHIFT 2
587 #define M_ALD_INTERN(a,b,disp) M_ILD_INTERN(a,b,disp)
588 #define M_ALD(a,b,disp) M_ILD(a,b,disp)
589 #define M_ALD_DSEG(a,disp) M_ILD(a,REG_PV,disp)
590 #define M_AST_INTERN(a,b,disp) M_IST_INTERN(a,b,disp)
591 #define M_AST(a,b,disp) M_IST(a,b,disp)
592 #define M_AADD(a,b,c) M_IADD(a,b,c)
593 #define M_AADD_IMM(a,b,c) M_IADD_IMM(a,b,c)
594 #define M_ASUB_IMM(a,b,c) M_ISUB_IMM(a,b,c)
595 #define M_ASLL_IMM(a,b,c) M_ISLL_IMM(a,b,c)
599 #endif // CODEGEN_HPP_