sha3: remove two "small code" codepaths: I can't reproduce code size win on them...
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 15 Jan 2013 21:07:48 +0000 (22:07 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 15 Jan 2013 21:07:48 +0000 (22:07 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/hash_md5_sha.c

index 7ae0b63852afe1d03b3af8837706e92d0a3a46ed..60f44cc3dde6a7395bed4ad32627d4c8532dad16 100644 (file)
@@ -977,14 +977,12 @@ static const uint8_t KECCAK_PI_LANE[25] = {
        14, 22, 9, 6, 1
 };
 
-static const uint8_t MOD5[10] = {
-       0, 1, 2, 3, 4, 0, 1, 2, 3, 4
-};
-
 #define ARCH_IS_64BIT (sizeof(long) >= sizeof(uint64_t))
 
 static void KeccakF(uint64_t *state)
 {
+       /*static const uint8_t MOD5[10] = { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 };*/
+
        unsigned x, y;
        unsigned round;
 
@@ -1009,18 +1007,11 @@ static void KeccakF(uint64_t *state)
                         */
                        for (x = 0; x < 5; ++x) {
                                uint64_t temp = BC[x + 4] ^ rotl64(BC[x + 1], 1);
-                               if (SHA3_SMALL && !ARCH_IS_64BIT) {
-                                       for (y = 0; y <= 20; y += 5)
-                                               state[x + y] ^= temp;
-                               } else {
-                                       /* On 64-bit, this is also smaller,
-                                        * not only faster, than loop */
-                                       state[x] ^= temp;
-                                       state[x + 5] ^= temp;
-                                       state[x + 10] ^= temp;
-                                       state[x + 15] ^= temp;
-                                       state[x + 20] ^= temp;
-                               }
+                               state[x] ^= temp;
+                               state[x + 5] ^= temp;
+                               state[x + 10] ^= temp;
+                               state[x + 15] ^= temp;
+                               state[x + 20] ^= temp;
                        }
                }
 
@@ -1057,33 +1048,17 @@ static void KeccakF(uint64_t *state)
 
                /* Chi */
                for (y = 0; y <= 20; y += 5) {
-                       if (SHA3_SMALL && !ARCH_IS_64BIT) {
-                               uint64_t BC[5];
-                               BC[0] = state[y + 0];
-                               BC[1] = state[y + 1];
-                               BC[2] = state[y + 2];
-                               BC[3] = state[y + 3];
-                               BC[4] = state[y + 4];
-                               for (x = 0; x < 5; ++x) {
-                                       state[y + x] =
-                                           BC[x] ^ ((~BC[MOD5[x + 1]]) &
-                                                    BC[MOD5[x + 2]]);
-                               }
-                       } else {
-                               /* 32-bit x86: +50 bytes code, 10% faster */
-                               /* 64-bit x86: ~same code size, 30% faster */
-                               uint64_t BC0, BC1, BC2, BC3, BC4;
-                               BC0 = state[y + 0];
-                               BC1 = state[y + 1];
-                               BC2 = state[y + 2];
-                               state[y + 0] = BC0 ^ ((~BC1) & BC2);
-                               BC3 = state[y + 3];
-                               state[y + 1] = BC1 ^ ((~BC2) & BC3);
-                               BC4 = state[y + 4];
-                               state[y + 2] = BC2 ^ ((~BC3) & BC4);
-                               state[y + 3] = BC3 ^ ((~BC4) & BC0);
-                               state[y + 4] = BC4 ^ ((~BC0) & BC1);
-                       }
+                       uint64_t BC0, BC1, BC2, BC3, BC4;
+                       BC0 = state[y + 0];
+                       BC1 = state[y + 1];
+                       BC2 = state[y + 2];
+                       state[y + 0] = BC0 ^ ((~BC1) & BC2);
+                       BC3 = state[y + 3];
+                       state[y + 1] = BC1 ^ ((~BC2) & BC3);
+                       BC4 = state[y + 4];
+                       state[y + 2] = BC2 ^ ((~BC3) & BC4);
+                       state[y + 3] = BC3 ^ ((~BC4) & BC0);
+                       state[y + 4] = BC4 ^ ((~BC0) & BC1);
                }
 
                /* Iota */