You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The text was updated successfully, but these errors were encountered:
zunzster
changed the title
AES-NI assembler routines for X64 corrupt XMM6-XMM15 which are expected to be preserved
X64 AESNI assembler routines corrupt XMM6-XMM15 in Win64 which are expected to be preserved
Jun 27, 2024
zunzster
changed the title
X64 AESNI assembler routines corrupt XMM6-XMM15 in Win64 which are expected to be preserved
X64 AESNI assembler routines corrupt XMM6-XMM15 which the Win64 calling convention expected to be preserved
Jun 27, 2024
zunzster
changed the title
X64 AESNI assembler routines corrupt XMM6-XMM15 which the Win64 calling convention expected to be preserved
X64 AESNI assembler routines corrupt XMM6-XMM15 which the Win64 calling convention expects to be preserved
Jun 27, 2024
Thanks, Arnaud. I figured that was likely the case.
We're only using a selected few pieces of mORMot v1 so I'll look at what is involved in switching those to mORMot v2. I've coded up the required fixes in case anyone else wants them.
This corruption can be observed when compiling with Optimization on and local Double variables are stored in XMM6 onwards.
Code blocks similar to the {$IFNDEF LINUX} blocks in sha256_sse4 from Intel are needed for the X64 assembler routines which use XMM6-XMM15.
aesni(en|de)crypt128 (xmm6-xmm11), aesni(en|de)crypt192 (xmm6-xmm13), aesni(de|en)crypt256 (xmm6-xmm15)
MakeDecrKeyAesNi (xmm6-xmm7), AesNiEncryptOFB_128 (xmm6-xmm11), AesNiEncryptOFB_256 (xmm6-xmm15).
The text was updated successfully, but these errors were encountered: