i965/vs: Add support for if(any(bvec)) on gen6.
This commit is contained in:
@@ -564,10 +564,6 @@ vec4_visitor::emit_if_gen6(ir_if *ir)
|
|||||||
|
|
||||||
assert(expr->get_num_operands() <= 2);
|
assert(expr->get_num_operands() <= 2);
|
||||||
for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
|
for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
|
||||||
assert(expr->operands[i]->type->is_scalar() ||
|
|
||||||
expr->operation == ir_binop_any_nequal ||
|
|
||||||
expr->operation == ir_binop_all_equal);
|
|
||||||
|
|
||||||
expr->operands[i]->accept(this);
|
expr->operands[i]->accept(this);
|
||||||
op[i] = this->result;
|
op[i] = this->result;
|
||||||
}
|
}
|
||||||
@@ -634,6 +630,14 @@ vec4_visitor::emit_if_gen6(ir_if *ir)
|
|||||||
inst->predicate = BRW_PREDICATE_ALIGN16_ANY4H;
|
inst->predicate = BRW_PREDICATE_ALIGN16_ANY4H;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case ir_unop_any:
|
||||||
|
inst = emit(BRW_OPCODE_CMP, dst_null_d(), op[0], src_reg(0));
|
||||||
|
inst->conditional_mod = BRW_CONDITIONAL_NZ;
|
||||||
|
|
||||||
|
inst = emit(BRW_OPCODE_IF);
|
||||||
|
inst->predicate = BRW_PREDICATE_ALIGN16_ANY4H;
|
||||||
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
assert(!"not reached");
|
assert(!"not reached");
|
||||||
inst = emit(BRW_OPCODE_IF, dst_null_d(), op[0], src_reg(0));
|
inst = emit(BRW_OPCODE_IF, dst_null_d(), op[0], src_reg(0));
|
||||||
|
Reference in New Issue
Block a user