Files
test/source/blender/blenlib/BLI_simd.h
Sergey Sharybin 6afbb66a53 Cleanup: Noisy warnings caused by different defines for sse2neon
The issue is visible on Apple Silicon when building Cycles.

Cycles includes sse2neon.h via two code paths: own CPU headers and
Blender's headers. The Blender headers will request higher precision
defines and Cycles does not need it (not for the kernel anyway, as
it has measurable performance penalty).

The solution is to wrap defines in the BLI_simd.h with check, so
that the flags are not re-defined.

The Blender's integration in Cycles does not really care if those
operations are precise or not, as the actual computations are done
elsewhere.

Pull Request: https://projects.blender.org/blender/blender/pulls/110953
2023-08-09 13:12:53 +02:00

33 lines
736 B
C

/* SPDX-FileCopyrightText: 2023 Blender Foundation
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/** \file
* \ingroup bli
*
* SIMD instruction support.
*/
#if defined(__ARM_NEON) && defined(WITH_SSE2NEON)
/* SSE/SSE2 emulation on ARM Neon. Match SSE precision. */
# if !defined(SSE2NEON_PRECISE_MINMAX)
# define SSE2NEON_PRECISE_MINMAX 1
# endif
# if !defined(SSE2NEON_PRECISE_DIV)
# define SSE2NEON_PRECISE_DIV 1
# endif
# if !defined(SSE2NEON_PRECISE_SQRT)
# define SSE2NEON_PRECISE_SQRT 1
# endif
# include <sse2neon.h>
# define BLI_HAVE_SSE2 1
#elif defined(__SSE2__)
/* Native SSE2 on Intel/AMD. */
# include <emmintrin.h>
# define BLI_HAVE_SSE2 1
#else
# define BLI_HAVE_SSE2 0
#endif