temporary undoing of renaming
[riscv-isa-sim.git] / softfloat / s_sub192.c
diff --git a/softfloat/s_sub192.c b/softfloat/s_sub192.c
new file mode 100755 (executable)
index 0000000..96f21c9
--- /dev/null
@@ -0,0 +1,30 @@
+\r
+#include <stdint.h>\r
+#include "platform.h"\r
+#include "primitives.h"\r
+\r
+struct uint192\r
+ softfloat_sub192(\r
+     uint64_t a128,\r
+     uint64_t a64,\r
+     uint64_t a0,\r
+     uint64_t b128,\r
+     uint64_t b64,\r
+     uint64_t b0\r
+ )\r
+{\r
+    struct uint192 z;\r
+    unsigned int borrow64, borrow128;\r
+\r
+    z.v0 = a0 - b0;\r
+    borrow64 = ( a0 < b0 );\r
+    z.v64 = a64 - b64;\r
+    borrow128 = ( a64 < b64 );\r
+    z.v128 = a128 - b128;\r
+    borrow128 += ( z.v64 < borrow64 );\r
+    z.v64 -= borrow64;\r
+    z.v128 -= borrow128;\r
+    return z;\r
+\r
+}\r
+\r