gem5  v21.0.1.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
dyn_inst.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010, 2016 ARM Limited
3  * Copyright (c) 2013 Advanced Micro Devices, Inc.
4  * All rights reserved
5  *
6  * The license below extends only to copyright in the software and shall
7  * not be construed as granting a license to any other intellectual
8  * property including but not limited to intellectual property relating
9  * to a hardware implementation of the functionality of the software
10  * licensed hereunder. You may use the software subject to the license
11  * terms below provided that you ensure that this notice is replicated
12  * unmodified and in its entirety in all distributions of the software,
13  * modified or unmodified, in source code or in binary form.
14  *
15  * Copyright (c) 2004-2006 The Regents of The University of Michigan
16  * All rights reserved.
17  *
18  * Redistribution and use in source and binary forms, with or without
19  * modification, are permitted provided that the following conditions are
20  * met: redistributions of source code must retain the above copyright
21  * notice, this list of conditions and the following disclaimer;
22  * redistributions in binary form must reproduce the above copyright
23  * notice, this list of conditions and the following disclaimer in the
24  * documentation and/or other materials provided with the distribution;
25  * neither the name of the copyright holders nor the names of its
26  * contributors may be used to endorse or promote products derived from
27  * this software without specific prior written permission.
28  *
29  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40  */
41 
42 #ifndef __CPU_O3_DYN_INST_HH__
43 #define __CPU_O3_DYN_INST_HH__
44 
45 #include <array>
46 
47 #include "config/the_isa.hh"
48 #include "cpu/o3/cpu.hh"
49 #include "cpu/o3/isa_specific.hh"
50 #include "cpu/base_dyn_inst.hh"
51 #include "cpu/inst_seq.hh"
52 #include "cpu/reg_class.hh"
53 
54 class Packet;
55 
56 template <class Impl>
57 class BaseO3DynInst : public BaseDynInst<Impl>
58 {
59  public:
61  typedef typename Impl::O3CPU O3CPU;
62 
65 
66  public:
70  InstSeqNum seq_num, O3CPU *cpu);
71 
73  BaseO3DynInst(const StaticInstPtr &_staticInst,
74  const StaticInstPtr &_macroop);
75 
77 
79  Fault execute();
80 
83 
86 
87  private:
89  void initVars();
90 
91  protected:
94 
97 
103 
104  public:
105 #if TRACING_ON
106 
107  Tick fetchTick; // instruction fetch is completed.
108  int32_t decodeTick; // instruction enters decode phase
109  int32_t renameTick; // instruction enters rename phase
110  int32_t dispatchTick;
111  int32_t issueTick;
112  int32_t completeTick;
113  int32_t commitTick;
114  int32_t storeTick;
115 #endif
116 
120  RegVal
121  readMiscReg(int misc_reg) override
122  {
123  return this->cpu->readMiscReg(misc_reg, this->threadNumber);
124  }
125 
129  void
130  setMiscReg(int misc_reg, RegVal val) override
131  {
138  for (auto &idx: _destMiscRegIdx) {
139  if (idx == misc_reg)
140  return;
141  }
142 
143  _destMiscRegIdx.push_back(misc_reg);
144  _destMiscRegVal.push_back(val);
145  }
146 
150  RegVal
151  readMiscRegOperand(const StaticInst *si, int idx) override
152  {
153  const RegId& reg = si->srcRegIdx(idx);
154  assert(reg.isMiscReg());
155  return this->cpu->readMiscReg(reg.index(), this->threadNumber);
156  }
157 
161  void
162  setMiscRegOperand(const StaticInst *si, int idx, RegVal val) override
163  {
164  const RegId& reg = si->destRegIdx(idx);
165  assert(reg.isMiscReg());
166  setMiscReg(reg.index(), val);
167  }
168 
170  void
172  {
173  // @todo: Pretty convoluted way to avoid squashing from happening when
174  // using the TC during an instruction's execution (specifically for
175  // instructions that have side-effects that use the TC). Fix this.
176  // See cpu/o3/dyn_inst_impl.hh.
177  bool no_squash_from_TC = this->thread->noSquashFromTC;
178  this->thread->noSquashFromTC = true;
179 
180  for (int i = 0; i < _destMiscRegIdx.size(); i++)
181  this->cpu->setMiscReg(
182  _destMiscRegIdx[i], _destMiscRegVal[i], this->threadNumber);
183 
184  this->thread->noSquashFromTC = no_squash_from_TC;
185  }
186 
188  {
189 
190  for (int idx = 0; idx < this->numDestRegs(); idx++) {
191  PhysRegIdPtr prev_phys_reg = this->regs.prevDestIdx(idx);
192  const RegId& original_dest_reg =
193  this->staticInst->destRegIdx(idx);
194  switch (original_dest_reg.classValue()) {
195  case IntRegClass:
196  this->setIntRegOperand(this->staticInst.get(), idx,
197  this->cpu->readIntReg(prev_phys_reg));
198  break;
199  case FloatRegClass:
200  this->setFloatRegOperandBits(this->staticInst.get(), idx,
201  this->cpu->readFloatReg(prev_phys_reg));
202  break;
203  case VecRegClass:
204  this->setVecRegOperand(this->staticInst.get(), idx,
205  this->cpu->readVecReg(prev_phys_reg));
206  break;
207  case VecElemClass:
208  this->setVecElemOperand(this->staticInst.get(), idx,
209  this->cpu->readVecElem(prev_phys_reg));
210  break;
211  case VecPredRegClass:
212  this->setVecPredRegOperand(this->staticInst.get(), idx,
213  this->cpu->readVecPredReg(prev_phys_reg));
214  break;
215  case CCRegClass:
216  this->setCCRegOperand(this->staticInst.get(), idx,
217  this->cpu->readCCReg(prev_phys_reg));
218  break;
219  case MiscRegClass:
220  // no need to forward misc reg values
221  break;
222  default:
223  panic("Unknown register class: %d",
224  (int)original_dest_reg.classValue());
225  }
226  }
227  }
229  void trap(const Fault &fault);
230 
231  public:
232 
233  // The register accessor methods provide the index of the
234  // instruction's operand (e.g., 0 or 1), not the architectural
235  // register index, to simplify the implementation of register
236  // renaming. We find the architectural register index by indexing
237  // into the instruction's own operand index table. Note that a
238  // raw pointer to the StaticInst is provided instead of a
239  // ref-counted StaticInstPtr to redice overhead. This is fine as
240  // long as these methods don't copy the pointer into any long-term
241  // storage (which is pretty hard to imagine they would have reason
242  // to do).
243 
244  RegVal
245  readIntRegOperand(const StaticInst *si, int idx) override
246  {
247  return this->cpu->readIntReg(this->regs.renamedSrcIdx(idx));
248  }
249 
250  RegVal
251  readFloatRegOperandBits(const StaticInst *si, int idx) override
252  {
253  return this->cpu->readFloatReg(this->regs.renamedSrcIdx(idx));
254  }
255 
257  readVecRegOperand(const StaticInst *si, int idx) const override
258  {
259  return this->cpu->readVecReg(this->regs.renamedSrcIdx(idx));
260  }
261 
266  getWritableVecRegOperand(const StaticInst *si, int idx) override
267  {
268  return this->cpu->getWritableVecReg(this->regs.renamedDestIdx(idx));
269  }
270 
275  readVec8BitLaneOperand(const StaticInst *si, int idx) const override
276  {
277  return cpu->template readVecLane<uint8_t>(
278  this->regs.renamedSrcIdx(idx));
279  }
280 
283  readVec16BitLaneOperand(const StaticInst *si, int idx) const override
284  {
285  return cpu->template readVecLane<uint16_t>(
286  this->regs.renamedSrcIdx(idx));
287  }
288 
291  readVec32BitLaneOperand(const StaticInst *si, int idx) const override
292  {
293  return cpu->template readVecLane<uint32_t>(
294  this->regs.renamedSrcIdx(idx));
295  }
296 
299  readVec64BitLaneOperand(const StaticInst *si, int idx) const override
300  {
301  return cpu->template readVecLane<uint64_t>(
302  this->regs.renamedSrcIdx(idx));
303  }
304 
306  template <typename LD>
307  void
308  setVecLaneOperandT(const StaticInst *si, int idx, const LD& val)
309  {
310  return cpu->template setVecLane(this->regs.renamedDestIdx(idx), val);
311  }
312  virtual void
313  setVecLaneOperand(const StaticInst *si, int idx,
314  const LaneData<LaneSize::Byte>& val) override
315  {
316  return setVecLaneOperandT(si, idx, val);
317  }
318  virtual void
319  setVecLaneOperand(const StaticInst *si, int idx,
320  const LaneData<LaneSize::TwoByte>& val) override
321  {
322  return setVecLaneOperandT(si, idx, val);
323  }
324  virtual void
325  setVecLaneOperand(const StaticInst *si, int idx,
326  const LaneData<LaneSize::FourByte>& val) override
327  {
328  return setVecLaneOperandT(si, idx, val);
329  }
330  virtual void
331  setVecLaneOperand(const StaticInst *si, int idx,
332  const LaneData<LaneSize::EightByte>& val) override
333  {
334  return setVecLaneOperandT(si, idx, val);
335  }
339  readVecElemOperand(const StaticInst *si, int idx) const override
340  {
341  return this->cpu->readVecElem(this->regs.renamedSrcIdx(idx));
342  }
343 
345  readVecPredRegOperand(const StaticInst *si, int idx) const override
346  {
347  return this->cpu->readVecPredReg(this->regs.renamedSrcIdx(idx));
348  }
349 
351  getWritableVecPredRegOperand(const StaticInst *si, int idx) override
352  {
353  return this->cpu->getWritableVecPredReg(
354  this->regs.renamedDestIdx(idx));
355  }
356 
357  RegVal
358  readCCRegOperand(const StaticInst *si, int idx) override
359  {
360  return this->cpu->readCCReg(this->regs.renamedSrcIdx(idx));
361  }
362 
366  void
367  setIntRegOperand(const StaticInst *si, int idx, RegVal val) override
368  {
369  this->cpu->setIntReg(this->regs.renamedDestIdx(idx), val);
371  }
372 
373  void
374  setFloatRegOperandBits(const StaticInst *si, int idx, RegVal val) override
375  {
376  this->cpu->setFloatReg(this->regs.renamedDestIdx(idx), val);
378  }
379 
380  void
381  setVecRegOperand(const StaticInst *si, int idx,
382  const TheISA::VecRegContainer& val) override
383  {
384  this->cpu->setVecReg(this->regs.renamedDestIdx(idx), val);
386  }
387 
388  void
389  setVecElemOperand(const StaticInst *si, int idx,
390  const TheISA::VecElem val) override
391  {
392  int reg_idx = idx;
393  this->cpu->setVecElem(this->regs.renamedDestIdx(reg_idx), val);
395  }
396 
397  void
399  const TheISA::VecPredRegContainer& val) override
400  {
401  this->cpu->setVecPredReg(this->regs.renamedDestIdx(idx), val);
403  }
404 
405  void setCCRegOperand(const StaticInst *si, int idx, RegVal val) override
406  {
407  this->cpu->setCCReg(this->regs.renamedDestIdx(idx), val);
409  }
410 };
411 
412 #endif // __CPU_O3_ALPHA_DYN_INST_HH__
413 
BaseDynInst::setCCRegOperand
void setCCRegOperand(const StaticInst *si, int idx, RegVal val) override
Records a CC register being set to a value.
Definition: base_dyn_inst.hh:837
BaseDynInst::predPC
TheISA::PCState predPC
Predicted PC state after this instruction.
Definition: base_dyn_inst.hh:351
BaseO3DynInst::setMiscReg
void setMiscReg(int misc_reg, RegVal val) override
Sets a misc.
Definition: dyn_inst.hh:130
BaseO3DynInst::readVec16BitLaneOperand
ConstVecLane16 readVec16BitLaneOperand(const StaticInst *si, int idx) const override
Reads source vector 16bit operand.
Definition: dyn_inst.hh:283
BaseO3DynInst::O3CPU
Impl::O3CPU O3CPU
Typedef for the CPU.
Definition: dyn_inst.hh:61
BaseO3DynInst::initVars
void initVars()
Initializes variables.
Definition: dyn_inst_impl.hh:105
StaticInst::destRegIdx
const RegId & destRegIdx(int i) const
Return logical index (architectural reg num) of i'th destination reg.
Definition: static_inst.hh:234
ArmISA::VecRegContainer
VecReg::Container VecRegContainer
Definition: registers.hh:63
VecElemClass
@ VecElemClass
Vector Register Native Elem lane.
Definition: reg_class.hh:58
BaseDynInst::thread
ImplState * thread
Pointer to the thread state.
Definition: base_dyn_inst.hh:156
ArmISA::i
Bitfield< 7 > i
Definition: miscregs_types.hh:63
BaseO3DynInst::NumVecElemPerVecReg
static constexpr auto NumVecElemPerVecReg
Register types.
Definition: dyn_inst.hh:64
StaticInst
Base, ISA-independent static instruction class.
Definition: static_inst.hh:85
BaseDynInst::fault
Fault fault
The kind of fault this instruction has generated.
Definition: base_dyn_inst.hh:159
ArmISA::si
Bitfield< 6 > si
Definition: miscregs_types.hh:766
base_dyn_inst.hh
BaseO3DynInst
Definition: dyn_inst.hh:57
Tick
uint64_t Tick
Tick count type.
Definition: types.hh:59
ArmISA::VecPredRegContainer
VecPredReg::Container VecPredRegContainer
Definition: registers.hh:69
BaseO3DynInst::setVecLaneOperand
virtual void setVecLaneOperand(const StaticInst *si, int idx, const LaneData< LaneSize::EightByte > &val) override
Definition: dyn_inst.hh:331
BaseO3DynInst::setMiscRegOperand
void setMiscRegOperand(const StaticInst *si, int idx, RegVal val) override
Sets a misc.
Definition: dyn_inst.hh:162
BaseDynInst::regs
Regs regs
Definition: base_dyn_inst.hh:341
std::vector< RegVal >
BaseO3DynInst::BaseO3DynInst
BaseO3DynInst(const StaticInstPtr &staticInst, const StaticInstPtr &macroop, TheISA::PCState pc, TheISA::PCState predPC, InstSeqNum seq_num, O3CPU *cpu)
BaseDynInst constructor given a binary instruction.
Definition: dyn_inst_impl.hh:50
BaseO3DynInst::setFloatRegOperandBits
void setFloatRegOperandBits(const StaticInst *si, int idx, RegVal val) override
Records an fp register being set to an integer value.
Definition: dyn_inst.hh:374
BaseO3DynInst::readVec32BitLaneOperand
ConstVecLane32 readVec32BitLaneOperand(const StaticInst *si, int idx) const override
Reads source vector 32bit operand.
Definition: dyn_inst.hh:291
X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:88
BaseO3DynInst::updateMiscRegs
void updateMiscRegs()
Called at the commit stage to update the misc.
Definition: dyn_inst.hh:171
RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:75
BaseO3DynInst::readIntRegOperand
RegVal readIntRegOperand(const StaticInst *si, int idx) override
Reads an integer register.
Definition: dyn_inst.hh:245
BaseO3DynInst::setIntRegOperand
void setIntRegOperand(const StaticInst *si, int idx, RegVal val) override
Definition: dyn_inst.hh:367
BaseO3DynInst::readMiscRegOperand
RegVal readMiscRegOperand(const StaticInst *si, int idx) override
Reads a misc.
Definition: dyn_inst.hh:151
BaseDynInst::setIntRegOperand
void setIntRegOperand(const StaticInst *si, int idx, RegVal val) override
Records an integer register being set to a value.
Definition: base_dyn_inst.hh:830
BaseO3DynInst::readMiscReg
RegVal readMiscReg(int misc_reg) override
Reads a misc.
Definition: dyn_inst.hh:121
BaseO3DynInst::setVecLaneOperand
virtual void setVecLaneOperand(const StaticInst *si, int idx, const LaneData< LaneSize::FourByte > &val) override
Definition: dyn_inst.hh:325
BaseDynInst::setVecRegOperand
void setVecRegOperand(const StaticInst *si, int idx, const TheISA::VecRegContainer &val) override
Record a vector register being set to a value.
Definition: base_dyn_inst.hh:844
ArmISA::VecElem
uint32_t VecElem
Definition: registers.hh:60
FloatRegClass
@ FloatRegClass
Floating-point register.
Definition: reg_class.hh:54
inst_seq.hh
BaseO3DynInst::forwardOldRegs
void forwardOldRegs()
Definition: dyn_inst.hh:187
isa_specific.hh
BaseDynInst::pc
TheISA::PCState pc
PC state for this instruction.
Definition: base_dyn_inst.hh:171
VecLaneT
Vector Lane abstraction Another view of a container.
Definition: vec_reg.hh:262
BaseO3DynInst::setVecLaneOperand
virtual void setVecLaneOperand(const StaticInst *si, int idx, const LaneData< LaneSize::TwoByte > &val) override
Definition: dyn_inst.hh:319
BaseO3DynInst::setVecElemOperand
void setVecElemOperand(const StaticInst *si, int idx, const TheISA::VecElem val) override
Record a vector register being set to a value.
Definition: dyn_inst.hh:389
BaseO3DynInst::execute
Fault execute()
Executes the instruction.
Definition: dyn_inst_impl.hh:125
Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:246
BaseO3DynInst::setCCRegOperand
void setCCRegOperand(const StaticInst *si, int idx, RegVal val) override
Records a CC register being set to a value.
Definition: dyn_inst.hh:405
ArmISA::NumVecElemPerVecReg
constexpr unsigned NumVecElemPerVecReg
Definition: registers.hh:58
BaseO3DynInst::~BaseO3DynInst
~BaseO3DynInst()
Definition: dyn_inst_impl.hh:67
BaseO3DynInst::_destMiscRegVal
std::vector< RegVal > _destMiscRegVal
Values to be written to the destination misc.
Definition: dyn_inst.hh:96
BaseO3DynInst::readVecElemOperand
TheISA::VecElem readVecElemOperand(const StaticInst *si, int idx) const override
Vector Elem Interfaces.
Definition: dyn_inst.hh:339
BaseO3DynInst::setVecRegOperand
void setVecRegOperand(const StaticInst *si, int idx, const TheISA::VecRegContainer &val) override
Record a vector register being set to a value.
Definition: dyn_inst.hh:381
BaseDynInst
Definition: base_dyn_inst.hh:77
BaseO3DynInst::setVecLaneOperandT
void setVecLaneOperandT(const StaticInst *si, int idx, const LD &val)
Write a lane of the destination vector operand.
Definition: dyn_inst.hh:308
BaseDynInst::cpu
ImplCPU * cpu
Pointer to the Impl's CPU object.
Definition: base_dyn_inst.hh:151
BaseDynInst::Regs::renamedSrcIdx
PhysRegIdPtr renamedSrcIdx(int idx) const
Definition: base_dyn_inst.hh:314
BaseDynInst::Regs::renamedDestIdx
PhysRegIdPtr renamedDestIdx(int idx) const
Definition: base_dyn_inst.hh:285
BaseDynInst::setFloatRegOperandBits
void setFloatRegOperandBits(const StaticInst *si, int idx, RegVal val) override
Records an fp register being set to an integer value.
Definition: base_dyn_inst.hh:852
VecPredRegClass
@ VecPredRegClass
Definition: reg_class.hh:59
BaseDynInst::numDestRegs
size_t numDestRegs() const
Returns the number of destination registers.
Definition: base_dyn_inst.hh:739
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
BaseO3DynInst::readVec8BitLaneOperand
ConstVecLane8 readVec8BitLaneOperand(const StaticInst *si, int idx) const override
Vector Register Lane Interfaces.
Definition: dyn_inst.hh:275
InstSeqNum
uint64_t InstSeqNum
Definition: inst_seq.hh:37
BaseO3DynInst::readVecRegOperand
const TheISA::VecRegContainer & readVecRegOperand(const StaticInst *si, int idx) const override
Vector Register Interfaces.
Definition: dyn_inst.hh:257
BaseO3DynInst::setVecLaneOperand
virtual void setVecLaneOperand(const StaticInst *si, int idx, const LaneData< LaneSize::Byte > &val) override
Write a lane of the destination vector operand.
Definition: dyn_inst.hh:313
BaseO3DynInst::readFloatRegOperandBits
RegVal readFloatRegOperandBits(const StaticInst *si, int idx) override
Reads a floating point register in its binary format, instead of by value.
Definition: dyn_inst.hh:251
IntRegClass
@ IntRegClass
Integer register.
Definition: reg_class.hh:53
BaseO3DynInst::getWritableVecPredRegOperand
TheISA::VecPredRegContainer & getWritableVecPredRegOperand(const StaticInst *si, int idx) override
Gets destination predicate register operand for modification.
Definition: dyn_inst.hh:351
CCRegClass
@ CCRegClass
Condition-code register.
Definition: reg_class.hh:60
BaseO3DynInst::readCCRegOperand
RegVal readCCRegOperand(const StaticInst *si, int idx) override
Definition: dyn_inst.hh:358
BaseO3DynInst::initiateAcc
Fault initiateAcc()
Initiates the access.
Definition: dyn_inst_impl.hh:143
BaseDynInst::Regs::prevDestIdx
PhysRegIdPtr prevDestIdx(int idx) const
Definition: base_dyn_inst.hh:300
MiscRegClass
@ MiscRegClass
Control (misc) register.
Definition: reg_class.hh:61
VecRegClass
@ VecRegClass
Vector Register.
Definition: reg_class.hh:56
BaseO3DynInst::readVec64BitLaneOperand
ConstVecLane64 readVec64BitLaneOperand(const StaticInst *si, int idx) const override
Reads source vector 64bit operand.
Definition: dyn_inst.hh:299
BaseDynInst::staticInst
const StaticInstPtr staticInst
The StaticInst used by this BaseDynInst.
Definition: base_dyn_inst.hh:148
BaseDynInst::setVecPredRegOperand
void setVecPredRegOperand(const StaticInst *si, int idx, const TheISA::VecPredRegContainer &val) override
Record a vector register being set to a value.
Definition: base_dyn_inst.hh:867
BaseO3DynInst::completeAcc
Fault completeAcc(PacketPtr pkt)
Completes the access.
Definition: dyn_inst_impl.hh:161
BaseO3DynInst::getWritableVecRegOperand
TheISA::VecRegContainer & getWritableVecRegOperand(const StaticInst *si, int idx) override
Read destination vector register operand for modification.
Definition: dyn_inst.hh:266
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition: types.hh:41
Packet
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Definition: packet.hh:258
reg_class.hh
PhysRegId
Physical register ID.
Definition: reg_class.hh:223
BaseDynInst::threadNumber
ThreadID threadNumber
The thread this instruction is from.
Definition: base_dyn_inst.hh:344
BaseO3DynInst::readVecPredRegOperand
const TheISA::VecPredRegContainer & readVecPredRegOperand(const StaticInst *si, int idx) const override
Predicate registers interface.
Definition: dyn_inst.hh:345
RefCountingPtr< StaticInst >
RegId::index
const RegIndex & index() const
Index accessors.
Definition: reg_class.hh:171
cpu.hh
BaseDynInst::macroop
const StaticInstPtr macroop
The Macroop if one exists.
Definition: base_dyn_inst.hh:354
RegId::classValue
const RegClass & classValue() const
Class accessor.
Definition: reg_class.hh:199
BaseO3DynInst::setVecPredRegOperand
void setVecPredRegOperand(const StaticInst *si, int idx, const TheISA::VecPredRegContainer &val) override
Record a vector register being set to a value.
Definition: dyn_inst.hh:398
BaseO3DynInst::trap
void trap(const Fault &fault)
Traps to handle specified fault.
Definition: dyn_inst_impl.hh:185
LaneData
LaneSize is an abstraction of a LS byte value for the execution and thread contexts to handle values ...
Definition: vec_reg.hh:458
RegVal
uint64_t RegVal
Definition: types.hh:174
BaseDynInst::setVecElemOperand
void setVecElemOperand(const StaticInst *si, int idx, const TheISA::VecElem val) override
Record a vector register being set to a value.
Definition: base_dyn_inst.hh:859
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition: logging.hh:171
BaseO3DynInst::_destMiscRegIdx
std::vector< short > _destMiscRegIdx
Indexes of the destination misc.
Definition: dyn_inst.hh:102
RefCountingPtr::get
T * get() const
Directly access the pointer itself without taking a reference.
Definition: refcnt.hh:224

Generated on Tue Jun 22 2021 15:28:26 for gem5 by doxygen 1.8.17