aboutsummaryrefslogtreecommitdiff
path: root/sys/crypto/openssl/powerpc64/chachap10-ppc.S
diff options
context:
space:
mode:
Diffstat (limited to 'sys/crypto/openssl/powerpc64/chachap10-ppc.S')
-rw-r--r--sys/crypto/openssl/powerpc64/chachap10-ppc.S1228
1 files changed, 1228 insertions, 0 deletions
diff --git a/sys/crypto/openssl/powerpc64/chachap10-ppc.S b/sys/crypto/openssl/powerpc64/chachap10-ppc.S
new file mode 100644
index 000000000000..239c0e1297e1
--- /dev/null
+++ b/sys/crypto/openssl/powerpc64/chachap10-ppc.S
@@ -0,0 +1,1228 @@
+/* Do not modify. This file is auto-generated from chachap10-ppc.pl. */
+
+.globl ChaCha20_ctr32_vsx_p10
+.type ChaCha20_ctr32_vsx_p10,@function
+.align 5
+ChaCha20_ctr32_vsx_p10:
+.localentry ChaCha20_ctr32_vsx_p10,0
+
+ cmpldi 5,255
+ ble .Not_greater_than_8x
+ b ChaCha20_ctr32_vsx_8x
+.Not_greater_than_8x:
+ stdu 1,-224(1)
+ mflr 0
+ li 10,127
+ li 11,143
+ li 12,-1
+ stvx 26,10,1
+ addi 10,10,32
+ stvx 27,11,1
+ addi 11,11,32
+ stvx 28,10,1
+ addi 10,10,32
+ stvx 29,11,1
+ addi 11,11,32
+ stvx 30,10,1
+ stvx 31,11,1
+ stw 12,220(1)
+ li 12,-4096+63
+ std 0, 240(1)
+ or 12,12,12
+
+ bl .Lconsts
+ .long 0x7E006619
+ addi 12,12,0x70
+ li 8,16
+ li 9,32
+ li 10,48
+ li 11,64
+
+ .long 0x7E203619
+ .long 0x7E483619
+ .long 0x7E603E19
+
+ vxor 27,27,27
+ .long 0x7F8B6619
+ vspltw 26,19,0
+ vsldoi 19,19,27,4
+ vsldoi 19,27,19,12
+ vadduwm 26,26,28
+
+ lvsl 31,0,8
+ vspltisb 27,3
+ vxor 31,31,27
+
+ li 0,10
+ mtctr 0
+ b .Loop_outer_vsx
+
+.align 5
+.Loop_outer_vsx:
+ lvx 0,0,12
+ lvx 1,8,12
+ lvx 2,9,12
+ lvx 3,10,12
+
+ vspltw 4,17,0
+ vspltw 5,17,1
+ vspltw 6,17,2
+ vspltw 7,17,3
+
+ vspltw 8,18,0
+ vspltw 9,18,1
+ vspltw 10,18,2
+ vspltw 11,18,3
+
+ vor 12,26,26
+ vspltw 13,19,1
+ vspltw 14,19,2
+ vspltw 15,19,3
+
+ vspltisw 27,-16
+ vspltisw 28,12
+ vspltisw 29,8
+ vspltisw 30,7
+
+.Loop_vsx_4x:
+ vadduwm 0,0,4
+ vadduwm 1,1,5
+ vadduwm 2,2,6
+ vadduwm 3,3,7
+ vxor 12,12,0
+ vxor 13,13,1
+ vxor 14,14,2
+ vxor 15,15,3
+ vrlw 12,12,27
+ vrlw 13,13,27
+ vrlw 14,14,27
+ vrlw 15,15,27
+ vadduwm 8,8,12
+ vadduwm 9,9,13
+ vadduwm 10,10,14
+ vadduwm 11,11,15
+ vxor 4,4,8
+ vxor 5,5,9
+ vxor 6,6,10
+ vxor 7,7,11
+ vrlw 4,4,28
+ vrlw 5,5,28
+ vrlw 6,6,28
+ vrlw 7,7,28
+ vadduwm 0,0,4
+ vadduwm 1,1,5
+ vadduwm 2,2,6
+ vadduwm 3,3,7
+ vxor 12,12,0
+ vxor 13,13,1
+ vxor 14,14,2
+ vxor 15,15,3
+ vrlw 12,12,29
+ vrlw 13,13,29
+ vrlw 14,14,29
+ vrlw 15,15,29
+ vadduwm 8,8,12
+ vadduwm 9,9,13
+ vadduwm 10,10,14
+ vadduwm 11,11,15
+ vxor 4,4,8
+ vxor 5,5,9
+ vxor 6,6,10
+ vxor 7,7,11
+ vrlw 4,4,30
+ vrlw 5,5,30
+ vrlw 6,6,30
+ vrlw 7,7,30
+ vadduwm 0,0,5
+ vadduwm 1,1,6
+ vadduwm 2,2,7
+ vadduwm 3,3,4
+ vxor 15,15,0
+ vxor 12,12,1
+ vxor 13,13,2
+ vxor 14,14,3
+ vrlw 15,15,27
+ vrlw 12,12,27
+ vrlw 13,13,27
+ vrlw 14,14,27
+ vadduwm 10,10,15
+ vadduwm 11,11,12
+ vadduwm 8,8,13
+ vadduwm 9,9,14
+ vxor 5,5,10
+ vxor 6,6,11
+ vxor 7,7,8
+ vxor 4,4,9
+ vrlw 5,5,28
+ vrlw 6,6,28
+ vrlw 7,7,28
+ vrlw 4,4,28
+ vadduwm 0,0,5
+ vadduwm 1,1,6
+ vadduwm 2,2,7
+ vadduwm 3,3,4
+ vxor 15,15,0
+ vxor 12,12,1
+ vxor 13,13,2
+ vxor 14,14,3
+ vrlw 15,15,29
+ vrlw 12,12,29
+ vrlw 13,13,29
+ vrlw 14,14,29
+ vadduwm 10,10,15
+ vadduwm 11,11,12
+ vadduwm 8,8,13
+ vadduwm 9,9,14
+ vxor 5,5,10
+ vxor 6,6,11
+ vxor 7,7,8
+ vxor 4,4,9
+ vrlw 5,5,30
+ vrlw 6,6,30
+ vrlw 7,7,30
+ vrlw 4,4,30
+
+ bdnz .Loop_vsx_4x
+
+ vadduwm 12,12,26
+
+ .long 0x13600F8C
+ .long 0x13821F8C
+ .long 0x10000E8C
+ .long 0x10421E8C
+ .long 0x13A42F8C
+ .long 0x13C63F8C
+ .long 0xF0201057
+ .long 0xF0601357
+ .long 0xF01BE057
+ .long 0xF05BE357
+
+ .long 0x10842E8C
+ .long 0x10C63E8C
+ .long 0x13684F8C
+ .long 0x138A5F8C
+ .long 0xF0A43057
+ .long 0xF0E43357
+ .long 0xF09DF057
+ .long 0xF0DDF357
+
+ .long 0x11084E8C
+ .long 0x114A5E8C
+ .long 0x13AC6F8C
+ .long 0x13CE7F8C
+ .long 0xF1285057
+ .long 0xF1685357
+ .long 0xF11BE057
+ .long 0xF15BE357
+
+ .long 0x118C6E8C
+ .long 0x11CE7E8C
+ vspltisw 27,4
+ vadduwm 26,26,27
+ .long 0xF1AC7057
+ .long 0xF1EC7357
+ .long 0xF19DF057
+ .long 0xF1DDF357
+
+ vadduwm 0,0,16
+ vadduwm 4,4,17
+ vadduwm 8,8,18
+ vadduwm 12,12,19
+
+ vperm 0,0,0,31
+ vperm 4,4,4,31
+ vperm 8,8,8,31
+ vperm 12,12,12,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx
+
+ .long 0x7F602619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 27,27,0
+ vxor 28,28,4
+ vxor 29,29,8
+ vxor 30,30,12
+
+ .long 0x7F601F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx
+
+ vadduwm 0,1,16
+ vadduwm 4,5,17
+ vadduwm 8,9,18
+ vadduwm 12,13,19
+
+ vperm 0,0,0,31
+ vperm 4,4,4,31
+ vperm 8,8,8,31
+ vperm 12,12,12,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx
+
+ .long 0x7F602619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 27,27,0
+ vxor 28,28,4
+ vxor 29,29,8
+ vxor 30,30,12
+
+ .long 0x7F601F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx
+
+ vadduwm 0,2,16
+ vadduwm 4,6,17
+ vadduwm 8,10,18
+ vadduwm 12,14,19
+
+ vperm 0,0,0,31
+ vperm 4,4,4,31
+ vperm 8,8,8,31
+ vperm 12,12,12,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx
+
+ .long 0x7F602619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 27,27,0
+ vxor 28,28,4
+ vxor 29,29,8
+ vxor 30,30,12
+
+ .long 0x7F601F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx
+
+ vadduwm 0,3,16
+ vadduwm 4,7,17
+ vadduwm 8,11,18
+ vadduwm 12,15,19
+
+ vperm 0,0,0,31
+ vperm 4,4,4,31
+ vperm 8,8,8,31
+ vperm 12,12,12,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx
+
+ .long 0x7F602619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 27,27,0
+ vxor 28,28,4
+ vxor 29,29,8
+ vxor 30,30,12
+
+ .long 0x7F601F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ mtctr 0
+ bne .Loop_outer_vsx
+
+.Ldone_vsx:
+ lwz 12,220(1)
+ li 10,127
+ li 11,143
+ ld 0, 240(1)
+ or 12,12,12
+ lvx 26,10,1
+ addi 10,10,32
+ lvx 27,11,1
+ addi 11,11,32
+ lvx 28,10,1
+ addi 10,10,32
+ lvx 29,11,1
+ addi 11,11,32
+ lvx 30,10,1
+ lvx 31,11,1
+ mtlr 0
+ addi 1,1,224
+ blr
+
+.align 4
+.Ltail_vsx:
+ addi 11,1,48
+ mtctr 5
+ .long 0x7C005F19
+ .long 0x7C885F19
+ .long 0x7D095F19
+ .long 0x7D8A5F19
+ subi 12,11,1
+ subi 4,4,1
+ subi 3,3,1
+
+.Loop_tail_vsx:
+ lbzu 6,1(12)
+ lbzu 7,1(4)
+ xor 6,6,7
+ stbu 6,1(3)
+ bdnz .Loop_tail_vsx
+
+ .long 0x7E005F19
+ .long 0x7E085F19
+ .long 0x7E095F19
+ .long 0x7E0A5F19
+
+ b .Ldone_vsx
+.long 0
+.byte 0,12,0x04,1,0x80,0,5,0
+.long 0
+.size ChaCha20_ctr32_vsx_p10,.-ChaCha20_ctr32_vsx_p10
+
+.globl ChaCha20_ctr32_vsx_8x
+.type ChaCha20_ctr32_vsx_8x,@function
+.align 5
+ChaCha20_ctr32_vsx_8x:
+.localentry ChaCha20_ctr32_vsx_8x,0
+
+ stdu 1,-256(1)
+ mflr 0
+ li 10,127
+ li 11,143
+ li 12,-1
+ stvx 24,10,1
+ addi 10,10,32
+ stvx 25,11,1
+ addi 11,11,32
+ stvx 26,10,1
+ addi 10,10,32
+ stvx 27,11,1
+ addi 11,11,32
+ stvx 28,10,1
+ addi 10,10,32
+ stvx 29,11,1
+ addi 11,11,32
+ stvx 30,10,1
+ stvx 31,11,1
+ stw 12,252(1)
+ li 12,-4096+63
+ std 0, 272(1)
+ or 12,12,12
+
+ bl .Lconsts
+
+ .long 0x7F606619
+ addi 12,12,0x70
+ li 8,16
+ li 9,32
+ li 10,48
+ li 11,64
+
+ vspltisw 16,-16
+ vspltisw 20,12
+ vspltisw 24,8
+ vspltisw 28,7
+
+ lvx 0,0,12
+ lvx 1,8,12
+ lvx 2,9,12
+ lvx 3,10,12
+
+ .long 0xF1308496
+ .long 0xF154A496
+ .long 0xF178C496
+ .long 0xF19CE496
+ .long 0xF2C00496
+ .long 0xF2E10C96
+ .long 0xF3021496
+ .long 0xF3231C96
+
+ .long 0x7F003619
+ .long 0x7F283619
+ .long 0x7F403E19
+ vspltisw 30,4
+
+
+ vxor 29,29,29
+ .long 0x7F8B6619
+ vspltw 2,26,0
+ vsldoi 26,26,29,4
+ vsldoi 26,29,26,12
+ vadduwm 28,2,28
+ vadduwm 30,28,30
+ vspltw 0,25,2
+
+ lvsl 31,0,8
+ vspltisb 23,3
+ vxor 31,31,23
+ .long 0xF35FFC96
+
+ .long 0xF01BDC96
+ .long 0xF038C496
+ .long 0xF059CC96
+ .long 0xF07AD496
+ .long 0xF09CE496
+ .long 0xF0BEF496
+ .long 0xF1000496
+
+ li 0,10
+ mtctr 0
+ b .Loop_outer_vsx_8x
+
+.align 5
+.Loop_outer_vsx_8x:
+ .long 0xF016B491
+ .long 0xF037BC91
+ .long 0xF058C491
+ .long 0xF079CC91
+ .long 0xF216B491
+ .long 0xF237BC91
+ .long 0xF258C491
+ .long 0xF279CC91
+
+ vspltw 4,24,0
+ vspltw 5,24,1
+ vspltw 6,24,2
+ vspltw 7,24,3
+ vspltw 20,24,0
+ vspltw 21,24,1
+ vspltw 22,24,2
+ vspltw 23,24,3
+
+ vspltw 8,25,0
+ vspltw 9,25,1
+ vspltw 10,25,2
+ vspltw 11,25,3
+ vspltw 24,25,0
+ vspltw 27,25,3
+ vspltw 25,25,1
+
+ .long 0xF1842491
+ vspltw 13,26,1
+ vspltw 14,26,2
+ vspltw 15,26,3
+ .long 0xF3852C91
+ vspltw 29,26,1
+ vspltw 30,26,2
+ vspltw 31,26,3
+ .long 0xF3484491
+
+.Loop_vsx_8x:
+ .long 0xF1FBDC96
+ .long 0xF3694C91
+ vadduwm 0,0,4
+ vadduwm 1,1,5
+ vadduwm 2,2,6
+ vadduwm 3,3,7
+ vadduwm 16,16,20
+ vadduwm 17,17,21
+ vadduwm 18,18,22
+ vadduwm 19,19,23
+ vxor 12,12,0
+ vxor 13,13,1
+ vxor 14,14,2
+ vxor 15,15,3
+ vxor 28,28,16
+ vxor 29,29,17
+ vxor 30,30,18
+ vxor 31,31,19
+ vrlw 12,12,27
+ vrlw 13,13,27
+ vrlw 14,14,27
+ vrlw 15,15,27
+ vrlw 28,28,27
+ vrlw 29,29,27
+ vrlw 30,30,27
+ vrlw 31,31,27
+ .long 0xF1B39C96
+ .long 0xF36F7C91
+ .long 0xF26A5491
+ vadduwm 8,8,12
+ vadduwm 9,9,13
+ vadduwm 10,10,14
+ vadduwm 11,11,15
+ vadduwm 24,24,28
+ vadduwm 25,25,29
+ vadduwm 26,26,30
+ vadduwm 27,27,31
+ vxor 4,4,8
+ vxor 5,5,9
+ vxor 6,6,10
+ vxor 7,7,11
+ vxor 20,20,24
+ vxor 21,21,25
+ vxor 22,22,26
+ vxor 23,23,27
+ vrlw 4,4,19
+ vrlw 5,5,19
+ vrlw 6,6,19
+ vrlw 7,7,19
+ vrlw 20,20,19
+ vrlw 21,21,19
+ vrlw 22,22,19
+ vrlw 23,23,19
+ .long 0xF26D6C91
+ .long 0xF1FBDC96
+ .long 0xF36B5C91
+ vadduwm 0,0,4
+ vadduwm 1,1,5
+ vadduwm 2,2,6
+ vadduwm 3,3,7
+ vadduwm 16,16,20
+ vadduwm 17,17,21
+ vadduwm 18,18,22
+ vadduwm 19,19,23
+ vxor 12,12,0
+ vxor 13,13,1
+ vxor 14,14,2
+ vxor 15,15,3
+ vxor 28,28,16
+ vxor 29,29,17
+ vxor 30,30,18
+ vxor 31,31,19
+ vrlw 12,12,27
+ vrlw 13,13,27
+ vrlw 14,14,27
+ vrlw 15,15,27
+ vrlw 28,28,27
+ vrlw 29,29,27
+ vrlw 30,30,27
+ vrlw 31,31,27
+ .long 0xF36F7C91
+ .long 0xF1B39C96
+ .long 0xF26C6491
+ vadduwm 8,8,12
+ vadduwm 9,9,13
+ vadduwm 10,10,14
+ vadduwm 11,11,15
+ vadduwm 24,24,28
+ vadduwm 25,25,29
+ vadduwm 26,26,30
+ vadduwm 27,27,31
+ vxor 4,4,8
+ vxor 5,5,9
+ vxor 6,6,10
+ vxor 7,7,11
+ vxor 20,20,24
+ vxor 21,21,25
+ vxor 22,22,26
+ vxor 23,23,27
+ vrlw 4,4,19
+ vrlw 5,5,19
+ vrlw 6,6,19
+ vrlw 7,7,19
+ vrlw 20,20,19
+ vrlw 21,21,19
+ vrlw 22,22,19
+ vrlw 23,23,19
+ .long 0xF26D6C91
+ .long 0xF1F9CC96
+ .long 0xF3294C91
+ vadduwm 0,0,5
+ vadduwm 1,1,6
+ vadduwm 2,2,7
+ vadduwm 3,3,4
+ vadduwm 16,16,21
+ vadduwm 17,17,22
+ vadduwm 18,18,23
+ vadduwm 19,19,20
+ vxor 15,15,0
+ vxor 12,12,1
+ vxor 13,13,2
+ vxor 14,14,3
+ vxor 31,31,16
+ vxor 28,28,17
+ vxor 29,29,18
+ vxor 30,30,19
+ vrlw 15,15,25
+ vrlw 12,12,25
+ vrlw 13,13,25
+ vrlw 14,14,25
+ vrlw 31,31,25
+ vrlw 28,28,25
+ vrlw 29,29,25
+ vrlw 30,30,25
+ .long 0xF1B39C96
+ .long 0xF32F7C91
+ .long 0xF26A5491
+ vadduwm 10,10,15
+ vadduwm 11,11,12
+ vadduwm 8,8,13
+ vadduwm 9,9,14
+ vadduwm 26,26,31
+ vadduwm 27,27,28
+ vadduwm 24,24,29
+ vadduwm 25,25,30
+ vxor 5,5,10
+ vxor 6,6,11
+ vxor 7,7,8
+ vxor 4,4,9
+ vxor 21,21,26
+ vxor 22,22,27
+ vxor 23,23,24
+ vxor 20,20,25
+ vrlw 5,5,19
+ vrlw 6,6,19
+ vrlw 7,7,19
+ vrlw 4,4,19
+ vrlw 21,21,19
+ vrlw 22,22,19
+ vrlw 23,23,19
+ vrlw 20,20,19
+ .long 0xF26D6C91
+ .long 0xF1F9CC96
+ .long 0xF32B5C91
+ vadduwm 0,0,5
+ vadduwm 1,1,6
+ vadduwm 2,2,7
+ vadduwm 3,3,4
+ vadduwm 16,16,21
+ vadduwm 17,17,22
+ vadduwm 18,18,23
+ vadduwm 19,19,20
+ vxor 15,15,0
+ vxor 12,12,1
+ vxor 13,13,2
+ vxor 14,14,3
+ vxor 31,31,16
+ vxor 28,28,17
+ vxor 29,29,18
+ vxor 30,30,19
+ vrlw 15,15,25
+ vrlw 12,12,25
+ vrlw 13,13,25
+ vrlw 14,14,25
+ vrlw 31,31,25
+ vrlw 28,28,25
+ vrlw 29,29,25
+ vrlw 30,30,25
+ .long 0xF32F7C91
+ .long 0xF1B39C96
+ .long 0xF26C6491
+ vadduwm 10,10,15
+ vadduwm 11,11,12
+ vadduwm 8,8,13
+ vadduwm 9,9,14
+ vadduwm 26,26,31
+ vadduwm 27,27,28
+ vadduwm 24,24,29
+ vadduwm 25,25,30
+ vxor 5,5,10
+ vxor 6,6,11
+ vxor 7,7,8
+ vxor 4,4,9
+ vxor 21,21,26
+ vxor 22,22,27
+ vxor 23,23,24
+ vxor 20,20,25
+ vrlw 5,5,19
+ vrlw 6,6,19
+ vrlw 7,7,19
+ vrlw 4,4,19
+ vrlw 21,21,19
+ vrlw 22,22,19
+ vrlw 23,23,19
+ vrlw 20,20,19
+ .long 0xF26D6C91
+
+ bdnz .Loop_vsx_8x
+ .long 0xF1BCE496
+ .long 0xF1DDEC96
+ .long 0xF1FEF496
+ .long 0xF21FFC96
+
+ .long 0xF258C496
+ .long 0xF279CC96
+ .long 0xF29AD496
+ .long 0xF2BBDC96
+
+ .long 0xF0D6B496
+ .long 0xF0F7BC96
+ .long 0xF3FAD491
+
+ .long 0xF3600491
+ .long 0xF3010C91
+ .long 0xF3221491
+ .long 0xF3431C91
+ .long 0xF2C42491
+
+
+ .long 0x12E00F8C
+ .long 0x13821F8C
+ .long 0x10000E8C
+ .long 0x10421E8C
+
+ .long 0x13A42F8C
+ .long 0x13C63F8C
+ .long 0x10842E8C
+ .long 0x10C63E8C
+
+ vadduwm 12,12,22
+
+ .long 0xF0201057
+ .long 0xF0601357
+ .long 0xF017E057
+ .long 0xF057E357
+ .long 0xF0A43057
+ .long 0xF0E43357
+ .long 0xF09DF057
+ .long 0xF0DDF357
+
+ .long 0x12E84F8C
+ .long 0x138A5F8C
+ .long 0x11084E8C
+ .long 0x114A5E8C
+ .long 0x13AC6F8C
+ .long 0x13CE7F8C
+ .long 0x118C6E8C
+ .long 0x11CE7E8C
+
+ .long 0xF1285057
+ .long 0xF1685357
+ .long 0xF117E057
+ .long 0xF157E357
+ .long 0xF1AC7057
+ .long 0xF1EC7357
+ .long 0xF19DF057
+ .long 0xF1DDF357
+
+ vspltisw 23,8
+ vadduwm 22,22,23
+ .long 0xF096B496
+
+ vadduwm 0,0,27
+ vadduwm 4,4,24
+ vadduwm 8,8,25
+ vadduwm 12,12,26
+
+ vperm 0,0,0,31
+ vperm 4,4,4,31
+ vperm 8,8,8,31
+ vperm 12,12,12,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx_8x
+
+ .long 0x7EE02619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 23,23,0
+ vxor 28,28,4
+ vxor 29,29,8
+ vxor 30,30,12
+
+ .long 0x7EE01F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx_8x
+
+ vadduwm 0,1,27
+ vadduwm 4,5,24
+ vadduwm 8,9,25
+ vadduwm 12,13,26
+
+ vperm 0,0,0,31
+ vperm 4,4,4,31
+ vperm 8,8,8,31
+ vperm 12,12,12,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx_8x
+
+ .long 0x7EE02619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 23,23,0
+ vxor 28,28,4
+ vxor 29,29,8
+ vxor 30,30,12
+
+ .long 0x7EE01F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx_8x
+
+ vadduwm 0,2,27
+ vadduwm 4,6,24
+ vadduwm 8,10,25
+ vadduwm 12,14,26
+
+ vperm 0,0,0,31
+ vperm 4,4,4,31
+ vperm 8,8,8,31
+ vperm 12,12,12,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx_8x
+
+ .long 0x7EE02619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 23,23,0
+ vxor 28,28,4
+ vxor 29,29,8
+ vxor 30,30,12
+
+ .long 0x7EE01F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx_8x
+
+ vadduwm 0,3,27
+ vadduwm 4,7,24
+ vadduwm 8,11,25
+ vadduwm 12,15,26
+
+ vperm 0,0,0,31
+ vperm 4,4,4,31
+ vperm 8,8,8,31
+ vperm 12,12,12,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx_8x
+
+ .long 0x7EE02619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 23,23,0
+ vxor 28,28,4
+ vxor 29,29,8
+ vxor 30,30,12
+
+ .long 0x7EE01F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx_8x
+
+
+
+
+ .long 0xF0A52C91
+
+ .long 0xF1129491
+ .long 0xF1339C91
+ .long 0xF154A491
+ .long 0xF175AC91
+
+ .long 0xF18D6C91
+ .long 0xF1AE7491
+ .long 0xF1CF7C91
+ .long 0xF1F08491
+ vadduwm 12,12,5
+
+ .long 0xF2C63491
+ .long 0xF2E73C91
+
+
+ .long 0x10908F8C
+ .long 0x13929F8C
+ .long 0x12108E8C
+ .long 0x12529E8C
+ .long 0x13B4AF8C
+ .long 0x13D6BF8C
+ .long 0x1294AE8C
+ .long 0x12D6BE8C
+
+ .long 0xF2309057
+ .long 0xF2709357
+ .long 0xF204E057
+ .long 0xF244E357
+ .long 0xF2B4B057
+ .long 0xF2F4B357
+ .long 0xF29DF057
+ .long 0xF2DDF357
+
+ .long 0x10884F8C
+ .long 0x138A5F8C
+ .long 0x11084E8C
+ .long 0x114A5E8C
+ .long 0x13AC6F8C
+ .long 0x13CE7F8C
+ .long 0x118C6E8C
+ .long 0x11CE7E8C
+
+ .long 0xF1285057
+ .long 0xF1685357
+ .long 0xF104E057
+ .long 0xF144E357
+ .long 0xF1AC7057
+ .long 0xF1EC7357
+ .long 0xF19DF057
+ .long 0xF1DDF357
+
+ vspltisw 4,8
+ vadduwm 5,5,4
+ .long 0xF0A52C96
+
+ vadduwm 0,16,27
+ vadduwm 1,20,24
+ vadduwm 2,8,25
+ vadduwm 3,12,26
+
+ vperm 0,0,0,31
+ vperm 1,1,1,31
+ vperm 2,2,2,31
+ vperm 3,3,3,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx_8x_1
+
+ .long 0x7C802619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 4,4,0
+ vxor 28,28,1
+ vxor 29,29,2
+ vxor 30,30,3
+
+ .long 0x7C801F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx_8x
+
+ vadduwm 0,17,27
+ vadduwm 1,21,24
+ vadduwm 2,9,25
+ vadduwm 3,13,26
+
+ vperm 0,0,0,31
+ vperm 1,1,1,31
+ vperm 2,2,2,31
+ vperm 3,3,3,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx_8x_1
+
+ .long 0x7C802619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 4,4,0
+ vxor 28,28,1
+ vxor 29,29,2
+ vxor 30,30,3
+
+ .long 0x7C801F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx_8x
+
+ vadduwm 0,18,27
+ vadduwm 1,22,24
+ vadduwm 2,10,25
+ vadduwm 3,14,26
+
+ vperm 0,0,0,31
+ vperm 1,1,1,31
+ vperm 2,2,2,31
+ vperm 3,3,3,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx_8x_1
+
+ .long 0x7C802619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 4,4,0
+ vxor 28,28,1
+ vxor 29,29,2
+ vxor 30,30,3
+
+ .long 0x7C801F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx_8x
+
+ vadduwm 0,19,27
+ vadduwm 1,23,24
+ vadduwm 2,11,25
+ vadduwm 3,15,26
+
+ vperm 0,0,0,31
+ vperm 1,1,1,31
+ vperm 2,2,2,31
+ vperm 3,3,3,31
+
+ cmpldi 5,0x40
+ blt .Ltail_vsx_8x_1
+
+ .long 0x7C802619
+ .long 0x7F882619
+ .long 0x7FA92619
+ .long 0x7FCA2619
+
+ vxor 4,4,0
+ vxor 28,28,1
+ vxor 29,29,2
+ vxor 30,30,3
+
+ .long 0x7C801F19
+ .long 0x7F881F19
+ addi 4,4,0x40
+ .long 0x7FA91F19
+ subi 5,5,0x40
+ .long 0x7FCA1F19
+ addi 3,3,0x40
+ beq .Ldone_vsx_8x
+
+ mtctr 0
+ bne .Loop_outer_vsx_8x
+
+.Ldone_vsx_8x:
+ lwz 12,252(1)
+ li 10,127
+ li 11,143
+ ld 0, 272(1)
+ or 12,12,12
+ lvx 24,10,1
+ addi 10,10,32
+ lvx 25,11,1
+ addi 11,11,32
+ lvx 26,10,1
+ addi 10,10,32
+ lvx 27,11,1
+ addi 11,11,32
+ lvx 28,10,1
+ addi 10,10,32
+ lvx 29,11,1
+ addi 11,11,32
+ lvx 30,10,1
+ lvx 31,11,1
+ mtlr 0
+ addi 1,1,256
+ blr
+
+.align 4
+.Ltail_vsx_8x:
+ addi 11,1,48
+ mtctr 5
+ .long 0x7C005F19
+ .long 0x7C885F19
+ .long 0x7D095F19
+ .long 0x7D8A5F19
+ subi 12,11,1
+ subi 4,4,1
+ subi 3,3,1
+ bl .Loop_tail_vsx_8x
+.Ltail_vsx_8x_1:
+ addi 11,1,48
+ mtctr 5
+ .long 0x7C005F19
+ .long 0x7C285F19
+ .long 0x7C495F19
+ .long 0x7C6A5F19
+ subi 12,11,1
+ subi 4,4,1
+ subi 3,3,1
+ bl .Loop_tail_vsx_8x
+
+.Loop_tail_vsx_8x:
+ lbzu 6,1(12)
+ lbzu 7,1(4)
+ xor 6,6,7
+ stbu 6,1(3)
+ bdnz .Loop_tail_vsx_8x
+
+ .long 0x7F605F19
+ .long 0x7F685F19
+ .long 0x7F695F19
+ .long 0x7F6A5F19
+
+ b .Ldone_vsx_8x
+.long 0
+.byte 0,12,0x04,1,0x80,0,5,0
+.long 0
+.size ChaCha20_ctr32_vsx_8x,.-ChaCha20_ctr32_vsx_8x
+.align 5
+.Lconsts:
+ mflr 0
+ bcl 20,31,$+4
+ mflr 12
+ addi 12,12,56
+ mtlr 0
+ blr
+.long 0
+.byte 0,12,0x14,0,0,0,0,0
+.space 28
+.Lsigma:
+.long 0x61707865,0x3320646e,0x79622d32,0x6b206574
+.long 1,0,0,0
+.long 2,0,0,0
+.long 3,0,0,0
+.long 4,0,0,0
+.long 0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d
+.long 0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c
+.long 0x61707865,0x61707865,0x61707865,0x61707865
+.long 0x3320646e,0x3320646e,0x3320646e,0x3320646e
+.long 0x79622d32,0x79622d32,0x79622d32,0x79622d32
+.long 0x6b206574,0x6b206574,0x6b206574,0x6b206574
+.long 0,1,2,3
+.long 0x03020100,0x07060504,0x0b0a0908,0x0f0e0d0c
+.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,80,111,119,101,114,80,67,47,65,108,116,105,86,101,99,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
+.align 2
+.align 2