[llvm] [OpenMP] Adds omp_target_is_accessible routine (PR #138294)

via llvm-commits llvm-commits at lists.llvm.org
Fri May 2 08:28:25 PDT 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions cpp,h -- offload/test/mapping/is_accessible.cpp offload/include/omptarget.h offload/libomptarget/OpenMP/API.cpp offload/libomptarget/omptarget.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/offload/libomptarget/OpenMP/API.cpp b/offload/libomptarget/OpenMP/API.cpp
index a0a126004..6ed82719a 100644
--- a/offload/libomptarget/OpenMP/API.cpp
+++ b/offload/libomptarget/OpenMP/API.cpp
@@ -39,7 +39,8 @@ EXTERN void ompx_dump_mapping_tables() {
 using namespace llvm::omp::target::ompt;
 #endif
 
-int checkTargetAddressMapping(const void *Ptr, size_t Size, int DeviceNum, const char *Name);
+int checkTargetAddressMapping(const void *Ptr, size_t Size, int DeviceNum,
+                              const char *Name);
 
 void *targetAllocExplicit(size_t Size, int DeviceNum, int Kind,
                           const char *Name);
@@ -177,7 +178,8 @@ EXTERN int omp_target_is_present(const void *Ptr, int DeviceNum) {
   return checkTargetAddressMapping(Ptr, 1, DeviceNum, "omp_target_is_present");
 }
 
-EXTERN int omp_target_is_accessible(const void *Ptr, size_t Size, int DeviceNum) {
+EXTERN int omp_target_is_accessible(const void *Ptr, size_t Size,
+                                    int DeviceNum) {
   OMPT_IF_BUILT(ReturnAddressSetterRAII RA(__builtin_return_address(0)));
   DP("Call to omp_target_is_accessible for device %d and address " DPxMOD
      " with size %zu\n",
@@ -186,8 +188,9 @@ EXTERN int omp_target_is_accessible(const void *Ptr, size_t Size, int DeviceNum)
   // omp_target_is_accessible tests whether a host pointer refers to storage
   // that is mapped to a given device and is accessible from the device. The
   // storage size is provided.
-  return checkTargetAddressMapping(Ptr, Size, DeviceNum, "omp_target_is_accessible");
-} 
+  return checkTargetAddressMapping(Ptr, Size, DeviceNum,
+                                   "omp_target_is_accessible");
+}
 
 EXTERN int omp_target_memcpy(void *Dst, const void *Src, size_t Length,
                              size_t DstOffset, size_t SrcOffset, int DstDevice,
diff --git a/offload/libomptarget/omptarget.cpp b/offload/libomptarget/omptarget.cpp
index 8716b33ce..d3c542773 100644
--- a/offload/libomptarget/omptarget.cpp
+++ b/offload/libomptarget/omptarget.cpp
@@ -198,11 +198,12 @@ static int32_t getParentIndex(int64_t Type) {
   return ((Type & OMP_TGT_MAPTYPE_MEMBER_OF) >> 48) - 1;
 }
 
-int checkTargetAddressMapping(const void *Ptr, size_t Size, int DeviceNum, const char *Name) {
+int checkTargetAddressMapping(const void *Ptr, size_t Size, int DeviceNum,
+                              const char *Name) {
   if (!Ptr) {
     DP("Call to %s with NULL ptr, returning false\n", Name);
     return false;
-  } 
+  }
 
   if (DeviceNum == omp_get_initial_device()) {
     DP("Call to %s on host, returning true\n", Name);
@@ -213,10 +214,8 @@ int checkTargetAddressMapping(const void *Ptr, size_t Size, int DeviceNum, const
   if (!DeviceOrErr)
     FATAL_MESSAGE(DeviceNum, "%s", toString(DeviceOrErr.takeError()).c_str());
 
-  TargetPointerResultTy TPR =
-    DeviceOrErr->getMappingInfo().getTgtPtrBegin(const_cast<void *>(Ptr), Size,
-                                                      false,
-                                                      false);
+  TargetPointerResultTy TPR = DeviceOrErr->getMappingInfo().getTgtPtrBegin(
+      const_cast<void *>(Ptr), Size, false, false);
 
   int Rc = TPR.isPresent();
   DP("Call to %s returns %d\n", Name, Rc);
diff --git a/offload/test/mapping/is_accessible.cpp b/offload/test/mapping/is_accessible.cpp
index daf38e7af..2e8613729 100644
--- a/offload/test/mapping/is_accessible.cpp
+++ b/offload/test/mapping/is_accessible.cpp
@@ -4,40 +4,40 @@
 
 // REQUIRES: unified_shared_memory
 
-#include <stdio.h>
+#include <assert.h>
 #include <iostream>
 #include <omp.h>
-#include <assert.h>
+#include <stdio.h>
 
 // The runtime considers unified shared memory to be always present.
 #pragma omp requires unified_shared_memory
 
 int main() {
-	int size = 10;
-  	int *x = (int *)malloc(size * sizeof(int));
-  	const int dev_num = omp_get_default_device();
-
-  	int is_accessible = omp_target_is_accessible(x, size * sizeof(int), dev_num);
-	int errors = 0;
-    int uses_shared_memory = 0;
-
-    #pragma omp target map(to: uses_shared_memory)
-        uses_shared_memory = 1;
-
-    assert(uses_shared_memory != is_accessible);
-
-	if (is_accessible) {
-		#pragma omp target firstprivate(x)
-			for (int i = 0; i < size; i++)
-				x[i] = i * 3;
-		
-		for (int i = 0; i < size; i++)
-			errors += (x[i] == (i * 3) ? 1 : 0);
-	}
-	
-    free(x);
-	// CHECK: x overwritten 0 times
-	printf("x overwritten %d times\n", errors);
-	
-	return errors;
+  int size = 10;
+  int *x = (int *)malloc(size * sizeof(int));
+  const int dev_num = omp_get_default_device();
+
+  int is_accessible = omp_target_is_accessible(x, size * sizeof(int), dev_num);
+  int errors = 0;
+  int uses_shared_memory = 0;
+
+#pragma omp target map(to : uses_shared_memory)
+  uses_shared_memory = 1;
+
+  assert(uses_shared_memory != is_accessible);
+
+  if (is_accessible) {
+#pragma omp target firstprivate(x)
+    for (int i = 0; i < size; i++)
+      x[i] = i * 3;
+
+    for (int i = 0; i < size; i++)
+      errors += (x[i] == (i * 3) ? 1 : 0);
+  }
+
+  free(x);
+  // CHECK: x overwritten 0 times
+  printf("x overwritten %d times\n", errors);
+
+  return errors;
 }

``````````

</details>


https://github.com/llvm/llvm-project/pull/138294


More information about the llvm-commits mailing list