LLVM 20.0.0git
Classes | Namespaces | Macros | Typedefs | Functions | Variables
ClauseT.h File Reference
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Frontend/OpenMP/OMP.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <iterator>
#include <optional>
#include <tuple>
#include <type_traits>
#include <utility>
#include <variant>

Go to the source code of this file.

Classes

struct  detail::is_variant< T >
 
struct  detail::is_variant< std::variant< Ts... > >
 
struct  detail::UnionOfTwo< std::variant< Types1... >, std::variant< Types2... > >
 
struct  tomp::type::Union<>
 
struct  tomp::type::Union< T, Ts... >
 
struct  tomp::type::DefinedOperatorT< I, E >
 
struct  tomp::type::DefinedOperatorT< I, E >::DefinedOpName
 
struct  tomp::type::RangeT< E >
 
struct  tomp::type::IteratorSpecifierT< TypeType, IdType, ExprType >
 
struct  tomp::type::MapperT< I, E >
 
struct  tomp::type::LoopIterationT< I, E >
 
struct  tomp::type::LoopIterationT< I, E >::Distance
 
struct  tomp::type::ProcedureDesignatorT< I, E >
 
struct  tomp::type::ReductionIdentifierT< I, E >
 
struct  tomp::clause::AbsentT< T, I, E >
 
struct  tomp::clause::AcqRelT< T, I, E >
 
struct  tomp::clause::AcquireT< T, I, E >
 
struct  tomp::clause::AdjustArgsT< T, I, E >
 
struct  tomp::clause::AffinityT< T, I, E >
 
struct  tomp::clause::AlignT< T, I, E >
 
struct  tomp::clause::AlignedT< T, I, E >
 
struct  tomp::clause::AllocateT< T, I, E >
 
struct  tomp::clause::AllocatorT< T, I, E >
 
struct  tomp::clause::AppendArgsT< T, I, E >
 
struct  tomp::clause::AtT< T, I, E >
 
struct  tomp::clause::AtomicDefaultMemOrderT< T, I, E >
 
struct  tomp::clause::BindT< T, I, E >
 
struct  tomp::clause::CaptureT< T, I, E >
 
struct  tomp::clause::CollapseT< T, I, E >
 
struct  tomp::clause::CompareT< T, I, E >
 
struct  tomp::clause::ContainsT< T, I, E >
 
struct  tomp::clause::CopyinT< T, I, E >
 
struct  tomp::clause::CopyprivateT< T, I, E >
 
struct  tomp::clause::DefaultT< T, I, E >
 
struct  tomp::clause::DefaultmapT< T, I, E >
 
struct  tomp::clause::DependT< T, I, E >
 
struct  tomp::clause::DependT< T, I, E >::WithLocators
 
struct  tomp::clause::DestroyT< T, I, E >
 
struct  tomp::clause::DetachT< T, I, E >
 
struct  tomp::clause::DeviceT< T, I, E >
 
struct  tomp::clause::DeviceTypeT< T, I, E >
 
struct  tomp::clause::DistScheduleT< T, I, E >
 
struct  tomp::clause::DoacrossT< T, I, E >
 
struct  tomp::clause::DynamicAllocatorsT< T, I, E >
 
struct  tomp::clause::EnterT< T, I, E >
 
struct  tomp::clause::ExclusiveT< T, I, E >
 
struct  tomp::clause::FailT< T, I, E >
 
struct  tomp::clause::FilterT< T, I, E >
 
struct  tomp::clause::FinalT< T, I, E >
 
struct  tomp::clause::FirstprivateT< T, I, E >
 
struct  tomp::clause::FromT< T, I, E >
 
struct  tomp::clause::FullT< T, I, E >
 
struct  tomp::clause::GrainsizeT< T, I, E >
 
struct  tomp::clause::HasDeviceAddrT< T, I, E >
 
struct  tomp::clause::HintT< T, I, E >
 
struct  tomp::clause::HoldsT< T, I, E >
 
struct  tomp::clause::IfT< T, I, E >
 
struct  tomp::clause::InbranchT< T, I, E >
 
struct  tomp::clause::InclusiveT< T, I, E >
 
struct  tomp::clause::IndirectT< T, I, E >
 
struct  tomp::clause::InitT< T, I, E >
 
struct  tomp::clause::InitializerT< T, I, E >
 
struct  tomp::clause::InReductionT< T, I, E >
 
struct  tomp::clause::IsDevicePtrT< T, I, E >
 
