[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Sat, 7 Aug 2010 19:54:44 -0700
From: Eric Christopher <echristo@...le.com>
To: john-users@...ts.openwall.com
Subject: macosx-x86-64 and macosx-x86-sse2 targets
Hi all,
After the benchmark runs of gcc vs llvm-gcc done by the "Phoronix" benchmark guys I looked into the performance difference they spotted with md5 and blowfish via john. It turns out that it comes down to the scheduling decisions made by both gcc and llvm-gcc. gcc has a scheduler that schedules for functional units whereas llvm schedules more for register pressure - unfortunately the code in both blowfish and md5 is already hand scheduled so all we do is muck it up (though we do have a lot less stack spills) and impact ILP in the core loops.
A workaround for this is to add -fno-schedule-insns to the two targets in the compile options. I've tested this with both the gcc available on OS X and llvm-gcc and it doesn't impact performance with gcc and gives a pretty large performance increase with llvm-gcc.
Feel free to contact me with any questions!
Thanks.
-eric
Powered by blists - more mailing lists
Powered by Openwall GNU/*/Linux -
Powered by OpenVZ