• Eric Biggers's avatar
    crypto: x86/aes-xts - handle CTS encryption more efficiently · 1d27e1f5
    Eric Biggers authored
    When encrypting a message whose length isn't a multiple of 16 bytes,
    encrypt the last full block in the main loop.  This works because only
    decryption uses the last two tweaks in reverse order, not encryption.
    
    This improves the performance of decrypting messages whose length isn't
    a multiple of the AES block length, shrinks the size of
    aes-xts-avx-x86_64.o by 5.0%, and eliminates two instructions (a test
    and a not-taken conditional jump) when encrypting a message whose length
    *is* a multiple of the AES block length.
    
    While it's not super useful to optimize for ciphertext stealing given
    that it's rarely needed in practice, the other two benefits mentioned
    above make this optimization worthwhile.
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    1d27e1f5
aes-xts-avx-x86_64.S 25.2 KB