Fix API for 2-dest opcodes
authorDavid Schleef <ds@schleef.org>
Mon, 14 Jun 2010 22:57:57 +0000 (15:57 -0700)
committerDavid Schleef <ds@schleef.org>
Mon, 14 Jun 2010 22:57:57 +0000 (15:57 -0700)
Without this, splitwb and splitlw are effectively useless.

orc/orcprogram.c

index 5018101..2c8aab8 100644 (file)
@@ -539,8 +539,13 @@ orc_program_append_str (OrcProgram *program, const char *name,
     ORC_ERROR ("unknown opcode: %s", name);
   }
   insn->dest_args[0] = orc_program_find_var_by_name (program, arg1);
-  insn->src_args[0] = orc_program_find_var_by_name (program, arg2);
-  insn->src_args[1] = orc_program_find_var_by_name (program, arg3);
+  if (insn->opcode->dest_size[1] != 0) {
+    insn->dest_args[1] = orc_program_find_var_by_name (program, arg2);
+    insn->src_args[0] = orc_program_find_var_by_name (program, arg3);
+  } else {
+    insn->src_args[0] = orc_program_find_var_by_name (program, arg2);
+    insn->src_args[1] = orc_program_find_var_by_name (program, arg3);
+  }
   
   program->n_insns++;
 }