Re: Revised PPC assembly implementation
From: Paul Mackerras <hidden>
Date: 2016-06-15 22:41:54
linux@horizon.com writes:
Three changes: - Added stack frame as per your description. - Found two bugs. (Cutting & pasting too fast.) Fixed. - Minor scheduling improvements. More to come. Which lead to three questions: - Is the stack set properly now?
Not quite; you are saving 20 registers, so you need a 96-byte stack frame, like this: stwu %r1,-96(%r1) stmw %r13,16(%r1) ... lmw %r13,16(%r1) addi %r1,%r1,96 blr Since sha1_core is a leaf function, I suppose you could use the lr save area (do stwu %r1,-80(%r1); stmw %r13,0(%r1)) but it seems a bit dodgy.
- Does it produce the right answer now?
Yes.
- Is it any faster?
I did 10 repetitions of my program that calls SHA1_Update with a 4096-byte block of zeroes 256,000 times. With my version, the average time was 4.6191 seconds with a standard deviation of 0.0157. With your version, the average was 4.6063 and the standard deviation 0.0148. So I would say that your version is probably just a little faster - of the order of 0.3% faster. Paul.