diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-03-17 05:11:19 +0100 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-03-17 05:11:19 +0100 |
commit | a54350e3bbd636fd23f8e4c79fd120fea9298f96 (patch) | |
tree | de2be2d8409588d0a335dae4cbbd03dd1417c153 /test | |
parent | ac9df43552fe8a61e621993873e436ec29e9c5f8 (diff) | |
download | compcert-kvx-a54350e3bbd636fd23f8e4c79fd120fea9298f96.tar.gz compcert-kvx-a54350e3bbd636fd23f8e4c79fd120fea9298f96.zip |
compactify unrolled code
Diffstat (limited to 'test')
-rw-r--r-- | test/monniaux/sha-2/sha-256.c | 169 |
1 files changed, 26 insertions, 143 deletions
diff --git a/test/monniaux/sha-2/sha-256.c b/test/monniaux/sha-2/sha-256.c index 6ac1dbd3..8e97848b 100644 --- a/test/monniaux/sha-2/sha-256.c +++ b/test/monniaux/sha-2/sha-256.c @@ -433,150 +433,33 @@ void calc_sha_256(uint8_t hash[32], const void * input, size_t len) /* Compression function main loop: */ for (i = 0; i < 64; ) { - { - const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); - const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); - const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; - const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); - const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - const uint32_t temp2 = s0 + maj; - - ah7 = ah6; - ah6 = ah5; - ah5 = ah4; - ah4 = ah3 + temp1; - ah3 = ah2; - ah2 = ah1; - ah1 = ah0; - ah0 = temp1 + temp2; - i++; - } - { - const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); - const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); - const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; - const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); - const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - const uint32_t temp2 = s0 + maj; - - ah7 = ah6; - ah6 = ah5; - ah5 = ah4; - ah4 = ah3 + temp1; - ah3 = ah2; - ah2 = ah1; - ah1 = ah0; - ah0 = temp1 + temp2; - i++; - } - { - const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); - const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); - const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; - const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); - const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - const uint32_t temp2 = s0 + maj; - - ah7 = ah6; - ah6 = ah5; - ah5 = ah4; - ah4 = ah3 + temp1; - ah3 = ah2; - ah2 = ah1; - ah1 = ah0; - ah0 = temp1 + temp2; - i++; - } - { - const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); - const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); - const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; - const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); - const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - const uint32_t temp2 = s0 + maj; - - ah7 = ah6; - ah6 = ah5; - ah5 = ah4; - ah4 = ah3 + temp1; - ah3 = ah2; - ah2 = ah1; - ah1 = ah0; - ah0 = temp1 + temp2; - i++; - } - { - const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); - const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); - const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; - const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); - const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - const uint32_t temp2 = s0 + maj; - - ah7 = ah6; - ah6 = ah5; - ah5 = ah4; - ah4 = ah3 + temp1; - ah3 = ah2; - ah2 = ah1; - ah1 = ah0; - ah0 = temp1 + temp2; - i++; - } - { - const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); - const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); - const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; - const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); - const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - const uint32_t temp2 = s0 + maj; - - ah7 = ah6; - ah6 = ah5; - ah5 = ah4; - ah4 = ah3 + temp1; - ah3 = ah2; - ah2 = ah1; - ah1 = ah0; - ah0 = temp1 + temp2; - i++; - } - { - const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); - const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); - const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; - const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); - const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - const uint32_t temp2 = s0 + maj; - - ah7 = ah6; - ah6 = ah5; - ah5 = ah4; - ah4 = ah3 + temp1; - ah3 = ah2; - ah2 = ah1; - ah1 = ah0; - ah0 = temp1 + temp2; - i++; - } - { - const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); - const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); - const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; - const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); - const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - const uint32_t temp2 = s0 + maj; - - ah7 = ah6; - ah6 = ah5; - ah5 = ah4; - ah4 = ah3 + temp1; - ah3 = ah2; - ah2 = ah1; - ah1 = ah0; - ah0 = temp1 + temp2; - i++; +#define CHUNK \ + { \ + const uint32_t s1 = right_rot6(ah4) ^ right_rot11(ah4) ^ right_rot25(ah4); \ + const uint32_t ch = (ah4 & ah5) ^ (~ah4 & ah6); \ + const uint32_t temp1 = ah7 + s1 + ch + k[i] + w[i]; \ + const uint32_t s0 = right_rot2(ah0) ^ right_rot13(ah0) ^ right_rot22(ah0); \ + const uint32_t maj = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); \ + const uint32_t temp2 = s0 + maj; \ + \ + ah7 = ah6; \ + ah6 = ah5; \ + ah5 = ah4; \ + ah4 = ah3 + temp1; \ + ah3 = ah2; \ + ah2 = ah1; \ + ah1 = ah0; \ + ah0 = temp1 + temp2; \ + i++; \ } + CHUNK + CHUNK + CHUNK + CHUNK + CHUNK + CHUNK + CHUNK + CHUNK } /* Add the compressed chunk to the current hash value: */ |