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