omxVCM4P10_FilterDeblockingChroma_VerEdge_I_s.s revision 78e52bfac041d71ce53b5b13c2abf78af742b09d
15208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;//
25208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// Copyright (C) 2007-2008 ARM Limited
35208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;//
45208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// Licensed under the Apache License, Version 2.0 (the "License");
55208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// you may not use this file except in compliance with the License.
65208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// You may obtain a copy of the License at
75208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;//
85208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;//      http://www.apache.org/licenses/LICENSE-2.0
95208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;//
105208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// Unless required by applicable law or agreed to in writing, software
115208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// distributed under the License is distributed on an "AS IS" BASIS,
125208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// See the License for the specific language governing permissions and
145208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// limitations under the License.
155208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;//
165208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;//
175208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;//
185208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI;// File Name:  omxVCM4P10_FilterDeblockingChroma_VerEdge_I_s.s
193dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI;// OpenMAX DL: v1.0.2
200b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI;// Revision:   12290
2104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI;// Date:       Wednesday, April 9, 2008
22aafd269675fc45bac6340027c866ea6073643c3bJan Engelhardt;//
23cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt;//
243dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI;//
253dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI;//
260b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
270b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        INCLUDE omxtypes_s.h
280d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        INCLUDE armCOMM_s.h
290b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
300b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        M_VARIANTS CortexA8
310b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
3208b1616e068166e016b3ee7110db10ae5d853422Jan Engelhardt        IF CortexA8
333dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI
345208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI        IMPORT  armVCM4P10_DeblockingChromabSGE4_unsafe
353dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI        IMPORT  armVCM4P10_DeblockingChromabSLT4_unsafe
365a26b5fd7bf11ca93d54fe7dc24b3423fb7d89b2Mike Frysinger
375a26b5fd7bf11ca93d54fe7dc24b3423fb7d89b2Mike FrysingerLOOP_COUNT  EQU 0x40000000
385a26b5fd7bf11ca93d54fe7dc24b3423fb7d89b2Mike FrysingerMASK_3      EQU 0x03030303
395a26b5fd7bf11ca93d54fe7dc24b3423fb7d89b2Mike FrysingerMASK_4      EQU 0x04040404
400d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI
410d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI;// Function arguments
420b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
430b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIpSrcDst     RN 0
440b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIsrcdstStep  RN 1
450b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIpAlpha      RN 2
460d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAIpBeta       RN 3
470d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI
480b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIpThresholds RN 5
49dbb77543ad6afe29e9a1881b2d4fc212de621a55Jan EngelhardtpBS         RN 4
500b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIbS3210      RN 6
510d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAIpSrcDst_P   RN 10
520d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAIpSrcDst_Q   RN 12
530d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI
540d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAIpTmp        RN 10
553dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIpTmp2       RN 12
563dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIstep        RN 14
573dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI
583dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI;// Loop
593dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI
603dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIXY          RN 7
613dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI
623dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI;// Rows input
633dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdRow0       DN D7.U8
643dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdRow1       DN D8.U8
653dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdRow2       DN D5.U8
663dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdRow3       DN D10.U8
673dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdRow4       DN D6.U8
683dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdRow5       DN D9.U8
693dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdRow6       DN D4.U8
703dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdRow7       DN D11.U8
713dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI
723dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI
733dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI;// Pixels
743dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdP_0        DN D4.U8
753dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdP_1        DN D5.U8
763dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdP_2        DN D6.U8
773dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIdQ_0        DN D8.U8
780b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdQ_1        DN D9.U8
790b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdQ_2        DN D10.U8
800b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
810b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI;// Filtering Decision
820b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdAlpha      DN D0.U8
830b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdBeta       DN D2.U8
840b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
850b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdFilt       DN D16.U8
860b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdAqflg      DN D12.U8
870b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdApflg      DN D17.U8
880b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
890b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdAp0q0      DN D13.U8
900b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdAp1p0      DN D12.U8
910b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdAq1q0      DN D18.U8
920b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdAp2p0      DN D19.U8
930b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdAq2q0      DN D17.U8
940b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
950b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIqBS3210     QN Q13.U16
960b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdBS3210     DN D26
970b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdMask_bs    DN D27
980b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdFilt_bs    DN D26.U16
990b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1000b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI;// bSLT4
1010b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdMask_0     DN D14.U8
1020b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdMask_1     DN D15.U8
1030b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdMask_4     DN D1.U16
1040b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1050b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIMask_4      RN 8
1060b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIMask_3      RN 9
1070b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1080b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdTemp       DN D19.U8
1090b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1100b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI;// Result
1110b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdP_0t       DN D13.U8
1120b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdQ_0t       DN D31.U8
1130b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1140b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdP_0n       DN D29.U8
1150b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAIdQ_0n       DN D24.U8
1160b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1170b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1180b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        ;// Function header
1190b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        M_START omxVCM4P10_FilterDeblockingChroma_VerEdge_I, r12, d15
1200b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1210b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        ;//Arguments on the stack
1220b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        M_ARG   ppThresholds, 4
1230b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        M_ARG   ppBS, 4
1240b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1250b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        ;// d0-dAlpha_0
1260b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        ;// d2-dBeta_0
1270b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1280b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        ;load alpha1,beta1 somewhere to avoid more loads
1290b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        VLD1        {dAlpha[]}, [pAlpha]!
1300b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        SUB         pSrcDst, pSrcDst, #4
1310b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        VLD1        {dBeta[]}, [pBeta]!
1320b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1330b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        M_LDR       pBS, ppBS
1340b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        M_LDR       pThresholds, ppThresholds
1350b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1360b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        LDR         Mask_4, =MASK_4
1370b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        LDR         Mask_3, =MASK_3
1380b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1390b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        ;dMask_0-14
1400b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        ;dMask_1-15
1410b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        ;dMask_4-19
1420b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1430b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        VMOV        dMask_0, #0
1440b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        VMOV        dMask_1, #1
1450b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        VMOV        dMask_4, #4
1460b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1470b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI        LDR         XY, =LOOP_COUNT
1480b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI
1490d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        ;// p0-p3 - d4-d7
1500d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        ;// q0-q3 - d8-d11
1510d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI
1520d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI
1530d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAILoopY
1540d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        LDR         bS3210, [pBS], #8
1550d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        ADD         pTmp, pSrcDst, srcdstStep
1560d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        ADD         step, srcdstStep, srcdstStep
1570d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI
1580d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        ;1
1590d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        VLD1        dRow0, [pSrcDst], step
1600d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        ;1
1610d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI        VLD1        dRow1, [pTmp], step
16204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VLD1        dRow2, [pSrcDst], step
16304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VLD1        dRow3, [pTmp], step
16404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VLD1        dRow4, [pSrcDst], step
16504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VLD1        dRow5, [pTmp], step
16604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VLD1        dRow6, [pSrcDst], step
16704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VLD1        dRow7, [pTmp], step
16804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
16904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
17004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// dRow0 = [q3r0 q2r0 q1r0 q0r0 p0r0 p1r0 p2r0 p3r0]
17104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// dRow1 = [q3r1 q2r1 q1r1 q0r1 p0r1 p1r1 p2r1 p3r1]
17204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// dRow2 = [q3r2 q2r2 q1r2 q0r2 p0r2 p1r2 p2r2 p3r2]
17304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// dRow3 = [q3r3 q2r3 q1r3 q0r3 p0r3 p1r3 p2r3 p3r3]
17404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// dRow4 = [q3r4 q2r4 q1r4 q0r4 p0r4 p1r4 p2r4 p3r4]
17504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// dRow5 = [q3r5 q2r5 q1r5 q0r5 p0r5 p1r5 p2r5 p3r5]
17604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// dRow6 = [q3r6 q2r6 q1r6 q0r6 p0r6 p1r6 p2r6 p3r6]
17704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// dRow7 = [q3r7 q2r7 q1r7 q0r7 p0r7 p1r7 p2r7 p3r7]
17804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
17904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;// 8x8 Transpose
18004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.8      dRow0, dRow1
18104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.8      dRow2, dRow3
18204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.8      dRow4, dRow5
18304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.8      dRow6, dRow7
18404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
18504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.16     dRow0, dRow2
18604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.16     dRow1, dRow3
18704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.16     dRow4, dRow6
18804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.16     dRow5, dRow7
18904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
19004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.32     dRow0, dRow4
19104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.32     dRow2, dRow6
19204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.32     dRow3, dRow7
19304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VZIP.32     dRow1, dRow5
19404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
19504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
19604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ;Realign the pointers
19704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
19804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        CMP         bS3210, #0
19904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VABD        dAp2p0, dP_2, dP_0
20004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VABD        dAp0q0, dP_0, dQ_0
20104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        BEQ         NoFilterBS0
20204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
20304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VABD        dAp1p0, dP_1, dP_0
20404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VABD        dAq1q0, dQ_1, dQ_0
205cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
206cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VMOV.U32    dBS3210[0], bS3210
207cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VCGT        dFilt, dAlpha, dAp0q0
208cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VMAX        dAp1p0, dAq1q0, dAp1p0
209cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VMOVL       qBS3210, dBS3210.U8
210cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VABD        dAq2q0, dQ_2, dQ_0
211cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VCGT        dMask_bs.S16, dBS3210.S16, #0
212cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
213cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VCGT        dAp1p0, dBeta, dAp1p0
214cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VCGT        dAp2p0, dBeta, dAp2p0
215cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VAND        dFilt, dMask_bs.U8
216cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
217cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        TST         bS3210, Mask_3
218cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
219cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VCGT        dAq2q0, dBeta, dAq2q0
220cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VAND        dFilt, dFilt, dAp1p0
221cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
222cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VAND        dAqflg, dFilt, dAq2q0
223cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VAND        dApflg, dFilt, dAp2p0
224cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
225cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        ;// bS < 4 Filtering
226cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        BLNE        armVCM4P10_DeblockingChromabSLT4_unsafe
227cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
228cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        TST         bS3210, Mask_4
229cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
230cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        SUB         pSrcDst, pSrcDst, srcdstStep, LSL #3
231cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VTST        dFilt_bs, dFilt_bs, dMask_4
232cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
233cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        ;// bS == 4 Filtering
234cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        BLNE        armVCM4P10_DeblockingChromabSGE4_unsafe
235cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
236cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VBIT        dP_0n, dP_0t, dFilt_bs
237cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VBIT        dQ_0n, dQ_0t, dFilt_bs
238cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
239cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        ;// Result Storage
240cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        ADD         pSrcDst_P, pSrcDst, #3
241cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VBIF        dP_0n, dP_0, dFilt
242cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
243cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        ADD         pTmp2, pSrcDst_P, srcdstStep
244cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        ADD         step, srcdstStep, srcdstStep
245cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        VBIF        dQ_0n, dQ_0, dFilt
246cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt
247cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt        ADDS        XY, XY, XY
24804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
24904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dP_0n[0]}, [pSrcDst_P], step
25004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dP_0n[1]}, [pTmp2], step
25104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dP_0n[2]}, [pSrcDst_P], step
25204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dP_0n[3]}, [pTmp2], step
25304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dP_0n[4]}, [pSrcDst_P], step
25404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dP_0n[5]}, [pTmp2], step
25504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dP_0n[6]}, [pSrcDst_P], step
25604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dP_0n[7]}, [pTmp2], step
25704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
25804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ADD         pSrcDst_Q, pSrcDst, #4
25904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ADD         pTmp, pSrcDst_Q, srcdstStep
2607a236f4cc685a420c1a782a5db614a93baf37ccfJan Engelhardt
26104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dQ_0n[0]}, [pSrcDst_Q], step
26204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dQ_0n[1]}, [pTmp], step
2639ee386a1b6d7704b259460152c959ab0e79e02aaMax Kellermann        VST1        {dQ_0n[2]}, [pSrcDst_Q], step
26404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dQ_0n[3]}, [pTmp], step
26504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dQ_0n[4]}, [pSrcDst_Q], step
26604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dQ_0n[5]}, [pTmp], step
26704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dQ_0n[6]}, [pSrcDst_Q], step
26804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VST1        {dQ_0n[7]}, [pTmp], step
26904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
27004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ADD         pSrcDst, pSrcDst, #4
27104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
27204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        BNE         LoopY
27304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
27404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        MOV         r0, #OMX_Sts_NoErr
27504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
27604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        M_EXIT
27704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
27804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAINoFilterBS0
27904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VLD1        {dAlpha[]}, [pAlpha]
28004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ADD         pSrcDst, pSrcDst, #4
28104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        SUB         pSrcDst, pSrcDst, srcdstStep, LSL #3
28204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ADDS        XY, XY, XY
28304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        VLD1        {dBeta[]}, [pBeta]
28404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ADD         pThresholds, pThresholds, #4
28504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        BNE         LoopY
28604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
28704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        MOV         r0, #OMX_Sts_NoErr
28804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
28904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        M_END
29004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
29104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        ENDIF
29204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
29304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
29404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI        END
29504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
29604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI
29704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI