My first patch was based on this one. But this patch can not load a st0 register if "t (x)" constraint is there. And I don't know how to tell a tcc to do this.
2015-01-21 8:55 GMT+03:00, Roy Tam <[email protected]>: > Hello, > > > 2015-01-21 1:14 GMT+08:00 Sergey Korshunoff <[email protected]>: >> There is patch for the win32/include/math.h which removes "t", "st" >> > > I wonder why not just have %t,%st implemented? > I wrote a small hack for that about half year ago. > http://lists.gnu.org/archive/html/tinycc-devel/2014-08/msg00024.html > >> 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 >>>> >>> >> >> _______________________________________________ >> Tinycc-devel mailing list >> [email protected] >> https://lists.nongnu.org/mailman/listinfo/tinycc-devel >> > > _______________________________________________ > Tinycc-devel mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/tinycc-devel > _______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
