etnaviv: isa: Rework modeling of left shift for store/load

This makes is easier for the parser to process.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28929>
This commit is contained in:
Christian Gmeiner 2024-04-22 15:14:50 +02:00 committed by Marge Bot
parent f8c38ec648
commit cb69595037

View file

@ -19,11 +19,7 @@ SPDX-License-Identifier: MIT
</template>
<template name="INSTR_LOAD_STORE">
{NAME}{COND}{SKPHP}{DENORM}{LOCAL}{TYPE}{PMODE}
</template>
<template name="INSTR_LOAD_STORE_WITH_LEFT_SHIFT">
{NAME}{COND}{SKPHP}{DENORM}{LOCAL}.ls{LEFT_SHIFT}{TYPE}{PMODE}
{NAME}{COND}{SKPHP}{DENORM}{LOCAL}{TYPE}{LEFT_SHIFT}{PMODE}
</template>
<enum name="#cond">
@ -841,9 +837,25 @@ SPDX-License-Identifier: MIT
<field name="SRC1_RGROUP" low="96" high="98" type="#reg_group"/>
</bitset>
<expr name="#instruction-has-left-shift">
({LEFT_SHIFT} != 0)
</expr>
<bitset name="#left-shift" size="2">
<field name="LEFT_SHIFT" low="0" high="1" type="uint"/>
<override>
<expr>
{LEFT_SHIFT} != 0
</expr>
<display>
.ls{LEFT_SHIFT}
</display>
</override>
<display>
</display>
<encode type="unsigned int">
<map name="LEFT_SHIFT">src</map>
</encode>
</bitset>
<bitset name="#instruction-load" extends="#instruction">
<field name="DST_USE" pos="12" type="bool"/>
@ -855,7 +867,7 @@ SPDX-License-Identifier: MIT
<pattern low="27" high="31">00000</pattern> <!-- TEX_ID -->
<pattern low="32" high="33">00</pattern> <!-- RMODE -->
<field name="PMODE" pos="34" type="bool_inv" display=".pack"/>
<field name="LEFT_SHIFT" low="35" high="36" type="uint"/>
<field name="LEFT_SHIFT" low="35" high="36" type="#left-shift"/>
<pattern low="37" high="38">00</pattern>
<field name="SKPHP" pos="39" type="bool" display=".skpHp"/>
<field name="LOCAL" pos="40" type="bool" display=".local"/>
@ -875,12 +887,6 @@ SPDX-License-Identifier: MIT
{INSTR_LOAD_STORE} {DST:align=18}, {SRC0}, {SRC1}, void
</display>
<override expr="#instruction-has-left-shift">
<display>
{INSTR_LOAD_STORE_WITH_LEFT_SHIFT} {DST:align=18}, {SRC0}, {SRC1}, void
</display>
</override>
<!-- SRC0 -->
<pattern pos="43">1</pattern> <!-- SRC0_USE -->
<field name="SRC0_REG" low="44" high="52" type="uint"/>
@ -921,7 +927,7 @@ SPDX-License-Identifier: MIT
<pattern low="27" high="31">xxxxx</pattern>
<pattern low="32" high="33">xx</pattern>
<field name="PMODE" pos="34" type="bool_inv" display=".pack"/>
<field name="LEFT_SHIFT" low="35" high="36" type="uint"/>
<field name="LEFT_SHIFT" low="35" high="36" type="#left-shift"/>
<pattern low="37" high="38">00</pattern>
<field name="SKPHP" pos="39" type="bool" display=".skpHp"/>
<field name="LOCAL" pos="40" type="bool" display=".local"/>
@ -941,12 +947,6 @@ SPDX-License-Identifier: MIT
{INSTR_LOAD_STORE} {:align=18}mem{COMPS}, {SRC0}, {SRC1}, {SRC2}
</display>
<override expr="#instruction-has-left-shift">
<display>
{INSTR_LOAD_STORE_WITH_LEFT_SHIFT} {:align=18}mem{COMPS}, {SRC0}, {SRC1}, {SRC2}
</display>
</override>
<!-- SRC0 -->
<pattern pos="43">1</pattern> <!-- SRC0_USE -->
<field name="SRC0_REG" low="44" high="52" type="uint"/>