diff options
| author | 2026-02-22 11:52:44 +0800 | |
|---|---|---|
| committer | 2026-02-22 11:52:44 +0800 | |
| commit | 0bb3530892f42739f04d08e603cc7d7b871df660 (patch) | |
| tree | 37b03ce4c899afa2e5c3fee26c03767ea958f23a | |
| parent | go.mod: Add x/sys (diff) | |
| signature | No signature | |
adler32: Use reasonable label names
| -rw-r--r-- | internal/adler32/adler32_avx2.s | 68 | ||||
| -rw-r--r-- | internal/adler32/adler32_neon.s | 34 | ||||
| -rw-r--r-- | internal/adler32/adler32_sse3.s | 42 |
3 files changed, 72 insertions, 72 deletions
diff --git a/internal/adler32/adler32_avx2.s b/internal/adler32/adler32_avx2.s index 60879fcc..3ba02218 100644 --- a/internal/adler32/adler32_avx2.s +++ b/internal/adler32/adler32_avx2.s @@ -23,10 +23,10 @@ TEXT ·adler32_avx2(SB), NOSPLIT, $0-36 MOVQ buf_len+16(FP), DX MOVQ buf_cap+24(FP), CX WORD $0x8548; BYTE $0xf6 // TESTQ SI, SI // test rsi, rsi - JE LBB0_1 // <-- // je .LBB0_1 + JE return_one // <-- // je .return_one WORD $0xf889 // MOVL DI, AX // mov eax, edi WORD $0x8548; BYTE $0xd2 // TESTQ DX, DX // test rdx, rdx - JE LBB0_2 // <-- // je .LBB0_2 + JE return_current // <-- // je .return_current NOP // (skipped) // push rbp NOP // (skipped) // mov rbp, rsp NOP // (skipped) // and rsp, -8 @@ -34,18 +34,18 @@ TEXT ·adler32_avx2(SB), NOSPLIT, $0-36 WORD $0xe9c1; BYTE $0x10 // SHRL $0x10, CX // shr ecx, 16 WORD $0xb70f; BYTE $0xc0 // MOVZX AX, AX // movzx eax, ax CMPQ DX, $0x20 // <-- // cmp rdx, 32 - JB LBB0_17 // <-- // jb .LBB0_17 + JB scalar_unrolled16 // <-- // jb .scalar_unrolled16 LONG $0x078071bf; BYTE $0x80 // MOVL $-0x7ff87f8f, DI // mov edi, 2147975281 LONG $0xc0eff9c5 // VPXOR X0, X0, X0 // vpxor xmm0, xmm0, xmm0 VMOVDQA LCPI0_0<>(SB), Y1 // <-- // vmovdqa ymm1, ymmword ptr [rip + .LCPI0_0] VPBROADCASTW LCPI0_2<>(SB), Y2 // <-- // vpbroadcastw ymm2, word ptr [rip + .LCPI0_2] - JMP LBB0_6 // <-- // jmp .LBB0_6 + JMP vector_outer // <-- // jmp .vector_outer -LBB0_7: +vector_tail_init: LONG $0xf46ffdc5 // VMOVDQA Y4, Y6 // vmovdqa ymm6, ymm4 LONG $0xedefd1c5 // VPXOR X5, X5, X5 // vpxor xmm5, xmm5, xmm5 -LBB0_14: +vector_reduce_finalize_chunk: SUBQ AX, DX // <-- // sub rdx, rax LONG $0xf572ddc5; BYTE $0x05 // ? // vpslld ymm4, ymm5, 5 LONG $0xdbfeddc5 // VPADDD Y3, Y4, Y3 // vpaddd ymm3, ymm4, ymm3 @@ -74,9 +74,9 @@ LBB0_14: LONG $0xf1c06945; WORD $0x00ff; BYTE $0x00 // IMULL $0xfff1, R8, R8 // imul r8d, r8d, 65521 WORD $0x2944; BYTE $0xc1 // SUBL R8, CX // sub ecx, r8d CMPQ DX, $0x1f // <-- // cmp rdx, 31 - JBE LBB0_15 // <-- // jbe .LBB0_15 + JBE scalar_entry // <-- // jbe .scalar_entry -LBB0_6: +vector_outer: LONG $0xe06ef9c5 // VMOVD AX, X4 // vmovd xmm4, eax LONG $0xd96ef9c5 // VMOVD CX, X3 // vmovd xmm3, ecx CMPQ DX, $0x15b0 // <-- // cmp rdx, 5552 @@ -84,11 +84,11 @@ LBB0_6: LONG $0xc2420f4c // CMOVB DX, R8 // cmovb r8, rdx WORD $0x8944; BYTE $0xc0 // MOVL R8, AX // mov eax, r8d LONG $0x001fe025; BYTE $0x00 // ANDL $0x1fe0, AX // and eax, 8160 - JE LBB0_7 // <-- // je .LBB0_7 + JE vector_tail_init // <-- // je .vector_tail_init ADDQ $-0x20, R8 // <-- // add r8, -32 LONG $0xedefd1c5 // VPXOR X5, X5, X5 // vpxor xmm5, xmm5, xmm5 LONG $0x20c0f641 // TESTL $0x20, R8 // test r8b, 32 - JNE LBB0_9 // <-- // jne .LBB0_9 + JNE vector_block32_check // <-- // jne .vector_block32_check LONG $0x2e6ffec5 // VMOVDQU 0(SI), Y5 // vmovdqu ymm5, ymmword ptr [rsi] ADDQ $0x20, SI // <-- // add rsi, 32 LEAQ -0x20(AX), CX // <-- // lea rcx, [rax - 32] @@ -100,15 +100,15 @@ LBB0_6: LONG $0xec6ffdc5 // VMOVDQA Y4, Y5 // vmovdqa ymm5, ymm4 LONG $0xe66ffdc5 // VMOVDQA Y6, Y4 // vmovdqa ymm4, ymm6 CMPQ R8, $0x20 // <-- // cmp r8, 32 - JAE LBB0_12 // <-- // jae .LBB0_12 - JMP LBB0_14 // <-- // jmp .LBB0_14 + JAE vector_block64_loop // <-- // jae .vector_block64_loop + JMP vector_reduce_finalize_chunk // <-- // jmp .vector_reduce_finalize_chunk -LBB0_9: +vector_block32_check: MOVQ AX, CX // <-- // mov rcx, rax CMPQ R8, $0x20 // <-- // cmp r8, 32 - JB LBB0_14 // <-- // jb .LBB0_14 + JB vector_reduce_finalize_chunk // <-- // jb .vector_reduce_finalize_chunk -LBB0_12: +vector_block64_loop: LONG $0x366ffec5 // VMOVDQU 0(SI), Y6 // vmovdqu ymm6, ymmword ptr [rsi] LONG $0x7e6ffec5; BYTE $0x20 // VMOVDQU 0x20(SI), Y7 // vmovdqu ymm7, ymmword ptr [rsi + 32] LONG $0xc0f64dc5 // VPSADBW Y0, Y6, Y8 // vpsadbw ymm8, ymm6, ymm0 @@ -125,24 +125,24 @@ LBB0_12: LONG $0xf2f5cdc5 // VPMADDWD Y2, Y6, Y6 // vpmaddwd ymm6, ymm6, ymm2 LONG $0xdbfecdc5 // VPADDD Y3, Y6, Y3 // vpaddd ymm3, ymm6, ymm3 ADDQ $-0x40, CX // <-- // add rcx, -64 - JNE LBB0_12 // <-- // jne .LBB0_12 + JNE vector_block64_loop // <-- // jne .vector_block64_loop LONG $0xf46ffdc5 // VMOVDQA Y4, Y6 // vmovdqa ymm6, ymm4 - JMP LBB0_14 // <-- // jmp .LBB0_14 + JMP vector_reduce_finalize_chunk // <-- // jmp .vector_reduce_finalize_chunk -LBB0_1: +return_one: LONG $0x000001b8; BYTE $0x00 // MOVL $0x1, AX // mov eax, 1 -LBB0_2: +return_current: MOVL AX, ret+32(FP) // <-- RET // <-- // ret -LBB0_15: +scalar_entry: WORD $0x8548; BYTE $0xd2 // TESTQ DX, DX // test rdx, rdx - JE LBB0_16 // <-- // je .LBB0_16 + JE return_final // <-- // je .return_final -LBB0_17: +scalar_unrolled16: CMPQ DX, $0x10 // <-- // cmp rdx, 16 - JB LBB0_20 // <-- // jb .LBB0_20 + JB scalar_byte_prelude // <-- // jb .scalar_byte_prelude WORD $0xb60f; BYTE $0x3e // MOVZX 0(SI), DI // movzx edi, byte ptr [rsi] WORD $0xf801 // ADDL DI, AX // add eax, edi WORD $0xc101 // ADDL AX, CX // add ecx, eax @@ -192,32 +192,32 @@ LBB0_17: WORD $0x0144; BYTE $0xc0 // ADDL R8, AX // add eax, r8d WORD $0xc101 // ADDL AX, CX // add ecx, eax ADDQ $-0x10, DX // <-- // add rdx, -16 - JE LBB0_27 // <-- // je .LBB0_27 + JE scalar_finalize // <-- // je .scalar_finalize ADDQ $0x10, SI // <-- // add rsi, 16 -LBB0_20: +scalar_byte_prelude: LEAQ -0x1(DX), DI // <-- // lea rdi, [rdx - 1] MOVQ DX, R9 // <-- // mov r9, rdx ANDQ $0x3, R9 // <-- // and r9, 3 - JE LBB0_24 // <-- // je .LBB0_24 + JE scalar_dword_prelude // <-- // je .scalar_dword_prelude XORL R8, R8 // <-- // xor r8d, r8d -LBB0_22: +scalar_byte_prelude_loop: LONG $0x14b60f46; BYTE $0x06 // MOVZX 0(SI)(R8*1), R10 // movzx r10d, byte ptr [rsi + r8] WORD $0x0144; BYTE $0xd0 // ADDL R10, AX // add eax, r10d WORD $0xc101 // ADDL AX, CX // add ecx, eax INCQ R8 // <-- // inc r8 CMPQ R9, R8 // <-- // cmp r9, r8 - JNE LBB0_22 // <-- // jne .LBB0_22 + JNE scalar_byte_prelude_loop// <-- // jne .scalar_byte_prelude_loop ADDQ R8, SI // <-- // add rsi, r8 SUBQ R8, DX // <-- // sub rdx, r8 -LBB0_24: +scalar_dword_prelude: CMPQ DI, $0x3 // <-- // cmp rdi, 3 - JB LBB0_27 // <-- // jb .LBB0_27 + JB scalar_finalize // <-- // jb .scalar_finalize XORL DI, DI // <-- // xor edi, edi -LBB0_26: +scalar_dword_loop: LONG $0x04b60f44; BYTE $0x3e // MOVZX 0(SI)(DI*1), R8 // movzx r8d, byte ptr [rsi + rdi] WORD $0x0141; BYTE $0xc0 // ADDL AX, R8 // add r8d, eax WORD $0x0144; BYTE $0xc1 // ADDL R8, CX // add ecx, r8d @@ -232,9 +232,9 @@ LBB0_26: WORD $0xc101 // ADDL AX, CX // add ecx, eax ADDQ $0x4, DI // <-- // add rdi, 4 CMPQ DX, DI // <-- // cmp rdx, rdi - JNE LBB0_26 // <-- // jne .LBB0_26 + JNE scalar_dword_loop // <-- // jne .scalar_dword_loop -LBB0_27: +scalar_finalize: LONG $0x000f908d; WORD $0xffff // LEAL -0xfff1(AX), DX // lea edx, [rax - 65521] CMPL AX, $0xfff1 // <-- // cmp eax, 65521 WORD $0x420f; BYTE $0xd0 // CMOVB AX, DX // cmovb edx, eax @@ -253,7 +253,7 @@ LBB0_27: MOVL AX, ret+32(FP) // <-- RET // <-- // ret -LBB0_16: +return_final: WORD $0xe1c1; BYTE $0x10 // SHLL $0x10, CX // shl ecx, 16 WORD $0xc809 // ORL CX, AX // or eax, ecx NOP // (skipped) // mov rsp, rbp diff --git a/internal/adler32/adler32_neon.s b/internal/adler32/adler32_neon.s index a60c86ec..bd4bd30b 100644 --- a/internal/adler32/adler32_neon.s +++ b/internal/adler32/adler32_neon.s @@ -22,18 +22,18 @@ TEXT ·adler32_neon(SB), NOSPLIT, $0-36 ANDW $65535, R0, R8 // <-- // and w8, w0, #0xffff LSRW $16, R0, R9 // <-- // lsr w9, w0, #16 NOP // (skipped) // mov x29, sp - BEQ LBB0_4 // <-- // b.eq .LBB0_4 + BEQ vector_entry // <-- // b.eq .vector_entry ADD $1, R1, R11 // <-- // add x11, x1, #1 MOVD R1, R12 // <-- // mov x12, x1 -LBB0_2: +align_prologue_loop: WORD $0x3840158d // MOVBU.P 1(R12), R13 // ldrb w13, [x12], #1 SUB $1, R2, R2 // <-- // sub x2, x2, #1 TST $15, R11 // <-- // tst x11, #0xf ADD $1, R11, R11 // <-- // add x11, x11, #1 ADDW R13, R8, R8 // <-- // add w8, w8, w13 ADDW R9, R8, R9 // <-- // add w9, w8, w9 - BNE LBB0_2 // <-- // b.ne .LBB0_2 + BNE align_prologue_loop // <-- // b.ne .align_prologue_loop MOVW $32881, R11 // <-- // mov w11, #32881 MOVW $65521, R13 // <-- // mov w13, #65521 MOVKW $(32775<<16), R11 // <-- // movk w11, #32775, lsl #16 @@ -48,10 +48,10 @@ LBB0_2: CSELW HI, R12, R8, R8 // <-- // csel w8, w12, w8, hi MSUBW R13, R9, R11, R9 // <-- // msub w9, w11, w13, w9 -LBB0_4: +vector_entry: AND $31, R2, R10 // <-- // and x10, x2, #0x1f CMP $32, R2 // <-- // cmp x2, #32 - BCC LBB0_9 // <-- // b.lo .LBB0_9 + BCC scalar_entry // <-- // b.lo .scalar_entry MOVD $mult_table<>(SB), R11 // <-- // adrp x11, mult_table ADD $0, R11, R11 // <-- // add x11, x11, :lo12:mult_table MOVW $32881, R14 // <-- // mov w14, #32881 @@ -66,7 +66,7 @@ LBB0_4: VEXT $8, V2.B16, V2.B16, V6.B16 // <-- // ext v6.16b, v2.16b, v2.16b, #8 VEXT $8, V3.B16, V3.B16, V7.B16 // <-- // ext v7.16b, v3.16b, v3.16b, #8 -LBB0_6: +vector_chunk_outer: CMP $173, R11 // <-- // cmp x11, #173 MOVD R1, R2 // <-- // mov x2, x1 CSEL LO, R11, R12, R16 // <-- // csel x16, x11, x12, lo @@ -82,7 +82,7 @@ LBB0_6: MOVW R16, R0 // <-- // mov w0, w16 WORD $0x6f00e411 // VMOVI $0, V17.D2 // movi v17.2d, #0000000000000000 -LBB0_7: +vector_chunk_inner: WORD $0xacc15857 // FLDPQ.P 32(R2), (F23, F22) // ldp q23, q22, [x2], #32 SUBSW $1, R0, R0 // <-- // subs w0, w0, #1 VADD V17.S4, V20.S4, V20.S4 // <-- // add v20.4s, v20.4s, v17.4s @@ -93,7 +93,7 @@ LBB0_7: WORD $0x6e361210 // VUADDW2 V22.B16, V16.H8, V16.H8 // uaddw2 v16.8h, v16.8h, v22.16b WORD $0x6e206af8 // VUADALP V23.B16, V24.H8 // uadalp v24.8h, v23.16b WORD $0x6e606b11 // VUADALP V24.H8, V17.S4 // uadalp v17.4s, v24.8h - BNE LBB0_7 // <-- // b.ne .LBB0_7 + BNE vector_chunk_inner // <-- // b.ne .vector_chunk_inner VSHL $5, V20.S4, V20.S4 // <-- // shl v20.4s, v20.4s, #5 ADD R17, R1, R17 // <-- // add x17, x1, x17 SUBS R16, R11, R11 // <-- // subs x11, x11, x16 @@ -123,12 +123,12 @@ LBB0_7: LSR $47, R2, R2 // <-- // lsr x2, x2, #47 MSUBW R15, R8, R0, R8 // <-- // msub w8, w0, w15, w8 MSUBW R15, R9, R2, R9 // <-- // msub w9, w2, w15, w9 - BNE LBB0_6 // <-- // b.ne .LBB0_6 + BNE vector_chunk_outer // <-- // b.ne .vector_chunk_outer -LBB0_9: - CBZ R10, LBB0_15 // <-- // cbz x10, .LBB0_15 +scalar_entry: + CBZ R10, return_final // <-- // cbz x10, .return_final CMP $16, R10 // <-- // cmp x10, #16 - BCC LBB0_13 // <-- // b.lo .LBB0_13 + BCC scalar_byte_loop // <-- // b.lo .scalar_byte_loop WORD $0x3940002b // MOVBU (R1), R11 // ldrb w11, [x1] SUBS $16, R10, R10 // <-- // subs x10, x10, #16 WORD $0x3940042c // MOVBU 1(R1), R12 // ldrb w12, [x1, #1] @@ -178,17 +178,17 @@ LBB0_9: ADDW R8, R9, R9 // <-- // add w9, w9, w8 ADDW R11, R8, R8 // <-- // add w8, w8, w11 ADDW R8, R9, R9 // <-- // add w9, w9, w8 - BEQ LBB0_14 // <-- // b.eq .LBB0_14 + BEQ scalar_finalize // <-- // b.eq .scalar_finalize ADD $16, R1, R1 // <-- // add x1, x1, #16 -LBB0_13: +scalar_byte_loop: WORD $0x3840142b // MOVBU.P 1(R1), R11 // ldrb w11, [x1], #1 SUBS $1, R10, R10 // <-- // subs x10, x10, #1 ADDW R11, R8, R8 // <-- // add w8, w8, w11 ADDW R9, R8, R9 // <-- // add w9, w8, w9 - BNE LBB0_13 // <-- // b.ne .LBB0_13 + BNE scalar_byte_loop // <-- // b.ne .scalar_byte_loop -LBB0_14: +scalar_finalize: MOVW $32881, R10 // <-- // mov w10, #32881 MOVW $65521, R12 // <-- // mov w12, #65521 MOVKW $(32775<<16), R10 // <-- // movk w10, #32775, lsl #16 @@ -201,7 +201,7 @@ LBB0_14: LSR $47, R10, R10 // <-- // lsr x10, x10, #47 MSUBW R12, R9, R10, R9 // <-- // msub w9, w10, w12, w9 -LBB0_15: +return_final: ORRW R9<<16, R8, R0 // <-- // orr w0, w8, w9, lsl #16 NOP // (skipped) // ldp x29, x30, [sp], #16 MOVW R0, ret+32(FP) // <-- diff --git a/internal/adler32/adler32_sse3.s b/internal/adler32/adler32_sse3.s index c652de31..c3e799a6 100644 --- a/internal/adler32/adler32_sse3.s +++ b/internal/adler32/adler32_sse3.s @@ -28,11 +28,11 @@ TEXT ·adler32_sse3(SB), NOSPLIT, $0-36 WORD $0xd189 // MOVL DX, CX // mov ecx, edx WORD $0xe183; BYTE $0x1f // ANDL $0x1f, CX // and ecx, 31 CMPQ DX, $0x20 // <-- // cmp rdx, 32 - JAE LBB0_2 // <-- // jae .LBB0_2 + JAE vector_entry // <-- // jae .vector_entry WORD $0x8944; BYTE $0xcf // MOVL R9, DI // mov edi, r9d - JMP LBB0_6 // <-- // jmp .LBB0_6 + JMP scalar_entry // <-- // jmp .scalar_entry -LBB0_2: +vector_entry: SHRQ $0x5, DX // <-- // shr rdx, 5 LONG $0xc0ef0f66 // PXOR X0, X0 // pxor xmm0, xmm0 MOVO LCPI0_0<>(SB), X1 // <-- // movdqa xmm1, xmmword ptr [rip + .LCPI0_0] @@ -40,7 +40,7 @@ LBB0_2: MOVO LCPI0_2<>(SB), X3 // <-- // movdqa xmm3, xmmword ptr [rip + .LCPI0_2] LONG $0x8071b841; WORD $0x8007 // MOVL $-0x7ff87f8f, R8 // mov r8d, 2147975281 -LBB0_3: +vector_chunk_outer: CMPQ DX, $0xad // <-- // cmp rdx, 173 LONG $0x00adba41; WORD $0x0000 // MOVL $0xad, R10 // mov r10d, 173 LONG $0xd2420f4c // CMOVB DX, R10 // cmovb r10, rdx @@ -51,7 +51,7 @@ LBB0_3: WORD $0x8944; BYTE $0xd0 // MOVL R10, AX // mov eax, r10d LONG $0xf6ef0f66 // PXOR X6, X6 // pxor xmm6, xmm6 -LBB0_4: +vector_chunk_loop: LONG $0x3e6f0ff3 // MOVDQU 0(SI), X7 // movdqu xmm7, xmmword ptr [rsi] LONG $0x6f0f4466; BYTE $0xc7 // MOVDQA X7, X8 // movdqa xmm8, xmm7 LONG $0x04380f66; BYTE $0xf9 // PMADDUBSW X1, X7 // pmaddubsw xmm7, xmm1 @@ -69,7 +69,7 @@ LBB0_4: LONG $0xe7fe0f66 // PADDD X7, X4 // paddd xmm4, xmm7 ADDQ $0x20, SI // <-- // add rsi, 32 WORD $0xc8ff // DECL AX // dec eax - JNE LBB0_4 // <-- // jne .LBB0_4 + JNE vector_chunk_loop // <-- // jne .vector_chunk_loop LONG $0xf5720f66; BYTE $0x05 // PSLLD $0x5, X5 // pslld xmm5, 5 LONG $0xe5fe0f66 // PADDD X5, X4 // paddd xmm4, xmm5 LONG $0xee700f66; BYTE $0xb1 // PSHUFD $0xb1, X6, X5 // pshufd xmm5, xmm6, 177 @@ -95,13 +95,13 @@ LBB0_4: WORD $0x2944; BYTE $0xc8 // SUBL R9, AX // sub eax, r9d WORD $0x8941; BYTE $0xf9 // MOVL DI, R9 // mov r9d, edi SUBQ R10, DX // <-- // sub rdx, r10 - JNE LBB0_3 // <-- // jne .LBB0_3 + JNE vector_chunk_outer // <-- // jne .vector_chunk_outer -LBB0_6: +scalar_entry: WORD $0x8548; BYTE $0xc9 // TESTQ CX, CX // test rcx, rcx - JE LBB0_18 // <-- // je .LBB0_18 + JE return_final // <-- // je .return_final CMPL CX, $0x10 // <-- // cmp ecx, 16 - JB LBB0_10 // <-- // jb .LBB0_10 + JB scalar_byte_prelude // <-- // jb .scalar_byte_prelude WORD $0xb60f; BYTE $0x16 // MOVZX 0(SI), DX // movzx edx, byte ptr [rsi] WORD $0xd701 // ADDL DX, DI // add edi, edx WORD $0xf801 // ADDL DI, AX // add eax, edi @@ -151,32 +151,32 @@ LBB0_6: WORD $0x0144; BYTE $0xc7 // ADDL R8, DI // add edi, r8d WORD $0xf801 // ADDL DI, AX // add eax, edi ADDQ $-0x10, CX // <-- // add rcx, -16 - JE LBB0_17 // <-- // je .LBB0_17 + JE scalar_finalize // <-- // je .scalar_finalize ADDQ $0x10, SI // <-- // add rsi, 16 -LBB0_10: +scalar_byte_prelude: LEAQ -0x1(CX), DX // <-- // lea rdx, [rcx - 1] MOVQ CX, R9 // <-- // mov r9, rcx ANDQ $0x3, R9 // <-- // and r9, 3 - JE LBB0_14 // <-- // je .LBB0_14 + JE scalar_dword_prelude // <-- // je .scalar_dword_prelude XORL R8, R8 // <-- // xor r8d, r8d -LBB0_12: +scalar_byte_prelude_loop: LONG $0x14b60f46; BYTE $0x06 // MOVZX 0(SI)(R8*1), R10 // movzx r10d, byte ptr [rsi + r8] WORD $0x0144; BYTE $0xd7 // ADDL R10, DI // add edi, r10d WORD $0xf801 // ADDL DI, AX // add eax, edi INCQ R8 // <-- // inc r8 CMPQ R9, R8 // <-- // cmp r9, r8 - JNE LBB0_12 // <-- // jne .LBB0_12 + JNE scalar_byte_prelude_loop// <-- // jne .scalar_byte_prelude_loop ADDQ R8, SI // <-- // add rsi, r8 SUBQ R8, CX // <-- // sub rcx, r8 -LBB0_14: +scalar_dword_prelude: CMPQ DX, $0x3 // <-- // cmp rdx, 3 - JB LBB0_17 // <-- // jb .LBB0_17 + JB scalar_finalize // <-- // jb .scalar_finalize XORL DX, DX // <-- // xor edx, edx -LBB0_16: +scalar_dword_loop: LONG $0x04b60f44; BYTE $0x16 // MOVZX 0(SI)(DX*1), R8 // movzx r8d, byte ptr [rsi + rdx] WORD $0x0141; BYTE $0xf8 // ADDL DI, R8 // add r8d, edi WORD $0x0144; BYTE $0xc0 // ADDL R8, AX // add eax, r8d @@ -191,9 +191,9 @@ LBB0_16: WORD $0xf801 // ADDL DI, AX // add eax, edi ADDQ $0x4, DX // <-- // add rdx, 4 CMPQ CX, DX // <-- // cmp rcx, rdx - JNE LBB0_16 // <-- // jne .LBB0_16 + JNE scalar_dword_loop // <-- // jne .scalar_dword_loop -LBB0_17: +scalar_finalize: LONG $0x000f8f8d; WORD $0xffff // LEAL -0xfff1(DI), CX // lea ecx, [rdi - 65521] CMPL DI, $0xfff1 // <-- // cmp edi, 65521 WORD $0x420f; BYTE $0xcf // CMOVB DI, CX // cmovb ecx, edi @@ -205,7 +205,7 @@ LBB0_17: WORD $0xd029 // SUBL DX, AX // sub eax, edx WORD $0xcf89 // MOVL CX, DI // mov edi, ecx -LBB0_18: +return_final: WORD $0xe0c1; BYTE $0x10 // SHLL $0x10, AX // shl eax, 16 WORD $0xf809 // ORL DI, AX // or eax, edi NOP // (skipped) // mov rsp, rbp |
