CACAO
Public Member Functions | Private Member Functions | Private Attributes
AsmEmitter Class Reference

Public Member Functions

 AsmEmitter (codegendata *cd)
 
void imov (u1 wd, u1 wn)
 
void mov (u1 xt, u1 xn)
 
void icmp_imm (u1 wd, u2 imm)
 
void lcmp_imm (u1 xd, u2 imm)
 
void icmn_imm (u1 wd, u2 imm)
 
void lcmn_imm (u1 xd, u2 imm)
 
void icmp (u1 wn, u1 wm)
 
void lcmp (u1 xn, u1 xm)
 
void acmp (u1 xn, u1 xm)
 
void nop ()
 
void ild (u1 xt, u1 xn, s2 imm)
 
void lld (u1 xt, u1 xn, s2 imm)
 
void ald (u1 xt, u1 xn, s2 imm)
 
void fld (u1 xt, u1 xn, s2 imm)
 
void dld (u1 xt, u1 xn, s2 imm)
 
void ldrh (u1 wt, u1 xn, s2 imm)
 
void ldrb (u1 wt, u1 xn, s2 imm)
 
void ldrsb32 (u1 wt, u1 xn, s2 imm)
 
void ldrsh32 (u1 wt, u1 xn, s2 imm)
 
void ist (u1 xt, u1 xn, s2 imm)
 
void lst (u1 xt, u1 xn, s2 imm)
 
void ast (u1 xt, u1 xn, s2 imm)
 
void fst (u1 xt, u1 xn, s2 imm)
 
void dst (u1 xt, u1 xn, s2 imm)
 
void strh (u1 wt, u1 xn, s2 imm)
 
void strb (u1 wt, u1 xn, s2 imm)
 
void iconst (u1 xt, s4 value)
 
void lconst (u1 xt, s8 value)
 
void lda (u1 xd, u1 xn, s4 imm)
 
void adr (u1 xd, s4 imm)
 
void b (s4 imm)
 
void b_eq (s4 imm)
 
void b_ne (s4 imm)
 
void b_cs (s4 imm)
 
void b_cc (s4 imm)
 
void b_mi (s4 imm)
 
void b_pl (s4 imm)
 
void b_vs (s4 imm)
 
void b_vc (s4 imm)
 
void b_hi (s4 imm)
 
void b_ls (s4 imm)
 
void b_ge (s4 imm)
 
void b_lt (s4 imm)
 
void b_gt (s4 imm)
 
void b_le (s4 imm)
 
void blr (u1 xn)
 
void br (u1 xn)
 
void ret ()
 
void cbnz (u1 xn, s4 imm)
 
void iadd_imm (u1 xd, u1 xn, u4 imm)
 
void ladd_imm (u1 xd, u1 xn, u4 imm)
 
void iadd (u1 xd, u1 xn, u1 xm)
 
void ladd (u1 xd, u1 xn, u1 xm)
 
void ladd_shift (u1 xd, u1 xn, u1 xm, u1 shift, u1 amount)
 Xd = Xn + shift(Xm, amount);. More...
 
void isub_imm (u1 xd, u1 xn, u4 imm)
 
void lsub_imm (u1 xd, u1 xn, u4 imm)
 
void isub (u1 xd, u1 xn, u1 xm)
 
void lsub (u1 xd, u1 xn, u1 xm)
 
void idiv (u1 wd, u1 wn, u1 wm)
 
void ldiv (u1 xd, u1 xn, u1 xm)
 
void imul (u1 wd, u1 wn, u1 wm)
 
void lmul (u1 xd, u1 xn, u1 xm)
 
void imsub (u1 wd, u1 wn, u1 wm, u1 wa)
 
void lmsub (u1 xd, u1 xn, u1 xm, u1 xa)
 
void ilsl_imm (u1 wd, u1 wn, u1 shift)
 
void llsl_imm (u1 xd, u1 xn, u1 shift)
 
