From: Christophe R. <cs...@ca...> - 2012-04-17 08:08:48
|
"Bruce O'Neel" <ec...@pc...> writes: > On my OpenBSD/PPC system: > > * (defun one (a) > (ldb (byte 9 27) a)) > ONE > * (defun two (a) > (declare (type (integer -3 57216651) a)) > (ldb (byte 9 27) a)) > > TWO > * (- (one 10) (two 10)) > > -320 > * Ahaha. I'm slightly scared: either this is wrong on all PPC platforms, or I don't understand, or, wait, maybe this is something to do with the top half of what are really 64-bit registers being assumed to be zero under some circumstances? And other platforms' ABIs making that happen but not OpenBSD? This is exactly the kind of thing that would be exposed more with my patch: there would be more hardware arithmetic and fewer full calls to "generic" (in the generic sense :-) Lisp functions. > I'll explore this a bit. I'll also poke at different limits that > might be slightly or bizzarly different one OpenBSD/PPC vs other > OpenBSD systems. Cheers, Christophe |