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

     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)
     6  TEXT ·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  
    18  loop:
    19  	ADDQ (SI), R8
    20  	ADCQ 8(SI), R9
    21  	ADCQ $0x01, R10
    22  	LEAQ 16(SI), SI
    23  
    24  multiply:
    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  
    67  bytes_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  
    75  flush_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  
    89  done:
    90  	MOVQ R8, (DI)
    91  	MOVQ R9, 8(DI)
    92  	MOVQ R10, 16(DI)
    93  	RET
    94  

View as plain text