summaryrefslogtreecommitdiff
path: root/src/broadcom/compiler/nir_to_vir.c
diff options
context:
space:
mode:
authorIago Toral Quiroga <itoral@igalia.com>2021-06-28 09:44:49 +0200
committerIago Toral Quiroga <itoral@igalia.com>2021-06-29 08:43:06 +0200
commitb9f510087df4aa2810839725a65af24cafeda42e (patch)
tree50b1bad8f2a35f3dfaa78085a6b4b0f2dd6d05ac /src/broadcom/compiler/nir_to_vir.c
parent53341e44ade08e6bcac58b0814ecb3db950da69f (diff)
broadcom/compiler: add a ntq_emit_cond_to_bool helper
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11620>
Diffstat (limited to 'src/broadcom/compiler/nir_to_vir.c')
-rw-r--r--src/broadcom/compiler/nir_to_vir.c38
1 files changed, 16 insertions, 22 deletions
diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index ce8948ad43c..2a8d2966800 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -1230,6 +1230,18 @@ out:
return V3D_QPU_COND_IFNA;
}
+static struct qreg
+ntq_emit_cond_to_bool(struct v3d_compile *c, enum v3d_qpu_cond cond)
+{
+ struct qreg result =
+ vir_MOV(c, vir_SEL(c, cond,
+ vir_uniform_ui(c, ~0),
+ vir_uniform_ui(c, 0)));
+ c->flags_temp = result.index;
+ c->flags_cond = cond;
+ return result;
+}
+
static void
ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr)
{
@@ -1393,11 +1405,7 @@ ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr)
enum v3d_qpu_cond cond;
ASSERTED bool ok = ntq_emit_comparison(c, instr, &cond);
assert(ok);
- result = vir_MOV(c, vir_SEL(c, cond,
- vir_uniform_ui(c, ~0),
- vir_uniform_ui(c, 0)));
- c->flags_temp = result.index;
- c->flags_cond = cond;
+ result = ntq_emit_cond_to_bool(c, cond);
break;
}
@@ -1477,11 +1485,7 @@ ntq_emit_alu(struct v3d_compile *c, nir_alu_instr *instr)
case nir_op_uadd_carry:
vir_set_pf(c, vir_ADD_dest(c, vir_nop_reg(), src[0], src[1]),
V3D_QPU_PF_PUSHC);
- result = vir_MOV(c, vir_SEL(c, V3D_QPU_COND_IFA,
- vir_uniform_ui(c, ~0),
- vir_uniform_ui(c, 0)));
- c->flags_temp = result.index;
- c->flags_cond = V3D_QPU_COND_IFA;
+ result = ntq_emit_cond_to_bool(c, V3D_QPU_COND_IFA);
break;
case nir_op_pack_half_2x16_split:
@@ -2903,11 +2907,7 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr)
case nir_intrinsic_load_helper_invocation:
vir_set_pf(c, vir_MSF_dest(c, vir_nop_reg()), V3D_QPU_PF_PUSHZ);
- struct qreg qdest = vir_MOV(c, vir_SEL(c, V3D_QPU_COND_IFA,
- vir_uniform_ui(c, ~0),
- vir_uniform_ui(c, 0)));
- c->flags_temp = qdest.index;
- c->flags_cond = V3D_QPU_COND_IFA;
+ struct qreg qdest = ntq_emit_cond_to_bool(c, V3D_QPU_COND_IFA);
ntq_store_dest(c, &instr->dest, 0, qdest);
break;
@@ -3281,13 +3281,7 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr)
vir_set_pf(c, vir_XOR_dest(c, vir_nop_reg(),
first, vir_uniform_ui(c, 1)),
V3D_QPU_PF_PUSHZ);
- struct qreg result =
- vir_MOV(c, vir_SEL(c, V3D_QPU_COND_IFA,
- vir_uniform_ui(c, ~0),
- vir_uniform_ui(c, 0)));
- c->flags_temp = result.index;
- c->flags_cond = V3D_QPU_COND_IFA;
-
+ struct qreg result = ntq_emit_cond_to_bool(c, V3D_QPU_COND_IFA);
ntq_store_dest(c, &instr->dest, 0, result);
break;
}