1aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/******************************************************************************
2aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
3aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Copyright (C) 2015 The Android Open Source Project
4aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
5aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Licensed under the Apache License, Version 2.0 (the "License");
6aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * you may not use this file except in compliance with the License.
7aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * You may obtain a copy of the License at:
8aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
9aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * http://www.apache.org/licenses/LICENSE-2.0
10aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
11aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Unless required by applicable law or agreed to in writing, software
12aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * distributed under the License is distributed on an "AS IS" BASIS,
13aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * See the License for the specific language governing permissions and
15aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * limitations under the License.
16aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
17aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *****************************************************************************
18aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/
20aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifndef __IMPEG2_PLATFORM_MACROS_H__
21aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define __IMPEG2_PLATFORM_MACROS_H__
22aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
23aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
24aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define CONV_LE_TO_BE(u4_temp2,u4_temp1) u4_temp2 =                            \
25aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani                                         (u4_temp1 << 24) |                    \
26aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani                                         ((u4_temp1 & 0xff00) << 8) |          \
27aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani                                         ((u4_temp1 & 0xff0000) >> 8) |        \
28aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani                                         (u4_temp1 >> 24);
29aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
30aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistatic __inline  UWORD32 CLZ(UWORD32 u4_word)
31aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
32aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    if(u4_word)
33aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        return (__builtin_clz(u4_word));
34aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    else
35aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        return 32;
36aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}
37aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistatic __inline WORD32 CLIP_U8(WORD32 x)
38aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
39aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    asm("usat %0, #8, %1" : "=r"(x) : "r"(x));
40aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    return x;
41aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}
42aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
43aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistatic __inline WORD32 CLIP_S8(WORD32 x)
44aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
45aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    asm("ssat %0, #8, %1" : "=r"(x) : "r"(x));
46aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    return x;
47aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}
48aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
49aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistatic __inline WORD32 CLIP_U12(WORD32 x)
50aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
51aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    asm("usat %0, #12, %1" : "=r"(x) : "r"(x));
52aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    return x;
53aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}
54aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
55aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistatic __inline WORD32 CLIP_S12(WORD32 x)
56aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
57aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    asm("ssat %0, #12, %1" : "=r"(x) : "r"(x));
58aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    return x;
59aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}
60aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
61aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistatic __inline WORD32 CLIP_U16(WORD32 x)
62aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
63aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    asm("usat %0, #16, %1" : "=r"(x) : "r"(x));
64aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    return x;
65aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}
66aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistatic __inline WORD32 CLIP_S16(WORD32 x)
67aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
68aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    asm("ssat %0, #16, %1" : "=r"(x) : "r"(x));
69aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    return x;
70aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}
71aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
72aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define INLINE
73aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define PLD(x) __pld(x)
74aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
75aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif /* __IMPEG2_PLATFORM_MACROS_H__ */
76