Add initial snapshot of runtime crt.



git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@2 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/math/log1pl.S b/mingw-w64-crt/math/log1pl.S
new file mode 100755
index 0000000..ec6e566
--- /dev/null
+++ b/mingw-w64-crt/math/log1pl.S
@@ -0,0 +1,54 @@
+/*

+ * Written by J.T. Conklin <jtc@netbsd.org>.

+ * Public domain.

+ *

+ * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.

+* Removed header file dependency for use in libmingwex.a by

+ *   Danny Smith <dannysmith@users.sourceforge.net>

+ */

+

+	.file	"log1pl.S"

+	.text

+	.align 4

+	/* The fyl2xp1 can only be used for values in

+	   -1 + sqrt(2) / 2 <= x <= 1 - sqrt(2) / 2

+	   0.29 is a safe value.

+	 */

+limit:	.tfloat 0.29

+	/* Please note:	 we use a double value here.  Since 1.0 has

+	   an exact representation this does not effect the accuracy

+	   but it helps to optimize the code.  */

+one:	.double 1.0

+

+/*

+ * Use the fyl2xp1 function when the argument is in the range -0.29 to 0.29,

+ * otherwise fyl2x with the needed extra computation.

+ */

+.globl _log1pl; 

+	.def	_log1pl;	.scl	2;	.type	32;	.endef

+_log1pl:

+	fldln2

+	fldt	4(%esp)

+	fxam

+	fnstsw

+	fld	%st

+	sahf

+	jc	3f		// in case x is NaN or ±Inf

+4:

+	fabs

+	fldt	limit

+	fcompp

+	fnstsw

+	sahf

+	jnc	2f

+	faddl	one

+	fyl2x

+	ret

+

+2:	fyl2xp1

+	ret

+

+3:	jp	4b		// in case x is ±Inf

+	fstp	%st(1)

+	fstp	%st(1)

+	ret