@@ -83,8 +83,6 @@ template<typename T NBL_STRUCT_CONSTRAINABLE>
8383struct trunc_helper;
8484template<typename T NBL_STRUCT_CONSTRAINABLE>
8585struct ceil_helper;
86- template<typename T NBL_STRUCT_CONSTRAINABLE>
87- struct fma_helper;
8886template<typename T, typename U NBL_STRUCT_CONSTRAINABLE>
8987struct ldexp_helper;
9088template<typename T NBL_STRUCT_CONSTRAINABLE>
@@ -138,7 +136,6 @@ template<typename T> AUTO_SPECIALIZE_TRIVIAL_CASE_HELPER(roundEven_helper, round
138136template<typename T> AUTO_SPECIALIZE_TRIVIAL_CASE_HELPER (trunc_helper, trunc, (T), (T), T)
139137template<typename T> AUTO_SPECIALIZE_TRIVIAL_CASE_HELPER (ceil_helper, ceil, (T), (T), T)
140138template<typename T> AUTO_SPECIALIZE_TRIVIAL_CASE_HELPER (pow_helper, pow, (T), (T)(T), T)
141- template<typename T> AUTO_SPECIALIZE_TRIVIAL_CASE_HELPER (fma_helper, fma, (T), (T)(T)(T), T)
142139template<typename T, typename U> AUTO_SPECIALIZE_TRIVIAL_CASE_HELPER (ldexp_helper, ldexp, (T)(U), (T)(U), T)
143140template<typename T> AUTO_SPECIALIZE_TRIVIAL_CASE_HELPER (modfStruct_helper, modfStruct, (T), (T), ModfOutput<T>)
144141template<typename T> AUTO_SPECIALIZE_TRIVIAL_CASE_HELPER (frexpStruct_helper, frexpStruct, (T), (T), FrexpOutput<T>)
@@ -337,16 +334,6 @@ struct roundEven_helper<FloatingPoint NBL_PARTIAL_REQ_BOT(concepts::FloatingPoin
337334 }
338335};
339336
340- template<typename FloatingPoint>
341- NBL_PARTIAL_REQ_TOP (concepts::FloatingPointScalar<FloatingPoint>)
342- struct fma_helper<FloatingPoint NBL_PARTIAL_REQ_BOT (concepts::FloatingPointScalar<FloatingPoint>) >
343- {
344- static FloatingPoint __call (NBL_CONST_REF_ARG (FloatingPoint) x, NBL_CONST_REF_ARG (FloatingPoint) y, NBL_CONST_REF_ARG (FloatingPoint) z)
345- {
346- return std::fma (x, y, z);
347- }
348- };
349-
350337template<typename T, typename U>
351338NBL_PARTIAL_REQ_TOP (concepts::FloatingPointScalar<T> && concepts::IntegralScalar<U>)
352339struct ldexp_helper<T, U NBL_PARTIAL_REQ_BOT (concepts::FloatingPointScalar<T> && concepts::IntegralScalar<U>) >
@@ -510,25 +497,6 @@ struct pow_helper<T NBL_PARTIAL_REQ_BOT(VECTOR_SPECIALIZATION_CONCEPT) >
510497 }
511498};
512499
513- template<typename T>
514- NBL_PARTIAL_REQ_TOP (VECTOR_SPECIALIZATION_CONCEPT)
515- struct fma_helper<T NBL_PARTIAL_REQ_BOT (VECTOR_SPECIALIZATION_CONCEPT) >
516- {
517- using return_t = T;
518- static return_t __call (NBL_CONST_REF_ARG (T) x, NBL_CONST_REF_ARG (T) y, NBL_CONST_REF_ARG (T) z)
519- {
520- using traits = hlsl::vector_traits<T>;
521- array_get<T, typename traits::scalar_type> getter;
522- array_set<T, typename traits::scalar_type> setter;
523-
524- return_t output;
525- for (uint32_t i = 0 ; i < traits::Dimension; ++i)
526- setter (output, i, fma_helper<typename traits::scalar_type>::__call (getter (x, i), getter (y, i), getter (z, i)));
527-
528- return output;
529- }
530- };
531-
532500template<typename T, typename U>
533501NBL_PARTIAL_REQ_TOP (VECTOR_SPECIALIZATION_CONCEPT && (vector_traits<T>::Dimension == vector_traits<U>::Dimension))
534502struct ldexp_helper<T, U NBL_PARTIAL_REQ_BOT (VECTOR_SPECIALIZATION_CONCEPT && (vector_traits<T>::Dimension == vector_traits<U>::Dimension)) >
0 commit comments