nir: Remove useless ftrunc inside f2i/f2u.
[mesa.git] / src / glsl / lower_discard_flow.cpp
index 1bc56d79e988810dc8647f5ad6007860c11fa4e2..ee45bf2215580d60e8e085f447ea634d6b2ff438 100644 (file)
@@ -90,7 +90,14 @@ ir_visitor_status
 lower_discard_flow_visitor::visit_enter(ir_discard *ir)
 {
    ir_dereference *lhs = new(mem_ctx) ir_dereference_variable(discarded);
-   ir_rvalue *rhs = new(mem_ctx) ir_constant(true);
+   ir_rvalue *rhs;
+   if (ir->condition) {
+      /* discarded <- condition, use (var_ref discarded) as the condition */
+      rhs = ir->condition;
+      ir->condition = new(mem_ctx) ir_dereference_variable(discarded);
+   } else {
+      rhs = new(mem_ctx) ir_constant(true);
+   }
    ir_assignment *assign = new(mem_ctx) ir_assignment(lhs, rhs);
    ir->insert_before(assign);