> There is no assembly support for pe64.

Well, Win64 ABI is fully supported by OpenSSL x86_64 assembler modules. 
There is no support for GNU assembler under Win64, but masm (rather 
known as ml64) and nasm are fully supported (though there are 
requirements for least supported versions, for nasm it's 2.03).

> So no assembly is available.

If assembler was to be added to mingw64, I'd rather deploy nasm. It 
would be easiest.

> Can someone estimate if it is better to use 32bit with assembly than
> 64bit without?

64-bit algorithms, most notably SHA512, would perform better with 64-bit 
compiler, while 32-bit assembler is likely to outperform it on 32-bit 
algorithms (such as everything else symmetric). Indeed, 32-bit assembler 
normally delivers ~80% of 64-bit assembler on 32-bit algorithms (not on 
SHA256 though), so assuming that 64-bit assembler gives at least 30% 
improvement over 64-bit compiler generated code... As for BN 
performance. As it is *now*, 32-bit assembler would perform 
approximately as fast as (if not better) 64-bit compiler generated code, 
but[!] it's possible to improve the latter. Try following. In bn_lcl.h 
there is BN_UMULT_HIGH definition in #elif defined(__x86_64) && 
defined(SIXTY_FOUR_BIT_LONG) in __GNUC__. Replace last defined() with 
(defined(SIXTY_FOUR_BIT_LONG) || defined(SIXTY_FOUR_BIT)). This will 
give significant performance improvement. Please verify.

> I am not fully sure that the crypto/sha/sha512.c is correct, it
> simulate the behavior of win64 using Microsoft compiler, using
> _rotr64 function as ROTR.

What you should have done instead is to modify macro in question 
declaring ret as unsigned long long. If it doesn't work, then it's more 
appropriate to leave ROTR undefined, i.e. *not* using _rotr64. Please 
verify.

Also. As NT is natively UNICODE, and there are no non-NT Win64 
implementations(*), there is no reason to favor legacy ANSI interfaces. 
Could you verify that it compiles and works with -DUNICODE -D_UNICODE 
added to config line? A.

(*) this is unlike Win32, which was available as NT and Win9x, where 
latter was natively ANSI.


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to