mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-11 11:20:41 +01:00
v3d,v3dv: use fquantize2f16 lowering in NIR
Ths is equivalent to what we have been doing in the backend. Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24924>
This commit is contained in:
parent
209ed8eace
commit
ade44ad82e
3 changed files with 2 additions and 21 deletions
|
|
@ -1694,27 +1694,6 @@ ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr)
|
|||
vir_set_unpack(c->defs[result.index], 0, V3D_QPU_UNPACK_H);
|
||||
break;
|
||||
|
||||
case nir_op_fquantize2f16: {
|
||||
/* F32 -> F16 -> F32 conversion */
|
||||
struct qreg tmp = vir_FMOV(c, src[0]);
|
||||
vir_set_pack(c->defs[tmp.index], V3D_QPU_PACK_L);
|
||||
tmp = vir_FMOV(c, tmp);
|
||||
vir_set_unpack(c->defs[tmp.index], 0, V3D_QPU_UNPACK_L);
|
||||
|
||||
/* Check for denorm */
|
||||
struct qreg abs_src = vir_FMOV(c, src[0]);
|
||||
vir_set_unpack(c->defs[abs_src.index], 0, V3D_QPU_UNPACK_ABS);
|
||||
struct qreg threshold = vir_uniform_f(c, ldexpf(1.0, -14));
|
||||
vir_set_pf(c, vir_FCMP_dest(c, vir_nop_reg(), abs_src, threshold),
|
||||
V3D_QPU_PF_PUSHC);
|
||||
|
||||
/* Return +/-0 for denorms */
|
||||
struct qreg zero =
|
||||
vir_AND(c, src[0], vir_uniform_ui(c, 0x80000000));
|
||||
result = vir_FMOV(c, vir_SEL(c, V3D_QPU_COND_IFNA, tmp, zero));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
fprintf(stderr, "unknown NIR ALU inst: ");
|
||||
nir_print_instr(&instr->instr, stderr);
|
||||
|
|
|
|||
|
|
@ -231,6 +231,7 @@ const nir_shader_compiler_options v3dv_nir_options = {
|
|||
.lower_rotate = true,
|
||||
.lower_to_scalar = true,
|
||||
.lower_device_index_to_zero = true,
|
||||
.lower_fquantize2f16 = true,
|
||||
.has_fsub = true,
|
||||
.has_isub = true,
|
||||
.vertex_id_zero_based = false, /* FIXME: to set this to true, the intrinsic
|
||||
|
|
|
|||
|
|
@ -734,6 +734,7 @@ static const nir_shader_compiler_options v3d_nir_options = {
|
|||
.lower_rotate = true,
|
||||
.lower_to_scalar = true,
|
||||
.lower_int64_options = nir_lower_imul_2x32_64,
|
||||
.lower_fquantize2f16 = true,
|
||||
.has_fsub = true,
|
||||
.has_isub = true,
|
||||
.divergence_analysis_options =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue