Browse Source

asm for floor/ceil/trunc

Rich Felker 13 years ago
parent
commit
0b70a1e9a9

+ 1 - 0
src/math/i386/ceil.s

@@ -0,0 +1 @@
+# see floor.s

+ 1 - 0
src/math/i386/ceilf.s

@@ -0,0 +1 @@
+# see floor.s

+ 1 - 0
src/math/i386/ceill.s

@@ -0,0 +1 @@
+# see floor.s

+ 67 - 0
src/math/i386/floor.s

@@ -0,0 +1,67 @@
+.global floorf
+.type floorf,@function
+floorf:
+	flds 4(%esp)
+	jmp 1f
+
+.global floorl
+.type floorl,@function
+floorl:
+	fldt 4(%esp)
+	jmp 1f
+
+.global floor
+.type floor,@function
+floor:
+	fldl 4(%esp)
+1:	mov $0x7,%al
+1:	fstcw 4(%esp)
+	mov 5(%esp),%ah
+	mov %al,5(%esp)
+	fldcw 4(%esp)
+	frndint
+	mov %ah,5(%esp)
+	fldcw 4(%esp)
+	ret
+
+.global ceil
+.type ceil,@function
+ceil:
+	fldl 4(%esp)
+	mov $0xb,%al
+	jmp 1b
+
+.global ceilf
+.type ceilf,@function
+ceilf:
+	flds 4(%esp)
+	mov $0xb,%al
+	jmp 1b
+
+.global ceill
+.type ceill,@function
+ceill:
+	fldt 4(%esp)
+	mov $0xb,%al
+	jmp 1b
+
+.global trunc
+.type trunc,@function
+trunc:
+	fldl 4(%esp)
+	mov $0xf,%al
+	jmp 1b
+
+.global truncf
+.type truncf,@function
+truncf:
+	flds 4(%esp)
+	mov $0xf,%al
+	jmp 1b
+
+.global truncl
+.type truncl,@function
+truncl:
+	fldt 4(%esp)
+	mov $0xf,%al
+	jmp 1b

+ 1 - 0
src/math/i386/floorf.s

@@ -0,0 +1 @@
+# see floor.s

+ 1 - 0
src/math/i386/floorl.s

@@ -0,0 +1 @@
+# see floor.s

+ 1 - 0
src/math/i386/trunc.s

@@ -0,0 +1 @@
+# see floor.s

+ 1 - 0
src/math/i386/truncf.s

@@ -0,0 +1 @@
+# see floor.s

+ 1 - 0
src/math/i386/truncl.s

@@ -0,0 +1 @@
+# see floor.s