cartesi / machine-emulator

The off-chain implementation of the Cartesi Machine
GNU Lesser General Public License v3.0
58 stars 32 forks source link

feat: optimize out state accessor initialization in uarch interpret #223

Closed edubart closed 3 months ago

edubart commented 3 months ago

This PR should cut about 6000 uarch cycles when interpreting every big instruction.

sfence.vma  3250 ucycles
wfi          257 ucycles
bgeu (taken  265 ucycles
addi         259 ucycles
addiw        259 ucycles
slti         259 ucycles
sraiw        266 ucycles
add          268 ucycles
addw         268 ucycles
sub          268 ucycles
subw         268 ucycles
sraw         271 ucycles
or           251 ucycles
and          255 ucycles
lb           280 ucycles
lbu          271 ucycles
fmul.s       614 ucycles
fdiv.s      1024 ucycles
fsgnj.s      317 ucycles
fsgnjn.s     314 ucycles
fsgnjx.s     309 ucycles
fle.s        328 ucycles
fsqrt.s     2094 ucycles
fclass.s     317 ucycles
fcvt.w.s     383 ucycles
fmul.d       810 ucycles
fdiv.d      7110 ucycles
fsgnj.d      304 ucycles
fsgnjn.d     301 ucycles
fle.d        321 ucycles
fsqrt.d    36698 ucycles
fcvt.s.d     438 ucycles
fcvt.d.s     349 ucycles
fclass.d     313 ucycles
fence.i      246 ucycles