Get rid of __align stuff in Salsa20 -- not portable, does not seem to help much on newer chips.

This commit is contained in:
Adam Ierymenko 2014-09-16 08:53:18 -07:00
parent 5c1c70a604
commit 8d2e20ede6
3 changed files with 7 additions and 16 deletions

View File

@ -144,10 +144,10 @@ void Salsa20::encrypt(const void *in,void *out,unsigned int bytes)
} }
#ifdef ZT_SALSA20_SSE #ifdef ZT_SALSA20_SSE
__m128i X0 = _mm_load_si128((const __m128i *)&(_state.v[0])); __m128i X0 = _mm_loadu_si128((const __m128i *)&(_state.v[0]));
__m128i X1 = _mm_load_si128((const __m128i *)&(_state.v[1])); __m128i X1 = _mm_loadu_si128((const __m128i *)&(_state.v[1]));
__m128i X2 = _mm_load_si128((const __m128i *)&(_state.v[2])); __m128i X2 = _mm_loadu_si128((const __m128i *)&(_state.v[2]));
__m128i X3 = _mm_load_si128((const __m128i *)&(_state.v[3])); __m128i X3 = _mm_loadu_si128((const __m128i *)&(_state.v[3]));
__m128i X0s = X0; __m128i X0s = X0;
__m128i X1s = X1; __m128i X1s = X1;
__m128i X2s = X2; __m128i X2s = X2;

View File

@ -13,14 +13,7 @@
#ifdef ZT_SALSA20_SSE #ifdef ZT_SALSA20_SSE
#include <emmintrin.h> #include <emmintrin.h>
#ifdef __GCC__ #endif // ZT_SALSA20_SSE
#define ZT_SALSA20_SSE_ALIGN __attribute__((aligned (16)))
#else
#define ZT_SALSA20_SSE_ALIGN __declspec(align(16))
#endif
#else
#define ZT_SALSA20_SSE_ALIGN
#endif
namespace ZeroTier { namespace ZeroTier {
@ -79,10 +72,10 @@ public:
} }
private: private:
volatile ZT_SALSA20_SSE_ALIGN union { volatile union {
#ifdef ZT_SALSA20_SSE #ifdef ZT_SALSA20_SSE
__m128i v[4]; __m128i v[4];
#endif #endif // ZT_SALSA20_SSE
uint32_t i[16]; uint32_t i[16];
} _state; } _state;
unsigned int _roundsDiv2; unsigned int _roundsDiv2;

View File

@ -611,8 +611,6 @@ int main(int argc,char **argv)
std::cout << "[info] sizeof(void *) == " << sizeof(void *) << std::endl; std::cout << "[info] sizeof(void *) == " << sizeof(void *) << std::endl;
std::cout << "[info] default home: " << ZT_DEFAULTS.defaultHomePath << std::endl; std::cout << "[info] default home: " << ZT_DEFAULTS.defaultHomePath << std::endl;
std::cout << "[info] system authtoken.secret: " << Node::NodeControlClient::authTokenDefaultSystemPath() << std::endl;
std::cout << "[info] user authtoken.secret: " << Node::NodeControlClient::authTokenDefaultUserPath() << std::endl;
srand((unsigned int)time(0)); srand((unsigned int)time(0));