mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
nouveau/mme: Add isaspec XML for the Turing+ MME
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
parent
af961f9aec
commit
01d0c78386
1 changed files with 180 additions and 0 deletions
180
src/nouveau/mme/mme_tu104.xml
Normal file
180
src/nouveau/mme/mme_tu104.xml
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright © 2022 Collabor, Ltd.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
-->
|
||||
|
||||
<isa>
|
||||
<enum name="#pred">
|
||||
<value val="0" display="UUUU"/>
|
||||
<value val="1" display="TTTT"/>
|
||||
<value val="2" display="FFFF"/>
|
||||
<value val="3" display="TTUU"/>
|
||||
<value val="4" display="FFUU"/>
|
||||
<value val="5" display="TFUU"/>
|
||||
<value val="6" display="TUUU"/>
|
||||
<value val="7" display="FUUU"/>
|
||||
<value val="8" display="UUTT"/>
|
||||
<value val="9" display="UUTF"/>
|
||||
<value val="10" display="UUTU"/>
|
||||
<value val="11" display="UUFT"/>
|
||||
<value val="12" display="UUFF"/>
|
||||
<value val="13" display="UUFU"/>
|
||||
<value val="14" display="UUUT"/>
|
||||
<value val="15" display="UUUF"/>
|
||||
</enum>
|
||||
|
||||
<enum name="#reg">
|
||||
<value val="0" display="r0"/>
|
||||
<value val="1" display="r1"/>
|
||||
<value val="2" display="r2"/>
|
||||
<value val="3" display="r3"/>
|
||||
<value val="4" display="r4"/>
|
||||
<value val="5" display="r5"/>
|
||||
<value val="6" display="r6"/>
|
||||
<value val="7" display="r7"/>
|
||||
<value val="8" display="r8"/>
|
||||
<value val="9" display="r9"/>
|
||||
<value val="10" display="r10"/>
|
||||
<value val="11" display="r11"/>
|
||||
<value val="12" display="r12"/>
|
||||
<value val="13" display="r13"/>
|
||||
<value val="14" display="r14"/>
|
||||
<value val="15" display="r15"/>
|
||||
<value val="16" display="r16"/>
|
||||
<value val="17" display="r17"/>
|
||||
<value val="18" display="r18"/>
|
||||
<value val="19" display="r19"/>
|
||||
<value val="20" display="r20"/>
|
||||
<value val="21" display="r21"/>
|
||||
<value val="22" display="r22"/>
|
||||
<value val="23" display="r23"/>
|
||||
<value val="24" display="zero"/>
|
||||
<value val="25" display="imm"/>
|
||||
<value val="26" display="immpair"/>
|
||||
<value val="27" display="imm32"/>
|
||||
<value val="28" display="load0"/>
|
||||
<value val="29" display="load1"/>
|
||||
</enum>
|
||||
|
||||
<enum name="#alu-op">
|
||||
<value val="0" display="ADD"/>
|
||||
<value val="1" display="ADDC"/>
|
||||
<value val="2" display="SUB"/>
|
||||
<value val="3" display="SUBB"/>
|
||||
<value val="4" display="MUL"/>
|
||||
<value val="5" display="MULH"/>
|
||||
<value val="6" display="MULU"/>
|
||||
<value val="7" display="EXTENDED"/>
|
||||
<value val="8" display="CLZ"/>
|
||||
<value val="9" display="SLL"/>
|
||||
<value val="10" display="SRL"/>
|
||||
<value val="11" display="SRA"/>
|
||||
<value val="12" display="AND"/>
|
||||
<value val="13" display="NAND"/>
|
||||
<value val="14" display="OR"/>
|
||||
<value val="15" display="XOR"/>
|
||||
<value val="16" display="MERGE"/>
|
||||
<value val="17" display="SLT"/>
|
||||
<value val="18" display="SLTU"/>
|
||||
<value val="19" display="SLE"/>
|
||||
<value val="20" display="SLEU"/>
|
||||
<value val="21" display="SEQ"/>
|
||||
<value val="22" display="STATE"/>
|
||||
<value val="23" display="LOOP"/>
|
||||
<value val="24" display="JAL"/>
|
||||
<value val="25" display="BLT"/>
|
||||
<value val="26" display="BLTU"/>
|
||||
<value val="27" display="BLE"/>
|
||||
<value val="28" display="BLEU"/>
|
||||
<value val="29" display="BEQ"/>
|
||||
<value val="30" display="DREAD"/>
|
||||
<value val="31" display="DWRITE"/>
|
||||
</enum>
|
||||
|
||||
<enum name="#out-op">
|
||||
<value val="0" display="none"/>
|
||||
<value val="1" display="alu0"/>
|
||||
<value val="2" display="alu1"/>
|
||||
<value val="3" display="load0"/>
|
||||
<value val="4" display="load1"/>
|
||||
<value val="5" display="imm0"/>
|
||||
<value val="6" display="imm1"/>
|
||||
<!-- val="7" display="reserved" -->
|
||||
<value val="8" display="immhigh0"/>
|
||||
<value val="9" display="immhigh1"/>
|
||||
<value val="10" display="imm32"/>
|
||||
</enum>
|
||||
|
||||
<bitset name="#alu" size="20">
|
||||
<display>
|
||||
{DST} = {OP} {SRC0} {SRC1}
|
||||
</display>
|
||||
<field name="OP" low="0" high="4" type="#alu-op"/>
|
||||
<field name="DST" low="5" high="9" type="#reg"/>
|
||||
<field name="SRC0" low="10" high="14" type="#reg"/>
|
||||
<field name="SRC1" low="15" high="19" type="#reg"/>
|
||||
<encode type="struct mme_tu104_alu">
|
||||
<map name="DST">src.dst</map>
|
||||
<map name="OP">src.op</map>
|
||||
<map name="SRC0">src.src[0]</map>
|
||||
<map name="SRC1">src.src[1]</map>
|
||||
</encode>
|
||||
</bitset>
|
||||
|
||||
<bitset name="#out" size="7">
|
||||
<display>
|
||||
{EMIT} -> {MTHD}
|
||||
</display>
|
||||
<field name="MTHD" low="0" high="2" type="#out-op"/>
|
||||
<field name="EMIT" low="3" high="6" type="#out-op"/>
|
||||
<encode type="struct mme_tu104_out">
|
||||
<map name="MTHD">src.mthd</map>
|
||||
<map name="EMIT">src.emit</map>
|
||||
</encode>
|
||||
</bitset>
|
||||
|
||||
<bitset name="#instruction" size="96">
|
||||
<display>
|
||||
{END_NEXT}({PRED} {PRED_MODE}) imm=[{IMM0}, {IMM1}], {ALU0}, {ALU1}, {OUT0}, {OUT1}
|
||||
</display>
|
||||
<field name="END_NEXT" pos="0" type="bool" display="(end-next)"/>
|
||||
<field name="PRED_MODE" low="1" high="4" type="#pred"/>
|
||||
<field name="PRED" low="5" high="9" type="#reg"/>
|
||||
<field name="ALU0" low="10" high="29" type="#alu"/>
|
||||
<field name="IMM0" low="30" high="45" type="uint"/>
|
||||
<field name="ALU1" low="46" high="65" type="#alu"/>
|
||||
<field name="IMM1" low="66" high="81" type="uint"/>
|
||||
<field name="OUT0" low="82" high="88" type="#out"/>
|
||||
<field name="OUT1" low="89" high="95" type="#out"/>
|
||||
<encode type="struct mme_tu104_inst">
|
||||
<map name="END_NEXT">src.end_next</map>
|
||||
<map name="PRED_MODE">src.pred_mode</map>
|
||||
<map name="PRED">src.pred</map>
|
||||
<map name="ALU0">src.alu[0]</map>
|
||||
<map name="IMM0">src.imm[0]</map>
|
||||
<map name="ALU1">src.alu[1]</map>
|
||||
<map name="IMM1">src.imm[1]</map>
|
||||
<map name="OUT0">src.out[0]</map>
|
||||
<map name="OUT1">src.out[1]</map>
|
||||
</encode>
|
||||
</bitset>
|
||||
</isa>
|
||||
Loading…
Add table
Reference in a new issue