gem5  v20.1.0.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 
123  bool isBarrier() const { return _flags[MemBarrier]; }
124  bool isMemSync() const { return _flags[MemSync]; }
125  bool isMemRef() const { return _flags[MemoryRef]; }
126  bool isFlat() const { return _flags[Flat]; }
127  bool isLoad() const { return _flags[Load]; }
128  bool isStore() const { return _flags[Store]; }
129 
130  bool
131  isAtomic() const
132  {
133  return _flags[AtomicReturn] || _flags[AtomicNoReturn];
134  }
135 
136  bool isAtomicNoRet() const { return _flags[AtomicNoReturn]; }
137  bool isAtomicRet() const { return _flags[AtomicReturn]; }
138 
139  bool isScalar() const { return _flags[Scalar]; }
140  bool readsSCC() const { return _flags[ReadsSCC]; }
141  bool writesSCC() const { return _flags[WritesSCC]; }
142  bool readsVCC() const { return _flags[ReadsVCC]; }
143  bool writesVCC() const { return _flags[WritesVCC]; }
144  // Identify instructions that implicitly read the Execute mask
145  // as a source operand but not to dictate which threads execute.
146  bool readsEXEC() const { return _flags[ReadsEXEC]; }
147  bool writesEXEC() const { return _flags[WritesEXEC]; }
148  bool readsMode() const { return _flags[ReadsMode]; }
149  bool writesMode() const { return _flags[WritesMode]; }
150  bool ignoreExec() const { return _flags[IgnoreExec]; }
151 
152  bool isAtomicAnd() const { return _flags[AtomicAnd]; }
153  bool isAtomicOr() const { return _flags[AtomicOr]; }
154  bool isAtomicXor() const { return _flags[AtomicXor]; }
155  bool isAtomicCAS() const { return _flags[AtomicCAS]; }
156  bool isAtomicExch() const { return _flags[AtomicExch]; }
157  bool isAtomicAdd() const { return _flags[AtomicAdd]; }
158  bool isAtomicSub() const { return _flags[AtomicSub]; }
159  bool isAtomicInc() const { return _flags[AtomicInc]; }
160  bool isAtomicDec() const { return _flags[AtomicDec]; }
161  bool isAtomicMax() const { return _flags[AtomicMax]; }
162  bool isAtomicMin() const { return _flags[AtomicMin]; }
163 
164  bool
165  isArgLoad() const
166  {
167  return (_flags[KernArgSegment] || _flags[ArgSegment]) && _flags[Load];
168  }
169 
170  bool
171  isGlobalMem() const
172  {
173  return _flags[MemoryRef] && (_flags[GlobalSegment] ||
174  _flags[PrivateSegment] || _flags[ReadOnlySegment] ||
175  _flags[SpillSegment]);
176  }
177 
178  bool
179  isLocalMem() const
180  {
181  return _flags[MemoryRef] && _flags[GroupSegment];
182  }
183 
184  bool isArgSeg() const { return _flags[ArgSegment]; }
185  bool isGlobalSeg() const { return _flags[GlobalSegment]; }
186  bool isGroupSeg() const { return _flags[GroupSegment]; }
187  bool isKernArgSeg() const { return _flags[KernArgSegment]; }
188  bool isPrivateSeg() const { return _flags[PrivateSegment]; }
189  bool isReadOnlySeg() const { return _flags[ReadOnlySegment]; }
190  bool isSpillSeg() const { return _flags[SpillSegment]; }
191 
202  bool isGloballyCoherent() const { return _flags[GloballyCoherent]; }
203  bool isSystemCoherent() const { return _flags[SystemCoherent]; }
204 
205  // Floating-point instructions
206  bool isF16() const { return _flags[F16]; }
207  bool isF32() const { return _flags[F32]; }
208  bool isF64() const { return _flags[F64]; }
209 
210  // FMA, MAC, MAD instructions
211  bool isFMA() const { return _flags[FMA]; }
212  bool isMAC() const { return _flags[MAC]; }
213  bool isMAD() const { return _flags[MAD]; }
214 
215  virtual int instSize() const = 0;
216 
217  // only used for memory instructions
218  virtual void
220  {
221  fatal("calling initiateAcc() on a non-memory instruction.\n");
222  }
223 
224  // only used for memory instructions
225  virtual void
227  {
228  fatal("calling completeAcc() on a non-memory instruction.\n");
229  }
230 
231  virtual uint32_t getTargetPc() { return 0; }
232 
233  static uint64_t dynamic_id_count;
234 
235  // For flat memory accesses
236  Enums::StorageClassType executed_as;
237 
238  void setFlag(Flags flag) {
239  _flags[flag] = true;
240 
241  if (isGroupSeg()) {
242  executed_as = Enums::SC_GROUP;
243  } else if (isGlobalSeg()) {
244  executed_as = Enums::SC_GLOBAL;
245  } else if (isPrivateSeg()) {
246  executed_as = Enums::SC_PRIVATE;
247  } else if (isSpillSeg()) {
248  executed_as = Enums::SC_SPILL;
249  } else if (isReadOnlySeg()) {
250  executed_as = Enums::SC_READONLY;
251  } else if (isKernArgSeg()) {
252  executed_as = Enums::SC_KERNARG;
253  } else if (isArgSeg()) {
254  executed_as = Enums::SC_ARG;
255  }
256  }
257  const std::string& opcode() const { return _opcode; }
258 
259  protected:
260  const std::string _opcode;
261  std::string disassembly;
262  int _instNum;
272 
273  std::bitset<Num_Flags> _flags;
274 };
275 
277 {
278  public:
280  {
281  setFlag(Nop);
282  setFlag(KernelLaunch);
283  setFlag(MemSync);
284  setFlag(Scalar);
285  setFlag(GlobalSegment);
286  }
287 
288  void
289  execute(GPUDynInstPtr gpuDynInst) override
290  {
291  fatal("kernel launch instruction should not be executed\n");
292  }
293 
294  void
296  {
298  }
299 
300  int getNumOperands() override { return 0; }
301  bool isFlatScratchRegister(int opIdx) override { return false; }
302  // return true if the Execute mask is explicitly used as a source
303  // register operand
304  bool isExecMaskRegister(int opIdx) override { return false; }
305  bool isScalarRegister(int operandIndex) override { return false; }
306  bool isVectorRegister(int operandIndex) override { return false; }
307  bool isSrcOperand(int operandIndex) override { return false; }
308  bool isDstOperand(int operandIndex) override { return false; }
309  int getOperandSize(int operandIndex) override { return 0; }
310 
311  int
312  getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst) override
313  {
314  return 0;
315  }
316 
317  int numDstRegOperands() override { return 0; }
318  int numSrcRegOperands() override { return 0; }
319  int instSize() const override { return 0; }
320 };
321 
322 #endif // __GPU_STATIC_INST_HH__
GPUStaticInst::isAtomicExch
bool isAtomicExch() const
Definition: gpu_static_inst.hh:156
fatal
#define fatal(...)
This implements a cprintf based fatal() function.
Definition: logging.hh:183
GPUStaticInst::readsMode
bool readsMode() const
Definition: gpu_static_inst.hh:148
GPUStaticInst::writesVCC
bool writesVCC() const
Definition: gpu_static_inst.hh:143
KernelLaunchStaticInst::isFlatScratchRegister
bool isFlatScratchRegister(int opIdx) override
Definition: gpu_static_inst.hh:301
GPUStaticInst::isLoad
bool isLoad() const
Definition: gpu_static_inst.hh:127
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:262
GPUStaticInst::numSrcVecOperands
int numSrcVecOperands()
Definition: gpu_static_inst.cc:55
GPUStaticInst::readsSCC
bool readsSCC() const
Definition: gpu_static_inst.hh:140
KernelLaunchStaticInst::instSize
int instSize() const override
Definition: gpu_static_inst.hh:319
GPUStaticInst::isAtomicXor
bool isAtomicXor() const
Definition: gpu_static_inst.hh:154
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:203
GPUStaticInst::readsVCC
bool readsVCC() const
Definition: gpu_static_inst.hh:142
GPUStaticInst::isAtomicInc
bool isAtomicInc() const
Definition: gpu_static_inst.hh:159
GPUStaticInst::numSrcRegOperands
virtual int numSrcRegOperands()=0
Flags
Definition: flags.hh:33
GPUStaticInst::isMAC
bool isMAC() const
Definition: gpu_static_inst.hh:212
GPUStaticInst::isALU
bool isALU() const
Definition: gpu_static_inst.hh:104
GPUStaticInst::isF32
bool isF32() const
Definition: gpu_static_inst.hh:207
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:211
GPUStaticInst::setFlag
void setFlag(Flags flag)
Definition: gpu_static_inst.hh:238
KernelLaunchStaticInst::generateDisassembly
void generateDisassembly() override
Definition: gpu_static_inst.hh:295
GPUStaticInst::srcLiteral
virtual TheGpuISA::ScalarRegU32 srcLiteral() const
Definition: gpu_static_inst.hh:75
GPUStaticInst::isArgLoad
bool isArgLoad() const
Definition: gpu_static_inst.hh:165
GPUStaticInst::executed_as
Enums::StorageClassType executed_as
Definition: gpu_static_inst.hh:236
GPUStaticInst::isStore
bool isStore() const
Definition: gpu_static_inst.hh:128
GPUStaticInst::isAtomic
bool isAtomic() const
Definition: gpu_static_inst.hh:131
KernelLaunchStaticInst::isDstOperand
bool isDstOperand(int operandIndex) override
Definition: gpu_static_inst.hh:308
KernelLaunchStaticInst::isSrcOperand
bool isSrcOperand(int operandIndex) override
Definition: gpu_static_inst.hh:307
GPUStaticInst::isAtomicAnd
bool isAtomicAnd() const
Definition: gpu_static_inst.hh:152
GPUStaticInst::getRegisterIndex
virtual int getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst)=0
GPUStaticInst::isGroupSeg
bool isGroupSeg() const
Definition: gpu_static_inst.hh:186
GPUStaticInst::_instAddr
int _instAddr
Definition: gpu_static_inst.hh:263
KernelLaunchStaticInst
Definition: gpu_static_inst.hh:276
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:260
GPUStaticInst::isVectorRegister
virtual bool isVectorRegister(int operandIndex)=0
GPUStaticInst::isFlat
bool isFlat() const
Definition: gpu_static_inst.hh:126
GPUStaticInst::disassembly
std::string disassembly
Definition: gpu_static_inst.hh:261
GPUStaticInst::opcode
const std::string & opcode() const
Definition: gpu_static_inst.hh:257
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:219
GPUStaticInst::isSpillSeg
bool isSpillSeg() const
Definition: gpu_static_inst.hh:190
GPUStaticInst::isMemRef
bool isMemRef() const
Definition: gpu_static_inst.hh:125
GPUStaticInst::_flags
std::bitset< Num_Flags > _flags
Definition: gpu_static_inst.hh:273
GPUStaticInst::instAddr
void instAddr(int inst_addr)
Definition: gpu_static_inst.hh:63
GPUStaticInst::isAtomicRet
bool isAtomicRet() const
Definition: gpu_static_inst.hh:137
GPUStaticInst::isDstOperand
virtual bool isDstOperand(int operandIndex)=0
GPUStaticInst::dstVecDWORDs
int dstVecDWORDs
Definition: gpu_static_inst.hh:267
GPUStaticInst::isBarrier
bool isBarrier() const
Definition: gpu_static_inst.hh:123
GPUStaticInst::isMemSync
bool isMemSync() const
Definition: gpu_static_inst.hh:124
GPUStaticInst::isAtomicCAS
bool isAtomicCAS() const
Definition: gpu_static_inst.hh:155
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:304
GPUStaticInst::isUnconditionalJump
bool isUnconditionalJump() const
Definition: gpu_static_inst.hh:115
GPUStaticInst::isArgSeg
bool isArgSeg() const
Definition: gpu_static_inst.hh:184
GPUStaticInst::isF16
bool isF16() const
Definition: gpu_static_inst.hh:206
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:202
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:233
GPUStaticInst::isAtomicMin
bool isAtomicMin() const
Definition: gpu_static_inst.hh:162
GPUStaticInst::ipdInstNum
void ipdInstNum(int num)
Definition: gpu_static_inst.hh:71
GPUStaticInst::isGlobalSeg
bool isGlobalSeg() const
Definition: gpu_static_inst.hh:185
GPUStaticInst::writesEXEC
bool writesEXEC() const
Definition: gpu_static_inst.hh:147
GPUStaticInst::readsEXEC
bool readsEXEC() const
Definition: gpu_static_inst.hh:146
KernelLaunchStaticInst::getNumOperands
int getNumOperands() override
Definition: gpu_static_inst.hh:300
GPUStaticInst
Definition: gpu_static_inst.hh:58
GPUStaticInst::isAtomicAdd
bool isAtomicAdd() const
Definition: gpu_static_inst.hh:157
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:318
GPUStaticInst::srcVecDWORDs
int srcVecDWORDs
Definition: gpu_static_inst.hh:266
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:271
GPUStaticInst::isReadOnlySeg
bool isReadOnlySeg() const
Definition: gpu_static_inst.hh:189
KernelLaunchStaticInst::isScalarRegister
bool isScalarRegister(int operandIndex) override
Definition: gpu_static_inst.hh:305
GPUStaticInst::isF64
bool isF64() const
Definition: gpu_static_inst.hh:208
KernelLaunchStaticInst::KernelLaunchStaticInst
KernelLaunchStaticInst()
Definition: gpu_static_inst.hh:279
GPUStaticInst::isAtomicOr
bool isAtomicOr() const
Definition: gpu_static_inst.hh:153
GPUStaticInst::isScalar
bool isScalar() const
Definition: gpu_static_inst.hh:139
KernelLaunchStaticInst::execute
void execute(GPUDynInstPtr gpuDynInst) override
Definition: gpu_static_inst.hh:289
GPUStaticInst::isAtomicSub
bool isAtomicSub() const
Definition: gpu_static_inst.hh:158
GPUStaticInst::instNum
void instNum(int num)
Definition: gpu_static_inst.hh:67
Wavefront
Definition: wavefront.hh:57
GPUStaticInst::isLocalMem
bool isLocalMem() const
Definition: gpu_static_inst.hh:179
GPUStaticInst::isSDWAInst
bool isSDWAInst() const
Definition: gpu_static_inst.hh:111
GPUStaticInst::isKernArgSeg
bool isKernArgSeg() const
Definition: gpu_static_inst.hh:187
GPUStaticInst::generateDisassembly
virtual void generateDisassembly()=0
GPUStaticInst::srcVecOperands
int srcVecOperands
Definition: gpu_static_inst.hh:264
GPUStaticInst::dstVecOperands
int dstVecOperands
Definition: gpu_static_inst.hh:265
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:213
Gcn3ISA::ScalarRegU32
uint32_t ScalarRegU32
Definition: registers.hh:154
GPUStaticInst::isGlobalMem
bool isGlobalMem() const
Definition: gpu_static_inst.hh:171
GPUStaticInst::instSize
virtual int instSize() const =0
GPUStaticInst::isAtomicDec
bool isAtomicDec() const
Definition: gpu_static_inst.hh:160
KernelLaunchStaticInst::getOperandSize
int getOperandSize(int operandIndex) override
Definition: gpu_static_inst.hh:309
GPUStaticInst::isPrivateSeg
bool isPrivateSeg() const
Definition: gpu_static_inst.hh:188
KernelLaunchStaticInst::getRegisterIndex
int getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst) override
Definition: gpu_static_inst.hh:312
GPUStaticInst::isAtomicMax
bool isAtomicMax() const
Definition: gpu_static_inst.hh:161
GPUStaticInst::numDstVecDWORDs
int numDstVecDWORDs()
Definition: gpu_static_inst.cc:106
KernelLaunchStaticInst::isVectorRegister
bool isVectorRegister(int operandIndex) override
Definition: gpu_static_inst.hh:306
GPUStaticInst::getTargetPc
virtual uint32_t getTargetPc()
Definition: gpu_static_inst.hh:231
GPUStaticInst::writesMode
bool writesMode() const
Definition: gpu_static_inst.hh:149
KernelLaunchStaticInst::numDstRegOperands
int numDstRegOperands() override
Definition: gpu_static_inst.hh:317
GPUStaticInst::isAtomicNoRet
bool isAtomicNoRet() const
Definition: gpu_static_inst.hh:136
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:226
GPUStaticInst::numSrcVecDWORDs
int numSrcVecDWORDs()
Definition: gpu_static_inst.cc:87
GPUStaticInst::writesSCC
bool writesSCC() const
Definition: gpu_static_inst.hh:141
GPUStaticInst::isWaitcnt
bool isWaitcnt() const
Definition: gpu_static_inst.hh:121
GPUStaticInst::ignoreExec
bool ignoreExec() const
Definition: gpu_static_inst.hh:150

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