gem5  v20.1.0.0
macromem.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010-2014 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_MACROMEM_HH__
42 #define __ARCH_ARM_MACROMEM_HH__
43 
45 #include "arch/arm/tlb.hh"
46 
47 namespace ArmISA
48 {
49 
50 static inline unsigned int
52 {
53  uint32_t ones = 0;
54  for (int i = 0; i < 32; i++ )
55  {
56  if ( val & (1<<i) )
57  ones++;
58  }
59  return ones;
60 }
61 
65 class MicroOp : public PredOp
66 {
67  protected:
68  MicroOp(const char *mnem, ExtMachInst machInst, OpClass __opClass)
69  : PredOp(mnem, machInst, __opClass)
70  {
71  }
72 
73  public:
74  void
75  advancePC(PCState &pcState) const override
76  {
77  if (flags[IsLastMicroop]) {
78  pcState.uEnd();
79  } else if (flags[IsMicroop]) {
80  pcState.uAdvance();
81  } else {
82  pcState.advance();
83  }
84  }
85 };
86 
87 class MicroOpX : public ArmStaticInst
88 {
89  protected:
90  MicroOpX(const char *mnem, ExtMachInst machInst, OpClass __opClass)
91  : ArmStaticInst(mnem, machInst, __opClass)
92  {}
93 
94  public:
95  void
96  advancePC(PCState &pcState) const override
97  {
98  if (flags[IsLastMicroop]) {
99  pcState.uEnd();
100  } else if (flags[IsMicroop]) {
101  pcState.uAdvance();
102  } else {
103  pcState.advance();
104  }
105  }
106 };
107 
111 class MicroNeonMemOp : public MicroOp
112 {
113  protected:
115  uint32_t imm;
116  unsigned memAccessFlags;
117 
118  MicroNeonMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
119  RegIndex _dest, RegIndex _ura, uint32_t _imm)
120  : MicroOp(mnem, machInst, __opClass),
121  dest(_dest), ura(_ura), imm(_imm), memAccessFlags()
122  {
123  }
124 };
125 
129 class MicroNeonMixOp : public MicroOp
130 {
131  protected:
133  uint32_t step;
134 
135  MicroNeonMixOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
136  RegIndex _dest, RegIndex _op1, uint32_t _step)
137  : MicroOp(mnem, machInst, __opClass),
138  dest(_dest), op1(_op1), step(_step)
139  {
140  }
141 };
142 
144 {
145  protected:
146  unsigned lane;
147 
149  OpClass __opClass, RegIndex _dest, RegIndex _op1,
150  uint32_t _step, unsigned _lane)
151  : MicroNeonMixOp(mnem, machInst, __opClass, _dest, _op1, _step),
152  lane(_lane)
153  {
154  }
155 };
156 
160 class MicroNeonMixOp64 : public MicroOp
161 {
162  protected:
165 
166  MicroNeonMixOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
167  RegIndex _dest, RegIndex _op1, uint8_t _eSize,
168  uint8_t _dataSize, uint8_t _numStructElems,
169  uint8_t _numRegs, uint8_t _step)
170  : MicroOp(mnem, machInst, __opClass), dest(_dest), op1(_op1),
171  eSize(_eSize), dataSize(_dataSize), numStructElems(_numStructElems),
172  numRegs(_numRegs), step(_step)
173  {
174  }
175 };
176 
178 {
179  protected:
182  bool replicate;
183 
185  OpClass __opClass, RegIndex _dest, RegIndex _op1,
186  uint8_t _eSize, uint8_t _dataSize,
187  uint8_t _numStructElems, uint8_t _lane, uint8_t _step,
188  bool _replicate = false)
189  : MicroOp(mnem, machInst, __opClass), dest(_dest), op1(_op1),
190  eSize(_eSize), dataSize(_dataSize), numStructElems(_numStructElems),
191  lane(_lane), step(_step), replicate(_replicate)
192  {
193  }
194 };
195 
199 class VldMultOp64 : public PredMacroOp
200 {
201  protected:
203  bool wb;
204 
205  VldMultOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
206  RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize,
207  uint8_t dataSize, uint8_t numStructElems, uint8_t numRegs,
208  bool wb);
209 };
210 
211 class VstMultOp64 : public PredMacroOp
212 {
213  protected:
215  bool wb;
216 
217  VstMultOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
218  RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize,
219  uint8_t dataSize, uint8_t numStructElems, uint8_t numRegs,
220  bool wb);
221 };
222 
224 {
225  protected:
227  bool wb, replicate;
228 
229  VldSingleOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
230  RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize,
231  uint8_t dataSize, uint8_t numStructElems, uint8_t index,
232  bool wb, bool replicate = false);
233 };
234 
236 {
237  protected:
239  bool wb, replicate;
240 
241  VstSingleOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass,
242  RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize,
243  uint8_t dataSize, uint8_t numStructElems, uint8_t index,
244  bool wb, bool replicate = false);
245 };
246 
252 class MicroSetPCCPSR : public MicroOp
253 {
254  protected:
256 
257  MicroSetPCCPSR(const char *mnem, ExtMachInst machInst, OpClass __opClass,
258  IntRegIndex _ura, IntRegIndex _urb, IntRegIndex _urc)
259  : MicroOp(mnem, machInst, __opClass),
260  ura(_ura), urb(_urb), urc(_urc)
261  {
262  }
263 
264  std::string generateDisassembly(
265  Addr pc, const Loader::SymbolTable *symtab) const override;
266 };
267 
271 class MicroIntMov : public MicroOp
272 {
273  protected:
275 
276  MicroIntMov(const char *mnem, ExtMachInst machInst, OpClass __opClass,
277  RegIndex _ura, RegIndex _urb)
278  : MicroOp(mnem, machInst, __opClass),
279  ura(_ura), urb(_urb)
280  {
281  }
282 
283  std::string generateDisassembly(
284  Addr pc, const Loader::SymbolTable *symtab) const override;
285 };
286 
290 class MicroIntImmOp : public MicroOp
291 {
292  protected:
294  int32_t imm;
295 
296  MicroIntImmOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
297  RegIndex _ura, RegIndex _urb, int32_t _imm)
298  : MicroOp(mnem, machInst, __opClass),
299  ura(_ura), urb(_urb), imm(_imm)
300  {
301  }
302 
303  std::string generateDisassembly(
304  Addr pc, const Loader::SymbolTable *symtab) const override;
305 };
306 
307 class MicroIntImmXOp : public MicroOpX
308 {
309  protected:
311  int64_t imm;
312 
313  MicroIntImmXOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
314  RegIndex _ura, RegIndex _urb, int64_t _imm)
315  : MicroOpX(mnem, machInst, __opClass),
316  ura(_ura), urb(_urb), imm(_imm)
317  {
318  }
319 
320  std::string generateDisassembly(
321  Addr pc, const Loader::SymbolTable *symtab) const override;
322 };
323 
327 class MicroIntOp : public MicroOp
328 {
329  protected:
331 
332  MicroIntOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
333  RegIndex _ura, RegIndex _urb, RegIndex _urc)
334  : MicroOp(mnem, machInst, __opClass),
335  ura(_ura), urb(_urb), urc(_urc)
336  {
337  }
338 
339  std::string generateDisassembly(
340  Addr pc, const Loader::SymbolTable *symtab) const override;
341 };
342 
343 class MicroIntRegXOp : public MicroOp
344 {
345  protected:
348  uint32_t shiftAmt;
349 
350  MicroIntRegXOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
351  RegIndex _ura, RegIndex _urb, RegIndex _urc,
352  ArmExtendType _type, uint32_t _shiftAmt)
353  : MicroOp(mnem, machInst, __opClass),
354  ura(_ura), urb(_urb), urc(_urc),
355  type(_type), shiftAmt(_shiftAmt)
356  {
357  }
358 
359  std::string generateDisassembly(
360  Addr pc, const Loader::SymbolTable *symtab) const override;
361 };
362 
366 class MicroIntRegOp : public MicroOp
367 {
368  protected:
370  int32_t shiftAmt;
372 
373  MicroIntRegOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
374  RegIndex _ura, RegIndex _urb, RegIndex _urc,
375  int32_t _shiftAmt, ArmShiftType _shiftType)
376  : MicroOp(mnem, machInst, __opClass),
377  ura(_ura), urb(_urb), urc(_urc),
378  shiftAmt(_shiftAmt), shiftType(_shiftType)
379  {
380  }
381 };
382 
386 class MicroMemOp : public MicroIntImmOp
387 {
388  protected:
389  bool up;
390  unsigned memAccessFlags;
391 
392  MicroMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
393  RegIndex _ura, RegIndex _urb, bool _up, uint8_t _imm)
394  : MicroIntImmOp(mnem, machInst, __opClass, _ura, _urb, _imm),
395  up(_up), memAccessFlags(TLB::AlignWord)
396  {
397  }
398 
399  std::string generateDisassembly(
400  Addr pc, const Loader::SymbolTable *symtab) const override;
401 };
402 
403 class MicroMemPairOp : public MicroOp
404 {
405  protected:
407  bool up;
408  int32_t imm;
409  unsigned memAccessFlags;
410 
411  MicroMemPairOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
412  RegIndex _dreg1, RegIndex _dreg2, RegIndex _base,
413  bool _up, uint8_t _imm)
414  : MicroOp(mnem, machInst, __opClass),
415  dest(_dreg1), dest2(_dreg2), urb(_base), up(_up), imm(_imm),
416  memAccessFlags(TLB::AlignWord)
417  {
418  }
419 
420  std::string generateDisassembly(
421  Addr pc, const Loader::SymbolTable *symtab) const override;
422 };
423 
427 class MacroMemOp : public PredMacroOp
428 {
429  protected:
430  MacroMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
431  IntRegIndex rn, bool index, bool up, bool user,
432  bool writeback, bool load, uint32_t reglist);
433 };
434 
438 class PairMemOp : public PredMacroOp
439 {
440  public:
441  enum AddrMode {
445  };
446 
447  protected:
448  PairMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
449  uint32_t size, bool fp, bool load, bool noAlloc, bool signExt,
450  bool exclusive, bool acrel, int64_t imm, AddrMode mode,
452 };
453 
455 {
456  protected:
457  BigFpMemImmOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
458  bool load, IntRegIndex dest, IntRegIndex base, int64_t imm);
459 };
460 
462 {
463  protected:
464  BigFpMemPostOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
465  bool load, IntRegIndex dest, IntRegIndex base, int64_t imm);
466 };
467 
469 {
470  protected:
471  BigFpMemPreOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
472  bool load, IntRegIndex dest, IntRegIndex base, int64_t imm);
473 };
474 
476 {
477  protected:
478  BigFpMemRegOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
479  bool load, IntRegIndex dest, IntRegIndex base,
481 };
482 
484 {
485  protected:
486  BigFpMemLitOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
487  IntRegIndex dest, int64_t imm);
488 };
489 
493 class VldMultOp : public PredMacroOp
494 {
495  protected:
496  VldMultOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
497  unsigned elems, RegIndex rn, RegIndex vd, unsigned regs,
498  unsigned inc, uint32_t size, uint32_t align, RegIndex rm);
499 };
500 
501 class VldSingleOp : public PredMacroOp
502 {
503  protected:
504  VldSingleOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
505  bool all, unsigned elems, RegIndex rn, RegIndex vd,
506  unsigned regs, unsigned inc, uint32_t size,
507  uint32_t align, RegIndex rm, unsigned lane);
508 };
509 
513 class VstMultOp : public PredMacroOp
514 {
515  protected:
516  VstMultOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
517  unsigned width, RegIndex rn, RegIndex vd, unsigned regs,
518  unsigned inc, uint32_t size, uint32_t align, RegIndex rm);
519 };
520 
521 class VstSingleOp : public PredMacroOp
522 {
523  protected:
524  VstSingleOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
525  bool all, unsigned elems, RegIndex rn, RegIndex vd,
526  unsigned regs, unsigned inc, uint32_t size,
527  uint32_t align, RegIndex rm, unsigned lane);
528 };
529 
534 {
535  protected:
536  MacroVFPMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass,
537  IntRegIndex rn, RegIndex vd, bool single, bool up,
538  bool writeback, bool load, uint32_t offset);
539 };
540 
541 }
542 
543 #endif //__ARCH_ARM_INSTS_MACROMEM_HH__
ArmISA::PairMemOp::AddrMode
AddrMode
Definition: macromem.hh:441
ArmISA::MicroOpX
Definition: macromem.hh:87
ArmISA::VldMultOp64::wb
bool wb
Definition: macromem.hh:203
ArmISA::MicroMemPairOp::dest
RegIndex dest
Definition: macromem.hh:406
ArmISA::MacroVFPMemOp
Base class for microcoded floating point memory instructions.
Definition: macromem.hh:533
ArmISA::fp
Bitfield< 19, 16 > fp
Definition: miscregs_types.hh:173
ArmISA::MicroOp
Base class for Memory microops.
Definition: macromem.hh:65
ArmISA::BigFpMemPreOp
Definition: macromem.hh:468
ArmISA::MicroNeonMixLaneOp64::lane
uint8_t lane
Definition: macromem.hh:181
ArmISA::MicroNeonMemOp::memAccessFlags
unsigned memAccessFlags
Definition: macromem.hh:116
ArmISA::number_of_ones
static unsigned int number_of_ones(int32_t val)
Definition: macromem.hh:51
ArmISA::MicroIntRegXOp::ura
RegIndex ura
Definition: macromem.hh:346
StaticInst::flags
std::bitset< Num_Flags > flags
Flag values for this instruction.
Definition: static_inst.hh:99
ArmISA::VstMultOp64::numStructElems
uint8_t numStructElems
Definition: macromem.hh:214
ArmISA::PairMemOp
Base class for pair load/store instructions.
Definition: macromem.hh:438
ArmISA::MicroNeonMixOp::dest
RegIndex dest
Definition: macromem.hh:132
ArmISA::MicroNeonMixOp64::op1
RegIndex op1
Definition: macromem.hh:163
ArmISA::MicroNeonMixOp::step
uint32_t step
Definition: macromem.hh:133
ArmISA::MicroIntRegXOp::urc
RegIndex urc
Definition: macromem.hh:346
ArmISA::MicroIntOp::urc
RegIndex urc
Definition: macromem.hh:330
ArmISA::MicroIntImmXOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: macromem.cc:1528
ArmISA::MicroIntRegOp::shiftAmt
int32_t shiftAmt
Definition: macromem.hh:370
ArmISA::ArmShiftType
ArmShiftType
Definition: types.hh:567
ArmISA::VstMultOp
Base class for microcoded integer memory instructions.
Definition: macromem.hh:513
ArmISA::MicroMemOp
Memory microops which use IntReg + Imm addressing.
Definition: macromem.hh:386
ArmISA::MicroIntImmOp::imm
int32_t imm
Definition: macromem.hh:294
ArmISA::VldSingleOp64
Definition: macromem.hh:223
ArmISA::MacroMemOp
Base class for microcoded integer memory instructions.
Definition: macromem.hh:427
MipsISA::index
Bitfield< 30, 0 > index
Definition: pra_constants.hh:44
ArmISA::MicroIntRegXOp::urb
RegIndex urb
Definition: macromem.hh:346
ArmISA::PairMemOp::AddrMd_PreIndex
@ AddrMd_PreIndex
Definition: macromem.hh:443
ArmISA::MicroNeonMixOp64::numRegs
uint8_t numRegs
Definition: macromem.hh:164
ArmISA::MicroNeonMixLaneOp64::op1
RegIndex op1
Definition: macromem.hh:180
ArmISA::i
Bitfield< 7 > i
Definition: miscregs_types.hh:63
ArmISA::MicroIntRegOp::urc
RegIndex urc
Definition: macromem.hh:369
ArmISA::BigFpMemRegOp::BigFpMemRegOp
BigFpMemRegOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool load, IntRegIndex dest, IntRegIndex base, IntRegIndex offset, ArmExtendType type, int64_t imm)
Definition: macromem.cc:418
ArmISA::VstMultOp64::dataSize
uint8_t dataSize
Definition: macromem.hh:214
ArmISA::BigFpMemPreOp::BigFpMemPreOp
BigFpMemPreOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool load, IntRegIndex dest, IntRegIndex base, int64_t imm)
Definition: macromem.cc:392
ArmISA::VldMultOp64::dataSize
uint8_t dataSize
Definition: macromem.hh:202
ArmISA::VldSingleOp64::numStructElems
uint8_t numStructElems
Definition: macromem.hh:226
ArmISA::MicroMemPairOp::dest2
RegIndex dest2
Definition: macromem.hh:406
ArmISA::MicroNeonMixLaneOp::MicroNeonMixLaneOp
MicroNeonMixLaneOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint32_t _step, unsigned _lane)
Definition: macromem.hh:148
ArmISA::VldSingleOp::VldSingleOp
VldSingleOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool all, unsigned elems, RegIndex rn, RegIndex vd, unsigned regs, unsigned inc, uint32_t size, uint32_t align, RegIndex rm, unsigned lane)
Definition: macromem.cc:552
ArmISA::MicroNeonMixLaneOp64::step
uint8_t step
Definition: macromem.hh:181
ArmISA::width
Bitfield< 4 > width
Definition: miscregs_types.hh:68
ArmISA::BigFpMemLitOp
Definition: macromem.hh:483
ArmISA::BigFpMemPostOp::BigFpMemPostOp
BigFpMemPostOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool load, IntRegIndex dest, IntRegIndex base, int64_t imm)
Definition: macromem.cc:366
ArmISA::MacroVFPMemOp::MacroVFPMemOp
MacroVFPMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, IntRegIndex rn, RegIndex vd, bool single, bool up, bool writeback, bool load, uint32_t offset)
Definition: macromem.cc:1435
ArmISA::MicroMemPairOp::MicroMemPairOp
MicroMemPairOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dreg1, RegIndex _dreg2, RegIndex _base, bool _up, uint8_t _imm)
Definition: macromem.hh:411
type
uint8_t type
Definition: inet.hh:421
ArmISA::MicroMemOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: macromem.cc:1591
Loader::SymbolTable
Definition: symtab.hh:59
ArmISA::IntRegIndex
IntRegIndex
Definition: intregs.hh:51
ArmISA::MicroIntRegXOp::shiftAmt
uint32_t shiftAmt
Definition: macromem.hh:348
ArmISA::VstSingleOp64::dataSize
uint8_t dataSize
Definition: macromem.hh:238
ArmISA::VldMultOp64::VldMultOp64
VldMultOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize, uint8_t dataSize, uint8_t numStructElems, uint8_t numRegs, bool wb)
Definition: macromem.cc:1118
ArmISA::MicroIntRegXOp::type
ArmExtendType type
Definition: macromem.hh:347
ArmISA::MicroNeonMixOp
Microops for Neon load/store (de)interleaving.
Definition: macromem.hh:129
ArmISA::MicroIntMov
Microops of the form IntRegA = IntRegB.
Definition: macromem.hh:271
X86ISA::base
Bitfield< 51, 12 > base
Definition: pagetable.hh:141
ArmISA::MicroIntImmXOp::imm
int64_t imm
Definition: macromem.hh:311
tlb.hh
ArmISA::MicroNeonMemOp::MicroNeonMemOp
MicroNeonMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _ura, uint32_t _imm)
Definition: macromem.hh:118
ArmISA::MicroNeonMixLaneOp64::eSize
uint8_t eSize
Definition: macromem.hh:181
ArmISA::VldSingleOp64::index
uint8_t index
Definition: macromem.hh:226
ArmISA::PredOp
Base class for predicated integer operations.
Definition: pred_inst.hh:210
ArmISA::MicroSetPCCPSR::urb
IntRegIndex urb
Definition: macromem.hh:255
ArmISA::MicroIntMov::urb
RegIndex urb
Definition: macromem.hh:274
ArmISA::MicroMemPairOp::urb
RegIndex urb
Definition: macromem.hh:406
ArmISA::MicroNeonMixOp64::dest
RegIndex dest
Definition: macromem.hh:163
ArmISA::MicroSetPCCPSR::MicroSetPCCPSR
MicroSetPCCPSR(const char *mnem, ExtMachInst machInst, OpClass __opClass, IntRegIndex _ura, IntRegIndex _urb, IntRegIndex _urc)
Definition: macromem.hh:257
ArmISA::MicroNeonMixOp64::step
uint8_t step
Definition: macromem.hh:164
ArmISA
Definition: ccregs.hh:41
ArmISA::MicroNeonMixOp64::dataSize
uint8_t dataSize
Definition: macromem.hh:164
ArmISA::PairMemOp::AddrMd_Offset
@ AddrMd_Offset
Definition: macromem.hh:442
ArmISA::rt
Bitfield< 15, 12 > rt
Definition: types.hh:124
sc_dt::align
void align(const scfx_rep &lhs, const scfx_rep &rhs, int &new_wp, int &len_mant, scfx_mant_ref &lhs_mant, scfx_mant_ref &rhs_mant)
Definition: scfx_rep.cc:2083
sc_dt::inc
void inc(scfx_mant &mant)
Definition: scfx_mant.hh:341
ArmISA::MicroIntOp::MicroIntOp
MicroIntOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, RegIndex _urc)
Definition: macromem.hh:332
ArmISA::ArmStaticInst
Definition: static_inst.hh:60
ArmISA::MicroOp::advancePC
void advancePC(PCState &pcState) const override
Definition: macromem.hh:75
ArmISA::MicroIntRegXOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: macromem.cc:1552
ArmISA::MicroIntMov::MicroIntMov
MicroIntMov(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb)
Definition: macromem.hh:276
ArmISA::VstMultOp::VstMultOp
VstMultOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, unsigned width, RegIndex rn, RegIndex vd, unsigned regs, unsigned inc, uint32_t size, uint32_t align, RegIndex rm)
Definition: macromem.cc:820
ArmISA::MicroIntImmOp
Microops of the form IntRegA = IntRegB op Imm.
Definition: macromem.hh:290
ArmISA::rn
Bitfield< 19, 16 > rn
Definition: types.hh:122
ArmISA::VldSingleOp64::replicate
bool replicate
Definition: macromem.hh:227
ArmISA::MicroIntRegOp::MicroIntRegOp
MicroIntRegOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, RegIndex _urc, int32_t _shiftAmt, ArmShiftType _shiftType)
Definition: macromem.hh:373
ArmISA::VstSingleOp64::wb
bool wb
Definition: macromem.hh:239
ArmISA::MicroIntOp
Microops of the form IntRegA = IntRegB op IntRegC.
Definition: macromem.hh:327
ArmISA::BigFpMemLitOp::BigFpMemLitOp
BigFpMemLitOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, IntRegIndex dest, int64_t imm)
Definition: macromem.cc:444
ArmISA::MicroIntImmXOp
Definition: macromem.hh:307
ArmISA::VldMultOp
Base classes for microcoded integer memory instructions.
Definition: macromem.hh:493
ArmISA::MicroOpX::advancePC
void advancePC(PCState &pcState) const override
Definition: macromem.hh:96
ArmISA::MicroNeonMixLaneOp64::dataSize
uint8_t dataSize
Definition: macromem.hh:181
ArmISA::MicroNeonMemOp
Microops for Neon loads/stores.
Definition: macromem.hh:111
ArmISA::imm
Bitfield< 7, 0 > imm
Definition: types.hh:141
ArmISA::MicroIntOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: macromem.cc:1577
MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:240
ArmISA::MicroNeonMixLaneOp64::replicate
bool replicate
Definition: macromem.hh:182
ArmISA::MicroIntRegXOp::MicroIntRegXOp
MicroIntRegXOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, RegIndex _urc, ArmExtendType _type, uint32_t _shiftAmt)
Definition: macromem.hh:350
ArmISA::VldMultOp64
Base classes for microcoded AArch64 NEON memory instructions.
Definition: macromem.hh:199
ArmISA::MicroNeonMixLaneOp64::numStructElems
uint8_t numStructElems
Definition: macromem.hh:181
ArmISA::mode
Bitfield< 4, 0 > mode
Definition: miscregs_types.hh:70
ArmISA::VstMultOp64
Definition: macromem.hh:211
ArmISA::VstMultOp64::wb
bool wb
Definition: macromem.hh:215
ArmISA::PairMemOp::PairMemOp
PairMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, uint32_t size, bool fp, bool load, bool noAlloc, bool signExt, bool exclusive, bool acrel, int64_t imm, AddrMode mode, IntRegIndex rn, IntRegIndex rt, IntRegIndex rt2)
Definition: macromem.cc:240
ArmISA::MicroNeonMixOp64
Microops for AArch64 NEON load/store (de)interleaving.
Definition: macromem.hh:160
ArmISA::BigFpMemImmOp::BigFpMemImmOp
BigFpMemImmOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool load, IntRegIndex dest, IntRegIndex base, int64_t imm)
Definition: macromem.cc:345
ArmISA::PredMacroOp
Base class for predicated macro-operations.
Definition: pred_inst.hh:336
ArmISA::MicroMemPairOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: macromem.cc:1609
ArmISA::VldSingleOp64::eSize
uint8_t eSize
Definition: macromem.hh:226
StaticInst::ExtMachInst
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
Definition: static_inst.hh:89
ArmISA::MicroOpX::MicroOpX
MicroOpX(const char *mnem, ExtMachInst machInst, OpClass __opClass)
Definition: macromem.hh:90
ArmISA::MicroMemPairOp::up
bool up
Definition: macromem.hh:407
ArmISA::MicroMemPairOp::imm
int32_t imm
Definition: macromem.hh:408
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
ArmISA::writeback
Bitfield< 21 > writeback
Definition: types.hh:135
ArmISA::MicroSetPCCPSR::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: macromem.cc:1542
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
ArmISA::rm
Bitfield< 3, 0 > rm
Definition: types.hh:127
pred_inst.hh
ArmISA::BigFpMemRegOp
Definition: macromem.hh:475
ArmISA::VldMultOp64::eSize
uint8_t eSize
Definition: macromem.hh:202
ArmISA::MicroNeonMixLaneOp64::dest
RegIndex dest
Definition: macromem.hh:180
ArmISA::MicroIntRegXOp
Definition: macromem.hh:343
ArmISA::MicroSetPCCPSR::ura
IntRegIndex ura
Definition: macromem.hh:255
ArmISA::MicroNeonMixLaneOp::lane
unsigned lane
Definition: macromem.hh:146
ArmISA::TLB
Definition: tlb.hh:100
ArmISA::VstSingleOp64
Definition: macromem.hh:235
ArmISA::MicroNeonMixLaneOp
Definition: macromem.hh:143
ArmISA::MicroIntRegOp
Microops of the form IntRegA = IntRegB op shifted IntRegC.
Definition: macromem.hh:366
ArmISA::MicroNeonMixLaneOp64
Definition: macromem.hh:177
ArmISA::ArmExtendType
ArmExtendType
Definition: types.hh:575
ArmISA::MicroMemPairOp
Definition: macromem.hh:403
ArmISA::MicroIntImmOp::MicroIntImmOp
MicroIntImmOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, int32_t _imm)
Definition: macromem.hh:296
ArmISA::MicroSetPCCPSR
Microops of the form PC = IntRegA CPSR = IntRegB.
Definition: macromem.hh:252
ArmISA::MicroNeonMixOp64::numStructElems
uint8_t numStructElems
Definition: macromem.hh:164
ArmISA::MicroNeonMemOp::imm
uint32_t imm
Definition: macromem.hh:115
ArmISA::VldSingleOp64::dataSize
uint8_t dataSize
Definition: macromem.hh:226
ArmISA::MicroIntOp::ura
RegIndex ura
Definition: macromem.hh:330
ArmISA::MicroNeonMemOp::dest
RegIndex dest
Definition: macromem.hh:114
ArmISA::BigFpMemImmOp
Definition: macromem.hh:454
ArmISA::VstMultOp64::eSize
uint8_t eSize
Definition: macromem.hh:214
StaticInst::machInst
const ExtMachInst machInst
The binary machine instruction.
Definition: static_inst.hh:243
ArmISA::MicroIntRegOp::ura
RegIndex ura
Definition: macromem.hh:369
ArmISA::MicroIntImmXOp::ura
RegIndex ura
Definition: macromem.hh:310
ArmISA::VldMultOp64::numRegs
uint8_t numRegs
Definition: macromem.hh:202
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition: types.hh:41
RegIndex
uint16_t RegIndex
Definition: types.hh:52
ArmISA::VstSingleOp64::numStructElems
uint8_t numStructElems
Definition: macromem.hh:238
ArmISA::MicroMemOp::memAccessFlags
unsigned memAccessFlags
Definition: macromem.hh:390
ArmISA::MicroNeonMixOp64::MicroNeonMixOp64
MicroNeonMixOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint8_t _eSize, uint8_t _dataSize, uint8_t _numStructElems, uint8_t _numRegs, uint8_t _step)
Definition: macromem.hh:166
ArmISA::MicroIntImmOp::ura
RegIndex ura
Definition: macromem.hh:293
ArmISA::MicroIntImmXOp::MicroIntImmXOp
MicroIntImmXOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, int64_t _imm)
Definition: macromem.hh:313
ArmISA::MicroIntImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: macromem.cc:1514
ArmISA::MicroIntMov::ura
RegIndex ura
Definition: macromem.hh:274
ArmISA::MicroMemPairOp::memAccessFlags
unsigned memAccessFlags
Definition: macromem.hh:409
ArmISA::VstSingleOp64::eSize
uint8_t eSize
Definition: macromem.hh:238
ArmISA::VldSingleOp
Definition: macromem.hh:501
ArmISA::MicroOp::MicroOp
MicroOp(const char *mnem, ExtMachInst machInst, OpClass __opClass)
Definition: macromem.hh:68
ArmISA::VstSingleOp64::index
uint8_t index
Definition: macromem.hh:238
ArmISA::MicroNeonMixOp::op1
RegIndex op1
Definition: macromem.hh:132
ArmISA::VstSingleOp
Definition: macromem.hh:521
ArmISA::up
Bitfield< 23 > up
Definition: types.hh:133
ArmISA::MicroMemOp::up
bool up
Definition: macromem.hh:389
ArmISA::MicroIntOp::urb
RegIndex urb
Definition: macromem.hh:330
ArmISA::MicroIntRegOp::urb
RegIndex urb
Definition: macromem.hh:369
ArmISA::VstMultOp64::numRegs
uint8_t numRegs
Definition: macromem.hh:214
ArmISA::VldMultOp::VldMultOp
VldMultOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, unsigned elems, RegIndex rn, RegIndex vd, unsigned regs, unsigned inc, uint32_t size, uint32_t align, RegIndex rm)
Definition: macromem.cc:457
ArmISA::MicroIntMov::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: macromem.cc:1565
ArmISA::PairMemOp::AddrMd_PostIndex
@ AddrMd_PostIndex
Definition: macromem.hh:444
ArmISA::VstSingleOp64::VstSingleOp64
VstSingleOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize, uint8_t dataSize, uint8_t numStructElems, uint8_t index, bool wb, bool replicate=false)
Definition: macromem.cc:1362
ArmISA::VldMultOp64::numStructElems
uint8_t numStructElems
Definition: macromem.hh:202
ArmISA::MicroIntImmOp::urb
RegIndex urb
Definition: macromem.hh:293
ArmISA::MacroMemOp::MacroMemOp
MacroMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, IntRegIndex rn, bool index, bool up, bool user, bool writeback, bool load, uint32_t reglist)
Definition: macromem.cc:54
ArmISA::BigFpMemPostOp
Definition: macromem.hh:461
ArmISA::MicroNeonMixOp::MicroNeonMixOp
MicroNeonMixOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint32_t _step)
Definition: macromem.hh:135
ArmISA::MicroIntImmXOp::urb
RegIndex urb
Definition: macromem.hh:310
ArmISA::MicroIntRegOp::shiftType
ArmShiftType shiftType
Definition: macromem.hh:371
ArmISA::VstSingleOp::VstSingleOp
VstSingleOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, bool all, unsigned elems, RegIndex rn, RegIndex vd, unsigned regs, unsigned inc, uint32_t size, uint32_t align, RegIndex rm, unsigned lane)
Definition: macromem.cc:915
ArmISA::VstMultOp64::VstMultOp64
VstMultOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize, uint8_t dataSize, uint8_t numStructElems, uint8_t numRegs, bool wb)
Definition: macromem.cc:1203
ArmISA::MicroSetPCCPSR::urc
IntRegIndex urc
Definition: macromem.hh:255
ArmISA::MicroNeonMixLaneOp64::MicroNeonMixLaneOp64
MicroNeonMixLaneOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint8_t _eSize, uint8_t _dataSize, uint8_t _numStructElems, uint8_t _lane, uint8_t _step, bool _replicate=false)
Definition: macromem.hh:184
ArmISA::VldSingleOp64::wb
bool wb
Definition: macromem.hh:227
ArmISA::MicroMemOp::MicroMemOp
MicroMemOp(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex _ura, RegIndex _urb, bool _up, uint8_t _imm)
Definition: macromem.hh:392
ArmISA::MicroNeonMixOp64::eSize
uint8_t eSize
Definition: macromem.hh:164
ArmISA::offset
Bitfield< 23, 0 > offset
Definition: types.hh:153
ArmISA::VstSingleOp64::replicate
bool replicate
Definition: macromem.hh:239
ArmISA::VldSingleOp64::VldSingleOp64
VldSingleOp64(const char *mnem, ExtMachInst machInst, OpClass __opClass, RegIndex rn, RegIndex vd, RegIndex rm, uint8_t eSize, uint8_t dataSize, uint8_t numStructElems, uint8_t index, bool wb, bool replicate=false)
Definition: macromem.cc:1288
ArmISA::MicroNeonMemOp::ura
RegIndex ura
Definition: macromem.hh:114

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