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

via Openmp-commits openmp-commits at lists.llvm.org
Tue Jun 17 11:01:29 PDT 2025


================
@@ -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
----------------
jprotze wrote:

```
/* Compiler flags */ /* Total compiler flags must be 16 bits */
  unsigned tiedness : 1; /* 0: task is either tied (1) or untied (0) */
  unsigned final : 1; /* 1: task is final(1) so execute immediately */
  unsigned merged_if0 : 1; /* 2: no __kmpc_task_{begin/complete}_if0 calls in if0
                              code path */
  unsigned destructors_thunk : 1; /* 3: set if the compiler creates a thunk to
                                     invoke destructors from the runtime */
  unsigned proxy : 1; /* 4:task is a proxy task (it will be executed outside the
                         context of the RTL) */
  unsigned priority_specified : 1; /* 5: set if the compiler provides priority
                                      setting for the task */
  unsigned detachable : 1; /* 6: 1 == can detach */
  unsigned free_agent_eligible : 1; /* 7: 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) */
  unsigned task_serial : 1; // task is executed immediately (1) or deferred (0)
  unsigned tasking_ser : 1; // all tasks in team are either executed immediately
  // (1) or may be deferred (0)
  unsigned team_serial : 1; // entire team is serial (1) [1 thread] or parallel
  // (0) [>= 2 threads]
  /* If either team_serial or tasking_ser is set, task team may be NULL */
  /* Task State Flags: */
  unsigned started : 1; /* 1==started, 0==not started     */
  unsigned executing : 1; /* 1==executing, 0==not executing */
  unsigned complete : 1; /* 1==complete, 0==not complete   */
  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 : 4; /* reserved for library use */
#else
  unsigned reserved31 : 5; /* reserved for library use */
#endif```

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


More information about the Openmp-commits mailing list