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.
6
// returns whether AES-NI is supported
16
// func encryptBlockAsm(nr int, xk *uint32, dst, src *byte)
17
TEXT ·encryptBlockAsm(SB),7,$0
65
// func decryptBlockAsm(nr int, xk *uint32, dst, src *byte)
66
TEXT ·decryptBlockAsm(SB),7,$0
114
// func expandKeyAsm(nr int, key *byte, enc, dec *uint32) {
115
// Note that round keys are stored in uint128 format, not uint32
116
TEXT ·expandKeyAsm(SB),7,$0
125
PXOR X4, X4 // _expand_key_* expect X4 to be zero
133
AESKEYGENASSIST $0x01, X2, X1
134
CALL _expand_key_256a<>(SB)
135
AESKEYGENASSIST $0x01, X0, X1
136
CALL _expand_key_256b<>(SB)
137
AESKEYGENASSIST $0x02, X2, X1
138
CALL _expand_key_256a<>(SB)
139
AESKEYGENASSIST $0x02, X0, X1
140
CALL _expand_key_256b<>(SB)
141
AESKEYGENASSIST $0x04, X2, X1
142
CALL _expand_key_256a<>(SB)
143
AESKEYGENASSIST $0x04, X0, X1
144
CALL _expand_key_256b<>(SB)
145
AESKEYGENASSIST $0x08, X2, X1
146
CALL _expand_key_256a<>(SB)
147
AESKEYGENASSIST $0x08, X0, X1
148
CALL _expand_key_256b<>(SB)
149
AESKEYGENASSIST $0x10, X2, X1
150
CALL _expand_key_256a<>(SB)
151
AESKEYGENASSIST $0x10, X0, X1
152
CALL _expand_key_256b<>(SB)
153
AESKEYGENASSIST $0x20, X2, X1
154
CALL _expand_key_256a<>(SB)
155
AESKEYGENASSIST $0x20, X0, X1
156
CALL _expand_key_256b<>(SB)
157
AESKEYGENASSIST $0x40, X2, X1
158
CALL _expand_key_256a<>(SB)
162
AESKEYGENASSIST $0x01, X2, X1
163
CALL _expand_key_192a<>(SB)
164
AESKEYGENASSIST $0x02, X2, X1
165
CALL _expand_key_192b<>(SB)
166
AESKEYGENASSIST $0x04, X2, X1
167
CALL _expand_key_192a<>(SB)
168
AESKEYGENASSIST $0x08, X2, X1
169
CALL _expand_key_192b<>(SB)
170
AESKEYGENASSIST $0x10, X2, X1
171
CALL _expand_key_192a<>(SB)
172
AESKEYGENASSIST $0x20, X2, X1
173
CALL _expand_key_192b<>(SB)
174
AESKEYGENASSIST $0x40, X2, X1
175
CALL _expand_key_192a<>(SB)
176
AESKEYGENASSIST $0x80, X2, X1
177
CALL _expand_key_192b<>(SB)
180
AESKEYGENASSIST $0x01, X0, X1
181
CALL _expand_key_128<>(SB)
182
AESKEYGENASSIST $0x02, X0, X1
183
CALL _expand_key_128<>(SB)
184
AESKEYGENASSIST $0x04, X0, X1
185
CALL _expand_key_128<>(SB)
186
AESKEYGENASSIST $0x08, X0, X1
187
CALL _expand_key_128<>(SB)
188
AESKEYGENASSIST $0x10, X0, X1
189
CALL _expand_key_128<>(SB)
190
AESKEYGENASSIST $0x20, X0, X1
191
CALL _expand_key_128<>(SB)
192
AESKEYGENASSIST $0x40, X0, X1
193
CALL _expand_key_128<>(SB)
194
AESKEYGENASSIST $0x80, X0, X1
195
CALL _expand_key_128<>(SB)
196
AESKEYGENASSIST $0x1b, X0, X1
197
CALL _expand_key_128<>(SB)
198
AESKEYGENASSIST $0x36, X0, X1
199
CALL _expand_key_128<>(SB)
218
#define PSHUFD_X0_X0_ BYTE $0x66; BYTE $0x0f; BYTE $0x70; BYTE $0xc0
219
#define PSHUFD_X1_X1_ BYTE $0x66; BYTE $0x0f; BYTE $0x70; BYTE $0xc9
220
TEXT _expand_key_128<>(SB),7,$0
231
#define PSLLDQ_X5_ BYTE $0x66; BYTE $0x0f; BYTE $0x73; BYTE $0xfd
232
#define PSHUFD_X0_X3_ BYTE $0x66; BYTE $0x0f; BYTE $0x70; BYTE $0xd8
233
TEXT _expand_key_192a<>(SB),7,$0
243
PSLLDQ_X5_; BYTE $0x4
256
TEXT _expand_key_192b<>(SB),7,$0
265
PSLLDQ_X5_; BYTE $0x4
274
TEXT _expand_key_256a<>(SB),7,$0
275
JMP _expand_key_128<>(SB)
277
TEXT _expand_key_256b<>(SB),7,$0