git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: block-sha1: improve code on large-register-set machines

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Aug 11, 2009, 22:53 UTC
Message-ID
<alpine.LFD.2.01.0908111550470.28882@localhost.localdomain>
In-Reply-To
<alpine.LFD.2.00.0908111437160.10633@xanadu.home>
On Tue, 11 Aug 2009, Nicolas Pitre wrote:
Show 9 quoted lines
> 
> Well... gcc is really strange in this case (and similar other ones) with 
> ARM compilation.  A good indicator of the quality of the code is the 
> size of the stack frame.  When using the "+m" then gcc creates a 816 
> byte stack frame, the generated binary grows by approx 3000 bytes, and 
> performances is almost halved (7.600s).  Looking at the assembly result 
> I just can't figure out all the crazy moves taking place.  Even the 
> version with no barrier what so ever produces better assembly with a 
> stack frame of 560 bytes.

Ok, that's just crazy. That function has a required stack size of exactly 64 bytes, and anything more than that is just spilling. And if you end up with a stack frame of 560 bytes, that means that gcc is doing some _crazy_ spilling.

One thing that strikes me is that I've been just testing with gcc-4.4, and BenH (who did some tests on PPC where SHA1 is just _trivial_ because it all fits in the normal register space) noticed that older versions of gcc that he tested did much worse on this.

I think Artur also posted (x86) numbers with older gcc versions doing worse. Maybe you're seeing some of that?

			Linus
Previous: Nicolas PitreNext: Linus Torvalds
Message 13 of 16 in “block-sha1: improve code on large-register-set machines”
  1. Linus TorvaldsAug 10, 2009
  2. Nicolas PitreAug 11, 2009
  3. Linus TorvaldsAug 11, 2009
  4. Nicolas PitreAug 11, 2009
  5. Nicolas PitreAug 11, 2009
  6. Brandon CaseyAug 11, 2009
  7. Nicolas PitreAug 11, 2009
  8. Brandon CaseyAug 11, 2009
  9. Linus TorvaldsAug 11, 2009
  10. Brandon CaseyAug 11, 2009
  11. Linus TorvaldsAug 11, 2009
  12. Nicolas PitreAug 11, 2009
  13. Linus TorvaldsAug 11, 2009
  14. Linus TorvaldsAug 11, 2009
  15. Nicolas PitreAug 12, 2009
  16. Artur SkawinaAug 11, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.