10c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
20c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
30c1bc742181ded4930842b46e9507372f0b1b963James Dong;// File Name:  armVCM4P10_Interpolate_Chroma_s.s
40c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OpenMAX DL: v1.0.2
50c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Revision:   9641
60c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Date:       Thursday, February 7, 2008
70c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
80c1bc742181ded4930842b46e9507372f0b1b963James Dong;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
90c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
100c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
110c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
120c1bc742181ded4930842b46e9507372f0b1b963James Dong
130c1bc742181ded4930842b46e9507372f0b1b963James Dong
140c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE omxtypes_s.h
150c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE armCOMM_s.h
160c1bc742181ded4930842b46e9507372f0b1b963James Dong
170c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_VARIANTS ARM1136JS
180c1bc742181ded4930842b46e9507372f0b1b963James Dong
190c1bc742181ded4930842b46e9507372f0b1b963James Dong    IF ARM1136JS
200c1bc742181ded4930842b46e9507372f0b1b963James Dong
210c1bc742181ded4930842b46e9507372f0b1b963James Dong;// input registers
220c1bc742181ded4930842b46e9507372f0b1b963James Dong
230c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc                 RN 0
240c1bc742181ded4930842b46e9507372f0b1b963James DongiSrcStep             RN 1
250c1bc742181ded4930842b46e9507372f0b1b963James DongpDst                 RN 2
260c1bc742181ded4930842b46e9507372f0b1b963James DongiDstStep             RN 3
270c1bc742181ded4930842b46e9507372f0b1b963James DongiWidth               RN 4
280c1bc742181ded4930842b46e9507372f0b1b963James DongiHeight              RN 5
290c1bc742181ded4930842b46e9507372f0b1b963James Dongdx                   RN 6
300c1bc742181ded4930842b46e9507372f0b1b963James Dongdy                   RN 7
310c1bc742181ded4930842b46e9507372f0b1b963James Dong
320c1bc742181ded4930842b46e9507372f0b1b963James Dong
330c1bc742181ded4930842b46e9507372f0b1b963James Dong;// local variable registers
340c1bc742181ded4930842b46e9507372f0b1b963James Dongtemp                 RN 11
350c1bc742181ded4930842b46e9507372f0b1b963James Dongr0x20                RN 12
360c1bc742181ded4930842b46e9507372f0b1b963James Dongtmp0x20              RN 14
370c1bc742181ded4930842b46e9507372f0b1b963James Dongreturn               RN 0
380c1bc742181ded4930842b46e9507372f0b1b963James DongdxPlusdy             RN 10
390c1bc742181ded4930842b46e9507372f0b1b963James DongEightMinusdx         RN 8
400c1bc742181ded4930842b46e9507372f0b1b963James DongEightMinusdy         RN 9
410c1bc742181ded4930842b46e9507372f0b1b963James DongdxEightMinusdx       RN 8
420c1bc742181ded4930842b46e9507372f0b1b963James DongBACoeff              RN 6
430c1bc742181ded4930842b46e9507372f0b1b963James DongDCCoeff              RN 7
440c1bc742181ded4930842b46e9507372f0b1b963James Dong
450c1bc742181ded4930842b46e9507372f0b1b963James DongiDstStepx2MinusWidth RN 8
460c1bc742181ded4930842b46e9507372f0b1b963James DongiSrcStepx2MinusWidth RN 9
470c1bc742181ded4930842b46e9507372f0b1b963James DongiSrcStep1            RN 10
480c1bc742181ded4930842b46e9507372f0b1b963James Dong
490c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc1                RN 1
500c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc2                RN 8
510c1bc742181ded4930842b46e9507372f0b1b963James DongpDst1                RN 8
520c1bc742181ded4930842b46e9507372f0b1b963James DongpDst2                RN 12
530c1bc742181ded4930842b46e9507372f0b1b963James Dong
540c1bc742181ded4930842b46e9507372f0b1b963James Dongpix00                RN 8
550c1bc742181ded4930842b46e9507372f0b1b963James Dongpix01                RN 9
560c1bc742181ded4930842b46e9507372f0b1b963James Dongpix10                RN 10
570c1bc742181ded4930842b46e9507372f0b1b963James Dongpix11                RN 11
580c1bc742181ded4930842b46e9507372f0b1b963James Dong
590c1bc742181ded4930842b46e9507372f0b1b963James DongOut0100              RN 8
600c1bc742181ded4930842b46e9507372f0b1b963James DongOut1110              RN 10
610c1bc742181ded4930842b46e9507372f0b1b963James Dong
620c1bc742181ded4930842b46e9507372f0b1b963James Dongx00                  RN 8
630c1bc742181ded4930842b46e9507372f0b1b963James Dongx01                  RN 10
640c1bc742181ded4930842b46e9507372f0b1b963James Dongx02                  RN 12
650c1bc742181ded4930842b46e9507372f0b1b963James Dongx10                  RN 9
660c1bc742181ded4930842b46e9507372f0b1b963James Dongx11                  RN 11
670c1bc742181ded4930842b46e9507372f0b1b963James Dongx12                  RN 14
680c1bc742181ded4930842b46e9507372f0b1b963James Dongx20                  RN 10
690c1bc742181ded4930842b46e9507372f0b1b963James Dongx21                  RN 12
700c1bc742181ded4930842b46e9507372f0b1b963James Dongx22                  RN 14
710c1bc742181ded4930842b46e9507372f0b1b963James Dong
720c1bc742181ded4930842b46e9507372f0b1b963James Dongx01x00               RN 8
730c1bc742181ded4930842b46e9507372f0b1b963James Dongx02x01               RN 10
740c1bc742181ded4930842b46e9507372f0b1b963James Dongx11x10               RN 9
750c1bc742181ded4930842b46e9507372f0b1b963James Dongx12x11               RN 11
760c1bc742181ded4930842b46e9507372f0b1b963James Dongx21x20               RN 10
770c1bc742181ded4930842b46e9507372f0b1b963James Dongx22x21               RN 12
780c1bc742181ded4930842b46e9507372f0b1b963James Dong
790c1bc742181ded4930842b46e9507372f0b1b963James DongOutRow00             RN 12
800c1bc742181ded4930842b46e9507372f0b1b963James DongOutRow01             RN 14
810c1bc742181ded4930842b46e9507372f0b1b963James DongOutRow10             RN 10
820c1bc742181ded4930842b46e9507372f0b1b963James DongOutRow11             RN 12
830c1bc742181ded4930842b46e9507372f0b1b963James Dong
840c1bc742181ded4930842b46e9507372f0b1b963James DongOutRow0100           RN 12
850c1bc742181ded4930842b46e9507372f0b1b963James DongOutRow1110           RN 12
860c1bc742181ded4930842b46e9507372f0b1b963James Dong
870c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-----------------------------------------------------------------------------------------------
880c1bc742181ded4930842b46e9507372f0b1b963James Dong;// armVCM4P10_Interpolate_Chroma_asm starts
890c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-----------------------------------------------------------------------------------------------
900c1bc742181ded4930842b46e9507372f0b1b963James Dong
910c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Write function header
920c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_START armVCM4P10_Interpolate_Chroma, r11
930c1bc742181ded4930842b46e9507372f0b1b963James Dong
940c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Define stack arguments
950c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ARG   Width,      4
960c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ARG   Height,     4
970c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ARG   Dx,         4
980c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ARG   Dy,         4
990c1bc742181ded4930842b46e9507372f0b1b963James Dong
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Load argument from the stack
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// M_STALL ARM1136JS=4
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_LDR   iWidth,  Width
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_LDR   iHeight, Height
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_LDR   dx,      Dx
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_LDR   dy,      Dy
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// EightMinusdx = 8 - dx
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// EightMinusdy = 8 - dy
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// ACoeff = EightMinusdx * EightMinusdy
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// BCoeff = dx * EightMinusdy
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// CCoeff = EightMinusdx * dy
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// DCoeff = dx * dy
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD     pSrc1, pSrc, iSrcStep
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB     temp, iWidth, #1
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong        RSB     EightMinusdx, dx, #8
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong        RSB     EightMinusdy, dy, #8
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong        CMN     dx,dy
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD     dxEightMinusdx, EightMinusdx, dx, LSL #16
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong        ORR     iWidth, iWidth, temp, LSL #16
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Packed Coeffs.
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong        MUL     BACoeff, dxEightMinusdx, EightMinusdy
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong        MUL     DCCoeff, dxEightMinusdx, dy
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Checking either of dx and dy being non-zero
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong        BEQ     MVIsZero
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Pixel layout:
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong;//   x00 x01 x02
1370c1bc742181ded4930842b46e9507372f0b1b963James Dong;//   x10 x11 x12
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong;//   x20 x21 x22
1390c1bc742181ded4930842b46e9507372f0b1b963James Dong
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong;// If fractionl mv is not (0, 0)
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong
1420c1bc742181ded4930842b46e9507372f0b1b963James DongOuterLoopMVIsNotZero
1430c1bc742181ded4930842b46e9507372f0b1b963James Dong
1440c1bc742181ded4930842b46e9507372f0b1b963James DongInnerLoopMVIsNotZero
1450c1bc742181ded4930842b46e9507372f0b1b963James Dong
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x00, [pSrc,  #+0]
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x10, [pSrc1, #+0]
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x01, [pSrc,  #+1]
1490c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x11, [pSrc1, #+1]
1500c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x02, [pSrc,  #+2]!
1510c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x12, [pSrc1, #+2]!
1520c1bc742181ded4930842b46e9507372f0b1b963James Dong
1530c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     x01x00, x00, x01, LSL #16
1540c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// M_STALL ARM1136JS=1
1550c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     x02x01, x01, x02, LSL #16
1560c1bc742181ded4930842b46e9507372f0b1b963James Dong                MOV     r0x20,  #32
1570c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     x11x10, x10, x11, LSL #16
1580c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     x12x11, x11, x12, LSL #16
1590c1bc742181ded4930842b46e9507372f0b1b963James Dong
1600c1bc742181ded4930842b46e9507372f0b1b963James Dong                SMLAD   x01x00, x01x00, BACoeff, r0x20
1610c1bc742181ded4930842b46e9507372f0b1b963James Dong                SMLAD   x02x01, x02x01, BACoeff, r0x20
1620c1bc742181ded4930842b46e9507372f0b1b963James Dong
1630c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// iWidth packed with MSB (top 16 bits)
1640c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// as inner loop counter value i.e
1650c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// (iWidth -1) and LSB (lower 16 bits)
1660c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// as original width
1670c1bc742181ded4930842b46e9507372f0b1b963James Dong
1680c1bc742181ded4930842b46e9507372f0b1b963James Dong                SUBS    iWidth, iWidth, #1<<17
1690c1bc742181ded4930842b46e9507372f0b1b963James Dong
1700c1bc742181ded4930842b46e9507372f0b1b963James Dong                SMLAD   OutRow00, x11x10, DCCoeff, x01x00
1710c1bc742181ded4930842b46e9507372f0b1b963James Dong                SMLAD   OutRow01, x12x11, DCCoeff, x02x01
1720c1bc742181ded4930842b46e9507372f0b1b963James Dong
1730c1bc742181ded4930842b46e9507372f0b1b963James Dong                RSB     pSrc2, pSrc, pSrc1, LSL #1
1740c1bc742181ded4930842b46e9507372f0b1b963James Dong
1750c1bc742181ded4930842b46e9507372f0b1b963James Dong                MOV     OutRow00, OutRow00, LSR #6
1760c1bc742181ded4930842b46e9507372f0b1b963James Dong                MOV     OutRow01, OutRow01, LSR #6
1770c1bc742181ded4930842b46e9507372f0b1b963James Dong
1780c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x20,[pSrc2, #-2]
1790c1bc742181ded4930842b46e9507372f0b1b963James Dong
1800c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     OutRow0100, OutRow00, OutRow01, LSL #8
1810c1bc742181ded4930842b46e9507372f0b1b963James Dong                STRH    OutRow0100, [pDst], #2
1820c1bc742181ded4930842b46e9507372f0b1b963James Dong
1830c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x21,[pSrc2, #-1]
1840c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    x22,[pSrc2, #+0]
1850c1bc742181ded4930842b46e9507372f0b1b963James Dong
1860c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     pDst1, pDst, iDstStep
1870c1bc742181ded4930842b46e9507372f0b1b963James Dong
1880c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// M_STALL ARM1136JS=1
1890c1bc742181ded4930842b46e9507372f0b1b963James Dong
1900c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     x21x20, x20, x21, LSL #16
1910c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     x22x21, x21, x22, LSL #16
1920c1bc742181ded4930842b46e9507372f0b1b963James Dong
1930c1bc742181ded4930842b46e9507372f0b1b963James Dong                MOV     tmp0x20, #32
1940c1bc742181ded4930842b46e9507372f0b1b963James Dong
1950c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// Reusing the packed data x11x10 and x12x11
1960c1bc742181ded4930842b46e9507372f0b1b963James Dong
1970c1bc742181ded4930842b46e9507372f0b1b963James Dong                SMLAD   x11x10,  x11x10,  BACoeff, tmp0x20
1980c1bc742181ded4930842b46e9507372f0b1b963James Dong                SMLAD   x12x11,  x12x11,  BACoeff, tmp0x20
1990c1bc742181ded4930842b46e9507372f0b1b963James Dong                SMLAD   OutRow10, x21x20, DCCoeff, x11x10
2000c1bc742181ded4930842b46e9507372f0b1b963James Dong                SMLAD   OutRow11, x22x21, DCCoeff, x12x11
2010c1bc742181ded4930842b46e9507372f0b1b963James Dong
2020c1bc742181ded4930842b46e9507372f0b1b963James Dong                MOV     OutRow10, OutRow10, LSR #6
2030c1bc742181ded4930842b46e9507372f0b1b963James Dong                MOV     OutRow11, OutRow11, LSR #6
2040c1bc742181ded4930842b46e9507372f0b1b963James Dong
2050c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// M_STALL ARM1136JS=1
2060c1bc742181ded4930842b46e9507372f0b1b963James Dong
2070c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     OutRow1110, OutRow10, OutRow11, LSL #8
2080c1bc742181ded4930842b46e9507372f0b1b963James Dong
2090c1bc742181ded4930842b46e9507372f0b1b963James Dong                STRH    OutRow1110, [pDst1, #-2]
2100c1bc742181ded4930842b46e9507372f0b1b963James Dong
2110c1bc742181ded4930842b46e9507372f0b1b963James Dong                BGT     InnerLoopMVIsNotZero
2120c1bc742181ded4930842b46e9507372f0b1b963James Dong
2130c1bc742181ded4930842b46e9507372f0b1b963James Dong                SUBS    iHeight, iHeight, #2
2140c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     iWidth, iWidth, #1<<16
2150c1bc742181ded4930842b46e9507372f0b1b963James Dong                RSB     iDstStepx2MinusWidth, iWidth, iDstStep, LSL #1
2160c1bc742181ded4930842b46e9507372f0b1b963James Dong                SUB     iSrcStep1, pSrc1, pSrc
2170c1bc742181ded4930842b46e9507372f0b1b963James Dong                SUB     temp, iWidth, #1
2180c1bc742181ded4930842b46e9507372f0b1b963James Dong                RSB     iSrcStepx2MinusWidth, iWidth, iSrcStep1, LSL #1
2190c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     pDst, pDst, iDstStepx2MinusWidth
2200c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     pSrc1, pSrc1, iSrcStepx2MinusWidth
2210c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     pSrc, pSrc, iSrcStepx2MinusWidth
2220c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     iWidth, iWidth, temp, LSL #16
2230c1bc742181ded4930842b46e9507372f0b1b963James Dong                BGT     OuterLoopMVIsNotZero
2240c1bc742181ded4930842b46e9507372f0b1b963James Dong                MOV     return,  #OMX_Sts_NoErr
2250c1bc742181ded4930842b46e9507372f0b1b963James Dong                M_EXIT
2260c1bc742181ded4930842b46e9507372f0b1b963James Dong
2270c1bc742181ded4930842b46e9507372f0b1b963James Dong;// If fractionl mv is (0, 0)
2280c1bc742181ded4930842b46e9507372f0b1b963James Dong
2290c1bc742181ded4930842b46e9507372f0b1b963James DongMVIsZero
2300c1bc742181ded4930842b46e9507372f0b1b963James Dong                ;// M_STALL ARM1136JS=4
2310c1bc742181ded4930842b46e9507372f0b1b963James DongOuterLoopMVIsZero
2320c1bc742181ded4930842b46e9507372f0b1b963James Dong
2330c1bc742181ded4930842b46e9507372f0b1b963James DongInnerLoopMVIsZero
2340c1bc742181ded4930842b46e9507372f0b1b963James Dong
2350c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    pix00, [pSrc],  #+1
2360c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    pix01, [pSrc],  #+1
2370c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    pix10, [pSrc1], #+1
2380c1bc742181ded4930842b46e9507372f0b1b963James Dong                LDRB    pix11, [pSrc1], #+1
2390c1bc742181ded4930842b46e9507372f0b1b963James Dong
2400c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     pDst2,  pDst, iDstStep
2410c1bc742181ded4930842b46e9507372f0b1b963James Dong                SUBS    iWidth, iWidth, #1<<17
2420c1bc742181ded4930842b46e9507372f0b1b963James Dong
2430c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     Out0100, pix00, pix01, LSL #8
2440c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     Out1110, pix10, pix11, LSL #8
2450c1bc742181ded4930842b46e9507372f0b1b963James Dong
2460c1bc742181ded4930842b46e9507372f0b1b963James Dong                STRH    Out0100, [pDst],  #2
2470c1bc742181ded4930842b46e9507372f0b1b963James Dong                STRH    Out1110, [pDst2], #2
2480c1bc742181ded4930842b46e9507372f0b1b963James Dong
2490c1bc742181ded4930842b46e9507372f0b1b963James Dong                BGT     InnerLoopMVIsZero
2500c1bc742181ded4930842b46e9507372f0b1b963James Dong
2510c1bc742181ded4930842b46e9507372f0b1b963James Dong                SUBS    iHeight, iHeight, #2
2520c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     iWidth, iWidth, #1<<16
2530c1bc742181ded4930842b46e9507372f0b1b963James Dong                RSB     iDstStepx2MinusWidth, iWidth, iDstStep, LSL #1
2540c1bc742181ded4930842b46e9507372f0b1b963James Dong                SUB     iSrcStep1, pSrc1, pSrc
2550c1bc742181ded4930842b46e9507372f0b1b963James Dong                SUB     temp, iWidth, #1
2560c1bc742181ded4930842b46e9507372f0b1b963James Dong                RSB     iSrcStepx2MinusWidth, iWidth, iSrcStep1, LSL #1
2570c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     pDst, pDst, iDstStepx2MinusWidth
2580c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     pSrc1, pSrc1, iSrcStepx2MinusWidth
2590c1bc742181ded4930842b46e9507372f0b1b963James Dong                ADD     pSrc, pSrc, iSrcStepx2MinusWidth
2600c1bc742181ded4930842b46e9507372f0b1b963James Dong                ORR     iWidth, iWidth, temp, LSL #16
2610c1bc742181ded4930842b46e9507372f0b1b963James Dong                BGT     OuterLoopMVIsZero
2620c1bc742181ded4930842b46e9507372f0b1b963James Dong                MOV     return,  #OMX_Sts_NoErr
2630c1bc742181ded4930842b46e9507372f0b1b963James Dong                M_END
2640c1bc742181ded4930842b46e9507372f0b1b963James Dong
2650c1bc742181ded4930842b46e9507372f0b1b963James Dong        ENDIF ;// ARM1136JS
2660c1bc742181ded4930842b46e9507372f0b1b963James Dong
2670c1bc742181ded4930842b46e9507372f0b1b963James Dong
2680c1bc742181ded4930842b46e9507372f0b1b963James Dong        END
2690c1bc742181ded4930842b46e9507372f0b1b963James Dong
2700c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-----------------------------------------------------------------------------------------------
2710c1bc742181ded4930842b46e9507372f0b1b963James Dong;// armVCM4P10_Interpolate_Chroma_asm ends
2720c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-----------------------------------------------------------------------------------------------
2730c1bc742181ded4930842b46e9507372f0b1b963James Dong
274