Home | History | Annotate | Download | only in source
      1   .globl FFT_4OFQ14
      2 
      3 FFT_4OFQ14:
      4   stmdb       sp!, {r4 - r11, lr}
      5   ldr         lr, =s_Q14S_8
      6   ldr         lr, [lr]
      7   cmp         r2, lr
      8   movgt       r0, #1
      9   ldmgtia     sp!, {r4 - r11, pc}
     10   stmdb       sp!, {r1, r2}
     11   mov         r3, #0
     12   mov         r2, r2
     13 
     14 LBL1:
     15   add         r12, r0, r3, lsl #2
     16   add         r12, r12, r2, lsr #1
     17   ldrsh       r5, [r12, #2]
     18   ldrsh       r4, [r12], +r2
     19   ldrsh       r9, [r12, #2]
     20   ldrsh       r8, [r12], +r2
     21   ldrsh       r7, [r12, #2]
     22   ldrsh       r6, [r12], +r2
     23   ldrsh       r11, [r12, #2]
     24   ldrsh       r10, [r12], +r2
     25   add         r4, r4, r6
     26   add         r5, r5, r7
     27   sub         r6, r4, r6, lsl #1
     28   sub         r7, r5, r7, lsl #1
     29   sub         r12, r8, r10
     30   sub         lr, r9, r11
     31   add         r10, r8, r10
     32   add         r11, r9, r11
     33   sub         r9, r4, r10
     34   sub         r8, r5, r11
     35   add         r4, r4, r10
     36   add         r5, r5, r11
     37   sub         r10, r6, lr
     38   add         r11, r7, r12
     39   add         r6, r6, lr
     40   sub         r7, r7, r12
     41   ldr         lr, =t_Q14R_rad8
     42   ldrsh       lr, [lr]
     43   stmdb       sp!, {r2}
     44   add         r12, r6, r7
     45   mul         r6, r12, lr
     46   rsb         r12, r12, r7, lsl #1
     47   mul         r7, r12, lr
     48   sub         r12, r11, r10
     49   mul         r10, r12, lr
     50   sub         r12, r12, r11, lsl #1
     51   mul         r11, r12, lr
     52   ldmia       sp!, {r2}
     53   stmdb       sp!, {r4 - r11}
     54   add         r4, r0, r3, lsl #2
     55   ldrsh       r7, [r4, #2]
     56   ldrsh       r6, [r4], +r2
     57   ldrsh       r11, [r4, #2]
     58   ldrsh       r10, [r4], +r2
     59   ldrsh       r9, [r4, #2]
     60   ldrsh       r8, [r4], +r2
     61   ldrsh       lr, [r4, #2]
     62   ldrsh       r12, [r4], +r2
     63   mov         r7, r7, asr #3
     64   mov         r6, r6, asr #3
     65   add         r6, r6, r8, asr #3
     66   add         r7, r7, r9, asr #3
     67   sub         r8, r6, r8, asr #2
     68   sub         r9, r7, r9, asr #2
     69   sub         r4, r10, r12
     70   sub         r5, r11, lr
     71   add         r10, r10, r12
     72   add         r11, r11, lr
     73   add         r6, r6, r10, asr #3
     74   add         r7, r7, r11, asr #3
     75   sub         r10, r6, r10, asr #2
     76   sub         r11, r7, r11, asr #2
     77   sub         r12, r8, r5, asr #3
     78   add         lr, r9, r4, asr #3
     79   add         r8, r8, r5, asr #3
     80   sub         r9, r9, r4, asr #3
     81   ldmia       sp!, {r4, r5}
     82   add         r6, r6, r4, asr #3
     83   add         r7, r7, r5, asr #3
     84   sub         r4, r6, r4, asr #2
     85   sub         r5, r7, r5, asr #2
     86   strh        r7, [r1, #2]
     87   strh        r6, [r1], #4
     88   ldmia       sp!, {r6, r7}
     89   add         r8, r8, r6, asr #17
     90   add         r9, r9, r7, asr #17
     91   sub         r6, r8, r6, asr #16
     92   sub         r7, r9, r7, asr #16
     93   strh        r9, [r1, #2]
     94   strh        r8, [r1], #4
     95   ldmia       sp!, {r8, r9}
     96   add         r10, r10, r8, asr #3
     97   sub         r11, r11, r9, asr #3
     98   sub         r8, r10, r8, asr #2
     99   add         r9, r11, r9, asr #2
    100   strh        r11, [r1, #2]
    101   strh        r10, [r1], #4
    102   ldmia       sp!, {r10, r11}
    103   add         r12, r12, r10, asr #17
    104   add         lr, lr, r11, asr #17
    105   sub         r10, r12, r10, asr #16
    106   sub         r11, lr, r11, asr #16
    107   strh        lr, [r1, #2]
    108   strh        r12, [r1], #4
    109   strh        r5, [r1, #2]
    110   strh        r4, [r1], #4
    111   strh        r7, [r1, #2]
    112   strh        r6, [r1], #4
    113   strh        r9, [r1, #2]
    114   strh        r8, [r1], #4
    115   strh        r11, [r1, #2]
    116   strh        r10, [r1], #4
    117   eor         r3, r3, r2, lsr #4
    118   tst         r3, r2, lsr #4
    119   bne         LBL1
    120 
    121   eor         r3, r3, r2, lsr #5
    122   tst         r3, r2, lsr #5
    123   bne         LBL1
    124 
    125   mov         r12, r2, lsr #6
    126 
    127 LBL2:
    128   eor         r3, r3, r12
    129   tst         r3, r12
    130   bne         LBL1
    131 
    132   movs        r12, r12, lsr #1
    133   bne         LBL2
    134 
    135   ldmia       sp!, {r1, r2}
    136   mov         r3, r2, lsr #3
    137   mov         r2, #0x20
    138   ldr         r0, =t_Q14S_8
    139   cmp         r3, #1
    140   beq         LBL3
    141 
    142 LBL6:
    143   mov         r3, r3, lsr #2
    144   stmdb       sp!, {r1, r3}
    145   add         r12, r2, r2, lsl #1
    146   add         r1, r1, r12
    147   sub         r3, r3, #1, 16
    148 
    149 LBL5:
    150   add         r3, r3, r2, lsl #14
    151 
    152 LBL4:
    153   ldrsh       r6, [r0], #2
    154   ldrsh       r7, [r0], #2
    155   ldrsh       r8, [r0], #2
    156   ldrsh       r9, [r0], #2
    157   ldrsh       r10, [r0], #2
    158   ldrsh       r11, [r0], #2
    159   ldrsh       r5, [r1, #2]
    160   ldrsh       r4, [r1], -r2
    161   sub         lr, r5, r4
    162   mul         r12, lr, r11
    163   add         lr, r10, r11, lsl #1
    164   mla         r11, r5, r10, r12
    165   mla         r10, r4, lr, r12
    166   ldrsh       r5, [r1, #2]
    167   ldrsh       r4, [r1], -r2
    168   sub         lr, r5, r4
    169   mul         r12, lr, r9
    170   add         lr, r8, r9, lsl #1
    171   mla         r9, r5, r8, r12
    172   mla         r8, r4, lr, r12
    173   ldrsh       r5, [r1, #2]
    174   ldrsh       r4, [r1], -r2
    175   sub         lr, r5, r4
    176   mul         r12, lr, r7
    177   add         lr, r6, r7, lsl #1
    178   mla         r7, r5, r6, r12
    179   mla         r6, r4, lr, r12
    180   ldrsh       r5, [r1, #2]
    181   ldrsh       r4, [r1]
    182   mov         r5, r5, asr #2
    183   mov         r4, r4, asr #2
    184   add         r12, r4, r6, asr #16
    185   add         lr, r5, r7, asr #16
    186   sub         r4, r4, r6, asr #16
    187   sub         r5, r5, r7, asr #16
    188   add         r6, r8, r10
    189   add         r7, r9, r11
    190   sub         r8, r8, r10
    191   sub         r9, r9, r11
    192   add         r10, r12, r6, asr #16
    193   add         r11, lr, r7, asr #16
    194   strh        r11, [r1, #2]
    195   strh        r10, [r1], +r2
    196   add         r10, r4, r9, asr #16
    197   sub         r11, r5, r8, asr #16
    198   strh        r11, [r1, #2]
    199   strh        r10, [r1], +r2
    200   sub         r10, r12, r6, asr #16
    201   sub         r11, lr, r7, asr #16
    202   strh        r11, [r1, #2]
    203   strh        r10, [r1], +r2
    204   sub         r10, r4, r9, asr #16
    205   add         r11, r5, r8, asr #16
    206   strh        r11, [r1, #2]
    207   strh        r10, [r1], #4
    208   subs        r3, r3, #1, 16
    209   bge         LBL4
    210   add         r12, r2, r2, lsl #1
    211   add         r1, r1, r12
    212   sub         r0, r0, r12
    213   sub         r3, r3, #1
    214   movs        lr, r3, lsl #16
    215   bne         LBL5
    216   add         r0, r0, r12
    217   ldmia       sp!, {r1, r3}
    218   mov         r2, r2, lsl #2
    219   cmp         r3, #2
    220   bgt         LBL6
    221 
    222 LBL3:
    223   mov         r0, #0
    224   ldmia       sp!, {r4 - r11, pc}
    225   andeq       r3, r1, r0, lsr #32
    226   andeq       r10, r1, r12, ror #31
    227   andeq       r3, r1, r8, lsr #32
    228