10c1bc742181ded4930842b46e9507372f0b1b963James Dong ;/** 20c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Function: omxVCCOMM_Copy16x16 30c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * 40c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Description: 50c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Copies the reference 16x16 block to the current block. 60c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Parameters: 70c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * [in] pSrc - pointer to the reference block in the source frame; must be aligned on an 16-byte boundary. 80c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * [in] step - distance between the starts of consecutive lines in the reference frame, in bytes; 90c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * must be a multiple of 16 and must be larger than or equal to 16. 100c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * [out] pDst - pointer to the destination block; must be aligned on an 8-byte boundary. 110c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Return Value: 120c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * OMX_Sts_NoErr - no error 130c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * OMX_Sts_BadArgErr - bad arguments; returned under any of the following conditions: 140c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * - one or more of the following pointers is NULL: pSrc, pDst 150c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * - one or more of the following pointers is not aligned on an 16-byte boundary: pSrc, pDst 160c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * - step <16 or step is not a multiple of 16. 170c1bc742181ded4930842b46e9507372f0b1b963James Dong ; */ 180c1bc742181ded4930842b46e9507372f0b1b963James Dong 190c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE omxtypes_s.h 200c1bc742181ded4930842b46e9507372f0b1b963James Dong 210c1bc742181ded4930842b46e9507372f0b1b963James Dong 220c1bc742181ded4930842b46e9507372f0b1b963James Dong M_VARIANTS CortexA8 230c1bc742181ded4930842b46e9507372f0b1b963James Dong 240c1bc742181ded4930842b46e9507372f0b1b963James Dong IF CortexA8 250c1bc742181ded4930842b46e9507372f0b1b963James Dong 260c1bc742181ded4930842b46e9507372f0b1b963James Dong 270c1bc742181ded4930842b46e9507372f0b1b963James Dong ;//Input Arguments 280c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc RN 0 290c1bc742181ded4930842b46e9507372f0b1b963James DongpDst RN 1 300c1bc742181ded4930842b46e9507372f0b1b963James Dongstep RN 2 310c1bc742181ded4930842b46e9507372f0b1b963James Dong 320c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Local Variables 330c1bc742181ded4930842b46e9507372f0b1b963James DongReturn RN 0 340c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Neon Registers 350c1bc742181ded4930842b46e9507372f0b1b963James Dong 360c1bc742181ded4930842b46e9507372f0b1b963James DongX0 DN D0.S8 370c1bc742181ded4930842b46e9507372f0b1b963James DongX1 DN D1.S8 380c1bc742181ded4930842b46e9507372f0b1b963James DongX2 DN D2.S8 390c1bc742181ded4930842b46e9507372f0b1b963James DongX3 DN D3.S8 400c1bc742181ded4930842b46e9507372f0b1b963James DongX4 DN D4.S8 410c1bc742181ded4930842b46e9507372f0b1b963James DongX5 DN D5.S8 420c1bc742181ded4930842b46e9507372f0b1b963James DongX6 DN D6.S8 430c1bc742181ded4930842b46e9507372f0b1b963James DongX7 DN D7.S8 440c1bc742181ded4930842b46e9507372f0b1b963James Dong 450c1bc742181ded4930842b46e9507372f0b1b963James Dong M_START omxVCCOMM_Copy16x16 460c1bc742181ded4930842b46e9507372f0b1b963James Dong 470c1bc742181ded4930842b46e9507372f0b1b963James Dong 480c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X0,X1},[pSrc@128],step ;// Load 16 bytes from 16 byte aligned pSrc and pSrc=pSrc + step after loading 490c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X2,X3},[pSrc@128],step 500c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X4,X5},[pSrc@128],step 510c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X6,X7},[pSrc@128],step 520c1bc742181ded4930842b46e9507372f0b1b963James Dong 530c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 {X0,X1,X2,X3},[pDst@128]! ;// Store 32 bytes to 16 byte aligned pDst 540c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 {X4,X5,X6,X7},[pDst@128]! 550c1bc742181ded4930842b46e9507372f0b1b963James Dong 560c1bc742181ded4930842b46e9507372f0b1b963James Dong 570c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X0,X1},[pSrc@128],step 580c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X2,X3},[pSrc@128],step 590c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X4,X5},[pSrc@128],step 600c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X6,X7},[pSrc@128],step 610c1bc742181ded4930842b46e9507372f0b1b963James Dong 620c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 {X0,X1,X2,X3},[pDst@128]! 630c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 {X4,X5,X6,X7},[pDst@128]! 640c1bc742181ded4930842b46e9507372f0b1b963James Dong 650c1bc742181ded4930842b46e9507372f0b1b963James Dong 660c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X0,X1},[pSrc@128],step 670c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X2,X3},[pSrc@128],step 680c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X4,X5},[pSrc@128],step 690c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X6,X7},[pSrc@128],step 700c1bc742181ded4930842b46e9507372f0b1b963James Dong 710c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 {X0,X1,X2,X3},[pDst@128]! 720c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 {X4,X5,X6,X7},[pDst@128]! 730c1bc742181ded4930842b46e9507372f0b1b963James Dong 740c1bc742181ded4930842b46e9507372f0b1b963James Dong 750c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X0,X1},[pSrc@128],step 760c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X2,X3},[pSrc@128],step 770c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X4,X5},[pSrc@128],step 780c1bc742181ded4930842b46e9507372f0b1b963James Dong VLD1 {X6,X7},[pSrc@128],step 790c1bc742181ded4930842b46e9507372f0b1b963James Dong 800c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 {X0,X1,X2,X3},[pDst@128]! 810c1bc742181ded4930842b46e9507372f0b1b963James Dong VST1 {X4,X5,X6,X7},[pDst@128]! 820c1bc742181ded4930842b46e9507372f0b1b963James Dong 830c1bc742181ded4930842b46e9507372f0b1b963James Dong 840c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV Return,#OMX_Sts_NoErr 850c1bc742181ded4930842b46e9507372f0b1b963James Dong 860c1bc742181ded4930842b46e9507372f0b1b963James Dong 870c1bc742181ded4930842b46e9507372f0b1b963James Dong 880c1bc742181ded4930842b46e9507372f0b1b963James Dong M_END 890c1bc742181ded4930842b46e9507372f0b1b963James Dong ENDIF 900c1bc742181ded4930842b46e9507372f0b1b963James Dong 910c1bc742181ded4930842b46e9507372f0b1b963James Dong 920c1bc742181ded4930842b46e9507372f0b1b963James Dong 930c1bc742181ded4930842b46e9507372f0b1b963James Dong 940c1bc742181ded4930842b46e9507372f0b1b963James Dong END 950c1bc742181ded4930842b46e9507372f0b1b963James Dong