CACAO
Macros | Functions
emit-asm.hpp File Reference

Go to the source code of this file.

Macros

#define LSL(x, a)   ((x) << a)
 
#define LSR(x, a)   ((x) >> a)
 
#define CODE_LSL   0
 
#define CODE_LSR   1
 
#define CODE_ASR   2
 
#define INVERT(x)   ((x) ^ 1)
 
#define COND_EQ   0x0
 
#define COND_NE   0x1
 
#define COND_CS   0x2
 
#define COND_CC   0x3
 
#define COND_MI   0x4
 
#define COND_PL   0x5
 
#define COND_VS   0x6
 
#define COND_VC   0x7
 
#define COND_HI   0x8
 
#define COND_LS   0x9
 
#define COND_GE   0xa
 
#define COND_LT   0xb
 
#define COND_GT   0xc
 
#define COND_LE   0xd
 
#define COND_AL   0xe
 
#define COND_NV   0xf
 
#define emit_cbnz(cd, Xt, imm)   emit_cmp_branch_imm(cd, 1, 1, imm, Xt)
 
#define emit_br_eq(cd, imm)   emit_cond_branch_imm(cd, imm, COND_EQ)
 
#define emit_br_ne(cd, imm)   emit_cond_branch_imm(cd, imm, COND_NE)
 
#define emit_br_cs(cd, imm)   emit_cond_branch_imm(cd, imm, COND_CS)
 
#define emit_br_cc(cd, imm)   emit_cond_branch_imm(cd, imm, COND_CC)
 
#define emit_br_mi(cd, imm)   emit_cond_branch_imm(cd, imm, COND_MI)
 
#define emit_br_pl(cd, imm)   emit_cond_branch_imm(cd, imm, COND_PL)
 
#define emit_br_vs(cd, imm)   emit_cond_branch_imm(cd, imm, COND_VS)
 
#define emit_br_vc(cd, imm)   emit_cond_branch_imm(cd, imm, COND_VC)
 
#define emit_br_hi(cd, imm)   emit_cond_branch_imm(cd, imm, COND_HI)
 
#define emit_br_ls(cd, imm)   emit_cond_branch_imm(cd, imm, COND_LS)
 
#define emit_br_ge(cd, imm)   emit_cond_branch_imm(cd, imm, COND_GE)
 
#define emit_br_lt(cd, imm)   emit_cond_branch_imm(cd, imm, COND_LT)
 
#define emit_br_gt(cd, imm)   emit_cond_branch_imm(cd, imm, COND_GT)
 
#define emit_br_le(cd, imm)   emit_cond_branch_imm(cd, imm, COND_LE)
 
#define emit_br_imm(cd, imm)   emit_unc_branch_imm(cd, 0, imm)
 
#define emit_blr_imm(cd, imm)   emit_unc_branch_imm(cd, 1, imm)
 
#define emit_ret(cd)   emit_unc_branch_reg(cd, 2, 31, 0, 30, 0)
 
#define emit_blr_reg(cd, Xn)   emit_unc_branch_reg(cd, 1, 31, 0, Xn, 0)
 
#define emit_br_reg(cd, Xn)   emit_unc_branch_reg(cd, 0, 31, 0, Xn, 0)
 
#define emit_mov_imm(cd, Xd, imm)   emit_mov_wide_imm(cd, 1, 2, 0, imm, Xd)
 
#define emit_mov_imm32(cd, Xd, imm)   emit_mov_wide_imm(cd, 0, 2, 0, imm, Xd)
 
#define emit_movn_imm(cd, Xd, imm)   emit_mov_wide_imm(cd, 1, 0, 0, imm, Xd)
 
#define emit_movn_imm32(cd, Xd, imm)   emit_mov_wide_imm(cd, 0, 0, 0, imm, Xd)
 
#define emit_movk_imm(cd, Xd, imm, hw)   emit_mov_wide_imm(cd, 1, 3, hw, imm, Xd)
 
#define emit_movk_imm32(cd, Xd, imm, hw)   emit_mov_wide_imm(cd, 0, 3, hw, imm, Xd)
 
#define emit_ldr_reg(cd, Xt, Xn, Xm)   emit_ldstr_reg_reg(cd, 3, 0, 1, Xm, 3, 0, Xn, Xt)
 
#define emit_ldrh_imm(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 1, 0, 1, imm, Xt, Xn)
 
#define emit_strh_imm(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 1, 0, 0, imm, Xt, Xn)
 
#define emit_ldrb_imm(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 0, 0, 1, imm, Xt, Xn)
 
#define emit_strb_imm(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 0, 0, 0, imm, Xt, Xn)
 
#define emit_ldrsb_imm32(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 0, 0, 3, imm, Xt, Xn)
 
#define emit_ldrsh_imm32(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 1, 0, 3, imm, Xt, Xn)
 
#define emit_ldr_imm(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 3, 0, 1, imm, Xt, Xn)
 
#define emit_str_imm(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 3, 0, 0, imm, Xt, Xn)
 
#define emit_fp_ldr_imm(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 3, 1, 1, imm, Xt, Xn)
 
#define emit_fp_str_imm(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 3, 1, 0, imm, Xt, Xn)
 
#define emit_ldr_imm32(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 2, 0, 1, imm, Xt, Xn)
 
#define emit_str_imm32(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 2, 0, 0, imm, Xt, Xn)
 
#define emit_fp_ldr_imm32(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 2, 1, 1, imm, Xt, Xn)
 
#define emit_fp_str_imm32(cd, Xt, Xn, imm)   emit_ldstr_ambigous(cd, 2, 1, 0, imm, Xt, Xn)
 
#define emit_add_imm(cd, Xd, Xn, imm)   emit_addsub_imm(cd, 1, 0, Xd, Xn, imm)
 
#define emit_add_imm32(cd, Xd, Xn, imm)   emit_addsub_imm(cd, 0, 0, Xd, Xn, imm)
 
#define emit_sub_imm(cd, Xd, Xn, imm)   emit_addsub_imm(cd, 1, 1, Xd, Xn, imm)
 
#define emit_sub_imm32(cd, Xd, Xn, imm)   emit_addsub_imm(cd, 0, 1, Xd, Xn, imm)
 
#define emit_subs_imm(cd, Xd, Xn, imm)   emit_addsub_imm(cd, 1, 1, 1, 0, imm, Xn, Xd)
 
#define emit_subs_imm32(cd, Xd, Xn, imm)   emit_addsub_imm(cd, 0, 1, 1, 0, imm, Xn, Xd)
 
#define emit_adds_imm(cd, Xd, Xn, imm)   emit_addsub_imm(cd, 1, 0, 1, 0, imm, Xn, Xd)
 
#define emit_adds_imm32(cd, Xd, Xn, imm)   emit_addsub_imm(cd, 0, 0, 1, 0, imm, Xn, Xd)
 
#define emit_mov_sp(cd, Xd, Xn)   emit_add_imm(cd, Xd, Xn, 0)
 
#define emit_cmp_imm(cd, Xn, imm)   emit_subs_imm(cd, 31, Xn, imm)
 
#define emit_cmp_imm32(cd, Xn, imm)   emit_subs_imm32(cd, 31, Xn, imm)
 
