Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <715ef2cfd3aeb5055e71bac9a0717290@smtp.hushmail.com>
Date: Mon, 27 May 2013 18:43:59 +0200
From: magnum <john.magnum@...hmail.com>
To: john-dev@...ts.openwall.com
Subject: Re: X32 build, anyone?

On 27 May, 2013, at 2:50 , magnum <john.magnum@...hmail.com> wrote:
> On 22 May, 2013, at 3:10 , magnum <john.magnum@...hmail.com> wrote:
>> We might need a new build target, or maybe some existing targets will do fine... Perhaps just minor #ifdef or sizeof() tweaks to x86-64.h, if any.
> 
> A build target is now in place in bleeding-jumbo. The enclosed patch adds one to core CVS tree. Solar, please consider adding this for 1.8.
> 
> It builds without a warning, but first I had to change the definiton of ARCH_WORD in x86-64.h to "long long" instead of just "long". Could that somehow be a problem? I think http://sourceware.org/glibc/wiki/x32 says we could test for X32 using the macro __ILP32__ but I can't see any reason to not always use long long.
> 
> For actual test results, I'll be back.

It turns out an Ubuntu 11.04 can build and run this using just native packages. Only core John though, there is no OpenSSL for X32 yet. But latest OpenSSL can be built for X32 so I'll try that when I get time.

Core build for X32 passes self-tests as well as our Test Suite. Is there no use of assembler code in a standard x86-64 build? Some tweaks should be needed for assembler (this is described eg. in http://sourceware.org/glibc/wiki/x32) but I don't see any problems nor warnings.

x86-32 vs. x86-X32:
Number of benchmarks:		13
Minimum:			0.96752 real, 0.96558 virtual
Maximum:			1.38256 real, 1.38182 virtual
Median:				1.15728 real, 1.15502 virtual
Median absolute deviation:	0.05167 real, 0.04720 virtual
Geometric mean:			1.18486 real, 1.18475 virtual
Geometric standard deviation:	1.10829 real, 1.10849 virtual

x86-64 vs. x86-X32:
Number of benchmarks:		13
Minimum:			0.92203 real, 0.92203 virtual
Maximum:			1.10064 real, 1.10064 virtual
Median:				0.99969 real, 1.00112 virtual
Median absolute deviation:	0.00462 real, 0.00854 virtual
Geometric mean:			1.00535 real, 1.00549 virtual
Geometric standard deviation:	1.04461 real, 1.04451 virtual

Some formats are slower, some are faster, the enclosed benchmarks was made with an X32 target very similar to linux-x86-64-avx (only -mx32 added) for proper comparison. No big deals. To play fair against X32 we should of course tweak arch.h for optional code paths (mostly in regards to SIMD) so a lot of testing might be needed.

magnum


View attachment "core-32-avx.txt" of type "text/plain" (1098 bytes)

View attachment "core-64-avx.txt" of type "text/plain" (1109 bytes)

View attachment "core-X32-avx.txt" of type "text/plain" (1110 bytes)

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.