First take on using AES-NI instructions
authorWerner Koch <wk@gnupg.org>
Sun, 13 Feb 2011 16:48:37 +0000 (17:48 +0100)
committerWerner Koch <wk@gnupg.org>
Sun, 13 Feb 2011 16:48:37 +0000 (17:48 +0100)
commita39539afdf39fe525ed7512aafb92733d2fe358c
treed621e7385d07063cf4ffc93f3c63748e6a1cc18a
parent487e4da34e3134922240431ccd8554d7ea47be88
First take on using AES-NI instructions

This first naive use of the new Intel AES-NI instructions boosts the
performance of AES on CPUs supporting this by 3 to 5 times.

Results from running
  ./benchmark --cipher-repetitions 10 --large-buffers  cipher aes
on a
  cpu family      : 6
  model           : 37
  model name      : Intel(R) Core(TM) i5 CPU         660  @ 3.33GHz
  stepping        : 2
  cpu MHz         : 3325.494
  cache size      : 4096 KB
  cpu cores       : 2

yields this:

    ECB/Stream         CBC             CFB             OFB             CTR
--------------- --------------- --------------- --------------- ---------------
  130ms   110ms   110ms   100ms   110ms   110ms   160ms   150ms   170ms   170ms
   40ms    40ms    20ms    30ms    30ms    20ms    70ms    70ms    80ms    80ms

The first line is with runtime switched off AES-NI instructions (don't
set use_aesni in do_setkey), the second with enabled AES-NI.  By
fixing the alignment, I hope to squeeze out a little more even with
this naive implementation.
ChangeLog
NEWS
README
cipher/ChangeLog
cipher/cipher.c
cipher/rijndael.c
configure.ac
src/ChangeLog