1bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//
2bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//
3bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// File Name:  omxVCM4P10_FilterDeblockingLuma_HorEdge_I_s.s
4bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// OpenMAX DL: v1.0.2
5bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Revision:   12290
6bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Date:       Wednesday, April 9, 2008
7bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//
8bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
9bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//
10bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//
11bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//
12bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
13bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        INCLUDE omxtypes_s.h
14bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        INCLUDE armCOMM_s.h
15bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
16bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_VARIANTS CortexA8
17bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
18bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        IMPORT  armVCM4P10_DeblockingLumabSLT4_unsafe
19bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        IMPORT  armVCM4P10_DeblockingLumabSGE4_unsafe
20bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
21bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        IF CortexA8
22bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
23bebc99d6fa433c04139294a5057f8439d772dbd9James DongLOOP_COUNT  EQU 0x55000000
24bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
25bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
26bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Function arguments
27bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
28bebc99d6fa433c04139294a5057f8439d772dbd9James DongpSrcDst     RN 0
29bebc99d6fa433c04139294a5057f8439d772dbd9James DongsrcdstStep  RN 1
30bebc99d6fa433c04139294a5057f8439d772dbd9James DongpAlpha      RN 2
31bebc99d6fa433c04139294a5057f8439d772dbd9James DongpBeta       RN 3
32bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
33bebc99d6fa433c04139294a5057f8439d772dbd9James DongpThresholds RN 5
34bebc99d6fa433c04139294a5057f8439d772dbd9James DongpBS         RN 4
35bebc99d6fa433c04139294a5057f8439d772dbd9James DongbS10        RN 12
36bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
37bebc99d6fa433c04139294a5057f8439d772dbd9James DongpAlpha_0    RN 2
38bebc99d6fa433c04139294a5057f8439d772dbd9James DongpBeta_0     RN 3
39bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
40bebc99d6fa433c04139294a5057f8439d772dbd9James DongpAlpha_1    RN 7
41bebc99d6fa433c04139294a5057f8439d772dbd9James DongpBeta_1     RN 8
42bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
43bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
44bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
45bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Loop
46bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
47bebc99d6fa433c04139294a5057f8439d772dbd9James DongXY          RN 9
48bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
49bebc99d6fa433c04139294a5057f8439d772dbd9James DongpTmp        RN 6
50bebc99d6fa433c04139294a5057f8439d772dbd9James Dongstep        RN 10
51bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
52bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Pixels
53bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_0        DN D4.U8
54bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_1        DN D5.U8
55bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_2        DN D6.U8
56bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_3        DN D7.U8
57bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_0        DN D8.U8
58bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_1        DN D9.U8
59bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_2        DN D10.U8
60bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_3        DN D11.U8
61bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
62bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
63bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Filtering Decision
64bebc99d6fa433c04139294a5057f8439d772dbd9James DongdAlpha      DN D0.U8
65bebc99d6fa433c04139294a5057f8439d772dbd9James DongdBeta       DN D2.U8
66bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
67bebc99d6fa433c04139294a5057f8439d772dbd9James DongdFilt       DN D16.U8
68bebc99d6fa433c04139294a5057f8439d772dbd9James DongdAqflg      DN D12.U8
69bebc99d6fa433c04139294a5057f8439d772dbd9James DongdApflg      DN D17.U8
70bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
71bebc99d6fa433c04139294a5057f8439d772dbd9James DongdAp0q0      DN D13.U8
72bebc99d6fa433c04139294a5057f8439d772dbd9James DongdAp1p0      DN D12.U8
73bebc99d6fa433c04139294a5057f8439d772dbd9James DongdAq1q0      DN D18.U8
74bebc99d6fa433c04139294a5057f8439d772dbd9James DongdAp2p0      DN D19.U8
75bebc99d6fa433c04139294a5057f8439d772dbd9James DongdAq2q0      DN D17.U8
76bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
77bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// bSLT4
78bebc99d6fa433c04139294a5057f8439d772dbd9James DongdTC0        DN D18.U8
79bebc99d6fa433c04139294a5057f8439d772dbd9James DongdTC1        DN D19.U8
80bebc99d6fa433c04139294a5057f8439d772dbd9James DongdTC01       DN D18.U8
81bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
82bebc99d6fa433c04139294a5057f8439d772dbd9James DongdTCs        DN D31.S8
83bebc99d6fa433c04139294a5057f8439d772dbd9James DongdTC         DN D31.U8
84bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
85bebc99d6fa433c04139294a5057f8439d772dbd9James DongdMask_0     DN D14.U8
86bebc99d6fa433c04139294a5057f8439d772dbd9James DongdMask_1     DN D15.U8
87bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
88bebc99d6fa433c04139294a5057f8439d772dbd9James DongMask_0      RN 11
89bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
90bebc99d6fa433c04139294a5057f8439d772dbd9James DongdTemp       DN D19.U8
91bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
92bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Computing P0,Q0
93bebc99d6fa433c04139294a5057f8439d772dbd9James DongqDq0p0      QN Q10.S16
94bebc99d6fa433c04139294a5057f8439d772dbd9James DongqDp1q1      QN Q11.S16
95bebc99d6fa433c04139294a5057f8439d772dbd9James DongqDelta      QN Q10.S16  ; reuse qDq0p0
96bebc99d6fa433c04139294a5057f8439d772dbd9James DongdDelta      DN D20.S8
97bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
98bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
99bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Computing P1,Q1
100bebc99d6fa433c04139294a5057f8439d772dbd9James DongdRp0q0      DN D24.U8
101bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
102bebc99d6fa433c04139294a5057f8439d772dbd9James DongdMaxP       DN D23.U8
103bebc99d6fa433c04139294a5057f8439d772dbd9James DongdMinP       DN D22.U8
104bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
105bebc99d6fa433c04139294a5057f8439d772dbd9James DongdMaxQ       DN D19.U8
106bebc99d6fa433c04139294a5057f8439d772dbd9James DongdMinQ       DN D21.U8
107bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
108bebc99d6fa433c04139294a5057f8439d772dbd9James DongdDeltaP     DN D26.U8
109bebc99d6fa433c04139294a5057f8439d772dbd9James DongdDeltaQ     DN D27.U8
110bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
111bebc99d6fa433c04139294a5057f8439d772dbd9James DongqP_0n       QN Q14.S16
112bebc99d6fa433c04139294a5057f8439d772dbd9James DongqQ_0n       QN Q12.S16
113bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
114bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_0n       DN D24.U8
115bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_1n       DN D25.U8
116bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_0n       DN D29.U8
117bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_1n       DN D30.U8
118bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
119bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// bSGE4
120bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
121bebc99d6fa433c04139294a5057f8439d772dbd9James DongqSp0q0      QN Q10.U16
122bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
123bebc99d6fa433c04139294a5057f8439d772dbd9James DongqSp2q1      QN Q11.U16
124bebc99d6fa433c04139294a5057f8439d772dbd9James DongqSp0q0p1    QN Q12.U16
125bebc99d6fa433c04139294a5057f8439d772dbd9James DongqSp3p2      QN Q13.U16
126bebc99d6fa433c04139294a5057f8439d772dbd9James DongdHSp0q1     DN D28.U8
127bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
128bebc99d6fa433c04139294a5057f8439d772dbd9James DongqSq2p1      QN Q11.U16
129bebc99d6fa433c04139294a5057f8439d772dbd9James DongqSp0q0q1    QN Q12.U16
130bebc99d6fa433c04139294a5057f8439d772dbd9James DongqSq3q2      QN Q13.U16  ;!!
131bebc99d6fa433c04139294a5057f8439d772dbd9James DongdHSq0p1     DN D28.U8   ;!!
132bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
133bebc99d6fa433c04139294a5057f8439d772dbd9James DongqTemp1      QN Q11.U16  ;!!;qSp2q1
134bebc99d6fa433c04139294a5057f8439d772dbd9James DongqTemp2      QN Q12.U16  ;!!;qSp0q0p1
135bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
136bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_0t       DN D28.U8   ;!!;dHSp0q1
137bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_0t       DN D22.U8   ;!!;Temp1
138bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
139bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_0n       DN D29.U8
140bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_1n       DN D30.U8
141bebc99d6fa433c04139294a5057f8439d772dbd9James DongdP_2n       DN D31.U8
142bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
143bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_0n       DN D24.U8   ;!!;Temp2
144bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_1n       DN D25.U8   ;!!;Temp2
145bebc99d6fa433c04139294a5057f8439d772dbd9James DongdQ_2n       DN D28.U8   ;!!;dQ_0t
146bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
147bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
148bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Function header
149bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_START omxVCM4P10_FilterDeblockingLuma_HorEdge_I, r11, d15
150bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
151bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;//Arguments on the stack
152bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ARG   ppThresholds, 4
153bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ARG   ppBS, 4
154bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
155bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// d0-dAlpha_0
156bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// d2-dBeta_0
157bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
158bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pAlpha_1, pAlpha_0, #1
159bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pBeta_1, pBeta_0, #1
160bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
161bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        {dAlpha[]}, [pAlpha_0]
162bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB         pSrcDst, pSrcDst, srcdstStep, LSL #2
163bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        {dBeta[]}, [pBeta_0]
164bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
165bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR       pBS, ppBS
166bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR       pThresholds, ppThresholds
167bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
168bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MOV         Mask_0,#0
169bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
170bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;dMask_0-14
171bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;dMask_1-15
172bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
173bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VMOV        dMask_0, #0
174bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VMOV        dMask_1, #1
175bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
176bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         step, srcdstStep, srcdstStep
177bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
178bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDR         XY,=LOOP_COUNT
179bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
180bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// p0-p3 - d4-d7
181bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// q0-q3 - d8-d11
182bebc99d6fa433c04139294a5057f8439d772dbd9James DongLoopY
183bebc99d6fa433c04139294a5057f8439d772dbd9James DongLoopX
184bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDRH        bS10, [pBS], #2
185bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pTmp, pSrcDst, srcdstStep
186bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        CMP         bS10, #0
187bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BEQ         NoFilterBS0
188bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
189bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        dP_3, [pSrcDst], step
190bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        dP_2, [pTmp], step
191bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        dP_1, [pSrcDst], step
192bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        dP_0, [pTmp], step
193bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        dQ_0, [pSrcDst], step
194bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VABD        dAp1p0, dP_0, dP_1
195bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        dQ_1, [pTmp]
196bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VABD        dAp0q0, dQ_0, dP_0
197bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        dQ_2, [pSrcDst], srcdstStep
198bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
199bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VABD        dAq1q0, dQ_1, dQ_0
200bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VABD        dAp2p0, dP_2, dP_0
201bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VCGT        dFilt, dAlpha, dAp0q0
202bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
203bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        TST         bS10, #0xff
204bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VMAX        dAp1p0, dAq1q0, dAp1p0
205bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VABD        dAq2q0, dQ_2, dQ_0
206bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
207bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VMOVEQ.U32  dFilt[0], Mask_0
208bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        TST         bS10, #0xff00
209bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
210bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VCGT        dAp2p0, dBeta, dAp2p0
211bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VCGT        dAp1p0, dBeta, dAp1p0
212bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
213bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VMOVEQ.U32  dFilt[1], Mask_0
214bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
215bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VCGT        dAq2q0, dBeta, dAq2q0
216bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        dQ_3, [pSrcDst]
217bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VAND        dFilt, dFilt, dAp1p0
218bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        TST         bS10, #4
219bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
220bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VAND        dAqflg, dFilt, dAq2q0
221bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VAND        dApflg, dFilt, dAp2p0
222bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
223bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BNE         bSGE4
224bebc99d6fa433c04139294a5057f8439d772dbd9James DongbSLT4
225bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// bS < 4 Filtering
226bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB         pSrcDst, pSrcDst, srcdstStep, LSL #2
227bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB         pSrcDst, pSrcDst, srcdstStep
228bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
229bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BL          armVCM4P10_DeblockingLumabSLT4_unsafe
230bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
231bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Result Storage
232bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dP_1n, [pSrcDst], srcdstStep
233bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dP_0n, [pSrcDst], srcdstStep
234bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB         pTmp, pSrcDst, srcdstStep, LSL #2
235bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dQ_0n, [pSrcDst], srcdstStep
236bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADDS        XY, XY, XY
237bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dQ_1n, [pSrcDst]
238bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pSrcDst, pTmp, #8
239bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
240bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BCC         LoopX
241bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        B           ExitLoopY
242bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
243bebc99d6fa433c04139294a5057f8439d772dbd9James DongNoFilterBS0
244bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pSrcDst, pSrcDst, #8
245bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADDS        XY, XY, XY
246bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pThresholds, pThresholds, #2
247bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BCC         LoopX
248bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        B           ExitLoopY
249bebc99d6fa433c04139294a5057f8439d772dbd9James DongbSGE4
250bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// bS >= 4 Filtering
251bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB         pSrcDst, pSrcDst, srcdstStep, LSL #2
252bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB         pSrcDst, pSrcDst, srcdstStep, LSL #1
253bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BL          armVCM4P10_DeblockingLumabSGE4_unsafe
254bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
255bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Result Storage
256bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dP_2n, [pSrcDst], srcdstStep
257bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dP_1n, [pSrcDst], srcdstStep
258bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dP_0n, [pSrcDst], srcdstStep
259bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB         pTmp, pSrcDst, srcdstStep, LSL #2
260bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dQ_0n, [pSrcDst], srcdstStep
261bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADDS        XY,XY,XY
262bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dQ_1n, [pSrcDst], srcdstStep
263bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pThresholds, pThresholds, #2
264bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VST1        dQ_2n, [pSrcDst]
265bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
266bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pSrcDst, pTmp, #8
267bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BCC         LoopX
268bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
269bebc99d6fa433c04139294a5057f8439d772dbd9James DongExitLoopY
270bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
271bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB         pSrcDst, pSrcDst, #16
272bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        {dAlpha[]}, [pAlpha_1]
273bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD         pSrcDst, pSrcDst, srcdstStep, LSL #2
274bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        VLD1        {dBeta[]}, [pBeta_1]
275bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BNE         LoopY
276bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
277bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MOV         r0, #OMX_Sts_NoErr
278bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
279bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_END
280bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
281bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ENDIF
282bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
283bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
284bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
285bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
286bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        END
287bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
288bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
289