aboutsummaryrefslogtreecommitdiff
path: root/c_emulator/riscv_softfloat.h
diff options
context:
space:
mode:
Diffstat (limited to 'c_emulator/riscv_softfloat.h')
-rw-r--r--c_emulator/riscv_softfloat.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/c_emulator/riscv_softfloat.h b/c_emulator/riscv_softfloat.h
new file mode 100644
index 0000000..bd7edf0
--- /dev/null
+++ b/c_emulator/riscv_softfloat.h
@@ -0,0 +1,40 @@
+#pragma once
+
+unit softfloat_f32add(mach_bits rm, mach_bits v1, mach_bits v2);
+unit softfloat_f32sub(mach_bits rm, mach_bits v1, mach_bits v2);
+unit softfloat_f32mul(mach_bits rm, mach_bits v1, mach_bits v2);
+unit softfloat_f32div(mach_bits rm, mach_bits v1, mach_bits v2);
+
+unit softfloat_f64add(mach_bits rm, mach_bits v1, mach_bits v2);
+unit softfloat_f64sub(mach_bits rm, mach_bits v1, mach_bits v2);
+unit softfloat_f64mul(mach_bits rm, mach_bits v1, mach_bits v2);
+unit softfloat_f64div(mach_bits rm, mach_bits v1, mach_bits v2);
+
+unit softfloat_f32muladd(mach_bits rm, mach_bits v1, mach_bits v2, mach_bits v3);
+unit softfloat_f64muladd(mach_bits rm, mach_bits v1, mach_bits v2, mach_bits v3);
+
+unit softfloat_f32sqrt(mach_bits rm, mach_bits v);
+unit softfloat_f64sqrt(mach_bits rm, mach_bits v);
+
+unit softfloat_f32toi32(mach_bits rm, mach_bits v);
+unit softfloat_f32toui32(mach_bits rm, mach_bits v);
+unit softfloat_f32toi64(mach_bits rm, mach_bits v);
+unit softfloat_f32toui64(mach_bits rm, mach_bits v);
+
+unit softfloat_f64toi32(mach_bits rm, mach_bits v);
+unit softfloat_f64toui32(mach_bits rm, mach_bits v);
+unit softfloat_f64toi64(mach_bits rm, mach_bits v);
+unit softfloat_f64toui64(mach_bits rm, mach_bits v);
+
+unit softfloat_i32tof32(mach_bits rm, mach_bits v);
+unit softfloat_ui32tof32(mach_bits rm, mach_bits v);
+unit softfloat_i64tof32(mach_bits rm, mach_bits v);
+unit softfloat_ui64tof32(mach_bits rm, mach_bits v);
+
+unit softfloat_i32tof64(mach_bits rm, mach_bits v);
+unit softfloat_ui32tof64(mach_bits rm, mach_bits v);
+unit softfloat_i64tof64(mach_bits rm, mach_bits v);
+unit softfloat_ui64tof64(mach_bits rm, mach_bits v);
+
+unit softfloat_f32tof64(mach_bits rm, mach_bits v);
+unit softfloat_f64tof32(mach_bits rm, mach_bits v);