#define emit_cmn_imm(cd, Xn, imm)   emit_adds_imm(cd, 31, Xn, imm)
 
#define emit_cmn_imm32(cd, Wn, imm)   emit_adds_imm32(cd, 31, Wn, imm)
 
#define emit_ubfm(cd, Xd, Xn, immr, imms)   emit_bitfield(cd, 1, 2, 1, immr, imms, Xn, Xd)
 
#define emit_ubfm32(cd, Wd, Wn, immr, imms)   emit_bitfield(cd, 0, 2, 0, immr, imms, Wn, Wd)
 
#define emit_lsl_imm(cd, Xd, Xn, shift)   emit_ubfm(cd, Xd, Xn, ((u1)(-(shift))) % 64, 63 - (shift))
 
#define emit_lsl_imm32(cd, Wd, Wn, shift)   emit_ubfm32(cd, Wd, Wn, ((u1)(-(shift))) % 32, 31 - (shift))
 
#define emit_lsr_imm(cd, Xd, Xn, shift)   emit_ubfm(cd, Xd, Xn, shift, 63)
 
#define emit_lsr_imm32(cd, Wd, Wn, shift)   emit_ubfm32(cd, Wd, Wn, shift, 31)
 
#define emit_uxtb(cd, Wd, Wn)   emit_ubfm32(cd, Wd, Wn, 0, 7)
 
#define emit_uxth(cd, Wd, Wn)   emit_ubfm32(cd, Wd, Wn, 0, 15)
 
#define emit_sbfm(cd, Xd, Xn, immr, imms)   emit_bitfield(cd, 1, 0, 1, immr, imms, Xn, Xd)
 
#define emit_sbfm32(cd, Wd, Wn, immr, imms)   emit_bitfield(cd, 0, 0, 0, immr, imms, Wn, Wd)
 
#define emit_sxtb(cd, Wd, Wn)   emit_sbfm32(cd, Wd, Wn, 0, 7)
 
#define emit_sxth(cd, Wd, Wn)   emit_sbfm32(cd, Wd, Wn, 0, 15)
 
#define emit_asr_imm(cd, Xd, Xn, shift)   emit_sbfm(cd, Xd, Xn, shift, 63)
 
#define emit_asr_imm32(cd, Wd, Wn, shift)   emit_sbfm32(cd, Wd, Wn, shift, 31)
 
#define emit_sxtw(cd, Xd, Wn)   emit_sbfm(cd, Xd, Wn, 0, 31)
 
#define emit_and_imm(cd, Xd, Xn, imm)   emit_logical_imm(cd, 1, 0, imm, Xn, Xd)
 
#define emit_and_imm32(cd, Wd, Wn, imm)   emit_logical_imm(cd, 0, 0, imm, Wn, Wd)
 
#define emit_adr(cd, Xd, immhi)   emit_pcrel(cd, 0, 0, immhi, Xd)
 
#define emit_add_reg(cd, Xd, Xn, Xm)   emit_addsub_reg(cd, 1, 0, 0, 0, Xm, 0, Xn, Xd)
 
#define emit_sub_reg(cd, Xd, Xn, Xm)   emit_addsub_reg(cd, 1, 1, 0, 0, Xm, 0, Xn, Xd)
 
#define emit_subs_reg(cd, Xd, Xn, Xm)   emit_addsub_reg(cd, 1, 1, 1, 0, Xm, 0, Xn, Xd)
 
#define emit_subs_reg32(cd, Xd, Xn, Xm)   emit_addsub_reg(cd, 0, 1, 1, 0, Xm, 0, Xn, Xd)
 
#define emit_cmp_reg(cd, Xn, Xm)   emit_subs_reg(cd, 31, Xn, Xm)
 
#define emit_cmp_reg32(cd, Xn, Xm)   emit_subs_reg32(cd, 31, Xn, Xm)
 
#define emit_add_reg_shift(cd, Xd, Xn, Xm, s, a)   emit_addsub_reg(cd, 1, 0, 0, s, Xm, a, Xn, Xd)
 
#define emit_sub_reg_shift(cd, Xd, Xn, Xm, s, a)   emit_addsub_reg(cd, 1, 1, 0, s, Xm, a, Xn, Xd)
 
#define emit_add_reg32(cd, Xd, Xn, Xm)   emit_addsub_reg(cd, 0, 0, 0, 0, Xm, 0, Xn, Xd)
 
#define emit_sub_reg32(cd, Xd, Xn, Xm)   emit_addsub_reg(cd, 0, 1, 0, 0, Xm, 0, Xn, Xd)
 
#define emit_csel(cd, Xd, Xn, Xm, cond)   emit_cond_select(cd, 1, 0, 0, Xm, cond, 0, Xn, Xd)
 
#define emit_csel32(cd, Xd, Xn, Xm, cond)   emit_cond_select(cd, 0, 0, 0, Xm, cond, 0, Xn, Xd)
 
#define emit_csinc(cd, Xd, Xn, Xm, cond)   emit_cond_select(cd, 1, 0, 0, Xm, cond, 1, Xn, Xd)
 
#define emit_cset(cd, Xd, cond)   emit_csinc(cd, Xd, 31, 31, INVERT(cond))
 
#define emit_csinv(cd, Xd, Xn, Xm, cond)   emit_cond_select(cd, 1, 1, 0, Xm, cond, 0, Xn, Xd)
 
#define emit_csetm(cd, Xd, cond)   emit_csinv(cd, Xd, 31, 31, INVERT(cond))
 
#define emit_csneg32(cd, Wd, Wn, Wm, cond)   emit_cond_select(cd, 0, 1, 0, Wm, cond, 1, Wn, Wd)
 
#define emit_sdiv(cd, Xd, Xn, Xm)   emit_dp2(cd, 1, 0, Xm, 3, Xn, Xd)
 
#define emit_sdiv32(cd, Wd, Wn, Wm)   emit_dp2(cd, 0, 0, Wm, 3, Wn, Wd)
 
#define emit_asr(cd, Xd, Xn, Xm)   emit_dp2(cd, 1, 0, Xm, 10, Xn, Xd)
 
#define emit_asr32(cd, Wd, Wn, Wm)   emit_dp2(cd, 0, 0, Wm, 10, Wn, Wd)
 
#define emit_lsl(cd, Xd, Xn, Xm)   emit_dp2(cd, 1, 0, Xm, 8, Xn, Xd)
 
#define emit_lsl32(cd, Wd, Wn, Wm)   emit_dp2(cd, 0, 0, Wm, 8, Wn, Wd)
 
#define emit_lsr(cd, Xd, Xn, Xm)   emit_dp2(cd, 1, 0, Xm, 9, Xn, Xd)
 
#define emit_lsr32(cd, Wd, Wn, Wm)   emit_dp2(cd, 0, 0, Wm, 9, Wn, Wd)
 
#define emit_madd(cd, Xd, Xn, Xm, Xa)   emit_dp3(cd, 1, 0, Xm, 0, Xa, Xn, Xd)
 
#define emit_madd32(cd, Xd, Xn, Xm, Xa)   emit_dp3(cd, 0, 0, Xm, 0, Xa, Xn, Xd)
 
