@ -230,17 +230,17 @@ aes_v8_encrypt:
.Loop_enc:
.byte 0x00 , 0x43 , 0xb0 , 0xf3 @ aese q2 , q0
vld1.32 { q0 } ,[ r2 ]!
.byte 0x84 , 0x43 , 0xb0 , 0xf3 @ aesmc q2 , q2
vld1.32 { q0 } ,[ r2 ]!
subs r3 , r3 , # 2
.byte 0x02 , 0x43 , 0xb0 , 0xf3 @ aese q2 , q1
vld1.32 { q1 } ,[ r2 ]!
.byte 0x84 , 0x43 , 0xb0 , 0xf3 @ aesmc q2 , q2
vld1.32 { q1 } ,[ r2 ]!
bgt .Loop_enc
.byte 0x00 , 0x43 , 0xb0 , 0xf3 @ aese q2 , q0
vld1.32 { q0 } ,[ r2 ]
.byte 0x84 , 0x43 , 0xb0 , 0xf3 @ aesmc q2 , q2
vld1.32 { q0 } ,[ r2 ]
.byte 0x02 , 0x43 , 0xb0 , 0xf3 @ aese q2 , q1
veor q2 , q2 , q0
@ -259,17 +259,17 @@ aes_v8_decrypt:
.Loop_dec:
.byte 0x40 , 0x43 , 0xb0 , 0xf3 @ aesd q2 , q0
vld1.32 { q0 } ,[ r2 ]!
.byte 0xc4 , 0x43 , 0xb0 , 0xf3 @ aesimc q2 , q2
vld1.32 { q0 } ,[ r2 ]!
subs r3 , r3 , # 2
.byte 0x42 , 0x43 , 0xb0 , 0xf3 @ aesd q2 , q1
vld1.32 { q1 } ,[ r2 ]!
.byte 0xc4 , 0x43 , 0xb0 , 0xf3 @ aesimc q2 , q2
vld1.32 { q1 } ,[ r2 ]!
bgt .Loop_dec
.byte 0x40 , 0x43 , 0xb0 , 0xf3 @ aesd q2 , q0
vld1.32 { q0 } ,[ r2 ]
.byte 0xc4 , 0x43 , 0xb0 , 0xf3 @ aesimc q2 , q2
vld1.32 { q0 } ,[ r2 ]
.byte 0x42 , 0x43 , 0xb0 , 0xf3 @ aesd q2 , q1
veor q2 , q2 , q0
@ -313,16 +313,42 @@ aes_v8_cbc_encrypt:
veor q5 , q8 , q7
beq .Lcbc_enc128
vld1.32 { q2-q3 } ,[ r7 ]
add r7 , r3 , # 16
add r6 , r3 , # 16 * 4
add r12 , r3 , # 16 * 5
.byte 0x20 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q8
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
add r14 , r3 , # 16 * 6
add r3 , r3 , # 16 * 7
b .Lenter_cbc_enc
.align 4
.Loop_cbc_enc:
.byte 0x20 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q8
vld1.32 { q8 } ,[ r7 ]!
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
subs r6 , r6 , # 2
vst1.8 { q6 } ,[ r1 ]!
.Lenter_cbc_enc:
.byte 0x22 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q9
vld1.32 { q9 } ,[ r7 ]!
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
bgt .Loop_cbc_enc
.byte 0x04 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q2
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
vld1.32 { q8 } ,[ r6 ]
cmp r5 , # 4
.byte 0x06 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q3
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
vld1.32 { q9 } ,[ r12 ]
beq .Lcbc_enc192
.byte 0x20 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q8
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
vld1.32 { q8 } ,[ r14 ]
.byte 0x22 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q9
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
vld1.32 { q9 } ,[ r3 ]
nop
.Lcbc_enc192:
.byte 0x20 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q8
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
subs r2 , r2 , # 16
@ -331,7 +357,6 @@ aes_v8_cbc_encrypt:
moveq r8 , # 0
.byte 0x24 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q10
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
add r7 , r3 , # 16
.byte 0x26 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q11
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
vld1.8 { q8 } ,[ r0 ], r8
@ -340,16 +365,14 @@ aes_v8_cbc_encrypt:
veor q8 , q8 , q5
.byte 0x2a , 0x03 , 0xb0 , 0xf3 @ aese q0 , q13
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
vld1.32 { q9 } ,[ r7 ]! @ re-pre-load rndkey [ 1 ]
vld1.32 { q9 } ,[ r7 ] @ re-pre-load rndkey [ 1 ]
.byte 0x2c , 0x03 , 0xb0 , 0xf3 @ aese q0 , q14
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x2e , 0x03 , 0xb0 , 0xf3 @ aese q0 , q15
mov r6 , r5
veor q6 , q0 , q7
vst1.8 { q6 } ,[ r1 ]!
bhs .Loop_cbc_enc
vst1.8 { q6 } ,[ r1 ]!
b .Lcbc_done
.align 5
@ -407,79 +430,78 @@ aes_v8_cbc_encrypt:
.Loop3x_cbc_dec:
.byte 0x60 , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q8
.byte 0x60 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q8
.byte 0x60 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q8
vld1.32 { q8 } ,[ r7 ]!
.byte 0xc0 , 0x03 , 0xb0 , 0xf3 @ aesimc q0 , q0
.byte 0x60 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q8
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x60 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q8
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
vld1.32 { q8 } ,[ r7 ]!
subs r6 , r6 , # 2
.byte 0x62 , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q9
.byte 0x62 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q9
.byte 0x62 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q9
vld1.32 { q9 } ,[ r7 ]!
.byte 0xc0 , 0x03 , 0xb0 , 0xf3 @ aesimc q0 , q0
.byte 0x62 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q9
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x62 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q9
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
vld1.32 { q9 } ,[ r7 ]!
bgt .Loop3x_cbc_dec
.byte 0x60 , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q8
.byte 0x60 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q8
.byte 0x60 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q8
veor q4 , q6 , q7
.byte 0xc0 , 0x03 , 0xb0 , 0xf3 @ aesimc q0 , q0
.byte 0x60 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q8
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x60 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q8
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
veor q4 , q6 , q7
subs r2 , r2 , # 0x30
veor q5 , q2 , q7
movlo r6 , r2 @ r6 , r6 , is zero at this point
.byte 0x62 , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q9
.byte 0x62 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q9
.byte 0x62 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q9
veor q9 , q3 , q7
subs r2 , r2 , # 0x30
.byte 0xc0 , 0x03 , 0xb0 , 0xf3 @ aesimc q0 , q0
.byte 0x62 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q9
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x62 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q9
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
vorr q6 , q11 , q11
movlo r6 , r2 @ r6 , r6 , is zero at this point
.byte 0x68 , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q12
.byte 0x68 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q12
.byte 0x68 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q12
veor q9 , q3 , q7
add r0 , r0 , r6 @ r0 is adjusted in such way that
@ at exit from the loop q1-q10
@ are loaded with last " words "
vorr q6 , q11 , q11
mov r7 , r3
.byte 0x68 , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q12
.byte 0xc0 , 0x03 , 0xb0 , 0xf3 @ aesimc q0 , q0
.byte 0x68 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q12
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x68 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q12
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
mov r7 , r3
.byte 0x6a , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q13
.byte 0x6a , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q13
.byte 0x6a , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q13
vld1.8 { q2 } ,[ r0 ]!
.byte 0x6a , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q13
.byte 0xc0 , 0x03 , 0xb0 , 0xf3 @ aesimc q0 , q0
.byte 0x6a , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q13
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x6a , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q13
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
vld1.8 { q3 } ,[ r0 ]!
.byte 0x6c , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q14
.byte 0x6c , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q14
.byte 0x6c , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q14
vld1.8 { q11 } ,[ r0 ]!
.byte 0xc0 , 0x03 , 0xb0 , 0xf3 @ aesimc q0 , q0
.byte 0x6c , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q14
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x6c , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q14
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
vld1.32 { q8 } ,[ r7 ]! @ re-pre-load rndkey [ 0 ]
vld1.8 { q11 } ,[ r0 ]!
.byte 0x6e , 0x03 , 0xb0 , 0xf3 @ aesd q0 , q15
.byte 0x6e , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q15
.byte 0x6e , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q15
vld1.32 { q8 } ,[ r7 ]! @ re-pre-load rndkey [ 0 ]
add r6 , r5 , # 2
veor q4 , q4 , q0
veor q5 , q5 , q1
veor q10 , q10 , q9
vld1.32 { q9 } ,[ r7 ]! @ re-pre-load rndkey [ 1 ]
vorr q0 , q2 , q2
vst1.8 { q4 } ,[ r1 ]!
vorr q1 , q3 , q3
vorr q0 , q2 , q2
vst1.8 { q5 } ,[ r1 ]!
vorr q1 , q3 , q3
vst1.8 { q10 } ,[ r1 ]!
vorr q10 , q11 , q11
bhs .Loop3x_cbc_dec
@ -490,39 +512,39 @@ aes_v8_cbc_encrypt:
.Lcbc_dec_tail:
.byte 0x60 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q8
.byte 0x60 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q8
vld1.32 { q8 } ,[ r7 ]!
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x60 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q8
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
vld1.32 { q8 } ,[ r7 ]!
subs r6 , r6 , # 2
.byte 0x62 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q9
.byte 0x62 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q9
vld1.32 { q9 } ,[ r7 ]!
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x62 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q9
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
vld1.32 { q9 } ,[ r7 ]!
bgt .Lcbc_dec_tail
.byte 0x60 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q8
.byte 0x60 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q8
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x60 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q8
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
.byte 0x62 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q9
.byte 0x62 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q9
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x62 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q9
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
.byte 0x68 , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q12
.byte 0x68 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q12
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x68 , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q12
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
cmn r2 , # 0x20
.byte 0x6a , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q13
.byte 0x6a , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q13
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x6a , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q13
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
veor q5 , q6 , q7
.byte 0x6c , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q14
.byte 0x6c , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q14
.byte 0xc2 , 0x23 , 0xb0 , 0xf3 @ aesimc q1 , q1
.byte 0x6c , 0x43 , 0xf0 , 0xf3 @ aesd q10 , q14
.byte 0xe4 , 0x43 , 0xf0 , 0xf3 @ aesimc q10 , q10
veor q9 , q3 , q7
.byte 0x6e , 0x23 , 0xb0 , 0xf3 @ aesd q1 , q15
@ -590,70 +612,69 @@ aes_v8_ctr32_encrypt_blocks:
.align 4
.Loop3x_ctr32:
.byte 0x20 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q8
.byte 0x20 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q8
.byte 0x20 , 0x43 , 0xf0 , 0xf3 @ aese q10 , q8
vld1.32 { q8 } ,[ r7 ]!
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x20 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q8
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
.byte 0x20 , 0x43 , 0xf0 , 0xf3 @ aese q10 , q8
.byte 0xa4 , 0x43 , 0xf0 , 0xf3 @ aesmc q10 , q10
vld1.32 { q8 } ,[ r7 ]!
subs r6 , r6 , # 2
.byte 0x22 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q9
.byte 0x22 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q9
.byte 0x22 , 0x43 , 0xf0 , 0xf3 @ aese q10 , q9
vld1.32 { q9 } ,[ r7 ]!
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x22 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q9
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
.byte 0x22 , 0x43 , 0xf0 , 0xf3 @ aese q10 , q9
.byte 0xa4 , 0x43 , 0xf0 , 0xf3 @ aesmc q10 , q10
vld1.32 { q9 } ,[ r7 ]!
bgt .Loop3x_ctr32
.byte 0x20 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q8
.byte 0x20 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q8
.byte 0x20 , 0x43 , 0xf0 , 0xf3 @ aese q10 , q8
mov r7 , r3
.byte 0x80 , 0x83 , 0xb0 , 0xf3 @ aesmc q4 , q0
vld1.8 { q2 } ,[ r0 ]!
.byte 0x20 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q8
.byte 0x82 , 0xa3 , 0xb0 , 0xf3 @ aesmc q5 , q1
.byte 0xa4 , 0x43 , 0xf0 , 0xf3 @ aesmc q10 , q10
vld1.8 { q2 } ,[ r0 ]!
vorr q0 , q6 , q6
.byte 0x22 , 0x83 , 0xb0 , 0xf3 @ aese q4 , q9
.byte 0x20 , 0x43 , 0xf0 , 0xf3 @ aese q10 , q8
.byte 0xa4 , 0x43 , 0xf0 , 0xf3 @ aesmc q10 , q10
vld1.8 { q3 } ,[ r0 ]!
.byte 0x22 , 0xa3 , 0xb0 , 0xf3 @ aese q5 , q9
.byte 0x22 , 0x43 , 0xf0 , 0xf3 @ aese q10 , q9
vorr q1 , q6 , q6
.byte 0x22 , 0x83 , 0xb0 , 0xf3 @ aese q4 , q9
.byte 0x88 , 0x83 , 0xb0 , 0xf3 @ aesmc q4 , q4
vld1.8 { q11 } ,[ r0 ]!
.byte 0x22 , 0xa3 , 0xb0 , 0xf3 @ aese q5 , q9
.byte 0x8a , 0xa3 , 0xb0 , 0xf3 @ aesmc q5 , q5
vld1.8 { q11 } ,[ r0 ]!
mov r7 , r3
.byte 0x22 , 0x43 , 0xf0 , 0xf3 @ aese q10 , q9
.byte 0xa4 , 0x23 , 0xf0 , 0xf3 @ aesmc q9 , q10
vorr q10 , q6 , q6
add r9 , r8 , # 1
.byte 0x28 , 0x83 , 0xb0 , 0xf3 @ aese q4 , q12
.byte 0x88 , 0x83 , 0xb0 , 0xf3 @ aesmc q4 , q4
.byte 0x28 , 0xa3 , 0xb0 , 0xf3 @ aese q5 , q12
.byte 0x2 8 , 0x23 , 0xf 0 , 0xf3 @ aese q9 , q12
.byte 0x8a , 0xa3 , 0xb 0 , 0xf3 @ aesmc q5 , q5
veor q2 , q2 , q7
add r10 , r8 , # 2
.byte 0x88 , 0x83 , 0xb0 , 0xf3 @ aesmc q4 , q4
.byte 0x8a , 0xa3 , 0xb0 , 0xf3 @ aesmc q5 , q5
.byte 0x28 , 0x23 , 0xf0 , 0xf3 @ aese q9 , q12
.byte 0xa2 , 0x23 , 0xf0 , 0xf3 @ aesmc q9 , q9
veor q3 , q3 , q7
add r8 , r8 , # 3
.byte 0x2a , 0x83 , 0xb0 , 0xf3 @ aese q4 , q13
.byte 0x88 , 0x83 , 0xb0 , 0xf3 @ aesmc q4 , q4
.byte 0x2a , 0xa3 , 0xb0 , 0xf3 @ aese q5 , q13
.byte 0x2a , 0x23 , 0xf 0 , 0xf3 @ aese q9 , q13
.byte 0x8a , 0xa3 , 0xb 0 , 0xf3 @ aesmc q5 , q5
veor q11 , q11 , q7
rev r9 , r9
.byte 0x88 , 0x83 , 0xb0 , 0xf3 @ aesmc q4 , q4
vld1.32 { q8 } ,[ r7 ]! @ re-pre-load rndkey [ 0 ]
.byte 0x8a , 0xa3 , 0xb0 , 0xf3 @ aesmc q5 , q5
.byte 0x2a , 0x23 , 0xf0 , 0xf3 @ aese q9 , q13
.byte 0xa2 , 0x23 , 0xf0 , 0xf3 @ aesmc q9 , q9
vmov.32 d1 [ 1 ], r9
rev r10 , r10
.byte 0x2c , 0x83 , 0xb0 , 0xf3 @ aese q4 , q14
.byte 0x88 , 0x83 , 0xb0 , 0xf3 @ aesmc q4 , q4
.byte 0x2c , 0xa3 , 0xb0 , 0xf3 @ aese q5 , q14
.byte 0x2c , 0x23 , 0xf 0 , 0xf3 @ aese q9 , q14
.byte 0x8a , 0xa3 , 0xb 0 , 0xf3 @ aesmc q5 , q5
vmov.32 d3 [ 1 ], r10
rev r12 , r8
.byte 0x88 , 0x83 , 0xb0 , 0xf3 @ aesmc q4 , q4
.byte 0x8a , 0xa3 , 0xb0 , 0xf3 @ aesmc q5 , q5
.byte 0x2c , 0x23 , 0xf0 , 0xf3 @ aese q9 , q14
.byte 0xa2 , 0x23 , 0xf0 , 0xf3 @ aesmc q9 , q9
vmov.32 d21 [ 1 ], r12
subs r2 , r2 , # 3
@ -661,13 +682,14 @@ aes_v8_ctr32_encrypt_blocks:
.byte 0x2e , 0xa3 , 0xb0 , 0xf3 @ aese q5 , q15
.byte 0x2e , 0x23 , 0xf0 , 0xf3 @ aese q9 , q15
mov r6 , r5
veor q2 , q2 , q4
vld1.32 { q8 } ,[ r7 ]! @ re-pre-load rndkey [ 0 ]
vst1.8 { q2 } ,[ r1 ]!
veor q3 , q3 , q5
mov r6 , r5
vst1.8 { q3 } ,[ r1 ]!
veor q11 , q11 , q9
vld1.32 { q9 } ,[ r7 ]! @ re-pre-load rndkey [ 1 ]
vst1.8 { q2 } ,[ r1 ]!
vst1.8 { q3 } ,[ r1 ]!
vst1.8 { q11 } ,[ r1 ]!
bhs .Loop3x_ctr32
@ -679,40 +701,40 @@ aes_v8_ctr32_encrypt_blocks:
.Lctr32_tail:
.byte 0x20 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q8
.byte 0x20 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q8
vld1.32 { q8 } ,[ r7 ]!
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x20 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q8
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
vld1.32 { q8 } ,[ r7 ]!
subs r6 , r6 , # 2
.byte 0x22 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q9
.byte 0x22 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q9
vld1.32 { q9 } ,[ r7 ]!
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x22 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q9
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
vld1.32 { q9 } ,[ r7 ]!
bgt .Lctr32_tail
.byte 0x20 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q8
.byte 0x20 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q8
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x20 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q8
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
.byte 0x22 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q9
.byte 0x22 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q9
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x22 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q9
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
vld1.8 { q2 } ,[ r0 ], r12
.byte 0x28 , 0x03 , 0xb0 , 0xf3 @ aese q0 , q12
.byte 0x28 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q12
vld1.8 { q3 } ,[ r0 ]
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x28 , 0x23 , 0xb0 , 0xf3 @ aese q1 , q12
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
vld1.8 { q3 } ,[ r0 ]
.byte 0x2a , 0x03 , 0xb0 , 0xf3 @ aese q0 , q13
.byte 0x2a , 0x23 , 0xb0 , 0xf3 @ aese q1 , q13
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x2a , 0x23 , 0xb0 , 0xf3 @ aese q1 , q13
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
.byte 0x2c , 0x03 , 0xb0 , 0xf3 @ aese q0 , q14
.byte 0x2c , 0x23 , 0xb0 , 0xf3 @ aese q1 , q14
veor q2 , q2 , q7
.byte 0x2c , 0x03 , 0xb0 , 0xf3 @ aese q0 , q14
.byte 0x80 , 0x03 , 0xb0 , 0xf3 @ aesmc q0 , q0
.byte 0x2c , 0x23 , 0xb0 , 0xf3 @ aese q1 , q14
.byte 0x82 , 0x23 , 0xb0 , 0xf3 @ aesmc q1 , q1
veor q3 , q3 , q7
.byte 0x2e , 0x03 , 0xb0 , 0xf3 @ aese q0 , q15