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;

Reply via email to