i965/vec4: Add parameter to skip doing constant propagation.
After CSEing some MOV ..., VF instructions we have code like mov tmp, [1F, 2F, 3F, 4F]VF mov r10, tmp mov r11, tmp ... use r10 use r11 We want to copy propagate tmp into the uses of r10 and r11, but *not* constant propagate the VF immediate into the uses of tmp. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
bbdd3198a5
commit
c855f49c99
|
@ -369,7 +369,7 @@ public:
|
||||||
bool opt_reduce_swizzle();
|
bool opt_reduce_swizzle();
|
||||||
bool dead_code_eliminate();
|
bool dead_code_eliminate();
|
||||||
bool virtual_grf_interferes(int a, int b);
|
bool virtual_grf_interferes(int a, int b);
|
||||||
bool opt_copy_propagation();
|
bool opt_copy_propagation(bool do_constant_prop = true);
|
||||||
bool opt_cse_local(bblock_t *block);
|
bool opt_cse_local(bblock_t *block);
|
||||||
bool opt_cse();
|
bool opt_cse();
|
||||||
bool opt_algebraic();
|
bool opt_algebraic();
|
||||||
|
|
|
@ -330,7 +330,7 @@ try_copy_propagate(struct brw_context *brw, vec4_instruction *inst,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
vec4_visitor::opt_copy_propagation()
|
vec4_visitor::opt_copy_propagation(bool do_constant_prop)
|
||||||
{
|
{
|
||||||
bool progress = false;
|
bool progress = false;
|
||||||
struct copy_entry entries[virtual_grf_reg_count];
|
struct copy_entry entries[virtual_grf_reg_count];
|
||||||
|
@ -395,7 +395,7 @@ vec4_visitor::opt_copy_propagation()
|
||||||
if (c != 4)
|
if (c != 4)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (try_constant_propagate(brw, inst, i, &entry))
|
if (do_constant_prop && try_constant_propagate(brw, inst, i, &entry))
|
||||||
progress = true;
|
progress = true;
|
||||||
|
|
||||||
if (try_copy_propagate(brw, inst, i, &entry, reg))
|
if (try_copy_propagate(brw, inst, i, &entry, reg))
|
||||||
|
|
Loading…
Reference in New Issue