i965: Add support for ir_triop_csel.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
@@ -362,6 +362,7 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
|
||||
|
||||
case ir_triop_fma:
|
||||
case ir_triop_lrp:
|
||||
case ir_triop_csel:
|
||||
case ir_triop_bitfield_extract:
|
||||
for (i = 0; i < vector_elements; i++) {
|
||||
ir_rvalue *op0 = get_element(op_var[0], i);
|
||||
|
||||
@@ -728,6 +728,12 @@ fs_visitor::visit(ir_expression *ir)
|
||||
case ir_triop_lrp:
|
||||
emit_lrp(this->result, op[0], op[1], op[2]);
|
||||
break;
|
||||
|
||||
case ir_triop_csel:
|
||||
emit(CMP(reg_null_d, op[0], fs_reg(0), BRW_CONDITIONAL_NZ));
|
||||
inst = emit(BRW_OPCODE_SEL, this->result, op[1], op[2]);
|
||||
inst->predicate = BRW_PREDICATE_NORMAL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1588,6 +1588,12 @@ vec4_visitor::visit(ir_expression *ir)
|
||||
emit(LRP(result_dst, op[2], op[1], op[0]));
|
||||
break;
|
||||
|
||||
case ir_triop_csel:
|
||||
emit(CMP(dst_null_d(), op[0], src_reg(0), BRW_CONDITIONAL_NZ));
|
||||
inst = emit(BRW_OPCODE_SEL, result_dst, op[1], op[2]);
|
||||
inst->predicate = BRW_PREDICATE_NORMAL;
|
||||
break;
|
||||
|
||||
case ir_triop_bfi:
|
||||
op[0] = fix_3src_operand(op[0]);
|
||||
op[1] = fix_3src_operand(op[1]);
|
||||
|
||||
Reference in New Issue
Block a user