gem5  v21.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
op_encodings.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016-2017 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 __ARCH_GCN3_INSTS_OP_ENCODINGS_HH__
35 #define __ARCH_GCN3_INSTS_OP_ENCODINGS_HH__
36 
37 #include "arch/gcn3/gpu_decoder.hh"
40 #include "arch/gcn3/operand.hh"
41 #include "debug/GCN3.hh"
42 #include "debug/GPUExec.hh"
44 
45 namespace Gcn3ISA
46 {
48  {
49  uint64_t baseAddr : 48;
50  uint32_t stride : 14;
51  uint32_t cacheSwizzle : 1;
52  uint32_t swizzleEn : 1;
53  uint32_t numRecords : 32;
54  uint32_t dstSelX : 3;
55  uint32_t dstSelY : 3;
56  uint32_t dstSelZ : 3;
57  uint32_t dstSelW : 3;
58  uint32_t numFmt : 3;
59  uint32_t dataFmt : 4;
60  uint32_t elemSize : 2;
61  uint32_t idxStride : 2;
62  uint32_t addTidEn : 1;
63  uint32_t atc : 1;
64  uint32_t hashEn : 1;
65  uint32_t heap : 1;
66  uint32_t mType : 3;
67  uint32_t type : 2;
68  };
69 
70  // --- purely virtual instruction classes ---
71 
73  {
74  public:
75  Inst_SOP2(InFmt_SOP2*, const std::string &opcode);
76 
77  int instSize() const override;
78  void generateDisassembly() override;
79 
80  bool isScalarRegister(int opIdx) override;
81  bool isVectorRegister(int opIdx) override;
82  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
83 
84  protected:
85  // first instruction DWORD
87  // possible second DWORD
89  uint32_t varSize;
90 
91  private:
92  bool hasSecondDword(InFmt_SOP2 *);
93  }; // Inst_SOP2
94 
96  {
97  public:
98  Inst_SOPK(InFmt_SOPK*, const std::string &opcode);
99  ~Inst_SOPK();
100 
101  int instSize() const override;
102  void generateDisassembly() override;
103 
104  bool isScalarRegister(int opIdx) override;
105  bool isVectorRegister(int opIdx) override;
106  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
107 
108  protected:
109  // first instruction DWORD
111  // possible second DWORD
113  uint32_t varSize;
114 
115  private:
116  bool hasSecondDword(InFmt_SOPK *);
117  }; // Inst_SOPK
118 
120  {
121  public:
122  Inst_SOP1(InFmt_SOP1*, const std::string &opcode);
123  ~Inst_SOP1();
124 
125  int instSize() const override;
126  void generateDisassembly() override;
127 
128  bool isScalarRegister(int opIdx) override;
129  bool isVectorRegister(int opIdx) override;
130  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
131 
132  protected:
133  // first instruction DWORD
135  // possible second DWORD
137  uint32_t varSize;
138 
139  private:
140  bool hasSecondDword(InFmt_SOP1 *);
141  }; // Inst_SOP1
142 
144  {
145  public:
146  Inst_SOPC(InFmt_SOPC*, const std::string &opcode);
147  ~Inst_SOPC();
148 
149  int instSize() const override;
150  void generateDisassembly() override;
151 
152  bool isScalarRegister(int opIdx) override;
153  bool isVectorRegister(int opIdx) override;
154  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
155 
156  protected:
157  // first instruction DWORD
159  // possible second DWORD
161  uint32_t varSize;
162 
163  private:
164  bool hasSecondDword(InFmt_SOPC *);
165  }; // Inst_SOPC
166 
168  {
169  public:
170  Inst_SOPP(InFmt_SOPP*, const std::string &opcode);
171  ~Inst_SOPP();
172 
173  int instSize() const override;
174  void generateDisassembly() override;
175 
176  bool isScalarRegister(int opIdx) override;
177  bool isVectorRegister(int opIdx) override;
178  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
179 
180  protected:
181  // first instruction DWORD
183  }; // Inst_SOPP
184 
186  {
187  public:
188  Inst_SMEM(InFmt_SMEM*, const std::string &opcode);
189  ~Inst_SMEM();
190 
191  int instSize() const override;
192  void generateDisassembly() override;
193 
194  bool isScalarRegister(int opIdx) override;
195  bool isVectorRegister(int opIdx) override;
196  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
197 
198  protected:
202  template<int N>
203  void
205  {
206  initMemReqScalarHelper<ScalarRegU32, N>(gpuDynInst,
208  }
209 
213  template<int N>
214  void
216  {
217  initMemReqScalarHelper<ScalarRegU32, N>(gpuDynInst,
219  }
220 
224  void
227  {
228  Addr vaddr = ((addr.rawData() + offset) & ~0x3);
229  gpu_dyn_inst->scalarAddr = vaddr;
230  }
231 
237  void
238  calcAddr(GPUDynInstPtr gpu_dyn_inst,
240  {
241  BufferRsrcDescriptor rsrc_desc;
242  ScalarRegU32 clamped_offset(offset);
243  std::memcpy((void*)&rsrc_desc, s_rsrc_desc.rawDataPtr(),
244  sizeof(BufferRsrcDescriptor));
245 
251  if (!rsrc_desc.stride && offset >= rsrc_desc.numRecords) {
252  clamped_offset = rsrc_desc.numRecords;
253  } else if (rsrc_desc.stride && offset
254  > (rsrc_desc.stride * rsrc_desc.numRecords)) {
255  clamped_offset = (rsrc_desc.stride * rsrc_desc.numRecords);
256  }
257 
258  Addr vaddr = ((rsrc_desc.baseAddr + clamped_offset) & ~0x3);
259  gpu_dyn_inst->scalarAddr = vaddr;
260  }
261 
262  // first instruction DWORD
264  // second instruction DWORD
266  }; // Inst_SMEM
267 
269  {
270  public:
271  Inst_VOP2(InFmt_VOP2*, const std::string &opcode);
272  ~Inst_VOP2();
273 
274  int instSize() const override;
275  void generateDisassembly() override;
276 
277  bool isScalarRegister(int opIdx) override;
278  bool isVectorRegister(int opIdx) override;
279  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
280 
281  protected:
282  // first instruction DWORD
284  // possible second DWORD
286  uint32_t varSize;
287 
288  private:
289  bool hasSecondDword(InFmt_VOP2 *);
290  }; // Inst_VOP2
291 
293  {
294  public:
295  Inst_VOP1(InFmt_VOP1*, const std::string &opcode);
296  ~Inst_VOP1();
297 
298  int instSize() const override;
299  void generateDisassembly() override;
300 
301  bool isScalarRegister(int opIdx) override;
302  bool isVectorRegister(int opIdx) override;
303  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
304 
305  protected:
306  // first instruction DWORD
308  // possible second DWORD
310  uint32_t varSize;
311 
312  private:
313  bool hasSecondDword(InFmt_VOP1 *);
314  }; // Inst_VOP1
315 
317  {
318  public:
319  Inst_VOPC(InFmt_VOPC*, const std::string &opcode);
320  ~Inst_VOPC();
321 
322  int instSize() const override;
323  void generateDisassembly() override;
324 
325  bool isScalarRegister(int opIdx) override;
326  bool isVectorRegister(int opIdx) override;
327  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
328 
329  protected:
330  // first instruction DWORD
332  // possible second DWORD
334  uint32_t varSize;
335 
336  private:
337  bool hasSecondDword(InFmt_VOPC *);
338  }; // Inst_VOPC
339 
341  {
342  public:
343  Inst_VINTRP(InFmt_VINTRP*, const std::string &opcode);
344  ~Inst_VINTRP();
345 
346  int instSize() const override;
347 
348  protected:
349  // first instruction DWORD
351  }; // Inst_VINTRP
352 
354  {
355  public:
356  Inst_VOP3(InFmt_VOP3*, const std::string &opcode, bool sgpr_dst);
357  ~Inst_VOP3();
358 
359  int instSize() const override;
360  void generateDisassembly() override;
361 
362  bool isScalarRegister(int opIdx) override;
363  bool isVectorRegister(int opIdx) override;
364  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
365 
366  protected:
367  // first instruction DWORD
369  // second instruction DWORD
371 
372  private:
373  bool hasSecondDword(InFmt_VOP3 *);
384  const bool sgprDst;
385  }; // Inst_VOP3
386 
388  {
389  public:
390  Inst_VOP3_SDST_ENC(InFmt_VOP3_SDST_ENC*, const std::string &opcode);
392 
393  int instSize() const override;
394  void generateDisassembly() override;
395 
396  bool isScalarRegister(int opIdx) override;
397  bool isVectorRegister(int opIdx) override;
398  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
399 
400  protected:
401  // first instruction DWORD
403  // second instruction DWORD
405 
406  private:
408  }; // Inst_VOP3_SDST_ENC
409 
410  class Inst_DS : public GCN3GPUStaticInst
411  {
412  public:
413  Inst_DS(InFmt_DS*, const std::string &opcode);
414  ~Inst_DS();
415 
416  int instSize() const override;
417  void generateDisassembly() override;
418 
419  bool isScalarRegister(int opIdx) override;
420  bool isVectorRegister(int opIdx) override;
421  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
422 
423  protected:
424  template<typename T>
425  void
427  {
428  Wavefront *wf = gpuDynInst->wavefront();
429 
430  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
431  if (gpuDynInst->exec_mask[lane]) {
432  Addr vaddr = gpuDynInst->addr[lane] + offset;
433 
434  (reinterpret_cast<T*>(gpuDynInst->d_data))[lane]
435  = wf->ldsChunk->read<T>(vaddr);
436  }
437  }
438  }
439 
440  template<typename T>
441  void
442  initDualMemRead(GPUDynInstPtr gpuDynInst, Addr offset0, Addr offset1)
443  {
444  Wavefront *wf = gpuDynInst->wavefront();
445 
446  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
447  if (gpuDynInst->exec_mask[lane]) {
448  Addr vaddr0 = gpuDynInst->addr[lane] + offset0;
449  Addr vaddr1 = gpuDynInst->addr[lane] + offset1;
450 
451  (reinterpret_cast<T*>(gpuDynInst->d_data))[lane * 2]
452  = wf->ldsChunk->read<T>(vaddr0);
453  (reinterpret_cast<T*>(gpuDynInst->d_data))[lane * 2 + 1]
454  = wf->ldsChunk->read<T>(vaddr1);
455  }
456  }
457  }
458 
459  template<typename T>
460  void
462  {
463  Wavefront *wf = gpuDynInst->wavefront();
464 
465  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
466  if (gpuDynInst->exec_mask[lane]) {
467  Addr vaddr = gpuDynInst->addr[lane] + offset;
468  wf->ldsChunk->write<T>(vaddr,
469  (reinterpret_cast<T*>(gpuDynInst->d_data))[lane]);
470  }
471  }
472  }
473 
474  template<typename T>
475  void
476  initDualMemWrite(GPUDynInstPtr gpuDynInst, Addr offset0, Addr offset1)
477  {
478  Wavefront *wf = gpuDynInst->wavefront();
479 
480  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
481  if (gpuDynInst->exec_mask[lane]) {
482  Addr vaddr0 = gpuDynInst->addr[lane] + offset0;
483  Addr vaddr1 = gpuDynInst->addr[lane] + offset1;
484  wf->ldsChunk->write<T>(vaddr0, (reinterpret_cast<T*>(
485  gpuDynInst->d_data))[lane * 2]);
486  wf->ldsChunk->write<T>(vaddr1, (reinterpret_cast<T*>(
487  gpuDynInst->d_data))[lane * 2 + 1]);
488  }
489  }
490  }
491 
492  void
494  {
495  Wavefront *wf = gpuDynInst->wavefront();
496 
497  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
498  if (wf->execMask(lane)) {
499  gpuDynInst->addr.at(lane) = (Addr)addr[lane];
500  }
501  }
502  }
503 
504  // first instruction DWORD
506  // second instruction DWORD
508  }; // Inst_DS
509 
511  {
512  public:
513  Inst_MUBUF(InFmt_MUBUF*, const std::string &opcode);
514  ~Inst_MUBUF();
515 
516  int instSize() const override;
517  void generateDisassembly() override;
518 
519  bool isScalarRegister(int opIdx) override;
520  bool isVectorRegister(int opIdx) override;
521  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
522 
523  protected:
524  template<typename T>
525  void
527  {
528  // temporarily modify exec_mask to supress memory accesses to oob
529  // regions. Only issue memory requests for lanes that have their
530  // exec_mask set and are not out of bounds.
531  VectorMask old_exec_mask = gpuDynInst->exec_mask;
532  gpuDynInst->exec_mask &= ~oobMask;
533  initMemReqHelper<T, 1>(gpuDynInst, MemCmd::ReadReq);
534  gpuDynInst->exec_mask = old_exec_mask;
535  }
536 
537 
538  template<int N>
539  void
541  {
542  // temporarily modify exec_mask to supress memory accesses to oob
543  // regions. Only issue memory requests for lanes that have their
544  // exec_mask set and are not out of bounds.
545  VectorMask old_exec_mask = gpuDynInst->exec_mask;
546  gpuDynInst->exec_mask &= ~oobMask;
547  initMemReqHelper<VecElemU32, N>(gpuDynInst, MemCmd::ReadReq);
548  gpuDynInst->exec_mask = old_exec_mask;
549  }
550 
551  template<typename T>
552  void
554  {
555  // temporarily modify exec_mask to supress memory accesses to oob
556  // regions. Only issue memory requests for lanes that have their
557  // exec_mask set and are not out of bounds.
558  VectorMask old_exec_mask = gpuDynInst->exec_mask;
559  gpuDynInst->exec_mask &= ~oobMask;
560  initMemReqHelper<T, 1>(gpuDynInst, MemCmd::WriteReq);
561  gpuDynInst->exec_mask = old_exec_mask;
562  }
563 
564  template<int N>
565  void
567  {
568  // temporarily modify exec_mask to supress memory accesses to oob
569  // regions. Only issue memory requests for lanes that have their
570  // exec_mask set and are not out of bounds.
571  VectorMask old_exec_mask = gpuDynInst->exec_mask;
572  gpuDynInst->exec_mask &= ~oobMask;
573  initMemReqHelper<VecElemU32, N>(gpuDynInst, MemCmd::WriteReq);
574  gpuDynInst->exec_mask = old_exec_mask;
575  }
576 
577  void
579  {
580  // create request and set flags
581  gpuDynInst->resetEntireStatusVector();
582  gpuDynInst->setStatusVector(0, 1);
583  RequestPtr req = std::make_shared<Request>(0, 0, 0,
584  gpuDynInst->computeUnit()->
585  requestorId(), 0,
586  gpuDynInst->wfDynId);
587  gpuDynInst->setRequestFlags(req);
588  gpuDynInst->computeUnit()->
589  injectGlobalMemFence(gpuDynInst, false, req);
590  }
591 
612  template<typename VOFF, typename VIDX, typename SRSRC, typename SOFF>
613  void
614  calcAddr(GPUDynInstPtr gpuDynInst, VOFF v_off, VIDX v_idx,
615  SRSRC s_rsrc_desc, SOFF s_offset, int inst_offset)
616  {
617  Addr vaddr = 0;
618  Addr base_addr = 0;
619  Addr stride = 0;
620  Addr buf_idx = 0;
621  Addr buf_off = 0;
622  BufferRsrcDescriptor rsrc_desc;
623 
624  std::memcpy((void*)&rsrc_desc, s_rsrc_desc.rawDataPtr(),
625  sizeof(BufferRsrcDescriptor));
626 
627  base_addr = rsrc_desc.baseAddr;
628 
629  stride = rsrc_desc.addTidEn ? ((rsrc_desc.dataFmt << 14)
630  + rsrc_desc.stride) : rsrc_desc.stride;
631 
632  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
633  if (gpuDynInst->exec_mask[lane]) {
634  vaddr = base_addr + s_offset.rawData();
640  buf_idx = v_idx[lane] + (rsrc_desc.addTidEn ? lane : 0);
641 
642  buf_off = v_off[lane] + inst_offset;
643 
644 
652  if (stride == 0 || !rsrc_desc.swizzleEn) {
653  if (buf_off + stride * buf_idx >=
654  rsrc_desc.numRecords - s_offset.rawData()) {
655  DPRINTF(GCN3, "mubuf out-of-bounds condition 1: "
656  "lane = %d, buffer_offset = %llx, "
657  "const_stride = %llx, "
658  "const_num_records = %llx\n",
659  lane, buf_off + stride * buf_idx,
660  stride, rsrc_desc.numRecords);
661  oobMask.set(lane);
662  continue;
663  }
664  }
665 
666  if (stride != 0 && rsrc_desc.swizzleEn) {
667  if (buf_idx >= rsrc_desc.numRecords ||
668  buf_off >= stride) {
669  DPRINTF(GCN3, "mubuf out-of-bounds condition 2: "
670  "lane = %d, offset = %llx, "
671  "index = %llx, "
672  "const_num_records = %llx\n",
673  lane, buf_off, buf_idx,
674  rsrc_desc.numRecords);
675  oobMask.set(lane);
676  continue;
677  }
678  }
679 
680  if (rsrc_desc.swizzleEn) {
681  Addr idx_stride = 8 << rsrc_desc.idxStride;
682  Addr elem_size = 2 << rsrc_desc.elemSize;
683  Addr idx_msb = buf_idx / idx_stride;
684  Addr idx_lsb = buf_idx % idx_stride;
685  Addr off_msb = buf_off / elem_size;
686  Addr off_lsb = buf_off % elem_size;
687  DPRINTF(GCN3, "mubuf swizzled lane %d: "
688  "idx_stride = %llx, elem_size = %llx, "
689  "idx_msb = %llx, idx_lsb = %llx, "
690  "off_msb = %llx, off_lsb = %llx\n",
691  lane, idx_stride, elem_size, idx_msb, idx_lsb,
692  off_msb, off_lsb);
693 
694  vaddr += ((idx_msb * stride + off_msb * elem_size)
695  * idx_stride + idx_lsb * elem_size + off_lsb);
696  } else {
697  vaddr += buf_off + stride * buf_idx;
698  }
699 
700  DPRINTF(GCN3, "Calculating mubuf address for lane %d: "
701  "vaddr = %llx, base_addr = %llx, "
702  "stride = %llx, buf_idx = %llx, buf_off = %llx\n",
703  lane, vaddr, base_addr, stride,
704  buf_idx, buf_off);
705  gpuDynInst->addr.at(lane) = vaddr;
706  }
707  }
708  }
709 
710  // first instruction DWORD
712  // second instruction DWORD
714  // Mask of lanes with out-of-bounds accesses. Needs to be tracked
715  // seperately from the exec_mask so that we remember to write zero
716  // to the registers associated with out of bounds lanes.
718  }; // Inst_MUBUF
719 
721  {
722  public:
723  Inst_MTBUF(InFmt_MTBUF*, const std::string &opcode);
724  ~Inst_MTBUF();
725 
726  int instSize() const override;
727 
728  protected:
729  // first instruction DWORD
731  // second instruction DWORD
733 
734  private:
735  bool hasSecondDword(InFmt_MTBUF *);
736  }; // Inst_MTBUF
737 
739  {
740  public:
741  Inst_MIMG(InFmt_MIMG*, const std::string &opcode);
742  ~Inst_MIMG();
743 
744  int instSize() const override;
745 
746  protected:
747  // first instruction DWORD
749  // second instruction DWORD
751  }; // Inst_MIMG
752 
754  {
755  public:
756  Inst_EXP(InFmt_EXP*, const std::string &opcode);
757  ~Inst_EXP();
758 
759  int instSize() const override;
760 
761  protected:
762  // first instruction DWORD
764  // second instruction DWORD
766  }; // Inst_EXP
767 
769  {
770  public:
771  Inst_FLAT(InFmt_FLAT*, const std::string &opcode);
772  ~Inst_FLAT();
773 
774  int instSize() const override;
775  void generateDisassembly() override;
776 
777  bool isScalarRegister(int opIdx) override;
778  bool isVectorRegister(int opIdx) override;
779  int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override;
780 
781  protected:
782  template<typename T>
783  void
785  {
786  initMemReqHelper<T, 1>(gpuDynInst, MemCmd::ReadReq);
787  }
788 
789  template<int N>
790  void
792  {
793  initMemReqHelper<VecElemU32, N>(gpuDynInst, MemCmd::ReadReq);
794  }
795 
796  template<typename T>
797  void
799  {
800  initMemReqHelper<T, 1>(gpuDynInst, MemCmd::WriteReq);
801  }
802 
803  template<int N>
804  void
806  {
807  initMemReqHelper<VecElemU32, N>(gpuDynInst, MemCmd::WriteReq);
808  }
809 
810  template<typename T>
811  void
813  {
814  initMemReqHelper<T, 1>(gpuDynInst, MemCmd::SwapReq, true);
815  }
816 
817  void
819  {
820  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
821  if (gpuDynInst->exec_mask[lane]) {
822  gpuDynInst->addr.at(lane) = addr[lane];
823  }
824  }
825  gpuDynInst->resolveFlatSegment(gpuDynInst->exec_mask);
826  }
827 
828  // first instruction DWORD
830  // second instruction DWORD
832  }; // Inst_FLAT
833 } // namespace Gcn3ISA
834 
835 #endif // __ARCH_GCN3_INSTS_OP_ENCODINGS_HH__
Gcn3ISA::Inst_SMEM::Inst_SMEM
Inst_SMEM(InFmt_SMEM *, const std::string &opcode)
Definition: op_encodings.cc:598
Gcn3ISA::Inst_SMEM::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:660
Gcn3ISA::Inst_VOP3_SDST_ENC::Inst_VOP3_SDST_ENC
Inst_VOP3_SDST_ENC(InFmt_VOP3_SDST_ENC *, const std::string &opcode)
Definition: op_encodings.cc:1520
Gcn3ISA::Inst_SMEM::instData
InFmt_SMEM instData
Definition: op_encodings.hh:263
Gcn3ISA::Inst_VOP1::extData
InstFormat extData
Definition: op_encodings.hh:309
Gcn3ISA::Inst_SMEM::calcAddr
void calcAddr(GPUDynInstPtr gpu_dyn_inst, ConstScalarOperandU64 &addr, ScalarRegU32 offset)
For normal s_load_dword/s_store_dword instruction addresses.
Definition: op_encodings.hh:225
Gcn3ISA::Inst_FLAT::~Inst_FLAT
~Inst_FLAT()
Definition: op_encodings.cc:2115
Gcn3ISA::Inst_VOP1::~Inst_VOP1
~Inst_VOP1()
Definition: op_encodings.cc:962
Gcn3ISA::Inst_VOPC::hasSecondDword
bool hasSecondDword(InFmt_VOPC *)
Definition: op_encodings.cc:1097
Gcn3ISA::Inst_VINTRP::Inst_VINTRP
Inst_VINTRP(InFmt_VINTRP *, const std::string &opcode)
Definition: op_encodings.cc:1193
Gcn3ISA::NumVecElemPerVecReg
const int NumVecElemPerVecReg(64)
Gcn3ISA::Inst_SOPP::~Inst_SOPP
~Inst_SOPP()
Definition: op_encodings.cc:499
Gcn3ISA::Inst_VOP1::varSize
uint32_t varSize
Definition: op_encodings.hh:310
Gcn3ISA::BufferRsrcDescriptor::dstSelZ
uint32_t dstSelZ
Definition: op_encodings.hh:56
Gcn3ISA::Inst_SOP1::instSize
int instSize() const override
Definition: op_encodings.cc:288
Gcn3ISA::Inst_DS::~Inst_DS
~Inst_DS()
Definition: op_encodings.cc:1810
Gcn3ISA::Inst_SMEM::~Inst_SMEM
~Inst_SMEM()
Definition: op_encodings.cc:614
LdsChunk::write
void write(const uint32_t index, const T value)
a write operation
Definition: lds_state.hh:89
Gcn3ISA::Inst_DS::instData
InFmt_DS instData
Definition: op_encodings.hh:505
Gcn3ISA::Inst_MTBUF::Inst_MTBUF
Inst_MTBUF(InFmt_MTBUF *, const std::string &opcode)
Definition: op_encodings.cc:2019
Gcn3ISA::Inst_FLAT::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:2158
Gcn3ISA::InFmt_EXP
Definition: gpu_decoder.hh:1370
Gcn3ISA::Inst_VOPC::instData
InFmt_VOPC instData
Definition: op_encodings.hh:331
Gcn3ISA::Inst_SMEM::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:694
Gcn3ISA::ScalarOperand::rawDataPtr
void * rawDataPtr()
Definition: operand.hh:405
Gcn3ISA::InFmt_SOPP
Definition: gpu_decoder.hh:1517
Gcn3ISA::Inst_FLAT::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:2143
Gcn3ISA::Inst_VOP2::~Inst_VOP2
~Inst_VOP2()
Definition: op_encodings.cc:743
gpu_mem_helpers.hh
Gcn3ISA::Inst_FLAT::initMemWrite
void initMemWrite(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:798
Gcn3ISA::Inst_MUBUF::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:1996
Gcn3ISA::InFmt_MUBUF_1
Definition: gpu_decoder.hh:1465
Gcn3ISA::Inst_VOPC::~Inst_VOPC
~Inst_VOPC()
Definition: op_encodings.cc:1086
Gcn3ISA::Inst_VOP3::~Inst_VOP3
~Inst_VOP3()
Definition: op_encodings.cc:1223
Gcn3ISA::Inst_VOP3::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:1366
Gcn3ISA::Inst_MUBUF::initMemWrite
void initMemWrite(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:553
Gcn3ISA::Inst_SOP2::varSize
uint32_t varSize
Definition: op_encodings.hh:89
Gcn3ISA::Inst_MIMG::~Inst_MIMG
~Inst_MIMG()
Definition: op_encodings.cc:2064
Gcn3ISA::BufferRsrcDescriptor::dstSelY
uint32_t dstSelY
Definition: op_encodings.hh:55
Gcn3ISA::Inst_SOP2::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:121
Gcn3ISA::Inst_VOP2::varSize
uint32_t varSize
Definition: op_encodings.hh:286
Gcn3ISA::Inst_DS::instSize
int instSize() const override
Definition: op_encodings.cc:1815
Gcn3ISA::BufferRsrcDescriptor::addTidEn
uint32_t addTidEn
Definition: op_encodings.hh:62
Gcn3ISA::Inst_VOP2::instSize
int instSize() const override
Definition: op_encodings.cc:748
Gcn3ISA::Inst_SOP1::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:342
Gcn3ISA::Inst_VOP3_SDST_ENC::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:1586
MemCmd::ReadReq
@ ReadReq
Definition: packet.hh:83
Gcn3ISA::Inst_VOP3_SDST_ENC::~Inst_VOP3_SDST_ENC
~Inst_VOP3_SDST_ENC()
Definition: op_encodings.cc:1531
Gcn3ISA::Inst_VOP2::extData
InstFormat extData
Definition: op_encodings.hh:285
Gcn3ISA::Inst_VOP2::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:904
Gcn3ISA::InFmt_MIMG_1
Definition: gpu_decoder.hh:1422
Gcn3ISA::Inst_VOP1::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:1047
Gcn3ISA::Inst_SOPP::Inst_SOPP
Inst_SOPP(InFmt_SOPP *, const std::string &opcode)
Definition: op_encodings.cc:490
Gcn3ISA::Inst_VOP3::instSize
int instSize() const override
Definition: op_encodings.cc:1228
Gcn3ISA::BufferRsrcDescriptor::atc
uint32_t atc
Definition: op_encodings.hh:63
RequestPtr
std::shared_ptr< Request > RequestPtr
Definition: request.hh:86
Gcn3ISA::Inst_VOP1::Inst_VOP1
Inst_VOP1(InFmt_VOP1 *, const std::string &opcode)
Definition: op_encodings.cc:942
Gcn3ISA::Inst_FLAT::extData
InFmt_FLAT_1 extData
Definition: op_encodings.hh:831
Gcn3ISA::BufferRsrcDescriptor::cacheSwizzle
uint32_t cacheSwizzle
Definition: op_encodings.hh:51
Gcn3ISA::BufferRsrcDescriptor::dataFmt
uint32_t dataFmt
Definition: op_encodings.hh:59
Gcn3ISA::Inst_VOP3_SDST_ENC
Definition: op_encodings.hh:387
Gcn3ISA::Inst_MTBUF::hasSecondDword
bool hasSecondDword(InFmt_MTBUF *)
Gcn3ISA::Inst_MUBUF::Inst_MUBUF
Inst_MUBUF(InFmt_MUBUF *, const std::string &opcode)
Definition: op_encodings.cc:1909
gpu_static_inst.hh
Gcn3ISA::Inst_SOP2::hasSecondDword
bool hasSecondDword(InFmt_SOP2 *)
Definition: op_encodings.cc:66
Gcn3ISA::Inst_DS::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:1874
Gcn3ISA::Inst_VOP2::hasSecondDword
bool hasSecondDword(InFmt_VOP2 *)
Definition: op_encodings.cc:754
Gcn3ISA::Inst_MTBUF::instSize
int instSize() const override
Definition: op_encodings.cc:2041
Gcn3ISA::Inst_SOPK::instSize
int instSize() const override
Definition: op_encodings.cc:176
Gcn3ISA::Inst_MUBUF::oobMask
VectorMask oobMask
Definition: op_encodings.hh:717
Gcn3ISA::Inst_SOPK::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:199
Gcn3ISA::Inst_SOPP::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:586
Gcn3ISA::Inst_VOP2::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:818
Gcn3ISA::Inst_SOPK::varSize
uint32_t varSize
Definition: op_encodings.hh:113
Gcn3ISA::Inst_VOP3_SDST_ENC::instData
InFmt_VOP3_SDST_ENC instData
Definition: op_encodings.hh:402
Gcn3ISA::Inst_SMEM::initMemRead
void initMemRead(GPUDynInstPtr gpuDynInst)
initiate a memory read access for N dwords
Definition: op_encodings.hh:204
Gcn3ISA::Inst_VINTRP::~Inst_VINTRP
~Inst_VINTRP()
Definition: op_encodings.cc:1200
Gcn3ISA::BufferRsrcDescriptor::numRecords
uint32_t numRecords
Definition: op_encodings.hh:53
Gcn3ISA::Inst_SOPP::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:564
GPUStaticInst::opcode
const std::string & opcode() const
Definition: gpu_static_inst.hh:258
Gcn3ISA::Inst_MUBUF::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, VOFF v_off, VIDX v_idx, SRSRC s_rsrc_desc, SOFF s_offset, int inst_offset)
MUBUF insructions calculate their addresses as follows:
Definition: op_encodings.hh:614
Gcn3ISA::InFmt_MTBUF_1
Definition: gpu_decoder.hh:1442
Gcn3ISA::InFmt_FLAT
Definition: gpu_decoder.hh:1387
Gcn3ISA::Inst_DS::initMemWrite
void initMemWrite(GPUDynInstPtr gpuDynInst, Addr offset)
Definition: op_encodings.hh:461
Gcn3ISA::InFmt_VOP2
Definition: gpu_decoder.hh:1539
Gcn3ISA::BufferRsrcDescriptor::dstSelW
uint32_t dstSelW
Definition: op_encodings.hh:57
MemCmd::WriteReq
@ WriteReq
Definition: packet.hh:86
Gcn3ISA::InFmt_DS
Definition: gpu_decoder.hh:1354
Gcn3ISA::Inst_DS::initMemRead
void initMemRead(GPUDynInstPtr gpuDynInst, Addr offset)
Definition: op_encodings.hh:426
Gcn3ISA::Inst_SOP1::hasSecondDword
bool hasSecondDword(InFmt_SOP1 *)
Definition: op_encodings.cc:294
Gcn3ISA::Inst_SOP1::varSize
uint32_t varSize
Definition: op_encodings.hh:137
Gcn3ISA::Inst_FLAT::initMemRead
void initMemRead(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:784
Wavefront::ldsChunk
LdsChunk * ldsChunk
Definition: wavefront.hh:221
Gcn3ISA::Inst_MIMG::extData
InFmt_MIMG_1 extData
Definition: op_encodings.hh:750
Gcn3ISA::Inst_VOP3
Definition: op_encodings.hh:353
Gcn3ISA::Inst_SOPC::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:460
Gcn3ISA::InFmt_SOP2
Definition: gpu_decoder.hh:1495
Gcn3ISA::Inst_VOP3_SDST_ENC::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:1660
Gcn3ISA::Inst_SOPC::extData
InstFormat extData
Definition: op_encodings.hh:160
Gcn3ISA::Inst_VOP1::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:1029
Gcn3ISA::Inst_VINTRP::instSize
int instSize() const override
Definition: op_encodings.cc:1205
Gcn3ISA::Inst_FLAT::instData
InFmt_FLAT instData
Definition: op_encodings.hh:829
Gcn3ISA::BufferRsrcDescriptor::numFmt
uint32_t numFmt
Definition: op_encodings.hh:58
Gcn3ISA::Inst_VOP2::instData
InFmt_VOP2 instData
Definition: op_encodings.hh:283
MemCmd::SwapReq
@ SwapReq
Definition: packet.hh:112
Gcn3ISA::Inst_SOP1::instData
InFmt_SOP1 instData
Definition: op_encodings.hh:134
Gcn3ISA::Inst_VOP2::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:779
Gcn3ISA::Inst_FLAT::instSize
int instSize() const override
Definition: op_encodings.cc:2120
Gcn3ISA::BufferRsrcDescriptor::stride
uint32_t stride
Definition: op_encodings.hh:50
Gcn3ISA::Inst_EXP::~Inst_EXP
~Inst_EXP()
Definition: op_encodings.cc:2086
Gcn3ISA::Inst_SOP2
Definition: op_encodings.hh:72
Gcn3ISA::Inst_SOP2::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:131
Gcn3ISA::Inst_VOP2::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:861
Gcn3ISA::Inst_VOP3_SDST_ENC::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:1734
Gcn3ISA::Inst_SOPC::Inst_SOPC
Inst_SOPC(InFmt_SOPC *, const std::string &opcode)
Definition: op_encodings.cc:378
Gcn3ISA::Inst_SOPK::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:247
Gcn3ISA::InFmt_VOPC
Definition: gpu_decoder.hh:1572
Gcn3ISA::InFmt_SMEM_1
Definition: gpu_decoder.hh:1484
Gcn3ISA::Inst_SOP1::extData
InstFormat extData
Definition: op_encodings.hh:136
Gcn3ISA::Inst_MUBUF::instData
InFmt_MUBUF instData
Definition: op_encodings.hh:711
Gcn3ISA
classes that represnt vector/scalar operands in GCN3 ISA.
Definition: decoder.cc:41
Gcn3ISA::Inst_VOP3::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:1440
Gcn3ISA::InFmt_FLAT_1
Definition: gpu_decoder.hh:1396
Gcn3ISA::VecOperand
Definition: operand.hh:100
Gcn3ISA::Inst_DS::initDualMemWrite
void initDualMemWrite(GPUDynInstPtr gpuDynInst, Addr offset0, Addr offset1)
Definition: op_encodings.hh:476
DPRINTF
#define DPRINTF(x,...)
Definition: trace.hh:237
Gcn3ISA::InFmt_MTBUF
Definition: gpu_decoder.hh:1431
Gcn3ISA::BufferRsrcDescriptor::mType
uint32_t mType
Definition: op_encodings.hh:66
Gcn3ISA::Inst_SOP2::Inst_SOP2
Inst_SOP2(InFmt_SOP2 *, const std::string &opcode)
Definition: op_encodings.cc:42
Gcn3ISA::Inst_VOP3_SDST_ENC::hasSecondDword
bool hasSecondDword(InFmt_VOP3_SDST_ENC *)
Gcn3ISA::Inst_VOP1::instSize
int instSize() const override
Definition: op_encodings.cc:967
Gcn3ISA::InFmt_SOPC
Definition: gpu_decoder.hh:1503
Gcn3ISA::Inst_SOPC
Definition: op_encodings.hh:143
Gcn3ISA::Inst_SMEM::extData
InFmt_SMEM_1 extData
Definition: op_encodings.hh:265
Gcn3ISA::Inst_SOPC::instData
InFmt_SOPC instData
Definition: op_encodings.hh:158
MipsISA::vaddr
vaddr
Definition: pra_constants.hh:275
Gcn3ISA::Inst_VINTRP
Definition: op_encodings.hh:340
Gcn3ISA::InFmt_MUBUF
Definition: gpu_decoder.hh:1452
Gcn3ISA::Inst_VOP3::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:1234
Gcn3ISA::Inst_SMEM::instSize
int instSize() const override
Definition: op_encodings.cc:619
Gcn3ISA::Inst_MTBUF::~Inst_MTBUF
~Inst_MTBUF()
Definition: op_encodings.cc:2036
Gcn3ISA::Inst_EXP::extData
InFmt_EXP_1 extData
Definition: op_encodings.hh:765
Gcn3ISA::BufferRsrcDescriptor::dstSelX
uint32_t dstSelX
Definition: op_encodings.hh:54
Gcn3ISA::BufferRsrcDescriptor::hashEn
uint32_t hashEn
Definition: op_encodings.hh:64
Gcn3ISA::Inst_VOPC::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:1170
Gcn3ISA::InFmt_SOPK
Definition: gpu_decoder.hh:1510
Gcn3ISA::Inst_SOP1::~Inst_SOP1
~Inst_SOP1()
Definition: op_encodings.cc:283
Gcn3ISA::InFmt_VINTRP
Definition: gpu_decoder.hh:1523
Gcn3ISA::Inst_VOPC::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:1128
Gcn3ISA::Inst_VOP3::extData
InFmt_VOP3_1 extData
Definition: op_encodings.hh:370
Gcn3ISA::Inst_SOP1::Inst_SOP1
Inst_SOP1(InFmt_SOP1 *, const std::string &opcode)
Definition: op_encodings.cc:266
Gcn3ISA::Inst_SOPC::instSize
int instSize() const override
Definition: op_encodings.cc:400
Gcn3ISA::Inst_SOPP::instData
InFmt_SOPP instData
Definition: op_encodings.hh:182
Gcn3ISA::Inst_SOPC::hasSecondDword
bool hasSecondDword(InFmt_SOPC *)
Definition: op_encodings.cc:406
Gcn3ISA::Inst_FLAT::Inst_FLAT
Inst_FLAT(InFmt_FLAT *, const std::string &opcode)
Definition: op_encodings.cc:2098
Gcn3ISA::Inst_SMEM
Definition: op_encodings.hh:185
Gcn3ISA::Inst_SOPK::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:237
Gcn3ISA::Inst_SOP1::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:320
Gcn3ISA::Inst_SOPP
Definition: op_encodings.hh:167
Gcn3ISA::Inst_MIMG::Inst_MIMG
Inst_MIMG(InFmt_MIMG *, const std::string &opcode)
Definition: op_encodings.cc:2048
Gcn3ISA::Inst_SOPK::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:220
Gcn3ISA::InFmt_VOP1
Definition: gpu_decoder.hh:1532
Gcn3ISA::Inst_VOPC::varSize
uint32_t varSize
Definition: op_encodings.hh:334
Gcn3ISA::Inst_VOP3::hasSecondDword
bool hasSecondDword(InFmt_VOP3 *)
Gcn3ISA::BufferRsrcDescriptor::baseAddr
uint64_t baseAddr
Definition: op_encodings.hh:49
Gcn3ISA::Inst_MUBUF::~Inst_MUBUF
~Inst_MUBUF()
Definition: op_encodings.cc:1925
Gcn3ISA::Inst_SOPK::Inst_SOPK
Inst_SOPK(InFmt_SOPK *, const std::string &opcode)
Definition: op_encodings.cc:154
Gcn3ISA::Inst_SOP2::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:102
Gcn3ISA::InFmt_VOP3
Definition: gpu_decoder.hh:1547
RubySystem.hh
Gcn3ISA::InFmt_DS_1
Definition: gpu_decoder.hh:1363
Gcn3ISA::Inst_VOP2
Definition: op_encodings.hh:268
Gcn3ISA::InFmt_SOP1
Definition: gpu_decoder.hh:1488
Gcn3ISA::InFmt_VOP3_1
Definition: gpu_decoder.hh:1556
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:148
Gcn3ISA::Inst_DS::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:1854
Gcn3ISA::Inst_VOPC::extData
InstFormat extData
Definition: op_encodings.hh:333
Gcn3ISA::Inst_VOP1::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:1011
Gcn3ISA::Inst_SOP1
Definition: op_encodings.hh:119
Gcn3ISA::Inst_SOP1::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:303
Gcn3ISA::Inst_EXP::instSize
int instSize() const override
Definition: op_encodings.cc:2091
Gcn3ISA::Inst_VOPC
Definition: op_encodings.hh:316
Gcn3ISA::Inst_VOP3_SDST_ENC::instSize
int instSize() const override
Definition: op_encodings.cc:1536
Gcn3ISA::BufferRsrcDescriptor::type
uint32_t type
Definition: op_encodings.hh:67
Gcn3ISA::Inst_SOP2::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:78
Gcn3ISA::Inst_SOPC::varSize
uint32_t varSize
Definition: op_encodings.hh:161
X86ISA::addr
Bitfield< 3 > addr
Definition: types.hh:80
Gcn3ISA::BufferRsrcDescriptor::elemSize
uint32_t elemSize
Definition: op_encodings.hh:60
Gcn3ISA::Inst_EXP::Inst_EXP
Inst_EXP(InFmt_EXP *, const std::string &opcode)
Definition: op_encodings.cc:2076
Gcn3ISA::Inst_SOPC::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:418
Gcn3ISA::Inst_VOP1::hasSecondDword
bool hasSecondDword(InFmt_VOP1 *)
Definition: op_encodings.cc:973
Gcn3ISA::Inst_DS::initDualMemRead
void initDualMemRead(GPUDynInstPtr gpuDynInst, Addr offset0, Addr offset1)
Definition: op_encodings.hh:442
Gcn3ISA::Inst_SOP2::instData
InFmt_SOP2 instData
Definition: op_encodings.hh:86
Gcn3ISA::Inst_MUBUF::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:1975
Gcn3ISA::Inst_DS::Inst_DS
Inst_DS(InFmt_DS *, const std::string &opcode)
Definition: op_encodings.cc:1798
Gcn3ISA::InFmt_SMEM
Definition: gpu_decoder.hh:1474
Gcn3ISA::Inst_VOP3_SDST_ENC::extData
InFmt_VOP3_1 extData
Definition: op_encodings.hh:404
Gcn3ISA::Inst_SOPK::~Inst_SOPK
~Inst_SOPK()
Definition: op_encodings.cc:171
Gcn3ISA::Inst_SOPK::extData
InstFormat extData
Definition: op_encodings.hh:112
Gcn3ISA::Inst_SOPK
Definition: op_encodings.hh:95
Gcn3ISA::Inst_VOPC::instSize
int instSize() const override
Definition: op_encodings.cc:1091
Gcn3ISA::Inst_FLAT
Definition: op_encodings.hh:768
Gcn3ISA::Inst_SOP2::extData
InstFormat extData
Definition: op_encodings.hh:88
operand.hh
Gcn3ISA::Inst_VOP3_SDST_ENC::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:1542
LdsChunk::read
T read(const uint32_t index)
a read operation
Definition: lds_state.hh:70
Wavefront
Definition: wavefront.hh:59
Gcn3ISA::Inst_SMEM::initMemWrite
void initMemWrite(GPUDynInstPtr gpuDynInst)
initiate a memory write access for N dwords
Definition: op_encodings.hh:215
Gcn3ISA::ScalarOperand
Definition: operand.hh:96
Gcn3ISA::Inst_DS::extData
InFmt_DS_1 extData
Definition: op_encodings.hh:507
Gcn3ISA::Inst_VOP1::instData
InFmt_VOP1 instData
Definition: op_encodings.hh:307
Wavefront::execMask
VectorMask & execMask()
Definition: wavefront.cc:1377
Gcn3ISA::Inst_MTBUF::extData
InFmt_MTBUF_1 extData
Definition: op_encodings.hh:732
Gcn3ISA::Inst_SOPK::hasSecondDword
bool hasSecondDword(InFmt_SOPK *)
Definition: op_encodings.cc:182
Gcn3ISA::Inst_SOPP::instSize
int instSize() const override
Definition: op_encodings.cc:504
Gcn3ISA::Inst_VOP2::Inst_VOP2
Inst_VOP2(InFmt_VOP2 *, const std::string &opcode)
Definition: op_encodings.cc:723
GPUDynInstPtr
std::shared_ptr< GPUDynInst > GPUDynInstPtr
Definition: misc.hh:48
Gcn3ISA::Inst_VOP3::sgprDst
const bool sgprDst
the v_cmp and readlane instructions in the VOP3 encoding are unique because they are the only instruc...
Definition: op_encodings.hh:384
Gcn3ISA::InFmt_EXP_1
Definition: gpu_decoder.hh:1380
ArmISA::stride
Bitfield< 21, 20 > stride
Definition: miscregs_types.hh:441
Gcn3ISA::ScalarRegU32
uint32_t ScalarRegU32
Definition: registers.hh:152
Gcn3ISA::Inst_MUBUF::injectGlobalMemFence
void injectGlobalMemFence(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:578
Gcn3ISA::Inst_VOP1
Definition: op_encodings.hh:292
Gcn3ISA::Inst_EXP
Definition: op_encodings.hh:753
Gcn3ISA::Inst_VOPC::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:1149
Gcn3ISA::Inst_SOP2::instSize
int instSize() const override
Definition: op_encodings.cc:60
Gcn3ISA::Inst_VOP1::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:992
gpu_decoder.hh
Gcn3ISA::InstFormat
Definition: gpu_decoder.hh:1609
Gcn3ISA::Inst_EXP::instData
InFmt_EXP instData
Definition: op_encodings.hh:763
Gcn3ISA::BufferRsrcDescriptor
Definition: op_encodings.hh:47
Gcn3ISA::Inst_VOP3::Inst_VOP3
Inst_VOP3(InFmt_VOP3 *, const std::string &opcode, bool sgpr_dst)
Definition: op_encodings.cc:1212
Gcn3ISA::Inst_DS::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, ConstVecOperandU32 &addr)
Definition: op_encodings.hh:493
Gcn3ISA::Inst_MUBUF::instSize
int instSize() const override
Definition: op_encodings.cc:1930
Gcn3ISA::Inst_FLAT::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:2173
Gcn3ISA::Inst_VOPC::Inst_VOPC
Inst_VOPC(InFmt_VOPC *, const std::string &opcode)
Definition: op_encodings.cc:1066
Gcn3ISA::Inst_MUBUF::extData
InFmt_MUBUF_1 extData
Definition: op_encodings.hh:713
VectorMask
std::bitset< std::numeric_limits< unsigned long long >::digits > VectorMask
Definition: misc.hh:44
Gcn3ISA::Inst_FLAT::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, ConstVecOperandU64 &addr)
Definition: op_encodings.hh:818
Gcn3ISA::Inst_SOPK::instData
InFmt_SOPK instData
Definition: op_encodings.hh:110
Gcn3ISA::Inst_SOPP::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:575
Gcn3ISA::InFmt_MIMG
Definition: gpu_decoder.hh:1408
Gcn3ISA::Inst_VOP3::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:1292
Gcn3ISA::InFmt_VOP3_SDST_ENC
Definition: gpu_decoder.hh:1564
Gcn3ISA::Inst_MUBUF::initMemRead
void initMemRead(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:526
Gcn3ISA::Inst_SOP1::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:352
Gcn3ISA::Inst_FLAT::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:2126
Gcn3ISA::Inst_FLAT::initAtomicAccess
void initAtomicAccess(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:812
Gcn3ISA::Inst_SOPC::getRegisterIndex
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Definition: op_encodings.cc:470
Gcn3ISA::Inst_MTBUF::instData
InFmt_MTBUF instData
Definition: op_encodings.hh:730
Gcn3ISA::Inst_SMEM::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:625
Gcn3ISA::Inst_MIMG::instSize
int instSize() const override
Definition: op_encodings.cc:2069
Gcn3ISA::Inst_SOPC::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:441
Gcn3ISA::Inst_SOPP::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:510
Gcn3ISA::BufferRsrcDescriptor::swizzleEn
uint32_t swizzleEn
Definition: op_encodings.hh:52
Gcn3ISA::Inst_MTBUF
Definition: op_encodings.hh:720
Gcn3ISA::BufferRsrcDescriptor::idxStride
uint32_t idxStride
Definition: op_encodings.hh:61
Gcn3ISA::Inst_MIMG::instData
InFmt_MIMG instData
Definition: op_encodings.hh:748
Gcn3ISA::Inst_DS::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:1821
Gcn3ISA::Inst_SOPC::~Inst_SOPC
~Inst_SOPC()
Definition: op_encodings.cc:395
Gcn3ISA::Inst_SMEM::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:684
Gcn3ISA::Inst_MUBUF::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:1936
Gcn3ISA::Inst_VOP3::instData
InFmt_VOP3 instData
Definition: op_encodings.hh:368
Gcn3ISA::BufferRsrcDescriptor::heap
uint32_t heap
Definition: op_encodings.hh:65
Gcn3ISA::Inst_MIMG
Definition: op_encodings.hh:738
Gcn3ISA::Inst_SMEM::calcAddr
void calcAddr(GPUDynInstPtr gpu_dyn_inst, ConstScalarOperandU128 &s_rsrc_desc, ScalarRegU32 offset)
For s_buffer_load_dword/s_buffer_store_dword instruction addresses.
Definition: op_encodings.hh:238
Gcn3ISA::Inst_MUBUF
Definition: op_encodings.hh:510
Gcn3ISA::Inst_MUBUF::isScalarRegister
bool isScalarRegister(int opIdx) override
Definition: op_encodings.cc:1954
Gcn3ISA::Inst_DS
Definition: op_encodings.hh:410
Gcn3ISA::Inst_VOPC::generateDisassembly
void generateDisassembly() override
Definition: op_encodings.cc:1116
Gcn3ISA::Inst_VINTRP::instData
InFmt_VINTRP instData
Definition: op_encodings.hh:350
ArmISA::offset
Bitfield< 23, 0 > offset
Definition: types.hh:153
Gcn3ISA::Inst_DS::isVectorRegister
bool isVectorRegister(int opIdx) override
Definition: op_encodings.cc:1864
Gcn3ISA::GCN3GPUStaticInst
Definition: gpu_static_inst.hh:46

Generated on Tue Mar 23 2021 19:41:23 for gem5 by doxygen 1.8.17