summaryrefslogtreecommitdiff
path: root/src/freedreno/isa/ir3-cat7.xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/freedreno/isa/ir3-cat7.xml')
-rw-r--r--src/freedreno/isa/ir3-cat7.xml74
1 files changed, 64 insertions, 10 deletions
diff --git a/src/freedreno/isa/ir3-cat7.xml b/src/freedreno/isa/ir3-cat7.xml
index 5e21359dcaf..f3fd1b8f097 100644
--- a/src/freedreno/isa/ir3-cat7.xml
+++ b/src/freedreno/isa/ir3-cat7.xml
@@ -25,25 +25,27 @@ SOFTWARE.
<isa>
<!--
- Cat7 Instructions: barrier instructions
+ Cat7 Instructions: barrier, cache, sleep instructions
-->
<bitset name="#instruction-cat7" extends="#instruction">
+ <pattern low="0" high="31">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</pattern>
+ <pattern low="32" high="43">xxxxxxxxxxxx</pattern>
+ <pattern pos="44" >x</pattern> <!-- blob tells that it is (ss) -->
+ <field pos="59" name="JP" type="bool" display="(jp)"/>
+ <field pos="60" name="SY" type="bool" display="(sy)"/>
+ <pattern low="61" high="63">111</pattern> <!-- cat7 -->
+</bitset>
+
+<bitset name="#instruction-cat7-barrier" extends="#instruction-cat7">
<display>
{SY}{JP}{NAME}{G}{L}{R}{W}
</display>
- <pattern low="0" high="31">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</pattern>
- <pattern low="32" high="43">xxxxxxxxxxxx</pattern>
- <pattern pos="44" >x</pattern> <!-- possilby (ss) ? -->
<pattern low="45" high="50">x1xxxx</pattern>
<field pos="51" name="W" type="bool" display=".w" /> <!-- write -->
<field pos="52" name="R" type="bool" display=".r" /> <!-- read -->
<field pos="53" name="L" type="bool" display=".l" /> <!-- local -->
<field pos="54" name="G" type="bool" display=".g" /> <!-- global -->
- <!-- 4b OPC -->
- <field pos="59" name="JP" type="bool" display="(jp)"/>
- <field pos="60" name="SY" type="bool" display="(sy)"/>
- <pattern low="61" high="63">111</pattern> <!-- cat7 -->
<encode>
<map name="W">src->cat7.w</map>
<map name="R">src->cat7.r</map>
@@ -52,12 +54,64 @@ SOFTWARE.
</encode>
</bitset>
-<bitset name="bar" extends="#instruction-cat7">
+<bitset name="bar" extends="#instruction-cat7-barrier">
<pattern low="55" high="58">0000</pattern>
</bitset>
-<bitset name="fence" extends="#instruction-cat7">
+<bitset name="fence" extends="#instruction-cat7-barrier">
<pattern low="55" high="58">0001</pattern>
</bitset>
+<enum name="#dccln-type">
+ <value val="0" display=".shr"/>
+ <value val="1" display=".all"/>
+</enum>
+
+<bitset name="#instruction-cat7-data" extends="#instruction-cat7">
+ <display>
+ {SY}{JP}{NAME}{TYPE}
+ </display>
+ <pattern low="45" high="50">xxxxxx</pattern>
+ <field pos="51" name="TYPE" type="#dccln-type"/>
+ <pattern low="52" high="54">xxx</pattern>
+ <encode>
+ <!-- TODO: read handle type -->
+ <map name="TYPE">1</map>
+ </encode>
+</bitset>
+
+<bitset name="icinv" extends="#instruction-cat7">
+ <doc>
+ Seem to be Instruction Cache Invalidate, supported by the fact
+ that it considerably slows shader execution compared to
+ data cache instructions.
+ </doc>
+ <display>
+ {SY}{JP}{NAME}
+ </display>
+ <pattern low="45" high="54">xxxxxxxxxx</pattern>
+ <pattern low="55" high="58">0011</pattern>
+</bitset>
+
+<bitset name="dccln" extends="#instruction-cat7-data">
+ <doc>
+ Data (Cache?) Clean
+ </doc>
+ <pattern low="55" high="58">0100</pattern>
+</bitset>
+
+<bitset name="dcinv" extends="#instruction-cat7-data">
+ <doc>
+ Data (Cache?) Invalidate
+ </doc>
+ <pattern low="55" high="58">0101</pattern>
+</bitset>
+
+<bitset name="dcflu" extends="#instruction-cat7-data">
+ <doc>
+ Data (Cache?) Flush
+ </doc>
+ <pattern low="55" high="58">0110</pattern>
+</bitset>
+
</isa> \ No newline at end of file