14#ifndef LLVM_SUPPORT_AMDGPUASYNCSTAGES_H
15#define LLVM_SUPPORT_AMDGPUASYNCSTAGES_H
74 "GLOBAL_LOAD_ASYNC_TO_LDS",
75 "GLOBAL_LOAD_ASYNC_TO_LDS_MCAST",
76 "GLOBAL_STORE_ASYNC_FROM_LDS",
106 [](
unsigned I) {
return static_cast<AsyncStages>(1u <<
I); }),
107 [Mask](
AsyncStages Stage) {
return any(Mask & Stage); });
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file contains library features backported from future STL versions.
Provides some synthesis utilities to produce sequences of values.
This file implements the C++20 <bit> header.
A wrapper around a string literal that serves as a proxy for constructing global tables of StringRefs...
Represent a constant reference to a string, i.e.
This class implements an extremely fast bulk output stream that can only output to a stream.
@ LLVM_MARK_AS_BITMASK_ENUM
StringRef getAsyncStageName(AsyncStages Stage)
constexpr AsyncStages asyncStagesFromMaskOperand(int64_t Mask)
constexpr bool isValidAsyncStageMask(int64_t Mask)
AsyncStages
Bit mask of the async stages tracked by the asyncmark / wait_asyncmark intrinsics.
@ GLOBAL_LOAD_ASYNC_TO_LDS
@ GLOBAL_LOAD_ASYNC_TO_LDS_MCAST
@ GLOBAL_STORE_ASYNC_FROM_LDS
raw_ostream & operator<<(raw_ostream &OS, AsyncStages Mask)
Print the stages named by Mask as a '|'-separated list, or "all" if it names every stage.
LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()
constexpr StringLiteral AsyncStageNames[NumAsyncStages]
The name of each stage, indexed by the position of its bit.
auto asyncStages(AsyncStages Mask)
unsigned getAsyncStageIndex(AsyncStages Stage)
constexpr unsigned NumAsyncStages
The number of stages, which is also the number of bits in a stage mask.
void interleave(ForwardIterator begin, ForwardIterator end, UnaryFunctor each_fn, NullaryFunctor between_fn)
An STL-style algorithm similar to std::for_each that applies a second functor between every pair of e...
auto map_range(ContainerTy &&C, FuncTy F)
Return a range that applies F to the elements of C.
int countr_zero(T Val)
Count number of 0's from the least significant bit to the most stopping at the first 1.
constexpr bool has_single_bit(T Value) noexcept
constexpr std::underlying_type_t< Enum > to_underlying(Enum E)
Returns underlying integer value of an enum.
iterator_range< filter_iterator< detail::IterOfRange< RangeT >, PredicateT > > make_filter_range(RangeT &&Range, PredicateT Pred)
Convenience function that takes a range of elements and a predicate, and return a new filter_iterator...
constexpr unsigned BitWidth
constexpr auto seq(T Begin, T End)
Iterate over an integral type from Begin up to - but not including - End.