diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-03-20 23:29:24 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-03-20 23:29:24 -0400 |
commit | 30df206cb0c66848142898115d301a0d80333d0f (patch) | |
tree | 71bc7185b699610ed604a544ad8c508536d8990f /src/math/x86_64/floorl.s | |
parent | 80949ccdc6656c51292b4260b6e8d7b493ca6c45 (diff) | |
download | musl-30df206cb0c66848142898115d301a0d80333d0f.tar.gz musl-30df206cb0c66848142898115d301a0d80333d0f.tar.xz musl-30df206cb0c66848142898115d301a0d80333d0f.zip |
x86_64 math asm, long double functions only
this has not been tested heavily, but it's known to at least assemble and run in basic usage cases. it's nearly identical to the corresponding i386 code, and thus expected to be just as correct or just as incorrect.
Diffstat (limited to 'src/math/x86_64/floorl.s')
-rw-r--r-- | src/math/x86_64/floorl.s | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/math/x86_64/floorl.s b/src/math/x86_64/floorl.s new file mode 100644 index 00000000..80da4660 --- /dev/null +++ b/src/math/x86_64/floorl.s @@ -0,0 +1,27 @@ +.global floorl +.type floorl,@function +floorl: + fldt 8(%rsp) +1: mov $0x7,%al +1: fstcw 8(%rsp) + mov 9(%rsp),%ah + mov %al,9(%rsp) + fldcw 8(%rsp) + frndint + mov %ah,9(%rsp) + fldcw 8(%rsp) + ret + +.global ceill +.type ceill,@function +ceill: + fldt 8(%rsp) + mov $0xb,%al + jmp 1b + +.global truncl +.type truncl,@function +truncl: + fldt 8(%rsp) + mov $0xf,%al + jmp 1b |