Home | History | Annotate | Download | only in src
      1 ; /**
      2 ; *
      3 ; * File Name:  armVCM4P2_Clip8_s.s
      4 ; * OpenMAX DL: v1.0.2
      5 ; * Revision:   9641
      6 ; * Date:       Thursday, February 7, 2008
      7 ; *
      8 ; * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
      9 ; *
     10 ; *
     11 ; *
     12 ; * Description:
     13 ; * Contains module for Clipping 16 bit value to [0,255] Range
     14 ; */
     15 
     16       INCLUDE omxtypes_s.h
     17       INCLUDE armCOMM_s.h
     18 
     19 
     20       M_VARIANTS ARM1136JS
     21 
     22 
     23 
     24       IF ARM1136JS
     25 
     26 ;//Input Arguments
     27 
     28 pSrc                 RN 0
     29 pDst                 RN 1
     30 step                 RN 2
     31 
     32 ;// Local variables
     33 
     34 x0                   RN 3
     35 x1                   RN 4
     36 x2                   RN 5
     37 x3                   RN 6
     38 
     39 Count                RN 14
     40 
     41 
     42         M_START armVCM4P2_Clip8,r6
     43 
     44 
     45         MOV          Count,#8
     46 loop
     47 
     48         LDMIA        pSrc!,{x0, x1}
     49         SUBS         Count,Count, #1          ;// count down
     50         LDMIA        pSrc!,{x2, x3}
     51         USAT16       x0, #8, x0                 ;// clip two samples to [0,255]
     52         USAT16       x1, #8, x1                 ;// clip two samples to [0,255]
     53         STRB         x0, [pDst]
     54         MOV          x0, x0, LSR #16
     55         STRB         x0, [pDst,#1]
     56         STRB         x1, [pDst,#2]
     57         MOV          x1, x1, LSR #16
     58         STRB         x1, [pDst,#3]
     59 
     60         USAT16       x2, #8, x2                 ;// clip two samples to [0,255]
     61         USAT16       x3, #8, x3                 ;// clip two samples to [0,255]
     62         STRB         x2, [pDst,#4]
     63         MOV          x2, x2, LSR #16
     64         STRB         x2, [pDst,#5]
     65         STRB         x3, [pDst,#6]
     66         MOV          x3, x3, LSR #16
     67         STRB         x3, [pDst,#7]
     68         ADD          pDst,pDst,step             ;// Increment pDst by step value
     69 
     70         BGT          loop                       ;// Continue loop until Count reaches 64
     71 
     72         M_END
     73         ENDIF
     74 
     75         END
     76