struct  tomp::clause::LastprivateT< T, I, E >
 
struct  tomp::clause::LinearT< T, I, E >
 
struct  tomp::clause::LinkT< T, I, E >
 
struct  tomp::clause::MapT< T, I, E >
 
struct  tomp::clause::MatchT< T, I, E >
 
struct  tomp::clause::MergeableT< T, I, E >
 
struct  tomp::clause::MessageT< T, I, E >
 
struct  tomp::clause::NocontextT< T, I, E >
 
struct  tomp::clause::NogroupT< T, I, E >
 
struct  tomp::clause::NontemporalT< T, I, E >
 
struct  tomp::clause::NoOpenmpT< T, I, E >
 
struct  tomp::clause::NoOpenmpRoutinesT< T, I, E >
 
struct  tomp::clause::NoParallelismT< T, I, E >
 
struct  tomp::clause::NotinbranchT< T, I, E >
 
struct  tomp::clause::NovariantsT< T, I, E >
 
struct  tomp::clause::NowaitT< T, I, E >
 
struct  tomp::clause::NumTasksT< T, I, E >
 
struct  tomp::clause::NumTeamsT< T, I, E >
 
struct  tomp::clause::NumTeamsT< T, I, E >::Range
 
struct  tomp::clause::NumThreadsT< T, I, E >
 
struct  tomp::clause::OmpxAttributeT< T, I, E >
 
struct  tomp::clause::OmpxBareT< T, I, E >
 
struct  tomp::clause::OmpxDynCgroupMemT< T, I, E >
 
struct  tomp::clause::OrderT< T, I, E >
 
struct  tomp::clause::OrderedT< T, I, E >
 
struct  tomp::clause::OtherwiseT< T, I, E >
 
struct  tomp::clause::PartialT< T, I, E >
 
struct  tomp::clause::PriorityT< T, I, E >
 
struct  tomp::clause::PrivateT< T, I, E >
 
struct  tomp::clause::ProcBindT< T, I, E >
 
struct  tomp::clause::ReadT< T, I, E >
 
struct  tomp::clause::ReductionT< T, I, E >
 
struct  tomp::clause::RelaxedT< T, I, E >
 
struct  tomp::clause::ReleaseT< T, I, E >
 
struct  tomp::clause::ReverseOffloadT< T, I, E >
 
struct  tomp::clause::SafelenT< T, I, E >
 
struct  tomp::clause::ScheduleT< T, I, E >
 
struct  tomp::clause::SeqCstT< T, I, E >
 
struct  tomp::clause::SeverityT< T, I, E >
 
struct  tomp::clause::SharedT< T, I, E >
 
struct  tomp::clause::SimdT< T, I, E >
 
struct  tomp::clause::SimdlenT< T, I, E >
 
struct  tomp::clause::SizesT< T, I, E >
 
struct  tomp::clause::TaskReductionT< T, I, E >
 
struct  tomp::clause::ThreadLimitT< T, I, E >
 
struct  tomp::clause::ThreadsT< T, I, E >
 
struct  tomp::clause::ToT< T, I, E >
 
struct  tomp::clause::UnifiedAddressT< T, I, E >
 
struct  tomp::clause::UnifiedSharedMemoryT< T, I, E >
 
struct  tomp::clause::UniformT< T, I, E >
 
struct  tomp::clause::UnknownT< T, I, E >
 
struct  tomp::clause::UntiedT< T, I, E >
 
struct  tomp::clause::UpdateT< T, I, E >
 
struct  tomp::clause::UseT< T, I, E >
 
struct  tomp::clause::UseDeviceAddrT< T, I, E >
 
struct  tomp::clause::UseDevicePtrT< T, I, E >
 
struct  tomp::clause::UsesAllocatorsT< T, I, E >
 
struct  tomp::clause::UsesAllocatorsT< T, I, E >::AllocatorSpec
 
struct  tomp::clause::WeakT< T, I, E >
 
struct  tomp::clause::WhenT< T, I, E >
 
struct  tomp::clause::WriteT< T, I, E >
 
struct  tomp::ClauseT< TypeType, IdType, ExprType, Extras >
 
struct  tomp::DirectiveWithClauses< ClauseType >
 

Namespaces

namespace  detail
 
namespace  tomp
 
namespace  tomp::type
 
namespace  tomp::clause
 

Macros

#define ENUM(Name, ...)   enum class Name { __VA_ARGS__ }
 
