From 0c9ebc36d40a9e38fa640680ea48c1703a3db63a Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 27 Nov 2018 14:33:31 -0500 Subject: [PATCH] remove AVX and SSE for CipherBlock XOR --- libi2pd/Crypto.h | 39 +++------------------------------------ 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/libi2pd/Crypto.h b/libi2pd/Crypto.h index 9c4ff505..475f7fa3 100644 --- a/libi2pd/Crypto.h +++ b/libi2pd/Crypto.h @@ -108,43 +108,10 @@ namespace crypto void operator^=(const ChipherBlock& other) // XOR { - if (!(((size_t)buf | (size_t)other.buf) & 0x0F)) // multiple of 16 ? + if (!(((size_t)buf | (size_t)other.buf) & 0x03)) // multiple of 4 ? { - // try 128 bits if applicable -#ifdef __AVX__ - if (i2p::cpu::avx) - { - __asm__ - ( - "vmovaps (%[buf]), %%xmm0 \n" - "vmovaps (%[other]), %%xmm1 \n" - "vxorps %%xmm0, %%xmm1, %%xmm0 \n" - "vmovaps %%xmm0, (%[buf]) \n" - : - : [buf]"r"(buf), [other]"r"(other.buf) - : "%xmm0", "%xmm1", "memory" - ); - } - else -#endif - { -#if defined(__SSE__) // SSE - __asm__ - ( - "movaps (%[buf]), %%xmm0 \n" - "movaps (%[other]), %%xmm1 \n" - "pxor %%xmm1, %%xmm0 \n" - "movaps %%xmm0, (%[buf]) \n" - : - : [buf]"r"(buf), [other]"r"(other.buf) - : "%xmm0", "%xmm1", "memory" - ); -#else - // if not we always can cast to uint32_t * - for (int i = 0; i < 4; i++) - reinterpret_cast(buf)[i] ^= reinterpret_cast(other.buf)[i]; -#endif - } + for (int i = 0; i < 4; i++) + reinterpret_cast(buf)[i] ^= reinterpret_cast(other.buf)[i]; } else {