gem5  v19.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | List of all members
VecLaneT< VecElem, Const > Class Template Reference

Vector Lane abstraction Another view of a container. More...

#include <vec_reg.hh>

Public Member Functions

 operator VecElem () const
 Cast to vecElem. More...
 
template<bool Cond = !Const, typename std::enable_if< Cond, int >::type = 0>
 operator VecLaneT< typename std::enable_if< Cond, VecElem >::type, true > ()
 Constification. More...
 
using MyClass = VecLaneT< VecElem, Const >
 My type alias. More...
 
using Cont = typename std::conditional< Const, const VecElem, VecElem >::type
 
friend VecLaneT< VecElem, !Const >
 VecRegContainer friendship to access private VecLaneT constructors. More...
 
class VecRegContainer< 8 >
 
class VecRegContainer< 16 >
 
class VecRegContainer< 32 >
 
class VecRegContainer< 64 >
 
class VecRegContainer< 128 >
 
class VecRegContainer< 256 >
 
class VecRegContainer< MaxVecRegLenInBytes >
 
Contcontainer
 Reference to data. More...
 
 VecLaneT (Cont &cont)
 Constructor. More...
 
template<bool Assignable = !Const>
std::enable_if< Assignable, MyClass & >::type operator= (const VecElem &that)
 Assignment operators. More...
 
template<bool Assignable = !Const, typename T >
std::enable_if< Assignable, MyClass & >::type operator= (const T &that)
 Generic. More...
 

Detailed Description

template<typename VecElem, bool Const>
class VecLaneT< VecElem, Const >

Vector Lane abstraction Another view of a container.

This time only a partial part of it is exposed.

Template Parameters
VecElemType of each element of the vector.
ConstIndicate if the underlying container can be modified through the view.

Definition at line 262 of file vec_reg.hh.

Member Typedef Documentation

◆ Cont

template<typename VecElem, bool Const>
using VecLaneT< VecElem, Const >::Cont = typename std::conditional<Const, const VecElem, VecElem>::type
private

Definition at line 536 of file vec_reg.hh.

◆ MyClass

template<typename VecElem, bool Const>
using VecLaneT< VecElem, Const >::MyClass = VecLaneT<VecElem, Const>

My type alias.

Definition at line 531 of file vec_reg.hh.

Constructor & Destructor Documentation

◆ VecLaneT()

template<typename VecElem, bool Const>
VecLaneT< VecElem, Const >::VecLaneT ( Cont cont)
inlineprivate

Constructor.

Definition at line 545 of file vec_reg.hh.

References type.

Member Function Documentation

◆ operator VecElem()

template<typename VecElem, bool Const>
VecLaneT< VecElem, Const >::operator VecElem ( ) const
inline

Cast to vecElem.

Definition at line 576 of file vec_reg.hh.

References VecRegT< VecElem, NumElems, Const >::container, and type.

◆ operator VecLaneT< typename std::enable_if< Cond, VecElem >::type, true >()

template<typename VecElem, bool Const>
template<bool Cond = !Const, typename std::enable_if< Cond, int >::type = 0>
VecLaneT< VecElem, Const >::operator VecLaneT< typename std::enable_if< Cond, VecElem >::type, true > ( )
inline

Constification.

Definition at line 580 of file vec_reg.hh.

References VecRegT< VecElem, NumElems, Const >::container.

◆ operator=() [1/2]

template<typename VecElem, bool Const>
template<bool Assignable = !Const>
std::enable_if<Assignable, MyClass&>::type VecLaneT< VecElem, Const >::operator= ( const VecElem &  that)
inline

Assignment operators.

Assignment operators are only enabled if the underlying container is non-constant.

Definition at line 555 of file vec_reg.hh.

References type.

◆ operator=() [2/2]

template<typename VecElem, bool Const>
template<bool Assignable = !Const, typename T >
std::enable_if<Assignable, MyClass&>::type VecLaneT< VecElem, Const >::operator= ( const T &  that)
inline

Generic.

Generic bitwise assignment. Narrowing and widening assignemnts are not allowed, pre-treatment of the rhs is required to conform.

Definition at line 566 of file vec_reg.hh.

Friends And Related Function Documentation

◆ VecRegContainer< 128 >

template<typename VecElem, bool Const>
friend class VecRegContainer< 128 >
friend

Definition at line 526 of file vec_reg.hh.

◆ VecRegContainer< 16 >

template<typename VecElem, bool Const>
friend class VecRegContainer< 16 >
friend

Definition at line 523 of file vec_reg.hh.

◆ VecRegContainer< 256 >

template<typename VecElem, bool Const>
friend class VecRegContainer< 256 >
friend

Definition at line 527 of file vec_reg.hh.

◆ VecRegContainer< 32 >

template<typename VecElem, bool Const>
friend class VecRegContainer< 32 >
friend

Definition at line 524 of file vec_reg.hh.

◆ VecRegContainer< 64 >

template<typename VecElem, bool Const>
friend class VecRegContainer< 64 >
friend

Definition at line 525 of file vec_reg.hh.

◆ VecRegContainer< 8 >

template<typename VecElem, bool Const>
friend class VecRegContainer< 8 >
friend

Definition at line 522 of file vec_reg.hh.

◆ VecRegContainer< MaxVecRegLenInBytes >

template<typename VecElem, bool Const>
friend class VecRegContainer< MaxVecRegLenInBytes >
friend

Definition at line 528 of file vec_reg.hh.

Member Data Documentation

◆ container

template<typename VecElem, bool Const>
Cont& VecLaneT< VecElem, Const >::container
private

Reference to data.

Definition at line 538 of file vec_reg.hh.

◆ VecLaneT< VecElem, !Const >

template<typename VecElem, bool Const>
friend VecLaneT< VecElem, Const >::VecLaneT< VecElem, !Const >

VecRegContainer friendship to access private VecLaneT constructors.

Only VecRegContainers can build VecLanes.

Definition at line 518 of file vec_reg.hh.


The documentation for this class was generated from the following file:

Generated on Fri Feb 28 2020 16:27:18 for gem5 by doxygen 1.8.13