Open ben-marshall opened 5 years ago
The current encoding of the multi-precision and xc.mror instructions is very wasteful.
xc.mror
Current usage patterns are:
xc.madd.3 (a,b), c, d, a
xc.msub.3 (a,b), c, d, a
xc.mmul.3 (a,b), c, d, a
xc.macc.1 (a,b), a, b, c
Most of the time, a source and a destination register (or two) are the same.
Suggestions:
xc.madd.3
xc.msub.3
xc.mmul.3
rs3
xc.macc.1
rs1
rs2
rdm
For xc.mror:
The current encoding of the multi-precision and
xc.mror
instructions is very wasteful.Current usage patterns are:
xc.madd.3 (a,b), c, d, a
xc.msub.3 (a,b), c, d, a
xc.mmul.3 (a,b), c, d, a
xc.macc.1 (a,b), a, b, c
Most of the time, a source and a destination register (or two) are the same.
Suggestions:
xc.madd.3
,xc.msub.3
,xc.mmul.3
, make what is nowrs3
an implicit argument, which is always equal to the "low" destination register.xc.macc.1
, either:rs3
, makers1
a multi-register address and addrs2
to the catenation ofrs1
registers, placing the result inrdm
.rdm
an implicit source register pair.For
xc.mror
:rs1
a multi-source register.rs2
the rotate ammount.