diff options
author | Christoph Bumiller <[email protected]> | 2010-07-27 17:56:13 +0200 |
---|---|---|
committer | Christoph Bumiller <[email protected]> | 2010-07-31 18:32:35 +0200 |
commit | 5de5e4fd5c7c6d55e9b3aadbaae0ca34e2662e2c (patch) | |
tree | 509b8b9d78783c3e41a14ef2a68ed88283f4c6ff /src/gallium/drivers/nv50/nv50_pc_print.c | |
parent | 582311ca979ac2316807cdffb15e7a25000693f4 (diff) |
nv50: insert MOVs also for PHI sources from dominating block
Otherwise we get live range conflicts for operands that are written
only in e.g. an ELSE block but not the IF block.
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_pc_print.c')
-rw-r--r-- | src/gallium/drivers/nv50/nv50_pc_print.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/gallium/drivers/nv50/nv50_pc_print.c b/src/gallium/drivers/nv50/nv50_pc_print.c index c2c3eb25bcb..c812dbd066b 100644 --- a/src/gallium/drivers/nv50/nv50_pc_print.c +++ b/src/gallium/drivers/nv50/nv50_pc_print.c @@ -181,9 +181,11 @@ nv_print_address(const char c, int buf, struct nv_value *a, int offset) static INLINE void nv_print_cond(struct nv_instruction *nvi) { - PRINT("%s%s %s$c%i ", + char pfx = nv_value_allocated(nvi->flags_src->value->join) ? '$' : '%'; + + PRINT("%s%s %s%cc%i ", gree, nv_cond_name(nvi->cc), - mgta, nv_value_id(nvi->flags_src->value)); + mgta, pfx, nv_value_id(nvi->flags_src->value)); } static INLINE void @@ -197,8 +199,8 @@ nv_print_value(struct nv_value *value, struct nv_value *ind, ubyte type) if (value->reg.file != NV_FILE_FLAGS) PRINT(" %s%s", gree, nv_type_name(type)); - if (!nv_value_allocated(value)) - reg_pfx = nv_value_allocated(value->join) ? '&' : '%'; + if (!nv_value_allocated(value->join)) + reg_pfx = '%'; switch (value->reg.file) { case NV_FILE_GPR: @@ -301,7 +303,7 @@ nv_print_instruction(struct nv_instruction *i) continue; if (i->src[j]->mod) - PRINT(" %s", nv_modifier_string(i->src[j]->mod)); + PRINT(" %s%s", gree, nv_modifier_string(i->src[j]->mod)); nv_print_ref(i->src[j], (j == nv50_indirect_opnd(i)) ? |