RegisterVisitor

Trait RegisterVisitor 

Source
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§

Source

fn read_gpr(&mut self, reg: &mut R::ReadGpr)

Visit a read-only register.

Source

fn read_write_gpr(&mut self, reg: &mut R::ReadWriteGpr)

Visit a read-write register.

Source

fn write_gpr(&mut self, reg: &mut R::WriteGpr)

Visit a write-only register.

Source

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.

Source

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.

Source

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.

Source

fn read_xmm(&mut self, reg: &mut R::ReadXmm)

Visit a read-only SSE register.

Source

fn read_write_xmm(&mut self, reg: &mut R::ReadWriteXmm)

Visit a read-write SSE register.

Source

fn write_xmm(&mut self, reg: &mut R::WriteXmm)

Visit a write-only SSE register.

Source

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.

Source

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.

Source

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§

Source

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.

Source

fn read_write_gpr_mem(&mut self, op: &mut GprMem<R::ReadWriteGpr, R::ReadGpr>)

Helper method to handle a read/write GprMem operand.

Source

fn write_gpr_mem(&mut self, op: &mut GprMem<R::WriteGpr, R::ReadGpr>)

Helper method to handle a write GprMem operand.

Source

fn read_gpr_mem(&mut self, op: &mut GprMem<R::ReadGpr, R::ReadGpr>)

Helper method to handle a read-only GprMem operand.

Source

fn read_xmm_mem(&mut self, op: &mut XmmMem<R::ReadXmm, R::ReadGpr>)

Helper method to handle a read-only XmmMem operand.

Source

fn write_xmm_mem(&mut self, op: &mut XmmMem<R::WriteXmm, R::ReadGpr>)

Helper method to handle a write XmmMem operand.

Implementors§