Skip to main content

FOLDS

Static FOLDS 

Source
pub static FOLDS: &[Fold]
Expand description

The arithmetic a load can move into on this machine.

Every two-address integer operation the target has, at every width it has one, except the eight bit multiply the module documentation gives the reason for. Subtraction is the one that does not commute.

And then the comparisons, which are not arithmetic and fold the same way. What one writes is a byte rather than one of its sources, so the row reads the same and the instruction it names has a destination neither side has a claim on. The forty rows are ten conditions at four widths and each names two instructions, because which side the memory is is a condition of its own.

And then the same forty against a constant, which name one instruction each. The constant is on the instruction and cannot be anywhere else, so the register the load filled is the left hand side and there is no other arrangement to offer.