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: omxVCM4P10_PredictIntraChroma_8x8_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 270c1bc742181ded4930842b46e9507372f0b1b963James Dong 280c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE omxtypes_s.h 290c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE armCOMM_s.h 300c1bc742181ded4930842b46e9507372f0b1b963James Dong 310c1bc742181ded4930842b46e9507372f0b1b963James Dong EXPORT armVCM4P10_pIndexTable8x8 320c1bc742181ded4930842b46e9507372f0b1b963James Dong 330c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Define the processor variants supported by this file 340c1bc742181ded4930842b46e9507372f0b1b963James Dong 350c1bc742181ded4930842b46e9507372f0b1b963James Dong M_VARIANTS CortexA8 360c1bc742181ded4930842b46e9507372f0b1b963James Dong 370c1bc742181ded4930842b46e9507372f0b1b963James Dong AREA table, DATA 380c1bc742181ded4930842b46e9507372f0b1b963James Dong;//------------------------------------------------------- 390c1bc742181ded4930842b46e9507372f0b1b963James Dong;// This table for implementing switch case of C in asm by 400c1bc742181ded4930842b46e9507372f0b1b963James Dong;// the mehtod of two levels of indexing. 410c1bc742181ded4930842b46e9507372f0b1b963James Dong;//------------------------------------------------------- 420c1bc742181ded4930842b46e9507372f0b1b963James Dong 430c1bc742181ded4930842b46e9507372f0b1b963James Dong M_TABLE armVCM4P10_pIndexTable8x8 440c1bc742181ded4930842b46e9507372f0b1b963James Dong DCD OMX_VC_CHROMA_DC, OMX_VC_CHROMA_HOR 450c1bc742181ded4930842b46e9507372f0b1b963James Dong DCD OMX_VC_CHROMA_VERT, OMX_VC_CHROMA_PLANE 460c1bc742181ded4930842b46e9507372f0b1b963James Dong 470c1bc742181ded4930842b46e9507372f0b1b963James Dong M_TABLE armVCM4P10_MultiplierTableChroma8x8,1 480c1bc742181ded4930842b46e9507372f0b1b963James Dong DCW 3, 2, 1,4 490c1bc742181ded4930842b46e9507372f0b1b963James Dong DCW -3,-2,-1,0 500c1bc742181ded4930842b46e9507372f0b1b963James Dong DCW 1, 2, 3,4 510c1bc742181ded4930842b46e9507372f0b1b963James Dong 520c1bc742181ded4930842b46e9507372f0b1b963James Dong 530c1bc742181ded4930842b46e9507372f0b1b963James Dong 540c1bc742181ded4930842b46e9507372f0b1b963James Dong IF CortexA8 550c1bc742181ded4930842b46e9507372f0b1b963James Dong 560c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------- 570c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Scratch variable 580c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------- 590c1bc742181ded4930842b46e9507372f0b1b963James Dong 600c1bc742181ded4930842b46e9507372f0b1b963James Dongpc RN 15 610c1bc742181ded4930842b46e9507372f0b1b963James Dongreturn RN 0 620c1bc742181ded4930842b46e9507372f0b1b963James DongpTable RN 8 630c1bc742181ded4930842b46e9507372f0b1b963James Dong 640c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------- 650c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Input Arguments 660c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------- 670c1bc742181ded4930842b46e9507372f0b1b963James DongpSrcLeft RN 0 ;// input pointer 680c1bc742181ded4930842b46e9507372f0b1b963James DongpSrcAbove RN 1 ;// input pointer 690c1bc742181ded4930842b46e9507372f0b1b963James DongpSrcAboveLeft RN 2 ;// input pointer 700c1bc742181ded4930842b46e9507372f0b1b963James DongpDst RN 3 ;// output pointer 710c1bc742181ded4930842b46e9507372f0b1b963James DongleftStep RN 4 ;// input variable 720c1bc742181ded4930842b46e9507372f0b1b963James DongdstStep RN 5 ;// input variable 730c1bc742181ded4930842b46e9507372f0b1b963James DongpredMode RN 6 ;// input variable 740c1bc742181ded4930842b46e9507372f0b1b963James Dongavailability RN 7 ;// input variable 750c1bc742181ded4930842b46e9507372f0b1b963James DongpMultiplierTable RN 2 760c1bc742181ded4930842b46e9507372f0b1b963James Dong 770c1bc742181ded4930842b46e9507372f0b1b963James DongpTmp RN 9 780c1bc742181ded4930842b46e9507372f0b1b963James Dongstep RN 10 790c1bc742181ded4930842b46e9507372f0b1b963James Dong 800c1bc742181ded4930842b46e9507372f0b1b963James Dong;//--------------------- 810c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Neon Registers 820c1bc742181ded4930842b46e9507372f0b1b963James Dong;//--------------------- 830c1bc742181ded4930842b46e9507372f0b1b963James Dong 840c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OMX_VC_CHROMA_HOR 850c1bc742181ded4930842b46e9507372f0b1b963James Dong 860c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal0 DN D0.8 870c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal1 DN D1.8 880c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal2 DN D2.8 890c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal3 DN D3.8 900c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal4 DN D4.8 910c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal5 DN D5.8 920c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal6 DN D6.8 930c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal7 DN D7.8 940c1bc742181ded4930842b46e9507372f0b1b963James Dong 950c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OMX_VC_CHROMA_VERT 960c1bc742181ded4930842b46e9507372f0b1b963James Dong 970c1bc742181ded4930842b46e9507372f0b1b963James DongdAboveVal DN D0.U8 980c1bc742181ded4930842b46e9507372f0b1b963James Dong 990c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OMX_VC_CHROMA_DC 1000c1bc742181ded4930842b46e9507372f0b1b963James Dong 1010c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftVal DN D1.U8 1020c1bc742181ded4930842b46e9507372f0b1b963James DongdSumAboveValU16 DN D2.U16 1030c1bc742181ded4930842b46e9507372f0b1b963James DongdSumAboveValU32 DN D3.U32 1040c1bc742181ded4930842b46e9507372f0b1b963James DongdSumAboveValU8 DN D3.U8 1050c1bc742181ded4930842b46e9507372f0b1b963James DongdSumLeftValU16 DN D2.U16 1060c1bc742181ded4930842b46e9507372f0b1b963James DongdSumLeftValU32 DN D1.U32 1070c1bc742181ded4930842b46e9507372f0b1b963James DongdSumLeftValU8 DN D1.U8 1080c1bc742181ded4930842b46e9507372f0b1b963James DongdSumAboveLeft DN D2.U32 1090c1bc742181ded4930842b46e9507372f0b1b963James DongdSumAboveLeftU8 DN D2.U8 1100c1bc742181ded4930842b46e9507372f0b1b963James DongdIndexRow0U8 DN D5.U8 1110c1bc742181ded4930842b46e9507372f0b1b963James DongdIndexRow0 DN D5.U64 1120c1bc742181ded4930842b46e9507372f0b1b963James DongdIndexRow4U8 DN D6.U8 1130c1bc742181ded4930842b46e9507372f0b1b963James DongdIndexRow4 DN D6.U64 1140c1bc742181ded4930842b46e9507372f0b1b963James DongdDstRow0 DN D0.U8 1150c1bc742181ded4930842b46e9507372f0b1b963James DongdDstRow4 DN D4.U8 1160c1bc742181ded4930842b46e9507372f0b1b963James DongdConst128U8 DN D0.U8 1170c1bc742181ded4930842b46e9507372f0b1b963James Dong 1180c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OMX_VC_CHROMA_PLANE 1190c1bc742181ded4930842b46e9507372f0b1b963James Dong 1200c1bc742181ded4930842b46e9507372f0b1b963James DongdRevAboveVal DN D3.U8 1210c1bc742181ded4930842b46e9507372f0b1b963James DongdRevAboveValU64 DN D3.U64 1220c1bc742181ded4930842b46e9507372f0b1b963James DongdAboveLeftVal DN D2.U8 1230c1bc742181ded4930842b46e9507372f0b1b963James DongqAbove7minus0 QN Q3.S16 1240c1bc742181ded4930842b46e9507372f0b1b963James DongqAboveDiff QN Q2.S16 1250c1bc742181ded4930842b46e9507372f0b1b963James DongdIndex DN D8.U8 1260c1bc742181ded4930842b46e9507372f0b1b963James DongdDiffAboveU8 DN D9.U8 1270c1bc742181ded4930842b46e9507372f0b1b963James DongdDiffAboveS16 DN D9.S16 1280c1bc742181ded4930842b46e9507372f0b1b963James DongdAboveDiff0U8 DN D4.U8 1290c1bc742181ded4930842b46e9507372f0b1b963James DongdAboveDiff0U64 DN D4.U64 1300c1bc742181ded4930842b46e9507372f0b1b963James DongdAbove7minus0U8 DN D6.U8 1310c1bc742181ded4930842b46e9507372f0b1b963James DongdMultiplier DN D10.S16 1320c1bc742181ded4930842b46e9507372f0b1b963James DongdHorPred DN D11.S16 1330c1bc742181ded4930842b46e9507372f0b1b963James DongdRevLeftVal DN D3.U8 1340c1bc742181ded4930842b46e9507372f0b1b963James DongdRevLeftValU64 DN D3.U64 1350c1bc742181ded4930842b46e9507372f0b1b963James DongqLeft7minus0 QN Q7.S16 1360c1bc742181ded4930842b46e9507372f0b1b963James DongqLeftDiff QN Q6.S16 1370c1bc742181ded4930842b46e9507372f0b1b963James DongdDiffLeftU8 DN D16.U8 1380c1bc742181ded4930842b46e9507372f0b1b963James DongdDiffLeftS16 DN D16.S16 1390c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftDiff0U8 DN D12.U8 1400c1bc742181ded4930842b46e9507372f0b1b963James DongdLeftDiff0U64 DN D12.U64 1410c1bc742181ded4930842b46e9507372f0b1b963James DongdLeft7minus0U8 DN D14.U8 1420c1bc742181ded4930842b46e9507372f0b1b963James DongdVerPred DN D3.S16 1430c1bc742181ded4930842b46e9507372f0b1b963James DongdHVValS16 DN D3.S16 1440c1bc742181ded4930842b46e9507372f0b1b963James DongdHVValS32 DN D3.S32 1450c1bc742181ded4930842b46e9507372f0b1b963James DongdHVTempS32 DN D2.S32 1460c1bc742181ded4930842b46e9507372f0b1b963James DongqA QN Q0.S16 1470c1bc742181ded4930842b46e9507372f0b1b963James DongqB QN Q2.S16 1480c1bc742181ded4930842b46e9507372f0b1b963James DongqC QN Q3.S16 1490c1bc742181ded4930842b46e9507372f0b1b963James DongqMultiplier QN Q5.S16 1500c1bc742181ded4930842b46e9507372f0b1b963James DongdMultiplier0 DN D10.S16 1510c1bc742181ded4930842b46e9507372f0b1b963James DongdMultiplier1 DN D11.S16 1520c1bc742181ded4930842b46e9507372f0b1b963James DongqC0 QN Q0.S16 1530c1bc742181ded4930842b46e9507372f0b1b963James DongqC1 QN Q1.S16 1540c1bc742181ded4930842b46e9507372f0b1b963James DongqC2 QN Q4.S16 1550c1bc742181ded4930842b46e9507372f0b1b963James DongqC3 QN Q5.S16 1560c1bc742181ded4930842b46e9507372f0b1b963James DongqC4 QN Q6.S16 1570c1bc742181ded4930842b46e9507372f0b1b963James DongqC5 QN Q7.S16 1580c1bc742181ded4930842b46e9507372f0b1b963James DongqC6 QN Q8.S16 1590c1bc742181ded4930842b46e9507372f0b1b963James DongqC7 QN Q9.S16 1600c1bc742181ded4930842b46e9507372f0b1b963James DongqSum0 QN Q0.S16 1610c1bc742181ded4930842b46e9507372f0b1b963James DongqSum1 QN Q1.S16 1620c1bc742181ded4930842b46e9507372f0b1b963James DongqSum2 QN Q4.S16 1630c1bc742181ded4930842b46e9507372f0b1b963James DongqSum3 QN Q5.S16 1640c1bc742181ded4930842b46e9507372f0b1b963James DongqSum4 QN Q6.S16 1650c1bc742181ded4930842b46e9507372f0b1b963James DongqSum5 QN Q7.S16 1660c1bc742181ded4930842b46e9507372f0b1b963James DongqSum6 QN Q8.S16 1670c1bc742181ded4930842b46e9507372f0b1b963James DongqSum7 QN Q9.S16 1680c1bc742181ded4930842b46e9507372f0b1b963James DongdSum0 DN D0.U8 1690c1bc742181ded4930842b46e9507372f0b1b963James DongdSum1 DN D1.U8 1700c1bc742181ded4930842b46e9507372f0b1b963James DongdSum2 DN D2.U8 1710c1bc742181ded4930842b46e9507372f0b1b963James DongdSum3 DN D3.U8 1720c1bc742181ded4930842b46e9507372f0b1b963James DongdSum4 DN D4.U8 1730c1bc742181ded4930842b46e9507372f0b1b963James DongdSum5 DN D5.U8 1740c1bc742181ded4930842b46e9507372f0b1b963James DongdSum6 DN D6.U8 1750c1bc742181ded4930842b46e9507372f0b1b963James DongdSum7 DN D7.U8 1760c1bc742181ded4930842b46e9507372f0b1b963James Dong 1770c1bc742181ded4930842b46e9507372f0b1b963James Dong;//----------------------------------------------------------------------------------------------- 1780c1bc742181ded4930842b46e9507372f0b1b963James Dong;// omxVCM4P10_PredictIntraChroma_8x8 starts 1790c1bc742181ded4930842b46e9507372f0b1b963James Dong;//----------------------------------------------------------------------------------------------- 1800c1bc742181ded4930842b46e9507372f0b1b963James Dong 1810c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Write function header 1820c1bc742181ded4930842b46e9507372f0b1b963James Dong M_START omxVCM4P10_PredictIntraChroma_8x8, r10, d15 1830c1bc742181ded4930842b46e9507372f0b1b963James Dong 1840c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Define stack arguments 1850c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ARG LeftStep, 4 1860c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ARG DstStep, 4 1870c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ARG PredMode, 4 1880c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ARG Availability, 4 1890c1bc742181ded4930842b46e9507372f0b1b963James Dong 1900c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR pTable,=armVCM4P10_pIndexTable8x8 ;// Load index table for switch case 1910c1bc742181ded4930842b46e9507372f0b1b963James Dong 1920c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Load argument from the stack 1930c1bc742181ded4930842b46e9507372f0b1b963James Dong M_LDR predMode, PredMode ;// Arg predMode loaded from stack to reg 1940c1bc742181ded4930842b46e9507372f0b1b963James Dong M_LDR leftStep, LeftStep ;// Arg leftStep loaded from stack to reg 1950c1bc742181ded4930842b46e9507372f0b1b963James Dong M_LDR dstStep, DstStep ;// Arg dstStep loaded from stack to reg 1960c1bc742181ded4930842b46e9507372f0b1b963James Dong M_LDR availability, Availability ;// Arg availability loaded from stack to reg 1970c1bc742181ded4930842b46e9507372f0b1b963James Dong 1980c1bc742181ded4930842b46e9507372f0b1b963James Dong 1990c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR pc, [pTable, predMode, LSL #2] ;// Branch to the case based on preMode 2000c1bc742181ded4930842b46e9507372f0b1b963James Dong 2010c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_CHROMA_DC 2020c1bc742181ded4930842b46e9507372f0b1b963James Dong 2030c1bc742181ded4930842b46e9507372f0b1b963James Dong TST availability, #OMX_VC_LEFT 2040c1bc742181ded4930842b46e9507372f0b1b963James Dong BEQ DCChroma8x8LeftNotAvailable 2050c1bc742181ded4930842b46e9507372f0b1b963James Dong 2060c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pTmp, pSrcLeft, leftStep 2070c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD step, leftStep, leftStep 2080c1bc742181ded4930842b46e9507372f0b1b963James Dong 2090c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Load Left Edge 2100c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[0]},[pSrcLeft],step ;// pSrcLeft[0*leftStep] 2110c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[1]},[pTmp],step ;// pSrcLeft[1*leftStep] 2120c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[2]},[pSrcLeft],step ;// pSrcLeft[2*leftStep] 2130c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[3]},[pTmp],step ;// pSrcLeft[3*leftStep] 2140c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[4]},[pSrcLeft],step ;// pSrcLeft[4*leftStep] 2150c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[5]},[pTmp],step ;// pSrcLeft[5*leftStep] 2160c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[6]},[pSrcLeft],step ;// pSrcLeft[6*leftStep] 2170c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[7]},[pTmp] ;// pSrcLeft[7*leftStep] 2180c1bc742181ded4930842b46e9507372f0b1b963James Dong 2190c1bc742181ded4930842b46e9507372f0b1b963James Dong TST availability, #OMX_VC_UPPER 2200c1bc742181ded4930842b46e9507372f0b1b963James Dong BEQ DCChroma8x8LeftOnlyAvailable 2210c1bc742181ded4930842b46e9507372f0b1b963James Dong 2220c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Load Upper Edge also 2230c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 dAboveVal,[pSrcAbove] ;// pSrcAbove[0 to 7] 2240c1bc742181ded4930842b46e9507372f0b1b963James Dong 2250c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV return, #OMX_Sts_NoErr ;// returnNoError 2260c1bc742181ded4930842b46e9507372f0b1b963James Dong 2270c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dSumAboveValU16, dAboveVal ;// pSrcAbove[ 6+7 | 4+5 | 2+3 | 0+1 ] 2280c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dSumAboveValU32, dSumAboveValU16 ;// pSrcAbove[ 4+5+6+7 | 0+1+2+3 ] 2290c1bc742181ded4930842b46e9507372f0b1b963James Dong 2300c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dSumLeftValU16, dLeftVal ;// pSrcLeft[ 6+7 | 4+5 | 2+3 | 0+1 ] 2310c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dSumLeftValU32, dSumLeftValU16 ;// pSrcLeft[ 4+5+6+7 | 0+1+2+3 ] 2320c1bc742181ded4930842b46e9507372f0b1b963James Dong 2330c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD dSumAboveLeft,dSumAboveValU32,dSumLeftValU32 2340c1bc742181ded4930842b46e9507372f0b1b963James Dong VRSHR dSumAboveLeft,dSumAboveLeft,#3 ;// Sum = (Sum + 4) >> 3 2350c1bc742181ded4930842b46e9507372f0b1b963James Dong VRSHR dSumAboveValU32,dSumAboveValU32,#2 ;// Sum = (Sum + 2) >> 2 2360c1bc742181ded4930842b46e9507372f0b1b963James Dong VRSHR dSumLeftValU32,dSumLeftValU32,#2 ;// Sum = (Sum + 2) >> 2 2370c1bc742181ded4930842b46e9507372f0b1b963James Dong 2380c1bc742181ded4930842b46e9507372f0b1b963James Dong VMOV dIndexRow0U8,#0x0c 2390c1bc742181ded4930842b46e9507372f0b1b963James Dong VMOV dIndexRow4U8,#0x04 2400c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHL dIndexRow0,dIndexRow0,#32 ;// index0 = 0x0c0c0c0c00000000 2410c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHR dIndexRow4,dIndexRow4,#32 ;// index4 = 0x0000000004040404 2420c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD dIndexRow4U8,dIndexRow4U8,dIndexRow0U8 ;// index4 = 0x0c0c0c0c04040404 2430c1bc742181ded4930842b46e9507372f0b1b963James Dong VTBL dDstRow0,{dSumAboveLeftU8,dSumAboveValU8},dIndexRow0U8 2440c1bc742181ded4930842b46e9507372f0b1b963James Dong VTBL dDstRow4,{dSumLeftValU8,dSumAboveLeftU8},dIndexRow4U8 2450c1bc742181ded4930842b46e9507372f0b1b963James Dong 2460c1bc742181ded4930842b46e9507372f0b1b963James DongDCChroma8x8LeftStore 2470c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pTmp, pDst, dstStep 2480c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD step, dstStep, dstStep 2490c1bc742181ded4930842b46e9507372f0b1b963James Dong 2500c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pDst],step ;// pDst[0*dstStep+x] :0<= x <= 7 2510c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pTmp],step ;// pDst[1*dstStep+x] :0<= x <= 7 2520c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pDst],step ;// pDst[2*dstStep+x] :0<= x <= 7 2530c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pTmp],step ;// pDst[3*dstStep+x] :0<= x <= 7 2540c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow4,[pDst],step ;// pDst[4*dstStep+x] :0<= x <= 7 2550c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow4,[pTmp],step ;// pDst[5*dstStep+x] :0<= x <= 7 2560c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow4,[pDst],step ;// pDst[6*dstStep+x] :0<= x <= 7 2570c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow4,[pTmp] ;// pDst[7*dstStep+x] :0<= x <= 7 2580c1bc742181ded4930842b46e9507372f0b1b963James Dong 2590c1bc742181ded4930842b46e9507372f0b1b963James Dong M_EXIT 2600c1bc742181ded4930842b46e9507372f0b1b963James Dong 2610c1bc742181ded4930842b46e9507372f0b1b963James Dong 2620c1bc742181ded4930842b46e9507372f0b1b963James DongDCChroma8x8LeftOnlyAvailable 2630c1bc742181ded4930842b46e9507372f0b1b963James Dong 2640c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV return, #OMX_Sts_NoErr 2650c1bc742181ded4930842b46e9507372f0b1b963James Dong 2660c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dSumLeftValU16, dLeftVal ;// pSrcLeft[ 6+7 | 4+5 | 2+3 | 0+1 ] 2670c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dSumLeftValU32, dSumLeftValU16 ;// pSrcLeft[ 4+5+6+7 | 0+1+2+3 ] 2680c1bc742181ded4930842b46e9507372f0b1b963James Dong VRSHR dSumLeftValU32,dSumLeftValU32,#2 ;// Sum = (Sum + 2) >> 2 2690c1bc742181ded4930842b46e9507372f0b1b963James Dong 2700c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP dDstRow0,dSumLeftValU8[0] 2710c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP dDstRow4,dSumLeftValU8[4] 2720c1bc742181ded4930842b46e9507372f0b1b963James Dong 2730c1bc742181ded4930842b46e9507372f0b1b963James Dong B DCChroma8x8LeftStore 2740c1bc742181ded4930842b46e9507372f0b1b963James Dong 2750c1bc742181ded4930842b46e9507372f0b1b963James Dong 2760c1bc742181ded4930842b46e9507372f0b1b963James DongDCChroma8x8LeftNotAvailable 2770c1bc742181ded4930842b46e9507372f0b1b963James Dong 2780c1bc742181ded4930842b46e9507372f0b1b963James Dong TST availability, #OMX_VC_UPPER 2790c1bc742181ded4930842b46e9507372f0b1b963James Dong BEQ DCChroma8x8NoneAvailable 2800c1bc742181ded4930842b46e9507372f0b1b963James Dong 2810c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Load Upper Edge 2820c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 dAboveVal,[pSrcAbove] ;// pSrcAbove[0 to 7] 2830c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV return, #OMX_Sts_NoErr ;// returnNoError 2840c1bc742181ded4930842b46e9507372f0b1b963James Dong 2850c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dSumAboveValU16, dAboveVal ;// pSrcAbove[ 6+7 | 4+5 | 2+3 | 0+1 ] 2860c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dSumAboveValU32, dSumAboveValU16 ;// pSrcAbove[ 4+5+6+7 | 0+1+2+3 ] 2870c1bc742181ded4930842b46e9507372f0b1b963James Dong VRSHR dSumAboveValU32,dSumAboveValU32,#2 ;// Sum = (Sum + 2) >> 2 2880c1bc742181ded4930842b46e9507372f0b1b963James Dong VMOV dIndexRow0U8,#0x04 2890c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHL dIndexRow0,dIndexRow0,#32 ;// index = 0x0404040400000000 2900c1bc742181ded4930842b46e9507372f0b1b963James Dong VTBL dDstRow0,{dSumAboveValU8},dIndexRow0U8 2910c1bc742181ded4930842b46e9507372f0b1b963James Dong 2920c1bc742181ded4930842b46e9507372f0b1b963James Dong B DCChroma8x8UpperStore 2930c1bc742181ded4930842b46e9507372f0b1b963James Dong 2940c1bc742181ded4930842b46e9507372f0b1b963James Dong 2950c1bc742181ded4930842b46e9507372f0b1b963James DongDCChroma8x8NoneAvailable 2960c1bc742181ded4930842b46e9507372f0b1b963James Dong 2970c1bc742181ded4930842b46e9507372f0b1b963James Dong VMOV dConst128U8,#0x80 ;// 0x8080808080808080 if(count == 0) 2980c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV return, #OMX_Sts_NoErr ;// returnNoError 2990c1bc742181ded4930842b46e9507372f0b1b963James Dong 3000c1bc742181ded4930842b46e9507372f0b1b963James DongDCChroma8x8UpperStore 3010c1bc742181ded4930842b46e9507372f0b1b963James Dong 3020c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pTmp, pDst, dstStep 3030c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD step, dstStep, dstStep 3040c1bc742181ded4930842b46e9507372f0b1b963James Dong 3050c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pDst],step ;// pDst[0*dstStep+x] :0<= x <= 7 3060c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pTmp],step ;// pDst[1*dstStep+x] :0<= x <= 7 3070c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pDst],step ;// pDst[2*dstStep+x] :0<= x <= 7 3080c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pTmp],step ;// pDst[3*dstStep+x] :0<= x <= 7 3090c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pDst],step ;// pDst[4*dstStep+x] :0<= x <= 7 3100c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pTmp],step ;// pDst[5*dstStep+x] :0<= x <= 7 3110c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pDst],step ;// pDst[6*dstStep+x] :0<= x <= 7 3120c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dDstRow0,[pTmp] ;// pDst[7*dstStep+x] :0<= x <= 7 3130c1bc742181ded4930842b46e9507372f0b1b963James Dong 3140c1bc742181ded4930842b46e9507372f0b1b963James Dong M_EXIT 3150c1bc742181ded4930842b46e9507372f0b1b963James Dong 3160c1bc742181ded4930842b46e9507372f0b1b963James Dong 3170c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_CHROMA_VERT 3180c1bc742181ded4930842b46e9507372f0b1b963James Dong 3190c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 dAboveVal,[pSrcAbove] ;// pSrcAbove[x] :0<= x <= 7 3200c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV return, #OMX_Sts_NoErr 3210c1bc742181ded4930842b46e9507372f0b1b963James Dong 3220c1bc742181ded4930842b46e9507372f0b1b963James Dong B DCChroma8x8UpperStore 3230c1bc742181ded4930842b46e9507372f0b1b963James Dong 3240c1bc742181ded4930842b46e9507372f0b1b963James Dong 3250c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_CHROMA_HOR 3260c1bc742181ded4930842b46e9507372f0b1b963James Dong 3270c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pTmp, pSrcLeft, leftStep 3280c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD step, leftStep, leftStep 3290c1bc742181ded4930842b46e9507372f0b1b963James Dong 3300c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal0[]},[pSrcLeft],step ;// pSrcLeft[0*leftStep] 3310c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal1[]},[pTmp],step ;// pSrcLeft[1*leftStep] 3320c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal2[]},[pSrcLeft],step ;// pSrcLeft[2*leftStep] 3330c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal3[]},[pTmp],step ;// pSrcLeft[3*leftStep] 3340c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal4[]},[pSrcLeft],step ;// pSrcLeft[4*leftStep] 3350c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal5[]},[pTmp],step ;// pSrcLeft[5*leftStep] 3360c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal6[]},[pSrcLeft],step ;// pSrcLeft[6*leftStep] 3370c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal7[]},[pTmp] ;// pSrcLeft[7*leftStep] 3380c1bc742181ded4930842b46e9507372f0b1b963James Dong 3390c1bc742181ded4930842b46e9507372f0b1b963James Dong B DCChroma8x8PlaneStore 3400c1bc742181ded4930842b46e9507372f0b1b963James Dong 3410c1bc742181ded4930842b46e9507372f0b1b963James Dong 3420c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_CHROMA_PLANE 3430c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pTmp, pSrcLeft, leftStep 3440c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD step, leftStep, leftStep 3450c1bc742181ded4930842b46e9507372f0b1b963James Dong 3460c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 dAboveVal,[pSrcAbove] ;// pSrcAbove[x] :0<= x <= 7 3470c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 dAboveLeftVal[0],[pSrcAboveLeft] 3480c1bc742181ded4930842b46e9507372f0b1b963James Dong 3490c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[0]},[pSrcLeft],step ;// pSrcLeft[0*leftStep] 3500c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[1]},[pTmp],step ;// pSrcLeft[1*leftStep] 3510c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[2]},[pSrcLeft],step ;// pSrcLeft[2*leftStep] 3520c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[3]},[pTmp],step ;// pSrcLeft[3*leftStep] 3530c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[4]},[pSrcLeft],step ;// pSrcLeft[4*leftStep] 3540c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[5]},[pTmp],step ;// pSrcLeft[5*leftStep] 3550c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[6]},[pSrcLeft],step ;// pSrcLeft[6*leftStep] 3560c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dLeftVal[7]},[pTmp] ;// pSrcLeft[7*leftStep] 3570c1bc742181ded4930842b46e9507372f0b1b963James Dong 3580c1bc742181ded4930842b46e9507372f0b1b963James Dong 3590c1bc742181ded4930842b46e9507372f0b1b963James Dong VREV64 dRevAboveVal,dAboveVal ;// Reverse order of bytes = pSrcAbove[0:1:2:3:4:5:6:7] 3600c1bc742181ded4930842b46e9507372f0b1b963James Dong VSUBL qAbove7minus0,dRevAboveVal,dAboveLeftVal ;// qAbove7minus0[0] = pSrcAbove[7] - pSrcAboveLeft[0] 3610c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHR dRevAboveValU64,dRevAboveValU64,#8 ;// pSrcAbove[X:0:1:2:3:4:5:6] 3620c1bc742181ded4930842b46e9507372f0b1b963James Dong VSUBL qAboveDiff,dRevAboveVal,dAboveVal ;// pSrcAbove[6] - pSrcAbove[0] 3630c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// pSrcAbove[5] - pSrcAbove[1] 3640c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// pSrcAbove[4] - pSrcAbove[2] 3650c1bc742181ded4930842b46e9507372f0b1b963James Dong 3660c1bc742181ded4930842b46e9507372f0b1b963James Dong VREV64 dRevLeftVal,dLeftVal ;// Reverse order of bytes = pSrcLeft[0:1:2:3:4:5:6:7] 3670c1bc742181ded4930842b46e9507372f0b1b963James Dong VSUBL qLeft7minus0,dRevLeftVal,dAboveLeftVal ;// qAbove7minus0[0] = pSrcLeft[7] - pSrcAboveLeft[0] 3680c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHR dRevLeftValU64,dRevLeftValU64,#8 ;// pSrcLeft[X:0:1:2:3:4:5:6] 3690c1bc742181ded4930842b46e9507372f0b1b963James Dong VSUBL qLeftDiff,dRevLeftVal,dLeftVal ;// pSrcLeft[6] - pSrcLeft[0] 3700c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// pSrcLeft[5] - pSrcLeft[1] 3710c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// pSrcLeft[4] - pSrcLeft[2] 3720c1bc742181ded4930842b46e9507372f0b1b963James Dong 3730c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR pMultiplierTable,=armVCM4P10_MultiplierTableChroma8x8 ;// Used to calculate Hval & Vval 3740c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHL dAboveDiff0U64,dAboveDiff0U64,#16 3750c1bc742181ded4930842b46e9507372f0b1b963James Dong VEXT dDiffAboveU8,dAboveDiff0U8,dAbove7minus0U8,#2 ;// pSrcAbove[ 7-0 | 4-2 | 5-1 | 6-0 ] 3760c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 dMultiplier,[pMultiplierTable]! 3770c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHL dLeftDiff0U64,dLeftDiff0U64,#16 3780c1bc742181ded4930842b46e9507372f0b1b963James Dong VEXT dDiffLeftU8,dLeftDiff0U8,dLeft7minus0U8,#2 ;// pSrcLeft[ 7-0 | 4-2 | 5-1 | 6-0 ] 3790c1bc742181ded4930842b46e9507372f0b1b963James Dong 3800c1bc742181ded4930842b46e9507372f0b1b963James Dong 3810c1bc742181ded4930842b46e9507372f0b1b963James Dong VMUL dHorPred,dDiffAboveS16,dMultiplier ;// pSrcAbove[ 4*(7-0) | 1*(4-2) | 2*(5-1) | 3*(6-0) ] 3820c1bc742181ded4930842b46e9507372f0b1b963James Dong VMUL dVerPred,dDiffLeftS16,dMultiplier 3830c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADD dHVValS16,dHorPred,dVerPred 3840c1bc742181ded4930842b46e9507372f0b1b963James Dong 3850c1bc742181ded4930842b46e9507372f0b1b963James Dong 3860c1bc742181ded4930842b46e9507372f0b1b963James Dong VPADDL dHVValS32,dHVValS16 ;// [V|H] in 32 bits each 3870c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHL dHVTempS32,dHVValS32,#4 ;// 17*H = 16*H + H = (H<<4)+H 3880c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD dHVValS32,dHVValS32,dHVTempS32 ;// [ 17*V | 17*H ]in 32 bits each 3890c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {dMultiplier0,dMultiplier1},[pMultiplierTable] ;// qMultiplier = [ 4|3|2|1|0|-1|-2|-3 ] 3900c1bc742181ded4930842b46e9507372f0b1b963James Dong VRSHR dHVValS32,dHVValS32,#5 ;// [c|b] in 16bits each 3910c1bc742181ded4930842b46e9507372f0b1b963James Dong VADDL qA,dAboveVal,dLeftVal 3920c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qA,qA[7] 3930c1bc742181ded4930842b46e9507372f0b1b963James Dong VSHL qA,qA,#4 ;// [a|a|a|a|a|a|a|a] 3940c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qB,dHVValS16[0] ;// [b|b|b|b|b|b|b|b] 3950c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC,dHVValS16[2] ;// [c|c|c|c|c|c|c|c] 3960c1bc742181ded4930842b46e9507372f0b1b963James Dong 3970c1bc742181ded4930842b46e9507372f0b1b963James Dong 3980c1bc742181ded4930842b46e9507372f0b1b963James Dong VMUL qB,qB,qMultiplier 3990c1bc742181ded4930842b46e9507372f0b1b963James Dong VMUL qC,qC,qMultiplier 4000c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qB,qB,qA 4010c1bc742181ded4930842b46e9507372f0b1b963James Dong 4020c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC0,qC[0] 4030c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC1,qC[1] 4040c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC2,qC[2] 4050c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC3,qC[3] 4060c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC4,qC[4] 4070c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC5,qC[5] 4080c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC6,qC[6] 4090c1bc742181ded4930842b46e9507372f0b1b963James Dong VDUP qC7,qC[7] 4100c1bc742181ded4930842b46e9507372f0b1b963James Dong 4110c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qSum0,qB,qC0 4120c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qSum1,qB,qC1 4130c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qSum2,qB,qC2 4140c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qSum3,qB,qC3 4150c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qSum4,qB,qC4 4160c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qSum5,qB,qC5 4170c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qSum6,qB,qC6 4180c1bc742181ded4930842b46e9507372f0b1b963James Dong VADD qSum7,qB,qC7 4190c1bc742181ded4930842b46e9507372f0b1b963James Dong 4200c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRUN dSum0,qSum0,#5 ;// (OMX_U8)armClip(0,255,(Sum+16)>>5) 4210c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRUN dSum1,qSum1,#5 4220c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRUN dSum2,qSum2,#5 4230c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRUN dSum3,qSum3,#5 4240c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRUN dSum4,qSum4,#5 4250c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRUN dSum5,qSum5,#5 4260c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRUN dSum6,qSum6,#5 4270c1bc742181ded4930842b46e9507372f0b1b963James Dong VQRSHRUN dSum7,qSum7,#5 4280c1bc742181ded4930842b46e9507372f0b1b963James Dong 4290c1bc742181ded4930842b46e9507372f0b1b963James DongDCChroma8x8PlaneStore 4300c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pTmp, pDst, dstStep 4310c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD step, dstStep, dstStep 4320c1bc742181ded4930842b46e9507372f0b1b963James Dong 4330c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dSum0,[pDst],step ;// pDst[0*dstStep+x] :0<= x <= 7 4340c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dSum1,[pTmp],step ;// pDst[1*dstStep+x] :0<= x <= 7 4350c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dSum2,[pDst],step ;// pDst[2*dstStep+x] :0<= x <= 7 4360c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dSum3,[pTmp],step ;// pDst[3*dstStep+x] :0<= x <= 7 4370c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dSum4,[pDst],step ;// pDst[4*dstStep+x] :0<= x <= 7 4380c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dSum5,[pTmp],step ;// pDst[5*dstStep+x] :0<= x <= 7 4390c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dSum6,[pDst],step ;// pDst[6*dstStep+x] :0<= x <= 7 4400c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 dSum7,[pTmp] ;// pDst[7*dstStep+x] :0<= x <= 7 4410c1bc742181ded4930842b46e9507372f0b1b963James Dong 4420c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV return, #OMX_Sts_NoErr 4430c1bc742181ded4930842b46e9507372f0b1b963James Dong M_END 4440c1bc742181ded4930842b46e9507372f0b1b963James Dong 4450c1bc742181ded4930842b46e9507372f0b1b963James Dong ENDIF ;// CortexA8 4460c1bc742181ded4930842b46e9507372f0b1b963James Dong 4470c1bc742181ded4930842b46e9507372f0b1b963James Dong END 4480c1bc742181ded4930842b46e9507372f0b1b963James Dong;//----------------------------------------------------------------------------------------------- 4490c1bc742181ded4930842b46e9507372f0b1b963James Dong;// omxVCM4P10_PredictIntraChroma_8x8 ends 4500c1bc742181ded4930842b46e9507372f0b1b963James Dong;//----------------------------------------------------------------------------------------------- 451