On Wed, 17 Jan 2007, Andrew Haley wrote: | Ian Lance Taylor writes: | > Gabriel Dos Reis <[EMAIL PROTECTED]> writes: | > | > > Ian, do you believe something along the line of | > > | > > # > I mean, could not we generate the following for "%": | > > # > | > > # > rem a b := | > > # > if abs(b) == 1 | > > # > return 0 | > > # > return <machine-instruction> a b | > > # | > > # On x86 processors that have conditional moves, why not do the equivalent | > > # of | > > # | > > # neg_b = -b; | > > # cmov(last result is negative,neg_b,b) | > > # __machine_rem(a,b) | > > # | > > # Then there's no disruption of the pipeline. | > > | > > is workable for the affected targets? | > | > Sure, I think the only real issue is where the code should be | > inserted. | | From a performance/convenience angle, the best place to handle this is | either libc or the kernel.
Hmm, that is predicated on assumptions not convenient to users on targets that are not glibc-based or GNU/Linux-based. -- Gaby