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) |
#define | M_DMOV(a, b) M_FMOV(a,b) |
#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_OP3_GET_A(x) (((x) >> 16) & 0x1f ) |
#define | M_OP3_GET_B(x) (((x) >> 11) & 0x1f ) |
#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_BMASK 0x03fffffc /* (((1 << 26) - 1) & ~3) */ |
#define | M_BCMASK 0x0000fffc /* (((1 << 16) - 1) & ~3) */ |
#define | M_B(LI, AA, LK) |
#define | M_BC(BO, BI, BD, AA, LK) |
#define | MI_and(rA, rS, rB) M_OP3(31, 28, 0, 0, rS, rA, rB) |
#define | MI_anddot(rA, rS, rB) M_OP3(31, 28, 0, 1, rS, rA, rB) |
#define | MI_andi(rA, rS, UIMM) M_OP2_IMM(28, rS, rA, UIMM) |
#define | MI_illegal M_OP3( 0, 0, 0, 0, 0, 0, 0) |
#define | MI_lwarx(rD, rA, rB) M_OP3(31, 20, 0, 0, rD, rA, rB) |
#define | MI_or(rA, rS, rB) M_OP3(31, 444, 0, 0, rS, rA, rB) |
#define | MI_ordot(rA, rS, rB) M_OP3(31, 444, 0, 1, rS, rA, rB) |
#define | MI_ori(rA, rS, UIMM) M_OP2_IMM(24, rS, rA, UIMM) |
#define | MI_stwcxdot(rS, rA, rB) M_OP3(31, 150, 0, 1, rS, rA, rB) |
#define | MI_subf(rD, rA, rB) M_OP3(31, 40, 0, 0, rD, rA, rB) |
#define | MI_subfdot(rD, rA, rB) M_OP3(31, 40, 0, 1, rD, rA, rB) |
#define | MI_sync M_OP3(31, 598, 0, 0, 0, 0, 0) |
#define | M_IAND(a, b, d) MI_and(d, a, b) |
#define | M_IAND_IMM(a, b, d) MI_andi(d, a, b) |
#define | M_ILLEGAL MI_illegal |
#define | M_IOR(a, b, d) MI_or(d, a, b) |
#define | M_IOR_IMM(a, b, d) MI_ori(d, a, b) |
#define | M_IOR_TST(a, b, d) MI_ordot(d, a, b) |
#define | M_ISUB(a, b, d) MI_subf(d, b, a) |
#define | M_ISUB_TST(a, b, d) MI_subfdot(d, b, a) |
#define | M_MOV(a, d) MI_or(d, a, a) |
#define | M_NOP MI_ori(0, 0, 0) |
#define | M_ADDC(a, b, c) M_OP3(31, 10, 0, 0, c, a, b) |
#define | M_ADDE(a, b, c) M_OP3(31, 138, 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_ADDIS(a, b, c) M_OP2_IMM(15, c, a, b) |
#define | M_ADDME(a, b) M_OP3(31, 234, 0, 0, b, a, 0) |
#define | M_ADDZE(a, b) M_OP3(31, 202, 0, 0, b, a, 0) |
#define | M_ADDZE(a, b) M_OP3(31, 202, 0, 0, b, a, 0) |
#define | M_ANDIS(a, b, c) M_OP2_IMM(29, a, c, b) |
#define | M_BEQ(a) M_BC(12, 2, a, 0, 0) |
#define | M_BGE(a) M_BC(4, 0, a, 0, 0) |
#define | M_BGT(a) M_BC(12, 1, a, 0, 0) |
#define | M_BL(a) M_B(a, 0, 1) |
#define | M_BLDU(a, b, c) M_OP2_IMM(34, a, b, c) |
#define | M_BLE(a) M_BC(4, 1, a, 0, 0) |
#define | M_BLT(a) M_BC(12, 0, a, 0, 0) |
#define | M_BNAN(a) M_BC(12, 3, a, 0, 0) |
#define | M_BNE(a) M_BC(4, 2, a, 0, 0) |
#define | M_BR(a) M_B(a, 0, 0) |
#define | M_BSEXT(a, b) M_OP3(31, 954, 0, 0, a, b, 0) |
#define | M_BST(a, b, c) M_OP2_IMM(38, a, b, c) |
#define | M_CMP(a, b) M_OP3(31, 0, 0, 0, 0, a, b) |
#define | M_CMPI(a, b) M_OP2_IMM(11, 0, a, b) |
#define | M_CMPU(a, b) M_OP3(31, 32, 0, 0, 0, a, b) |
#define | M_CMPUI(a, b) M_OP2_IMM(10, 0, a, b) |
#define | M_CNTLZ(a, b) M_OP3(31, 26, 0, 0, a, b, 0) |
#define | M_CZEXT(a, b) M_RLWINM(a,0,16,31,b) |
#define | M_IADD(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) |
#define | M_IDIV(a, b, c) M_OP3(31, 491, 0, 0, c, a, b) |
#define | M_IMUL(a, b, c) M_OP3(31, 235, 0, 0, c, a, b) |
#define | M_IMUL_IMM(a, b, c) M_OP2_IMM(7, c, a, b) |
#define | M_JSR M_OP3(19, 528, 0, 1, 20, 0, 0) |
#define | M_LBZX(a, b, c) M_OP3(31, 87, 0, 0, a, b, c) |
#define | M_LHAX(a, b, c) M_OP3(31, 343, 0, 0, a, b, c) |
#define | M_LHZX(a, b, c) M_OP3(31, 279, 0, 0, a, b, c) |
#define | M_LWZX(a, b, c) M_OP3(31, 23, 0, 0, a, b, c) |
#define | M_MFCTR(a) M_OP3(31, 339, 0, 0, a, 9, 0) |
#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_MTCTR(a) M_OP3(31, 467, 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_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_ORIS(a, b, c) M_OP2_IMM(25, a, c, b) |
#define | M_RET M_OP3(19, 16, 0, 0, 20, 0, 0) |
#define | M_RLWINM(a, b, c, d, e) M_OP4(21, d, 0, a, e, b, c) |
#define | M_RTS M_OP3(19, 528, 0, 0, 20, 0, 0) |
#define | M_SLDU(a, b, c) M_OP2_IMM(40, a, b, c) |
#define | M_SLL(a, b, c) M_OP3(31, 24, 0, 0, a, c, b) |
#define | M_SLL_IMM(a, b, c) M_RLWINM(a,b,0,31-(b),c) |
#define | M_SRA(a, b, c) M_OP3(31, 792, 0, 0, a, c, b) |
#define | M_SRA_IMM(a, b, c) M_OP3(31, 824, 0, 0, a, c, b) |
#define | M_SRL(a, b, c) M_OP3(31, 536, 0, 0, a, c, b) |
#define | M_SRL_IMM(a, b, c) M_RLWINM(a,32-(b),b,31,c) |
#define | M_SSEXT(a, b) M_OP3(31, 922, 0, 0, a, b, 0) |
#define | M_SST(a, b, c) M_OP2_IMM(44, a, b, c) |
#define | M_STBX(a, b, c) M_OP3(31, 215, 0, 0, a, b, c) |
#define | M_STHX(a, b, c) M_OP3(31, 407, 0, 0, a, b, c) |
#define | M_STWUX(a, b, c) M_OP3(31,183,0,0,a,b,c) |
#define | M_STWX(a, b, c) M_OP3(31, 151, 0, 0, a, b, c) |
#define | M_SUBC(a, b, c) M_OP3(31, 8, 0, 0, c, b, a) |
#define | M_SUBE(a, b, c) M_OP3(31, 136, 0, 0, c, 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_SUBIC(a, b, c) M_OP2_IMM(8, c, b, a) |
#define | M_SUBME(a, b) M_OP3(31, 232, 0, 0, b, a, 0) |
#define | M_SUBZE(a, b) M_OP3(31, 200, 0, 0, b, a, 0) |
#define | M_TRAP M_OP3(31, 4, 0, 0, 31, 0, 0) |
#define | M_TRAPGEU(a, b) M_OP3(31, 4, 0, 0, 5, a, b) |
#define | M_TST(a) M_OP3(31, 444, 0, 1, a, a, a) |
#define | M_XOR(a, b, c) M_OP3(31, 316, 0, 0, a, c, b) |
#define | M_XORIS(a, b, c) M_OP2_IMM(27, a, c, b) |
#define | M_XOR_IMM(a, b, c) M_OP2_IMM(26, a, c, b) |
#define | M_LDAH(a, b, c) M_ADDIS(b, c, a) |
#define | M_LDATST(a, b, c) M_ADDICTST(b, c, a) |
#define | M_CLR(a) M_IADD_IMM(0, 0, a) |
#define | M_ILD_INTERN(a, b, disp) M_OP2_IMM(32,a,b,disp) |
#define | M_ILD(a, b, disp) |
#define | M_LLD_INTERN(a, b, disp) |
#define | M_LLD(a, b, disp) |
#define | M_IST_INTERN(a, b, disp) M_OP2_IMM(36,a,b,disp) |
#define | M_IST(a, b, disp) |
#define | M_LST_INTERN(a, b, disp) |
#define | M_LST(a, b, disp) |
#define | M_STWU_INTERN(a, b, disp) M_OP2_IMM(37,a,b,disp) |
#define | M_STWU(a, b, disp) |
#define | M_LDA_INTERN(a, b, c) M_IADD_IMM(b, c, a) |
#define | M_LDA(a, b, disp) |
#define | M_AADD(a, b, d) M_IADD(a, b, d) |
#define | M_AADD_IMM(a, b, d) M_IADD_IMM(a, b, d) |
#define | M_ALD_INTERN(a, b, disp) M_ILD_INTERN(a,b,disp) |
#define | M_ALD(a, b, disp) M_ILD(a,b,disp) |
#define | M_AST_INTERN(a, b, disp) M_IST_INTERN(a,b,disp) |
#define | M_AST(a, b, disp) M_IST(a,b,disp) |
#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 | M_ALD_DSEG(a, disp) M_ALD(a,REG_PV,disp); |
#define | M_CVTDF(a, b) M_OP3(63, 12, 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_DADD(a, b, c) M_OP3(63, 21, 0, 0, c, a, b) |
#define | M_DDIV(a, b, c) M_OP3(63, 18, 0, 0, c, a, b) |
#define | M_DMUL(a, b, c) M_OP4(63, 25, 0, c, a, 0, b) |
#define | M_DSQRT(a, b) M_OP3(63, 22, 0, 0, b, 0, a) |
#define | M_DSUB(a, b, c) M_OP3(63, 20, 0, 0, c, a, b) |
#define | M_FABS(a, b) M_OP3(63, 264, 0, 0, b, 0, a) |
#define | M_FADD(a, b, c) M_OP3(59, 21, 0, 0, c, a, b) |
#define | M_FCMPO(a, b) M_OP3(63, 32, 0, 0, 0, a, b) |
#define | M_FCMPU(a, b) M_OP3(63, 0, 0, 0, 0, a, b) |
#define | M_FDIV(a, b, c) M_OP3(59, 18, 0, 0, c, a, b) |
#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_FMUL(a, b, c) M_OP4(59, 25, 0, c, a, 0, b) |
#define | M_FSQRT(a, b) M_OP3(59, 22, 0, 0, b, 0, a) |
#define | M_FSUB(a, b, c) M_OP3(59, 20, 0, 0, c, a, b) |
#define | M_LFDX(a, b, c) M_OP3(31, 599, 0, 0, a, b, c) |
#define | M_LFSX(a, b, c) M_OP3(31, 535, 0, 0, a, b, c) |
#define | M_STFDX(a, b, c) M_OP3(31, 727, 0, 0, a, b, c) |
#define | M_STFIWX(a, b, c) M_OP3(31, 983, 0, 0, a, b, c) |
#define | M_STFSX(a, b, c) M_OP3(31, 663, 0, 0, a, b, c) |
#define | M_FLD_INTERN(a, b, disp) M_OP2_IMM(48,a,b,disp) |
#define | M_FLD(a, b, disp) |
#define | M_DLD_INTERN(a, b, disp) M_OP2_IMM(50,a,b,disp) |
#define | M_DLD(a, b, disp) |
#define | M_FST_INTERN(a, b, disp) M_OP2_IMM(52,a,b,disp) |
#define | M_FST(a, b, disp) |
#define | M_DST_INTERN(a, b, disp) M_OP2_IMM(54,a,b,disp) |
#define | M_DST(a, b, disp) |
#define ALIGNCODENOP |
Definition at line 58 of file codegen.hpp.
#define BRANCH_NOPS |
Definition at line 66 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 | |||
) |
Definition at line 52 of file codegen.hpp.
#define M_AADD | ( | a, | |
b, | |||
d | |||
) | M_IADD(a, b, d) |
Definition at line 366 of file codegen.hpp.
#define M_AADD_IMM | ( | a, | |
b, | |||
d | |||
) | M_IADD_IMM(a, b, d) |
Definition at line 367 of file codegen.hpp.
#define M_ACMP | ( | a, | |
b | |||
) | M_CMP(a,b) |
Definition at line 373 of file codegen.hpp.
#define M_ADDC | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 10, 0, 0, c, a, b) |
Definition at line 186 of file codegen.hpp.
#define M_ADDE | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 138, 0, 0, c, a, b) |
Definition at line 187 of file codegen.hpp.
#define M_ADDIC | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(12, c, a, b) |
Definition at line 188 of file codegen.hpp.
#define M_ADDICTST | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(13, c, a, b) |
Definition at line 189 of file codegen.hpp.
#define M_ADDIS | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(15, c, a, b) |
Definition at line 190 of file codegen.hpp.
#define M_ADDME | ( | a, | |
b | |||
) | M_OP3(31, 234, 0, 0, b, a, 0) |
Definition at line 191 of file codegen.hpp.
#define M_ADDZE | ( | a, | |
b | |||
) | M_OP3(31, 202, 0, 0, b, a, 0) |
Definition at line 193 of file codegen.hpp.
#define M_ADDZE | ( | a, | |
b | |||
) | M_OP3(31, 202, 0, 0, b, a, 0) |
Definition at line 193 of file codegen.hpp.
#define M_ALD | ( | a, | |
b, | |||
disp | |||
) | M_ILD(a,b,disp) |
Definition at line 369 of file codegen.hpp.
Definition at line 377 of file codegen.hpp.
#define M_ALD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_ILD_INTERN(a,b,disp) |
Definition at line 368 of file codegen.hpp.
#define M_ANDIS | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(29, a, c, b) |
Definition at line 194 of file codegen.hpp.
#define M_AST | ( | a, | |
b, | |||
disp | |||
) | M_IST(a,b,disp) |
Definition at line 371 of file codegen.hpp.
#define M_AST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_IST_INTERN(a,b,disp) |
Definition at line 370 of file codegen.hpp.
#define M_B | ( | LI, | |
AA, | |||
LK | |||
) |
Definition at line 121 of file codegen.hpp.
#define M_BC | ( | BO, | |
BI, | |||
BD, | |||
AA, | |||
LK | |||
) |
Definition at line 127 of file codegen.hpp.
#define M_BCMASK 0x0000fffc /* (((1 << 16) - 1) & ~3) */ |
Definition at line 119 of file codegen.hpp.
#define M_BEQ | ( | a | ) | M_BC(12, 2, a, 0, 0) |
Definition at line 195 of file codegen.hpp.
#define M_BGE | ( | a | ) | M_BC(4, 0, a, 0, 0) |
Definition at line 196 of file codegen.hpp.
#define M_BGT | ( | a | ) | M_BC(12, 1, a, 0, 0) |
Definition at line 197 of file codegen.hpp.
#define M_BL | ( | a | ) | M_B(a, 0, 1) |
Definition at line 198 of file codegen.hpp.
#define M_BLDU | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(34, a, b, c) |
Definition at line 199 of file codegen.hpp.
#define M_BLE | ( | a | ) | M_BC(4, 1, a, 0, 0) |
Definition at line 200 of file codegen.hpp.
#define M_BLT | ( | a | ) | M_BC(12, 0, a, 0, 0) |
Definition at line 201 of file codegen.hpp.
#define M_BMASK 0x03fffffc /* (((1 << 26) - 1) & ~3) */ |
Definition at line 118 of file codegen.hpp.
#define M_BNAN | ( | a | ) | M_BC(12, 3, a, 0, 0) |
Definition at line 202 of file codegen.hpp.
#define M_BNE | ( | a | ) | M_BC(4, 2, a, 0, 0) |
Definition at line 203 of file codegen.hpp.
#define M_BR | ( | a | ) | M_B(a, 0, 0) |
Definition at line 204 of file codegen.hpp.
#define M_BSEXT | ( | a, | |
b | |||
) | M_OP3(31, 954, 0, 0, a, b, 0) |
Definition at line 205 of file codegen.hpp.
#define M_BST | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(38, a, b, c) |
Definition at line 206 of file codegen.hpp.
#define M_CLR | ( | a | ) | M_IADD_IMM(0, 0, a) |
Definition at line 265 of file codegen.hpp.
#define M_CMP | ( | a, | |
b | |||
) | M_OP3(31, 0, 0, 0, 0, a, b) |
Definition at line 207 of file codegen.hpp.
#define M_CMPI | ( | a, | |
b | |||
) | M_OP2_IMM(11, 0, a, b) |
Definition at line 208 of file codegen.hpp.
#define M_CMPU | ( | a, | |
b | |||
) | M_OP3(31, 32, 0, 0, 0, a, b) |
Definition at line 209 of file codegen.hpp.
#define M_CMPUI | ( | a, | |
b | |||
) | M_OP2_IMM(10, 0, a, b) |
Definition at line 210 of file codegen.hpp.
#define M_CNTLZ | ( | a, | |
b | |||
) | M_OP3(31, 26, 0, 0, a, b, 0) |
Definition at line 211 of file codegen.hpp.
#define M_CVTDF | ( | a, | |
b | |||
) | M_OP3(63, 12, 0, 0, b, 0, a) |
Definition at line 382 of file codegen.hpp.
#define M_CVTDL | ( | a, | |
b | |||
) | M_OP3(63, 14, 0, 0, b, 0, a) |
Definition at line 383 of file codegen.hpp.
#define M_CVTDL_C | ( | a, | |
b | |||
) | M_OP3(63, 15, 0, 0, b, 0, a) |
Definition at line 384 of file codegen.hpp.
#define M_CZEXT | ( | a, | |
b | |||
) | M_RLWINM(a,0,16,31,b) |
Definition at line 212 of file codegen.hpp.
#define M_DADD | ( | a, | |
b, | |||
c | |||
) | M_OP3(63, 21, 0, 0, c, a, b) |
Definition at line 385 of file codegen.hpp.
#define M_DDIV | ( | a, | |
b, | |||
c | |||
) | M_OP3(63, 18, 0, 0, c, a, b) |
Definition at line 386 of file codegen.hpp.
#define M_DLD | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 423 of file codegen.hpp.
#define M_DLD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(50,a,b,disp) |
Definition at line 421 of file codegen.hpp.
#define M_DMOV | ( | a, | |
b | |||
) | M_FMOV(a,b) |
Definition at line 56 of file codegen.hpp.
#define M_DMUL | ( | a, | |
b, | |||
c | |||
) | M_OP4(63, 25, 0, c, a, 0, b) |
Definition at line 387 of file codegen.hpp.
#define M_DSQRT | ( | a, | |
b | |||
) | M_OP3(63, 22, 0, 0, b, 0, a) |
Definition at line 388 of file codegen.hpp.
#define M_DST | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 451 of file codegen.hpp.
#define M_DST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(54,a,b,disp) |
Definition at line 449 of file codegen.hpp.
#define M_DSUB | ( | a, | |
b, | |||
c | |||
) | M_OP3(63, 20, 0, 0, c, a, b) |
Definition at line 389 of file codegen.hpp.
#define M_FABS | ( | a, | |
b | |||
) | M_OP3(63, 264, 0, 0, b, 0, a) |
Definition at line 390 of file codegen.hpp.
#define M_FADD | ( | a, | |
b, | |||
c | |||
) | M_OP3(59, 21, 0, 0, c, a, b) |
Definition at line 391 of file codegen.hpp.
#define M_FCMPO | ( | a, | |
b | |||
) | M_OP3(63, 32, 0, 0, 0, a, b) |
Definition at line 392 of file codegen.hpp.
#define M_FCMPU | ( | a, | |
b | |||
) | M_OP3(63, 0, 0, 0, 0, a, b) |
Definition at line 393 of file codegen.hpp.
#define M_FDIV | ( | a, | |
b, | |||
c | |||
) | M_OP3(59, 18, 0, 0, c, a, b) |
Definition at line 394 of file codegen.hpp.
#define M_FLD | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 409 of file codegen.hpp.
#define M_FLD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(48,a,b,disp) |
Definition at line 407 of file codegen.hpp.
#define M_FMOV | ( | a, | |
b | |||
) | M_OP3(63, 72, 0, 0, b, 0, a) |
Definition at line 395 of file codegen.hpp.
#define M_FMOVN | ( | a, | |
b | |||
) | M_OP3(63, 40, 0, 0, b, 0, a) |
Definition at line 396 of file codegen.hpp.
#define M_FMUL | ( | a, | |
b, | |||
c | |||
) | M_OP4(59, 25, 0, c, a, 0, b) |
Definition at line 397 of file codegen.hpp.
#define M_FSQRT | ( | a, | |
b | |||
) | M_OP3(59, 22, 0, 0, b, 0, a) |
Definition at line 398 of file codegen.hpp.
#define M_FST | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 437 of file codegen.hpp.
#define M_FST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(52,a,b,disp) |
Definition at line 435 of file codegen.hpp.
#define M_FSUB | ( | a, | |
b, | |||
c | |||
) | M_OP3(59, 20, 0, 0, c, a, b) |
Definition at line 399 of file codegen.hpp.
#define M_IADD | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 266, 0, 0, c, a, b) |
Definition at line 213 of file codegen.hpp.
#define M_IADD_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(14, c, a, b) |
Definition at line 214 of file codegen.hpp.
#define M_IAND | ( | a, | |
b, | |||
d | |||
) | MI_and(d, a, b) |
Definition at line 174 of file codegen.hpp.
#define M_IAND_IMM | ( | a, | |
b, | |||
d | |||
) | MI_andi(d, a, b) |
Definition at line 175 of file codegen.hpp.
#define M_ICMP | ( | a, | |
b | |||
) | M_CMP(a,b) |
Definition at line 374 of file codegen.hpp.
#define M_IDIV | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 491, 0, 0, c, a, b) |
Definition at line 215 of file codegen.hpp.
#define M_ILD | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 270 of file codegen.hpp.
#define M_ILD_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(32,a,b,disp) |
Definition at line 268 of file codegen.hpp.
#define M_ILLEGAL MI_illegal |
Definition at line 176 of file codegen.hpp.
#define M_IMUL | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 235, 0, 0, c, a, b) |
Definition at line 216 of file codegen.hpp.
#define M_IMUL_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(7, c, a, b) |
Definition at line 217 of file codegen.hpp.
#define M_INSTR_OP2_IMM_A | ( | x | ) | (((x) >> 16) & 0x1f ) |
Definition at line 114 of file codegen.hpp.
#define M_INSTR_OP2_IMM_D | ( | x | ) | (((x) >> 21) & 0x1f ) |
Definition at line 113 of file codegen.hpp.
#define M_INSTR_OP2_IMM_I | ( | x | ) | ( (x) & 0xffff) |
Definition at line 115 of file codegen.hpp.
#define M_IOR | ( | a, | |
b, | |||
d | |||
) | MI_or(d, a, b) |
Definition at line 177 of file codegen.hpp.
#define M_IOR_IMM | ( | a, | |
b, | |||
d | |||
) | MI_ori(d, a, b) |
Definition at line 178 of file codegen.hpp.
#define M_IOR_TST | ( | a, | |
b, | |||
d | |||
) | MI_ordot(d, a, b) |
Definition at line 179 of file codegen.hpp.
#define M_IST | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 306 of file codegen.hpp.
#define M_IST_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(36,a,b,disp) |
Definition at line 300 of file codegen.hpp.
#define M_ISUB | ( | a, | |
b, | |||
d | |||
) | MI_subf(d, b, a) |
Definition at line 180 of file codegen.hpp.
#define M_ISUB_TST | ( | a, | |
b, | |||
d | |||
) | MI_subfdot(d, b, a) |
Definition at line 181 of file codegen.hpp.
#define M_JSR M_OP3(19, 528, 0, 1, 20, 0, 0) |
Definition at line 218 of file codegen.hpp.
#define M_LBZX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 87, 0, 0, a, b, c) |
Definition at line 219 of file codegen.hpp.
#define M_LDA | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 353 of file codegen.hpp.
#define M_LDA_INTERN | ( | a, | |
b, | |||
c | |||
) | M_IADD_IMM(b, c, a) |
Definition at line 351 of file codegen.hpp.
#define M_LDAH | ( | a, | |
b, | |||
c | |||
) | M_ADDIS(b, c, a) |
Definition at line 263 of file codegen.hpp.
#define M_LDATST | ( | a, | |
b, | |||
c | |||
) | M_ADDICTST(b, c, a) |
Definition at line 264 of file codegen.hpp.
#define M_LFDX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 599, 0, 0, a, b, c) |
Definition at line 400 of file codegen.hpp.
#define M_LFSX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 535, 0, 0, a, b, c) |
Definition at line 401 of file codegen.hpp.
#define M_LHAX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 343, 0, 0, a, b, c) |
Definition at line 220 of file codegen.hpp.
#define M_LHZX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 279, 0, 0, a, b, c) |
Definition at line 221 of file codegen.hpp.
#define M_LLD | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 288 of file codegen.hpp.
#define M_LLD_INTERN | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 282 of file codegen.hpp.
#define M_LST | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 324 of file codegen.hpp.
#define M_LST_INTERN | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 318 of file codegen.hpp.
#define M_LWZX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 23, 0, 0, a, b, c) |
Definition at line 222 of file codegen.hpp.
#define M_MFCTR | ( | a | ) | M_OP3(31, 339, 0, 0, a, 9, 0) |
Definition at line 223 of file codegen.hpp.
#define M_MFLR | ( | a | ) | M_OP3(31, 339, 0, 0, a, 8, 0) |
Definition at line 224 of file codegen.hpp.
#define M_MFXER | ( | a | ) | M_OP3(31, 339, 0, 0, a, 1, 0) |
Definition at line 225 of file codegen.hpp.
#define M_MOV | ( | a, | |
d | |||
) | MI_or(d, a, a) |
Definition at line 182 of file codegen.hpp.
#define M_MTCTR | ( | a | ) | M_OP3(31, 467, 0, 0, a, 9, 0) |
Definition at line 226 of file codegen.hpp.
#define M_MTLR | ( | a | ) | M_OP3(31, 467, 0, 0, a, 8, 0) |
Definition at line 227 of file codegen.hpp.
#define M_MTXER | ( | a | ) | M_OP3(31, 467, 0, 0, a, 1, 0) |
Definition at line 228 of file codegen.hpp.
#define M_NEG | ( | a, | |
b | |||
) | M_OP3(31, 104, 0, 0, b, a, 0) |
Definition at line 229 of file codegen.hpp.
#define M_NOP MI_ori(0, 0, 0) |
Definition at line 183 of file codegen.hpp.
#define M_NOT | ( | a, | |
b | |||
) | M_OP3(31, 124, 0, 0, a, b, a) |
Definition at line 230 of file codegen.hpp.
#define M_OP2_IMM | ( | x, | |
d, | |||
a, | |||
i | |||
) |
Definition at line 107 of file codegen.hpp.
#define M_OP3 | ( | opcode, | |
y, | |||
oe, | |||
rc, | |||
d, | |||
a, | |||
b | |||
) |
Definition at line 90 of file codegen.hpp.
#define M_OP3_GET_A | ( | x | ) | (((x) >> 16) & 0x1f ) |
Definition at line 96 of file codegen.hpp.
#define M_OP3_GET_B | ( | x | ) | (((x) >> 11) & 0x1f ) |
Definition at line 97 of file codegen.hpp.
#define M_OP4 | ( | x, | |
y, | |||
rc, | |||
d, | |||
a, | |||
b, | |||
c | |||
) |
Definition at line 100 of file codegen.hpp.
#define M_ORIS | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(25, a, c, b) |
Definition at line 231 of file codegen.hpp.
#define M_RET M_OP3(19, 16, 0, 0, 20, 0, 0) |
Definition at line 232 of file codegen.hpp.
Definition at line 233 of file codegen.hpp.
#define M_RTS M_OP3(19, 528, 0, 0, 20, 0, 0) |
Definition at line 234 of file codegen.hpp.
#define M_SLDU | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(40, a, b, c) |
Definition at line 235 of file codegen.hpp.
#define M_SLL | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 24, 0, 0, a, c, b) |
Definition at line 236 of file codegen.hpp.
#define M_SLL_IMM | ( | a, | |
b, | |||
c | |||
) | M_RLWINM(a,b,0,31-(b),c) |
Definition at line 237 of file codegen.hpp.
#define M_SRA | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 792, 0, 0, a, c, b) |
Definition at line 238 of file codegen.hpp.
#define M_SRA_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 824, 0, 0, a, c, b) |
Definition at line 239 of file codegen.hpp.
#define M_SRL | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 536, 0, 0, a, c, b) |
Definition at line 240 of file codegen.hpp.
#define M_SRL_IMM | ( | a, | |
b, | |||
c | |||
) | M_RLWINM(a,32-(b),b,31,c) |
Definition at line 241 of file codegen.hpp.
#define M_SSEXT | ( | a, | |
b | |||
) | M_OP3(31, 922, 0, 0, a, b, 0) |
Definition at line 242 of file codegen.hpp.
#define M_SST | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(44, a, b, c) |
Definition at line 243 of file codegen.hpp.
#define M_STBX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 215, 0, 0, a, b, c) |
Definition at line 244 of file codegen.hpp.
#define M_STFDX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 727, 0, 0, a, b, c) |
Definition at line 402 of file codegen.hpp.
#define M_STFIWX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 983, 0, 0, a, b, c) |
Definition at line 403 of file codegen.hpp.
#define M_STFSX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 663, 0, 0, a, b, c) |
Definition at line 404 of file codegen.hpp.
#define M_STHX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 407, 0, 0, a, b, c) |
Definition at line 245 of file codegen.hpp.
#define M_STWU | ( | a, | |
b, | |||
disp | |||
) |
Definition at line 338 of file codegen.hpp.
#define M_STWU_INTERN | ( | a, | |
b, | |||
disp | |||
) | M_OP2_IMM(37,a,b,disp) |
Definition at line 336 of file codegen.hpp.
#define M_STWUX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31,183,0,0,a,b,c) |
Definition at line 246 of file codegen.hpp.
#define M_STWX | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 151, 0, 0, a, b, c) |
Definition at line 247 of file codegen.hpp.
#define M_SUBC | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 8, 0, 0, c, b, a) |
Definition at line 248 of file codegen.hpp.
#define M_SUBE | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 136, 0, 0, c, b, a) |
Definition at line 249 of file codegen.hpp.
#define M_SUBFIC | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(8, c, a, b) |
Definition at line 250 of file codegen.hpp.
#define M_SUBFZE | ( | a, | |
b | |||
) | M_OP3(31, 200, 0, 0, b, a, 0) |
Definition at line 251 of file codegen.hpp.
#define M_SUBIC | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(8, c, b, a) |
Definition at line 252 of file codegen.hpp.
#define M_SUBME | ( | a, | |
b | |||
) | M_OP3(31, 232, 0, 0, b, a, 0) |
Definition at line 253 of file codegen.hpp.
#define M_SUBZE | ( | a, | |
b | |||
) | M_OP3(31, 200, 0, 0, b, a, 0) |
Definition at line 254 of file codegen.hpp.
#define M_TEST | ( | a | ) | M_TST(a) |
Definition at line 376 of file codegen.hpp.
#define M_TRAP M_OP3(31, 4, 0, 0, 31, 0, 0) |
Definition at line 255 of file codegen.hpp.
#define M_TRAPGEU | ( | a, | |
b | |||
) | M_OP3(31, 4, 0, 0, 5, a, b) |
Definition at line 256 of file codegen.hpp.
#define M_TST | ( | a | ) | M_OP3(31, 444, 0, 1, a, a, a) |
Definition at line 257 of file codegen.hpp.
#define M_XOR | ( | a, | |
b, | |||
c | |||
) | M_OP3(31, 316, 0, 0, a, c, b) |
Definition at line 258 of file codegen.hpp.
#define M_XOR_IMM | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(26, a, c, b) |
Definition at line 260 of file codegen.hpp.
#define M_XORIS | ( | a, | |
b, | |||
c | |||
) | M_OP2_IMM(27, a, c, b) |
Definition at line 259 of file codegen.hpp.
#define MCODECHECK | ( | icnt | ) |
Definition at line 43 of file codegen.hpp.
#define MI_and | ( | rA, | |
rS, | |||
rB | |||
) | M_OP3(31, 28, 0, 0, rS, rA, rB) |
Definition at line 146 of file codegen.hpp.
#define MI_anddot | ( | rA, | |
rS, | |||
rB | |||
) | M_OP3(31, 28, 0, 1, rS, rA, rB) |
Definition at line 147 of file codegen.hpp.
#define MI_andi | ( | rA, | |
rS, | |||
UIMM | |||
) | M_OP2_IMM(28, rS, rA, UIMM) |
Definition at line 148 of file codegen.hpp.
#define MI_illegal M_OP3( 0, 0, 0, 0, 0, 0, 0) |
Definition at line 149 of file codegen.hpp.
#define MI_lwarx | ( | rD, | |
rA, | |||
rB | |||
) | M_OP3(31, 20, 0, 0, rD, rA, rB) |
Definition at line 150 of file codegen.hpp.
#define MI_or | ( | rA, | |
rS, | |||
rB | |||
) | M_OP3(31, 444, 0, 0, rS, rA, rB) |
Definition at line 151 of file codegen.hpp.
#define MI_ordot | ( | rA, | |
rS, | |||
rB | |||
) | M_OP3(31, 444, 0, 1, rS, rA, rB) |
Definition at line 152 of file codegen.hpp.
#define MI_ori | ( | rA, | |
rS, | |||
UIMM | |||
) | M_OP2_IMM(24, rS, rA, UIMM) |
Definition at line 153 of file codegen.hpp.
#define MI_stwcxdot | ( | rS, | |
rA, | |||
rB | |||
) | M_OP3(31, 150, 0, 1, rS, rA, rB) |
Definition at line 154 of file codegen.hpp.
#define MI_subf | ( | rD, | |
rA, | |||
rB | |||
) | M_OP3(31, 40, 0, 0, rD, rA, rB) |
Definition at line 155 of file codegen.hpp.
#define MI_subfdot | ( | rD, | |
rA, | |||
rB | |||
) | M_OP3(31, 40, 0, 1, rD, rA, rB) |
Definition at line 156 of file codegen.hpp.
#define MI_sync M_OP3(31, 598, 0, 0, 0, 0, 0) |
Definition at line 157 of file codegen.hpp.
#define PATCHER_CALL_SIZE 1 * 4 /* an instruction is 4-bytes long */ |
Definition at line 80 of file codegen.hpp.
#define PATCHER_NOPS |
Definition at line 82 of file codegen.hpp.