Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/openzfs/module/icp/asm-ppc64/sha2/sha512-p8.S
48775 views
1
// SPDX-License-Identifier: Apache-2.0
2
/*
3
* Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved.
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* https://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*/
17
18
/*
19
* Portions Copyright (c) 2022 Tino Reichardt <[email protected]>
20
* - modified assembly to fit into OpenZFS
21
*/
22
23
#if (defined(__PPC64__) && defined(__BIG_ENDIAN__))
24
25
#if (!defined(_CALL_ELF) || _CALL_ELF == 1)
26
.text
27
28
.globl zfs_sha512_power8
29
.globl .zfs_sha512_power8
30
.type zfs_sha512_power8,@function
31
.section ".opd","aw"
32
.align 3
33
zfs_sha512_power8:
34
.quad .zfs_sha512_power8,.TOC.@tocbase,0
35
.previous
36
.align 6
37
.zfs_sha512_power8:
38
#else
39
.abiversion 2
40
.text
41
42
.globl zfs_sha512_power8
43
.type zfs_sha512_power8,@function
44
.align 6
45
zfs_sha512_power8:
46
.localentry zfs_sha512_power8,0
47
#endif
48
49
stdu 1,-384(1)
50
mflr 8
51
li 10,207
52
li 11,223
53
stvx 24,10,1
54
addi 10,10,32
55
mfspr 12,256
56
stvx 25,11,1
57
addi 11,11,32
58
stvx 26,10,1
59
addi 10,10,32
60
stvx 27,11,1
61
addi 11,11,32
62
stvx 28,10,1
63
addi 10,10,32
64
stvx 29,11,1
65
addi 11,11,32
66
stvx 30,10,1
67
stvx 31,11,1
68
li 11,-4096+255
69
stw 12,332(1)
70
li 10,0x10
71
std 26,336(1)
72
li 26,0x20
73
std 27,344(1)
74
li 27,0x30
75
std 28,352(1)
76
li 28,0x40
77
std 29,360(1)
78
li 29,0x50
79
std 30,368(1)
80
li 30,0x60
81
std 31,376(1)
82
li 31,0x70
83
std 8,400(1)
84
mtspr 256,11
85
86
bl .LPICmeup
87
addi 11,1,79
88
.long 0x7C001E99
89
.long 0x7C4A1E99
90
.long 0x7C9A1E99
91
vsldoi 1,0,0,8
92
.long 0x7CDB1E99
93
vsldoi 3,2,2,8
94
vsldoi 5,4,4,8
95
vsldoi 7,6,6,8
96
li 0,4
97
b .Loop
98
.align 5
99
.Loop:
100
lvx 28,0,6
101
.long 0x7D002699
102
addi 4,4,16
103
mr 7,6
104
stvx 0,0,11
105
stvx 1,10,11
106
stvx 2,26,11
107
stvx 3,27,11
108
stvx 4,28,11
109
stvx 5,29,11
110
stvx 6,30,11
111
stvx 7,31,11
112
.long 0x10E7E0C0
113
lvx 28,10,6
114
.long 0x10E740C0
115
vsel 29,6,5,4
116
.long 0x10C6E0C0
117
.long 0x10E7E8C0
118
.long 0x13C4FEC2
119
.long 0x10E7F0C0
120
vxor 29,0,1
121
vsel 29,1,2,29
122
.long 0x106338C0
123
.long 0x13C086C2
124
.long 0x13DEE8C0
125
.long 0x10E7F0C0
126
lvx 28,26,7
127
.long 0x7D402699
128
addi 4,4,16
129
vsldoi 9,8,8,8
130
.long 0x10C648C0
131
vsel 29,5,4,3
132
.long 0x10A5E0C0
133
.long 0x10C6E8C0
134
.long 0x13C3FEC2
135
.long 0x10C6F0C0
136
vxor 29,7,0
137
vsel 29,0,1,29
138
.long 0x104230C0
139
.long 0x13C786C2
140
.long 0x13DEE8C0
141
.long 0x10C6F0C0
142
lvx 28,27,7
143
.long 0x10A550C0
144
vsel 29,4,3,2
145
.long 0x1084E0C0
146
.long 0x10A5E8C0
147
.long 0x13C2FEC2
148
.long 0x10A5F0C0
149
vxor 29,6,7
150
vsel 29,7,0,29
151
.long 0x102128C0
152
.long 0x13C686C2
153
.long 0x13DEE8C0
154
.long 0x10A5F0C0
155
lvx 28,28,7
156
.long 0x7D802699
157
addi 4,4,16
158
vsldoi 11,10,10,8
159
.long 0x108458C0
160
vsel 29,3,2,1
161
.long 0x1063E0C0
162
.long 0x1084E8C0
163
.long 0x13C1FEC2
164
.long 0x1084F0C0
165
vxor 29,5,6
166
vsel 29,6,7,29
167
.long 0x100020C0
168
.long 0x13C586C2
169
.long 0x13DEE8C0
170
.long 0x1084F0C0
171
lvx 28,29,7
172
.long 0x106360C0
173
vsel 29,2,1,0
174
.long 0x1042E0C0
175
.long 0x1063E8C0
176
.long 0x13C0FEC2
177
.long 0x1063F0C0
178
vxor 29,4,5
179
vsel 29,5,6,29
180
.long 0x10E718C0
181
.long 0x13C486C2
182
.long 0x13DEE8C0
183
.long 0x1063F0C0
184
lvx 28,30,7
185
.long 0x7DC02699
186
addi 4,4,16
187
vsldoi 13,12,12,8
188
.long 0x104268C0
189
vsel 29,1,0,7
190
.long 0x1021E0C0
191
.long 0x1042E8C0
192
.long 0x13C7FEC2
193
.long 0x1042F0C0
194
vxor 29,3,4
195
vsel 29,4,5,29
196
.long 0x10C610C0
197
.long 0x13C386C2
198
.long 0x13DEE8C0
199
.long 0x1042F0C0
200
lvx 28,31,7
201
addi 7,7,0x80
202
.long 0x102170C0
203
vsel 29,0,7,6
204
.long 0x1000E0C0
205
.long 0x1021E8C0
206
.long 0x13C6FEC2
207
.long 0x1021F0C0
208
vxor 29,2,3
209
vsel 29,3,4,29
210
.long 0x10A508C0
211
.long 0x13C286C2
212
.long 0x13DEE8C0
213
.long 0x1021F0C0
214
lvx 28,0,7
215
.long 0x7E002699
216
addi 4,4,16
217
vsldoi 15,14,14,8
218
.long 0x100078C0
219
vsel 29,7,6,5
220
.long 0x10E7E0C0
221
.long 0x1000E8C0
222
.long 0x13C5FEC2
223
.long 0x1000F0C0
224
vxor 29,1,2
225
vsel 29,2,3,29
226
.long 0x108400C0
227
.long 0x13C186C2
228
.long 0x13DEE8C0
229
.long 0x1000F0C0
230
lvx 28,10,7
231
.long 0x10E780C0
232
vsel 29,6,5,4
233
.long 0x10C6E0C0
234
.long 0x10E7E8C0
235
.long 0x13C4FEC2
236
.long 0x10E7F0C0
237
vxor 29,0,1
238
vsel 29,1,2,29
239
.long 0x106338C0
240
.long 0x13C086C2
241
.long 0x13DEE8C0
242
.long 0x10E7F0C0
243
lvx 28,26,7
244
.long 0x7E402699
245
addi 4,4,16
246
vsldoi 17,16,16,8
247
.long 0x10C688C0
248
vsel 29,5,4,3
249
.long 0x10A5E0C0
250
.long 0x10C6E8C0
251
.long 0x13C3FEC2
252
.long 0x10C6F0C0
253
vxor 29,7,0
254
vsel 29,0,1,29
255
.long 0x104230C0
256
.long 0x13C786C2
257
.long 0x13DEE8C0
258
.long 0x10C6F0C0
259
lvx 28,27,7
260
.long 0x10A590C0
261
vsel 29,4,3,2
262
.long 0x1084E0C0
263
.long 0x10A5E8C0
264
.long 0x13C2FEC2
265
.long 0x10A5F0C0
266
vxor 29,6,7
267
vsel 29,7,0,29
268
.long 0x102128C0
269
.long 0x13C686C2
270
.long 0x13DEE8C0
271
.long 0x10A5F0C0
272
lvx 28,28,7
273
.long 0x7F002699
274
addi 4,4,16
275
vsldoi 19,18,18,8
276
.long 0x108498C0
277
vsel 29,3,2,1
278
.long 0x1063E0C0
279
.long 0x1084E8C0
280
.long 0x13C1FEC2
281
.long 0x1084F0C0
282
vxor 29,5,6
283
vsel 29,6,7,29
284
.long 0x100020C0
285
.long 0x13C586C2
286
.long 0x13DEE8C0
287
.long 0x1084F0C0
288
lvx 28,29,7
289
.long 0x1063C0C0
290
vsel 29,2,1,0
291
.long 0x1042E0C0
292
.long 0x1063E8C0
293
.long 0x13C0FEC2
294
.long 0x1063F0C0
295
vxor 29,4,5
296
vsel 29,5,6,29
297
.long 0x10E718C0
298
.long 0x13C486C2
299
.long 0x13DEE8C0
300
.long 0x1063F0C0
301
lvx 28,30,7
302
.long 0x7F402699
303
addi 4,4,16
304
vsldoi 25,24,24,8
305
.long 0x1042C8C0
306
vsel 29,1,0,7
307
.long 0x1021E0C0
308
.long 0x1042E8C0
309
.long 0x13C7FEC2
310
.long 0x1042F0C0
311
vxor 29,3,4
312
vsel 29,4,5,29
313
.long 0x10C610C0
314
.long 0x13C386C2
315
.long 0x13DEE8C0
316
.long 0x1042F0C0
317
lvx 28,31,7
318
addi 7,7,0x80
319
.long 0x1021D0C0
320
vsel 29,0,7,6
321
.long 0x1000E0C0
322
.long 0x1021E8C0
323
.long 0x13C6FEC2
324
.long 0x1021F0C0
325
vxor 29,2,3
326
vsel 29,3,4,29
327
.long 0x10A508C0
328
.long 0x13C286C2
329
.long 0x13DEE8C0
330
.long 0x1021F0C0
331
lvx 28,0,7
332
vsldoi 27,26,26,8
333
.long 0x13C906C2
334
.long 0x1108F0C0
335
.long 0x13DA7EC2
336
.long 0x1108F0C0
337
.long 0x110888C0
338
.long 0x1000D8C0
339
vsel 29,7,6,5
340
.long 0x10E7E0C0
341
.long 0x1000E8C0
342
.long 0x13C5FEC2
343
.long 0x1000F0C0
344
vxor 29,1,2
345
vsel 29,2,3,29
346
.long 0x108400C0
347
.long 0x13C186C2
348
.long 0x13DEE8C0
349
.long 0x1000F0C0
350
lvx 28,10,7
351
mtctr 0
352
b .L16_xx
353
.align 5
354
.L16_xx:
355
.long 0x13CA06C2
356
.long 0x1129F0C0
357
.long 0x13DB7EC2
358
.long 0x1129F0C0
359
.long 0x112990C0
360
.long 0x10E740C0
361
vsel 29,6,5,4
362
.long 0x10C6E0C0
363
.long 0x10E7E8C0
364
.long 0x13C4FEC2
365
.long 0x10E7F0C0
366
vxor 29,0,1
367
vsel 29,1,2,29
368
.long 0x106338C0
369
.long 0x13C086C2
370
.long 0x13DEE8C0
371
.long 0x10E7F0C0
372
lvx 28,26,7
373
.long 0x13CB06C2
374
.long 0x114AF0C0
375
.long 0x13C87EC2
376
.long 0x114AF0C0
377
.long 0x114A98C0
378
.long 0x10C648C0
379
vsel 29,5,4,3
380
.long 0x10A5E0C0
381
.long 0x10C6E8C0
382
.long 0x13C3FEC2
383
.long 0x10C6F0C0
384
vxor 29,7,0
385
vsel 29,0,1,29
386
.long 0x104230C0
387
.long 0x13C786C2
388
.long 0x13DEE8C0
389
.long 0x10C6F0C0
390
lvx 28,27,7
391
.long 0x13CC06C2
392
.long 0x116BF0C0
393
.long 0x13C97EC2
394
.long 0x116BF0C0
395
.long 0x116BC0C0
396
.long 0x10A550C0
397
vsel 29,4,3,2
398
.long 0x1084E0C0
399
.long 0x10A5E8C0
400
.long 0x13C2FEC2
401
.long 0x10A5F0C0
402
vxor 29,6,7
403
vsel 29,7,0,29
404
.long 0x102128C0
405
.long 0x13C686C2
406
.long 0x13DEE8C0
407
.long 0x10A5F0C0
408
lvx 28,28,7
409
.long 0x13CD06C2
410
.long 0x118CF0C0
411
.long 0x13CA7EC2
412
.long 0x118CF0C0
413
.long 0x118CC8C0
414
.long 0x108458C0
415
vsel 29,3,2,1
416
.long 0x1063E0C0
417
.long 0x1084E8C0
418
.long 0x13C1FEC2
419
.long 0x1084F0C0
420
vxor 29,5,6
421
vsel 29,6,7,29
422
.long 0x100020C0
423
.long 0x13C586C2
424
.long 0x13DEE8C0
425
.long 0x1084F0C0
426
lvx 28,29,7
427
.long 0x13CE06C2
428
.long 0x11ADF0C0
429
.long 0x13CB7EC2
430
.long 0x11ADF0C0
431
.long 0x11ADD0C0
432
.long 0x106360C0
433
vsel 29,2,1,0
434
.long 0x1042E0C0
435
.long 0x1063E8C0
436
.long 0x13C0FEC2
437
.long 0x1063F0C0
438
vxor 29,4,5
439
vsel 29,5,6,29
440
.long 0x10E718C0
441
.long 0x13C486C2
442
.long 0x13DEE8C0
443
.long 0x1063F0C0
444
lvx 28,30,7
445
.long 0x13CF06C2
446
.long 0x11CEF0C0
447
.long 0x13CC7EC2
448
.long 0x11CEF0C0
449
.long 0x11CED8C0
450
.long 0x104268C0
451
vsel 29,1,0,7
452
.long 0x1021E0C0
453
.long 0x1042E8C0
454
.long 0x13C7FEC2
455
.long 0x1042F0C0
456
vxor 29,3,4
457
vsel 29,4,5,29
458
.long 0x10C610C0
459
.long 0x13C386C2
460
.long 0x13DEE8C0
461
.long 0x1042F0C0
462
lvx 28,31,7
463
addi 7,7,0x80
464
.long 0x13D006C2
465
.long 0x11EFF0C0
466
.long 0x13CD7EC2
467
.long 0x11EFF0C0
468
.long 0x11EF40C0
469
.long 0x102170C0
470
vsel 29,0,7,6
471
.long 0x1000E0C0
472
.long 0x1021E8C0
473
.long 0x13C6FEC2
474
.long 0x1021F0C0
475
vxor 29,2,3
476
vsel 29,3,4,29
477
.long 0x10A508C0
478
.long 0x13C286C2
479
.long 0x13DEE8C0
480
.long 0x1021F0C0
481
lvx 28,0,7
482
.long 0x13D106C2
483
.long 0x1210F0C0
484
.long 0x13CE7EC2
485
.long 0x1210F0C0
486
.long 0x121048C0
487
.long 0x100078C0
488
vsel 29,7,6,5
489
.long 0x10E7E0C0
490
.long 0x1000E8C0
491
.long 0x13C5FEC2
492
.long 0x1000F0C0
493
vxor 29,1,2
494
vsel 29,2,3,29
495
.long 0x108400C0
496
.long 0x13C186C2
497
.long 0x13DEE8C0
498
.long 0x1000F0C0
499
lvx 28,10,7
500
.long 0x13D206C2
501
.long 0x1231F0C0
502
.long 0x13CF7EC2
503
.long 0x1231F0C0
504
.long 0x123150C0
505
.long 0x10E780C0
506
vsel 29,6,5,4
507
.long 0x10C6E0C0
508
.long 0x10E7E8C0
509
.long 0x13C4FEC2
510
.long 0x10E7F0C0
511
vxor 29,0,1
512
vsel 29,1,2,29
513
.long 0x106338C0
514
.long 0x13C086C2
515
.long 0x13DEE8C0
516
.long 0x10E7F0C0
517
lvx 28,26,7
518
.long 0x13D306C2
519
.long 0x1252F0C0
520
.long 0x13D07EC2
521
.long 0x1252F0C0
522
.long 0x125258C0
523
.long 0x10C688C0
524
vsel 29,5,4,3
525
.long 0x10A5E0C0
526
.long 0x10C6E8C0
527
.long 0x13C3FEC2
528
.long 0x10C6F0C0
529
vxor 29,7,0
530
vsel 29,0,1,29
531
.long 0x104230C0
532
.long 0x13C786C2
533
.long 0x13DEE8C0
534
.long 0x10C6F0C0
535
lvx 28,27,7
536
.long 0x13D806C2
537
.long 0x1273F0C0
538
.long 0x13D17EC2
539
.long 0x1273F0C0
540
.long 0x127360C0
541
.long 0x10A590C0
542
vsel 29,4,3,2
543
.long 0x1084E0C0
544
.long 0x10A5E8C0
545
.long 0x13C2FEC2
546
.long 0x10A5F0C0
547
vxor 29,6,7
548
vsel 29,7,0,29
549
.long 0x102128C0
550
.long 0x13C686C2
551
.long 0x13DEE8C0
552
.long 0x10A5F0C0
553
lvx 28,28,7
554
.long 0x13D906C2
555
.long 0x1318F0C0
556
.long 0x13D27EC2
557
.long 0x1318F0C0
558
.long 0x131868C0
559
.long 0x108498C0
560
vsel 29,3,2,1
561
.long 0x1063E0C0
562
.long 0x1084E8C0
563
.long 0x13C1FEC2
564
.long 0x1084F0C0
565
vxor 29,5,6
566
vsel 29,6,7,29
567
.long 0x100020C0
568
.long 0x13C586C2
569
.long 0x13DEE8C0
570
.long 0x1084F0C0
571
lvx 28,29,7
572
.long 0x13DA06C2
573
.long 0x1339F0C0
574
.long 0x13D37EC2
575
.long 0x1339F0C0
576
.long 0x133970C0
577
.long 0x1063C0C0
578
vsel 29,2,1,0
579
.long 0x1042E0C0
580
.long 0x1063E8C0
581
.long 0x13C0FEC2
582
.long 0x1063F0C0
583
vxor 29,4,5
584
vsel 29,5,6,29
585
.long 0x10E718C0
586
.long 0x13C486C2
587
.long 0x13DEE8C0
588
.long 0x1063F0C0
589
lvx 28,30,7
590
.long 0x13DB06C2
591
.long 0x135AF0C0
592
.long 0x13D87EC2
593
.long 0x135AF0C0
594
.long 0x135A78C0
595
.long 0x1042C8C0
596
vsel 29,1,0,7
597
.long 0x1021E0C0
598
.long 0x1042E8C0
599
.long 0x13C7FEC2
600
.long 0x1042F0C0
601
vxor 29,3,4
602
vsel 29,4,5,29
603
.long 0x10C610C0
604
.long 0x13C386C2
605
.long 0x13DEE8C0
606
.long 0x1042F0C0
607
lvx 28,31,7
608
addi 7,7,0x80
609
.long 0x13C806C2
610
.long 0x137BF0C0
611
.long 0x13D97EC2
612
.long 0x137BF0C0
613
.long 0x137B80C0
614
.long 0x1021D0C0
615
vsel 29,0,7,6
616
.long 0x1000E0C0
617
.long 0x1021E8C0
618
.long 0x13C6FEC2
619
.long 0x1021F0C0
620
vxor 29,2,3
621
vsel 29,3,4,29
622
.long 0x10A508C0
623
.long 0x13C286C2
624
.long 0x13DEE8C0
625
.long 0x1021F0C0
626
lvx 28,0,7
627
.long 0x13C906C2
628
.long 0x1108F0C0
629
.long 0x13DA7EC2
630
.long 0x1108F0C0
631
.long 0x110888C0
632
.long 0x1000D8C0
633
vsel 29,7,6,5
634
.long 0x10E7E0C0
635
.long 0x1000E8C0
636
.long 0x13C5FEC2
637
.long 0x1000F0C0
638
vxor 29,1,2
639
vsel 29,2,3,29
640
.long 0x108400C0
641
.long 0x13C186C2
642
.long 0x13DEE8C0
643
.long 0x1000F0C0
644
lvx 28,10,7
645
bdnz .L16_xx
646
647
lvx 10,0,11
648
subic. 5,5,1
649
lvx 11,10,11
650
.long 0x100050C0
651
lvx 12,26,11
652
.long 0x102158C0
653
lvx 13,27,11
654
.long 0x104260C0
655
lvx 14,28,11
656
.long 0x106368C0
657
lvx 15,29,11
658
.long 0x108470C0
659
lvx 16,30,11
660
.long 0x10A578C0
661
lvx 17,31,11
662
.long 0x10C680C0
663
.long 0x10E788C0
664
bne .Loop
665
vperm 0,0,1,28
666
vperm 2,2,3,28
667
vperm 4,4,5,28
668
vperm 6,6,7,28
669
.long 0x7C001F99
670
.long 0x7C4A1F99
671
.long 0x7C9A1F99
672
.long 0x7CDB1F99
673
addi 11,1,207
674
mtlr 8
675
mtspr 256,12
676
lvx 24,0,11
677
lvx 25,10,11
678
lvx 26,26,11
679
lvx 27,27,11
680
lvx 28,28,11
681
lvx 29,29,11
682
lvx 30,30,11
683
lvx 31,31,11
684
ld 26,336(1)
685
ld 27,344(1)
686
ld 28,352(1)
687
ld 29,360(1)
688
ld 30,368(1)
689
ld 31,376(1)
690
addi 1,1,384
691
blr
692
.long 0
693
.byte 0,12,4,1,0x80,6,3,0
694
.long 0
695
#if (!defined(_CALL_ELF) || _CALL_ELF == 1)
696
.size .zfs_sha512_power8,.-.zfs_sha512_power8
697
.size zfs_sha512_power8,.-.zfs_sha512_power8
698
#else
699
.size zfs_sha512_power8,.-zfs_sha512_power8
700
#endif
701
.align 6
702
.LPICmeup:
703
mflr 0
704
bcl 20,31,$+4
705
mflr 6
706
addi 6,6,56
707
mtlr 0
708
blr
709
.long 0
710
.byte 0,12,0x14,0,0,0,0,0
711
.space 28
712
.long 0x428a2f98,0xd728ae22
713
.long 0x428a2f98,0xd728ae22
714
.long 0x71374491,0x23ef65cd
715
.long 0x71374491,0x23ef65cd
716
.long 0xb5c0fbcf,0xec4d3b2f
717
.long 0xb5c0fbcf,0xec4d3b2f
718
.long 0xe9b5dba5,0x8189dbbc
719
.long 0xe9b5dba5,0x8189dbbc
720
.long 0x3956c25b,0xf348b538
721
.long 0x3956c25b,0xf348b538
722
.long 0x59f111f1,0xb605d019
723
.long 0x59f111f1,0xb605d019
724
.long 0x923f82a4,0xaf194f9b
725
.long 0x923f82a4,0xaf194f9b
726
.long 0xab1c5ed5,0xda6d8118
727
.long 0xab1c5ed5,0xda6d8118
728
.long 0xd807aa98,0xa3030242
729
.long 0xd807aa98,0xa3030242
730
.long 0x12835b01,0x45706fbe
731
.long 0x12835b01,0x45706fbe
732
.long 0x243185be,0x4ee4b28c
733
.long 0x243185be,0x4ee4b28c
734
.long 0x550c7dc3,0xd5ffb4e2
735
.long 0x550c7dc3,0xd5ffb4e2
736
.long 0x72be5d74,0xf27b896f
737
.long 0x72be5d74,0xf27b896f
738
.long 0x80deb1fe,0x3b1696b1
739
.long 0x80deb1fe,0x3b1696b1
740
.long 0x9bdc06a7,0x25c71235
741
.long 0x9bdc06a7,0x25c71235
742
.long 0xc19bf174,0xcf692694
743
.long 0xc19bf174,0xcf692694
744
.long 0xe49b69c1,0x9ef14ad2
745
.long 0xe49b69c1,0x9ef14ad2
746
.long 0xefbe4786,0x384f25e3
747
.long 0xefbe4786,0x384f25e3
748
.long 0x0fc19dc6,0x8b8cd5b5
749
.long 0x0fc19dc6,0x8b8cd5b5
750
.long 0x240ca1cc,0x77ac9c65
751
.long 0x240ca1cc,0x77ac9c65
752
.long 0x2de92c6f,0x592b0275
753
.long 0x2de92c6f,0x592b0275
754
.long 0x4a7484aa,0x6ea6e483
755
.long 0x4a7484aa,0x6ea6e483
756
.long 0x5cb0a9dc,0xbd41fbd4
757
.long 0x5cb0a9dc,0xbd41fbd4
758
.long 0x76f988da,0x831153b5
759
.long 0x76f988da,0x831153b5
760
.long 0x983e5152,0xee66dfab
761
.long 0x983e5152,0xee66dfab
762
.long 0xa831c66d,0x2db43210
763
.long 0xa831c66d,0x2db43210
764
.long 0xb00327c8,0x98fb213f
765
.long 0xb00327c8,0x98fb213f
766
.long 0xbf597fc7,0xbeef0ee4
767
.long 0xbf597fc7,0xbeef0ee4
768
.long 0xc6e00bf3,0x3da88fc2
769
.long 0xc6e00bf3,0x3da88fc2
770
.long 0xd5a79147,0x930aa725
771
.long 0xd5a79147,0x930aa725
772
.long 0x06ca6351,0xe003826f
773
.long 0x06ca6351,0xe003826f
774
.long 0x14292967,0x0a0e6e70
775
.long 0x14292967,0x0a0e6e70
776
.long 0x27b70a85,0x46d22ffc
777
.long 0x27b70a85,0x46d22ffc
778
.long 0x2e1b2138,0x5c26c926
779
.long 0x2e1b2138,0x5c26c926
780
.long 0x4d2c6dfc,0x5ac42aed
781
.long 0x4d2c6dfc,0x5ac42aed
782
.long 0x53380d13,0x9d95b3df
783
.long 0x53380d13,0x9d95b3df
784
.long 0x650a7354,0x8baf63de
785
.long 0x650a7354,0x8baf63de
786
.long 0x766a0abb,0x3c77b2a8
787
.long 0x766a0abb,0x3c77b2a8
788
.long 0x81c2c92e,0x47edaee6
789
.long 0x81c2c92e,0x47edaee6
790
.long 0x92722c85,0x1482353b
791
.long 0x92722c85,0x1482353b
792
.long 0xa2bfe8a1,0x4cf10364
793
.long 0xa2bfe8a1,0x4cf10364
794
.long 0xa81a664b,0xbc423001
795
.long 0xa81a664b,0xbc423001
796
.long 0xc24b8b70,0xd0f89791
797
.long 0xc24b8b70,0xd0f89791
798
.long 0xc76c51a3,0x0654be30
799
.long 0xc76c51a3,0x0654be30
800
.long 0xd192e819,0xd6ef5218
801
.long 0xd192e819,0xd6ef5218
802
.long 0xd6990624,0x5565a910
803
.long 0xd6990624,0x5565a910
804
.long 0xf40e3585,0x5771202a
805
.long 0xf40e3585,0x5771202a
806
.long 0x106aa070,0x32bbd1b8
807
.long 0x106aa070,0x32bbd1b8
808
.long 0x19a4c116,0xb8d2d0c8
809
.long 0x19a4c116,0xb8d2d0c8
810
.long 0x1e376c08,0x5141ab53
811
.long 0x1e376c08,0x5141ab53
812
.long 0x2748774c,0xdf8eeb99
813
.long 0x2748774c,0xdf8eeb99
814
.long 0x34b0bcb5,0xe19b48a8
815
.long 0x34b0bcb5,0xe19b48a8
816
.long 0x391c0cb3,0xc5c95a63
817
.long 0x391c0cb3,0xc5c95a63
818
.long 0x4ed8aa4a,0xe3418acb
819
.long 0x4ed8aa4a,0xe3418acb
820
.long 0x5b9cca4f,0x7763e373
821
.long 0x5b9cca4f,0x7763e373
822
.long 0x682e6ff3,0xd6b2b8a3
823
.long 0x682e6ff3,0xd6b2b8a3
824
.long 0x748f82ee,0x5defb2fc
825
.long 0x748f82ee,0x5defb2fc
826
.long 0x78a5636f,0x43172f60
827
.long 0x78a5636f,0x43172f60
828
.long 0x84c87814,0xa1f0ab72
829
.long 0x84c87814,0xa1f0ab72
830
.long 0x8cc70208,0x1a6439ec
831
.long 0x8cc70208,0x1a6439ec
832
.long 0x90befffa,0x23631e28
833
.long 0x90befffa,0x23631e28
834
.long 0xa4506ceb,0xde82bde9
835
.long 0xa4506ceb,0xde82bde9
836
.long 0xbef9a3f7,0xb2c67915
837
.long 0xbef9a3f7,0xb2c67915
838
.long 0xc67178f2,0xe372532b
839
.long 0xc67178f2,0xe372532b
840
.long 0xca273ece,0xea26619c
841
.long 0xca273ece,0xea26619c
842
.long 0xd186b8c7,0x21c0c207
843
.long 0xd186b8c7,0x21c0c207
844
.long 0xeada7dd6,0xcde0eb1e
845
.long 0xeada7dd6,0xcde0eb1e
846
.long 0xf57d4f7f,0xee6ed178
847
.long 0xf57d4f7f,0xee6ed178
848
.long 0x06f067aa,0x72176fba
849
.long 0x06f067aa,0x72176fba
850
.long 0x0a637dc5,0xa2c898a6
851
.long 0x0a637dc5,0xa2c898a6
852
.long 0x113f9804,0xbef90dae
853
.long 0x113f9804,0xbef90dae
854
.long 0x1b710b35,0x131c471b
855
.long 0x1b710b35,0x131c471b
856
.long 0x28db77f5,0x23047d84
857
.long 0x28db77f5,0x23047d84
858
.long 0x32caab7b,0x40c72493
859
.long 0x32caab7b,0x40c72493
860
.long 0x3c9ebe0a,0x15c9bebc
861
.long 0x3c9ebe0a,0x15c9bebc
862
.long 0x431d67c4,0x9c100d4c
863
.long 0x431d67c4,0x9c100d4c
864
.long 0x4cc5d4be,0xcb3e42b6
865
.long 0x4cc5d4be,0xcb3e42b6
866
.long 0x597f299c,0xfc657e2a
867
.long 0x597f299c,0xfc657e2a
868
.long 0x5fcb6fab,0x3ad6faec
869
.long 0x5fcb6fab,0x3ad6faec
870
.long 0x6c44198c,0x4a475817
871
.long 0x6c44198c,0x4a475817
872
.long 0,0
873
.long 0,0
874
.long 0x00010203,0x04050607
875
.long 0x10111213,0x14151617
876
877
#elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))
878
879
.abiversion 2
880
.text
881
882
.globl zfs_sha512_power8
883
.type zfs_sha512_power8,@function
884
.align 6
885
zfs_sha512_power8:
886
.localentry zfs_sha512_power8,0
887
888
stdu 1,-384(1)
889
mflr 8
890
li 10,207
891
li 11,223
892
stvx 24,10,1
893
addi 10,10,32
894
li 12,-1
895
stvx 25,11,1
896
addi 11,11,32
897
stvx 26,10,1
898
addi 10,10,32
899
stvx 27,11,1
900
addi 11,11,32
901
stvx 28,10,1
902
addi 10,10,32
903
stvx 29,11,1
904
addi 11,11,32
905
stvx 30,10,1
906
stvx 31,11,1
907
li 11,-4096+255
908
stw 12,332(1)
909
li 10,0x10
910
std 26,336(1)
911
li 26,0x20
912
std 27,344(1)
913
li 27,0x30
914
std 28,352(1)
915
li 28,0x40
916
std 29,360(1)
917
li 29,0x50
918
std 30,368(1)
919
li 30,0x60
920
std 31,376(1)
921
li 31,0x70
922
std 8,400(1)
923
or 11,11,11
924
925
bl .LPICmeup
926
addi 11,1,79
927
li 7,8
928
lvsl 31,0,7
929
vspltisb 28,0x0f
930
vxor 31,31,28
931
.long 0x7C001E99
932
.long 0x7C4A1E99
933
.long 0x7C9A1E99
934
vsldoi 1,0,0,8
935
.long 0x7CDB1E99
936
vsldoi 3,2,2,8
937
vsldoi 5,4,4,8
938
vsldoi 7,6,6,8
939
li 0,4
940
b .Loop
941
.align 5
942
.Loop:
943
lvx 28,0,6
944
.long 0x7D002699
945
addi 4,4,16
946
mr 7,6
947
stvx 0,0,11
948
stvx 1,10,11
949
stvx 2,26,11
950
stvx 3,27,11
951
stvx 4,28,11
952
stvx 5,29,11
953
stvx 6,30,11
954
stvx 7,31,11
955
.long 0x10E7E0C0
956
lvx 28,10,6
957
vperm 8,8,8,31
958
.long 0x10E740C0
959
vsel 29,6,5,4
960
.long 0x10C6E0C0
961
.long 0x10E7E8C0
962
.long 0x13C4FEC2
963
.long 0x10E7F0C0
964
vxor 29,0,1
965
vsel 29,1,2,29
966
.long 0x106338C0
967
.long 0x13C086C2
968
.long 0x13DEE8C0
969
.long 0x10E7F0C0
970
lvx 28,26,7
971
.long 0x7D402699
972
addi 4,4,16
973
vsldoi 9,8,8,8
974
.long 0x10C648C0
975
vsel 29,5,4,3
976
.long 0x10A5E0C0
977
.long 0x10C6E8C0
978
.long 0x13C3FEC2
979
.long 0x10C6F0C0
980
vxor 29,7,0
981
vsel 29,0,1,29
982
.long 0x104230C0
983
.long 0x13C786C2
984
.long 0x13DEE8C0
985
.long 0x10C6F0C0
986
lvx 28,27,7
987
vperm 10,10,10,31
988
.long 0x10A550C0
989
vsel 29,4,3,2
990
.long 0x1084E0C0
991
.long 0x10A5E8C0
992
.long 0x13C2FEC2
993
.long 0x10A5F0C0
994
vxor 29,6,7
995
vsel 29,7,0,29
996
.long 0x102128C0
997
.long 0x13C686C2
998
.long 0x13DEE8C0
999
.long 0x10A5F0C0
1000
lvx 28,28,7
1001
.long 0x7D802699
1002
addi 4,4,16
1003
vsldoi 11,10,10,8
1004
.long 0x108458C0
1005
vsel 29,3,2,1
1006
.long 0x1063E0C0
1007
.long 0x1084E8C0
1008
.long 0x13C1FEC2
1009
.long 0x1084F0C0
1010
vxor 29,5,6
1011
vsel 29,6,7,29
1012
.long 0x100020C0
1013
.long 0x13C586C2
1014
.long 0x13DEE8C0
1015
.long 0x1084F0C0
1016
lvx 28,29,7
1017
vperm 12,12,12,31
1018
.long 0x106360C0
1019
vsel 29,2,1,0
1020
.long 0x1042E0C0
1021
.long 0x1063E8C0
1022
.long 0x13C0FEC2
1023
.long 0x1063F0C0
1024
vxor 29,4,5
1025
vsel 29,5,6,29
1026
.long 0x10E718C0
1027
.long 0x13C486C2
1028
.long 0x13DEE8C0
1029
.long 0x1063F0C0
1030
lvx 28,30,7
1031
.long 0x7DC02699
1032
addi 4,4,16
1033
vsldoi 13,12,12,8
1034
.long 0x104268C0
1035
vsel 29,1,0,7
1036
.long 0x1021E0C0
1037
.long 0x1042E8C0
1038
.long 0x13C7FEC2
1039
.long 0x1042F0C0
1040
vxor 29,3,4
1041
vsel 29,4,5,29
1042
.long 0x10C610C0
1043
.long 0x13C386C2
1044
.long 0x13DEE8C0
1045
.long 0x1042F0C0
1046
lvx 28,31,7
1047
addi 7,7,0x80
1048
vperm 14,14,14,31
1049
.long 0x102170C0
1050
vsel 29,0,7,6
1051
.long 0x1000E0C0
1052
.long 0x1021E8C0
1053
.long 0x13C6FEC2
1054
.long 0x1021F0C0
1055
vxor 29,2,3
1056
vsel 29,3,4,29
1057
.long 0x10A508C0
1058
.long 0x13C286C2
1059
.long 0x13DEE8C0
1060
.long 0x1021F0C0
1061
lvx 28,0,7
1062
.long 0x7E002699
1063
addi 4,4,16
1064
vsldoi 15,14,14,8
1065
.long 0x100078C0
1066
vsel 29,7,6,5
1067
.long 0x10E7E0C0
1068
.long 0x1000E8C0
1069
.long 0x13C5FEC2
1070
.long 0x1000F0C0
1071
vxor 29,1,2
1072
vsel 29,2,3,29
1073
.long 0x108400C0
1074
.long 0x13C186C2
1075
.long 0x13DEE8C0
1076
.long 0x1000F0C0
1077
lvx 28,10,7
1078
vperm 16,16,16,31
1079
.long 0x10E780C0
1080
vsel 29,6,5,4
1081
.long 0x10C6E0C0
1082
.long 0x10E7E8C0
1083
.long 0x13C4FEC2
1084
.long 0x10E7F0C0
1085
vxor 29,0,1
1086
vsel 29,1,2,29
1087
.long 0x106338C0
1088
.long 0x13C086C2
1089
.long 0x13DEE8C0
1090
.long 0x10E7F0C0
1091
lvx 28,26,7
1092
.long 0x7E402699
1093
addi 4,4,16
1094
vsldoi 17,16,16,8
1095
.long 0x10C688C0
1096
vsel 29,5,4,3
1097
.long 0x10A5E0C0
1098
.long 0x10C6E8C0
1099
.long 0x13C3FEC2
1100
.long 0x10C6F0C0
1101
vxor 29,7,0
1102
vsel 29,0,1,29
1103
.long 0x104230C0
1104
.long 0x13C786C2
1105
.long 0x13DEE8C0
1106
.long 0x10C6F0C0
1107
lvx 28,27,7
1108
vperm 18,18,18,31
1109
.long 0x10A590C0
1110
vsel 29,4,3,2
1111
.long 0x1084E0C0
1112
.long 0x10A5E8C0
1113
.long 0x13C2FEC2
1114
.long 0x10A5F0C0
1115
vxor 29,6,7
1116
vsel 29,7,0,29
1117
.long 0x102128C0
1118
.long 0x13C686C2
1119
.long 0x13DEE8C0
1120
.long 0x10A5F0C0
1121
lvx 28,28,7
1122
.long 0x7F002699
1123
addi 4,4,16
1124
vsldoi 19,18,18,8
1125
.long 0x108498C0
1126
vsel 29,3,2,1
1127
.long 0x1063E0C0
1128
.long 0x1084E8C0
1129
.long 0x13C1FEC2
1130
.long 0x1084F0C0
1131
vxor 29,5,6
1132
vsel 29,6,7,29
1133
.long 0x100020C0
1134
.long 0x13C586C2
1135
.long 0x13DEE8C0
1136
.long 0x1084F0C0
1137
lvx 28,29,7
1138
vperm 24,24,24,31
1139
.long 0x1063C0C0
1140
vsel 29,2,1,0
1141
.long 0x1042E0C0
1142
.long 0x1063E8C0
1143
.long 0x13C0FEC2
1144
.long 0x1063F0C0
1145
vxor 29,4,5
1146
vsel 29,5,6,29
1147
.long 0x10E718C0
1148
.long 0x13C486C2
1149
.long 0x13DEE8C0
1150
.long 0x1063F0C0
1151
lvx 28,30,7
1152
.long 0x7F402699
1153
addi 4,4,16
1154
vsldoi 25,24,24,8
1155
.long 0x1042C8C0
1156
vsel 29,1,0,7
1157
.long 0x1021E0C0
1158
.long 0x1042E8C0
1159
.long 0x13C7FEC2
1160
.long 0x1042F0C0
1161
vxor 29,3,4
1162
vsel 29,4,5,29
1163
.long 0x10C610C0
1164
.long 0x13C386C2
1165
.long 0x13DEE8C0
1166
.long 0x1042F0C0
1167
lvx 28,31,7
1168
addi 7,7,0x80
1169
vperm 26,26,26,31
1170
.long 0x1021D0C0
1171
vsel 29,0,7,6
1172
.long 0x1000E0C0
1173
.long 0x1021E8C0
1174
.long 0x13C6FEC2
1175
.long 0x1021F0C0
1176
vxor 29,2,3
1177
vsel 29,3,4,29
1178
.long 0x10A508C0
1179
.long 0x13C286C2
1180
.long 0x13DEE8C0
1181
.long 0x1021F0C0
1182
lvx 28,0,7
1183
vsldoi 27,26,26,8
1184
.long 0x13C906C2
1185
.long 0x1108F0C0
1186
.long 0x13DA7EC2
1187
.long 0x1108F0C0
1188
.long 0x110888C0
1189
.long 0x1000D8C0
1190
vsel 29,7,6,5
1191
.long 0x10E7E0C0
1192
.long 0x1000E8C0
1193
.long 0x13C5FEC2
1194
.long 0x1000F0C0
1195
vxor 29,1,2
1196
vsel 29,2,3,29
1197
.long 0x108400C0
1198
.long 0x13C186C2
1199
.long 0x13DEE8C0
1200
.long 0x1000F0C0
1201
lvx 28,10,7
1202
mtctr 0
1203
b .L16_xx
1204
.align 5
1205
.L16_xx:
1206
.long 0x13CA06C2
1207
.long 0x1129F0C0
1208
.long 0x13DB7EC2
1209
.long 0x1129F0C0
1210
.long 0x112990C0
1211
.long 0x10E740C0
1212
vsel 29,6,5,4
1213
.long 0x10C6E0C0
1214
.long 0x10E7E8C0
1215
.long 0x13C4FEC2
1216
.long 0x10E7F0C0
1217
vxor 29,0,1
1218
vsel 29,1,2,29
1219
.long 0x106338C0
1220
.long 0x13C086C2
1221
.long 0x13DEE8C0
1222
.long 0x10E7F0C0
1223
lvx 28,26,7
1224
.long 0x13CB06C2
1225
.long 0x114AF0C0
1226
.long 0x13C87EC2
1227
.long 0x114AF0C0
1228
.long 0x114A98C0
1229
.long 0x10C648C0
1230
vsel 29,5,4,3
1231
.long 0x10A5E0C0
1232
.long 0x10C6E8C0
1233
.long 0x13C3FEC2
1234
.long 0x10C6F0C0
1235
vxor 29,7,0
1236
vsel 29,0,1,29
1237
.long 0x104230C0
1238
.long 0x13C786C2
1239
.long 0x13DEE8C0
1240
.long 0x10C6F0C0
1241
lvx 28,27,7
1242
.long 0x13CC06C2
1243
.long 0x116BF0C0
1244
.long 0x13C97EC2
1245
.long 0x116BF0C0
1246
.long 0x116BC0C0
1247
.long 0x10A550C0
1248
vsel 29,4,3,2
1249
.long 0x1084E0C0
1250
.long 0x10A5E8C0
1251
.long 0x13C2FEC2
1252
.long 0x10A5F0C0
1253
vxor 29,6,7
1254
vsel 29,7,0,29
1255
.long 0x102128C0
1256
.long 0x13C686C2
1257
.long 0x13DEE8C0
1258
.long 0x10A5F0C0
1259
lvx 28,28,7
1260
.long 0x13CD06C2
1261
.long 0x118CF0C0
1262
.long 0x13CA7EC2
1263
.long 0x118CF0C0
1264
.long 0x118CC8C0
1265
.long 0x108458C0
1266
vsel 29,3,2,1
1267
.long 0x1063E0C0
1268
.long 0x1084E8C0
1269
.long 0x13C1FEC2
1270
.long 0x1084F0C0
1271
vxor 29,5,6
1272
vsel 29,6,7,29
1273
.long 0x100020C0
1274
.long 0x13C586C2
1275
.long 0x13DEE8C0
1276
.long 0x1084F0C0
1277
lvx 28,29,7
1278
.long 0x13CE06C2
1279
.long 0x11ADF0C0
1280
.long 0x13CB7EC2
1281
.long 0x11ADF0C0
1282
.long 0x11ADD0C0
1283
.long 0x106360C0
1284
vsel 29,2,1,0
1285
.long 0x1042E0C0
1286
.long 0x1063E8C0
1287
.long 0x13C0FEC2
1288
.long 0x1063F0C0
1289
vxor 29,4,5
1290
vsel 29,5,6,29
1291
.long 0x10E718C0
1292
.long 0x13C486C2
1293
.long 0x13DEE8C0
1294
.long 0x1063F0C0
1295
lvx 28,30,7
1296
.long 0x13CF06C2
1297
.long 0x11CEF0C0
1298
.long 0x13CC7EC2
1299
.long 0x11CEF0C0
1300
.long 0x11CED8C0
1301
.long 0x104268C0
1302
vsel 29,1,0,7
1303
.long 0x1021E0C0
1304
.long 0x1042E8C0
1305
.long 0x13C7FEC2
1306
.long 0x1042F0C0
1307
vxor 29,3,4
1308
vsel 29,4,5,29
1309
.long 0x10C610C0
1310
.long 0x13C386C2
1311
.long 0x13DEE8C0
1312
.long 0x1042F0C0
1313
lvx 28,31,7
1314
addi 7,7,0x80
1315
.long 0x13D006C2
1316
.long 0x11EFF0C0
1317
.long 0x13CD7EC2
1318
.long 0x11EFF0C0
1319
.long 0x11EF40C0
1320
.long 0x102170C0
1321
vsel 29,0,7,6
1322
.long 0x1000E0C0
1323
.long 0x1021E8C0
1324
.long 0x13C6FEC2
1325
.long 0x1021F0C0
1326
vxor 29,2,3
1327
vsel 29,3,4,29
1328
.long 0x10A508C0
1329
.long 0x13C286C2
1330
.long 0x13DEE8C0
1331
.long 0x1021F0C0
1332
lvx 28,0,7
1333
.long 0x13D106C2
1334
.long 0x1210F0C0
1335
.long 0x13CE7EC2
1336
.long 0x1210F0C0
1337
.long 0x121048C0
1338
.long 0x100078C0
1339
vsel 29,7,6,5
1340
.long 0x10E7E0C0
1341
.long 0x1000E8C0
1342
.long 0x13C5FEC2
1343
.long 0x1000F0C0
1344
vxor 29,1,2
1345
vsel 29,2,3,29
1346
.long 0x108400C0
1347
.long 0x13C186C2
1348
.long 0x13DEE8C0
1349
.long 0x1000F0C0
1350
lvx 28,10,7
1351
.long 0x13D206C2
1352
.long 0x1231F0C0
1353
.long 0x13CF7EC2
1354
.long 0x1231F0C0
1355
.long 0x123150C0
1356
.long 0x10E780C0
1357
vsel 29,6,5,4
1358
.long 0x10C6E0C0
1359
.long 0x10E7E8C0
1360
.long 0x13C4FEC2
1361
.long 0x10E7F0C0
1362
vxor 29,0,1
1363
vsel 29,1,2,29
1364
.long 0x106338C0
1365
.long 0x13C086C2
1366
.long 0x13DEE8C0
1367
.long 0x10E7F0C0
1368
lvx 28,26,7
1369
.long 0x13D306C2
1370
.long 0x1252F0C0
1371
.long 0x13D07EC2
1372
.long 0x1252F0C0
1373
.long 0x125258C0
1374
.long 0x10C688C0
1375
vsel 29,5,4,3
1376
.long 0x10A5E0C0
1377
.long 0x10C6E8C0
1378
.long 0x13C3FEC2
1379
.long 0x10C6F0C0
1380
vxor 29,7,0
1381
vsel 29,0,1,29
1382
.long 0x104230C0
1383
.long 0x13C786C2
1384
.long 0x13DEE8C0
1385
.long 0x10C6F0C0
1386
lvx 28,27,7
1387
.long 0x13D806C2
1388
.long 0x1273F0C0
1389
.long 0x13D17EC2
1390
.long 0x1273F0C0
1391
.long 0x127360C0
1392
.long 0x10A590C0
1393
vsel 29,4,3,2
1394
.long 0x1084E0C0
1395
.long 0x10A5E8C0
1396
.long 0x13C2FEC2
1397
.long 0x10A5F0C0
1398
vxor 29,6,7
1399
vsel 29,7,0,29
1400
.long 0x102128C0
1401
.long 0x13C686C2
1402
.long 0x13DEE8C0
1403
.long 0x10A5F0C0
1404
lvx 28,28,7
1405
.long 0x13D906C2
1406
.long 0x1318F0C0
1407
.long 0x13D27EC2
1408
.long 0x1318F0C0
1409
.long 0x131868C0
1410
.long 0x108498C0
1411
vsel 29,3,2,1
1412
.long 0x1063E0C0
1413
.long 0x1084E8C0
1414
.long 0x13C1FEC2
1415
.long 0x1084F0C0
1416
vxor 29,5,6
1417
vsel 29,6,7,29
1418
.long 0x100020C0
1419
.long 0x13C586C2
1420
.long 0x13DEE8C0
1421
.long 0x1084F0C0
1422
lvx 28,29,7
1423
.long 0x13DA06C2
1424
.long 0x1339F0C0
1425
.long 0x13D37EC2
1426
.long 0x1339F0C0
1427
.long 0x133970C0
1428
.long 0x1063C0C0
1429
vsel 29,2,1,0
1430
.long 0x1042E0C0
1431
.long 0x1063E8C0
1432
.long 0x13C0FEC2
1433
.long 0x1063F0C0
1434
vxor 29,4,5
1435
vsel 29,5,6,29
1436
.long 0x10E718C0
1437
.long 0x13C486C2
1438
.long 0x13DEE8C0
1439
.long 0x1063F0C0
1440
lvx 28,30,7
1441
.long 0x13DB06C2
1442
.long 0x135AF0C0
1443
.long 0x13D87EC2
1444
.long 0x135AF0C0
1445
.long 0x135A78C0
1446
.long 0x1042C8C0
1447
vsel 29,1,0,7
1448
.long 0x1021E0C0
1449
.long 0x1042E8C0
1450
.long 0x13C7FEC2
1451
.long 0x1042F0C0
1452
vxor 29,3,4
1453
vsel 29,4,5,29
1454
.long 0x10C610C0
1455
.long 0x13C386C2
1456
.long 0x13DEE8C0
1457
.long 0x1042F0C0
1458
lvx 28,31,7
1459
addi 7,7,0x80
1460
.long 0x13C806C2
1461
.long 0x137BF0C0
1462
.long 0x13D97EC2
1463
.long 0x137BF0C0
1464
.long 0x137B80C0
1465
.long 0x1021D0C0
1466
vsel 29,0,7,6
1467
.long 0x1000E0C0
1468
.long 0x1021E8C0
1469
.long 0x13C6FEC2
1470
.long 0x1021F0C0
1471
vxor 29,2,3
1472
vsel 29,3,4,29
1473
.long 0x10A508C0
1474
.long 0x13C286C2
1475
.long 0x13DEE8C0
1476
.long 0x1021F0C0
1477
lvx 28,0,7
1478
.long 0x13C906C2
1479
.long 0x1108F0C0
1480
.long 0x13DA7EC2
1481
.long 0x1108F0C0
1482
.long 0x110888C0
1483
.long 0x1000D8C0
1484
vsel 29,7,6,5
1485
.long 0x10E7E0C0
1486
.long 0x1000E8C0
1487
.long 0x13C5FEC2
1488
.long 0x1000F0C0
1489
vxor 29,1,2
1490
vsel 29,2,3,29
1491
.long 0x108400C0
1492
.long 0x13C186C2
1493
.long 0x13DEE8C0
1494
.long 0x1000F0C0
1495
lvx 28,10,7
1496
bdnz .L16_xx
1497
1498
lvx 10,0,11
1499
subic. 5,5,1
1500
lvx 11,10,11
1501
.long 0x100050C0
1502
lvx 12,26,11
1503
.long 0x102158C0
1504
lvx 13,27,11
1505
.long 0x104260C0
1506
lvx 14,28,11
1507
.long 0x106368C0
1508
lvx 15,29,11
1509
.long 0x108470C0
1510
lvx 16,30,11
1511
.long 0x10A578C0
1512
lvx 17,31,11
1513
.long 0x10C680C0
1514
.long 0x10E788C0
1515
bne .Loop
1516
vperm 0,0,1,28
1517
vperm 2,2,3,28
1518
vperm 4,4,5,28
1519
vperm 6,6,7,28
1520
.long 0x7C001F99
1521
.long 0x7C4A1F99
1522
.long 0x7C9A1F99
1523
.long 0x7CDB1F99
1524
addi 11,1,207
1525
mtlr 8
1526
or 12,12,12
1527
lvx 24,0,11
1528
lvx 25,10,11
1529
lvx 26,26,11
1530
lvx 27,27,11
1531
lvx 28,28,11
1532
lvx 29,29,11
1533
lvx 30,30,11
1534
lvx 31,31,11
1535
ld 26,336(1)
1536
ld 27,344(1)
1537
ld 28,352(1)
1538
ld 29,360(1)
1539
ld 30,368(1)
1540
ld 31,376(1)
1541
addi 1,1,384
1542
blr
1543
.long 0
1544
.byte 0,12,4,1,0x80,6,3,0
1545
.long 0
1546
.size zfs_sha512_power8,.-zfs_sha512_power8
1547
.align 6
1548
.LPICmeup:
1549
mflr 0
1550
bcl 20,31,$+4
1551
mflr 6
1552
addi 6,6,56
1553
mtlr 0
1554
blr
1555
.long 0
1556
.byte 0,12,0x14,0,0,0,0,0
1557
.space 28
1558
.long 0xd728ae22,0x428a2f98
1559
.long 0xd728ae22,0x428a2f98
1560
.long 0x23ef65cd,0x71374491
1561
.long 0x23ef65cd,0x71374491
1562
.long 0xec4d3b2f,0xb5c0fbcf
1563
.long 0xec4d3b2f,0xb5c0fbcf
1564
.long 0x8189dbbc,0xe9b5dba5
1565
.long 0x8189dbbc,0xe9b5dba5
1566
.long 0xf348b538,0x3956c25b
1567
.long 0xf348b538,0x3956c25b
1568
.long 0xb605d019,0x59f111f1
1569
.long 0xb605d019,0x59f111f1
1570
.long 0xaf194f9b,0x923f82a4
1571
.long 0xaf194f9b,0x923f82a4
1572
.long 0xda6d8118,0xab1c5ed5
1573
.long 0xda6d8118,0xab1c5ed5
1574
.long 0xa3030242,0xd807aa98
1575
.long 0xa3030242,0xd807aa98
1576
.long 0x45706fbe,0x12835b01
1577
.long 0x45706fbe,0x12835b01
1578
.long 0x4ee4b28c,0x243185be
1579
.long 0x4ee4b28c,0x243185be
1580
.long 0xd5ffb4e2,0x550c7dc3
1581
.long 0xd5ffb4e2,0x550c7dc3
1582
.long 0xf27b896f,0x72be5d74
1583
.long 0xf27b896f,0x72be5d74
1584
.long 0x3b1696b1,0x80deb1fe
1585
.long 0x3b1696b1,0x80deb1fe
1586
.long 0x25c71235,0x9bdc06a7
1587
.long 0x25c71235,0x9bdc06a7
1588
.long 0xcf692694,0xc19bf174
1589
.long 0xcf692694,0xc19bf174
1590
.long 0x9ef14ad2,0xe49b69c1
1591
.long 0x9ef14ad2,0xe49b69c1
1592
.long 0x384f25e3,0xefbe4786
1593
.long 0x384f25e3,0xefbe4786
1594
.long 0x8b8cd5b5,0x0fc19dc6
1595
.long 0x8b8cd5b5,0x0fc19dc6
1596
.long 0x77ac9c65,0x240ca1cc
1597
.long 0x77ac9c65,0x240ca1cc
1598
.long 0x592b0275,0x2de92c6f
1599
.long 0x592b0275,0x2de92c6f
1600
.long 0x6ea6e483,0x4a7484aa
1601
.long 0x6ea6e483,0x4a7484aa
1602
.long 0xbd41fbd4,0x5cb0a9dc
1603
.long 0xbd41fbd4,0x5cb0a9dc
1604
.long 0x831153b5,0x76f988da
1605
.long 0x831153b5,0x76f988da
1606
.long 0xee66dfab,0x983e5152
1607
.long 0xee66dfab,0x983e5152
1608
.long 0x2db43210,0xa831c66d
1609
.long 0x2db43210,0xa831c66d
1610
.long 0x98fb213f,0xb00327c8
1611
.long 0x98fb213f,0xb00327c8
1612
.long 0xbeef0ee4,0xbf597fc7
1613
.long 0xbeef0ee4,0xbf597fc7
1614
.long 0x3da88fc2,0xc6e00bf3
1615
.long 0x3da88fc2,0xc6e00bf3
1616
.long 0x930aa725,0xd5a79147
1617
.long 0x930aa725,0xd5a79147
1618
.long 0xe003826f,0x06ca6351
1619
.long 0xe003826f,0x06ca6351
1620
.long 0x0a0e6e70,0x14292967
1621
.long 0x0a0e6e70,0x14292967
1622
.long 0x46d22ffc,0x27b70a85
1623
.long 0x46d22ffc,0x27b70a85
1624
.long 0x5c26c926,0x2e1b2138
1625
.long 0x5c26c926,0x2e1b2138
1626
.long 0x5ac42aed,0x4d2c6dfc
1627
.long 0x5ac42aed,0x4d2c6dfc
1628
.long 0x9d95b3df,0x53380d13
1629
.long 0x9d95b3df,0x53380d13
1630
.long 0x8baf63de,0x650a7354
1631
.long 0x8baf63de,0x650a7354
1632
.long 0x3c77b2a8,0x766a0abb
1633
.long 0x3c77b2a8,0x766a0abb
1634
.long 0x47edaee6,0x81c2c92e
1635
.long 0x47edaee6,0x81c2c92e
1636
.long 0x1482353b,0x92722c85
1637
.long 0x1482353b,0x92722c85
1638
.long 0x4cf10364,0xa2bfe8a1
1639
.long 0x4cf10364,0xa2bfe8a1
1640
.long 0xbc423001,0xa81a664b
1641
.long 0xbc423001,0xa81a664b
1642
.long 0xd0f89791,0xc24b8b70
1643
.long 0xd0f89791,0xc24b8b70
1644
.long 0x0654be30,0xc76c51a3
1645
.long 0x0654be30,0xc76c51a3
1646
.long 0xd6ef5218,0xd192e819
1647
.long 0xd6ef5218,0xd192e819
1648
.long 0x5565a910,0xd6990624
1649
.long 0x5565a910,0xd6990624
1650
.long 0x5771202a,0xf40e3585
1651
.long 0x5771202a,0xf40e3585
1652
.long 0x32bbd1b8,0x106aa070
1653
.long 0x32bbd1b8,0x106aa070
1654
.long 0xb8d2d0c8,0x19a4c116
1655
.long 0xb8d2d0c8,0x19a4c116
1656
.long 0x5141ab53,0x1e376c08
1657
.long 0x5141ab53,0x1e376c08
1658
.long 0xdf8eeb99,0x2748774c
1659
.long 0xdf8eeb99,0x2748774c
1660
.long 0xe19b48a8,0x34b0bcb5
1661
.long 0xe19b48a8,0x34b0bcb5
1662
.long 0xc5c95a63,0x391c0cb3
1663
.long 0xc5c95a63,0x391c0cb3
1664
.long 0xe3418acb,0x4ed8aa4a
1665
.long 0xe3418acb,0x4ed8aa4a
1666
.long 0x7763e373,0x5b9cca4f
1667
.long 0x7763e373,0x5b9cca4f
1668
.long 0xd6b2b8a3,0x682e6ff3
1669
.long 0xd6b2b8a3,0x682e6ff3
1670
.long 0x5defb2fc,0x748f82ee
1671
.long 0x5defb2fc,0x748f82ee
1672
.long 0x43172f60,0x78a5636f
1673
.long 0x43172f60,0x78a5636f
1674
.long 0xa1f0ab72,0x84c87814
1675
.long 0xa1f0ab72,0x84c87814
1676
.long 0x1a6439ec,0x8cc70208
1677
.long 0x1a6439ec,0x8cc70208
1678
.long 0x23631e28,0x90befffa
1679
.long 0x23631e28,0x90befffa
1680
.long 0xde82bde9,0xa4506ceb
1681
.long 0xde82bde9,0xa4506ceb
1682
.long 0xb2c67915,0xbef9a3f7
1683
.long 0xb2c67915,0xbef9a3f7
1684
.long 0xe372532b,0xc67178f2
1685
.long 0xe372532b,0xc67178f2
1686
.long 0xea26619c,0xca273ece
1687
.long 0xea26619c,0xca273ece
1688
.long 0x21c0c207,0xd186b8c7
1689
.long 0x21c0c207,0xd186b8c7
1690
.long 0xcde0eb1e,0xeada7dd6
1691
.long 0xcde0eb1e,0xeada7dd6
1692
.long 0xee6ed178,0xf57d4f7f
1693
.long 0xee6ed178,0xf57d4f7f
1694
.long 0x72176fba,0x06f067aa
1695
.long 0x72176fba,0x06f067aa
1696
.long 0xa2c898a6,0x0a637dc5
1697
.long 0xa2c898a6,0x0a637dc5
1698
.long 0xbef90dae,0x113f9804
1699
.long 0xbef90dae,0x113f9804
1700
.long 0x131c471b,0x1b710b35
1701
.long 0x131c471b,0x1b710b35
1702
.long 0x23047d84,0x28db77f5
1703
.long 0x23047d84,0x28db77f5
1704
.long 0x40c72493,0x32caab7b
1705
.long 0x40c72493,0x32caab7b
1706
.long 0x15c9bebc,0x3c9ebe0a
1707
.long 0x15c9bebc,0x3c9ebe0a
1708
.long 0x9c100d4c,0x431d67c4
1709
.long 0x9c100d4c,0x431d67c4
1710
.long 0xcb3e42b6,0x4cc5d4be
1711
.long 0xcb3e42b6,0x4cc5d4be
1712
.long 0xfc657e2a,0x597f299c
1713
.long 0xfc657e2a,0x597f299c
1714
.long 0x3ad6faec,0x5fcb6fab
1715
.long 0x3ad6faec,0x5fcb6fab
1716
.long 0x4a475817,0x6c44198c
1717
.long 0x4a475817,0x6c44198c
1718
.long 0,0
1719
.long 0,0
1720
.long 0x14151617,0x10111213
1721
.long 0x04050607,0x00010203
1722
1723
#endif
1724
1725