[libcxx-commits] [libcxx] [libcxx] Adjust inline assembly constraints for the AMDGPU target (PR #101747)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Aug 14 08:54:11 PDT 2024
================
@@ -291,17 +291,27 @@ struct is_same<T, T> { enum {value = 1}; };
// when optimizations are enabled.
template <class Tp>
inline Tp const& DoNotOptimize(Tp const& value) {
- asm volatile("" : : "r,m"(value) : "memory");
- return value;
+ // The `m` constraint is invalid in the AMDGPU backend.
+# if defined(__AMDGPU__) || defined(__NVPTX__)
+ asm volatile("" : : "r"(value) : "memory");
+# else
+ asm volatile("" : : "r,m"(value) : "memory");
+# endif
+ return value;
}
template <class Tp>
inline Tp& DoNotOptimize(Tp& value) {
-#if defined(__clang__)
+ // The `m` and `r` output constraint is invalid in the AMDGPU backend as well
----------------
ldionne wrote:
```suggestion
// The `m` and `r` output constraints are invalid in the AMDGPU backend as well
```
https://github.com/llvm/llvm-project/pull/101747
More information about the libcxx-commits
mailing list