xref: /OK3568_Linux_fs/kernel/arch/arm64/include/asm/neon-intrinsics.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) 2018 Linaro, Ltd. <ard.biesheuvel@linaro.org>
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #ifndef __ASM_NEON_INTRINSICS_H
7*4882a593Smuzhiyun #define __ASM_NEON_INTRINSICS_H
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <asm-generic/int-ll64.h>
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun /*
12*4882a593Smuzhiyun  * In the kernel, u64/s64 are [un]signed long long, not [un]signed long.
13*4882a593Smuzhiyun  * So by redefining these macros to the former, we can force gcc-stdint.h
14*4882a593Smuzhiyun  * to define uint64_t / in64_t in a compatible manner.
15*4882a593Smuzhiyun  */
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #ifdef __INT64_TYPE__
18*4882a593Smuzhiyun #undef __INT64_TYPE__
19*4882a593Smuzhiyun #define __INT64_TYPE__		long long
20*4882a593Smuzhiyun #endif
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun #ifdef __UINT64_TYPE__
23*4882a593Smuzhiyun #undef __UINT64_TYPE__
24*4882a593Smuzhiyun #define __UINT64_TYPE__		unsigned long long
25*4882a593Smuzhiyun #endif
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun /*
28*4882a593Smuzhiyun  * genksyms chokes on the ARM NEON instrinsics system header, but we
29*4882a593Smuzhiyun  * don't export anything it defines anyway, so just disregard when
30*4882a593Smuzhiyun  * genksyms execute.
31*4882a593Smuzhiyun  */
32*4882a593Smuzhiyun #ifndef __GENKSYMS__
33*4882a593Smuzhiyun #include <arm_neon.h>
34*4882a593Smuzhiyun #endif
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun #ifdef CONFIG_CC_IS_CLANG
37*4882a593Smuzhiyun #pragma clang diagnostic ignored "-Wincompatible-pointer-types"
38*4882a593Smuzhiyun #endif
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #endif /* __ASM_NEON_INTRINSICS_H */
41