From 42f89542550033a3f22700e6b0fd71627a252f96 Mon Sep 17 00:00:00 2001
From: Kimplul <kimi.h.kuparinen@gmail.com>
Date: Sat, 5 Apr 2025 13:46:09 +0300
Subject: implement minr_d/maxr_d

---
 src/interp.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

(limited to 'src/interp.c')

diff --git a/src/interp.c b/src/interp.c
index e7be77b..57dbfbe 100644
--- a/src/interp.c
+++ b/src/interp.c
@@ -150,6 +150,12 @@ union interp_ret ejit_run(struct ejit_func *f, size_t paramc, struct ejit_arg pa
 		[EJIT_OP_SQRTR_F] = &&SQRTR_F,
 		[EJIT_OP_SQRTR_D] = &&SQRTR_D,
 
+		[EJIT_OP_MINR_F] = &&MINR_F,
+		[EJIT_OP_MINR_D] = &&MINR_D,
+
+		[EJIT_OP_MAXR_F] = &&MAXR_F,
+		[EJIT_OP_MAXR_D] = &&MAXR_D,
+
 		[EJIT_OP_BNER] = &&BNER,
 		[EJIT_OP_BNEI] = &&BNEI,
 		[EJIT_OP_BNER_F] = &&BNER_F,
@@ -791,6 +797,22 @@ union interp_ret ejit_run(struct ejit_func *f, size_t paramc, struct ejit_arg pa
 	fpr[i.r0].f = sqrt(fpr[i.r1].f);
 	DISPATCH();
 
+	DO(MINR_F);
+	fpr[i.r0].f = fminf(fpr[i.r1].f, fpr[i.r2].f);
+	DISPATCH();
+
+	DO(MINR_D);
+	fpr[i.r0].d = fmin(fpr[i.r1].d, fpr[i.r2].d);
+	DISPATCH();
+
+	DO(MAXR_F);
+	fpr[i.r0].f = fmaxf(fpr[i.r1].f, fpr[i.r2].f);
+	DISPATCH();
+
+	DO(MAXR_D);
+	fpr[i.r0].d = fmax(fpr[i.r1].d, fpr[i.r2].d);
+	DISPATCH();
+
 	DO(SQRTR_D);
 	fpr[i.r0].d = sqrt(fpr[i.r1].d);
 	DISPATCH();
-- 
cgit v1.2.3