armVCM4P2_Clip8_s.s revision 0c1bc742181ded4930842b46e9507372f0b1b963
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
28pSrc                 RN 0
29pDst                 RN 1
30step                 RN 2
31
32;// Local variables
33
34x0                   RN 3
35x1                   RN 4
36x2                   RN 5
37x3                   RN 6
38
39Count                RN 14
40
41
42        M_START armVCM4P2_Clip8,r6
43
44
45        MOV          Count,#8
46loop
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