42 #ifndef __ARCH_ARM_MEM_HH__ 43 #define __ARCH_ARM_MEM_HH__ 54 :
PredOp(mnem, _machInst, __opClass)
60 if (
flags[IsLastMicroop]) {
62 }
else if (
flags[IsMicroop]) {
85 static const unsigned numMicroops = 3;
92 base(_base), mode(_mode), wb(_wb),
107 assert(uops != NULL && microPC < numMicroops);
108 return uops[microPC];
129 static const unsigned numMicroops = 2;
134 uint32_t _regMode,
AddrMode _mode,
bool _wb)
136 regMode(_regMode), mode(_mode), wb(_wb), uops(NULL)
148 assert(uops != NULL && microPC < numMicroops);
149 return uops[microPC];
170 static const unsigned numMicroops = 3;
177 dest(_dest), base(_base), add(_add), uops(NULL)
189 assert(uops != NULL && microPC < numMicroops);
190 return uops[microPC];
203 void printInst(std::ostream &
os,
AddrMode addrMode)
const;
214 :
Memory(mnem, _machInst, __opClass, _dest, _base, _add), imm(_imm)
234 bool _add, int32_t _imm)
235 :
MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
257 :
MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
278 :
MemoryDImm(mnem, _machInst, __opClass, _dest, _dest2,
279 _base, _add, _imm), result(_result)
303 :
Memory(mnem, _machInst, __opClass, _dest, _base, _add),
304 shiftAmt(_shiftAmt), shiftType(_shiftType), index(_index)
307 void printOffset(std::ostream &
os)
const;
320 :
MemoryReg(mnem, _machInst, __opClass, _dest, _base, _add,
321 _shiftAmt, _shiftType, _index),
340 bool _add, int32_t _imm)
341 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
348 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
349 _shiftAmt, _shiftType, _index)
355 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
362 : Base(mnem, _machInst, __opClass, _result,
363 _dest, _dest2, _base, _add, _imm)
371 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
372 _shiftAmt, _shiftType, _index)
378 std::stringstream
ss;
390 bool _add, int32_t _imm)
391 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
398 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
399 _shiftAmt, _shiftType, _index)
405 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
412 : Base(mnem, _machInst, __opClass, _result,
413 _dest, _dest2, _base, _add, _imm)
421 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
422 _shiftAmt, _shiftType, _index)
428 std::stringstream
ss;
440 bool _add, int32_t _imm)
441 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
448 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
449 _shiftAmt, _shiftType, _index)
455 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
462 : Base(mnem, _machInst, __opClass, _result,
463 _dest, _dest2, _base, _add, _imm)
471 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
472 _shiftAmt, _shiftType, _index)
478 std::stringstream
ss;
485 #endif //__ARCH_ARM_INSTS_MEM_HH__
void ccprintf(cp::Print &print)
void advancePC(PCState &pcState) const
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
virtual void printDest(std::ostream &os) const
Base class for predicated integer operations.
void printOffset(std::ostream &os) const
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
SrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, uint32_t _regMode, AddrMode _mode, bool _wb)
Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add)
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
void printDest(std::ostream &os) const
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
std::bitset< Num_Flags > flags
Flag values for this instruction.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
void printDest(std::ostream &os) const
void printIntReg(std::ostream &os, RegIndex reg_idx, uint8_t opWidth=0) const
Print a register name for disassembly given the unique dependence tag number (FP or int)...
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
void printDest(std::ostream &os) const
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
MightBeMicro(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
void printDest(std::ostream &os) const
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
MemoryDReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
MemoryDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
MemoryImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
GenericISA::SimplePCState< MachInst > PCState
MemoryExDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
MemoryReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const override
Internal function to generate disassembly string.
virtual void printOffset(std::ostream &os) const
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
MemoryExImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
RfeOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _base, AddrMode _mode, bool _wb)
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const