mesa/program: Translate csel operation from GLSL IR.
This will be used internally by the GLSL front-end in order to implement some built-in functions. Plumb it through MESA IR for back-ends that rely on this translation pass. v2: Add comment. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Juan A. Suarez Romero <jasuarez@igalia.com>
This commit is contained in:
parent
56314f5baf
commit
e81130d7a1
|
@ -1360,13 +1360,20 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
|
|||
emit(ir, OPCODE_LRP, result_dst, op[2], op[1], op[0]);
|
||||
break;
|
||||
|
||||
case ir_triop_csel:
|
||||
/* We assume that boolean true and false are 1.0 and 0.0. OPCODE_CMP
|
||||
* selects src1 if src0 is < 0, src2 otherwise.
|
||||
*/
|
||||
op[0].negate = ~op[0].negate;
|
||||
emit(ir, OPCODE_CMP, result_dst, op[0], op[1], op[2]);
|
||||
break;
|
||||
|
||||
case ir_binop_vector_extract:
|
||||
case ir_triop_fma:
|
||||
case ir_triop_bitfield_extract:
|
||||
case ir_triop_vector_insert:
|
||||
case ir_quadop_bitfield_insert:
|
||||
case ir_binop_ldexp:
|
||||
case ir_triop_csel:
|
||||
case ir_binop_carry:
|
||||
case ir_binop_borrow:
|
||||
case ir_binop_imul_high:
|
||||
|
|
Loading…
Reference in New Issue