pub trait EmitterARM64 {
Show 106 methods // Required methods fn get_label(&mut self) -> DynamicLabel; fn get_offset(&self) -> AssemblyOffset; fn get_jmp_instr_size(&self) -> u8; fn finalize_function(&mut self); fn emit_str( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ldr( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_stur( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: i32, ) -> Result<(), CompileError>; fn emit_ldur( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: i32, ) -> Result<(), CompileError>; fn emit_strdb( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>; fn emit_stria( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>; fn emit_ldria( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>; fn emit_stpdb( &mut self, sz: Size, reg1: Location<GPR, NEON>, reg2: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>; fn emit_ldpia( &mut self, sz: Size, reg1: Location<GPR, NEON>, reg2: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>; fn emit_ldrb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ldrh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ldrsb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ldrsh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ldrsw( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_strb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_strh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ldaxr( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ldaxrb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ldaxrh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_stlxr( &mut self, sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_stlxrb( &mut self, sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_stlxrh( &mut self, sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_mov( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_movn( &mut self, sz: Size, reg: Location<GPR, NEON>, val: u32, ) -> Result<(), CompileError>; fn emit_movz( &mut self, reg: Location<GPR, NEON>, val: u32, ) -> Result<(), CompileError>; fn emit_movk( &mut self, reg: Location<GPR, NEON>, val: u32, shift: u32, ) -> Result<(), CompileError>; fn emit_mov_imm( &mut self, dst: Location<GPR, NEON>, val: u64, ) -> Result<(), CompileError>; fn emit_add( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_sub( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_mul( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_adds( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_subs( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_add_lsl( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, lsl: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_cmp( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_tst( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_lsl( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_lsr( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_asr( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ror( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_or( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_and( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_eor( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_bfc( &mut self, se: Size, lsb: u32, width: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_bfi( &mut self, se: Size, src: Location<GPR, NEON>, lsb: u32, width: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_udiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_sdiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_msub( &mut self, sz: Size, a: Location<GPR, NEON>, b: Location<GPR, NEON>, c: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_sxtb( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_sxth( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_sxtw( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_uxtb( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_uxth( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_cset( &mut self, sz: Size, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>; fn emit_csetm( &mut self, sz: Size, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>; fn emit_cinc( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>; fn emit_clz( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_rbit( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>; fn emit_load_label( &mut self, reg: GPR, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_b_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>; fn emit_cbz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_cbnz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_cbz_label_far( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_tbz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, n: u32, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_tbnz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, n: u32, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_bcond_label( &mut self, condition: Condition, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_bcond_label_far( &mut self, condition: Condition, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_b_register(&mut self, reg: GPR) -> Result<(), CompileError>; fn emit_call_label( &mut self, label: DynamicLabel, ) -> Result<(), CompileError>; fn emit_call_register(&mut self, reg: GPR) -> Result<(), CompileError>; fn emit_ret(&mut self) -> Result<(), CompileError>; fn emit_udf(&mut self, payload: u16) -> Result<(), CompileError>; fn emit_dmb(&mut self) -> Result<(), CompileError>; fn emit_brk(&mut self) -> Result<(), CompileError>; fn emit_fcmp( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fneg( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fsqrt( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fadd( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fsub( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fmul( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fdiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fmin( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fmax( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_frintz( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_frintn( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_frintm( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_frintp( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_scvtf( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_ucvtf( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fcvt( &mut self, sz_in: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fcvtzs( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fcvtzu( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_fmov( &mut self, src_size: Size, src: Location<GPR, NEON>, dst_size: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>; fn emit_cnt(&mut self, src: NEON, dst: NEON) -> Result<(), CompileError>; fn emit_addv(&mut self, src: NEON, dst: NEON) -> Result<(), CompileError>; fn emit_read_fpcr(&mut self, reg: GPR) -> Result<(), CompileError>; fn emit_write_fpcr(&mut self, reg: GPR) -> Result<(), CompileError>; fn emit_read_fpsr(&mut self, reg: GPR) -> Result<(), CompileError>; fn emit_write_fpsr(&mut self, reg: GPR) -> Result<(), CompileError>; // Provided methods fn arch_supports_canonicalize_nan(&self) -> bool { ... } fn arch_requires_indirect_call_trampoline(&self) -> bool { ... } fn arch_emit_indirect_call_with_trampoline( &mut self, _loc: Location<GPR, NEON>, ) -> Result<(), CompileError> { ... }
}

Required Methods§

source

fn get_label(&mut self) -> DynamicLabel

source

fn get_offset(&self) -> AssemblyOffset

source

fn get_jmp_instr_size(&self) -> u8

source

fn finalize_function(&mut self)

source

