From d0e74e94793744bbee2c23386fda8f7d06cb8cc0 Mon Sep 17 00:00:00 2001 From: Guillaume Emont Date: Wed, 17 Oct 2012 11:23:40 +0100 Subject: [PATCH] mips: added emit functions for beqz, addi, sub, srl, andi --- orc/orcmips.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ orc/orcmips.h | 5 +++++ 2 files changed, 53 insertions(+) diff --git a/orc/orcmips.c b/orc/orcmips.c index d455b22..ce24b7e 100644 --- a/orc/orcmips.c +++ b/orc/orcmips.c @@ -94,6 +94,14 @@ orc_mips_emit_bnez (OrcCompiler *compiler, } void +orc_mips_emit_beqz (OrcCompiler *compiler, + OrcMipsRegister reg, unsigned int label) +{ + ORC_ASM_CODE (compiler, " beqz %s, .L%d\n", + orc_mips_reg_name (reg), label); +} + +void orc_mips_emit_addiu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value) { @@ -101,6 +109,16 @@ orc_mips_emit_addiu (OrcCompiler *compiler, orc_mips_reg_name (dest), orc_mips_reg_name (source), value); } + +void +orc_mips_emit_addi (OrcCompiler *compiler, + OrcMipsRegister dest, OrcMipsRegister source, int value) +{ + ORC_ASM_CODE (compiler, " addi %s, %s, %d\n", + orc_mips_reg_name (dest), + orc_mips_reg_name (source), value); +} + void orc_mips_emit_add (OrcCompiler *compiler, OrcMipsRegister dest, @@ -120,3 +138,33 @@ orc_mips_emit_move (OrcCompiler *compiler, orc_mips_reg_name (dest), orc_mips_reg_name (source)); } + +void +orc_mips_emit_sub (OrcCompiler *compiler, + OrcMipsRegister dest, + OrcMipsRegister source1, OrcMipsRegister source2) +{ + ORC_ASM_CODE (compiler, " sub %s, %s, %s\n", + orc_mips_reg_name (dest), + orc_mips_reg_name (source1), + orc_mips_reg_name (source2)); +} + +void +orc_mips_emit_srl (OrcCompiler *compiler, + OrcMipsRegister dest, OrcMipsRegister source, int value) +{ + ORC_ASM_CODE (compiler, " srl %s, %s, %d\n", + orc_mips_reg_name (dest), + orc_mips_reg_name (source), value); +} + +void +orc_mips_emit_andi (OrcCompiler *compiler, + OrcMipsRegister dest, OrcMipsRegister source, int value) +{ + ORC_ASM_CODE (compiler, " andi %s, %s, %d\n", + orc_mips_reg_name (dest), + orc_mips_reg_name (source), value); +} + diff --git a/orc/orcmips.h b/orc/orcmips.h index 313b558..d7188c1 100644 --- a/orc/orcmips.h +++ b/orc/orcmips.h @@ -59,10 +59,15 @@ void orc_mips_emit_lb (OrcCompiler *compiler, OrcMipsRegister dest, void orc_mips_emit_jr (OrcCompiler *compiler, OrcMipsRegister address_reg); void orc_mips_emit_blez (OrcCompiler *compiler, OrcMipsRegister reg, unsigned int label); void orc_mips_emit_bnez (OrcCompiler *compiler, OrcMipsRegister reg, unsigned int label); +void orc_mips_emit_beqz (OrcCompiler *compiler, OrcMipsRegister reg, unsigned int 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); void orc_mips_emit_add (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); void orc_mips_emit_move (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); +void orc_mips_emit_sub (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +void orc_mips_emit_srl (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); +void orc_mips_emit_andi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); #endif /* ORC_ENABLE_UNSTABLE_API */ -- 2.7.4