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