v3d: add missing plumbing for VPM load instructions
authorIago Toral Quiroga <itoral@igalia.com>
Tue, 24 Sep 2019 08:43:41 +0000 (10:43 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Mon, 16 Dec 2019 07:42:37 +0000 (08:42 +0100)
We will need to use LDVPMG_IN specifically to read VPM inputs
in geometry shaders.

Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
src/broadcom/compiler/v3d_compiler.h
src/broadcom/qpu/qpu_pack.c

index e2a4665ed42ada77c5ad510fe8e357d9d05b459e..29057bdf4df03247af574c21c399f56c2f2fd0d8 100644 (file)
@@ -998,6 +998,10 @@ VIR_A_ALU0(TIDX)
 VIR_A_ALU0(EIDX)
 VIR_A_ALU1(LDVPMV_IN)
 VIR_A_ALU1(LDVPMV_OUT)
+VIR_A_ALU1(LDVPMD_IN)
+VIR_A_ALU1(LDVPMD_OUT)
+VIR_A_ALU2(LDVPMG_IN)
+VIR_A_ALU2(LDVPMG_OUT)
 VIR_A_ALU0(TMUWT)
 
 VIR_A_ALU0(FXCD)
index 516b0cf538a8d49f9b2ddc259393b4328286d085..6942342740c323a5020d31a0e3005b68dd543111 100644 (file)
@@ -521,7 +521,9 @@ static const struct opcode_desc add_ops[] = {
 
         { 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 },
+        { 188, 188, 1 << 1, ANYMUX, V3D_QPU_A_LDVPMD_OUT, 40 },
         { 188, 188, 1 << 2, ANYMUX, V3D_QPU_A_LDVPMP, 40 },
         { 188, 188, 1 << 3, ANYMUX, V3D_QPU_A_RSQRT, 41 },
         { 188, 188, 1 << 4, ANYMUX, V3D_QPU_A_EXP, 41 },
@@ -529,6 +531,7 @@ static const struct opcode_desc add_ops[] = {
         { 188, 188, 1 << 6, ANYMUX, V3D_QPU_A_SIN, 41 },
         { 188, 188, 1 << 7, ANYMUX, V3D_QPU_A_RSQRT2, 41 },
         { 189, 189, ANYMUX, ANYMUX, V3D_QPU_A_LDVPMG_IN, 40 },
+        { 189, 189, ANYMUX, ANYMUX, V3D_QPU_A_LDVPMG_OUT, 40 },
 
         /* FIXME: MORE COMPLICATED */
         /* { 190, 191, ANYMUX, ANYMUX, V3D_QPU_A_VFMOVABSNEGNAB }, */