void ilsr_imm (u1 wd, u1 wn, u1 shift)
 
void llsr_imm (u1 xd, u1 xn, u1 shift)
 
void iasr_imm (u1 wd, u1 wn, u1 shift)
 
void lasr_imm (u1 xd, u1 xn, u1 shift)
 
void iasr (u1 wd, u1 wn, u1 wm)
 
void lasr (u1 xd, u1 xn, u1 xm)
 
void ilsr (u1 wd, u1 wn, u1 wm)
 
void llsr (u1 xd, u1 xn, u1 xm)
 
void ilsl (u1 wd, u1 wn, u1 wm)
 
void llsl (u1 xd, u1 xn, u1 xm)
 
void uxtb (u1 wd, u1 wn)
 
void uxth (u1 wd, u1 wn)
 
void sxtb (u1 wd, u1 wn)
 
void sxth (u1 wd, u1 wn)
 
void sxtw (u1 xd, u1 wn)
 
void ubfx (u1 wd, u1 xn)
 
void ltst (u1 xn, u1 xm)
 
void itst (u1 wn, u1 wm)
 
void iand (u1 wd, u1 wn, u1 wm)
 
void land (u1 xd, u1 xn, u1 xm)
 
void ior (u1 wd, u1 wn, u1 wm)
 
void lor (u1 xd, u1 xn, u1 xm)
 
void ixor (u1 wd, u1 wn, u1 wm)
 
void lxor (u1 xd, u1 xn, u1 xm)
 
void clr (u1 xd)
 
void csel (u1 xt, u1 xn, u1 xm, u1 cond)
 
void icsel (u1 wt, u1 wn, u1 wm, u1 cond)
 
void cset (u1 xt, u1 cond)
 
void csetm (u1 xt, u1 cond)
 
void icsneg (u1 wd, u1 wn, u1 wm, u1 cond)
 
void fmov (u1 sd, u1 sn)
 
void dmov (u1 dd, u1 dn)
 
void fneg (u1 sd, u1 sn)
 
void dneg (u1 dd, u1 dn)
 
void fcmp (u1 sn, u1 sm)
 
void fcmp (u1 sn)
 
void dcmp (u1 xn, u1 xm)
 
void fmul (u1 st, u1 sn, u1 sm)
 
void dmul (u1 dt, u1 dn, u1 dm)
 
void fdiv (u1 st, u1 sn, u1 sm)
 
void ddiv (u1 dt, u1 dn, u1 dm)
 
void fadd (u1 st, u1 sn, u1 sm)
 
void dadd (u1 dt, u1 dn, u1 dm)
 
void fsub (u1 st, u1 sn, u1 sm)
 
void dsub (u1 dt, u1 dn, u1 dm)
 
void i2f (u1 st, u1 wn)
 
void l2f (u1 st, u1 xn)
 
void i2d (u1 dt, u1 wn)
 
void l2d (u1 dt, u1 xn)
 
void f2i (u1 wd, u1 sn)
 
void f2l (u1 xd, u1 sn)
 
void d2i (u1 wd, u1 dn)
 
void d2l (u1 xd, u1 dn)
 
void f2d (u1 dd, u1 sn)
 
void d2f (u1 sd, u1 dn)
 
void dmb ()
 
void dsb ()
 
void dmb (u1 option)
 
void dsb (u1 option)
 

Private Member Functions

void emit_lda (u1 xd, u1 xn, s4 imm)
 

Private Attributes

codegendatacd
 

Detailed Description

Definition at line 87 of file codegen.hpp.

Constructor & Destructor Documentation

AsmEmitter::AsmEmitter ( codegendata cd)
inlineexplicit

Definition at line 90 of file codegen.hpp.

Member Function Documentation

void AsmEmitter::acmp ( u1  xn,
u1  xm 
)
inline

Definition at line 102 of file codegen.hpp.

void AsmEmitter::adr ( u1  xd,
s4  imm 
)
inline

