gem5  v21.0.1.0
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  * For use for simulation and test purposes only
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice,
11  * this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright notice,
14  * this list of conditions and the following disclaimer in the documentation
15  * and/or other materials provided with the distribution.
16  *
17  * 3. Neither the name of the copyright holder nor the names of its
18  * contributors may be used to endorse or promote products derived from this
19  * software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 #ifndef __GPU_STATIC_INST_HH__
35 #define __GPU_STATIC_INST_HH__
36 
37 /*
38  * @file gpu_static_inst.hh
39  *
40  * Defines the base class representing static instructions for the GPU. The
41  * instructions are "static" because they contain no dynamic instruction
42  * information. GPUStaticInst corresponds to the StaticInst class for the CPU
43  * models.
44  */
45 
46 #include <cstdint>
47 #include <string>
48 
49 #include "enums/GPUStaticInstFlags.hh"
50 #include "enums/StorageClassType.hh"
52 #include "gpu-compute/misc.hh"
53 
54 class BaseOperand;
55 class BaseRegOperand;
56 class Wavefront;
57 
58 class GPUStaticInst : public GPUStaticInstFlags
59 {
60  public:
61  GPUStaticInst(const std::string &opcode);
62  virtual ~GPUStaticInst() { }
63  void instAddr(int inst_addr) { _instAddr = inst_addr; }
64  int instAddr() const { return _instAddr; }
65  int nextInstAddr() const { return _instAddr + instSize(); }
66 
67  void instNum(int num) { _instNum = num; }
68 
69  int instNum() { return _instNum; }
70 
71  void ipdInstNum(int num) { _ipdInstNum = num; }
72 
73  int ipdInstNum() const { return _ipdInstNum; }
74 
75  virtual TheGpuISA::ScalarRegU32 srcLiteral() const { return 0; }
76 
77  virtual void execute(GPUDynInstPtr gpuDynInst) = 0;
78  virtual void generateDisassembly() = 0;
79  const std::string& disassemble();
80  virtual int getNumOperands() = 0;
81  virtual bool isScalarRegister(int operandIndex) = 0;
82  virtual bool isVectorRegister(int operandIndex) = 0;
83  virtual bool isSrcOperand(int operandIndex) = 0;
84  virtual bool isDstOperand(int operandIndex) = 0;
85  virtual bool isFlatScratchRegister(int opIdx) = 0;
86  virtual bool isExecMaskRegister(int opIdx) = 0;
87  virtual int getOperandSize(int operandIndex) = 0;
88 
89  virtual int getRegisterIndex(int operandIndex,
90  GPUDynInstPtr gpuDynInst) = 0;
91 
92  virtual int numDstRegOperands() = 0;
93  virtual int numSrcRegOperands() = 0;
94 
95  virtual int coalescerTokenCount() const { return 0; }
96 
97  int numDstVecOperands();
98  int numSrcVecOperands();
99  int numDstVecDWORDs();
100  int numSrcVecDWORDs();
101 
102  int numOpdDWORDs(int operandIdx);
103 
104  bool isALU() const { return _flags[ALU]; }
105  bool isBranch() const { return _flags[Branch]; }
106  bool isCondBranch() const { return _flags[CondBranch]; }
107  bool isNop() const { return _flags[Nop]; }
108  bool isReturn() const { return _flags[Return]; }
109  bool isEndOfKernel() const { return _flags[EndOfKernel]; }
110  bool isKernelLaunch() const { return _flags[KernelLaunch]; }
111  bool isSDWAInst() const { return _flags[IsSDWA]; }
112  bool isDPPInst() const { return _flags[IsDPP]; }
113 
114  bool
116  {
117  return _flags[UnconditionalJump];
118  }
119 
120  bool isSpecialOp() const { return _flags[SpecialOp]; }
121  bool isWaitcnt() const { return _flags[Waitcnt]; }
122  bool isSleep() const { return _flags[Sleep]; }
123 
124  bool isBarrier() const { return _flags[MemBarrier]; }
125  bool isMemSync() const { return _flags[MemSync]; }
126  bool isMemRef() const { return _flags[MemoryRef]; }
127  bool isFlat() const { return _flags[Flat]; }
128  bool isLoad() const { return _flags[Load]; }
129  bool isStore() const { return _flags[Store]; }
130 
131  bool
132  isAtomic() const
133  {
134  return _flags[AtomicReturn] || _flags[AtomicNoReturn];
135  }
136 
137  bool isAtomicNoRet() const { return _flags[AtomicNoReturn]; }
138  bool isAtomicRet() const { return _flags[AtomicReturn]; }
139 
140  bool isScalar() const { return _flags[Scalar]; }
141  bool readsSCC() const { return _flags[ReadsSCC]; }
142  bool writesSCC() const { return _flags[WritesSCC]; }
143  bool readsVCC() const { return _flags[ReadsVCC]; }
144  bool writesVCC() const { return _flags[WritesVCC]; }
145  // Identify instructions that implicitly read the Execute mask
146  // as a source operand but not to dictate which threads execute.
147  bool readsEXEC() const { return _flags[ReadsEXEC]; }
148  bool writesEXEC() const { return _flags[WritesEXEC]; }
149  bool readsMode() const { return _flags[ReadsMode]; }
150  bool writesMode() const { return _flags[WritesMode]; }
151  bool ignoreExec() const { return _flags[IgnoreExec]; }
152 
153  bool isAtomicAnd() const { return _flags[AtomicAnd]; }
154  bool isAtomicOr() const { return _flags[AtomicOr]; }
155  bool isAtomicXor() const { return _flags[AtomicXor]; }
156  bool isAtomicCAS() const { return _flags[AtomicCAS]; }
157  bool isAtomicExch() const { return _flags[AtomicExch]; }
158  bool isAtomicAdd() const { return _flags[AtomicAdd]; }
159  bool isAtomicSub() const { return _flags[AtomicSub]; }
160  bool isAtomicInc() const { return _flags[AtomicInc]; }
161  bool isAtomicDec() const { return _flags[AtomicDec]; }
162  bool isAtomicMax() const { return _flags[AtomicMax]; }
163  bool isAtomicMin() const { return _flags[AtomicMin]; }
164 
165  bool
166  isArgLoad() const
167  {
168  return (_flags[KernArgSegment] || _flags[ArgSegment]) && _flags[Load];
169  }
170 
171  bool
172  isGlobalMem() const
173  {
174  return _flags[MemoryRef] && (_flags[GlobalSegment] ||
175  _flags[PrivateSegment] || _flags[ReadOnlySegment] ||
176  _flags[SpillSegment]);
177  }
178 
179  bool
180  isLocalMem() const
181  {
182  return _flags[MemoryRef] && _flags[GroupSegment];
183  }
184 
185  bool isArgSeg() const { return _flags[ArgSegment]; }
186  bool isGlobalSeg() const { return _flags[GlobalSegment]; }
187  bool isGroupSeg() const { return _flags[GroupSegment]; }
188  bool isKernArgSeg() const { return _flags[KernArgSegment]; }
189  bool isPrivateSeg() const { return _flags[PrivateSegment]; }
190  bool isReadOnlySeg() const { return _flags[ReadOnlySegment]; }
191  bool isSpillSeg() const { return _flags[SpillSegment]; }
192 
203  bool isGloballyCoherent() const { return _flags[GloballyCoherent]; }
204  bool isSystemCoherent() const { return _flags[SystemCoherent]; }
205 
206  // Floating-point instructions
207  bool isF16() const { return _flags[F16]; }
208  bool isF32() const { return _flags[F32]; }
209  bool isF64() const { return _flags[F64]; }
210 
211  // FMA, MAC, MAD instructions
212  bool isFMA() const { return _flags[FMA]; }
213  bool isMAC() const { return _flags[MAC]; }
214  bool isMAD() const { return _flags[MAD]; }
215 
216  virtual int instSize() const = 0;
217 
218  // only used for memory instructions
219  virtual void
221  {
222  fatal("calling initiateAcc() on a non-memory instruction.\n");
223  }
224 
225  // only used for memory instructions
226  virtual void
228  {
229  fatal("calling completeAcc() on a non-memory instruction.\n");
230  }
231 
232  virtual uint32_t getTargetPc() { return 0; }
233 
234  static uint64_t dynamic_id_count;
235 
236  // For flat memory accesses
237  Enums::StorageClassType executed_as;
238 
239  void setFlag(Flags flag) {
240  _flags[flag] = true;
241 
242  if (isGroupSeg()) {
243  executed_as = Enums::SC_GROUP;
244  } else if (isGlobalSeg()) {
245  executed_as = Enums::SC_GLOBAL;
246  } else if (isPrivateSeg()) {
247  executed_as = Enums::SC_PRIVATE;
248  } else if (isSpillSeg()) {
249  executed_as = Enums::SC_SPILL;
250  } else if (isReadOnlySeg()) {
251  executed_as = Enums::SC_READONLY;
252  } else if (isKernArgSeg()) {
253  executed_as = Enums::SC_KERNARG;
254  } else if (isArgSeg()) {
255  executed_as = Enums::SC_ARG;
256  }
257  }
258  const std::string& opcode() const { return _opcode; }
259 
260  protected:
261  const std::string _opcode;
262  std::string disassembly;
263  int _instNum;
273 
274  std::bitset<Num_Flags> _flags;
275 };
276 
278 {
279  public:
281  {
282  setFlag(Nop);
283  setFlag(KernelLaunch);
284  setFlag(MemSync);
285  setFlag(Scalar);
286  setFlag(GlobalSegment);
287  }
288 
289  void
290  execute(GPUDynInstPtr gpuDynInst) override
291  {
292  fatal("kernel launch instruction should not be executed\n");
293  }
294 
295  void
297  {
299  }
300 
301  int getNumOperands() override { return 0; }
302  bool isFlatScratchRegister(int opIdx) override { return false; }
303  // return true if the Execute mask is explicitly used as a source
304  // register operand
305  bool isExecMaskRegister(int opIdx) override { return false; }
306  bool isScalarRegister(int operandIndex) override { return false; }
307  bool isVectorRegister(int operandIndex) override { return false; }
308  bool isSrcOperand(int operandIndex) override { return false; }
309  bool isDstOperand(int operandIndex) override { return false; }
310  int getOperandSize(int operandIndex) override { return 0; }
311 
312  int
313  getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst) override
314  {
315  return 0;
316  }
317 
318  int numDstRegOperands() override { return 0; }
319  int numSrcRegOperands() override { return 0; }
320  int instSize() const override { return 0; }
321 };
322 
323 #endif // __GPU_STATIC_INST_HH__
GPUStaticInst::isAtomicExch
bool isAtomicExch() const
Definition: gpu_static_inst.hh:157
fatal
#define fatal(...)
This implements a cprintf based fatal() function.
Definition: logging.hh:183
GPUStaticInst::readsMode
bool readsMode() const
Definition: gpu_static_inst.hh:149
GPUStaticInst::writesVCC
bool writesVCC() const
Definition: gpu_static_inst.hh:144
KernelLaunchStaticInst::isFlatScratchRegister
bool isFlatScratchRegister(int opIdx) override
Definition: gpu_static_inst.hh:302
GPUStaticInst::isLoad
bool isLoad() const
Definition: gpu_static_inst.hh:128
GPUStaticInst::instNum
int instNum()
Definition: gpu_static_inst.hh:69
GPUStaticInst::nextInstAddr
int nextInstAddr() const
Definition: gpu_static_inst.hh:65
GPUStaticInst::_instNum
int _instNum
Definition: gpu_static_inst.hh:263
GPUStaticInst::numSrcVecOperands
int numSrcVecOperands()
Definition: gpu_static_inst.cc:55
GPUStaticInst::readsSCC
bool readsSCC() const
Definition: gpu_static_inst.hh:141
KernelLaunchStaticInst::instSize
int instSize() const override
Definition: gpu_static_inst.hh:320
GPUStaticInst::isAtomicXor
bool isAtomicXor() const
Definition: gpu_static_inst.hh:155
GPUStaticInst::coalescerTokenCount
virtual int coalescerTokenCount() const
Definition: gpu_static_inst.hh:95
GPUStaticInst::~GPUStaticInst
virtual ~GPUStaticInst()
Definition: gpu_static_inst.hh:62
GPUStaticInst::isEndOfKernel
bool isEndOfKernel() const
Definition: gpu_static_inst.hh:109
GPUStaticInst::isSystemCoherent
bool isSystemCoherent() const
Definition: gpu_static_inst.hh:204
GPUStaticInst::readsVCC
bool readsVCC() const
Definition: gpu_static_inst.hh:143
GPUStaticInst::isAtomicInc
bool isAtomicInc() const
Definition: gpu_static_inst.hh:160
GPUStaticInst::numSrcRegOperands
virtual int numSrcRegOperands()=0
Flags
Wrapper that groups a few flag bits under the same undelying container.
Definition: flags.hh:41
GPUStaticInst::isMAC
bool isMAC() const
Definition: gpu_static_inst.hh:213
GPUStaticInst::isALU
bool isALU() const
Definition: gpu_static_inst.hh:104
GPUStaticInst::isF32
bool isF32() const
Definition: gpu_static_inst.hh:208
GPUStaticInst::getNumOperands
virtual int getNumOperands()=0
GPUStaticInst::GPUStaticInst
GPUStaticInst(const std::string &opcode)
Definition: gpu_static_inst.cc:36
misc.hh
GPUStaticInst::isKernelLaunch
bool isKernelLaunch() const
Definition: gpu_static_inst.hh:110
GPUStaticInst::numOpdDWORDs
int numOpdDWORDs(int operandIdx)
Definition: gpu_static_inst.cc:125
GPUStaticInst::isFMA
bool isFMA() const
Definition: gpu_static_inst.hh:212
GPUStaticInst::setFlag
void setFlag(Flags flag)
Definition: gpu_static_inst.hh:239
KernelLaunchStaticInst::generateDisassembly
void generateDisassembly() override
Definition: gpu_static_inst.hh:296
GPUStaticInst::srcLiteral
virtual TheGpuISA::ScalarRegU32 srcLiteral() const
Definition: gpu_static_inst.hh:75
GPUStaticInst::isArgLoad
bool isArgLoad() const
Definition: gpu_static_inst.hh:166
GPUStaticInst::executed_as
Enums::StorageClassType executed_as
Definition: gpu_static_inst.hh:237
GPUStaticInst::isStore
bool isStore() const
Definition: gpu_static_inst.hh:129
GPUStaticInst::isAtomic
bool isAtomic() const
Definition: gpu_static_inst.hh:132
KernelLaunchStaticInst::isDstOperand
bool isDstOperand(int operandIndex) override
Definition: gpu_static_inst.hh:309
KernelLaunchStaticInst::isSrcOperand
bool isSrcOperand(int operandIndex) override
Definition: gpu_static_inst.hh:308
GPUStaticInst::isAtomicAnd
bool isAtomicAnd() const
Definition: gpu_static_inst.hh:153
GPUStaticInst::getRegisterIndex
virtual int getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst)=0
GPUStaticInst::isGroupSeg
bool isGroupSeg() const
Definition: gpu_static_inst.hh:187
GPUStaticInst::_instAddr
int _instAddr
Definition: gpu_static_inst.hh:264
KernelLaunchStaticInst
Definition: gpu_static_inst.hh:277
GPUStaticInst::disassemble
const std::string & disassemble()
Definition: gpu_static_inst.cc:44
GPUStaticInst::numDstRegOperands
virtual int numDstRegOperands()=0
GPUStaticInst::_opcode
const std::string _opcode
Definition: gpu_static_inst.hh:261
GPUStaticInst::isVectorRegister
virtual bool isVectorRegister(int operandIndex)=0
GPUStaticInst::isFlat
bool isFlat() const
Definition: gpu_static_inst.hh:127
GPUStaticInst::disassembly
std::string disassembly
Definition: gpu_static_inst.hh:262
GPUStaticInst::opcode
const std::string & opcode() const
Definition: gpu_static_inst.hh:258
Nop
def format Nop(code, *opt_flags)
Definition: nop.cc:82
GPUStaticInst::execute
virtual void execute(GPUDynInstPtr gpuDynInst)=0
GPUStaticInst::isDPPInst
bool isDPPInst() const
Definition: gpu_static_inst.hh:112
GPUStaticInst::isExecMaskRegister
virtual bool isExecMaskRegister(int opIdx)=0
GPUStaticInst::initiateAcc
virtual void initiateAcc(GPUDynInstPtr gpuDynInst)
Definition: gpu_static_inst.hh:220
GPUStaticInst::isSpillSeg
bool isSpillSeg() const
Definition: gpu_static_inst.hh:191
GPUStaticInst::isMemRef
bool isMemRef() const
Definition: gpu_static_inst.hh:126
GPUStaticInst::_flags
std::bitset< Num_Flags > _flags
Definition: gpu_static_inst.hh:274
GPUStaticInst::instAddr
void instAddr(int inst_addr)
Definition: gpu_static_inst.hh:63
GPUStaticInst::isAtomicRet
bool isAtomicRet() const
Definition: gpu_static_inst.hh:138
GPUStaticInst::isDstOperand
virtual bool isDstOperand(int operandIndex)=0
GPUStaticInst::dstVecDWORDs
int dstVecDWORDs
Definition: gpu_static_inst.hh:268
GPUStaticInst::isBarrier
bool isBarrier() const
Definition: gpu_static_inst.hh:124
GPUStaticInst::isMemSync
bool isMemSync() const
Definition: gpu_static_inst.hh:125
GPUStaticInst::isAtomicCAS
bool isAtomicCAS() const
Definition: gpu_static_inst.hh:156
GPUStaticInst::isSrcOperand
virtual bool isSrcOperand(int operandIndex)=0
GPUStaticInst::isReturn
bool isReturn() const
Definition: gpu_static_inst.hh:108
KernelLaunchStaticInst::isExecMaskRegister
bool isExecMaskRegister(int opIdx) override
Definition: gpu_static_inst.hh:305
GPUStaticInst::isUnconditionalJump
bool isUnconditionalJump() const
Definition: gpu_static_inst.hh:115
GPUStaticInst::isArgSeg
bool isArgSeg() const
Definition: gpu_static_inst.hh:185
GPUStaticInst::isF16
bool isF16() const
Definition: gpu_static_inst.hh:207
GPUStaticInst::isFlatScratchRegister
virtual bool isFlatScratchRegister(int opIdx)=0
GPUStaticInst::isScalarRegister
virtual bool isScalarRegister(int operandIndex)=0
gpu_dyn_inst.hh
GPUStaticInst::isGloballyCoherent
bool isGloballyCoherent() const
Coherence domain of a memory instruction.
Definition: gpu_static_inst.hh:203
GPUStaticInst::numDstVecOperands
int numDstVecOperands()
Definition: gpu_static_inst.cc:71
GPUStaticInst::dynamic_id_count
static uint64_t dynamic_id_count
Definition: gpu_static_inst.hh:234
GPUStaticInst::isAtomicMin
bool isAtomicMin() const
Definition: gpu_static_inst.hh:163
GPUStaticInst::ipdInstNum
void ipdInstNum(int num)
Definition: gpu_static_inst.hh:71
GPUStaticInst::isGlobalSeg
bool isGlobalSeg() const
Definition: gpu_static_inst.hh:186
GPUStaticInst::writesEXEC
bool writesEXEC() const
Definition: gpu_static_inst.hh:148
GPUStaticInst::readsEXEC
bool readsEXEC() const
Definition: gpu_static_inst.hh:147
KernelLaunchStaticInst::getNumOperands
int getNumOperands() override
Definition: gpu_static_inst.hh:301
GPUStaticInst
Definition: gpu_static_inst.hh:58
GPUStaticInst::isAtomicAdd
bool isAtomicAdd() const
Definition: gpu_static_inst.hh:158
GPUStaticInst::getOperandSize
virtual int getOperandSize(int operandIndex)=0
GPUStaticInst::isNop
bool isNop() const
Definition: gpu_static_inst.hh:107
KernelLaunchStaticInst::numSrcRegOperands
int numSrcRegOperands() override
Definition: gpu_static_inst.hh:319
GPUStaticInst::srcVecDWORDs
int srcVecDWORDs
Definition: gpu_static_inst.hh:267
GPUStaticInst::instAddr
int instAddr() const
Definition: gpu_static_inst.hh:64
GPUStaticInst::isSpecialOp
bool isSpecialOp() const
Definition: gpu_static_inst.hh:120
GPUStaticInst::_ipdInstNum
int _ipdInstNum
Identifier of the immediate post-dominator instruction.
Definition: gpu_static_inst.hh:272
GPUStaticInst::isReadOnlySeg
bool isReadOnlySeg() const
Definition: gpu_static_inst.hh:190
KernelLaunchStaticInst::isScalarRegister
bool isScalarRegister(int operandIndex) override
Definition: gpu_static_inst.hh:306
GPUStaticInst::isF64
bool isF64() const
Definition: gpu_static_inst.hh:209
KernelLaunchStaticInst::KernelLaunchStaticInst
KernelLaunchStaticInst()
Definition: gpu_static_inst.hh:280
GPUStaticInst::isAtomicOr
bool isAtomicOr() const
Definition: gpu_static_inst.hh:154
GPUStaticInst::isScalar
bool isScalar() const
Definition: gpu_static_inst.hh:140
GPUStaticInst::isSleep
bool isSleep() const
Definition: gpu_static_inst.hh:122
KernelLaunchStaticInst::execute
void execute(GPUDynInstPtr gpuDynInst) override
Definition: gpu_static_inst.hh:290
GPUStaticInst::isAtomicSub
bool isAtomicSub() const
Definition: gpu_static_inst.hh:159
GPUStaticInst::instNum
void instNum(int num)
Definition: gpu_static_inst.hh:67
Wavefront
Definition: wavefront.hh:59
GPUStaticInst::isLocalMem
bool isLocalMem() const
Definition: gpu_static_inst.hh:180
GPUStaticInst::isSDWAInst
bool isSDWAInst() const
Definition: gpu_static_inst.hh:111
GPUStaticInst::isKernArgSeg
bool isKernArgSeg() const
Definition: gpu_static_inst.hh:188
GPUStaticInst::generateDisassembly
virtual void generateDisassembly()=0
GPUStaticInst::srcVecOperands
int srcVecOperands
Definition: gpu_static_inst.hh:265
GPUStaticInst::dstVecOperands
int dstVecOperands
Definition: gpu_static_inst.hh:266
GPUStaticInst::ipdInstNum
int ipdInstNum() const
Definition: gpu_static_inst.hh:73
GPUDynInstPtr
std::shared_ptr< GPUDynInst > GPUDynInstPtr
Definition: misc.hh:48
GPUStaticInst::isMAD
bool isMAD() const
Definition: gpu_static_inst.hh:214
Gcn3ISA::ScalarRegU32
uint32_t ScalarRegU32
Definition: registers.hh:152
GPUStaticInst::isGlobalMem
bool isGlobalMem() const
Definition: gpu_static_inst.hh:172
GPUStaticInst::instSize
virtual int instSize() const =0
GPUStaticInst::isAtomicDec
bool isAtomicDec() const
Definition: gpu_static_inst.hh:161
KernelLaunchStaticInst::getOperandSize
int getOperandSize(int operandIndex) override
Definition: gpu_static_inst.hh:310
GPUStaticInst::isPrivateSeg
bool isPrivateSeg() const
Definition: gpu_static_inst.hh:189
KernelLaunchStaticInst::getRegisterIndex
int getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst) override
Definition: gpu_static_inst.hh:313
GPUStaticInst::isAtomicMax
bool isAtomicMax() const
Definition: gpu_static_inst.hh:162
GPUStaticInst::numDstVecDWORDs
int numDstVecDWORDs()
Definition: gpu_static_inst.cc:106
KernelLaunchStaticInst::isVectorRegister
bool isVectorRegister(int operandIndex) override
Definition: gpu_static_inst.hh:307
GPUStaticInst::getTargetPc
virtual uint32_t getTargetPc()
Definition: gpu_static_inst.hh:232
GPUStaticInst::writesMode
bool writesMode() const
Definition: gpu_static_inst.hh:150
KernelLaunchStaticInst::numDstRegOperands
int numDstRegOperands() override
Definition: gpu_static_inst.hh:318
GPUStaticInst::isAtomicNoRet
bool isAtomicNoRet() const
Definition: gpu_static_inst.hh:137
GPUStaticInst::isCondBranch
bool isCondBranch() const
Definition: gpu_static_inst.hh:106
GPUStaticInst::isBranch
bool isBranch() const
Definition: gpu_static_inst.hh:105
GPUStaticInst::completeAcc
virtual void completeAcc(GPUDynInstPtr gpuDynInst)
Definition: gpu_static_inst.hh:227
GPUStaticInst::numSrcVecDWORDs
int numSrcVecDWORDs()
Definition: gpu_static_inst.cc:87
GPUStaticInst::writesSCC
bool writesSCC() const
Definition: gpu_static_inst.hh:142
GPUStaticInst::isWaitcnt
bool isWaitcnt() const
Definition: gpu_static_inst.hh:121
GPUStaticInst::ignoreExec
bool ignoreExec() const
Definition: gpu_static_inst.hh:151

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