Now, mod branch compiles my openlisp ISLISP *and* its huge non regression tests suite ROOTB.
Thanks. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of grischka Sent: samedi 19 décembre 2009 19:33 To: [email protected] Subject: Re: [Tinycc-devel] Wrong __int64 computation Christian Jullien wrote: > In fact it was related to unsigned __int64 not signed __int64 > > The following patch modeled after TOK_DIV in x86_64-gen fixes, at least for > my case, this issue. Yes, almost. The signed div does sign-extend rax into rdx 4: 48 99 cqto 6: 48 f7 f9 idiv %rcx while the unsigned case just clears rdx, like this: 9: 48 31 d2 xor %rdx,%rdx c: 48 f7 f1 div %rcx You'd notice the difference only with _very_ big numbers, such as 0xBFFFFFFFFFFFFFFF / 16, though. I hope this works: http://repo.or.cz/w/tinycc.git/commitdiff/a98caba0 --- grischka > Could you please review the patch? > > } else { > if (op == TOK_UDIV || op == TOK_UMOD) { > #if 1 > if ((vtop->type.t & VT_BTYPE) & VT_LLONG) { > o(0x9948); /* cqto */ > o(0x48 + REX_BASE(fr)); > } else { > o(0x99); /* cltd */ > } > o(0xf7); /* idiv fr, %eax */ > o(0xf0 + fr); > #else > o(0xf7d231); /* xor %edx, %edx, div fr, %eax */ > o(0xf0 + fr); > #endif > > Christian > _______________________________________________ Tinycc-devel mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/tinycc-devel ---------------------------------------------------------------------------- ----------- Orange vous informe que cet e-mail a ete controle par l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete detecte. _______________________________________________ Tinycc-devel mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/tinycc-devel