Definition at line 174 of file codegen.hpp.

void AsmEmitter::ald ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 109 of file codegen.hpp.

void AsmEmitter::ast ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 122 of file codegen.hpp.

void AsmEmitter::b ( s4  imm)
inline

Definition at line 177 of file codegen.hpp.

void AsmEmitter::b_cc ( s4  imm)
inline

Definition at line 181 of file codegen.hpp.

void AsmEmitter::b_cs ( s4  imm)
inline

Definition at line 180 of file codegen.hpp.

void AsmEmitter::b_eq ( s4  imm)
inline

Definition at line 178 of file codegen.hpp.

void AsmEmitter::b_ge ( s4  imm)
inline

Definition at line 188 of file codegen.hpp.

void AsmEmitter::b_gt ( s4  imm)
inline

Definition at line 190 of file codegen.hpp.

void AsmEmitter::b_hi ( s4  imm)
inline

Definition at line 186 of file codegen.hpp.

void AsmEmitter::b_le ( s4  imm)
inline

Definition at line 191 of file codegen.hpp.

void AsmEmitter::b_ls ( s4  imm)
inline

Definition at line 187 of file codegen.hpp.

void AsmEmitter::b_lt ( s4  imm)
inline

Definition at line 189 of file codegen.hpp.

void AsmEmitter::b_mi ( s4  imm)
inline

Definition at line 182 of file codegen.hpp.

void AsmEmitter::b_ne ( s4  imm)
inline

Definition at line 179 of file codegen.hpp.

void AsmEmitter::b_pl ( s4  imm)
inline

Definition at line 183 of file codegen.hpp.

void AsmEmitter::b_vc ( s4  imm)
inline

Definition at line 185 of file codegen.hpp.

void AsmEmitter::b_vs ( s4  imm)
inline

Definition at line 184 of file codegen.hpp.

void AsmEmitter::blr ( u1  xn)
inline

Definition at line 193 of file codegen.hpp.

void AsmEmitter::br ( u1  xn)
inline

Definition at line 194 of file codegen.hpp.

void AsmEmitter::cbnz ( u1  xn,
s4  imm 
)
inline

Definition at line 197 of file codegen.hpp.

void AsmEmitter::clr ( u1  xd)
inline

Definition at line 270 of file codegen.hpp.

void AsmEmitter::csel ( u1  xt,
u1  xn,
u1  xm,
u1  cond 
)
inline

Definition at line 273 of file codegen.hpp.

void AsmEmitter::cset ( u1  xt,
u1  cond 
)
inline

Definition at line 276 of file codegen.hpp.

void AsmEmitter::csetm ( u1  xt,
u1  cond 
)
inline

Definition at line 277 of file codegen.hpp.

void AsmEmitter::d2f ( u1  sd,
u1  dn 
)
inline

Definition at line 317 of file codegen.hpp.

void AsmEmitter::d2i ( u1  wd,
u1  dn 
)
inline

Definition at line 313 of file codegen.hpp.

void AsmEmitter::d2l ( u1  xd,
u1  dn 
)
inline

Definition at line 314 of file codegen.hpp.

void AsmEmitter::dadd ( u1  dt,
u1  dn,
u1  dm 
)
inline

Definition at line 301 of file codegen.hpp.

void AsmEmitter::dcmp ( u1  xn,
u1  xm 
)
inline

Definition at line 292 of file codegen.hpp.

void AsmEmitter::ddiv ( u1  dt,
u1  dn,
u1  dm 
)
inline

Definition at line 298 of file codegen.hpp.

void AsmEmitter::dld ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 112 of file codegen.hpp.

void AsmEmitter::dmb ( )
inline

Definition at line 319 of file codegen.hpp.

void AsmEmitter::dmb ( u1  option)
inline

Definition at line 321 of file codegen.hpp.

void AsmEmitter::dmov ( u1  dd,
u1  dn 
)
inline

Definition at line 285 of file codegen.hpp.

void AsmEmitter::dmul ( u1  dt,
u1  dn,
u1  dm 
)
inline

Definition at line 295 of file codegen.hpp.

void AsmEmitter::dneg ( u1  dd,
u1  dn 
)
inline

Definition at line 288 of file codegen.hpp.

void AsmEmitter::dsb ( )
inline

Definition at line 320 of file codegen.hpp.

void AsmEmitter::dsb ( u1  option)
inline

Definition at line 322 of file codegen.hpp.

void AsmEmitter::dst ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 125 of file codegen.hpp.

void AsmEmitter::dsub ( u1  dt,
u1  dn,
u1  dm 
)
inline

Definition at line 304 of file codegen.hpp.

void AsmEmitter::emit_lda ( u1  xd,
u1  xn,
s4  imm 
)
inlineprivate

Definition at line 327 of file codegen.hpp.

void AsmEmitter::f2d ( u1  dd,
u1  sn 
)
inline

Definition at line 316 of file codegen.hpp.

void AsmEmitter::f2i ( u1  wd,
u1  sn 
)
inline

Definition at line 311 of file codegen.hpp.

void AsmEmitter::f2l ( u1  xd,
u1  sn 
)
inline

Definition at line 312 of file codegen.hpp.

void AsmEmitter::fadd ( u1  st,
u1  sn,
u1  sm 
)
inline

Definition at line 300 of file codegen.hpp.

void AsmEmitter::fcmp ( u1  sn,
u1  sm 
)
inline

Definition at line 290 of file codegen.hpp.

void AsmEmitter::fcmp ( u1  sn)
inline

Definition at line 291 of file codegen.hpp.

void AsmEmitter::fdiv ( u1  st,
u1  sn,
u1  sm 
)
inline

Definition at line 297 of file codegen.hpp.

void AsmEmitter::fld ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 111 of file codegen.hpp.

void AsmEmitter::fmov ( u1  sd,
u1  sn 
)
inline

Definition at line 284 of file codegen.hpp.

void AsmEmitter::fmul ( u1  st,
u1  sn,
u1  sm 
)
inline

Definition at line 294 of file codegen.hpp.

void AsmEmitter::fneg ( u1  sd,
u1  sn 
)
inline

Definition at line 287 of file codegen.hpp.

void AsmEmitter::fst ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 124 of file codegen.hpp.

void AsmEmitter::fsub ( u1  st,
u1  sn,
u1  sm 
)
inline

Definition at line 303 of file codegen.hpp.

void AsmEmitter::i2d ( u1  dt,
u1  wn 
)
inline

Definition at line 308 of file codegen.hpp.

void AsmEmitter::i2f ( u1  st,
u1  wn 
)
inline

Definition at line 306 of file codegen.hpp.

void AsmEmitter::iadd ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 203 of file codegen.hpp.

void AsmEmitter::iadd_imm ( u1  xd,
u1  xn,
u4  imm 
)
inline

Definition at line 200 of file codegen.hpp.

void AsmEmitter::iand ( u1  wd,
u1  wn,
u1  wm 
)
inline

Definition at line 261 of file codegen.hpp.

void AsmEmitter::iasr ( u1  wd,
u1  wn,
u1  wm 
)
inline

Definition at line 238 of file codegen.hpp.

void AsmEmitter::iasr_imm ( u1  wd,
u1  wn,
u1  shift 
)
inline

Definition at line 235 of file codegen.hpp.

void AsmEmitter::icmn_imm ( u1  wd,
u2  imm 
)
inline

Definition at line 97 of file codegen.hpp.

void AsmEmitter::icmp ( u1  wn,
u1  wm 
)
inline

Definition at line 100 of file codegen.hpp.

void AsmEmitter::icmp_imm ( u1  wd,
u2  imm 
)
inline

Definition at line 95 of file codegen.hpp.

