> I suspect the rotation part is the sarl+sall and or. Either we could > experiment with changing the code, or we could try to make gcc detect > that this code actually is a rotate... Possibly gcc already does that > right thing, with today's CPU architectures it can be difficult to know > which ops are the most efficient choice.
I don't know, GCC already has plenty of rotate-detection code. It might be that for 16-bit it does not like to give a rotate to your machine. Usually, trying with -mtune=i386 is a way to see if it has taken its decision based on the hardware. Paolo