1bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//
2bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//
3bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// File Name:  omxVCM4P10_FilterDeblockingLuma_HorEdge_I_s.s
4bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// OpenMAX DL: v1.0.2
5bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Revision:   9641
6bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Date:       Thursday, February 7, 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 ARM1136JS
17bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
18bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        IMPORT  armVCM4P10_DeblockingLumabSLT4_unsafe
19bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        IMPORT  armVCM4P10_DeblockingLumabSGE4_unsafe
20bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
21bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
22bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
23bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    IF ARM1136JS
24bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
25bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
26bebc99d6fa433c04139294a5057f8439d772dbd9James DongMASK_0      EQU 0x00000000
27bebc99d6fa433c04139294a5057f8439d772dbd9James DongMASK_1      EQU 0x01010101
28bebc99d6fa433c04139294a5057f8439d772dbd9James DongMASK_2      EQU 0xff00ff00
29bebc99d6fa433c04139294a5057f8439d772dbd9James DongLOOP_COUNT  EQU 0x11110000
30bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
31bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Declare input registers
32bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
33bebc99d6fa433c04139294a5057f8439d772dbd9James DongpSrcDst     RN 0
34bebc99d6fa433c04139294a5057f8439d772dbd9James DongsrcdstStep  RN 1
35bebc99d6fa433c04139294a5057f8439d772dbd9James DongpAlphaArg   RN 2
36bebc99d6fa433c04139294a5057f8439d772dbd9James DongpBetaArg    RN 3
37bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
38bebc99d6fa433c04139294a5057f8439d772dbd9James DongpThresholds RN 14
39bebc99d6fa433c04139294a5057f8439d772dbd9James DongpBS         RN 9
40bebc99d6fa433c04139294a5057f8439d772dbd9James DongpQ0         RN 0
41bebc99d6fa433c04139294a5057f8439d772dbd9James DongbS          RN 2
42bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
43bebc99d6fa433c04139294a5057f8439d772dbd9James Dongalpha       RN 6
44bebc99d6fa433c04139294a5057f8439d772dbd9James Dongalpha0      RN 6
45bebc99d6fa433c04139294a5057f8439d772dbd9James Dongalpha1      RN 8
46bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
47bebc99d6fa433c04139294a5057f8439d772dbd9James Dongbeta        RN 7
48bebc99d6fa433c04139294a5057f8439d772dbd9James Dongbeta0       RN 7
49bebc99d6fa433c04139294a5057f8439d772dbd9James Dongbeta1       RN 9
50bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
51bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Declare Local/Temporary variables
52bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
53bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Pixels
54bebc99d6fa433c04139294a5057f8439d772dbd9James Dongp_0         RN 3
55bebc99d6fa433c04139294a5057f8439d772dbd9James Dongp_1         RN 5
56bebc99d6fa433c04139294a5057f8439d772dbd9James Dongp_2         RN 4
57bebc99d6fa433c04139294a5057f8439d772dbd9James Dongp_3         RN 2
58bebc99d6fa433c04139294a5057f8439d772dbd9James Dongq_0         RN 8
59bebc99d6fa433c04139294a5057f8439d772dbd9James Dongq_1         RN 9
60bebc99d6fa433c04139294a5057f8439d772dbd9James Dongq_2         RN 10
61bebc99d6fa433c04139294a5057f8439d772dbd9James Dongq_3         RN 12
62bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
63bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Filtering
64bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
65bebc99d6fa433c04139294a5057f8439d772dbd9James Dongdp0q0       RN 12
66bebc99d6fa433c04139294a5057f8439d772dbd9James Dongdp1p0       RN 12
67bebc99d6fa433c04139294a5057f8439d772dbd9James Dongdq1q0       RN 12
68bebc99d6fa433c04139294a5057f8439d772dbd9James Dongdp2p0       RN 12
69bebc99d6fa433c04139294a5057f8439d772dbd9James Dongdq2q0       RN 12
70bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
71bebc99d6fa433c04139294a5057f8439d772dbd9James Dongap0q0       RN 1
72bebc99d6fa433c04139294a5057f8439d772dbd9James Dongfilt        RN 2
73bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
74bebc99d6fa433c04139294a5057f8439d772dbd9James Dongm00         RN 14
75bebc99d6fa433c04139294a5057f8439d772dbd9James Dongm01         RN 11
76bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
77bebc99d6fa433c04139294a5057f8439d772dbd9James Dongapflg       RN 0
78bebc99d6fa433c04139294a5057f8439d772dbd9James Dongaqflg       RN 6
79bebc99d6fa433c04139294a5057f8439d772dbd9James Dongapqflg      RN 0
80bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
81bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
82bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//Declarations for bSLT4 kernel
83bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
84bebc99d6fa433c04139294a5057f8439d772dbd9James DongtC0         RN 7
85bebc99d6fa433c04139294a5057f8439d772dbd9James DongptC0        RN 1
86bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
87bebc99d6fa433c04139294a5057f8439d772dbd9James DongpQ0a        RN 0
88bebc99d6fa433c04139294a5057f8439d772dbd9James DongStepa       RN 1
89bebc99d6fa433c04139294a5057f8439d772dbd9James Dongmaska       RN 14
90bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
91bebc99d6fa433c04139294a5057f8439d772dbd9James DongP0a         RN 1
92bebc99d6fa433c04139294a5057f8439d772dbd9James DongP1a         RN 8
93bebc99d6fa433c04139294a5057f8439d772dbd9James DongQ0a         RN 7
94bebc99d6fa433c04139294a5057f8439d772dbd9James DongQ1a         RN 11
95bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
96bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//Declarations for bSGE4 kernel
97bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
98bebc99d6fa433c04139294a5057f8439d772dbd9James DongpQ0b        RN 0
99bebc99d6fa433c04139294a5057f8439d772dbd9James DongStepb       RN 1
100bebc99d6fa433c04139294a5057f8439d772dbd9James Dongmaskb       RN 14
101bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
102bebc99d6fa433c04139294a5057f8439d772dbd9James DongP0b         RN 6
103bebc99d6fa433c04139294a5057f8439d772dbd9James DongP1b         RN 7
104bebc99d6fa433c04139294a5057f8439d772dbd9James DongP2b         RN 1
105bebc99d6fa433c04139294a5057f8439d772dbd9James DongP3b         RN 3
106bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
107bebc99d6fa433c04139294a5057f8439d772dbd9James DongQ0b         RN 9
108bebc99d6fa433c04139294a5057f8439d772dbd9James DongQ1b         RN 0
109bebc99d6fa433c04139294a5057f8439d772dbd9James DongQ2b         RN 2
110bebc99d6fa433c04139294a5057f8439d772dbd9James DongQ3b         RN 3
111bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
112bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;// Miscellanous
113bebc99d6fa433c04139294a5057f8439d772dbd9James DongXY          RN 8
114bebc99d6fa433c04139294a5057f8439d772dbd9James Dongt0          RN 3
115bebc99d6fa433c04139294a5057f8439d772dbd9James Dongt1          RN 12
116bebc99d6fa433c04139294a5057f8439d772dbd9James Dongt2          RN 14
117bebc99d6fa433c04139294a5057f8439d772dbd9James Dongt7          RN 7
118bebc99d6fa433c04139294a5057f8439d772dbd9James Dongt4          RN 4
119bebc99d6fa433c04139294a5057f8439d772dbd9James Dongt5          RN 1
120bebc99d6fa433c04139294a5057f8439d772dbd9James Dongt8          RN 6
121bebc99d6fa433c04139294a5057f8439d772dbd9James Donga           RN 0
122bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
123bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
124bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
125bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
126bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Allocate stack memory
127bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC4 ppThresholds,4
128bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC4 pQ_3,4
129bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC4 pP_3,4
130bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC8 pAlphaBeta0,8
131bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC8 pAlphaBeta1,8
132bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC8 pXYBS,4
133bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC4 ppBS,4
134bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC8 ppQ0Step,4
135bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ALLOC4 pStep,4
136bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
137bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Function header
138bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_START omxVCM4P10_FilterDeblockingLuma_HorEdge_I, r11
139bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
140bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;//Input arguments on the stack
141bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ARG   ppThresholdsArg, 4
142bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_ARG   ppBSArg, 4
143bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
144bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDR     t4,=MASK_1
145bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
146bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDRB    alpha0, [pAlphaArg]
147bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDRB    beta0,  [pBetaArg]
148bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDRB    alpha1, [pAlphaArg,#1]
149bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDRB    beta1,  [pBetaArg,#1]
150bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
151bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MUL     alpha0, alpha0, t4
152bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MUL     beta0, beta0, t4
153bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MUL     alpha1, alpha1, t4
154bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MUL     beta1, beta1, t4
155bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
156bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STRD  alpha0, beta0, pAlphaBeta0
157bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STRD  alpha1, beta1, pAlphaBeta1
158bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
159bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDR     XY,=LOOP_COUNT
160bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   pBS, ppBSArg
161bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   pThresholds, ppThresholdsArg
162bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   srcdstStep, pStep
163bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STRD  XY, pBS, pXYBS
164bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB     pQ0, pQ0, srcdstStep, LSL #2
165bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   pThresholds, ppThresholds
166bebc99d6fa433c04139294a5057f8439d772dbd9James DongLoopY
167bebc99d6fa433c04139294a5057f8439d772dbd9James DongLoopX
168bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//---------------Load Pixels-------------------
169bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   pQ0, ppQ0Step
170bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   p_3, [pQ0], srcdstStep
171bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   p_2, [pQ0], srcdstStep
172bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   p_3, pP_3
173bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDRB    bS, [pBS], #1
174bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   pBS, ppBS
175bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   p_1, [pQ0], srcdstStep
176bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        CMP     bS, #0
177bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   p_0, [pQ0], srcdstStep
178bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   q_0, [pQ0], srcdstStep
179bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   q_1, [pQ0], srcdstStep
180bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   q_2, [pQ0], srcdstStep
181bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   q_3, [pQ0], srcdstStep
182bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BEQ     NoFilterBS0
183bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        CMP     bS, #4
184bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   q_3, pQ_3
185bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
186bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//--------------Filtering Decision -------------------
187bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDR     m01, =MASK_1                ;//  01010101 mask
188bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MOV     m00, #MASK_0                ;//  00000000 mask
189bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
190bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Check |p0-q0|<Alpha
191bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   dp0q0, p_0, q_0
192bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   a, q_0, p_0
193bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     ap0q0, a, dp0q0
194bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   a, ap0q0, alpha
195bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     filt, m00, m01
196bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
197bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Check |p1-p0|<Beta
198bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   dp1p0, p_1, p_0
199bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   a, p_0, p_1
200bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     a, a, dp1p0
201bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   a, a, beta
202bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     filt, m00, filt
203bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
204bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Check |q1-q0|<Beta
205bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   dq1q0, q_1, q_0
206bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   a, q_0, q_1
207bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     a, a, dq1q0
208bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   a, a, beta
209bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     filt, m00, filt
210bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
211bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Check ap<Beta
212bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   dp2p0, p_2, p_0
213bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   a, p_0, p_2
214bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     a, a, dp2p0
215bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   a, a, beta
216bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     apflg, m00, filt            ;// apflg = filt && (ap<beta)
217bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
218bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Check aq<Beta
219bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   dq2q0, q_2, q_0
220bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   t2, q_0, q_2
221bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     t2, t2, dq2q0
222bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        USUB8   t2, t2, beta
223bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MOV     t7,#0
224bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
225bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BLT     bSLT4
226bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//-------------------Filter--------------------
227bebc99d6fa433c04139294a5057f8439d772dbd9James DongbSGE4
228bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;//---------bSGE4 Execution---------------
229bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     t1, t7, filt            ;// aqflg = filt && (aq<beta)
230bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        CMP     filt, #0
231bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ORR     apqflg, apflg, t1, LSL #1
232bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  pQ0, srcdstStep, ppQ0Step, EQ
233bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BEQ     NoFilterFilt0
234bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
235bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BL      armVCM4P10_DeblockingLumabSGE4_unsafe
236bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
237bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;//---------Store result---------------
238bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   pThresholds, ppThresholds
239bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MOV     p_2, Q1b
240bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MOV     p_1, P2b
241bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  pQ0b, Stepb, ppQ0Step
242bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD     pThresholds, #1
243bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   pThresholds, ppThresholds
244bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   p_1, [pQ0b, Stepb]!
245bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   P1b, [pQ0b, Stepb]!
246bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   P0b, [pQ0b, Stepb]!
247bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   Q0b, [pQ0b, Stepb]!
248bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        STR     p_2, [pQ0b, Stepb]
249bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        STR     Q2b, [pQ0b, Stepb, LSL #1]
250bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
251bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
252bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  XY, pBS, pXYBS
253bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB     pQ0, pQ0b, Stepb, LSL #2
254bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD     pQ0, pQ0, #4
255bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  alpha, beta, pAlphaBeta0
256bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADDS    XY, XY, XY
257bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   XY, pXYBS
258bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BCC     LoopX
259bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        B       ExitLoopY
260bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
261bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//---------- Exit of LoopX --------------
262bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//---- for the case of no filtering -----
263bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
264bebc99d6fa433c04139294a5057f8439d772dbd9James DongNoFilterBS0
265bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB     pQ0, pQ0, srcdstStep, LSL #3
266bebc99d6fa433c04139294a5057f8439d772dbd9James DongNoFilterFilt0
267bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD     pQ0, pQ0, #4
268bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Load counter for LoopX
269bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  XY, pBS, pXYBS
270bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   pThresholds, ppThresholds
271bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  alpha, beta, pAlphaBeta0
272bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
273bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Align the pointers
274bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADDS    XY, XY, XY
275bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD     pThresholds, pThresholds, #1
276bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   pThresholds, ppThresholds
277bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   XY, pXYBS
278bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BCC     LoopX
279bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        B       ExitLoopY
280bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
281bebc99d6fa433c04139294a5057f8439d772dbd9James DongbSLT4
282bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;//---------bSLT4 Execution---------------
283bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SEL     aqflg, t7, filt            ;// aqflg = filt && (aq<beta)
284bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDR   ptC0, ppThresholds
285bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        CMP     filt, #0
286bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  pQ0, srcdstStep, ppQ0Step, EQ
287bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BEQ     NoFilterFilt0
288bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
289bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        LDRB    tC0, [ptC0], #1
290bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   ptC0, ppThresholds
291bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
292bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BL      armVCM4P10_DeblockingLumabSLT4_unsafe
293bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
294bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;//---------Store result---------------
295bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MOV     p_2, P0a
296bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  pQ0a, Stepa, ppQ0Step
297bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   P1a, [pQ0a, Stepa, LSL #1]!
298bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   p_2, [pQ0a, Stepa]!
299bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   Q0a, [pQ0a, Stepa]!
300bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        STR     Q1a, [pQ0a, Stepa]
301bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
302bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Load counter
303bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  XY, pBS, pXYBS
304bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  alpha, beta, pAlphaBeta0
305bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
306bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB     pQ0, pQ0a, Stepa, LSL #2
307bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD     pQ0, pQ0, #4
308bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
309bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADDS    XY, XY, XY
310bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STR   XY, pXYBS
311bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BCC     LoopX
312bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
313bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//-------- Common Exit of LoopY -----------------
314bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ;// Align the pointers
315bebc99d6fa433c04139294a5057f8439d772dbd9James DongExitLoopY
316bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_LDRD  alpha, beta, pAlphaBeta1
317bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        SUB     pQ0, pQ0, #16
318bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        ADD     pQ0, pQ0, srcdstStep, LSL #2
319bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_STRD  alpha, beta, pAlphaBeta0
320bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
321bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        BNE     LoopY
322bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        MOV     r0, #OMX_Sts_NoErr
323bebc99d6fa433c04139294a5057f8439d772dbd9James Dong;//-----------------End Filter--------------------
324bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        M_END
325bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
326bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ENDIF
327bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
328bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
329bebc99d6fa433c04139294a5057f8439d772dbd9James Dong        END
330bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
331bebc99d6fa433c04139294a5057f8439d772dbd9James Dong