|
|
Message-Id: <D6E7B905-02F2-4DD5-B11F-DFC896E033C5@gmail.com>
Date: Tue, 7 Jul 2015 09:35:18 +0800
From: Lei Zhang <zhanglei.april@...il.com>
To: john-dev@...ts.openwall.com
Subject: Re: extend SIMD intrinsics
> On Jul 7, 2015, at 5:24 AM, Solar Designer <solar@...nwall.com> wrote:
>
> 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;
>
>
> 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.
Do you mean a single type like this?
typedef union {
vtype v;
uint32_t s32[SIMD_COEF_32];
uint64_t s64[SIMD_COEF_64];
} vtype;
> 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];
Then why use vtype32 here?
And why not:
a[i] = reload_state[i*16+0];
> but it increases our reliance on the optimizer for producing fast code.
I don't understand this well. Do you mean the compiler might not generate a load for a[i]?
Lei
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.