gem5  v20.1.0.0
Public Types | Public Member Functions | Static Public Attributes | Private Types | Private Attributes | Friends | List of all members
VecPredRegContainer< NumBits, Packed > Class Template Reference

Generic predicate register container. More...

#include <vec_pred_reg.hh>

Public Types

using Container = std::array< bool, NumBits >
 

Public Member Functions

 VecPredRegContainer ()
 
 VecPredRegContainer (const VecPredRegContainer &)=default
 
MyClassoperator= (const MyClass &that)
 
MyClassoperator= (const std::vector< uint8_t > &that)
 Required for de-serialization. More...
 
void reset ()
 Resets the predicate register to an all-false register. More...
 
void set ()
 Sets the predicate register to an all-true value. More...
 
template<size_t N2, bool P2>
bool operator== (const VecPredRegContainer< N2, P2 > &that) const
 Equality operator, required to compare thread contexts. More...
 
template<size_t N2, bool P2>
bool operator!= (const VecPredRegContainer< N2, P2 > &that) const
 Inequality operator, required to compare thread contexts. More...
 
bool & operator[] (size_t idx)
 Returns a reference to a specific element of the internal container. More...
 
const bool & operator[] (size_t idx) const
 Returns a const reference to a specific element of the internal container. More...
 
uint8_t get_bits (size_t idx, uint8_t nbits) const
 Returns a subset of bits starting from a specific element in the container. More...
 
void set_bits (size_t idx, uint8_t nbits, uint8_t bval)
 Set a subset of bits starting from a specific element in the container. More...
 
const std::string print () const
 Returns a string representation of the register content. More...
 
template<typename VecElem , size_t NumElems = (Packed ? NumBits : NumBits / sizeof(VecElem))>
VecPredRegT< VecElem, NumElems, Packed, true > as () const
 Create a view of this container. More...
 
template<typename VecElem , size_t NumElems = (Packed ? NumBits : NumBits / sizeof(VecElem))>
VecPredRegT< VecElem, NumElems, Packed, false > as ()
 

Static Public Attributes

static constexpr size_t NUM_BITS = NumBits
 

Private Types

using MyClass = VecPredRegContainer< NumBits, Packed >
 

Private Attributes

Container container
 

Friends

std::ostream & operator<< (std::ostream &os, const MyClass &v)
 

Detailed Description

template<size_t NumBits, bool Packed>
class VecPredRegContainer< NumBits, Packed >

Generic predicate register container.

This generic class implements the Model in an MVC pattern, similarly to

See also
VecRegContainer.
Template Parameters
NumBitsSize of the container in bits.
PackedSee @VecRegT.

Definition at line 47 of file vec_pred_reg.hh.

Member Typedef Documentation

◆ Container

template<size_t NumBits, bool Packed>
using VecPredRegContainer< NumBits, Packed >::Container = std::array<bool, NumBits>

Definition at line 238 of file vec_pred_reg.hh.

◆ MyClass

template<size_t NumBits, bool Packed>
using VecPredRegContainer< NumBits, Packed >::MyClass = VecPredRegContainer<NumBits, Packed>
private

Definition at line 243 of file vec_pred_reg.hh.

Constructor & Destructor Documentation

◆ VecPredRegContainer() [1/2]

template<size_t NumBits, bool Packed>
VecPredRegContainer< NumBits, Packed >::VecPredRegContainer ( )
inline

Definition at line 246 of file vec_pred_reg.hh.

◆ VecPredRegContainer() [2/2]

template<size_t NumBits, bool Packed>
VecPredRegContainer< NumBits, Packed >::VecPredRegContainer ( const VecPredRegContainer< NumBits, Packed > &  )
default

Member Function Documentation

◆ as() [1/2]

template<size_t NumBits, bool Packed>
template<typename VecElem , size_t NumElems = (Packed ? NumBits : NumBits / sizeof(VecElem))>
VecPredRegT<VecElem, NumElems, Packed, false> VecPredRegContainer< NumBits, Packed >::as ( )
inline

Definition at line 364 of file vec_pred_reg.hh.

◆ as() [2/2]

template<size_t NumBits, bool Packed>
template<typename VecElem , size_t NumElems = (Packed ? NumBits : NumBits / sizeof(VecElem))>
VecPredRegT<VecElem, NumElems, Packed, true> VecPredRegContainer< NumBits, Packed >::as ( ) const
inline

Create a view of this container.

If NumElems is provided, the size of the container is bounds-checked, otherwise the size is inferred from the container size.

Template Parameters
VecElemType of the vector elements.
NumElemsNumber of vector elements making up the view.

Definition at line 352 of file vec_pred_reg.hh.

Referenced by Trace::TarmacTracerRecordV8::TraceRegEntryV8::updatePred().

◆ get_bits()

template<size_t NumBits, bool Packed>
uint8_t VecPredRegContainer< NumBits, Packed >::get_bits ( size_t  idx,
uint8_t  nbits 
) const
inline

Returns a subset of bits starting from a specific element in the container.

Definition at line 307 of file vec_pred_reg.hh.

◆ operator!=()

template<size_t NumBits, bool Packed>
template<size_t N2, bool P2>
bool VecPredRegContainer< NumBits, Packed >::operator!= ( const VecPredRegContainer< N2, P2 > &  that) const
inline

Inequality operator, required to compare thread contexts.

Definition at line 292 of file vec_pred_reg.hh.

◆ operator=() [1/2]

template<size_t NumBits, bool Packed>
MyClass& VecPredRegContainer< NumBits, Packed >::operator= ( const MyClass that)
inline

Definition at line 250 of file vec_pred_reg.hh.

◆ operator=() [2/2]

template<size_t NumBits, bool Packed>
MyClass& VecPredRegContainer< NumBits, Packed >::operator= ( const std::vector< uint8_t > &  that)
inline

Required for de-serialization.

Definition at line 260 of file vec_pred_reg.hh.

◆ operator==()

template<size_t NumBits, bool Packed>
template<size_t N2, bool P2>
bool VecPredRegContainer< NumBits, Packed >::operator== ( const VecPredRegContainer< N2, P2 > &  that) const
inline

Equality operator, required to compare thread contexts.

Definition at line 284 of file vec_pred_reg.hh.

Referenced by VecPredRegContainer< TheISA::VecPredRegSizeBits, TheISA::VecPredRegHasPackedRepr >::operator!=().

◆ operator[]() [1/2]

template<size_t NumBits, bool Packed>
bool& VecPredRegContainer< NumBits, Packed >::operator[] ( size_t  idx)
inline

Returns a reference to a specific element of the internal container.

Definition at line 298 of file vec_pred_reg.hh.

◆ operator[]() [2/2]

template<size_t NumBits, bool Packed>
const bool& VecPredRegContainer< NumBits, Packed >::operator[] ( size_t  idx) const
inline

Returns a const reference to a specific element of the internal container.

Definition at line 302 of file vec_pred_reg.hh.

◆ print()

template<size_t NumBits, bool Packed>
const std::string VecPredRegContainer< NumBits, Packed >::print ( ) const
inline

Returns a string representation of the register content.

Definition at line 332 of file vec_pred_reg.hh.

Referenced by SimpleThread::getWritableVecPredReg(), and SimpleThread::readVecPredReg().

◆ reset()

template<size_t NumBits, bool Packed>
void VecPredRegContainer< NumBits, Packed >::reset ( )
inline

Resets the predicate register to an all-false register.

Definition at line 269 of file vec_pred_reg.hh.

◆ set()

template<size_t NumBits, bool Packed>
void VecPredRegContainer< NumBits, Packed >::set ( )
inline

Sets the predicate register to an all-true value.

Definition at line 276 of file vec_pred_reg.hh.

◆ set_bits()

template<size_t NumBits, bool Packed>
void VecPredRegContainer< NumBits, Packed >::set_bits ( size_t  idx,
uint8_t  nbits,
uint8_t  bval 
)
inline

Set a subset of bits starting from a specific element in the container.

Definition at line 322 of file vec_pred_reg.hh.

Friends And Related Function Documentation

◆ operator<<

template<size_t NumBits, bool Packed>
std::ostream& operator<< ( std::ostream &  os,
const MyClass v 
)
friend

Definition at line 335 of file vec_pred_reg.hh.

Member Data Documentation

◆ container

template<size_t NumBits, bool Packed>
Container VecPredRegContainer< NumBits, Packed >::container
private

◆ NUM_BITS

template<size_t NumBits, bool Packed>
constexpr size_t VecPredRegContainer< NumBits, Packed >::NUM_BITS = NumBits
staticconstexpr

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

Generated on Wed Sep 30 2020 14:02:34 for gem5 by doxygen 1.8.17