42    using supports_sg_loadstore = std::negation<
 
   43        std::disjunction<tu_ns::is_complex<argT1>, tu_ns::is_complex<argT2>>>;
 
   45        std::conjunction<std::is_same<argT1, argT2>,
 
   46                         std::disjunction<std::is_floating_point<argT1>,
 
   47                                          std::is_same<argT1, sycl::half>>>;
 
   49    resT operator()(
const argT1 &in1, 
const argT2 &in2)
 const 
   51        if constexpr (std::is_integral_v<argT1> && std::is_integral_v<argT2>) {
 
   52            return in1 <= in2 ? in1 : in2;
 
   54        else if constexpr (tu_ns::is_complex<argT1>::value &&
 
   55                           tu_ns::is_complex<argT2>::value)
 
   57            static_assert(std::is_same_v<argT1, argT2>);
 
   59            using realT = 
typename argT1::value_type;
 
   60            const realT in2r = std::real(in2);
 
   61            const realT in2i = std::imag(in2);
 
   63            if (sycl::isnan(in2r) || sycl::isnan(in2i) ||
 
   64                mu_ns::less_equal_complex<argT1>(in1, in2))
 
   71            return sycl::fmin(in1, in2);
 
   76    sycl::vec<resT, vec_sz>
 
   77        operator()(
const sycl::vec<argT1, vec_sz> &in1,
 
   78                   const sycl::vec<argT2, vec_sz> &in2)
 const 
   80        return sycl::fmin(in1, in2);