gem5 v24.0.0.0
Loading...
Searching...
No Matches
The BitUnion API.

Macros

#define EndBitUnion(name)
 This closes off the class and union started by the above macro.
 
#define EndSubBitUnion(name)
 This closes off the union created above and gives it a name.
 
#define SubBitUnion(name, first, last)    __SubBitUnion(name, Bitfield, first, last)
 Regular bitfields These define macros for read/write regular bitfield based subbitfields.
 
#define SignedSubBitUnion(name, first, last)    __SubBitUnion(name, SignedBitfield, first, last)
 Regular bitfields These define macros for read/write regular bitfield based subbitfields.
 
#define BitUnion(type, name)   __BitUnion(type, name)
 Use this to define an arbitrary type overlayed with bitfields.
 
#define BitUnion64(name)   __BitUnion(uint64_t, name)
 Use this to define conveniently sized values overlayed with bitfields.
 

Typedefs

template<typename T >
using gem5::BitUnionType = bitfield_backend::BitUnionOperators<T>
 
template<typename T >
using gem5::BitUnionBaseType = typename bitfield_backend::BitUnionBaseType<T>::Type
 

Functions

template<typename T >
std::ostream & gem5::operator<< (std::ostream &os, const BitUnionType< T > &bu)
 A default << operator which casts a bitunion to its underlying type and passes it to bitfield_backend::bitfieldBackendPrinter.
 

Detailed Description

These are a collection of methods and macros of the BitUnion system of defining bitfields on top of an underlying class.

Macro Definition Documentation

◆ BitUnion

#define BitUnion ( type,
name )   __BitUnion(type, name)

Use this to define an arbitrary type overlayed with bitfields.

Definition at line 487 of file bitunion.hh.

Referenced by TEST_F().

◆ BitUnion64

#define BitUnion64 ( name)    __BitUnion(uint64_t, name)

Use this to define conveniently sized values overlayed with bitfields.

Definition at line 494 of file bitunion.hh.

◆ EndBitUnion

#define EndBitUnion ( name)
Value:
}; \
}; \
BitfieldUnderlyingClasses##name> name;
const std::string & name()
Definition trace.cc:48

This closes off the class and union started by the above macro.

It is followed by a typedef which makes "name" refer to a BitfieldOperator class inheriting from the class and union just defined, which completes building up the type for the user.

Definition at line 428 of file bitunion.hh.

Referenced by gem5::SparcISA::SparcStaticInst::passesCondition(), and TEST_F().

◆ EndSubBitUnion

#define EndSubBitUnion ( name)
Value:
}; \
inline operator __StorageType () const \
{ return __storage; } \
\
inline __StorageType operator = (const __StorageType & _storage) \
{ return __storage = _storage;} \
} name;

This closes off the union created above and gives it a name.

Unlike the top level BitUnion, we're interested in creating an object instead of a type. The operators are defined in the macro itself instead of a class for technical reasons. If someone determines a way to move them to one, please do so.

Definition at line 455 of file bitunion.hh.

◆ SignedSubBitUnion

#define SignedSubBitUnion ( name,
first,
last )    __SubBitUnion(name, SignedBitfield, first, last)

Regular bitfields These define macros for read/write regular bitfield based subbitfields.

Definition at line 479 of file bitunion.hh.

◆ SubBitUnion

#define SubBitUnion ( name,
first,
last )    __SubBitUnion(name, Bitfield, first, last)

Regular bitfields These define macros for read/write regular bitfield based subbitfields.

Definition at line 470 of file bitunion.hh.

Typedef Documentation

◆ BitUnionBaseType

template<typename T >
using gem5::BitUnionBaseType = typename bitfield_backend::BitUnionBaseType<T>::Type

Definition at line 540 of file bitunion.hh.

◆ BitUnionType

template<typename T >
using gem5::BitUnionType = bitfield_backend::BitUnionOperators<T>

Definition at line 519 of file bitunion.hh.

Function Documentation

◆ operator<<()

template<typename T >
std::ostream & gem5::operator<< ( std::ostream & os,
const BitUnionType< T > & bu )

A default << operator which casts a bitunion to its underlying type and passes it to bitfield_backend::bitfieldBackendPrinter.

Definition at line 579 of file bitunion.hh.

References gem5::bitfield_backend::bitfieldBackendPrinter(), and gem5::X86ISA::os.


Generated on Tue Jun 18 2024 16:24:08 for gem5 by doxygen 1.11.0