gem5 [DEVELOP-FOR-25.0]
Loading...
Searching...
No Matches
The BitUnion API.

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

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)
 Regular bitfields These define macros for read/write regular bitfield based subbitfields.
 
#define SignedSubBitUnion(name, first, last)
 Regular bitfields These define macros for read/write regular bitfield based subbitfields.
 
#define BitUnion(type, name)
 Use this to define an arbitrary type overlayed with bitfields.
 
#define BitUnion64(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 )
Value:
#define __BitUnion(type, name)
Definition bitunion.hh:405
const std::string & name()
Definition trace.cc:48

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)
Value:
__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:
}; \
}; \
typedef gem5::bitfield_backend::BitUnionOperators< \
BitfieldUnderlyingClasses##name> name;

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 EndBitUnion(), 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 )
Value:
__SubBitUnion(name, SignedBitfield, first, last)
#define __SubBitUnion(name, fieldType,...)
Definition bitunion.hh:439

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 )
Value:
__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

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 Mon May 26 2025 09:19:17 for gem5 by doxygen 1.13.2