summaryrefslogtreecommitdiffstats
path: root/arch/sparc/math-emu/fsmuld.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/math-emu/fsmuld.c')
-rw-r--r--arch/sparc/math-emu/fsmuld.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/sparc/math-emu/fsmuld.c b/arch/sparc/math-emu/fsmuld.c
new file mode 100644
index 000000000..dead5a042
--- /dev/null
+++ b/arch/sparc/math-emu/fsmuld.c
@@ -0,0 +1,16 @@
+#include "soft-fp.h"
+#include "double.h"
+#include "single.h"
+
+int FSMULD(void *rd, void *rs2, void *rs1)
+{
+ FP_DECL_S(IN); FP_DECL_D(A); FP_DECL_D(B); FP_DECL_D(R);
+
+ __FP_UNPACK_S(IN, rs1);
+ FP_CONV(D,S,2,1,A,IN);
+ __FP_UNPACK_S(IN, rs2);
+ FP_CONV(D,S,2,1,B,IN);
+ FP_MUL_D(R, A, B);
+ __FP_PACK_D(rd, R);
+ return 1;
+}