crc32: Impl. linux optimized crc32()
authorJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
Thu, 19 Nov 2009 12:44:16 +0000 (13:44 +0100)
committerWolfgang Denk <wd@denx.de>
Wed, 2 Dec 2009 22:42:40 +0000 (23:42 +0100)
commit3ee8c12071f0e3bdda25125b63c9d3fd54a7c9d8
tree68808197881f0d53f9a4956cbc1afdf932cd4fde
parentd984fed068b3bec8a7edaf7a3de71479abde080a
crc32: Impl. linux optimized crc32()

Ported over the more efficient linux crc32() function.
A quick comparsion on ppc:
After changing the old crc32 to do 4 bytes in the
inner loop to be able to compare with new version one can note:
- old inner loop has 61 insn, new has 19 insn.
- new crc32 does one 32 bit load of data to crc while
  the old does four 8 bits loads.
- size is bit bigger for the new crc32:
  1392(old) 1416(new) of text. The is because the new version
  shares code with crc32_no_comp() instead of duplicating code.
- about 33% faster on ppc:
  New > crc 0 0xfffffff -> 39 secs
  Old > crc 0 0xfffffff -> 60 secs

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
lib_generic/crc32.c