[clang] [llvm] [HLSL] Move length support out of the DirectX Backend (PR #121611)
Farzon Lotfi via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 3 15:18:07 PST 2025
================
@@ -33,6 +41,23 @@ constexpr enable_if_t<sizeof(U) == sizeof(T), U> bit_cast(T F) {
return __builtin_bit_cast(U, F);
}
+template <typename T>
+constexpr enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
+length_impl(T X) {
+ return __builtin_elementwise_abs(X);
+}
+
+template <typename T, int N>
+enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
+length_vec_impl(vector<T, N> X) {
+ vector<T, N> XSquared = X * X;
+ T XSquaredSum = XSquared[0];
+ [unroll]
+ for (int i = 1; i < N; ++i)
----------------
farzonl wrote:
Because of the loop this can't be a constexpr. Made this change because its unlikely we will be able to use the vec reduce add builtin.
https://github.com/llvm/llvm-project/pull/121611
More information about the llvm-commits
mailing list