Advertisement
Guest User

Untitled

a guest
Apr 1st, 2014
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 4.84 KB | None | 0 0
  1. /* volk_32fc_s32f_magnitude_16i_a_orc_impl */
  2. .global volk_32fc_s32f_magnitude_16i_a_orc_impl
  3. volk_32fc_s32f_magnitude_16i_a_orc_impl:
  4. # 6: loadpl
  5.   add r1, r0, #0x00000174
  6.   vld1.32 {d4[],d5[]}, [r1]
  7.   mov ip, #0x00000010
  8.   ldr r1, [r0, #20]
  9.   sub ip, ip, r1
  10.   and ip, ip, #15
  11.   asr ip, ip, #1
  12.   ldr r2, [r0, #4]
  13.   cmp r2, ip
  14.   ble .L1
  15.   str ip, [r0, #8]
  16.   sub r1, r2, ip
  17.   asr r2, r1, #1
  18.   str r2, [r0, #12]
  19.   and r2, r1, #1
  20.   str r2, [r0, #16]
  21.   b .L2
  22. .L1:
  23.   str r2, [r0, #8]
  24.   mov r2, #0x00000000
  25.   str r2, [r0, #12]
  26.   str r2, [r0, #16]
  27. .L2:
  28.   ldr r2, [r0, #20]
  29.   ldr r3, [r0, #36]
  30.   ldr ip, [r0, #8]
  31.   cmp ip, #0x00000000
  32.   beq .L6
  33. .L5:
  34.   subs ip, ip, #0x00000001
  35. # LOOP shift 0
  36. # 0: loadq
  37.   vld1.8 d6, [r3]
  38. # 1: loadq
  39.   vld1.8 d8, [r3]
  40. # 2: mulf
  41.   vmul.f32 d6, d6, d8
  42. # 3: splitql
  43.   vorr d8, d6, d6
  44.   vorr d10, d6, d6
  45.   vtrn.32 d10, d8
  46. # 4: addf
  47.   vadd.f32 d10, d10, d8
  48. # 5: sqrtf
  49.   vrsqrte.f32 d0, d10
  50.   vmul.f32 d2, d0, d10
  51.   vrsqrts.f32 d2, d0, d2
  52.   vmul.f32 d0, d0, d2
  53.   vmul.f32 d2, d0, d10
  54.   vrsqrts.f32 d2, d0, d2
  55.   vmul.f32 d0, d0, d2
  56.   vrecpe.f32 d10, d0
  57.   vrecps.f32 d2, d10, d0
  58.   vmul.f32 d10, d10, d2
  59.   vrecps.f32 d2, d10, d0
  60.   vmul.f32 d10, d10, d2
  61. # 7: mulf
  62.   vmul.f32 d10, d10, d4
  63. # 8: convfl
  64.   vcvt.s32.f32 d10, d10
  65. # 9: convsuslw
  66.   vqmovun.s32 d10, q5
  67. # 10: storew
  68.   vst1.16 d10[0], [r2]
  69.   add r2, r2, #0x00000002
  70.   add r3, r3, #0x00000008
  71.   bne .L5
  72. .L6:
  73.   ldr ip, [r0, #12]
  74.   cmp ip, #0x00000000
  75.   beq .L12
  76.   asr r1, ip, #17
  77.   cmp r1, #0x00000000
  78.   beq .L11
  79. .L9:
  80.   subs ip, ip, #0x00000001
  81. # LOOP shift 1
  82. # 0: loadq
  83.   vld1.8 { d6, d7 }, [r3]
  84. # 1: loadq
  85.   vld1.8 { d8, d9 }, [r3]
  86. # 2: mulf
  87.   vmul.f32 q3, q3, q4
  88. # 3: splitql
  89.   vorr q4, q3, q3
  90.   vorr q5, q3, q3
  91.   vuzp.32 q5, q4
  92. # 4: addf
  93.   vadd.f32 d10, d10, d8
  94. # 5: sqrtf
  95.   vrsqrte.f32 d0, d10
  96.   vmul.f32 d2, d0, d10
  97.   vrsqrts.f32 d2, d0, d2
  98.   vmul.f32 d0, d0, d2
  99.   vmul.f32 d2, d0, d10
  100.   vrsqrts.f32 d2, d0, d2
  101.   vmul.f32 d0, d0, d2
  102.   vrecpe.f32 d10, d0
  103.   vrecps.f32 d2, d10, d0
  104.   vmul.f32 d10, d10, d2
  105.   vrecps.f32 d2, d10, d0
  106.   vmul.f32 d10, d10, d2
  107. # 7: mulf
  108.   vmul.f32 d10, d10, d4
  109. # 8: convfl
  110.   vcvt.s32.f32 d10, d10
  111. # 9: convsuslw
  112.   vqmovun.s32 d10, q5
  113. # 10: storew
  114.   vst1.32 d10[0], [r2]
  115.   add r2, r2, #0x00000004
  116.   add r3, r3, #0x00000010
  117.   bne .L9
  118.   b .L12
  119. .L11:
  120.   asr r1, ip, #13
  121.   cmp r1, #0x00000000
  122.   beq .L10
  123. .L8:
  124.   subs ip, ip, #0x00000001
  125. # LOOP shift 1
  126. # 0: loadq
  127.   vld1.8 { d6, d7 }, [r3]
  128. # 1: loadq
  129.   vld1.8 { d8, d9 }, [r3]
  130. # 2: mulf
  131.   vmul.f32 q3, q3, q4
  132. # 3: splitql
  133.   vorr q4, q3, q3
  134.   vorr q5, q3, q3
  135.   vuzp.32 q5, q4
  136. # 4: addf
  137.   vadd.f32 d10, d10, d8
  138. # 5: sqrtf
  139.   vrsqrte.f32 d0, d10
  140.   vmul.f32 d2, d0, d10
  141.   vrsqrts.f32 d2, d0, d2
  142.   vmul.f32 d0, d0, d2
  143.   vmul.f32 d2, d0, d10
  144.   vrsqrts.f32 d2, d0, d2
  145.   vmul.f32 d0, d0, d2
  146.   vrecpe.f32 d10, d0
  147.   vrecps.f32 d2, d10, d0
  148.   vmul.f32 d10, d10, d2
  149.   vrecps.f32 d2, d10, d0
  150.   vmul.f32 d10, d10, d2
  151. # 7: mulf
  152.   vmul.f32 d10, d10, d4
  153. # 8: convfl
  154.   vcvt.s32.f32 d10, d10
  155. # 9: convsuslw
  156.   vqmovun.s32 d10, q5
  157. # 10: storew
  158.   vst1.32 d10[0], [r2]
  159.   add r2, r2, #0x00000004
  160.   add r3, r3, #0x00000010
  161.   bne .L8
  162.   b .L12
  163. .L10:
  164. .L7:
  165.   subs ip, ip, #0x00000001
  166. # LOOP shift 1
  167. # 0: loadq
  168.   vld1.8 { d6, d7 }, [r3]
  169. # 1: loadq
  170.   vld1.8 { d8, d9 }, [r3]
  171. # 2: mulf
  172.   vmul.f32 q3, q3, q4
  173. # 3: splitql
  174.   vorr q4, q3, q3
  175.   vorr q5, q3, q3
  176.   vuzp.32 q5, q4
  177. # 4: addf
  178.   vadd.f32 d10, d10, d8
  179. # 5: sqrtf
  180.   vrsqrte.f32 d0, d10
  181.   vmul.f32 d2, d0, d10
  182.   vrsqrts.f32 d2, d0, d2
  183.   vmul.f32 d0, d0, d2
  184.   vmul.f32 d2, d0, d10
  185.   vrsqrts.f32 d2, d0, d2
  186.   vmul.f32 d0, d0, d2
  187.   vrecpe.f32 d10, d0
  188.   vrecps.f32 d2, d10, d0
  189.   vmul.f32 d10, d10, d2
  190.   vrecps.f32 d2, d10, d0
  191.   vmul.f32 d10, d10, d2
  192. # 7: mulf
  193.   vmul.f32 d10, d10, d4
  194. # 8: convfl
  195.   vcvt.s32.f32 d10, d10
  196. # 9: convsuslw
  197.   vqmovun.s32 d10, q5
  198. # 10: storew
  199.   vst1.32 d10[0], [r2]
  200.   add r2, r2, #0x00000004
  201.   add r3, r3, #0x00000010
  202.   bne .L7
  203. .L12:
  204.   ldr ip, [r0, #16]
  205.   cmp ip, #0x00000000
  206.   beq .L14
  207. .L13:
  208.   subs ip, ip, #0x00000001
  209. # LOOP shift 0
  210. # 0: loadq
  211.   vld1.8 d6, [r3]
  212. # 1: loadq
  213.   vld1.8 d8, [r3]
  214. # 2: mulf
  215.   vmul.f32 d6, d6, d8
  216. # 3: splitql
  217.   vorr d8, d6, d6
  218.   vorr d10, d6, d6
  219.   vtrn.32 d10, d8
  220. # 4: addf
  221.   vadd.f32 d10, d10, d8
  222. # 5: sqrtf
  223.   vrsqrte.f32 d0, d10
  224.   vmul.f32 d2, d0, d10
  225.   vrsqrts.f32 d2, d0, d2
  226.   vmul.f32 d0, d0, d2
  227.   vmul.f32 d2, d0, d10
  228.   vrsqrts.f32 d2, d0, d2
  229.   vmul.f32 d0, d0, d2
  230.   vrecpe.f32 d10, d0
  231.   vrecps.f32 d2, d10, d0
  232.   vmul.f32 d10, d10, d2
  233.   vrecps.f32 d2, d10, d0
  234.   vmul.f32 d10, d10, d2
  235. # 7: mulf
  236.   vmul.f32 d10, d10, d4
  237. # 8: convfl
  238.   vcvt.s32.f32 d10, d10
  239. # 9: convsuslw
  240.   vqmovun.s32 d10, q5
  241. # 10: storew
  242.   vst1.16 d10[0], [r2]
  243.   add r2, r2, #0x00000002
  244.   add r3, r3, #0x00000008
  245.   bne .L13
  246. .L14:
  247.   bx lr
  248. .L20:
  249.   .word 0x07060706
  250.   .word 0x07060706
  251.   .word 0x0f0e0f0e
  252.   .word 0x0f0e0f0e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement