Implement mergelq for SSE
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 1 Oct 2010 06:46:11 +0000 (08:46 +0200)
committerDavid Schleef <ds@schleef.org>
Sun, 3 Oct 2010 22:29:37 +0000 (15:29 -0700)
orc/orcrules-sse.c

index 136bddb..07a56f9 100644 (file)
@@ -1726,6 +1726,15 @@ sse_rule_mergewl (OrcCompiler *p, void *user, OrcInstruction *insn)
 }
 
 static void
+sse_rule_mergelq (OrcCompiler *p, void *user, OrcInstruction *insn)
+{
+  int src = p->vars[insn->src_args[1]].alloc;
+  int dest = p->vars[insn->dest_args[0]].alloc;
+
+  orc_sse_emit_punpckldq (p, src, dest);
+}
+
+static void
 sse_rule_swapw (OrcCompiler *p, void *user, OrcInstruction *insn)
 {
   int src = p->vars[insn->src_args[0]].alloc;
@@ -2694,6 +2703,7 @@ orc_compiler_sse_register_rules (OrcTarget *target)
   REG(select1wb);
   REG(mergebw);
   REG(mergewl);
+  REG(mergelq);
 
   orc_rule_register (rule_set, "copyb", sse_rule_copyx, NULL);
   orc_rule_register (rule_set, "copyw", sse_rule_copyx, NULL);