|
template<typename SizeType , std::size_t N, SizeType Extent> |
using | ArrayExtentsNCube = decltype(internal::makeArrayExtents< SizeType, Extent >(std::make_index_sequence< N >{})) |
| N-dimensional ArrayExtents where all N extents are Extent. More...
|
|
template<typename SizeType , std::size_t N> |
using | ArrayExtentsDynamic = ArrayExtentsNCube< SizeType, N, dyn > |
| N-dimensional ArrayExtents where all values are dynamic. More...
|
|
template<typename Field > |
using | GetFieldTag = mp_first< Field > |
| Get the tag from a Field. More...
|
|
template<typename Field > |
using | GetFieldType = mp_second< Field > |
| Get the type from a Field. More...
|
|
template<typename RecordDim , typename RecordCoord > |
using | GetTags = typename internal::GetTagsImpl< RecordDim, RecordCoord >::type |
|
template<typename RecordDim , typename RecordCoord > |
using | GetTag = typename internal::GetTagImpl< RecordDim, RecordCoord >::type |
| Get the tag of the Field at a RecordCoord inside the record dimension tree. More...
|
|
template<typename RecordDim , typename... TagsOrTagList> |
using | GetCoordFromTags = typename internal::GetCoordFromTagsImpl< RecordDim, RecordCoord<>, TagsOrTagList... >::type |
|
template<typename RecordDim , typename... RecordCoordOrTags> |
using | GetType = typename internal::GetTypeImpl< RecordDim, RecordCoordOrTags... >::type |
|
template<typename RecordDim > |
using | LeafRecordCoords = typename internal::LeafRecordCoordsImpl< RecordDim, RecordCoord<> >::type |
| Returns a flat type list containing all record coordinates to all leaves of the given record dimension. More...
|
|
template<typename RecordDim > |
using | FlatRecordDim = typename internal::FlattenRecordDimImpl< RecordDim >::type |
| Returns a flat type list containing all leaf field types of the given record dimension. More...
|
|
template<typename RecordDim , template< typename, typename > typename FieldTypeFunctor> |
using | TransformLeavesWithCoord = typename internal::TransformLeavesWithCoordImpl< RecordCoord<>, RecordDim, FieldTypeFunctor >::type |
|
template<typename RecordDim , template< typename > typename FieldTypeFunctor> |
using | TransformLeaves = TransformLeavesWithCoord< RecordDim, internal::MakePassSecond< FieldTypeFunctor >::template fn > |
|
template<typename RecordDimA , typename RecordDimB > |
using | MergedRecordDims = typename decltype(internal::mergeRecordDimsImpl(mp_identity< RecordDimA >{}, mp_identity< RecordDimB >{}))::type |
| Creates a merged record dimension, where duplicated, nested fields are unified. More...
|
|
template<typename FromT , typename ToT > |
using | CopyConst = std::conditional_t< std::is_const_v< FromT >, const ToT, ToT > |
| Alias for ToT, adding const if FromT is const qualified. More...
|
|
template<auto V> |
using | Constant = std::integral_constant< decltype(V), V > |
| Used as template argument to specify a constant/compile-time value. More...
|
|
template<typename Expression , typename... Args> |
using | ReplacePlaceholders = typename internal::ReplacePlaceholdersImpl< Expression, Args... >::type |
|
template<typename L > |
using | RecordCoordFromList = internal::mp_unwrap_values_into< L, RecordCoord > |
| Converts a type list of integral constants into a RecordCoord. More...
|
|
template<typename... RecordCoords> |
using | Cat = RecordCoordFromList< mp_append< typename RecordCoords::List... > > |
| Concatenate a set of RecordCoords. More...
|
|
template<typename RecordCoord > |
using | PopFront = RecordCoordFromList< mp_pop_front< typename RecordCoord::List > > |
| RecordCoord without first coordinate component. More...
|
|
template<typename RecordDim , std::size_t N, template< typename, auto > typename MakeSizedSimd> |
using | SimdizeN = typename internal::SimdizeNImpl< RecordDim, N, MakeSizedSimd >::type |
|
template<typename RecordDim , template< typename > typename MakeSimd> |
using | Simdize = TransformLeaves< RecordDim, MakeSimd > |
|
template<typename T , std::size_t N, template< typename, auto > typename MakeSizedSimd> |
using | SimdN = typename std::conditional_t< isRecordDim< T >, std::conditional_t< N==1, mp_identity< One< T > >, mp_identity< One< SimdizeN< T, N, MakeSizedSimd > >> >, std::conditional_t< N==1, mp_identity< T >, mp_identity< SimdizeN< T, N, MakeSizedSimd > >> >::type |
|
template<typename T , template< typename > typename MakeSimd> |
using | Simd = typename std::conditional_t< isRecordDim< T >, mp_identity< One< Simdize< T, MakeSimd > >>, mp_identity< Simdize< T, MakeSimd > >>::type |
|
template<typename RecordDim > |
using | One = RecordRef< decltype(allocScalarView< 0, RecordDim >()), RecordCoord<>, true > |
| A RecordRef that owns and holds a single value. More...
|
|
|
template<typename First , typename... Args> |
| Array (First, Args... args) -> Array< First, sizeof...(Args)+1 > |
|
template<typename T , std::size_t N> |
auto | operator<< (std::ostream &os, const Array< T, N > &a) -> std::ostream & |
|
template<typename T , std::size_t N> |
constexpr auto | pushFront ([[maybe_unused]] Array< T, N > a, T v) -> Array< T, N+1 > |
|
template<typename T , std::size_t N> |
constexpr auto | pushBack ([[maybe_unused]] Array< T, N > a, T v) -> Array< T, N+1 > |
|
template<typename T , std::size_t N> |
constexpr auto | popBack ([[maybe_unused]] Array< T, N > a) |
|
template<typename T , std::size_t N> |
constexpr auto | popFront ([[maybe_unused]] Array< T, N > a) |
|
template<typename T , std::size_t N> |
constexpr auto | product (Array< T, N > a) -> T |
|
template<typename T , std::size_t N> |
constexpr auto | dot ([[maybe_unused]] Array< T, N > a, [[maybe_unused]] Array< T, N > b) -> T |
|
template<std::size_t Dim, typename TA , typename TB > |
constexpr auto | operator== (ArrayIndex< TA, Dim > a, ArrayIndex< TB, Dim > b) -> bool |
|
template<std::size_t Dim, typename TA , typename TB > |
constexpr auto | operator!= (ArrayIndex< TA, Dim > a, ArrayIndex< TB, Dim > b) -> bool |
|
template<typename... Args> |
| ArrayIndex (Args...) -> ArrayIndex< typename internal::IndexTypeFromArgs< std::size_t, Args... >::type, sizeof...(Args)> |
|
template<typename... Args> |
| ArrayExtents (Args...) -> ArrayExtents< typename internal::IndexTypeFromArgs< std::size_t, Args... >::type,(Args{}, dyn)... > |
|
template<typename SizeTypeA , SizeTypeA... SizesA, typename SizeTypeB , SizeTypeB... SizesB> |
constexpr auto | operator== (ArrayExtents< SizeTypeA, SizesA... > a, ArrayExtents< SizeTypeB, SizesB... > b) -> bool |
|
template<typename SizeTypeA , SizeTypeA... SizesA, typename SizeTypeB , SizeTypeB... SizesB> |
constexpr auto | operator!= (ArrayExtents< SizeTypeA, SizesA... > a, ArrayExtents< SizeTypeB, SizesB... > b) -> bool |
|
template<typename SizeType , SizeType... Sizes> |
constexpr auto | product (ArrayExtents< SizeType, Sizes... > e) -> SizeType |
|
template<typename SizeType , std::size_t Dim, typename Func , typename... OuterIndices> |
void | forEachArrayIndex ([[maybe_unused]] const ArrayIndex< SizeType, Dim > &extents, Func &&func, OuterIndices... outerIndices) |
|
template<typename SizeType , SizeType... Sizes, typename Func > |
void | forEachArrayIndex (ArrayExtents< SizeType, Sizes... > extents, Func &&func) |
|
template<typename Mapping , typename SrcBlob , typename DstBlob , typename MemcpyFunc = decltype(internal::memcpy)> |
void | memcpyBlobs (const View< Mapping, SrcBlob > &srcView, View< Mapping, DstBlob > &dstView, std::size_t threadId=0, std::size_t threadCount=1, MemcpyFunc singleThreadMemcpy=internal::memcpy) |
|
template<typename Mapping , typename SrcBlob , typename DstBlob , typename BlobCopyFunc = decltype(internal::copyBlobWithMemcpy)> |
void | copyBlobs (const View< Mapping, SrcBlob > &srcView, View< Mapping, DstBlob > &dstView, BlobCopyFunc copyBlob=internal::copyBlobWithMemcpy) |
|
template<typename SrcMapping , typename SrcBlob , typename DstMapping , typename DstBlob > |
void | fieldWiseCopy (const View< SrcMapping, SrcBlob > &srcView, View< DstMapping, DstBlob > &dstView, std::size_t threadId=0, std::size_t threadCount=1) |
|
template<typename SrcMapping , typename SrcBlob , typename DstMapping , typename DstBlob > |
void | aosoaCommonBlockCopy (const View< SrcMapping, SrcBlob > &srcView, View< DstMapping, DstBlob > &dstView, std::size_t threadId=0, std::size_t threadCount=1) |
|
template<typename SrcMapping , typename SrcBlob , typename DstMapping , typename DstBlob > |
void | copy (const View< SrcMapping, SrcBlob > &srcView, View< DstMapping, DstBlob > &dstView, std::size_t threadId=0, std::size_t threadCount=1) |
|
template<typename Int > |
| NrAndOffset (Int, Int) -> NrAndOffset< Int > |
|
template<typename TA , typename TB > |
auto | operator== (const NrAndOffset< TA > &a, const NrAndOffset< TB > &b) -> bool |
|
template<typename TA , typename TB > |
auto | operator!= (const NrAndOffset< TA > &a, const NrAndOffset< TB > &b) -> bool |
|
template<typename RecordDim , typename Functor , std::size_t... Coords> |
constexpr void | forEachLeafCoord (Functor &&functor, RecordCoord< Coords... > baseCoord) |
|
template<typename RecordDim , typename Functor , typename... Tags> |
constexpr void | forEachLeafCoord (Functor &&functor, Tags...) |
|
template<typename Integral > |
constexpr auto | divCeil (Integral a, Integral b) -> Integral |
| Returns the ceiling of a / b. More...
|
|
template<typename Integral > |
constexpr auto | roundUpToMultiple (Integral n, Integral mult) -> Integral |
| Returns the integral n rounded up to be a multiple of mult. More...
|
|
auto | prettySize (double size) -> PrettySize |
|
template<typename L , typename F > |
constexpr void | mp_for_each_inline (F &&f) |
| Like boost::mp11::mp_for_each, but marked with LLAMA_FN_HOST_ACC_INLINE. More...
|
|
template<std::size_t PieceLength, typename Mapping > |
constexpr auto | mapsPiecewiseContiguous (const Mapping &m) -> bool |
|
template<std::size_t... CoordsA, std::size_t... CoordsB> |
constexpr auto | operator== (RecordCoord< CoordsA... >, RecordCoord< CoordsB... >) |
|
template<std::size_t... Coords> |
constexpr auto | operator== (RecordCoord< Coords... >, RecordCoord< Coords... >) |
|
template<std::size_t... CoordsA, std::size_t... CoordsB> |
constexpr auto | operator!= (RecordCoord< CoordsA... > a, RecordCoord< CoordsB... > b) |
|
template<std::size_t... RCs> |
auto | operator<< (std::ostream &os, RecordCoord< RCs... >) -> std::ostream & |
|
template<char... Digits> |
constexpr auto | operator""_RC () |
| Literal operator for converting a numeric literal into a RecordCoord. More...
|
|
template<typename... RecordCoords> |
constexpr auto | cat (RecordCoords...) |
| Concatenate a set of RecordCoords instances. More...
|
|
template<typename View , typename BoundRecordCoord , bool OwnView> |
auto | copyRecord (const RecordRef< View, BoundRecordCoord, OwnView > &rr) |
| Returns a One with the same record dimension as the given record ref, with values copyied from rr. More...
|
|
template<typename ViewA , typename BoundRecordDimA , bool OwnViewA, typename ViewB , typename BoundRecordDimB , bool OwnViewB> |
auto | swap (RecordRef< ViewA, BoundRecordDimA, OwnViewA > &a, RecordRef< ViewB, BoundRecordDimB, OwnViewB > &b) noexcept -> std::enable_if_t< std::is_same_v< typename RecordRef< ViewA, BoundRecordDimA, OwnViewA >::AccessibleRecordDim, typename RecordRef< ViewB, BoundRecordDimB, OwnViewB >::AccessibleRecordDim >> |
|
template<typename View , typename BoundRecordCoord , bool OwnView> |
auto | operator<< (std::ostream &os, const RecordRef< View, BoundRecordCoord, OwnView > &vr) -> std::ostream & |
|
template<typename RecordRefFwd , typename Functor > |
constexpr void | forEachLeaf (RecordRefFwd &&vr, Functor &&functor) |
|
template<typename T > |
auto | decayCopy (T &&valueOrRef) -> typename internal::ValueOf< T >::type |
| Pulls a copy of the given value or reference. Proxy references are resolved to their value types. More...
|
|
template<typename T > |
| ScopedUpdate (T) -> ScopedUpdate< typename internal::ReferenceTo< std::remove_reference_t< T >>::type > |
|
template<typename RecordDim , template< typename > typename MakeSimd, typename BinaryReductionFunction > |
constexpr auto | chooseSimdLanes (BinaryReductionFunction reduce) -> std::size_t |
|
template<typename T , typename Simd > |
void | loadSimd (const T &srcRef, Simd &dstSimd) |
|
template<typename Simd , typename TFwd > |
void | storeSimd (const Simd &srcSimd, TFwd &&dstRef) |
|
template<std::size_t N, template< typename, auto > typename MakeSizedSimd, typename View , typename UnarySimdFunction > |
void | simdForEachN (View &view, UnarySimdFunction f) |
|
template<template< typename > typename MakeSimd, template< typename, auto > typename MakeSizedSimd, typename View , typename UnarySimdFunction > |
void | simdForEach (View &view, UnarySimdFunction f) |
|
template<typename T > |
constexpr auto | structName (T={}) -> std::string_view |
|
template<typename RecordDim , std::size_t... Coords> |
constexpr auto | prettyRecordCoord (RecordCoord< Coords... >={}) -> std::string_view |
|
template<typename RecordDim > |
constexpr auto | prettyRecordCoord (RecordCoord<>) -> std::string_view |
|
template<typename... Elements> |
| Tuple (Elements...) -> Tuple< std::remove_cv_t< std::remove_reference_t< Elements >>... > |
|
template<std::size_t I, typename... Elements> |
constexpr auto | get (Tuple< Elements... > &tuple) -> auto & |
|
template<std::size_t I, typename... Elements> |
constexpr auto | get (const Tuple< Elements... > &tuple) -> const auto & |
|
template<typename... ElementsA, typename... ElementsB> |
constexpr auto | operator== (const Tuple< ElementsA... > &a, const Tuple< ElementsB... > &b) -> bool |
|
template<typename... ElementsA, typename... ElementsB> |
constexpr auto | operator!= (const Tuple< ElementsA... > &a, const Tuple< ElementsB... > &b) -> bool |
|
template<typename Tuple1 , typename Tuple2 > |
constexpr auto | tupleCat (const Tuple1 &t1, const Tuple2 &t2) |
|
template<std::size_t Pos, typename Tuple , typename Replacement > |
constexpr auto | tupleReplace (Tuple &&tuple, Replacement &&replacement) |
| Creates a copy of a tuple with the element at position Pos replaced by replacement. More...
|
|
template<typename... Elements, typename Functor > |
constexpr auto | tupleTransform (const Tuple< Elements... > &tuple, const Functor &functor) |
|
template<typename... Elements> |
constexpr auto | popFront (const Tuple< Elements... > &tuple) |
| Returns a copy of the tuple without the first element. More...
|
|
template<typename Mapping , typename Allocator = bloballoc::Vector, typename Accessor = accessor::Default> |
auto | allocViewUninitialized (Mapping mapping={}, const Allocator &alloc={}, Accessor accessor={}) |
| Same as allocView but does not run field constructors. More...
|
|
template<typename Mapping , typename BlobType , typename Accessor , std::size_t... RCs> |
void | constructField (View< Mapping, BlobType, Accessor > &view, typename Mapping::ArrayExtents::Index ai, RecordCoord< RCs... > rc) |
|
template<typename Mapping , typename BlobType , typename Accessor > |
void | constructFields (View< Mapping, BlobType, Accessor > &view) |
|
template<typename Mapping , typename Allocator = bloballoc::Vector, typename Accessor = accessor::Default> |
auto | allocView (Mapping mapping={}, const Allocator &alloc={}, Accessor accessor={}) -> View< Mapping, internal::AllocatorBlobType< Allocator, typename Mapping::RecordDim >, Accessor > |
|
template<std::size_t Dim, typename RecordDim > |
auto | allocScalarViewUninitialized () -> decltype(auto) |
| Same as allocScalarView but does not run field constructors. More...
|
|
template<std::size_t Dim, typename RecordDim > |
auto | allocScalarView () -> decltype(auto) |
|
template<typename Mapping , typename RecordCoord , typename Blobs > |
auto | mapToMemory (Mapping &mapping, typename Mapping::ArrayExtents::Index ai, RecordCoord rc, Blobs &blobs) -> decltype(auto) |
|
template<typename ViewFwd , typename TransformBlobFunc , typename = std::enable_if_t<isView<std::decay_t<ViewFwd>>>> |
auto | transformBlobs (ViewFwd &&view, const TransformBlobFunc &transformBlob) |
|
template<typename View , typename NewBlobType = CopyConst<std::remove_reference_t<View>, std::byte>*, typename = std::enable_if_t<isView<std::decay_t<View>>>> |
auto | shallowCopy (View &&view) |
|
template<typename NewAccessor , typename ViewFwd , typename = std::enable_if_t<isView<std::decay_t<ViewFwd>>>> |
auto | withAccessor (ViewFwd &&view, NewAccessor newAccessor={}) |
|
template<typename NewMapping , typename ViewFwd , typename = std::enable_if_t<isView<std::decay_t<ViewFwd>>>> |
auto | withMapping (ViewFwd &&view, NewMapping newMapping={}) |
|
template<typename TStoredParentView > |
| SubView (TStoredParentView &&, typename std::remove_reference_t< TStoredParentView >::Mapping::ArrayExtents::Index) -> SubView< TStoredParentView > |
|
|
constexpr auto | dyn = internal::Dyn{} |
| Used as a template argument to ArrayExtents to mark a dynamic extent. More...
|
|
template<typename R > |
constexpr bool | isProxyReference = internal::IsProxyReferenceImpl<R>::value |
|
template<typename T > |
constexpr bool | isAllowedFieldType = std::is_trivially_destructible_v<T> |
| Tells whether the given type is allowed as a field type in LLAMA. Such types need to be trivially constructible and trivially destructible. More...
|
|
template<typename T > |
constexpr bool | isField = false |
|
template<typename Tag , typename Type > |
constexpr bool | isField< Field< Tag, Type > > = true |
|
template<typename T > |
constexpr auto | isRecord = false |
|
template<typename... Fields> |
constexpr auto | isRecord< Record< Fields... > > = true |
|
template<typename RecordDimA , typename RecordCoordA , typename RecordDimB , typename RecordCoordB > |
constexpr auto | hasSameTags |
|
template<typename RecordDim > |
constexpr std::size_t | flatFieldCount = 1 |
| The total number of fields in the recursively expanded record dimension. More...
|
|
template<typename... Children> |
constexpr std::size_t | flatFieldCount< Record< Children... > > = (flatFieldCount<GetFieldType<Children>> + ... + 0) |
|
template<typename Child , std::size_t N> |
constexpr std::size_t | flatFieldCount< Child[N]> = flatFieldCount<Child> * N |
|
template<typename RecordDim , typename RecordCoord > |
constexpr std::size_t | flatRecordCoord = 0 |
|
template<typename T > |
constexpr std::size_t | flatRecordCoord< T, RecordCoord<> > = 0 |
|
template<typename... Children, std::size_t I, std::size_t... Is> |
constexpr std::size_t | flatRecordCoord< Record< Children... >, RecordCoord< I, Is... > > |
|
template<typename Child , std::size_t N, std::size_t I, std::size_t... Is> |
constexpr std::size_t | flatRecordCoord< Child[N], RecordCoord< I, Is... > > = flatFieldCount<Child> * I + flatRecordCoord<Child, RecordCoord<Is...>> |
|
template<typename TypeList > |
constexpr std::size_t | flatAlignOf = internal::flatAlignOfImpl<TypeList>() |
|
template<typename T > |
constexpr std::size_t | alignOf = alignof(T) |
| The alignment of a type T. More...
|
|
template<typename... Fields> |
constexpr std::size_t | alignOf< Record< Fields... > > = flatAlignOf<FlatRecordDim<Record<Fields...>>> |
|
template<typename TypeList , bool Align, bool IncludeTailPadding = true> |
constexpr std::size_t | flatSizeOf = internal::sizeOfImpl<TypeList, Align, IncludeTailPadding>() |
| The size of a type list if its elements would be in a normal struct. More...
|
|
template<typename T , bool Align = false, bool IncludeTailPadding = true> |
constexpr std::size_t | sizeOf = sizeof(T) |
| The size of a type T. More...
|
|
template<typename... Fields, bool Align, bool IncludeTailPadding> |
constexpr std::size_t | sizeOf< Record< Fields... >, Align, IncludeTailPadding > = flatSizeOf<FlatRecordDim<Record<Fields...>>, Align, IncludeTailPadding> |
| The size of a record dimension if its fields would be in a normal struct. More...
|
|
template<typename TypeList , std::size_t I, bool Align> |
constexpr std::size_t | flatOffsetOf = internal::offsetOfImplWorkaround<TypeList, I, Align>() |
| The byte offset of an element in a type list ifs elements would be in a normal struct. More...
|
|
template<typename RecordDim , typename RecordCoord , bool Align = false> |
constexpr std::size_t | offsetOf = flatOffsetOf<FlatRecordDim<RecordDim>, flatRecordCoord<RecordDim, RecordCoord>, Align> |
|
template<typename T > |
constexpr bool | isRecordDim = isRecord<T> || internal::IsBoundedArray<T>::value |
| True if the T is a record dimension. That is, T is either a llama::Record or a bounded array. More...
|
|
template<typename T > |
constexpr bool | isConstant = internal::IsConstant<T>::value |
|
template<typename T > |
constexpr bool | isRecordCoord = false |
|
template<std::size_t... Coords> |
constexpr bool | isRecordCoord< RecordCoord< Coords... > > = true |
|
template<typename First , typename Second > |
constexpr auto | recordCoordCommonPrefixIsBigger = internal::recordCoordCommonPrefixIsBiggerImpl(First{}, Second{}) |
| Checks wether the first RecordCoord is bigger than the second. More...
|
|
template<typename First , typename Second > |
constexpr auto | recordCoordCommonPrefixIsSame = internal::recordCoordCommonPrefixIsSameImpl(First{}, Second{}) |
| Checks whether two RecordCoords are the same or one is the prefix of the other. More...
|
|
template<typename View > |
constexpr auto | isRecordRef = false |
|
template<typename View , typename BoundRecordCoord , bool OwnView> |
constexpr auto | isRecordRef< RecordRef< View, BoundRecordCoord, OwnView > > = true |
|
template<typename Simd , typename SFINAE = void> |
constexpr auto | simdLanes = SimdTraits<Simd>::lanes |
|
template<typename RecordDim , template< typename > typename MakeSimd> |
constexpr std::size_t | simdLanesWithFullVectorsFor |
|
template<typename RecordDim , template< typename > typename MakeSimd> |
constexpr std::size_t | simdLanesWithLeastRegistersFor |
|
template<typename T > |
constexpr auto | qualifiedTypeName |
|
template<typename Mapping , typename RecordCoord > |
constexpr bool | isComputed = internal::IsComputed<Mapping, RecordCoord>::value |
| Returns true if the field accessed via the given mapping and record coordinate is a computed value. More...
|
|
template<typename Mapping > |
constexpr bool | hasAnyComputedField |
| Returns true if any field accessed via the given mapping is a computed value. More...
|
|
template<typename T > |
constexpr bool | isOne = false |
| Is true, if T is an instance of One. More...
|
|
template<typename View , typename BoundRecordCoord > |
constexpr bool | isOne< RecordRef< View, BoundRecordCoord, true > > = true |
|
template<typename View > |
constexpr auto | isView = false |
|
template<typename Mapping , typename BlobType , typename Accessor > |
constexpr auto | isView< View< Mapping, BlobType, Accessor > > = true |
|