Home | History | Annotate | Download | only in asm
      1 @ ------------------------------------------------------------------
      2 @ Copyright (C) 1998-2009 PacketVideo
      3 @
      4 @ Licensed under the Apache License, Version 2.0 (the "License");
      5 @ you may not use this file except in compliance with the License.
      6 @ You may obtain a copy of the License at
      7 @
      8 @      http://www.apache.org/licenses/LICENSE-2.0
      9 @
     10 @ Unless required by applicable law or agreed to in writing, software
     11 @ distributed under the License is distributed on an "AS IS" BASIS,
     12 @ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13 @ express or implied.
     14 @ See the License for the specific language governing permissions
     15 @ and limitations under the License.
     16 @ -------------------------------------------------------------------
     17 
     18 @
     19 @
     20 @   Filename: pvmp3_dct_9_gcc.s
     21 @
     22 @------------------------------------------------------------------------------
     23 @ REVISION HISTORY
     24 @
     25 @
     26 @ Who:                                   Date: MM/DD/YYYY
     27 @ Description:
     28 @
     29 @------------------------------------------------------------------------------
     30 
     31 .arm
     32 
     33 .align 4
     34 
     35 .text
     36 
     37 
     38 @------------------------------------------------------------------------------
     39 
     40 .global pvmp3_dct_9
     41 
     42 pvmp3_dct_9:
     43         stmfd    sp!,{r4-r11,lr}
     44         ldr      r2, [r0, #0x20]
     45         ldr      r3, [r0, #0]
     46         ldr      r12,[r0, #4]
     47         add      r1,r2,r3
     48         sub      lr,r2,r3
     49         ldr      r3,[r0, #0x1c]
     50         ldr      r4,[r0, #0x18]
     51         add      r2,r3,r12
     52         ldr      r5,[r0,#8]
     53         sub      r3,r3,r12
     54         add      r12,r4,r5
     55         sub      r4,r4,r5
     56         ldr      r5,[r0, #0x14]
     57         ldr      r7,[r0, #0xc]
     58         ldr      r9,[r0, #0x10]
     59         add      r6,r5,r7
     60         sub      r5,r5,r7
     61         add      r7,r1,r12
     62         add      r8,r9,r2
     63         add      r7,r7,r6
     64         add      r10,r7,r8
     65         rsb      r7,r8,r7,asr #1
     66         str      r7,[r0, #0x18]
     67         rsb      r2,r9,r2,asr #1
     68         str      r10,[r0,#0]
     69         ldr      r11,cos_2pi_9
     70         rsb      r7,r2,#0
     71 
     72         ldr      r10,cos_4pi_9
     73         mov      r9,r1,lsl #1
     74         mov      r8,r7
     75 
     76 @    vec[4]  = fxp_mac32_Q32( vec[4], tmp0<<1, cos_2pi_9)@
     77 
     78         smlal    r1,r8,r11,r9
     79         ldr      r11,cos_pi_9
     80 		mov      r1,r9			@@@@@@  !!!!!!
     81 
     82 @    vec[8]  = fxp_mac32_Q32( vec[8], tmp0<<1, cos_4pi_9)@
     83 
     84         smlal    r1,r7,r10,r9
     85 
     86         mov      r1,r12,lsl #1
     87 
     88 
     89 @    vec[2]  = fxp_mac32_Q32( vec[2], tmp0<<1, cos_pi_9)@
     90 
     91         smlal    r9,r2,r11,r9
     92         rsb      r9,r10,#0
     93         ldr      r11,cos_5pi_9
     94 
     95         smlal    r12,r2,r9,r1
     96 
     97 
     98 
     99 @    vec[2]  = fxp_mac32_Q32( vec[2], tmp2<<1, cos_5pi_9)@
    100 
    101         ldr      r9,cos_2pi_9
    102         mov      r12,r1			@@@@@@  !!!!!!
    103         smlal    r12,r8,r11,r1
    104 
    105 
    106 @    vec[8]  = fxp_mac32_Q32( vec[8], tmp2<<1, cos_2pi_9)@
    107 
    108         smlal    r1,r7,r9,r1
    109         mov      r1,r6,lsl #1
    110         smlal    r12,r7,r11,r1
    111         and      r6,r10,r11,asr #14
    112         smlal    r12,r8,r6,r1
    113         ldr      r10,cos_11pi_18
    114         add      r12,r11,r6
    115         smlal    r1,r2,r12,r1
    116         ldr      r9,cos_8pi_9
    117         str      r2,[r0,#8]
    118         mov      r1,r5,lsl #1
    119 
    120 @    vec[8]  = fxp_mac32_Q32( vec[8], tmp3<<1, cos_8pi_9)@
    121 
    122         smull    r2,r6,r9,r1
    123         str      r7,[r0,#0x20]
    124         mov      r2,r4,lsl #1
    125         ldr      r7,cos_13pi_18
    126         smlal    r12,r6,r10,r2
    127 
    128         mov      r3,r3,lsl #1
    129 
    130 @    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@
    131 
    132         smlal    r12,r6,r7,r3
    133         add      r4,r5,r4
    134         mov      r12,lr,lsl #1
    135         sub      lr,r4,lr
    136         ldr      r7,cos_17pi_18
    137         str      r8,[r0, #0x10]
    138         ldr      r4,cos_pi_6
    139 
    140         mov      lr,lr,lsl #1
    141 
    142 @    vec[1]  = fxp_mac32_Q32( vec[1], tmp8<<1, cos_17pi_18)@
    143 
    144         smlal    r8,r6,r7,r12
    145 
    146 @    vec[3]  = fxp_mul32_Q32((tmp5 + tmp6  - tmp8)<<1, cos_pi_6)@
    147 
    148         smull    r5,lr,r4,lr
    149         str      r6,[r0, #4]
    150         str      lr,[r0, #0xc]
    151 
    152 
    153 @    vec[5]  = fxp_mul32_Q32(tmp5<<1, cos_17pi_18)@
    154         smull    r5,lr,r7,r1
    155         rsb      r6,r9,#0
    156 @    vec[5]  = fxp_mac32_Q32( vec[5], tmp6<<1,  cos_7pi_18)@
    157         smlal    r5,lr,r6,r2
    158 @    vec[5]  = fxp_mac32_Q32( vec[5], tmp7<<1,    cos_pi_6)@
    159         smlal    r5,lr,r4,r3
    160 @    vec[5]  = fxp_mac32_Q32( vec[5], tmp8<<1, cos_13pi_18)@
    161         smlal    r5,lr,r10,r12
    162         str      lr,[r0, #0x14]
    163         rsb      lr,r10,#0
    164 
    165 @    vec[7]  = fxp_mul32_Q32(tmp5<<1, cos_5pi_18)@
    166         smull    r5,r1,lr,r1
    167 @    vec[7]  = fxp_mac32_Q32( vec[7], tmp6<<1, cos_17pi_18)@
    168         smlal    r2,r1,r7,r2
    169 @    vec[7]  = fxp_mac32_Q32( vec[7], tmp7<<1,    cos_pi_6)@
    170         smlal    r3,r1,r4,r3
    171 @    vec[7]  = fxp_mac32_Q32( vec[7], tmp8<<1, cos_11pi_18)@
    172         smlal    r12,r1,r9,r12
    173         str      r1,[r0, #0x1c]
    174         ldmfd    sp!,{r4-r11,pc}
    175 cos_2pi_9:
    176         .word      0x620dbe80
    177 cos_4pi_9:
    178         .word      0x163a1a80
    179 cos_pi_9:
    180         .word      0x7847d900
    181 cos_5pi_9:
    182         .word      0x87b82700
    183 cos_8pi_9:
    184         .word      0xd438af00
    185 cos_11pi_18:
    186         .word      0xadb92280
    187 cos_13pi_18:
    188         .word      0x91261480
    189 cos_17pi_18:
    190         .word      0x81f1d200
    191 cos_pi_6:
    192         .word      0x6ed9eb80
    193 
    194