Skip to content

camellia: code shrink and 64-bit optimization

Denys Vlasenko linux-crypto 1 version Applied

Status from this message: Applied. Thanks.

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest5 patches 4 repliesApplied

Patches in v1 Applied

#Subject and filesSizeRepliesApplied
1/5camellia: code shrinkcrypto/camellia.c+135 -1341 reply
2/5camellia: code shrink #2crypto/camellia.c+108 -4051 reply
3/5camellia: code shrink #3crypto/camellia.c+104 -1601 reply
4/5camellia: code shrink #4crypto/camellia.c+84 -1341 reply
5/5camellia: 64-bit optimizationcrypto/camellia.c+497 -40 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/5] camellia: code shrink and 64-bit optimization

Patches start from 5 because pathches 1..4 are already in cryptodev-2.6.

camellia5:
Remove unused macro params.
Use (u8)(expr) instead of (expr) & 0xff,
helps gcc to realize how to use simpler commands. Move CAMELLIA_FLS macro closer to encrypt/decrypt routines.

camellia6:
unifies encrypt/decrypt routines for different key lengths. This reduces module size by ~25%, with tiny (less than 1%) speed impact.
Also collapses encrypt/decrypt into more readable (visually shorter) form using macros.

camellia7:
Move "key XOR is end of F-function" code part into camellia_setup_tail(), it is sufficiently similar between camellia_setup128 and camellia_setup256.

camellia8:
Analogously to camellia7 patch, move
"absorb kw2 to other subkeys" and "absorb kw4 to other subkeys" code parts into camellia_setup_tail(). This further reduces source and object code size at the cost of two brances in key setup code.

camellia9:
Adds 64-bit key setup, it is used if BITS_PER_LONG is 64. 30% faster key setup and 1k (7%) smaller module on amd64.

Code sizes:
64-bit:

dec      hex   filename
22786    5902  2.6.23.1.camellia4.t64/crypto/camellia.o
15670    3d36  2.6.23.1.camellia9.t64/crypto/camellia.o

32-bit:

29948    74fc  2.6.23.1.camellia4.t/crypto/camellia.o
18454    4816  2.6.23.1.camellia9.t/crypto/camellia.o

These patches apply cleanly to current cryptodev-2.6. They should be applied in order.

--
vda