From: Eric Anholt Date: Wed, 6 Feb 2019 21:17:21 +0000 (-0800) Subject: v3d: Use the NIR lowering for isign instead of rolling our own. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3f22b35a43cc842bf97ef51b864f80489194bb16;p=mesa.git 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. --- diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index d983f91e718..41fc03aa242 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -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,