mips: added emit functions for shrl.ph and precrq.qb.ph
authorGuillaume Emont <guijemont@igalia.com>
Sat, 15 Dec 2012 18:14:56 +0000 (19:14 +0100)
committerGuillaume Emont <guijemont@igalia.com>
Fri, 28 Dec 2012 14:23:39 +0000 (15:23 +0100)
orc/orcmips.c
orc/orcmips.h

index 45abe70..e133a15 100644 (file)
@@ -615,6 +615,18 @@ orc_mips_emit_shra_ph (OrcCompiler *compiler,
 }
 
 void
+orc_mips_emit_shrl_ph (OrcCompiler *compiler,
+                       OrcMipsRegister dest,
+                       OrcMipsRegister source,
+                       int value)
+{
+  ORC_ASM_CODE (compiler, "  shrl.ph %s, %s, %d\n",
+                orc_mips_reg_name (dest),
+                orc_mips_reg_name (source), value);
+  orc_mips_emit (compiler, MIPS_SHLLQB_INSTRUCTION(031, source, dest, value));
+}
+
+void
 orc_mips_emit_andi (OrcCompiler *compiler,
                      OrcMipsRegister dest, OrcMipsRegister source, int value)
 {
@@ -828,6 +840,24 @@ orc_mips_emit_precr_qb_ph (OrcCompiler *compiler,
                                          015, /* PRECR.QB.PH */
                                          021 /* CMPU.EQ.QB */));
 }
+
+void
+orc_mips_emit_precrq_qb_ph (OrcCompiler *compiler,
+                           OrcMipsRegister dest,
+                           OrcMipsRegister source1,
+                           OrcMipsRegister source2)
+{
+  ORC_ASM_CODE (compiler, "  precrq.qb.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, /* SPECIAL3 */
+                                         source1, source2, dest,
+                                         014, /* PRECRS.QB.PH */
+                                         021 /* CMPU.EQ.QB */));
+}
+
 void
 orc_mips_emit_cmp_lt_ph (OrcCompiler *compiler,
                          OrcMipsRegister source1,
index 02387c0..1e42902 100644 (file)
@@ -152,6 +152,7 @@ void orc_mips_emit_sll (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegi
 void orc_mips_emit_sra (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
 void orc_mips_emit_shll_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
 void orc_mips_emit_shra_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+void orc_mips_emit_shrl_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
 void orc_mips_emit_andi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
 void orc_mips_emit_or (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
 void orc_mips_emit_and (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
@@ -176,6 +177,7 @@ void orc_mips_emit_replv_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMip
 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_precr_qb_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+void orc_mips_emit_precrq_qb_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
 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);