Re: [PATCH] staging: skein: macros moved to header file

From: Jason Cooper
Date: Fri Dec 04 2015 - 07:35:57 EST


Oh hell. :)

Go ahead and try to configure git send-mail, or configure Thunderbird
according to Documentation/email-clients.txt. If you want, send it to
me off list first to confirm it's not getting mangled like below.

I think you just won the obfuscated C contest...

thx,

Jason.

On Fri, Dec 04, 2015 at 07:09:49AM +0000, Sanidhya Solanki wrote:
> Staging: Skein: Moved macros from skein_block.c toÂheader file.
> The original code defined macros in the source code, making it harder toread.
> Move them to the header file.
> Signed-off-by: Sanidhya Solanki
> <jpage@xxxxxxxxxxx>---Âdrivers/staging/skein/skein_block.c | 321
> -----------------------------------Âdrivers/staging/skein/skein_block.h | 323
> ++++++++++++++++++++++++++++++++++++Â2 files changed, 323 insertions(+), 321
> deletions(-)
> diff --git a/drivers/staging/skein/skein_block.c
> b/drivers/staging/skein/skein_block.cindex 45b4732..9701f95 100644---
> a/drivers/staging/skein/skein_block.c+++
> b/drivers/staging/skein/skein_block.c@@ -18,327 +18,6 @@Â#include
> "skein_base.h"Â#include "skein_block.h"Â-#ifndef SKEIN_USE_ASM-#define
> SKEIN_USE_ASM Â (0) /* default is all C code (no ASM) */-#endif--#ifndef
> SKEIN_LOOP-#define SKEIN_LOOP 001 /* default: unroll 256 and 512, but not
> 1024 */-#endif--#define BLK_BITS Â Â Â Â(WCNT * 64) /* some useful
> definitions for code here */-#define KW_TWK_BASE Â Â (0)-#define KW_KEY_BASE
>   (3)-#define ks       Â(kw + KW_KEY_BASE)-#define ts      Â
> Â(kw + KW_TWK_BASE)--#ifdef SKEIN_DEBUG-#define debug_save_tweak(ctx) Â Â Â
> \-{ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- ctx->h.tweak[0] = ts[0]; Â
> Â\- ctx->h.tweak[1] = ts[1]; Â Â\-}-#else-#define
> debug_save_tweak(ctx)-#endif--#if !(SKEIN_USE_ASM & 256)-#undef ÂRCNT-#define
> RCNT (SKEIN_256_ROUNDS_TOTAL / 8)-#ifdef SKEIN_LOOP /* configure how much to
> unroll the loop */-#define SKEIN_UNROLL_256 (((SKEIN_LOOP) / 100) %
> 10)-#else-#define SKEIN_UNROLL_256 (0)-#endif--#if SKEIN_UNROLL_256-#if (RCNT
> % SKEIN_UNROLL_256)-#error "Invalid SKEIN_UNROLL_256" /* sanity check on
> unroll count */-#endif-#endif-#define ROUND256(p0, p1, p2, p3, ROT, r_num) Â
> Â Â Â \- do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p0 += X##p1; Â Â
> Â Â Â Â Â Â Â Â Â\- X##p1 = rotl_64(X##p1, ROT##_0); Â Â \- X##p1 ^= X##p0;
> Â Â Â Â Â Â Â Â Â Â Â\- X##p2 += X##p3; Â Â Â Â Â Â Â Â Â Â Â\- X##p3 =
> rotl_64(X##p3, ROT##_1); Â Â \- X##p3 ^= X##p2; Â Â Â Â Â Â Â Â Â Â Â\- }
> while (0)--#if SKEIN_UNROLL_256 == 0-#define R256(p0, p1, p2, p3, ROT, r_num)
> /* fully unrolled */ \- ROUND256(p0, p1, p2, p3, ROT, r_num)--#define I256(R)
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- do { Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- /* inject the key schedule
> value */ Â Â Â Â Â Â Â Â Â Â \- X0 Â += ks[((R) + 1) % 5]; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â\- X1 Â += ks[((R) + 2) % 5] + ts[((R) + 1) % 3]; Â Â Â Â Â\- X2
> Â += ks[((R) + 3) % 5] + ts[((R) + 2) % 3]; Â Â Â Â Â\- X3 Â += ks[((R) + 4)
> % 5] + (R) + 1; Â Â Â Â Â Â Â Â Â Â\- } while (0)-#else-/* looping version
> */-#define R256(p0, p1, p2, p3, ROT, r_num) ROUND256(p0, p1, p2, p3, ROT,
> r_num)--#define I256(R) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- do { Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- /* inject the key schedule value */
> Â Â \- X0 += ks[r + (R) + 0]; Â Â Â Â Â Â Â Â Â\- X1 += ks[r + (R) + 1] +
> ts[r + (R) + 0];\- X2 += ks[r + (R) + 2] + ts[r + (R) + 1];\- X3 += ks[r +
> (R) + 3] + r + (R); Â Â Â Â\- /* rotate key schedule */ Â Â Â Â Â Â Â
> \- ks[r + (R) + 4] = ks[r + (R) - 1]; Â Â Â\- ts[r + (R) + 2] = ts[r + (R)
> - 1]; Â Â Â\- } while (0)-#endif-#define R256_8_ROUNDS(R) Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â\- do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- R256(0, 1,
> 2, 3, R_256_0, 8 * (R) + 1); \- R256(0, 3, 2, 1, R_256_1, 8 * (R) + 2);
> \- R256(0, 1, 2, 3, R_256_2, 8 * (R) + 3); \- R256(0, 3, 2, 1, R_256_3, 8 *
> (R) + 4); \- I256(2 * (R)); Â Â Â Â Â Â Â Â Â Â Â Â Â\- R256(0, 1, 2, 3,
> R_256_4, 8 * (R) + 5); \- R256(0, 3, 2, 1, R_256_5, 8 * (R) + 6);
> \- R256(0, 1, 2, 3, R_256_6, 8 * (R) + 7); \- R256(0, 3, 2, 1, R_256_7, 8 *
> (R) + 8); \- I256(2 * (R) + 1); Â Â Â Â Â Â Â Â Â Â Â\- } while (0)--#define
> R256_UNROLL_R(NN) Â Â Â Â Â Â Â Â Â Â \- ((SKEIN_UNROLL_256 == 0 && Â Â Â Â Â
> Â\- SKEIN_256_ROUNDS_TOTAL / 8 > (NN)) || \- (SKEIN_UNROLL_256 > (NN)))--#if
> Â(SKEIN_UNROLL_256 > 14)-#error Â"need more unrolling in
> skein_256_process_block"-#endif-#endif--#if !(SKEIN_USE_ASM & 512)-#undef
> ÂRCNT-#define RCNT Â(SKEIN_512_ROUNDS_TOTAL/8)--#ifdef SKEIN_LOOP /*
> configure how much to unroll the loop */-#define SKEIN_UNROLL_512
> (((SKEIN_LOOP)/10)%10)-#else-#define SKEIN_UNROLL_512 (0)-#endif--#if
> SKEIN_UNROLL_512-#if (RCNT % SKEIN_UNROLL_512)-#error "Invalid
> SKEIN_UNROLL_512" /* sanity check on unroll count */-#endif-#endif-#define
> ROUND512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, r_num) Â Â\- do { Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X##p0 += X##p1; Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â \- X##p1 = rotl_64(X##p1, ROT##_0); Â Â Â Â Â Â Â Â\- X##p1 ^=
> X##p0; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p2 += X##p3; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â \- X##p3 = rotl_64(X##p3, ROT##_1); Â Â Â Â Â Â Â Â\- X##p3
> ^= X##p2; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p4 += X##p5; Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â \- X##p5 = rotl_64(X##p5, ROT##_2); Â Â Â Â Â Â Â Â\- X##p5
> ^= X##p4; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p6 += X##p7; X##p7 =
> rotl_64(X##p7, ROT##_3);\- X##p7 ^= X##p6; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \- } while (0)--#if SKEIN_UNROLL_512 == 0-#define R512(p0, p1, p2, p3, p4,
> p5, p6, p7, ROT, r_num) /* unrolled */ \- ROUND512(p0, p1, p2, p3, p4, p5,
> p6, p7, ROT, r_num)--#define I512(R) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â \- do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â\- /* inject the key schedule value */ Â Â Â Â Â Â Â Â Â Â \- X0 Â +=
> ks[((R) + 1) % 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X1 Â += ks[((R) + 2) %
> 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X2 Â += ks[((R) + 3) % 9]; Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â\- X3 Â += ks[((R) + 4) % 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â\- X4 Â += ks[((R) + 5) % 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X5 Â +=
> ks[((R) + 6) % 9] + ts[((R) + 1) % 3]; Â Â Â Â Â\- X6 Â += ks[((R) + 7) % 9]
> + ts[((R) + 2) % 3]; Â Â Â Â Â\- X7 Â += ks[((R) + 8) % 9] + (R) + 1; Â Â Â
> Â Â Â Â Â Â Â\- } while (0)--#else /* looping version */-#define R512(p0, p1,
> p2, p3, p4, p5, p6, p7, ROT, r_num) Â Â Â Â Â Â Â Â \- ROUND512(p0, p1, p2,
> p3, p4, p5, p6, p7, ROT, r_num) Â Â Â Â Â Â \--#define I512(R) Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- /* inject the key schedule value */ Â Â Â
> Â Â Â Â Â Â Â \- X0 Â += ks[r + (R) + 0]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â\- X1 Â += ks[r + (R) + 1]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X2 Â += ks[r
> + (R) + 2]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X3 Â += ks[r + (R) + 3]; Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â\- X4 Â += ks[r + (R) + 4]; Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â\- X5 Â += ks[r + (R) + 5] + ts[r + (R) + 0]; Â Â Â Â Â Â Â\- X6 Â
> += ks[r + (R) + 6] + ts[r + (R) + 1]; Â Â Â Â Â Â Â\- X7 Â += ks[r + (R) +
> 7] + r + (R); Â Â Â Â Â Â Â Â Â Â Â\- /* rotate key schedule */ Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â \- ks[r + (R) + 8] = ks[r + (R) - 1]; Â Â Â Â Â Â Â Â Â Â
> Â\- ts[r + (R) + 2] = ts[r + (R) - 1]; Â Â Â Â Â Â Â Â Â Â Â\- } while
> (0)-#endif /* end of looped code definitions */-#define R512_8_ROUNDS(R) Â/*
> do 8 full rounds */ Â Â Â Â Â Â Â Â Â Â Â Â\- do { Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- R512(0, 1, 2, 3, 4, 5, 6, 7, R_512_0, 8
> * (R) + 1); Â Â \- R512(2, 1, 4, 7, 6, 5, 0, 3, R_512_1, 8 * (R) + 2); Â Â
> \- R512(4, 1, 6, 3, 0, 5, 2, 7, R_512_2, 8 * (R) + 3); Â Â \- R512(6, 1, 0,
> 7, 2, 5, 4, 3, R_512_3, 8 * (R) + 4); Â Â \- I512(2 * (R)); Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â\- R512(0, 1, 2, 3, 4, 5, 6, 7, R_512_4, 8 * (R) +
> 5); Â Â \- R512(2, 1, 4, 7, 6, 5, 0, 3, R_512_5, 8 * (R) + 6); Â Â
> \- R512(4, 1, 6, 3, 0, 5, 2, 7, R_512_6, 8 * (R) + 7); Â Â \- R512(6, 1, 0,
> 7, 2, 5, 4, 3, R_512_7, 8 * (R) + 8); Â Â \- I512(2 * (R) + 1); /* and key
> injection */ Â Â Â Â Â Â Â\- } while (0)-#define R512_UNROLL_R(NN) Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â \- ((SKEIN_UNROLL_512 == 0 && Â Â Â Â Â
> Â\- SKEIN_512_ROUNDS_TOTAL/8 > (NN)) || Â \- (SKEIN_UNROLL_512 >
> (NN)))--#if Â(SKEIN_UNROLL_512 > 14)-#error Â"need more unrolling in
> skein_512_process_block"-#endif-#endif--#if !(SKEIN_USE_ASM & 1024)-#undef
> ÂRCNT-#define RCNT Â(SKEIN_1024_ROUNDS_TOTAL/8)-#ifdef SKEIN_LOOP /*
> configure how much to unroll the loop */-#define SKEIN_UNROLL_1024
> ((SKEIN_LOOP) % 10)-#else-#define SKEIN_UNROLL_1024 (0)-#endif--#if
> (SKEIN_UNROLL_1024 != 0)-#if (RCNT % SKEIN_UNROLL_1024)-#error "Invalid
> SKEIN_UNROLL_1024" /* sanity check on unroll count */-#endif-#endif-#define
> ROUND1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \-
> ÂpF, ROT, r_num) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- do { Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X##p0 += X##p1;
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p1 = rotl_64(X##p1,
> ROT##_0); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X##p1 ^= X##p0; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p2 += X##p3; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â \- X##p3 = rotl_64(X##p3, ROT##_1); Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â\- X##p3 ^= X##p2; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \- X##p4 += X##p5; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p5 =
> rotl_64(X##p5, ROT##_2); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X##p5 ^= X##p4; Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p6 += X##p7; Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##p7 = rotl_64(X##p7, ROT##_3); Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â\- X##p7 ^= X##p6; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â \- X##p8 += X##p9; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \- X##p9 = rotl_64(X##p9, ROT##_4); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X##p9
> ^= X##p8; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##pA += X##pB; Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##pB = rotl_64(X##pB,
> ROT##_5); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X##pB ^= X##pA; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##pC += X##pD; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â \- X##pD = rotl_64(X##pD, ROT##_6); Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â\- X##pD ^= X##pC; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \- X##pE += X##pF; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X##pF =
> rotl_64(X##pF, ROT##_7); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X##pF ^= X##pE; Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- } while (0)--#if
> SKEIN_UNROLL_1024 == 0-#define R1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,
> pA, pB, pC, pD, pE, pF, \- Â Â ÂROT, rn) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â\- ROUND1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA,
> pB, pC, pD, pE, \- ÂpF, ROT, rn) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â\--#define I1024(R) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- do
> { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- /* inject the key
> schedule value */ Â Â Â Â Â Â \- X00 += ks[((R) + 1) % 17]; Â Â Â Â Â Â Â Â
> Â Â Â\- X01 += ks[((R) + 2) % 17]; Â Â Â Â Â Â Â Â Â Â Â\- X02 += ks[((R) +
> 3) % 17]; Â Â Â Â Â Â Â Â Â Â Â\- X03 += ks[((R) + 4) % 17]; Â Â Â Â Â Â Â Â
> Â Â Â\- X04 += ks[((R) + 5) % 17]; Â Â Â Â Â Â Â Â Â Â Â\- X05 += ks[((R) +
> 6) % 17]; Â Â Â Â Â Â Â Â Â Â Â\- X06 += ks[((R) + 7) % 17]; Â Â Â Â Â Â Â Â
> Â Â Â\- X07 += ks[((R) + 8) % 17]; Â Â Â Â Â Â Â Â Â Â Â\- X08 += ks[((R) +
> 9) % 17]; Â Â Â Â Â Â Â Â Â Â Â\- X09 += ks[((R) + 10) % 17]; Â Â Â Â Â Â Â
> Â Â Â \- X10 += ks[((R) + 11) % 17]; Â Â Â Â Â Â Â Â Â Â \- X11 += ks[((R)
> + 12) % 17]; Â Â Â Â Â Â Â Â Â Â \- X12 += ks[((R) + 13) % 17]; Â Â Â Â Â Â
> Â Â Â Â \- X13 += ks[((R) + 14) % 17] + ts[((R) + 1) % 3]; \- X14 +=
> ks[((R) + 15) % 17] + ts[((R) + 2) % 3]; \- X15 += ks[((R) + 16) % 17] + (R)
> + 1; Â Â Â Â Â \- } while (0)-#else /* looping version */-#define R1024(p0,
> p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, \- Â Â ÂROT, rn)
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- ROUND1024(p0, p1,
> p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \- ÂpF, ROT, rn) Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\--#define I1024(R) Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- /* inject the key schedule value */ Â Â Â Â
> Â Â Â Â Â Â \- X00 += ks[r + (R) + 0]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \- X01 += ks[r + (R) + 1]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X02 += ks[r +
> (R) + 2]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X03 += ks[r + (R) + 3]; Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â \- X04 += ks[r + (R) + 4]; Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â \- X05 += ks[r + (R) + 5]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X06 +=
> ks[r + (R) + 6]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X07 += ks[r + (R) + 7];
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- X08 += ks[r + (R) + 8]; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â \- X09 += ks[r + (R) + 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \- X10 += ks[r + (R) + 10]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X11 += ks[r +
> (R) + 11]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\- X12 += ks[r + (R) + 12]; Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â\- X13 += ks[r + (R) + 13] + ts[r + (R) + 0]; Â Â Â
> Â Â Â Â\- X14 += ks[r + (R) + 14] + ts[r + (R) + 1]; Â Â Â Â Â Â Â\- X15 +=
> ks[r + (R) + 15] + r + (R); Â Â Â Â Â Â Â Â Â Â Â\- /* rotate key schedule
> */ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- ks[r + (R) + 16] = ks[r + (R) - 1]; Â Â
> Â Â Â Â Â Â Â Â \- ts[r + (R) + 2] = ts[r + (R) - 1]; Â Â Â Â Â Â Â Â Â Â
> Â\- } while (0)--#endif-#define R1024_8_ROUNDS(R) Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â \- do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â\- R1024(00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, \-
> Â Â Â13, 14, 15, R1024_0, 8*(R) + 1); Â Â Â Â Â Â Â Â Â Â\- R1024(00, 09,
> 02, 13, 06, 11, 04, 15, 10, 07, 12, 03, 14, \- Â Â Â05, 08, 01, R1024_1,
> 8*(R) + 2); Â Â Â Â Â Â Â Â Â Â\- R1024(00, 07, 02, 05, 04, 03, 06, 01, 12,
> 15, 14, 13, 08, \- Â Â Â11, 10, 09, R1024_2, 8*(R) + 3); Â Â Â Â Â Â Â Â Â
> Â\- R1024(00, 15, 02, 11, 06, 13, 04, 09, 14, 01, 08, 05, 10, \- Â Â Â03,
> 12, 07, R1024_3, 8*(R) + 4); Â Â Â Â Â Â Â Â Â Â\- I1024(2*(R)); Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- R1024(00, 01, 02, 03, 04, 05, 06, 07, 08,
> 09, 10, 11, 12, \- Â Â Â13, 14, 15, R1024_4, 8*(R) + 5); Â Â Â Â Â Â Â Â Â
> Â\- R1024(00, 09, 02, 13, 06, 11, 04, 15, 10, 07, 12, 03, 14, \- Â Â Â05,
> 08, 01, R1024_5, 8*(R) + 6); Â Â Â Â Â Â Â Â Â Â\- R1024(00, 07, 02, 05, 04,
> 03, 06, 01, 12, 15, 14, 13, 08, \- Â Â Â11, 10, 09, R1024_6, 8*(R) + 7); Â
> Â Â Â Â Â Â Â Â Â\- R1024(00, 15, 02, 11, 06, 13, 04, 09, 14, 01, 08, 05,
> 10, \- Â Â Â03, 12, 07, R1024_7, 8*(R) + 8); Â Â Â Â Â Â Â Â Â
> Â\- I1024(2*(R)+1); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \- } while
> (0)--#define R1024_UNROLL_R(NN) Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â\- ((SKEIN_UNROLL_1024 == 0 && Â Â Â Â Â Â \- SKEIN_1024_ROUNDS_TOTAL/8 >
> (NN)) || Â Â\- (SKEIN_UNROLL_1024 > (NN)))--#if Â(SKEIN_UNROLL_1024 >
> 14)-#error Â"need more unrolling in
> Skein_1024_Process_Block"-#endif-#endifÂÂ/*****************************
> ÂSKEIN_256 ******************************/Â#if !(SKEIN_USE_ASM & 256)diff
> --git a/drivers/staging/skein/skein_block.h
> b/drivers/staging/skein/skein_block.hindex 9d40f4a..1b28d52 100644---
> a/drivers/staging/skein/skein_block.h+++
> b/drivers/staging/skein/skein_block.h@@ -20,3 +20,326 @@ void
> skein_1024_process_block(struct skein_1024_ctx *ctx, const u8 *blk_ptr, Â
> Â Âsize_t blk_cnt, size_t byte_cnt_add);ÂÂ#endif+++#ifndef
> SKEIN_USE_ASM+#define SKEIN_USE_ASM Â (0) /* default is all C code (no ASM)
> */+#endif++#ifndef SKEIN_LOOP+#define SKEIN_LOOP 001 /* default: unroll 256
> and 512, but not 1024 */+#endif++#define BLK_BITS Â Â Â Â(WCNT * 64) /* some
> useful definitions for code here */+#define KW_TWK_BASE Â Â (0)+#define
> KW_KEY_BASE   (3)+#define ks       Â(kw + KW_KEY_BASE)+#define ts  Â
> Â Â Â Â Â(kw + KW_TWK_BASE)++#ifdef SKEIN_DEBUG+#define debug_save_tweak(ctx)
> Â Â Â \+{ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ ctx->h.tweak[0] = ts[0]; Â
> Â\+ ctx->h.tweak[1] = ts[1]; Â Â\+}+#else+#define
> debug_save_tweak(ctx)+#endif++#if !(SKEIN_USE_ASM & 256)+#undef ÂRCNT+#define
> RCNT (SKEIN_256_ROUNDS_TOTAL / 8)+#ifdef SKEIN_LOOP /* configure how much to
> unroll the loop */+#define SKEIN_UNROLL_256 (((SKEIN_LOOP) / 100) %
> 10)+#else+#define SKEIN_UNROLL_256 (0)+#endif++#if SKEIN_UNROLL_256+#if (RCNT
> % SKEIN_UNROLL_256)+#error "Invalid SKEIN_UNROLL_256" /* sanity check on
> unroll count */+#endif+#endif+#define ROUND256(p0, p1, p2, p3, ROT, r_num) Â
> Â Â Â \+ do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p0 += X##p1; Â Â
> Â Â Â Â Â Â Â Â Â\+ X##p1 = rotl_64(X##p1, ROT##_0); Â Â \+ X##p1 ^= X##p0;
> Â Â Â Â Â Â Â Â Â Â Â\+ X##p2 += X##p3; Â Â Â Â Â Â Â Â Â Â Â\+ X##p3 =
> rotl_64(X##p3, ROT##_1); Â Â \+ X##p3 ^= X##p2; Â Â Â Â Â Â Â Â Â Â Â\+ }
> while (0)++#if SKEIN_UNROLL_256 == 0+#define R256(p0, p1, p2, p3, ROT, r_num)
> /* fully unrolled */ \+ ROUND256(p0, p1, p2, p3, ROT, r_num)++#define I256(R)
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ do { Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ /* inject the key schedule
> value */ Â Â Â Â Â Â Â Â Â Â \+ X0 Â += ks[((R) + 1) % 5]; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â\+ X1 Â += ks[((R) + 2) % 5] + ts[((R) + 1) % 3]; Â Â Â Â Â\+ X2
> Â += ks[((R) + 3) % 5] + ts[((R) + 2) % 3]; Â Â Â Â Â\+ X3 Â += ks[((R) + 4)
> % 5] + (R) + 1; Â Â Â Â Â Â Â Â Â Â\+ } while (0)+#else+/* looping version
> */+#define R256(p0, p1, p2, p3, ROT, r_num) ROUND256(p0, p1, p2, p3, ROT,
> r_num)++#define I256(R) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ do { Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ /* inject the key schedule value */
> Â Â \+ X0 += ks[r + (R) + 0]; Â Â Â Â Â Â Â Â Â\+ X1 += ks[r + (R) + 1] +
> ts[r + (R) + 0];\+ X2 += ks[r + (R) + 2] + ts[r + (R) + 1];\+ X3 += ks[r +
> (R) + 3] + r + (R); Â Â Â Â\+ /* rotate key schedule */ Â Â Â Â Â Â Â
> \+ ks[r + (R) + 4] = ks[r + (R) - 1]; Â Â Â\+ ts[r + (R) + 2] = ts[r + (R)
> - 1]; Â Â Â\+ } while (0)+#endif+#define R256_8_ROUNDS(R) Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â\+ do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ R256(0, 1,
> 2, 3, R_256_0, 8 * (R) + 1); \+ R256(0, 3, 2, 1, R_256_1, 8 * (R) + 2);
> \+ R256(0, 1, 2, 3, R_256_2, 8 * (R) + 3); \+ R256(0, 3, 2, 1, R_256_3, 8 *
> (R) + 4); \+ I256(2 * (R)); Â Â Â Â Â Â Â Â Â Â Â Â Â\+ R256(0, 1, 2, 3,
> R_256_4, 8 * (R) + 5); \+ R256(0, 3, 2, 1, R_256_5, 8 * (R) + 6);
> \+ R256(0, 1, 2, 3, R_256_6, 8 * (R) + 7); \+ R256(0, 3, 2, 1, R_256_7, 8 *
> (R) + 8); \+ I256(2 * (R) + 1); Â Â Â Â Â Â Â Â Â Â Â\+ } while (0)++#define
> R256_UNROLL_R(NN) Â Â Â Â Â Â Â Â Â Â \+ ((SKEIN_UNROLL_256 == 0 && Â Â Â Â Â
> Â\+ SKEIN_256_ROUNDS_TOTAL / 8 > (NN)) || \+ (SKEIN_UNROLL_256 > (NN)))++#if
> Â(SKEIN_UNROLL_256 > 14)+#error Â"need more unrolling in
> skein_256_process_block"+#endif+#endif++#if !(SKEIN_USE_ASM & 512)+#undef
> ÂRCNT+#define RCNT Â(SKEIN_512_ROUNDS_TOTAL/8)++#ifdef SKEIN_LOOP /*
> configure how much to unroll the loop */+#define SKEIN_UNROLL_512
> (((SKEIN_LOOP)/10)%10)+#else+#define SKEIN_UNROLL_512 (0)+#endif++#if
> SKEIN_UNROLL_512+#if (RCNT % SKEIN_UNROLL_512)+#error "Invalid
> SKEIN_UNROLL_512" /* sanity check on unroll count */+#endif+#endif+#define
> ROUND512(p0, p1, p2, p3, p4, p5, p6, p7, ROT, r_num) Â Â\+ do { Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X##p0 += X##p1; Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â \+ X##p1 = rotl_64(X##p1, ROT##_0); Â Â Â Â Â Â Â Â\+ X##p1 ^=
> X##p0; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p2 += X##p3; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â \+ X##p3 = rotl_64(X##p3, ROT##_1); Â Â Â Â Â Â Â Â\+ X##p3
> ^= X##p2; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p4 += X##p5; Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â \+ X##p5 = rotl_64(X##p5, ROT##_2); Â Â Â Â Â Â Â Â\+ X##p5
> ^= X##p4; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p6 += X##p7; X##p7 =
> rotl_64(X##p7, ROT##_3);\+ X##p7 ^= X##p6; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \+ } while (0)++#if SKEIN_UNROLL_512 == 0+#define R512(p0, p1, p2, p3, p4,
> p5, p6, p7, ROT, r_num) /* unrolled */ \+ ROUND512(p0, p1, p2, p3, p4, p5,
> p6, p7, ROT, r_num)++#define I512(R) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â \+ do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â\+ /* inject the key schedule value */ Â Â Â Â Â Â Â Â Â Â \+ X0 Â +=
> ks[((R) + 1) % 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X1 Â += ks[((R) + 2) %
> 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X2 Â += ks[((R) + 3) % 9]; Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â\+ X3 Â += ks[((R) + 4) % 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â\+ X4 Â += ks[((R) + 5) % 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X5 Â +=
> ks[((R) + 6) % 9] + ts[((R) + 1) % 3]; Â Â Â Â Â\+ X6 Â += ks[((R) + 7) % 9]
> + ts[((R) + 2) % 3]; Â Â Â Â Â\+ X7 Â += ks[((R) + 8) % 9] + (R) + 1; Â Â Â
> Â Â Â Â Â Â Â\+ } while (0)++#else /* looping version */+#define R512(p0, p1,
> p2, p3, p4, p5, p6, p7, ROT, r_num) Â Â Â Â Â Â Â Â \+ ROUND512(p0, p1, p2,
> p3, p4, p5, p6, p7, ROT, r_num) Â Â Â Â Â Â \++#define I512(R) Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ /* inject the key schedule value */ Â Â Â
> Â Â Â Â Â Â Â \+ X0 Â += ks[r + (R) + 0]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â\+ X1 Â += ks[r + (R) + 1]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X2 Â += ks[r
> + (R) + 2]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X3 Â += ks[r + (R) + 3]; Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X4 Â += ks[r + (R) + 4]; Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â\+ X5 Â += ks[r + (R) + 5] + ts[r + (R) + 0]; Â Â Â Â Â Â Â\+ X6 Â
> += ks[r + (R) + 6] + ts[r + (R) + 1]; Â Â Â Â Â Â Â\+ X7 Â += ks[r + (R) +
> 7] + r + (R); Â Â Â Â Â Â Â Â Â Â Â\+ /* rotate key schedule */ Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â \+ ks[r + (R) + 8] = ks[r + (R) - 1]; Â Â Â Â Â Â Â Â Â Â
> Â\+ ts[r + (R) + 2] = ts[r + (R) - 1]; Â Â Â Â Â Â Â Â Â Â Â\+ } while
> (0)+#endif /* end of looped code definitions */+#define R512_8_ROUNDS(R) Â/*
> do 8 full rounds */ Â Â Â Â Â Â Â Â Â Â Â Â\+ do { Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ R512(0, 1, 2, 3, 4, 5, 6, 7, R_512_0, 8
> * (R) + 1); Â Â \+ R512(2, 1, 4, 7, 6, 5, 0, 3, R_512_1, 8 * (R) + 2); Â Â
> \+ R512(4, 1, 6, 3, 0, 5, 2, 7, R_512_2, 8 * (R) + 3); Â Â \+ R512(6, 1, 0,
> 7, 2, 5, 4, 3, R_512_3, 8 * (R) + 4); Â Â \+ I512(2 * (R)); Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â\+ R512(0, 1, 2, 3, 4, 5, 6, 7, R_512_4, 8 * (R) +
> 5); Â Â \+ R512(2, 1, 4, 7, 6, 5, 0, 3, R_512_5, 8 * (R) + 6); Â Â
> \+ R512(4, 1, 6, 3, 0, 5, 2, 7, R_512_6, 8 * (R) + 7); Â Â \+ R512(6, 1, 0,
> 7, 2, 5, 4, 3, R_512_7, 8 * (R) + 8); Â Â \+ I512(2 * (R) + 1); /* and key
> injection */ Â Â Â Â Â Â Â\+ } while (0)+#define R512_UNROLL_R(NN) Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â \+ ((SKEIN_UNROLL_512 == 0 && Â Â Â Â Â
> Â\+ SKEIN_512_ROUNDS_TOTAL/8 > (NN)) || Â \+ (SKEIN_UNROLL_512 >
> (NN)))++#if Â(SKEIN_UNROLL_512 > 14)+#error Â"need more unrolling in
> skein_512_process_block"+#endif+#endif++#if !(SKEIN_USE_ASM & 1024)+#undef
> ÂRCNT+#define RCNT Â(SKEIN_1024_ROUNDS_TOTAL/8)+#ifdef SKEIN_LOOP /*
> configure how much to unroll the loop */+#define SKEIN_UNROLL_1024
> ((SKEIN_LOOP) % 10)+#else+#define SKEIN_UNROLL_1024 (0)+#endif++#if
> (SKEIN_UNROLL_1024 != 0)+#if (RCNT % SKEIN_UNROLL_1024)+#error "Invalid
> SKEIN_UNROLL_1024" /* sanity check on unroll count */+#endif+#endif+#define
> ROUND1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \+
> ÂpF, ROT, r_num) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ do { Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X##p0 += X##p1;
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p1 = rotl_64(X##p1,
> ROT##_0); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X##p1 ^= X##p0; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p2 += X##p3; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â \+ X##p3 = rotl_64(X##p3, ROT##_1); Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â\+ X##p3 ^= X##p2; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \+ X##p4 += X##p5; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p5 =
> rotl_64(X##p5, ROT##_2); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X##p5 ^= X##p4; Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p6 += X##p7; Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##p7 = rotl_64(X##p7, ROT##_3); Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â\+ X##p7 ^= X##p6; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â \+ X##p8 += X##p9; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \+ X##p9 = rotl_64(X##p9, ROT##_4); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X##p9
> ^= X##p8; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##pA += X##pB; Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##pB = rotl_64(X##pB,
> ROT##_5); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X##pB ^= X##pA; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##pC += X##pD; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â \+ X##pD = rotl_64(X##pD, ROT##_6); Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â\+ X##pD ^= X##pC; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \+ X##pE += X##pF; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X##pF =
> rotl_64(X##pF, ROT##_7); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X##pF ^= X##pE; Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ } while (0)++#if
> SKEIN_UNROLL_1024 == 0+#define R1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9,
> pA, pB, pC, pD, pE, pF, \+ Â Â ÂROT, rn) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â\+ ROUND1024(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, pA,
> pB, pC, pD, pE, \+ ÂpF, ROT, rn) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â\++#define I1024(R) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ do
> { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ /* inject the key
> schedule value */ Â Â Â Â Â Â \+ X00 += ks[((R) + 1) % 17]; Â Â Â Â Â Â Â Â
> Â Â Â\+ X01 += ks[((R) + 2) % 17]; Â Â Â Â Â Â Â Â Â Â Â\+ X02 += ks[((R) +
> 3) % 17]; Â Â Â Â Â Â Â Â Â Â Â\+ X03 += ks[((R) + 4) % 17]; Â Â Â Â Â Â Â Â
> Â Â Â\+ X04 += ks[((R) + 5) % 17]; Â Â Â Â Â Â Â Â Â Â Â\+ X05 += ks[((R) +
> 6) % 17]; Â Â Â Â Â Â Â Â Â Â Â\+ X06 += ks[((R) + 7) % 17]; Â Â Â Â Â Â Â Â
> Â Â Â\+ X07 += ks[((R) + 8) % 17]; Â Â Â Â Â Â Â Â Â Â Â\+ X08 += ks[((R) +
> 9) % 17]; Â Â Â Â Â Â Â Â Â Â Â\+ X09 += ks[((R) + 10) % 17]; Â Â Â Â Â Â Â
> Â Â Â \+ X10 += ks[((R) + 11) % 17]; Â Â Â Â Â Â Â Â Â Â \+ X11 += ks[((R)
> + 12) % 17]; Â Â Â Â Â Â Â Â Â Â \+ X12 += ks[((R) + 13) % 17]; Â Â Â Â Â Â
> Â Â Â Â \+ X13 += ks[((R) + 14) % 17] + ts[((R) + 1) % 3]; \+ X14 +=
> ks[((R) + 15) % 17] + ts[((R) + 2) % 3]; \+ X15 += ks[((R) + 16) % 17] + (R)
> + 1; Â Â Â Â Â \+ } while (0)+#else /* looping version */+#define R1024(p0,
> p1, p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, pF, \+ Â Â ÂROT, rn)
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ ROUND1024(p0, p1,
> p2, p3, p4, p5, p6, p7, p8, p9, pA, pB, pC, pD, pE, \+ ÂpF, ROT, rn) Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\++#define I1024(R) Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ /* inject the key schedule value */ Â Â Â Â
> Â Â Â Â Â Â \+ X00 += ks[r + (R) + 0]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \+ X01 += ks[r + (R) + 1]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X02 += ks[r +
> (R) + 2]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X03 += ks[r + (R) + 3]; Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â \+ X04 += ks[r + (R) + 4]; Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â \+ X05 += ks[r + (R) + 5]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X06 +=
> ks[r + (R) + 6]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X07 += ks[r + (R) + 7];
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ X08 += ks[r + (R) + 8]; Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â \+ X09 += ks[r + (R) + 9]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> \+ X10 += ks[r + (R) + 10]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X11 += ks[r +
> (R) + 11]; Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X12 += ks[r + (R) + 12]; Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â\+ X13 += ks[r + (R) + 13] + ts[r + (R) + 0]; Â Â Â
> Â Â Â Â\+ X14 += ks[r + (R) + 14] + ts[r + (R) + 1]; Â Â Â Â Â Â Â\+ X15 +=
> ks[r + (R) + 15] + r + (R); Â Â Â Â Â Â Â Â Â Â Â\+ /* rotate key schedule
> */ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ ks[r + (R) + 16] = ks[r + (R) - 1]; Â Â
> Â Â Â Â Â Â Â Â \+ ts[r + (R) + 2] = ts[r + (R) - 1]; Â Â Â Â Â Â Â Â Â Â
> Â\+ } while (0)++#endif+#define R1024_8_ROUNDS(R) Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â \+ do { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â Â Â Â Â Â\+ R1024(00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, \+
> Â Â Â13, 14, 15, R1024_0, 8*(R) + 1); Â Â Â Â Â Â Â Â Â Â\+ R1024(00, 09,
> 02, 13, 06, 11, 04, 15, 10, 07, 12, 03, 14, \+ Â Â Â05, 08, 01, R1024_1,
> 8*(R) + 2); Â Â Â Â Â Â Â Â Â Â\+ R1024(00, 07, 02, 05, 04, 03, 06, 01, 12,
> 15, 14, 13, 08, \+ Â Â Â11, 10, 09, R1024_2, 8*(R) + 3); Â Â Â Â Â Â Â Â Â
> Â\+ R1024(00, 15, 02, 11, 06, 13, 04, 09, 14, 01, 08, 05, 10, \+ Â Â Â03,
> 12, 07, R1024_3, 8*(R) + 4); Â Â Â Â Â Â Â Â Â Â\+ I1024(2*(R)); Â Â Â Â Â Â
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ R1024(00, 01, 02, 03, 04, 05, 06, 07, 08,
> 09, 10, 11, 12, \+ Â Â Â13, 14, 15, R1024_4, 8*(R) + 5); Â Â Â Â Â Â Â Â Â
> Â\+ R1024(00, 09, 02, 13, 06, 11, 04, 15, 10, 07, 12, 03, 14, \+ Â Â Â05,
> 08, 01, R1024_5, 8*(R) + 6); Â Â Â Â Â Â Â Â Â Â\+ R1024(00, 07, 02, 05, 04,
> 03, 06, 01, 12, 15, 14, 13, 08, \+ Â Â Â11, 10, 09, R1024_6, 8*(R) + 7); Â
> Â Â Â Â Â Â Â Â Â\+ R1024(00, 15, 02, 11, 06, 13, 04, 09, 14, 01, 08, 05,
> 10, \+ Â Â Â03, 12, 07, R1024_7, 8*(R) + 8); Â Â Â Â Â Â Â Â Â
> Â\+ I1024(2*(R)+1); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â \+ } while
> (0)++#define R1024_UNROLL_R(NN) Â Â Â Â Â Â Â Â Â Â Â Â Â Â
> Â\+ ((SKEIN_UNROLL_1024 == 0 && Â Â Â Â Â Â \+ SKEIN_1024_ROUNDS_TOTAL/8 >
> (NN)) || Â Â\+ (SKEIN_UNROLL_1024 > (NN)))++#if Â(SKEIN_UNROLL_1024 >
> 14)+#error Â"need more unrolling in
> Skein_1024_Process_Block"+#endif+#endif--Â2.5.0
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/