mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 22:30:12 +01:00
ir3: Add mova .u bit
Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38450>
This commit is contained in:
parent
4bc01d11b0
commit
d146a31ee1
3 changed files with 15 additions and 5 deletions
|
|
@ -705,14 +705,17 @@ mova_src: src_reg_or_const_or_rel
|
||||||
| immediate_cat1
|
| immediate_cat1
|
||||||
| src_reg_flags immediate_cat1
|
| src_reg_flags immediate_cat1
|
||||||
|
|
||||||
cat1_mova1: T_OP_MOVA1 T_A1 ',' {
|
cat1_mova_flags:
|
||||||
|
| '.' 'u' { iflags.flags |= IR3_INSTR_U; }
|
||||||
|
|
||||||
|
cat1_mova1: T_OP_MOVA1 cat1_mova_flags T_A1 ',' {
|
||||||
new_instr(OPC_MOV);
|
new_instr(OPC_MOV);
|
||||||
instr->cat1.src_type = TYPE_U16;
|
instr->cat1.src_type = TYPE_U16;
|
||||||
instr->cat1.dst_type = TYPE_U16;
|
instr->cat1.dst_type = TYPE_U16;
|
||||||
new_dst((61 << 3) + 2, IR3_REG_HALF);
|
new_dst((61 << 3) + 2, IR3_REG_HALF);
|
||||||
} mova_src
|
} mova_src
|
||||||
|
|
||||||
cat1_mova: T_OP_MOVA T_A0 ',' {
|
cat1_mova: T_OP_MOVA cat1_mova_flags T_A0 ',' {
|
||||||
new_instr(OPC_MOV);
|
new_instr(OPC_MOV);
|
||||||
instr->cat1.src_type = TYPE_S16;
|
instr->cat1.src_type = TYPE_S16;
|
||||||
instr->cat1.dst_type = TYPE_S16;
|
instr->cat1.dst_type = TYPE_S16;
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,9 @@ static const struct test {
|
||||||
INSTR_6XX(20400006_00003800, "mov.f16f16 hr1.z, h(0.500000)"),
|
INSTR_6XX(20400006_00003800, "mov.f16f16 hr1.z, h(0.500000)"),
|
||||||
INSTR_6XX(204880f5_00000000, "mova1 a1.x, 0"),
|
INSTR_6XX(204880f5_00000000, "mova1 a1.x, 0"),
|
||||||
|
|
||||||
|
INSTR_6XX(201108f4_00000000, "mova.u a0.x, (r)hr0.x"),
|
||||||
|
INSTR_6XX(204888f5_00000000, "mova1.u a1.x, 0"),
|
||||||
|
|
||||||
INSTR_7XX(2004c005_00000405, "cov.f32u32 r1.y, (last)r1.y"),
|
INSTR_7XX(2004c005_00000405, "cov.f32u32 r1.y, (last)r1.y"),
|
||||||
|
|
||||||
INSTR_7XX(200440c0_ae800004, "movs.f32f32 r48.x, r1.x, 93"),
|
INSTR_7XX(200440c0_ae800004, "movs.f32f32 r48.x, r1.x, 93"),
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,8 @@ SOFTWARE.
|
||||||
<pattern low="61" high="63">001</pattern> <!-- cat1 -->
|
<pattern low="61" high="63">001</pattern> <!-- cat1 -->
|
||||||
<encode>
|
<encode>
|
||||||
<map name="SRC">src->srcs[0]</map>
|
<map name="SRC">src->srcs[0]</map>
|
||||||
<map name="SRC_R">!!(src->srcs[0]->flags & IR3_REG_R)</map>
|
<!-- SRC_R doubles as the .u bit for mova/mova1: -->
|
||||||
|
<map name="SRC_R">!!(src->srcs[0]->flags & IR3_REG_R) || !!(src->flags & IR3_INSTR_U)</map>
|
||||||
<map name="UL">!!(src->flags & IR3_INSTR_UL)</map>
|
<map name="UL">!!(src->flags & IR3_INSTR_UL)</map>
|
||||||
<map name="DST_REL">!!(src->dsts[0]->flags & IR3_REG_RELATIV)</map>
|
<map name="DST_REL">!!(src->dsts[0]->flags & IR3_REG_RELATIV)</map>
|
||||||
<map name="ROUND">src->cat1.round</map>
|
<map name="ROUND">src->cat1.round</map>
|
||||||
|
|
@ -119,7 +120,7 @@ SOFTWARE.
|
||||||
({DST} == 0xf4 /* a0.x */) && ({SRC_TYPE} == 4 /* s16 */) && ({DST_TYPE} == 4)
|
({DST} == 0xf4 /* a0.x */) && ({SRC_TYPE} == 4 /* s16 */) && ({DST_TYPE} == 4)
|
||||||
</expr>
|
</expr>
|
||||||
<display>
|
<display>
|
||||||
{SY}{SS}{JP}{REPEAT}{UL}mova {ROUND}{DM}a0.x, {SRC_R}{SRC}
|
{SY}{SS}{JP}{REPEAT}{UL}mova{U} {ROUND}{DM}a0.x, {SRC}
|
||||||
</display>
|
</display>
|
||||||
<assert low="32" high="39">11110100</assert> <!-- DST==a0.x -->
|
<assert low="32" high="39">11110100</assert> <!-- DST==a0.x -->
|
||||||
<assert low="46" high="48">100</assert> <!-- DST_TYPE==s16 -->
|
<assert low="46" high="48">100</assert> <!-- DST_TYPE==s16 -->
|
||||||
|
|
@ -130,7 +131,7 @@ SOFTWARE.
|
||||||
({DST} == 0xf5 /* a0.y */) && ({SRC_TYPE} == 2 /* u16 */) && ({DST_TYPE} == 2)
|
({DST} == 0xf5 /* a0.y */) && ({SRC_TYPE} == 2 /* u16 */) && ({DST_TYPE} == 2)
|
||||||
</expr>
|
</expr>
|
||||||
<display>
|
<display>
|
||||||
{SY}{SS}{JP}{REPEAT}{UL}mova1 {ROUND}{DM}a1.x, {SRC_R}{SRC}
|
{SY}{SS}{JP}{REPEAT}{UL}mova1{U} {ROUND}{DM}a1.x, {SRC}
|
||||||
</display>
|
</display>
|
||||||
<assert low="32" high="39">11110101</assert> <!-- DST==a0.y -->
|
<assert low="32" high="39">11110101</assert> <!-- DST==a0.y -->
|
||||||
<assert low="46" high="48">010</assert> <!-- DST_TYPE==u16 -->
|
<assert low="46" high="48">010</assert> <!-- DST_TYPE==u16 -->
|
||||||
|
|
@ -147,6 +148,9 @@ SOFTWARE.
|
||||||
<display>
|
<display>
|
||||||
{SY}{SS}{JP}{REPEAT}{UL}mov.{SRC_TYPE}{DST_TYPE} {ROUND}{DM}{DST_HALF}{DST}, {SRC}
|
{SY}{SS}{JP}{REPEAT}{UL}mov.{SRC_TYPE}{DST_TYPE} {ROUND}{DM}{DST_HALF}{DST}, {SRC}
|
||||||
</display>
|
</display>
|
||||||
|
<derived name="U" type="bool" display=".u">
|
||||||
|
<expr>{SRC_R}</expr>
|
||||||
|
</derived>
|
||||||
<field name="DST" low="32" high="39" type="#cat1-dst">
|
<field name="DST" low="32" high="39" type="#cat1-dst">
|
||||||
<param name="DST_REL"/>
|
<param name="DST_REL"/>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue