armVCM4P2_Clip8_s.s revision 78e52bfac041d71ce53b5b13c2abf78af742b09d
1e62c1185bee05facc25d1d725434f517261d308bChris Lattner;//
201d45827a1e512f3b19ba857772bf02baa3c0c4eJohn Criswell;// Copyright (C) 2007-2008 ARM Limited
301d45827a1e512f3b19ba857772bf02baa3c0c4eJohn Criswell;//
401d45827a1e512f3b19ba857772bf02baa3c0c4eJohn Criswell;// Licensed under the Apache License, Version 2.0 (the "License");
501d45827a1e512f3b19ba857772bf02baa3c0c4eJohn Criswell;// you may not use this file except in compliance with the License.
601d45827a1e512f3b19ba857772bf02baa3c0c4eJohn Criswell;// You may obtain a copy of the License at
701d45827a1e512f3b19ba857772bf02baa3c0c4eJohn Criswell;//
801d45827a1e512f3b19ba857772bf02baa3c0c4eJohn Criswell;//      http://www.apache.org/licenses/LICENSE-2.0
9e62c1185bee05facc25d1d725434f517261d308bChris Lattner;//
1014d7c59491347a2f8f29e120fd75a4cad42f68e7Chris Lattner;// Unless required by applicable law or agreed to in writing, software
1114d7c59491347a2f8f29e120fd75a4cad42f68e7Chris Lattner;// distributed under the License is distributed on an "AS IS" BASIS,
12e62c1185bee05facc25d1d725434f517261d308bChris Lattner;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e62c1185bee05facc25d1d725434f517261d308bChris Lattner;// See the License for the specific language governing permissions and
14e62c1185bee05facc25d1d725434f517261d308bChris Lattner;// limitations under the License.
15e62c1185bee05facc25d1d725434f517261d308bChris Lattner;//
16e62c1185bee05facc25d1d725434f517261d308bChris Lattner; /**
17e62c1185bee05facc25d1d725434f517261d308bChris Lattner; *
18e62c1185bee05facc25d1d725434f517261d308bChris Lattner; * File Name:  armVCM4P2_Clip8_s.s
19e62c1185bee05facc25d1d725434f517261d308bChris Lattner; * OpenMAX DL: v1.0.2
20e62c1185bee05facc25d1d725434f517261d308bChris Lattner; * Revision:   9641
21e62c1185bee05facc25d1d725434f517261d308bChris Lattner; * Date:       Thursday, February 7, 2008
22b5b3c6fc0147b2e59b45f7f2882c7c615bb765aeChris Lattner; *
23028936ada14335bb04f377d46a6261dc4c66dafdJohn Criswell; *
24d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke; *
25d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke; *
267dda395004eb962cef1c1554b1e8b2ad069760e0Chris Lattner; * Description:
277cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner; * Contains module for Clipping 16 bit value to [0,255] Range
287cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner; */
297cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner
307cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner      INCLUDE omxtypes_s.h
317cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner      INCLUDE armCOMM_s.h
327cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner
3340f71134b9fef0ca06c516f033cc9403394a913cChris Lattner
347cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner      M_VARIANTS ARM1136JS
357cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner
367dda395004eb962cef1c1554b1e8b2ad069760e0Chris Lattner
371fca5ff62bb2ecb5bfc8974f4dbfc56e9d3ca721Chris Lattner
38e62c1185bee05facc25d1d725434f517261d308bChris Lattner      IF ARM1136JS
39e62c1185bee05facc25d1d725434f517261d308bChris Lattner
40e62c1185bee05facc25d1d725434f517261d308bChris Lattner;//Input Arguments
41e62c1185bee05facc25d1d725434f517261d308bChris Lattner
42e62c1185bee05facc25d1d725434f517261d308bChris LattnerpSrc                 RN 0
43e3a1d054483d6e2551a43232f2c968fc7ce523f2Chris LattnerpDst                 RN 1
44e62c1185bee05facc25d1d725434f517261d308bChris Lattnerstep                 RN 2
45e62c1185bee05facc25d1d725434f517261d308bChris Lattner
468e9a9774eb12b5242f74b8ac5b20e0a938ec9c53Chris Lattner;// Local variables
47b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattner
48b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattnerx0                   RN 3
49a1651900e1772b05afd2280308e9acc5a58cefb8Chris Lattnerx1                   RN 4
50b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattnerx2                   RN 5
511dba7abdd77e19c230f0426825a5ae4879471dccChris Lattnerx3                   RN 6
527cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner
537dda395004eb962cef1c1554b1e8b2ad069760e0Chris LattnerCount                RN 14
54e62c1185bee05facc25d1d725434f517261d308bChris Lattner
557dda395004eb962cef1c1554b1e8b2ad069760e0Chris Lattner
56e62c1185bee05facc25d1d725434f517261d308bChris Lattner        M_START armVCM4P2_Clip8,r6
57e62c1185bee05facc25d1d725434f517261d308bChris Lattner
58e62c1185bee05facc25d1d725434f517261d308bChris Lattner
59e62c1185bee05facc25d1d725434f517261d308bChris Lattner        MOV          Count,#8
60e62c1185bee05facc25d1d725434f517261d308bChris Lattnerloop
61e62c1185bee05facc25d1d725434f517261d308bChris Lattner
62e62c1185bee05facc25d1d725434f517261d308bChris Lattner        LDMIA        pSrc!,{x0, x1}
63e62c1185bee05facc25d1d725434f517261d308bChris Lattner        SUBS         Count,Count, #1          ;// count down
647cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner        LDMIA        pSrc!,{x2, x3}
657cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner        USAT16       x0, #8, x0                 ;// clip two samples to [0,255]
667cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner        USAT16       x1, #8, x1                 ;// clip two samples to [0,255]
677cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner        STRB         x0, [pDst]
687cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner        MOV          x0, x0, LSR #16
697cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner        STRB         x0, [pDst,#1]
707cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner        STRB         x1, [pDst,#2]
717cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner        MOV          x1, x1, LSR #16
72e62c1185bee05facc25d1d725434f517261d308bChris Lattner        STRB         x1, [pDst,#3]
73e62c1185bee05facc25d1d725434f517261d308bChris Lattner
74e62c1185bee05facc25d1d725434f517261d308bChris Lattner        USAT16       x2, #8, x2                 ;// clip two samples to [0,255]
75e62c1185bee05facc25d1d725434f517261d308bChris Lattner        USAT16       x3, #8, x3                 ;// clip two samples to [0,255]
76e62c1185bee05facc25d1d725434f517261d308bChris Lattner        STRB         x2, [pDst,#4]
77e62c1185bee05facc25d1d725434f517261d308bChris Lattner        MOV          x2, x2, LSR #16
78e3a1d054483d6e2551a43232f2c968fc7ce523f2Chris Lattner        STRB         x2, [pDst,#5]
79e62c1185bee05facc25d1d725434f517261d308bChris Lattner        STRB         x3, [pDst,#6]
80e62c1185bee05facc25d1d725434f517261d308bChris Lattner        MOV          x3, x3, LSR #16
818e9a9774eb12b5242f74b8ac5b20e0a938ec9c53Chris Lattner        STRB         x3, [pDst,#7]
82b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattner        ADD          pDst,pDst,step             ;// Increment pDst by step value
83b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattner
84b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattner        BGT          loop                       ;// Continue loop until Count reaches 64
85b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattner
86b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattner        M_END
87b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattner        ENDIF
88b45b3b3cd14faaf5a3ea5226af7e1e3cd653e6cbChris Lattner
89e62c1185bee05facc25d1d725434f517261d308bChris Lattner        END
907cf0ce4b8d122575c3348b5fa4947014c3d8432dChris Lattner