mips: added copyl
authorGuillaume Emont <guijemont@igalia.com>
Tue, 9 Oct 2012 15:47:43 +0000 (17:47 +0200)
committerGuillaume Emont <guijemont@igalia.com>
Fri, 28 Dec 2012 14:17:44 +0000 (15:17 +0100)
orc/orcmips.c
orc/orcmips.h
orc/orcrules-mips.c

index 488a7a8..bcffc90 100644 (file)
@@ -93,3 +93,12 @@ orc_mips_emit_add (OrcCompiler *compiler,
                 orc_mips_reg_name (source1),
                 orc_mips_reg_name (source2));
 }
+
+void
+orc_mips_emit_move (OrcCompiler *compiler,
+                    OrcMipsRegister dest, OrcMipsRegister source)
+{
+  ORC_ASM_CODE (compiler, "  move    %s, %s\n",
+                orc_mips_reg_name (dest),
+                orc_mips_reg_name (source));
+}
index c8e36e7..f1993a8 100644 (file)
@@ -59,6 +59,7 @@ void orc_mips_emit_bnez (OrcCompiler *compiler, OrcMipsRegister reg, unsigned in
 
 void orc_mips_emit_addiu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
 void orc_mips_emit_add (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+void orc_mips_emit_move (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
 
 
 #endif /* ORC_ENABLE_UNSTABLE_API */
index 8bc47de..d930562 100644 (file)
@@ -30,6 +30,15 @@ mips_rule_addl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
 }
 
 void
+mips_rule_copyl (OrcCompiler *compiler, void *user, OrcInstruction *insn)
+{
+  int src = ORC_SRC_ARG (compiler, insn, 0);
+  int dest = ORC_DEST_ARG (compiler, insn, 0);
+
+  orc_mips_emit_move (compiler, dest, src);
+}
+
+void
 orc_compiler_orc_mips_register_rules (OrcTarget *target)
 {
   OrcRuleSet *rule_set;
@@ -39,4 +48,5 @@ orc_compiler_orc_mips_register_rules (OrcTarget *target)
   orc_rule_register (rule_set, "loadl", mips_rule_loadl, NULL);
   orc_rule_register (rule_set, "storel", mips_rule_storel, NULL);
   orc_rule_register (rule_set, "addl", mips_rule_addl, NULL);
+  orc_rule_register (rule_set, "copyl", mips_rule_copyl, NULL);
 }