summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Emont <guijemont@igalia.com>2012-11-09 18:32:15 +0100
committerGuillaume Emont <guijemont@igalia.com>2012-12-28 15:17:45 +0100
commit927bb0be0e38dff5e2f08dfeae4c8bbefe68e4e3 (patch)
tree697c08f74c34b65aa16ff0bfbbbacf84b2e45b61
parent7001209e7644778b91798bc711de67dae2113692 (diff)
mips: added emit for beq, or, ori
-rw-r--r--orc/orcmips.c23
-rw-r--r--orc/orcmips.h4
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);