pub trait RegisterVisitor<R: Registers> {
Show 18 methods
// Required methods
fn read_gpr(&mut self, reg: &mut R::ReadGpr);
fn read_write_gpr(&mut self, reg: &mut R::ReadWriteGpr);
fn write_gpr(&mut self, reg: &mut R::WriteGpr);
fn fixed_read_gpr(&mut self, reg: &mut R::ReadGpr, enc: u8);
fn fixed_read_write_gpr(&mut self, reg: &mut R::ReadWriteGpr, enc: u8);
fn fixed_write_gpr(&mut self, reg: &mut R::WriteGpr, enc: u8);
fn read_xmm(&mut self, reg: &mut R::ReadXmm);
fn read_write_xmm(&mut self, reg: &mut R::ReadWriteXmm);
fn write_xmm(&mut self, reg: &mut R::WriteXmm);
fn fixed_read_xmm(&mut self, reg: &mut R::ReadXmm, enc: u8);
fn fixed_read_write_xmm(&mut self, reg: &mut R::ReadWriteXmm, enc: u8);
fn fixed_write_xmm(&mut self, reg: &mut R::WriteXmm, enc: u8);
// Provided methods
fn read_amode(&mut self, amode: &mut Amode<R::ReadGpr>) { ... }
fn read_write_gpr_mem(
&mut self,
op: &mut GprMem<R::ReadWriteGpr, R::ReadGpr>,
) { ... }
fn write_gpr_mem(&mut self, op: &mut GprMem<R::WriteGpr, R::ReadGpr>) { ... }
fn read_gpr_mem(&mut self, op: &mut GprMem<R::ReadGpr, R::ReadGpr>) { ... }
fn read_xmm_mem(&mut self, op: &mut XmmMem<R::ReadXmm, R::ReadGpr>) { ... }
fn write_xmm_mem(&mut self, op: &mut XmmMem<R::WriteXmm, R::ReadGpr>) { ... }
}Expand description
Describe a visitor for the register operands of an instruction.
Due to how Cranelift’s register allocation works, we allow the visitor to
modify the register operands in place. This allows Cranelift to convert
virtual registers ([128..N)) to physical registers ([0..16)) without
re-allocating the entire instruction object.
Required Methods§
Sourcefn read_write_gpr(&mut self, reg: &mut R::ReadWriteGpr)
fn read_write_gpr(&mut self, reg: &mut R::ReadWriteGpr)
Visit a read-write register.
Sourcefn fixed_read_gpr(&mut self, reg: &mut R::ReadGpr, enc: u8)
fn fixed_read_gpr(&mut self, reg: &mut R::ReadGpr, enc: u8)
Visit a read-only fixed register; this register can be modified in-place
but must emit as the hardware encoding enc.
Sourcefn fixed_read_write_gpr(&mut self, reg: &mut R::ReadWriteGpr, enc: u8)
fn fixed_read_write_gpr(&mut self, reg: &mut R::ReadWriteGpr, enc: u8)
Visit a read-write fixed register; this register can be modified
in-place but must emit as the hardware encoding enc.
Sourcefn fixed_write_gpr(&mut self, reg: &mut R::WriteGpr, enc: u8)
fn fixed_write_gpr(&mut self, reg: &mut R::WriteGpr, enc: u8)
Visit a write-only fixed register; this register can be modified
in-place but must emit as the hardware encoding enc.
Sourcefn read_write_xmm(&mut self, reg: &mut R::ReadWriteXmm)
fn read_write_xmm(&mut self, reg: &mut R::ReadWriteXmm)
Visit a read-write SSE register.
Sourcefn fixed_read_xmm(&mut self, reg: &mut R::ReadXmm, enc: u8)
fn fixed_read_xmm(&mut self, reg: &mut R::ReadXmm, enc: u8)
Visit a read-only fixed SSE register; this register can be modified
in-place but must emit as the hardware encoding enc.
Sourcefn fixed_read_write_xmm(&mut self, reg: &mut R::ReadWriteXmm, enc: u8)
fn fixed_read_write_xmm(&mut self, reg: &mut R::ReadWriteXmm, enc: u8)
Visit a read-write fixed SSE register; this register can be modified
in-place but must emit as the hardware encoding enc.
Sourcefn fixed_write_xmm(&mut self, reg: &mut R::WriteXmm, enc: u8)
fn fixed_write_xmm(&mut self, reg: &mut R::WriteXmm, enc: u8)
Visit a read-only fixed SSE register; this register can be modified
in-place but must emit as the hardware encoding enc.
Provided Methods§
Sourcefn read_amode(&mut self, amode: &mut Amode<R::ReadGpr>)
fn read_amode(&mut self, amode: &mut Amode<R::ReadGpr>)
Visit the registers in an Amode.
This is helpful for generated code: it allows capturing the R::ReadGpr
type (which an Amode method cannot) and simplifies the code to be
generated.
Sourcefn read_write_gpr_mem(&mut self, op: &mut GprMem<R::ReadWriteGpr, R::ReadGpr>)
fn read_write_gpr_mem(&mut self, op: &mut GprMem<R::ReadWriteGpr, R::ReadGpr>)
Helper method to handle a read/write GprMem operand.
Sourcefn write_gpr_mem(&mut self, op: &mut GprMem<R::WriteGpr, R::ReadGpr>)
fn write_gpr_mem(&mut self, op: &mut GprMem<R::WriteGpr, R::ReadGpr>)
Helper method to handle a write GprMem operand.
Sourcefn read_gpr_mem(&mut self, op: &mut GprMem<R::ReadGpr, R::ReadGpr>)
fn read_gpr_mem(&mut self, op: &mut GprMem<R::ReadGpr, R::ReadGpr>)
Helper method to handle a read-only GprMem operand.