aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/fmin_q.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/insns/fmin_q.h')
-rw-r--r--riscv/insns/fmin_q.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/riscv/insns/fmin_q.h b/riscv/insns/fmin_q.h
new file mode 100644
index 0000000..675c7fd
--- /dev/null
+++ b/riscv/insns/fmin_q.h
@@ -0,0 +1,8 @@
+require_extension('Q');
+require_fp;
+bool less = f128_lt_quiet(f128(FRS1), f128(FRS2)) ||
+ (f128_eq(f128(FRS1), f128(FRS2)) && (f128(FRS1).v[1] & F64_SIGN));
+WRITE_FRD(less || isNaNF128(f128(FRS2)) ? FRS1 : FRS2);
+if (isNaNF128(f128(FRS1)) && isNaNF128(f128(FRS2)))
+ WRITE_FRD(f128(defaultNaNF128()));
+set_fp_exceptions;