|
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
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.