[Bf-blender-cvs] [0c824837ab0] master: Cycles: Cleanup in oneAPI math includes and definitions

Werner, Stefan noreply at git.blender.org
Thu Sep 22 11:36:21 CEST 2022


Commit: 0c824837ab08822b95c24d33f561213f20ce3cbd
Author: Werner, Stefan
Date:   Thu Sep 22 11:33:57 2022 +0200
Branches: master
https://developer.blender.org/rB0c824837ab08822b95c24d33f561213f20ce3cbd

Cycles: Cleanup in oneAPI math includes and definitions

Now explicitly including math.h first before #defining funcitons.
This avoids undefined behavior and improves compatibility with
different SYCL compilers and backends.

===================================================================

M	intern/cycles/kernel/device/oneapi/compat.h

===================================================================

diff --git a/intern/cycles/kernel/device/oneapi/compat.h b/intern/cycles/kernel/device/oneapi/compat.h
index 5c49674f247..8ae40b0612e 100644
--- a/intern/cycles/kernel/device/oneapi/compat.h
+++ b/intern/cycles/kernel/device/oneapi/compat.h
@@ -10,6 +10,7 @@
 #define CCL_NAMESPACE_END
 
 #include <cstdint>
+#include <math.h>
 
 #ifndef __NODES_MAX_GROUP__
 #  define __NODES_MAX_GROUP__ NODE_GROUP_LEVEL_MAX
@@ -174,21 +175,15 @@ using sycl::half;
 #define fmodf(x, y) sycl::fmod((x), (y))
 #define lgammaf(x) sycl::lgamma((x))
 
-#define __forceinline __attribute__((always_inline))
-
-/* Types */
-#include "util/half.h"
-#include "util/types.h"
-
-/* NOTE(@nsirgien): Declaring these functions after types headers is very important because they
- * include oneAPI headers, which transitively include math.h headers which will cause redefinitions
- * of the math defines because math.h also uses them and having them defined before math.h include
- * is actually UB. */
-/* Use fast math functions - get them from sycl::native namespace for native math function
- * implementations */
 #define cosf(x) sycl::native::cos(((float)(x)))
 #define sinf(x) sycl::native::sin(((float)(x)))
 #define powf(x, y) sycl::native::powr(((float)(x)), ((float)(y)))
 #define tanf(x) sycl::native::tan(((float)(x)))
 #define logf(x) sycl::native::log(((float)(x)))
 #define expf(x) sycl::native::exp(((float)(x)))
+
+#define __forceinline __attribute__((always_inline))
+
+/* Types */
+#include "util/half.h"
+#include "util/types.h"



More information about the Bf-blender-cvs mailing list