Home | History | Annotate | Download | only in src
      1  ;/**
      2  ; * Function: omxVCCOMM_Copy16x16
      3  ; *
      4  ; * Description:
      5  ; * Copies the reference 16x16 block to the current block.
      6  ; * Parameters:
      7  ; * [in] pSrc         - pointer to the reference block in the source frame; must be aligned on an 16-byte boundary.
      8  ; * [in] step         - distance between the starts of consecutive lines in the reference frame, in bytes;
      9  ; *                     must be a multiple of 16 and must be larger than or equal to 16.
     10  ; * [out] pDst        - pointer to the destination block; must be aligned on an 8-byte boundary.
     11  ; * Return Value:
     12  ; * OMX_Sts_NoErr     - no error
     13  ; * OMX_Sts_BadArgErr - bad arguments; returned under any of the following conditions:
     14  ; *                   - one or more of the following pointers is NULL:  pSrc, pDst
     15  ; *                   - one or more of the following pointers is not aligned on an 16-byte boundary:  pSrc, pDst
     16  ; *                   - step <16 or step is not a multiple of 16.
     17  ; */
     18 
     19    INCLUDE omxtypes_s.h
     20 
     21 
     22      M_VARIANTS ARM1136JS
     23 
     24 
     25 
     26 
     27      IF ARM1136JS
     28 
     29 ;//Input Arguments
     30 pSrc    RN 0
     31 pDst    RN 1
     32 step    RN 2
     33 
     34 ;//Local Variables
     35 Count   RN 14
     36 X0      RN 2
     37 X1      RN 4
     38 
     39 Return  RN 0
     40 
     41      M_START omxVCCOMM_Copy16x16,r5
     42 
     43 
     44 
     45         SUB   Count,step,#8                 ;//Count=step-8
     46         LDRD  X0,[pSrc],#8                  ;//pSrc after loading pSrc=pSrc+8
     47         LDRD  X1,[pSrc],Count               ;//pSrc after loading pSrc=pSrc+step
     48 
     49         ;// loading 16 bytes and storing
     50         STRD  X0,[pDst],#8
     51         LDRD  X0,[pSrc],#8
     52         STRD  X1,[pDst],#8
     53         LDRD  X1,[pSrc],Count
     54 
     55         ;// loading 16 bytes and storing
     56         STRD  X0,[pDst],#8
     57         LDRD  X0,[pSrc],#8
     58         STRD  X1,[pDst],#8
     59         LDRD  X1,[pSrc],Count
     60 
     61         ;// loading 16 bytes and storing
     62         STRD  X0,[pDst],#8
     63         LDRD  X0,[pSrc],#8
     64         STRD  X1,[pDst],#8
     65         LDRD  X1,[pSrc],Count
     66 
     67         ;// loading 16 bytes and storing
     68         STRD  X0,[pDst],#8
     69         LDRD  X0,[pSrc],#8
     70         STRD  X1,[pDst],#8
     71         LDRD  X1,[pSrc],Count
     72 
     73         ;// loading 16 bytes and storing
     74         STRD  X0,[pDst],#8
     75         LDRD  X0,[pSrc],#8
     76         STRD  X1,[pDst],#8
     77         LDRD  X1,[pSrc],Count
     78 
     79         ;// loading 16 bytes and storing
     80         STRD  X0,[pDst],#8
     81         LDRD  X0,[pSrc],#8
     82         STRD  X1,[pDst],#8
     83         LDRD  X1,[pSrc],Count
     84 
     85         ;// loading 16 bytes and storing
     86         STRD  X0,[pDst],#8
     87         LDRD  X0,[pSrc],#8
     88         STRD  X1,[pDst],#8
     89         LDRD  X1,[pSrc],Count
     90 
     91         ;// loading 16 bytes and storing
     92         STRD  X0,[pDst],#8
     93         LDRD  X0,[pSrc],#8
     94         STRD  X1,[pDst],#8
     95         LDRD  X1,[pSrc],Count
     96 
     97         ;// loading 16 bytes and storing
     98         STRD  X0,[pDst],#8
     99         LDRD  X0,[pSrc],#8
    100         STRD  X1,[pDst],#8
    101         LDRD  X1,[pSrc],Count
    102 
    103         ;// loading 16 bytes and storing
    104         STRD  X0,[pDst],#8
    105         LDRD  X0,[pSrc],#8
    106         STRD  X1,[pDst],#8
    107         LDRD  X1,[pSrc],Count
    108 
    109         ;// loading 16 bytes and storing
    110         STRD  X0,[pDst],#8
    111         LDRD  X0,[pSrc],#8
    112         STRD  X1,[pDst],#8
    113         LDRD  X1,[pSrc],Count
    114 
    115         ;// loading 16 bytes and storing
    116         STRD  X0,[pDst],#8
    117         LDRD  X0,[pSrc],#8
    118         STRD  X1,[pDst],#8
    119         LDRD  X1,[pSrc],Count
    120 
    121         ;// loading 16 bytes and storing
    122         STRD  X0,[pDst],#8
    123         LDRD  X0,[pSrc],#8
    124         STRD  X1,[pDst],#8
    125         LDRD  X1,[pSrc],Count
    126 
    127         ;// loading 16 bytes and storing
    128         STRD  X0,[pDst],#8
    129         LDRD  X0,[pSrc],#8
    130         STRD  X1,[pDst],#8
    131         LDRD  X1,[pSrc],Count
    132 
    133         ;// loading 16 bytes and storing
    134         STRD  X0,[pDst],#8
    135         LDRD  X0,[pSrc],#8
    136         STRD  X1,[pDst],#8
    137         LDRD  X1,[pSrc],Count
    138 
    139         STRD  X0,[pDst],#8
    140         MOV   Return,#OMX_Sts_NoErr
    141         STRD  X1,[pDst],#8
    142 
    143 
    144         M_END
    145         ENDIF
    146 
    147         END
    148