...

Text file src/golang.org/x/crypto/internal/poly1305/sum_amd64.s

Documentation: golang.org/x/crypto/internal/poly1305

     1// Code generated by command: go run sum_amd64_asm.go -out ../sum_amd64.s -pkg poly1305. DO NOT EDIT.
     2
     3//go:build gc && !purego
     4
     5// func update(state *macState, msg []byte)
     6TEXT ·update(SB), $0-32
     7	MOVQ state+0(FP), DI
     8	MOVQ msg_base+8(FP), SI
     9	MOVQ msg_len+16(FP), R15
    10	MOVQ (DI), R8
    11	MOVQ 8(DI), R9
    12	MOVQ 16(DI), R10
    13	MOVQ 24(DI), R11
    14	MOVQ 32(DI), R12
    15	CMPQ R15, $0x10
    16	JB   bytes_between_0_and_15
    17
    18loop:
    19	ADDQ (SI), R8
    20	ADCQ 8(SI), R9
    21	ADCQ $0x01, R10
    22	LEAQ 16(SI), SI
    23
    24multiply:
    25	MOVQ  R11, AX
    26	MULQ  R8
    27	MOVQ  AX, BX
    28	MOVQ  DX, CX
    29	MOVQ  R11, AX
    30	MULQ  R9
    31	ADDQ  AX, CX
    32	ADCQ  $0x00, DX
    33	MOVQ  R11, R13
    34	IMULQ R10, R13
    35	ADDQ  DX, R13
    36	MOVQ  R12, AX
    37	MULQ  R8
    38	ADDQ  AX, CX
    39	ADCQ  $0x00, DX
    40	MOVQ  DX, R8
    41	MOVQ  R12, R14
    42	IMULQ R10, R14
    43	MOVQ  R12, AX
    44	MULQ  R9
    45	ADDQ  AX, R13
    46	ADCQ  DX, R14
    47	ADDQ  R8, R13
    48	ADCQ  $0x00, R14
    49	MOVQ  BX, R8
    50	MOVQ  CX, R9
    51	MOVQ  R13, R10
    52	ANDQ  $0x03, R10
    53	MOVQ  R13, BX
    54	ANDQ  $-4, BX
    55	ADDQ  BX, R8
    56	ADCQ  R14, R9
    57	ADCQ  $0x00, R10
    58	SHRQ  $0x02, R14, R13
    59	SHRQ  $0x02, R14
    60	ADDQ  R13, R8
    61	ADCQ  R14, R9
    62	ADCQ  $0x00, R10
    63	SUBQ  $0x10, R15
    64	CMPQ  R15, $0x10
    65	JAE   loop
    66
    67bytes_between_0_and_15:
    68	TESTQ R15, R15
    69	JZ    done
    70	MOVQ  $0x00000001, BX
    71	XORQ  CX, CX
    72	XORQ  R13, R13
    73	ADDQ  R15, SI
    74
    75flush_buffer:
    76	SHLQ $0x08, BX, CX
    77	SHLQ $0x08, BX
    78	MOVB -1(SI), R13
    79	XORQ R13, BX
    80	DECQ SI
    81	DECQ R15
    82	JNZ  flush_buffer
    83	ADDQ BX, R8
    84	ADCQ CX, R9
    85	ADCQ $0x00, R10
    86	MOVQ $0x00000010, R15
    87	JMP  multiply
    88
    89done:
    90	MOVQ R8, (DI)
    91	MOVQ R9, 8(DI)
    92	MOVQ R10, 16(DI)
    93	RET

View as plain text