From 87fa5908b3a0a592f2d8136714b78c8366d90de7 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 23 Jun 2021 11:18:50 +0200 Subject: [PATCH] broadcom/compiler: add FLAFIRST and FLNAFIRST opcodes MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit We will at least need the former to implement subgroupElect() Reviewed-by: Alejandro Piñeiro Part-of: --- 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 51c755c..564d8b9 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 0bda9a4..569c5fc 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 a87ed9f..cf2576f 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 5274077..fa3bc87 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 }, -- 2.7.4