From c0f477bfa785dfbe2e06bc445fd889065e9ba1ab Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Tue, 5 Nov 2024 12:28:12 +0900 Subject: [PATCH] update all asms --- src/asm/bint-x64-mingw.S | 227 ++++++++++++++++----------------------- src/asm/bint-x64-win.asm | 227 ++++++++++++++++----------------------- 2 files changed, 182 insertions(+), 272 deletions(-) diff --git a/src/asm/bint-x64-mingw.S b/src/asm/bint-x64-mingw.S index 8e3cd1e8..692ae0eb 100644 --- a/src/asm/bint-x64-mingw.S +++ b/src/asm/bint-x64-mingw.S @@ -661,7 +661,7 @@ mov $7, %ecx mov %rdx, %rax vmovdqa64 (%r8), %zmm11 add $64, %r8 -vmovdqa64 %zmm0, %zmm12 +vmovdqa64 %zmm0, %zmm10 vmovdqa64 %zmm1, %zmm0 vmovdqa64 %zmm2, %zmm1 vmovdqa64 %zmm3, %zmm2 @@ -687,7 +687,7 @@ vpmadd52luq 384(%rax), %zmm11, %zmm6 vpmadd52huq 384(%rax), %zmm11, %zmm7 vpmadd52luq 448(%rax), %zmm11, %zmm7 vpmadd52huq 448(%rax), %zmm11, %zmm8 -vpsrlq $52, %zmm12, %zmm11 +vpsrlq $52, %zmm10, %zmm11 vpaddq %zmm11, %zmm0, %zmm0 vpxorq %zmm11, %zmm11, %zmm11 vpmadd52luq (%r9){1to8}, %zmm0, %zmm11 @@ -788,24 +788,6 @@ vmovups 160(%rsp), %xmm15 vzeroupper add $184, %rsp ret -.balign 32 -.L2: -vpmadd52luq (%rax), %zmm11, %zmm0 -vpmadd52huq (%rax), %zmm11, %zmm1 -vpmadd52luq 64(%rax), %zmm11, %zmm1 -vpmadd52huq 64(%rax), %zmm11, %zmm2 -vpmadd52luq 128(%rax), %zmm11, %zmm2 -vpmadd52huq 128(%rax), %zmm11, %zmm3 -vpmadd52luq 192(%rax), %zmm11, %zmm3 -vpmadd52huq 192(%rax), %zmm11, %zmm4 -vpmadd52luq 256(%rax), %zmm11, %zmm4 -vpmadd52huq 256(%rax), %zmm11, %zmm5 -vpmadd52luq 320(%rax), %zmm11, %zmm5 -vpmadd52huq 320(%rax), %zmm11, %zmm6 -vpmadd52luq 384(%rax), %zmm11, %zmm6 -vpmadd52huq 384(%rax), %zmm11, %zmm7 -vpmadd52luq 448(%rax), %zmm11, %zmm7 -vpmadd52huq 448(%rax), %zmm11, %zmm8 ret SIZE(mcl_c5_vmul) .global PRE(mcl_c5_vaddA) @@ -828,7 +810,7 @@ mov $4503599627370495, %rax vpbroadcastq %rax, %zmm16 lea PRE(p)(%rip), %rax mov $2, %r9 -.L3: +.L2: vmovdqa64 (%rdx), %zmm0 vpaddq (%r8), %zmm0, %zmm0 vpsrlq $52, %zmm0, %zmm17 @@ -911,7 +893,7 @@ add $64, %rdx add $64, %r8 add $64, %r10 sub $1, %r9 -jnz .L3 +jnz .L2 vmovups (%rsp), %xmm5 vmovups 16(%rsp), %xmm6 vmovups 32(%rsp), %xmm7 @@ -1132,6 +1114,15 @@ vmovups %xmm12, 112(%rsp) vmovups %xmm13, 128(%rsp) vmovups %xmm14, 144(%rsp) vmovups %xmm15, 160(%rsp) +lea PRE(ap)(%rip), %rax +vmovdqa64 (%rax), %zmm23 +vmovdqa64 64(%rax), %zmm24 +vmovdqa64 128(%rax), %zmm25 +vmovdqa64 192(%rax), %zmm26 +vmovdqa64 256(%rax), %zmm27 +vmovdqa64 320(%rax), %zmm28 +vmovdqa64 384(%rax), %zmm29 +vmovdqa64 448(%rax), %zmm30 mov $4503599627370495, %rax vpbroadcastq %rax, %zmm18 lea PRE(rp)(%rip), %r9 @@ -1206,48 +1197,47 @@ vpxorq %zmm21, %zmm21, %zmm21 vpxorq %zmm22, %zmm22, %zmm22 vpmadd52luq (%r9){1to8}, %zmm0, %zmm21 vpmadd52luq (%r9){1to8}, %zmm1, %zmm22 -lea PRE(apA)(%rip), %rax -vpmadd52luq (%rax), %zmm21, %zmm0 -vpmadd52luq 64(%rax), %zmm22, %zmm1 -vpmadd52huq (%rax), %zmm21, %zmm2 -vpmadd52huq 64(%rax), %zmm22, %zmm3 -vpmadd52luq 128(%rax), %zmm21, %zmm2 -vpmadd52luq 192(%rax), %zmm22, %zmm3 -vpmadd52huq 128(%rax), %zmm21, %zmm4 -vpmadd52huq 192(%rax), %zmm22, %zmm5 -vpmadd52luq 256(%rax), %zmm21, %zmm4 -vpmadd52luq 320(%rax), %zmm22, %zmm5 -vpmadd52huq 256(%rax), %zmm21, %zmm6 -vpmadd52huq 320(%rax), %zmm22, %zmm7 -vpmadd52luq 384(%rax), %zmm21, %zmm6 -vpmadd52luq 448(%rax), %zmm22, %zmm7 -vpmadd52huq 384(%rax), %zmm21, %zmm8 -vpmadd52huq 448(%rax), %zmm22, %zmm9 -vpmadd52luq 512(%rax), %zmm21, %zmm8 -vpmadd52luq 576(%rax), %zmm22, %zmm9 -vpmadd52huq 512(%rax), %zmm21, %zmm10 -vpmadd52huq 576(%rax), %zmm22, %zmm11 -vpmadd52luq 640(%rax), %zmm21, %zmm10 -vpmadd52luq 704(%rax), %zmm22, %zmm11 -vpmadd52huq 640(%rax), %zmm21, %zmm12 -vpmadd52huq 704(%rax), %zmm22, %zmm13 -vpmadd52luq 768(%rax), %zmm21, %zmm12 -vpmadd52luq 832(%rax), %zmm22, %zmm13 -vpmadd52huq 768(%rax), %zmm21, %zmm14 -vpmadd52huq 832(%rax), %zmm22, %zmm15 -vpmadd52luq 896(%rax), %zmm21, %zmm14 -vpmadd52luq 960(%rax), %zmm22, %zmm15 -vpmadd52huq 896(%rax), %zmm21, %zmm16 -vpmadd52huq 960(%rax), %zmm22, %zmm17 +vpmadd52luq %zmm23, %zmm21, %zmm0 +vpmadd52luq %zmm23, %zmm22, %zmm1 +vpmadd52huq %zmm23, %zmm21, %zmm2 +vpmadd52huq %zmm23, %zmm22, %zmm3 +vpmadd52luq %zmm24, %zmm21, %zmm2 +vpmadd52luq %zmm24, %zmm22, %zmm3 +vpmadd52huq %zmm24, %zmm21, %zmm4 +vpmadd52huq %zmm24, %zmm22, %zmm5 +vpmadd52luq %zmm25, %zmm21, %zmm4 +vpmadd52luq %zmm25, %zmm22, %zmm5 +vpmadd52huq %zmm25, %zmm21, %zmm6 +vpmadd52huq %zmm25, %zmm22, %zmm7 +vpmadd52luq %zmm26, %zmm21, %zmm6 +vpmadd52luq %zmm26, %zmm22, %zmm7 +vpmadd52huq %zmm26, %zmm21, %zmm8 +vpmadd52huq %zmm26, %zmm22, %zmm9 +vpmadd52luq %zmm27, %zmm21, %zmm8 +vpmadd52luq %zmm27, %zmm22, %zmm9 +vpmadd52huq %zmm27, %zmm21, %zmm10 +vpmadd52huq %zmm27, %zmm22, %zmm11 +vpmadd52luq %zmm28, %zmm21, %zmm10 +vpmadd52luq %zmm28, %zmm22, %zmm11 +vpmadd52huq %zmm28, %zmm21, %zmm12 +vpmadd52huq %zmm28, %zmm22, %zmm13 +vpmadd52luq %zmm29, %zmm21, %zmm12 +vpmadd52luq %zmm29, %zmm22, %zmm13 +vpmadd52huq %zmm29, %zmm21, %zmm14 +vpmadd52huq %zmm29, %zmm22, %zmm15 +vpmadd52luq %zmm30, %zmm21, %zmm14 +vpmadd52luq %zmm30, %zmm22, %zmm15 +vpmadd52huq %zmm30, %zmm21, %zmm16 +vpmadd52huq %zmm30, %zmm22, %zmm17 mov $7, %r10 .balign 32 -.L4: +.L3: mov %rdx, %rax vmovdqa64 (%r8), %zmm21 vmovdqa64 64(%r8), %zmm22 add $128, %r8 -vmovdqa64 %zmm0, %zmm23 -vmovdqa64 %zmm1, %zmm24 +vmovdqa64 %zmm0, %zmm19 +vmovdqa64 %zmm1, %zmm20 vmovdqa64 %zmm2, %zmm0 vmovdqa64 %zmm3, %zmm1 vmovdqa64 %zmm4, %zmm2 @@ -1298,49 +1288,48 @@ vpmadd52luq 896(%rax), %zmm21, %zmm14 vpmadd52luq 960(%rax), %zmm22, %zmm15 vpmadd52huq 896(%rax), %zmm21, %zmm16 vpmadd52huq 960(%rax), %zmm22, %zmm17 -vpsrlq $52, %zmm23, %zmm21 -vpsrlq $52, %zmm24, %zmm22 +vpsrlq $52, %zmm19, %zmm21 +vpsrlq $52, %zmm20, %zmm22 vpaddq %zmm21, %zmm0, %zmm0 vpaddq %zmm22, %zmm1, %zmm1 vpxorq %zmm21, %zmm21, %zmm21 vpxorq %zmm22, %zmm22, %zmm22 vpmadd52luq (%r9){1to8}, %zmm0, %zmm21 vpmadd52luq (%r9){1to8}, %zmm1, %zmm22 -lea PRE(apA)(%rip), %rax -vpmadd52luq (%rax), %zmm21, %zmm0 -vpmadd52luq 64(%rax), %zmm22, %zmm1 -vpmadd52huq (%rax), %zmm21, %zmm2 -vpmadd52huq 64(%rax), %zmm22, %zmm3 -vpmadd52luq 128(%rax), %zmm21, %zmm2 -vpmadd52luq 192(%rax), %zmm22, %zmm3 -vpmadd52huq 128(%rax), %zmm21, %zmm4 -vpmadd52huq 192(%rax), %zmm22, %zmm5 -vpmadd52luq 256(%rax), %zmm21, %zmm4 -vpmadd52luq 320(%rax), %zmm22, %zmm5 -vpmadd52huq 256(%rax), %zmm21, %zmm6 -vpmadd52huq 320(%rax), %zmm22, %zmm7 -vpmadd52luq 384(%rax), %zmm21, %zmm6 -vpmadd52luq 448(%rax), %zmm22, %zmm7 -vpmadd52huq 384(%rax), %zmm21, %zmm8 -vpmadd52huq 448(%rax), %zmm22, %zmm9 -vpmadd52luq 512(%rax), %zmm21, %zmm8 -vpmadd52luq 576(%rax), %zmm22, %zmm9 -vpmadd52huq 512(%rax), %zmm21, %zmm10 -vpmadd52huq 576(%rax), %zmm22, %zmm11 -vpmadd52luq 640(%rax), %zmm21, %zmm10 -vpmadd52luq 704(%rax), %zmm22, %zmm11 -vpmadd52huq 640(%rax), %zmm21, %zmm12 -vpmadd52huq 704(%rax), %zmm22, %zmm13 -vpmadd52luq 768(%rax), %zmm21, %zmm12 -vpmadd52luq 832(%rax), %zmm22, %zmm13 -vpmadd52huq 768(%rax), %zmm21, %zmm14 -vpmadd52huq 832(%rax), %zmm22, %zmm15 -vpmadd52luq 896(%rax), %zmm21, %zmm14 -vpmadd52luq 960(%rax), %zmm22, %zmm15 -vpmadd52huq 896(%rax), %zmm21, %zmm16 -vpmadd52huq 960(%rax), %zmm22, %zmm17 +vpmadd52luq %zmm23, %zmm21, %zmm0 +vpmadd52luq %zmm23, %zmm22, %zmm1 +vpmadd52huq %zmm23, %zmm21, %zmm2 +vpmadd52huq %zmm23, %zmm22, %zmm3 +vpmadd52luq %zmm24, %zmm21, %zmm2 +vpmadd52luq %zmm24, %zmm22, %zmm3 +vpmadd52huq %zmm24, %zmm21, %zmm4 +vpmadd52huq %zmm24, %zmm22, %zmm5 +vpmadd52luq %zmm25, %zmm21, %zmm4 +vpmadd52luq %zmm25, %zmm22, %zmm5 +vpmadd52huq %zmm25, %zmm21, %zmm6 +vpmadd52huq %zmm25, %zmm22, %zmm7 +vpmadd52luq %zmm26, %zmm21, %zmm6 +vpmadd52luq %zmm26, %zmm22, %zmm7 +vpmadd52huq %zmm26, %zmm21, %zmm8 +vpmadd52huq %zmm26, %zmm22, %zmm9 +vpmadd52luq %zmm27, %zmm21, %zmm8 +vpmadd52luq %zmm27, %zmm22, %zmm9 +vpmadd52huq %zmm27, %zmm21, %zmm10 +vpmadd52huq %zmm27, %zmm22, %zmm11 +vpmadd52luq %zmm28, %zmm21, %zmm10 +vpmadd52luq %zmm28, %zmm22, %zmm11 +vpmadd52huq %zmm28, %zmm21, %zmm12 +vpmadd52huq %zmm28, %zmm22, %zmm13 +vpmadd52luq %zmm29, %zmm21, %zmm12 +vpmadd52luq %zmm29, %zmm22, %zmm13 +vpmadd52huq %zmm29, %zmm21, %zmm14 +vpmadd52huq %zmm29, %zmm22, %zmm15 +vpmadd52luq %zmm30, %zmm21, %zmm14 +vpmadd52luq %zmm30, %zmm22, %zmm15 +vpmadd52huq %zmm30, %zmm21, %zmm16 +vpmadd52huq %zmm30, %zmm22, %zmm17 dec %r10 -jnz .L4 +jnz .L3 vpsrlq $52, %zmm0, %zmm21 vpsrlq $52, %zmm1, %zmm22 vpaddq %zmm21, %zmm2, %zmm2 @@ -1391,27 +1380,27 @@ vpandq %zmm18, %zmm14, %zmm14 vpandq %zmm18, %zmm15, %zmm15 lea PRE(p)(%rip), %rax vpxorq %zmm19, %zmm19, %zmm19 -vpsubq (%rax){1to8}, %zmm2, %zmm23 +vpsubq %zmm23, %zmm2, %zmm23 vpsrlq $63, %zmm23, %zmm21 -vpsubq 8(%rax){1to8}, %zmm4, %zmm24 +vpsubq %zmm24, %zmm4, %zmm24 vpsubq %zmm21, %zmm24, %zmm24 vpsrlq $63, %zmm24, %zmm21 -vpsubq 16(%rax){1to8}, %zmm6, %zmm25 +vpsubq %zmm25, %zmm6, %zmm25 vpsubq %zmm21, %zmm25, %zmm25 vpsrlq $63, %zmm25, %zmm21 -vpsubq 24(%rax){1to8}, %zmm8, %zmm26 +vpsubq %zmm26, %zmm8, %zmm26 vpsubq %zmm21, %zmm26, %zmm26 vpsrlq $63, %zmm26, %zmm21 -vpsubq 32(%rax){1to8}, %zmm10, %zmm27 +vpsubq %zmm27, %zmm10, %zmm27 vpsubq %zmm21, %zmm27, %zmm27 vpsrlq $63, %zmm27, %zmm21 -vpsubq 40(%rax){1to8}, %zmm12, %zmm28 +vpsubq %zmm28, %zmm12, %zmm28 vpsubq %zmm21, %zmm28, %zmm28 vpsrlq $63, %zmm28, %zmm21 -vpsubq 48(%rax){1to8}, %zmm14, %zmm29 +vpsubq %zmm29, %zmm14, %zmm29 vpsubq %zmm21, %zmm29, %zmm29 vpsrlq $63, %zmm29, %zmm21 -vpsubq 56(%rax){1to8}, %zmm16, %zmm30 +vpsubq %zmm30, %zmm16, %zmm30 vpsubq %zmm21, %zmm30, %zmm30 vpsrlq $63, %zmm30, %zmm21 vpcmpeqq %zmm19, %zmm21, %k1 @@ -1493,40 +1482,6 @@ vmovups 160(%rsp), %xmm15 vzeroupper add $184, %rsp ret -.balign 32 -.L5: -vpmadd52luq (%rax), %zmm21, %zmm0 -vpmadd52luq 64(%rax), %zmm22, %zmm1 -vpmadd52huq (%rax), %zmm21, %zmm2 -vpmadd52huq 64(%rax), %zmm22, %zmm3 -vpmadd52luq 128(%rax), %zmm21, %zmm2 -vpmadd52luq 192(%rax), %zmm22, %zmm3 -vpmadd52huq 128(%rax), %zmm21, %zmm4 -vpmadd52huq 192(%rax), %zmm22, %zmm5 -vpmadd52luq 256(%rax), %zmm21, %zmm4 -vpmadd52luq 320(%rax), %zmm22, %zmm5 -vpmadd52huq 256(%rax), %zmm21, %zmm6 -vpmadd52huq 320(%rax), %zmm22, %zmm7 -vpmadd52luq 384(%rax), %zmm21, %zmm6 -vpmadd52luq 448(%rax), %zmm22, %zmm7 -vpmadd52huq 384(%rax), %zmm21, %zmm8 -vpmadd52huq 448(%rax), %zmm22, %zmm9 -vpmadd52luq 512(%rax), %zmm21, %zmm8 -vpmadd52luq 576(%rax), %zmm22, %zmm9 -vpmadd52huq 512(%rax), %zmm21, %zmm10 -vpmadd52huq 576(%rax), %zmm22, %zmm11 -vpmadd52luq 640(%rax), %zmm21, %zmm10 -vpmadd52luq 704(%rax), %zmm22, %zmm11 -vpmadd52huq 640(%rax), %zmm21, %zmm12 -vpmadd52huq 704(%rax), %zmm22, %zmm13 -vpmadd52luq 768(%rax), %zmm21, %zmm12 -vpmadd52luq 832(%rax), %zmm22, %zmm13 -vpmadd52huq 768(%rax), %zmm21, %zmm14 -vpmadd52huq 832(%rax), %zmm22, %zmm15 -vpmadd52luq 896(%rax), %zmm21, %zmm14 -vpmadd52luq 960(%rax), %zmm22, %zmm15 -vpmadd52huq 896(%rax), %zmm21, %zmm16 -vpmadd52huq 960(%rax), %zmm22, %zmm17 ret SIZE(mcl_c5_vmulA) .balign 16 diff --git a/src/asm/bint-x64-win.asm b/src/asm/bint-x64-win.asm index e735dafc..d56228c5 100644 --- a/src/asm/bint-x64-win.asm +++ b/src/asm/bint-x64-win.asm @@ -634,7 +634,7 @@ align 32 mov rax, rdx vmovdqa64 zmm11, zmmword ptr [r8] add r8, 64 -vmovdqa64 zmm12, zmm0 +vmovdqa64 zmm10, zmm0 vmovdqa64 zmm0, zmm1 vmovdqa64 zmm1, zmm2 vmovdqa64 zmm2, zmm3 @@ -660,7 +660,7 @@ vpmadd52luq zmm6, zmm11, zmmword ptr [rax+384] vpmadd52huq zmm7, zmm11, zmmword ptr [rax+384] vpmadd52luq zmm7, zmm11, zmmword ptr [rax+448] vpmadd52huq zmm8, zmm11, zmmword ptr [rax+448] -vpsrlq zmm11, zmm12, 52 +vpsrlq zmm11, zmm10, 52 vpaddq zmm0, zmm0, zmm11 vpxorq zmm11, zmm11, zmm11 vpmadd52luq zmm11, zmm0, qword bcst [r9] @@ -761,24 +761,6 @@ vmovups xmm15, xmmword ptr [rsp+160] vzeroupper add rsp, 184 ret -align 32 -@L2: -vpmadd52luq zmm0, zmm11, zmmword ptr [rax] -vpmadd52huq zmm1, zmm11, zmmword ptr [rax] -vpmadd52luq zmm1, zmm11, zmmword ptr [rax+64] -vpmadd52huq zmm2, zmm11, zmmword ptr [rax+64] -vpmadd52luq zmm2, zmm11, zmmword ptr [rax+128] -vpmadd52huq zmm3, zmm11, zmmword ptr [rax+128] -vpmadd52luq zmm3, zmm11, zmmword ptr [rax+192] -vpmadd52huq zmm4, zmm11, zmmword ptr [rax+192] -vpmadd52luq zmm4, zmm11, zmmword ptr [rax+256] -vpmadd52huq zmm5, zmm11, zmmword ptr [rax+256] -vpmadd52luq zmm5, zmm11, zmmword ptr [rax+320] -vpmadd52huq zmm6, zmm11, zmmword ptr [rax+320] -vpmadd52luq zmm6, zmm11, zmmword ptr [rax+384] -vpmadd52huq zmm7, zmm11, zmmword ptr [rax+384] -vpmadd52luq zmm7, zmm11, zmmword ptr [rax+448] -vpmadd52huq zmm8, zmm11, zmmword ptr [rax+448] ret mcl_c5_vmul endp mcl_c5_vaddA proc export @@ -799,7 +781,7 @@ mov rax, 4503599627370495 vpbroadcastq zmm16, rax lea rax, p mov r9, 2 -@L3: +@L2: vmovdqa64 zmm0, zmmword ptr [rdx] vpaddq zmm0, zmm0, zmmword ptr [r8] vpsrlq zmm17, zmm0, 52 @@ -882,7 +864,7 @@ add rdx, 64 add r8, 64 add r10, 64 sub r9, 1 -jnz @L3 +jnz @L2 vmovups xmm5, xmmword ptr [rsp] vmovups xmm6, xmmword ptr [rsp+16] vmovups xmm7, xmmword ptr [rsp+32] @@ -1099,6 +1081,15 @@ vmovups xmmword ptr [rsp+112], xmm12 vmovups xmmword ptr [rsp+128], xmm13 vmovups xmmword ptr [rsp+144], xmm14 vmovups xmmword ptr [rsp+160], xmm15 +lea rax, ap +vmovdqa64 zmm23, zmmword ptr [rax] +vmovdqa64 zmm24, zmmword ptr [rax+64] +vmovdqa64 zmm25, zmmword ptr [rax+128] +vmovdqa64 zmm26, zmmword ptr [rax+192] +vmovdqa64 zmm27, zmmword ptr [rax+256] +vmovdqa64 zmm28, zmmword ptr [rax+320] +vmovdqa64 zmm29, zmmword ptr [rax+384] +vmovdqa64 zmm30, zmmword ptr [rax+448] mov rax, 4503599627370495 vpbroadcastq zmm18, rax lea r9, rp @@ -1173,48 +1164,47 @@ vpxorq zmm21, zmm21, zmm21 vpxorq zmm22, zmm22, zmm22 vpmadd52luq zmm21, zmm0, qword bcst [r9] vpmadd52luq zmm22, zmm1, qword bcst [r9] -lea rax, apA -vpmadd52luq zmm0, zmm21, zmmword ptr [rax] -vpmadd52luq zmm1, zmm22, zmmword ptr [rax+64] -vpmadd52huq zmm2, zmm21, zmmword ptr [rax] -vpmadd52huq zmm3, zmm22, zmmword ptr [rax+64] -vpmadd52luq zmm2, zmm21, zmmword ptr [rax+128] -vpmadd52luq zmm3, zmm22, zmmword ptr [rax+192] -vpmadd52huq zmm4, zmm21, zmmword ptr [rax+128] -vpmadd52huq zmm5, zmm22, zmmword ptr [rax+192] -vpmadd52luq zmm4, zmm21, zmmword ptr [rax+256] -vpmadd52luq zmm5, zmm22, zmmword ptr [rax+320] -vpmadd52huq zmm6, zmm21, zmmword ptr [rax+256] -vpmadd52huq zmm7, zmm22, zmmword ptr [rax+320] -vpmadd52luq zmm6, zmm21, zmmword ptr [rax+384] -vpmadd52luq zmm7, zmm22, zmmword ptr [rax+448] -vpmadd52huq zmm8, zmm21, zmmword ptr [rax+384] -vpmadd52huq zmm9, zmm22, zmmword ptr [rax+448] -vpmadd52luq zmm8, zmm21, zmmword ptr [rax+512] -vpmadd52luq zmm9, zmm22, zmmword ptr [rax+576] -vpmadd52huq zmm10, zmm21, zmmword ptr [rax+512] -vpmadd52huq zmm11, zmm22, zmmword ptr [rax+576] -vpmadd52luq zmm10, zmm21, zmmword ptr [rax+640] -vpmadd52luq zmm11, zmm22, zmmword ptr [rax+704] -vpmadd52huq zmm12, zmm21, zmmword ptr [rax+640] -vpmadd52huq zmm13, zmm22, zmmword ptr [rax+704] -vpmadd52luq zmm12, zmm21, zmmword ptr [rax+768] -vpmadd52luq zmm13, zmm22, zmmword ptr [rax+832] -vpmadd52huq zmm14, zmm21, zmmword ptr [rax+768] -vpmadd52huq zmm15, zmm22, zmmword ptr [rax+832] -vpmadd52luq zmm14, zmm21, zmmword ptr [rax+896] -vpmadd52luq zmm15, zmm22, zmmword ptr [rax+960] -vpmadd52huq zmm16, zmm21, zmmword ptr [rax+896] -vpmadd52huq zmm17, zmm22, zmmword ptr [rax+960] +vpmadd52luq zmm0, zmm21, zmm23 +vpmadd52luq zmm1, zmm22, zmm23 +vpmadd52huq zmm2, zmm21, zmm23 +vpmadd52huq zmm3, zmm22, zmm23 +vpmadd52luq zmm2, zmm21, zmm24 +vpmadd52luq zmm3, zmm22, zmm24 +vpmadd52huq zmm4, zmm21, zmm24 +vpmadd52huq zmm5, zmm22, zmm24 +vpmadd52luq zmm4, zmm21, zmm25 +vpmadd52luq zmm5, zmm22, zmm25 +vpmadd52huq zmm6, zmm21, zmm25 +vpmadd52huq zmm7, zmm22, zmm25 +vpmadd52luq zmm6, zmm21, zmm26 +vpmadd52luq zmm7, zmm22, zmm26 +vpmadd52huq zmm8, zmm21, zmm26 +vpmadd52huq zmm9, zmm22, zmm26 +vpmadd52luq zmm8, zmm21, zmm27 +vpmadd52luq zmm9, zmm22, zmm27 +vpmadd52huq zmm10, zmm21, zmm27 +vpmadd52huq zmm11, zmm22, zmm27 +vpmadd52luq zmm10, zmm21, zmm28 +vpmadd52luq zmm11, zmm22, zmm28 +vpmadd52huq zmm12, zmm21, zmm28 +vpmadd52huq zmm13, zmm22, zmm28 +vpmadd52luq zmm12, zmm21, zmm29 +vpmadd52luq zmm13, zmm22, zmm29 +vpmadd52huq zmm14, zmm21, zmm29 +vpmadd52huq zmm15, zmm22, zmm29 +vpmadd52luq zmm14, zmm21, zmm30 +vpmadd52luq zmm15, zmm22, zmm30 +vpmadd52huq zmm16, zmm21, zmm30 +vpmadd52huq zmm17, zmm22, zmm30 mov r10, 7 align 32 -@L4: +@L3: mov rax, rdx vmovdqa64 zmm21, zmmword ptr [r8] vmovdqa64 zmm22, zmmword ptr [r8+64] add r8, 128 -vmovdqa64 zmm23, zmm0 -vmovdqa64 zmm24, zmm1 +vmovdqa64 zmm19, zmm0 +vmovdqa64 zmm20, zmm1 vmovdqa64 zmm0, zmm2 vmovdqa64 zmm1, zmm3 vmovdqa64 zmm2, zmm4 @@ -1265,49 +1255,48 @@ vpmadd52luq zmm14, zmm21, zmmword ptr [rax+896] vpmadd52luq zmm15, zmm22, zmmword ptr [rax+960] vpmadd52huq zmm16, zmm21, zmmword ptr [rax+896] vpmadd52huq zmm17, zmm22, zmmword ptr [rax+960] -vpsrlq zmm21, zmm23, 52 -vpsrlq zmm22, zmm24, 52 +vpsrlq zmm21, zmm19, 52 +vpsrlq zmm22, zmm20, 52 vpaddq zmm0, zmm0, zmm21 vpaddq zmm1, zmm1, zmm22 vpxorq zmm21, zmm21, zmm21 vpxorq zmm22, zmm22, zmm22 vpmadd52luq zmm21, zmm0, qword bcst [r9] vpmadd52luq zmm22, zmm1, qword bcst [r9] -lea rax, apA -vpmadd52luq zmm0, zmm21, zmmword ptr [rax] -vpmadd52luq zmm1, zmm22, zmmword ptr [rax+64] -vpmadd52huq zmm2, zmm21, zmmword ptr [rax] -vpmadd52huq zmm3, zmm22, zmmword ptr [rax+64] -vpmadd52luq zmm2, zmm21, zmmword ptr [rax+128] -vpmadd52luq zmm3, zmm22, zmmword ptr [rax+192] -vpmadd52huq zmm4, zmm21, zmmword ptr [rax+128] -vpmadd52huq zmm5, zmm22, zmmword ptr [rax+192] -vpmadd52luq zmm4, zmm21, zmmword ptr [rax+256] -vpmadd52luq zmm5, zmm22, zmmword ptr [rax+320] -vpmadd52huq zmm6, zmm21, zmmword ptr [rax+256] -vpmadd52huq zmm7, zmm22, zmmword ptr [rax+320] -vpmadd52luq zmm6, zmm21, zmmword ptr [rax+384] -vpmadd52luq zmm7, zmm22, zmmword ptr [rax+448] -vpmadd52huq zmm8, zmm21, zmmword ptr [rax+384] -vpmadd52huq zmm9, zmm22, zmmword ptr [rax+448] -vpmadd52luq zmm8, zmm21, zmmword ptr [rax+512] -vpmadd52luq zmm9, zmm22, zmmword ptr [rax+576] -vpmadd52huq zmm10, zmm21, zmmword ptr [rax+512] -vpmadd52huq zmm11, zmm22, zmmword ptr [rax+576] -vpmadd52luq zmm10, zmm21, zmmword ptr [rax+640] -vpmadd52luq zmm11, zmm22, zmmword ptr [rax+704] -vpmadd52huq zmm12, zmm21, zmmword ptr [rax+640] -vpmadd52huq zmm13, zmm22, zmmword ptr [rax+704] -vpmadd52luq zmm12, zmm21, zmmword ptr [rax+768] -vpmadd52luq zmm13, zmm22, zmmword ptr [rax+832] -vpmadd52huq zmm14, zmm21, zmmword ptr [rax+768] -vpmadd52huq zmm15, zmm22, zmmword ptr [rax+832] -vpmadd52luq zmm14, zmm21, zmmword ptr [rax+896] -vpmadd52luq zmm15, zmm22, zmmword ptr [rax+960] -vpmadd52huq zmm16, zmm21, zmmword ptr [rax+896] -vpmadd52huq zmm17, zmm22, zmmword ptr [rax+960] +vpmadd52luq zmm0, zmm21, zmm23 +vpmadd52luq zmm1, zmm22, zmm23 +vpmadd52huq zmm2, zmm21, zmm23 +vpmadd52huq zmm3, zmm22, zmm23 +vpmadd52luq zmm2, zmm21, zmm24 +vpmadd52luq zmm3, zmm22, zmm24 +vpmadd52huq zmm4, zmm21, zmm24 +vpmadd52huq zmm5, zmm22, zmm24 +vpmadd52luq zmm4, zmm21, zmm25 +vpmadd52luq zmm5, zmm22, zmm25 +vpmadd52huq zmm6, zmm21, zmm25 +vpmadd52huq zmm7, zmm22, zmm25 +vpmadd52luq zmm6, zmm21, zmm26 +vpmadd52luq zmm7, zmm22, zmm26 +vpmadd52huq zmm8, zmm21, zmm26 +vpmadd52huq zmm9, zmm22, zmm26 +vpmadd52luq zmm8, zmm21, zmm27 +vpmadd52luq zmm9, zmm22, zmm27 +vpmadd52huq zmm10, zmm21, zmm27 +vpmadd52huq zmm11, zmm22, zmm27 +vpmadd52luq zmm10, zmm21, zmm28 +vpmadd52luq zmm11, zmm22, zmm28 +vpmadd52huq zmm12, zmm21, zmm28 +vpmadd52huq zmm13, zmm22, zmm28 +vpmadd52luq zmm12, zmm21, zmm29 +vpmadd52luq zmm13, zmm22, zmm29 +vpmadd52huq zmm14, zmm21, zmm29 +vpmadd52huq zmm15, zmm22, zmm29 +vpmadd52luq zmm14, zmm21, zmm30 +vpmadd52luq zmm15, zmm22, zmm30 +vpmadd52huq zmm16, zmm21, zmm30 +vpmadd52huq zmm17, zmm22, zmm30 dec r10 -jnz @L4 +jnz @L3 vpsrlq zmm21, zmm0, 52 vpsrlq zmm22, zmm1, 52 vpaddq zmm2, zmm2, zmm21 @@ -1358,27 +1347,27 @@ vpandq zmm14, zmm14, zmm18 vpandq zmm15, zmm15, zmm18 lea rax, p vpxorq zmm19, zmm19, zmm19 -vpsubq zmm23, zmm2, qword bcst [rax] +vpsubq zmm23, zmm2, zmm23 vpsrlq zmm21, zmm23, 63 -vpsubq zmm24, zmm4, qword bcst [rax+8] +vpsubq zmm24, zmm4, zmm24 vpsubq zmm24, zmm24, zmm21 vpsrlq zmm21, zmm24, 63 -vpsubq zmm25, zmm6, qword bcst [rax+16] +vpsubq zmm25, zmm6, zmm25 vpsubq zmm25, zmm25, zmm21 vpsrlq zmm21, zmm25, 63 -vpsubq zmm26, zmm8, qword bcst [rax+24] +vpsubq zmm26, zmm8, zmm26 vpsubq zmm26, zmm26, zmm21 vpsrlq zmm21, zmm26, 63 -vpsubq zmm27, zmm10, qword bcst [rax+32] +vpsubq zmm27, zmm10, zmm27 vpsubq zmm27, zmm27, zmm21 vpsrlq zmm21, zmm27, 63 -vpsubq zmm28, zmm12, qword bcst [rax+40] +vpsubq zmm28, zmm12, zmm28 vpsubq zmm28, zmm28, zmm21 vpsrlq zmm21, zmm28, 63 -vpsubq zmm29, zmm14, qword bcst [rax+48] +vpsubq zmm29, zmm14, zmm29 vpsubq zmm29, zmm29, zmm21 vpsrlq zmm21, zmm29, 63 -vpsubq zmm30, zmm16, qword bcst [rax+56] +vpsubq zmm30, zmm16, zmm30 vpsubq zmm30, zmm30, zmm21 vpsrlq zmm21, zmm30, 63 vpcmpeqq k1, zmm21, zmm19 @@ -1460,40 +1449,6 @@ vmovups xmm15, xmmword ptr [rsp+160] vzeroupper add rsp, 184 ret -align 32 -@L5: -vpmadd52luq zmm0, zmm21, zmmword ptr [rax] -vpmadd52luq zmm1, zmm22, zmmword ptr [rax+64] -vpmadd52huq zmm2, zmm21, zmmword ptr [rax] -vpmadd52huq zmm3, zmm22, zmmword ptr [rax+64] -vpmadd52luq zmm2, zmm21, zmmword ptr [rax+128] -vpmadd52luq zmm3, zmm22, zmmword ptr [rax+192] -vpmadd52huq zmm4, zmm21, zmmword ptr [rax+128] -vpmadd52huq zmm5, zmm22, zmmword ptr [rax+192] -vpmadd52luq zmm4, zmm21, zmmword ptr [rax+256] -vpmadd52luq zmm5, zmm22, zmmword ptr [rax+320] -vpmadd52huq zmm6, zmm21, zmmword ptr [rax+256] -vpmadd52huq zmm7, zmm22, zmmword ptr [rax+320] -vpmadd52luq zmm6, zmm21, zmmword ptr [rax+384] -vpmadd52luq zmm7, zmm22, zmmword ptr [rax+448] -vpmadd52huq zmm8, zmm21, zmmword ptr [rax+384] -vpmadd52huq zmm9, zmm22, zmmword ptr [rax+448] -vpmadd52luq zmm8, zmm21, zmmword ptr [rax+512] -vpmadd52luq zmm9, zmm22, zmmword ptr [rax+576] -vpmadd52huq zmm10, zmm21, zmmword ptr [rax+512] -vpmadd52huq zmm11, zmm22, zmmword ptr [rax+576] -vpmadd52luq zmm10, zmm21, zmmword ptr [rax+640] -vpmadd52luq zmm11, zmm22, zmmword ptr [rax+704] -vpmadd52huq zmm12, zmm21, zmmword ptr [rax+640] -vpmadd52huq zmm13, zmm22, zmmword ptr [rax+704] -vpmadd52luq zmm12, zmm21, zmmword ptr [rax+768] -vpmadd52luq zmm13, zmm22, zmmword ptr [rax+832] -vpmadd52huq zmm14, zmm21, zmmword ptr [rax+768] -vpmadd52huq zmm15, zmm22, zmmword ptr [rax+832] -vpmadd52luq zmm14, zmm21, zmmword ptr [rax+896] -vpmadd52luq zmm15, zmm22, zmmword ptr [rax+960] -vpmadd52huq zmm16, zmm21, zmmword ptr [rax+896] -vpmadd52huq zmm17, zmm22, zmmword ptr [rax+960] ret mcl_c5_vmulA endp align 16