diff options
| author | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2019-07-04 17:13:57 +0200 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2019-07-04 17:13:57 +0200 |
| commit | 3d1334d6a9eb091b457f068033071f97d8758941 (patch) | |
| tree | ce7a28187e7c407f6fa56bf4ff4ed29245f8b484 /src/ref/multiplications.h | |
| parent | 6589f3ef20f8f93168be49135764764cd0c02a23 (diff) | |
| parent | c670bbe78ea9bc18c9772ba5804f610937560d5f (diff) | |
| download | lilliput-ae-implem-3d1334d6a9eb091b457f068033071f97d8758941.tar.xz | |
Merge branch 'fix-tweakey-m4'
Diffstat (limited to 'src/ref/multiplications.h')
| -rw-r--r-- | src/ref/multiplications.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ref/multiplications.h b/src/ref/multiplications.h index 4de1848..c0645b9 100644 --- a/src/ref/multiplications.h +++ b/src/ref/multiplications.h @@ -71,6 +71,26 @@ static void _multiply_M3(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES]) y[0] = x[5]; } +static void _multiply_M4(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES]) +{ + uint8_t a_5 = x[5]<<3 ^ x[4]; + uint8_t a_4 = x[4]>>3 ^ x[3]; + uint8_t b_5 = a_5<<3 ^ a_4; + uint8_t b_4 = a_4>>3 ^ x[2]; + + uint8_t c_4 = b_4>>3 ^ x[6]<<2 ^ x[1]; + uint8_t c_5 = b_5<<3 ^ b_4; + + y[7] = b_5; + y[6] = c_5; + y[5] = c_5<<3 ^ c_4; + y[4] = c_4>>3 ^ x[5]<<2 ^ x[0]; + y[3] = a_5<<2 ^ x[7]; + y[2] = b_5<<2 ^ x[6]; + y[1] = x[5]; + y[0] = a_5; +} + static void _multiply_MR(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES]) { y[0] = x[1]; |
