41 #ifndef __ARCH_ARM_MEM_HH__ 42 #define __ARCH_ARM_MEM_HH__ 53 :
PredOp(mnem, _machInst, __opClass)
59 if (
flags[IsLastMicroop]) {
61 }
else if (
flags[IsMicroop]) {
84 static const unsigned numMicroops = 3;
91 base(_base), mode(_mode), wb(_wb),
106 assert(uops != NULL && microPC < numMicroops);
107 return uops[microPC];
128 static const unsigned numMicroops = 2;
133 uint32_t _regMode,
AddrMode _mode,
bool _wb)
135 regMode(_regMode), mode(_mode), wb(_wb), uops(NULL)
147 assert(uops != NULL && microPC < numMicroops);
148 return uops[microPC];
169 static const unsigned numMicroops = 3;
176 dest(_dest), base(_base), add(_add), uops(NULL)
188 assert(uops != NULL && microPC < numMicroops);
189 return uops[microPC];
202 void printInst(std::ostream &
os,
AddrMode addrMode)
const;
213 :
Memory(mnem, _machInst, __opClass, _dest, _base, _add), imm(_imm)
233 bool _add, int32_t _imm)
234 :
MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
256 :
MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
277 :
MemoryDImm(mnem, _machInst, __opClass, _dest, _dest2,
278 _base, _add, _imm), result(_result)
302 :
Memory(mnem, _machInst, __opClass, _dest, _base, _add),
303 shiftAmt(_shiftAmt), shiftType(_shiftType), index(_index)
306 void printOffset(std::ostream &
os)
const;
319 :
MemoryReg(mnem, _machInst, __opClass, _dest, _base, _add,
320 _shiftAmt, _shiftType, _index),
339 bool _add, int32_t _imm)
340 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
347 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
348 _shiftAmt, _shiftType, _index)
354 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
361 : Base(mnem, _machInst, __opClass, _result,
362 _dest, _dest2, _base, _add, _imm)
370 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
371 _shiftAmt, _shiftType, _index)
377 std::stringstream
ss;
389 bool _add, int32_t _imm)
390 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
397 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
398 _shiftAmt, _shiftType, _index)
404 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
411 : Base(mnem, _machInst, __opClass, _result,
412 _dest, _dest2, _base, _add, _imm)
420 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
421 _shiftAmt, _shiftType, _index)
427 std::stringstream
ss;
439 bool _add, int32_t _imm)
440 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
447 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
448 _shiftAmt, _shiftType, _index)
454 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
461 : Base(mnem, _machInst, __opClass, _result,
462 _dest, _dest2, _base, _add, _imm)
470 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
471 _shiftAmt, _shiftType, _index)
477 std::stringstream
ss;
484 #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
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) 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::bitset< Num_Flags > flags
Flag values for this instruction.
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)...
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const
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)
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
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)
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const
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)
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)
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)
GenericISA::DelaySlotPCState< MachInst > PCState
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.