Re: [PATCH] crypto: twofish - add x86_64/avx assemblerimplementation

From: Jussi Kivilinna
Date: Mon May 28 2012 - 02:25:19 EST


Quoting Johannes Goetzfried <Johannes.Goetzfried@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>:

This patch adds a x86_64/avx assembler implementation of the Twofish block
cipher. The implementation processes eight blocks in parallel (two 4 block
chunk AVX operations). The table-lookups are done in general-purpose registers.
For small blocksizes the 3way-parallel functions from the twofish-x86_64-3way
module are called. A good performance increase is provided for blocksizes
greater or equal to 128B.

Patch has been tested with tcrypt and automated filesystem tests.


It would be benefical to expand the twofish vectors in crypto/testmgr.h from 3 blocks
to 8 blocks so that 8-way algorithm(s) can be checked runtime. And while at expanding
test-vectors, why not just expand to 16 blocks... AVX2 is just one year away:
https://github.com/jkivilin/crypto-avx2/commit/1a72d7a6a1553aee70ad4b6a1980ca372181f40d


Tcrypt benchmark results:

Intel Core i5-2500 CPU (fam:6, model:42, step:7)

<snip>

+/*
+ * Glue Code for AVX assembler version of Twofish Cipher
+ *
+ * Copyright (C) 2012 Johannes Goetzfried
+ * <Johannes.Goetzfried@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
+ *
+ * Glue code based on twofish_sse2_glue.c by:
+ * Copyright (C) 2011 Jussi Kivilinna <jussi.kivilinna@xxxxxxxx>

I think you mean serpent_sse2_glue.c :)

-Jussi


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/