gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
gpu_static_inst.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 Advanced Micro Devices, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef __GPU_STATIC_INST_HH__
33 #define __GPU_STATIC_INST_HH__
34 
35 /*
36  * @file gpu_static_inst.hh
37  *
38  * Defines the base class representing static instructions for the GPU. The
39  * instructions are "static" because they contain no dynamic instruction
40  * information. GPUStaticInst corresponds to the StaticInst class for the CPU
41  * models.
42  */
43 
44 #include <cstdint>
45 #include <string>
46 #include <vector>
47 
48 #include "enums/GPUStaticInstFlags.hh"
49 #include "enums/StorageClassType.hh"
51 #include "gpu-compute/misc.hh"
53 #include "gpu-compute/wavefront.hh"
54 
55 namespace gem5
56 {
57 
58 class BaseOperand;
59 class BaseRegOperand;
60 
61 class GPUStaticInst : public GPUStaticInstFlags
62 {
63  public:
64  GPUStaticInst(const std::string &opcode);
65  virtual ~GPUStaticInst() { }
66  void instAddr(int inst_addr) { _instAddr = inst_addr; }
67  int instAddr() const { return _instAddr; }
68  int nextInstAddr() const { return _instAddr + instSize(); }
69 
70  void instNum(int num) { _instNum = num; }
71 
72  int instNum() { return _instNum; }
73 
74  void ipdInstNum(int num) { _ipdInstNum = num; }
75 
76  int ipdInstNum() const { return _ipdInstNum; }
77 
78  virtual TheGpuISA::ScalarRegU32 srcLiteral() const { return 0; }
79 
81 
82  virtual void initOperandInfo() = 0;
83  virtual void execute(GPUDynInstPtr gpuDynInst) = 0;
84  virtual void generateDisassembly() = 0;
85  const std::string& disassemble();
86  virtual int getNumOperands() = 0;
87  virtual bool isFlatScratchRegister(int opIdx) = 0;
88  virtual bool isExecMaskRegister(int opIdx) = 0;
89  virtual int getOperandSize(int operandIndex) = 0;
90 
91  virtual int numDstRegOperands() = 0;
92  virtual int numSrcRegOperands() = 0;
93 
94  int numSrcVecOperands();
95  int numDstVecOperands();
96  int numSrcVecDWords();
97  int numDstVecDWords();
98 
100  int numDstScalarOperands();
101  int numSrcScalarDWords();
102  int numDstScalarDWords();
103 
104  int maxOperandSize();
105 
106  virtual int coalescerTokenCount() const { return 0; }
107 
108  bool isALU() const { return _flags[ALU]; }
109  bool isBranch() const { return _flags[Branch]; }
110  bool isCondBranch() const { return _flags[CondBranch]; }
111  bool isNop() const { return _flags[Nop]; }
112  bool isReturn() const { return _flags[Return]; }
113  bool isEndOfKernel() const { return _flags[EndOfKernel]; }
114  bool isKernelLaunch() const { return _flags[KernelLaunch]; }
115  bool isSDWAInst() const { return _flags[IsSDWA]; }
116  bool isDPPInst() const { return _flags[IsDPP]; }
117 
118  bool
120  {
121  return _flags[UnconditionalJump];
122  }
123 
124  bool isSpecialOp() const { return _flags[SpecialOp]; }
125  bool isWaitcnt() const { return _flags[Waitcnt]; }
126  bool isSleep() const { return _flags[Sleep]; }
127 
128  bool isBarrier() const { return _flags[MemBarrier]; }
129  bool isMemSync() const { return _flags[MemSync]; }
130  bool isMemRef() const { return _flags[MemoryRef]; }
131  bool isFlat() const { return _flags[Flat]; }
132  bool isFlatGlobal() const { return _flags[FlatGlobal]; }
133  bool isLoad() const { return _flags[Load]; }
134  bool isStore() const { return _flags[Store]; }
135 
136  bool
137  isAtomic() const
138  {
139  return _flags[AtomicReturn] || _flags[AtomicNoReturn];
140  }
141 
142  bool isAtomicNoRet() const { return _flags[AtomicNoReturn]; }
143  bool isAtomicRet() const { return _flags[AtomicReturn]; }
144 
145  bool isScalar() const { return _flags[Scalar]; }
146  bool readsSCC() const { return _flags[ReadsSCC]; }
147  bool writesSCC() const { return _flags[WritesSCC]; }
148  bool readsVCC() const { return _flags[ReadsVCC]; }
149  bool writesVCC() const { return _flags[WritesVCC]; }
150  // Identify instructions that implicitly read the Execute mask
151  // as a source operand but not to dictate which threads execute.
152  bool readsEXEC() const { return _flags[ReadsEXEC]; }
153  bool writesEXEC() const { return _flags[WritesEXEC]; }
154  bool readsMode() const { return _flags[ReadsMode]; }
155  bool writesMode() const { return _flags[WritesMode]; }
156  bool ignoreExec() const { return _flags[IgnoreExec]; }
157 
158  bool isAtomicAnd() const { return _flags[AtomicAnd]; }
159  bool isAtomicOr() const { return _flags[AtomicOr]; }
160  bool isAtomicXor() const { return _flags[AtomicXor]; }
161  bool isAtomicCAS() const { return _flags[AtomicCAS]; }
162  bool isAtomicExch() const { return _flags[AtomicExch]; }
163  bool isAtomicAdd() const { return _flags[AtomicAdd]; }
164  bool isAtomicSub() const { return _flags[AtomicSub]; }
165  bool isAtomicInc() const { return _flags[AtomicInc]; }
166  bool isAtomicDec() const { return _flags[AtomicDec]; }
167  bool isAtomicMax() const { return _flags[AtomicMax]; }
168  bool isAtomicMin() const { return _flags[AtomicMin]; }
169 
170  bool
171  isArgLoad() const
172  {
173  return (_flags[KernArgSegment] || _flags[ArgSegment]) && _flags[Load];
174  }
175 
176  bool
177  isGlobalMem() const
178  {
179  return _flags[MemoryRef] && (_flags[GlobalSegment] ||
180  _flags[PrivateSegment] || _flags[ReadOnlySegment] ||
181  _flags[SpillSegment] || _flags[FlatGlobal]);
182  }
183 
184  bool
185  isLocalMem() const
186  {
187  return _flags[MemoryRef] && _flags[GroupSegment];
188  }
189 
190  bool isArgSeg() const { return _flags[ArgSegment]; }
191  bool isGlobalSeg() const { return _flags[GlobalSegment]; }
192  bool isGroupSeg() const { return _flags[GroupSegment]; }
193  bool isKernArgSeg() const { return _flags[KernArgSegment]; }
194  bool isPrivateSeg() const { return _flags[PrivateSegment]; }
195  bool isReadOnlySeg() const { return _flags[ReadOnlySegment]; }
196  bool isSpillSeg() const { return _flags[SpillSegment]; }
197 
208  bool isGloballyCoherent() const { return _flags[GloballyCoherent]; }
209  bool isSystemCoherent() const { return _flags[SystemCoherent]; }
210 
211  // Floating-point instructions
212  bool isF16() const { return _flags[F16]; }
213  bool isF32() const { return _flags[F32]; }
214  bool isF64() const { return _flags[F64]; }
215 
216  // FMA, MAC, MAD instructions
217  bool isFMA() const { return _flags[FMA]; }
218  bool isMAC() const { return _flags[MAC]; }
219  bool isMAD() const { return _flags[MAD]; }
220 
221  virtual int instSize() const = 0;
222 
223  // only used for memory instructions
224  virtual void
226  {
227  fatal("calling initiateAcc() on a non-memory instruction.\n");
228  }
229 
230  // only used for memory instructions
231  virtual void
233  {
234  fatal("calling completeAcc() on a non-memory instruction.\n");
235  }
236 
237  virtual uint32_t getTargetPc() { return 0; }
238 
239  static uint64_t dynamic_id_count;
240 
241  // For flat memory accesses
242  enums::StorageClassType executed_as;
243 
244  void setFlag(Flags flag) {
245  _flags[flag] = true;
246 
247  if (isGroupSeg()) {
248  executed_as = enums::SC_GROUP;
249  } else if (isGlobalSeg()) {
250  executed_as = enums::SC_GLOBAL;
251  } else if (isPrivateSeg()) {
252  executed_as = enums::SC_PRIVATE;
253  } else if (isSpillSeg()) {
254  executed_as = enums::SC_SPILL;
255  } else if (isReadOnlySeg()) {
256  executed_as = enums::SC_READONLY;
257  } else if (isKernArgSeg()) {
258  executed_as = enums::SC_KERNARG;
259  } else if (isArgSeg()) {
260  executed_as = enums::SC_ARG;
261  }
262  }
263  const std::string& opcode() const { return _opcode; }
264 
265  const std::vector<OperandInfo>& srcOperands() const { return srcOps; }
266  const std::vector<OperandInfo>& dstOperands() const { return dstOps; }
267 
270  {
271  return srcVecRegOps;
272  }
273 
276  {
277  return dstVecRegOps;
278  }
279 
282  {
283  return srcScalarRegOps;
284  }
285 
288  {
289  return dstScalarRegOps;
290  }
291 
292  // These next 2 lines are used in initDynOperandInfo to let the lambda
293  // function work
294  typedef int (RegisterManager::*MapRegFn)(Wavefront *, int);
296 
297  protected:
298  const std::string _opcode;
299  std::string disassembly;
300  int _instNum;
304 
305  private:
311 
316 
321 
322  std::bitset<Num_Flags> _flags;
323 };
324 
326 {
327  public:
329  {
330  setFlag(Nop);
331  setFlag(KernelLaunch);
332  setFlag(MemSync);
333  setFlag(Scalar);
334  setFlag(GlobalSegment);
335  }
336 
337  void
338  execute(GPUDynInstPtr gpuDynInst) override
339  {
340  fatal("kernel launch instruction should not be executed\n");
341  }
342 
343  void
345  {
347  }
348 
349  void initOperandInfo() override { return; }
350  int getNumOperands() override { return 0; }
351  bool isFlatScratchRegister(int opIdx) override { return false; }
352  // return true if the Execute mask is explicitly used as a source
353  // register operand
354  bool isExecMaskRegister(int opIdx) override { return false; }
355  int getOperandSize(int operandIndex) override { return 0; }
356 
357  int numDstRegOperands() override { return 0; }
358  int numSrcRegOperands() override { return 0; }
359  int instSize() const override { return 0; }
360 };
361 
362 } // namespace gem5
363 
364 #endif // __GPU_STATIC_INST_HH__
gem5::statistics::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:1929
gem5::GPUStaticInst::initDynOperandInfo
void initDynOperandInfo(Wavefront *wf, ComputeUnit *cu)
Definition: gpu_static_inst.cc:58
gem5::GPUStaticInst::ipdInstNum
void ipdInstNum(int num)
Definition: gpu_static_inst.hh:74
gem5::GPUStaticInst::isReturn
bool isReturn() const
Definition: gpu_static_inst.hh:112
gem5::GPUStaticInst::dynamic_id_count
static uint64_t dynamic_id_count
Definition: gpu_static_inst.hh:239
fatal
#define fatal(...)
This implements a cprintf based fatal() function.
Definition: logging.hh:200
gem5::GPUStaticInst::isAtomicMin
bool isAtomicMin() const
Definition: gpu_static_inst.hh:168
gem5::GPUStaticInst::isDPPInst
bool isDPPInst() const
Definition: gpu_static_inst.hh:116
gem5::GPUStaticInst::isAtomicInc
bool isAtomicInc() const
Definition: gpu_static_inst.hh:165
gem5::GPUStaticInst::numSrcVecOperands
int numSrcVecOperands()
Definition: gpu_static_inst.cc:111
gem5::GPUStaticInst::GPUStaticInst
GPUStaticInst(const std::string &opcode)
Definition: gpu_static_inst.cc:39
gem5::GPUStaticInst::DST_VEC
@ DST_VEC
Definition: gpu_static_inst.hh:295
gem5::GPUStaticInst::isMAD
bool isMAD() const
Definition: gpu_static_inst.hh:219
gem5::GPUStaticInst::instAddr
int instAddr() const
Definition: gpu_static_inst.hh:67
gem5::GPUStaticInst::numSrcRegOperands
virtual int numSrcRegOperands()=0
gem5::SparcISA::Nop
Nop class.
Definition: nop.hh:48
gem5::GPUStaticInst::isAtomicMax
bool isAtomicMax() const
Definition: gpu_static_inst.hh:167
gem5::GPUStaticInst::isAtomicExch
bool isAtomicExch() const
Definition: gpu_static_inst.hh:162
gem5::GPUStaticInst::isNop
bool isNop() const
Definition: gpu_static_inst.hh:111
gem5::GPUStaticInst::_flags
std::bitset< Num_Flags > _flags
Definition: gpu_static_inst.hh:322
gem5::GPUStaticInst::isFlat
bool isFlat() const
Definition: gpu_static_inst.hh:131
gem5::GPUStaticInst::writesEXEC
bool writesEXEC() const
Definition: gpu_static_inst.hh:153
gem5::GPUStaticInst::disassemble
const std::string & disassemble()
Definition: gpu_static_inst.cc:47
gem5::GPUStaticInst::_instNum
int _instNum
Definition: gpu_static_inst.hh:300
gem5::GPUStaticInst::isScalar
bool isScalar() const
Definition: gpu_static_inst.hh:145
gem5::Wavefront
Definition: wavefront.hh:60
gem5::GPUStaticInst::disassembly
std::string disassembly
Definition: gpu_static_inst.hh:299
gem5::GPUStaticInst::srcOps
std::vector< OperandInfo > srcOps
Definition: gpu_static_inst.hh:302
gem5::GPUStaticInst::isAtomicNoRet
bool isAtomicNoRet() const
Definition: gpu_static_inst.hh:142
gem5::GPUStaticInst::isGroupSeg
bool isGroupSeg() const
Definition: gpu_static_inst.hh:192
gem5::GPUStaticInst::initiateAcc
virtual void initiateAcc(GPUDynInstPtr gpuDynInst)
Definition: gpu_static_inst.hh:225
gem5::GPUStaticInst::srcVecDWords
int srcVecDWords
Definition: gpu_static_inst.hh:306
misc.hh
gem5::GPUStaticInst::isWaitcnt
bool isWaitcnt() const
Definition: gpu_static_inst.hh:125
gem5::KernelLaunchStaticInst::generateDisassembly
void generateDisassembly() override
Definition: gpu_static_inst.hh:344
gem5::GPUStaticInst::writesVCC
bool writesVCC() const
Definition: gpu_static_inst.hh:149
gem5::GPUStaticInst::executed_as
enums::StorageClassType executed_as
Definition: gpu_static_inst.hh:242
gem5::GPUStaticInst::srcScalarRegOperands
const std::vector< OperandInfo > & srcScalarRegOperands() const
Definition: gpu_static_inst.hh:281
std::vector
STL vector class.
Definition: stl.hh:37
gem5::GPUStaticInst::isMemSync
bool isMemSync() const
Definition: gpu_static_inst.hh:129
gem5::GPUStaticInst::dstVecRegOperands
const std::vector< OperandInfo > & dstVecRegOperands() const
Definition: gpu_static_inst.hh:275
gem5::GPUStaticInst::isFlatGlobal
bool isFlatGlobal() const
Definition: gpu_static_inst.hh:132
gem5::GPUStaticInst::isSDWAInst
bool isSDWAInst() const
Definition: gpu_static_inst.hh:115
gem5::GPUStaticInst::nextInstAddr
int nextInstAddr() const
Definition: gpu_static_inst.hh:68
gem5::GPUStaticInst::isFMA
bool isFMA() const
Definition: gpu_static_inst.hh:217
gem5::GPUStaticInst
Definition: gpu_static_inst.hh:61
gem5::KernelLaunchStaticInst::initOperandInfo
void initOperandInfo() override
Definition: gpu_static_inst.hh:349
gem5::GPUStaticInst::isGloballyCoherent
bool isGloballyCoherent() const
Coherence domain of a memory instruction.
Definition: gpu_static_inst.hh:208
gem5::GPUStaticInst::SRC_VEC
@ SRC_VEC
Definition: gpu_static_inst.hh:295
gem5::GPUStaticInst::numDstVecOperands
int numDstVecOperands()
Definition: gpu_static_inst.cc:117
wavefront.hh
gem5::KernelLaunchStaticInst::isFlatScratchRegister
bool isFlatScratchRegister(int opIdx) override
Definition: gpu_static_inst.hh:351
gem5::GPUStaticInst::instNum
void instNum(int num)
Definition: gpu_static_inst.hh:70
gem5::GPUStaticInst::isStore
bool isStore() const
Definition: gpu_static_inst.hh:134
gem5::GPUStaticInst::isALU
bool isALU() const
Definition: gpu_static_inst.hh:108
gem5::GPUStaticInst::srcScalarRegOps
std::vector< OperandInfo > srcScalarRegOps
Definition: gpu_static_inst.hh:314
Nop
def format Nop(code, *opt_flags)
Definition: nop.cc:82
gem5::GPUStaticInst::isAtomicRet
bool isAtomicRet() const
Definition: gpu_static_inst.hh:143
gem5::GPUStaticInst::opcode
const std::string & opcode() const
Definition: gpu_static_inst.hh:263
gem5::GPUStaticInst::isEndOfKernel
bool isEndOfKernel() const
Definition: gpu_static_inst.hh:113
gem5::ComputeUnit
Definition: compute_unit.hh:201
gem5::Flags
Wrapper that groups a few flag bits under the same undelying container.
Definition: flags.hh:44
gem5::GPUStaticInst::readsMode
bool readsMode() const
Definition: gpu_static_inst.hh:154
gem5::GPUStaticInst::DST_SCALAR
@ DST_SCALAR
Definition: gpu_static_inst.hh:295
gem5::GPUStaticInst::isBarrier
bool isBarrier() const
Definition: gpu_static_inst.hh:128
gem5::GPUStaticInst::isF16
bool isF16() const
Definition: gpu_static_inst.hh:212
gem5::GPUStaticInst::numDstScalarDWords
int numDstScalarDWords()
Definition: gpu_static_inst.cc:182
gem5::MipsISA::float_reg::F16
constexpr RegId F16
Definition: float.hh:115
gem5::GPUStaticInst::isBranch
bool isBranch() const
Definition: gpu_static_inst.hh:109
gem5::GPUStaticInst::isFlatScratchRegister
virtual bool isFlatScratchRegister(int opIdx)=0
gem5::GPUStaticInst::execute
virtual void execute(GPUDynInstPtr gpuDynInst)=0
gem5::GPUStaticInst::isAtomicSub
bool isAtomicSub() const
Definition: gpu_static_inst.hh:164
gem5::GPUStaticInst::maxOperandSize
int maxOperandSize()
Definition: gpu_static_inst.cc:197
gem5::RiscvISA::Load
Definition: mem.hh:56
gem5::GPUStaticInst::writesMode
bool writesMode() const
Definition: gpu_static_inst.hh:155
gem5::GPUStaticInst::getNumOperands
virtual int getNumOperands()=0
gem5::GPUStaticInst::srcLiteral
virtual TheGpuISA::ScalarRegU32 srcLiteral() const
Definition: gpu_static_inst.hh:78
gem5::GPUStaticInst::numDstVecDWords
int numDstVecDWords()
Definition: gpu_static_inst.cc:139
gem5::GPUStaticInst::isAtomicDec
bool isAtomicDec() const
Definition: gpu_static_inst.hh:166
gem5::GPUStaticInst::srcVecRegOperands
const std::vector< OperandInfo > & srcVecRegOperands() const
Definition: gpu_static_inst.hh:269
gem5::GPUStaticInst::dstOps
std::vector< OperandInfo > dstOps
Definition: gpu_static_inst.hh:303
gem5::KernelLaunchStaticInst::KernelLaunchStaticInst
KernelLaunchStaticInst()
Definition: gpu_static_inst.hh:328
gpu_dyn_inst.hh
gem5::GPUStaticInst::dstScalarRegOperands
const std::vector< OperandInfo > & dstScalarRegOperands() const
Definition: gpu_static_inst.hh:287
gem5::GPUStaticInst::isMAC
bool isMAC() const
Definition: gpu_static_inst.hh:218
gem5::GPUStaticInst::numDstScalarOperands
int numDstScalarOperands()
Definition: gpu_static_inst.cc:161
gem5::GPUStaticInst::isAtomicCAS
bool isAtomicCAS() const
Definition: gpu_static_inst.hh:161
gem5::GPUStaticInst::instSize
virtual int instSize() const =0
gem5::KernelLaunchStaticInst::getNumOperands
int getNumOperands() override
Definition: gpu_static_inst.hh:350
gem5::GPUStaticInst::isReadOnlySeg
bool isReadOnlySeg() const
Definition: gpu_static_inst.hh:195
gem5::GPUStaticInst::numSrcScalarDWords
int numSrcScalarDWords()
Definition: gpu_static_inst.cc:167
gem5::KernelLaunchStaticInst::execute
void execute(GPUDynInstPtr gpuDynInst) override
Definition: gpu_static_inst.hh:338
gem5::GPUStaticInst::generateDisassembly
virtual void generateDisassembly()=0
gem5::GPUStaticInst::_ipdInstNum
int _ipdInstNum
Identifier of the immediate post-dominator instruction.
Definition: gpu_static_inst.hh:320
gem5::GPUStaticInst::readsVCC
bool readsVCC() const
Definition: gpu_static_inst.hh:148
gem5::GPUStaticInst::MapRegFn
int(RegisterManager::* MapRegFn)(Wavefront *, int)
Definition: gpu_static_inst.hh:294
gem5::GPUStaticInst::isLoad
bool isLoad() const
Definition: gpu_static_inst.hh:133
gem5::GPUStaticInst::OpType
OpType
Definition: gpu_static_inst.hh:295
gem5::GPUStaticInst::srcOperands
const std::vector< OperandInfo > & srcOperands() const
Definition: gpu_static_inst.hh:265
gem5::GPUDynInstPtr
std::shared_ptr< GPUDynInst > GPUDynInstPtr
Definition: misc.hh:49
gem5::GPUStaticInst::isKernArgSeg
bool isKernArgSeg() const
Definition: gpu_static_inst.hh:193
gem5::GPUStaticInst::_instAddr
int _instAddr
Definition: gpu_static_inst.hh:301
gem5::GPUStaticInst::dstOperands
const std::vector< OperandInfo > & dstOperands() const
Definition: gpu_static_inst.hh:266
gem5::GPUStaticInst::getTargetPc
virtual uint32_t getTargetPc()
Definition: gpu_static_inst.hh:237
gem5::GPUStaticInst::isAtomicAdd
bool isAtomicAdd() const
Definition: gpu_static_inst.hh:163
gem5::GPUStaticInst::isUnconditionalJump
bool isUnconditionalJump() const
Definition: gpu_static_inst.hh:119
gem5::GPUStaticInst::isKernelLaunch
bool isKernelLaunch() const
Definition: gpu_static_inst.hh:114
gem5::GPUStaticInst::isF32
bool isF32() const
Definition: gpu_static_inst.hh:213
gem5::RiscvISA::Store
Definition: mem.hh:65
gem5::GPUStaticInst::isF64
bool isF64() const
Definition: gpu_static_inst.hh:214
gem5::KernelLaunchStaticInst::numDstRegOperands
int numDstRegOperands() override
Definition: gpu_static_inst.hh:357
gem5::GPUStaticInst::instNum
int instNum()
Definition: gpu_static_inst.hh:72
gem5::GPUStaticInst::writesSCC
bool writesSCC() const
Definition: gpu_static_inst.hh:147
gem5::KernelLaunchStaticInst::getOperandSize
int getOperandSize(int operandIndex) override
Definition: gpu_static_inst.hh:355
gem5::GPUStaticInst::_opcode
const std::string _opcode
Definition: gpu_static_inst.hh:298
gem5::GPUStaticInst::isSpillSeg
bool isSpillSeg() const
Definition: gpu_static_inst.hh:196
gem5::KernelLaunchStaticInst::numSrcRegOperands
int numSrcRegOperands() override
Definition: gpu_static_inst.hh:358
gem5::KernelLaunchStaticInst::instSize
int instSize() const override
Definition: gpu_static_inst.hh:359
gem5::GPUStaticInst::isSystemCoherent
bool isSystemCoherent() const
Definition: gpu_static_inst.hh:209
gem5::SparcISA::Branch
Base class for branch operations.
Definition: branch.hh:48
gem5::GPUStaticInst::isAtomicOr
bool isAtomicOr() const
Definition: gpu_static_inst.hh:159
gem5::GPUStaticInst::numSrcScalarOperands
int numSrcScalarOperands()
Definition: gpu_static_inst.cc:155
gem5::GPUStaticInst::SRC_SCALAR
@ SRC_SCALAR
Definition: gpu_static_inst.hh:295
gem5::GPUStaticInst::isGlobalMem
bool isGlobalMem() const
Definition: gpu_static_inst.hh:177
gem5::GPUStaticInst::readsEXEC
bool readsEXEC() const
Definition: gpu_static_inst.hh:152
gem5::GPUStaticInst::ipdInstNum
int ipdInstNum() const
Definition: gpu_static_inst.hh:76
gem5::GPUStaticInst::srcScalarDWords
int srcScalarDWords
Definition: gpu_static_inst.hh:308
gem5::KernelLaunchStaticInst::isExecMaskRegister
bool isExecMaskRegister(int opIdx) override
Definition: gpu_static_inst.hh:354
gem5::GPUStaticInst::dstScalarRegOps
std::vector< OperandInfo > dstScalarRegOps
Definition: gpu_static_inst.hh:315
gem5::GPUStaticInst::~GPUStaticInst
virtual ~GPUStaticInst()
Definition: gpu_static_inst.hh:65
gem5::GPUStaticInst::isMemRef
bool isMemRef() const
Definition: gpu_static_inst.hh:130
gem5::GPUStaticInst::isAtomicXor
bool isAtomicXor() const
Definition: gpu_static_inst.hh:160
gem5::GPUStaticInst::dstScalarDWords
int dstScalarDWords
Definition: gpu_static_inst.hh:309
gem5::RegisterManager
Definition: register_manager.hh:57
gem5::GPUStaticInst::isAtomic
bool isAtomic() const
Definition: gpu_static_inst.hh:137
gem5::GPUStaticInst::isArgLoad
bool isArgLoad() const
Definition: gpu_static_inst.hh:171
gem5::GPUStaticInst::numSrcVecDWords
int numSrcVecDWords()
Definition: gpu_static_inst.cc:123
gem5::GPUStaticInst::dstVecRegOps
std::vector< OperandInfo > dstVecRegOps
Definition: gpu_static_inst.hh:313
gem5::GPUStaticInst::getOperandSize
virtual int getOperandSize(int operandIndex)=0
gem5::GPUStaticInst::isAtomicAnd
bool isAtomicAnd() const
Definition: gpu_static_inst.hh:158
gem5::GPUStaticInst::readsSCC
bool readsSCC() const
Definition: gpu_static_inst.hh:146
gem5::GPUStaticInst::dstVecDWords
int dstVecDWords
Definition: gpu_static_inst.hh:307
gem5::GPUStaticInst::isArgSeg
bool isArgSeg() const
Definition: gpu_static_inst.hh:190
gem5::GPUStaticInst::initOperandInfo
virtual void initOperandInfo()=0
gem5::GPUStaticInst::completeAcc
virtual void completeAcc(GPUDynInstPtr gpuDynInst)
Definition: gpu_static_inst.hh:232
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::GPUStaticInst::coalescerTokenCount
virtual int coalescerTokenCount() const
Definition: gpu_static_inst.hh:106
gem5::GPUStaticInst::instAddr
void instAddr(int inst_addr)
Definition: gpu_static_inst.hh:66
gem5::GPUStaticInst::isExecMaskRegister
virtual bool isExecMaskRegister(int opIdx)=0
operand_info.hh
gem5::GPUStaticInst::isSpecialOp
bool isSpecialOp() const
Definition: gpu_static_inst.hh:124
gem5::KernelLaunchStaticInst
Definition: gpu_static_inst.hh:325
gem5::GPUStaticInst::isPrivateSeg
bool isPrivateSeg() const
Definition: gpu_static_inst.hh:194
gem5::GPUStaticInst::ignoreExec
bool ignoreExec() const
Definition: gpu_static_inst.hh:156
gem5::GPUStaticInst::isLocalMem
bool isLocalMem() const
Definition: gpu_static_inst.hh:185
gem5::GPUStaticInst::numDstRegOperands
virtual int numDstRegOperands()=0
gem5::Gcn3ISA::ScalarRegU32
uint32_t ScalarRegU32
Definition: gpu_registers.hh:153
gem5::GPUStaticInst::srcVecRegOps
std::vector< OperandInfo > srcVecRegOps
Definition: gpu_static_inst.hh:312
gem5::GPUStaticInst::isSleep
bool isSleep() const
Definition: gpu_static_inst.hh:126
gem5::GPUStaticInst::isGlobalSeg
bool isGlobalSeg() const
Definition: gpu_static_inst.hh:191
gem5::GPUStaticInst::setFlag
void setFlag(Flags flag)
Definition: gpu_static_inst.hh:244
gem5::GPUStaticInst::maxOpSize
int maxOpSize
Definition: gpu_static_inst.hh:310
gem5::GPUStaticInst::isCondBranch
bool isCondBranch() const
Definition: gpu_static_inst.hh:110

Generated on Sun Jul 30 2023 01:56:33 for gem5 by doxygen 1.8.17