[clang] Implement the `fmod` intrinsic (PR #130320)

via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 7 13:17:19 PST 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff a2b3dafcdfbf3cdeea8a722fe47402df69c20221 00b3e767b0fe222f6b0bfa9fe49633df2984a641 --extensions h -- clang/lib/Headers/hlsl/hlsl_alias_intrinsics.h clang/lib/Headers/hlsl/hlsl_detail.h clang/lib/Headers/hlsl/hlsl_intrinsics.h
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/clang/lib/Headers/hlsl/hlsl_detail.h b/clang/lib/Headers/hlsl/hlsl_detail.h
index 470cc4db24..918030fbb0 100644
--- a/clang/lib/Headers/hlsl/hlsl_detail.h
+++ b/clang/lib/Headers/hlsl/hlsl_detail.h
@@ -102,7 +102,7 @@ constexpr enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
 fmod_impl(T X, T Y) {
 #if !defined(__DIRECTX__)
   return __builtin_elementwise_fmod(X, Y);
-#else 
+#else
   T div = X / Y;
   bool ge = div >= -div;
   T frc = frac(abs(div));
@@ -114,10 +114,10 @@ template <typename T, int N>
 constexpr vector<T, N> fmod_vec_impl(vector<T, N> X, vector<T, N> Y) {
 #if !defined(__DIRECTX__)
   return __builtin_elementwise_fmod(X, Y);
-#else 
+#else
   vector<T, N> div = X / Y;
   vector<bool, N> ge = div >= -div;
-  vector<T, N> frc = frac(abs(div)); 
+  vector<T, N> frc = frac(abs(div));
   return select<T>(ge, frc, -frc) * Y;
 #endif
 }
diff --git a/clang/lib/Headers/hlsl/hlsl_intrinsics.h b/clang/lib/Headers/hlsl/hlsl_intrinsics.h
index 3393c955e9..a01e0bd708 100644
--- a/clang/lib/Headers/hlsl/hlsl_intrinsics.h
+++ b/clang/lib/Headers/hlsl/hlsl_intrinsics.h
@@ -122,13 +122,9 @@ const inline float distance(vector<float, N> X, vector<float, N> Y) {
 /// parameter.
 
 _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
-const inline half fmod(half X, half Y) {
-  return __detail::fmod_impl(X, Y);
-}
+const inline half fmod(half X, half Y) { return __detail::fmod_impl(X, Y); }
 
-const inline float fmod(float X, float Y) {
-  return __detail::fmod_impl(X, Y);
-}
+const inline float fmod(float X, float Y) { return __detail::fmod_impl(X, Y); }
 
 template <int N>
 _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)

``````````

</details>


https://github.com/llvm/llvm-project/pull/130320


More information about the cfe-commits mailing list