Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 18 May 2010 13:49:46 +0200
Subject: Re: C compiler generated SSE2 code

Le 18/05/2010 01:32, Solar Designer a écrit :
> Can you upload it to the wiki, please?

Done, but I made a quick git patch.

>> gcc 15696
>> icc 32364
>> clang 19644
> It's a bit weird that gcc performs so poorly here.  I am getting
> near-perfect SSE2 code for bitslice DES (an unreleased revision of the
> source code) with gcc 4.5.0.  With properly tweaked compiler options
> (primarily to control function inlining), it slightly outperforms the
> hand-crafted SSE2 assembly code currently in JtR, in fact.

GCC actually performs a tad better when computing 2 groups of 4 
passwords at once instead of 3. I did set 3 for 64 bit mode because it 
was faster with icc.

I added printf("round %d\n", round); round++; between each MD5 round to 
easily differentiate them.. I tweaked the arch.h a bit too, so here are 
the actual benchs (without printf), and sample compiled code (with printf):

gcc : 10944
clang : 18186
icc : 27160

This does speak for itself :) The icc does disentangle the whole stuff, 
but is still faster with 3 loops (only 2 in the sample).

Do you mind giving bench of your SSE code with ICC ? Or just share it so 
that I could try it :)


I didn't knew about them and will investigate further.

>> gcc version 4.3.2 (Debian 4.3.2-1.1)
> You could want to try 4.5.0 (build it from source).

To be honest, when I found that gcc 4.4.3 performed SIGNIFICANTLY slower 
than 4.3.2 on this, I just gave up on it. I'll eventually try.

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.