Browse Source

use AVX instructions for XOR in AES-CBC if applicable

pull/739/head
orignal 8 years ago
parent
commit
38d85a49e7
  1. 13
      Crypto.h

13
Crypto.h

@ -76,7 +76,18 @@ namespace crypto @@ -76,7 +76,18 @@ namespace crypto
void operator^=(const ChipherBlock& other) // XOR
{
#if defined(__x86_64__) || defined(__SSE__) // for Intel x84 or with SSE
#if defined(__AVX__) // AVX
__asm__
(
"vmovups (%[buf]), %%xmm0 \n"
"vmovups (%[other]), %%xmm1 \n"
"vxorps %%xmm0, %%xmm1, %%xmm0 \n"
"vmovups %%xmm0, (%[buf]) \n"
:
: [buf]"r"(buf), [other]"r"(other.buf)
: "%xmm0", "%xmm1", "memory"
);
#elif defined(__SSE__) // SSE
__asm__
(
"movups (%[buf]), %%xmm0 \n"

Loading…
Cancel
Save