void AsmEmitter::iconst ( u1  xt,
s4  value 
)
inline

Definition at line 130 of file codegen.hpp.

void AsmEmitter::icsel ( u1  wt,
u1  wn,
u1  wm,
u1  cond 
)
inline

Definition at line 274 of file codegen.hpp.

void AsmEmitter::icsneg ( u1  wd,
u1  wn,
u1  wm,
u1  cond 
)
inline

Definition at line 280 of file codegen.hpp.

void AsmEmitter::idiv ( u1  wd,
u1  wn,
u1  wm 
)
inline

Definition at line 218 of file codegen.hpp.

void AsmEmitter::ild ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 107 of file codegen.hpp.

void AsmEmitter::ilsl ( u1  wd,
u1  wn,
u1  wm 
)
inline

Definition at line 244 of file codegen.hpp.

void AsmEmitter::ilsl_imm ( u1  wd,
u1  wn,
u1  shift 
)
inline

Definition at line 229 of file codegen.hpp.

void AsmEmitter::ilsr ( u1  wd,
u1  wn,
u1  wm 
)
inline

Definition at line 241 of file codegen.hpp.

void AsmEmitter::ilsr_imm ( u1  wd,
u1  wn,
u1  shift 
)
inline

Definition at line 232 of file codegen.hpp.

void AsmEmitter::imov ( u1  wd,
u1  wn 
)
inline

Definition at line 92 of file codegen.hpp.

void AsmEmitter::imsub ( u1  wd,
u1  wn,
u1  wm,
u1  wa 
)
inline

Definition at line 225 of file codegen.hpp.

void AsmEmitter::imul ( u1  wd,
u1  wn,
u1  wm 
)
inline

Definition at line 221 of file codegen.hpp.

void AsmEmitter::ior ( u1  wd,
u1  wn,
u1  wm 
)
inline

Definition at line 264 of file codegen.hpp.

void AsmEmitter::ist ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 120 of file codegen.hpp.

void AsmEmitter::isub ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 214 of file codegen.hpp.

void AsmEmitter::isub_imm ( u1  xd,
u1  xn,
u4  imm 
)
inline

Definition at line 211 of file codegen.hpp.

void AsmEmitter::itst ( u1  wn,
u1  wm 
)
inline

Definition at line 255 of file codegen.hpp.

void AsmEmitter::ixor ( u1  wd,
u1  wn,
u1  wm 
)
inline

Definition at line 267 of file codegen.hpp.

void AsmEmitter::l2d ( u1  dt,
u1  xn 
)
inline

Definition at line 309 of file codegen.hpp.

void AsmEmitter::l2f ( u1  st,
u1  xn 
)
inline

Definition at line 307 of file codegen.hpp.

void AsmEmitter::ladd ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 204 of file codegen.hpp.

void AsmEmitter::ladd_imm ( u1  xd,
u1  xn,
u4  imm 
)
inline

Definition at line 201 of file codegen.hpp.

void AsmEmitter::ladd_shift ( u1  xd,
u1  xn,
u1  xm,
u1  shift,
u1  amount 
)
inline

Xd = Xn + shift(Xm, amount);.

Definition at line 207 of file codegen.hpp.

void AsmEmitter::land ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 262 of file codegen.hpp.

void AsmEmitter::lasr ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 239 of file codegen.hpp.

void AsmEmitter::lasr_imm ( u1  xd,
u1  xn,
u1  shift 
)
inline

Definition at line 236 of file codegen.hpp.

void AsmEmitter::lcmn_imm ( u1  xd,
u2  imm 
)
inline

Definition at line 98 of file codegen.hpp.

void AsmEmitter::lcmp ( u1  xn,
u1  xm 
)
inline

Definition at line 101 of file codegen.hpp.

void AsmEmitter::lcmp_imm ( u1  xd,
u2  imm 
)
inline

Definition at line 96 of file codegen.hpp.

void AsmEmitter::lconst ( u1  xt,
s8  value 
)
inline

Definition at line 146 of file codegen.hpp.

void AsmEmitter::lda ( u1  xd,
u1  xn,
s4  imm 
)
inline

Definition at line 172 of file codegen.hpp.

void AsmEmitter::ldiv ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 219 of file codegen.hpp.

void AsmEmitter::ldrb ( u1  wt,
u1  xn,
s2  imm 
)
inline

Definition at line 115 of file codegen.hpp.

void AsmEmitter::ldrh ( u1  wt,
u1  xn,
s2  imm 
)
inline

Definition at line 114 of file codegen.hpp.

void AsmEmitter::ldrsb32 ( u1  wt,
u1  xn,
s2  imm 
)
inline

Definition at line 117 of file codegen.hpp.

void AsmEmitter::ldrsh32 ( u1  wt,
u1  xn,
s2  imm 
)
inline

Definition at line 118 of file codegen.hpp.

void AsmEmitter::lld ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 108 of file codegen.hpp.

void AsmEmitter::llsl ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 245 of file codegen.hpp.

void AsmEmitter::llsl_imm ( u1  xd,
u1  xn,
u1  shift 
)
inline

Definition at line 230 of file codegen.hpp.

void AsmEmitter::llsr ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 242 of file codegen.hpp.

void AsmEmitter::llsr_imm ( u1  xd,
u1  xn,
u1  shift 
)
inline

Definition at line 233 of file codegen.hpp.

void AsmEmitter::lmsub ( u1  xd,
u1  xn,
u1  xm,
u1  xa 
)
inline

Definition at line 226 of file codegen.hpp.

void AsmEmitter::lmul ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 222 of file codegen.hpp.

void AsmEmitter::lor ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 265 of file codegen.hpp.

void AsmEmitter::lst ( u1  xt,
u1  xn,
s2  imm 
)
inline

Definition at line 121 of file codegen.hpp.

void AsmEmitter::lsub ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 215 of file codegen.hpp.

void AsmEmitter::lsub_imm ( u1  xd,
u1  xn,
u4  imm 
)
inline

Definition at line 212 of file codegen.hpp.

void AsmEmitter::ltst ( u1  xn,
u1  xm 
)
inline

Definition at line 254 of file codegen.hpp.

void AsmEmitter::lxor ( u1  xd,
u1  xn,
u1  xm 
)
inline

Definition at line 268 of file codegen.hpp.

void AsmEmitter::mov ( u1  xt,
u1  xn 
)
inline

Definition at line 93 of file codegen.hpp.

void AsmEmitter::nop ( )
inline

Definition at line 104 of file codegen.hpp.

void AsmEmitter::ret ( )
inline

Definition at line 195 of file codegen.hpp.

void AsmEmitter::strb ( u1  wt,
u1  xn,
s2  imm 
)
inline

Definition at line 128 of file codegen.hpp.

void AsmEmitter::strh ( u1  wt,
u1  xn,
s2  imm 
)
inline

Definition at line 127 of file codegen.hpp.

void AsmEmitter::sxtb ( u1  wd,
u1  wn 
)
inline

Definition at line 249 of file codegen.hpp.

void AsmEmitter::sxth ( u1  wd,
u1  wn 
)
inline

Definition at line 250 of file codegen.hpp.

void AsmEmitter::sxtw ( u1  xd,
u1  wn 
)
inline

Definition at line 251 of file codegen.hpp.

void AsmEmitter::ubfx ( u1  wd,
u1  xn 
)
inline

Definition at line 252 of file codegen.hpp.

void AsmEmitter::uxtb ( u1  wd,
u1  wn 
)
inline

Definition at line 247 of file codegen.hpp.

void AsmEmitter::uxth ( u1  wd,
u1  wn 
)
inline

Definition at line 248 of file codegen.hpp.

Field Documentation

codegendata* AsmEmitter::cd
private

Definition at line 325 of file codegen.hpp.


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