}
static void
-powerpc_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn)
+powerpc_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn)
{
int src1 = ORC_SRC_ARG (p, insn, 0);
int dest = ORC_DEST_ARG (p, insn, 0);
}
static void
-powerpc_rule_select1wb (OrcCompiler *p, void *user, OrcInstruction *insn)
+powerpc_rule_select0wb (OrcCompiler *p, void *user, OrcInstruction *insn)
{
int src1 = ORC_SRC_ARG (p, insn, 0);
int dest = ORC_DEST_ARG (p, insn, 0);
}
static void
-powerpc_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn)
+powerpc_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn)
{
int src1 = ORC_SRC_ARG (p, insn, 0);
int dest = ORC_DEST_ARG (p, insn, 0);
}
static void
-powerpc_rule_select1lw (OrcCompiler *p, void *user, OrcInstruction *insn)
+powerpc_rule_select0lw (OrcCompiler *p, void *user, OrcInstruction *insn)
{
int src1 = ORC_SRC_ARG (p, insn, 0);
int dest = ORC_DEST_ARG (p, insn, 0);
}
static void
+powerpc_rule_select1ql (OrcCompiler *p, void *user, OrcInstruction *insn)
+{
+ int src1 = ORC_SRC_ARG (p, insn, 0);
+ int dest = ORC_DEST_ARG (p, insn, 0);
+ int perm;
+
+ perm = powerpc_get_constant_full (p, 0x04050607, 0x0c0d0e0f,
+ 0x14151617, 0x1c1d1e1f);
+ powerpc_emit_vperm (p, dest, src1, src1, perm);
+}
+
+static void
+powerpc_rule_select0ql (OrcCompiler *p, void *user, OrcInstruction *insn)
+{
+ int src1 = ORC_SRC_ARG (p, insn, 0);
+ int dest = ORC_DEST_ARG (p, insn, 0);
+ int perm;
+
+ perm = powerpc_get_constant_full (p, 0x00010203, 0x08090a0b,
+ 0x10111213, 0x18191a1b);
+ powerpc_emit_vperm (p, dest, src1, src1, perm);
+}
+
+static void
powerpc_rule_mergebw (OrcCompiler *p, void *user, OrcInstruction *insn)
{
int src1 = ORC_SRC_ARG (p, insn, 0);
REG(select1wb);
REG(select0lw);
REG(select1lw);
+ REG(select0ql);
+ REG(select1ql);
REG(mergebw);
REG(mergewl);
REG(mergelq);