18520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar/****************************************************************************** 28520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * 38520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * Copyright (C) 2015 The Android Open Source Project 48520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * 58520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * Licensed under the Apache License, Version 2.0 (the "License"); 68520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * you may not use this file except in compliance with the License. 78520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * You may obtain a copy of the License at: 88520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * 98520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * http://www.apache.org/licenses/LICENSE-2.0 108520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * 118520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * Unless required by applicable law or agreed to in writing, software 128520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * distributed under the License is distributed on an "AS IS" BASIS, 138520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * See the License for the specific language governing permissions and 158520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * limitations under the License. 168520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * 178520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar ***************************************************************************** 188520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 198520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar*/ 208520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar/** 218520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar******************************************************************************* 228520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* @file 238520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* icv_platform_macros.h 248520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* 258520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* @brief 268520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* This header files contains all the platform/toolchain specific macros 278520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* 288520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* @author 298520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* Ittiam 308520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* 318520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* @par List of Functions: 328520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* 338520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* @remarks 348520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* None 358520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar* 368520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar******************************************************************************* 378520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar*/ 388520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#ifndef __ICV_PLATFORM_MACROS_H__ 398520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define __ICV_PLATFORM_MACROS_H__ 408520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 418520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define INLINE inline 428520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 438520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakarstatic INLINE UWORD32 CLZ(UWORD32 u4_word) 448520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar{ 458520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar if(u4_word) 468520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar return (__builtin_clz(u4_word)); 478520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar else 488520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar return 32; 498520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar} 508520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 518520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakarstatic __inline UWORD32 CLZNZ(UWORD32 u4_word) 528520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar{ 538520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar ASSERT(u4_word); 548520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar return (__builtin_clz(u4_word)); 558520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar} 568520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 578520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define CLIP_U8(x) ((x) > 255) ? (255) : (((x) < 0) ? (0) : (x)) 588520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define CLIP_S8(x) ((x) > 127) ? (127) : (((x) < -128) ? (-128) : (x)) 598520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 608520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define CLIP_U12(x) ((x) > 4095) ? (4095) : (((x) < 0) ? (0) : (x)) 618520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define CLIP_S12(x) ((x) > 2047) ? (2047) : (((x) < -2048) ? (-2048) : (x)) 628520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 638520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define CLIP_U16(x) ((x) > 65535) ? (65535) : (((x) < 0) ? (0) : (x)) 648520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define CLIP_S16(x) ((x) > 32767) ? (32767) : (((x) < -32768) ? (-32768) : (x)) 658520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 668520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define ITT_BIG_ENDIAN(x) __asm__("rev %0, %1" : "=r"(x) : "r"(x)); 678520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 688520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define NOP(nop_cnt) \ 698520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar{ \ 708520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar UWORD32 nop_i; \ 718520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar for (nop_i = 0; nop_i < nop_cnt; nop_i++) \ 728520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar __asm__ __volatile__("mov x0, x0"); \ 738520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar} 748520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 758520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 768520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define PREFETCH(x) __builtin_prefetch(x); 778520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 788520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define DATA_SYNC() __sync_synchronize() 798520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 808520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define SHL(x,y) (((y) < 32) ? ((x) << (y)) : 0) 818520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define SHR(x,y) (((y) < 32) ? ((x) >> (y)) : 0) 828520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 838520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define SHR_NEG(val,shift) (((shift) > 0) ? ( (val) >> (shift)) : ((val) << (-(shift)))) 848520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define SHL_NEG(val,shift) (((shift) > 0) ? ( (val) >> (-(shift))) : ((val) << (shift))) 858520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 868520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define INLINE inline 878520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 888520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define MEM_ALIGN8 __attribute__ ((aligned (8))) 898520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define MEM_ALIGN16 __attribute__ ((aligned (16))) 908520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#define MEM_ALIGN32 __attribute__ ((aligned (32))) 918520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 928520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar 938520690e241ad92a07893e198b2df417fe045d79Harish Mahendrakar#endif /* __ICV_PLATFORM_MACROS_H__ */ 94