#define emit_msub(cd, Xd, Xn, Xm, Xa)   emit_dp3(cd, 1, 0, Xm, 1, Xa, Xn, Xd)
 
#define emit_msub32(cd, Xd, Xn, Xm, Xa)   emit_dp3(cd, 0, 0, Xm, 1, Xa, Xn, Xd)
 
#define emit_mul(cd, Xd, Xn, Xm)   emit_madd(cd, Xd, Xn, Xm, 31)
 
#define emit_mul32(cd, Xd, Xn, Xm)   emit_madd32(cd, Xd, Xn, Xm, 31)
 
#define emit_orr_sreg(cd, Xd, Xn, Xm)   emit_logical_sreg(cd, 1, 1, 0, 0, Xm, 0, Xn, Xd)
 
#define emit_orr_sreg32(cd, Wd, Wn, Wm)   emit_logical_sreg(cd, 0, 1, 0, 0, Wm, 0, Wn, Wd)
 
#define emit_ands_sreg(cd, Xd, Xn, Xm)   emit_logical_sreg(cd, 1, 3, 0, 0, Xm, 0, Xn, Xd)
 
#define emit_ands_sreg32(cd, Wd, Wn, Wm)   emit_logical_sreg(cd, 0, 3, 0, 0, Wm, 0, Wn, Wd)
 
#define emit_and_sreg(cd, Xd, Xn, Xm)   emit_logical_sreg(cd, 1, 0, 0, 0, Xm, 0, Xn, Xd)
 
#define emit_and_sreg32(cd, Wd, Wn, Wm)   emit_logical_sreg(cd, 0, 0, 0, 0, Wm, 0, Wn, Wd)
 
#define emit_eor_sreg(cd, Xd, Xn, Xm)   emit_logical_sreg(cd, 1, 2, 0, 0, Xm, 0, Xn, Xd)
 
#define emit_eor_sreg32(cd, Wd, Wn, Wm)   emit_logical_sreg(cd, 0, 2, 0, 0, Wm, 0, Wn, Wd)
 
#define emit_mov_reg(cd, Xd, Xm)   emit_orr_sreg(cd, Xd, 31, Xm)
 
#define emit_mov_reg32(cd, Wd, Wm)   emit_orr_sreg32(cd, Wd, 31, Wm)
 
#define emit_tst_sreg(cd, Xn, Xm)   emit_ands_sreg(cd, 31, Xn, Xm)
 
#define emit_tst_sreg32(cd, Wn, Wm)   emit_ands_sreg32(cd, 31, Wn, Wm)
 
#define emit_clr(cd, Xd)   emit_eor_sreg(cd, Xd, Xd, Xd)
 
#define emit_fmovs(cd, Sd, Sn)   emit_fp_dp1(cd, 0, 0, 0, 0, Sn, Sd)
 
#define emit_fmovd(cd, Dd, Dn)   emit_fp_dp1(cd, 0, 0, 1, 0, Dn, Dd)
 
#define emit_fnegs(cd, Sd, Sn)   emit_fp_dp1(cd, 0, 0, 0, 2, Sn, Sd)
 
#define emit_fnegd(cd, Dd, Dn)   emit_fp_dp1(cd, 0, 0, 1, 2, Dn, Dd)
 
#define emit_fmuls(cd, Sd, Sn, Sm)   emit_fp_dp2(cd, 0, 0, 0, Sm, 0, Sn, Sd)
 
#define emit_fmuld(cd, Dd, Dn, Dm)   emit_fp_dp2(cd, 0, 0, 1, Dm, 0, Dn, Dd)
 
#define emit_fdivs(cd, Sd, Sn, Sm)   emit_fp_dp2(cd, 0, 0, 0, Sm, 1, Sn, Sd)
 
#define emit_fdivd(cd, Dd, Dn, Dm)   emit_fp_dp2(cd, 0, 0, 1, Dm, 1, Dn, Dd)
 
#define emit_fadds(cd, Sd, Sn, Sm)   emit_fp_dp2(cd, 0, 0, 0, Sm, 2, Sn, Sd)
 
#define emit_faddd(cd, Dd, Dn, Dm)   emit_fp_dp2(cd, 0, 0, 1, Dm, 2, Dn, Dd)
 
#define emit_fsubs(cd, Sd, Sn, Sm)   emit_fp_dp2(cd, 0, 0, 0, Sm, 3, Sn, Sd)
 
#define emit_fsubd(cd, Dd, Dn, Dm)   emit_fp_dp2(cd, 0, 0, 1, Dm, 3, Dn, Dd)
 
#define emit_scvtf(cd, sf, type, Rn, Rd)   emit_conversion_fp(cd, sf, 0, type, 0, 2, Rn, Rd)
 
#define emit_fcvtzs(cd, sf, type, Rn, Rd)   emit_conversion_fp(cd, sf, 0, type, 3, 0, Rn, Rd)
 
#define emit_dmb(cd, option)   emit_sync(cd, option, 1);
 
#define emit_dsb(cd, option)   emit_sync(cd, option, 0);
 

Functions

void emit_cmp_branch_imm (codegendata *cd, u1 sf, u1 op, s4 imm, u1 Rt)
 
void emit_cond_branch_imm (codegendata *cd, s4 imm19, u1 cond)
 
void emit_unc_branch_imm (codegendata *cd, u1 op, s4 imm26)
 
void emit_unc_branch_reg (codegendata *cd, u1 opc, u1 op2, u1 op3, u1 Rn, u1 op4)
 
void emit_mov_wide_imm (codegendata *cd, u1 sf, u1 opc, u1 hw, u2 imm16, u1 Rd)
 
void emit_ldstr_reg_usc (codegendata *cd, u1 size, u1 v, u1 opc, s2 imm9, u1 Rt, u1 Rn)
 
void emit_ldstr_reg_reg (codegendata *cd, u1 size, u1 v, u1 opc, u1 Rm, u1 option, u1 S, u1 Rn, u1 Rt)
 
void emit_ldstr_reg_us (codegendata *cd, u1 size, u1 v, u1 opc, u2 imm12, u1 Rt, u1 Rn)
 
void emit_ldstr_ambigous (codegendata *cd, u1 size, u1 v, u1 opc, s2 imm, u1 Rt, u1 Rn)
 
void emit_addsub_imm (codegendata *cd, u1 sf, u1 op, u1 S, u1 shift, u2 imm12, u1 Rn, u1 Rd)
 
void emit_addsub_imm (codegendata *cd, u1 sf, u1 op, u1 Xd, u1 Xn, u4 imm)
 
void emit_bitfield (codegendata *cd, u1 sf, u1 opc, u1 N, u1 immr, u1 imms, u1 Rn, u1 Rd)
 
void emit_logical_imm (codegendata *cd, u1 sf, u1 opc, u2 imm, u1 Rn, u1 Rd)
 
void emit_pcrel (codegendata *cd, u1 op, u1 immlo, u4 immhi, u1 Rd)
 
void emit_addsub_reg (codegendata *cd, u1 sf, u1 op, u1 S, u1 shift, u1 Rm, u1 imm6, u1 Rn, u1 Rd)
 