fn emit_str( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ldr( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_stur( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: i32, ) -> Result<(), CompileError>

source

fn emit_ldur( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: i32, ) -> Result<(), CompileError>

source

fn emit_strdb( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source

fn emit_stria( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source

fn emit_ldria( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source

fn emit_stpdb( &mut self, sz: Size, reg1: Location<GPR, NEON>, reg2: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source

fn emit_ldpia( &mut self, sz: Size, reg1: Location<GPR, NEON>, reg2: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source

fn emit_ldrb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ldrh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ldrsb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ldrsh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ldrsw( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_strb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_strh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ldaxr( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ldaxrb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ldaxrh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_stlxr( &mut self, sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_stlxrb( &mut self, sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_stlxrh( &mut self, sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_mov( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_movn( &mut self, sz: Size, reg: Location<GPR, NEON>, val: u32, ) -> Result<(), CompileError>

source

fn emit_movz( &mut self, reg: Location<GPR, NEON>, val: u32, ) -> Result<(), CompileError>

source

fn emit_movk( &mut self, reg: Location<GPR, NEON>, val: u32, shift: u32, ) -> Result<(), CompileError>

source

fn emit_mov_imm( &mut self, dst: Location<GPR, NEON>, val: u64, ) -> Result<(), CompileError>

source

fn emit_add( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_sub( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_mul( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_adds( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_subs( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_add_lsl( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, lsl: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_cmp( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_tst( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_lsl( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_lsr( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_asr( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ror( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_or( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_and( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_eor( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_bfc( &mut self, se: Size, lsb: u32, width: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_bfi( &mut self, se: Size, src: Location<GPR, NEON>, lsb: u32, width: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_udiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_sdiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_msub( &mut self, sz: Size, a: Location<GPR, NEON>, b: Location<GPR, NEON>, c: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

msub : c - a*b -> dst

source

fn emit_sxtb( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_sxth( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_sxtw( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_uxtb( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_uxth( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_cset( &mut self, sz: Size, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>

source

fn emit_csetm( &mut self, sz: Size, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>

source

fn emit_cinc( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>

source

fn emit_clz( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_rbit( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>

source

fn emit_load_label( &mut self, reg: GPR, label: DynamicLabel, ) -> Result<(), CompileError>

source

fn emit_b_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>

source

fn emit_cbz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>

source

fn emit_cbnz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>

source

fn emit_cbz_label_far( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>

source

fn emit_tbz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, n: u32, label: DynamicLabel, ) -> Result<(), CompileError>

source

fn emit_tbnz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, n: u32, label: DynamicLabel, ) -> Result<(), CompileError>

source

fn emit_bcond_label( &mut self, condition: Condition, label: DynamicLabel, ) -> Result<(), CompileError>

source

fn emit_bcond_label_far( &mut self, condition: Condition, label: DynamicLabel, ) -> Result<(), CompileError>

source

fn emit_b_register(&mut self, reg: GPR) -> Result<(), CompileError>

source

fn emit_call_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>

source

fn emit_call_register(&mut self, reg: GPR) -> Result<(), CompileError>

source

fn emit_ret(&mut self) -> Result<(), CompileError>

source

fn emit_udf(&mut self, payload: u16) -> Result<(), CompileError>

source

fn emit_dmb(&mut self) -> Result<(), CompileError>

source

fn emit_brk(&mut self) -> Result<(), CompileError>

source

fn emit_fcmp( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fneg( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fsqrt( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fadd( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fsub( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fmul( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fdiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fmin( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fmax( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_frintz( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_frintn( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_frintm( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_frintp( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_scvtf( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_ucvtf( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fcvt( &mut self, sz_in: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fcvtzs( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fcvtzu( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_fmov( &mut self, src_size: Size, src: Location<GPR, NEON>, dst_size: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source

fn emit_cnt(&mut self, src: NEON, dst: NEON) -> Result<(), CompileError>

source

fn emit_addv(&mut self, src: NEON, dst: NEON) -> Result<(), CompileError>

source

fn emit_read_fpcr(&mut self, reg: GPR) -> Result<(), CompileError>

source

fn emit_write_fpcr(&mut self, reg: GPR) -> Result<(), CompileError>

source

fn emit_read_fpsr(&mut self, reg: GPR) -> Result<(), CompileError>

source

fn emit_write_fpsr(&mut self, reg: GPR) -> Result<(), CompileError>

Provided Methods§

Implementations on Foreign Types§

source§

impl EmitterARM64 for VecAssembler<Aarch64Relocation>

source§

fn emit_msub( &mut self, sz: Size, a: Location<GPR, NEON>, b: Location<GPR, NEON>, c: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

msub : c - a*b -> dst

source§

fn get_label(&mut self) -> DynamicLabel

source§

fn get_offset(&self) -> AssemblyOffset

source§

fn get_jmp_instr_size(&self) -> u8

source§

fn finalize_function(&mut self)

source§

fn emit_str( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ldr( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_stur( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: i32, ) -> Result<(), CompileError>

source§

fn emit_ldur( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: i32, ) -> Result<(), CompileError>

source§

fn emit_strdb( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source§

fn emit_stria( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source§

fn emit_ldria( &mut self, sz: Size, reg: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source§

fn emit_stpdb( &mut self, sz: Size, reg1: Location<GPR, NEON>, reg2: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source§

fn emit_ldpia( &mut self, sz: Size, reg1: Location<GPR, NEON>, reg2: Location<GPR, NEON>, addr: GPR, offset: u32, ) -> Result<(), CompileError>

source§

fn emit_ldrb( &mut self, _sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ldrh( &mut self, _sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ldrsb( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ldrsh( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ldrsw( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_strb( &mut self, _sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_strh( &mut self, _sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ldaxr( &mut self, sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ldaxrb( &mut self, _sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ldaxrh( &mut self, _sz: Size, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_stlxr( &mut self, sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_stlxrb( &mut self, _sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_stlxrh( &mut self, _sz: Size, status: Location<GPR, NEON>, reg: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_mov( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_movn( &mut self, sz: Size, reg: Location<GPR, NEON>, val: u32, ) -> Result<(), CompileError>

source§

fn emit_movz( &mut self, reg: Location<GPR, NEON>, val: u32, ) -> Result<(), CompileError>

source§

fn emit_movk( &mut self, reg: Location<GPR, NEON>, val: u32, shift: u32, ) -> Result<(), CompileError>

source§

fn emit_mov_imm( &mut self, dst: Location<GPR, NEON>, val: u64, ) -> Result<(), CompileError>

source§

fn emit_add( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_sub( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_mul( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_adds( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_subs( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_add_lsl( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, lsl: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_cmp( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_tst( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_lsl( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_asr( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_lsr( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ror( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_or( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_and( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_eor( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_bfc( &mut self, sz: Size, lsb: u32, width: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_bfi( &mut self, sz: Size, src: Location<GPR, NEON>, lsb: u32, width: u32, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_udiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_sdiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_sxtb( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_sxth( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_sxtw( &mut self, _sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_uxtb( &mut self, _sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_uxth( &mut self, _sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_cset( &mut self, sz: Size, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>

source§

fn emit_csetm( &mut self, sz: Size, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>

source§

fn emit_cinc( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, cond: Condition, ) -> Result<(), CompileError>

source§

fn emit_clz( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_rbit( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>

source§

fn emit_load_label( &mut self, reg: GPR, label: DynamicLabel, ) -> Result<(), CompileError>

source§

fn emit_b_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>

source§

fn emit_cbz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>

source§

fn emit_cbnz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>

source§

fn emit_cbz_label_far( &mut self, sz: Size, reg: Location<GPR, NEON>, label: DynamicLabel, ) -> Result<(), CompileError>

source§

fn emit_tbz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, n: u32, label: DynamicLabel, ) -> Result<(), CompileError>

source§

fn emit_tbnz_label( &mut self, sz: Size, reg: Location<GPR, NEON>, n: u32, label: DynamicLabel, ) -> Result<(), CompileError>

source§

fn emit_bcond_label( &mut self, condition: Condition, label: DynamicLabel, ) -> Result<(), CompileError>

source§

fn emit_bcond_label_far( &mut self, condition: Condition, label: DynamicLabel, ) -> Result<(), CompileError>

source§

fn emit_b_register(&mut self, reg: GPR) -> Result<(), CompileError>

source§

fn emit_call_label(&mut self, label: DynamicLabel) -> Result<(), CompileError>

source§

fn emit_call_register(&mut self, reg: GPR) -> Result<(), CompileError>

source§

fn emit_ret(&mut self) -> Result<(), CompileError>

source§

fn emit_udf(&mut self, payload: u16) -> Result<(), CompileError>

source§

fn emit_dmb(&mut self) -> Result<(), CompileError>

source§

fn emit_brk(&mut self) -> Result<(), CompileError>

source§

fn emit_fcmp( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fneg( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fsqrt( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fadd( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fsub( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fmul( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fdiv( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fmin( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fmax( &mut self, sz: Size, src1: Location<GPR, NEON>, src2: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_frintz( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_frintn( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_frintm( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_frintp( &mut self, sz: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_scvtf( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_ucvtf( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fcvt( &mut self, sz_in: Size, src: Location<GPR, NEON>, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fcvtzs( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_fcvtzu( &mut self, sz_in: Size, src: Location<GPR, NEON>, sz_out: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

source§

fn emit_read_fpcr(&mut self, reg: GPR) -> Result<(), CompileError>

source§

fn emit_write_fpcr(&mut self, reg: GPR) -> Result<(), CompileError>

source§

fn emit_read_fpsr(&mut self, reg: GPR) -> Result<(), CompileError>

source§

fn emit_write_fpsr(&mut self, reg: GPR) -> Result<(), CompileError>

source§

fn emit_cnt(&mut self, src: NEON, dst: NEON) -> Result<(), CompileError>

source§

fn emit_addv(&mut self, src: NEON, dst: NEON) -> Result<(), CompileError>

source§

fn emit_fmov( &mut self, src_size: Size, src: Location<GPR, NEON>, dst_size: Size, dst: Location<GPR, NEON>, ) -> Result<(), CompileError>

Implementors§