aboutsummaryrefslogtreecommitdiff
path: root/include/ejit/ejit.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ejit/ejit.h')
-rw-r--r--include/ejit/ejit.h58
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,