void emit_lda (codegendata *cd, u1 Xd, u1 Xn, s4 imm)
 
void emit_cond_select (codegendata *cd, u1 sf, u1 op, u1 S, u1 Rm, u1 cond, u1 op2, u1 Rn, u1 Rd)
 
void emit_dp2 (codegendata *cd, u1 sf, u1 S, u1 Rm, u1 opc, u1 Rn, u1 Rd)
 
void emit_dp3 (codegendata *cd, u1 sf, u1 op31, u1 Rm, u1 o0, u1 Ra, u1 Rn, u1 Rd)
 
void emit_logical_sreg (codegendata *cd, u1 sf, u1 opc, u1 shift, u1 N, u1 Rm, u1 imm6, u1 Rn, u1 Rd)
 
void emit_mov (codegendata *cd, u1 Xd, u1 Xm)
 
void emit_fp_cmp (codegendata *cd, u1 type, u1 Rm, u1 Rn, u1 opc)
 
void emit_fp_dp1 (codegendata *cd, u1 M, u1 S, u1 type, u1 opc, u1 Rn, u1 Rd)
 
void emit_fp_dp2 (codegendata *cd, u1 M, u1 S, u1 type, u1 Rm, u1 opc, u1 Rn, u1 Rd)
 
void emit_fcvt (codegendata *cd, u1 type, u1 opc, u1 Rn, u1 Rd)
 
void emit_conversion_fp (codegendata *cd, u1 sf, u1 S, u1 type, u1 rmode, u1 opc, u1 Rn, u1 Rd)
 
void emit_trap (codegendata *cd, u1 Xd, int type)
 
void emit_sync (codegendata *cd, u1 option, u1 opc)
 
void emit_nop (codegendata *cd)
 

Macro Definition Documentation

#define CODE_ASR   2

Definition at line 44 of file emit-asm.hpp.

#define CODE_LSL   0

Definition at line 42 of file emit-asm.hpp.

#define CODE_LSR   1

Definition at line 43 of file emit-asm.hpp.

#define COND_AL   0xe

Definition at line 64 of file emit-asm.hpp.

#define COND_CC   0x3

Definition at line 53 of file emit-asm.hpp.

#define COND_CS   0x2

Definition at line 52 of file emit-asm.hpp.

#define COND_EQ   0x0

Definition at line 50 of file emit-asm.hpp.

#define COND_GE   0xa

Definition at line 60 of file emit-asm.hpp.

#define COND_GT   0xc

Definition at line 62 of file emit-asm.hpp.

#define COND_HI   0x8

Definition at line 58 of file emit-asm.hpp.

#define COND_LE   0xd

Definition at line 63 of file emit-asm.hpp.

#define COND_LS   0x9

Definition at line 59 of file emit-asm.hpp.

#define COND_LT   0xb

Definition at line 61 of file emit-asm.hpp.

#define COND_MI   0x4

Definition at line 54 of file emit-asm.hpp.

#define COND_NE   0x1

Definition at line 51 of file emit-asm.hpp.

#define COND_NV   0xf

Definition at line 65 of file emit-asm.hpp.

#define COND_PL   0x5

Definition at line 55 of file emit-asm.hpp.

#define COND_VC   0x7

Definition at line 57 of file emit-asm.hpp.

#define COND_VS   0x6

Definition at line 56 of file emit-asm.hpp.

#define emit_add_imm (   cd,
  Xd,
  Xn,
  imm 
)    emit_addsub_imm(cd, 1, 0, Xd, Xn, imm)

Definition at line 256 of file emit-asm.hpp.

#define emit_add_imm32 (   cd,
  Xd,
  Xn,
  imm 
)    emit_addsub_imm(cd, 0, 0, Xd, Xn, imm)

Definition at line 257 of file emit-asm.hpp.

#define emit_add_reg (   cd,
  Xd,
  Xn,
  Xm 
)    emit_addsub_reg(cd, 1, 0, 0, 0, Xm, 0, Xn, Xd)

Definition at line 354 of file emit-asm.hpp.

#define emit_add_reg32 (   cd,
  Xd,
  Xn,
  Xm 
)    emit_addsub_reg(cd, 0, 0, 0, 0, Xm, 0, Xn, Xd)

Definition at line 366 of file emit-asm.hpp.

#define emit_add_reg_shift (   cd,
  Xd,
  Xn,
  Xm,
  s,
 
)    emit_addsub_reg(cd, 1, 0, 0, s, Xm, a, Xn, Xd)

Definition at line 363 of file emit-asm.hpp.

#define emit_adds_imm (   cd,
  Xd,
  Xn,
  imm 
)    emit_addsub_imm(cd, 1, 0, 1, 0, imm, Xn, Xd)

Definition at line 265 of file emit-asm.hpp.

#define emit_adds_imm32 (   cd,
  Xd,
  Xn,
  imm 
)    emit_addsub_imm(cd, 0, 0, 1, 0, imm, Xn, Xd)

Definition at line 266 of file emit-asm.hpp.

#define emit_adr (   cd,
  Xd,
  immhi 
)    emit_pcrel(cd, 0, 0, immhi, Xd)

Definition at line 341 of file emit-asm.hpp.

#define emit_and_imm (   cd,
  Xd,
  Xn,
  imm 
)    emit_logical_imm(cd, 1, 0, imm, Xn, Xd)

Definition at line 328 of file emit-asm.hpp.

#define emit_and_imm32 (   cd,
  Wd,
  Wn,
  imm 
)    emit_logical_imm(cd, 0, 0, imm, Wn, Wd)

Definition at line 329 of file emit-asm.hpp.

#define emit_and_sreg (   cd,
  Xd,
  Xn,
  Xm 
)    emit_logical_sreg(cd, 1, 0, 0, 0, Xm, 0, Xn, Xd)

Definition at line 460 of file emit-asm.hpp.

#define emit_and_sreg32 (   cd,
  Wd,
  Wn,
  Wm 
)    emit_logical_sreg(cd, 0, 0, 0, 0, Wm, 0, Wn, Wd)

Definition at line 461 of file emit-asm.hpp.

#define emit_ands_sreg (   cd,
  Xd,
  Xn,
  Xm 
)    emit_logical_sreg(cd, 1, 3, 0, 0, Xm, 0, Xn, Xd)

Definition at line 457 of file emit-asm.hpp.

#define emit_ands_sreg32 (   cd,
  Wd,
  Wn,
  Wm 
)    emit_logical_sreg(cd, 0, 3, 0, 0, Wm, 0, Wn, Wd)

Definition at line 458 of file emit-asm.hpp.

#define emit_asr (   cd,
  Xd,
  Xn,
  Xm 
)    emit_dp2(cd, 1, 0, Xm, 10, Xn, Xd)

Definition at line 414 of file emit-asm.hpp.

#define emit_asr32 (   cd,
  Wd,
  Wn,
  Wm 
)    emit_dp2(cd, 0, 0, Wm, 10, Wn, Wd)

Definition at line 415 of file emit-asm.hpp.

#define emit_asr_imm (   cd,
  Xd,
  Xn,
  shift 
)    emit_sbfm(cd, Xd, Xn, shift, 63)

Definition at line 307 of file emit-asm.hpp.

