rendered paste bodybeagleboard at 500MHz
calling all these functions with loop counter set to 500000000
a1
real 0m49.235s
user 0m45.617s
sys 0m3.609s
a2
real 0m46.012s
user 0m42.711s
sys 0m3.289s
b1
real 0m56.712s
user 0m52.656s
sys 0m4.047s
b2
real 0m32.085s
user 0m29.805s
sys 0m2.250s
/********************************************************************************/
.text
.global a1
.global a2
.global b1
.global b2
.fpu neon
a1:
mov r2, #0
1:
vadd.i32 d0, d0, d1
vmov.32 ip, d0[0]
.rept 25
add r5, r5, #0
add r6, r6, #0
.endr
add r2, r2, ip
subs r0, r0, #1
bgt 1b
bx lr
a2:
mov r2, #0
1:
vadd.i32 d0, d0, d1
.rept 20
add r5, r5, #0
add r6, r6, #0
.endr
vmov.32 ip, d0[0]
.rept 5
add r5, r5, #0
add r6, r6, #0
.endr
add r2, r2, ip
subs r0, r0, #1
bgt 1b
bx lr
b1:
mov r2, #0
1:
vadd.i32 d0, d0, d1
vst1.32 {d0[0]}, [r1]
ldr ip, [r1]
.rept 25
add r5, r5, #0
add r6, r6, #0
.endr
add r2, r2, ip
subs r0, r0, #1
bgt 1b
bx lr
b2:
mov r2, #0
1:
vadd.i32 d0, d0, d1
vst1.32 {d0[0]}, [r1]
.rept 20
add r5, r5, #0
add r6, r6, #0
.endr
ldr ip, [r1]
.rept 5
add r5, r5, #0
add r6, r6, #0
.endr
add r2, r2, ip
subs r0, r0, #1
bgt 1b
bx lr