|
gem5 [DEVELOP-FOR-25.0]
|
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. | |
These are a collection of methods and macros of the BitUnion system of defining bitfields on top of an underlying class.
| #define 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().
| #define BitUnion64 | ( | name | ) |
Use this to define conveniently sized values overlayed with bitfields.
Definition at line 494 of file bitunion.hh.
| #define EndBitUnion | ( | 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().
| #define EndSubBitUnion | ( | 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.
| #define SignedSubBitUnion | ( | name, | |
| first, | |||
| last ) |
Regular bitfields These define macros for read/write regular bitfield based subbitfields.
Definition at line 479 of file bitunion.hh.
| #define SubBitUnion | ( | name, | |
| first, | |||
| last ) |
Regular bitfields These define macros for read/write regular bitfield based subbitfields.
Definition at line 470 of file bitunion.hh.
| using gem5::BitUnionBaseType = typename bitfield_backend::BitUnionBaseType<T>::Type |
Definition at line 540 of file bitunion.hh.
| using gem5::BitUnionType = bitfield_backend::BitUnionOperators<T> |
Definition at line 519 of file bitunion.hh.
| 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.