summaryrefslogtreecommitdiff
path: root/orc
diff options
context:
space:
mode:
authorGuillaume Emont <guijemont@igalia.com>2012-12-11 14:36:49 +0100
committerGuillaume Emont <guijemont@igalia.com>2012-12-28 15:23:38 +0100
commit5581d995ea3e572a9448518c3a42ed5acd55bc5b (patch)
treebb276bffbf402608af52f483a57a228c8c382394 /orc
parentb2829718abb762ea15485269059959d4143ea178 (diff)
mips: added emit functions for subu.ph and replv.ph
Diffstat (limited to 'orc')
-rw-r--r--orc/orcmips.c29
-rw-r--r--orc/orcmips.h2
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);