about summary refs log tree commit diff stats
path: root/baremetal/408float.mu
diff options
context:
space:
mode:
Diffstat (limited to 'baremetal/408float.mu')
-rw-r--r--baremetal/408float.mu23
1 files changed, 23 insertions, 0 deletions
diff --git a/baremetal/408float.mu b/baremetal/408float.mu
new file mode 100644
index 00000000..d1c04836
--- /dev/null
+++ b/baremetal/408float.mu
@@ -0,0 +1,23 @@
+# Some quick-n-dirty ways to create floats.
+
+fn fill-in-rational _out: (addr float), nr: int, dr: int {
+  var out/edi: (addr float) <- copy _out
+  var result/xmm0: float <- convert nr
+  var divisor/xmm1: float <- convert dr
+  result <- divide divisor
+  copy-to *out, result
+}
+
+fn fill-in-sqrt _out: (addr float), n: int {
+  var out/edi: (addr float) <- copy _out
+  var result/xmm0: float <- convert n
+  result <- square-root result
+  copy-to *out, result
+}
+
+fn rational nr: int, dr: int -> _/xmm0: float {
+  var result/xmm0: float <- convert nr
+  var divisor/xmm1: float <- convert dr
+  result <- divide divisor
+  return result
+}