From: Eric Anholt Date: Tue, 19 Feb 2019 02:15:59 +0000 (-0800) Subject: v3d: Move i2b and f2b support into emit_comparison. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dbe3af67a47ba929c89e9482fbc9396fc1114d93;p=mesa.git v3d: Move i2b and f2b support into emit_comparison. This lets us save a resolve to NIR true/false for ifs and discard_if. No change in shader-db. --- diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index 4a0fd7d20e7..e441bd5997d 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -746,6 +746,16 @@ ntq_emit_comparison(struct v3d_compile *c, vir_set_pf(vir_SUB_dest(c, nop, src0, src1), V3D_QPU_PF_PUSHC); break; + case nir_op_i2b32: + vir_set_pf(vir_MOV_dest(c, nop, src0), V3D_QPU_PF_PUSHZ); + cond_invert = true; + break; + + case nir_op_f2b32: + vir_set_pf(vir_FMOV_dest(c, nop, src0), V3D_QPU_PF_PUSHZ); + cond_invert = true; + break; + default: return false; } @@ -875,19 +885,6 @@ ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr) case nir_op_b2i32: result = vir_AND(c, src[0], vir_uniform_ui(c, 1)); break; - case nir_op_i2b32: - vir_set_pf(vir_MOV_dest(c, vir_nop_reg(), src[0]), - V3D_QPU_PF_PUSHZ); - result = vir_MOV(c, vir_SEL(c, V3D_QPU_COND_IFNA, - vir_uniform_ui(c, ~0), - vir_uniform_ui(c, 0))); - case nir_op_f2b32: - vir_set_pf(vir_FMOV_dest(c, vir_nop_reg(), src[0]), - V3D_QPU_PF_PUSHZ); - result = vir_MOV(c, vir_SEL(c, V3D_QPU_COND_IFNA, - vir_uniform_ui(c, ~0), - vir_uniform_ui(c, 0))); - break; case nir_op_iadd: result = vir_ADD(c, src[0], src[1]); @@ -950,6 +947,8 @@ ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr) break; } + case nir_op_i2b32: + case nir_op_f2b32: case nir_op_feq32: case nir_op_fne32: case nir_op_fge32: