pub struct MachineARM64 {
assembler: VecAssembler<Aarch64Relocation>,
used_gprs: FixedBitSet,
used_simd: FixedBitSet,
trap_table: TrapTable,
instructions_address_map: Vec<InstructionAddressMap>,
src_loc: u32,
pushed: bool,
unwind_ops: Vec<(usize, UnwindOps<GPR, NEON>)>,
has_neon: bool,
}Fields§
§assembler: VecAssembler<Aarch64Relocation>§used_gprs: FixedBitSet§used_simd: FixedBitSet§trap_table: TrapTable§instructions_address_map: Vec<InstructionAddressMap>Map from byte offset into wasm function to range of native instructions.
src_loc: u32The source location for the current operator.
pushed: boolis last push on a 8byte multiple or 16bytes?
unwind_ops: Vec<(usize, UnwindOps<GPR, NEON>)>Vector of unwind operations with offset
has_neon: boolA boolean flag signaling if this machine supports NEON.
Implementations§
Source§impl MachineARM64
impl MachineARM64
pub fn new(target: Option<Target>) -> Self
fn compatible_imm(&self, imm: i64, ty: ImmType) -> bool
fn location_to_reg( &mut self, sz: Size, src: Location<GPR, NEON>, temps: &mut Vec<GPR>, allow_imm: ImmType, read_val: bool, wanted: Option<GPR>, ) -> Result<Location<GPR, NEON>, CompileError>
fn location_to_neon( &mut self, sz: Size, src: Location<GPR, NEON>, temps: &mut Vec<NEON>, allow_imm: ImmType, read_val: bool, ) -> Result<Location<GPR, NEON>, CompileError>
fn emit_relaxed_binop( &mut self, op: fn(&mut VecAssembler<Aarch64Relocation>, Size, Location<GPR, NEON>, Location<GPR, NEON>) -> Result<(), CompileError>, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, putback: bool, ) -> Result<(), CompileError>
fn emit_relaxed_binop_neon( &mut self, op: fn(&mut VecAssembler<Aarch64Relocation>, Size, Location<GPR, NEON>, Location<GPR, NEON>) -> Result<(), CompileError>, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, putback: bool, ) -> Result<(), CompileError>
fn emit_relaxed_binop3( &mut self, op: fn(&mut VecAssembler<Aarch64Relocation>, Size, Location<GPR, NEON>, Location<GPR, NEON>, Location<GPR, NEON>) -> Result<(), CompileError>, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, allow_imm: ImmType, ) -> Result<(), CompileError>
fn emit_relaxed_binop3_neon( &mut self, op: fn(&mut VecAssembler<Aarch64Relocation>, Size, Location<GPR, NEON>, Location<GPR, NEON>, Location<GPR, NEON>) -> Result<(), CompileError>, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, allow_imm: ImmType, ) -> Result<(), CompileError>
fn emit_relaxed_ldr64( &mut self, sz: Size, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_ldr32( &mut self, sz: Size, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_ldr32s( &mut self, sz: Size, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_ldr16( &mut self, sz: Size, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_ldr16s( &mut self, sz: Size, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_ldr8( &mut self, sz: Size, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_ldr8s( &mut self, sz: Size, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_str64( &mut self, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_str32( &mut self, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_str16( &mut self, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_relaxed_str8( &mut self, dst: Location<GPR, NEON>, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
Sourcefn emit_cmpop_i64_dynamic_b(
&mut self,
c: Condition,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_cmpop_i64_dynamic_b( &mut self, c: Condition, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
I64 comparison with.
Sourcefn emit_cmpop_i32_dynamic_b(
&mut self,
c: Condition,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_cmpop_i32_dynamic_b( &mut self, c: Condition, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
I32 comparison with.
fn memory_op<F: FnOnce(&mut Self, GPR) -> Result<(), CompileError>>( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, check_alignment: bool, value_size: usize, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, cb: F, ) -> Result<(), CompileError>
fn offset_is_ok(&self, size: Size, offset: i32) -> bool
fn emit_push( &mut self, sz: Size, src: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_double_push( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_pop( &mut self, sz: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn emit_double_pop( &mut self, sz: Size, dst1: Location<GPR, NEON>, dst2: Location<GPR, NEON>, ) -> Result<(), CompileError>
fn set_default_nan(&mut self, temps: &mut Vec<GPR>) -> Result<GPR, CompileError>
fn set_trap_enabled( &mut self, temps: &mut Vec<GPR>, ) -> Result<GPR, CompileError>
fn restore_fpcr(&mut self, old_fpcr: GPR) -> Result<(), CompileError>
fn reset_exception_fpsr(&mut self) -> Result<(), CompileError>
fn read_fpsr(&mut self) -> Result<GPR, CompileError>
fn trap_float_conversion_errors( &mut self, old_fpcr: GPR, sz: Size, f: Location<GPR, NEON>, temps: &mut Vec<GPR>, ) -> Result<(), CompileError>
fn used_gprs_contains(&self, r: &GPR) -> bool
fn used_simd_contains(&self, r: &NEON) -> bool
fn used_gprs_insert(&mut self, r: GPR)
fn used_simd_insert(&mut self, r: NEON)
fn used_gprs_remove(&mut self, r: &GPR) -> bool
fn used_simd_remove(&mut self, r: &NEON) -> bool
fn emit_unwind_op(&mut self, op: UnwindOps<GPR, NEON>)
fn emit_illegal_op_internal( &mut self, trap: TrapCode, ) -> Result<(), CompileError>
Trait Implementations§
Source§impl Machine for MachineARM64
impl Machine for MachineARM64
type GPR = GPR
type SIMD = NEON
Source§fn assembler_get_offset(&self) -> AssemblyOffset
fn assembler_get_offset(&self) -> AssemblyOffset
Get current assembler offset
Source§fn get_vmctx_reg(&self) -> GPR
fn get_vmctx_reg(&self) -> GPR
Get the GPR that hold vmctx
Source§fn get_used_gprs(&self) -> Vec<GPR>
fn get_used_gprs(&self) -> Vec<GPR>
Get all used GPR
Source§fn get_used_simd(&self) -> Vec<NEON>
fn get_used_simd(&self) -> Vec<NEON>
Get all used SIMD regs
Source§fn pick_gpr(&self) -> Option<GPR>
fn pick_gpr(&self) -> Option<GPR>
Picks an unused general purpose register for local/stack/argument use. Read more
Source§fn pick_temp_gpr(&self) -> Option<GPR>
fn pick_temp_gpr(&self) -> Option<GPR>
Picks an unused general purpose register for internal temporary use. Read more
Source§fn acquire_temp_gpr(&mut self) -> Option<GPR>
fn acquire_temp_gpr(&mut self) -> Option<GPR>
Picks an unused general purpose register and mark it as used
Source§fn release_gpr(&mut self, gpr: GPR)
fn release_gpr(&mut self, gpr: GPR)
Releases a temporary GPR.
Source§fn reserve_unused_temp_gpr(&mut self, gpr: GPR) -> GPR
fn reserve_unused_temp_gpr(&mut self, gpr: GPR) -> GPR
Specify that a given register is in use.
Source§fn reserve_gpr(&mut self, gpr: GPR)
fn reserve_gpr(&mut self, gpr: GPR)
reserve a GPR
Source§fn push_used_gpr(&mut self, used_gprs: &[GPR]) -> Result<usize, CompileError>
fn push_used_gpr(&mut self, used_gprs: &[GPR]) -> Result<usize, CompileError>
Push used gpr to the stack. Return the bytes taken on the stack.
Source§fn pop_used_gpr(&mut self, used_gprs: &[GPR]) -> Result<(), CompileError>
fn pop_used_gpr(&mut self, used_gprs: &[GPR]) -> Result<(), CompileError>
Pop used gpr from the stack.
Source§fn pick_temp_simd(&self) -> Option<NEON>
fn pick_temp_simd(&self) -> Option<NEON>
Picks an unused SIMD register for internal temporary use. Read more
Source§fn acquire_temp_simd(&mut self) -> Option<NEON>
fn acquire_temp_simd(&mut self) -> Option<NEON>
Acquires a temporary XMM register.
Source§fn reserve_simd(&mut self, simd: NEON)
fn reserve_simd(&mut self, simd: NEON)
reserve a SIMD register
Source§fn release_simd(&mut self, simd: NEON)
fn release_simd(&mut self, simd: NEON)
Releases a temporary XMM register.
Source§fn push_used_simd(&mut self, used_neons: &[NEON]) -> Result<usize, CompileError>
fn push_used_simd(&mut self, used_neons: &[NEON]) -> Result<usize, CompileError>
Push used simd regs to the stack. Return bytes taken on the stack
Source§fn pop_used_simd(&mut self, used_neons: &[NEON]) -> Result<(), CompileError>
fn pop_used_simd(&mut self, used_neons: &[NEON]) -> Result<(), CompileError>
Pop used simd regs to the stack
Source§fn set_srcloc(&mut self, offset: u32)
fn set_srcloc(&mut self, offset: u32)
Set the source location of the Wasm to the given offset.
Source§fn mark_address_range_with_trap_code(
&mut self,
code: TrapCode,
begin: usize,
end: usize,
)
fn mark_address_range_with_trap_code( &mut self, code: TrapCode, begin: usize, end: usize, )
Marks each address in the code range emitted by
f with the trap code code.Source§fn mark_address_with_trap_code(&mut self, code: TrapCode)
fn mark_address_with_trap_code(&mut self, code: TrapCode)
Marks one address as trappable with trap code
code.Source§fn mark_instruction_with_trap_code(&mut self, code: TrapCode) -> usize
fn mark_instruction_with_trap_code(&mut self, code: TrapCode) -> usize
Marks the instruction as trappable with trap code
code. return “begin” offsetSource§fn mark_instruction_address_end(&mut self, begin: usize)
fn mark_instruction_address_end(&mut self, begin: usize)
Pushes the instruction to the address map, calculating the offset from a
provided beginning address.
Source§fn insert_stackoverflow(&mut self)
fn insert_stackoverflow(&mut self)
Insert a StackOverflow (at offset 0)
Source§fn collect_trap_information(&self) -> Vec<TrapInformation>
fn collect_trap_information(&self) -> Vec<TrapInformation>
Get all current TrapInformation
fn instructions_address_map(&self) -> Vec<InstructionAddressMap>
Source§fn round_stack_adjust(&self, value: usize) -> usize
fn round_stack_adjust(&self, value: usize) -> usize
Return a rounded stack adjustment value (must be multiple of 16bytes on ARM64 for example)
Source§fn local_on_stack(&mut self, stack_offset: i32) -> Location<GPR, NEON>
fn local_on_stack(&mut self, stack_offset: i32) -> Location<GPR, NEON>
Memory location for a local on the stack
Like Location::Memory(GPR::RBP, -(self.stack_offset.0 as i32)) for x86_64
Source§fn extend_stack(&mut self, delta_stack_offset: u32) -> Result<(), CompileError>
fn extend_stack(&mut self, delta_stack_offset: u32) -> Result<(), CompileError>
Allocate an extra space on the stack.
Source§fn truncate_stack(
&mut self,
delta_stack_offset: u32,
) -> Result<(), CompileError>
fn truncate_stack( &mut self, delta_stack_offset: u32, ) -> Result<(), CompileError>
Truncate stack space by the
delta_stack_offset.Source§fn move_location_for_native(
&mut self,
size: Size,
loc: Location<GPR, NEON>,
dest: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn move_location_for_native( &mut self, size: Size, loc: Location<GPR, NEON>, dest: Location<GPR, NEON>, ) -> Result<(), CompileError>
push a value on the stack for a native call
Source§fn zero_location(
&mut self,
size: Size,
location: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn zero_location( &mut self, size: Size, location: Location<GPR, NEON>, ) -> Result<(), CompileError>
Zero a location that is 32bits
Source§fn local_pointer(&self) -> GPR
fn local_pointer(&self) -> GPR
GPR Reg used for local pointer on the stack
Source§fn is_local_on_stack(&self, idx: usize) -> bool
fn is_local_on_stack(&self, idx: usize) -> bool
Determine whether a local should be allocated on the stack.
Source§fn get_local_location(
&self,
idx: usize,
callee_saved_regs_size: usize,
) -> Location<GPR, NEON>
fn get_local_location( &self, idx: usize, callee_saved_regs_size: usize, ) -> Location<GPR, NEON>
Determine a local’s location.
Source§fn move_local(
&mut self,
stack_offset: i32,
location: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn move_local( &mut self, stack_offset: i32, location: Location<GPR, NEON>, ) -> Result<(), CompileError>
Move a local to the stack
Like emit_mov(Size::S64, location, Location::Memory(GPR::RBP, -(self.stack_offset.0 as i32)));
Source§fn list_to_save(
&self,
_calling_convention: CallingConvention,
) -> Vec<Location<GPR, NEON>>
fn list_to_save( &self, _calling_convention: CallingConvention, ) -> Vec<Location<GPR, NEON>>
List of register to save, depending on the CallingConvention
Source§fn get_param_registers(
&self,
_calling_convention: CallingConvention,
) -> &'static [Self::GPR]
fn get_param_registers( &self, _calling_convention: CallingConvention, ) -> &'static [Self::GPR]
Get registers for first N function call parameters.
Source§fn get_param_location(
&self,
idx: usize,
sz: Size,
stack_args: &mut usize,
calling_convention: CallingConvention,
) -> Location<GPR, NEON>
fn get_param_location( &self, idx: usize, sz: Size, stack_args: &mut usize, calling_convention: CallingConvention, ) -> Location<GPR, NEON>
Get param location (to build a call, using SP for stack args)
Source§fn get_call_param_location(
&self,
return_slots: usize,
idx: usize,
sz: Size,
stack_args: &mut usize,
calling_convention: CallingConvention,
) -> Location<GPR, NEON>
fn get_call_param_location( &self, return_slots: usize, idx: usize, sz: Size, stack_args: &mut usize, calling_convention: CallingConvention, ) -> Location<GPR, NEON>
Get call param location (from a call, using FP for stack args)
Source§fn get_simple_param_location(
&self,
idx: usize,
calling_convention: CallingConvention,
) -> Self::GPR
fn get_simple_param_location( &self, idx: usize, calling_convention: CallingConvention, ) -> Self::GPR
Get param location (idx must point to an argument that is passed in a GPR).
Source§fn adjust_gpr_param_location(
&mut self,
_register: Self::GPR,
_size: Size,
) -> Result<(), CompileError>
fn adjust_gpr_param_location( &mut self, _register: Self::GPR, _size: Size, ) -> Result<(), CompileError>
Adjust GPR param for calling convention ABI purpose.
Source§fn get_return_value_location(
&self,
idx: usize,
stack_location: &mut usize,
_calling_convention: CallingConvention,
) -> AbstractLocation<Self::GPR, Self::SIMD>
fn get_return_value_location( &self, idx: usize, stack_location: &mut usize, _calling_convention: CallingConvention, ) -> AbstractLocation<Self::GPR, Self::SIMD>
Get return value location (to build a call, using SP for stack return values).
Source§fn get_call_return_value_location(
&self,
idx: usize,
_calling_convention: CallingConvention,
) -> AbstractLocation<Self::GPR, Self::SIMD>
fn get_call_return_value_location( &self, idx: usize, _calling_convention: CallingConvention, ) -> AbstractLocation<Self::GPR, Self::SIMD>
Get return value location (from a call, using FP for stack return values).
Source§fn move_location(
&mut self,
size: Size,
source: Location<GPR, NEON>,
dest: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn move_location( &mut self, size: Size, source: Location<GPR, NEON>, dest: Location<GPR, NEON>, ) -> Result<(), CompileError>
move a location to another
Source§fn move_location_extend(
&mut self,
size_val: Size,
signed: bool,
source: Location<GPR, NEON>,
size_op: Size,
dest: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn move_location_extend( &mut self, size_val: Size, signed: bool, source: Location<GPR, NEON>, size_op: Size, dest: Location<GPR, NEON>, ) -> Result<(), CompileError>
move a location to another, with zero or sign extension
Source§fn init_stack_loc(
&mut self,
init_stack_loc_cnt: u64,
last_stack_loc: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn init_stack_loc( &mut self, init_stack_loc_cnt: u64, last_stack_loc: Location<GPR, NEON>, ) -> Result<(), CompileError>
Init the stack loc counter
Source§fn restore_saved_area(
&mut self,
saved_area_offset: i32,
) -> Result<(), CompileError>
fn restore_saved_area( &mut self, saved_area_offset: i32, ) -> Result<(), CompileError>
Restore save_area
Source§fn pop_location(
&mut self,
location: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn pop_location( &mut self, location: Location<GPR, NEON>, ) -> Result<(), CompileError>
Pop a location
Source§fn assembler_finalize(
self,
assembly_comments: HashMap<usize, AssemblyComment>,
) -> Result<FinalizedAssembly, CompileError>
fn assembler_finalize( self, assembly_comments: HashMap<usize, AssemblyComment>, ) -> Result<FinalizedAssembly, CompileError>
Finalize the assembler
Source§fn get_offset(&self) -> AssemblyOffset
fn get_offset(&self) -> AssemblyOffset
get_offset of Assembler
Source§fn finalize_function(&mut self) -> Result<(), CompileError>
fn finalize_function(&mut self) -> Result<(), CompileError>
finalize a function
Source§fn emit_function_prolog(&mut self) -> Result<(), CompileError>
fn emit_function_prolog(&mut self) -> Result<(), CompileError>
emit native function prolog (depending on the calling Convention, like “PUSH RBP / MOV RSP, RBP”)
Source§fn emit_function_epilog(&mut self) -> Result<(), CompileError>
fn emit_function_epilog(&mut self) -> Result<(), CompileError>
emit native function epilog (depending on the calling Convention, like “MOV RBP, RSP / POP RBP”)
Source§fn emit_function_return_float(&mut self) -> Result<(), CompileError>
fn emit_function_return_float(&mut self) -> Result<(), CompileError>
Handle copy to SIMD register from ret value (if needed by the arch/calling convention)
Source§fn canonicalize_nan(
&mut self,
sz: Size,
input: Location<GPR, NEON>,
output: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn canonicalize_nan( &mut self, sz: Size, input: Location<GPR, NEON>, output: Location<GPR, NEON>, ) -> Result<(), CompileError>
Canonicalize a NaN (or panic if not supported)
Source§fn emit_illegal_op(&mut self, trap: TrapCode) -> Result<(), CompileError>
fn emit_illegal_op(&mut self, trap: TrapCode) -> Result<(), CompileError>
emit an Illegal Opcode, associated with a trapcode
Source§fn emit_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>
fn emit_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>
emit a label
Source§fn get_gpr_for_call(&self) -> GPR
fn get_gpr_for_call(&self) -> GPR
get the gpr used for call. like RAX on x86_64
Source§fn emit_call_register(&mut self, reg: GPR) -> Result<(), CompileError>
fn emit_call_register(&mut self, reg: GPR) -> Result<(), CompileError>
Emit a call using the value in register
Source§fn emit_call_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>
fn emit_call_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>
Emit a call to a label
Source§fn arch_emit_indirect_call_with_trampoline(
&mut self,
location: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn arch_emit_indirect_call_with_trampoline( &mut self, location: Location<GPR, NEON>, ) -> Result<(), CompileError>
indirect call with trampoline
Source§fn emit_debug_breakpoint(&mut self) -> Result<(), CompileError>
fn emit_debug_breakpoint(&mut self) -> Result<(), CompileError>
Emit a debug breakpoint
Source§fn emit_call_location(
&mut self,
location: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_call_location( &mut self, location: Location<GPR, NEON>, ) -> Result<(), CompileError>
emit a call to a location
Source§fn location_add(
&mut self,
size: Size,
source: Location<GPR, NEON>,
dest: Location<GPR, NEON>,
flags: bool,
) -> Result<(), CompileError>
fn location_add( &mut self, size: Size, source: Location<GPR, NEON>, dest: Location<GPR, NEON>, flags: bool, ) -> Result<(), CompileError>
Add src+dst -> dst (with or without flags)
Source§fn location_cmp(
&mut self,
size: Size,
source: Location<GPR, NEON>,
dest: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn location_cmp( &mut self, size: Size, source: Location<GPR, NEON>, dest: Location<GPR, NEON>, ) -> Result<(), CompileError>
Cmp src - dst and set flags
Source§fn jmp_unconditional(&mut self, label: DynamicLabel) -> Result<(), CompileError>
fn jmp_unconditional(&mut self, label: DynamicLabel) -> Result<(), CompileError>
jmp without condition
Source§fn jmp_on_condition(
&mut self,
cond: UnsignedCondition,
size: Size,
loc_a: AbstractLocation<Self::GPR, Self::SIMD>,
loc_b: AbstractLocation<Self::GPR, Self::SIMD>,
label: DynamicLabel,
) -> Result<(), CompileError>
fn jmp_on_condition( &mut self, cond: UnsignedCondition, size: Size, loc_a: AbstractLocation<Self::GPR, Self::SIMD>, loc_b: AbstractLocation<Self::GPR, Self::SIMD>, label: DynamicLabel, ) -> Result<(), CompileError>
jmp to label if the provided condition is true (when comparing loc_a and loc_b)
Source§fn emit_jmp_to_jumptable(
&mut self,
label: DynamicLabel,
cond: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_jmp_to_jumptable( &mut self, label: DynamicLabel, cond: Location<GPR, NEON>, ) -> Result<(), CompileError>
jmp using a jump table at label with cond as the indice
Source§fn align_for_loop(&mut self) -> Result<(), CompileError>
fn align_for_loop(&mut self) -> Result<(), CompileError>
Align for Loop (may do nothing, depending on the arch)
Source§fn emit_push(
&mut self,
size: Size,
loc: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_push( &mut self, size: Size, loc: Location<GPR, NEON>, ) -> Result<(), CompileError>
Stack push of a location
Source§fn emit_pop(
&mut self,
size: Size,
loc: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_pop( &mut self, size: Size, loc: Location<GPR, NEON>, ) -> Result<(), CompileError>
Stack pop of a location
Source§fn emit_memory_fence(&mut self) -> Result<(), CompileError>
fn emit_memory_fence(&mut self) -> Result<(), CompileError>
Emit a memory fence. Can be nothing for x86_64 or a DMB on ARM64 for example
Source§fn emit_imul_imm32(
&mut self,
size: Size,
imm32: u32,
gpr: GPR,
) -> Result<(), CompileError>
fn emit_imul_imm32( &mut self, size: Size, imm32: u32, gpr: GPR, ) -> Result<(), CompileError>
Multiply location with immediate
Source§fn emit_relaxed_mov(
&mut self,
sz: Size,
src: Location<GPR, NEON>,
dst: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_relaxed_mov( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>
relaxed mov: move from anywhere to anywhere
Source§fn emit_relaxed_cmp(
&mut self,
sz: Size,
src: Location<GPR, NEON>,
dst: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_relaxed_cmp( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>
relaxed cmp: compare from anywhere and anywhere
Source§fn emit_relaxed_sign_extension(
&mut self,
sz_src: Size,
src: Location<GPR, NEON>,
sz_dst: Size,
dst: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_relaxed_sign_extension( &mut self, sz_src: Size, src: Location<GPR, NEON>, sz_dst: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>
relaxed move with sign extension
Source§fn emit_binop_add32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_add32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Add with location directly from the stack
Source§fn emit_binop_sub32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_sub32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Sub with location directly from the stack
Source§fn emit_binop_mul32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_mul32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Multiply with location directly from the stack
Source§fn emit_binop_udiv32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
integer_division_by_zero: DynamicLabel,
) -> Result<usize, CompileError>
fn emit_binop_udiv32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, integer_division_by_zero: DynamicLabel, ) -> Result<usize, CompileError>
Unsigned Division with location directly from the stack. return the offset of the DIV opcode, to mark as trappable.
Source§fn emit_binop_sdiv32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
integer_division_by_zero: DynamicLabel,
integer_overflow: DynamicLabel,
) -> Result<usize, CompileError>
fn emit_binop_sdiv32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, integer_division_by_zero: DynamicLabel, integer_overflow: DynamicLabel, ) -> Result<usize, CompileError>
Signed Division with location directly from the stack. return the offset of the DIV opcode, to mark as trappable.
Source§fn emit_binop_urem32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
integer_division_by_zero: DynamicLabel,
) -> Result<usize, CompileError>
fn emit_binop_urem32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, integer_division_by_zero: DynamicLabel, ) -> Result<usize, CompileError>
Unsigned Reminder (of a division) with location directly from the stack. return the offset of the DIV opcode, to mark as trappable.
Source§fn emit_binop_srem32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
integer_division_by_zero: DynamicLabel,
) -> Result<usize, CompileError>
fn emit_binop_srem32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, integer_division_by_zero: DynamicLabel, ) -> Result<usize, CompileError>
Signed Reminder (of a Division) with location directly from the stack. return the offset of the DIV opcode, to mark as trappable.
Source§fn emit_binop_and32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_and32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
And with location directly from the stack
Source§fn emit_binop_or32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_or32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Or with location directly from the stack
Source§fn emit_binop_xor32(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_xor32( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Xor with location directly from the stack
Source§fn i32_cmp_ge_s(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_ge_s( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Signed Greater of Equal Compare 2 i32, result in a GPR
Source§fn i32_cmp_gt_s(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_gt_s( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Signed Greater Than Compare 2 i32, result in a GPR
Source§fn i32_cmp_le_s(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_le_s( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Signed Less of Equal Compare 2 i32, result in a GPR
Source§fn i32_cmp_lt_s(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_lt_s( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Signed Less Than Compare 2 i32, result in a GPR
Source§fn i32_cmp_ge_u(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_ge_u( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Unsigned Greater of Equal Compare 2 i32, result in a GPR
Source§fn i32_cmp_gt_u(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_gt_u( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Unsigned Greater Than Compare 2 i32, result in a GPR
Source§fn i32_cmp_le_u(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_le_u( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Unsigned Less of Equal Compare 2 i32, result in a GPR
Source§fn i32_cmp_lt_u(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_lt_u( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Unsigned Less Than Compare 2 i32, result in a GPR
Source§fn i32_cmp_ne(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_ne( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Not Equal Compare 2 i32, result in a GPR
Source§fn i32_cmp_eq(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_cmp_eq( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Equal Compare 2 i32, result in a GPR
Source§fn i32_clz(
&mut self,
src: Location<GPR, NEON>,
dst: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_clz( &mut self, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>
Count Leading 0 bit of an i32
Source§fn i32_ctz(
&mut self,
src: Location<GPR, NEON>,
dst: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_ctz( &mut self, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>
Count Trailing 0 bit of an i32
Source§fn i32_popcnt(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_popcnt( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Count the number of 1 bit of an i32
Source§fn i32_shl(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_shl( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i32 Logical Shift Left
Source§fn i32_shr(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_shr( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i32 Logical Shift Right
Source§fn i32_sar(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_sar( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i32 Arithmetic Shift Right
Source§fn i32_rol(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_rol( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i32 Roll Left
Source§fn i32_ror(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i32_ror( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i32 Roll Right
Source§fn i32_load(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_load( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 load
Source§fn i32_load_8u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_load_8u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 load of an unsigned 8bits
Source§fn i32_load_8s(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_load_8s( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 load of an signed 8bits
Source§fn i32_load_16u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_load_16u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 load of an unsigned 16bits
Source§fn i32_load_16s(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_load_16s( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 load of an signed 16bits
Source§fn i32_atomic_load(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_load( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic load
Source§fn i32_atomic_load_8u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_load_8u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic load of an unsigned 8bits
Source§fn i32_atomic_load_16u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_load_16u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic load of an unsigned 16bits
Source§fn i32_save(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_save( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 save
Source§fn i32_save_8(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_save_8( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 save of the lower 8bits
Source§fn i32_save_16(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_save_16( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 save of the lower 16bits
Source§fn i32_atomic_save(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_save( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic save
Source§fn i32_atomic_save_8(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_save_8( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic save of a the lower 8bits
Source§fn i32_atomic_save_16(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_save_16( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic save of a the lower 16bits
Source§fn i32_atomic_add(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_add( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Add with i32
Source§fn i32_atomic_add_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_add_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Add with unsigned 8bits
Source§fn i32_atomic_add_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_add_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Add with unsigned 16bits
Source§fn i32_atomic_sub(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_sub( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Sub with i32
Source§fn i32_atomic_sub_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_sub_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Sub with unsigned 8bits
Source§fn i32_atomic_sub_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_sub_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Sub with unsigned 16bits
Source§fn i32_atomic_and(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_and( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic And with i32
Source§fn i32_atomic_and_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_and_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic And with unsigned 8bits
Source§fn i32_atomic_and_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_and_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic And with unsigned 16bits
Source§fn i32_atomic_or(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_or( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Or with i32
Source§fn i32_atomic_or_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_or_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Or with unsigned 8bits
Source§fn i32_atomic_or_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_or_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Or with unsigned 16bits
Source§fn i32_atomic_xor(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_xor( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Xor with i32
Source§fn i32_atomic_xor_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_xor_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Xor with unsigned 8bits
Source§fn i32_atomic_xor_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_xor_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Xor with unsigned 16bits
Source§fn i32_atomic_xchg(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_xchg( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Exchange with i32
Source§fn i32_atomic_xchg_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_xchg_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Exchange with u8
Source§fn i32_atomic_xchg_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_xchg_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Exchange with u16
Source§fn i32_atomic_cmpxchg(
&mut self,
new: Location<GPR, NEON>,
cmp: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_cmpxchg( &mut self, new: Location<GPR, NEON>, cmp: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Compare and Exchange with i32
Source§fn i32_atomic_cmpxchg_8u(
&mut self,
new: Location<GPR, NEON>,
cmp: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_cmpxchg_8u( &mut self, new: Location<GPR, NEON>, cmp: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Compare and Exchange with u8
Source§fn i32_atomic_cmpxchg_16u(
&mut self,
new: Location<GPR, NEON>,
cmp: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i32_atomic_cmpxchg_16u( &mut self, new: Location<GPR, NEON>, cmp: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i32 atomic Compare and Exchange with u16
Source§fn emit_call_with_reloc(
&mut self,
_calling_convention: CallingConvention,
reloc_target: RelocationTarget,
) -> Result<Vec<Relocation>, CompileError>
fn emit_call_with_reloc( &mut self, _calling_convention: CallingConvention, reloc_target: RelocationTarget, ) -> Result<Vec<Relocation>, CompileError>
emit a move function address to GPR ready for call, using appropriate relocation
Source§fn emit_binop_add64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_add64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Add with location directly from the stack
Source§fn emit_binop_sub64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_sub64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Sub with location directly from the stack
Source§fn emit_binop_mul64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_mul64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Multiply with location directly from the stack
Source§fn emit_binop_udiv64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
integer_division_by_zero: DynamicLabel,
) -> Result<usize, CompileError>
fn emit_binop_udiv64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, integer_division_by_zero: DynamicLabel, ) -> Result<usize, CompileError>
Unsigned Division with location directly from the stack. return the offset of the DIV opcode, to mark as trappable.
Source§fn emit_binop_sdiv64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
integer_division_by_zero: DynamicLabel,
integer_overflow: DynamicLabel,
) -> Result<usize, CompileError>
fn emit_binop_sdiv64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, integer_division_by_zero: DynamicLabel, integer_overflow: DynamicLabel, ) -> Result<usize, CompileError>
Signed Division with location directly from the stack. return the offset of the DIV opcode, to mark as trappable.
Source§fn emit_binop_urem64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
integer_division_by_zero: DynamicLabel,
) -> Result<usize, CompileError>
fn emit_binop_urem64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, integer_division_by_zero: DynamicLabel, ) -> Result<usize, CompileError>
Unsigned Reminder (of a division) with location directly from the stack. return the offset of the DIV opcode, to mark as trappable.
Source§fn emit_binop_srem64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
integer_division_by_zero: DynamicLabel,
) -> Result<usize, CompileError>
fn emit_binop_srem64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, integer_division_by_zero: DynamicLabel, ) -> Result<usize, CompileError>
Signed Reminder (of a Division) with location directly from the stack. return the offset of the DIV opcode, to mark as trappable.
Source§fn emit_binop_and64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_and64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
And with location directly from the stack
Source§fn emit_binop_or64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_or64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Or with location directly from the stack
Source§fn emit_binop_xor64(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn emit_binop_xor64( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Xor with location directly from the stack
Source§fn i64_cmp_ge_s(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_ge_s( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Signed Greater of Equal Compare 2 i64, result in a GPR
Source§fn i64_cmp_gt_s(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_gt_s( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Signed Greater Than Compare 2 i64, result in a GPR
Source§fn i64_cmp_le_s(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_le_s( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Signed Less of Equal Compare 2 i64, result in a GPR
Source§fn i64_cmp_lt_s(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_lt_s( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Signed Less Than Compare 2 i64, result in a GPR
Source§fn i64_cmp_ge_u(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_ge_u( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Unsigned Greater of Equal Compare 2 i64, result in a GPR
Source§fn i64_cmp_gt_u(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_gt_u( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Unsigned Greater Than Compare 2 i64, result in a GPR
Source§fn i64_cmp_le_u(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_le_u( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Unsigned Less of Equal Compare 2 i64, result in a GPR
Source§fn i64_cmp_lt_u(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_lt_u( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Unsigned Less Than Compare 2 i64, result in a GPR
Source§fn i64_cmp_ne(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_ne( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Not Equal Compare 2 i64, result in a GPR
Source§fn i64_cmp_eq(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_cmp_eq( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Equal Compare 2 i64, result in a GPR
Source§fn i64_clz(
&mut self,
src: Location<GPR, NEON>,
dst: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_clz( &mut self, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>
Count Leading 0 bit of an i64
Source§fn i64_ctz(
&mut self,
src: Location<GPR, NEON>,
dst: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_ctz( &mut self, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>
Count Trailing 0 bit of an i64
Source§fn i64_popcnt(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_popcnt( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Count the number of 1 bit of an i64
Source§fn i64_shl(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_shl( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i64 Logical Shift Left
Source§fn i64_shr(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_shr( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i64 Logical Shift Right
Source§fn i64_sar(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_sar( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i64 Arithmetic Shift Right
Source§fn i64_rol(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_rol( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i64 Roll Left
Source§fn i64_ror(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn i64_ror( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
i64 Roll Right
Source§fn i64_load(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_load( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 load
Source§fn i64_load_8u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_load_8u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 load of an unsigned 8bits
Source§fn i64_load_8s(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_load_8s( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 load of an signed 8bits
Source§fn i64_load_16u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_load_16u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 load of an signed 16bits
Source§fn i64_load_16s(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_load_16s( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 load of an signed 16bits
Source§fn i64_load_32u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_load_32u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 load of an unsigned 32bits
Source§fn i64_load_32s(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_load_32s( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 load of an signed 32bits
Source§fn i64_atomic_load(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_load( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic load
Source§fn i64_atomic_load_8u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_load_8u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic load from unsigned 8bits
Source§fn i64_atomic_load_16u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_load_16u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic load from unsigned 16bits
Source§fn i64_atomic_load_32u(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_load_32u( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic load from unsigned 32bits
Source§fn i64_save(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_save( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 save
Source§fn i64_save_8(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_save_8( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 save of the lower 8bits
Source§fn i64_save_16(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_save_16( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 save of the lower 16bits
Source§fn i64_save_32(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_save_32( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 save of the lower 32bits
Source§fn i64_atomic_save(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_save( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic save
Source§fn i64_atomic_save_8(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_save_8( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic save of a the lower 8bits
Source§fn i64_atomic_save_16(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_save_16( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic save of a the lower 16bits
Source§fn i64_atomic_save_32(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_save_32( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic save of a the lower 32bits
Source§fn i64_atomic_add(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_add( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Add with i64
Source§fn i64_atomic_add_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_add_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Add with unsigned 8bits
Source§fn i64_atomic_add_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_add_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Add with unsigned 16bits
Source§fn i64_atomic_add_32u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_add_32u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Add with unsigned 32bits
Source§fn i64_atomic_sub(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_sub( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Sub with i64
Source§fn i64_atomic_sub_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_sub_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Sub with unsigned 8bits
Source§fn i64_atomic_sub_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_sub_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Sub with unsigned 16bits
Source§fn i64_atomic_sub_32u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_sub_32u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Sub with unsigned 32bits
Source§fn i64_atomic_and(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_and( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic And with i64
Source§fn i64_atomic_and_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_and_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic And with unsigned 8bits
Source§fn i64_atomic_and_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_and_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic And with unsigned 16bits
Source§fn i64_atomic_and_32u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_and_32u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic And with unsigned 32bits
Source§fn i64_atomic_or(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_or( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Or with i64
Source§fn i64_atomic_or_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_or_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Or with unsigned 8bits
Source§fn i64_atomic_or_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_or_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Or with unsigned 16bits
Source§fn i64_atomic_or_32u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_or_32u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Or with unsigned 32bits
Source§fn i64_atomic_xor(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_xor( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Xor with i64
Source§fn i64_atomic_xor_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_xor_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Xor with unsigned 8bits
Source§fn i64_atomic_xor_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_xor_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Xor with unsigned 16bits
Source§fn i64_atomic_xor_32u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_xor_32u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Xor with unsigned 32bits
Source§fn i64_atomic_xchg(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_xchg( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Exchange with i64
Source§fn i64_atomic_xchg_8u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_xchg_8u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Exchange with u8
Source§fn i64_atomic_xchg_16u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_xchg_16u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Exchange with u16
Source§fn i64_atomic_xchg_32u(
&mut self,
loc: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_xchg_32u( &mut self, loc: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Exchange with u32
Source§fn i64_atomic_cmpxchg(
&mut self,
new: Location<GPR, NEON>,
cmp: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_cmpxchg( &mut self, new: Location<GPR, NEON>, cmp: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Compare and Exchange with i32
Source§fn i64_atomic_cmpxchg_8u(
&mut self,
new: Location<GPR, NEON>,
cmp: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_cmpxchg_8u( &mut self, new: Location<GPR, NEON>, cmp: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Compare and Exchange with u8
Source§fn i64_atomic_cmpxchg_16u(
&mut self,
new: Location<GPR, NEON>,
cmp: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_cmpxchg_16u( &mut self, new: Location<GPR, NEON>, cmp: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Compare and Exchange with u16
Source§fn i64_atomic_cmpxchg_32u(
&mut self,
new: Location<GPR, NEON>,
cmp: Location<GPR, NEON>,
target: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn i64_atomic_cmpxchg_32u( &mut self, new: Location<GPR, NEON>, cmp: Location<GPR, NEON>, target: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
i64 atomic Compare and Exchange with u32
Source§fn f32_load(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn f32_load( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
load an F32
Source§fn f32_save(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
canonicalize: bool,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn f32_save( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, canonicalize: bool, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
f32 save
Source§fn f64_load(
&mut self,
addr: Location<GPR, NEON>,
memarg: &MemArg,
ret: Location<GPR, NEON>,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn f64_load( &mut self, addr: Location<GPR, NEON>, memarg: &MemArg, ret: Location<GPR, NEON>, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
load an F64
Source§fn f64_save(
&mut self,
target_value: Location<GPR, NEON>,
memarg: &MemArg,
target_addr: Location<GPR, NEON>,
canonicalize: bool,
need_check: bool,
imported_memories: bool,
offset: i32,
heap_access_oob: DynamicLabel,
unaligned_atomic: DynamicLabel,
) -> Result<(), CompileError>
fn f64_save( &mut self, target_value: Location<GPR, NEON>, memarg: &MemArg, target_addr: Location<GPR, NEON>, canonicalize: bool, need_check: bool, imported_memories: bool, offset: i32, heap_access_oob: DynamicLabel, unaligned_atomic: DynamicLabel, ) -> Result<(), CompileError>
f64 save
Source§fn convert_f64_i64(
&mut self,
loc: Location<GPR, NEON>,
signed: bool,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn convert_f64_i64( &mut self, loc: Location<GPR, NEON>, signed: bool, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Convert a F64 from I64, signed or unsigned
Source§fn convert_f64_i32(
&mut self,
loc: Location<GPR, NEON>,
signed: bool,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn convert_f64_i32( &mut self, loc: Location<GPR, NEON>, signed: bool, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Convert a F64 from I32, signed or unsigned
Source§fn convert_f32_i64(
&mut self,
loc: Location<GPR, NEON>,
signed: bool,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn convert_f32_i64( &mut self, loc: Location<GPR, NEON>, signed: bool, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Convert a F32 from I64, signed or unsigned
Source§fn convert_f32_i32(
&mut self,
loc: Location<GPR, NEON>,
signed: bool,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn convert_f32_i32( &mut self, loc: Location<GPR, NEON>, signed: bool, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Convert a F32 from I32, signed or unsigned
Source§fn convert_i64_f64(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
signed: bool,
sat: bool,
) -> Result<(), CompileError>
fn convert_i64_f64( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, signed: bool, sat: bool, ) -> Result<(), CompileError>
Convert a F64 to I64, signed or unsigned, without or without saturation
Source§fn convert_i32_f64(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
signed: bool,
sat: bool,
) -> Result<(), CompileError>
fn convert_i32_f64( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, signed: bool, sat: bool, ) -> Result<(), CompileError>
Convert a F64 to I32, signed or unsigned, without or without saturation
Source§fn convert_i64_f32(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
signed: bool,
sat: bool,
) -> Result<(), CompileError>
fn convert_i64_f32( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, signed: bool, sat: bool, ) -> Result<(), CompileError>
Convert a F32 to I64, signed or unsigned, without or without saturation
Source§fn convert_i32_f32(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
signed: bool,
sat: bool,
) -> Result<(), CompileError>
fn convert_i32_f32( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, signed: bool, sat: bool, ) -> Result<(), CompileError>
Convert a F32 to I32, signed or unsigned, without or without saturation
Source§fn convert_f64_f32(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn convert_f64_f32( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Convert a F32 to F64
Source§fn convert_f32_f64(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn convert_f32_f64( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Convert a F64 to F32
Source§fn f64_neg(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_neg( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Negate an F64
Source§fn f64_abs(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_abs( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Get the Absolute Value of an F64
Source§fn emit_i64_copysign(
&mut self,
tmp1: GPR,
tmp2: GPR,
) -> Result<(), CompileError>
fn emit_i64_copysign( &mut self, tmp1: GPR, tmp2: GPR, ) -> Result<(), CompileError>
Copy sign from tmp1 Self::GPR to tmp2 Self::GPR
Source§fn f64_sqrt(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_sqrt( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Get the Square Root of an F64
Source§fn f64_trunc(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_trunc( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Trunc of an F64
Source§fn f64_ceil(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_ceil( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Ceil of an F64
Source§fn f64_floor(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_floor( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Floor of an F64
Source§fn f64_nearest(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_nearest( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Round at nearest int of an F64
Source§fn f64_cmp_ge(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_cmp_ge( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Greater of Equal Compare 2 F64, result in a GPR
Source§fn f64_cmp_gt(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_cmp_gt( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Greater Than Compare 2 F64, result in a GPR
Source§fn f64_cmp_le(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_cmp_le( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Less of Equal Compare 2 F64, result in a GPR
Source§fn f64_cmp_lt(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_cmp_lt( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Less Than Compare 2 F64, result in a GPR
Source§fn f64_cmp_ne(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_cmp_ne( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Not Equal Compare 2 F64, result in a GPR
Source§fn f64_cmp_eq(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_cmp_eq( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Equal Compare 2 F64, result in a GPR
Source§fn f64_min(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_min( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
get Min for 2 F64 values
Source§fn f64_max(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_max( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
get Max for 2 F64 values
Source§fn f64_add(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_add( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Add 2 F64 values
Source§fn f64_sub(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_sub( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Sub 2 F64 values
Source§fn f64_mul(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_mul( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Multiply 2 F64 values
Source§fn f64_div(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f64_div( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Divide 2 F64 values
Source§fn f32_neg(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_neg( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Negate an F32
Source§fn f32_abs(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_abs( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Get the Absolute Value of an F32
Source§fn emit_i32_copysign(
&mut self,
tmp1: GPR,
tmp2: GPR,
) -> Result<(), CompileError>
fn emit_i32_copysign( &mut self, tmp1: GPR, tmp2: GPR, ) -> Result<(), CompileError>
Copy sign from tmp1 Self::GPR to tmp2 Self::GPR
Source§fn f32_sqrt(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_sqrt( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Get the Square Root of an F32
Source§fn f32_trunc(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_trunc( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Trunc of an F32
Source§fn f32_ceil(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_ceil( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Ceil of an F32
Source§fn f32_floor(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_floor( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Floor of an F32
Source§fn f32_nearest(
&mut self,
loc: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_nearest( &mut self, loc: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Round at nearest int of an F32
Source§fn f32_cmp_ge(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_cmp_ge( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Greater of Equal Compare 2 F32, result in a GPR
Source§fn f32_cmp_gt(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_cmp_gt( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Greater Than Compare 2 F32, result in a GPR
Source§fn f32_cmp_le(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_cmp_le( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Less of Equal Compare 2 F32, result in a GPR
Source§fn f32_cmp_lt(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_cmp_lt( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Less Than Compare 2 F32, result in a GPR
Source§fn f32_cmp_ne(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_cmp_ne( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Not Equal Compare 2 F32, result in a GPR
Source§fn f32_cmp_eq(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_cmp_eq( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Equal Compare 2 F32, result in a GPR
Source§fn f32_min(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_min( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
get Min for 2 F32 values
Source§fn f32_max(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_max( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
get Max for 2 F32 values
Source§fn f32_add(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_add( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Add 2 F32 values
Source§fn f32_sub(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_sub( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Sub 2 F32 values
Source§fn f32_mul(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_mul( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Multiply 2 F32 values
Source§fn f32_div(
&mut self,
loc_a: Location<GPR, NEON>,
loc_b: Location<GPR, NEON>,
ret: Location<GPR, NEON>,
) -> Result<(), CompileError>
fn f32_div( &mut self, loc_a: Location<GPR, NEON>, loc_b: Location<GPR, NEON>, ret: Location<GPR, NEON>, ) -> Result<(), CompileError>
Divide 2 F32 values
Source§fn gen_std_trampoline(
&self,
sig: &FunctionType,
calling_convention: CallingConvention,
) -> Result<FunctionBody, CompileError>
fn gen_std_trampoline( &self, sig: &FunctionType, calling_convention: CallingConvention, ) -> Result<FunctionBody, CompileError>
Standard function Trampoline generation
Source§fn gen_std_dynamic_import_trampoline(
&self,
vmoffsets: &VMOffsets,
sig: &FunctionType,
calling_convention: CallingConvention,
) -> Result<FunctionBody, CompileError>
fn gen_std_dynamic_import_trampoline( &self, vmoffsets: &VMOffsets, sig: &FunctionType, calling_convention: CallingConvention, ) -> Result<FunctionBody, CompileError>
Generates dynamic import function call trampoline for a function type.
Source§fn gen_import_call_trampoline(
&self,
vmoffsets: &VMOffsets,
index: FunctionIndex,
sig: &FunctionType,
calling_convention: CallingConvention,
) -> Result<CustomSection, CompileError>
fn gen_import_call_trampoline( &self, vmoffsets: &VMOffsets, index: FunctionIndex, sig: &FunctionType, calling_convention: CallingConvention, ) -> Result<CustomSection, CompileError>
Singlepass calls import functions through a trampoline.
Source§fn gen_dwarf_unwind_info(
&mut self,
code_len: usize,
) -> Option<UnwindInstructions>
fn gen_dwarf_unwind_info( &mut self, code_len: usize, ) -> Option<UnwindInstructions>
generate eh_frame instruction (or None if not possible / supported)
Auto Trait Implementations§
impl Freeze for MachineARM64
impl RefUnwindSafe for MachineARM64
impl Send for MachineARM64
impl Sync for MachineARM64
impl Unpin for MachineARM64
impl UnsafeUnpin for MachineARM64
impl UnwindSafe for MachineARM64
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T> Upcastable for T
impl<T> Upcastable for T
§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref
§fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
upcast boxed dyn