broadcom/compiler: implement NIR mali opcodes for clamping

These translate directly to new unpack modifiers on V3D 7.x.

Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31480>
This commit is contained in:
Iago Toral Quiroga 2024-09-30 12:58:21 +02:00 committed by Marge Bot
parent a13bf51a9f
commit c57be33d96

View file

@ -1783,11 +1783,23 @@ ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr)
break;
case nir_op_fsat:
assert(c->devinfo->ver >= 71);
assert(v3d_device_has_unpack_sat(c->devinfo));
result = vir_FMOV(c, src[0]);
vir_set_unpack(c->defs[result.index], 0, V3D71_QPU_UNPACK_SAT);
break;
case nir_op_fsat_signed:
assert(v3d_device_has_unpack_sat(c->devinfo));
result = vir_FMOV(c, src[0]);
vir_set_unpack(c->defs[result.index], 0, V3D71_QPU_UNPACK_NSAT);
break;
case nir_op_fclamp_pos:
assert(v3d_device_has_unpack_max0(c->devinfo));
result = vir_FMOV(c, src[0]);
vir_set_unpack(c->defs[result.index], 0, V3D71_QPU_UNPACK_MAX0);
break;
default:
fprintf(stderr, "unknown NIR ALU inst: ");
nir_print_instr(&instr->instr, stderr);