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
WindowsArm.Optimizer.patch
Description: Binary data