#define emit_asr_imm32 (   cd,
  Wd,
  Wn,
  shift 
)    emit_sbfm32(cd, Wd, Wn, shift, 31)

Definition at line 308 of file emit-asm.hpp.

#define emit_blr_imm (   cd,
  imm 
)    emit_unc_branch_imm(cd, 1, imm)

Definition at line 114 of file emit-asm.hpp.

#define emit_blr_reg (   cd,
  Xn 
)    emit_unc_branch_reg(cd, 1, 31, 0, Xn, 0)

Definition at line 127 of file emit-asm.hpp.

#define emit_br_cc (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_CC)

Definition at line 91 of file emit-asm.hpp.

#define emit_br_cs (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_CS)

Definition at line 90 of file emit-asm.hpp.

#define emit_br_eq (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_EQ)

Definition at line 88 of file emit-asm.hpp.

#define emit_br_ge (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_GE)

Definition at line 98 of file emit-asm.hpp.

#define emit_br_gt (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_GT)

Definition at line 100 of file emit-asm.hpp.

#define emit_br_hi (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_HI)

Definition at line 96 of file emit-asm.hpp.

#define emit_br_imm (   cd,
  imm 
)    emit_unc_branch_imm(cd, 0, imm)

Definition at line 113 of file emit-asm.hpp.

#define emit_br_le (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_LE)

Definition at line 101 of file emit-asm.hpp.

#define emit_br_ls (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_LS)

Definition at line 97 of file emit-asm.hpp.

#define emit_br_lt (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_LT)

Definition at line 99 of file emit-asm.hpp.

#define emit_br_mi (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_MI)

Definition at line 92 of file emit-asm.hpp.

#define emit_br_ne (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_NE)

Definition at line 89 of file emit-asm.hpp.

#define emit_br_pl (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_PL)

Definition at line 93 of file emit-asm.hpp.

#define emit_br_reg (   cd,
  Xn 
)    emit_unc_branch_reg(cd, 0, 31, 0, Xn, 0)

Definition at line 129 of file emit-asm.hpp.

#define emit_br_vc (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_VC)

Definition at line 95 of file emit-asm.hpp.

#define emit_br_vs (   cd,
  imm 
)    emit_cond_branch_imm(cd, imm, COND_VS)

Definition at line 94 of file emit-asm.hpp.

#define emit_cbnz (   cd,
  Xt,
  imm 
)    emit_cmp_branch_imm(cd, 1, 1, imm, Xt)

Definition at line 77 of file emit-asm.hpp.

#define emit_clr (   cd,
  Xd 
)    emit_eor_sreg(cd, Xd, Xd, Xd)

Definition at line 472 of file emit-asm.hpp.

#define emit_cmn_imm (   cd,
  Xn,
  imm 
)    emit_adds_imm(cd, 31, Xn, imm)

Definition at line 273 of file emit-asm.hpp.

#define emit_cmn_imm32 (   cd,
  Wn,
  imm 
)    emit_adds_imm32(cd, 31, Wn, imm)

Definition at line 274 of file emit-asm.hpp.

#define emit_cmp_imm (   cd,
  Xn,
  imm 
)    emit_subs_imm(cd, 31, Xn, imm)

Definition at line 270 of file emit-asm.hpp.

#define emit_cmp_imm32 (   cd,
  Xn,
  imm 
)    emit_subs_imm32(cd, 31, Xn, imm)

Definition at line 271 of file emit-asm.hpp.

#define emit_cmp_reg (   cd,
  Xn,
  Xm 
)    emit_subs_reg(cd, 31, Xn, Xm)

Definition at line 360 of file emit-asm.hpp.

#define emit_cmp_reg32 (   cd,
  Xn,
  Xm 
)    emit_subs_reg32(cd, 31, Xn, Xm)

Definition at line 361 of file emit-asm.hpp.

#define emit_csel (   cd,
  Xd,
  Xn,
  Xm,
  cond 
)    emit_cond_select(cd, 1, 0, 0, Xm, cond, 0, Xn, Xd)

Definition at line 391 of file emit-asm.hpp.

#define emit_csel32 (   cd,
  Xd,
  Xn,
  Xm,
  cond 
)    emit_cond_select(cd, 0, 0, 0, Xm, cond, 0, Xn, Xd)

Definition at line 392 of file emit-asm.hpp.

#define emit_cset (   cd,
  Xd,
  cond 
)    emit_csinc(cd, Xd, 31, 31, INVERT(cond))

Definition at line 394 of file emit-asm.hpp.

#define emit_csetm (   cd,
  Xd,
  cond 
)    emit_csinv(cd, Xd, 31, 31, INVERT(cond))

Definition at line 397 of file emit-asm.hpp.

#define emit_csinc (   cd,
  Xd,
  Xn,
  Xm,
  cond 
)    emit_cond_select(cd, 1, 0, 0, Xm, cond, 1, Xn, Xd)

Definition at line 393 of file emit-asm.hpp.

#define emit_csinv (   cd,
  Xd,
  Xn,
  Xm,
  cond 
)    emit_cond_select(cd, 1, 1, 0, Xm, cond, 0, Xn, Xd)

Definition at line 396 of file emit-asm.hpp.

#define emit_csneg32 (   cd,
  Wd,
  Wn,
  Wm,
  cond 
)    emit_cond_select(cd, 0, 1, 0, Wm, cond, 1, Wn, Wd)

Definition at line 399 of file emit-asm.hpp.

#define emit_dmb (   cd,
  option 
)    emit_sync(cd, option, 1);

Definition at line 578 of file emit-asm.hpp.

#define emit_dsb (   cd,
  option 
)    emit_sync(cd, option, 0);

Definition at line 579 of file emit-asm.hpp.

#define emit_eor_sreg (   cd,
  Xd,
  Xn,
  Xm 
)    emit_logical_sreg(cd, 1, 2, 0, 0, Xm, 0, Xn, Xd)

Definition at line 463 of file emit-asm.hpp.

#define emit_eor_sreg32 (   cd,
  Wd,
  Wn,
  Wm 
)    emit_logical_sreg(cd, 0, 2, 0, 0, Wm, 0, Wn, Wd)

Definition at line 464 of file emit-asm.hpp.

#define emit_faddd (   cd,
  Dd,
  Dn,
  Dm 
)    emit_fp_dp2(cd, 0, 0, 1, Dm, 2, Dn, Dd)

Definition at line 525 of file emit-asm.hpp.

#define emit_fadds (   cd,
  Sd,
  Sn,
  Sm 
)    emit_fp_dp2(cd, 0, 0, 0, Sm, 2, Sn, Sd)

Definition at line 524 of file emit-asm.hpp.

#define emit_fcvtzs (   cd,
  sf,
  type,
  Rn,
  Rd 
)    emit_conversion_fp(cd, sf, 0, type, 3, 0, Rn, Rd)

Definition at line 552 of file emit-asm.hpp.

#define emit_fdivd (   cd,
  Dd,
  Dn,
  Dm 
)    emit_fp_dp2(cd, 0, 0, 1, Dm, 1, Dn, Dd)

Definition at line 522 of file emit-asm.hpp.

