github.com/maenmax/kairep@v0.0.0-20210218001208-55bf3df36788/src/golang.org/x/crypto/curve25519/freeze_amd64.s (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // This code was translated into a form compatible with 6a from the public 6 // domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html 7 8 // +build amd64,!gccgo,!appengine 9 10 // func freeze(inout *[5]uint64) 11 TEXT ·freeze(SB),7,$96-8 12 MOVQ inout+0(FP), DI 13 14 MOVQ SP,R11 15 MOVQ $31,CX 16 NOTQ CX 17 ANDQ CX,SP 18 ADDQ $32,SP 19 20 MOVQ R11,0(SP) 21 MOVQ R12,8(SP) 22 MOVQ R13,16(SP) 23 MOVQ R14,24(SP) 24 MOVQ R15,32(SP) 25 MOVQ BX,40(SP) 26 MOVQ BP,48(SP) 27 MOVQ 0(DI),SI 28 MOVQ 8(DI),DX 29 MOVQ 16(DI),CX 30 MOVQ 24(DI),R8 31 MOVQ 32(DI),R9 32 MOVQ ·REDMASK51(SB),AX 33 MOVQ AX,R10 34 SUBQ $18,R10 35 MOVQ $3,R11 36 REDUCELOOP: 37 MOVQ SI,R12 38 SHRQ $51,R12 39 ANDQ AX,SI 40 ADDQ R12,DX 41 MOVQ DX,R12 42 SHRQ $51,R12 43 ANDQ AX,DX 44 ADDQ R12,CX 45 MOVQ CX,R12 46 SHRQ $51,R12 47 ANDQ AX,CX 48 ADDQ R12,R8 49 MOVQ R8,R12 50 SHRQ $51,R12 51 ANDQ AX,R8 52 ADDQ R12,R9 53 MOVQ R9,R12 54 SHRQ $51,R12 55 ANDQ AX,R9 56 IMUL3Q $19,R12,R12 57 ADDQ R12,SI 58 SUBQ $1,R11 59 JA REDUCELOOP 60 MOVQ $1,R12 61 CMPQ R10,SI 62 CMOVQLT R11,R12 63 CMPQ AX,DX 64 CMOVQNE R11,R12 65 CMPQ AX,CX 66 CMOVQNE R11,R12 67 CMPQ AX,R8 68 CMOVQNE R11,R12 69 CMPQ AX,R9 70 CMOVQNE R11,R12 71 NEGQ R12 72 ANDQ R12,AX 73 ANDQ R12,R10 74 SUBQ R10,SI 75 SUBQ AX,DX 76 SUBQ AX,CX 77 SUBQ AX,R8 78 SUBQ AX,R9 79 MOVQ SI,0(DI) 80 MOVQ DX,8(DI) 81 MOVQ CX,16(DI) 82 MOVQ R8,24(DI) 83 MOVQ R9,32(DI) 84 MOVQ 0(SP),R11 85 MOVQ 8(SP),R12 86 MOVQ 16(SP),R13 87 MOVQ 24(SP),R14 88 MOVQ 32(SP),R15 89 MOVQ 40(SP),BX 90 MOVQ 48(SP),BP 91 MOVQ R11,SP 92 MOVQ DI,AX 93 MOVQ SI,DX 94 RET