Browse Source

math: use fnstsw consistently instead of fstsw in x87 asm

fnstsw does not wait for pending unmasked x87 floating-point exceptions
and it is the same as fstsw when all exceptions are masked which is the
only environment libc supports.
Szabolcs Nagy 10 năm trước cách đây
mục cha
commit
ec4318943a

+ 1 - 1
src/math/i386/fmod.s

@@ -4,7 +4,7 @@ fmod:
 	fldl 12(%esp)
 	fldl 4(%esp)
 1:	fprem
-	fstsw %ax
+	fnstsw %ax
 	sahf
 	jp 1b
 	fstp %st(1)

+ 1 - 1
src/math/i386/fmodf.s

@@ -4,7 +4,7 @@ fmodf:
 	flds 8(%esp)
 	flds 4(%esp)
 1:	fprem
-	fstsw %ax
+	fnstsw %ax
 	sahf
 	jp 1b
 	fstp %st(1)

+ 1 - 1
src/math/i386/fmodl.s

@@ -4,7 +4,7 @@ fmodl:
 	fldt 16(%esp)
 	fldt 4(%esp)
 1:	fprem
-	fstsw %ax
+	fnstsw %ax
 	sahf
 	jp 1b
 	fstp %st(1)

+ 1 - 1
src/math/i386/remainder.s

@@ -7,7 +7,7 @@ drem:
 	fldl 12(%esp)
 	fldl 4(%esp)
 1:	fprem1
-	fstsw %ax
+	fnstsw %ax
 	sahf
 	jp 1b
 	fstp %st(1)

+ 1 - 1
src/math/i386/remainderf.s

@@ -7,7 +7,7 @@ dremf:
 	flds 8(%esp)
 	flds 4(%esp)
 1:	fprem1
-	fstsw %ax
+	fnstsw %ax
 	sahf
 	jp 1b
 	fstp %st(1)

+ 1 - 1
src/math/i386/remainderl.s

@@ -4,7 +4,7 @@ remainderl:
 	fldt 16(%esp)
 	fldt 4(%esp)
 1:	fprem1
-	fstsw %ax
+	fnstsw %ax
 	sahf
 	jp 1b
 	fstp %st(1)

+ 1 - 1
src/math/i386/sqrt.s

@@ -2,7 +2,7 @@
 .type sqrt,@function
 sqrt:	fldl 4(%esp)
 	fsqrt
-	fstsw %ax
+	fnstsw %ax
 	sub $12,%esp
 	fld %st(0)
 	fstpt (%esp)

+ 1 - 1
src/math/x32/fmodl.s

@@ -4,7 +4,7 @@ fmodl:
 	fldt 24(%esp)
 	fldt 8(%esp)
 1:	fprem
-	fstsw %ax
+	fnstsw %ax
 	testb $4,%ah
 	jnz 1b
 	fstp %st(1)

+ 1 - 1
src/math/x32/remainderl.s

@@ -4,7 +4,7 @@ remainderl:
 	fldt 24(%esp)
 	fldt 8(%esp)
 1:	fprem1
-	fstsw %ax
+	fnstsw %ax
 	testb $4,%ah
 	jnz 1b
 	fstp %st(1)

+ 1 - 1
src/math/x86_64/fmodl.s

@@ -4,7 +4,7 @@ fmodl:
 	fldt 24(%rsp)
 	fldt 8(%rsp)
 1:	fprem
-	fstsw %ax
+	fnstsw %ax
 	testb $4,%ah
 	jnz 1b
 	fstp %st(1)

+ 1 - 1
src/math/x86_64/remainderl.s

@@ -4,7 +4,7 @@ remainderl:
 	fldt 24(%rsp)
 	fldt 8(%rsp)
 1:	fprem1
-	fstsw %ax
+	fnstsw %ax
 	testb $4,%ah
 	jnz 1b
 	fstp %st(1)