#define emit_fdivs (   cd,
  Sd,
  Sn,
  Sm 
)    emit_fp_dp2(cd, 0, 0, 0, Sm, 1, Sn, Sd)

Definition at line 521 of file emit-asm.hpp.

#define emit_fmovd (   cd,
  Dd,
  Dn 
)    emit_fp_dp1(cd, 0, 0, 1, 0, Dn, Dd)

Definition at line 503 of file emit-asm.hpp.

#define emit_fmovs (   cd,
  Sd,
  Sn 
)    emit_fp_dp1(cd, 0, 0, 0, 0, Sn, Sd)

Definition at line 502 of file emit-asm.hpp.

#define emit_fmuld (   cd,
  Dd,
  Dn,
  Dm 
)    emit_fp_dp2(cd, 0, 0, 1, Dm, 0, Dn, Dd)

Definition at line 519 of file emit-asm.hpp.

#define emit_fmuls (   cd,
  Sd,
  Sn,
  Sm 
)    emit_fp_dp2(cd, 0, 0, 0, Sm, 0, Sn, Sd)

Definition at line 518 of file emit-asm.hpp.

#define emit_fnegd (   cd,
  Dd,
  Dn 
)    emit_fp_dp1(cd, 0, 0, 1, 2, Dn, Dd)

Definition at line 506 of file emit-asm.hpp.

#define emit_fnegs (   cd,
  Sd,
  Sn 
)    emit_fp_dp1(cd, 0, 0, 0, 2, Sn, Sd)

Definition at line 505 of file emit-asm.hpp.

#define emit_fp_ldr_imm (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 3, 1, 1, imm, Xt, Xn)

Definition at line 222 of file emit-asm.hpp.

#define emit_fp_ldr_imm32 (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 2, 1, 1, imm, Xt, Xn)

Definition at line 228 of file emit-asm.hpp.

#define emit_fp_str_imm (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 3, 1, 0, imm, Xt, Xn)

Definition at line 223 of file emit-asm.hpp.

#define emit_fp_str_imm32 (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 2, 1, 0, imm, Xt, Xn)

Definition at line 229 of file emit-asm.hpp.

#define emit_fsubd (   cd,
  Dd,
  Dn,
  Dm 
)    emit_fp_dp2(cd, 0, 0, 1, Dm, 3, Dn, Dd)

Definition at line 528 of file emit-asm.hpp.

#define emit_fsubs (   cd,
  Sd,
  Sn,
  Sm 
)    emit_fp_dp2(cd, 0, 0, 0, Sm, 3, Sn, Sd)

Definition at line 527 of file emit-asm.hpp.

#define emit_ldr_imm (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 3, 0, 1, imm, Xt, Xn)

Definition at line 219 of file emit-asm.hpp.

#define emit_ldr_imm32 (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 2, 0, 1, imm, Xt, Xn)

Definition at line 225 of file emit-asm.hpp.

#define emit_ldr_reg (   cd,
  Xt,
  Xn,
  Xm 
)    emit_ldstr_reg_reg(cd, 3, 0, 1, Xm, 3, 0, Xn, Xt)

Definition at line 170 of file emit-asm.hpp.

#define emit_ldrb_imm (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 0, 0, 1, imm, Xt, Xn)

Definition at line 213 of file emit-asm.hpp.

#define emit_ldrh_imm (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 1, 0, 1, imm, Xt, Xn)

Definition at line 210 of file emit-asm.hpp.

#define emit_ldrsb_imm32 (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 0, 0, 3, imm, Xt, Xn)

Definition at line 216 of file emit-asm.hpp.

#define emit_ldrsh_imm32 (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 1, 0, 3, imm, Xt, Xn)

Definition at line 217 of file emit-asm.hpp.

#define emit_lsl (   cd,
  Xd,
  Xn,
  Xm 
)    emit_dp2(cd, 1, 0, Xm, 8, Xn, Xd)

Definition at line 417 of file emit-asm.hpp.

#define emit_lsl32 (   cd,
  Wd,
  Wn,
  Wm 
)    emit_dp2(cd, 0, 0, Wm, 8, Wn, Wd)

Definition at line 418 of file emit-asm.hpp.

#define emit_lsl_imm (   cd,
  Xd,
  Xn,
  shift 
)    emit_ubfm(cd, Xd, Xn, ((u1)(-(shift))) % 64, 63 - (shift))

Definition at line 292 of file emit-asm.hpp.

#define emit_lsl_imm32 (   cd,
  Wd,
  Wn,
  shift 
)    emit_ubfm32(cd, Wd, Wn, ((u1)(-(shift))) % 32, 31 - (shift))

Definition at line 293 of file emit-asm.hpp.

#define emit_lsr (   cd,
  Xd,
  Xn,
  Xm 
)    emit_dp2(cd, 1, 0, Xm, 9, Xn, Xd)

Definition at line 420 of file emit-asm.hpp.

#define emit_lsr32 (   cd,
  Wd,
  Wn,
  Wm 
)    emit_dp2(cd, 0, 0, Wm, 9, Wn, Wd)

Definition at line 421 of file emit-asm.hpp.

#define emit_lsr_imm (   cd,
  Xd,
  Xn,
  shift 
)    emit_ubfm(cd, Xd, Xn, shift, 63)

Definition at line 295 of file emit-asm.hpp.

#define emit_lsr_imm32 (   cd,
  Wd,
  Wn,
  shift 
)    emit_ubfm32(cd, Wd, Wn, shift, 31)

Definition at line 296 of file emit-asm.hpp.

#define emit_madd (   cd,
  Xd,
  Xn,
  Xm,
  Xa 
)    emit_dp3(cd, 1, 0, Xm, 0, Xa, Xn, Xd)

Definition at line 433 of file emit-asm.hpp.

#define emit_madd32 (   cd,
  Xd,
  Xn,
  Xm,
  Xa 
)    emit_dp3(cd, 0, 0, Xm, 0, Xa, Xn, Xd)

Definition at line 434 of file emit-asm.hpp.

#define emit_mov_imm (   cd,
  Xd,
  imm 
)    emit_mov_wide_imm(cd, 1, 2, 0, imm, Xd)

Definition at line 142 of file emit-asm.hpp.

#define emit_mov_imm32 (   cd,
  Xd,
  imm 
)    emit_mov_wide_imm(cd, 0, 2, 0, imm, Xd)

Definition at line 143 of file emit-asm.hpp.

#define emit_mov_reg (   cd,
  Xd,
  Xm 
)    emit_orr_sreg(cd, Xd, 31, Xm)

Definition at line 466 of file emit-asm.hpp.

#define emit_mov_reg32 (   cd,
  Wd,
  Wm 
)    emit_orr_sreg32(cd, Wd, 31, Wm)

Definition at line 467 of file emit-asm.hpp.

#define emit_mov_sp (   cd,
  Xd,
  Xn 
)    emit_add_imm(cd, Xd, Xn, 0)

Definition at line 268 of file emit-asm.hpp.

#define emit_movk_imm (   cd,
  Xd,
  imm,
  hw 
)    emit_mov_wide_imm(cd, 1, 3, hw, imm, Xd)

Definition at line 146 of file emit-asm.hpp.

