glsl: Remove extra checks for constant true assignment conditions.
These are already stripped by opt_constant_folding.cpp.
This commit is contained in:
@@ -400,11 +400,8 @@ ir_constant_propagation_visitor::add_constant(ir_assignment *ir)
|
|||||||
{
|
{
|
||||||
acp_entry *entry;
|
acp_entry *entry;
|
||||||
|
|
||||||
if (ir->condition) {
|
if (ir->condition)
|
||||||
ir_constant *condition = ir->condition->as_constant();
|
return;
|
||||||
if (!condition || !condition->value.b[0])
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ir->write_mask)
|
if (!ir->write_mask)
|
||||||
return;
|
return;
|
||||||
|
@@ -107,11 +107,8 @@ ir_constant_variable_visitor::visit_enter(ir_assignment *ir)
|
|||||||
/* OK, now find if we actually have all the right conditions for
|
/* OK, now find if we actually have all the right conditions for
|
||||||
* this to be a constant value assigned to the var.
|
* this to be a constant value assigned to the var.
|
||||||
*/
|
*/
|
||||||
if (ir->condition) {
|
if (ir->condition)
|
||||||
constval = ir->condition->constant_expression_value();
|
return visit_continue;
|
||||||
if (!constval || !constval->value.b[0])
|
|
||||||
return visit_continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ir_variable *var = ir->whole_variable_written();
|
ir_variable *var = ir->whole_variable_written();
|
||||||
if (!var)
|
if (!var)
|
||||||
|
@@ -309,11 +309,8 @@ ir_copy_propagation_visitor::add_copy(ir_assignment *ir)
|
|||||||
{
|
{
|
||||||
acp_entry *entry;
|
acp_entry *entry;
|
||||||
|
|
||||||
if (ir->condition) {
|
if (ir->condition)
|
||||||
ir_constant *condition = ir->condition->as_constant();
|
return;
|
||||||
if (!condition || !condition->value.b[0])
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ir_variable *lhs_var = ir->whole_variable_written();
|
ir_variable *lhs_var = ir->whole_variable_written();
|
||||||
ir_variable *rhs_var = ir->rhs->whole_variable_referenced();
|
ir_variable *rhs_var = ir->rhs->whole_variable_referenced();
|
||||||
|
@@ -409,11 +409,8 @@ ir_copy_propagation_elements_visitor::add_copy(ir_assignment *ir)
|
|||||||
int orig_swizzle[4] = {0, 1, 2, 3};
|
int orig_swizzle[4] = {0, 1, 2, 3};
|
||||||
int swizzle[4];
|
int swizzle[4];
|
||||||
|
|
||||||
if (ir->condition) {
|
if (ir->condition)
|
||||||
ir_constant *condition = ir->condition->as_constant();
|
return;
|
||||||
if (!condition || !condition->value.b[0])
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ir_dereference_variable *lhs = ir->lhs->as_dereference_variable();
|
ir_dereference_variable *lhs = ir->lhs->as_dereference_variable();
|
||||||
if (!lhs || !(lhs->type->is_scalar() || lhs->type->is_vector()))
|
if (!lhs || !(lhs->type->is_scalar() || lhs->type->is_vector()))
|
||||||
|
@@ -131,15 +131,8 @@ process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments)
|
|||||||
var = ir->lhs->variable_referenced();
|
var = ir->lhs->variable_referenced();
|
||||||
assert(var);
|
assert(var);
|
||||||
|
|
||||||
bool always_assign = true;
|
|
||||||
if (ir->condition) {
|
|
||||||
ir_constant *condition = ir->condition->as_constant();
|
|
||||||
if (!condition || !condition->value.b[0])
|
|
||||||
always_assign = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now, check if we did a whole-variable assignment. */
|
/* Now, check if we did a whole-variable assignment. */
|
||||||
if (always_assign && (ir->whole_variable_written() != NULL)) {
|
if (!ir->condition && (ir->whole_variable_written() != NULL)) {
|
||||||
/* We did a whole-variable assignment. So, any instruction in
|
/* We did a whole-variable assignment. So, any instruction in
|
||||||
* the assignment list with the same LHS is dead.
|
* the assignment list with the same LHS is dead.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user