10c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 20c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 30c1bc742181ded4930842b46e9507372f0b1b963James Dong;// File Name: omxVCM4P2_IDCT8x8blk_s.s 40c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OpenMAX DL: v1.0.2 50c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Revision: 12290 60c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Date: Wednesday, April 9, 2008 70c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 80c1bc742181ded4930842b46e9507372f0b1b963James Dong;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 90c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 100c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 110c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 120c1bc742181ded4930842b46e9507372f0b1b963James Dong 130c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Function: 140c1bc742181ded4930842b46e9507372f0b1b963James Dong;// omxVCM4P2_IDCT8x8blk 150c1bc742181ded4930842b46e9507372f0b1b963James Dong;// 160c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Include headers 170c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE omxtypes_s.h 180c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE armCOMM_s.h 190c1bc742181ded4930842b46e9507372f0b1b963James Dong 200c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Define cpu variants 210c1bc742181ded4930842b46e9507372f0b1b963James Dong M_VARIANTS CortexA8 220c1bc742181ded4930842b46e9507372f0b1b963James Dong 230c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE armCOMM_IDCT_s.h 240c1bc742181ded4930842b46e9507372f0b1b963James Dong 250c1bc742181ded4930842b46e9507372f0b1b963James Dong IMPORT armCOMM_IDCTPreScale 260c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// 270c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// Function prototype 280c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// 290c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// OMXResult 300c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// omxVCM4P2_IDCT8x8blk(const OMX_S16* pSrc, 310c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// OMX_S16* pDst) 320c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// 330c1bc742181ded4930842b46e9507372f0b1b963James Dong 340c1bc742181ded4930842b46e9507372f0b1b963James Dong IF CortexA8 350c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ALLOC4 ppDest, 4 360c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ALLOC4 pStride, 4 370c1bc742181ded4930842b46e9507372f0b1b963James Dong M_ALLOC8 pBlk, 2*8*8 380c1bc742181ded4930842b46e9507372f0b1b963James Dong ENDIF 390c1bc742181ded4930842b46e9507372f0b1b963James Dong 400c1bc742181ded4930842b46e9507372f0b1b963James Dong 410c1bc742181ded4930842b46e9507372f0b1b963James Dong IF CortexA8 420c1bc742181ded4930842b46e9507372f0b1b963James Dong M_START omxVCM4P2_IDCT8x8blk, r11, d15 430c1bc742181ded4930842b46e9507372f0b1b963James Dong ENDIF 440c1bc742181ded4930842b46e9507372f0b1b963James Dong 450c1bc742181ded4930842b46e9507372f0b1b963James Dong IF CortexA8 460c1bc742181ded4930842b46e9507372f0b1b963James Dong 470c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Declare input registers 480c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc RN 0 490c1bc742181ded4930842b46e9507372f0b1b963James DongpDst RN 1 500c1bc742181ded4930842b46e9507372f0b1b963James Dong 510c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Declare other intermediate registers 520c1bc742181ded4930842b46e9507372f0b1b963James DongResult RN 0 530c1bc742181ded4930842b46e9507372f0b1b963James Dong 540c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Prototype for macro M_IDCT 550c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pSrc RN 0 ;// source data buffer 560c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Stride RN 1 ;// destination stride in bytes 570c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pDest RN 2 ;// destination data buffer 580c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pScale RN 3 ;// pointer to scaling table 590c1bc742181ded4930842b46e9507372f0b1b963James Dong 600c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc RN 0 610c1bc742181ded4930842b46e9507372f0b1b963James DongStride RN 1 620c1bc742181ded4930842b46e9507372f0b1b963James DongpDest RN 2 630c1bc742181ded4930842b46e9507372f0b1b963James DongpScale RN 3 640c1bc742181ded4930842b46e9507372f0b1b963James Dong 650c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV pDest, pDst 660c1bc742181ded4930842b46e9507372f0b1b963James Dong LDR pScale, =armCOMM_IDCTPreScale 670c1bc742181ded4930842b46e9507372f0b1b963James Dong M_IDCT s9, s16, 16 680c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV Result, #OMX_Sts_NoErr 690c1bc742181ded4930842b46e9507372f0b1b963James Dong M_END 700c1bc742181ded4930842b46e9507372f0b1b963James Dong ENDIF 710c1bc742181ded4930842b46e9507372f0b1b963James Dong ;// ARM1136JS :LOR: CortexA8 720c1bc742181ded4930842b46e9507372f0b1b963James Dong 730c1bc742181ded4930842b46e9507372f0b1b963James Dong END 74