diff options
-rw-r--r-- | src/gallium/drivers/r600/sb/sb_if_conversion.cpp | 2 | ||||
-rw-r--r-- | src/gallium/drivers/r600/sb/sb_ir.cpp | 2 | ||||
-rw-r--r-- | src/gallium/drivers/r600/sb/sb_ir.h | 3 |
3 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/sb/sb_if_conversion.cpp b/src/gallium/drivers/r600/sb/sb_if_conversion.cpp index 3f2b1b1b925..3f6431b80f5 100644 --- a/src/gallium/drivers/r600/sb/sb_if_conversion.cpp +++ b/src/gallium/drivers/r600/sb/sb_if_conversion.cpp @@ -136,7 +136,7 @@ bool if_conversion::check_and_convert(region_node *r) { ); if (s.region_count || s.fetch_count || s.alu_kill_count || - s.if_count != 1 || s.repeat_count) + s.if_count != 1 || s.repeat_count || s.uses_ar) return false; unsigned real_alu_count = s.alu_count - s.alu_copy_mov_count; diff --git a/src/gallium/drivers/r600/sb/sb_ir.cpp b/src/gallium/drivers/r600/sb/sb_ir.cpp index d989dce62c9..fe068ab99b7 100644 --- a/src/gallium/drivers/r600/sb/sb_ir.cpp +++ b/src/gallium/drivers/r600/sb/sb_ir.cpp @@ -461,6 +461,8 @@ void container_node::collect_stats(node_stats& s) { ++s.alu_kill_count; else if (a->is_copy_mov()) ++s.alu_copy_mov_count; + if (a->uses_ar()) + s.uses_ar = true; } else if (n->is_fetch_inst()) ++s.fetch_count; else if (n->is_cf_inst()) diff --git a/src/gallium/drivers/r600/sb/sb_ir.h b/src/gallium/drivers/r600/sb/sb_ir.h index ec973e7bfc2..67c7cd8aa48 100644 --- a/src/gallium/drivers/r600/sb/sb_ir.h +++ b/src/gallium/drivers/r600/sb/sb_ir.h @@ -726,11 +726,12 @@ struct node_stats { unsigned depart_count; unsigned repeat_count; unsigned if_count; + bool uses_ar; node_stats() : alu_count(), alu_kill_count(), alu_copy_mov_count(), cf_count(), fetch_count(), region_count(), loop_count(), phi_count(), loop_phi_count(), depart_count(), - repeat_count(), if_count() {} + repeat_count(), if_count(), uses_ar(false) {} void dump(); }; |