From d5a5596b012865aa8b95f45f7f56d416c8fdc3b3 Mon Sep 17 00:00:00 2001
From: magnum <magnum>
Date: Thu, 8 Dec 2011 11:18:06 +0100
Subject: [PATCH 42/42] mscash2 enable OMP for generic builds

---
 src/mscash2_fmt_plug.c |   26 +++++---------------------
 1 files changed, 5 insertions(+), 21 deletions(-)

diff --git a/src/mscash2_fmt_plug.c b/src/mscash2_fmt_plug.c
index e849e60..f907e61 100644
--- a/src/mscash2_fmt_plug.c
+++ b/src/mscash2_fmt_plug.c
@@ -68,14 +68,13 @@
 #endif
 #include "unicode.h"
 
-#ifdef _OPENMP
-#if defined(MMX_COEF) && !defined(SHA1_SSE_PARA)
+#if (!defined(SHA1_SSE_PARA) && defined(MMX_COEF))
 #undef _OPENMP
 #undef FMT_OMP
 #define FMT_OMP				0
-#else
+#elif defined (_OPENMP)
 #include <omp.h>
-#endif
+#define OMP_LOOPS			1
 #endif
 
 #define ITERATIONS			10240
@@ -113,21 +112,6 @@ static struct fmt_tests tests[] = {
 
 #ifdef MMX_COEF
 
-#if !ARCH_LITTLE_ENDIAN
-#define BESWAP(a,b,c)
-#else
-#define ROTATE_LEFT(x, n) (x) = (((x)<<(n))|((unsigned int)(x)>>(32-(n))))
-static void BESWAP(unsigned int *x, unsigned int *y, int count)
-{
-	unsigned int tmp;
-	do {
-		tmp = *x++;
-		ROTATE_LEFT(tmp, 16);
-		*y++ = ((tmp & 0x00FF00FF) << 8) | ((tmp >> 8) & 0x00FF00FF);
-	} while (--count);
-}
-#endif
-
 # ifdef SHA1_SSE_PARA
 #   define ALGORITHM_NAME		"SSE2i " SHA1_N_STR
 #  define MS_NUM_KEYS			(MMX_COEF*SHA1_SSE_PARA)
@@ -170,7 +154,7 @@ static int omp_t = 1;
 static void init(struct fmt_main *pFmt)
 {
 #ifdef _OPENMP
-	omp_t = omp_get_max_threads();
+	omp_t = OMP_LOOPS * omp_get_max_threads();
 	if (omp_t < 1)
 		omp_t = 1;
 	pFmt->params.max_keys_per_crypt = omp_t * MS_NUM_KEYS;
@@ -361,7 +345,7 @@ static void *get_binary(char *ciphertext)
 		out[i] = temp;
 	}
 #ifdef MMX_COEF
-	BESWAP(out, out, 4);
+	alter_endianity(out, sizeof(out));
 #endif
 	return out;
 }
-- 
1.7.5.4

