diff options
author | danlark <danlark@yandex-team.ru> | 2022-02-10 16:46:10 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:10 +0300 |
commit | baa58daefa91fde4b4769facdbd2903763b9c6a8 (patch) | |
tree | 1a2c5ffcf89eb53ecd79dbc9bc0a195c27404d0c /contrib/libs/openssl/asm/ppc64le/crypto/aes/vpaes-ppc.s | |
parent | 3426a9bc7f169ae9da54cef557ad2a33f6e8eee0 (diff) | |
download | ydb-baa58daefa91fde4b4769facdbd2903763b9c6a8.tar.gz |
Restoring authorship annotation for <danlark@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/openssl/asm/ppc64le/crypto/aes/vpaes-ppc.s')
-rw-r--r-- | contrib/libs/openssl/asm/ppc64le/crypto/aes/vpaes-ppc.s | 2698 |
1 files changed, 1349 insertions, 1349 deletions
diff --git a/contrib/libs/openssl/asm/ppc64le/crypto/aes/vpaes-ppc.s b/contrib/libs/openssl/asm/ppc64le/crypto/aes/vpaes-ppc.s index 2cf12caf58..439da0fe81 100644 --- a/contrib/libs/openssl/asm/ppc64le/crypto/aes/vpaes-ppc.s +++ b/contrib/libs/openssl/asm/ppc64le/crypto/aes/vpaes-ppc.s @@ -1,1497 +1,1497 @@ -.machine "any" - -.text - -.align 7 -_vpaes_consts: -.Lk_mc_forward: +.machine "any" + +.text + +.align 7 +_vpaes_consts: +.Lk_mc_forward: .byte 0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c .byte 0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00 .byte 0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04 .byte 0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08 -.Lk_mc_backward: +.Lk_mc_backward: .byte 0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e .byte 0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a .byte 0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06 .byte 0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02 -.Lk_sr: +.Lk_sr: .byte 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f .byte 0x00,0x05,0x0a,0x0f,0x04,0x09,0x0e,0x03,0x08,0x0d,0x02,0x07,0x0c,0x01,0x06,0x0b .byte 0x00,0x09,0x02,0x0b,0x04,0x0d,0x06,0x0f,0x08,0x01,0x0a,0x03,0x0c,0x05,0x0e,0x07 .byte 0x00,0x0d,0x0a,0x07,0x04,0x01,0x0e,0x0b,0x08,0x05,0x02,0x0f,0x0c,0x09,0x06,0x03 - - - - -.Lk_inv: + + + + +.Lk_inv: .byte 0xf0,0x01,0x08,0x0d,0x0f,0x06,0x05,0x0e,0x02,0x0c,0x0b,0x0a,0x09,0x03,0x07,0x04 .byte 0xf0,0x07,0x0b,0x0f,0x06,0x0a,0x04,0x01,0x09,0x08,0x05,0x02,0x0c,0x0e,0x0d,0x03 -.Lk_ipt: +.Lk_ipt: .byte 0x00,0x70,0x2a,0x5a,0x98,0xe8,0xb2,0xc2,0x08,0x78,0x22,0x52,0x90,0xe0,0xba,0xca .byte 0x00,0x4d,0x7c,0x31,0x7d,0x30,0x01,0x4c,0x81,0xcc,0xfd,0xb0,0xfc,0xb1,0x80,0xcd -.Lk_sbo: +.Lk_sbo: .byte 0x00,0xc7,0xbd,0x6f,0x17,0x6d,0xd2,0xd0,0x78,0xa8,0x02,0xc5,0x7a,0xbf,0xaa,0x15 .byte 0x00,0x6a,0xbb,0x5f,0xa5,0x74,0xe4,0xcf,0xfa,0x35,0x2b,0x41,0xd1,0x90,0x1e,0x8e -.Lk_sb1: +.Lk_sb1: .byte 0x00,0x23,0xe2,0xfa,0x15,0xd4,0x18,0x36,0xef,0xd9,0x2e,0x0d,0xc1,0xcc,0xf7,0x3b .byte 0x00,0x3e,0x50,0xcb,0x8f,0xe1,0x9b,0xb1,0x44,0xf5,0x2a,0x14,0x6e,0x7a,0xdf,0xa5 -.Lk_sb2: +.Lk_sb2: .byte 0x00,0x29,0xe1,0x0a,0x40,0x88,0xeb,0x69,0x4a,0x23,0x82,0xab,0xc8,0x63,0xa1,0xc2 .byte 0x00,0x24,0x71,0x0b,0xc6,0x93,0x7a,0xe2,0xcd,0x2f,0x98,0xbc,0x55,0xe9,0xb7,0x5e - - - - -.Lk_dipt: + + + + +.Lk_dipt: .byte 0x00,0x5f,0x54,0x0b,0x04,0x5b,0x50,0x0f,0x1a,0x45,0x4e,0x11,0x1e,0x41,0x4a,0x15 .byte 0x00,0x65,0x05,0x60,0xe6,0x83,0xe3,0x86,0x94,0xf1,0x91,0xf4,0x72,0x17,0x77,0x12 -.Lk_dsbo: +.Lk_dsbo: .byte 0x00,0x40,0xf9,0x7e,0x53,0xea,0x87,0x13,0x2d,0x3e,0x94,0xd4,0xb9,0x6d,0xaa,0xc7 .byte 0x00,0x1d,0x44,0x93,0x0f,0x56,0xd7,0x12,0x9c,0x8e,0xc5,0xd8,0x59,0x81,0x4b,0xca -.Lk_dsb9: +.Lk_dsb9: .byte 0x00,0xd6,0x86,0x9a,0x53,0x03,0x1c,0x85,0xc9,0x4c,0x99,0x4f,0x50,0x1f,0xd5,0xca .byte 0x00,0x49,0xd7,0xec,0x89,0x17,0x3b,0xc0,0x65,0xa5,0xfb,0xb2,0x9e,0x2c,0x5e,0x72 -.Lk_dsbd: +.Lk_dsbd: .byte 0x00,0xa2,0xb1,0xe6,0xdf,0xcc,0x57,0x7d,0x39,0x44,0x2a,0x88,0x13,0x9b,0x6e,0xf5 .byte 0x00,0xcb,0xc6,0x24,0xf7,0xfa,0xe2,0x3c,0xd3,0xef,0xde,0x15,0x0d,0x18,0x31,0x29 -.Lk_dsbb: +.Lk_dsbb: .byte 0x00,0x42,0xb4,0x96,0x92,0x64,0x22,0xd0,0x04,0xd4,0xf2,0xb0,0xf6,0x46,0x26,0x60 .byte 0x00,0x67,0x59,0xcd,0xa6,0x98,0x94,0xc1,0x6b,0xaa,0x55,0x32,0x3e,0x0c,0xff,0xf3 -.Lk_dsbe: +.Lk_dsbe: .byte 0x00,0xd0,0xd4,0x26,0x96,0x92,0xf2,0x46,0xb0,0xf6,0xb4,0x64,0x04,0x60,0x42,0x22 .byte 0x00,0xc1,0xaa,0xff,0xcd,0xa6,0x55,0x0c,0x32,0x3e,0x59,0x98,0x6b,0xf3,0x67,0x94 - - - - -.Lk_dksd: + + + + +.Lk_dksd: .byte 0x00,0x47,0xe4,0xa3,0x5d,0x1a,0xb9,0xfe,0xf9,0xbe,0x1d,0x5a,0xa4,0xe3,0x40,0x07 .byte 0x00,0x83,0x36,0xb5,0xf4,0x77,0xc2,0x41,0x1e,0x9d,0x28,0xab,0xea,0x69,0xdc,0x5f -.Lk_dksb: +.Lk_dksb: .byte 0x00,0xd5,0x50,0x85,0x1f,0xca,0x4f,0x9a,0x99,0x4c,0xc9,0x1c,0x86,0x53,0xd6,0x03 .byte 0x00,0x4a,0xfc,0xb6,0xa7,0xed,0x5b,0x11,0xc8,0x82,0x34,0x7e,0x6f,0x25,0x93,0xd9 -.Lk_dkse: +.Lk_dkse: .byte 0x00,0xd6,0xc9,0x1f,0xca,0x1c,0x03,0xd5,0x86,0x50,0x4f,0x99,0x4c,0x9a,0x85,0x53 .byte 0xe8,0x7b,0xdc,0x4f,0x05,0x96,0x31,0xa2,0x87,0x14,0xb3,0x20,0x6a,0xf9,0x5e,0xcd -.Lk_dks9: +.Lk_dks9: .byte 0x00,0xa7,0xd9,0x7e,0xc8,0x6f,0x11,0xb6,0xfc,0x5b,0x25,0x82,0x34,0x93,0xed,0x4a .byte 0x00,0x33,0x14,0x27,0x62,0x51,0x76,0x45,0xce,0xfd,0xda,0xe9,0xac,0x9f,0xb8,0x8b - -.Lk_rcon: -.byte 0xb6,0xee,0x9d,0xaf,0xb9,0x91,0x83,0x1f,0x81,0x7d,0x7c,0x4d,0x08,0x98,0x2a,0x70 -.Lk_s63: -.byte 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b - -.Lk_opt: + +.Lk_rcon: +.byte 0xb6,0xee,0x9d,0xaf,0xb9,0x91,0x83,0x1f,0x81,0x7d,0x7c,0x4d,0x08,0x98,0x2a,0x70 +.Lk_s63: +.byte 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b + +.Lk_opt: .byte 0x00,0x60,0xb6,0xd6,0x29,0x49,0x9f,0xff,0x08,0x68,0xbe,0xde,0x21,0x41,0x97,0xf7 .byte 0x00,0xec,0xbc,0x50,0x51,0xbd,0xed,0x01,0xe0,0x0c,0x5c,0xb0,0xb1,0x5d,0x0d,0xe1 -.Lk_deskew: +.Lk_deskew: .byte 0x00,0xe3,0xa4,0x47,0x40,0xa3,0xe4,0x07,0x1a,0xf9,0xbe,0x5d,0x5a,0xb9,0xfe,0x1d .byte 0x00,0x69,0xea,0x83,0xdc,0xb5,0x36,0x5f,0x77,0x1e,0x9d,0xf4,0xab,0xc2,0x41,0x28 -.align 5 -.Lconsts: - mflr 0 - bcl 20,31,$+4 - mflr 12 - addi 12,12,-0x308 - mtlr 0 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 -.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,108,116,105,86,101,99,44,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 -.align 2 -.align 6 - - - - - - -.align 4 -_vpaes_encrypt_preheat: - mflr 8 - bl .Lconsts - mtlr 8 - li 11, 0xc0 - li 10, 0xd0 - li 9, 0xe0 - li 8, 0xf0 - vxor 7, 7, 7 - vspltisb 8,4 - vspltisb 9,0x0f - lvx 10, 12, 11 - li 11, 0x100 - lvx 11, 12, 10 - li 10, 0x110 - lvx 12, 12, 9 - li 9, 0x120 - lvx 13, 12, 8 - li 8, 0x130 - lvx 14, 12, 11 - li 11, 0x140 - lvx 15, 12, 10 - li 10, 0x150 - lvx 16, 12, 9 - lvx 17, 12, 8 - lvx 18, 12, 11 - lvx 19, 12, 10 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - - - - - - - - - - - - - - - -.align 5 -_vpaes_encrypt_core: - lwz 8, 240(5) - li 9, 16 - lvx 5, 0, 5 - li 11, 0x10 - lvx 6, 9, 5 - addi 9, 9, 16 +.align 5 +.Lconsts: + mflr 0 + bcl 20,31,$+4 + mflr 12 + addi 12,12,-0x308 + mtlr 0 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 +.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,108,116,105,86,101,99,44,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 +.align 2 +.align 6 + + + + + + +.align 4 +_vpaes_encrypt_preheat: + mflr 8 + bl .Lconsts + mtlr 8 + li 11, 0xc0 + li 10, 0xd0 + li 9, 0xe0 + li 8, 0xf0 + vxor 7, 7, 7 + vspltisb 8,4 + vspltisb 9,0x0f + lvx 10, 12, 11 + li 11, 0x100 + lvx 11, 12, 10 + li 10, 0x110 + lvx 12, 12, 9 + li 9, 0x120 + lvx 13, 12, 8 + li 8, 0x130 + lvx 14, 12, 11 + li 11, 0x140 + lvx 15, 12, 10 + li 10, 0x150 + lvx 16, 12, 9 + lvx 17, 12, 8 + lvx 18, 12, 11 + lvx 19, 12, 10 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + + + + + + + + + + + + + + + +.align 5 +_vpaes_encrypt_core: + lwz 8, 240(5) + li 9, 16 + lvx 5, 0, 5 + li 11, 0x10 + lvx 6, 9, 5 + addi 9, 9, 16 vperm 5, 5, 6, 31 - addi 10, 11, 0x40 - vsrb 1, 0, 8 - vperm 0, 12, 12, 0 - vperm 1, 13, 13, 1 - vxor 0, 0, 5 - vxor 0, 0, 1 - mtctr 8 - b .Lenc_entry - -.align 4 -.Lenc_loop: - - vperm 4, 17, 7, 2 - lvx 1, 12, 11 - addi 11, 11, 16 - vperm 0, 16, 7, 3 - vxor 4, 4, 5 - andi. 11, 11, 0x30 - vperm 5, 19, 7, 2 - vxor 0, 0, 4 - vperm 2, 18, 7, 3 - lvx 4, 12, 10 - addi 10, 11, 0x40 - vperm 3, 0, 7, 1 - vxor 2, 2, 5 - vperm 0, 0, 7, 4 - vxor 3, 3, 2 - vperm 4, 3, 7, 1 - vxor 0, 0, 3 - vxor 0, 0, 4 - -.Lenc_entry: - - vsrb 1, 0, 8 - vperm 5, 11, 11, 0 - vxor 0, 0, 1 - vperm 3, 10, 10, 1 - vperm 4, 10, 10, 0 - vand 0, 0, 9 - vxor 3, 3, 5 - vxor 4, 4, 5 - vperm 2, 10, 7, 3 - vor 5,6,6 - lvx 6, 9, 5 - vperm 3, 10, 7, 4 - addi 9, 9, 16 - vxor 2, 2, 0 + addi 10, 11, 0x40 + vsrb 1, 0, 8 + vperm 0, 12, 12, 0 + vperm 1, 13, 13, 1 + vxor 0, 0, 5 + vxor 0, 0, 1 + mtctr 8 + b .Lenc_entry + +.align 4 +.Lenc_loop: + + vperm 4, 17, 7, 2 + lvx 1, 12, 11 + addi 11, 11, 16 + vperm 0, 16, 7, 3 + vxor 4, 4, 5 + andi. 11, 11, 0x30 + vperm 5, 19, 7, 2 + vxor 0, 0, 4 + vperm 2, 18, 7, 3 + lvx 4, 12, 10 + addi 10, 11, 0x40 + vperm 3, 0, 7, 1 + vxor 2, 2, 5 + vperm 0, 0, 7, 4 + vxor 3, 3, 2 + vperm 4, 3, 7, 1 + vxor 0, 0, 3 + vxor 0, 0, 4 + +.Lenc_entry: + + vsrb 1, 0, 8 + vperm 5, 11, 11, 0 + vxor 0, 0, 1 + vperm 3, 10, 10, 1 + vperm 4, 10, 10, 0 + vand 0, 0, 9 + vxor 3, 3, 5 + vxor 4, 4, 5 + vperm 2, 10, 7, 3 + vor 5,6,6 + lvx 6, 9, 5 + vperm 3, 10, 7, 4 + addi 9, 9, 16 + vxor 2, 2, 0 vperm 5, 5, 6, 31 - vxor 3, 3, 1 - bdnz .Lenc_loop - - - addi 10, 11, 0x80 - - - vperm 4, 14, 7, 2 - lvx 1, 12, 10 - vperm 0, 15, 7, 3 - vxor 4, 4, 5 - vxor 0, 0, 4 - vperm 0, 0, 7, 1 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - -.globl vpaes_encrypt -.type vpaes_encrypt,@function + vxor 3, 3, 1 + bdnz .Lenc_loop + + + addi 10, 11, 0x80 + + + vperm 4, 14, 7, 2 + lvx 1, 12, 10 + vperm 0, 15, 7, 3 + vxor 4, 4, 5 + vxor 0, 0, 4 + vperm 0, 0, 7, 1 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + +.globl vpaes_encrypt +.type vpaes_encrypt,@function .section ".opd","aw" .align 3 vpaes_encrypt: .quad .vpaes_encrypt,.TOC.@tocbase,0 .previous -.align 5 +.align 5 .vpaes_encrypt: - stdu 1,-256(1) - li 10,63 - li 11,79 - mflr 6 + stdu 1,-256(1) + li 10,63 + li 11,79 + mflr 6 mfspr 7,256 - stvx 20,10,1 - addi 10,10,32 - stvx 21,11,1 - addi 11,11,32 - stvx 22,10,1 - addi 10,10,32 - stvx 23,11,1 - addi 11,11,32 - 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 7,252(1) - li 0, -1 - std 6,272(1) + stvx 20,10,1 + addi 10,10,32 + stvx 21,11,1 + addi 11,11,32 + stvx 22,10,1 + addi 10,10,32 + stvx 23,11,1 + addi 11,11,32 + 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 7,252(1) + li 0, -1 + std 6,272(1) mtspr 256,0 - - bl _vpaes_encrypt_preheat - + + bl _vpaes_encrypt_preheat + lvsl 27, 0, 3 - lvx 0, 0, 3 - addi 3, 3, 15 + lvx 0, 0, 3 + addi 3, 3, 15 lvsr 29, 0, 4 lvsl 31, 0, 5 - lvx 26, 0, 3 + lvx 26, 0, 3 vperm 0, 0, 26, 27 - - bl _vpaes_encrypt_core - - andi. 8, 4, 15 - li 9, 16 - beq .Lenc_out_aligned - - vperm 0, 0, 0, 29 - mtctr 9 -.Lenc_out_unaligned: - stvebx 0, 0, 4 - addi 4, 4, 1 - bdnz .Lenc_out_unaligned - b .Lenc_done - -.align 4 -.Lenc_out_aligned: - stvx 0, 0, 4 -.Lenc_done: - - li 10,63 - li 11,79 - mtlr 6 + + bl _vpaes_encrypt_core + + andi. 8, 4, 15 + li 9, 16 + beq .Lenc_out_aligned + + vperm 0, 0, 0, 29 + mtctr 9 +.Lenc_out_unaligned: + stvebx 0, 0, 4 + addi 4, 4, 1 + bdnz .Lenc_out_unaligned + b .Lenc_done + +.align 4 +.Lenc_out_aligned: + stvx 0, 0, 4 +.Lenc_done: + + li 10,63 + li 11,79 + mtlr 6 mtspr 256,7 - lvx 20,10,1 - addi 10,10,32 - lvx 21,11,1 - addi 11,11,32 - lvx 22,10,1 - addi 10,10,32 - lvx 23,11,1 - addi 11,11,32 - 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 - addi 1,1,256 - blr -.long 0 -.byte 0,12,0x04,1,0x80,0,3,0 -.long 0 + lvx 20,10,1 + addi 10,10,32 + lvx 21,11,1 + addi 11,11,32 + lvx 22,10,1 + addi 10,10,32 + lvx 23,11,1 + addi 11,11,32 + 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 + addi 1,1,256 + blr +.long 0 +.byte 0,12,0x04,1,0x80,0,3,0 +.long 0 .size .vpaes_encrypt,.-.vpaes_encrypt .size vpaes_encrypt,.-.vpaes_encrypt - -.align 4 -_vpaes_decrypt_preheat: - mflr 8 - bl .Lconsts - mtlr 8 - li 11, 0xc0 - li 10, 0xd0 - li 9, 0x160 - li 8, 0x170 - vxor 7, 7, 7 - vspltisb 8,4 - vspltisb 9,0x0f - lvx 10, 12, 11 - li 11, 0x180 - lvx 11, 12, 10 - li 10, 0x190 - lvx 12, 12, 9 - li 9, 0x1a0 - lvx 13, 12, 8 - li 8, 0x1b0 - lvx 14, 12, 11 - li 11, 0x1c0 - lvx 15, 12, 10 - li 10, 0x1d0 - lvx 16, 12, 9 - li 9, 0x1e0 - lvx 17, 12, 8 - li 8, 0x1f0 - lvx 18, 12, 11 - li 11, 0x200 - lvx 19, 12, 10 - li 10, 0x210 - lvx 20, 12, 9 - lvx 21, 12, 8 - lvx 22, 12, 11 - lvx 23, 12, 10 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - - - - - - -.align 4 -_vpaes_decrypt_core: - lwz 8, 240(5) - li 9, 16 - lvx 5, 0, 5 - li 11, 0x30 - lvx 6, 9, 5 - addi 9, 9, 16 + +.align 4 +_vpaes_decrypt_preheat: + mflr 8 + bl .Lconsts + mtlr 8 + li 11, 0xc0 + li 10, 0xd0 + li 9, 0x160 + li 8, 0x170 + vxor 7, 7, 7 + vspltisb 8,4 + vspltisb 9,0x0f + lvx 10, 12, 11 + li 11, 0x180 + lvx 11, 12, 10 + li 10, 0x190 + lvx 12, 12, 9 + li 9, 0x1a0 + lvx 13, 12, 8 + li 8, 0x1b0 + lvx 14, 12, 11 + li 11, 0x1c0 + lvx 15, 12, 10 + li 10, 0x1d0 + lvx 16, 12, 9 + li 9, 0x1e0 + lvx 17, 12, 8 + li 8, 0x1f0 + lvx 18, 12, 11 + li 11, 0x200 + lvx 19, 12, 10 + li 10, 0x210 + lvx 20, 12, 9 + lvx 21, 12, 8 + lvx 22, 12, 11 + lvx 23, 12, 10 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + + + + + + +.align 4 +_vpaes_decrypt_core: + lwz 8, 240(5) + li 9, 16 + lvx 5, 0, 5 + li 11, 0x30 + lvx 6, 9, 5 + addi 9, 9, 16 vperm 5, 5, 6, 31 - vsrb 1, 0, 8 - vperm 0, 12, 12, 0 - vperm 1, 13, 13, 1 - vxor 0, 0, 5 - vxor 0, 0, 1 - mtctr 8 - b .Ldec_entry - -.align 4 -.Ldec_loop: - - - - lvx 0, 12, 11 - - - vperm 4, 16, 7, 2 - subi 11, 11, 16 - vperm 1, 17, 7, 3 - andi. 11, 11, 0x30 - vxor 5, 5, 4 - - vxor 5, 5, 1 - - - vperm 4, 18, 7, 2 - vperm 5, 5, 7, 0 - vperm 1, 19, 7, 3 - vxor 5, 5, 4 - - vxor 5, 5, 1 - - - vperm 4, 20, 7, 2 - vperm 5, 5, 7, 0 - vperm 1, 21, 7, 3 - vxor 5, 5, 4 - - vxor 5, 5, 1 - - - vperm 4, 22, 7, 2 - vperm 5, 5, 7, 0 - vperm 1, 23, 7, 3 - vxor 0, 5, 4 - vxor 0, 0, 1 - -.Ldec_entry: - - vsrb 1, 0, 8 - vperm 2, 11, 11, 0 - vxor 0, 0, 1 - vperm 3, 10, 10, 1 - vperm 4, 10, 10, 0 - vand 0, 0, 9 - vxor 3, 3, 2 - vxor 4, 4, 2 - vperm 2, 10, 7, 3 - vor 5,6,6 - lvx 6, 9, 5 - vperm 3, 10, 7, 4 - addi 9, 9, 16 - vxor 2, 2, 0 + vsrb 1, 0, 8 + vperm 0, 12, 12, 0 + vperm 1, 13, 13, 1 + vxor 0, 0, 5 + vxor 0, 0, 1 + mtctr 8 + b .Ldec_entry + +.align 4 +.Ldec_loop: + + + + lvx 0, 12, 11 + + + vperm 4, 16, 7, 2 + subi 11, 11, 16 + vperm 1, 17, 7, 3 + andi. 11, 11, 0x30 + vxor 5, 5, 4 + + vxor 5, 5, 1 + + + vperm 4, 18, 7, 2 + vperm 5, 5, 7, 0 + vperm 1, 19, 7, 3 + vxor 5, 5, 4 + + vxor 5, 5, 1 + + + vperm 4, 20, 7, 2 + vperm 5, 5, 7, 0 + vperm 1, 21, 7, 3 + vxor 5, 5, 4 + + vxor 5, 5, 1 + + + vperm 4, 22, 7, 2 + vperm 5, 5, 7, 0 + vperm 1, 23, 7, 3 + vxor 0, 5, 4 + vxor 0, 0, 1 + +.Ldec_entry: + + vsrb 1, 0, 8 + vperm 2, 11, 11, 0 + vxor 0, 0, 1 + vperm 3, 10, 10, 1 + vperm 4, 10, 10, 0 + vand 0, 0, 9 + vxor 3, 3, 2 + vxor 4, 4, 2 + vperm 2, 10, 7, 3 + vor 5,6,6 + lvx 6, 9, 5 + vperm 3, 10, 7, 4 + addi 9, 9, 16 + vxor 2, 2, 0 vperm 5, 5, 6, 31 - vxor 3, 3, 1 - bdnz .Ldec_loop - - - addi 10, 11, 0x80 - - vperm 4, 14, 7, 2 - - lvx 2, 12, 10 - vperm 1, 15, 7, 3 - vxor 4, 4, 5 - vxor 0, 1, 4 - vperm 0, 0, 7, 2 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - -.globl vpaes_decrypt -.type vpaes_decrypt,@function + vxor 3, 3, 1 + bdnz .Ldec_loop + + + addi 10, 11, 0x80 + + vperm 4, 14, 7, 2 + + lvx 2, 12, 10 + vperm 1, 15, 7, 3 + vxor 4, 4, 5 + vxor 0, 1, 4 + vperm 0, 0, 7, 2 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + +.globl vpaes_decrypt +.type vpaes_decrypt,@function .section ".opd","aw" .align 3 vpaes_decrypt: .quad .vpaes_decrypt,.TOC.@tocbase,0 .previous -.align 5 +.align 5 .vpaes_decrypt: - stdu 1,-256(1) - li 10,63 - li 11,79 - mflr 6 + stdu 1,-256(1) + li 10,63 + li 11,79 + mflr 6 mfspr 7,256 - stvx 20,10,1 - addi 10,10,32 - stvx 21,11,1 - addi 11,11,32 - stvx 22,10,1 - addi 10,10,32 - stvx 23,11,1 - addi 11,11,32 - 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 7,252(1) - li 0, -1 - std 6,272(1) + stvx 20,10,1 + addi 10,10,32 + stvx 21,11,1 + addi 11,11,32 + stvx 22,10,1 + addi 10,10,32 + stvx 23,11,1 + addi 11,11,32 + 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 7,252(1) + li 0, -1 + std 6,272(1) mtspr 256,0 - - bl _vpaes_decrypt_preheat - + + bl _vpaes_decrypt_preheat + lvsl 27, 0, 3 - lvx 0, 0, 3 - addi 3, 3, 15 + lvx 0, 0, 3 + addi 3, 3, 15 lvsr 29, 0, 4 lvsl 31, 0, 5 - lvx 26, 0, 3 + lvx 26, 0, 3 vperm 0, 0, 26, 27 - - bl _vpaes_decrypt_core - - andi. 8, 4, 15 - li 9, 16 - beq .Ldec_out_aligned - - vperm 0, 0, 0, 29 - mtctr 9 -.Ldec_out_unaligned: - stvebx 0, 0, 4 - addi 4, 4, 1 - bdnz .Ldec_out_unaligned - b .Ldec_done - -.align 4 -.Ldec_out_aligned: - stvx 0, 0, 4 -.Ldec_done: - - li 10,63 - li 11,79 - mtlr 6 + + bl _vpaes_decrypt_core + + andi. 8, 4, 15 + li 9, 16 + beq .Ldec_out_aligned + + vperm 0, 0, 0, 29 + mtctr 9 +.Ldec_out_unaligned: + stvebx 0, 0, 4 + addi 4, 4, 1 + bdnz .Ldec_out_unaligned + b .Ldec_done + +.align 4 +.Ldec_out_aligned: + stvx 0, 0, 4 +.Ldec_done: + + li 10,63 + li 11,79 + mtlr 6 mtspr 256,7 - lvx 20,10,1 - addi 10,10,32 - lvx 21,11,1 - addi 11,11,32 - lvx 22,10,1 - addi 10,10,32 - lvx 23,11,1 - addi 11,11,32 - 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 - addi 1,1,256 - blr -.long 0 -.byte 0,12,0x04,1,0x80,0,3,0 -.long 0 + lvx 20,10,1 + addi 10,10,32 + lvx 21,11,1 + addi 11,11,32 + lvx 22,10,1 + addi 10,10,32 + lvx 23,11,1 + addi 11,11,32 + 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 + addi 1,1,256 + blr +.long 0 +.byte 0,12,0x04,1,0x80,0,3,0 +.long 0 .size .vpaes_decrypt,.-.vpaes_decrypt .size vpaes_decrypt,.-.vpaes_decrypt - -.globl vpaes_cbc_encrypt -.type vpaes_cbc_encrypt,@function + +.globl vpaes_cbc_encrypt +.type vpaes_cbc_encrypt,@function .section ".opd","aw" .align 3 vpaes_cbc_encrypt: .quad .vpaes_cbc_encrypt,.TOC.@tocbase,0 .previous -.align 5 +.align 5 .vpaes_cbc_encrypt: - cmpldi 5,16 - .long 0x4dc00020 - - stdu 1,-272(1) - mflr 0 - li 10,63 - li 11,79 + cmpldi 5,16 + .long 0x4dc00020 + + stdu 1,-272(1) + mflr 0 + li 10,63 + li 11,79 mfspr 12,256 - stvx 20,10,1 - addi 10,10,32 - stvx 21,11,1 - addi 11,11,32 - stvx 22,10,1 - addi 10,10,32 - stvx 23,11,1 - addi 11,11,32 - 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) - std 30,256(1) - std 31,264(1) - li 9, -16 - std 0, 288(1) - - and 30, 5, 9 - andi. 9, 4, 15 - mr 5, 6 - mr 31, 7 - li 6, -1 - mcrf 1, 0 - mr 7, 12 + stvx 20,10,1 + addi 10,10,32 + stvx 21,11,1 + addi 11,11,32 + stvx 22,10,1 + addi 10,10,32 + stvx 23,11,1 + addi 11,11,32 + 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) + std 30,256(1) + std 31,264(1) + li 9, -16 + std 0, 288(1) + + and 30, 5, 9 + andi. 9, 4, 15 + mr 5, 6 + mr 31, 7 + li 6, -1 + mcrf 1, 0 + mr 7, 12 mtspr 256,6 - - lvx 24, 0, 31 - li 9, 15 + + lvx 24, 0, 31 + li 9, 15 lvsl 27, 0, 31 - lvx 25, 9, 31 + lvx 25, 9, 31 vperm 24, 24, 25, 27 - - cmpwi 8, 0 - neg 8, 3 - vxor 7, 7, 7 + + cmpwi 8, 0 + neg 8, 3 + vxor 7, 7, 7 lvsl 31, 0, 5 lvsr 29, 0, 4 lvsr 27, 0, 8 - vnor 30, 7, 7 - lvx 26, 0, 3 + vnor 30, 7, 7 + lvx 26, 0, 3 vperm 30, 7, 30, 29 - addi 3, 3, 15 - - beq .Lcbc_decrypt - - bl _vpaes_encrypt_preheat - li 0, 16 - - beq 1, .Lcbc_enc_loop - - vor 0,26,26 - lvx 26, 0, 3 - addi 3, 3, 16 + addi 3, 3, 15 + + beq .Lcbc_decrypt + + bl _vpaes_encrypt_preheat + li 0, 16 + + beq 1, .Lcbc_enc_loop + + vor 0,26,26 + lvx 26, 0, 3 + addi 3, 3, 16 vperm 0, 0, 26, 27 - vxor 0, 0, 24 - - bl _vpaes_encrypt_core - - andi. 8, 4, 15 - vor 24,0,0 - sub 9, 4, 8 - vperm 28, 0, 0, 29 - -.Lcbc_enc_head: - stvebx 28, 8, 9 - cmpwi 8, 15 - addi 8, 8, 1 - bne .Lcbc_enc_head - - sub. 30, 30, 0 - addi 4, 4, 16 - beq .Lcbc_unaligned_done - -.Lcbc_enc_loop: - vor 0,26,26 - lvx 26, 0, 3 - addi 3, 3, 16 + vxor 0, 0, 24 + + bl _vpaes_encrypt_core + + andi. 8, 4, 15 + vor 24,0,0 + sub 9, 4, 8 + vperm 28, 0, 0, 29 + +.Lcbc_enc_head: + stvebx 28, 8, 9 + cmpwi 8, 15 + addi 8, 8, 1 + bne .Lcbc_enc_head + + sub. 30, 30, 0 + addi 4, 4, 16 + beq .Lcbc_unaligned_done + +.Lcbc_enc_loop: + vor 0,26,26 + lvx 26, 0, 3 + addi 3, 3, 16 vperm 0, 0, 26, 27 - vxor 0, 0, 24 - - bl _vpaes_encrypt_core - - vor 24,0,0 - sub. 30, 30, 0 - vperm 0, 0, 0, 29 - vsel 1, 28, 0, 30 - vor 28,0,0 - stvx 1, 0, 4 - addi 4, 4, 16 - bne .Lcbc_enc_loop - - b .Lcbc_done - -.align 5 -.Lcbc_decrypt: - bl _vpaes_decrypt_preheat - li 0, 16 - - beq 1, .Lcbc_dec_loop - - vor 0,26,26 - lvx 26, 0, 3 - addi 3, 3, 16 + vxor 0, 0, 24 + + bl _vpaes_encrypt_core + + vor 24,0,0 + sub. 30, 30, 0 + vperm 0, 0, 0, 29 + vsel 1, 28, 0, 30 + vor 28,0,0 + stvx 1, 0, 4 + addi 4, 4, 16 + bne .Lcbc_enc_loop + + b .Lcbc_done + +.align 5 +.Lcbc_decrypt: + bl _vpaes_decrypt_preheat + li 0, 16 + + beq 1, .Lcbc_dec_loop + + vor 0,26,26 + lvx 26, 0, 3 + addi 3, 3, 16 vperm 0, 0, 26, 27 - vor 25,0,0 - - bl _vpaes_decrypt_core - - andi. 8, 4, 15 - vxor 0, 0, 24 - vor 24,25,25 - sub 9, 4, 8 - vperm 28, 0, 0, 29 - -.Lcbc_dec_head: - stvebx 28, 8, 9 - cmpwi 8, 15 - addi 8, 8, 1 - bne .Lcbc_dec_head - - sub. 30, 30, 0 - addi 4, 4, 16 - beq .Lcbc_unaligned_done - -.Lcbc_dec_loop: - vor 0,26,26 - lvx 26, 0, 3 - addi 3, 3, 16 + vor 25,0,0 + + bl _vpaes_decrypt_core + + andi. 8, 4, 15 + vxor 0, 0, 24 + vor 24,25,25 + sub 9, 4, 8 + vperm 28, 0, 0, 29 + +.Lcbc_dec_head: + stvebx 28, 8, 9 + cmpwi 8, 15 + addi 8, 8, 1 + bne .Lcbc_dec_head + + sub. 30, 30, 0 + addi 4, 4, 16 + beq .Lcbc_unaligned_done + +.Lcbc_dec_loop: + vor 0,26,26 + lvx 26, 0, 3 + addi 3, 3, 16 vperm 0, 0, 26, 27 - vor 25,0,0 - - bl _vpaes_decrypt_core - - vxor 0, 0, 24 - vor 24,25,25 - sub. 30, 30, 0 - vperm 0, 0, 0, 29 - vsel 1, 28, 0, 30 - vor 28,0,0 - stvx 1, 0, 4 - addi 4, 4, 16 - bne .Lcbc_dec_loop - -.Lcbc_done: - beq 1, .Lcbc_write_iv - -.Lcbc_unaligned_done: - andi. 8, 4, 15 - sub 4, 4, 8 - li 9, 0 -.Lcbc_tail: - stvebx 28, 9, 4 - addi 9, 9, 1 - cmpw 9, 8 - bne .Lcbc_tail - -.Lcbc_write_iv: - neg 8, 31 - li 10, 4 + vor 25,0,0 + + bl _vpaes_decrypt_core + + vxor 0, 0, 24 + vor 24,25,25 + sub. 30, 30, 0 + vperm 0, 0, 0, 29 + vsel 1, 28, 0, 30 + vor 28,0,0 + stvx 1, 0, 4 + addi 4, 4, 16 + bne .Lcbc_dec_loop + +.Lcbc_done: + beq 1, .Lcbc_write_iv + +.Lcbc_unaligned_done: + andi. 8, 4, 15 + sub 4, 4, 8 + li 9, 0 +.Lcbc_tail: + stvebx 28, 9, 4 + addi 9, 9, 1 + cmpw 9, 8 + bne .Lcbc_tail + +.Lcbc_write_iv: + neg 8, 31 + li 10, 4 lvsl 29, 0, 8 - li 11, 8 - li 12, 12 - vperm 24, 24, 24, 29 - stvewx 24, 0, 31 - stvewx 24, 10, 31 - stvewx 24, 11, 31 - stvewx 24, 12, 31 - + li 11, 8 + li 12, 12 + vperm 24, 24, 24, 29 + stvewx 24, 0, 31 + stvewx 24, 10, 31 + stvewx 24, 11, 31 + stvewx 24, 12, 31 + mtspr 256,7 - li 10,63 - li 11,79 - lvx 20,10,1 - addi 10,10,32 - lvx 21,11,1 - addi 11,11,32 - lvx 22,10,1 - addi 10,10,32 - lvx 23,11,1 - addi 11,11,32 - 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 -.Lcbc_abort: - ld 0, 288(1) - ld 30,256(1) - ld 31,264(1) - mtlr 0 - addi 1,1,272 - blr -.long 0 -.byte 0,12,0x04,1,0x80,2,6,0 -.long 0 + li 10,63 + li 11,79 + lvx 20,10,1 + addi 10,10,32 + lvx 21,11,1 + addi 11,11,32 + lvx 22,10,1 + addi 10,10,32 + lvx 23,11,1 + addi 11,11,32 + 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 +.Lcbc_abort: + ld 0, 288(1) + ld 30,256(1) + ld 31,264(1) + mtlr 0 + addi 1,1,272 + blr +.long 0 +.byte 0,12,0x04,1,0x80,2,6,0 +.long 0 .size .vpaes_cbc_encrypt,.-.vpaes_cbc_encrypt .size vpaes_cbc_encrypt,.-.vpaes_cbc_encrypt - - - - - -.align 4 -_vpaes_key_preheat: - mflr 8 - bl .Lconsts - mtlr 8 - li 11, 0xc0 - li 10, 0xd0 - li 9, 0xe0 - li 8, 0xf0 - - vspltisb 8,4 - vxor 9,9,9 - lvx 10, 12, 11 - li 11, 0x120 - lvx 11, 12, 10 - li 10, 0x130 - lvx 12, 12, 9 - li 9, 0x220 - lvx 13, 12, 8 - li 8, 0x230 - - lvx 14, 12, 11 - li 11, 0x240 - lvx 15, 12, 10 - li 10, 0x250 - - lvx 16, 12, 9 - li 9, 0x260 - lvx 17, 12, 8 - li 8, 0x270 - lvx 18, 12, 11 - li 11, 0x280 - lvx 19, 12, 10 - li 10, 0x290 - lvx 20, 12, 9 - li 9, 0x2a0 - lvx 21, 12, 8 - li 8, 0x2b0 - lvx 22, 12, 11 - lvx 23, 12, 10 - - lvx 24, 12, 9 - lvx 25, 0, 12 - lvx 26, 12, 8 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - -.align 4 -_vpaes_schedule_core: - mflr 7 - - bl _vpaes_key_preheat - - - neg 8, 3 - lvx 0, 0, 3 - addi 3, 3, 15 + + + + + +.align 4 +_vpaes_key_preheat: + mflr 8 + bl .Lconsts + mtlr 8 + li 11, 0xc0 + li 10, 0xd0 + li 9, 0xe0 + li 8, 0xf0 + + vspltisb 8,4 + vxor 9,9,9 + lvx 10, 12, 11 + li 11, 0x120 + lvx 11, 12, 10 + li 10, 0x130 + lvx 12, 12, 9 + li 9, 0x220 + lvx 13, 12, 8 + li 8, 0x230 + + lvx 14, 12, 11 + li 11, 0x240 + lvx 15, 12, 10 + li 10, 0x250 + + lvx 16, 12, 9 + li 9, 0x260 + lvx 17, 12, 8 + li 8, 0x270 + lvx 18, 12, 11 + li 11, 0x280 + lvx 19, 12, 10 + li 10, 0x290 + lvx 20, 12, 9 + li 9, 0x2a0 + lvx 21, 12, 8 + li 8, 0x2b0 + lvx 22, 12, 11 + lvx 23, 12, 10 + + lvx 24, 12, 9 + lvx 25, 0, 12 + lvx 26, 12, 8 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + +.align 4 +_vpaes_schedule_core: + mflr 7 + + bl _vpaes_key_preheat + + + neg 8, 3 + lvx 0, 0, 3 + addi 3, 3, 15 lvsr 27, 0, 8 - lvx 6, 0, 3 - addi 3, 3, 8 + lvx 6, 0, 3 + addi 3, 3, 8 vperm 0, 0, 6, 27 - - - vor 3,0,0 - bl _vpaes_schedule_transform - vor 7,0,0 - - bne 1, .Lschedule_am_decrypting - - - li 8, 0x30 - li 9, 4 - li 10, 8 - li 11, 12 - + + + vor 3,0,0 + bl _vpaes_schedule_transform + vor 7,0,0 + + bne 1, .Lschedule_am_decrypting + + + li 8, 0x30 + li 9, 4 + li 10, 8 + li 11, 12 + lvsr 29, 0, 5 - vnor 30, 9, 9 + vnor 30, 9, 9 vperm 30, 9, 30, 29 - - - vperm 28, 0, 0, 29 - stvewx 28, 0, 5 - stvewx 28, 9, 5 - stvewx 28, 10, 5 - addi 10, 12, 0x80 - stvewx 28, 11, 5 - b .Lschedule_go - -.Lschedule_am_decrypting: - srwi 8, 4, 1 - andi. 8, 8, 32 - xori 8, 8, 32 - addi 10, 12, 0x80 - - lvx 1, 8, 10 - li 9, 4 - li 10, 8 - li 11, 12 - vperm 4, 3, 3, 1 - - neg 0, 5 + + + vperm 28, 0, 0, 29 + stvewx 28, 0, 5 + stvewx 28, 9, 5 + stvewx 28, 10, 5 + addi 10, 12, 0x80 + stvewx 28, 11, 5 + b .Lschedule_go + +.Lschedule_am_decrypting: + srwi 8, 4, 1 + andi. 8, 8, 32 + xori 8, 8, 32 + addi 10, 12, 0x80 + + lvx 1, 8, 10 + li 9, 4 + li 10, 8 + li 11, 12 + vperm 4, 3, 3, 1 + + neg 0, 5 lvsl 29, 0, 0 - vnor 30, 9, 9 + vnor 30, 9, 9 vperm 30, 30, 9, 29 - - - vperm 28, 4, 4, 29 - stvewx 28, 0, 5 - stvewx 28, 9, 5 - stvewx 28, 10, 5 - addi 10, 12, 0x80 - stvewx 28, 11, 5 - addi 5, 5, 15 - xori 8, 8, 0x30 - -.Lschedule_go: - cmplwi 4, 192 - bgt .Lschedule_256 - beq .Lschedule_192 - - - - - - - - - - -.Lschedule_128: - li 0, 10 - mtctr 0 - -.Loop_schedule_128: - bl _vpaes_schedule_round - bdz .Lschedule_mangle_last - bl _vpaes_schedule_mangle - b .Loop_schedule_128 - - - - - - - - - - - - - - - - -.align 4 -.Lschedule_192: - li 0, 4 - lvx 0, 0, 3 + + + vperm 28, 4, 4, 29 + stvewx 28, 0, 5 + stvewx 28, 9, 5 + stvewx 28, 10, 5 + addi 10, 12, 0x80 + stvewx 28, 11, 5 + addi 5, 5, 15 + xori 8, 8, 0x30 + +.Lschedule_go: + cmplwi 4, 192 + bgt .Lschedule_256 + beq .Lschedule_192 + + + + + + + + + + +.Lschedule_128: + li 0, 10 + mtctr 0 + +.Loop_schedule_128: + bl _vpaes_schedule_round + bdz .Lschedule_mangle_last + bl _vpaes_schedule_mangle + b .Loop_schedule_128 + + + + + + + + + + + + + + + + +.align 4 +.Lschedule_192: + li 0, 4 + lvx 0, 0, 3 vperm 0, 6, 0, 27 vsldoi 0, 3, 0, 8 - bl _vpaes_schedule_transform + bl _vpaes_schedule_transform vsldoi 6, 0, 9, 8 vsldoi 6, 9, 6, 8 - mtctr 0 - -.Loop_schedule_192: - bl _vpaes_schedule_round + mtctr 0 + +.Loop_schedule_192: + bl _vpaes_schedule_round vsldoi 0, 6, 0, 8 - bl _vpaes_schedule_mangle - bl _vpaes_schedule_192_smear - bl _vpaes_schedule_mangle - bl _vpaes_schedule_round - bdz .Lschedule_mangle_last - bl _vpaes_schedule_mangle - bl _vpaes_schedule_192_smear - b .Loop_schedule_192 - - - - - - - - - - - -.align 4 -.Lschedule_256: - li 0, 7 - addi 3, 3, 8 - lvx 0, 0, 3 + bl _vpaes_schedule_mangle + bl _vpaes_schedule_192_smear + bl _vpaes_schedule_mangle + bl _vpaes_schedule_round + bdz .Lschedule_mangle_last + bl _vpaes_schedule_mangle + bl _vpaes_schedule_192_smear + b .Loop_schedule_192 + + + + + + + + + + + +.align 4 +.Lschedule_256: + li 0, 7 + addi 3, 3, 8 + lvx 0, 0, 3 vperm 0, 6, 0, 27 - bl _vpaes_schedule_transform - mtctr 0 - -.Loop_schedule_256: - bl _vpaes_schedule_mangle - vor 6,0,0 - - - bl _vpaes_schedule_round - bdz .Lschedule_mangle_last - bl _vpaes_schedule_mangle - - + bl _vpaes_schedule_transform + mtctr 0 + +.Loop_schedule_256: + bl _vpaes_schedule_mangle + vor 6,0,0 + + + bl _vpaes_schedule_round + bdz .Lschedule_mangle_last + bl _vpaes_schedule_mangle + + vspltw 0, 0, 3 - vor 5,7,7 - vor 7,6,6 - bl _vpaes_schedule_low_round - vor 7,5,5 - - b .Loop_schedule_256 - - - - - - - - - - -.align 4 -.Lschedule_mangle_last: - - li 11, 0x2e0 - li 9, 0x2f0 - bne 1, .Lschedule_mangle_last_dec - - - lvx 1, 8, 10 - li 11, 0x2c0 - li 9, 0x2d0 - vperm 0, 0, 0, 1 - - lvx 12, 11, 12 - lvx 13, 9, 12 - addi 5, 5, 16 - vxor 0, 0, 26 - bl _vpaes_schedule_transform - - - vperm 0, 0, 0, 29 - li 10, 4 - vsel 2, 28, 0, 30 - li 11, 8 - stvx 2, 0, 5 - li 12, 12 - stvewx 0, 0, 5 - stvewx 0, 10, 5 - stvewx 0, 11, 5 - stvewx 0, 12, 5 - b .Lschedule_mangle_done - -.align 4 -.Lschedule_mangle_last_dec: - lvx 12, 11, 12 - lvx 13, 9, 12 - addi 5, 5, -16 - vxor 0, 0, 26 - bl _vpaes_schedule_transform - - - addi 9, 5, -15 - vperm 0, 0, 0, 29 - li 10, 4 - vsel 2, 28, 0, 30 - li 11, 8 - stvx 2, 0, 5 - li 12, 12 - stvewx 0, 0, 9 - stvewx 0, 10, 9 - stvewx 0, 11, 9 - stvewx 0, 12, 9 - - -.Lschedule_mangle_done: - mtlr 7 - - vxor 0, 0, 0 - vxor 1, 1, 1 - vxor 2, 2, 2 - vxor 3, 3, 3 - vxor 4, 4, 4 - vxor 5, 5, 5 - vxor 6, 6, 6 - vxor 7, 7, 7 - - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - - - - - - - - - - - - - - - -.align 4 -_vpaes_schedule_192_smear: + vor 5,7,7 + vor 7,6,6 + bl _vpaes_schedule_low_round + vor 7,5,5 + + b .Loop_schedule_256 + + + + + + + + + + +.align 4 +.Lschedule_mangle_last: + + li 11, 0x2e0 + li 9, 0x2f0 + bne 1, .Lschedule_mangle_last_dec + + + lvx 1, 8, 10 + li 11, 0x2c0 + li 9, 0x2d0 + vperm 0, 0, 0, 1 + + lvx 12, 11, 12 + lvx 13, 9, 12 + addi 5, 5, 16 + vxor 0, 0, 26 + bl _vpaes_schedule_transform + + + vperm 0, 0, 0, 29 + li 10, 4 + vsel 2, 28, 0, 30 + li 11, 8 + stvx 2, 0, 5 + li 12, 12 + stvewx 0, 0, 5 + stvewx 0, 10, 5 + stvewx 0, 11, 5 + stvewx 0, 12, 5 + b .Lschedule_mangle_done + +.align 4 +.Lschedule_mangle_last_dec: + lvx 12, 11, 12 + lvx 13, 9, 12 + addi 5, 5, -16 + vxor 0, 0, 26 + bl _vpaes_schedule_transform + + + addi 9, 5, -15 + vperm 0, 0, 0, 29 + li 10, 4 + vsel 2, 28, 0, 30 + li 11, 8 + stvx 2, 0, 5 + li 12, 12 + stvewx 0, 0, 9 + stvewx 0, 10, 9 + stvewx 0, 11, 9 + stvewx 0, 12, 9 + + +.Lschedule_mangle_done: + mtlr 7 + + vxor 0, 0, 0 + vxor 1, 1, 1 + vxor 2, 2, 2 + vxor 3, 3, 3 + vxor 4, 4, 4 + vxor 5, 5, 5 + vxor 6, 6, 6 + vxor 7, 7, 7 + + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + + + + + + + + + + + + + + + +.align 4 +_vpaes_schedule_192_smear: vspltw 0, 7, 3 vsldoi 1, 9, 6, 12 vsldoi 0, 7, 0, 8 - vxor 6, 6, 1 - vxor 6, 6, 0 - vor 0,6,6 + vxor 6, 6, 1 + vxor 6, 6, 0 + vor 0,6,6 vsldoi 6, 6, 9, 8 vsldoi 6, 9, 6, 8 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - - - - - - - - - - - - - - - - - - - -.align 4 -_vpaes_schedule_round: - - + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + + + + + + + + + + + + + + + + + + + +.align 4 +_vpaes_schedule_round: + + vsldoi 1, 24, 9, 15 vsldoi 24, 24, 24, 15 - vxor 7, 7, 1 - - + vxor 7, 7, 1 + + vspltw 0, 0, 3 vsldoi 0, 0, 0, 1 - - - - -_vpaes_schedule_low_round: - + + + + +_vpaes_schedule_low_round: + vsldoi 1, 9, 7, 12 - vxor 7, 7, 1 - vspltisb 1, 0x0f + vxor 7, 7, 1 + vspltisb 1, 0x0f vsldoi 4, 9, 7, 8 - - - vand 1, 1, 0 - vsrb 0, 0, 8 - vxor 7, 7, 4 - vperm 2, 11, 9, 1 - vxor 1, 1, 0 - vperm 3, 10, 9, 0 - vxor 3, 3, 2 - vperm 4, 10, 9, 1 - vxor 7, 7, 26 - vperm 3, 10, 9, 3 - vxor 4, 4, 2 - vperm 2, 10, 9, 4 - vxor 3, 3, 1 - vxor 2, 2, 0 - vperm 4, 15, 9, 3 - vperm 1, 14, 9, 2 - vxor 1, 1, 4 - - - vxor 0, 1, 7 - vxor 7, 1, 7 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - - - - - - - - - - -.align 4 -_vpaes_schedule_transform: - - vsrb 2, 0, 8 - - vperm 0, 12, 12, 0 - - vperm 2, 13, 13, 2 - vxor 0, 0, 2 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - - - - - - - - - - - - - - - - - - - - - - - - -.align 4 -_vpaes_schedule_mangle: - - - bne 1, .Lschedule_mangle_dec - - - vxor 4, 0, 26 - addi 5, 5, 16 - vperm 4, 4, 4, 25 - vperm 1, 4, 4, 25 - vperm 3, 1, 1, 25 - vxor 4, 4, 1 - lvx 1, 8, 10 - vxor 3, 3, 4 - - vperm 3, 3, 3, 1 - addi 8, 8, -16 - andi. 8, 8, 0x30 - - - vperm 1, 3, 3, 29 - vsel 2, 28, 1, 30 - vor 28,1,1 - stvx 2, 0, 5 - blr - -.align 4 -.Lschedule_mangle_dec: - - - vsrb 1, 0, 8 - - - - vperm 2, 16, 16, 0 - - vperm 3, 17, 17, 1 - vxor 3, 3, 2 - vperm 3, 3, 9, 25 - - - vperm 2, 18, 18, 0 - vxor 2, 2, 3 - - vperm 3, 19, 19, 1 - vxor 3, 3, 2 - vperm 3, 3, 9, 25 - - - vperm 2, 20, 20, 0 - vxor 2, 2, 3 - - vperm 3, 21, 21, 1 - vxor 3, 3, 2 - - - vperm 2, 22, 22, 0 - vperm 3, 3, 9, 25 - - vperm 4, 23, 23, 1 - lvx 1, 8, 10 - vxor 2, 2, 3 - vxor 3, 4, 2 - - addi 5, 5, -16 - - vperm 3, 3, 3, 1 - addi 8, 8, -16 - andi. 8, 8, 0x30 - - - vperm 1, 3, 3, 29 - vsel 2, 28, 1, 30 - vor 28,1,1 - stvx 2, 0, 5 - blr -.long 0 -.byte 0,12,0x14,0,0,0,0,0 - -.globl vpaes_set_encrypt_key -.type vpaes_set_encrypt_key,@function + + + vand 1, 1, 0 + vsrb 0, 0, 8 + vxor 7, 7, 4 + vperm 2, 11, 9, 1 + vxor 1, 1, 0 + vperm 3, 10, 9, 0 + vxor 3, 3, 2 + vperm 4, 10, 9, 1 + vxor 7, 7, 26 + vperm 3, 10, 9, 3 + vxor 4, 4, 2 + vperm 2, 10, 9, 4 + vxor 3, 3, 1 + vxor 2, 2, 0 + vperm 4, 15, 9, 3 + vperm 1, 14, 9, 2 + vxor 1, 1, 4 + + + vxor 0, 1, 7 + vxor 7, 1, 7 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + + + + + + + + + + +.align 4 +_vpaes_schedule_transform: + + vsrb 2, 0, 8 + + vperm 0, 12, 12, 0 + + vperm 2, 13, 13, 2 + vxor 0, 0, 2 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + + + + + + + + + + + + + + + + + + + + + + + + +.align 4 +_vpaes_schedule_mangle: + + + bne 1, .Lschedule_mangle_dec + + + vxor 4, 0, 26 + addi 5, 5, 16 + vperm 4, 4, 4, 25 + vperm 1, 4, 4, 25 + vperm 3, 1, 1, 25 + vxor 4, 4, 1 + lvx 1, 8, 10 + vxor 3, 3, 4 + + vperm 3, 3, 3, 1 + addi 8, 8, -16 + andi. 8, 8, 0x30 + + + vperm 1, 3, 3, 29 + vsel 2, 28, 1, 30 + vor 28,1,1 + stvx 2, 0, 5 + blr + +.align 4 +.Lschedule_mangle_dec: + + + vsrb 1, 0, 8 + + + + vperm 2, 16, 16, 0 + + vperm 3, 17, 17, 1 + vxor 3, 3, 2 + vperm 3, 3, 9, 25 + + + vperm 2, 18, 18, 0 + vxor 2, 2, 3 + + vperm 3, 19, 19, 1 + vxor 3, 3, 2 + vperm 3, 3, 9, 25 + + + vperm 2, 20, 20, 0 + vxor 2, 2, 3 + + vperm 3, 21, 21, 1 + vxor 3, 3, 2 + + + vperm 2, 22, 22, 0 + vperm 3, 3, 9, 25 + + vperm 4, 23, 23, 1 + lvx 1, 8, 10 + vxor 2, 2, 3 + vxor 3, 4, 2 + + addi 5, 5, -16 + + vperm 3, 3, 3, 1 + addi 8, 8, -16 + andi. 8, 8, 0x30 + + + vperm 1, 3, 3, 29 + vsel 2, 28, 1, 30 + vor 28,1,1 + stvx 2, 0, 5 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + +.globl vpaes_set_encrypt_key +.type vpaes_set_encrypt_key,@function .section ".opd","aw" .align 3 vpaes_set_encrypt_key: .quad .vpaes_set_encrypt_key,.TOC.@tocbase,0 .previous -.align 5 +.align 5 .vpaes_set_encrypt_key: - stdu 1,-256(1) - li 10,63 - li 11,79 - mflr 0 + stdu 1,-256(1) + li 10,63 + li 11,79 + mflr 0 mfspr 6,256 - stvx 20,10,1 - addi 10,10,32 - stvx 21,11,1 - addi 11,11,32 - stvx 22,10,1 - addi 10,10,32 - stvx 23,11,1 - addi 11,11,32 - 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 6,252(1) - li 7, -1 - std 0, 272(1) + stvx 20,10,1 + addi 10,10,32 + stvx 21,11,1 + addi 11,11,32 + stvx 22,10,1 + addi 10,10,32 + stvx 23,11,1 + addi 11,11,32 + 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 6,252(1) + li 7, -1 + std 0, 272(1) mtspr 256,7 - - srwi 9, 4, 5 - addi 9, 9, 6 - stw 9, 240(5) - - cmplw 1,4,4 - li 8, 0x30 - bl _vpaes_schedule_core - - ld 0, 272(1) - li 10,63 - li 11,79 + + srwi 9, 4, 5 + addi 9, 9, 6 + stw 9, 240(5) + + cmplw 1,4,4 + li 8, 0x30 + bl _vpaes_schedule_core + + ld 0, 272(1) + li 10,63 + li 11,79 mtspr 256,6 - mtlr 0 - xor 3, 3, 3 - lvx 20,10,1 - addi 10,10,32 - lvx 21,11,1 - addi 11,11,32 - lvx 22,10,1 - addi 10,10,32 - lvx 23,11,1 - addi 11,11,32 - 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 - addi 1,1,256 - blr -.long 0 -.byte 0,12,0x04,1,0x80,0,3,0 -.long 0 + mtlr 0 + xor 3, 3, 3 + lvx 20,10,1 + addi 10,10,32 + lvx 21,11,1 + addi 11,11,32 + lvx 22,10,1 + addi 10,10,32 + lvx 23,11,1 + addi 11,11,32 + 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 + addi 1,1,256 + blr +.long 0 +.byte 0,12,0x04,1,0x80,0,3,0 +.long 0 .size .vpaes_set_encrypt_key,.-.vpaes_set_encrypt_key .size vpaes_set_encrypt_key,.-.vpaes_set_encrypt_key - -.globl vpaes_set_decrypt_key -.type vpaes_set_decrypt_key,@function + +.globl vpaes_set_decrypt_key +.type vpaes_set_decrypt_key,@function .section ".opd","aw" .align 3 vpaes_set_decrypt_key: .quad .vpaes_set_decrypt_key,.TOC.@tocbase,0 .previous -.align 4 +.align 4 .vpaes_set_decrypt_key: - stdu 1,-256(1) - li 10,63 - li 11,79 - mflr 0 + stdu 1,-256(1) + li 10,63 + li 11,79 + mflr 0 mfspr 6,256 - stvx 20,10,1 - addi 10,10,32 - stvx 21,11,1 - addi 11,11,32 - stvx 22,10,1 - addi 10,10,32 - stvx 23,11,1 - addi 11,11,32 - 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 6,252(1) - li 7, -1 - std 0, 272(1) + stvx 20,10,1 + addi 10,10,32 + stvx 21,11,1 + addi 11,11,32 + stvx 22,10,1 + addi 10,10,32 + stvx 23,11,1 + addi 11,11,32 + 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 6,252(1) + li 7, -1 + std 0, 272(1) mtspr 256,7 - - srwi 9, 4, 5 - addi 9, 9, 6 - stw 9, 240(5) - - slwi 9, 9, 4 - add 5, 5, 9 - - cmplwi 1, 4, 0 - srwi 8, 4, 1 - andi. 8, 8, 32 - xori 8, 8, 32 - bl _vpaes_schedule_core - - ld 0, 272(1) - li 10,63 - li 11,79 + + srwi 9, 4, 5 + addi 9, 9, 6 + stw 9, 240(5) + + slwi 9, 9, 4 + add 5, 5, 9 + + cmplwi 1, 4, 0 + srwi 8, 4, 1 + andi. 8, 8, 32 + xori 8, 8, 32 + bl _vpaes_schedule_core + + ld 0, 272(1) + li 10,63 + li 11,79 mtspr 256,6 - mtlr 0 - xor 3, 3, 3 - lvx 20,10,1 - addi 10,10,32 - lvx 21,11,1 - addi 11,11,32 - lvx 22,10,1 - addi 10,10,32 - lvx 23,11,1 - addi 11,11,32 - 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 - addi 1,1,256 - blr -.long 0 -.byte 0,12,0x04,1,0x80,0,3,0 -.long 0 + mtlr 0 + xor 3, 3, 3 + lvx 20,10,1 + addi 10,10,32 + lvx 21,11,1 + addi 11,11,32 + lvx 22,10,1 + addi 10,10,32 + lvx 23,11,1 + addi 11,11,32 + 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 + addi 1,1,256 + blr +.long 0 +.byte 0,12,0x04,1,0x80,0,3,0 +.long 0 .size .vpaes_set_decrypt_key,.-.vpaes_set_decrypt_key .size vpaes_set_decrypt_key,.-.vpaes_set_decrypt_key |