|
Message-ID: <20150706212447.GB2803@openwall.com> Date: Tue, 7 Jul 2015 00:24:47 +0300 From: Solar Designer <solar@...nwall.com> To: john-dev@...ts.openwall.com Subject: Re: extend SIMD intrinsics On Mon, Jul 06, 2015 at 08:08:21PM +0200, magnum wrote: > On 2015-07-06 10:23, Solar Designer wrote: > >Regarding possible use of union types, here's a relevant posting by > >Alexander Cherepanov: > > > >http://article.gmane.org/gmane.comp.security.phc/2753 > > > >Nearby postings in this thread are also relevant. > > I get more depressed the more I read. Indeed. > + typedef union { > + vtype v; > + uint32_t s[SIMD_COEF_32]; > + } vtype32; > > + typedef union { > + vtype v; > + uint64_t s[SIMD_COEF_64]; > + } vtype64; Disregarding the unclear status of arrays within unions as it relates to strict aliasing rules, this is what I would suggest too. This is probably the most reasonable approach for us now. Why two separate union types, though? We could use a shared type, with two arrays in place of s. Would have to call those e.g. s32 and s64. > - void SSESHA1body(vtype* _data, ARCH_WORD_32 *out, ARCH_WORD_32 > *reload_state, unsigned SSEi_flags) > + void SSESHA1body(vtype32 *data, vtype32 *out, vtype32 *reload_state, > uint32_t SSEi_flags) > { > ... > vtype a[SIMD_PARA_SHA1]; > vtype b[SIMD_PARA_SHA1]; > ... > SHA1_PARA_DO(i) > { > - a[i] = vload((vtype*)&reload_state[i*16*VS32+0*VS32]); > + a[i] = vload(reload_state->v[i*16+0]); > ... Why not simply: a[i] = reload_state->v[i*16+0]; or why not simply use reload_state->v[i*16+0] in a subsequent expression in place of a[i]? I think use of a[i] may only be needed when we start doing computation, not for the load. > Would this take us forward or back? Forward, I hope. Using those union types inside SSESHA1body(), etc. would be even safer, so e.g.: vtype32 a[SIMD_PARA_SHA1]; vtype32 b[SIMD_PARA_SHA1]; [...] a[i].v = reload_state->v[i*16+0]; but it increases our reliance on the optimizer for producing fast 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.