246 lines
7.3 KiB
Diff
246 lines
7.3 KiB
Diff
--- a/cmake/EnableCompilerWarnings.cmake
|
|
+++ b/cmake/EnableCompilerWarnings.cmake
|
|
@@ -70,6 +70,7 @@ set(__clang_cxx_compile_options
|
|
-Wno-unused-command-line-argument
|
|
-Wno-weak-vtables
|
|
-Wno-covered-switch-default
|
|
+ -Wno-switch-default
|
|
-Wno-unused-result
|
|
-Wno-unsafe-buffer-usage
|
|
-Wno-deprecated-declarations
|
|
--- a/src/include/miopen/bfloat16.hpp
|
|
+++ b/src/include/miopen/bfloat16.hpp
|
|
@@ -28,6 +28,7 @@
|
|
#include <boost/operators.hpp>
|
|
#include <iostream>
|
|
#include <miopen/config.h>
|
|
+#include <miopen/libcxx_compat.hpp>
|
|
|
|
class bfloat16 : boost::totally_ordered<bfloat16, boost::arithmetic<bfloat16>>
|
|
{
|
|
@@ -152,7 +153,7 @@ private:
|
|
std::uint16_t data_;
|
|
};
|
|
|
|
-namespace std {
|
|
+NAMESPACE_STD_BEGIN
|
|
template <>
|
|
class numeric_limits<bfloat16>
|
|
{
|
|
@@ -173,5 +174,5 @@ public:
|
|
return bfloat16::generate(0x0001); // 0x0.02p-126
|
|
}
|
|
};
|
|
-} // namespace std
|
|
+NAMESPACE_STD_END
|
|
#endif
|
|
--- /dev/null
|
|
+++ b/src/include/miopen/libcxx_compat.hpp
|
|
@@ -0,0 +1,44 @@
|
|
+/*******************************************************************************
|
|
+ *
|
|
+ * MIT License
|
|
+ *
|
|
+ * Copyright (c) 2024 Advanced Micro Devices, Inc.
|
|
+ *
|
|
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
+ * of this software and associated documentation files (the "Software"), to deal
|
|
+ * in the Software without restriction, including without limitation the rights
|
|
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
+ * copies of the Software, and to permit persons to whom the Software is
|
|
+ * furnished to do so, subject to the following conditions:
|
|
+ *
|
|
+ * The above copyright notice and this permission notice shall be included in all
|
|
+ * copies or substantial portions of the Software.
|
|
+ *
|
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
+ * SOFTWARE.
|
|
+ *
|
|
+ *******************************************************************************/
|
|
+#ifndef LIBCXX_COMPAT_HPP_
|
|
+#define LIBCXX_COMPAT_HPP_
|
|
+
|
|
+// Definitions for libc++ compatibility
|
|
+#ifdef __has_include
|
|
+#if __has_include (<__config>)
|
|
+#include <__config>
|
|
+#endif
|
|
+#endif
|
|
+
|
|
+#ifdef _LIBCPP_VERSION
|
|
+#define NAMESPACE_STD_BEGIN _LIBCPP_BEGIN_NAMESPACE_STD
|
|
+#define NAMESPACE_STD_END _LIBCPP_END_NAMESPACE_STD
|
|
+#else
|
|
+#define NAMESPACE_STD_BEGIN namespace std {
|
|
+#define NAMESPACE_STD_END }
|
|
+#endif
|
|
+
|
|
+#endif
|
|
--- a/src/kernels/hip_float8.hpp
|
|
+++ b/src/kernels/hip_float8.hpp
|
|
@@ -26,6 +26,7 @@
|
|
#pragma once
|
|
|
|
#include "miopen_cstdint.hpp"
|
|
+#include "libcxx_compat.hpp"
|
|
|
|
#ifndef MIOPEN_ENABLE_F8_DEVICE_CODE
|
|
#define MIOPEN_ENABLE_F8_DEVICE_CODE 0
|
|
@@ -590,7 +591,7 @@ public:
|
|
// from the precompiled header.
|
|
#else
|
|
// NOLINTBEGIN(cert-dcl58-cpp)
|
|
-namespace std {
|
|
+NAMESPACE_STD_BEGIN
|
|
inline bool isfinite(miopen_f8::hip_f8<miopen_f8::hip_f8_type::fp8> x) // NOLINT
|
|
{
|
|
return !(x.is_inf() || x.is_nan());
|
|
@@ -611,12 +612,12 @@ inline bool isnan(miopen_f8::hip_f8<miopen_f8::hip_f8_type::bf8> x) // NOLINT
|
|
return x.is_nan();
|
|
}
|
|
|
|
-} // namespace std
|
|
+NAMESPACE_STD_END
|
|
// NOLINTEND(cert-dcl58-cpp)
|
|
#endif
|
|
|
|
// NOLINTBEGIN(cert-dcl58-cpp)
|
|
-namespace std {
|
|
+NAMESPACE_STD_BEGIN
|
|
|
|
template <typename T>
|
|
class numeric_limits;
|
|
@@ -633,7 +634,7 @@ class numeric_limits<miopen_f8::hip_f8<miopen_f8::hip_f8_type::bf8>>
|
|
{
|
|
};
|
|
|
|
-} // namespace std
|
|
+NAMESPACE_STD_END
|
|
// NOLINTEND(cert-dcl58-cpp)
|
|
|
|
template <miopen_f8::hip_f8_type T>
|
|
--- /dev/null
|
|
+++ b/src/kernels/libcxx_compat.hpp
|
|
@@ -0,0 +1,41 @@
|
|
+/*******************************************************************************
|
|
+ *
|
|
+ * MIT License
|
|
+ *
|
|
+ * Copyright (c) 2024 Advanced Micro Devices, Inc.
|
|
+ *
|
|
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
+ * of this software and associated documentation files (the "Software"), to deal
|
|
+ * in the Software without restriction, including without limitation the rights
|
|
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
+ * copies of the Software, and to permit persons to whom the Software is
|
|
+ * furnished to do so, subject to the following conditions:
|
|
+ *
|
|
+ * The above copyright notice and this permission notice shall be included in all
|
|
+ * copies or substantial portions of the Software.
|
|
+ *
|
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
+ * SOFTWARE.
|
|
+ *
|
|
+ *******************************************************************************/
|
|
+#pragma once
|
|
+
|
|
+// Definitions for libc++ compatibility
|
|
+#ifdef __has_include
|
|
+#if __has_include (<__config>)
|
|
+#include <__config>
|
|
+#endif
|
|
+#endif
|
|
+
|
|
+#ifdef _LIBCPP_VERSION
|
|
+#define NAMESPACE_STD_BEGIN _LIBCPP_BEGIN_NAMESPACE_STD
|
|
+#define NAMESPACE_STD_END _LIBCPP_END_NAMESPACE_STD
|
|
+#else
|
|
+#define NAMESPACE_STD_BEGIN namespace std {
|
|
+#define NAMESPACE_STD_END }
|
|
+#endif
|
|
--- a/src/kernels/miopen_limits.hpp
|
|
+++ b/src/kernels/miopen_limits.hpp
|
|
@@ -33,8 +33,9 @@
|
|
|
|
#define MIOPEN_ENABLE_F8_DEVICE_CODE 1
|
|
#include "hip_float8.hpp"
|
|
+#include "libcxx_compat.hpp"
|
|
|
|
-namespace std {
|
|
+NAMESPACE_STD_BEGIN
|
|
|
|
template <typename T>
|
|
class numeric_limits;
|
|
@@ -91,7 +92,7 @@ public:
|
|
};
|
|
#endif
|
|
|
|
-} // namespace std
|
|
+NAMESPACE_STD_END
|
|
|
|
#else
|
|
|
|
--- a/src/kernels/miopen_type_traits.hpp
|
|
+++ b/src/kernels/miopen_type_traits.hpp
|
|
@@ -26,8 +26,9 @@
|
|
#pragma once
|
|
|
|
#ifdef MIOPEN_DONT_USE_HIP_RUNTIME_HEADERS
|
|
+#include "libcxx_compat.hpp"
|
|
|
|
-namespace std {
|
|
+NAMESPACE_STD_BEGIN
|
|
|
|
template <class T>
|
|
struct remove_reference
|
|
@@ -140,7 +141,7 @@ struct conditional<false, X, Y>
|
|
template <bool predicate, typename X, typename Y>
|
|
using conditional_t = typename conditional<predicate, X, Y>::type;
|
|
|
|
-} // namespace std
|
|
+NAMESPACE_STD_END
|
|
#else
|
|
|
|
#include <type_traits> // std::remove_reference, std::remove_cv, is_pointer
|
|
--- a/src/kernels/miopen_utility.hpp
|
|
+++ b/src/kernels/miopen_utility.hpp
|
|
@@ -28,8 +28,9 @@
|
|
#ifdef MIOPEN_DONT_USE_HIP_RUNTIME_HEADERS
|
|
|
|
#include "miopen_type_traits.hpp" // std::remove_reference
|
|
+#include "libcxx_compat.hpp"
|
|
|
|
-namespace std {
|
|
+NAMESPACE_STD_BEGIN
|
|
|
|
template <typename T>
|
|
constexpr T&& forward(typename remove_reference<T>::type& t_) noexcept
|
|
@@ -43,7 +44,7 @@ constexpr T&& forward(typename remove_reference<T>::type&& t_) noexcept
|
|
return static_cast<T&&>(t_);
|
|
}
|
|
|
|
-} // namespace std
|
|
+NAMESPACE_STD_END
|
|
|
|
#else
|
|
|
|
--- a/src/CMakeLists.txt
|
|
+++ b/src/CMakeLists.txt
|
|
@@ -481,6 +481,7 @@ if( MIOPEN_BACKEND MATCHES "OpenCL" OR MIOPEN_BACKEND STREQUAL "HIPOC" OR MIOPEN
|
|
kernels/gpr_alloc.inc
|
|
kernels/hip_atomic.hpp
|
|
kernels/hip_f8_impl.hpp
|
|
+ kernels/libcxx_compat.hpp
|
|
kernels/hip_float8.hpp
|
|
kernels/inst_wrappers.inc
|
|
kernels/miopen_cstdint.hpp
|