|
Message-ID: <20130730005115.GA13143@openwall.com> 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
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.