10c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Copyright (C) 2007-2008 ARM Limited
378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Licensed under the Apache License, Version 2.0 (the "License");
578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// you may not use this file except in compliance with the License.
678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// You may obtain a copy of the License at
778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
878e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//      http://www.apache.org/licenses/LICENSE-2.0
978e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
1078e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Unless required by applicable law or agreed to in writing, software
1178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// distributed under the License is distributed on an "AS IS" BASIS,
1278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// See the License for the specific language governing permissions and
1478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// limitations under the License.
1578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
1678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
170c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
180c1bc742181ded4930842b46e9507372f0b1b963James Dong;// File Name:  omxVCCOMM_ExpandFrame_I_s.s
190c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OpenMAX DL: v1.0.2
200c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Revision:   12290
210c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Date:       Wednesday, April 9, 2008
220c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
230c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
240c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
250c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
260c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Description:
270c1bc742181ded4930842b46e9507372f0b1b963James Dong;// This function will Expand Frame boundary pixels into Plane
280c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
290c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
300c1bc742181ded4930842b46e9507372f0b1b963James Dong
310c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Include standard headers
320c1bc742181ded4930842b46e9507372f0b1b963James Dong
330c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE omxtypes_s.h
340c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE armCOMM_s.h
350c1bc742181ded4930842b46e9507372f0b1b963James Dong
360c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_VARIANTS CortexA8
370c1bc742181ded4930842b46e9507372f0b1b963James Dong
380c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Import symbols required from other files
390c1bc742181ded4930842b46e9507372f0b1b963James Dong;// (For example tables)
400c1bc742181ded4930842b46e9507372f0b1b963James Dong
410c1bc742181ded4930842b46e9507372f0b1b963James Dong
420c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Set debugging level
430c1bc742181ded4930842b46e9507372f0b1b963James DongDEBUG_ON    SETL {FALSE}
440c1bc742181ded4930842b46e9507372f0b1b963James Dong
450c1bc742181ded4930842b46e9507372f0b1b963James Dong
460c1bc742181ded4930842b46e9507372f0b1b963James Dong
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    IF CortexA8
480c1bc742181ded4930842b46e9507372f0b1b963James Dong
490c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_START omxVCCOMM_ExpandFrame_I,r11
500c1bc742181ded4930842b46e9507372f0b1b963James Dong
510c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Input registers
520c1bc742181ded4930842b46e9507372f0b1b963James Dong
530c1bc742181ded4930842b46e9507372f0b1b963James DongpSrcDstPlane    RN  0
540c1bc742181ded4930842b46e9507372f0b1b963James DongiFrameWidth     RN  1
550c1bc742181ded4930842b46e9507372f0b1b963James DongiFrameHeight    RN  2
560c1bc742181ded4930842b46e9507372f0b1b963James DongiExpandPels     RN  3
570c1bc742181ded4930842b46e9507372f0b1b963James DongiPlaneStep      RN  4
580c1bc742181ded4930842b46e9507372f0b1b963James DongpTop            RN  5
590c1bc742181ded4930842b46e9507372f0b1b963James DongpBot            RN  6
600c1bc742181ded4930842b46e9507372f0b1b963James DongpDstTop         RN  7
610c1bc742181ded4930842b46e9507372f0b1b963James DongpDstBot         RN  8
620c1bc742181ded4930842b46e9507372f0b1b963James DongpLeft           RN  5
630c1bc742181ded4930842b46e9507372f0b1b963James DongpRight          RN  6
640c1bc742181ded4930842b46e9507372f0b1b963James DongpDstLeft        RN  9
650c1bc742181ded4930842b46e9507372f0b1b963James DongpDstRight       RN  10
660c1bc742181ded4930842b46e9507372f0b1b963James DongOffset          RN  11
670c1bc742181ded4930842b46e9507372f0b1b963James DongTemp            RN  14
680c1bc742181ded4930842b46e9507372f0b1b963James DongCounter         RN  12
690c1bc742181ded4930842b46e9507372f0b1b963James DongTmp             RN  7
700c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Output registers
710c1bc742181ded4930842b46e9507372f0b1b963James Dong
720c1bc742181ded4930842b46e9507372f0b1b963James Dongresult          RN  0
730c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Neon registers
740c1bc742181ded4930842b46e9507372f0b1b963James DongqData0          QN  0.U8
750c1bc742181ded4930842b46e9507372f0b1b963James DongqData1          QN  1.U8
760c1bc742181ded4930842b46e9507372f0b1b963James DongdData0          DN  0.U8
770c1bc742181ded4930842b46e9507372f0b1b963James DongdData1          DN  1.U8
780c1bc742181ded4930842b46e9507372f0b1b963James DongdData2          DN  2.U8
790c1bc742181ded4930842b46e9507372f0b1b963James DongdData3          DN  3.U8
800c1bc742181ded4930842b46e9507372f0b1b963James Dong
810c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Define stack arguments
820c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ARG       pPlaneStep, 4
830c1bc742181ded4930842b46e9507372f0b1b963James Dong
840c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Load argument from the stack
850c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_LDR       iPlaneStep, pPlaneStep
860c1bc742181ded4930842b46e9507372f0b1b963James Dong
870c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pTop, pSrcDstPlane, #0              ;// Top row pointer of the frame
880c1bc742181ded4930842b46e9507372f0b1b963James Dong        MUL         Offset, iExpandPels, iPlaneStep     ;// E*Step
890c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         Temp, iFrameHeight, #1              ;// H-1
900c1bc742181ded4930842b46e9507372f0b1b963James Dong        MUL         Temp, iPlaneStep, Temp              ;// (H-1)*Step
910c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pBot, Temp, pSrcDstPlane            ;// BPtr = TPtr + (H-1)*Step
920c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Temp, iFrameWidth                   ;// Outer loop counter
930c1bc742181ded4930842b46e9507372f0b1b963James Dong
940c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Check if pSrcDstPlane and iPlaneStep are 16 byte aligned
950c1bc742181ded4930842b46e9507372f0b1b963James Dong        TST         pSrcDstPlane, #0xf
960c1bc742181ded4930842b46e9507372f0b1b963James Dong        TSTEQ       iPlaneStep, #0xf
970c1bc742181ded4930842b46e9507372f0b1b963James Dong        BNE         Hor8Loop00
980c1bc742181ded4930842b46e9507372f0b1b963James Dong
990c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Copy top and bottom region of the plane as follows
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// top region = top row elements from the frame
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// bottom region = last row elements from the frame
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Case for 16 byte alignment
1060c1bc742181ded4930842b46e9507372f0b1b963James DongHor16Loop00
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pDstTop, pTop, Offset
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        qData0, [pTop @128]!
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Counter, iExpandPels                ;// Inner loop counter
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pDstBot, pBot, iPlaneStep
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        qData1, [pBot @128]!
1120c1bc742181ded4930842b46e9507372f0b1b963James DongVer16Loop0
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @128], iPlaneStep
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @128], iPlaneStep
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @128], iPlaneStep
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @128], iPlaneStep
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @128], iPlaneStep
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @128], iPlaneStep
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @128], iPlaneStep
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @128], iPlaneStep
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Counter, Counter, #8
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @128], iPlaneStep
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @128], iPlaneStep
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @128], iPlaneStep
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @128], iPlaneStep
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @128], iPlaneStep
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @128], iPlaneStep
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @128], iPlaneStep
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @128], iPlaneStep
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         Ver16Loop0
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Temp, Temp, #16
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         Hor16Loop00
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong        B           EndAlignedLoop
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Case for 8 byte alignment
1370c1bc742181ded4930842b46e9507372f0b1b963James DongHor8Loop00
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pDstTop, pTop, Offset
1390c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        qData0, [pTop @64]!
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Counter, iExpandPels                ;// Inner loop counter
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pDstBot, pBot, iPlaneStep
1420c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        qData1, [pBot @64]!
1430c1bc742181ded4930842b46e9507372f0b1b963James DongVer8Loop0
1440c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @64], iPlaneStep
1450c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @64], iPlaneStep
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @64], iPlaneStep
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @64], iPlaneStep
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @64], iPlaneStep
1490c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @64], iPlaneStep
1500c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @64], iPlaneStep
1510c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData0, [pDstTop @64], iPlaneStep
1520c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Counter, Counter, #8
1530c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @64], iPlaneStep
1540c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @64], iPlaneStep
1550c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @64], iPlaneStep
1560c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @64], iPlaneStep
1570c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @64], iPlaneStep
1580c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @64], iPlaneStep
1590c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @64], iPlaneStep
1600c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        qData1, [pDstBot @64], iPlaneStep
1610c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         Ver8Loop0
1620c1bc742181ded4930842b46e9507372f0b1b963James Dong
1630c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Temp, Temp, #16
1640c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         Hor8Loop00
1650c1bc742181ded4930842b46e9507372f0b1b963James Dong
1660c1bc742181ded4930842b46e9507372f0b1b963James DongEndAlignedLoop
1670c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         Temp, pSrcDstPlane, iFrameWidth
1680c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pDstRight, Temp, Offset
1690c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pRight, Temp, #1
1700c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pDstLeft, pSrcDstPlane, Offset
1710c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         pDstLeft, pDstLeft, iExpandPels
1720c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pLeft, pSrcDstPlane, #0
1730c1bc742181ded4930842b46e9507372f0b1b963James Dong
1740c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        {dData0 []}, [pLeft], iPlaneStep        ;// Top-Left corner pixel from frame duplicated in dData0
1750c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         Offset, iPlaneStep, iExpandPels
1760c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        {dData1 []}, [pRight], iPlaneStep       ;// Top-Right corner pixel from frame duplicated in dData1
1770c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Temp, iExpandPels
1780c1bc742181ded4930842b46e9507372f0b1b963James Dong
1790c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
1800c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Copy top-left and top-right region of the plane as follows
1810c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// top-left region = top-left corner pixel from the frame
1820c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// top-right region = top-right corner pixel from the frame
1830c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
1840c1bc742181ded4930842b46e9507372f0b1b963James DongHorLoop11
1850c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Counter, iExpandPels
1860c1bc742181ded4930842b46e9507372f0b1b963James DongVerLoop1
1870c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        dData0, [pDstLeft], #8
1880c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Counter, Counter, #8
1890c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        dData1, [pDstRight], #8
1900c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         VerLoop1
1910c1bc742181ded4930842b46e9507372f0b1b963James Dong
1920c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Temp, Temp, #1
1930c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pDstLeft, pDstLeft, Offset
1940c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pDstRight, pDstRight, Offset
1950c1bc742181ded4930842b46e9507372f0b1b963James Dong        BPL         HorLoop11
1960c1bc742181ded4930842b46e9507372f0b1b963James Dong
1970c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB         iFrameHeight, iFrameHeight, #1
1980c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
1990c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Copy left and right region of the plane as follows
2000c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Left region = copy the row with left start pixel from the frame
2010c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Right region = copy the row with right end pixel from the frame
2020c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
2030c1bc742181ded4930842b46e9507372f0b1b963James DongHorLoop22
2040c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        {dData0 []}, [pLeft], iPlaneStep
2050c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Counter, iExpandPels
2060c1bc742181ded4930842b46e9507372f0b1b963James Dong        VLD1        {dData1 []}, [pRight], iPlaneStep
2070c1bc742181ded4930842b46e9507372f0b1b963James DongVerLoop2
2080c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        dData0, [pDstLeft], #8
2090c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Counter, Counter, #8
2100c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        dData1, [pDstRight], #8
2110c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         VerLoop2
2120c1bc742181ded4930842b46e9507372f0b1b963James Dong
2130c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        iFrameHeight, iFrameHeight, #1
2140c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pDstLeft, pDstLeft, Offset
2150c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pDstRight, pDstRight, Offset
2160c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         HorLoop22
2170c1bc742181ded4930842b46e9507372f0b1b963James Dong
2180c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Temp, iExpandPels
2190c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
2200c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Copy bottom-left and bottom-right region of the plane as follows
2210c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// bottom-left region = bottom-left corner pixel from the frame
2220c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// bottom-right region = bottom-right corner pixel from the frame
2230c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
2240c1bc742181ded4930842b46e9507372f0b1b963James DongHorLoop33
2250c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Counter, iExpandPels
2260c1bc742181ded4930842b46e9507372f0b1b963James DongVerLoop3
2270c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        dData0, [pDstLeft], #8
2280c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Counter, Counter, #8
2290c1bc742181ded4930842b46e9507372f0b1b963James Dong        VST1        dData1, [pDstRight], #8
2300c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         VerLoop3
2310c1bc742181ded4930842b46e9507372f0b1b963James Dong
2320c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUBS        Temp, Temp, #1
2330c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pDstLeft, pDstLeft, Offset
2340c1bc742181ded4930842b46e9507372f0b1b963James Dong        ADD         pDstRight, pDstRight, Offset
2350c1bc742181ded4930842b46e9507372f0b1b963James Dong        BGT         HorLoop33
2360c1bc742181ded4930842b46e9507372f0b1b963James DongEnd
2370c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         r0, #OMX_Sts_NoErr
2380c1bc742181ded4930842b46e9507372f0b1b963James Dong
2390c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_END
2400c1bc742181ded4930842b46e9507372f0b1b963James Dong
2410c1bc742181ded4930842b46e9507372f0b1b963James Dong    ENDIF
2420c1bc742181ded4930842b46e9507372f0b1b963James Dong
2430c1bc742181ded4930842b46e9507372f0b1b963James Dong
2440c1bc742181ded4930842b46e9507372f0b1b963James Dong
2450c1bc742181ded4930842b46e9507372f0b1b963James Dong
2460c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Guarding implementation by the processor name
2470c1bc742181ded4930842b46e9507372f0b1b963James Dong
2480c1bc742181ded4930842b46e9507372f0b1b963James Dong
2490c1bc742181ded4930842b46e9507372f0b1b963James Dong
25078e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar    END
251