CACAO
|
Go to the source code of this file.
Macros | |
#define | MCODECHECK(icnt) |
#define | ICONST(d, c) emit_iconst(cd, (d), (c)) |
#define | LCONST(reg, c) emit_lconst(cd, (reg), (c)) |
#define | ALIGNCODENOP |
#define | BRANCH_NOPS |
#define | PATCHER_CALL_SIZE 1 * 4 /* an instruction is 4-bytes long */ |
#define | PATCHER_NOPS |
#define | M_OP3(opcode, y, oe, rc, d, a, b) |
#define | M_OP4(x, y, rc, d, a, b, c) |
#define | M_OP2_IMM(x, d, a, i) |
#define | M_INSTR_OP2_IMM_D(x) (((x) >> 21) & 0x1f ) |
#define | M_INSTR_OP2_IMM_A(x) (((x) >> 16) & 0x1f ) |
#define | M_INSTR_OP2_IMM_I(x) ( (x) & 0xffff) |
#define | M_BCMASK 0x0000fffc /* (((1 << 16) - 1) & ~3) */ |
#define | M_BMASK 0x03fffffc /* (((1 << 26) - 1) & ~3) */ |
#define | M_B(x, i, a, l) |
#define | M_BC(x, bo, bi, i, a, l) |
#define | M_EXTSW(a, b) M_OP3(31, 986, 0, 0, a, b, 0) |
#define | M_ILLEGAL M_OP3(0, 0, 0, 0, 0, 0, 0) |
#define | M_IADD(a, b, c) M_LADD(a,b,c) |
#define | M_LADD(a, b, c) M_OP3(31, 266, 0, 0, c, a, b) |
#define | M_IADD_IMM(a, b, c) M_OP2_IMM(14, c, a, b) /* XXX */ |
#define | M_LADD_IMM(a, b, c) M_OP2_IMM(14, c, a, b) |
#define | M_ADDC(a, b, c) M_OP3(31, 10, 0, 0, c, a, b) |
#define | M_ADDIC(a, b, c) M_OP2_IMM(12, c, a, b) |
#define | M_ADDICTST(a, b, c) M_OP2_IMM(13, c, a, b) |
#define | M_ADDE(a, b, c) M_OP3(31, 138, 0, 0, c, a, b) |
#define | M_ADDZE(a, b) M_OP3(31, 202, 0, 0, b, a, 0) |
#define | M_ADDME(a, b) M_OP3(31, 234, 0, 0, b, a, 0) |
#define | M_SUB(a, b, c) M_OP3(31, 40, 0, 0, c, b, a) |
#define | M_ISUBTST(a, b, c) M_OP3(31, 40, 0, 1, c, b, a) |
#define | M_SUBC(a, b, c) M_OP3(31, 8, 0, 0, c, b, a) |
#define | M_SUBIC(a, b, c) M_OP2_IMM(8, c, b, a) |
#define | M_SUBE(a, b, c) M_OP3(31, 136, 0, 0, c, b, a) |
#define | M_SUBZE(a, b) M_OP3(31, 200, 0, 0, b, a, 0) |
#define | M_SUBME(a, b) M_OP3(31, 232, 0, 0, b, a, 0) |
#define | M_AND(a, b, c) M_OP3(31, 28, 0, 0, a, c, b) |
#define | M_AND_IMM(a, b, c) M_OP2_IMM(28, a, c, b) |
#define | M_ANDIS(a, b, c) M_OP2_IMM(29, a, c, b) |
#define | M_OR(a, b, c) M_OP3(31, 444, 0, 0, a, c, b) |
#define | M_OR_TST(a, b, c) M_OP3(31, 444, 0, 1, a, c, b) |
#define | M_OR_IMM(a, b, c) M_OP2_IMM(24, a, c, b) |
#define | M_ORIS(a, b, c) M_OP2_IMM(25, a, c, b) |
#define | M_XOR(a, b, c) M_OP3(31, 316, 0, 0, a, c, b) |
#define | M_XOR_IMM(a, b, c) M_OP2_IMM(26, a, c, b) |
#define | M_XORIS(a, b, c) M_OP2_IMM(27, a, c, b) |
#define | M_SLL(a, b, c) M_OP3(31, 27, 0, 0, a, c, b) |
#define | M_SLL_IMM(a, b, c) M_OP3(30, ((b)&0x20 ? 1:0), 0, ((((63-(b))&0x1f)<<6) | (((63-(b))&0x20 ? 1:0)<<5) | 0x04), a, c, (b)&0x1f); |
#define | M_SRL(a, b, c) M_OP3(31, 539, 0, 0, a, c, b) |
#define | M_SRL_IMM(a, b, c) M_OP3(30, ((64-(b))&0x20 ? 1:0), 0, (((((b))&0x1f)<<6) | ((((b))&0x20 ? 1:0)<<5) | 0x00), a, c, (64-(b))&0x1f); |
#define | M_SRA(a, b, c) M_OP3(31, 794, 0, 0, a, c, b) |
#define | M_SRA_IMM(a, b, c) M_OP3(31, (826 | ((b)&0x20?1:0)), 0, 0, a, c, ((b)&0x1f)) |
#define | M_RLDICL(a, b, c, d) M_OP4(30, ((b)&0x20 ? 1:0), 0, a, d, (b)&0x1f, c) |
#define | M_CNTLZ(a, b) M_OP3(31, 58, 0, 0, a, b, 0) |
#define | M_MUL(a, b, c) M_OP3(31, 233, 0, 0, c, a, b) |
#define | M_MUL_IMM(a, b, c) M_OP2_IMM(7, c, a, b) |
#define | M_DIV(a, b, c) M_OP3(31, 489, 1, 0, c, a, b) |
#define | M_NEG(a, b) M_OP3(31, 104, 0, 0, b, a, 0) |
#define | M_NOT(a, b) M_OP3(31, 124, 0, 0, a, b, a) |
#define | M_SUBFIC(a, b, c) M_OP2_IMM(8, c, a, b) |
#define | M_SUBFZE(a, b) M_OP3(31, 200, 0, 0, b, a, 0) |
#define | M_RLWINM(a, b, c, d, e) M_OP4(21, d, 0, a, e, b, c) |
#define | M_ADDZE(a, b) M_OP3(31, 202, 0, 0, b, a, 0) |
#define | M_ADDIS(a, b, c) M_OP2_IMM(15, c, a, b) |
#define | M_STFIWX(a, b, c) M_OP3(31, 983, 0, 0, a, b, c) |
#define | M_LWAX(a, b, c) M_OP3(31, 341, 0, 0, a, b, c) |
#define | M_LHZX(a, b, c) M_OP3(31, 279, 0, 0, a, b, c) |
#define | M_LHAX(a, b, c) M_OP3(31, 343, 0, 0, a, b, c) |
#define | M_LHAX(a, b, c) M_OP3(31, 343, 0, 0, a, b, c) |
#define | M_LBZX(a, b, c) M_OP3(31, 87, 0, 0, a, b, c) |
#define | M_LFSX(a, b, c) M_OP3(31, 535, 0, 0, a, b, c) |
#define | M_LFDX(a, b, c) M_OP3(31, 599, 0, 0, a, b, c) |
#define | M_STWX(a, b, c) M_OP3(31, 151, 0, 0, a, b, c) |
#define | M_STHX(a, b, c) M_OP3(31, 407, 0, 0, a, b, c) |
#define | M_STBX(a, b, c) M_OP3(31, 215, 0, 0, a, b, c) |
#define | M_STFSX(a, b, c) M_OP3(31, 663, 0, 0, a, b, c) |
#define | M_STFDX(a, b, c) M_OP3(31, 727, 0, 0, a, b, c) |
#define | M_STDU_INTERN(a, b, disp) M_OP2_IMM(62,a,b,(disp)|0x0001) |
#define | M_STDU(a, b, disp) |
#define | M_STDUX(a, b, c) M_OP3(31,181,0,0,a,b,c) |
#define | M_LDAH(a, b, c) M_ADDIS(b, c, a) |
#define | M_TRAP M_OP3(31, 4, 0, 0, 31, 0, 0) |
#define | M_NOP M_OR_IMM(0, 0, 0) |
#define | M_MOV(a, b) M_OR(a, a, b) |
#define | M_TST(a) M_OP3(31, 444, 0, 1, a, a, a) |
#define | M_DADD(a, b, c) M_OP3(63, 21, 0, 0, c, a, b) |
#define | M_FADD(a, b, c) M_OP3(59, 21, 0, 0, c, a, b) |
#define | M_DSUB(a, b, c) M_OP3(63, 20, 0, 0, c, a, b) |
#define | M_FSUB(a, b, c) M_OP3(59, 20, 0, 0, c, a, b) |
#define | M_DMUL(a, b, c) M_OP4(63, 25, 0, c, a, 0, b) |
#define | M_FMUL(a, b, c) M_OP4(59, 25, 0, c, a, 0, b) |
#define | M_DDIV(a, b, c) M_OP3(63, 18, 0, 0, c, a, b) |
#define | M_FDIV(a, b, c) M_OP3(59, 18, 0, 0, c, a, b) |
#define | M_FABS(a, b) M_OP3(63, 264, 0, 0, b, 0, a) |
#define | M_CVTDL(a, b) M_OP3(63, 14, 0, 0, b, 0, a) |
#define | M_CVTDL_C(a, b) M_OP3(63, 15, 0, 0, b, 0, a) |
#define | M_CVTDF(a, b) M_OP3(63, 12, 0, 0, b, 0, a) |
#define | M_FMOV(a, b) M_OP3(63, 72, 0, 0, b, 0, a) |
#define | M_FMOVN(a, b) M_OP3(63, 40, 0, 0, b, 0, a) |
#define | M_DSQRT(a, b) M_OP3(63, 22, 0, 0, b, 0, a) |
#define | M_FSQRT(a, b) M_OP3(59, 22, 0, 0, b, 0, a) |
#define | M_FCMPU(a, b) M_OP3(63, 0, 0, 0, 0, a, b) |
#define | M_FCMPO(a, b) M_OP3(63, 32, 0, 0, 0, a, b) |
#define | M_BLDU(a, b, c) M_OP2_IMM(34, a, b, c) /* LBZ */ |
#define | M_SLDU(a, b, c) M_OP2_IMM(40, a, b, c) /* LHZ */ |
#define | M_LWZ(a, b, disp) M_OP2_IMM(32,a,b,disp) /* needed for hardware exceptions */ |
#define | M_ILD_INTERN(a, b, disp) M_OP2_IMM(58, a, b, (((disp) & 0xfffe) | 0x0002)) /* this is LWA actually */ |
#define | M_ILD(a, b, disp) |
#define | M_LLD_INTERN(a, b, disp) M_OP2_IMM(58,a,b,disp) /* LD */ |
#define | M_LLD(a, b, disp) |
#define | M_ALD_INTERN(a, b, disp) M_LLD_INTERN(a,b,disp) |
#define | M_ALD(a, b, disp) M_LLD(a,b,disp) |
#define | M_ALD_DSEG(a, disp) M_LLD(a,REG_PV,disp) |
#define | M_ALDX(a, b, c) M_OP3(31, 21, 0, 0, a, b, c) /* LDX */ |
#define | M_BST(a, b, c) M_OP2_IMM(38, a, b, c) /* STB */ |
#define | M_SST(a, b, c) M_OP2_IMM(44, a, b, c) /* LMW */ |
#define | M_IST_INTERN(a, b, disp) M_OP2_IMM(36,a,b,disp) /* STW */ |
#define | M_IST(a, b, disp) |
#define | M_LST_INTERN(a, b, disp) M_OP2_IMM(62,a,b,disp) /* STD */ |
#define | M_LST(a, b, disp) |
#define | M_AST_INTERN(a, b, disp) M_LST_INTERN(a,b,disp) |
#define | M_AST(a, b, disp) M_LST(a,b,disp) |
#define | M_ASTX(a, b, c) M_OP3(31, 149, 0, 0, a, b, c) |
#define | M_LSTX(a, b, c) M_ASTX(a,b,c) |
#define | M_BSEXT(a, b) M_OP3(31, 954, 0, 0, a, b, 0) |
#define | M_CZEXT(a, b) M_RLWINM(a,0,16,31,b) |
#define | M_SSEXT(a, b) M_OP3(31, 922, 0, 0, a, b, 0) |
#define | M_ISEXT(a, b) M_OP3(31, 986, 0, 0, a, b, 0) |
#define | M_BR(a) M_B(18, a, 0, 0) |
#define | M_BL(a) M_B(18, a, 0, 1) |
#define | M_RET M_OP3(19, 16, 0, 0, 20, 0, 0) |
#define | M_JSR M_OP3(19, 528, 0, 1, 20, 0, 0) |
#define | M_RTS M_OP3(19, 528, 0, 0, 20, 0, 0) |
#define | M_CMP(a, b) M_OP3(31, 0, 0, 0, 1, a, b) |
#define | M_CMPU(a, b) M_OP3(31, 32, 0, 0, 1, a, b) |
#define | M_CMPI(a, b) M_OP2_IMM(11, 1, a, b) |
#define | M_CMPUI(a, b) M_OP2_IMM(10, 1, a, b) |
#define | M_BLT(a) M_BC(16, 12, 0, a, 0, 0) |
#define | M_BLE(a) M_BC(16, 4, 1, a, 0, 0) |
#define | M_BGT(a) M_BC(16, 12, 1, a, 0, 0) |
#define | M_BGE(a) M_BC(16, 4, 0, a, 0, 0) |
#define | M_BEQ(a) M_BC(16, 12, 2, a, 0, 0) |
#define | M_BNE(a) M_BC(16, 4, 2, a, 0, 0) |
#define | M_BNAN(a) M_BC(16, 12, 3, a, 0, 0) |
#define | M_FLD_INTERN(a, b, disp) M_OP2_IMM(48,a,b,disp) |
#define | M_DLD_INTERN(a, b, disp) M_OP2_IMM(50,a,b,disp) |
#define | M_FLD(a, b, disp) |
#define | M_DLD(a, b, disp) |
#define | M_FST_INTERN(a, b, disp) M_OP2_IMM(52,a,b,disp) /* STFS */ |
#define | M_DST_INTERN(a, b, disp) M_OP2_IMM(54,a,b,disp) /* STFD */ |
#define | M_FST(a, b, disp) |
#define | M_DST(a, b, disp) |
#define | M_MFLR(a) M_OP3(31, 339, 0, 0, a, 8, 0) |
#define | M_MFXER(a) M_OP3(31, 339, 0, 0, a, 1, 0) |
#define | M_MFCTR(a) M_OP3(31, 339, 0, 0, a, 9, 0) |
#define | M_MTLR(a) M_OP3(31, 467, 0, 0, a, 8, 0) |
#define | M_MTXER(a) M_OP3(31, 467, 0, 0, a, 1, 0) |
#define | M_MTCTR(a) M_OP3(31, 467, 0, 0, a, 9, 0) |
#define | M_LDA_INTERN(a, b, c) M_LADD_IMM(b, c, a) |
#define | M_LDA(a, b, disp) |
#define | M_LDATST(a, b, c) M_ADDICTST(b, c, a) |
#define | M_CLR(a) M_LADD_IMM(0, 0, a) |
#define | M_CLR_HIGH(a) M_OP3(30, 0, 0, 0x20, (a), (a), 0); |
#define | M_AADD_IMM(a, b, c) M_LADD_IMM(a, b, c) |
#define | M_DMOV(a, b) M_FMOV(a,b) |
#define | M_ACMP(a, b) M_CMP(a,b) |
#define | M_ICMP(a, b) M_CMP(a,b) |
#define | M_TEST(a) M_TST(a) |
#define ALIGNCODENOP |
Definition at line 54 of file codegen.hpp.
#define BRANCH_NOPS |
Definition at line 62 of file codegen.hpp.
#define ICONST | ( | d, | |
c | |||
) | emit_iconst(cd, (d), (c)) |
Definition at line 50 of file codegen.hpp.
#define LCONST | ( | reg, | |
c | |||
) | emit_lconst(cd, (reg), (c)) |
Definition at line 51 of file codegen.hpp.
#define M_AADD_IMM | ( | a, | |
b, | |||
c | |||
) | M_LADD_IMM(a, b, c) |
Definition at line 444 of file codegen.hpp.
#define M_ACMP | ( | a, | |
b | |||
) | M_CMP(a,b) |
Definition at line 448 of file codegen.hpp.
#define M_ADDC | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 10, 0, 0, c, a, b) |
Definition at line 133 of file codegen.hpp.
#define M_ADDE | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 138, 0, 0, c, a, b) |
Definition at line 136 of file codegen.hpp.
#define M_ADDIC | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(12, c, a, b) |
Definition at line 134 of file codegen.hpp.
#define M_ADDICTST | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(13, c, a, b) |
Definition at line 135 of file codegen.hpp.
#define M_ADDIS | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(15, c, a, b) |
Definition at line 180 of file codegen.hpp.
#define M_ADDME | ( | a, | |
b | |||
) | M_OP3(31, 234, 0, 0, b, a, 0) |
Definition at line 138 of file codegen.hpp.
#define M_ADDZE | ( | a, | |
b | |||
) | M_OP3(31, 202, 0, 0, b, a, 0) |
Definition at line 179 of file codegen.hpp.
#define M_ADDZE | ( | a, | |
b | |||
) | M_OP3(31, 202, 0, 0, b, a, 0) |
Definition at line 179 of file codegen.hpp.
#define M_ALD | ( | a, | |
b, | |||
disp | |||
) | M_LLD(a,b,disp) |
Definition at line 296 of file codegen.hpp.
Definition at line 297 of file codegen.hpp.
#define M_ALD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_LLD_INTERN(a,b,disp) |
Definition at line 295 of file codegen.hpp.
#define M_ALDX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 21, 0, 0, a, b, c) /* LDX */ |
Definition at line 298 of file codegen.hpp.
#define M_AND | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 28, 0, 0, a, c, b) |
Definition at line 148 of file codegen.hpp.
#define M_AND_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(28, a, c, b) |
Definition at line 149 of file codegen.hpp.
#define M_ANDIS | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(29, a, c, b) |
Definition at line 150 of file codegen.hpp.
#define M_AST | ( | a, | |
b, | |||
disp | |||
) | M_LST(a,b,disp) |
Definition at line 336 of file codegen.hpp.
#define M_AST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_LST_INTERN(a,b,disp) |
Definition at line 335 of file codegen.hpp.
#define M_ASTX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 149, 0, 0, a, b, c) |
Definition at line 337 of file codegen.hpp.
#define M_B | ( | x, | |
i, | |||
a, | |||
l | |||
) |
Definition at line 109 of file codegen.hpp.
#define M_BC | ( | x, | |
bo, | |||
bi, | |||
i, | |||
a, | |||
l | |||
) |
Definition at line 115 of file codegen.hpp.
#define M_BCMASK 0x0000fffc /* (((1 << 16) - 1) & ~3) */ |
Definition at line 106 of file codegen.hpp.
#define M_BEQ | ( | a | ) | M_BC(16, 12, 2, a, 0, 0) |
Definition at line 361 of file codegen.hpp.
#define M_BGE | ( | a | ) | M_BC(16, 4, 0, a, 0, 0) |
Definition at line 360 of file codegen.hpp.
#define M_BGT | ( | a | ) | M_BC(16, 12, 1, a, 0, 0) |
Definition at line 359 of file codegen.hpp.
#define M_BL | ( | a | ) | M_B(18, a, 0, 1) |
Definition at line 347 of file codegen.hpp.
#define M_BLDU | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(34, a, b, c) /* LBZ */ |
Definition at line 258 of file codegen.hpp.
#define M_BLE | ( | a | ) | M_BC(16, 4, 1, a, 0, 0) |
Definition at line 358 of file codegen.hpp.
#define M_BLT | ( | a | ) | M_BC(16, 12, 0, a, 0, 0) |
Definition at line 357 of file codegen.hpp.
#define M_BMASK 0x03fffffc /* (((1 << 26) - 1) & ~3) */ |
Definition at line 107 of file codegen.hpp.
#define M_BNAN | ( | a | ) | M_BC(16, 12, 3, a, 0, 0) |
Definition at line 363 of file codegen.hpp.
#define M_BNE | ( | a | ) | M_BC(16, 4, 2, a, 0, 0) |
Definition at line 362 of file codegen.hpp.
#define M_BR | ( | a | ) | M_B(18, a, 0, 0) |
Definition at line 346 of file codegen.hpp.
#define M_BSEXT | ( | a, | |
b | |||
) | M_OP3(31, 954, 0, 0, a, b, 0) |
Definition at line 341 of file codegen.hpp.
#define M_BST | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(38, a, b, c) /* STB */ |
Definition at line 300 of file codegen.hpp.
#define M_CLR | ( | a | ) | M_LADD_IMM(0, 0, a) |
Definition at line 442 of file codegen.hpp.
#define M_CLR_HIGH | ( | a | ) | M_OP3(30, 0, 0, 0x20, (a), (a), 0); |
Definition at line 443 of file codegen.hpp.
#define M_CMP | ( | a, | |
b | |||
) | M_OP3(31, 0, 0, 0, 1, a, b) |
Definition at line 352 of file codegen.hpp.
#define M_CMPI | ( | a, | |
b | |||
) | M_OP2_IMM(11, 1, a, b) |
Definition at line 354 of file codegen.hpp.
#define M_CMPU | ( | a, | |
b | |||
) | M_OP3(31, 32, 0, 0, 1, a, b) |
Definition at line 353 of file codegen.hpp.
#define M_CMPUI | ( | a, | |
b | |||
) | M_OP2_IMM(10, 1, a, b) |
Definition at line 355 of file codegen.hpp.
#define M_CNTLZ | ( | a, | |
b | |||
) | M_OP3(31, 58, 0, 0, a, b, 0) |
Definition at line 167 of file codegen.hpp.
#define M_CVTDF | ( | a, | |
b | |||
) | M_OP3(63, 12, 0, 0, b, 0, a) |
Definition at line 249 of file codegen.hpp.
#define M_CVTDL | ( | a, | |
b | |||
) | M_OP3(63, 14, 0, 0, b, 0, a) |
Definition at line 247 of file codegen.hpp.
#define M_CVTDL_C | ( | a, | |
b | |||
) | M_OP3(63, 15, 0, 0, b, 0, a) |
Definition at line 248 of file codegen.hpp.
#define M_CZEXT | ( | a, | |
b | |||
) | M_RLWINM(a,0,16,31,b) |
Definition at line 342 of file codegen.hpp.
#define M_DADD | ( | a, | |
b, | |||
c | |||
) | M_OP3(63, 21, 0, 0, c, a, b) |
Definition at line 237 of file codegen.hpp.
#define M_DDIV | ( | a, | |
b, | |||
c | |||
) | M_OP3(63, 18, 0, 0, c, a, b) |
Definition at line 243 of file codegen.hpp.
#define M_DIV | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 489, 1, 0, c, a, b) |
Definition at line 171 of file codegen.hpp.
#define M_DLD | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 380 of file codegen.hpp.
#define M_DLD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(50,a,b,disp) |
Definition at line 366 of file codegen.hpp.
#define M_DMOV | ( | a, | |
b | |||
) | M_FMOV(a,b) |
Definition at line 446 of file codegen.hpp.
#define M_DMUL | ( | a, | |
b, | |||
c | |||
) | M_OP4(63, 25, 0, c, a, 0, b) |
Definition at line 241 of file codegen.hpp.
#define M_DSQRT | ( | a, | |
b | |||
) | M_OP3(63, 22, 0, 0, b, 0, a) |
Definition at line 252 of file codegen.hpp.
#define M_DST | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 407 of file codegen.hpp.
#define M_DST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(54,a,b,disp) /* STFD */ |
Definition at line 393 of file codegen.hpp.
#define M_DSUB | ( | a, | |
b, | |||
c | |||
) | M_OP3(63, 20, 0, 0, c, a, b) |
Definition at line 239 of file codegen.hpp.
#define M_EXTSW | ( | a, | |
b | |||
) | M_OP3(31, 986, 0, 0, a, b, 0) |
Definition at line 123 of file codegen.hpp.
#define M_FABS | ( | a, | |
b | |||
) | M_OP3(63, 264, 0, 0, b, 0, a) |
Definition at line 246 of file codegen.hpp.
#define M_FADD | ( | a, | |
b, | |||
c | |||
) | M_OP3(59, 21, 0, 0, c, a, b) |
Definition at line 238 of file codegen.hpp.
#define M_FCMPO | ( | a, | |
b | |||
) | M_OP3(63, 32, 0, 0, 0, a, b) |
Definition at line 256 of file codegen.hpp.
#define M_FCMPU | ( | a, | |
b | |||
) | M_OP3(63, 0, 0, 0, 0, a, b) |
Definition at line 255 of file codegen.hpp.
#define M_FDIV | ( | a, | |
b, | |||
c | |||
) | M_OP3(59, 18, 0, 0, c, a, b) |
Definition at line 244 of file codegen.hpp.
#define M_FLD | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 368 of file codegen.hpp.
#define M_FLD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(48,a,b,disp) |
Definition at line 365 of file codegen.hpp.
#define M_FMOV | ( | a, | |
b | |||
) | M_OP3(63, 72, 0, 0, b, 0, a) |
Definition at line 250 of file codegen.hpp.
#define M_FMOVN | ( | a, | |
b | |||
) | M_OP3(63, 40, 0, 0, b, 0, a) |
Definition at line 251 of file codegen.hpp.
#define M_FMUL | ( | a, | |
b, | |||
c | |||
) | M_OP4(59, 25, 0, c, a, 0, b) |
Definition at line 242 of file codegen.hpp.
#define M_FSQRT | ( | a, | |
b | |||
) | M_OP3(59, 22, 0, 0, b, 0, a) |
Definition at line 253 of file codegen.hpp.
#define M_FST | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 395 of file codegen.hpp.
#define M_FST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(52,a,b,disp) /* STFS */ |
Definition at line 392 of file codegen.hpp.
#define M_FSUB | ( | a, | |
b, | |||
c | |||
) | M_OP3(59, 20, 0, 0, c, a, b) |
Definition at line 240 of file codegen.hpp.
#define M_IADD | ( | a, | |
b, | |||
c | |||
) | M_LADD(a,b,c) |
Definition at line 129 of file codegen.hpp.
#define M_IADD_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(14, c, a, b) /* XXX */ |
Definition at line 131 of file codegen.hpp.
#define M_ICMP | ( | a, | |
b | |||
) | M_CMP(a,b) |
Definition at line 449 of file codegen.hpp.
#define M_ILD | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 269 of file codegen.hpp.
#define M_ILD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(58, a, b, (((disp) & 0xfffe) | 0x0002)) /* this is LWA actually */ |
Definition at line 267 of file codegen.hpp.
#define M_ILLEGAL M_OP3(0, 0, 0, 0, 0, 0, 0) |
Definition at line 128 of file codegen.hpp.
#define M_INSTR_OP2_IMM_A | ( | x | ) | (((x) >> 16) & 0x1f ) |
Definition at line 103 of file codegen.hpp.
#define M_INSTR_OP2_IMM_D | ( | x | ) | (((x) >> 21) & 0x1f ) |
Definition at line 102 of file codegen.hpp.
#define M_INSTR_OP2_IMM_I | ( | x | ) | ( (x) & 0xffff) |
Definition at line 104 of file codegen.hpp.
#define M_ISEXT | ( | a, | |
b | |||
) | M_OP3(31, 986, 0, 0, a, b, 0) |
Definition at line 344 of file codegen.hpp.
#define M_IST | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 309 of file codegen.hpp.
#define M_IST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(36,a,b,disp) /* STW */ |
Definition at line 303 of file codegen.hpp.
#define M_ISUBTST | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 40, 0, 1, c, b, a) |
Definition at line 141 of file codegen.hpp.
#define M_JSR M_OP3(19, 528, 0, 1, 20, 0, 0) |
Definition at line 349 of file codegen.hpp.
#define M_LADD | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 266, 0, 0, c, a, b) |
Definition at line 130 of file codegen.hpp.
#define M_LADD_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(14, c, a, b) |
Definition at line 132 of file codegen.hpp.
#define M_LBZX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 87, 0, 0, a, b, c) |
Definition at line 187 of file codegen.hpp.
#define M_LDA | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 428 of file codegen.hpp.
#define M_LDA_INTERN | ( | a, | |
b, | |||
c | |||
) | M_LADD_IMM(b, c, a) |
Definition at line 426 of file codegen.hpp.
#define M_LDAH | ( | a, | |
b, | |||
c | |||
) | M_ADDIS(b, c, a) |
Definition at line 230 of file codegen.hpp.
#define M_LDATST | ( | a, | |
b, | |||
c | |||
) | M_ADDICTST(b, c, a) |
Definition at line 441 of file codegen.hpp.
#define M_LFDX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 599, 0, 0, a, b, c) |
Definition at line 189 of file codegen.hpp.
#define M_LFSX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 535, 0, 0, a, b, c) |
Definition at line 188 of file codegen.hpp.
#define M_LHAX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 343, 0, 0, a, b, c) |
Definition at line 186 of file codegen.hpp.
#define M_LHAX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 343, 0, 0, a, b, c) |
Definition at line 186 of file codegen.hpp.
#define M_LHZX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 279, 0, 0, a, b, c) |
Definition at line 184 of file codegen.hpp.
#define M_LLD | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 283 of file codegen.hpp.
#define M_LLD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(58,a,b,disp) /* LD */ |
Definition at line 281 of file codegen.hpp.
#define M_LST | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 323 of file codegen.hpp.
#define M_LST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(62,a,b,disp) /* STD */ |
Definition at line 321 of file codegen.hpp.
#define M_LSTX | ( | a, | |
b, | |||
c | |||
) | M_ASTX(a,b,c) |
Definition at line 338 of file codegen.hpp.
#define M_LWAX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 341, 0, 0, a, b, c) |
Definition at line 183 of file codegen.hpp.
#define M_LWZ | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(32,a,b,disp) /* needed for hardware exceptions */ |
Definition at line 265 of file codegen.hpp.
#define M_MFCTR | ( | a | ) | M_OP3(31, 339, 0, 0, a, 9, 0) |
Definition at line 421 of file codegen.hpp.
#define M_MFLR | ( | a | ) | M_OP3(31, 339, 0, 0, a, 8, 0) |
Definition at line 419 of file codegen.hpp.
#define M_MFXER | ( | a | ) | M_OP3(31, 339, 0, 0, a, 1, 0) |
Definition at line 420 of file codegen.hpp.
#define M_MOV | ( | a, | |
b | |||
) | M_OR(a, a, b) |
Definition at line 234 of file codegen.hpp.
#define M_MTCTR | ( | a | ) | M_OP3(31, 467, 0, 0, a, 9, 0) |
Definition at line 424 of file codegen.hpp.
#define M_MTLR | ( | a | ) | M_OP3(31, 467, 0, 0, a, 8, 0) |
Definition at line 422 of file codegen.hpp.
#define M_MTXER | ( | a | ) | M_OP3(31, 467, 0, 0, a, 1, 0) |
Definition at line 423 of file codegen.hpp.
#define M_MUL | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 233, 0, 0, c, a, b) |
Definition at line 169 of file codegen.hpp.
#define M_MUL_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(7, c, a, b) |
Definition at line 170 of file codegen.hpp.
#define M_NEG | ( | a, | |
b | |||
) | M_OP3(31, 104, 0, 0, b, a, 0) |
Definition at line 173 of file codegen.hpp.
#define M_NOP M_OR_IMM(0, 0, 0) |
Definition at line 233 of file codegen.hpp.
#define M_NOT | ( | a, | |
b | |||
) | M_OP3(31, 124, 0, 0, a, b, a) |
Definition at line 174 of file codegen.hpp.
#define M_OP2_IMM | ( | x, | |
d, | |||
a, | |||
i | |||
) |
Definition at line 95 of file codegen.hpp.
#define M_OP3 | ( | opcode, | |
y, | |||
oe, | |||
rc, | |||
d, | |||
a, | |||
b | |||
) |
Definition at line 83 of file codegen.hpp.
#define M_OP4 | ( | x, | |
y, | |||
rc, | |||
d, | |||
a, | |||
b, | |||
c | |||
) |
Definition at line 89 of file codegen.hpp.
#define M_OR | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 444, 0, 0, a, c, b) |
Definition at line 151 of file codegen.hpp.
#define M_OR_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(24, a, c, b) |
Definition at line 153 of file codegen.hpp.
#define M_OR_TST | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 444, 0, 1, a, c, b) |
Definition at line 152 of file codegen.hpp.
#define M_ORIS | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(25, a, c, b) |
Definition at line 154 of file codegen.hpp.
#define M_RET M_OP3(19, 16, 0, 0, 20, 0, 0) |
Definition at line 348 of file codegen.hpp.
#define M_RLDICL | ( | a, | |
b, | |||
c, | |||
d | |||
) | M_OP4(30, ((b)&0x20 ? 1:0), 0, a, d, (b)&0x1f, c) |
Definition at line 166 of file codegen.hpp.
Definition at line 178 of file codegen.hpp.
#define M_RTS M_OP3(19, 528, 0, 0, 20, 0, 0) |
Definition at line 350 of file codegen.hpp.
#define M_SLDU | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(40, a, b, c) /* LHZ */ |
Definition at line 259 of file codegen.hpp.
#define M_SLL | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 27, 0, 0, a, c, b) |
Definition at line 160 of file codegen.hpp.
#define M_SLL_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP3(30, ((b)&0x20 ? 1:0), 0, ((((63-(b))&0x1f)<<6) | (((63-(b))&0x20 ? 1:0)<<5) | 0x04), a, c, (b)&0x1f); |
Definition at line 161 of file codegen.hpp.
#define M_SRA | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 794, 0, 0, a, c, b) |
Definition at line 164 of file codegen.hpp.
#define M_SRA_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, (826 | ((b)&0x20?1:0)), 0, 0, a, c, ((b)&0x1f)) |
Definition at line 165 of file codegen.hpp.
#define M_SRL | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 539, 0, 0, a, c, b) |
Definition at line 162 of file codegen.hpp.
#define M_SRL_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP3(30, ((64-(b))&0x20 ? 1:0), 0, (((((b))&0x1f)<<6) | ((((b))&0x20 ? 1:0)<<5) | 0x00), a, c, (64-(b))&0x1f); |
Definition at line 163 of file codegen.hpp.
#define M_SSEXT | ( | a, | |
b | |||
) | M_OP3(31, 922, 0, 0, a, b, 0) |
Definition at line 343 of file codegen.hpp.
#define M_SST | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(44, a, b, c) /* LMW */ |
Definition at line 301 of file codegen.hpp.
#define M_STBX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 215, 0, 0, a, b, c) |
Definition at line 193 of file codegen.hpp.
#define M_STDU | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 216 of file codegen.hpp.
#define M_STDU_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(62,a,b,(disp)|0x0001) |
Definition at line 215 of file codegen.hpp.
#define M_STDUX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31,181,0,0,a,b,c) |
Definition at line 228 of file codegen.hpp.
#define M_STFDX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 727, 0, 0, a, b, c) |
Definition at line 195 of file codegen.hpp.
#define M_STFIWX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 983, 0, 0, a, b, c) |
Definition at line 181 of file codegen.hpp.
#define M_STFSX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 663, 0, 0, a, b, c) |
Definition at line 194 of file codegen.hpp.
#define M_STHX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 407, 0, 0, a, b, c) |
Definition at line 192 of file codegen.hpp.
#define M_STWX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 151, 0, 0, a, b, c) |
Definition at line 191 of file codegen.hpp.
#define M_SUB | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 40, 0, 0, c, b, a) |
Definition at line 140 of file codegen.hpp.
#define M_SUBC | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 8, 0, 0, c, b, a) |
Definition at line 142 of file codegen.hpp.
#define M_SUBE | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 136, 0, 0, c, b, a) |
Definition at line 144 of file codegen.hpp.
#define M_SUBFIC | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(8, c, a, b) |
Definition at line 176 of file codegen.hpp.
#define M_SUBFZE | ( | a, | |
b | |||
) | M_OP3(31, 200, 0, 0, b, a, 0) |
Definition at line 177 of file codegen.hpp.
#define M_SUBIC | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(8, c, b, a) |
Definition at line 143 of file codegen.hpp.
#define M_SUBME | ( | a, | |
b | |||
) | M_OP3(31, 232, 0, 0, b, a, 0) |
Definition at line 146 of file codegen.hpp.
#define M_SUBZE | ( | a, | |
b | |||
) | M_OP3(31, 200, 0, 0, b, a, 0) |
Definition at line 145 of file codegen.hpp.
#define M_TEST | ( | a | ) | M_TST(a) |
Definition at line 451 of file codegen.hpp.
#define M_TRAP M_OP3(31, 4, 0, 0, 31, 0, 0) |
Definition at line 231 of file codegen.hpp.
#define M_TST | ( | a | ) | M_OP3(31, 444, 0, 1, a, a, a) |
Definition at line 235 of file codegen.hpp.
#define M_XOR | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 316, 0, 0, a, c, b) |
Definition at line 155 of file codegen.hpp.
#define M_XOR_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(26, a, c, b) |
Definition at line 156 of file codegen.hpp.
#define M_XORIS | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(27, a, c, b) |
Definition at line 157 of file codegen.hpp.
#define MCODECHECK | ( | icnt | ) |
Definition at line 43 of file codegen.hpp.
#define PATCHER_CALL_SIZE 1 * 4 /* an instruction is 4-bytes long */ |
Definition at line 73 of file codegen.hpp.
#define PATCHER_NOPS |
Definition at line 75 of file codegen.hpp.