diff options
| author | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2019-07-01 17:00:15 +0200 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@airbus.com> | 2019-07-04 13:43:12 +0200 |
| commit | 3a074358065de5af65510d53f131b98c28f0b547 (patch) | |
| tree | 36af02f6d476115b59cd0b2bff0a9a1e81cb3cdc /src/ref/multiplications.h | |
| parent | 7e4b76b05d9a3945b916af09de0f9672abd2b22c (diff) | |
| download | lilliput-ae-implem-3a074358065de5af65510d53f131b98c28f0b547.tar.xz | |
Ajout de la multiplication M⁴
- α₀ devient M
- α₁ M²
- α₂ M³
- α₃ M⁴
- α₄ M_R
- α₅ M_R²
- α₆ M_R³
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]; |
