Maciej W. Rozycki (macro@ds2.pg.gda.pl) writes: > > > We added patterns to let our (old) GCC use the new rotates and > > bit-insert/extracts, at least in simple cases. I'm not sure whether > > we've put those in our 3.4 evolution tree yet, but if we have we > > should push those out. > > As a side note, it makes me wonder where the borderline of the RISC > actually is. Even Intel abandoned support for bit insert/extract > instructions after an initial attempt for the i386. They figured out the > implementation was too complicated. ;-) It probably was... but MIPS uses register-to-register ALU operations and no condition codes. The interface to the ALU is typically rather simple. So adding some peculiar new 2- or 3-operand computation is relatively easy. If the instruction is too complicated, of course, it might eventually become a critical path and make the whole CPU slower. But insert/extract - while elaborate to describe - involve only fairly shallow logic. Remember: the point of RISC was never to have less instructions (that's just a cute acronym) - the point was and is to define an instruction set which is easy to implement as an efficient pipeline. Of course, instructions still have to be *useful* to be added. Insert/extract make a reasonable case for themselves, but actually arrived in MIPS32 release 2 as part of a bunch of other bit-shuffle instructions (also includes rotates and various byte-swaps) which - together - help quite a bit to manipulate sub-word data in registers. -- Dominic Sweetman MIPS Technologies