Kaynağa Gözat

asm for scalbn family

unlike some implementations, these functions perform the equivalent of
gcc's -ffloat-store on the result before returning. this is necessary
to raise underflow/overflow/inexact exceptions, perform the correct
rounding with denormals, etc.
Rich Felker 13 yıl önce
ebeveyn
işleme
58ff9e8eaf

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

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

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

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

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

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

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

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

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

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

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

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

+ 20 - 0
src/math/i386/scalbn.s

@@ -0,0 +1,20 @@
+.global ldexp
+.type ldexp,@function
+ldexp:
+	nop
+
+.global scalbln
+.type scalbln,@function
+scalbln:
+	nop
+
+.global scalbn
+.type scalbn,@function
+scalbn:
+	fildl 12(%esp)
+	fldl 4(%esp)
+	fscale
+	fstp %st(1)
+	fstpl 4(%esp)
+	fldl 4(%esp)
+	ret

+ 20 - 0
src/math/i386/scalbnf.s

@@ -0,0 +1,20 @@
+.global ldexpf
+.type ldexpf,@function
+ldexpf:
+	nop
+
+.global scalblnf
+.type scalblnf,@function
+scalblnf:
+	nop
+
+.global scalbnf
+.type scalbnf,@function
+scalbnf:
+	fildl 8(%esp)
+	flds 4(%esp)
+	fscale
+	fstp %st(1)
+	fstps 4(%esp)
+	flds 4(%esp)
+	ret

+ 18 - 0
src/math/i386/scalbnl.s

@@ -0,0 +1,18 @@
+.global ldexpl
+.type ldexpl,@function
+ldexpl:
+	nop
+
+.global scalblnl
+.type scalblnl,@function
+scalblnl:
+	nop
+
+.global scalbnl
+.type scalbnl,@function
+scalbnl:
+	fildl 16(%esp)
+	fldt 4(%esp)
+	fscale
+	fstp %st(1)
+	ret