mips: added emit for beq, or, ori
authorGuillaume Emont <guijemont@igalia.com>
Fri, 9 Nov 2012 17:32:15 +0000 (18:32 +0100)
committerGuillaume Emont <guijemont@igalia.com>
Fri, 28 Dec 2012 14:17:45 +0000 (15:17 +0100)
orc/orcmips.c
orc/orcmips.h

index 1eb9e3f58d60d3582a48596ee3610e35f1ffda8f..ba6de8ce597674fa5ebd784730bfb15c4b9cbf95 100644 (file)
@@ -319,6 +319,29 @@ orc_mips_emit_addu_ph (OrcCompiler *compiler,
   orc_mips_emit (compiler, MIPS_BINARY_INSTRUCTION(037, source1, source2, dest, 010, 020));
 }
 
+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)
index 9cff9d09b9f587923c59f9536c37465dade76413..bdaf70b4a48673e8de837896c999e5418f3f9d6b 100644 (file)
@@ -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);