diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2015-09-29 12:19:48 +0200 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2015-10-26 09:49:43 +0100 |
commit | 1ee3630a3e57f38f688a6f0a5f9edbd8a0d7201f (patch) | |
tree | 3326b59ffb2650bff622642700981bf5541a1b04 /arch/mips/jz4740 | |
parent | d478b088a2f74fc8f34af7ceed86fa7640ca8610 (diff) |
MIPS: Use ARCH_USE_BUILTIN_BSWAP.
ARCH_USE_BUILTIN_BSWAP will use __builtin_bswap16(), __builtin_bswap32()
and __builtin_bswap64() where available. This allows better instruction
scheduling. On pre-R2 processors it will result in 32 bit and 64 bit
swapping being performed in a call to a __bswapsi2() rsp. __bswapdi2()
functions, so we add these, too.
For a 4.2 kernel with GCC 4.9 this yields the following kernel sizes:
text data bss dec hex filename
3996071 155804 88992 4240867 40b5e3 vmlinux ip22 baseline
3985687 159900 88992 4234579 409d53 vmlinux ip22 + bswap patch
6913157 378552 251024 7542733 7317cd vmlinux ip27 baseline
6878581 378552 251024 7508157 7290bd vmlinux ip27 + bswap patch
5773777 268752 187424 6229953 5f0fc1 vmlinux malta baseline
5773401 268752 187424 6229577 5f0e49 vmlinux malta + bswap patch
Presumably the code size improvments yield better cache hit rate thus
better performance compensating for the extra function call but this
will still need to be benchmarked.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/jz4740')
0 files changed, 0 insertions, 0 deletions