Fix crash on VIA C7-D when using GCM
This was interesting... The C&-D is an early 2000's 32-bit processor with SSE2 and SSSE3. Using a destination register constraint of "xm" witnessed a crash, while a constraint of "m" does notpull/548/head
parent
0dc72380a9
commit
16290b2f1c
|
|
@ -439,7 +439,7 @@ void GCM_Xor16_SSE2(byte *a, const byte *b, const byte *c)
|
||||||
{
|
{
|
||||||
# if CRYPTOPP_SSE2_ASM_AVAILABLE && defined(__GNUC__)
|
# if CRYPTOPP_SSE2_ASM_AVAILABLE && defined(__GNUC__)
|
||||||
asm ("movdqa %1, %%xmm0; pxor %2, %%xmm0; movdqa %%xmm0, %0;"
|
asm ("movdqa %1, %%xmm0; pxor %2, %%xmm0; movdqa %%xmm0, %0;"
|
||||||
: "=xm" (a[0]) : "xm"(b[0]), "xm"(c[0]));
|
: "=m" (a[0]) : "xm"(b[0]), "xm"(c[0]));
|
||||||
# else // CRYPTOPP_SSE2_INTRIN_AVAILABLE
|
# else // CRYPTOPP_SSE2_INTRIN_AVAILABLE
|
||||||
_mm_store_si128(M128_CAST(a), _mm_xor_si128(
|
_mm_store_si128(M128_CAST(a), _mm_xor_si128(
|
||||||
_mm_load_si128(CONST_M128_CAST(b)),
|
_mm_load_si128(CONST_M128_CAST(b)),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue