You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There's no way to mark a variable as being killed, i.e. that the value will never be read from again; this means the code generator always has to write them back to memory when the register gets flushed even if it's a waste.
The easy fix (of adding a KILL iop for doing this) is problematic because some iops flush all registers --- consider BEQ.
But annotating the iops themselves is hard because temporaries only get freed after the iop is emitted.
The text was updated successfully, but these errors were encountered:
This is partially implemented; KILL iops are ignored for comparisons and branches. It's had a small effect on code size only, which was a bit disappointing.
I think BEQ and others can avoid full cache flush if comparison insn itself is non-destructive; I've experimental code that uses low bit of label ID to mark label as 'safe' to branch to without flush.
There's no way to mark a variable as being killed, i.e. that the value will never be read from again; this means the code generator always has to write them back to memory when the register gets flushed even if it's a waste.
The easy fix (of adding a KILL iop for doing this) is problematic because some iops flush all registers --- consider BEQ.
But annotating the iops themselves is hard because temporaries only get freed after the iop is emitted.
The text was updated successfully, but these errors were encountered: