mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-05-17 03:19:48 +00:00
* Format
* Format
* Format
* Remove const
* Use the right template
* Format
* Format
* add row/col instances
* Add missing file
* fixed
* Format
* Updates
* Format
* fixed rrr layout
* Format
* Update test and embed modules
* Restore older version
* Update year
* Set -fPIC
* Format
* Use double for isnan
* rename host folder to codegen + minor fix
* add codegen CI test
* add option to build components without building CK
* fix the groovy syntax
* fix typo
* use the correct function for the codegen stage
---------
Co-authored-by: Jing Zhang <jizha@amd.com>
Co-authored-by: Illia Silin <98187287+illsilin@users.noreply.github.com>
Co-authored-by: illsilin <Illia.Silin@amd.com>
[ROCm/composable_kernel commit: 8eff4d62b6]
56 lines
1.0 KiB
C++
56 lines
1.0 KiB
C++
#ifndef GUARD_HOST_TEST_RTC_INCLUDE_RTC_MANAGE_POINTER
|
|
#define GUARD_HOST_TEST_RTC_INCLUDE_RTC_MANAGE_POINTER
|
|
|
|
#include <type_traits>
|
|
#include <memory>
|
|
|
|
namespace rtc {
|
|
template <class F, F f>
|
|
struct manage_deleter
|
|
{
|
|
template <class T>
|
|
void operator()(T* x) const
|
|
{
|
|
if(x != nullptr)
|
|
{
|
|
(void)f(x);
|
|
}
|
|
}
|
|
};
|
|
|
|
struct null_deleter
|
|
{
|
|
template <class T>
|
|
void operator()(T*) const
|
|
{
|
|
}
|
|
};
|
|
|
|
template <class T, class F, F f>
|
|
using manage_ptr = std::unique_ptr<T, manage_deleter<F, f>>;
|
|
|
|
template <class T>
|
|
struct element_type
|
|
{
|
|
using type = typename T::element_type;
|
|
};
|
|
|
|
template <class T>
|
|
using remove_ptr = typename std::
|
|
conditional_t<std::is_pointer<T>{}, std::remove_pointer<T>, element_type<T>>::type;
|
|
|
|
template <class T>
|
|
using shared = std::shared_ptr<remove_ptr<T>>;
|
|
|
|
template <class T>
|
|
shared<T> share(T p)
|
|
{
|
|
return shared<T>{std::move(p)};
|
|
}
|
|
|
|
#define RTC_MANAGE_PTR(T, F) rtc::manage_ptr<std::remove_pointer_t<T>, decltype(&F), &F>
|
|
|
|
} // namespace rtc
|
|
|
|
#endif
|