提交 9443f1b5 编写于 作者: A Alexander Monakov 提交者: Rich Felker

math: move x87-family lrint functions to C with inline asm

上级 6bbdbfdc
#include <math.h>
long long llrint(double x)
{
long long r;
__asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st");
return r;
}
.global llrint
.type llrint,@function
llrint:
fldl 4(%esp)
fistpll 4(%esp)
mov 4(%esp),%eax
mov 8(%esp),%edx
ret
#include <math.h>
long long llrintf(float x)
{
long long r;
__asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st");
return r;
}
.global llrintf
.type llrintf,@function
llrintf:
sub $8,%esp
flds 12(%esp)
fistpll (%esp)
pop %eax
pop %edx
ret
#include <math.h>
long long llrintl(long double x)
{
long long r;
__asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st");
return r;
}
.global llrintl
.type llrintl,@function
llrintl:
fldt 4(%esp)
fistpll 4(%esp)
mov 4(%esp),%eax
mov 8(%esp),%edx
ret
#include <math.h>
long lrint(double x)
{
long r;
__asm__ ("fistpl %0" : "=m"(r) : "t"(x) : "st");
return r;
}
.global lrint
.type lrint,@function
lrint:
fldl 4(%esp)
fistpl 4(%esp)
mov 4(%esp),%eax
ret
#include <math.h>
long lrintf(float x)
{
long r;
__asm__ ("fistpl %0" : "=m"(r) : "t"(x) : "st");
return r;
}
.global lrintf
.type lrintf,@function
lrintf:
flds 4(%esp)
fistpl 4(%esp)
mov 4(%esp),%eax
ret
#include <math.h>
long lrintl(long double x)
{
long r;
__asm__ ("fistpl %0" : "=m"(r) : "t"(x) : "st");
return r;
}
.global lrintl
.type lrintl,@function
lrintl:
fldt 4(%esp)
fistpl 4(%esp)
mov 4(%esp),%eax
ret
#include <math.h>
long long llrintl(long double x)
{
long long r;
__asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st");
return r;
}
.global llrintl
.type llrintl,@function
llrintl:
fldt 8(%rsp)
fistpll 8(%rsp)
mov 8(%rsp),%rax
ret
#include <math.h>
long lrintl(long double x)
{
long r;
__asm__ ("fistpll %0" : "=m"(r) : "t"(x) : "st");
return r;
}
.global lrintl
.type lrintl,@function
lrintl:
fldt 8(%rsp)
fistpll 8(%rsp)
mov 8(%rsp),%rax
ret
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册