mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 14:38:06 +02:00
nir/constant_expressions: mind rounding mode converting from float to float16 destinations
v2: - Move the op-code specific knowledge to nir_opcodes.py even if it means a rount trip conversion (Connor). 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
ef681cf971
commit
5e22f3e29a
1 changed files with 10 additions and 2 deletions
|
|
@ -364,7 +364,11 @@ struct ${type}${width}_vec {
|
|||
## Sanitize the C value to a proper NIR 0/-1 bool
|
||||
_dst_val[_i].${get_const_field(output_type)} = -(int)dst;
|
||||
% elif output_type == "float16":
|
||||
_dst_val[_i].u16 = _mesa_float_to_half(dst);
|
||||
if (nir_is_rounding_mode_rtz(execution_mode, 16)) {
|
||||
_dst_val[_i].u16 = _mesa_float_to_float16_rtz(dst);
|
||||
} else {
|
||||
_dst_val[_i].u16 = _mesa_float_to_float16_rtne(dst);
|
||||
}
|
||||
% else:
|
||||
_dst_val[_i].${get_const_field(output_type)} = dst;
|
||||
% endif
|
||||
|
|
@ -408,7 +412,11 @@ struct ${type}${width}_vec {
|
|||
## Sanitize the C value to a proper NIR 0/-1 bool
|
||||
_dst_val[${k}].${get_const_field(output_type)} = -(int)dst.${"xyzw"[k]};
|
||||
% elif output_type == "float16":
|
||||
_dst_val[${k}].u16 = _mesa_float_to_half(dst.${"xyzw"[k]});
|
||||
if (nir_is_rounding_mode_rtz(execution_mode, 16)) {
|
||||
_dst_val[${k}].u16 = _mesa_float_to_float16_rtz(dst.${"xyzw"[k]});
|
||||
} else {
|
||||
_dst_val[${k}].u16 = _mesa_float_to_float16_rtne(dst.${"xyzw"[k]});
|
||||
}
|
||||
% else:
|
||||
_dst_val[${k}].${get_const_field(output_type)} = dst.${"xyzw"[k]};
|
||||
% endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue