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