program-c: handle X2 and X4 with size < 2 variables
authorWim Taymans <wtaymans@redhat.com>
Thu, 18 Sep 2014 12:19:06 +0000 (14:19 +0200)
committerWim Taymans <wtaymans@redhat.com>
Thu, 18 Sep 2014 12:19:06 +0000 (14:19 +0200)
when the variable has a size < 2 it will have been declared as a simple
int8 or int16, when we use this in a X2 or X4 instruction, use the
variable directly instead of trying to use the x fields.

orc/orcprogram-c.c

index 02b5aa8..bff075a 100644 (file)
@@ -503,16 +503,16 @@ c_get_name_int (char *name, OrcCompiler *p, OrcInstruction *insn, int var)
       }
     }
   } else {
-    if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X2)) {
-      sprintf(name, "var%d.x2[%d]", var, p->unroll_index);
-    } else if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X4)) {
-      sprintf(name, "var%d.x4[%d]", var, p->unroll_index);
-    } else {
-      if (p->vars[var].size >= 2) {
-        sprintf(name, "var%d.i", var);
+    if (p->vars[var].size >= 2) {
+      if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X2)) {
+        sprintf(name, "var%d.x2[%d]", var, p->unroll_index);
+      } else if (insn && (insn->flags & ORC_INSTRUCTION_FLAG_X4)) {
+        sprintf(name, "var%d.x4[%d]", var, p->unroll_index);
       } else {
-        sprintf(name, "var%d", var);
+        sprintf(name, "var%d.i", var);
       }
+    } else {
+      sprintf(name, "var%d", var);
     }
   }
 }