| 1 | #!/usr/bin/env perl |
| 2 | # |
| 3 | # ==================================================================== |
| 4 | # Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL |
| 5 | # project. Rights for redistribution and usage in source and binary |
| 6 | # forms are granted according to the OpenSSL license. |
| 7 | # ==================================================================== |
| 8 | # |
| 9 | # whirlpool_block_mmx implementation. |
| 10 | # |
| 11 | *SCALE=\(2); # 2 or 8, that is the question:-) Value of 8 results |
| 12 | # in 16KB large table, which is tough on L1 cache, but eliminates |
| 13 | # unaligned references to it. Value of 2 results in 4KB table, but |
| 14 | # 7/8 of references to it are unaligned. AMD cores seem to be |
| 15 | # allergic to the latter, while Intel ones - to former [see the |
| 16 | # table]. I stick to value of 2 for two reasons: 1. smaller table |
| 17 | # minimizes cache trashing and thus mitigates the hazard of side- |
| 18 | # channel leakage similar to AES cache-timing one; 2. performance |
| 19 |