Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 30 Jul 2013 04:51:15 +0400
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: Parallella: bcrypt

Katja -

On Tue, Jul 30, 2013 at 04:16:54AM +0400, Solar Designer wrote:
> On Tue, Jul 30, 2013 at 01:59:10AM +0200, Katja Malvoni wrote:
> > 10 for pointers (P, S[0], S[1], S[2], S[3]),
> 
> Oh, we pay a price for Epiphany lacking addressing modes with both index
> and constant displacement at once.  And you explained you can't move the
> addition to IMADD because that instruction would overwrite the register.
> 
> > 2 for ptr and end for controlling the loop, 2 as offset between
> > first and second BF_ctx,
> 
> Why two registers for that offset, isn't it just one offset?  And why do
> you need the offset?

OK, this is basically the same issue as above - can't have constant
displacement when already using base+index, so have to spend a register
on the displacement.

> As an alternative, you could use two ptr's (but
> only one "end", since the loop iteration count is obviously and
> necessarily the same for both instances), right?  So that would be one
> register (the second "ptr") instead of two (offsets), no?

I (still) think this may work.  Then you'd need to be updating two
ptr's, but you might be able to use a free IADD for that.

Anyhow, even preloading e.g. 14 out of 18 elements of the second P array
could be helpful - although it'd complicated the source code.

Alexander

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