Mesa (main): broadcom/compiler: add FLAFIRST and FLNAFIRST opcodes
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jun 29 07:03:32 UTC 2021
Module: Mesa
Branch: main
Commit: 87fa5908b3a0a592f2d8136714b78c8366d90de7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=87fa5908b3a0a592f2d8136714b78c8366d90de7
Author: Iago Toral Quiroga <itoral at igalia.com>
Date: Wed Jun 23 11:18:50 2021 +0200
broadcom/compiler: add FLAFIRST and FLNAFIRST opcodes
We will at least need the former to implement subgroupElect()
Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11620>
---
src/broadcom/compiler/v3d_compiler.h | 2 ++
src/broadcom/qpu/qpu_instr.c | 6 ++++++
src/broadcom/qpu/qpu_instr.h | 2 ++
src/broadcom/qpu/qpu_pack.c | 4 +++-
4 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h
index 51c755c6d56..564d8b9c8df 100644
--- a/src/broadcom/compiler/v3d_compiler.h
+++ b/src/broadcom/compiler/v3d_compiler.h
@@ -1234,6 +1234,8 @@ VIR_A_ALU1(NEG)
VIR_A_ALU1(FLAPUSH)
VIR_A_ALU1(FLBPUSH)
VIR_A_ALU1(FLPOP)
+VIR_A_ALU0(FLAFIRST)
+VIR_A_ALU0(FLNAFIRST)
VIR_A_ALU1(SETMSF)
VIR_A_ALU1(SETREVF)
VIR_A_ALU0(TIDX)
diff --git a/src/broadcom/qpu/qpu_instr.c b/src/broadcom/qpu/qpu_instr.c
index 0bda9a42c51..569c5fc4074 100644
--- a/src/broadcom/qpu/qpu_instr.c
+++ b/src/broadcom/qpu/qpu_instr.c
@@ -137,6 +137,8 @@ v3d_qpu_add_op_name(enum v3d_qpu_add_op op)
[V3D_QPU_A_TMUWT] = "tmuwt",
[V3D_QPU_A_VPMSETUP] = "vpmsetup",
[V3D_QPU_A_VPMWT] = "vpmwt",
+ [V3D_QPU_A_FLAFIRST] = "flafirst",
+ [V3D_QPU_A_FLNAFIRST] = "flnafirst",
[V3D_QPU_A_LDVPMV_IN] = "ldvpmv_in",
[V3D_QPU_A_LDVPMV_OUT] = "ldvpmv_out",
[V3D_QPU_A_LDVPMD_IN] = "ldvpmd_in",
@@ -406,6 +408,8 @@ static const uint8_t add_op_args[] = {
[V3D_QPU_A_BARRIERID] = D,
[V3D_QPU_A_TMUWT] = D,
[V3D_QPU_A_VPMWT] = D,
+ [V3D_QPU_A_FLAFIRST] = D,
+ [V3D_QPU_A_FLNAFIRST] = D,
[V3D_QPU_A_VPMSETUP] = D | A,
@@ -930,6 +934,8 @@ v3d_qpu_reads_flags(const struct v3d_qpu_instr *inst)
case V3D_QPU_A_VFLNB:
case V3D_QPU_A_FLAPUSH:
case V3D_QPU_A_FLBPUSH:
+ case V3D_QPU_A_FLAFIRST:
+ case V3D_QPU_A_FLNAFIRST:
return true;
default:
break;
diff --git a/src/broadcom/qpu/qpu_instr.h b/src/broadcom/qpu/qpu_instr.h
index a87ed9ff3a9..cf2576fc70b 100644
--- a/src/broadcom/qpu/qpu_instr.h
+++ b/src/broadcom/qpu/qpu_instr.h
@@ -191,6 +191,8 @@ enum v3d_qpu_add_op {
V3D_QPU_A_TMUWT,
V3D_QPU_A_VPMSETUP,
V3D_QPU_A_VPMWT,
+ V3D_QPU_A_FLAFIRST,
+ V3D_QPU_A_FLNAFIRST,
V3D_QPU_A_LDVPMV_IN,
V3D_QPU_A_LDVPMV_OUT,
V3D_QPU_A_LDVPMD_IN,
diff --git a/src/broadcom/qpu/qpu_pack.c b/src/broadcom/qpu/qpu_pack.c
index 5274077530d..fa3bc87c0ba 100644
--- a/src/broadcom/qpu/qpu_pack.c
+++ b/src/broadcom/qpu/qpu_pack.c
@@ -519,8 +519,10 @@ static const struct opcode_desc add_ops[] = {
{ 187, 187, 1 << 2, 1 << 4, V3D_QPU_A_BARRIERID, 40 },
{ 187, 187, 1 << 2, 1 << 5, V3D_QPU_A_TMUWT },
{ 187, 187, 1 << 2, 1 << 6, V3D_QPU_A_VPMWT },
-
+ { 187, 187, 1 << 2, 1 << 7, V3D_QPU_A_FLAFIRST, 41 },
+ { 187, 187, 1 << 3, 1 << 0, V3D_QPU_A_FLNAFIRST, 41 },
{ 187, 187, 1 << 3, ANYMUX, V3D_QPU_A_VPMSETUP, 33 },
+
{ 188, 188, 1 << 0, ANYMUX, V3D_QPU_A_LDVPMV_IN, 40 },
{ 188, 188, 1 << 0, ANYMUX, V3D_QPU_A_LDVPMV_OUT, 40 },
{ 188, 188, 1 << 1, ANYMUX, V3D_QPU_A_LDVPMD_IN, 40 },
More information about the mesa-commit
mailing list