Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150713172247.GA12357@openwall.com>
Date: Mon, 13 Jul 2015 20:22:47 +0300
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: reporting of SIMD instruction set in use (was: PHC: Lyra2 on GPU)

On Mon, Jul 13, 2015 at 07:00:15PM +0200, Agnieszka Bielec wrote:
> 2015-07-12 16:39 GMT+02:00 Solar Designer <solar@...nwall.com>:
> > More importantly, it's not necessarily "SSE2" if SIMD_COEF_64 is
> > defined.  It could as well be "AVX" or something else, depending on the
> > build.  Your task is to ensure proper reporting, including for things
> > like "SSE2" vs. "AVX".
> 
> what if algorithm in most cases uses see and uses ssse only a little ?
> Will my code be compiled to AVX if I have sse2 intrinsics in the code
> and I have defined __AVX__ ?

Yes.

But your questions sound confused.  What do you mean by "see" (SSE2 or
something?) and "ssse" (I guess SSSE3)?

If the source code has e.g. some SSSE3 intrinsics, then that's what you
should report as the SIMD instruction set that it uses, unless __AVX__
is defined, in which case everything gets compiled to AVX instructions
instead.  There are AVX (VEX-encoded) instruction equivalents to all of
SSE*, including SSSE3 (why single it out like that at all? it is not in
any way special, it just sits inbetween SSE3 and SSE4.1 historically).

You should have a habit of reviewing the generated assembly code for
different ones of your builds, with different compiler options.  Maybe
this will help you achieve an intuitive understanding of these things.

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.