New SuperSPARC specific implementations.
authordrepper <drepper>
Sun, 24 Aug 1997 10:50:32 +0000 (10:50 +0000)
committerdrepper <drepper>
Sun, 24 Aug 1997 10:50:32 +0000 (10:50 +0000)
sysdeps/sparc/sparc32/sparcv8/dotmul.S [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv8/rem.S [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv8/sdiv.S [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv8/udiv.S [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv8/umul.S [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv8/urem.S [new file with mode: 0644]

diff --git a/sysdeps/sparc/sparc32/sparcv8/dotmul.S b/sysdeps/sparc/sparc32/sparcv8/dotmul.S
new file mode 100644 (file)
index 0000000..9b20cc3
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Sparc v8 has multiply.
+ */
+
+#include <sysdep.h>
+
+ENTRY(.mul)
+
+       smul    %o0, %o1, %o0
+       retl
+        rd     %y, %o1
+
+END(.mul)
diff --git a/sysdeps/sparc/sparc32/sparcv8/rem.S b/sysdeps/sparc/sparc32/sparcv8/rem.S
new file mode 100644 (file)
index 0000000..061e800
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Sparc v8 has divide.
+ */
+
+#include <sysdep.h>
+
+ENTRY(.rem)
+
+       sra     %o0, 31, %o2
+       wr      %o2, 0, %y
+       sdivcc  %o0, %o1, %o2
+       bvs,a   1f
+        xnor   %o2, %g0, %o2
+1:     smul    %o2, %o1, %o2
+       retl
+        sub    %o0, %o2, %o0
+
+END(.rem)
diff --git a/sysdeps/sparc/sparc32/sparcv8/sdiv.S b/sysdeps/sparc/sparc32/sparcv8/sdiv.S
new file mode 100644 (file)
index 0000000..81c3ac1
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Sparc v8 has divide.
+ */
+
+#include <sysdep.h>
+
+ENTRY(.div)
+
+       sra     %o0, 31, %o2
+       wr      %o2, 0, %y
+       ret
+        sdiv   %o0, %o1, %o0
+
+END(.div)
diff --git a/sysdeps/sparc/sparc32/sparcv8/udiv.S b/sysdeps/sparc/sparc32/sparcv8/udiv.S
new file mode 100644 (file)
index 0000000..4e3cddc
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Sparc v8 has divide.
+ */
+
+#include <sysdep.h>
+
+ENTRY(.udiv)
+
+       wr      %g0, 0, %y
+       retl
+        udiv   %o0, %o1, %o0
+
+END(.udiv)
diff --git a/sysdeps/sparc/sparc32/sparcv8/umul.S b/sysdeps/sparc/sparc32/sparcv8/umul.S
new file mode 100644 (file)
index 0000000..cec454a
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Sparc v8 has multiply.
+ */
+
+#include <sysdep.h>
+
+ENTRY(.umul)
+
+       umul    %o0, %o1, %o0
+       retl
+        rd     %y, %o1
+
+END(.umul)
diff --git a/sysdeps/sparc/sparc32/sparcv8/urem.S b/sysdeps/sparc/sparc32/sparcv8/urem.S
new file mode 100644 (file)
index 0000000..81e123f
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Sparc v8 has divide.
+ */
+
+#include <sysdep.h>
+
+ENTRY(.urem)
+
+       wr      %g0, 0, %y
+       udiv    %o0, %o1, %o2
+       umul    %o2, %o1, %o2
+       retl
+        sub    %o0, %o2, %o0
+
+END(.urem)