nv50: address regs are 16 bit
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Thu, 9 Sep 2010 17:19:08 +0000 (19:19 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Thu, 9 Sep 2010 17:21:34 +0000 (19:21 +0200)
src/gallium/drivers/nv50/nv50_pc_print.c
src/gallium/drivers/nv50/nv50_tgsi_to_nc.c

index 74c3970f404e4bf9d21ade9daca136d53df0559f..a71401979c364e561b333648209b489b39e7c4f6 100644 (file)
@@ -171,12 +171,14 @@ nv_value_allocated(struct nv_value *value)
 static INLINE void
 nv_print_address(const char c, int buf, struct nv_value *a, int offset)
 {
+   const char ac =  (a && nv_value_allocated(a)) ? '$' : '%';
+
    if (buf >= 0)
       PRINT(" %s%c%i[", cyan, c, buf);
    else
       PRINT(" %s%c[", cyan, c);
    if (a)
-      PRINT("%s$a%i%s+", mgta, nv_value_id(a), cyan);
+      PRINT("%s%ca%i%s+", mgta, ac, nv_value_id(a), cyan);
    PRINT("%s0x%x%s]", orng, offset, cyan);
 }
 
index 4168bbbc9547bb8ad8a9d48353f6371ee2b19ceb..6fd749b35f8dd79513be4643579983bb537a610d 100644 (file)
@@ -674,6 +674,7 @@ bld_get_address(struct bld_context *bld, int id, struct nv_value *indirect)
 
    bld->saved_addr[i][0] = bld_load_imm_u32(bld, id);
    bld->saved_addr[i][0]->reg.file = NV_FILE_ADDR;
+   bld->saved_addr[i][0]->reg.type = NV_TYPE_U16;
    bld->saved_addr[i][1] = indirect;
    return bld->saved_addr[i][0];
 }
@@ -967,6 +968,7 @@ emit_store(struct bld_context *bld, const struct tgsi_full_instruction *inst,
    case TGSI_FILE_ADDRESS:
       assert(reg->Register.Index < BLD_MAX_ADDRS);
       value->reg.file = NV_FILE_ADDR;
+      value->reg.type = NV_TYPE_U16;
       STORE_ADDR(reg->Register.Index, chan, value);
       break;
    }