gem5  v21.1.0.2
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Private Types | Private Attributes | Friends | List of all members
gem5::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 getBits (size_t idx, uint8_t nbits) const
 Returns a subset of bits starting from a specific element in the container. More...
 
void setBits (size_t idx, uint8_t nbits, uint8_t bval)
 Set a subset of bits starting from a specific element in the container. More...
 
template<typename VecElem >
VecPredRegT< VecElem, NumBits/sizeof(VecElem), Packed, true > as () const
 Create a view of this container. More...
 
template<typename VecElem >
VecPredRegT< VecElem, NumBits/sizeof(VecElem), Packed, false > as ()
 

Public Attributes

friend ShowParam< VecPredRegContainer< NumBits, Packed > >
 

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 &p)
 

Detailed Description

template<size_t NumBits, bool Packed>
class gem5::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 53 of file vec_pred_reg.hh.

Member Typedef Documentation

◆ Container

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

Definition at line 237 of file vec_pred_reg.hh.

◆ MyClass

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

Definition at line 242 of file vec_pred_reg.hh.

Constructor & Destructor Documentation

◆ VecPredRegContainer() [1/2]

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

Definition at line 245 of file vec_pred_reg.hh.

◆ VecPredRegContainer() [2/2]

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

Member Function Documentation

◆ as() [1/2]

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

Definition at line 358 of file vec_pred_reg.hh.

◆ as() [2/2]

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

Create a view of this container.

Template Parameters
VecElemType of the vector elements.

Definition at line 348 of file vec_pred_reg.hh.

◆ getBits()

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

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

Definition at line 306 of file vec_pred_reg.hh.

References gem5::VecPredRegContainer< NumBits, Packed >::container, gem5::ArmISA::i, and gem5::ArmISA::v.

◆ operator!=()

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

Inequality operator, required to compare thread contexts.

Definition at line 291 of file vec_pred_reg.hh.

References gem5::VecPredRegContainer< NumBits, Packed >::operator==().

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ operator==()

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

Equality operator, required to compare thread contexts.

Definition at line 283 of file vec_pred_reg.hh.

References gem5::VecPredRegContainer< NumBits, Packed >::container.

Referenced by gem5::VecPredRegContainer< NumBits, Packed >::operator!=().

◆ operator[]() [1/2]

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

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

Definition at line 297 of file vec_pred_reg.hh.

References gem5::VecPredRegContainer< NumBits, Packed >::container.

◆ operator[]() [2/2]

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

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

Definition at line 301 of file vec_pred_reg.hh.

References gem5::VecPredRegContainer< NumBits, Packed >::container.

◆ reset()

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

Resets the predicate register to an all-false register.

Definition at line 268 of file vec_pred_reg.hh.

References gem5::VecPredRegContainer< NumBits, Packed >::container.

◆ set()

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

Sets the predicate register to an all-true value.

Definition at line 275 of file vec_pred_reg.hh.

References gem5::VecPredRegContainer< NumBits, Packed >::container.

◆ setBits()

template<size_t NumBits, bool Packed>
void gem5::VecPredRegContainer< NumBits, Packed >::setBits ( 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 321 of file vec_pred_reg.hh.

References gem5::VecPredRegContainer< NumBits, Packed >::container, and gem5::ArmISA::i.

Friends And Related Function Documentation

◆ operator<<

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

Definition at line 331 of file vec_pred_reg.hh.

Member Data Documentation

◆ container

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

◆ NUM_BITS

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

◆ ShowParam< VecPredRegContainer< NumBits, Packed > >

template<size_t NumBits, bool Packed>
friend gem5::VecPredRegContainer< NumBits, Packed >::ShowParam< VecPredRegContainer< NumBits, Packed > >

Definition at line 340 of file vec_pred_reg.hh.


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

Generated on Tue Sep 21 2021 12:28:20 for gem5 by doxygen 1.8.17