When compiling OpenSSL optimized on ARM using the Microsoft compiler, the wrong 
code is being emitted for BN_nist_mod_521 (in bn_nist.c). The compiler seems to 
think that val and temp represent the same item when they are clearly one index 
apart. I've coded a fix that simply avoid using temporary variables and uses 
the indices into the t_d array directly. The code is simply a refactor of the 
existing code and does generate very effective neon instructions for the loop.

ectest test which was always failing before in ARM on Windows is now succeeding 
(as well as all the other tests).


Gilles Khouzam
Senior Development Lead
Microsoft OSG


Attachment: WindowsArm.Optimizer.patch
Description: Binary data

Reply via email to