#define emit_movk_imm32 (   cd,
  Xd,
  imm,
  hw 
)    emit_mov_wide_imm(cd, 0, 3, hw, imm, Xd)

Definition at line 147 of file emit-asm.hpp.

#define emit_movn_imm (   cd,
  Xd,
  imm 
)    emit_mov_wide_imm(cd, 1, 0, 0, imm, Xd)

Definition at line 144 of file emit-asm.hpp.

#define emit_movn_imm32 (   cd,
  Xd,
  imm 
)    emit_mov_wide_imm(cd, 0, 0, 0, imm, Xd)

Definition at line 145 of file emit-asm.hpp.

#define emit_msub (   cd,
  Xd,
  Xn,
  Xm,
  Xa 
)    emit_dp3(cd, 1, 0, Xm, 1, Xa, Xn, Xd)

Definition at line 436 of file emit-asm.hpp.

#define emit_msub32 (   cd,
  Xd,
  Xn,
  Xm,
  Xa 
)    emit_dp3(cd, 0, 0, Xm, 1, Xa, Xn, Xd)

Definition at line 437 of file emit-asm.hpp.

#define emit_mul (   cd,
  Xd,
  Xn,
  Xm 
)    emit_madd(cd, Xd, Xn, Xm, 31)

Definition at line 439 of file emit-asm.hpp.

#define emit_mul32 (   cd,
  Xd,
  Xn,
  Xm 
)    emit_madd32(cd, Xd, Xn, Xm, 31)

Definition at line 440 of file emit-asm.hpp.

#define emit_orr_sreg (   cd,
  Xd,
  Xn,
  Xm 
)    emit_logical_sreg(cd, 1, 1, 0, 0, Xm, 0, Xn, Xd)

Definition at line 454 of file emit-asm.hpp.

#define emit_orr_sreg32 (   cd,
  Wd,
  Wn,
  Wm 
)    emit_logical_sreg(cd, 0, 1, 0, 0, Wm, 0, Wn, Wd)

Definition at line 455 of file emit-asm.hpp.

#define emit_ret (   cd)    emit_unc_branch_reg(cd, 2, 31, 0, 30, 0)

Definition at line 126 of file emit-asm.hpp.

#define emit_sbfm (   cd,
  Xd,
  Xn,
  immr,
  imms 
)    emit_bitfield(cd, 1, 0, 1, immr, imms, Xn, Xd)

Definition at line 301 of file emit-asm.hpp.

#define emit_sbfm32 (   cd,
  Wd,
  Wn,
  immr,
  imms 
)    emit_bitfield(cd, 0, 0, 0, immr, imms, Wn, Wd)

Definition at line 302 of file emit-asm.hpp.

#define emit_scvtf (   cd,
  sf,
  type,
  Rn,
  Rd 
)    emit_conversion_fp(cd, sf, 0, type, 0, 2, Rn, Rd)

Definition at line 551 of file emit-asm.hpp.

#define emit_sdiv (   cd,
  Xd,
  Xn,
  Xm 
)    emit_dp2(cd, 1, 0, Xm, 3, Xn, Xd)

Definition at line 411 of file emit-asm.hpp.

#define emit_sdiv32 (   cd,
  Wd,
  Wn,
  Wm 
)    emit_dp2(cd, 0, 0, Wm, 3, Wn, Wd)

Definition at line 412 of file emit-asm.hpp.

#define emit_str_imm (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 3, 0, 0, imm, Xt, Xn)

Definition at line 220 of file emit-asm.hpp.

#define emit_str_imm32 (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 2, 0, 0, imm, Xt, Xn)

Definition at line 226 of file emit-asm.hpp.

#define emit_strb_imm (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 0, 0, 0, imm, Xt, Xn)

Definition at line 214 of file emit-asm.hpp.

#define emit_strh_imm (   cd,
  Xt,
  Xn,
  imm 
)    emit_ldstr_ambigous(cd, 1, 0, 0, imm, Xt, Xn)

Definition at line 211 of file emit-asm.hpp.

#define emit_sub_imm (   cd,
  Xd,
  Xn,
  imm 
)    emit_addsub_imm(cd, 1, 1, Xd, Xn, imm)

Definition at line 259 of file emit-asm.hpp.

#define emit_sub_imm32 (   cd,
  Xd,
  Xn,
  imm 
)    emit_addsub_imm(cd, 0, 1, Xd, Xn, imm)

Definition at line 260 of file emit-asm.hpp.

#define emit_sub_reg (   cd,
  Xd,
  Xn,
  Xm 
)    emit_addsub_reg(cd, 1, 1, 0, 0, Xm, 0, Xn, Xd)

Definition at line 355 of file emit-asm.hpp.

#define emit_sub_reg32 (   cd,
  Xd,
  Xn,
  Xm 
)    emit_addsub_reg(cd, 0, 1, 0, 0, Xm, 0, Xn, Xd)

Definition at line 367 of file emit-asm.hpp.

#define emit_sub_reg_shift (   cd,
  Xd,
  Xn,
  Xm,
  s,
 
)    emit_addsub_reg(cd, 1, 1, 0, s, Xm, a, Xn, Xd)

Definition at line 364 of file emit-asm.hpp.

#define emit_subs_imm (   cd,
  Xd,
  Xn,
  imm 
)    emit_addsub_imm(cd, 1, 1, 1, 0, imm, Xn, Xd)

Definition at line 262 of file emit-asm.hpp.

#define emit_subs_imm32 (   cd,
  Xd,
  Xn,
  imm 
)    emit_addsub_imm(cd, 0, 1, 1, 0, imm, Xn, Xd)

Definition at line 263 of file emit-asm.hpp.

#define emit_subs_reg (   cd,
  Xd,
  Xn,
  Xm 
)    emit_addsub_reg(cd, 1, 1, 1, 0, Xm, 0, Xn, Xd)

Definition at line 357 of file emit-asm.hpp.

#define emit_subs_reg32 (   cd,
  Xd,
  Xn,
  Xm 
)    emit_addsub_reg(cd, 0, 1, 1, 0, Xm, 0, Xn, Xd)

Definition at line 358 of file emit-asm.hpp.

#define emit_sxtb (   cd,
  Wd,
  Wn 
)    emit_sbfm32(cd, Wd, Wn, 0, 7)

Definition at line 304 of file emit-asm.hpp.

#define emit_sxth (   cd,
  Wd,
  Wn 
)    emit_sbfm32(cd, Wd, Wn, 0, 15)

Definition at line 305 of file emit-asm.hpp.

#define emit_sxtw (   cd,
  Xd,
  Wn 
)    emit_sbfm(cd, Xd, Wn, 0, 31)

Definition at line 310 of file emit-asm.hpp.

#define emit_tst_sreg (   cd,
  Xn,
  Xm 
)    emit_ands_sreg(cd, 31, Xn, Xm)

Definition at line 469 of file emit-asm.hpp.

#define emit_tst_sreg32 (   cd,
  Wn,
  Wm 
)    emit_ands_sreg32(cd, 31, Wn, Wm)

Definition at line 470 of file emit-asm.hpp.

#define emit_ubfm (   cd,
  Xd,
  Xn,
  immr,
  imms 
)    emit_bitfield(cd, 1, 2, 1, immr, imms, Xn, Xd)

