[PATCH] Optimize manual byte swap implementations v3

Andreas Krebbel krebbel@linux.vnet.ibm.com
Mon Apr 27 08:21:00 GMT 2009


Hi Richard,

as proposed by Mark I did some experiments with the ARM target. I think 
the byte swap optimizer is especially benefical for targets where a 
"bswap" instruction has been added with some later CPU level. For these 
targets it is especially ugly to enhance code with inline assemblies 
since it would require CPU level checks. For ARM the instruction has 
been added with ARMv6. Currently neither the Linux kernel nor newlib use 
the "rev" instruction to implement byte swaps.

In order to enable the ARM byte swap instruction at all I did a small 
patch adding the "rev" instruction to the arm back-end and a kernel 
patch removing the bswap special handling in the linux kernel.

With the byte swap optimizer pass enabled the vmlinux.o object file 
contained 178 "rev" instructions shrinking the .text section by several 
kB (I don't have the exact number on this machine). To me a bit 
surprising was the shrinkage of the debug information. The .debug* 
sections together became about 40kB smaller.

What is lacking is to have a look at the performance overhead. I would 
consider the kernel as some kind of worst case scenario and I will try 
to do some benchmarking on my x86_64 machine with it.

Bye,

-Andreas-



More information about the Gcc-patches mailing list