58 lines
1.3 KiB
ArmAsm
58 lines
1.3 KiB
ArmAsm
// This assembler file contains instructions like ssax
|
|
// that were not assembler properly with NDKr5b's gas version.
|
|
//
|
|
|
|
/////// unittest.s ////////
|
|
@ For little endian
|
|
@.arch armv7a
|
|
|
|
.align 2
|
|
armSP_FFTFwd_CToC_SC16_Radix4_fs_OutOfPlace_unsafe:
|
|
push {r4, lr}
|
|
sub sp, sp, #32 @ 0x20
|
|
mov ip, #4 @ 0x4
|
|
lsr lr, r6, #2
|
|
str ip, [sp, #4]
|
|
str lr, [sp]
|
|
str r5, [sp, #16]
|
|
lsl ip, lr, #2
|
|
lsl r3, lr, #3
|
|
add r3, r3, ip
|
|
rsb r3, r3, #8 @ 0x8
|
|
str r1, [sp, #20]
|
|
ldrd r4, [r0], ip
|
|
ldrd r6, [r0], ip
|
|
ldrd r8, [r0], ip
|
|
ldrd sl, [r0], r3
|
|
strd r2, [sp, #8]
|
|
subs lr, lr, #2 @ 0x2
|
|
str lr, [sp, #24]
|
|
sadd16 r2, r4, r8
|
|
ssub16 r1, r4, r8
|
|
sadd16 r3, r6, sl
|
|
ssub16 lr, r6, sl
|
|
sadd16 r4, r2, r3
|
|
ssub16 r8, r2, r3
|
|
ssax r6, r1, lr
|
|
sasx sl, r1, lr
|
|
sadd16 r2, r5, r9
|
|
ssub16 r1, r5, r9
|
|
sadd16 r3, r7, fp
|
|
ssub16 lr, r7, fp
|
|
sadd16 r5, r2, r3
|
|
ssub16 r9, r2, r3
|
|
ldrd r2, [sp, #8]
|
|
ssax r7, r1, lr
|
|
sasx fp, r1, lr
|
|
strd r4, [r2], ip
|
|
strd r6, [r2], ip
|
|
strd r8, [r2], ip
|
|
strd sl, [r2], r3
|
|
ldr lr, [sp, #24]
|
|
bgt armSP_FFTFwd_CToC_SC16_Radix4_fs_OutOfPlace_unsafe+0x30
|
|
ldrd r6, [sp]
|
|
ldr r1, [sp, #20]
|
|
sub r0, r2, ip
|
|
ldr r2, [sp, #16]
|
|
add sp, sp, #32 @ 0x20
|
|
pop {r4, pc}
|