1/*
2 * Copyright (C) 2004-2010 NXP Software
3 * Copyright (C) 2010 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/**********************************************************************************
19   INCLUDE FILES
20***********************************************************************************/
21
22#include "VectorArithmetic.h"
23
24
25/**********************************************************************************
26   FUNCTION ADD2_SAT_32X32
27***********************************************************************************/
28
29void Add2_Sat_32x32( const LVM_INT32  *src,
30                           LVM_INT32  *dst,
31                           LVM_INT16  n )
32{
33    LVM_INT32 a,b,c;
34    LVM_INT16 ii;
35    for (ii = n; ii != 0; ii--)
36    {
37        a=*src;
38        src++;
39
40        b=*dst;
41        c=a+b;
42        if ((((c ^ a) & (c ^ b)) >> 31)!=0)     /* overflow / underflow */
43        {
44            if(a<0)
45            {
46                c=0x80000000l;
47            }
48            else
49            {
50                c=0x7FFFFFFFl;
51            }
52        }
53
54        *dst = c;
55        dst++;
56    }
57    return;
58}
59
60/**********************************************************************************/
61