174 lines
2.1 KiB
ArmAsm
174 lines
2.1 KiB
ArmAsm
.machine "any"
|
|
|
|
.text
|
|
|
|
.globl gcm_init_p8
|
|
.type gcm_init_p8,@function
|
|
.align 5
|
|
gcm_init_p8:
|
|
lis 0,0xfff0
|
|
li 8,0x10
|
|
mfspr 12,256
|
|
li 9,0x20
|
|
mtspr 256,0
|
|
li 10,0x30
|
|
.long 0x7D202699
|
|
|
|
vspltisb 8,-16
|
|
vspltisb 5,1
|
|
vaddubm 8,8,8
|
|
vxor 4,4,4
|
|
vor 8,8,5
|
|
vsldoi 8,8,4,15
|
|
vsldoi 6,4,5,1
|
|
vaddubm 8,8,8
|
|
vspltisb 7,7
|
|
vor 8,8,6
|
|
vspltb 6,9,0
|
|
vsl 9,9,5
|
|
vsrab 6,6,7
|
|
vand 6,6,8
|
|
vxor 9,9,6
|
|
|
|
vsldoi 9,9,9,8
|
|
vsldoi 8,4,8,8
|
|
vsldoi 11,4,9,8
|
|
vsldoi 10,9,4,8
|
|
|
|
.long 0x7D001F99
|
|
.long 0x7D681F99
|
|
.long 0x7D291F99
|
|
.long 0x7D4A1F99
|
|
|
|
mtspr 256,12
|
|
blr
|
|
.long 0
|
|
.byte 0,12,0x14,0,0,0,2,0
|
|
.long 0
|
|
|
|
|
|
.globl gcm_gmult_p8
|
|
.type gcm_gmult_p8,@function
|
|
.align 5
|
|
gcm_gmult_p8:
|
|
lis 0,0xfff8
|
|
li 8,0x10
|
|
mfspr 12,256
|
|
li 9,0x20
|
|
mtspr 256,0
|
|
li 10,0x30
|
|
.long 0x7C601E99
|
|
|
|
.long 0x7D682699
|
|
|
|
.long 0x7D292699
|
|
|
|
.long 0x7D4A2699
|
|
|
|
.long 0x7D002699
|
|
|
|
vxor 4,4,4
|
|
|
|
.long 0x10035CC8
|
|
.long 0x10234CC8
|
|
.long 0x104354C8
|
|
|
|
.long 0x10E044C8
|
|
|
|
vsldoi 5,1,4,8
|
|
vsldoi 6,4,1,8
|
|
vxor 0,0,5
|
|
vxor 2,2,6
|
|
|
|
vsldoi 0,0,0,8
|
|
vxor 0,0,7
|
|
|
|
vsldoi 6,0,0,8
|
|
.long 0x100044C8
|
|
vxor 6,6,2
|
|
vxor 0,0,6
|
|
|
|
|
|
.long 0x7C001F99
|
|
|
|
mtspr 256,12
|
|
blr
|
|
.long 0
|
|
.byte 0,12,0x14,0,0,0,2,0
|
|
.long 0
|
|
|
|
|
|
.globl gcm_ghash_p8
|
|
.type gcm_ghash_p8,@function
|
|
.align 5
|
|
gcm_ghash_p8:
|
|
lis 0,0xfff8
|
|
li 8,0x10
|
|
mfspr 12,256
|
|
li 9,0x20
|
|
mtspr 256,0
|
|
li 10,0x30
|
|
.long 0x7C001E99
|
|
|
|
.long 0x7D682699
|
|
|
|
.long 0x7D292699
|
|
|
|
.long 0x7D4A2699
|
|
|
|
.long 0x7D002699
|
|
|
|
vxor 4,4,4
|
|
|
|
.long 0x7C602E99
|
|
addi 5,5,16
|
|
subi 6,6,16
|
|
|
|
vxor 3,3,0
|
|
b .Loop
|
|
|
|
.align 5
|
|
.Loop:
|
|
subic 6,6,16
|
|
.long 0x10035CC8
|
|
subfe. 0,0,0
|
|
.long 0x10234CC8
|
|
and 0,0,6
|
|
.long 0x104354C8
|
|
add 5,5,0
|
|
|
|
.long 0x10E044C8
|
|
|
|
vsldoi 5,1,4,8
|
|
vsldoi 6,4,1,8
|
|
vxor 0,0,5
|
|
vxor 2,2,6
|
|
|
|
vsldoi 0,0,0,8
|
|
vxor 0,0,7
|
|
.long 0x7C602E99
|
|
addi 5,5,16
|
|
|
|
vsldoi 6,0,0,8
|
|
.long 0x100044C8
|
|
|
|
vxor 6,6,2
|
|
vxor 3,3,6
|
|
vxor 3,3,0
|
|
beq .Loop
|
|
|
|
vxor 0,0,6
|
|
|
|
.long 0x7C001F99
|
|
|
|
mtspr 256,12
|
|
blr
|
|
.long 0
|
|
.byte 0,12,0x14,0,0,0,4,0
|
|
.long 0
|
|
|
|
|
|
.byte 71,72,65,83,72,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,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
|