Module: Mesa Branch: staging/23.0 Commit: 0d2e56f3965534356d3cd163f51f072d82cd1b82 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d2e56f3965534356d3cd163f51f072d82cd1b82
Author: Iago Toral Quiroga <[email protected]> Date: Mon Apr 24 08:51:47 2023 +0200 broadcom/compiler: add a v3d_qpu_instr_is_legacy_sfu helper This checks for the deprecated, old-style SFU instructions triggered by magic writes. Reviewed-by: Alejandro PiƱeiro <[email protected]> cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22593> (cherry picked from commit b3ac456eb1df0976ee4036cd191b557682923d04) --- .pick_status.json | 2 +- src/broadcom/qpu/qpu_instr.c | 10 ++++++++-- src/broadcom/qpu/qpu_instr.h | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2dcd871ea87..272d4655031 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1604,7 +1604,7 @@ "description": "broadcom/compiler: add a v3d_qpu_instr_is_legacy_sfu helper", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/broadcom/qpu/qpu_instr.c b/src/broadcom/qpu/qpu_instr.c index f793d03f681..1d9c8e6b1fd 100644 --- a/src/broadcom/qpu/qpu_instr.c +++ b/src/broadcom/qpu/qpu_instr.c @@ -660,9 +660,15 @@ v3d_qpu_uses_tlb(const struct v3d_qpu_instr *inst) bool v3d_qpu_uses_sfu(const struct v3d_qpu_instr *inst) { - if (v3d_qpu_instr_is_sfu(inst)) - return true; + return v3d_qpu_instr_is_sfu(inst) || v3d_qpu_instr_is_legacy_sfu(inst); +} +/* Checks whether the instruction implements a SFU operation by the writing + * to specific magic register addresses instead of using SFU ALU opcodes. + */ +bool +v3d_qpu_instr_is_legacy_sfu(const struct v3d_qpu_instr *inst) +{ if (inst->type == V3D_QPU_INSTR_TYPE_ALU) { if (inst->alu.add.op != V3D_QPU_A_NOP && inst->alu.add.magic_write && diff --git a/src/broadcom/qpu/qpu_instr.h b/src/broadcom/qpu/qpu_instr.h index 6c81d602084..2e133472698 100644 --- a/src/broadcom/qpu/qpu_instr.h +++ b/src/broadcom/qpu/qpu_instr.h @@ -452,6 +452,7 @@ bool v3d_qpu_magic_waddr_is_tsy(enum v3d_qpu_waddr waddr) ATTRIBUTE_CONST; bool v3d_qpu_magic_waddr_loads_unif(enum v3d_qpu_waddr waddr) ATTRIBUTE_CONST; bool v3d_qpu_uses_tlb(const struct v3d_qpu_instr *inst) ATTRIBUTE_CONST; bool v3d_qpu_instr_is_sfu(const struct v3d_qpu_instr *inst) ATTRIBUTE_CONST; +bool v3d_qpu_instr_is_legacy_sfu(const struct v3d_qpu_instr *inst) ATTRIBUTE_CONST; bool v3d_qpu_uses_sfu(const struct v3d_qpu_instr *inst) ATTRIBUTE_CONST; bool v3d_qpu_writes_tmu(const struct v3d_device_info *devinfo, const struct v3d_qpu_instr *inst) ATTRIBUTE_CONST;
