Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/powerpc64/vpaes-ppc.S
39482 views
1
/* Do not modify. This file is auto-generated from vpaes-ppc.pl. */
2
.machine "any"
3
4
.abiversion 2
5
.text
6
7
.align 7
8
_vpaes_consts:
9
.Lk_mc_forward:
10
.byte 0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c
11
.byte 0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00
12
.byte 0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04
13
.byte 0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08
14
.Lk_mc_backward:
15
.byte 0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e
16
.byte 0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a
17
.byte 0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06
18
.byte 0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02
19
.Lk_sr:
20
.byte 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f
21
.byte 0x00,0x05,0x0a,0x0f,0x04,0x09,0x0e,0x03,0x08,0x0d,0x02,0x07,0x0c,0x01,0x06,0x0b
22
.byte 0x00,0x09,0x02,0x0b,0x04,0x0d,0x06,0x0f,0x08,0x01,0x0a,0x03,0x0c,0x05,0x0e,0x07
23
.byte 0x00,0x0d,0x0a,0x07,0x04,0x01,0x0e,0x0b,0x08,0x05,0x02,0x0f,0x0c,0x09,0x06,0x03
24
25
26
27
28
.Lk_inv:
29
.byte 0xf0,0x01,0x08,0x0d,0x0f,0x06,0x05,0x0e,0x02,0x0c,0x0b,0x0a,0x09,0x03,0x07,0x04
30
.byte 0xf0,0x07,0x0b,0x0f,0x06,0x0a,0x04,0x01,0x09,0x08,0x05,0x02,0x0c,0x0e,0x0d,0x03
31
.Lk_ipt:
32
.byte 0x00,0x70,0x2a,0x5a,0x98,0xe8,0xb2,0xc2,0x08,0x78,0x22,0x52,0x90,0xe0,0xba,0xca
33
.byte 0x00,0x4d,0x7c,0x31,0x7d,0x30,0x01,0x4c,0x81,0xcc,0xfd,0xb0,0xfc,0xb1,0x80,0xcd
34
.Lk_sbo:
35
.byte 0x00,0xc7,0xbd,0x6f,0x17,0x6d,0xd2,0xd0,0x78,0xa8,0x02,0xc5,0x7a,0xbf,0xaa,0x15
36
.byte 0x00,0x6a,0xbb,0x5f,0xa5,0x74,0xe4,0xcf,0xfa,0x35,0x2b,0x41,0xd1,0x90,0x1e,0x8e
37
.Lk_sb1:
38
.byte 0x00,0x23,0xe2,0xfa,0x15,0xd4,0x18,0x36,0xef,0xd9,0x2e,0x0d,0xc1,0xcc,0xf7,0x3b
39
.byte 0x00,0x3e,0x50,0xcb,0x8f,0xe1,0x9b,0xb1,0x44,0xf5,0x2a,0x14,0x6e,0x7a,0xdf,0xa5
40
.Lk_sb2:
41
.byte 0x00,0x29,0xe1,0x0a,0x40,0x88,0xeb,0x69,0x4a,0x23,0x82,0xab,0xc8,0x63,0xa1,0xc2
42
.byte 0x00,0x24,0x71,0x0b,0xc6,0x93,0x7a,0xe2,0xcd,0x2f,0x98,0xbc,0x55,0xe9,0xb7,0x5e
43
44
45
46
47
.Lk_dipt:
48
.byte 0x00,0x5f,0x54,0x0b,0x04,0x5b,0x50,0x0f,0x1a,0x45,0x4e,0x11,0x1e,0x41,0x4a,0x15
49
.byte 0x00,0x65,0x05,0x60,0xe6,0x83,0xe3,0x86,0x94,0xf1,0x91,0xf4,0x72,0x17,0x77,0x12
50
.Lk_dsbo:
51
.byte 0x00,0x40,0xf9,0x7e,0x53,0xea,0x87,0x13,0x2d,0x3e,0x94,0xd4,0xb9,0x6d,0xaa,0xc7
52
.byte 0x00,0x1d,0x44,0x93,0x0f,0x56,0xd7,0x12,0x9c,0x8e,0xc5,0xd8,0x59,0x81,0x4b,0xca
53
.Lk_dsb9:
54
.byte 0x00,0xd6,0x86,0x9a,0x53,0x03,0x1c,0x85,0xc9,0x4c,0x99,0x4f,0x50,0x1f,0xd5,0xca
55
.byte 0x00,0x49,0xd7,0xec,0x89,0x17,0x3b,0xc0,0x65,0xa5,0xfb,0xb2,0x9e,0x2c,0x5e,0x72
56
.Lk_dsbd:
57
.byte 0x00,0xa2,0xb1,0xe6,0xdf,0xcc,0x57,0x7d,0x39,0x44,0x2a,0x88,0x13,0x9b,0x6e,0xf5
58
.byte 0x00,0xcb,0xc6,0x24,0xf7,0xfa,0xe2,0x3c,0xd3,0xef,0xde,0x15,0x0d,0x18,0x31,0x29
59
.Lk_dsbb:
60
.byte 0x00,0x42,0xb4,0x96,0x92,0x64,0x22,0xd0,0x04,0xd4,0xf2,0xb0,0xf6,0x46,0x26,0x60
61
.byte 0x00,0x67,0x59,0xcd,0xa6,0x98,0x94,0xc1,0x6b,0xaa,0x55,0x32,0x3e,0x0c,0xff,0xf3
62
.Lk_dsbe:
63
.byte 0x00,0xd0,0xd4,0x26,0x96,0x92,0xf2,0x46,0xb0,0xf6,0xb4,0x64,0x04,0x60,0x42,0x22
64
.byte 0x00,0xc1,0xaa,0xff,0xcd,0xa6,0x55,0x0c,0x32,0x3e,0x59,0x98,0x6b,0xf3,0x67,0x94
65
66
67
68
69
.Lk_dksd:
70
.byte 0x00,0x47,0xe4,0xa3,0x5d,0x1a,0xb9,0xfe,0xf9,0xbe,0x1d,0x5a,0xa4,0xe3,0x40,0x07
71
.byte 0x00,0x83,0x36,0xb5,0xf4,0x77,0xc2,0x41,0x1e,0x9d,0x28,0xab,0xea,0x69,0xdc,0x5f
72
.Lk_dksb:
73
.byte 0x00,0xd5,0x50,0x85,0x1f,0xca,0x4f,0x9a,0x99,0x4c,0xc9,0x1c,0x86,0x53,0xd6,0x03
74
.byte 0x00,0x4a,0xfc,0xb6,0xa7,0xed,0x5b,0x11,0xc8,0x82,0x34,0x7e,0x6f,0x25,0x93,0xd9
75
.Lk_dkse:
76
.byte 0x00,0xd6,0xc9,0x1f,0xca,0x1c,0x03,0xd5,0x86,0x50,0x4f,0x99,0x4c,0x9a,0x85,0x53
77
.byte 0xe8,0x7b,0xdc,0x4f,0x05,0x96,0x31,0xa2,0x87,0x14,0xb3,0x20,0x6a,0xf9,0x5e,0xcd
78
.Lk_dks9:
79
.byte 0x00,0xa7,0xd9,0x7e,0xc8,0x6f,0x11,0xb6,0xfc,0x5b,0x25,0x82,0x34,0x93,0xed,0x4a
80
.byte 0x00,0x33,0x14,0x27,0x62,0x51,0x76,0x45,0xce,0xfd,0xda,0xe9,0xac,0x9f,0xb8,0x8b
81
82
.Lk_rcon:
83
.byte 0xb6,0xee,0x9d,0xaf,0xb9,0x91,0x83,0x1f,0x81,0x7d,0x7c,0x4d,0x08,0x98,0x2a,0x70
84
.Lk_s63:
85
.byte 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b
86
87
.Lk_opt:
88
.byte 0x00,0x60,0xb6,0xd6,0x29,0x49,0x9f,0xff,0x08,0x68,0xbe,0xde,0x21,0x41,0x97,0xf7
89
.byte 0x00,0xec,0xbc,0x50,0x51,0xbd,0xed,0x01,0xe0,0x0c,0x5c,0xb0,0xb1,0x5d,0x0d,0xe1
90
.Lk_deskew:
91
.byte 0x00,0xe3,0xa4,0x47,0x40,0xa3,0xe4,0x07,0x1a,0xf9,0xbe,0x5d,0x5a,0xb9,0xfe,0x1d
92
.byte 0x00,0x69,0xea,0x83,0xdc,0xb5,0x36,0x5f,0x77,0x1e,0x9d,0xf4,0xab,0xc2,0x41,0x28
93
.align 5
94
.Lconsts:
95
mflr 0
96
bcl 20,31,$+4
97
mflr 12
98
addi 12,12,-0x308
99
mtlr 0
100
blr
101
.long 0
102
.byte 0,12,0x14,0,0,0,0,0
103
.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,108,116,105,86,101,99,44,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0
104
.align 2
105
.align 6
106
107
108
109
110
111
112
.align 4
113
_vpaes_encrypt_preheat:
114
mflr 8
115
bl .Lconsts
116
mtlr 8
117
li 11, 0xc0
118
li 10, 0xd0
119
li 9, 0xe0
120
li 8, 0xf0
121
vxor 7, 7, 7
122
vspltisb 8,4
123
vspltisb 9,0x0f
124
lvx 10, 12, 11
125
li 11, 0x100
126
lvx 11, 12, 10
127
li 10, 0x110
128
lvx 12, 12, 9
129
li 9, 0x120
130
lvx 13, 12, 8
131
li 8, 0x130
132
lvx 14, 12, 11
133
li 11, 0x140
134
lvx 15, 12, 10
135
li 10, 0x150
136
lvx 16, 12, 9
137
lvx 17, 12, 8
138
lvx 18, 12, 11
139
lvx 19, 12, 10
140
blr
141
.long 0
142
.byte 0,12,0x14,0,0,0,0,0
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
.align 5
159
_vpaes_encrypt_core:
160
lwz 8, 240(5)
161
li 9, 16
162
lvx 5, 0, 5
163
li 11, 0x10
164
lvx 6, 9, 5
165
addi 9, 9, 16
166
vperm 5, 5, 6, 31
167
addi 10, 11, 0x40
168
vsrb 1, 0, 8
169
vperm 0, 12, 12, 0
170
vperm 1, 13, 13, 1
171
vxor 0, 0, 5
172
vxor 0, 0, 1
173
mtctr 8
174
b .Lenc_entry
175
176
.align 4
177
.Lenc_loop:
178
179
vperm 4, 17, 7, 2
180
lvx 1, 12, 11
181
addi 11, 11, 16
182
vperm 0, 16, 7, 3
183
vxor 4, 4, 5
184
andi. 11, 11, 0x30
185
vperm 5, 19, 7, 2
186
vxor 0, 0, 4
187
vperm 2, 18, 7, 3
188
lvx 4, 12, 10
189
addi 10, 11, 0x40
190
vperm 3, 0, 7, 1
191
vxor 2, 2, 5
192
vperm 0, 0, 7, 4
193
vxor 3, 3, 2
194
vperm 4, 3, 7, 1
195
vxor 0, 0, 3
196
vxor 0, 0, 4
197
198
.Lenc_entry:
199
200
vsrb 1, 0, 8
201
vperm 5, 11, 11, 0
202
vxor 0, 0, 1
203
vperm 3, 10, 10, 1
204
vperm 4, 10, 10, 0
205
vand 0, 0, 9
206
vxor 3, 3, 5
207
vxor 4, 4, 5
208
vperm 2, 10, 7, 3
209
vor 5,6,6
210
lvx 6, 9, 5
211
vperm 3, 10, 7, 4
212
addi 9, 9, 16
213
vxor 2, 2, 0
214
vperm 5, 5, 6, 31
215
vxor 3, 3, 1
216
bdnz .Lenc_loop
217
218
219
addi 10, 11, 0x80
220
221
222
vperm 4, 14, 7, 2
223
lvx 1, 12, 10
224
vperm 0, 15, 7, 3
225
vxor 4, 4, 5
226
vxor 0, 0, 4
227
vperm 0, 0, 7, 1
228
blr
229
.long 0
230
.byte 0,12,0x14,0,0,0,0,0
231
232
.globl vpaes_encrypt
233
.type vpaes_encrypt,@function
234
.align 5
235
vpaes_encrypt:
236
.localentry vpaes_encrypt,0
237
238
stdu 1,-256(1)
239
li 10,63
240
li 11,79
241
mflr 6
242
li 7,-1
243
stvx 20,10,1
244
addi 10,10,32
245
stvx 21,11,1
246
addi 11,11,32
247
stvx 22,10,1
248
addi 10,10,32
249
stvx 23,11,1
250
addi 11,11,32
251
stvx 24,10,1
252
addi 10,10,32
253
stvx 25,11,1
254
addi 11,11,32
255
stvx 26,10,1
256
addi 10,10,32
257
stvx 27,11,1
258
addi 11,11,32
259
stvx 28,10,1
260
addi 10,10,32
261
stvx 29,11,1
262
addi 11,11,32
263
stvx 30,10,1
264
stvx 31,11,1
265
stw 7,252(1)
266
li 0, -1
267
std 6,272(1)
268
or 0,0,0
269
270
bl _vpaes_encrypt_preheat
271
272
lvsl 27, 0, 3
273
lvx 0, 0, 3
274
addi 3, 3, 15
275
lvsr 29, 0, 4
276
lvsl 31, 0, 5
277
lvx 26, 0, 3
278
vperm 0, 0, 26, 27
279
280
bl _vpaes_encrypt_core
281
282
andi. 8, 4, 15
283
li 9, 16
284
beq .Lenc_out_aligned
285
286
vperm 0, 0, 0, 29
287
mtctr 9
288
.Lenc_out_unaligned:
289
stvebx 0, 0, 4
290
addi 4, 4, 1
291
bdnz .Lenc_out_unaligned
292
b .Lenc_done
293
294
.align 4
295
.Lenc_out_aligned:
296
stvx 0, 0, 4
297
.Lenc_done:
298
299
li 10,63
300
li 11,79
301
mtlr 6
302
or 7,7,7
303
lvx 20,10,1
304
addi 10,10,32
305
lvx 21,11,1
306
addi 11,11,32
307
lvx 22,10,1
308
addi 10,10,32
309
lvx 23,11,1
310
addi 11,11,32
311
lvx 24,10,1
312
addi 10,10,32
313
lvx 25,11,1
314
addi 11,11,32
315
lvx 26,10,1
316
addi 10,10,32
317
lvx 27,11,1
318
addi 11,11,32
319
lvx 28,10,1
320
addi 10,10,32
321
lvx 29,11,1
322
addi 11,11,32
323
lvx 30,10,1
324
lvx 31,11,1
325
addi 1,1,256
326
blr
327
.long 0
328
.byte 0,12,0x04,1,0x80,0,3,0
329
.long 0
330
.size vpaes_encrypt,.-vpaes_encrypt
331
332
.align 4
333
_vpaes_decrypt_preheat:
334
mflr 8
335
bl .Lconsts
336
mtlr 8
337
li 11, 0xc0
338
li 10, 0xd0
339
li 9, 0x160
340
li 8, 0x170
341
vxor 7, 7, 7
342
vspltisb 8,4
343
vspltisb 9,0x0f
344
lvx 10, 12, 11
345
li 11, 0x180
346
lvx 11, 12, 10
347
li 10, 0x190
348
lvx 12, 12, 9
349
li 9, 0x1a0
350
lvx 13, 12, 8
351
li 8, 0x1b0
352
lvx 14, 12, 11
353
li 11, 0x1c0
354
lvx 15, 12, 10
355
li 10, 0x1d0
356
lvx 16, 12, 9
357
li 9, 0x1e0
358
lvx 17, 12, 8
359
li 8, 0x1f0
360
lvx 18, 12, 11
361
li 11, 0x200
362
lvx 19, 12, 10
363
li 10, 0x210
364
lvx 20, 12, 9
365
lvx 21, 12, 8
366
lvx 22, 12, 11
367
lvx 23, 12, 10
368
blr
369
.long 0
370
.byte 0,12,0x14,0,0,0,0,0
371
372
373
374
375
376
377
.align 4
378
_vpaes_decrypt_core:
379
lwz 8, 240(5)
380
li 9, 16
381
lvx 5, 0, 5
382
li 11, 0x30
383
lvx 6, 9, 5
384
addi 9, 9, 16
385
vperm 5, 5, 6, 31
386
vsrb 1, 0, 8
387
vperm 0, 12, 12, 0
388
vperm 1, 13, 13, 1
389
vxor 0, 0, 5
390
vxor 0, 0, 1
391
mtctr 8
392
b .Ldec_entry
393
394
.align 4
395
.Ldec_loop:
396
397
398
399
lvx 0, 12, 11
400
401
402
vperm 4, 16, 7, 2
403
subi 11, 11, 16
404
vperm 1, 17, 7, 3
405
andi. 11, 11, 0x30
406
vxor 5, 5, 4
407
408
vxor 5, 5, 1
409
410
411
vperm 4, 18, 7, 2
412
vperm 5, 5, 7, 0
413
vperm 1, 19, 7, 3
414
vxor 5, 5, 4
415
416
vxor 5, 5, 1
417
418
419
vperm 4, 20, 7, 2
420
vperm 5, 5, 7, 0
421
vperm 1, 21, 7, 3
422
vxor 5, 5, 4
423
424
vxor 5, 5, 1
425
426
427
vperm 4, 22, 7, 2
428
vperm 5, 5, 7, 0
429
vperm 1, 23, 7, 3
430
vxor 0, 5, 4
431
vxor 0, 0, 1
432
433
.Ldec_entry:
434
435
vsrb 1, 0, 8
436
vperm 2, 11, 11, 0
437
vxor 0, 0, 1
438
vperm 3, 10, 10, 1
439
vperm 4, 10, 10, 0
440
vand 0, 0, 9
441
vxor 3, 3, 2
442
vxor 4, 4, 2
443
vperm 2, 10, 7, 3
444
vor 5,6,6
445
lvx 6, 9, 5
446
vperm 3, 10, 7, 4
447
addi 9, 9, 16
448
vxor 2, 2, 0
449
vperm 5, 5, 6, 31
450
vxor 3, 3, 1
451
bdnz .Ldec_loop
452
453
454
addi 10, 11, 0x80
455
456
vperm 4, 14, 7, 2
457
458
lvx 2, 12, 10
459
vperm 1, 15, 7, 3
460
vxor 4, 4, 5
461
vxor 0, 1, 4
462
vperm 0, 0, 7, 2
463
blr
464
.long 0
465
.byte 0,12,0x14,0,0,0,0,0
466
467
.globl vpaes_decrypt
468
.type vpaes_decrypt,@function
469
.align 5
470
vpaes_decrypt:
471
.localentry vpaes_decrypt,0
472
473
stdu 1,-256(1)
474
li 10,63
475
li 11,79
476
mflr 6
477
li 7,-1
478
stvx 20,10,1
479
addi 10,10,32
480
stvx 21,11,1
481
addi 11,11,32
482
stvx 22,10,1
483
addi 10,10,32
484
stvx 23,11,1
485
addi 11,11,32
486
stvx 24,10,1
487
addi 10,10,32
488
stvx 25,11,1
489
addi 11,11,32
490
stvx 26,10,1
491
addi 10,10,32
492
stvx 27,11,1
493
addi 11,11,32
494
stvx 28,10,1
495
addi 10,10,32
496
stvx 29,11,1
497
addi 11,11,32
498
stvx 30,10,1
499
stvx 31,11,1
500
stw 7,252(1)
501
li 0, -1
502
std 6,272(1)
503
or 0,0,0
504
505
bl _vpaes_decrypt_preheat
506
507
lvsl 27, 0, 3
508
lvx 0, 0, 3
509
addi 3, 3, 15
510
lvsr 29, 0, 4
511
lvsl 31, 0, 5
512
lvx 26, 0, 3
513
vperm 0, 0, 26, 27
514
515
bl _vpaes_decrypt_core
516
517
andi. 8, 4, 15
518
li 9, 16
519
beq .Ldec_out_aligned
520
521
vperm 0, 0, 0, 29
522
mtctr 9
523
.Ldec_out_unaligned:
524
stvebx 0, 0, 4
525
addi 4, 4, 1
526
bdnz .Ldec_out_unaligned
527
b .Ldec_done
528
529
.align 4
530
.Ldec_out_aligned:
531
stvx 0, 0, 4
532
.Ldec_done:
533
534
li 10,63
535
li 11,79
536
mtlr 6
537
or 7,7,7
538
lvx 20,10,1
539
addi 10,10,32
540
lvx 21,11,1
541
addi 11,11,32
542
lvx 22,10,1
543
addi 10,10,32
544
lvx 23,11,1
545
addi 11,11,32
546
lvx 24,10,1
547
addi 10,10,32
548
lvx 25,11,1
549
addi 11,11,32
550
lvx 26,10,1
551
addi 10,10,32
552
lvx 27,11,1
553
addi 11,11,32
554
lvx 28,10,1
555
addi 10,10,32
556
lvx 29,11,1
557
addi 11,11,32
558
lvx 30,10,1
559
lvx 31,11,1
560
addi 1,1,256
561
blr
562
.long 0
563
.byte 0,12,0x04,1,0x80,0,3,0
564
.long 0
565
.size vpaes_decrypt,.-vpaes_decrypt
566
567
.globl vpaes_cbc_encrypt
568
.type vpaes_cbc_encrypt,@function
569
.align 5
570
vpaes_cbc_encrypt:
571
.localentry vpaes_cbc_encrypt,0
572
573
cmpldi 5,16
574
.long 0x4dc00020
575
576
stdu 1,-272(1)
577
mflr 0
578
li 10,63
579
li 11,79
580
li 12,-1
581
stvx 20,10,1
582
addi 10,10,32
583
stvx 21,11,1
584
addi 11,11,32
585
stvx 22,10,1
586
addi 10,10,32
587
stvx 23,11,1
588
addi 11,11,32
589
stvx 24,10,1
590
addi 10,10,32
591
stvx 25,11,1
592
addi 11,11,32
593
stvx 26,10,1
594
addi 10,10,32
595
stvx 27,11,1
596
addi 11,11,32
597
stvx 28,10,1
598
addi 10,10,32
599
stvx 29,11,1
600
addi 11,11,32
601
stvx 30,10,1
602
stvx 31,11,1
603
stw 12,252(1)
604
std 30,256(1)
605
std 31,264(1)
606
li 9, -16
607
std 0, 288(1)
608
609
and 30, 5, 9
610
andi. 9, 4, 15
611
mr 5, 6
612
mr 31, 7
613
li 6, -1
614
mcrf 1, 0
615
mr 7, 12
616
or 6,6,6
617
618
lvx 24, 0, 31
619
li 9, 15
620
lvsl 27, 0, 31
621
lvx 25, 9, 31
622
vperm 24, 24, 25, 27
623
624
cmpwi 8, 0
625
neg 8, 3
626
vxor 7, 7, 7
627
lvsl 31, 0, 5
628
lvsr 29, 0, 4
629
lvsr 27, 0, 8
630
vnor 30, 7, 7
631
lvx 26, 0, 3
632
vperm 30, 7, 30, 29
633
addi 3, 3, 15
634
635
beq .Lcbc_decrypt
636
637
bl _vpaes_encrypt_preheat
638
li 0, 16
639
640
beq 1, .Lcbc_enc_loop
641
642
vor 0,26,26
643
lvx 26, 0, 3
644
addi 3, 3, 16
645
vperm 0, 0, 26, 27
646
vxor 0, 0, 24
647
648
bl _vpaes_encrypt_core
649
650
andi. 8, 4, 15
651
vor 24,0,0
652
sub 9, 4, 8
653
vperm 28, 0, 0, 29
654
655
.Lcbc_enc_head:
656
stvebx 28, 8, 9
657
cmpwi 8, 15
658
addi 8, 8, 1
659
bne .Lcbc_enc_head
660
661
sub. 30, 30, 0
662
addi 4, 4, 16
663
beq .Lcbc_unaligned_done
664
665
.Lcbc_enc_loop:
666
vor 0,26,26
667
lvx 26, 0, 3
668
addi 3, 3, 16
669
vperm 0, 0, 26, 27
670
vxor 0, 0, 24
671
672
bl _vpaes_encrypt_core
673
674
vor 24,0,0
675
sub. 30, 30, 0
676
vperm 0, 0, 0, 29
677
vsel 1,28,0,30
678
vor 28,0,0
679
stvx 1, 0, 4
680
addi 4, 4, 16
681
bne .Lcbc_enc_loop
682
683
b .Lcbc_done
684
685
.align 5
686
.Lcbc_decrypt:
687
bl _vpaes_decrypt_preheat
688
li 0, 16
689
690
beq 1, .Lcbc_dec_loop
691
692
vor 0,26,26
693
lvx 26, 0, 3
694
addi 3, 3, 16
695
vperm 0, 0, 26, 27
696
vor 25,0,0
697
698
bl _vpaes_decrypt_core
699
700
andi. 8, 4, 15
701
vxor 0, 0, 24
702
vor 24,25,25
703
sub 9, 4, 8
704
vperm 28, 0, 0, 29
705
706
.Lcbc_dec_head:
707
stvebx 28, 8, 9
708
cmpwi 8, 15
709
addi 8, 8, 1
710
bne .Lcbc_dec_head
711
712
sub. 30, 30, 0
713
addi 4, 4, 16
714
beq .Lcbc_unaligned_done
715
716
.Lcbc_dec_loop:
717
vor 0,26,26
718
lvx 26, 0, 3
719
addi 3, 3, 16
720
vperm 0, 0, 26, 27
721
vor 25,0,0
722
723
bl _vpaes_decrypt_core
724
725
vxor 0, 0, 24
726
vor 24,25,25
727
sub. 30, 30, 0
728
vperm 0, 0, 0, 29
729
vsel 1,28,0,30
730
vor 28,0,0
731
stvx 1, 0, 4
732
addi 4, 4, 16
733
bne .Lcbc_dec_loop
734
735
.Lcbc_done:
736
beq 1, .Lcbc_write_iv
737
738
.Lcbc_unaligned_done:
739
andi. 8, 4, 15
740
sub 4, 4, 8
741
li 9, 0
742
.Lcbc_tail:
743
stvebx 28, 9, 4
744
addi 9, 9, 1
745
cmpw 9, 8
746
bne .Lcbc_tail
747
748
.Lcbc_write_iv:
749
neg 8, 31
750
li 10, 4
751
lvsl 29, 0, 8
752
li 11, 8
753
li 12, 12
754
vperm 24, 24, 24, 29
755
stvewx 24, 0, 31
756
stvewx 24, 10, 31
757
stvewx 24, 11, 31
758
stvewx 24, 12, 31
759
760
or 7,7,7
761
li 10,63
762
li 11,79
763
lvx 20,10,1
764
addi 10,10,32
765
lvx 21,11,1
766
addi 11,11,32
767
lvx 22,10,1
768
addi 10,10,32
769
lvx 23,11,1
770
addi 11,11,32
771
lvx 24,10,1
772
addi 10,10,32
773
lvx 25,11,1
774
addi 11,11,32
775
lvx 26,10,1
776
addi 10,10,32
777
lvx 27,11,1
778
addi 11,11,32
779
lvx 28,10,1
780
addi 10,10,32
781
lvx 29,11,1
782
addi 11,11,32
783
lvx 30,10,1
784
lvx 31,11,1
785
.Lcbc_abort:
786
ld 0, 288(1)
787
ld 30,256(1)
788
ld 31,264(1)
789
mtlr 0
790
addi 1,1,272
791
blr
792
.long 0
793
.byte 0,12,0x04,1,0x80,2,6,0
794
.long 0
795
.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt
796
797
798
799
800
801
.align 4
802
_vpaes_key_preheat:
803
mflr 8
804
bl .Lconsts
805
mtlr 8
806
li 11, 0xc0
807
li 10, 0xd0
808
li 9, 0xe0
809
li 8, 0xf0
810
811
vspltisb 8,4
812
vxor 9,9,9
813
lvx 10, 12, 11
814
li 11, 0x120
815
lvx 11, 12, 10
816
li 10, 0x130
817
lvx 12, 12, 9
818
li 9, 0x220
819
lvx 13, 12, 8
820
li 8, 0x230
821
822
lvx 14, 12, 11
823
li 11, 0x240
824
lvx 15, 12, 10
825
li 10, 0x250
826
827
lvx 16, 12, 9
828
li 9, 0x260
829
lvx 17, 12, 8
830
li 8, 0x270
831
lvx 18, 12, 11
832
li 11, 0x280
833
lvx 19, 12, 10
834
li 10, 0x290
835
lvx 20, 12, 9
836
li 9, 0x2a0
837
lvx 21, 12, 8
838
li 8, 0x2b0
839
lvx 22, 12, 11
840
lvx 23, 12, 10
841
842
lvx 24, 12, 9
843
lvx 25, 0, 12
844
lvx 26, 12, 8
845
blr
846
.long 0
847
.byte 0,12,0x14,0,0,0,0,0
848
849
.align 4
850
_vpaes_schedule_core:
851
mflr 7
852
853
bl _vpaes_key_preheat
854
855
856
neg 8, 3
857
lvx 0, 0, 3
858
addi 3, 3, 15
859
lvsr 27, 0, 8
860
lvx 6, 0, 3
861
addi 3, 3, 8
862
vperm 0, 0, 6, 27
863
864
865
vor 3,0,0
866
bl _vpaes_schedule_transform
867
vor 7,0,0
868
869
bne 1, .Lschedule_am_decrypting
870
871
872
li 8, 0x30
873
li 9, 4
874
li 10, 8
875
li 11, 12
876
877
lvsr 29, 0, 5
878
vnor 30, 9, 9
879
vperm 30, 9, 30, 29
880
881
882
vperm 28, 0, 0, 29
883
stvewx 28, 0, 5
884
stvewx 28, 9, 5
885
stvewx 28, 10, 5
886
addi 10, 12, 0x80
887
stvewx 28, 11, 5
888
b .Lschedule_go
889
890
.Lschedule_am_decrypting:
891
srwi 8, 4, 1
892
andi. 8, 8, 32
893
xori 8, 8, 32
894
addi 10, 12, 0x80
895
896
lvx 1, 8, 10
897
li 9, 4
898
li 10, 8
899
li 11, 12
900
vperm 4, 3, 3, 1
901
902
neg 0, 5
903
lvsl 29, 0, 0
904
vnor 30, 9, 9
905
vperm 30, 30, 9, 29
906
907
908
vperm 28, 4, 4, 29
909
stvewx 28, 0, 5
910
stvewx 28, 9, 5
911
stvewx 28, 10, 5
912
addi 10, 12, 0x80
913
stvewx 28, 11, 5
914
addi 5, 5, 15
915
xori 8, 8, 0x30
916
917
.Lschedule_go:
918
cmplwi 4, 192
919
bgt .Lschedule_256
920
beq .Lschedule_192
921
922
923
924
925
926
927
928
929
930
931
.Lschedule_128:
932
li 0, 10
933
mtctr 0
934
935
.Loop_schedule_128:
936
bl _vpaes_schedule_round
937
bdz .Lschedule_mangle_last
938
bl _vpaes_schedule_mangle
939
b .Loop_schedule_128
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
.align 4
957
.Lschedule_192:
958
li 0, 4
959
lvx 0, 0, 3
960
vperm 0, 6, 0, 27
961
vsldoi 0, 3, 0, 8
962
bl _vpaes_schedule_transform
963
vsldoi 6, 0, 9, 8
964
vsldoi 6, 9, 6, 8
965
mtctr 0
966
967
.Loop_schedule_192:
968
bl _vpaes_schedule_round
969
vsldoi 0, 6, 0, 8
970
bl _vpaes_schedule_mangle
971
bl _vpaes_schedule_192_smear
972
bl _vpaes_schedule_mangle
973
bl _vpaes_schedule_round
974
bdz .Lschedule_mangle_last
975
bl _vpaes_schedule_mangle
976
bl _vpaes_schedule_192_smear
977
b .Loop_schedule_192
978
979
980
981
982
983
984
985
986
987
988
989
.align 4
990
.Lschedule_256:
991
li 0, 7
992
addi 3, 3, 8
993
lvx 0, 0, 3
994
vperm 0, 6, 0, 27
995
bl _vpaes_schedule_transform
996
mtctr 0
997
998
.Loop_schedule_256:
999
bl _vpaes_schedule_mangle
1000
vor 6,0,0
1001
1002
1003
bl _vpaes_schedule_round
1004
bdz .Lschedule_mangle_last
1005
bl _vpaes_schedule_mangle
1006
1007
1008
vspltw 0, 0, 3
1009
vor 5,7,7
1010
vor 7,6,6
1011
bl _vpaes_schedule_low_round
1012
vor 7,5,5
1013
1014
b .Loop_schedule_256
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
.align 4
1026
.Lschedule_mangle_last:
1027
1028
li 11, 0x2e0
1029
li 9, 0x2f0
1030
bne 1, .Lschedule_mangle_last_dec
1031
1032
1033
lvx 1, 8, 10
1034
li 11, 0x2c0
1035
li 9, 0x2d0
1036
vperm 0, 0, 0, 1
1037
1038
lvx 12, 11, 12
1039
lvx 13, 9, 12
1040
addi 5, 5, 16
1041
vxor 0, 0, 26
1042
bl _vpaes_schedule_transform
1043
1044
1045
vperm 0, 0, 0, 29
1046
li 10, 4
1047
vsel 2,28,0,30
1048
li 11, 8
1049
stvx 2, 0, 5
1050
li 12, 12
1051
stvewx 0, 0, 5
1052
stvewx 0, 10, 5
1053
stvewx 0, 11, 5
1054
stvewx 0, 12, 5
1055
b .Lschedule_mangle_done
1056
1057
.align 4
1058
.Lschedule_mangle_last_dec:
1059
lvx 12, 11, 12
1060
lvx 13, 9, 12
1061
addi 5, 5, -16
1062
vxor 0, 0, 26
1063
bl _vpaes_schedule_transform
1064
1065
1066
addi 9, 5, -15
1067
vperm 0, 0, 0, 29
1068
li 10, 4
1069
vsel 2,28,0,30
1070
li 11, 8
1071
stvx 2, 0, 5
1072
li 12, 12
1073
stvewx 0, 0, 9
1074
stvewx 0, 10, 9
1075
stvewx 0, 11, 9
1076
stvewx 0, 12, 9
1077
1078
1079
.Lschedule_mangle_done:
1080
mtlr 7
1081
1082
vxor 0, 0, 0
1083
vxor 1, 1, 1
1084
vxor 2, 2, 2
1085
vxor 3, 3, 3
1086
vxor 4, 4, 4
1087
vxor 5, 5, 5
1088
vxor 6, 6, 6
1089
vxor 7, 7, 7
1090
1091
blr
1092
.long 0
1093
.byte 0,12,0x14,0,0,0,0,0
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
.align 4
1110
_vpaes_schedule_192_smear:
1111
vspltw 0, 7, 3
1112
vsldoi 1, 9, 6, 12
1113
vsldoi 0, 7, 0, 8
1114
vxor 6, 6, 1
1115
vxor 6, 6, 0
1116
vor 0,6,6
1117
vsldoi 6, 6, 9, 8
1118
vsldoi 6, 9, 6, 8
1119
blr
1120
.long 0
1121
.byte 0,12,0x14,0,0,0,0,0
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
.align 4
1142
_vpaes_schedule_round:
1143
1144
1145
vsldoi 1, 24, 9, 15
1146
vsldoi 24, 24, 24, 15
1147
vxor 7, 7, 1
1148
1149
1150
vspltw 0, 0, 3
1151
vsldoi 0, 0, 0, 1
1152
1153
1154
1155
1156
_vpaes_schedule_low_round:
1157
1158
vsldoi 1, 9, 7, 12
1159
vxor 7, 7, 1
1160
vspltisb 1,0x0f
1161
vsldoi 4, 9, 7, 8
1162
1163
1164
vand 1, 1, 0
1165
vsrb 0, 0, 8
1166
vxor 7, 7, 4
1167
vperm 2, 11, 9, 1
1168
vxor 1, 1, 0
1169
vperm 3, 10, 9, 0
1170
vxor 3, 3, 2
1171
vperm 4, 10, 9, 1
1172
vxor 7, 7, 26
1173
vperm 3, 10, 9, 3
1174
vxor 4, 4, 2
1175
vperm 2, 10, 9, 4
1176
vxor 3, 3, 1
1177
vxor 2, 2, 0
1178
vperm 4, 15, 9, 3
1179
vperm 1, 14, 9, 2
1180
vxor 1, 1, 4
1181
1182
1183
vxor 0, 1, 7
1184
vxor 7, 1, 7
1185
blr
1186
.long 0
1187
.byte 0,12,0x14,0,0,0,0,0
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
.align 4
1199
_vpaes_schedule_transform:
1200
1201
vsrb 2, 0, 8
1202
1203
vperm 0, 12, 12, 0
1204
1205
vperm 2, 13, 13, 2
1206
vxor 0, 0, 2
1207
blr
1208
.long 0
1209
.byte 0,12,0x14,0,0,0,0,0
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
.align 4
1235
_vpaes_schedule_mangle:
1236
1237
1238
bne 1, .Lschedule_mangle_dec
1239
1240
1241
vxor 4, 0, 26
1242
addi 5, 5, 16
1243
vperm 4, 4, 4, 25
1244
vperm 1, 4, 4, 25
1245
vperm 3, 1, 1, 25
1246
vxor 4, 4, 1
1247
lvx 1, 8, 10
1248
vxor 3, 3, 4
1249
1250
vperm 3, 3, 3, 1
1251
addi 8, 8, -16
1252
andi. 8, 8, 0x30
1253
1254
1255
vperm 1, 3, 3, 29
1256
vsel 2,28,1,30
1257
vor 28,1,1
1258
stvx 2, 0, 5
1259
blr
1260
1261
.align 4
1262
.Lschedule_mangle_dec:
1263
1264
1265
vsrb 1, 0, 8
1266
1267
1268
1269
vperm 2, 16, 16, 0
1270
1271
vperm 3, 17, 17, 1
1272
vxor 3, 3, 2
1273
vperm 3, 3, 9, 25
1274
1275
1276
vperm 2, 18, 18, 0
1277
vxor 2, 2, 3
1278
1279
vperm 3, 19, 19, 1
1280
vxor 3, 3, 2
1281
vperm 3, 3, 9, 25
1282
1283
1284
vperm 2, 20, 20, 0
1285
vxor 2, 2, 3
1286
1287
vperm 3, 21, 21, 1
1288
vxor 3, 3, 2
1289
1290
1291
vperm 2, 22, 22, 0
1292
vperm 3, 3, 9, 25
1293
1294
vperm 4, 23, 23, 1
1295
lvx 1, 8, 10
1296
vxor 2, 2, 3
1297
vxor 3, 4, 2
1298
1299
addi 5, 5, -16
1300
1301
vperm 3, 3, 3, 1
1302
addi 8, 8, -16
1303
andi. 8, 8, 0x30
1304
1305
1306
vperm 1, 3, 3, 29
1307
vsel 2,28,1,30
1308
vor 28,1,1
1309
stvx 2, 0, 5
1310
blr
1311
.long 0
1312
.byte 0,12,0x14,0,0,0,0,0
1313
1314
.globl vpaes_set_encrypt_key
1315
.type vpaes_set_encrypt_key,@function
1316
.align 5
1317
vpaes_set_encrypt_key:
1318
.localentry vpaes_set_encrypt_key,0
1319
1320
stdu 1,-256(1)
1321
li 10,63
1322
li 11,79
1323
mflr 0
1324
li 6,-1
1325
stvx 20,10,1
1326
addi 10,10,32
1327
stvx 21,11,1
1328
addi 11,11,32
1329
stvx 22,10,1
1330
addi 10,10,32
1331
stvx 23,11,1
1332
addi 11,11,32
1333
stvx 24,10,1
1334
addi 10,10,32
1335
stvx 25,11,1
1336
addi 11,11,32
1337
stvx 26,10,1
1338
addi 10,10,32
1339
stvx 27,11,1
1340
addi 11,11,32
1341
stvx 28,10,1
1342
addi 10,10,32
1343
stvx 29,11,1
1344
addi 11,11,32
1345
stvx 30,10,1
1346
stvx 31,11,1
1347
stw 6,252(1)
1348
li 7, -1
1349
std 0, 272(1)
1350
or 7,7,7
1351
1352
srwi 9, 4, 5
1353
addi 9, 9, 6
1354
stw 9, 240(5)
1355
1356
cmplw 1,4,4
1357
li 8, 0x30
1358
bl _vpaes_schedule_core
1359
1360
ld 0, 272(1)
1361
li 10,63
1362
li 11,79
1363
or 6,6,6
1364
mtlr 0
1365
xor 3, 3, 3
1366
lvx 20,10,1
1367
addi 10,10,32
1368
lvx 21,11,1
1369
addi 11,11,32
1370
lvx 22,10,1
1371
addi 10,10,32
1372
lvx 23,11,1
1373
addi 11,11,32
1374
lvx 24,10,1
1375
addi 10,10,32
1376
lvx 25,11,1
1377
addi 11,11,32
1378
lvx 26,10,1
1379
addi 10,10,32
1380
lvx 27,11,1
1381
addi 11,11,32
1382
lvx 28,10,1
1383
addi 10,10,32
1384
lvx 29,11,1
1385
addi 11,11,32
1386
lvx 30,10,1
1387
lvx 31,11,1
1388
addi 1,1,256
1389
blr
1390
.long 0
1391
.byte 0,12,0x04,1,0x80,0,3,0
1392
.long 0
1393
.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key
1394
1395
.globl vpaes_set_decrypt_key
1396
.type vpaes_set_decrypt_key,@function
1397
.align 4
1398
vpaes_set_decrypt_key:
1399
.localentry vpaes_set_decrypt_key,0
1400
1401
stdu 1,-256(1)
1402
li 10,63
1403
li 11,79
1404
mflr 0
1405
li 6,-1
1406
stvx 20,10,1
1407
addi 10,10,32
1408
stvx 21,11,1
1409
addi 11,11,32
1410
stvx 22,10,1
1411
addi 10,10,32
1412
stvx 23,11,1
1413
addi 11,11,32
1414
stvx 24,10,1
1415
addi 10,10,32
1416
stvx 25,11,1
1417
addi 11,11,32
1418
stvx 26,10,1
1419
addi 10,10,32
1420
stvx 27,11,1
1421
addi 11,11,32
1422
stvx 28,10,1
1423
addi 10,10,32
1424
stvx 29,11,1
1425
addi 11,11,32
1426
stvx 30,10,1
1427
stvx 31,11,1
1428
stw 6,252(1)
1429
li 7, -1
1430
std 0, 272(1)
1431
or 7,7,7
1432
1433
srwi 9, 4, 5
1434
addi 9, 9, 6
1435
stw 9, 240(5)
1436
1437
slwi 9, 9, 4
1438
add 5, 5, 9
1439
1440
cmplwi 1, 4, 0
1441
srwi 8, 4, 1
1442
andi. 8, 8, 32
1443
xori 8, 8, 32
1444
bl _vpaes_schedule_core
1445
1446
ld 0, 272(1)
1447
li 10,63
1448
li 11,79
1449
or 6,6,6
1450
mtlr 0
1451
xor 3, 3, 3
1452
lvx 20,10,1
1453
addi 10,10,32
1454
lvx 21,11,1
1455
addi 11,11,32
1456
lvx 22,10,1
1457
addi 10,10,32
1458
lvx 23,11,1
1459
addi 11,11,32
1460
lvx 24,10,1
1461
addi 10,10,32
1462
lvx 25,11,1
1463
addi 11,11,32
1464
lvx 26,10,1
1465
addi 10,10,32
1466
lvx 27,11,1
1467
addi 11,11,32
1468
lvx 28,10,1
1469
addi 10,10,32
1470
lvx 29,11,1
1471
addi 11,11,32
1472
lvx 30,10,1
1473
lvx 31,11,1
1474
addi 1,1,256
1475
blr
1476
.long 0
1477
.byte 0,12,0x04,1,0x80,0,3,0
1478
.long 0
1479
.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key
1480
1481