On Thu, Oct 29, 2009 at 4:14 PM, Petter Urkedal <[email protected]> wrote: > On 2009-10-29, Timothy Normand Miller wrote: >> The same multipliers will be used for float, which means we need 24x24 >> -> 48 (unsigned) at least. That's still three. But if we're going to >> use the multipliers for shifts, we need the full 32x32 multiplier. >> >> That is unless you can come up with a clever way to do a right shift >> with a multiplier. If we think of the multiplier as a ring (in this >> case, it doesn't qualify as a galois field), we may be able to find a >> multiplier for any multiplicand that will give us any 32-bit product >> we want. The trouble is that what that multiplier needs to be could >> be so complicated to compute that it's not worth using the multiplier. >> >> I did some tinkering with 16-bit numbers, and I can find no single >> multiplier that works with all multiplicands that will result in the >> correct value for shifting the multiplicand right by 4 bits. > > Without reordering the bits, I'm pretty sure it can't be done. Note > that for a fixed multiplier, bit number i of the multiplicand is > independent of all bits j > i of the other multiplier. > > But if we reorder the bits, it's embarrassingly obvious: Reverse the > bits of the base-argument and the result. That should take 64 MUXes.
Man. I'm really being shamed by this discussion. Why didn't I think of that! :) Now, we still don't have an answer for rotate, which brings me back to using the 64-bit product. -- Timothy Normand Miller http://www.cse.ohio-state.edu/~millerti Open Graphics Project _______________________________________________ Open-graphics mailing list [email protected] http://lists.duskglow.com/mailman/listinfo/open-graphics List service provided by Duskglow Consulting, LLC (www.duskglow.com)
