10c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
20c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
30c1bc742181ded4930842b46e9507372f0b1b963James Dong;// File Name:  omxVCM4P10_FilterDeblockingChroma_VerEdge_I_s.s
40c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OpenMAX DL: v1.0.2
50c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Revision:   12290
60c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Date:       Wednesday, April 9, 2008
70c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
80c1bc742181ded4930842b46e9507372f0b1b963James Dong;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
90c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
100c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
110c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
120c1bc742181ded4930842b46e9507372f0b1b963James Dong
130c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE omxtypes_s.h
140c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE armCOMM_s.h
150c1bc742181ded4930842b46e9507372f0b1b963James Dong
160c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_VARIANTS CortexA8
170c1bc742181ded4930842b46e9507372f0b1b963James Dong
180c1bc742181ded4930842b46e9507372f0b1b963James Dong        IF CortexA8
190c1bc742181ded4930842b46e9507372f0b1b963James Dong
200c1bc742181ded4930842b46e9507372f0b1b963James Dong        IMPORT  armVCM4P10_DeblockingChromabSGE4_unsafe
210c1bc742181ded4930842b46e9507372f0b1b963James Dong        IMPORT  armVCM4P10_DeblockingChromabSLT4_unsafe
220c1bc742181ded4930842b46e9507372f0b1b963James Dong
230c1bc742181ded4930842b46e9507372f0b1b963James DongLOOP_COUNT  EQU 0x40000000
240c1bc742181ded4930842b46e9507372f0b1b963James DongMASK_3      EQU 0x03030303
250c1bc742181ded4930842b46e9507372f0b1b963James DongMASK_4      EQU 0x04040404
260c1bc742181ded4930842b46e9507372f0b1b963James Dong
270c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Function arguments
280c1bc742181ded4930842b46e9507372f0b1b963James Dong
290c1bc742181ded4930842b46e9507372f0b1b963James DongpSrcDst     RN 0
300c1bc742181ded4930842b46e9507372f0b1b963James DongsrcdstStep  RN 1
310c1bc742181ded4930842b46e9507372f0b1b963James DongpAlpha      RN 2
320c1bc742181ded4930842b46e9507372f0b1b963James DongpBeta       RN 3
330c1bc742181ded4930842b46e9507372f0b1b963James Dong
340c1bc742181ded4930842b46e9507372f0b1b963James DongpThresholds RN 5
350c1bc742181ded4930842b46e9507372f0b1b963James DongpBS         RN 4
360c1bc742181ded4930842b46e9507372f0b1b963James DongbS3210      RN 6
370c1bc742181ded4930842b46e9507372f0b1b963James DongpSrcDst_P   RN 10
380c1bc742181ded4930842b46e9507372f0b1b963James DongpSrcDst_Q   RN 12
390c1bc742181ded4930842b46e9507372f0b1b963James Dong
400c1bc742181ded4930842b46e9507372f0b1b963James DongpTmp        RN 10
410c1bc742181ded4930842b46e9507372f0b1b963James DongpTmp2       RN 12
420c1bc742181ded4930842b46e9507372f0b1b963James Dongstep        RN 14
430c1bc742181ded4930842b46e9507372f0b1b963James Dong
440c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Loop
450c1bc742181ded4930842b46e9507372f0b1b963James Dong
460c1bc742181ded4930842b46e9507372f0b1b963James DongXY          RN 7
470c1bc742181ded4930842b46e9507372f0b1b963James Dong
480c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Rows input
490c1bc742181ded4930842b46e9507372f0b1b963James DongdRow0       DN D7.U8
500c1bc742181ded4930842b46e9507372f0b1b963James DongdRow1       DN D8.U8
510c1bc742181ded4930842b46e9507372f0b1b963James DongdRow2       DN D5.U8
520c1bc742181ded4930842b46e9507372f0b1b963James DongdRow3       DN D10.U8
530c1bc742181ded4930842b46e9507372f0b1b963James DongdRow4       DN D6.U8
540c1bc742181ded4930842b46e9507372f0b1b963James DongdRow5       DN D9.U8
550c1bc742181ded4930842b46e9507372f0b1b963James DongdRow6       DN D4.U8
560c1bc742181ded4930842b46e9507372f0b1b963James DongdRow7       DN D11.U8
570c1bc742181ded4930842b46e9507372f0b1b963James Dong
580c1bc742181ded4930842b46e9507372f0b1b963James Dong
590c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Pixels
600c1bc742181ded4930842b46e9507372f0b1b963James DongdP_0        DN D4.U8
610c1bc742181ded4930842b46e9507372f0b1b963James DongdP_1        DN D5.U8
620c1bc742181ded4930842b46e9507372f0b1b963James DongdP_2        DN D6.U8
630c1bc742181ded4930842b46e9507372f0b1b963James DongdQ_0        DN D8.U8
640c1bc742181ded4930842b46e9507372f0b1b963James DongdQ_1        DN D9.U8
650c1bc742181ded4930842b46e9507372f0b1b963James DongdQ_2        DN D10.U8
660c1bc742181ded4930842b46e9507372f0b1b963James Dong
670c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Filtering Decision
680c1bc742181ded4930842b46e9507372f0b1b963James DongdAlpha      DN D0.U8
690c1bc742181ded4930842b46e9507372f0b1b963James DongdBeta       DN D2.U8
700c1bc742181ded4930842b46e9507372f0b1b963James Dong
710c1bc742181ded4930842b46e9507372f0b1b963James DongdFilt       DN D16.U8
720c1bc742181ded4930842b46e9507372f0b1b963James DongdAqflg      DN D12.U8
730c1bc742181ded4930842b46e9507372f0b1b963James DongdApflg      DN D17.U8
740c1bc742181ded4930842b46e9507372f0b1b963James Dong
750c1bc742181ded4930842b46e9507372f0b1b963James DongdAp0q0      DN D13.U8
760c1bc742181ded4930842b46e9507372f0b1b963James DongdAp1p0      DN D12.U8
770c1bc742181ded4930842b46e9507372f0b1b963James DongdAq1q0      DN D18.U8
780c1bc742181ded4930842b46e9507372f0b1b963James DongdAp2p0      DN D19.U8
790c1bc742181ded4930842b46e9507372f0b1b963James DongdAq2q0      DN D17.U8
800c1bc742181ded4930842b46e9507372f0b1b963James Dong
810c1bc742181ded4930842b46e9507372f0b1b963James DongqBS3210     QN Q13.U16
820c1bc742181ded4930842b46e9507372f0b1b963James DongdBS3210     DN D26
830c1bc742181ded4930842b46e9507372f0b1b963James DongdMask_bs    DN D27
840c1bc742181ded4930842b46e9507372f0b1b963James DongdFilt_bs    DN D26.U16
850c1bc742181ded4930842b46e9507372f0b1b963James Dong
860c1bc742181ded4930842b46e9507372f0b1b963James Dong;// bSLT4
870c1bc742181ded4930842b46e9507372f0b1b963James DongdMask_0     DN D14.U8
880c1bc742181ded4930842b46e9507372f0b1b963James DongdMask_1     DN D15.U8
890c1bc742181ded4930842b46e9507372f0b1b963James DongdMask_4     DN D1.U16
900c1bc742181ded4930842b46e9507372f0b1b963James Dong
910c1bc742181ded4930842b46e9507372f0b1b963James DongMask_4      RN 8
920c1bc742181ded4930842b46e9507372f0b1b963James DongMask_3      RN 9
930c1bc742181ded4930842b46e9507372f0b1b963James Dong
940c1bc742181ded4930842b46e9507372f0b1b963James DongdTemp       DN D19.U8
950c1bc742181ded4930842b46e9507372f0b1b963James Dong
960c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Result
970c1bc742181ded4930842b46e9507372f0b1b963James DongdP_0t       DN D13.U8
980c1bc742181ded4930842b46e9507372f0b1b963James DongdQ_0t       DN D31.U8
990c1bc742181ded4930842b46e9507372f0b1b963James Dong
1000c1bc742181ded4930842b46e9507372f0b1b963James DongdP_0n       DN D29.U8
1010c1bc742181ded4930842b46e9507372f0b1b963James DongdQ_0n       DN D24.U8
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Function header
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_START omxVCM4P10_FilterDeblockingChroma_VerEdge_I, r12, d15
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//Arguments on the stack
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ARG   ppThresholds, 4
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ARG   ppBS, 4
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// d0-dAlpha_0
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// d2-dBeta_0
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;load alpha1,beta1 somewhere to avoid more loads
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        {dAlpha[]}, [pAlpha]!
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pSrcDst, pSrcDst, #4
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        {dBeta[]}, [pBeta]!
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_LDR       pBS, ppBS
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_LDR       pThresholds, ppThresholds
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDR         Mask_4, =MASK_4
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDR         Mask_3, =MASK_3
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;dMask_0-14
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;dMask_1-15
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;dMask_4-19
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong        VMOV        dMask_0, #0
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong        VMOV        dMask_1, #1
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong        VMOV        dMask_4, #4
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDR         XY, =LOOP_COUNT
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// p0-p3 - d4-d7
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// q0-q3 - d8-d11
1370c1bc742181ded4930842b46e9507372f0b1b963James Dong
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong
1390c1bc742181ded4930842b46e9507372f0b1b963James DongLoopY
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDR         bS3210, [pBS], #8
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pTmp, pSrcDst, srcdstStep
1420c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         step, srcdstStep, srcdstStep
1430c1bc742181ded4930842b46e9507372f0b1b963James Dong
1440c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;1
1450c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        dRow0, [pSrcDst], step
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;1
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        dRow1, [pTmp], step
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        dRow2, [pSrcDst], step
1490c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        dRow3, [pTmp], step
1500c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        dRow4, [pSrcDst], step
1510c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        dRow5, [pTmp], step
1520c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        dRow6, [pSrcDst], step
1530c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        dRow7, [pTmp], step
1540c1bc742181ded4930842b46e9507372f0b1b963James Dong
1550c1bc742181ded4930842b46e9507372f0b1b963James Dong
1560c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// dRow0 = [q3r0 q2r0 q1r0 q0r0 p0r0 p1r0 p2r0 p3r0]
1570c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// dRow1 = [q3r1 q2r1 q1r1 q0r1 p0r1 p1r1 p2r1 p3r1]
1580c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// dRow2 = [q3r2 q2r2 q1r2 q0r2 p0r2 p1r2 p2r2 p3r2]
1590c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// dRow3 = [q3r3 q2r3 q1r3 q0r3 p0r3 p1r3 p2r3 p3r3]
1600c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// dRow4 = [q3r4 q2r4 q1r4 q0r4 p0r4 p1r4 p2r4 p3r4]
1610c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// dRow5 = [q3r5 q2r5 q1r5 q0r5 p0r5 p1r5 p2r5 p3r5]
1620c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// dRow6 = [q3r6 q2r6 q1r6 q0r6 p0r6 p1r6 p2r6 p3r6]
1630c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// dRow7 = [q3r7 q2r7 q1r7 q0r7 p0r7 p1r7 p2r7 p3r7]
1640c1bc742181ded4930842b46e9507372f0b1b963James Dong
1650c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// 8x8 Transpose
1660c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.8      dRow0, dRow1
1670c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.8      dRow2, dRow3
1680c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.8      dRow4, dRow5
1690c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.8      dRow6, dRow7
1700c1bc742181ded4930842b46e9507372f0b1b963James Dong
1710c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.16     dRow0, dRow2
1720c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.16     dRow1, dRow3
1730c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.16     dRow4, dRow6
1740c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.16     dRow5, dRow7
1750c1bc742181ded4930842b46e9507372f0b1b963James Dong
1760c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.32     dRow0, dRow4
1770c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.32     dRow2, dRow6
1780c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.32     dRow3, dRow7
1790c1bc742181ded4930842b46e9507372f0b1b963James Dong        VZIP.32     dRow1, dRow5
1800c1bc742181ded4930842b46e9507372f0b1b963James Dong
1810c1bc742181ded4930842b46e9507372f0b1b963James Dong
1820c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;Realign the pointers
1830c1bc742181ded4930842b46e9507372f0b1b963James Dong
1840c1bc742181ded4930842b46e9507372f0b1b963James Dong        CMP         bS3210, #0
1850c1bc742181ded4930842b46e9507372f0b1b963James Dong        VABD        dAp2p0, dP_2, dP_0
1860c1bc742181ded4930842b46e9507372f0b1b963James Dong        VABD        dAp0q0, dP_0, dQ_0
1870c1bc742181ded4930842b46e9507372f0b1b963James Dong        BEQ         NoFilterBS0
1880c1bc742181ded4930842b46e9507372f0b1b963James Dong
1890c1bc742181ded4930842b46e9507372f0b1b963James Dong        VABD        dAp1p0, dP_1, dP_0
1900c1bc742181ded4930842b46e9507372f0b1b963James Dong        VABD        dAq1q0, dQ_1, dQ_0
1910c1bc742181ded4930842b46e9507372f0b1b963James Dong
1920c1bc742181ded4930842b46e9507372f0b1b963James Dong        VMOV.U32    dBS3210[0], bS3210
1930c1bc742181ded4930842b46e9507372f0b1b963James Dong        VCGT        dFilt, dAlpha, dAp0q0
1940c1bc742181ded4930842b46e9507372f0b1b963James Dong        VMAX        dAp1p0, dAq1q0, dAp1p0
1950c1bc742181ded4930842b46e9507372f0b1b963James Dong        VMOVL       qBS3210, dBS3210.U8
1960c1bc742181ded4930842b46e9507372f0b1b963James Dong        VABD        dAq2q0, dQ_2, dQ_0
1970c1bc742181ded4930842b46e9507372f0b1b963James Dong        VCGT        dMask_bs.S16, dBS3210.S16, #0
1980c1bc742181ded4930842b46e9507372f0b1b963James Dong
1990c1bc742181ded4930842b46e9507372f0b1b963James Dong        VCGT        dAp1p0, dBeta, dAp1p0
2000c1bc742181ded4930842b46e9507372f0b1b963James Dong        VCGT        dAp2p0, dBeta, dAp2p0
2010c1bc742181ded4930842b46e9507372f0b1b963James Dong        VAND        dFilt, dMask_bs.U8
2020c1bc742181ded4930842b46e9507372f0b1b963James Dong
2030c1bc742181ded4930842b46e9507372f0b1b963James Dong        TST         bS3210, Mask_3
2040c1bc742181ded4930842b46e9507372f0b1b963James Dong
2050c1bc742181ded4930842b46e9507372f0b1b963James Dong        VCGT        dAq2q0, dBeta, dAq2q0
2060c1bc742181ded4930842b46e9507372f0b1b963James Dong        VAND        dFilt, dFilt, dAp1p0
2070c1bc742181ded4930842b46e9507372f0b1b963James Dong
2080c1bc742181ded4930842b46e9507372f0b1b963James Dong        VAND        dAqflg, dFilt, dAq2q0
2090c1bc742181ded4930842b46e9507372f0b1b963James Dong        VAND        dApflg, dFilt, dAp2p0
2100c1bc742181ded4930842b46e9507372f0b1b963James Dong
2110c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// bS < 4 Filtering
2120c1bc742181ded4930842b46e9507372f0b1b963James Dong        BLNE        armVCM4P10_DeblockingChromabSLT4_unsafe
2130c1bc742181ded4930842b46e9507372f0b1b963James Dong
2140c1bc742181ded4930842b46e9507372f0b1b963James Dong        TST         bS3210, Mask_4
2150c1bc742181ded4930842b46e9507372f0b1b963James Dong
2160c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pSrcDst, pSrcDst, srcdstStep, LSL #3
2170c1bc742181ded4930842b46e9507372f0b1b963James Dong        VTST        dFilt_bs, dFilt_bs, dMask_4
2180c1bc742181ded4930842b46e9507372f0b1b963James Dong
2190c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// bS == 4 Filtering
2200c1bc742181ded4930842b46e9507372f0b1b963James Dong        BLNE        armVCM4P10_DeblockingChromabSGE4_unsafe
2210c1bc742181ded4930842b46e9507372f0b1b963James Dong
2220c1bc742181ded4930842b46e9507372f0b1b963James Dong        VBIT        dP_0n, dP_0t, dFilt_bs
2230c1bc742181ded4930842b46e9507372f0b1b963James Dong        VBIT        dQ_0n, dQ_0t, dFilt_bs
2240c1bc742181ded4930842b46e9507372f0b1b963James Dong
2250c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Result Storage
2260c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pSrcDst_P, pSrcDst, #3
2270c1bc742181ded4930842b46e9507372f0b1b963James Dong        VBIF        dP_0n, dP_0, dFilt
2280c1bc742181ded4930842b46e9507372f0b1b963James Dong
2290c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pTmp2, pSrcDst_P, srcdstStep
2300c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         step, srcdstStep, srcdstStep
2310c1bc742181ded4930842b46e9507372f0b1b963James Dong        VBIF        dQ_0n, dQ_0, dFilt
2320c1bc742181ded4930842b46e9507372f0b1b963James Dong
2330c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADDS        XY, XY, XY
2340c1bc742181ded4930842b46e9507372f0b1b963James Dong
2350c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dP_0n[0]}, [pSrcDst_P], step
2360c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dP_0n[1]}, [pTmp2], step
2370c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dP_0n[2]}, [pSrcDst_P], step
2380c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dP_0n[3]}, [pTmp2], step
2390c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dP_0n[4]}, [pSrcDst_P], step
2400c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dP_0n[5]}, [pTmp2], step
2410c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dP_0n[6]}, [pSrcDst_P], step
2420c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dP_0n[7]}, [pTmp2], step
2430c1bc742181ded4930842b46e9507372f0b1b963James Dong
2440c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pSrcDst_Q, pSrcDst, #4
2450c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pTmp, pSrcDst_Q, srcdstStep
2460c1bc742181ded4930842b46e9507372f0b1b963James Dong
2470c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dQ_0n[0]}, [pSrcDst_Q], step
2480c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dQ_0n[1]}, [pTmp], step
2490c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dQ_0n[2]}, [pSrcDst_Q], step
2500c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dQ_0n[3]}, [pTmp], step
2510c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dQ_0n[4]}, [pSrcDst_Q], step
2520c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dQ_0n[5]}, [pTmp], step
2530c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dQ_0n[6]}, [pSrcDst_Q], step
2540c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        {dQ_0n[7]}, [pTmp], step
2550c1bc742181ded4930842b46e9507372f0b1b963James Dong
2560c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pSrcDst, pSrcDst, #4
2570c1bc742181ded4930842b46e9507372f0b1b963James Dong
2580c1bc742181ded4930842b46e9507372f0b1b963James Dong        BNE         LoopY
2590c1bc742181ded4930842b46e9507372f0b1b963James Dong
2600c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         r0, #OMX_Sts_NoErr
2610c1bc742181ded4930842b46e9507372f0b1b963James Dong
2620c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_EXIT
2630c1bc742181ded4930842b46e9507372f0b1b963James Dong
2640c1bc742181ded4930842b46e9507372f0b1b963James DongNoFilterBS0
2650c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        {dAlpha[]}, [pAlpha]
2660c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pSrcDst, pSrcDst, #4
2670c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pSrcDst, pSrcDst, srcdstStep, LSL #3
2680c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADDS        XY, XY, XY
2690c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        {dBeta[]}, [pBeta]
2700c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pThresholds, pThresholds, #4
2710c1bc742181ded4930842b46e9507372f0b1b963James Dong        BNE         LoopY
2720c1bc742181ded4930842b46e9507372f0b1b963James Dong
2730c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         r0, #OMX_Sts_NoErr
2740c1bc742181ded4930842b46e9507372f0b1b963James Dong
2750c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_END
2760c1bc742181ded4930842b46e9507372f0b1b963James Dong
2770c1bc742181ded4930842b46e9507372f0b1b963James Dong        ENDIF
2780c1bc742181ded4930842b46e9507372f0b1b963James Dong
2790c1bc742181ded4930842b46e9507372f0b1b963James Dong
2800c1bc742181ded4930842b46e9507372f0b1b963James Dong        END
2810c1bc742181ded4930842b46e9507372f0b1b963James Dong
2820c1bc742181ded4930842b46e9507372f0b1b963James Dong
283