[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] The inline assembly clobber for floating point regist
From: |
Sergey Korshunoff |
Subject: |
Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented? |
Date: |
Tue, 20 Jan 2015 18:25:07 +0300 |
Because I don't know how to handle a "t" constraint right, a math.h
can be rewritten
like:
long lrint (double x)
{
long retval;
__asm__ __volatile__ (
"fldl %1\n"
"fistpl %0\n" : "=m" (retval) : "m" (x) );
return retval;
}
insteed of the
long lrint (double x)
{
long retval;
__asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st");
return retval;
}
2015-01-20 17:43 GMT+03:00, Sergey Korshunoff <address@hidden>:
> Handling of the "t" spec needs to be improved. I take patch for it
> from the this mail list (2014)
> tcc don't load a function parameter into the float stack.
> There is asm of the gcc and tcc:
>
> long lrint (double x)
> {
> long retval;
> __asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st");
> return retval;
> }
>
> gcc:
> push %ebp
> mov %esp,%ebp
> sub $0x4,%esp
> fldl 0x8(%ebp) # !!!
> fistpl -0x4(%ebp)
> mov -0x4(%ebp),%eax
> leave
> ret
>
> tcc:
> push %ebp
> mov %esp,%ebp
> sub $0x4,%esp
> fistpl -0x4(%ebp) # where is fldl ???
> mov -0x4(%ebp),%eax
> jmp 14 <lrint+0x14>
> leave
> ret
>
- [Tinycc-devel] Is this a duplicate ASM operation?, YX Hao, 2015/01/18
- Re: [Tinycc-devel] Is this a duplicate ASM operation?, Daniel Glöckner, 2015/01/18
- Re: [Tinycc-devel] Is this a duplicate ASM operation?, Sergey Korshunoff, 2015/01/18
- [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, YX Hao, 2015/01/19
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, Sergey Korshunoff, 2015/01/20
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, YX Hao, 2015/01/20
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, KHMan, 2015/01/20
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, Sergey Korshunoff, 2015/01/20
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, Sergey Korshunoff, 2015/01/20
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, Sergey Korshunoff, 2015/01/20
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?,
Sergey Korshunoff <=
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, Sergey Korshunoff, 2015/01/20
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, Roy Tam, 2015/01/21
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, Sergey Korshunoff, 2015/01/21
- Re: [Tinycc-devel] The inline assembly clobber for floating point register stack `%st' not implemented?, YX Hao, 2015/01/20