armVCM4P2_Clip8_s.s revision 0c1bc742181ded4930842b46e9507372f0b1b963
1; /**
2; *
3; * File Name:  armVCM4P2_Clip8_s.s
4; * OpenMAX DL: v1.0.2
5; * Revision:   12290
6; * Date:       Wednesday, April 9, 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 CortexA8
21
22      IF CortexA8
23;//Input Arguments
24
25pSrc                 RN 0
26pDst                 RN 1
27step                 RN 2
28
29;// Neon Registers
30
31qx0                  QN  Q0.S16
32dx00                 DN  D0.S16
33dx01                 DN  D1.S16
34qx1                  QN  Q1.S16
35dx10                 DN  D2.S16
36dx11                 DN  D3.S16
37
38qx2                  QN  Q2.S16
39dx20                 DN  D4.S16
40dx21                 DN  D5.S16
41qx3                  QN  Q3.S16
42dx30                 DN  D6.S16
43dx31                 DN  D7.S16
44
45
46dclip0               DN  D0.U8
47dclip1               DN  D2.U8
48dclip2               DN  D4.U8
49dclip3               DN  D6.U8
50
51       M_START armVCM4P2_Clip8
52
53       VLD1          {dx00,dx01,dx10,dx11},[pSrc]!          ;// Load 16 entries from pSrc
54       VLD1          {dx20,dx21,dx30,dx31},[pSrc]!          ;// Load next 16 entries from pSrc
55       VQSHRUN       dclip0,qx0,#0                          ;// dclip0[i]=clip qx0[i] to [0,255]
56       VQSHRUN       dclip1,qx1,#0                          ;// dclip1[i]=clip qx1[i] to [0,255]
57       VST1          {dclip0},[pDst],step                   ;// store 8 bytes and pDst=pDst+step
58       VST1          {dclip1},[pDst],step                   ;// store 8 bytes and pDst=pDst+step
59       VQSHRUN       dclip2,qx2,#0
60       VQSHRUN       dclip3,qx3,#0
61       VST1          {dclip2},[pDst],step
62       VST1          {dclip3},[pDst],step
63
64       VLD1          {dx00,dx01,dx10,dx11},[pSrc]!          ;// Load 16 entries from pSrc
65       VLD1          {dx20,dx21,dx30,dx31},[pSrc]!          ;// Load next 16 entries from pSrc
66       VQSHRUN       dclip0,qx0,#0                          ;// dclip0[i]=clip qx0[i] to [0,255]
67       VQSHRUN       dclip1,qx1,#0                          ;// dclip1[i]=clip qx1[i] to [0,255]
68       VST1          {dclip0},[pDst],step                   ;// store 8 bytes and pDst=pDst+step
69       VST1          {dclip1},[pDst],step                   ;// store 8 bytes and pDst=pDst+step
70       VQSHRUN       dclip2,qx2,#0
71       VQSHRUN       dclip3,qx3,#0
72       VST1          {dclip2},[pDst],step
73       VST1          {dclip3},[pDst],step
74
75
76
77        M_END
78        ENDIF
79
80
81
82        END
83