CACAO
Public Member Functions | Private Types | Private Member Functions | Private Attributes
cacao::jit::compiler2::aarch64::Emitter Class Reference

Public Member Functions

 Emitter ()
 
void sbfm (const Reg &rd, const Reg &rn, u1 immr, u1 imms)
 
void sxtw (const Reg &xd, const Reg &wn)
 
void sxtb (const Reg &rd, const Reg &rn)
 
void sxth (const Reg &rd, const Reg &rn)
 
void ubfm (const Reg &rd, const Reg &rn, u1 immr, u1 imms)
 
void uxth (const Reg &wd, const Reg &wn)
 
void ubfx (const Reg &wd, const Reg &wn)
 
void add (const Reg &rd, const Reg &rn, s2 imm)
 
void sub (const Reg &rd, const Reg &rn, s2 imm)
 
void subs (const Reg &rd, const Reg &rn, s2 imm)
 
void cmp (const Reg &rn, s2 imm)
 
void movn (const Reg &rd, u2 imm)
 
void movz (const Reg &rd, u2 imm)
 
void movk (const Reg &rd, u2 imm, u1 shift=0)
 
void bcond (u1 cond, s4 offset)
 
void b (s4 offset)
 
void blr (const Reg &rd)
 
void ldr (const Reg &rt, s4 offset)
 
void ldur (const Reg &rt, const Reg &rn, s2 imm=0)
 
void stur (const Reg &rt, const Reg &rn, s2 imm=0)
 
void ldr (const Reg &rt, const Reg &rn, s2 imm=0)
 
void str (const Reg &rt, const Reg &rn, s2 imm=0)
 
void ldr (const Reg &rt, const Reg &rn, const Reg &rm)
 
void add (const Reg &rd, const Reg &rn, const Reg &rm, Shift::SHIFT shift=Shift::LSL, u1 amount=0)
 
void sub (const Reg &rd, const Reg &rn, const Reg &rm)
 
void subs (const Reg &rd, const Reg &rn, const Reg &rm)
 
void neg (const Reg &rd, const Reg &rm)
 
void cmp (const Reg &rn, const Reg &rm)
 
void csel (const Reg &rd, const Reg &rn, const Reg &rm, Cond::COND cond)
 
void mul (const Reg &rd, const Reg &rn, const Reg &rm)
 
void madd (const Reg &rd, const Reg &rn, const Reg &rm, const Reg &ra)
 
void msub (const Reg &rd, const Reg &rn, const Reg &rm, const Reg &ra)
 
void nop ()
 
void mov (const Reg &rd, const Reg &rm)
 
void andd (const Reg &rd, const Reg &rn, const Reg &rm)
 
void orr (const Reg &rd, const Reg &rn, const Reg &rm)
 
void sdiv (const Reg &rd, const Reg &rn, const Reg &rm)
 
void fcmp (const Reg &rn, const Reg &rm)
 
void fmov (const Reg &rd, const Reg &rn)
 
void fneg (const Reg &rd, const Reg &rn)
 
void fcvt (const Reg &rd, const Reg &rn)
 
void fadd (const Reg &rd, const Reg &rn, const Reg &rm)
 
void fdiv (const Reg &rd, const Reg &rn, const Reg &rm)
 
void fmul (const Reg &rd, const Reg &rn, const Reg &rm)
 
void fsub (const Reg &rd, const Reg &rn, const Reg &rm)
 
void scvtf (const Reg &rd, const Reg &rn)
 
void trap (const Reg &rd, int type)
 
void emit (CodeMemory *cm)
 
void emit (CodeFragment &cf)
 
void emitRaw (u4 instr)
 

Private Types

typedef alloc::vector< u4 >::type instruction_list
 

Private Member Functions

template<typename T >
u4 lsl (T a, u1 amount)
 
void add_subtract_immediate (u1 sf, u1 op, u1 s, u1 shift, s2 imm, u1 rn, u1 rd)
 
void bitfield (u1 sf, u1 opc, u1 n, u1 immr, u1 imms, u1 rn, u1 rd)
 
void move_wide_immediate (u1 sf, u1 opc, u1 hw, u2 imm, u1 rd)
 
void load_literal (u1 opc, u1 v, s4 imm, u1 rt)
 
void load_store_unscaled (u1 size, u1 v, u1 opc, s2 imm, u1 rn, u1 rt)
 
void load_store_register (u1 size, u1 v, u1 opc, u1 rm, u1 option, u1 s, u1 rn, u1 rt)
 
