Class simtix::InstrBranch
ClassList > simtix > InstrBranch
InstrBranch handles the operations for instruction with BRANCH opcode.More...
#include <instr_branch.h>
Inherits the following classes: simtix::Instr
Public Types
Type | Name |
---|---|
typedef void(InstrBranch::*)() | Op |
Public Types inherited from simtix::Instr
See simtix::Instr
Type | Name |
---|---|
enum uint8_t | ExecutionUnit |
enum uint8_t | Opcode Opcode definitions. |
Public Functions
Type | Name |
---|---|
virtual void | Assign (const Instr * other) override |
virtual bool | CanCommit () override const |
virtual bool | CanExecute () override const |
virtual bool | CanIssue () override const |
virtual bool | CanRetire () override const |
virtual void | Commit () override |
virtual void | Decode () override |
virtual void | Execute () override |
virtual void | Issue () override |
virtual void | OperandCollect () override |
virtual void | Reset () override |
virtual bool | may_change_ctrl_flow () override const |
Public Functions inherited from simtix::Instr
See simtix::Instr
Type | Name |
---|---|
virtual void | Assign (const Instr * other) |
virtual bool | CanCommit () const = 0 |
virtual bool | CanExecute () const = 0 |
virtual bool | CanIssue () const = 0 |
virtual bool | CanRetire () const = 0 |
virtual void | Commit () = 0 |
virtual void | Decode () |
virtual void | Execute () = 0 |
virtual void | Issue () |
virtual void | OperandCollect () = 0 |
virtual void | Reset () |
virtual bool | barrier_valid () const |
virtual bool | exception_valid () const |
ExecutionUnit | execution_unit () const |
bool | illegal () const |
uint32_t | iword () const |
virtual bool | may_change_ctrl_flow () const |
uint8_t | opcode () const |
void | set_ssw (std::optional< uint32_t > ssw) |
uint32_t | sswid () const |
uint8_t | tswid () const |
uint32_t | wid () const |
uint64_t | wpc () const |
Public Static Functions
Type | Name |
---|---|
int64_t | DecodeImmBtype (uint32_t iword) |
Public Static Functions inherited from simtix::Instr
See simtix::Instr
Type | Name |
---|---|
constexpr uint32_t | BitMask (uint32_t width) |
uint8_t | DecodeFunct3 (uint32_t iword) |
uint8_t | DecodeFunct7 (uint32_t iword) |
uint8_t | DecodeOpcode (uint32_t iword) |
uint8_t | DecodeRd (uint32_t iword) |
uint8_t | DecodeRs1 (uint32_t iword) |
uint8_t | DecodeRs2 (uint32_t iword) |
Protected Attributes
Type | Name |
---|---|
bool | committed_ = false |
bool | executed_ = false |
int64_t | imm_ = 0 |
std::vector< uint64_t > | next_pc_ |
Op | op_ = nullptr |
std::vector< int64_t > | rs1_data_ |
bool | rs1_data_ready_ = false |
std::vector< int64_t > | rs2_data_ |
bool | rs2_data_ready_ = false |
Protected Attributes inherited from simtix::Instr
See simtix::Instr
Type | Name |
---|---|
std::vector< Thread * > | active_threads_ |
ExecutionUnit | execution_unit_ = kALU |
uint8_t | funct3_ = 0 |
uint8_t | funct7_ = 0 |
bool | illegal_ = false |
uint32_t | iword_ |
std::string | mnemonic_ |
uint8_t | opcode_ = 0 |
uint8_t | rd_ = 0 |
uint8_t | rs1_ = 0 |
uint8_t | rs2_ = 0 |
std::optional< uint32_t > | ssw_ |
uint8_t | tswid_ = 0 |
Warp * | warp_ |
uint64_t | wpc_ |
Protected Functions
Type | Name |
---|---|
InstrBranch (Warp * warp, uint32_t iword, uint64_t wpc) |
|
virtual void | Reinitialize (Warp * warp, uint32_t iword, uint64_t wpc) override |
Protected Functions inherited from simtix::Instr
See simtix::Instr
Type | Name |
---|---|
Instr (Warp * warp, uint32_t iword, uint64_t wpc) |
|
virtual void | Reinitialize (Warp * warp, uint32_t iword, uint64_t wpc) |
virtual | ~Instr () = default |
Detailed Description
The branch instructions compare register data to see if jump conditions are met and update the program counter for each thread.
Public Types Documentation
typedef Op
Public Functions Documentation
function Assign
Implements simtix::Instr::Assign
function CanCommit
Implements simtix::Instr::CanCommit
function CanExecute
Implements simtix::Instr::CanExecute
function CanIssue
Implements simtix::Instr::CanIssue
function CanRetire
Implements simtix::Instr::CanRetire
function Commit
Implements simtix::Instr::Commit
function Decode
Implements simtix::Instr::Decode
function Execute
Implements simtix::Instr::Execute
function Issue
Implements simtix::Instr::Issue
function OperandCollect
Implements simtix::Instr::OperandCollect
function Reset
Implements simtix::Instr::Reset
function may_change_ctrl_flow
Implements simtix::Instr::may_change_ctrl_flow
Public Static Functions Documentation
function DecodeImmBtype
Protected Attributes Documentation
variable committed_
variable executed_
variable imm_
variable next_pc_
variable op_
variable rs1_data_
variable rs1_data_ready_
variable rs2_data_
variable rs2_data_ready_
Protected Functions Documentation
function InstrBranch
function Reinitialize
virtual void simtix::InstrBranch::Reinitialize (
Warp * warp,
uint32_t iword,
uint64_t wpc
) override
Implements simtix::Instr::Reinitialize
The documentation for this class was generated from the following file projects/simtix/src/simtix/sm/instr_branch.h