xref: /openbmc/linux/arch/arm64/include/asm/neon-intrinsics.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
221e28547SJackie Liu /*
321e28547SJackie Liu  * Copyright (C) 2018 Linaro, Ltd. <ard.biesheuvel@linaro.org>
421e28547SJackie Liu  */
521e28547SJackie Liu 
621e28547SJackie Liu #ifndef __ASM_NEON_INTRINSICS_H
721e28547SJackie Liu #define __ASM_NEON_INTRINSICS_H
821e28547SJackie Liu 
921e28547SJackie Liu #include <asm-generic/int-ll64.h>
1021e28547SJackie Liu 
1121e28547SJackie Liu /*
1221e28547SJackie Liu  * In the kernel, u64/s64 are [un]signed long long, not [un]signed long.
1321e28547SJackie Liu  * So by redefining these macros to the former, we can force gcc-stdint.h
1421e28547SJackie Liu  * to define uint64_t / in64_t in a compatible manner.
1521e28547SJackie Liu  */
1621e28547SJackie Liu 
1721e28547SJackie Liu #ifdef __INT64_TYPE__
1821e28547SJackie Liu #undef __INT64_TYPE__
1921e28547SJackie Liu #define __INT64_TYPE__		long long
2021e28547SJackie Liu #endif
2121e28547SJackie Liu 
2221e28547SJackie Liu #ifdef __UINT64_TYPE__
2321e28547SJackie Liu #undef __UINT64_TYPE__
2421e28547SJackie Liu #define __UINT64_TYPE__		unsigned long long
2521e28547SJackie Liu #endif
2621e28547SJackie Liu 
2721e28547SJackie Liu /*
2821e28547SJackie Liu  * genksyms chokes on the ARM NEON instrinsics system header, but we
2921e28547SJackie Liu  * don't export anything it defines anyway, so just disregard when
3021e28547SJackie Liu  * genksyms execute.
3121e28547SJackie Liu  */
3221e28547SJackie Liu #ifndef __GENKSYMS__
3321e28547SJackie Liu #include <arm_neon.h>
3421e28547SJackie Liu #endif
3521e28547SJackie Liu 
360738c8b5SNathan Chancellor #ifdef CONFIG_CC_IS_CLANG
370738c8b5SNathan Chancellor #pragma clang diagnostic ignored "-Wincompatible-pointer-types"
380738c8b5SNathan Chancellor #endif
390738c8b5SNathan Chancellor 
4021e28547SJackie Liu #endif /* __ASM_NEON_INTRINSICS_H */
41