|
Message-ID: <709ca11f81c2bb1360044cd655130032@smtp.hushmail.com> Date: Tue, 8 Dec 2015 00:10:47 +0100 From: magnum <john.magnum@...hmail.com> To: john-dev@...ts.openwall.com Subject: Re: gcc target_clones On 2015-12-07 22:41, Solar Designer wrote: > This is a new/upcoming gcc feature that we might find useful: > > https://developerblog.redhat.com/2015/12/07/octobernovember-2015-gnu-toolchain-update/ > > "GCC's function attribute feature has been extended to support another > attribute: target_clones (<options>). This is used to specify that a > function is to be cloned into multiple versions compiled with different > target options than specified on the command line. The supported > options and restrictions are the same as for target attribute. > For instance on an x86, you could compile a function with > target_clones("sse4.1,avx"). It will create 2 function clones, one > compiled with -msse4.1 and another with -mavx. At the function call it > will create resolver ifunc, that will dynamically call a clone suitable > for current architecture." Cool. I'm not sure it helps a lot, this is basically trivial without it. But it should help a little provided we can live with the portability issues. The reason I did not already implement this manually is that our main obstacle is not just making multiple copies of eg. SIMDmd4body. Between eg. AVX and AVX2 we have a bigger problem: The format, and all of its functions that depend on SIMD width and/or interleaving factor. Still doable of course, but trickier. So we'd normally have to clone at least set_key, get_key, crypt_all, cmp_*, get_hash_* and, for salted formats, often set_salt too and perhaps even get_salt. I wonder if the compiler would "optimize away" redundant clones that actually ended up identical (eg. for SSE2..AVX inclusive). Also, we'd need to change a few things: For example, using this we would no longer be able to have consistent SIMD_COEF_32, SIMD_PARA_MD4 or GETPOS macros. And how would we use pseudo-intrinsics.h? Perhaps we can source it *within* the functions that has target clones? magnum
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.