What do Z and F registrers stand for? How to use them?

Z registers are pseudo-registers used only briefly during code generation.

Their main purpose is to prevent allocation an X register for an SSA instruction when the corresponding BEAM instruction does not return a value. Allocating an X register that will not actually be used by the BEAM instruction could result in either unsafe code or code with more register shuffling because an X register seems to be occupied while it’s actually free.

I might also have used Z registers to transfer values between two consecutive SSA instructions that are combined into a single BEAM instruction.

2 Likes