There is patch for the win32/include/math.h which removes "t", "st"

2015-01-20 18:25 GMT+03:00, Sergey Korshunoff <[email protected]>:
> 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 <[email protected]>:
>> 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
>>
>

Attachment: 032-math-lrint.patch
Description: Binary data

_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to