aboutsummaryrefslogtreecommitdiff
path: root/src/interp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp.c')
-rw-r--r--src/interp.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/interp.c b/src/interp.c
index 293da46..5618564 100644
--- a/src/interp.c
+++ b/src/interp.c
@@ -22,6 +22,8 @@ union interp_ret ejit_interp(struct ejit_func *f, size_t argc,
[EXTRU8] = &&EXTRU8,
[EXTRU16] = &&EXTRU16,
[EXTRU32] = &&EXTRU32,
+ [EXTRF] = &&EXTRF,
+ [EXTRD] = &&EXTRD,
[ADDR] = &&ADDR,
[ADDR_F] = &&ADDR_F,
@@ -300,6 +302,14 @@ union interp_ret ejit_interp(struct ejit_func *f, size_t argc,
gpr[i.r0] = (uint32_t)gpr[i.r1];
DISPATCH();
+ DO(EXTRF);
+ fpr[i.r0].f = (float)gpr[i.r1];
+ DISPATCH();
+
+ DO(EXTRD);
+ fpr[i.r0].d = (double)gpr[i.r1];
+ DISPATCH();
+
DO(ADDR);
gpr[i.r0] = gpr[i.r1] + gpr[i.r2];
DISPATCH();