void load_store_unsigned (u1 size, u1 v, u1 opc, s2 imm, u1 rn, u1 rt)
 
void add_subtract_shifted_register (u1 sf, u1 opc, u1 s, u1 shift, u1 rm, u1 imm, u1 rn, u1 rd)
 
void conditional_select (u1 sf, u1 op, u1 s, u1 rm, u1 cond, u1 op2, u1 rn, u1 rd)
 
void data_processing_2_source (u1 sf, u1 s, u1 rm, u1 op, u1 rn, u1 rd)
 
void data_processing_3_source (u1 sf, u1 op54, u1 op31, u1 rm, u1 o0, u1 ra, u1 rn, u1 rd)
 
void logical_shifted_register (u1 sf, u1 opc, u1 n, u1 rm, u1 rn, u1 rd)
 
void fp_compare (u1 m, u1 s, u1 type, u1 rm, u1 op, u1 rn, u1 op2)
 
void fp_data_processing_1 (u1 m, u1 s, u1 type, u1 op, u1 rn, u1 rd)
 
void fp_data_processing_2 (u1 m, u1 s, u1 type, u1 rm, u1 op, u1 rn, u1 rd)
 
void conversion_fp_integer (u1 sf, u1 s, u1 type, u1 rmode, u1 op, u1 rn, u1 rd)
 
void trap_encode (u1 rd, s4 type)
 

Private Attributes

instruction_list instructions
 

Detailed Description

Definition at line 106 of file Aarch64Emitter.hpp.

Member Typedef Documentation

Definition at line 108 of file Aarch64Emitter.hpp.

Constructor & Destructor Documentation

cacao::jit::compiler2::aarch64::Emitter::Emitter ( )
inlineexplicit

Definition at line 112 of file Aarch64Emitter.hpp.

Member Function Documentation

void cacao::jit::compiler2::aarch64::Emitter::add ( const Reg rd,
const Reg rn,
s2  imm 
)

Definition at line 118 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::add ( const Reg rd,
const Reg rn,
const Reg rm,
Shift::SHIFT  shift = Shift::LSL,
u1  amount = 0 
)

