temporary undoing of renaming
[riscv-isa-sim.git] / softfloat / s_mul128To256.c
diff --git a/softfloat/s_mul128To256.c b/softfloat/s_mul128To256.c
new file mode 100755 (executable)
index 0000000..a96cd94
--- /dev/null
@@ -0,0 +1,28 @@
+\r
+#include <stdint.h>\r
+#include "platform.h"\r
+#include "primitives.h"\r
+\r
+struct uint256\r
+ softfloat_mul128To256( uint64_t a64, uint64_t a0, uint64_t b64, uint64_t b0 )\r
+{\r
+    struct uint128 p0, p64, p128;\r
+    struct uint256 z;\r
+\r
+    p0 = softfloat_mul64To128( a0, b0 );\r
+    z.v0 = p0.v0;\r
+    p64 = softfloat_mul64To128( a64, b0 );\r
+    z.v64 = p64.v0 + p0.v64;\r
+    z.v128 = p64.v64 + ( z.v64 < p64.v0 );\r
+    p128 = softfloat_mul64To128( a64, b64 );\r
+    z.v128 += p128.v0;\r
+    z.v192 = p128.v64 + ( z.v128 < p128.v0 );\r
+    p64 = softfloat_mul64To128( a0, b64 );\r
+    z.v64 += p64.v0;\r
+    p64.v64 += ( z.v64 < p64.v0 );\r
+    z.v128 += p64.v64;\r
+    z.v192 += ( z.v128 < p64.v64 );\r
+    return z;\r
+\r
+}\r
+\r