From: Rich Felker Date: Sun, 18 Mar 2012 21:09:34 +0000 (-0400) Subject: assembly optimizations for fmod/remainder functions X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=commitdiff_plain;h=b935147761d1770bb115f09f8c28ddb4d36e1236;ds=sidebyside assembly optimizations for fmod/remainder functions --- diff --git a/src/math/i386/fmod.s b/src/math/i386/fmod.s new file mode 100644 index 00000000..069fbfe7 --- /dev/null +++ b/src/math/i386/fmod.s @@ -0,0 +1,11 @@ +.global fmod +.type fmod,@function +fmod: + fldl 12(%esp) + fldl 4(%esp) +1: fprem + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff --git a/src/math/i386/fmodf.s b/src/math/i386/fmodf.s new file mode 100644 index 00000000..d99c80f2 --- /dev/null +++ b/src/math/i386/fmodf.s @@ -0,0 +1,11 @@ +.global fmodf +.type fmodf,@function +fmodf: + flds 8(%esp) + flds 4(%esp) +1: fprem + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff --git a/src/math/i386/fmodl.s b/src/math/i386/fmodl.s new file mode 100644 index 00000000..7e07e7b5 --- /dev/null +++ b/src/math/i386/fmodl.s @@ -0,0 +1,11 @@ +.global fmodl +.type fmodl,@function +fmodl: + fldt 16(%esp) + fldt 4(%esp) +1: fprem + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff --git a/src/math/i386/remainder.s b/src/math/i386/remainder.s new file mode 100644 index 00000000..47ee3402 --- /dev/null +++ b/src/math/i386/remainder.s @@ -0,0 +1,11 @@ +.global remainder +.type remainder,@function +remainder: + fldl 12(%esp) + fldl 4(%esp) +1: fprem1 + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff --git a/src/math/i386/remainderf.s b/src/math/i386/remainderf.s new file mode 100644 index 00000000..5b5fc235 --- /dev/null +++ b/src/math/i386/remainderf.s @@ -0,0 +1,11 @@ +.global remainderf +.type remainderf,@function +remainderf: + flds 8(%esp) + flds 4(%esp) +1: fprem1 + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff --git a/src/math/i386/remainderl.s b/src/math/i386/remainderl.s new file mode 100644 index 00000000..00978729 --- /dev/null +++ b/src/math/i386/remainderl.s @@ -0,0 +1,11 @@ +.global remainderl +.type remainderl,@function +remainderl: + fldt 16(%esp) + fldt 4(%esp) +1: fprem1 + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff --git a/src/math/x86_64/fmodl.s b/src/math/x86_64/fmodl.s new file mode 100644 index 00000000..ca81e60c --- /dev/null +++ b/src/math/x86_64/fmodl.s @@ -0,0 +1,11 @@ +.global fmodl +.type fmodl,@function +fmodl: + fldt 24(%rsp) + fldt 8(%rsp) +1: fprem + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff --git a/src/math/x86_64/remainderl.s b/src/math/x86_64/remainderl.s new file mode 100644 index 00000000..75c12374 --- /dev/null +++ b/src/math/x86_64/remainderl.s @@ -0,0 +1,11 @@ +.global remainderl +.type remainderl,@function +remainderl: + fldt 24(%rsp) + fldt 8(%rsp) +1: fprem1 + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret