diff --git a/sparc/aes.asm b/sparc/aes.asm index c4d2661e64b83924d238db3feff5897a8f41d66a..d54f8d963e38ab1e25e5d0e4c41cef5e9b1d2885 100644 --- a/sparc/aes.asm +++ b/sparc/aes.asm @@ -47,7 +47,7 @@ key_addition_8to32: add %o0, 1, %o0 ! val in %o4 now - ! out[i] = keys[i] ^ val; i++ + ! out[i] = keys[i] ^ val; i++ sll %o5, 2, %g3 ld [%o1+%g3], %g2 add %o5, 1, %o5 @@ -59,35 +59,26 @@ key_addition_8to32: retl nop + ! FIXME: Inline, unroll? .size key_addition_8to32,.LLfe1-key_addition_8to32 .align 4 .type key_addition32,#function .proc 020 key_addition32: -.LLFB2: -.LLM14: - !#PROLOGUE# 0 - !#PROLOGUE# 1 -.LLBB3: mov %o0, %o4 -.LLM15: mov 0, %o3 .LL26: -.LLM16: sll %o3, 2, %g2 ld [%o1+%g2], %g3 -.LLM17: add %o3, 1, %o3 -.LLM18: ld [%o4+%g2], %o0 -.LLM19: cmp %o3, 3 -.LLM20: + xor %g3, %o0, %g3 -.LLM21: + bleu .LL26 st %g3, [%o2+%g2] -.LLBE3: + retl nop .LLFE2: @@ -97,40 +88,31 @@ key_addition32: .type key_addition32to8,#function .proc 020 key_addition32to8: -.LLFB3: -.LLM22: - !#PROLOGUE# 0 - !#PROLOGUE# 1 -.LLBB4: mov %o0, %o5 -.LLM23: mov 0, %o4 -.LLM24: sll %o4, 2, %g2 .LL42: ld [%o1+%g2], %o0 -.LLM25: mov 0, %o3 -.LLM26: ld [%o5+%g2], %g3 xor %g3, %o0, %g3 + ! FIXME: Unroll inner loop .LL37: -.LLM27: sll %o3, 3, %g2 srl %g3, %g2, %g2 stb %g2, [%o2] -.LLM28: + add %o3, 1, %o3 cmp %o3, 3 -.LLM29: + bleu .LL37 add %o2, 1, %o2 -.LLM30: + add %o4, 1, %o4 cmp %o4, 3 bleu .LL42 sll %o4, 2, %g2 -.LLBE4: + retl nop .LLFE3: @@ -162,7 +144,7 @@ idx: .asciz "!(length % 16)" .align 8 .LLC1: - .asciz "aes.c" + .asciz "aes.asm" .align 8 .LLC2: .asciz "aes_encrypt" @@ -172,30 +154,21 @@ idx: .type aes_encrypt,#function .proc 020 aes_encrypt: -.LLFB4: -.LLM31: - !#PROLOGUE# 0 save %sp, -136, %sp -.LLCFI0: - !#PROLOGUE# 1 -.LLM32: -.LLBB5: + andcc %i1, 15, %g0 - bne .LL76 + bne .Lencrypt_fail cmp %i1, 0 -.LLM33: - be .LL71 + be .Lencrypt_end sethi %hi(idx), %i4 add %fp, -24, %l6 add %fp, -40, %l5 or %i4, %lo(idx), %i5 -.LL49: -.LLM34: +.Lencrypt_block: mov %i3, %o0 mov %i0, %o1 call key_addition_8to32, 0 mov %l6, %o2 -.LLM35: ld [%i0+480], %o0 mov 1, %l3 cmp %l3, %o0 @@ -208,11 +181,9 @@ aes_encrypt: or %i4, %lo(idx), %l7 add %i0, 16, %l2 .LL53: -.LLM36: mov 0, %o7 add %l7, 48, %g3 .LL57: -.LLM37: ld [%g3], %o0 sll %o7, 2, %g2 ld [%g3-16], %o1 @@ -247,26 +218,20 @@ aes_encrypt: sll %o0, 8, %o0 or %o0, %o3, %o0 xor %o1, %o0, %o1 -.LLM38: add %o7, 1, %o7 -.LLM39: st %o1, [%l4+%g2] -.LLM40: cmp %o7, 3 bleu .LL57 add %g3, 4, %g3 -.LLM41: mov %l2, %o1 mov %l5, %o0 call key_addition32, 0 mov %l6, %o2 -.LLM42: ld [%i0+480], %o0 add %l3, 1, %l3 cmp %l3, %o0 blu .LL53 add %l2, 16, %l2 -.LLM43: sethi %hi(64512), %o0 .LL77: or %o0, 768, %l3 @@ -277,60 +242,37 @@ aes_encrypt: mov %l5, %l0 add %i5, 48, %g2 .LL63: -.LLM44: ld [%g2-32], %o0 -.LLM45: sll %o7, 2, %o5 -.LLM46: ld [%g2-16], %o2 -.LLM47: sll %o0, 2, %o0 ld [%g3+%o0], %o3 -.LLM48: sll %o2, 2, %o2 -.LLM49: ld [%g2], %o4 -.LLM50: and %o3, %l3, %o3 -.LLM51: ld [%g3+%o2], %o1 -.LLM52: sll %o4, 2, %o4 -.LLM53: ld [%g3+%o5], %o0 -.LLM54: and %o1, %l2, %o1 -.LLM55: ld [%g3+%o4], %o2 -.LLM56: and %o0, 255, %o0 -.LLM57: or %o0, %o3, %o0 -.LLM58: or %o0, %o1, %o0 -.LLM59: and %o2, %l1, %o2 or %o0, %o2, %o0 -.LLM60: add %o7, 1, %o7 -.LLM61: st %o0, [%l0+%o5] -.LLM62: cmp %o7, 3 bleu .LL63 add %g2, 4, %g2 -.LLM63: sethi %hi(_aes_sbox), %o0 or %o0, %lo(_aes_sbox), %g3 mov 0, %o7 mov %l5, %g2 .LL68: -.LLM64: sll %o7, 2, %o5 ld [%g2+%o5], %o3 -.LLM65: add %o7, 1, %o7 -.LLM66: srl %o3, 8, %o0 and %o0, 255, %o0 ldub [%g3+%o0], %o4 @@ -347,24 +289,21 @@ aes_encrypt: or %o1, %o0, %o1 sll %o2, 24, %o2 or %o1, %o2, %o1 -.LLM67: cmp %o7, 3 bleu .LL68 st %o1, [%g2+%o5] -.LLM68: ld [%i0+480], %o1 mov %i2, %o2 sll %o1, 4, %o1 add %i0, %o1, %o1 call key_addition32to8, 0 mov %l5, %o0 -.LLM69: add %i3, 16, %i3 addcc %i1, -16, %i1 - bne .LL49 + bne .Lencrypt_block add %i2, 16, %i2 - b,a .LL71 -.LL76: + b,a .Lencrypt_end +.Lencrypt_fail: sethi %hi(.LLC0), %o0 sethi %hi(.LLC1), %o1 sethi %hi(.LLC2), %o3 @@ -373,7 +312,7 @@ aes_encrypt: or %o3, %lo(.LLC2), %o3 call __assert_fail, 0 mov 92, %o2 -.LL71: +.Lencrypt_end: .LLBE5: ret restore @@ -411,24 +350,20 @@ iidx: .proc 020 aes_decrypt: .LLFB5: -.LLM70: !#PROLOGUE# 0 save %sp, -136, %sp .LLCFI1: !#PROLOGUE# 1 -.LLM71: .LLBB6: andcc %i1, 15, %g0 bne .LL111 cmp %i1, 0 -.LLM72: be .LL106 sethi %hi(iidx), %i4 add %fp, -24, %l6 add %fp, -40, %l5 add %i0, 240, %i5 .LL84: -.LLM73: ld [%i0+480], %o1 mov %i3, %o0 sll %o1, 4, %o1 @@ -436,7 +371,6 @@ aes_decrypt: add %o1, 240, %o1 call key_addition_8to32, 0 mov %l6, %o2 -.LLM74: ld [%i0+480], %o0 addcc %o0, -1, %l2 be .LL107 @@ -449,11 +383,9 @@ aes_decrypt: mov %l6, %l0 or %i4, %lo(iidx), %l7 .LL88: -.LLM75: mov 0, %o7 add %l7, 48, %g3 .LL92: -.LLM76: ld [%g3], %o0 sll %o7, 2, %g2 ld [%g3-16], %o1 @@ -488,25 +420,19 @@ aes_decrypt: sll %o0, 8, %o0 or %o0, %o3, %o0 xor %o1, %o0, %o1 -.LLM77: add %o7, 1, %o7 -.LLM78: st %o1, [%l4+%g2] -.LLM79: cmp %o7, 3 bleu .LL92 add %g3, 4, %g3 -.LLM80: mov %l3, %o1 mov %l5, %o0 call key_addition32, 0 mov %l6, %o2 -.LLM81: addcc %l2, -1, %l2 bne .LL88 add %l3, -16, %l3 .LL107: -.LLM82: sethi %hi(64512), %o0 or %o0, 768, %l3 sethi %hi(iidx), %o0 @@ -518,60 +444,37 @@ aes_decrypt: mov %l5, %l0 add %o0, 48, %g2 .LL98: -.LLM83: ld [%g2-32], %o0 -.LLM84: sll %o7, 2, %o5 -.LLM85: ld [%g2-16], %o2 -.LLM86: sll %o0, 2, %o0 ld [%g3+%o0], %o3 -.LLM87: sll %o2, 2, %o2 -.LLM88: ld [%g2], %o4 -.LLM89: and %o3, %l3, %o3 -.LLM90: ld [%g3+%o2], %o1 -.LLM91: sll %o4, 2, %o4 -.LLM92: ld [%g3+%o5], %o0 -.LLM93: and %o1, %l2, %o1 -.LLM94: ld [%g3+%o4], %o2 -.LLM95: and %o0, 255, %o0 -.LLM96: or %o0, %o3, %o0 -.LLM97: or %o0, %o1, %o0 -.LLM98: and %o2, %l1, %o2 or %o0, %o2, %o0 -.LLM99: add %o7, 1, %o7 -.LLM100: st %o0, [%l0+%o5] -.LLM101: cmp %o7, 3 bleu .LL98 add %g2, 4, %g2 -.LLM102: sethi %hi(_aes_isbox), %o0 or %o0, %lo(_aes_isbox), %g3 mov 0, %o7 mov %l5, %g2 .LL103: -.LLM103: sll %o7, 2, %o5 ld [%g2+%o5], %o3 -.LLM104: add %o7, 1, %o7 -.LLM105: srl %o3, 8, %o0 and %o0, 255, %o0 ldub [%g3+%o0], %o4 @@ -588,16 +491,13 @@ aes_decrypt: or %o1, %o0, %o1 sll %o2, 24, %o2 or %o1, %o2, %o1 -.LLM106: cmp %o7, 3 bleu .LL103 st %o1, [%g2+%o5] -.LLM107: mov %i2, %o2 mov %l5, %o0 call key_addition32to8, 0 mov %i5, %o1 -.LLM108: add %i3, 16, %i3 addcc %i1, -16, %i1 bne .LL84