armVCM4P10_DeblockingChroma_unsafe_s.s revision 0c1bc742181ded4930842b46e9507372f0b1b963
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 21pAlpha RN 2 22pBeta RN 3 23 24pThresholds RN 5 25pBS RN 4 26bS3210 RN 6 27 28;// Pixels 29dP_0 DN D4.U8 30dP_1 DN D5.U8 31dP_2 DN D6.U8 32dP_3 DN D7.U8 33dQ_0 DN D8.U8 34dQ_1 DN D9.U8 35dQ_2 DN D10.U8 36dQ_3 DN D11.U8 37 38 39;// Filtering Decision 40dAlpha DN D0.U8 41dBeta DN D2.U8 42 43dFilt DN D16.U8 44dAqflg DN D12.U8 45dApflg DN D17.U8 46 47dAp0q0 DN D13.U8 48 49;// bSLT4 50dTC3210 DN D18.U8 51dTCs DN D31.S8 52dTC DN D31.U8 53 54dMask_0 DN D14.U8 55dMask_1 DN D15.U8 56dMask_4 DN D26.U16 57 58dTemp DN D28.U8 59dDummy DN D17.U8 60 61;// Computing P0,Q0 62qDq0p0 QN Q10.S16 63qDp1q1 QN Q11.S16 64qDelta QN Q10.S16 ; reuse qDq0p0 65dDelta DN D20.S8 66 67 68;// Computing P1,Q1 69qP_0n QN Q14.S16 70qQ_0n QN Q12.S16 71 72dQ_0n DN D24.U8 73dP_0n DN D29.U8 74 75;// bSGE4 76 77dHSp0q1 DN D13.U8 78dHSq0p1 DN D31.U8 79 80dBS3210 DN D28.U16 81 82dP_0t DN D13.U8 ;dHSp0q1 83dQ_0t DN D31.U8 ;Temp1 84 85dP_0n DN D29.U8 86dQ_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