~nskaggs/+junk/juju-packaging-test

« back to all changes in this revision

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

  • Committer: Nicholas Skaggs
  • Date: 2016-10-27 20:23:11 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161027202311-sux4jk2o73p1d6rg
Re-add src

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 mul(dest, a, b *[5]uint64)
 
11
TEXT ·mul(SB),0,$128-24
 
12
        MOVQ dest+0(FP), DI
 
13
        MOVQ a+8(FP), SI
 
14
        MOVQ b+16(FP), DX
 
15
 
 
16
        MOVQ SP,R11
 
17
        MOVQ $31,CX
 
18
        NOTQ CX
 
19
        ANDQ CX,SP
 
20
        ADDQ $32,SP
 
21
 
 
22
        MOVQ R11,0(SP)
 
23
        MOVQ R12,8(SP)
 
24
        MOVQ R13,16(SP)
 
25
        MOVQ R14,24(SP)
 
26
        MOVQ R15,32(SP)
 
27
        MOVQ BX,40(SP)
 
28
        MOVQ BP,48(SP)
 
29
        MOVQ DI,56(SP)
 
30
        MOVQ DX,CX
 
31
        MOVQ 24(SI),DX
 
32
        IMUL3Q $19,DX,AX
 
33
        MOVQ AX,64(SP)
 
34
        MULQ 16(CX)
 
35
        MOVQ AX,R8
 
36
        MOVQ DX,R9
 
37
        MOVQ 32(SI),DX
 
38
        IMUL3Q $19,DX,AX
 
39
        MOVQ AX,72(SP)
 
40
        MULQ 8(CX)
 
41
        ADDQ AX,R8
 
42
        ADCQ DX,R9
 
43
        MOVQ 0(SI),AX
 
44
        MULQ 0(CX)
 
45
        ADDQ AX,R8
 
46
        ADCQ DX,R9
 
47
        MOVQ 0(SI),AX
 
48
        MULQ 8(CX)
 
49
        MOVQ AX,R10
 
50
        MOVQ DX,R11
 
51
        MOVQ 0(SI),AX
 
52
        MULQ 16(CX)
 
53
        MOVQ AX,R12
 
54
        MOVQ DX,R13
 
55
        MOVQ 0(SI),AX
 
56
        MULQ 24(CX)
 
57
        MOVQ AX,R14
 
58
        MOVQ DX,R15
 
59
        MOVQ 0(SI),AX
 
60
        MULQ 32(CX)
 
61
        MOVQ AX,BX
 
62
        MOVQ DX,BP
 
63
        MOVQ 8(SI),AX
 
64
        MULQ 0(CX)
 
65
        ADDQ AX,R10
 
66
        ADCQ DX,R11
 
67
        MOVQ 8(SI),AX
 
68
        MULQ 8(CX)
 
69
        ADDQ AX,R12
 
70
        ADCQ DX,R13
 
71
        MOVQ 8(SI),AX
 
72
        MULQ 16(CX)
 
73
        ADDQ AX,R14
 
74
        ADCQ DX,R15
 
75
        MOVQ 8(SI),AX
 
76
        MULQ 24(CX)
 
77
        ADDQ AX,BX
 
78
        ADCQ DX,BP
 
79
        MOVQ 8(SI),DX
 
80
        IMUL3Q $19,DX,AX
 
81
        MULQ 32(CX)
 
82
        ADDQ AX,R8
 
83
        ADCQ DX,R9
 
84
        MOVQ 16(SI),AX
 
85
        MULQ 0(CX)
 
86
        ADDQ AX,R12
 
87
        ADCQ DX,R13
 
88
        MOVQ 16(SI),AX
 
89
        MULQ 8(CX)
 
90
        ADDQ AX,R14
 
91
        ADCQ DX,R15
 
92
        MOVQ 16(SI),AX
 
93
        MULQ 16(CX)
 
94
        ADDQ AX,BX
 
95
        ADCQ DX,BP
 
96
        MOVQ 16(SI),DX
 
97
        IMUL3Q $19,DX,AX
 
