~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/golang.org/x/crypto/curve25519/freeze_amd64.s

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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