i965/fs/nir: add nir_op_unpack_half_2x16_split_*_flush_to_zero
The denorm mode is set in the control register, no need to do something else. v2: - Add an assert to make sure that we realize if this assumption is broken in the future (Caio). Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> Signed-off-by: Andres Gomez <agomez@igalia.com> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
This commit is contained in:
parent
3c474f8513
commit
cdace5b0c6
|
@ -1600,11 +1600,15 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr,
|
|||
case nir_op_pack_half_2x16:
|
||||
unreachable("not reached: should be handled by lower_packing_builtins");
|
||||
|
||||
case nir_op_unpack_half_2x16_split_x_flush_to_zero:
|
||||
assert(FLOAT_CONTROLS_DENORM_FLUSH_TO_ZERO_FP16 & execution_mode);
|
||||
case nir_op_unpack_half_2x16_split_x:
|
||||
inst = bld.emit(BRW_OPCODE_F16TO32, result,
|
||||
subscript(op[0], BRW_REGISTER_TYPE_UW, 0));
|
||||
inst->saturate = instr->dest.saturate;
|
||||
break;
|
||||
case nir_op_unpack_half_2x16_split_y_flush_to_zero:
|
||||
assert(FLOAT_CONTROLS_DENORM_FLUSH_TO_ZERO_FP16 & execution_mode);
|
||||
case nir_op_unpack_half_2x16_split_y:
|
||||
inst = bld.emit(BRW_OPCODE_F16TO32, result,
|
||||
subscript(op[0], BRW_REGISTER_TYPE_UW, 1));
|
||||
|
|
Loading…
Reference in New Issue