The hardest part of Serpent optimization is
finding good ways of performing the S-box calculations. My first set of
algorithms doing this semi-automatically were described in my paper
Speeding up Serpent. Since then I have
made further algorithm improvements, and results optimized for 3-way
parallel execution are used in my implementation
contributed to the Linux kernel.