gem5  v20.1.0.0
mem.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010 ARM Limited
3  * All rights reserved
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2007-2008 The Florida State University
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  */
40 
41 #ifndef __ARCH_ARM_MEM_HH__
42 #define __ARCH_ARM_MEM_HH__
43 
45 
46 namespace ArmISA
47 {
48 
49 class MightBeMicro : public PredOp
50 {
51  protected:
52  MightBeMicro(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
53  : PredOp(mnem, _machInst, __opClass)
54  {}
55 
56  void
57  advancePC(PCState &pcState) const override
58  {
59  if (flags[IsLastMicroop]) {
60  pcState.uEnd();
61  } else if (flags[IsMicroop]) {
62  pcState.uAdvance();
63  } else {
64  pcState.advance();
65  }
66  }
67 };
68 
69 // The address is a base register plus an immediate.
70 class RfeOp : public MightBeMicro
71 {
72  public:
73  enum AddrMode {
78  };
79  protected:
82  bool wb;
84  static const unsigned numMicroops = 3;
85 
87 
88  RfeOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
89  IntRegIndex _base, AddrMode _mode, bool _wb)
90  : MightBeMicro(mnem, _machInst, __opClass),
91  base(_base), mode(_mode), wb(_wb),
94  uops(NULL)
95  {}
96 
97  virtual
99  {
100  delete [] uops;
101  }
102 
104  fetchMicroop(MicroPC microPC) const override
105  {
106  assert(uops != NULL && microPC < numMicroops);
107  return uops[microPC];
108  }
109 
110  std::string generateDisassembly(
111  Addr pc, const Loader::SymbolTable *symtab) const override;
112 };
113 
114 // The address is a base register plus an immediate.
115 class SrsOp : public MightBeMicro
116 {
117  public:
118  enum AddrMode {
123  };
124  protected:
125  uint32_t regMode;
127  bool wb;
128  static const unsigned numMicroops = 2;
129 
131 
132  SrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
133  uint32_t _regMode, AddrMode _mode, bool _wb)
134  : MightBeMicro(mnem, _machInst, __opClass),
135  regMode(_regMode), mode(_mode), wb(_wb), uops(NULL)
136  {}
137 
138  virtual
140  {
141  delete [] uops;
142  }
143 
145  fetchMicroop(MicroPC microPC) const override
146  {
147  assert(uops != NULL && microPC < numMicroops);
148  return uops[microPC];
149  }
150 
151  std::string generateDisassembly(
152  Addr pc, const Loader::SymbolTable *symtab) const override;
153 };
154 
155 class Memory : public MightBeMicro
156 {
157  public:
158  enum AddrMode {
162  };
163 
164  protected:
165 
168  bool add;
169  static const unsigned numMicroops = 3;
170 
172 
173  Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
174  IntRegIndex _dest, IntRegIndex _base, bool _add)
175  : MightBeMicro(mnem, _machInst, __opClass),
176  dest(_dest), base(_base), add(_add), uops(NULL)
177  {}
178 
179  virtual
181  {
182  delete [] uops;
183  }
184 
186  fetchMicroop(MicroPC microPC) const override
187  {
188  assert(uops != NULL && microPC < numMicroops);
189  return uops[microPC];
190  }
191 
192  virtual void
193  printOffset(std::ostream &os) const
194  {}
195 
196  virtual void
197  printDest(std::ostream &os) const
198  {
199  printIntReg(os, dest);
200  }
201 
202  void printInst(std::ostream &os, AddrMode addrMode) const;
203 };
204 
205 // The address is a base register plus an immediate.
206 class MemoryImm : public Memory
207 {
208  protected:
209  int32_t imm;
210 
211  MemoryImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
212  IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
213  : Memory(mnem, _machInst, __opClass, _dest, _base, _add), imm(_imm)
214  {}
215 
216  void
217  printOffset(std::ostream &os) const
218  {
219  int32_t pImm = imm;
220  if (!add)
221  pImm = -pImm;
222  ccprintf(os, "#%d", pImm);
223  }
224 };
225 
226 class MemoryExImm : public MemoryImm
227 {
228  protected:
230 
231  MemoryExImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
232  IntRegIndex _result, IntRegIndex _dest, IntRegIndex _base,
233  bool _add, int32_t _imm)
234  : MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
235  result(_result)
236  {}
237 
238  void
239  printDest(std::ostream &os) const
240  {
242  os << ", ";
244  }
245 };
246 
247 // The address is a base register plus an immediate.
248 class MemoryDImm : public MemoryImm
249 {
250  protected:
252 
253  MemoryDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
254  IntRegIndex _dest, IntRegIndex _dest2,
255  IntRegIndex _base, bool _add, int32_t _imm)
256  : MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
257  dest2(_dest2)
258  {}
259 
260  void
261  printDest(std::ostream &os) const
262  {
264  os << ", ";
265  printIntReg(os, dest2);
266  }
267 };
268 
269 class MemoryExDImm : public MemoryDImm
270 {
271  protected:
273 
274  MemoryExDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
275  IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2,
276  IntRegIndex _base, bool _add, int32_t _imm)
277  : MemoryDImm(mnem, _machInst, __opClass, _dest, _dest2,
278  _base, _add, _imm), result(_result)
279  {}
280 
281  void
282  printDest(std::ostream &os) const
283  {
285  os << ", ";
287  }
288 };
289 
290 // The address is a shifted register plus an immediate
291 class MemoryReg : public Memory
292 {
293  protected:
294  int32_t shiftAmt;
297 
298  MemoryReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
299  IntRegIndex _dest, IntRegIndex _base, bool _add,
300  int32_t _shiftAmt, ArmShiftType _shiftType,
301  IntRegIndex _index)
302  : Memory(mnem, _machInst, __opClass, _dest, _base, _add),
303  shiftAmt(_shiftAmt), shiftType(_shiftType), index(_index)
304  {}
305 
306  void printOffset(std::ostream &os) const;
307 };
308 
309 class MemoryDReg : public MemoryReg
310 {
311  protected:
313 
314  MemoryDReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
315  IntRegIndex _dest, IntRegIndex _dest2,
316  IntRegIndex _base, bool _add,
317  int32_t _shiftAmt, ArmShiftType _shiftType,
318  IntRegIndex _index)
319  : MemoryReg(mnem, _machInst, __opClass, _dest, _base, _add,
320  _shiftAmt, _shiftType, _index),
321  dest2(_dest2)
322  {}
323 
324  void
325  printDest(std::ostream &os) const
326  {
328  os << ", ";
329  printIntReg(os, dest2);
330  }
331 };
332 
333 template<class Base>
334 class MemoryOffset : public Base
335 {
336  protected:
337  MemoryOffset(const char *mnem, ExtMachInst _machInst,
338  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
339  bool _add, int32_t _imm)
340  : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
341  {}
342 
343  MemoryOffset(const char *mnem, ExtMachInst _machInst,
344  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
345  bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
346  IntRegIndex _index)
347  : Base(mnem, _machInst, __opClass, _dest, _base, _add,
348  _shiftAmt, _shiftType, _index)
349  {}
350 
351  MemoryOffset(const char *mnem, ExtMachInst _machInst,
352  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
353  IntRegIndex _base, bool _add, int32_t _imm)
354  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
355  {}
356 
357  MemoryOffset(const char *mnem, ExtMachInst _machInst,
358  OpClass __opClass, IntRegIndex _result,
359  IntRegIndex _dest, IntRegIndex _dest2,
360  IntRegIndex _base, bool _add, int32_t _imm)
361  : Base(mnem, _machInst, __opClass, _result,
362  _dest, _dest2, _base, _add, _imm)
363  {}
364 
365  MemoryOffset(const char *mnem, ExtMachInst _machInst,
366  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
367  IntRegIndex _base, bool _add,
368  int32_t _shiftAmt, ArmShiftType _shiftType,
369  IntRegIndex _index)
370  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
371  _shiftAmt, _shiftType, _index)
372  {}
373 
374  std::string
376  const Loader::SymbolTable *symtab) const override
377  {
378  std::stringstream ss;
379  this->printInst(ss, Memory::AddrMd_Offset);
380  return ss.str();
381  }
382 };
383 
384 template<class Base>
385 class MemoryPreIndex : public Base
386 {
387  protected:
388  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
389  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
390  bool _add, int32_t _imm)
391  : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
392  {}
393 
394  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
395  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
396  bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
397  IntRegIndex _index)
398  : Base(mnem, _machInst, __opClass, _dest, _base, _add,
399  _shiftAmt, _shiftType, _index)
400  {}
401 
402  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
403  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
404  IntRegIndex _base, bool _add, int32_t _imm)
405  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
406  {}
407 
408  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
409  OpClass __opClass, IntRegIndex _result,
410  IntRegIndex _dest, IntRegIndex _dest2,
411  IntRegIndex _base, bool _add, int32_t _imm)
412  : Base(mnem, _machInst, __opClass, _result,
413  _dest, _dest2, _base, _add, _imm)
414  {}
415 
416  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
417  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
418  IntRegIndex _base, bool _add,
419  int32_t _shiftAmt, ArmShiftType _shiftType,
420  IntRegIndex _index)
421  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
422  _shiftAmt, _shiftType, _index)
423  {}
424 
425  std::string
427  const Loader::SymbolTable *symtab) const override
428  {
429  std::stringstream ss;
430  this->printInst(ss, Memory::AddrMd_PreIndex);
431  return ss.str();
432  }
433 };
434 
435 template<class Base>
436 class MemoryPostIndex : public Base
437 {
438  protected:
439  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
440  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
441  bool _add, int32_t _imm)
442  : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
443  {}
444 
445  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
446  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
447  bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
448  IntRegIndex _index)
449  : Base(mnem, _machInst, __opClass, _dest, _base, _add,
450  _shiftAmt, _shiftType, _index)
451  {}
452 
453  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
454  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
455  IntRegIndex _base, bool _add, int32_t _imm)
456  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
457  {}
458 
459  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
460  OpClass __opClass, IntRegIndex _result,
461  IntRegIndex _dest, IntRegIndex _dest2,
462  IntRegIndex _base, bool _add, int32_t _imm)
463  : Base(mnem, _machInst, __opClass, _result,
464  _dest, _dest2, _base, _add, _imm)
465  {}
466 
467  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
468  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
469  IntRegIndex _base, bool _add,
470  int32_t _shiftAmt, ArmShiftType _shiftType,
471  IntRegIndex _index)
472  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
473  _shiftAmt, _shiftType, _index)
474  {}
475 
476  std::string
478  const Loader::SymbolTable *symtab) const override
479  {
480  std::stringstream ss;
481  this->printInst(ss, Memory::AddrMd_PostIndex);
482  return ss.str();
483  }
484 };
485 }
486 
487 #endif //__ARCH_ARM_INSTS_MEM_HH__
ArmISA::MemoryReg
Definition: mem.hh:291
ArmISA::MemoryExDImm::result
IntRegIndex result
Definition: mem.hh:272
ArmISA::RfeOp::urb
IntRegIndex urb
Definition: mem.hh:83
ArmISA::MemoryOffset::MemoryOffset
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:337
ArmISA::SrsOp::~SrsOp
virtual ~SrsOp()
Definition: mem.hh:139
ArmISA::RfeOp::mode
AddrMode mode
Definition: mem.hh:81
ArmISA::MemoryPreIndex::MemoryPreIndex
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:416
StaticInst::flags
std::bitset< Num_Flags > flags
Flag values for this instruction.
Definition: static_inst.hh:99
ArmISA::MemoryPreIndex::MemoryPreIndex
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:408
ArmISA::SrsOp::SrsOp
SrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, uint32_t _regMode, AddrMode _mode, bool _wb)
Definition: mem.hh:132
X86ISA::os
Bitfield< 17 > os
Definition: misc.hh:803
ArmISA::SrsOp::mode
AddrMode mode
Definition: mem.hh:126
ArmISA::RfeOp::urc
IntRegIndex urc
Definition: mem.hh:83
ArmISA::MemoryExImm::printDest
void printDest(std::ostream &os) const
Definition: mem.hh:239
ArmISA::RfeOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: mem.cc:79
ArmISA::MemoryImm
Definition: mem.hh:206
ArmISA::ArmShiftType
ArmShiftType
Definition: types.hh:567
ArmISA::SrsOp::IncrementAfter
@ IncrementAfter
Definition: mem.hh:121
ArmISA::Memory::~Memory
virtual ~Memory()
Definition: mem.hh:180
ArmISA::RfeOp::uops
StaticInstPtr * uops
Definition: mem.hh:86
ArmISA::MemoryImm::imm
int32_t imm
Definition: mem.hh:209
ArmISA::Memory::fetchMicroop
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
Definition: mem.hh:186
ArmISA::MemoryImm::printOffset
void printOffset(std::ostream &os) const
Definition: mem.hh:217
ArmISA::MemoryOffset
Definition: mem.hh:334
ArmISA::SrsOp::numMicroops
static const unsigned numMicroops
Definition: mem.hh:128
ArmISA::MemoryPostIndex::MemoryPostIndex
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:467
ArmISA::SrsOp::regMode
uint32_t regMode
Definition: mem.hh:125
ArmISA::RfeOp
Definition: mem.hh:70
ArmISA::RfeOp::base
IntRegIndex base
Definition: mem.hh:80
ArmISA::MemoryReg::index
IntRegIndex index
Definition: mem.hh:296
ArmISA::MightBeMicro::advancePC
void advancePC(PCState &pcState) const override
Definition: mem.hh:57
ArmISA::MemoryPostIndex::MemoryPostIndex
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:459
ArmISA::RfeOp::fetchMicroop
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
Definition: mem.hh:104
Loader::SymbolTable
Definition: symtab.hh:59
ArmISA::IntRegIndex
IntRegIndex
Definition: intregs.hh:51
ArmISA::MemoryPreIndex::MemoryPreIndex
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:402
ArmISA::MightBeMicro::MightBeMicro
MightBeMicro(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
Definition: mem.hh:52
ArmISA::MemoryReg::printOffset
void printOffset(std::ostream &os) const
Definition: mem.cc:51
ArmISA::Memory::dest
IntRegIndex dest
Definition: mem.hh:166
ArmISA::Memory::AddrMode
AddrMode
Definition: mem.hh:158
ArmISA::ArmStaticInst::printIntReg
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).
Definition: static_inst.cc:296
ArmISA::Memory::add
bool add
Definition: mem.hh:168
ArmISA::SrsOp
Definition: mem.hh:115
ArmISA::PredOp
Base class for predicated integer operations.
Definition: pred_inst.hh:210
ArmISA::MemoryDReg::dest2
IntRegIndex dest2
Definition: mem.hh:312
ArmISA
Definition: ccregs.hh:41
ArmISA::MemoryOffset::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Definition: mem.hh:375
ArmISA::RfeOp::DecrementAfter
@ DecrementAfter
Definition: mem.hh:74
ArmISA::RfeOp::ura
IntRegIndex ura
Definition: mem.hh:83
ArmISA::MemoryDReg
Definition: mem.hh:309
ArmISA::MemoryPostIndex::MemoryPostIndex
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:439
ArmISA::Memory::AddrMd_PreIndex
@ AddrMd_PreIndex
Definition: mem.hh:160
ArmISA::MemoryReg::shiftAmt
int32_t shiftAmt
Definition: mem.hh:294
ArmISA::SrsOp::DecrementBefore
@ DecrementBefore
Definition: mem.hh:120
ArmISA::MemoryImm::MemoryImm
MemoryImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:211
ArmISA::ss
Bitfield< 21 > ss
Definition: miscregs_types.hh:56
ArmISA::MemoryDImm
Definition: mem.hh:248
ArmISA::Memory::numMicroops
static const unsigned numMicroops
Definition: mem.hh:169
ArmISA::MemoryExImm::result
IntRegIndex result
Definition: mem.hh:229
ArmISA::SrsOp::IncrementBefore
@ IncrementBefore
Definition: mem.hh:122
ArmISA::MemoryDImm::printDest
void printDest(std::ostream &os) const
Definition: mem.hh:261
ArmISA::Memory::AddrMd_PostIndex
@ AddrMd_PostIndex
Definition: mem.hh:161
MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:240
ArmISA::MemoryExDImm::MemoryExDImm
MemoryExDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:274
ArmISA::SrsOp::uops
StaticInstPtr * uops
Definition: mem.hh:130
ArmISA::RfeOp::AddrMode
AddrMode
Definition: mem.hh:73
ArmISA::SrsOp::DecrementAfter
@ DecrementAfter
Definition: mem.hh:119
ArmISA::MemoryPostIndex::MemoryPostIndex
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:453
ArmISA::RfeOp::IncrementBefore
@ IncrementBefore
Definition: mem.hh:77
ArmISA::MemoryOffset::MemoryOffset
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:365
StaticInst::ExtMachInst
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
Definition: static_inst.hh:89
ArmISA::MemoryPostIndex::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Definition: mem.hh:477
ArmISA::MemoryDReg::MemoryDReg
MemoryDReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:314
ArmISA::Memory::base
IntRegIndex base
Definition: mem.hh:167
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
pred_inst.hh
ArmISA::Memory::uops
StaticInstPtr * uops
Definition: mem.hh:171
ArmISA::MemoryExImm::MemoryExImm
MemoryExImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:231
ArmISA::MemoryDReg::printDest
void printDest(std::ostream &os) const
Definition: mem.hh:325
ArmISA::RfeOp::numMicroops
static const unsigned numMicroops
Definition: mem.hh:84
ArmISA::SrsOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: mem.cc:104
ArmISA::MemoryPreIndex::MemoryPreIndex
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:394
ArmISA::MemoryOffset::MemoryOffset
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:357
ArmISA::MemoryOffset::MemoryOffset
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:343
ArmISA::SrsOp::AddrMode
AddrMode
Definition: mem.hh:118
ArmISA::MemoryExDImm::printDest
void printDest(std::ostream &os) const
Definition: mem.hh:282
ArmISA::RfeOp::~RfeOp
virtual ~RfeOp()
Definition: mem.hh:98
ArmISA::Memory
Definition: mem.hh:155
ArmISA::MemoryPreIndex
Definition: mem.hh:385
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition: types.hh:41
ArmISA::MemoryDImm::dest2
IntRegIndex dest2
Definition: mem.hh:251
ArmISA::RfeOp::wb
bool wb
Definition: mem.hh:82
ArmISA::INTREG_UREG0
@ INTREG_UREG0
Definition: intregs.hh:113
ArmISA::MemoryExDImm
Definition: mem.hh:269
ArmISA::Memory::printDest
virtual void printDest(std::ostream &os) const
Definition: mem.hh:197
ccprintf
void ccprintf(cp::Print &print)
Definition: cprintf.hh:127
ArmISA::MemoryExImm
Definition: mem.hh:226
ArmISA::INTREG_UREG2
@ INTREG_UREG2
Definition: intregs.hh:115
ArmISA::MemoryPreIndex::MemoryPreIndex
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:388
ArmISA::MemoryOffset::MemoryOffset
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:351
ArmISA::RfeOp::DecrementBefore
@ DecrementBefore
Definition: mem.hh:75
RefCountingPtr< StaticInst >
ArmISA::MemoryPostIndex
Definition: mem.hh:436
ArmISA::MemoryReg::MemoryReg
MemoryReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:298
MicroPC
uint16_t MicroPC
Definition: types.hh:144
ArmISA::SrsOp::wb
bool wb
Definition: mem.hh:127
ArmISA::MemoryPreIndex::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Definition: mem.hh:426
ArmISA::RfeOp::IncrementAfter
@ IncrementAfter
Definition: mem.hh:76
ArmISA::SrsOp::fetchMicroop
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
Definition: mem.hh:145
ArmISA::INTREG_UREG1
@ INTREG_UREG1
Definition: intregs.hh:114
ArmISA::Memory::printInst
void printInst(std::ostream &os, AddrMode addrMode) const
Definition: mem.cc:162
ArmISA::MightBeMicro
Definition: mem.hh:49
ArmISA::Memory::AddrMd_Offset
@ AddrMd_Offset
Definition: mem.hh:159
ArmISA::MemoryDImm::MemoryDImm
MemoryDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:253
ArmISA::Memory::Memory
Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add)
Definition: mem.hh:173
ArmISA::MemoryReg::shiftType
ArmShiftType shiftType
Definition: mem.hh:295
ArmISA::Memory::printOffset
virtual void printOffset(std::ostream &os) const
Definition: mem.hh:193
ArmISA::RfeOp::RfeOp
RfeOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _base, AddrMode _mode, bool _wb)
Definition: mem.hh:88
MipsISA::ExtMachInst
uint64_t ExtMachInst
Definition: types.hh:39
ArmISA::MemoryPostIndex::MemoryPostIndex
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:445

Generated on Wed Sep 30 2020 14:02:00 for gem5 by doxygen 1.8.17