[libc-commits] [PATCH] D144421: [libc] Partially implement 'quick_exit' for the GPU

Joseph Huber via Phabricator via libc-commits libc-commits at lists.llvm.org
Wed Feb 22 11:10:32 PST 2023


This revision was automatically updated to reflect the committed changes.
Closed by commit rGf7b7c698ebcb: [libc] Partially implement 'quick_exit' for the GPU (authored by jhuber6).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144421/new/

https://reviews.llvm.org/D144421

Files:
  libc/src/__support/OSUtil/gpu/CMakeLists.txt
  libc/src/__support/OSUtil/gpu/quick_exit.cpp
  libc/src/__support/OSUtil/gpu/quick_exit.h
  libc/src/__support/OSUtil/quick_exit.h


Index: libc/src/__support/OSUtil/quick_exit.h
===================================================================
--- libc/src/__support/OSUtil/quick_exit.h
+++ libc/src/__support/OSUtil/quick_exit.h
@@ -9,7 +9,11 @@
 #ifndef LLVM_LIBC_SRC_SUPPORT_OSUTIL_QUICK_EXIT_H
 #define LLVM_LIBC_SRC_SUPPORT_OSUTIL_QUICK_EXIT_H
 
-#ifdef __unix__
+#include "src/__support/macros/properties/architectures.h"
+
+#if defined(LIBC_TARGET_ARCH_IS_GPU)
+#include "gpu/quick_exit.h"
+#elif defined(__unix__)
 #include "linux/quick_exit.h"
 #endif
 
Index: libc/src/__support/OSUtil/gpu/quick_exit.h
===================================================================
--- /dev/null
+++ libc/src/__support/OSUtil/gpu/quick_exit.h
@@ -0,0 +1,18 @@
+//===---------- GPU implementation of a quick exit function -----*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_SUPPORT_OSUTIL_GPU_QUICK_EXIT_H
+#define LLVM_LIBC_SRC_SUPPORT_OSUTIL_GPU_QUICK_EXIT_H
+
+namespace __llvm_libc {
+
+void quick_exit(int status);
+
+} // namespace __llvm_libc
+
+#endif // LLVM_LIBC_SRC_SUPPORT_OSUTIL_GPU_QUICK_EXIT_H
Index: libc/src/__support/OSUtil/gpu/quick_exit.cpp
===================================================================
--- /dev/null
+++ libc/src/__support/OSUtil/gpu/quick_exit.cpp
@@ -0,0 +1,31 @@
+//===---------- GPU implementation of a quick exit function -----*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_SUPPORT_OSUTIL_GPU_QUICK_EXIT_H
+#define LLVM_LIBC_SRC_SUPPORT_OSUTIL_GPU_QUICK_EXIT_H
+
+#include "quick_exit.h"
+
+#include "src/__support/macros/properties/architectures.h"
+
+namespace __llvm_libc {
+
+void quick_exit(int status) {
+#if defined(LIBC_TARGET_ARCH_IS_NVPTX)
+  asm("exit" ::: "memory");
+#elif defined(LIBC_TARGET_ARCH_IS_AMDGPU)
+  // This will terminate the entire wavefront, may not be valid with divergent
+  // work items.
+  asm("s_endpgm" ::: "memory");
+#endif
+  __builtin_unreachable();
+}
+
+} // namespace __llvm_libc
+
+#endif // LLVM_LIBC_SRC_SUPPORT_OSUTIL_GPU_QUICK_EXIT_H
Index: libc/src/__support/OSUtil/gpu/CMakeLists.txt
===================================================================
--- /dev/null
+++ libc/src/__support/OSUtil/gpu/CMakeLists.txt
@@ -0,0 +1,9 @@
+add_object_library(
+  gpu_util
+  SRCS
+    quick_exit.cpp
+  HDRS
+    quick_exit.h
+  DEPENDS
+    libc.src.__support.common
+)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D144421.499593.patch
Type: text/x-patch
Size: 2904 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libc-commits/attachments/20230222/6c162877/attachment.bin>


More information about the libc-commits mailing list