#define OPT(x)   std::optional<x>
 
#define CLAUSET_SCOPED_ENUM_MEMBER_CONVERT(Ov, Tv)
 
#define CLAUSET_UNSCOPED_ENUM_MEMBER_CONVERT(Ov, Tv)
 
#define CLAUSET_ENUM_CONVERT(func, OtherE, ThisE, Maps)
 

Typedefs

template<typename T >
using tomp::type::ListT = llvm::SmallVector< T, 0 >
 
template<typename I , typename E >
using tomp::type::ObjectListT = ListT< ObjectT< I, E > >
 
using tomp::type::DirectiveName = llvm::omp::Directive
 
template<typename T , typename I , typename E >
using tomp::type::IteratorT = ListT< IteratorSpecifierT< T, I, E > >
 
template<typename T >
using tomp::ListT = type::ListT< T >
 
template<typename I , typename E >
using tomp::ObjectT = type::ObjectT< I, E >
 
template<typename I , typename E >
using tomp::ObjectListT = type::ObjectListT< I, E >
 
template<typename T , typename I , typename E >
using tomp::IteratorT = type::IteratorT< T, I, E >
 
template<typename T , typename I , typename E >
using tomp::clause::ExtensionClausesT = std::variant< OmpxAttributeT< T, I, E >, OmpxBareT< T, I, E >, OmpxDynCgroupMemT< T, I, E > >
 
template<typename T , typename I , typename E >
using tomp::clause::EmptyClausesT = std::variant< AcqRelT< T, I, E >, AcquireT< T, I, E >, CaptureT< T, I, E >, CompareT< T, I, E >, DynamicAllocatorsT< T, I, E >, FullT< T, I, E >, InbranchT< T, I, E >, MergeableT< T, I, E >, NogroupT< T, I, E >, NoOpenmpRoutinesT< T, I, E >, NoOpenmpT< T, I, E >, NoParallelismT< T, I, E >, NotinbranchT< T, I, E >, NowaitT< T, I, E >, ReadT< T, I, E >, RelaxedT< T, I, E >, ReleaseT< T, I, E >, ReverseOffloadT< T, I, E >, SeqCstT< T, I, E >, SimdT< T, I, E >, ThreadsT< T, I, E >, UnifiedAddressT< T, I, E >, UnifiedSharedMemoryT< T, I, E >, UnknownT< T, I, E >, UntiedT< T, I, E >, UseT< T, I, E >, WeakT< T, I, E >, WriteT< T, I, E > >
 
template<typename T , typename I , typename E >
using tomp::clause::IncompleteClausesT = std::variant< AdjustArgsT< T, I, E >, AppendArgsT< T, I, E >, MatchT< T, I, E >, OtherwiseT< T, I, E >, WhenT< T, I, E > >
 
template<typename T , typename I , typename E >
using tomp::clause::TupleClausesT = std::variant< AffinityT< T, I, E >, AlignedT< T, I, E >, AllocateT< T, I, E >, DefaultmapT< T, I, E >, DeviceT< T, I, E >, DistScheduleT< T, I, E >, DoacrossT< T, I, E >, FromT< T, I, E >, GrainsizeT< T, I, E >, IfT< T, I, E >, InitT< T, I, E >, InReductionT< T, I, E >, LastprivateT< T, I, E >, LinearT< T, I, E >, MapT< T, I, E >, NumTasksT< T, I, E >, OrderT< T, I, E >, ReductionT< T, I, E >, ScheduleT< T, I, E >, TaskReductionT< T, I, E >, ToT< T, I, E > >
 
template<typename T , typename I , typename E >
using tomp::clause::UnionClausesT = std::variant< DependT< T, I, E > >
 
