diff --git a/src/sse-intrinsics.c b/src/sse-intrinsics.c index 5f847da..9cb301a 100644 --- a/src/sse-intrinsics.c +++ b/src/sse-intrinsics.c @@ -3,15 +3,24 @@ * Redistribution and use in source and binary forms, with or without modification, are permitted. * * New (optional) SHA1 version by JimF 2011, using 16x4 buffer. + * Use of XOP intrinsics added by Solar Designer, 2012. */ #include "arch.h" #include #include +#ifdef __XOP__ +#include +#endif #include "memory.h" #include "md5.h" #include "MD5_std.h" +#ifndef __XOP__ +#define _mm_roti_epi32(a, s) \ + _mm_or_si128(_mm_slli_epi32((a), (s)), _mm_srli_epi32((a), 32-(s))) +#endif + #ifndef MMX_COEF #define MMX_COEF 4 #endif @@ -20,15 +29,25 @@ #define MD5_SSE_NUM_KEYS (MMX_COEF*MD5_SSE_PARA) #define MD5_PARA_DO(x) for((x)=0;(x)