diff options
author | Eric Anholt <[email protected]> | 2018-01-04 15:35:28 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2018-01-12 21:54:33 -0800 |
commit | 22a02f3e344d6bc47e3e30949a36d00a9eae84a9 (patch) | |
tree | 632ed61f4bee7c932baf6383d256c4ec304994cd /src/broadcom/qpu/qpu_instr.h | |
parent | 55f8a01acae7c4171ccfef301e48dc3cc67f5836 (diff) |
broadcom/vc5: Use the new LDVPM/STVPM opcodes on V3D 4.1.
Now, instead of a magic write register for VPM stores we have an
instruction to do them (which means no packing of other ALU ops into it),
with the ability to reorder the VPM stores due to the offset being baked
into the instruction.
VPM loads also gain the ability to be reordered by packing the row into
the A argument. They also no longer write to the r3 accumulator, and
instead must be stored to a physical register.
Diffstat (limited to 'src/broadcom/qpu/qpu_instr.h')
-rw-r--r-- | src/broadcom/qpu/qpu_instr.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/broadcom/qpu/qpu_instr.h b/src/broadcom/qpu/qpu_instr.h index 468fe89facd..0bd79ca68da 100644 --- a/src/broadcom/qpu/qpu_instr.h +++ b/src/broadcom/qpu/qpu_instr.h @@ -173,10 +173,13 @@ enum v3d_qpu_add_op { V3D_QPU_A_TMUWT, V3D_QPU_A_VPMSETUP, V3D_QPU_A_VPMWT, - V3D_QPU_A_LDVPMV, - V3D_QPU_A_LDVPMD, + V3D_QPU_A_LDVPMV_IN, + V3D_QPU_A_LDVPMV_OUT, + V3D_QPU_A_LDVPMD_IN, + V3D_QPU_A_LDVPMD_OUT, V3D_QPU_A_LDVPMP, - V3D_QPU_A_LDVPMG, + V3D_QPU_A_LDVPMG_IN, + V3D_QPU_A_LDVPMG_OUT, V3D_QPU_A_FCMP, V3D_QPU_A_VFMAX, V3D_QPU_A_FROUND, @@ -425,6 +428,7 @@ bool v3d_qpu_writes_r4(const struct v3d_device_info *devinfo, bool v3d_qpu_writes_r5(const struct v3d_device_info *devinfo, const struct v3d_qpu_instr *instr) ATTRIBUTE_CONST; bool v3d_qpu_uses_mux(const struct v3d_qpu_instr *inst, enum v3d_qpu_mux mux); +bool v3d_qpu_uses_vpm(const struct v3d_qpu_instr *inst); bool v3d_qpu_sig_writes_address(const struct v3d_device_info *devinfo, const struct v3d_qpu_sig *sig) ATTRIBUTE_CONST; |