template<typename T , typename I , typename E >
using tomp::clause::WrapperClausesT = std::variant< AbsentT< T, I, E >, AlignT< T, I, E >, AllocatorT< T, I, E >, AtomicDefaultMemOrderT< T, I, E >, AtT< T, I, E >, BindT< T, I, E >, CollapseT< T, I, E >, ContainsT< T, I, E >, CopyinT< T, I, E >, CopyprivateT< T, I, E >, DefaultT< T, I, E >, DestroyT< T, I, E >, DetachT< T, I, E >, DeviceTypeT< T, I, E >, EnterT< T, I, E >, ExclusiveT< T, I, E >, FailT< T, I, E >, FilterT< T, I, E >, FinalT< T, I, E >, FirstprivateT< T, I, E >, HasDeviceAddrT< T, I, E >, HintT< T, I, E >, HoldsT< T, I, E >, InclusiveT< T, I, E >, IndirectT< T, I, E >, InitializerT< T, I, E >, IsDevicePtrT< T, I, E >, LinkT< T, I, E >, MessageT< T, I, E >, NocontextT< T, I, E >, NontemporalT< T, I, E >, NovariantsT< T, I, E >, NumTeamsT< T, I, E >, NumThreadsT< T, I, E >, OrderedT< T, I, E >, PartialT< T, I, E >, PriorityT< T, I, E >, PrivateT< T, I, E >, ProcBindT< T, I, E >, SafelenT< T, I, E >, SeverityT< T, I, E >, SharedT< T, I, E >, SimdlenT< T, I, E >, SizesT< T, I, E >, ThreadLimitT< T, I, E >, UniformT< T, I, E >, UpdateT< T, I, E >, UseDeviceAddrT< T, I, E >, UseDevicePtrT< T, I, E >, UsesAllocatorsT< T, I, E > >
 
template<typename T , typename I , typename E >
using tomp::clause::UnionOfAllClausesT = typename type::Union< EmptyClausesT< T, I, E >, ExtensionClausesT< T, I, E >, IncompleteClausesT< T, I, E >, TupleClausesT< T, I, E >, UnionClausesT< T, I, E >, WrapperClausesT< T, I, E > >::type
 

Functions

template<typename I , typename E >
bool tomp::type::operator== (const ObjectT< I, E > &o1, const ObjectT< I, E > &o2)
 
 tomp::type::ENUM (MemoryOrder, AcqRel, Acquire, Relaxed, Release, SeqCst)
 
 tomp::type::ENUM (MotionExpectation, Present)
 
 tomp::type::ENUM (TaskDependenceType, In, Out, Inout, Mutexinoutset, Inoutset, Depobj)
 
template<typename T >
std::enable_if_t< T::EmptyTrait::value, booltomp::type::operator== (const T &a, const T &b)
 
template<typename T >
std::enable_if_t< T::IncompleteTrait::value, booltomp::type::operator== (const T &a, const T &b)
 
template<typename T >
std::enable_if_t< T::WrapperTrait::value, booltomp::type::operator== (const T &a, const T &b)
 
template<typename T >
std::enable_if_t< T::TupleTrait::value, booltomp::type::operator== (const T &a, const T &b)
 
template<typename T >
std::enable_if_t< T::UnionTrait::value, booltomp::type::operator== (const T &a, const T &b)
 
template<typename ContainerTy , typename FunctionTy , typename ElemTy = typename llvm::remove_cvref_t<ContainerTy>::value_type, typename ResultTy = std::invoke_result_t<FunctionTy, ElemTy>>
ListT< ResultTy > tomp::makeList (ContainerTy &&container, FunctionTy &&func)
 

Variables

template<typename T >
constexpr bool detail::is_variant_v = is_variant<T>::value
 

Macro Definition Documentation

◆ CLAUSET_ENUM_CONVERT

#define CLAUSET_ENUM_CONVERT (   func,
  OtherE,
  ThisE,
  Maps 
)
Value:
auto func = [](OtherE v) -> ThisE { \
using ThisEnum = ThisE; \
using OtherEnum = OtherE; \
(void)sizeof(OtherEnum); /*Avoid "unused local typedef" warning*/ \
Maps; \
llvm_unreachable("Unexpected value in " #OtherE); \
}

Definition at line 87 of file ClauseT.h.

◆ CLAUSET_SCOPED_ENUM_MEMBER_CONVERT

#define CLAUSET_SCOPED_ENUM_MEMBER_CONVERT (   Ov,
  Tv 
)
Value:
if (v == OtherEnum::Ov) { \
return ThisEnum::Tv; \
}

Definition at line 76 of file ClauseT.h.

◆ CLAUSET_UNSCOPED_ENUM_MEMBER_CONVERT

#define CLAUSET_UNSCOPED_ENUM_MEMBER_CONVERT (   Ov,
  Tv 
)
Value:
if (v == Ov) { \
return ThisEnum::Tv; \
}

Definition at line 82 of file ClauseT.h.

◆ ENUM

#define ENUM (   Name,
  ... 
)    enum class Name { __VA_ARGS__ }

Definition at line 61 of file ClauseT.h.

◆ OPT

#define OPT (   x)    std::optional<x>

Definition at line 62 of file ClauseT.h.