diff options
author | Guillaume Emont <guijemont@igalia.com> | 2012-12-11 14:36:49 +0100 |
---|---|---|
committer | Guillaume Emont <guijemont@igalia.com> | 2012-12-28 15:23:38 +0100 |
commit | 5581d995ea3e572a9448518c3a42ed5acd55bc5b (patch) | |
tree | bb276bffbf402608af52f483a57a228c8c382394 /orc | |
parent | b2829718abb762ea15485269059959d4143ea178 (diff) |
mips: added emit functions for subu.ph and replv.ph
Diffstat (limited to 'orc')
-rw-r--r-- | orc/orcmips.c | 29 | ||||
-rw-r--r-- | orc/orcmips.h | 2 |
2 files changed, 31 insertions, 0 deletions
diff --git a/orc/orcmips.c b/orc/orcmips.c index c6f36ed..545eba2 100644 --- a/orc/orcmips.c +++ b/orc/orcmips.c @@ -519,6 +519,19 @@ orc_mips_emit_subq_ph (OrcCompiler *compiler, } void +orc_mips_emit_subu_ph (OrcCompiler *compiler, + OrcMipsRegister dest, + OrcMipsRegister source1, + OrcMipsRegister source2) +{ + ORC_ASM_CODE (compiler, " subu.ph %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(037, source1, source2, dest, 011, 020)); +} + +void orc_mips_emit_srl (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value) { @@ -739,6 +752,22 @@ orc_mips_emit_replv_qb (OrcCompiler *compiler, } void +orc_mips_emit_replv_ph (OrcCompiler *compiler, + OrcMipsRegister dest, + OrcMipsRegister source) +{ + ORC_ASM_CODE (compiler, " replv.ph %s, %s\n", + orc_mips_reg_name (dest), + orc_mips_reg_name (source)); + orc_mips_emit (compiler, + MIPS_BINARY_INSTRUCTION(037, /* SPECIAL3 */ + ORC_MIPS_ZERO, /* actually no reg here */ + source, dest, + 013, /* REPLV.PH */ + 022 /* ABSQ_S.PH */)); +} + +void orc_mips_emit_preceu_ph_qbr (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source) diff --git a/orc/orcmips.h b/orc/orcmips.h index b0faa31..88c44da 100644 --- a/orc/orcmips.h +++ b/orc/orcmips.h @@ -117,6 +117,7 @@ void orc_mips_emit_sub (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegi void orc_mips_emit_subu_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); void orc_mips_emit_subq_s_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); void orc_mips_emit_subq_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); +void orc_mips_emit_subu_ph (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_sll (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); void orc_mips_emit_sra (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value); @@ -143,6 +144,7 @@ void orc_mips_emit_movn (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsReg void orc_mips_emit_repl_ph (OrcCompiler *compiler, OrcMipsRegister dest, int value); void orc_mips_emit_replv_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); +void orc_mips_emit_replv_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); void orc_mips_emit_preceu_ph_qbr (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); void orc_mips_emit_cmp_lt_ph (OrcCompiler *compiler, OrcMipsRegister source1, OrcMipsRegister source2); void orc_mips_emit_pick_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2); |