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