Definition at line 150 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::add_subtract_immediate ( u1  sf,
u1  op,
u1  s,
u1  shift,
s2  imm,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 204 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::add_subtract_shifted_register ( u1  sf,
u1  opc,
u1  s,
u1  shift,
u1  rm,
u1  imm,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 255 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::andd ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 130 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::b ( s4  offset)
inline

Definition at line 139 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::bcond ( u1  cond,
s4  offset 
)
inline

Definition at line 132 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::bitfield ( u1  sf,
u1  opc,
u1  n,
u1  immr,
u1  imms,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 212 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::blr ( const Reg rd)
inline

Definition at line 146 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::cmp ( const Reg rn,
s2  imm 
)
inline

Definition at line 126 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::cmp ( const Reg rn,
const Reg rm 
)

Definition at line 160 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::conditional_select ( u1  sf,
u1  op,
u1  s,
u1  rm,
u1  cond,
u1  op2,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 263 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::conversion_fp_integer ( u1  sf,
u1  s,
u1  type,
u1  rmode,
u1  op,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 308 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::csel ( const Reg rd,
const Reg rn,
const Reg rm,
Cond::COND  cond 
)

Definition at line 168 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::data_processing_2_source ( u1  sf,
u1  s,
u1  rm,
u1  op,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 271 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::data_processing_3_source ( u1  sf,
u1  op54,
u1  op31,
u1  rm,
u1  o0,
u1  ra,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 277 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::emit ( CodeMemory cm)

Definition at line 53 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::emit ( CodeFragment cf)

Definition at line 65 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::emitRaw ( u4  instr)
inline

Definition at line 198 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::fadd ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 181 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::fcmp ( const Reg rn,
const Reg rm 
)

Definition at line 197 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::fcvt ( const Reg rd,
const Reg rn 
)

Definition at line 205 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::fdiv ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 193 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::fmov ( const Reg rd,
const Reg rn 
)

Definition at line 201 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::fmul ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 189 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::fneg ( const Reg rd,
const Reg rn 
)

Definition at line 177 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::fp_compare ( u1  m,
u1  s,
u1  type,
u1  rm,
u1  op,
u1  rn,
u1  op2 
)
inlineprivate

Definition at line 290 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::fp_data_processing_1 ( u1  m,
u1  s,
u1  type,
u1  op,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 296 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::fp_data_processing_2 ( u1  m,
u1  s,
u1  type,
u1  rm,
u1  op,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 302 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::fsub ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 185 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::ldr ( const Reg rt,
s4  offset 
)

Definition at line 74 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::ldr ( const Reg rt,
const Reg rn,
s2  imm = 0 
)

Definition at line 86 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::ldr ( const Reg rt,
const Reg rn,
const Reg rm 
)

Definition at line 94 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::ldur ( const Reg rt,
const Reg rn,
s2  imm = 0 
)

Definition at line 78 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::load_literal ( u1  opc,
u1  v,
s4  imm,
u1  rt 
)
inlineprivate

Definition at line 224 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::load_store_register ( u1  size,
u1  v,
u1  opc,
u1  rm,
u1  option,
u1  s,
u1  rn,
u1  rt 
)
inlineprivate

Definition at line 239 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::load_store_unscaled ( u1  size,
u1  v,
u1  opc,
s2  imm,
u1  rn,
u1  rt 
)
inlineprivate

Definition at line 232 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::load_store_unsigned ( u1  size,
u1  v,
u1  opc,
s2  imm,
u1  rn,
u1  rt 
)
inlineprivate

Definition at line 247 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::logical_shifted_register ( u1  sf,
u1  opc,
u1  n,
u1  rm,
u1  rn,
u1  rd 
)
inlineprivate

Definition at line 284 of file Aarch64Emitter.hpp.

template<typename T >
u4 cacao::jit::compiler2::aarch64::Emitter::lsl ( a,
u1  amount 
)
inlineprivate

Definition at line 202 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::madd ( const Reg rd,
const Reg rn,
const Reg rm,
const Reg ra 
)

Definition at line 142 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::mov ( const Reg rd,
const Reg rm 
)
inline

Definition at line 175 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::move_wide_immediate ( u1  sf,
u1  opc,
u1  hw,
u2  imm,
u1  rd 
)
inlineprivate

Definition at line 218 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::movk ( const Reg rd,
u2  imm,
u1  shift = 0 
)

Definition at line 114 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::movn ( const Reg rd,
u2  imm 
)

Definition at line 106 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::movz ( const Reg rd,
u2  imm 
)

Definition at line 110 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::msub ( const Reg rd,
const Reg rn,
const Reg rm,
const Reg ra 
)

Definition at line 146 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::mul ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 173 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::neg ( const Reg rd,
const Reg rm 
)

Definition at line 166 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::nop ( )
inline

Definition at line 174 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::orr ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 134 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::sbfm ( const Reg rd,
const Reg rn,
u1  immr,
u1  imms 
)

Definition at line 98 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::scvtf ( const Reg rd,
const Reg rn 
)

Definition at line 209 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::sdiv ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 138 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::str ( const Reg rt,
const Reg rn,
s2  imm = 0 
)

Definition at line 90 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::stur ( const Reg rt,
const Reg rn,
s2  imm = 0 
)

Definition at line 82 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::sub ( const Reg rd,
const Reg rn,
s2  imm 
)

Definition at line 122 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::sub ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 162 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::subs ( const Reg rd,
const Reg rn,
s2  imm 
)

Definition at line 126 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::subs ( const Reg rd,
const Reg rn,
const Reg rm 
)

Definition at line 156 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::sxtb ( const Reg rd,
const Reg rn 
)
inline

Definition at line 116 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::sxth ( const Reg rd,
const Reg rn 
)
inline

Definition at line 117 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::sxtw ( const Reg xd,
const Reg wn 
)
inline

Definition at line 115 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::trap ( const Reg rd,
int  type 
)

Definition at line 213 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::trap_encode ( u1  rd,
s4  type 
)
inlineprivate

Definition at line 315 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::ubfm ( const Reg rd,
const Reg rn,
u1  immr,
u1  imms 
)

Definition at line 102 of file Aarch64Emitter.cpp.

void cacao::jit::compiler2::aarch64::Emitter::ubfx ( const Reg wd,
const Reg wn 
)
inline

Definition at line 121 of file Aarch64Emitter.hpp.

void cacao::jit::compiler2::aarch64::Emitter::uxth ( const Reg wd,
const Reg wn 
)
inline

Definition at line 120 of file Aarch64Emitter.hpp.

Field Documentation

instruction_list cacao::jit::compiler2::aarch64::Emitter::instructions
private

Definition at line 109 of file Aarch64Emitter.hpp.


The documentation for this class was generated from the following files: