diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/ejit/ejit.h | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/include/ejit/ejit.h b/include/ejit/ejit.h index eeac089..ce7260b 100644 --- a/include/ejit/ejit.h +++ b/include/ejit/ejit.h @@ -309,6 +309,7 @@ void ejit_escapei(struct ejit_func *s, ejit_escape_t f, size_t argc, void ejit_escapei_f(struct ejit_func *s, ejit_escape_f_t f, size_t argc, const struct ejit_operand args[argc]); +void ejit_ret(struct ejit_func *s); void ejit_retr(struct ejit_func *s, struct ejit_gpr r0); void ejit_retr_f(struct ejit_func *s, struct ejit_fpr r0); void ejit_reti(struct ejit_func *s, long i); @@ -319,6 +320,7 @@ void ejit_retval_f(struct ejit_func *s, struct ejit_fpr r0); /* move from r1 to r0 */ void ejit_movi(struct ejit_func *s, struct ejit_gpr r0, int64_t i); +void ejit_movi_f(struct ejit_func *s, struct ejit_fpr f0, double i); void ejit_movr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1); void ejit_movr_f(struct ejit_func *s, struct ejit_fpr r0, struct ejit_fpr r1); @@ -465,11 +467,6 @@ void ejit_sti_16(struct ejit_func *s, struct ejit_gpr r0, void *p); void ejit_sti_32(struct ejit_func *s, struct ejit_gpr r0, void *p); void ejit_sti_64(struct ejit_func *s, struct ejit_gpr r0, void *p); -void ejit_sti_u8(struct ejit_func *s, struct ejit_gpr r0, void *p); -void ejit_sti_u16(struct ejit_func *s, struct ejit_gpr r0, void *p); -void ejit_sti_u32(struct ejit_func *s, struct ejit_gpr r0, void *p); -void ejit_sti_u64(struct ejit_func *s, struct ejit_gpr r0, void *p); - void ejit_sti_f(struct ejit_func *s, struct ejit_fpr r0, void *p); void ejit_sti_d(struct ejit_func *s, struct ejit_fpr r0, void *p); @@ -517,6 +514,24 @@ static inline void ejit_stxi_ptr(struct ejit_func *s, struct ejit_gpr r0, double: ejit_stxi_d, \ default: ejit_stxi_ptr)((f), (r0), (r1), (o)) +void ejit_stxr_8(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + +void ejit_stxr_16(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + +void ejit_stxr_32(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + +void ejit_stxr_64(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + +void ejit_stxr_f(struct ejit_func *s, struct ejit_fpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + +void ejit_stxr_d(struct ejit_func *s, struct ejit_fpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + void ejit_extr_8(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1); void ejit_extr_16(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1); void ejit_extr_32(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1); @@ -556,28 +571,54 @@ void ejit_divr_u(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, void ejit_divr_f(struct ejit_func *s, struct ejit_fpr r0, struct ejit_fpr r1, struct ejit_fpr r2); +void ejit_remr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + +void ejit_remr_u(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + void ejit_lshi(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, int64_t o); void ejit_lshr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, struct ejit_gpr r2); void ejit_rshi(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, int64_t o); +void ejit_rshi_u(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + int64_t o); void ejit_rshr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, struct ejit_gpr r2); +void ejit_rshr_u(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); void ejit_andr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, struct ejit_gpr r2); void ejit_andi(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, int64_t o); -void ejit_comr(struct ejit_func *f, struct ejit_gpr r0, struct ejit_gpr r1); +void ejit_orr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); +void ejit_ori(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + int64_t o); + +void ejit_xori(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + int64_t o); +void ejit_xorr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); + +void ejit_comr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1); void ejit_negr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1); +void ejit_negr_f(struct ejit_func *s, struct ejit_fpr r0, struct ejit_fpr r1); void ejit_eqr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, struct ejit_gpr r2); void ejit_eqr_f(struct ejit_func *s, struct ejit_gpr r0, struct ejit_fpr r1, struct ejit_fpr r2); +void ejit_ner(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, + struct ejit_gpr r2); +void ejit_ner_f(struct ejit_func *s, struct ejit_gpr r0, struct ejit_fpr r1, + struct ejit_fpr r2); + void ejit_gtr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, struct ejit_gpr r2); void ejit_gtr_u(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, @@ -604,6 +645,11 @@ void ejit_ler(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1, void ejit_ler_f(struct ejit_func *s, struct ejit_gpr r0, struct ejit_fpr r1, struct ejit_fpr r2); +void ejit_truncr_d_32(struct ejit_func *s, struct ejit_gpr r0, + struct ejit_fpr r1); +void ejit_truncr_d_64(struct ejit_func *s, struct ejit_gpr r0, + struct ejit_fpr r1); + struct ejit_reloc ejit_bltr(struct ejit_func *s, struct ejit_gpr r0, struct ejit_gpr r1); struct ejit_reloc ejit_bner(struct ejit_func *s, struct ejit_gpr r0, |