From 41e17d370d67a584fbac9bbbe435c057c18715f4 Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Fri, 27 Oct 2023 06:03:34 +0800 Subject: Make the exponent return value from frexp int (#3284) * Make the exponent return value from frexp int Fixes https://github.com/shader-slang/slang/issues/3282 * Update slang-llvm. --------- Co-authored-by: Yong He --- prelude/slang-cpp-scalar-intrinsics.h | 22 ++++++---------------- prelude/slang-cuda-prelude.h | 18 ++++-------------- 2 files changed, 10 insertions(+), 30 deletions(-) (limited to 'prelude') diff --git a/prelude/slang-cpp-scalar-intrinsics.h b/prelude/slang-cpp-scalar-intrinsics.h index 2b9e7f777..acbe00152 100644 --- a/prelude/slang-cpp-scalar-intrinsics.h +++ b/prelude/slang-cpp-scalar-intrinsics.h @@ -169,7 +169,8 @@ float F32_fmod(float a, float b); float F32_remainder(float a, float b); float F32_atan2(float a, float b); -float F32_frexp(float x, float* e); +float F32_frexp(float x, int* e); + float F32_modf(float x, float* ip); // Ternary @@ -213,13 +214,8 @@ SLANG_FORCE_INLINE float F32_fmod(float a, float b) { return ::fmodf(a, b); } SLANG_FORCE_INLINE float F32_remainder(float a, float b) { return ::remainderf(a, b); } SLANG_FORCE_INLINE float F32_atan2(float a, float b) { return float(::atan2(a, b)); } -SLANG_FORCE_INLINE float F32_frexp(float x, float* e) -{ - int ei; - float m = ::frexpf(x, &ei); - *e = float(ei); - return m; -} +SLANG_FORCE_INLINE float F32_frexp(float x, int* e) { return ::frexpf(x, e); } + SLANG_FORCE_INLINE float F32_modf(float x, float* ip) { return ::modff(x, ip); @@ -289,7 +285,7 @@ double F64_fmod(double a, double b); double F64_remainder(double a, double b); double F64_atan2(double a, double b); -double F64_frexp(double x, double* e); +double F64_frexp(double x, int* e); double F64_modf(double x, double* ip); @@ -335,13 +331,7 @@ SLANG_FORCE_INLINE double F64_fmod(double a, double b) { return ::fmod(a, b); } SLANG_FORCE_INLINE double F64_remainder(double a, double b) { return ::remainder(a, b); } SLANG_FORCE_INLINE double F64_atan2(double a, double b) { return ::atan2(a, b); } -SLANG_FORCE_INLINE double F64_frexp(double x, double* e) -{ - int ei; - double m = ::frexp(x, &ei); - *e = float(ei); - return m; -} +SLANG_FORCE_INLINE double F64_frexp(double x, int* e) { return ::frexp(x, e); } SLANG_FORCE_INLINE double F64_modf(double x, double* ip) { diff --git a/prelude/slang-cuda-prelude.h b/prelude/slang-cuda-prelude.h index 9075ed3d3..24e400d2d 100644 --- a/prelude/slang-cuda-prelude.h +++ b/prelude/slang-cuda-prelude.h @@ -1018,13 +1018,8 @@ SLANG_FORCE_INLINE SLANG_CUDA_CALL float F32_fmod(float a, float b) { return ::f SLANG_FORCE_INLINE SLANG_CUDA_CALL float F32_remainder(float a, float b) { return ::remainderf(a, b); } SLANG_FORCE_INLINE SLANG_CUDA_CALL float F32_atan2(float a, float b) { return float(::atan2(a, b)); } -SLANG_FORCE_INLINE SLANG_CUDA_CALL float F32_frexp(float x, float* e) -{ - int ei; - float m = ::frexpf(x, &ei); - *e = ei; - return m; -} +SLANG_FORCE_INLINE SLANG_CUDA_CALL float F32_frexp(float x, int* e) { return frexpf(x, e); } + SLANG_FORCE_INLINE SLANG_CUDA_CALL float F32_modf(float x, float* ip) { return ::modff(x, ip); @@ -1077,13 +1072,8 @@ SLANG_FORCE_INLINE SLANG_CUDA_CALL double F64_fmod(double a, double b) { return SLANG_FORCE_INLINE SLANG_CUDA_CALL double F64_remainder(double a, double b) { return ::remainder(a, b); } SLANG_FORCE_INLINE SLANG_CUDA_CALL double F64_atan2(double a, double b) { return ::atan2(a, b); } -SLANG_FORCE_INLINE SLANG_CUDA_CALL double F64_frexp(double x, double* e) -{ - int ei; - double m = ::frexp(x, &ei); - *e = ei; - return m; -} +SLANG_FORCE_INLINE SLANG_CUDA_CALL double F64_frexp(double x, int* e) { return ::frexp(x, e); } + SLANG_FORCE_INLINE SLANG_CUDA_CALL double F64_modf(double x, double* ip) { return ::modf(x, ip); -- cgit v1.2.3