Enum regalloc2::OperandPos
source · pub enum OperandPos {
Early,
Late,
}
Expand description
The “position” of the operand: where it has its read/write effects. These are positions “in” the instruction, and “early” and “late” are relative to the instruction’s main effect or computation. In other words, the allocator assumes that the instruction (i) performs all reads and writes of “early” operands, (ii) does its work, and (iii) performs all reads and writes of its “late” operands.
A “write” (def) at “early” or a “read” (use) at “late” may be
slightly nonsensical, given the above, if the read is necessary
for the computation or the write is a result of it. A way to think
of it is that the value (even if a result of execution) could
have been read or written at the given location without causing
any register-usage conflicts. In other words, these write-early or
use-late operands ensure that the particular allocations are valid
for longer than usual and that a register is not reused between
the use (normally complete at “Early”) and the def (normally
starting at “Late”). See Operand
for more.
Variants§
Trait Implementations§
source§impl Clone for OperandPos
impl Clone for OperandPos
source§fn clone(&self) -> OperandPos
fn clone(&self) -> OperandPos
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for OperandPos
impl Debug for OperandPos
source§impl PartialEq<OperandPos> for OperandPos
impl PartialEq<OperandPos> for OperandPos
source§fn eq(&self, other: &OperandPos) -> bool
fn eq(&self, other: &OperandPos) -> bool
self
and other
values to be equal, and is used
by ==
.