LLVM 22.0.0git
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 >::TaskDep
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::DynGroupprivateT< 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::GraphIdT< T, I, E >
struct  tomp::clause::GraphResetT< 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::NoOpenmpConstructsT< 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::PermutationT< 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::ReplayableT< 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::TransparentT< T, I, E >
struct  tomp::clause::UnifiedAddressT< T, I, E >
struct  tomp::clause::UnifiedSharedMemoryT< T, I, E >
struct  tomp::clause::SelfMapsT< 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, ...)
#define OPT(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
template<typename T, typename I, typename E>
using tomp::clause::EmptyClausesT
template<typename T, typename I, typename E>
using tomp::clause::IncompleteClausesT
template<typename T, typename I, typename E>
using tomp::clause::TupleClausesT
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
template<typename T, typename I, typename E>
using tomp::clause::UnionOfAllClausesT

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 (DependenceType, Depobj, In, Inout, Inoutset, Mutexinoutset, Out, Sink, Source)
 tomp::type::ENUM (Prescriptiveness, Strict, Fallback)
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)
template<typename I, typename E>
bool tomp::clause::operator== (const ObjectT< I, E > &o1, const ObjectT< I, E > &o2)
template<typename I, typename E>
bool tomp::operator== (const ObjectT< I, E > &o1, const ObjectT< I, E > &o2)

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); \
}
global merge func

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,
... )
Value:
enum class Name { __VA_ARGS__ }

Definition at line 61 of file ClauseT.h.

Referenced by llvm::RISCV::parseTuneCPU().

◆ OPT

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

Definition at line 62 of file ClauseT.h.