mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
v3d: Use the NIR lowering for isign instead of rolling our own.
min/max instead of comparisons saves 2 instructions on fs-sign-int.shader_test.
This commit is contained in:
parent
42d2cae907
commit
3f22b35a43
1 changed files with 1 additions and 16 deletions
|
|
@ -547,19 +547,6 @@ ntq_fsign(struct v3d_compile *c, struct qreg src)
|
|||
return vir_MOV(c, t);
|
||||
}
|
||||
|
||||
static struct qreg
|
||||
ntq_isign(struct v3d_compile *c, struct qreg src)
|
||||
{
|
||||
struct qreg t = vir_get_temp(c);
|
||||
|
||||
vir_MOV_dest(c, t, vir_uniform_ui(c, 0));
|
||||
vir_PF(c, vir_MOV(c, src), V3D_QPU_PF_PUSHZ);
|
||||
vir_MOV_cond(c, V3D_QPU_COND_IFNA, t, vir_uniform_ui(c, 1));
|
||||
vir_PF(c, vir_MOV(c, src), V3D_QPU_PF_PUSHN);
|
||||
vir_MOV_cond(c, V3D_QPU_COND_IFA, t, vir_uniform_ui(c, -1));
|
||||
return vir_MOV(c, t);
|
||||
}
|
||||
|
||||
static void
|
||||
emit_fragcoord_input(struct v3d_compile *c, int attr)
|
||||
{
|
||||
|
|
@ -1025,9 +1012,6 @@ ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr)
|
|||
case nir_op_fsign:
|
||||
result = ntq_fsign(c, src[0]);
|
||||
break;
|
||||
case nir_op_isign:
|
||||
result = ntq_isign(c, src[0]);
|
||||
break;
|
||||
|
||||
case nir_op_fabs: {
|
||||
result = vir_FMOV(c, src[0]);
|
||||
|
|
@ -2476,6 +2460,7 @@ const nir_shader_compiler_options v3d_nir_options = {
|
|||
.lower_fsat = true,
|
||||
.lower_fsqrt = true,
|
||||
.lower_ifind_msb = true,
|
||||
.lower_isign = true,
|
||||
.lower_ldexp = true,
|
||||
.lower_mul_high = true,
|
||||
.lower_wpos_pntc = true,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue