[Openmp-commits] [openmp] [OpenMP] OpenMP ThreadSet clause - basic runtime (PR #144409)

via Openmp-commits openmp-commits at lists.llvm.org
Sun Jun 29 07:26:31 PDT 2025


https://github.com/Ritanya-B-Bharadwaj updated https://github.com/llvm/llvm-project/pull/144409

>From 4553bd26281ff00e1c1ad1bf6e6b68af45819de8 Mon Sep 17 00:00:00 2001
From: Ritanya B Bharadwaj <ritanya.b.bharadwaj at gmail.com>
Date: Mon, 16 Jun 2025 13:25:29 -0500
Subject: [PATCH 1/2] [clang][OpenMP] OpenMP ThreadSet clause - basic runtime

---
 openmp/runtime/src/kmp.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/openmp/runtime/src/kmp.h b/openmp/runtime/src/kmp.h
index a2cacc8792b15..7a17b9f8550e9 100644
--- a/openmp/runtime/src/kmp.h
+++ b/openmp/runtime/src/kmp.h
@@ -2740,7 +2740,8 @@ typedef struct kmp_tasking_flags { /* Total struct must be exactly 32 bits */
   unsigned tasking_ser : 1;
   unsigned task_serial : 1;
   unsigned tasktype : 1;
-  unsigned reserved : 8;
+  unsigned free_agent_eligible : 1;
+  unsigned reserved : 7;
   unsigned hidden_helper : 1;
   unsigned detachable : 1;
   unsigned priority_specified : 1;
@@ -2763,7 +2764,9 @@ typedef struct kmp_tasking_flags { /* Total struct must be exactly 32 bits */
                                       setting for the task */
   unsigned detachable : 1; /* 1 == can detach */
   unsigned hidden_helper : 1; /* 1 == hidden helper task */
-  unsigned reserved : 8; /* reserved for compiler use */
+  unsigned reserved : 7; /* reserved for compiler use */
+  unsigned free_agent_eligible : 1; /* set if task can be executed by a
+                                       free-agent thread */
 
   /* Library flags */ /* Total library flags must be 16 bits */
   unsigned tasktype : 1; /* task is either explicit(1) or implicit (0) */

>From b40dd81949a9649a5a85d700e04645182c2e6817 Mon Sep 17 00:00:00 2001
From: Ritanya B Bharadwaj <ritanya.b.bharadwaj at gmail.com>
Date: Sun, 29 Jun 2025 09:25:23 -0500
Subject: [PATCH 2/2] Reordering the flags in kmp.h based on review comments

---
 openmp/runtime/src/kmp.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/openmp/runtime/src/kmp.h b/openmp/runtime/src/kmp.h
index 7a17b9f8550e9..f62cabee6ea84 100644
--- a/openmp/runtime/src/kmp.h
+++ b/openmp/runtime/src/kmp.h
@@ -2725,11 +2725,12 @@ typedef struct kmp_tasking_flags { /* Total struct must be exactly 32 bits */
 #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
   /* Same fields as in the #else branch, but in reverse order */
 #if OMPX_TASKGRAPH
-  unsigned reserved31 : 5;
+  unsigned reserved31 : 4;
   unsigned onced : 1;
 #else
-  unsigned reserved31 : 6;
+  unsigned reserved31 : 5;
 #endif
+  unsigned hidden_helper : 1;
   unsigned target : 1;
   unsigned native : 1;
   unsigned freed : 1;
@@ -2740,9 +2741,8 @@ typedef struct kmp_tasking_flags { /* Total struct must be exactly 32 bits */
   unsigned tasking_ser : 1;
   unsigned task_serial : 1;
   unsigned tasktype : 1;
+  unsigned reserved : 8;
   unsigned free_agent_eligible : 1;
-  unsigned reserved : 7;
-  unsigned hidden_helper : 1;
   unsigned detachable : 1;
   unsigned priority_specified : 1;
   unsigned proxy : 1;
@@ -2763,10 +2763,9 @@ typedef struct kmp_tasking_flags { /* Total struct must be exactly 32 bits */
   unsigned priority_specified : 1; /* set if the compiler provides priority
                                       setting for the task */
   unsigned detachable : 1; /* 1 == can detach */
-  unsigned hidden_helper : 1; /* 1 == hidden helper task */
-  unsigned reserved : 7; /* reserved for compiler use */
   unsigned free_agent_eligible : 1; /* set if task can be executed by a
                                        free-agent thread */
+  unsigned reserved : 8; /* reserved for compiler use */
 
   /* Library flags */ /* Total library flags must be 16 bits */
   unsigned tasktype : 1; /* task is either explicit(1) or implicit (0) */
@@ -2783,11 +2782,12 @@ typedef struct kmp_tasking_flags { /* Total struct must be exactly 32 bits */
   unsigned freed : 1; /* 1==freed, 0==allocated        */
   unsigned native : 1; /* 1==gcc-compiled task, 0==intel */
   unsigned target : 1;
+  unsigned hidden_helper : 1; /* 1 == hidden helper task */
 #if OMPX_TASKGRAPH
   unsigned onced : 1; /* 1==ran once already, 0==never ran, record & replay purposes */
-  unsigned reserved31 : 5; /* reserved for library use */
+  unsigned reserved31 : 4; /* reserved for library use */
 #else
-  unsigned reserved31 : 6; /* reserved for library use */
+  unsigned reserved31 : 5; /* reserved for library use */
 #endif
 #endif
 } kmp_tasking_flags_t;



More information about the Openmp-commits mailing list