4f86c39515
* Update Dilithium * Alternative montgomery reduce to avoid i386 functest errors * Explicit casts for msvc * More casts; bump upstream version; fix metadata * another cast
910 lines
25 KiB
ArmAsm
910 lines
25 KiB
ArmAsm
/* Taken from Bas Westerbaan's new 4-way SHAKE implementation
|
|
* for Sphincs+ (https://github.com/sphincs/sphincsplus/pull/14/),
|
|
* but uses vpshufb for byte-granular rotations as in the Keccak Code Package. */
|
|
|
|
#include "cdecl.h"
|
|
|
|
.data
|
|
.p2align 5
|
|
rho8:
|
|
.byte 7,0,1,2,3,4,5,6,15,8,9,10,11,12,13,14,7,0,1,2,3,4,5,6,15,8,9,10,11,12,13,14
|
|
rho56:
|
|
.byte 1,2,3,4,5,6,7,0,9,10,11,12,13,14,15,8,1,2,3,4,5,6,7,0,9,10,11,12,13,14,15,8
|
|
|
|
.text
|
|
.global cdecl(PQCLEAN_DILITHIUM3_AVX2_f1600x4)
|
|
.global _cdecl(PQCLEAN_DILITHIUM3_AVX2_f1600x4)
|
|
cdecl(PQCLEAN_DILITHIUM3_AVX2_f1600x4):
|
|
_cdecl(PQCLEAN_DILITHIUM3_AVX2_f1600x4):
|
|
vmovdqa rho8(%rip), %ymm0
|
|
movq $6, %rax
|
|
looptop:
|
|
vmovdqa 0(%rdi), %ymm8
|
|
vmovdqa 32(%rdi), %ymm9
|
|
vmovdqa 64(%rdi), %ymm10
|
|
vmovdqa 96(%rdi), %ymm11
|
|
vmovdqa 128(%rdi), %ymm12
|
|
vpxor 160(%rdi), %ymm8, %ymm8
|
|
vpxor 192(%rdi), %ymm9, %ymm9
|
|
vpxor 224(%rdi), %ymm10, %ymm10
|
|
vpxor 256(%rdi), %ymm11, %ymm11
|
|
vpxor 288(%rdi), %ymm12, %ymm12
|
|
vpxor 320(%rdi), %ymm8, %ymm8
|
|
vpxor 352(%rdi), %ymm9, %ymm9
|
|
vpxor 384(%rdi), %ymm10, %ymm10
|
|
vpxor 416(%rdi), %ymm11, %ymm11
|
|
vpxor 448(%rdi), %ymm12, %ymm12
|
|
vpxor 480(%rdi), %ymm8, %ymm8
|
|
vpxor 512(%rdi), %ymm9, %ymm9
|
|
vpxor 544(%rdi), %ymm10, %ymm10
|
|
vpxor 576(%rdi), %ymm11, %ymm11
|
|
vpxor 608(%rdi), %ymm12, %ymm12
|
|
vpxor 640(%rdi), %ymm8, %ymm8
|
|
vpxor 672(%rdi), %ymm9, %ymm9
|
|
vpxor 704(%rdi), %ymm10, %ymm10
|
|
vpxor 736(%rdi), %ymm11, %ymm11
|
|
vpxor 768(%rdi), %ymm12, %ymm12
|
|
vpsllq $1, %ymm9, %ymm13
|
|
vpsllq $1, %ymm10, %ymm14
|
|
vpsllq $1, %ymm11, %ymm15
|
|
vpsllq $1, %ymm12, %ymm7
|
|
vpsllq $1, %ymm8, %ymm6
|
|
vpsrlq $63, %ymm9, %ymm5
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpsrlq $63, %ymm11, %ymm3
|
|
vpsrlq $63, %ymm12, %ymm2
|
|
vpsrlq $63, %ymm8, %ymm1
|
|
vpor %ymm13, %ymm5, %ymm5
|
|
vpor %ymm14, %ymm4, %ymm4
|
|
vpor %ymm15, %ymm3, %ymm3
|
|
vpor %ymm7, %ymm2, %ymm2
|
|
vpor %ymm6, %ymm1, %ymm1
|
|
vpxor %ymm5, %ymm12, %ymm5
|
|
vpxor %ymm4, %ymm8, %ymm4
|
|
vpxor %ymm3, %ymm9, %ymm3
|
|
vpxor %ymm2, %ymm10, %ymm2
|
|
vpxor %ymm1, %ymm11, %ymm1
|
|
vpxor 0(%rdi), %ymm5, %ymm8
|
|
vpxor 192(%rdi), %ymm4, %ymm9
|
|
vpxor 384(%rdi), %ymm3, %ymm10
|
|
vpxor 576(%rdi), %ymm2, %ymm11
|
|
vpxor 768(%rdi), %ymm1, %ymm12
|
|
vpsllq $44, %ymm9, %ymm14
|
|
vpsllq $43, %ymm10, %ymm15
|
|
vpsllq $21, %ymm11, %ymm7
|
|
vpsllq $14, %ymm12, %ymm6
|
|
vpsrlq $20, %ymm9, %ymm9
|
|
vpsrlq $21, %ymm10, %ymm10
|
|
vpsrlq $43, %ymm11, %ymm11
|
|
vpsrlq $50, %ymm12, %ymm12
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vpbroadcastq 0(%rsi), %ymm8
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vmovdqa %ymm13, 0(%rdi)
|
|
vmovdqa %ymm14, 192(%rdi)
|
|
vmovdqa %ymm15, 384(%rdi)
|
|
vmovdqa %ymm7, 576(%rdi)
|
|
vmovdqa %ymm6, 768(%rdi)
|
|
vpxor 96(%rdi), %ymm2, %ymm8
|
|
vpxor 288(%rdi), %ymm1, %ymm9
|
|
vpxor 320(%rdi), %ymm5, %ymm10
|
|
vpxor 512(%rdi), %ymm4, %ymm11
|
|
vpxor 704(%rdi), %ymm3, %ymm12
|
|
vpsllq $28, %ymm8, %ymm13
|
|
vpsllq $20, %ymm9, %ymm14
|
|
vpsllq $3, %ymm10, %ymm15
|
|
vpsllq $45, %ymm11, %ymm7
|
|
vpsllq $61, %ymm12, %ymm6
|
|
vpsrlq $36, %ymm8, %ymm8
|
|
vpsrlq $44, %ymm9, %ymm9
|
|
vpsrlq $61, %ymm10, %ymm10
|
|
vpsrlq $19, %ymm11, %ymm11
|
|
vpsrlq $3, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 320(%rdi)
|
|
vmovdqa %ymm14, 512(%rdi)
|
|
vmovdqa %ymm15, 704(%rdi)
|
|
vmovdqa %ymm7, 96(%rdi)
|
|
vmovdqa %ymm6, 288(%rdi)
|
|
vpxor 32(%rdi), %ymm4, %ymm8
|
|
vpxor 224(%rdi), %ymm3, %ymm9
|
|
vpxor 416(%rdi), %ymm2, %ymm10
|
|
vpxor 608(%rdi), %ymm1, %ymm11
|
|
vpxor 640(%rdi), %ymm5, %ymm12
|
|
vpsllq $1, %ymm8, %ymm13
|
|
vpsllq $6, %ymm9, %ymm14
|
|
vpsllq $25, %ymm10, %ymm15
|
|
#vpsllq $8, %ymm11, %ymm7
|
|
vpsllq $18, %ymm12, %ymm6
|
|
vpsrlq $63, %ymm8, %ymm8
|
|
vpsrlq $58, %ymm9, %ymm9
|
|
vpsrlq $39, %ymm10, %ymm10
|
|
#vpsrlq $56, %ymm11, %ymm11
|
|
vpsrlq $46, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
#vpor %ymm7, %ymm11, %ymm11
|
|
vpshufb %ymm0, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 640(%rdi)
|
|
vmovdqa %ymm14, 32(%rdi)
|
|
vmovdqa %ymm15, 224(%rdi)
|
|
vmovdqa %ymm7, 416(%rdi)
|
|
vmovdqa %ymm6, 608(%rdi)
|
|
vpxor 128(%rdi), %ymm1, %ymm8
|
|
vpxor 160(%rdi), %ymm5, %ymm9
|
|
vpxor 352(%rdi), %ymm4, %ymm10
|
|
vpxor 544(%rdi), %ymm3, %ymm11
|
|
vpxor 736(%rdi), %ymm2, %ymm12
|
|
vpsllq $27, %ymm8, %ymm13
|
|
vpsllq $36, %ymm9, %ymm14
|
|
vpsllq $10, %ymm10, %ymm15
|
|
vpsllq $15, %ymm11, %ymm7
|
|
#vpsllq $56, %ymm12, %ymm6
|
|
vpsrlq $37, %ymm8, %ymm8
|
|
vpsrlq $28, %ymm9, %ymm9
|
|
vpsrlq $54, %ymm10, %ymm10
|
|
vpsrlq $49, %ymm11, %ymm11
|
|
#vpsrlq $8, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
#vpor %ymm6, %ymm12, %ymm12
|
|
vpshufb rho56(%rip), %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 160(%rdi)
|
|
vmovdqa %ymm14, 352(%rdi)
|
|
vmovdqa %ymm15, 544(%rdi)
|
|
vmovdqa %ymm7, 736(%rdi)
|
|
vmovdqa %ymm6, 128(%rdi)
|
|
vpxor 64(%rdi), %ymm3, %ymm8
|
|
vpxor 256(%rdi), %ymm2, %ymm9
|
|
vpxor 448(%rdi), %ymm1, %ymm10
|
|
vpxor 480(%rdi), %ymm5, %ymm11
|
|
vpxor 672(%rdi), %ymm4, %ymm12
|
|
vpsllq $62, %ymm8, %ymm13
|
|
vpsllq $55, %ymm9, %ymm14
|
|
vpsllq $39, %ymm10, %ymm15
|
|
vpsllq $41, %ymm11, %ymm7
|
|
vpsllq $2, %ymm12, %ymm6
|
|
vpsrlq $2, %ymm8, %ymm8
|
|
vpsrlq $9, %ymm9, %ymm9
|
|
vpsrlq $25, %ymm10, %ymm10
|
|
vpsrlq $23, %ymm11, %ymm11
|
|
vpsrlq $62, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 480(%rdi)
|
|
vmovdqa %ymm14, 672(%rdi)
|
|
vmovdqa %ymm15, 64(%rdi)
|
|
vmovdqa %ymm7, 256(%rdi)
|
|
vmovdqa %ymm6, 448(%rdi)
|
|
vmovdqa 0(%rdi), %ymm8
|
|
vmovdqa 32(%rdi), %ymm9
|
|
vmovdqa 64(%rdi), %ymm10
|
|
vmovdqa 96(%rdi), %ymm11
|
|
vmovdqa 128(%rdi), %ymm12
|
|
vpxor 160(%rdi), %ymm8, %ymm8
|
|
vpxor 192(%rdi), %ymm9, %ymm9
|
|
vpxor 224(%rdi), %ymm10, %ymm10
|
|
vpxor 256(%rdi), %ymm11, %ymm11
|
|
vpxor 288(%rdi), %ymm12, %ymm12
|
|
vpxor 320(%rdi), %ymm8, %ymm8
|
|
vpxor 352(%rdi), %ymm9, %ymm9
|
|
vpxor 384(%rdi), %ymm10, %ymm10
|
|
vpxor 416(%rdi), %ymm11, %ymm11
|
|
vpxor 448(%rdi), %ymm12, %ymm12
|
|
vpxor 480(%rdi), %ymm8, %ymm8
|
|
vpxor 512(%rdi), %ymm9, %ymm9
|
|
vpxor 544(%rdi), %ymm10, %ymm10
|
|
vpxor 576(%rdi), %ymm11, %ymm11
|
|
vpxor 608(%rdi), %ymm12, %ymm12
|
|
vpxor 640(%rdi), %ymm8, %ymm8
|
|
vpxor 672(%rdi), %ymm9, %ymm9
|
|
vpxor 704(%rdi), %ymm10, %ymm10
|
|
vpxor 736(%rdi), %ymm11, %ymm11
|
|
vpxor 768(%rdi), %ymm12, %ymm12
|
|
vpsllq $1, %ymm9, %ymm13
|
|
vpsllq $1, %ymm10, %ymm14
|
|
vpsllq $1, %ymm11, %ymm15
|
|
vpsllq $1, %ymm12, %ymm7
|
|
vpsllq $1, %ymm8, %ymm6
|
|
vpsrlq $63, %ymm9, %ymm5
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpsrlq $63, %ymm11, %ymm3
|
|
vpsrlq $63, %ymm12, %ymm2
|
|
vpsrlq $63, %ymm8, %ymm1
|
|
vpor %ymm13, %ymm5, %ymm5
|
|
vpor %ymm14, %ymm4, %ymm4
|
|
vpor %ymm15, %ymm3, %ymm3
|
|
vpor %ymm7, %ymm2, %ymm2
|
|
vpor %ymm6, %ymm1, %ymm1
|
|
vpxor %ymm5, %ymm12, %ymm5
|
|
vpxor %ymm4, %ymm8, %ymm4
|
|
vpxor %ymm3, %ymm9, %ymm3
|
|
vpxor %ymm2, %ymm10, %ymm2
|
|
vpxor %ymm1, %ymm11, %ymm1
|
|
vpxor 0(%rdi), %ymm5, %ymm8
|
|
vpxor 512(%rdi), %ymm4, %ymm9
|
|
vpxor 224(%rdi), %ymm3, %ymm10
|
|
vpxor 736(%rdi), %ymm2, %ymm11
|
|
vpxor 448(%rdi), %ymm1, %ymm12
|
|
vpsllq $44, %ymm9, %ymm14
|
|
vpsllq $43, %ymm10, %ymm15
|
|
vpsllq $21, %ymm11, %ymm7
|
|
vpsllq $14, %ymm12, %ymm6
|
|
vpsrlq $20, %ymm9, %ymm9
|
|
vpsrlq $21, %ymm10, %ymm10
|
|
vpsrlq $43, %ymm11, %ymm11
|
|
vpsrlq $50, %ymm12, %ymm12
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vpbroadcastq 8(%rsi), %ymm8
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vmovdqa %ymm13, 0(%rdi)
|
|
vmovdqa %ymm14, 512(%rdi)
|
|
vmovdqa %ymm15, 224(%rdi)
|
|
vmovdqa %ymm7, 736(%rdi)
|
|
vmovdqa %ymm6, 448(%rdi)
|
|
vpxor 576(%rdi), %ymm2, %ymm8
|
|
vpxor 288(%rdi), %ymm1, %ymm9
|
|
vpxor 640(%rdi), %ymm5, %ymm10
|
|
vpxor 352(%rdi), %ymm4, %ymm11
|
|
vpxor 64(%rdi), %ymm3, %ymm12
|
|
vpsllq $28, %ymm8, %ymm13
|
|
vpsllq $20, %ymm9, %ymm14
|
|
vpsllq $3, %ymm10, %ymm15
|
|
vpsllq $45, %ymm11, %ymm7
|
|
vpsllq $61, %ymm12, %ymm6
|
|
vpsrlq $36, %ymm8, %ymm8
|
|
vpsrlq $44, %ymm9, %ymm9
|
|
vpsrlq $61, %ymm10, %ymm10
|
|
vpsrlq $19, %ymm11, %ymm11
|
|
vpsrlq $3, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 640(%rdi)
|
|
vmovdqa %ymm14, 352(%rdi)
|
|
vmovdqa %ymm15, 64(%rdi)
|
|
vmovdqa %ymm7, 576(%rdi)
|
|
vmovdqa %ymm6, 288(%rdi)
|
|
vpxor 192(%rdi), %ymm4, %ymm8
|
|
vpxor 704(%rdi), %ymm3, %ymm9
|
|
vpxor 416(%rdi), %ymm2, %ymm10
|
|
vpxor 128(%rdi), %ymm1, %ymm11
|
|
vpxor 480(%rdi), %ymm5, %ymm12
|
|
vpsllq $1, %ymm8, %ymm13
|
|
vpsllq $6, %ymm9, %ymm14
|
|
vpsllq $25, %ymm10, %ymm15
|
|
#vpsllq $8, %ymm11, %ymm7
|
|
vpsllq $18, %ymm12, %ymm6
|
|
vpsrlq $63, %ymm8, %ymm8
|
|
vpsrlq $58, %ymm9, %ymm9
|
|
vpsrlq $39, %ymm10, %ymm10
|
|
#vpsrlq $56, %ymm11, %ymm11
|
|
vpsrlq $46, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
#vpor %ymm7, %ymm11, %ymm11
|
|
vpshufb %ymm0, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 480(%rdi)
|
|
vmovdqa %ymm14, 192(%rdi)
|
|
vmovdqa %ymm15, 704(%rdi)
|
|
vmovdqa %ymm7, 416(%rdi)
|
|
vmovdqa %ymm6, 128(%rdi)
|
|
vpxor 768(%rdi), %ymm1, %ymm8
|
|
vpxor 320(%rdi), %ymm5, %ymm9
|
|
vpxor 32(%rdi), %ymm4, %ymm10
|
|
vpxor 544(%rdi), %ymm3, %ymm11
|
|
vpxor 256(%rdi), %ymm2, %ymm12
|
|
vpsllq $27, %ymm8, %ymm13
|
|
vpsllq $36, %ymm9, %ymm14
|
|
vpsllq $10, %ymm10, %ymm15
|
|
vpsllq $15, %ymm11, %ymm7
|
|
#vpsllq $56, %ymm12, %ymm6
|
|
vpsrlq $37, %ymm8, %ymm8
|
|
vpsrlq $28, %ymm9, %ymm9
|
|
vpsrlq $54, %ymm10, %ymm10
|
|
vpsrlq $49, %ymm11, %ymm11
|
|
#vpsrlq $8, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
#vpor %ymm6, %ymm12, %ymm12
|
|
vpshufb rho56(%rip), %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 320(%rdi)
|
|
vmovdqa %ymm14, 32(%rdi)
|
|
vmovdqa %ymm15, 544(%rdi)
|
|
vmovdqa %ymm7, 256(%rdi)
|
|
vmovdqa %ymm6, 768(%rdi)
|
|
vpxor 384(%rdi), %ymm3, %ymm8
|
|
vpxor 96(%rdi), %ymm2, %ymm9
|
|
vpxor 608(%rdi), %ymm1, %ymm10
|
|
vpxor 160(%rdi), %ymm5, %ymm11
|
|
vpxor 672(%rdi), %ymm4, %ymm12
|
|
vpsllq $62, %ymm8, %ymm13
|
|
vpsllq $55, %ymm9, %ymm14
|
|
vpsllq $39, %ymm10, %ymm15
|
|
vpsllq $41, %ymm11, %ymm7
|
|
vpsllq $2, %ymm12, %ymm6
|
|
vpsrlq $2, %ymm8, %ymm8
|
|
vpsrlq $9, %ymm9, %ymm9
|
|
vpsrlq $25, %ymm10, %ymm10
|
|
vpsrlq $23, %ymm11, %ymm11
|
|
vpsrlq $62, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 160(%rdi)
|
|
vmovdqa %ymm14, 672(%rdi)
|
|
vmovdqa %ymm15, 384(%rdi)
|
|
vmovdqa %ymm7, 96(%rdi)
|
|
vmovdqa %ymm6, 608(%rdi)
|
|
vmovdqa 0(%rdi), %ymm8
|
|
vmovdqa 32(%rdi), %ymm9
|
|
vmovdqa 64(%rdi), %ymm10
|
|
vmovdqa 96(%rdi), %ymm11
|
|
vmovdqa 128(%rdi), %ymm12
|
|
vpxor 160(%rdi), %ymm8, %ymm8
|
|
vpxor 192(%rdi), %ymm9, %ymm9
|
|
vpxor 224(%rdi), %ymm10, %ymm10
|
|
vpxor 256(%rdi), %ymm11, %ymm11
|
|
vpxor 288(%rdi), %ymm12, %ymm12
|
|
vpxor 320(%rdi), %ymm8, %ymm8
|
|
vpxor 352(%rdi), %ymm9, %ymm9
|
|
vpxor 384(%rdi), %ymm10, %ymm10
|
|
vpxor 416(%rdi), %ymm11, %ymm11
|
|
vpxor 448(%rdi), %ymm12, %ymm12
|
|
vpxor 480(%rdi), %ymm8, %ymm8
|
|
vpxor 512(%rdi), %ymm9, %ymm9
|
|
vpxor 544(%rdi), %ymm10, %ymm10
|
|
vpxor 576(%rdi), %ymm11, %ymm11
|
|
vpxor 608(%rdi), %ymm12, %ymm12
|
|
vpxor 640(%rdi), %ymm8, %ymm8
|
|
vpxor 672(%rdi), %ymm9, %ymm9
|
|
vpxor 704(%rdi), %ymm10, %ymm10
|
|
vpxor 736(%rdi), %ymm11, %ymm11
|
|
vpxor 768(%rdi), %ymm12, %ymm12
|
|
vpsllq $1, %ymm9, %ymm13
|
|
vpsllq $1, %ymm10, %ymm14
|
|
vpsllq $1, %ymm11, %ymm15
|
|
vpsllq $1, %ymm12, %ymm7
|
|
vpsllq $1, %ymm8, %ymm6
|
|
vpsrlq $63, %ymm9, %ymm5
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpsrlq $63, %ymm11, %ymm3
|
|
vpsrlq $63, %ymm12, %ymm2
|
|
vpsrlq $63, %ymm8, %ymm1
|
|
vpor %ymm13, %ymm5, %ymm5
|
|
vpor %ymm14, %ymm4, %ymm4
|
|
vpor %ymm15, %ymm3, %ymm3
|
|
vpor %ymm7, %ymm2, %ymm2
|
|
vpor %ymm6, %ymm1, %ymm1
|
|
vpxor %ymm5, %ymm12, %ymm5
|
|
vpxor %ymm4, %ymm8, %ymm4
|
|
vpxor %ymm3, %ymm9, %ymm3
|
|
vpxor %ymm2, %ymm10, %ymm2
|
|
vpxor %ymm1, %ymm11, %ymm1
|
|
vpxor 0(%rdi), %ymm5, %ymm8
|
|
vpxor 352(%rdi), %ymm4, %ymm9
|
|
vpxor 704(%rdi), %ymm3, %ymm10
|
|
vpxor 256(%rdi), %ymm2, %ymm11
|
|
vpxor 608(%rdi), %ymm1, %ymm12
|
|
vpsllq $44, %ymm9, %ymm14
|
|
vpsllq $43, %ymm10, %ymm15
|
|
vpsllq $21, %ymm11, %ymm7
|
|
vpsllq $14, %ymm12, %ymm6
|
|
vpsrlq $20, %ymm9, %ymm9
|
|
vpsrlq $21, %ymm10, %ymm10
|
|
vpsrlq $43, %ymm11, %ymm11
|
|
vpsrlq $50, %ymm12, %ymm12
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vpbroadcastq 16(%rsi), %ymm8
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vmovdqa %ymm13, 0(%rdi)
|
|
vmovdqa %ymm14, 352(%rdi)
|
|
vmovdqa %ymm15, 704(%rdi)
|
|
vmovdqa %ymm7, 256(%rdi)
|
|
vmovdqa %ymm6, 608(%rdi)
|
|
vpxor 736(%rdi), %ymm2, %ymm8
|
|
vpxor 288(%rdi), %ymm1, %ymm9
|
|
vpxor 480(%rdi), %ymm5, %ymm10
|
|
vpxor 32(%rdi), %ymm4, %ymm11
|
|
vpxor 384(%rdi), %ymm3, %ymm12
|
|
vpsllq $28, %ymm8, %ymm13
|
|
vpsllq $20, %ymm9, %ymm14
|
|
vpsllq $3, %ymm10, %ymm15
|
|
vpsllq $45, %ymm11, %ymm7
|
|
vpsllq $61, %ymm12, %ymm6
|
|
vpsrlq $36, %ymm8, %ymm8
|
|
vpsrlq $44, %ymm9, %ymm9
|
|
vpsrlq $61, %ymm10, %ymm10
|
|
vpsrlq $19, %ymm11, %ymm11
|
|
vpsrlq $3, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 480(%rdi)
|
|
vmovdqa %ymm14, 32(%rdi)
|
|
vmovdqa %ymm15, 384(%rdi)
|
|
vmovdqa %ymm7, 736(%rdi)
|
|
vmovdqa %ymm6, 288(%rdi)
|
|
vpxor 512(%rdi), %ymm4, %ymm8
|
|
vpxor 64(%rdi), %ymm3, %ymm9
|
|
vpxor 416(%rdi), %ymm2, %ymm10
|
|
vpxor 768(%rdi), %ymm1, %ymm11
|
|
vpxor 160(%rdi), %ymm5, %ymm12
|
|
vpsllq $1, %ymm8, %ymm13
|
|
vpsllq $6, %ymm9, %ymm14
|
|
vpsllq $25, %ymm10, %ymm15
|
|
#vpsllq $8, %ymm11, %ymm7
|
|
vpsllq $18, %ymm12, %ymm6
|
|
vpsrlq $63, %ymm8, %ymm8
|
|
vpsrlq $58, %ymm9, %ymm9
|
|
vpsrlq $39, %ymm10, %ymm10
|
|
#vpsrlq $56, %ymm11, %ymm11
|
|
vpsrlq $46, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
#vpor %ymm7, %ymm11, %ymm11
|
|
vpshufb %ymm0, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 160(%rdi)
|
|
vmovdqa %ymm14, 512(%rdi)
|
|
vmovdqa %ymm15, 64(%rdi)
|
|
vmovdqa %ymm7, 416(%rdi)
|
|
vmovdqa %ymm6, 768(%rdi)
|
|
vpxor 448(%rdi), %ymm1, %ymm8
|
|
vpxor 640(%rdi), %ymm5, %ymm9
|
|
vpxor 192(%rdi), %ymm4, %ymm10
|
|
vpxor 544(%rdi), %ymm3, %ymm11
|
|
vpxor 96(%rdi), %ymm2, %ymm12
|
|
vpsllq $27, %ymm8, %ymm13
|
|
vpsllq $36, %ymm9, %ymm14
|
|
vpsllq $10, %ymm10, %ymm15
|
|
vpsllq $15, %ymm11, %ymm7
|
|
#vpsllq $56, %ymm12, %ymm6
|
|
vpsrlq $37, %ymm8, %ymm8
|
|
vpsrlq $28, %ymm9, %ymm9
|
|
vpsrlq $54, %ymm10, %ymm10
|
|
vpsrlq $49, %ymm11, %ymm11
|
|
#vpsrlq $8, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
#vpor %ymm6, %ymm12, %ymm12
|
|
vpshufb rho56(%rip), %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 640(%rdi)
|
|
vmovdqa %ymm14, 192(%rdi)
|
|
vmovdqa %ymm15, 544(%rdi)
|
|
vmovdqa %ymm7, 96(%rdi)
|
|
vmovdqa %ymm6, 448(%rdi)
|
|
vpxor 224(%rdi), %ymm3, %ymm8
|
|
vpxor 576(%rdi), %ymm2, %ymm9
|
|
vpxor 128(%rdi), %ymm1, %ymm10
|
|
vpxor 320(%rdi), %ymm5, %ymm11
|
|
vpxor 672(%rdi), %ymm4, %ymm12
|
|
vpsllq $62, %ymm8, %ymm13
|
|
vpsllq $55, %ymm9, %ymm14
|
|
vpsllq $39, %ymm10, %ymm15
|
|
vpsllq $41, %ymm11, %ymm7
|
|
vpsllq $2, %ymm12, %ymm6
|
|
vpsrlq $2, %ymm8, %ymm8
|
|
vpsrlq $9, %ymm9, %ymm9
|
|
vpsrlq $25, %ymm10, %ymm10
|
|
vpsrlq $23, %ymm11, %ymm11
|
|
vpsrlq $62, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 320(%rdi)
|
|
vmovdqa %ymm14, 672(%rdi)
|
|
vmovdqa %ymm15, 224(%rdi)
|
|
vmovdqa %ymm7, 576(%rdi)
|
|
vmovdqa %ymm6, 128(%rdi)
|
|
vmovdqa 0(%rdi), %ymm8
|
|
vmovdqa 32(%rdi), %ymm9
|
|
vmovdqa 64(%rdi), %ymm10
|
|
vmovdqa 96(%rdi), %ymm11
|
|
vmovdqa 128(%rdi), %ymm12
|
|
vpxor 160(%rdi), %ymm8, %ymm8
|
|
vpxor 192(%rdi), %ymm9, %ymm9
|
|
vpxor 224(%rdi), %ymm10, %ymm10
|
|
vpxor 256(%rdi), %ymm11, %ymm11
|
|
vpxor 288(%rdi), %ymm12, %ymm12
|
|
vpxor 320(%rdi), %ymm8, %ymm8
|
|
vpxor 352(%rdi), %ymm9, %ymm9
|
|
vpxor 384(%rdi), %ymm10, %ymm10
|
|
vpxor 416(%rdi), %ymm11, %ymm11
|
|
vpxor 448(%rdi), %ymm12, %ymm12
|
|
vpxor 480(%rdi), %ymm8, %ymm8
|
|
vpxor 512(%rdi), %ymm9, %ymm9
|
|
vpxor 544(%rdi), %ymm10, %ymm10
|
|
vpxor 576(%rdi), %ymm11, %ymm11
|
|
vpxor 608(%rdi), %ymm12, %ymm12
|
|
vpxor 640(%rdi), %ymm8, %ymm8
|
|
vpxor 672(%rdi), %ymm9, %ymm9
|
|
vpxor 704(%rdi), %ymm10, %ymm10
|
|
vpxor 736(%rdi), %ymm11, %ymm11
|
|
vpxor 768(%rdi), %ymm12, %ymm12
|
|
vpsllq $1, %ymm9, %ymm13
|
|
vpsllq $1, %ymm10, %ymm14
|
|
vpsllq $1, %ymm11, %ymm15
|
|
vpsllq $1, %ymm12, %ymm7
|
|
vpsllq $1, %ymm8, %ymm6
|
|
vpsrlq $63, %ymm9, %ymm5
|
|
vpsrlq $63, %ymm10, %ymm4
|
|
vpsrlq $63, %ymm11, %ymm3
|
|
vpsrlq $63, %ymm12, %ymm2
|
|
vpsrlq $63, %ymm8, %ymm1
|
|
vpor %ymm13, %ymm5, %ymm5
|
|
vpor %ymm14, %ymm4, %ymm4
|
|
vpor %ymm15, %ymm3, %ymm3
|
|
vpor %ymm7, %ymm2, %ymm2
|
|
vpor %ymm6, %ymm1, %ymm1
|
|
vpxor %ymm5, %ymm12, %ymm5
|
|
vpxor %ymm4, %ymm8, %ymm4
|
|
vpxor %ymm3, %ymm9, %ymm3
|
|
vpxor %ymm2, %ymm10, %ymm2
|
|
vpxor %ymm1, %ymm11, %ymm1
|
|
vpxor 0(%rdi), %ymm5, %ymm8
|
|
vpxor 32(%rdi), %ymm4, %ymm9
|
|
vpxor 64(%rdi), %ymm3, %ymm10
|
|
vpxor 96(%rdi), %ymm2, %ymm11
|
|
vpxor 128(%rdi), %ymm1, %ymm12
|
|
vpsllq $44, %ymm9, %ymm14
|
|
vpsllq $43, %ymm10, %ymm15
|
|
vpsllq $21, %ymm11, %ymm7
|
|
vpsllq $14, %ymm12, %ymm6
|
|
vpsrlq $20, %ymm9, %ymm9
|
|
vpsrlq $21, %ymm10, %ymm10
|
|
vpsrlq $43, %ymm11, %ymm11
|
|
vpsrlq $50, %ymm12, %ymm12
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vpbroadcastq 24(%rsi), %ymm8
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vmovdqa %ymm13, 0(%rdi)
|
|
vmovdqa %ymm14, 32(%rdi)
|
|
vmovdqa %ymm15, 64(%rdi)
|
|
vmovdqa %ymm7, 96(%rdi)
|
|
vmovdqa %ymm6, 128(%rdi)
|
|
vpxor 256(%rdi), %ymm2, %ymm8
|
|
vpxor 288(%rdi), %ymm1, %ymm9
|
|
vpxor 160(%rdi), %ymm5, %ymm10
|
|
vpxor 192(%rdi), %ymm4, %ymm11
|
|
vpxor 224(%rdi), %ymm3, %ymm12
|
|
vpsllq $28, %ymm8, %ymm13
|
|
vpsllq $20, %ymm9, %ymm14
|
|
vpsllq $3, %ymm10, %ymm15
|
|
vpsllq $45, %ymm11, %ymm7
|
|
vpsllq $61, %ymm12, %ymm6
|
|
vpsrlq $36, %ymm8, %ymm8
|
|
vpsrlq $44, %ymm9, %ymm9
|
|
vpsrlq $61, %ymm10, %ymm10
|
|
vpsrlq $19, %ymm11, %ymm11
|
|
vpsrlq $3, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 160(%rdi)
|
|
vmovdqa %ymm14, 192(%rdi)
|
|
vmovdqa %ymm15, 224(%rdi)
|
|
vmovdqa %ymm7, 256(%rdi)
|
|
vmovdqa %ymm6, 288(%rdi)
|
|
vpxor 352(%rdi), %ymm4, %ymm8
|
|
vpxor 384(%rdi), %ymm3, %ymm9
|
|
vpxor 416(%rdi), %ymm2, %ymm10
|
|
vpxor 448(%rdi), %ymm1, %ymm11
|
|
vpxor 320(%rdi), %ymm5, %ymm12
|
|
vpsllq $1, %ymm8, %ymm13
|
|
vpsllq $6, %ymm9, %ymm14
|
|
vpsllq $25, %ymm10, %ymm15
|
|
#vpsllq $8, %ymm11, %ymm7
|
|
vpsllq $18, %ymm12, %ymm6
|
|
vpsrlq $63, %ymm8, %ymm8
|
|
vpsrlq $58, %ymm9, %ymm9
|
|
vpsrlq $39, %ymm10, %ymm10
|
|
#vpsrlq $56, %ymm11, %ymm11
|
|
vpsrlq $46, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
#vpor %ymm7, %ymm11, %ymm11
|
|
vpshufb %ymm0, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 320(%rdi)
|
|
vmovdqa %ymm14, 352(%rdi)
|
|
vmovdqa %ymm15, 384(%rdi)
|
|
vmovdqa %ymm7, 416(%rdi)
|
|
vmovdqa %ymm6, 448(%rdi)
|
|
vpxor 608(%rdi), %ymm1, %ymm8
|
|
vpxor 480(%rdi), %ymm5, %ymm9
|
|
vpxor 512(%rdi), %ymm4, %ymm10
|
|
vpxor 544(%rdi), %ymm3, %ymm11
|
|
vpxor 576(%rdi), %ymm2, %ymm12
|
|
vpsllq $27, %ymm8, %ymm13
|
|
vpsllq $36, %ymm9, %ymm14
|
|
vpsllq $10, %ymm10, %ymm15
|
|
vpsllq $15, %ymm11, %ymm7
|
|
#vpsllq $56, %ymm12, %ymm6
|
|
vpsrlq $37, %ymm8, %ymm8
|
|
vpsrlq $28, %ymm9, %ymm9
|
|
vpsrlq $54, %ymm10, %ymm10
|
|
vpsrlq $49, %ymm11, %ymm11
|
|
#vpsrlq $8, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
#vpor %ymm6, %ymm12, %ymm12
|
|
vpshufb rho56(%rip), %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 480(%rdi)
|
|
vmovdqa %ymm14, 512(%rdi)
|
|
vmovdqa %ymm15, 544(%rdi)
|
|
vmovdqa %ymm7, 576(%rdi)
|
|
vmovdqa %ymm6, 608(%rdi)
|
|
vpxor 704(%rdi), %ymm3, %ymm8
|
|
vpxor 736(%rdi), %ymm2, %ymm9
|
|
vpxor 768(%rdi), %ymm1, %ymm10
|
|
vpxor 640(%rdi), %ymm5, %ymm11
|
|
vpxor 672(%rdi), %ymm4, %ymm12
|
|
vpsllq $62, %ymm8, %ymm13
|
|
vpsllq $55, %ymm9, %ymm14
|
|
vpsllq $39, %ymm10, %ymm15
|
|
vpsllq $41, %ymm11, %ymm7
|
|
vpsllq $2, %ymm12, %ymm6
|
|
vpsrlq $2, %ymm8, %ymm8
|
|
vpsrlq $9, %ymm9, %ymm9
|
|
vpsrlq $25, %ymm10, %ymm10
|
|
vpsrlq $23, %ymm11, %ymm11
|
|
vpsrlq $62, %ymm12, %ymm12
|
|
vpor %ymm13, %ymm8, %ymm8
|
|
vpor %ymm14, %ymm9, %ymm9
|
|
vpor %ymm15, %ymm10, %ymm10
|
|
vpor %ymm7, %ymm11, %ymm11
|
|
vpor %ymm6, %ymm12, %ymm12
|
|
vpandn %ymm10, %ymm9, %ymm13
|
|
vpandn %ymm11, %ymm10, %ymm14
|
|
vpandn %ymm12, %ymm11, %ymm15
|
|
vpandn %ymm8, %ymm12, %ymm7
|
|
vpandn %ymm9, %ymm8, %ymm6
|
|
vpxor %ymm8, %ymm13, %ymm13
|
|
vpxor %ymm9, %ymm14, %ymm14
|
|
vpxor %ymm10, %ymm15, %ymm15
|
|
vpxor %ymm11, %ymm7, %ymm7
|
|
vpxor %ymm12, %ymm6, %ymm6
|
|
vmovdqa %ymm13, 640(%rdi)
|
|
vmovdqa %ymm14, 672(%rdi)
|
|
vmovdqa %ymm15, 704(%rdi)
|
|
vmovdqa %ymm7, 736(%rdi)
|
|
vmovdqa %ymm6, 768(%rdi)
|
|
addq $32, %rsi
|
|
subq $1, %rax
|
|
jnz looptop
|
|
ret
|