diff --git a/apple-x86_64/crypto/fipsmodule/aesni-x86_64-apple.S b/apple-x86_64/crypto/fipsmodule/aesni-x86_64-apple.S index 60fd58c01..244ee21a5 100644 --- a/apple-x86_64/crypto/fipsmodule/aesni-x86_64-apple.S +++ b/apple-x86_64/crypto/fipsmodule/aesni-x86_64-apple.S @@ -1260,6 +1260,8 @@ L$ctr32_enc_done: pxor %xmm0,%xmm13 movdqu 80(%rdi),%xmm15 pxor %xmm0,%xmm14 + prefetcht0 448(%rdi) + prefetcht0 512(%rdi) pxor %xmm0,%xmm15 .byte 102,15,56,220,209 .byte 102,15,56,220,217 diff --git a/linux-x86_64/crypto/fipsmodule/aesni-x86_64-linux.S b/linux-x86_64/crypto/fipsmodule/aesni-x86_64-linux.S index a450c7847..fd962c84f 100644 --- a/linux-x86_64/crypto/fipsmodule/aesni-x86_64-linux.S +++ b/linux-x86_64/crypto/fipsmodule/aesni-x86_64-linux.S @@ -1262,6 +1262,8 @@ aes_hw_ctr32_encrypt_blocks: pxor %xmm0,%xmm13 movdqu 80(%rdi),%xmm15 pxor %xmm0,%xmm14 + prefetcht0 448(%rdi) + prefetcht0 512(%rdi) pxor %xmm0,%xmm15 .byte 102,15,56,220,209 .byte 102,15,56,220,217 diff --git a/src/crypto/fipsmodule/aes/asm/aesni-x86_64.pl b/src/crypto/fipsmodule/aes/asm/aesni-x86_64.pl index 9a90946b8..215611fd7 100644 --- a/src/crypto/fipsmodule/aes/asm/aesni-x86_64.pl +++ b/src/crypto/fipsmodule/aes/asm/aesni-x86_64.pl @@ -1524,6 +1524,8 @@ $code.=<<___; pxor $rndkey0,$in3 movdqu 0x50($inp),$in5 pxor $rndkey0,$in4 + prefetcht0 0x1c0($inp) # We process 128 bytes (8*16), so to prefetch 1 iteration + prefetcht0 0x200($inp) # We need to prefetch 2 64 byte lines pxor $rndkey0,$in5 aesenc $rndkey1,$inout0 aesenc $rndkey1,$inout1 diff --git a/win-x86_64/crypto/fipsmodule/aesni-x86_64-win.asm b/win-x86_64/crypto/fipsmodule/aesni-x86_64-win.asm index 2a6d23768..09cad7334 100644 --- a/win-x86_64/crypto/fipsmodule/aesni-x86_64-win.asm +++ b/win-x86_64/crypto/fipsmodule/aesni-x86_64-win.asm @@ -1307,6 +1307,8 @@ $L$ctr32_enc_done: pxor xmm13,xmm0 movdqu xmm15,XMMWORD[80+rdi] pxor xmm14,xmm0 + prefetcht0 [448+rdi] + prefetcht0 [512+rdi] pxor xmm15,xmm0 DB 102,15,56,220,209 DB 102,15,56,220,217