From 136dac322a811ce85c13a305410355b74acfed4f Mon Sep 17 00:00:00 2001 From: Guillaume Emont Date: Tue, 9 Oct 2012 17:47:43 +0200 Subject: [PATCH] mips: added copyl --- orc/orcmips.c | 9 +++++++++ orc/orcmips.h | 1 + orc/orcrules-mips.c | 10 ++++++++++ 3 files changed, 20 insertions(+) diff --git a/orc/orcmips.c b/orc/orcmips.c index 488a7a8..bcffc90 100644 --- a/orc/orcmips.c +++ b/orc/orcmips.c @@ -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)); +} diff --git a/orc/orcmips.h b/orc/orcmips.h index c8e36e7..f1993a8 100644 --- a/orc/orcmips.h +++ b/orc/orcmips.h @@ -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 */ diff --git a/orc/orcrules-mips.c b/orc/orcrules-mips.c index 8bc47de..d930562 100644 --- a/orc/orcrules-mips.c +++ b/orc/orcrules-mips.c @@ -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); } -- 2.7.4