Use __builtin_constant_p to determine if we can use lswapl
authorMatt Turner <mattst88@gmail.com>
Tue, 16 Aug 2011 23:19:24 +0000 (19:19 -0400)
committerMatt Turner <mattst88@gmail.com>
Wed, 21 Sep 2011 21:14:44 +0000 (17:14 -0400)
commitd206d52f657cb63a0f6ba8b62d788c1812b57c81
tree3900247bd0015d1b3f1059b6aefa5ba5eb0084f0
parent889b700e7760ced38bcf5f3aff2d31d3d9a058d7
Use __builtin_constant_p to determine if we can use lswapl

If the address of the swapped memory location is known at compile time,
we can check its alignment at no runtime cost and use lswapl instead.

           text   data    bss      dec     hex  filename
before: 1872820  52136  78040  2002996  1e9034  hw/xfree86/Xorg
after:  1864396  52136  78040  1994572  1e6f4c  hw/xfree86/Xorg

bswap instructions: 131 ->  308 (used in lswapl)
rol instructions:   943 -> 1174 (used in lswaps)

Reviewed-by: Peter Harris <pharris@opentext.com>
Signed-off-by: Matt Turner <mattst88@gmail.com>
include/misc.h