summaryrefslogtreecommitdiff
path: root/os2/rint.s
diff options
context:
space:
mode:
Diffstat (limited to 'os2/rint.s')
-rw-r--r--os2/rint.s32
1 files changed, 32 insertions, 0 deletions
diff --git a/os2/rint.s b/os2/rint.s
new file mode 100644
index 00000000000..7f6569ed72c
--- /dev/null
+++ b/os2/rint.s
@@ -0,0 +1,32 @@
+/ rint.s (emx+gcc) -- Copyright (c) 1992-1996 by Eberhard Mattes
+
+#include <emx/asm386.h>
+
+#define FUNC MATHSUFFIX2(rint)
+
+ .globl LABEL(FUNC)
+
+ .text
+
+ ALIGN
+
+/ double _rint (double x)
+
+#define cw1 0(%esp)
+#define cw2 2(%esp)
+/define ret_addr 4(%esp)
+#define x 8(%esp)
+
+LABEL(FUNC):
+ PROFILE_NOFRAME
+ subl $4, %esp
+ fstcww cw1
+ movw cw1, %ax
+ andw $0xf3ff, %ax /* round to nearest or even */
+ movw %ax, cw2
+ fldcww cw2
+ FLD x /* x */
+ frndint
+ fldcww cw1
+ addl $4, %esp
+ EPILOGUE(FUNC)