Definition at line 289 of file emit-asm.hpp.

#define emit_ubfm32 (   cd,
  Wd,
  Wn,
  immr,
  imms 
)    emit_bitfield(cd, 0, 2, 0, immr, imms, Wn, Wd)

Definition at line 290 of file emit-asm.hpp.

#define emit_uxtb (   cd,
  Wd,
  Wn 
)    emit_ubfm32(cd, Wd, Wn, 0, 7)

Definition at line 298 of file emit-asm.hpp.

#define emit_uxth (   cd,
  Wd,
  Wn 
)    emit_ubfm32(cd, Wd, Wn, 0, 15)

Definition at line 299 of file emit-asm.hpp.

#define INVERT (   x)    ((x) ^ 1)

Definition at line 47 of file emit-asm.hpp.

#define LSL (   x,
 
)    ((x) << a)

Definition at line 38 of file emit-asm.hpp.

#define LSR (   x,
 
)    ((x) >> a)

Definition at line 39 of file emit-asm.hpp.

Function Documentation

void emit_addsub_imm ( codegendata cd,
u1  sf,
u1  op,
u1  S,
u1  shift,
u2  imm12,
u1  Rn,
u1  Rd 
)
inline

Definition at line 234 of file emit-asm.hpp.

void emit_addsub_imm ( codegendata cd,
u1  sf,
u1  op,
u1  Xd,
u1  Xn,
u4  imm 
)
inline

Definition at line 243 of file emit-asm.hpp.

void emit_addsub_reg ( codegendata cd,
u1  sf,
u1  op,
u1  S,
u1  shift,
u1  Rm,
u1  imm6,
u1  Rn,
u1  Rd 
)
inline

Definition at line 345 of file emit-asm.hpp.

void emit_bitfield ( codegendata cd,
u1  sf,
u1  opc,
u1  N,
u1  immr,
u1  imms,
u1  Rn,
u1  Rd 
)
inline

Definition at line 279 of file emit-asm.hpp.

void emit_cmp_branch_imm ( codegendata cd,
u1  sf,
u1  op,
s4  imm,
u1  Rt 
)
inline

Definition at line 70 of file emit-asm.hpp.

void emit_cond_branch_imm ( codegendata cd,
s4  imm19,
u1  cond 
)
inline

Definition at line 82 of file emit-asm.hpp.

void emit_cond_select ( codegendata cd,
u1  sf,
u1  op,
u1  S,
u1  Rm,
u1  cond,
u1  op2,
u1  Rn,
u1  Rd 
)
inline

Definition at line 383 of file emit-asm.hpp.

void emit_conversion_fp ( codegendata cd,
u1  sf,
u1  S,
u1  type,
u1  rmode,
u1  opc,
u1  Rn,
u1  Rd 
)
inline

Definition at line 543 of file emit-asm.hpp.

void emit_dp2 ( codegendata cd,
u1  sf,
u1  S,
u1  Rm,
u1  opc,
u1  Rn,
u1  Rd 
)
inline

Definition at line 403 of file emit-asm.hpp.

void emit_dp3 ( codegendata cd,
u1  sf,
u1  op31,
u1  Rm,
u1  o0,
u1  Ra,
u1  Rn,
u1  Rd 
)
inline

Definition at line 425 of file emit-asm.hpp.

void emit_fcvt ( codegendata cd,
u1  type,
u1  opc,
u1  Rn,
u1  Rd 
)
inline

Definition at line 533 of file emit-asm.hpp.

void emit_fp_cmp ( codegendata cd,
u1  type,
u1  Rm,
u1  Rn,
u1  opc 
)
inline

Definition at line 484 of file emit-asm.hpp.

void emit_fp_dp1 ( codegendata cd,
u1  M,
u1  S,
u1  type,
u1  opc,
u1  Rn,
u1  Rd 
)
inline

Definition at line 494 of file emit-asm.hpp.

void emit_fp_dp2 ( codegendata cd,
u1  M,
u1  S,
u1  type,
u1  Rm,
u1  opc,
u1  Rn,
u1  Rd 
)
inline

Definition at line 510 of file emit-asm.hpp.

void emit_lda ( codegendata cd,
u1  Xd,
u1  Xn,
s4  imm 
)
inline

Definition at line 372 of file emit-asm.hpp.

void emit_ldstr_ambigous ( codegendata cd,
u1  size,
u1  v,
u1  opc,
s2  imm,
u1  Rt,
u1  Rn 
)
inline

Definition at line 188 of file emit-asm.hpp.

void emit_ldstr_reg_reg ( codegendata cd,
u1  size,
u1  v,
u1  opc,
u1  Rm,
u1  option,
u1  S,
u1  Rn,
u1  Rt 
)
inline

Definition at line 162 of file emit-asm.hpp.

void emit_ldstr_reg_us ( codegendata cd,
u1  size,
u1  v,
u1  opc,
u2  imm12,
u1  Rt,
u1  Rn 
)
inline

Definition at line 175 of file emit-asm.hpp.

void emit_ldstr_reg_usc ( codegendata cd,
u1  size,
u1  v,
u1  opc,
s2  imm9,
u1  Rt,
u1  Rn 
)
inline

Definition at line 152 of file emit-asm.hpp.

void emit_logical_imm ( codegendata cd,
u1  sf,
u1  opc,
u2  imm,
u1  Rn,
u1  Rd 
)
inline

Definition at line 315 of file emit-asm.hpp.

void emit_logical_sreg ( codegendata cd,
u1  sf,
u1  opc,
u1  shift,
u1  N,
u1  Rm,
u1  imm6,
u1  Rn,
u1  Rd 
)
inline

Definition at line 445 of file emit-asm.hpp.

void emit_mov ( codegendata cd,
u1  Xd,
u1  Xm 
)
inline

Definition at line 474 of file emit-asm.hpp.

void emit_mov_wide_imm ( codegendata cd,
u1  sf,
u1  opc,
u1  hw,
u2  imm16,
u1  Rd 
)
inline

Definition at line 134 of file emit-asm.hpp.

void emit_nop ( codegendata cd)
inline

Definition at line 584 of file emit-asm.hpp.

void emit_pcrel ( codegendata cd,
u1  op,
u1  immlo,
u4  immhi,
u1  Rd 
)
inline

Definition at line 334 of file emit-asm.hpp.

void emit_sync ( codegendata cd,
u1  option,
u1  opc 
)
inline

Definition at line 572 of file emit-asm.hpp.

void emit_trap ( codegendata cd,
u1  Xd,
int  type 
)
inline
  • First byte is the register.
  • Second byte is the type of the trap.
  • Bit 27 and 28 have to be 0 to be in the unallocated encoding space so we use E7 as our mark byte.

Definition at line 563 of file emit-asm.hpp.

void emit_unc_branch_imm ( codegendata cd,
u1  op,
s4  imm26 
)
inline

Definition at line 106 of file emit-asm.hpp.

void emit_unc_branch_reg ( codegendata cd,
u1  opc,
u1  op2,
u1  op3,
u1  Rn,
u1  op4 
)
inline

Definition at line 119 of file emit-asm.hpp.