Skip to content

Commit

Permalink
ia64 implementation
Browse files Browse the repository at this point in the history
Thanks to Mike Frysinger i could torture some real IA64 HW (and myself too...).

Throw away the first post of this patch, it's broken, in several ways.
(Note to self: Don't try to be a cool kid and save on parenthesis)
And even if fixed, it's half as slow as the generic code.
Counting instructions is a bad move on IA64.

So here it is, new and improved, with 400% more unrolling:

an IA64 (McKinley)
        -------- orig ------
               a: 0x0CB4B676, 10000 * 160000 bytes     t: 1912 ms
               a: 0x25BEB273, 10000 * 159999 bytes     t: 1916 ms
               a: 0x733CB174, 10000 * 159998 bytes     t: 1912 ms
               a: 0x1144AF76, 10000 * 159996 bytes     t: 1916 ms
               a: 0x3F4ECB8A, 10000 * 159992 bytes     t: 1916 ms
               a: 0x1902A382, 10000 * 159984 bytes     t: 1912 ms
        -------- vec ------
               a: 0x0CB4B676, 10000 * 160000 bytes     t: 760 ms
               a: 0x25BEB273, 10000 * 159999 bytes     t: 764 ms
               a: 0x733CB174, 10000 * 159998 bytes     t: 760 ms
               a: 0x1144AF76, 10000 * 159996 bytes     t: 760 ms
               a: 0x3F4ECB8A, 10000 * 159992 bytes     t: 808 ms
               a: 0x1902A382, 10000 * 159984 bytes     t: 760 ms
        speedup: 2.515789

next stop, blackfin, then working on the ARM iWMMXt version for XScale
(N.B.: does someone have a link handy to the instruction reference?),
and when some time has passed a complete repost, there are little
changes here and there.
  • Loading branch information
kaffeemonster authored and vapier committed Apr 8, 2011
1 parent 9611121 commit c343f57
Show file tree
Hide file tree
Showing 3 changed files with 644 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Makefile.in
Expand Up @@ -236,7 +236,7 @@ depend:

# DO NOT DELETE THIS LINE -- make depend depends on it.

adler32.o: adler32.c adler32_ppc.c adler32_arm.c adler32_x86.c adler32_alpha.c adler32_mips.c adler32_bfin.c zutil.h zlib.h zconf.h
adler32.o: adler32.c adler32_ppc.c adler32_arm.c adler32_x86.c adler32_alpha.c adler32_mips.c adler32_bfin.c adler32_ia64.c zutil.h zlib.h zconf.h
zutil.o: zutil.h zlib.h zconf.h
gzclose.o gzlib.o gzread.o gzwrite.o: zlib.h zconf.h gzguts.h
compress.o example.o minigzip.o uncompr.o: zlib.h zconf.h
Expand Down
2 changes: 2 additions & 0 deletions adler32.c
Expand Up @@ -162,6 +162,8 @@ local int host_is_bigendian()
# include "adler32_alpha.c"
# elif defined(__bfin__)
# include "adler32_bfin.c"
# elif defined(__ia64__)
# include "adler32_ia64.c"
# elif defined(__mips__)
# include "adler32_mips.c"
# elif defined(__powerpc__) || defined(__powerpc64__)
Expand Down

0 comments on commit c343f57

Please sign in to comment.