pan/va: Add .signed bit to right shift instructions
authorAlyssa Rosenzweig <alyssa@collabora.com>
Wed, 22 Dec 2021 17:14:59 +0000 (12:14 -0500)
committerMarge Bot <emma+marge@anholt.net>
Wed, 22 Dec 2021 22:01:20 +0000 (22:01 +0000)
This makes the RSHIFT_* family of instructions act like ARSHIFT.* on
Bifrost.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14292>

src/panfrost/bifrost/valhall/ISA.xml

index d5022a8..c4ffa07 100644 (file)
     <mod name="left" start="128" size="1" implied="true"/>
     <desc>
       Right shifts its first source by a specified amount and bitwise ANDs it with the
-      second source, optionally inverting the second source or the result.
+      second source, optionally inverting the second source or the result. If
+      `signed` is set, the hardware performs an arithmetic right shift; otherwise,
+      it performs an unsigned right shift.
     </desc>
+    <mod name="signed" start="34" size="1"/>
     <not_result/>
     <src widen="true">A</src>
     <src lanes="true" size="8">shift</src>
     <mod name="left" start="128" size="1" implied="true"/>
     <desc>
       Right shifts its first source by a specified amount and bitwise ORs it with the
-      second source, optionally inverting the second source or the result.
-    </desc>
+      second source, optionally inverting the second source or the result. If
+      `signed` is set, the hardware performs an arithmetic right shift; otherwise,
+      it performs an unsigned right shift.
+   </desc>
+    <mod name="signed" start="34" size="1"/>
     <not_result/>
     <src widen="true">A</src>
     <src lanes="true" size="8">shift</src>
     <mod name="left" start="128" size="1" implied="true"/>
     <desc>
       Right shifts its first source by a specified amount and bitwise XORs it with the
-      second source, optionally inverting the second source or the result.
+      second source, optionally inverting the second source or the result. If
+      `signed` is set, the hardware performs an arithmetic right shift; otherwise,
+      it performs an unsigned right shift.
     </desc>
+    <mod name="signed" start="34" size="1"/>
     <not_result/>
     <src widen="true">A</src>
     <src lanes="true" size="8">shift</src>