// SPDX-License-Identifier: MIT // Copyright (c) 2018-2024, Advanced Micro Devices, Inc. All rights reserved. #pragma once #include "ck/ck.hpp" #include "integral_constant.hpp" #include "sequence.hpp" #include "tuple.hpp" namespace ck { template struct is_known_at_compile_time; template <> struct is_known_at_compile_time { static constexpr bool value = false; }; template <> struct is_known_at_compile_time { static constexpr bool value = false; }; template <> struct is_known_at_compile_time { static constexpr bool value = false; }; template struct is_known_at_compile_time> { static constexpr bool value = true; }; template struct is_known_at_compile_time> { static constexpr bool value = true; }; template struct is_known_at_compile_time> { __host__ __device__ static constexpr bool IsKnownAtCompileTime() { return container_reduce( Tuple{}, [](auto x, bool r) { return is_known_at_compile_time>::value & r; }, true); } static constexpr bool value = IsKnownAtCompileTime(); }; } // namespace ck