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/sha256-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_sha256_power8
29
.globl .zfs_sha256_power8
30
.type zfs_sha256_power8,@function
31
.section ".opd","aw"
32
.align 3
33
zfs_sha256_power8:
34
.quad .zfs_sha256_power8,.TOC.@tocbase,0
35
.previous
36
.align 6
37
.zfs_sha256_power8:
38
#else
39
.abiversion 2
40
.text
41
42
.globl zfs_sha256_power8
43
.type zfs_sha256_power8,@function
44
.align 6
45
zfs_sha256_power8:
46
.localentry zfs_sha256_power8,0
47
#endif
48
stdu 1,-384(1)
49
mflr 8
50
li 10,207
51
li 11,223
52
stvx 24,10,1
53
addi 10,10,32
54
mfspr 12,256
55
stvx 25,11,1
56
addi 11,11,32
57
stvx 26,10,1
58
addi 10,10,32
59
stvx 27,11,1
60
addi 11,11,32
61
stvx 28,10,1
62
addi 10,10,32
63
stvx 29,11,1
64
addi 11,11,32
65
stvx 30,10,1
66
stvx 31,11,1
67
li 11,-4096+255
68
stw 12,332(1)
69
li 10,0x10
70
std 26,336(1)
71
li 26,0x20
72
std 27,344(1)
73
li 27,0x30
74
std 28,352(1)
75
li 28,0x40
76
std 29,360(1)
77
li 29,0x50
78
std 30,368(1)
79
li 30,0x60
80
std 31,376(1)
81
li 31,0x70
82
std 8,400(1)
83
mtspr 256,11
84
85
bl .LPICmeup
86
addi 11,1,79
87
.long 0x7C001E19
88
.long 0x7C8A1E19
89
vsldoi 1,0,0,4
90
vsldoi 2,0,0,8
91
vsldoi 3,0,0,12
92
vsldoi 5,4,4,4
93
vsldoi 6,4,4,8
94
vsldoi 7,4,4,12
95
li 0,3
96
b .Loop
97
.align 5
98
.Loop:
99
lvx 28,0,6
100
.long 0x7D002699
101
addi 4,4,16
102
mr 7,6
103
stvx 0,0,11
104
stvx 1,10,11
105
stvx 2,26,11
106
stvx 3,27,11
107
stvx 4,28,11
108
stvx 5,29,11
109
stvx 6,30,11
110
stvx 7,31,11
111
vadduwm 7,7,28
112
lvx 28,10,6
113
vadduwm 7,7,8
114
vsel 29,6,5,4
115
vadduwm 6,6,28
116
vadduwm 7,7,29
117
.long 0x13C4FE82
118
vadduwm 7,7,30
119
vxor 29,0,1
120
vsel 29,1,2,29
121
vadduwm 3,3,7
122
.long 0x13C08682
123
vadduwm 30,30,29
124
vadduwm 7,7,30
125
lvx 28,26,7
126
vsldoi 9,8,8,4
127
vadduwm 6,6,9
128
vsel 29,5,4,3
129
vadduwm 5,5,28
130
vadduwm 6,6,29
131
.long 0x13C3FE82
132
vadduwm 6,6,30
133
vxor 29,7,0
134
vsel 29,0,1,29
135
vadduwm 2,2,6
136
.long 0x13C78682
137
vadduwm 30,30,29
138
vadduwm 6,6,30
139
lvx 28,27,7
140
vsldoi 10,9,9,4
141
vadduwm 5,5,10
142
vsel 29,4,3,2
143
vadduwm 4,4,28
144
vadduwm 5,5,29
145
.long 0x13C2FE82
146
vadduwm 5,5,30
147
vxor 29,6,7
148
vsel 29,7,0,29
149
vadduwm 1,1,5
150
.long 0x13C68682
151
vadduwm 30,30,29
152
vadduwm 5,5,30
153
lvx 28,28,7
154
.long 0x7D802699
155
addi 4,4,16
156
vsldoi 11,10,10,4
157
vadduwm 4,4,11
158
vsel 29,3,2,1
159
vadduwm 3,3,28
160
vadduwm 4,4,29
161
.long 0x13C1FE82
162
vadduwm 4,4,30
163
vxor 29,5,6
164
vsel 29,6,7,29
165
vadduwm 0,0,4
166
.long 0x13C58682
167
vadduwm 30,30,29
168
vadduwm 4,4,30
169
lvx 28,29,7
170
vadduwm 3,3,12
171
vsel 29,2,1,0
172
vadduwm 2,2,28
173
vadduwm 3,3,29
174
.long 0x13C0FE82
175
vadduwm 3,3,30
176
vxor 29,4,5
177
vsel 29,5,6,29
178
vadduwm 7,7,3
179
.long 0x13C48682
180
vadduwm 30,30,29
181
vadduwm 3,3,30
182
lvx 28,30,7
183
vsldoi 13,12,12,4
184
vadduwm 2,2,13
185
vsel 29,1,0,7
186
vadduwm 1,1,28
187
vadduwm 2,2,29
188
.long 0x13C7FE82
189
vadduwm 2,2,30
190
vxor 29,3,4
191
vsel 29,4,5,29
192
vadduwm 6,6,2
193
.long 0x13C38682
194
vadduwm 30,30,29
195
vadduwm 2,2,30
196
lvx 28,31,7
197
addi 7,7,0x80
198
vsldoi 14,13,13,4
199
vadduwm 1,1,14
200
vsel 29,0,7,6
201
vadduwm 0,0,28
202
vadduwm 1,1,29
203
.long 0x13C6FE82
204
vadduwm 1,1,30
205
vxor 29,2,3
206
vsel 29,3,4,29
207
vadduwm 5,5,1
208
.long 0x13C28682
209
vadduwm 30,30,29
210
vadduwm 1,1,30
211
lvx 28,0,7
212
.long 0x7E002699
213
addi 4,4,16
214
vsldoi 15,14,14,4
215
vadduwm 0,0,15
216
vsel 29,7,6,5
217
vadduwm 7,7,28
218
vadduwm 0,0,29
219
.long 0x13C5FE82
220
vadduwm 0,0,30
221
vxor 29,1,2
222
vsel 29,2,3,29
223
vadduwm 4,4,0
224
.long 0x13C18682
225
vadduwm 30,30,29
226
vadduwm 0,0,30
227
lvx 28,10,7
228
vadduwm 7,7,16
229
vsel 29,6,5,4
230
vadduwm 6,6,28
231
vadduwm 7,7,29
232
.long 0x13C4FE82
233
vadduwm 7,7,30
234
vxor 29,0,1
235
vsel 29,1,2,29
236
vadduwm 3,3,7
237
.long 0x13C08682
238
vadduwm 30,30,29
239
vadduwm 7,7,30
240
lvx 28,26,7
241
vsldoi 17,16,16,4
242
vadduwm 6,6,17
243
vsel 29,5,4,3
244
vadduwm 5,5,28
245
vadduwm 6,6,29
246
.long 0x13C3FE82
247
vadduwm 6,6,30
248
vxor 29,7,0
249
vsel 29,0,1,29
250
vadduwm 2,2,6
251
.long 0x13C78682
252
vadduwm 30,30,29
253
vadduwm 6,6,30
254
lvx 28,27,7
255
vsldoi 18,17,17,4
256
vadduwm 5,5,18
257
vsel 29,4,3,2
258
vadduwm 4,4,28
259
vadduwm 5,5,29
260
.long 0x13C2FE82
261
vadduwm 5,5,30
262
vxor 29,6,7
263
vsel 29,7,0,29
264
vadduwm 1,1,5
265
.long 0x13C68682
266
vadduwm 30,30,29
267
vadduwm 5,5,30
268
lvx 28,28,7
269
.long 0x7F002699
270
addi 4,4,16
271
vsldoi 19,18,18,4
272
vadduwm 4,4,19
273
vsel 29,3,2,1
274
vadduwm 3,3,28
275
vadduwm 4,4,29
276
.long 0x13C1FE82
277
vadduwm 4,4,30
278
vxor 29,5,6
279
vsel 29,6,7,29
280
vadduwm 0,0,4
281
.long 0x13C58682
282
vadduwm 30,30,29
283
vadduwm 4,4,30
284
lvx 28,29,7
285
vadduwm 3,3,24
286
vsel 29,2,1,0
287
vadduwm 2,2,28
288
vadduwm 3,3,29
289
.long 0x13C0FE82
290
vadduwm 3,3,30
291
vxor 29,4,5
292
vsel 29,5,6,29
293
vadduwm 7,7,3
294
.long 0x13C48682
295
vadduwm 30,30,29
296
vadduwm 3,3,30
297
lvx 28,30,7
298
vsldoi 25,24,24,4
299
vadduwm 2,2,25
300
vsel 29,1,0,7
301
vadduwm 1,1,28
302
vadduwm 2,2,29
303
.long 0x13C7FE82
304
vadduwm 2,2,30
305
vxor 29,3,4
306
vsel 29,4,5,29
307
vadduwm 6,6,2
308
.long 0x13C38682
309
vadduwm 30,30,29
310
vadduwm 2,2,30
311
lvx 28,31,7
312
addi 7,7,0x80
313
vsldoi 26,25,25,4
314
vadduwm 1,1,26
315
vsel 29,0,7,6
316
vadduwm 0,0,28
317
vadduwm 1,1,29
318
.long 0x13C6FE82
319
vadduwm 1,1,30
320
vxor 29,2,3
321
vsel 29,3,4,29
322
vadduwm 5,5,1
323
.long 0x13C28682
324
vadduwm 30,30,29
325
vadduwm 1,1,30
326
lvx 28,0,7
327
vsldoi 27,26,26,4
328
.long 0x13C90682
329
vadduwm 8,8,30
330
.long 0x13DA7E82
331
vadduwm 8,8,30
332
vadduwm 8,8,17
333
vadduwm 0,0,27
334
vsel 29,7,6,5
335
vadduwm 7,7,28
336
vadduwm 0,0,29
337
.long 0x13C5FE82
338
vadduwm 0,0,30
339
vxor 29,1,2
340
vsel 29,2,3,29
341
vadduwm 4,4,0
342
.long 0x13C18682
343
vadduwm 30,30,29
344
vadduwm 0,0,30
345
lvx 28,10,7
346
mtctr 0
347
b .L16_xx
348
.align 5
349
.L16_xx:
350
.long 0x13CA0682
351
vadduwm 9,9,30
352
.long 0x13DB7E82
353
vadduwm 9,9,30
354
vadduwm 9,9,18
355
vadduwm 7,7,8
356
vsel 29,6,5,4
357
vadduwm 6,6,28
358
vadduwm 7,7,29
359
.long 0x13C4FE82
360
vadduwm 7,7,30
361
vxor 29,0,1
362
vsel 29,1,2,29
363
vadduwm 3,3,7
364
.long 0x13C08682
365
vadduwm 30,30,29
366
vadduwm 7,7,30
367
lvx 28,26,7
368
.long 0x13CB0682
369
vadduwm 10,10,30
370
.long 0x13C87E82
371
vadduwm 10,10,30
372
vadduwm 10,10,19
373
vadduwm 6,6,9
374
vsel 29,5,4,3
375
vadduwm 5,5,28
376
vadduwm 6,6,29
377
.long 0x13C3FE82
378
vadduwm 6,6,30
379
vxor 29,7,0
380
vsel 29,0,1,29
381
vadduwm 2,2,6
382
.long 0x13C78682
383
vadduwm 30,30,29
384
vadduwm 6,6,30
385
lvx 28,27,7
386
.long 0x13CC0682
387
vadduwm 11,11,30
388
.long 0x13C97E82
389
vadduwm 11,11,30
390
vadduwm 11,11,24
391
vadduwm 5,5,10
392
vsel 29,4,3,2
393
vadduwm 4,4,28
394
vadduwm 5,5,29
395
.long 0x13C2FE82
396
vadduwm 5,5,30
397
vxor 29,6,7
398
vsel 29,7,0,29
399
vadduwm 1,1,5
400
.long 0x13C68682
401
vadduwm 30,30,29
402
vadduwm 5,5,30
403
lvx 28,28,7
404
.long 0x13CD0682
405
vadduwm 12,12,30
406
.long 0x13CA7E82
407
vadduwm 12,12,30
408
vadduwm 12,12,25
409
vadduwm 4,4,11
410
vsel 29,3,2,1
411
vadduwm 3,3,28
412
vadduwm 4,4,29
413
.long 0x13C1FE82
414
vadduwm 4,4,30
415
vxor 29,5,6
416
vsel 29,6,7,29
417
vadduwm 0,0,4
418
.long 0x13C58682
419
vadduwm 30,30,29
420
vadduwm 4,4,30
421
lvx 28,29,7
422
.long 0x13CE0682
423
vadduwm 13,13,30
424
.long 0x13CB7E82
425
vadduwm 13,13,30
426
vadduwm 13,13,26
427
vadduwm 3,3,12
428
vsel 29,2,1,0
429
vadduwm 2,2,28
430
vadduwm 3,3,29
431
.long 0x13C0FE82
432
vadduwm 3,3,30
433
vxor 29,4,5
434
vsel 29,5,6,29
435
vadduwm 7,7,3
436
.long 0x13C48682
437
vadduwm 30,30,29
438
vadduwm 3,3,30
439
lvx 28,30,7
440
.long 0x13CF0682
441
vadduwm 14,14,30
442
.long 0x13CC7E82
443
vadduwm 14,14,30
444
vadduwm 14,14,27
445
vadduwm 2,2,13
446
vsel 29,1,0,7
447
vadduwm 1,1,28
448
vadduwm 2,2,29
449
.long 0x13C7FE82
450
vadduwm 2,2,30
451
vxor 29,3,4
452
vsel 29,4,5,29
453
vadduwm 6,6,2
454
.long 0x13C38682
455
vadduwm 30,30,29
456
vadduwm 2,2,30
457
lvx 28,31,7
458
addi 7,7,0x80
459
.long 0x13D00682
460
vadduwm 15,15,30
461
.long 0x13CD7E82
462
vadduwm 15,15,30
463
vadduwm 15,15,8
464
vadduwm 1,1,14
465
vsel 29,0,7,6
466
vadduwm 0,0,28
467
vadduwm 1,1,29
468
.long 0x13C6FE82
469
vadduwm 1,1,30
470
vxor 29,2,3
471
vsel 29,3,4,29
472
vadduwm 5,5,1
473
.long 0x13C28682
474
vadduwm 30,30,29
475
vadduwm 1,1,30
476
lvx 28,0,7
477
.long 0x13D10682
478
vadduwm 16,16,30
479
.long 0x13CE7E82
480
vadduwm 16,16,30
481
vadduwm 16,16,9
482
vadduwm 0,0,15
483
vsel 29,7,6,5
484
vadduwm 7,7,28
485
vadduwm 0,0,29
486
.long 0x13C5FE82
487
vadduwm 0,0,30
488
vxor 29,1,2
489
vsel 29,2,3,29
490
vadduwm 4,4,0
491
.long 0x13C18682
492
vadduwm 30,30,29
493
vadduwm 0,0,30
494
lvx 28,10,7
495
.long 0x13D20682
496
vadduwm 17,17,30
497
.long 0x13CF7E82
498
vadduwm 17,17,30
499
vadduwm 17,17,10
500
vadduwm 7,7,16
501
vsel 29,6,5,4
502
vadduwm 6,6,28
503
vadduwm 7,7,29
504
.long 0x13C4FE82
505
vadduwm 7,7,30
506
vxor 29,0,1
507
vsel 29,1,2,29
508
vadduwm 3,3,7
509
.long 0x13C08682
510
vadduwm 30,30,29
511
vadduwm 7,7,30
512
lvx 28,26,7
513
.long 0x13D30682
514
vadduwm 18,18,30
515
.long 0x13D07E82
516
vadduwm 18,18,30
517
vadduwm 18,18,11
518
vadduwm 6,6,17
519
vsel 29,5,4,3
520
vadduwm 5,5,28
521
vadduwm 6,6,29
522
.long 0x13C3FE82
523
vadduwm 6,6,30
524
vxor 29,7,0
525
vsel 29,0,1,29
526
vadduwm 2,2,6
527
.long 0x13C78682
528
vadduwm 30,30,29
529
vadduwm 6,6,30
530
lvx 28,27,7
531
.long 0x13D80682
532
vadduwm 19,19,30
533
.long 0x13D17E82
534
vadduwm 19,19,30
535
vadduwm 19,19,12
536
vadduwm 5,5,18
537
vsel 29,4,3,2
538
vadduwm 4,4,28
539
vadduwm 5,5,29
540
.long 0x13C2FE82
541
vadduwm 5,5,30
542
vxor 29,6,7
543
vsel 29,7,0,29
544
vadduwm 1,1,5
545
.long 0x13C68682
546
vadduwm 30,30,29
547
vadduwm 5,5,30
548
lvx 28,28,7
549
.long 0x13D90682
550
vadduwm 24,24,30
551
.long 0x13D27E82
552
vadduwm 24,24,30
553
vadduwm 24,24,13
554
vadduwm 4,4,19
555
vsel 29,3,2,1
556
vadduwm 3,3,28
557
vadduwm 4,4,29
558
.long 0x13C1FE82
559
vadduwm 4,4,30
560
vxor 29,5,6
561
vsel 29,6,7,29
562
vadduwm 0,0,4
563
.long 0x13C58682
564
vadduwm 30,30,29
565
vadduwm 4,4,30
566
lvx 28,29,7
567
.long 0x13DA0682
568
vadduwm 25,25,30
569
.long 0x13D37E82
570
vadduwm 25,25,30
571
vadduwm 25,25,14
572
vadduwm 3,3,24
573
vsel 29,2,1,0
574
vadduwm 2,2,28
575
vadduwm 3,3,29
576
.long 0x13C0FE82
577
vadduwm 3,3,30
578
vxor 29,4,5
579
vsel 29,5,6,29
580
vadduwm 7,7,3
581
.long 0x13C48682
582
vadduwm 30,30,29
583
vadduwm 3,3,30
584
lvx 28,30,7
585
.long 0x13DB0682
586
vadduwm 26,26,30
587
.long 0x13D87E82
588
vadduwm 26,26,30
589
vadduwm 26,26,15
590
vadduwm 2,2,25
591
vsel 29,1,0,7
592
vadduwm 1,1,28
593
vadduwm 2,2,29
594
.long 0x13C7FE82
595
vadduwm 2,2,30
596
vxor 29,3,4
597
vsel 29,4,5,29
598
vadduwm 6,6,2
599
.long 0x13C38682
600
vadduwm 30,30,29
601
vadduwm 2,2,30
602
lvx 28,31,7
603
addi 7,7,0x80
604
.long 0x13C80682
605
vadduwm 27,27,30
606
.long 0x13D97E82
607
vadduwm 27,27,30
608
vadduwm 27,27,16
609
vadduwm 1,1,26
610
vsel 29,0,7,6
611
vadduwm 0,0,28
612
vadduwm 1,1,29
613
.long 0x13C6FE82
614
vadduwm 1,1,30
615
vxor 29,2,3
616
vsel 29,3,4,29
617
vadduwm 5,5,1
618
.long 0x13C28682
619
vadduwm 30,30,29
620
vadduwm 1,1,30
621
lvx 28,0,7
622
.long 0x13C90682
623
vadduwm 8,8,30
624
.long 0x13DA7E82
625
vadduwm 8,8,30
626
vadduwm 8,8,17
627
vadduwm 0,0,27
628
vsel 29,7,6,5
629
vadduwm 7,7,28
630
vadduwm 0,0,29
631
.long 0x13C5FE82
632
vadduwm 0,0,30
633
vxor 29,1,2
634
vsel 29,2,3,29
635
vadduwm 4,4,0
636
.long 0x13C18682
637
vadduwm 30,30,29
638
vadduwm 0,0,30
639
lvx 28,10,7
640
bdnz .L16_xx
641
642
lvx 10,0,11
643
subic. 5,5,1
644
lvx 11,10,11
645
vadduwm 0,0,10
646
lvx 12,26,11
647
vadduwm 1,1,11
648
lvx 13,27,11
649
vadduwm 2,2,12
650
lvx 14,28,11
651
vadduwm 3,3,13
652
lvx 15,29,11
653
vadduwm 4,4,14
654
lvx 16,30,11
655
vadduwm 5,5,15
656
lvx 17,31,11
657
vadduwm 6,6,16
658
vadduwm 7,7,17
659
bne .Loop
660
lvx 8,26,7
661
vperm 0,0,1,28
662
lvx 9,27,7
663
vperm 4,4,5,28
664
vperm 0,0,2,8
665
vperm 4,4,6,8
666
vperm 0,0,3,9
667
vperm 4,4,7,9
668
.long 0x7C001F19
669
.long 0x7C8A1F19
670
addi 11,1,207
671
mtlr 8
672
mtspr 256,12
673
lvx 24,0,11
674
lvx 25,10,11
675
lvx 26,26,11
676
lvx 27,27,11
677
lvx 28,28,11
678
lvx 29,29,11
679
lvx 30,30,11
680
lvx 31,31,11
681
ld 26,336(1)
682
ld 27,344(1)
683
ld 28,352(1)
684
ld 29,360(1)
685
ld 30,368(1)
686
ld 31,376(1)
687
addi 1,1,384
688
blr
689
.long 0
690
.byte 0,12,4,1,0x80,6,3,0
691
.long 0
692
#if (!defined(_CALL_ELF) || _CALL_ELF == 1)
693
.size .zfs_sha256_power8,.-.zfs_sha256_power8
694
.size zfs_sha256_power8,.-.zfs_sha256_power8
695
#else
696
.size zfs_sha256_power8,.-zfs_sha256_power8
697
#endif
698
.align 6
699
.LPICmeup:
700
mflr 0
701
bcl 20,31,$+4
702
mflr 6
703
addi 6,6,56
704
mtlr 0
705
blr
706
.long 0
707
.byte 0,12,0x14,0,0,0,0,0
708
.space 28
709
.long 0x428a2f98,0x428a2f98,0x428a2f98,0x428a2f98
710
.long 0x71374491,0x71374491,0x71374491,0x71374491
711
.long 0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf
712
.long 0xe9b5dba5,0xe9b5dba5,0xe9b5dba5,0xe9b5dba5
713
.long 0x3956c25b,0x3956c25b,0x3956c25b,0x3956c25b
714
.long 0x59f111f1,0x59f111f1,0x59f111f1,0x59f111f1
715
.long 0x923f82a4,0x923f82a4,0x923f82a4,0x923f82a4
716
.long 0xab1c5ed5,0xab1c5ed5,0xab1c5ed5,0xab1c5ed5
717
.long 0xd807aa98,0xd807aa98,0xd807aa98,0xd807aa98
718
.long 0x12835b01,0x12835b01,0x12835b01,0x12835b01
719
.long 0x243185be,0x243185be,0x243185be,0x243185be
720
.long 0x550c7dc3,0x550c7dc3,0x550c7dc3,0x550c7dc3
721
.long 0x72be5d74,0x72be5d74,0x72be5d74,0x72be5d74
722
.long 0x80deb1fe,0x80deb1fe,0x80deb1fe,0x80deb1fe
723
.long 0x9bdc06a7,0x9bdc06a7,0x9bdc06a7,0x9bdc06a7
724
.long 0xc19bf174,0xc19bf174,0xc19bf174,0xc19bf174
725
.long 0xe49b69c1,0xe49b69c1,0xe49b69c1,0xe49b69c1
726
.long 0xefbe4786,0xefbe4786,0xefbe4786,0xefbe4786
727
.long 0x0fc19dc6,0x0fc19dc6,0x0fc19dc6,0x0fc19dc6
728
.long 0x240ca1cc,0x240ca1cc,0x240ca1cc,0x240ca1cc
729
.long 0x2de92c6f,0x2de92c6f,0x2de92c6f,0x2de92c6f
730
.long 0x4a7484aa,0x4a7484aa,0x4a7484aa,0x4a7484aa
731
.long 0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc
732
.long 0x76f988da,0x76f988da,0x76f988da,0x76f988da
733
.long 0x983e5152,0x983e5152,0x983e5152,0x983e5152
734
.long 0xa831c66d,0xa831c66d,0xa831c66d,0xa831c66d
735
.long 0xb00327c8,0xb00327c8,0xb00327c8,0xb00327c8
736
.long 0xbf597fc7,0xbf597fc7,0xbf597fc7,0xbf597fc7
737
.long 0xc6e00bf3,0xc6e00bf3,0xc6e00bf3,0xc6e00bf3
738
.long 0xd5a79147,0xd5a79147,0xd5a79147,0xd5a79147
739
.long 0x06ca6351,0x06ca6351,0x06ca6351,0x06ca6351
740
.long 0x14292967,0x14292967,0x14292967,0x14292967
741
.long 0x27b70a85,0x27b70a85,0x27b70a85,0x27b70a85
742
.long 0x2e1b2138,0x2e1b2138,0x2e1b2138,0x2e1b2138
743
.long 0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc
744
.long 0x53380d13,0x53380d13,0x53380d13,0x53380d13
745
.long 0x650a7354,0x650a7354,0x650a7354,0x650a7354
746
.long 0x766a0abb,0x766a0abb,0x766a0abb,0x766a0abb
747
.long 0x81c2c92e,0x81c2c92e,0x81c2c92e,0x81c2c92e
748
.long 0x92722c85,0x92722c85,0x92722c85,0x92722c85
749
.long 0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1
750
.long 0xa81a664b,0xa81a664b,0xa81a664b,0xa81a664b
751
.long 0xc24b8b70,0xc24b8b70,0xc24b8b70,0xc24b8b70
752
.long 0xc76c51a3,0xc76c51a3,0xc76c51a3,0xc76c51a3
753
.long 0xd192e819,0xd192e819,0xd192e819,0xd192e819
754
.long 0xd6990624,0xd6990624,0xd6990624,0xd6990624
755
.long 0xf40e3585,0xf40e3585,0xf40e3585,0xf40e3585
756
.long 0x106aa070,0x106aa070,0x106aa070,0x106aa070
757
.long 0x19a4c116,0x19a4c116,0x19a4c116,0x19a4c116
758
.long 0x1e376c08,0x1e376c08,0x1e376c08,0x1e376c08
759
.long 0x2748774c,0x2748774c,0x2748774c,0x2748774c
760
.long 0x34b0bcb5,0x34b0bcb5,0x34b0bcb5,0x34b0bcb5
761
.long 0x391c0cb3,0x391c0cb3,0x391c0cb3,0x391c0cb3
762
.long 0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a
763
.long 0x5b9cca4f,0x5b9cca4f,0x5b9cca4f,0x5b9cca4f
764
.long 0x682e6ff3,0x682e6ff3,0x682e6ff3,0x682e6ff3
765
.long 0x748f82ee,0x748f82ee,0x748f82ee,0x748f82ee
766
.long 0x78a5636f,0x78a5636f,0x78a5636f,0x78a5636f
767
.long 0x84c87814,0x84c87814,0x84c87814,0x84c87814
768
.long 0x8cc70208,0x8cc70208,0x8cc70208,0x8cc70208
769
.long 0x90befffa,0x90befffa,0x90befffa,0x90befffa
770
.long 0xa4506ceb,0xa4506ceb,0xa4506ceb,0xa4506ceb
771
.long 0xbef9a3f7,0xbef9a3f7,0xbef9a3f7,0xbef9a3f7
772
.long 0xc67178f2,0xc67178f2,0xc67178f2,0xc67178f2
773
.long 0,0,0,0
774
.long 0x00010203,0x10111213,0x10111213,0x10111213
775
.long 0x00010203,0x04050607,0x10111213,0x10111213
776
.long 0x00010203,0x04050607,0x08090a0b,0x10111213
777
778
#elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__))
779
780
.abiversion 2
781
.text
782
783
.globl zfs_sha256_power8
784
.type zfs_sha256_power8,@function
785
.align 6
786
zfs_sha256_power8:
787
.localentry zfs_sha256_power8,0
788
789
stdu 1,-384(1)
790
mflr 8
791
li 10,207
792
li 11,223
793
stvx 24,10,1
794
addi 10,10,32
795
li 12,-1
796
stvx 25,11,1
797
addi 11,11,32
798
stvx 26,10,1
799
addi 10,10,32
800
stvx 27,11,1
801
addi 11,11,32
802
stvx 28,10,1
803
addi 10,10,32
804
stvx 29,11,1
805
addi 11,11,32
806
stvx 30,10,1
807
stvx 31,11,1
808
li 11,-4096+255
809
stw 12,332(1)
810
li 10,0x10
811
std 26,336(1)
812
li 26,0x20
813
std 27,344(1)
814
li 27,0x30
815
std 28,352(1)
816
li 28,0x40
817
std 29,360(1)
818
li 29,0x50
819
std 30,368(1)
820
li 30,0x60
821
std 31,376(1)
822
li 31,0x70
823
std 8,400(1)
824
or 11,11,11
825
826
bl .LPICmeup
827
addi 11,1,79
828
li 7,8
829
lvsl 31,0,7
830
vspltisb 28,0x0f
831
vxor 31,31,28
832
.long 0x7C001E19
833
.long 0x7C8A1E19
834
vsldoi 1,0,0,4
835
vsldoi 2,0,0,8
836
vsldoi 3,0,0,12
837
vsldoi 5,4,4,4
838
vsldoi 6,4,4,8
839
vsldoi 7,4,4,12
840
li 0,3
841
b .Loop
842
.align 5
843
.Loop:
844
lvx 28,0,6
845
.long 0x7D002699
846
addi 4,4,16
847
mr 7,6
848
stvx 0,0,11
849
stvx 1,10,11
850
stvx 2,26,11
851
stvx 3,27,11
852
stvx 4,28,11
853
stvx 5,29,11
854
stvx 6,30,11
855
stvx 7,31,11
856
vadduwm 7,7,28
857
lvx 28,10,6
858
vperm 8,8,8,31
859
vadduwm 7,7,8
860
vsel 29,6,5,4
861
vadduwm 6,6,28
862
vadduwm 7,7,29
863
.long 0x13C4FE82
864
vadduwm 7,7,30
865
vxor 29,0,1
866
vsel 29,1,2,29
867
vadduwm 3,3,7
868
.long 0x13C08682
869
vadduwm 30,30,29
870
vadduwm 7,7,30
871
lvx 28,26,7
872
vsldoi 9,8,8,4
873
vadduwm 6,6,9
874
vsel 29,5,4,3
875
vadduwm 5,5,28
876
vadduwm 6,6,29
877
.long 0x13C3FE82
878
vadduwm 6,6,30
879
vxor 29,7,0
880
vsel 29,0,1,29
881
vadduwm 2,2,6
882
.long 0x13C78682
883
vadduwm 30,30,29
884
vadduwm 6,6,30
885
lvx 28,27,7
886
vsldoi 10,9,9,4
887
vadduwm 5,5,10
888
vsel 29,4,3,2
889
vadduwm 4,4,28
890
vadduwm 5,5,29
891
.long 0x13C2FE82
892
vadduwm 5,5,30
893
vxor 29,6,7
894
vsel 29,7,0,29
895
vadduwm 1,1,5
896
.long 0x13C68682
897
vadduwm 30,30,29
898
vadduwm 5,5,30
899
lvx 28,28,7
900
.long 0x7D802699
901
addi 4,4,16
902
vsldoi 11,10,10,4
903
vadduwm 4,4,11
904
vsel 29,3,2,1
905
vadduwm 3,3,28
906
vadduwm 4,4,29
907
.long 0x13C1FE82
908
vadduwm 4,4,30
909
vxor 29,5,6
910
vsel 29,6,7,29
911
vadduwm 0,0,4
912
.long 0x13C58682
913
vadduwm 30,30,29
914
vadduwm 4,4,30
915
lvx 28,29,7
916
vperm 12,12,12,31
917
vadduwm 3,3,12
918
vsel 29,2,1,0
919
vadduwm 2,2,28
920
vadduwm 3,3,29
921
.long 0x13C0FE82
922
vadduwm 3,3,30
923
vxor 29,4,5
924
vsel 29,5,6,29
925
vadduwm 7,7,3
926
.long 0x13C48682
927
vadduwm 30,30,29
928
vadduwm 3,3,30
929
lvx 28,30,7
930
vsldoi 13,12,12,4
931
vadduwm 2,2,13
932
vsel 29,1,0,7
933
vadduwm 1,1,28
934
vadduwm 2,2,29
935
.long 0x13C7FE82
936
vadduwm 2,2,30
937
vxor 29,3,4
938
vsel 29,4,5,29
939
vadduwm 6,6,2
940
.long 0x13C38682
941
vadduwm 30,30,29
942
vadduwm 2,2,30
943
lvx 28,31,7
944
addi 7,7,0x80
945
vsldoi 14,13,13,4
946
vadduwm 1,1,14
947
vsel 29,0,7,6
948
vadduwm 0,0,28
949
vadduwm 1,1,29
950
.long 0x13C6FE82
951
vadduwm 1,1,30
952
vxor 29,2,3
953
vsel 29,3,4,29
954
vadduwm 5,5,1
955
.long 0x13C28682
956
vadduwm 30,30,29
957
vadduwm 1,1,30
958
lvx 28,0,7
959
.long 0x7E002699
960
addi 4,4,16
961
vsldoi 15,14,14,4
962
vadduwm 0,0,15
963
vsel 29,7,6,5
964
vadduwm 7,7,28
965
vadduwm 0,0,29
966
.long 0x13C5FE82
967
vadduwm 0,0,30
968
vxor 29,1,2
969
vsel 29,2,3,29
970
vadduwm 4,4,0
971
.long 0x13C18682
972
vadduwm 30,30,29
973
vadduwm 0,0,30
974
lvx 28,10,7
975
vperm 16,16,16,31
976
vadduwm 7,7,16
977
vsel 29,6,5,4
978
vadduwm 6,6,28
979
vadduwm 7,7,29
980
.long 0x13C4FE82
981
vadduwm 7,7,30
982
vxor 29,0,1
983
vsel 29,1,2,29
984
vadduwm 3,3,7
985
.long 0x13C08682
986
vadduwm 30,30,29
987
vadduwm 7,7,30
988
lvx 28,26,7
989
vsldoi 17,16,16,4
990
vadduwm 6,6,17
991
vsel 29,5,4,3
992
vadduwm 5,5,28
993
vadduwm 6,6,29
994
.long 0x13C3FE82
995
vadduwm 6,6,30
996
vxor 29,7,0
997
vsel 29,0,1,29
998
vadduwm 2,2,6
999
.long 0x13C78682
1000
vadduwm 30,30,29
1001
vadduwm 6,6,30
1002
lvx 28,27,7
1003
vsldoi 18,17,17,4
1004
vadduwm 5,5,18
1005
vsel 29,4,3,2
1006
vadduwm 4,4,28
1007
vadduwm 5,5,29
1008
.long 0x13C2FE82
1009
vadduwm 5,5,30
1010
vxor 29,6,7
1011
vsel 29,7,0,29
1012
vadduwm 1,1,5
1013
.long 0x13C68682
1014
vadduwm 30,30,29
1015
vadduwm 5,5,30
1016
lvx 28,28,7
1017
.long 0x7F002699
1018
addi 4,4,16
1019
vsldoi 19,18,18,4
1020
vadduwm 4,4,19
1021
vsel 29,3,2,1
1022
vadduwm 3,3,28
1023
vadduwm 4,4,29
1024
.long 0x13C1FE82
1025
vadduwm 4,4,30
1026
vxor 29,5,6
1027
vsel 29,6,7,29
1028
vadduwm 0,0,4
1029
.long 0x13C58682
1030
vadduwm 30,30,29
1031
vadduwm 4,4,30
1032
lvx 28,29,7
1033
vperm 24,24,24,31
1034
vadduwm 3,3,24
1035
vsel 29,2,1,0
1036
vadduwm 2,2,28
1037
vadduwm 3,3,29
1038
.long 0x13C0FE82
1039
vadduwm 3,3,30
1040
vxor 29,4,5
1041
vsel 29,5,6,29
1042
vadduwm 7,7,3
1043
.long 0x13C48682
1044
vadduwm 30,30,29
1045
vadduwm 3,3,30
1046
lvx 28,30,7
1047
vsldoi 25,24,24,4
1048
vadduwm 2,2,25
1049
vsel 29,1,0,7
1050
vadduwm 1,1,28
1051
vadduwm 2,2,29
1052
.long 0x13C7FE82
1053
vadduwm 2,2,30
1054
vxor 29,3,4
1055
vsel 29,4,5,29
1056
vadduwm 6,6,2
1057
.long 0x13C38682
1058
vadduwm 30,30,29
1059
vadduwm 2,2,30
1060
lvx 28,31,7
1061
addi 7,7,0x80
1062
vsldoi 26,25,25,4
1063
vadduwm 1,1,26
1064
vsel 29,0,7,6
1065
vadduwm 0,0,28
1066
vadduwm 1,1,29
1067
.long 0x13C6FE82
1068
vadduwm 1,1,30
1069
vxor 29,2,3
1070
vsel 29,3,4,29
1071
vadduwm 5,5,1
1072
.long 0x13C28682
1073
vadduwm 30,30,29
1074
vadduwm 1,1,30
1075
lvx 28,0,7
1076
vsldoi 27,26,26,4
1077
.long 0x13C90682
1078
vadduwm 8,8,30
1079
.long 0x13DA7E82
1080
vadduwm 8,8,30
1081
vadduwm 8,8,17
1082
vadduwm 0,0,27
1083
vsel 29,7,6,5
1084
vadduwm 7,7,28
1085
vadduwm 0,0,29
1086
.long 0x13C5FE82
1087
vadduwm 0,0,30
1088
vxor 29,1,2
1089
vsel 29,2,3,29
1090
vadduwm 4,4,0
1091
.long 0x13C18682
1092
vadduwm 30,30,29
1093
vadduwm 0,0,30
1094
lvx 28,10,7
1095
mtctr 0
1096
b .L16_xx
1097
.align 5
1098
.L16_xx:
1099
.long 0x13CA0682
1100
vadduwm 9,9,30
1101
.long 0x13DB7E82
1102
vadduwm 9,9,30
1103
vadduwm 9,9,18
1104
vadduwm 7,7,8
1105
vsel 29,6,5,4
1106
vadduwm 6,6,28
1107
vadduwm 7,7,29
1108
.long 0x13C4FE82
1109
vadduwm 7,7,30
1110
vxor 29,0,1
1111
vsel 29,1,2,29
1112
vadduwm 3,3,7
1113
.long 0x13C08682
1114
vadduwm 30,30,29
1115
vadduwm 7,7,30
1116
lvx 28,26,7
1117
.long 0x13CB0682
1118
vadduwm 10,10,30
1119
.long 0x13C87E82
1120
vadduwm 10,10,30
1121
vadduwm 10,10,19
1122
vadduwm 6,6,9
1123
vsel 29,5,4,3
1124
vadduwm 5,5,28
1125
vadduwm 6,6,29
1126
.long 0x13C3FE82
1127
vadduwm 6,6,30
1128
vxor 29,7,0
1129
vsel 29,0,1,29
1130
vadduwm 2,2,6
1131
.long 0x13C78682
1132
vadduwm 30,30,29
1133
vadduwm 6,6,30
1134
lvx 28,27,7
1135
.long 0x13CC0682
1136
vadduwm 11,11,30
1137
.long 0x13C97E82
1138
vadduwm 11,11,30
1139
vadduwm 11,11,24
1140
vadduwm 5,5,10
1141
vsel 29,4,3,2
1142
vadduwm 4,4,28
1143
vadduwm 5,5,29
1144
.long 0x13C2FE82
1145
vadduwm 5,5,30
1146
vxor 29,6,7
1147
vsel 29,7,0,29
1148
vadduwm 1,1,5
1149
.long 0x13C68682
1150
vadduwm 30,30,29
1151
vadduwm 5,5,30
1152
lvx 28,28,7
1153
.long 0x13CD0682
1154
vadduwm 12,12,30
1155
.long 0x13CA7E82
1156
vadduwm 12,12,30
1157
vadduwm 12,12,25
1158
vadduwm 4,4,11
1159
vsel 29,3,2,1
1160
vadduwm 3,3,28
1161
vadduwm 4,4,29
1162
.long 0x13C1FE82
1163
vadduwm 4,4,30
1164
vxor 29,5,6
1165
vsel 29,6,7,29
1166
vadduwm 0,0,4
1167
.long 0x13C58682
1168
vadduwm 30,30,29
1169
vadduwm 4,4,30
1170
lvx 28,29,7
1171
.long 0x13CE0682
1172
vadduwm 13,13,30
1173
.long 0x13CB7E82
1174
vadduwm 13,13,30
1175
vadduwm 13,13,26
1176
vadduwm 3,3,12
1177
vsel 29,2,1,0
1178
vadduwm 2,2,28
1179
vadduwm 3,3,29
1180
.long 0x13C0FE82
1181
vadduwm 3,3,30
1182
vxor 29,4,5
1183
vsel 29,5,6,29
1184
vadduwm 7,7,3
1185
.long 0x13C48682
1186
vadduwm 30,30,29
1187
vadduwm 3,3,30
1188
lvx 28,30,7
1189
.long 0x13CF0682
1190
vadduwm 14,14,30
1191
.long 0x13CC7E82
1192
vadduwm 14,14,30
1193
vadduwm 14,14,27
1194
vadduwm 2,2,13
1195
vsel 29,1,0,7
1196
vadduwm 1,1,28
1197
vadduwm 2,2,29
1198
.long 0x13C7FE82
1199
vadduwm 2,2,30
1200
vxor 29,3,4
1201
vsel 29,4,5,29
1202
vadduwm 6,6,2
1203
.long 0x13C38682
1204
vadduwm 30,30,29
1205
vadduwm 2,2,30
1206
lvx 28,31,7
1207
addi 7,7,0x80
1208
.long 0x13D00682
1209
vadduwm 15,15,30
1210
.long 0x13CD7E82
1211
vadduwm 15,15,30
1212
vadduwm 15,15,8
1213
vadduwm 1,1,14
1214
vsel 29,0,7,6
1215
vadduwm 0,0,28
1216
vadduwm 1,1,29
1217
.long 0x13C6FE82
1218
vadduwm 1,1,30
1219
vxor 29,2,3
1220
vsel 29,3,4,29
1221
vadduwm 5,5,1
1222
.long 0x13C28682
1223
vadduwm 30,30,29
1224
vadduwm 1,1,30
1225
lvx 28,0,7
1226
.long 0x13D10682
1227
vadduwm 16,16,30
1228
.long 0x13CE7E82
1229
vadduwm 16,16,30
1230
vadduwm 16,16,9
1231
vadduwm 0,0,15
1232
vsel 29,7,6,5
1233
vadduwm 7,7,28
1234
vadduwm 0,0,29
1235
.long 0x13C5FE82
1236
vadduwm 0,0,30
1237
vxor 29,1,2
1238
vsel 29,2,3,29
1239
vadduwm 4,4,0
1240
.long 0x13C18682
1241
vadduwm 30,30,29
1242
vadduwm 0,0,30
1243
lvx 28,10,7
1244
.long 0x13D20682
1245
vadduwm 17,17,30
1246
.long 0x13CF7E82
1247
vadduwm 17,17,30
1248
vadduwm 17,17,10
1249
vadduwm 7,7,16
1250
vsel 29,6,5,4
1251
vadduwm 6,6,28
1252
vadduwm 7,7,29
1253
.long 0x13C4FE82
1254
vadduwm 7,7,30
1255
vxor 29,0,1
1256
vsel 29,1,2,29
1257
vadduwm 3,3,7
1258
.long 0x13C08682
1259
vadduwm 30,30,29
1260
vadduwm 7,7,30
1261
lvx 28,26,7
1262
.long 0x13D30682
1263
vadduwm 18,18,30
1264
.long 0x13D07E82
1265
vadduwm 18,18,30
1266
vadduwm 18,18,11
1267
vadduwm 6,6,17
1268
vsel 29,5,4,3
1269
vadduwm 5,5,28
1270
vadduwm 6,6,29
1271
.long 0x13C3FE82
1272
vadduwm 6,6,30
1273
vxor 29,7,0
1274
vsel 29,0,1,29
1275
vadduwm 2,2,6
1276
.long 0x13C78682
1277
vadduwm 30,30,29
1278
vadduwm 6,6,30
1279
lvx 28,27,7
1280
.long 0x13D80682
1281
vadduwm 19,19,30
1282
.long 0x13D17E82
1283
vadduwm 19,19,30
1284
vadduwm 19,19,12
1285
vadduwm 5,5,18
1286
vsel 29,4,3,2
1287
vadduwm 4,4,28
1288
vadduwm 5,5,29
1289
.long 0x13C2FE82
1290
vadduwm 5,5,30
1291
vxor 29,6,7
1292
vsel 29,7,0,29
1293
vadduwm 1,1,5
1294
.long 0x13C68682
1295
vadduwm 30,30,29
1296
vadduwm 5,5,30
1297
lvx 28,28,7
1298
.long 0x13D90682
1299
vadduwm 24,24,30
1300
.long 0x13D27E82
1301
vadduwm 24,24,30
1302
vadduwm 24,24,13
1303
vadduwm 4,4,19
1304
vsel 29,3,2,1
1305
vadduwm 3,3,28
1306
vadduwm 4,4,29
1307
.long 0x13C1FE82
1308
vadduwm 4,4,30
1309
vxor 29,5,6
1310
vsel 29,6,7,29
1311
vadduwm 0,0,4
1312
.long 0x13C58682
1313
vadduwm 30,30,29
1314
vadduwm 4,4,30
1315
lvx 28,29,7
1316
.long 0x13DA0682
1317
vadduwm 25,25,30
1318
.long 0x13D37E82
1319
vadduwm 25,25,30
1320
vadduwm 25,25,14
1321
vadduwm 3,3,24
1322
vsel 29,2,1,0
1323
vadduwm 2,2,28
1324
vadduwm 3,3,29
1325
.long 0x13C0FE82
1326
vadduwm 3,3,30
1327
vxor 29,4,5
1328
vsel 29,5,6,29
1329
vadduwm 7,7,3
1330
.long 0x13C48682
1331
vadduwm 30,30,29
1332
vadduwm 3,3,30
1333
lvx 28,30,7
1334
.long 0x13DB0682
1335
vadduwm 26,26,30
1336
.long 0x13D87E82
1337
vadduwm 26,26,30
1338
vadduwm 26,26,15
1339
vadduwm 2,2,25
1340
vsel 29,1,0,7
1341
vadduwm 1,1,28
1342
vadduwm 2,2,29
1343
.long 0x13C7FE82
1344
vadduwm 2,2,30
1345
vxor 29,3,4
1346
vsel 29,4,5,29
1347
vadduwm 6,6,2
1348
.long 0x13C38682
1349
vadduwm 30,30,29
1350
vadduwm 2,2,30
1351
lvx 28,31,7
1352
addi 7,7,0x80
1353
.long 0x13C80682
1354
vadduwm 27,27,30
1355
.long 0x13D97E82
1356
vadduwm 27,27,30
1357
vadduwm 27,27,16
1358
vadduwm 1,1,26
1359
vsel 29,0,7,6
1360
vadduwm 0,0,28
1361
vadduwm 1,1,29
1362
.long 0x13C6FE82
1363
vadduwm 1,1,30
1364
vxor 29,2,3
1365
vsel 29,3,4,29
1366
vadduwm 5,5,1
1367
.long 0x13C28682
1368
vadduwm 30,30,29
1369
vadduwm 1,1,30
1370
lvx 28,0,7
1371
.long 0x13C90682
1372
vadduwm 8,8,30
1373
.long 0x13DA7E82
1374
vadduwm 8,8,30
1375
vadduwm 8,8,17
1376
vadduwm 0,0,27
1377
vsel 29,7,6,5
1378
vadduwm 7,7,28
1379
vadduwm 0,0,29
1380
.long 0x13C5FE82
1381
vadduwm 0,0,30
1382
vxor 29,1,2
1383
vsel 29,2,3,29
1384
vadduwm 4,4,0
1385
.long 0x13C18682
1386
vadduwm 30,30,29
1387
vadduwm 0,0,30
1388
lvx 28,10,7
1389
bdnz .L16_xx
1390
1391
lvx 10,0,11
1392
subic. 5,5,1
1393
lvx 11,10,11
1394
vadduwm 0,0,10
1395
lvx 12,26,11
1396
vadduwm 1,1,11
1397
lvx 13,27,11
1398
vadduwm 2,2,12
1399
lvx 14,28,11
1400
vadduwm 3,3,13
1401
lvx 15,29,11
1402
vadduwm 4,4,14
1403
lvx 16,30,11
1404
vadduwm 5,5,15
1405
lvx 17,31,11
1406
vadduwm 6,6,16
1407
vadduwm 7,7,17
1408
bne .Loop
1409
lvx 8,26,7
1410
vperm 0,0,1,28
1411
lvx 9,27,7
1412
vperm 4,4,5,28
1413
vperm 0,0,2,8
1414
vperm 4,4,6,8
1415
vperm 0,0,3,9
1416
vperm 4,4,7,9
1417
.long 0x7C001F19
1418
.long 0x7C8A1F19
1419
addi 11,1,207
1420
mtlr 8
1421
or 12,12,12
1422
lvx 24,0,11
1423
lvx 25,10,11
1424
lvx 26,26,11
1425
lvx 27,27,11
1426
lvx 28,28,11
1427
lvx 29,29,11
1428
lvx 30,30,11
1429
lvx 31,31,11
1430
ld 26,336(1)
1431
ld 27,344(1)
1432
ld 28,352(1)
1433
ld 29,360(1)
1434
ld 30,368(1)
1435
ld 31,376(1)
1436
addi 1,1,384
1437
blr
1438
.long 0
1439
.byte 0,12,4,1,0x80,6,3,0
1440
.long 0
1441
.size zfs_sha256_power8,.-zfs_sha256_power8
1442
.align 6
1443
.LPICmeup:
1444
mflr 0
1445
bcl 20,31,$+4
1446
mflr 6
1447
addi 6,6,56
1448
mtlr 0
1449
blr
1450
.long 0
1451
.byte 0,12,0x14,0,0,0,0,0
1452
.space 28
1453
.long 0x428a2f98,0x428a2f98,0x428a2f98,0x428a2f98
1454
.long 0x71374491,0x71374491,0x71374491,0x71374491
1455
.long 0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf
1456
.long 0xe9b5dba5,0xe9b5dba5,0xe9b5dba5,0xe9b5dba5
1457
.long 0x3956c25b,0x3956c25b,0x3956c25b,0x3956c25b
1458
.long 0x59f111f1,0x59f111f1,0x59f111f1,0x59f111f1
1459
.long 0x923f82a4,0x923f82a4,0x923f82a4,0x923f82a4
1460
.long 0xab1c5ed5,0xab1c5ed5,0xab1c5ed5,0xab1c5ed5
1461
.long 0xd807aa98,0xd807aa98,0xd807aa98,0xd807aa98
1462
.long 0x12835b01,0x12835b01,0x12835b01,0x12835b01
1463
.long 0x243185be,0x243185be,0x243185be,0x243185be
1464
.long 0x550c7dc3,0x550c7dc3,0x550c7dc3,0x550c7dc3
1465
.long 0x72be5d74,0x72be5d74,0x72be5d74,0x72be5d74
1466
.long 0x80deb1fe,0x80deb1fe,0x80deb1fe,0x80deb1fe
1467
.long 0x9bdc06a7,0x9bdc06a7,0x9bdc06a7,0x9bdc06a7
1468
.long 0xc19bf174,0xc19bf174,0xc19bf174,0xc19bf174
1469
.long 0xe49b69c1,0xe49b69c1,0xe49b69c1,0xe49b69c1
1470
.long 0xefbe4786,0xefbe4786,0xefbe4786,0xefbe4786
1471
.long 0x0fc19dc6,0x0fc19dc6,0x0fc19dc6,0x0fc19dc6
1472
.long 0x240ca1cc,0x240ca1cc,0x240ca1cc,0x240ca1cc
1473
.long 0x2de92c6f,0x2de92c6f,0x2de92c6f,0x2de92c6f
1474
.long 0x4a7484aa,0x4a7484aa,0x4a7484aa,0x4a7484aa
1475
.long 0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc
1476
.long 0x76f988da,0x76f988da,0x76f988da,0x76f988da
1477
.long 0x983e5152,0x983e5152,0x983e5152,0x983e5152
1478
.long 0xa831c66d,0xa831c66d,0xa831c66d,0xa831c66d
1479
.long 0xb00327c8,0xb00327c8,0xb00327c8,0xb00327c8
1480
.long 0xbf597fc7,0xbf597fc7,0xbf597fc7,0xbf597fc7
1481
.long 0xc6e00bf3,0xc6e00bf3,0xc6e00bf3,0xc6e00bf3
1482
.long 0xd5a79147,0xd5a79147,0xd5a79147,0xd5a79147
1483
.long 0x06ca6351,0x06ca6351,0x06ca6351,0x06ca6351
1484
.long 0x14292967,0x14292967,0x14292967,0x14292967
1485
.long 0x27b70a85,0x27b70a85,0x27b70a85,0x27b70a85
1486
.long 0x2e1b2138,0x2e1b2138,0x2e1b2138,0x2e1b2138
1487
.long 0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc
1488
.long 0x53380d13,0x53380d13,0x53380d13,0x53380d13
1489
.long 0x650a7354,0x650a7354,0x650a7354,0x650a7354
1490
.long 0x766a0abb,0x766a0abb,0x766a0abb,0x766a0abb
1491
.long 0x81c2c92e,0x81c2c92e,0x81c2c92e,0x81c2c92e
1492
.long 0x92722c85,0x92722c85,0x92722c85,0x92722c85
1493
.long 0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1
1494
.long 0xa81a664b,0xa81a664b,0xa81a664b,0xa81a664b
1495
.long 0xc24b8b70,0xc24b8b70,0xc24b8b70,0xc24b8b70
1496
.long 0xc76c51a3,0xc76c51a3,0xc76c51a3,0xc76c51a3
1497
.long 0xd192e819,0xd192e819,0xd192e819,0xd192e819
1498
.long 0xd6990624,0xd6990624,0xd6990624,0xd6990624
1499
.long 0xf40e3585,0xf40e3585,0xf40e3585,0xf40e3585
1500
.long 0x106aa070,0x106aa070,0x106aa070,0x106aa070
1501
.long 0x19a4c116,0x19a4c116,0x19a4c116,0x19a4c116
1502
.long 0x1e376c08,0x1e376c08,0x1e376c08,0x1e376c08
1503
.long 0x2748774c,0x2748774c,0x2748774c,0x2748774c
1504
.long 0x34b0bcb5,0x34b0bcb5,0x34b0bcb5,0x34b0bcb5
1505
.long 0x391c0cb3,0x391c0cb3,0x391c0cb3,0x391c0cb3
1506
.long 0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a
1507
.long 0x5b9cca4f,0x5b9cca4f,0x5b9cca4f,0x5b9cca4f
1508
.long 0x682e6ff3,0x682e6ff3,0x682e6ff3,0x682e6ff3
1509
.long 0x748f82ee,0x748f82ee,0x748f82ee,0x748f82ee
1510
.long 0x78a5636f,0x78a5636f,0x78a5636f,0x78a5636f
1511
.long 0x84c87814,0x84c87814,0x84c87814,0x84c87814
1512
.long 0x8cc70208,0x8cc70208,0x8cc70208,0x8cc70208
1513
.long 0x90befffa,0x90befffa,0x90befffa,0x90befffa
1514
.long 0xa4506ceb,0xa4506ceb,0xa4506ceb,0xa4506ceb
1515
.long 0xbef9a3f7,0xbef9a3f7,0xbef9a3f7,0xbef9a3f7
1516
.long 0xc67178f2,0xc67178f2,0xc67178f2,0xc67178f2
1517
.long 0,0,0,0
1518
.long 0x10111213,0x10111213,0x10111213,0x00010203
1519
.long 0x10111213,0x10111213,0x04050607,0x00010203
1520
.long 0x10111213,0x08090a0b,0x04050607,0x00010203
1521
#endif
1522
1523