summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@airbus.com>2019-02-04 13:53:03 +0100
committerKévin Le Gouguec <kevin.legouguec@airbus.com>2019-02-04 13:53:03 +0100
commitaf531ef71e68e98d1eee4fdefb30b3f2e8cd83c4 (patch)
treef90b6fae5321dd9319ab05e90833c55a31893714 /src
parente5a9fe49462ad0ede700041f4ae5c8c430cefe34 (diff)
downloadlilliput-ae-implem-af531ef71e68e98d1eee4fdefb30b3f2e8cd83c4.tar.xz
Retouches sur M₃ et M₄
Ça me chiffonne de mettre deux instructions. En même temps, le cast me chiffonne aussi, donc je reviendrai peut-être sur cette décision… "x & 0x1f" a été remplacé par "(x<<3) >> 3" parce que c'est ce qu'un lecteur qui déroulerait l'expression de M₃ trouverait, et aussi parce que les compilateurs sont de toute façon suffisamment malins pour traduire le tout en un AND.
Diffstat (limited to 'src')
-rw-r--r--src/add_developedtweakey/tweakey.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/add_developedtweakey/tweakey.c b/src/add_developedtweakey/tweakey.c
index 605098b..0588c1b 100644
--- a/src/add_developedtweakey/tweakey.c
+++ b/src/add_developedtweakey/tweakey.c
@@ -55,15 +55,12 @@ static uint8_t _M2(uint8_t x)
static uint8_t _M3(uint8_t x)
{
- return x & 0x1f;
+ return (uint8_t)(x<<3) >> 3;
}
static uint8_t _M4(uint8_t x)
{
- /* (x<<2)>>3 would keep bit x6 due to integer promotion.
- * Side-step this by writing each shift on its own statement. */
- x <<= 2;
- return x>>3;
+ return (uint8_t)(x<<2) >> 3;
}
static void _multiply_M(const uint8_t X[LANE_BYTES], uint8_t Y[LANE_BYTES])