Home | History | Annotate | Download | only in src
      1 ;//
      2 ;//
      3 ;// File Name:  armVCM4P10_DeblockingChroma_unsafe_s.s
      4 ;// OpenMAX DL: v1.0.2
      5 ;// Revision:   12290
      6 ;// Date:       Wednesday, April 9, 2008
      7 ;//
      8 ;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
      9 ;//
     10 ;//
     11 ;//
     12 
     13         INCLUDE omxtypes_s.h
     14         INCLUDE armCOMM_s.h
     15 
     16         M_VARIANTS CortexA8
     17 
     18 
     19     IF  CortexA8
     20 
     21 pAlpha      RN 2
     22 pBeta       RN 3
     23 
     24 pThresholds RN 5
     25 pBS         RN 4
     26 bS3210      RN 6
     27 
     28 ;// Pixels
     29 dP_0        DN D4.U8
     30 dP_1        DN D5.U8
     31 dP_2        DN D6.U8
     32 dP_3        DN D7.U8
     33 dQ_0        DN D8.U8
     34 dQ_1        DN D9.U8
     35 dQ_2        DN D10.U8
     36 dQ_3        DN D11.U8
     37 
     38 
     39 ;// Filtering Decision
     40 dAlpha      DN D0.U8
     41 dBeta       DN D2.U8
     42 
     43 dFilt       DN D16.U8
     44 dAqflg      DN D12.U8
     45 dApflg      DN D17.U8
     46 
     47 dAp0q0      DN D13.U8
     48 
     49 ;// bSLT4
     50 dTC3210     DN D18.U8
     51 dTCs        DN D31.S8
     52 dTC         DN D31.U8
     53 
     54 dMask_0     DN D14.U8
     55 dMask_1     DN D15.U8
     56 dMask_4     DN D26.U16
     57 
     58 dTemp       DN D28.U8
     59 dDummy      DN D17.U8
     60 
     61 ;// Computing P0,Q0
     62 qDq0p0      QN Q10.S16
     63 qDp1q1      QN Q11.S16
     64 qDelta      QN Q10.S16  ; reuse qDq0p0
     65 dDelta      DN D20.S8
     66 
     67 
     68 ;// Computing P1,Q1
     69 qP_0n       QN Q14.S16
     70 qQ_0n       QN Q12.S16
     71 
     72 dQ_0n       DN D24.U8
     73 dP_0n       DN D29.U8
     74 
     75 ;// bSGE4
     76 
     77 dHSp0q1     DN D13.U8
     78 dHSq0p1     DN D31.U8
     79 
     80 dBS3210     DN D28.U16
     81 
     82 dP_0t       DN D13.U8   ;dHSp0q1
     83 dQ_0t       DN D31.U8   ;Temp1
     84 
     85 dP_0n       DN D29.U8
     86 dQ_0n       DN D24.U8   ;Temp2
     87 
     88 ;// Register usage for - armVCM4P10_DeblockingLumabSLT4_unsafe
     89 ;//
     90 ;// Inputs - Pixels             - p0-p3: D4-D7, q0-q3: D8-D11
     91 ;//        - Filter masks       - filt: D16, aqflg: D12, apflg: D17
     92 ;//        - Additional Params  - pThresholds: r5
     93 ;//
     94 ;// Outputs - Pixels            - P0-P1: D29-D30, Q0-Q1: D24-D25
     95 ;//         - Additional Params - pThresholds: r5
     96 
     97 ;// Registers Corrupted         - D18-D31
     98 
     99 
    100         M_START armVCM4P10_DeblockingChromabSLT4_unsafe
    101 
    102 
    103         ;dTC3210 -18
    104         ;dTemp-28
    105 
    106         VLD1        d18.U32[0], [pThresholds]! ;here
    107 
    108         ;// delta = (((q0-p0)<<2) + (p1-q1) + 4) >> 3;
    109         ;// dDelta = (qDp1q1 >> 2 + qDq0p0 + 1)>> 1
    110 
    111         ;// qDp1q1-11
    112         ;// qDq0p0-10
    113         VSUBL       qDp1q1, dP_1, dQ_1
    114         VMOV        dTemp, dTC3210
    115         VSUBL       qDq0p0, dQ_0, dP_0
    116         VSHR        qDp1q1, qDp1q1, #2
    117         VZIP.8      dTC3210, dTemp
    118 
    119         ;// qDelta-qDq0p0-10
    120 
    121         ;// dTC = dTC01 + (dAplg & 1) + (dAqflg & 1)
    122 
    123         ;// dTC3210-18
    124         ;// dTemp-28
    125         ;// dTC-31
    126         VBIF        dTC3210, dMask_0, dFilt
    127         VRHADD      qDelta, qDp1q1, qDq0p0
    128         VADD        dTC, dTC3210, dMask_1
    129         VQMOVN      dDelta, qDelta
    130         ;// dDelta-d20
    131 
    132         ;// dDelta = (OMX_U8)armClip(0, 255, q0 - delta);
    133         VLD1        {dAlpha[]}, [pAlpha]
    134         VMIN        dDelta, dDelta, dTCs
    135         VNEG        dTCs, dTCs
    136         VLD1        {dBeta[]}, [pBeta]
    137         ;1
    138         VMAX        dDelta, dDelta, dTCs
    139 
    140         ;// dP_0n - 29
    141         ;// dQ_0n - 24
    142 
    143         ;// pQ0[-1*Step] = (OMX_U8)armClip(0, 255, dP_0 - delta);
    144         ;// pQ0[0*Step] = (OMX_U8)armClip(0, 255, dQ_0 - delta);
    145 
    146         ;// dP_0n = (OMX_U8)armClip(0, 255, dP_0 - dDelta);
    147         ;// dQ_0n = (OMX_U8)armClip(0, 255, dP_0 - dDelta);
    148 
    149         ;// qP_0n - 14
    150         ;// qQ_0n - 12
    151 
    152         VMOVL       qP_0n, dP_0
    153         VMOVL       qQ_0n, dQ_0
    154 
    155         ;1
    156         VADDW       qP_0n, qP_0n, dDelta
    157         VSUBW       qQ_0n, qQ_0n, dDelta
    158 
    159         VQMOVUN     dP_0n, qP_0n
    160         VQMOVUN     dQ_0n, qQ_0n
    161 
    162         M_END
    163 
    164 ;// Register usage for - armVCM4P10_DeblockingLumabSGE4_unsafe()
    165 ;//
    166 ;// Inputs - Pixels             - p0-p3: D4-D7, q0-q3: D8-D11
    167 ;//        - Filter masks       - filt: D16, aqflg: D12, apflg: D17
    168 ;//        - Additional Params  - alpha: D0, dMask_1: D15
    169 ;//
    170 ;// Outputs - Pixels            - P0-P2: D29-D31, Q0-Q2: D24,D25,D28
    171 
    172 ;// Registers Corrupted         - D18-D31
    173 
    174         M_START armVCM4P10_DeblockingChromabSGE4_unsafe
    175 
    176         ;dHSq0p1 - 31
    177         ;dHSp0q1 - 13
    178         VHADD       dHSp0q1, dP_0, dQ_1
    179         VHADD       dHSq0p1, dQ_0, dP_1
    180 
    181         ;// Prepare the bS mask
    182 
    183         ;// dHSp0q1-13
    184         ;// dP_0t-dHSp0q1-13
    185         ;// dHSq0p1-31
    186         ;// dQ_0t-Temp1-31
    187         VLD1        {dAlpha[]}, [pAlpha]
    188         ADD         pThresholds, pThresholds, #4
    189         VLD1        {dBeta[]}, [pBeta]
    190 
    191         VRHADD      dP_0t, dHSp0q1, dP_1
    192         VRHADD      dQ_0t, dHSq0p1, dQ_1
    193 
    194         M_END
    195 
    196         ENDIF
    197 
    198         END
    199