From: Rich Felker Date: Mon, 30 Apr 2012 00:31:46 +0000 (-0400) Subject: new math asm (abs/rounding) for x86_64 X-Git-Tag: v0.9.0~42 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=0e4a995213620630005a14f32c089879f7c0315e;p=oweals%2Fmusl.git new math asm (abs/rounding) for x86_64 untested --- diff --git a/src/math/x86_64/fabs.s b/src/math/x86_64/fabs.s new file mode 100644 index 00000000..5715005e --- /dev/null +++ b/src/math/x86_64/fabs.s @@ -0,0 +1,9 @@ +.global fabs +.type fabs,@function +fabs: + xor %eax,%eax + dec %rax + shr %rax + movq %rax,%xmm1 + andpd %xmm1,%xmm0 + ret diff --git a/src/math/x86_64/fabsf.s b/src/math/x86_64/fabsf.s new file mode 100644 index 00000000..501a1f17 --- /dev/null +++ b/src/math/x86_64/fabsf.s @@ -0,0 +1,7 @@ +.global fabsf +.type fabsf,@function +fabsf: + mov $0x7fffffff,%eax + movq %rax,%xmm1 + andps %xmm1,%xmm0 + ret diff --git a/src/math/x86_64/llrint.s b/src/math/x86_64/llrint.s new file mode 100644 index 00000000..0de0658f --- /dev/null +++ b/src/math/x86_64/llrint.s @@ -0,0 +1,5 @@ +.global llrint +.type llrint,@function +llrint: + cvtsd2si @xmm0,%rax + ret diff --git a/src/math/x86_64/llrintf.s b/src/math/x86_64/llrintf.s new file mode 100644 index 00000000..b05f7be9 --- /dev/null +++ b/src/math/x86_64/llrintf.s @@ -0,0 +1,5 @@ +.global llrintf +.type llrintf,@function +llrintf: + cvtss2si @xmm0,%rax + ret diff --git a/src/math/x86_64/lrint.s b/src/math/x86_64/lrint.s new file mode 100644 index 00000000..59b12038 --- /dev/null +++ b/src/math/x86_64/lrint.s @@ -0,0 +1,5 @@ +.global lrint +.type lrint,@function +lrint: + cvtsd2si @xmm0,%rax + ret diff --git a/src/math/x86_64/lrintf.s b/src/math/x86_64/lrintf.s new file mode 100644 index 00000000..951894b6 --- /dev/null +++ b/src/math/x86_64/lrintf.s @@ -0,0 +1,5 @@ +.global lrintf +.type lrintf,@function +lrintf: + cvtss2si @xmm0,%rax + ret