98
        MULQ 24(CX)
 
99
        ADDQ AX,R8
 
100
        ADCQ DX,R9
 
101
        MOVQ 16(SI),DX
 
102
        IMUL3Q $19,DX,AX
 
103
        MULQ 32(CX)
 
104
        ADDQ AX,R10
 
105
        ADCQ DX,R11
 
106
        MOVQ 24(SI),AX
 
107
        MULQ 0(CX)
 
108
        ADDQ AX,R14
 
109
        ADCQ DX,R15
 
110
        MOVQ 24(SI),AX
 
111
        MULQ 8(CX)
 
112
        ADDQ AX,BX
 
113
        ADCQ DX,BP
 
114
        MOVQ 64(SP),AX
 
115
        MULQ 24(CX)
 
116
        ADDQ AX,R10
 
117
        ADCQ DX,R11
 
118
        MOVQ 64(SP),AX
 
119
        MULQ 32(CX)
 
120
        ADDQ AX,R12
 
121
        ADCQ DX,R13
 
122
        MOVQ 32(SI),AX
 
123
        MULQ 0(CX)
 
124
        ADDQ AX,BX
 
125
        ADCQ DX,BP
 
126
        MOVQ 72(SP),AX
 
127
        MULQ 16(CX)
 
128
        ADDQ AX,R10
 
129
        ADCQ DX,R11
 
130
        MOVQ 72(SP),AX
 
131
        MULQ 24(CX)
 
132
        ADDQ AX,R12
 
133
        ADCQ DX,R13
 
134
        MOVQ 72(SP),AX
 
135
        MULQ 32(CX)
 
136
        ADDQ AX,R14
 
137
        ADCQ DX,R15
 
138
        MOVQ ·REDMASK51(SB),SI
 
139
        SHLQ $13,R9:R8
 
140
        ANDQ SI,R8
 
141
        SHLQ $13,R11:R10
 
142
        ANDQ SI,R10
 
143
        ADDQ R9,R10
 
144
        SHLQ $13,R13:R12
 
145
        ANDQ SI,R12
 
146
        ADDQ R11,R12
 
147
        SHLQ $13,R15:R14
 
148
        ANDQ SI,R14
 
149
        ADDQ R13,R14
 
150
        SHLQ $13,BP:BX
 
151
        ANDQ SI,BX
 
152
        ADDQ R15,BX
 
153
        IMUL3Q $19,BP,DX
 
154
        ADDQ DX,R8
 
155
        MOVQ R8,DX
 
156
        SHRQ $51,DX
 
157
        ADDQ R10,DX
 
158
        MOVQ DX,CX
 
159
        SHRQ $51,DX
 
160
        ANDQ SI,R8
 
161
        ADDQ R12,DX
 
162
        MOVQ DX,R9
 
163
        SHRQ $51,DX
 
164
        ANDQ SI,CX
 
165
        ADDQ R14,DX
 
166
        MOVQ DX,AX
 
167
        SHRQ $51,DX
 
168
        ANDQ SI,R9
 
169
        ADDQ BX,DX
 
170
        MOVQ DX,R10
 
171
        SHRQ $51,DX
 
172
        ANDQ SI,AX
 
173
        IMUL3Q $19,DX,DX
 
174
        ADDQ DX,R8
 
175
        ANDQ SI,R10
 
176
        MOVQ R8,0(DI)
 
177
        MOVQ CX,8(DI)
 
178
        MOVQ R9,16(DI)
 
179
        MOVQ AX,24(DI)
 
180
        MOVQ R10,32(DI)
 
181
        MOVQ 0(SP),R11
 
182
        MOVQ 8(SP),R12
 
183
        MOVQ 16(SP),R13
 
184
        MOVQ 24(SP),R14
 
185
        MOVQ 32(SP),R15
 
186
        MOVQ 40(SP),BX
 
187
        MOVQ 48(SP),BP
 
188
        MOVQ R11,SP
 
189
        MOVQ DI,AX
 
190
        MOVQ SI,DX
 
191
        RET