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 ARM1136JS
230c1bc742181ded4930842b46e9507372f0b1b963James Dong
240c1bc742181ded4930842b46e9507372f0b1b963James Dong
250c1bc742181ded4930842b46e9507372f0b1b963James Dong
260c1bc742181ded4930842b46e9507372f0b1b963James Dong
270c1bc742181ded4930842b46e9507372f0b1b963James Dong     IF ARM1136JS
280c1bc742181ded4930842b46e9507372f0b1b963James Dong
290c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Input Arguments
300c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc    RN 0
310c1bc742181ded4930842b46e9507372f0b1b963James DongpDst    RN 1
320c1bc742181ded4930842b46e9507372f0b1b963James Dongstep    RN 2
330c1bc742181ded4930842b46e9507372f0b1b963James Dong
340c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Local Variables
350c1bc742181ded4930842b46e9507372f0b1b963James DongCount   RN 14
360c1bc742181ded4930842b46e9507372f0b1b963James DongX0      RN 2
370c1bc742181ded4930842b46e9507372f0b1b963James DongX1      RN 4
380c1bc742181ded4930842b46e9507372f0b1b963James Dong
390c1bc742181ded4930842b46e9507372f0b1b963James DongReturn  RN 0
400c1bc742181ded4930842b46e9507372f0b1b963James Dong
410c1bc742181ded4930842b46e9507372f0b1b963James Dong     M_START omxVCCOMM_Copy16x16,r5
420c1bc742181ded4930842b46e9507372f0b1b963James Dong
430c1bc742181ded4930842b46e9507372f0b1b963James Dong
440c1bc742181ded4930842b46e9507372f0b1b963James Dong
450c1bc742181ded4930842b46e9507372f0b1b963James Dong        SUB   Count,step,#8                 ;//Count=step-8
460c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8                  ;//pSrc after loading pSrc=pSrc+8
470c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count               ;//pSrc after loading pSrc=pSrc+step
480c1bc742181ded4930842b46e9507372f0b1b963James Dong
490c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
500c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
510c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
520c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
530c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
540c1bc742181ded4930842b46e9507372f0b1b963James Dong
550c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
560c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
570c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
580c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
590c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
600c1bc742181ded4930842b46e9507372f0b1b963James Dong
610c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
620c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
630c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
640c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
650c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
660c1bc742181ded4930842b46e9507372f0b1b963James Dong
670c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
680c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
690c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
700c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
710c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
720c1bc742181ded4930842b46e9507372f0b1b963James Dong
730c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
740c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
750c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
760c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
770c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
780c1bc742181ded4930842b46e9507372f0b1b963James Dong
790c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
800c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
810c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
820c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
830c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
840c1bc742181ded4930842b46e9507372f0b1b963James Dong
850c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
860c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
870c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
880c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
890c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
900c1bc742181ded4930842b46e9507372f0b1b963James Dong
910c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
920c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
930c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
940c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
950c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
960c1bc742181ded4930842b46e9507372f0b1b963James Dong
970c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
980c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
990c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// loading 16 bytes and storing
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],#8
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
1370c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong
1390c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV   Return,#OMX_Sts_NoErr
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
1420c1bc742181ded4930842b46e9507372f0b1b963James Dong
1430c1bc742181ded4930842b46e9507372f0b1b963James Dong
1440c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_END
1450c1bc742181ded4930842b46e9507372f0b1b963James Dong        ENDIF
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong        END
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong