Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* volk_32fc_s32f_magnitude_16i_a_orc_impl */
- .global volk_32fc_s32f_magnitude_16i_a_orc_impl
- volk_32fc_s32f_magnitude_16i_a_orc_impl:
- # 6: loadpl
- add r1, r0, #0x00000174
- vld1.32 {d4[],d5[]}, [r1]
- mov ip, #0x00000010
- ldr r1, [r0, #20]
- sub ip, ip, r1
- and ip, ip, #15
- asr ip, ip, #1
- ldr r2, [r0, #4]
- cmp r2, ip
- ble .L1
- str ip, [r0, #8]
- sub r1, r2, ip
- asr r2, r1, #1
- str r2, [r0, #12]
- and r2, r1, #1
- str r2, [r0, #16]
- b .L2
- .L1:
- str r2, [r0, #8]
- mov r2, #0x00000000
- str r2, [r0, #12]
- str r2, [r0, #16]
- .L2:
- ldr r2, [r0, #20]
- ldr r3, [r0, #36]
- ldr ip, [r0, #8]
- cmp ip, #0x00000000
- beq .L6
- .L5:
- subs ip, ip, #0x00000001
- # LOOP shift 0
- # 0: loadq
- vld1.8 d6, [r3]
- # 1: loadq
- vld1.8 d8, [r3]
- # 2: mulf
- vmul.f32 d6, d6, d8
- # 3: splitql
- vorr d8, d6, d6
- vorr d10, d6, d6
- vtrn.32 d10, d8
- # 4: addf
- vadd.f32 d10, d10, d8
- # 5: sqrtf
- vrsqrte.f32 d0, d10
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vrecpe.f32 d10, d0
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- # 7: mulf
- vmul.f32 d10, d10, d4
- # 8: convfl
- vcvt.s32.f32 d10, d10
- # 9: convsuslw
- vqmovun.s32 d10, q5
- # 10: storew
- vst1.16 d10[0], [r2]
- add r2, r2, #0x00000002
- add r3, r3, #0x00000008
- bne .L5
- .L6:
- ldr ip, [r0, #12]
- cmp ip, #0x00000000
- beq .L12
- asr r1, ip, #17
- cmp r1, #0x00000000
- beq .L11
- .L9:
- subs ip, ip, #0x00000001
- # LOOP shift 1
- # 0: loadq
- vld1.8 { d6, d7 }, [r3]
- # 1: loadq
- vld1.8 { d8, d9 }, [r3]
- # 2: mulf
- vmul.f32 q3, q3, q4
- # 3: splitql
- vorr q4, q3, q3
- vorr q5, q3, q3
- vuzp.32 q5, q4
- # 4: addf
- vadd.f32 d10, d10, d8
- # 5: sqrtf
- vrsqrte.f32 d0, d10
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vrecpe.f32 d10, d0
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- # 7: mulf
- vmul.f32 d10, d10, d4
- # 8: convfl
- vcvt.s32.f32 d10, d10
- # 9: convsuslw
- vqmovun.s32 d10, q5
- # 10: storew
- vst1.32 d10[0], [r2]
- add r2, r2, #0x00000004
- add r3, r3, #0x00000010
- bne .L9
- b .L12
- .L11:
- asr r1, ip, #13
- cmp r1, #0x00000000
- beq .L10
- .L8:
- subs ip, ip, #0x00000001
- # LOOP shift 1
- # 0: loadq
- vld1.8 { d6, d7 }, [r3]
- # 1: loadq
- vld1.8 { d8, d9 }, [r3]
- # 2: mulf
- vmul.f32 q3, q3, q4
- # 3: splitql
- vorr q4, q3, q3
- vorr q5, q3, q3
- vuzp.32 q5, q4
- # 4: addf
- vadd.f32 d10, d10, d8
- # 5: sqrtf
- vrsqrte.f32 d0, d10
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vrecpe.f32 d10, d0
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- # 7: mulf
- vmul.f32 d10, d10, d4
- # 8: convfl
- vcvt.s32.f32 d10, d10
- # 9: convsuslw
- vqmovun.s32 d10, q5
- # 10: storew
- vst1.32 d10[0], [r2]
- add r2, r2, #0x00000004
- add r3, r3, #0x00000010
- bne .L8
- b .L12
- .L10:
- .L7:
- subs ip, ip, #0x00000001
- # LOOP shift 1
- # 0: loadq
- vld1.8 { d6, d7 }, [r3]
- # 1: loadq
- vld1.8 { d8, d9 }, [r3]
- # 2: mulf
- vmul.f32 q3, q3, q4
- # 3: splitql
- vorr q4, q3, q3
- vorr q5, q3, q3
- vuzp.32 q5, q4
- # 4: addf
- vadd.f32 d10, d10, d8
- # 5: sqrtf
- vrsqrte.f32 d0, d10
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vrecpe.f32 d10, d0
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- # 7: mulf
- vmul.f32 d10, d10, d4
- # 8: convfl
- vcvt.s32.f32 d10, d10
- # 9: convsuslw
- vqmovun.s32 d10, q5
- # 10: storew
- vst1.32 d10[0], [r2]
- add r2, r2, #0x00000004
- add r3, r3, #0x00000010
- bne .L7
- .L12:
- ldr ip, [r0, #16]
- cmp ip, #0x00000000
- beq .L14
- .L13:
- subs ip, ip, #0x00000001
- # LOOP shift 0
- # 0: loadq
- vld1.8 d6, [r3]
- # 1: loadq
- vld1.8 d8, [r3]
- # 2: mulf
- vmul.f32 d6, d6, d8
- # 3: splitql
- vorr d8, d6, d6
- vorr d10, d6, d6
- vtrn.32 d10, d8
- # 4: addf
- vadd.f32 d10, d10, d8
- # 5: sqrtf
- vrsqrte.f32 d0, d10
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vmul.f32 d2, d0, d10
- vrsqrts.f32 d2, d0, d2
- vmul.f32 d0, d0, d2
- vrecpe.f32 d10, d0
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- vrecps.f32 d2, d10, d0
- vmul.f32 d10, d10, d2
- # 7: mulf
- vmul.f32 d10, d10, d4
- # 8: convfl
- vcvt.s32.f32 d10, d10
- # 9: convsuslw
- vqmovun.s32 d10, q5
- # 10: storew
- vst1.16 d10[0], [r2]
- add r2, r2, #0x00000002
- add r3, r3, #0x00000008
- bne .L13
- .L14:
- bx lr
- .L20:
- .word 0x07060706
- .word 0x07060706
- .word 0x0f0e0f0e
- .word 0x0f0e0f0e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement