diff options
author | Guillaume Emont <guijemont@igalia.com> | 2012-11-09 18:32:15 +0100 |
---|---|---|
committer | Guillaume Emont <guijemont@igalia.com> | 2012-12-28 15:17:45 +0100 |
commit | 927bb0be0e38dff5e2f08dfeae4c8bbefe68e4e3 (patch) | |
tree | 697c08f74c34b65aa16ff0bfbbbacf84b2e45b61 | |
parent | 7001209e7644778b91798bc711de67dae2113692 (diff) |
mips: added emit for beq, or, ori
-rw-r--r-- | orc/orcmips.c | 23 | ||||
-rw-r--r-- | orc/orcmips.h | 4 |
2 files changed, 27 insertions, 0 deletions
diff --git a/orc/orcmips.c b/orc/orcmips.c index 1eb9e3f..ba6de8c 100644 --- a/orc/orcmips.c +++ b/orc/orcmips.c @@ -320,6 +320,29 @@ orc_mips_emit_addu_ph (OrcCompiler *compiler, } void +orc_mips_emit_ori (OrcCompiler *compiler, + OrcMipsRegister dest, OrcMipsRegister source, int value) +{ + ORC_ASM_CODE (compiler, " ori %s, %s, %d\n", + orc_mips_reg_name (dest), + orc_mips_reg_name (source), value); + orc_mips_emit (compiler, MIPS_IMMEDIATE_INSTRUCTION(015, source, dest, value)); +} + +void +orc_mips_emit_or (OrcCompiler *compiler, + OrcMipsRegister dest, + OrcMipsRegister source1, OrcMipsRegister source2) +{ + ORC_ASM_CODE (compiler, " or %s, %s, %s\n", + orc_mips_reg_name (dest), + orc_mips_reg_name (source1), + orc_mips_reg_name (source2)); + orc_mips_emit (compiler, MIPS_BINARY_INSTRUCTION(0, source1, source2, dest, 0, 045)); +} + + +void orc_mips_emit_move (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source) { diff --git a/orc/orcmips.h b/orc/orcmips.h index 9cff9d0..bdaf70b 100644 --- a/orc/orcmips.h +++ b/orc/orcmips.h @@ -86,6 +86,8 @@ enum { orc_mips_emit_conditional_branch(compiler, ORC_MIPS_BNE, reg, ORC_MIPS_ZERO, label) #define orc_mips_emit_blez(compiler, reg, label) \ orc_mips_emit_conditional_branch(compiler, ORC_MIPS_BLEZ, reg, ORC_MIPS_ZERO, label) +#define orc_mips_emit_beq(compiler, reg1, reg2, label) \ + orc_mips_emit_conditional_branch(compiler, ORC_MIPS_BEQ, reg1, reg2, label) void orc_mips_emit_addiu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); void orc_mips_emit_addi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); @@ -98,6 +100,8 @@ void orc_mips_emit_sub (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegi void orc_mips_emit_srl (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); void orc_mips_emit_sll (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); void orc_mips_emit_andi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +void orc_mips_emit_or (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +void orc_mips_emit_ori (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); void orc_mips_emit_append (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int shift_amount); |