[Openmp-commits] [openmp] [OpenMP] Add ompTest library to OpenMP (PR #147381)
via Openmp-commits
openmp-commits at lists.llvm.org
Mon Jul 14 07:42:26 PDT 2025
================
@@ -0,0 +1,377 @@
+//===- OmptAssertEvent.h - Assertion event declarations ---------*- 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
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Contains assertion event constructors, for generally all observable events.
+/// This includes user-generated events, like synchronization.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef OPENMP_TOOLS_OMPTEST_INCLUDE_OMPTASSERTEVENT_H
+#define OPENMP_TOOLS_OMPTEST_INCLUDE_OMPTASSERTEVENT_H
+
+#include "InternalEvent.h"
+#include "omp-tools.h"
+
+#include <cassert>
+#include <limits>
+#include <memory>
+#include <string>
+
+namespace omptest {
+
+enum class ObserveState { generated, always, never };
+
+/// Helper function, returning an ObserveState string representation
+const char *to_string(ObserveState State);
+
+/// Assertion event struct, provides statically callable CTORs.
+struct OmptAssertEvent {
+ static OmptAssertEvent AssertionSyncPoint(const std::string &Name,
+ const std::string &Group,
+ const ObserveState &Expected,
+ const std::string &SyncPointName);
+
+ static OmptAssertEvent AssertionSuspend(const std::string &Name,
+ const std::string &Group,
+ const ObserveState &Expected);
+
+ static OmptAssertEvent ThreadBegin(const std::string &Name,
+ const std::string &Group,
+ const ObserveState &Expected,
+ ompt_thread_t ThreadType);
+
+ static OmptAssertEvent ThreadEnd(const std::string &Name,
+ const std::string &Group,
+ const ObserveState &Expected);
+
+ static OmptAssertEvent ParallelBegin(const std::string &Name,
+ const std::string &Group,
+ const ObserveState &Expected,
+ int NumThreads);
+
+ static OmptAssertEvent ParallelEnd(
+ const std::string &Name, const std::string &Group,
+ const ObserveState &Expected,
+ ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
+ ompt_data_t *EncounteringTaskData = expectedDefault(ompt_data_t *),
+ int Flags = expectedDefault(int),
+ const void *CodeptrRA = expectedDefault(const void *));
+
+ static OmptAssertEvent
+ Work(const std::string &Name, const std::string &Group,
+ const ObserveState &Expected, ompt_work_t WorkType,
+ ompt_scope_endpoint_t Endpoint,
+ ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
+ ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
+ uint64_t Count = expectedDefault(uint64_t),
+ const void *CodeptrRA = expectedDefault(const void *));
+
+ static OmptAssertEvent
+ Dispatch(const std::string &Name, const std::string &Group,
+ const ObserveState &Expected,
+ ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
+ ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
+ ompt_dispatch_t Kind = expectedDefault(ompt_dispatch_t),
+ ompt_data_t Instance = expectedDefault(ompt_data_t));
+
+ static OmptAssertEvent
+ TaskCreate(const std::string &Name, const std::string &Group,
+ const ObserveState &Expected,
+ ompt_data_t *EncounteringTaskData = expectedDefault(ompt_data_t *),
+ const ompt_frame_t *EncounteringTaskFrame =
+ expectedDefault(ompt_frame_t *),
+ ompt_data_t *NewTaskData = expectedDefault(ompt_data_t *),
+ int Flags = expectedDefault(int),
+ int HasDependences = expectedDefault(int),
+ const void *CodeptrRA = expectedDefault(const void *));
+
+ static OmptAssertEvent TaskSchedule(const std::string &Name,
+ const std::string &Group,
+ const ObserveState &Expected);
+
+ static OmptAssertEvent
+ ImplicitTask(const std::string &Name, const std::string &Group,
+ const ObserveState &Expected, ompt_scope_endpoint_t Endpoint,
+ ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
+ ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
+ unsigned int ActualParallelism = expectedDefault(unsigned int),
+ unsigned int Index = expectedDefault(unsigned int),
+ int Flags = expectedDefault(int));
+
+ static OmptAssertEvent
+ SyncRegion(const std::string &Name, const std::string &Group,
+ const ObserveState &Expected, ompt_sync_region_t Kind,
+ ompt_scope_endpoint_t Endpoint,
+ ompt_data_t *ParallelData = expectedDefault(ompt_data_t *),
+ ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
+ const void *CodeptrRA = expectedDefault(const void *));
+
+ static OmptAssertEvent
+ Target(const std::string &Name, const std::string &Group,
+ const ObserveState &Expected, ompt_target_t Kind,
+ ompt_scope_endpoint_t Endpoint, int DeviceNum = expectedDefault(int),
+ ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
+ ompt_id_t TargetId = expectedDefault(ompt_id_t),
+ const void *CodeptrRA = expectedDefault(void *));
+
+ static OmptAssertEvent
+ TargetEmi(const std::string &Name, const std::string &Group,
+ const ObserveState &Expected, ompt_target_t Kind,
+ ompt_scope_endpoint_t Endpoint,
+ int DeviceNum = expectedDefault(int),
+ ompt_data_t *TaskData = expectedDefault(ompt_data_t *),
+ ompt_data_t *TargetTaskData = expectedDefault(ompt_data_t *),
+ ompt_data_t *TargetData = expectedDefault(ompt_data_t *),
+ const void *CodeptrRA = expectedDefault(void *));
+
+ static OmptAssertEvent
+ TargetDataOp(const std::string &Name, const std::string &Group,
----------------
jprotze wrote:
Why are there two of them with different argument orderings?
https://github.com/llvm/llvm-project/pull/147381
More information about the Openmp-commits
mailing list