Mesa (main): freedreno/ir3: split up load/store/atomic by generation

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Feb 12 20:00:53 UTC 2022


Module: Mesa
Branch: main
Commit: 3d41414d26a6b187a0b6451135ef006d9193c2de
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3d41414d26a6b187a0b6451135ef006d9193c2de

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Sun Nov 14 13:06:18 2021 -0500

freedreno/ir3: split up load/store/atomic by generation

Some bits are slightly different on a4xx. Use the encodings that work.
Perhaps these can be combined at some point if we get a proper
understanding of what they mean.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14789>

---

 src/freedreno/isa/ir3-cat6.xml | 131 ++++++++++++++++++++++++++++++++++++-----
 1 file changed, 116 insertions(+), 15 deletions(-)

diff --git a/src/freedreno/isa/ir3-cat6.xml b/src/freedreno/isa/ir3-cat6.xml
index bf3b4839214..8dff10c1dcc 100644
--- a/src/freedreno/isa/ir3-cat6.xml
+++ b/src/freedreno/isa/ir3-cat6.xml
@@ -436,6 +436,13 @@ SOFTWARE.
 </bitset>
 
 <bitset name="ldgb" extends="#instruction-cat6-a3xx-ibo-load">
+	<gen max="499"/>
+	<pattern low="54" high="58">11011</pattern>  <!-- OPC -->
+        <pattern pos="0"           >1</pattern> <!-- .a -->
+</bitset>
+
+<bitset name="ldgb" extends="#instruction-cat6-a3xx-ibo-load">
+	<gen min="500"/>
 	<pattern low="54" high="58">11011</pattern>  <!-- OPC -->
         <pattern pos="0"           >x</pattern> <!-- .a -->
 </bitset>
@@ -451,7 +458,6 @@ SOFTWARE.
 	</display>
 	<gen max="599"/>
 
-        <pattern pos="0"           >1</pattern> <!-- .a -->
 	<field   low="1"  high="8"  name="SRC1" type="#reg-gpr"/>
 	<pattern low="14" high="22">xxxxxxxxx</pattern>
 	<field   pos="23"           name="SRC2_IM" type="bool"/>
@@ -472,11 +478,31 @@ SOFTWARE.
 	</encode>
 </bitset>
 
-<bitset name="stgb" extends="#instruction-cat6-a3xx-ibo-store">
+<bitset name="#instruction-cat6-a3xx-ibo-store-a4xx" extends="#instruction-cat6-a3xx-ibo-store">
+        <pattern pos="0"           >0</pattern> <!-- .a -->
+</bitset>
+
+<bitset name="#instruction-cat6-a3xx-ibo-store-a5xx" extends="#instruction-cat6-a3xx-ibo-store">
+        <pattern pos="0"           >1</pattern> <!-- .a -->
+</bitset>
+
+<bitset name="stgb" extends="#instruction-cat6-a3xx-ibo-store-a5xx">
+	<gen min="500"/>
+	<pattern low="54" high="58">11100</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="stib" extends="#instruction-cat6-a3xx-ibo-store-a5xx">
+	<gen min="500"/>
+	<pattern low="54" high="58">11101</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="stgb" extends="#instruction-cat6-a3xx-ibo-store-a4xx">
+	<gen max="499"/>
 	<pattern low="54" high="58">11100</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="stib" extends="#instruction-cat6-a3xx-ibo-store">
+<bitset name="stib" extends="#instruction-cat6-a3xx-ibo-store-a4xx">
+	<gen max="499"/>
 	<pattern low="54" high="58">11101</pattern>  <!-- OPC -->
 </bitset>
 
@@ -497,7 +523,6 @@ SOFTWARE.
 	<derived name="D" expr="#cat6-d" type="uint"/>
 	<derived name="TYPE_SIZE" expr="#cat6-type-size" type="uint"/>
 
-	<pattern pos="0"           >1</pattern>
 	<field   low="9"  high="10" name="D_MINUS_ONE" type="uint"/>
 	<field   pos="11"           name="TYPED" type="#cat6-typed"/>
 	<field   low="12" high="13" name="TYPE_SIZE_MINUS_ONE" type="uint"/>
@@ -523,6 +548,7 @@ SOFTWARE.
 </bitset>
 
 <bitset name="#instruction-cat6-a3xx-atomic-local" extends="#instruction-cat6-a3xx-atomic">
+	<pattern pos="0"            >1</pattern>
 	<pattern low="1"  high="8"  >00000000</pattern> <!-- SRC3 -->
 	<pattern low="41" high="48" >00000000</pattern> <!-- SSBO/image binding point -->
 	<pattern pos="52"           >0</pattern> <!-- "G" -->
@@ -607,47 +633,121 @@ SOFTWARE.
 	</encode>
 </bitset>
 
-<bitset name="atomic.s.add" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="#instruction-cat6-a3xx-atomic-global-a4xx" extends="#instruction-cat6-a3xx-atomic-global">
+	<pattern pos="0"            >0</pattern>
+</bitset>
+
+<bitset name="atomic.s.add" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">10000</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.sub" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">10001</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.xchg" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">10010</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.inc" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">10011</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.dec" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">10100</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.cmpxchg" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">10101</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.min" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">10110</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.max" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">10111</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.and" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">11000</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.or" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">11001</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="atomic.s.xor" extends="#instruction-cat6-a3xx-atomic-global-a4xx">
+	<gen max="499"/>
+	<pattern low="54" high="58">11010</pattern>  <!-- OPC -->
+</bitset>
+
+<bitset name="#instruction-cat6-a3xx-atomic-global-a5xx" extends="#instruction-cat6-a3xx-atomic-global">
+	<pattern pos="0"            >1</pattern>
+</bitset>
+
+<bitset name="atomic.s.add" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">10000</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.sub" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.sub" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">10001</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.xchg" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.xchg" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">10010</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.inc" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.inc" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">10011</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.dec" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.dec" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">10100</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.cmpxchg" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.cmpxchg" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">10101</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.min" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.min" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">10110</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.max" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.max" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">10111</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.and" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.and" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">11000</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.or" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.or" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">11001</pattern>  <!-- OPC -->
 </bitset>
 
-<bitset name="atomic.s.xor" extends="#instruction-cat6-a3xx-atomic-global">
+<bitset name="atomic.s.xor" extends="#instruction-cat6-a3xx-atomic-global-a5xx">
+	<gen min="500"/>
 	<pattern low="54" high="58">11010</pattern>  <!-- OPC -->
 </bitset>
 
@@ -662,6 +762,7 @@ SOFTWARE.
 		{SY}{JP}{NAME}.{TYPED}.{D}d.{TYPE}.{TYPE_SIZE}.g {DST}, {SRC1}, {SRC2}
 	</display>
 
+	<pattern pos="0"            >1</pattern>
 	<pattern low="1"  high="8"  >00000000</pattern> <!-- SRC3 -->
 	<pattern low="41" high="48" >00000000</pattern> <!-- SSBO/image binding point -->
 	<pattern pos="52"           >1</pattern> <!-- "G" -->



More information about the mesa-commit mailing list