From 7c919f04066d3f2971e9cd4de0da88bfa6038865 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Mon, 11 Dec 2023 20:04:32 +0100 Subject: [PATCH] freedreno/afuc: Handle store instruction on a5xx Turns out a5xx already had store, although not load. It was using the high bit of the unknown flags for this. Note that a6xx does use the high bit, and we fall back to not decoding it at all here before properly decoding it in the next commit. Splitting up the commits seems worth this small breakage. Part-of: --- src/freedreno/afuc/afuc.xml | 35 +++++++++++++++---- .../registers/adreno/adreno_control_regs.xml | 3 ++ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/freedreno/afuc/afuc.xml b/src/freedreno/afuc/afuc.xml index 9733d9bb592..80bde72a283 100644 --- a/src/freedreno/afuc/afuc.xml +++ b/src/freedreno/afuc/afuc.xml @@ -603,7 +603,7 @@ SOFTWARE. - + @@ -611,8 +611,7 @@ SOFTWARE. - - + {REP}store {SRC}, [{OFFSET} + 0x{IMMED}], 0x{FLAGS} @@ -625,7 +624,6 @@ SOFTWARE. - 10100 src->src1 @@ -633,7 +631,19 @@ SOFTWARE. - + + + 10101 + 0 + + + + + 0 + 10100 + + + Write to a control register. {REP}cwrite {SRC}, [{OFFSET} + {CONTROLREG}], 0x{FLAGS} @@ -650,6 +660,16 @@ SOFTWARE. + + 1 + + + + + 0 + + + @@ -662,6 +682,7 @@ SOFTWARE. + 0 10110 @@ -687,12 +708,14 @@ SOFTWARE. + 1 10110 - + 0 + 10111 diff --git a/src/freedreno/registers/adreno/adreno_control_regs.xml b/src/freedreno/registers/adreno/adreno_control_regs.xml index cee87df50be..04697a78c60 100644 --- a/src/freedreno/registers/adreno/adreno_control_regs.xml +++ b/src/freedreno/registers/adreno/adreno_control_regs.xml @@ -12,6 +12,9 @@ xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd"> + Controls high 32 bits used by store afuc instruction + +