P4C
The P4 Compiler
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
VLIW::ByteRotateMerge Struct Reference
Inheritance diagram for VLIW::ByteRotateMerge:
[legend]

Classes

struct  Decode
 

Public Member Functions

 ByteRotateMerge (Table *tbl, const Table::Actions::Action *act, const value_t &d, const value_t &s1, const value_t &s2, int s1s, int s2s, int bm)
 
void dbprint (std::ostream &out) const
 
int encode ()
 
bool equiv (Instruction *a_)
 
std::string name ()
 
Instructionpass1 (Table *tbl, Table::Actions::Action *)
 
void pass2 (Table *tbl, Table::Actions::Action *)
 
bool phvRead (std::function< void(const ::Phv::Slice &sl)> fn)
 
- Public Member Functions inherited from VLIW::VLIWInstruction
 VLIWInstruction (int l)
 
template<class REGS>
void write_regs_2 (REGS &regs, Table *tbl, Table::Actions::Action *act)
 
template<typename REGS>
void write_regs_2 (REGS &regs, Table *tbl, Table::Actions::Action *act)
 
- Public Member Functions inherited from Instruction
 Instruction (int l)
 
bool equiv (const std::unique_ptr< Instruction > &a)
 
bool phvRead ()
 
virtual bool phvRead (std::function< void(const Phv::Slice &sl)>)=0
 
virtual bool salu_alu () const
 
virtual bool salu_output () const
 
- Public Member Functions inherited from P4::IHasDbPrint
void print () const
 

Public Attributes

bitvec byte_mask
 
Phv::Ref dest
 
Operand src1
 
int src1_shift
 
Operand src2
 
int src2_shift
 
- Public Attributes inherited from Instruction
int lineno
 
int slot
 

Additional Inherited Members

- Public Types inherited from Instruction
enum  instruction_set_t { VLIW_ALU = 0 , STATEFUL_ALU = 1 , NUM_SETS = 2 }
 
- Static Public Member Functions inherited from Instruction
static Instructiondecode (Table *, const Table::Actions::Action *, const VECTOR(value_t) &)
 

Detailed Description

This instruction represents the Byte-Rotate-Merge instruction described in the uArch section 14.1.6.5 Byte-rotate-merge section.

Member Function Documentation

◆ dbprint()

void VLIW::ByteRotateMerge::dbprint ( std::ostream & out) const
inlinevirtual

Implements Instruction.

◆ encode()

int VLIW::ByteRotateMerge::encode ( )
virtual

Implements VLIW::VLIWInstruction.

◆ equiv()

bool VLIW::ByteRotateMerge::equiv ( Instruction * a_)
virtual

Implements Instruction.

◆ name()

std::string VLIW::ByteRotateMerge::name ( )
inlinevirtual

Implements Instruction.

◆ pass1()

Instruction * VLIW::ByteRotateMerge::pass1 ( Table * tbl,
Table::Actions::Action *  )
virtual

The shifts at most can be container.size / 8 and the byte mask bit count can be at most container.size / 8.

Implements Instruction.

◆ pass2()

void VLIW::ByteRotateMerge::pass2 ( Table * tbl,
Table::Actions::Action *  )
inlinevirtual

Implements Instruction.