gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
instructions.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2021 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 
33 
34 #include <cmath>
35 
37 #include "debug/VEGA.hh"
38 #include "debug/GPUSync.hh"
40 #include "gpu-compute/shader.hh"
41 
42 namespace gem5
43 {
44 
45 namespace VegaISA
46 {
47  // --- Inst_SOP2__S_ADD_U32 class methods ---
48 
50  : Inst_SOP2(iFmt, "s_add_u32")
51  {
52  setFlag(ALU);
53  } // Inst_SOP2__S_ADD_U32
54 
56  {
57  } // ~Inst_SOP2__S_ADD_U32
58 
59  // --- description from .arch file ---
60  // D.u = S0.u + S1.u;
61  // SCC = (S0.u + S1.u >= 0x800000000ULL ? 1 : 0) is an unsigned
62  // --- overflow/carry-out for S_ADDC_U32.
63  void
65  {
66  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
67  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
68  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
69  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
70 
71  src0.read();
72  src1.read();
73 
74  sdst = src0.rawData() + src1.rawData();
75  scc = ((ScalarRegU64)src0.rawData() + (ScalarRegU64)src1.rawData())
76  >= 0x100000000ULL ? 1 : 0;
77 
78  sdst.write();
79  scc.write();
80  } // execute
81  // --- Inst_SOP2__S_SUB_U32 class methods ---
82 
84  : Inst_SOP2(iFmt, "s_sub_u32")
85  {
86  setFlag(ALU);
87  } // Inst_SOP2__S_SUB_U32
88 
90  {
91  } // ~Inst_SOP2__S_SUB_U32
92 
93  // --- description from .arch file ---
94  // D.u = S0.u - S1.u;
95  // SCC = (S1.u > S0.u ? 1 : 0) is an unsigned overflow or carry-out for
96  // --- S_SUBB_U32.
97  void
99  {
100  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
101  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
102  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
103  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
104 
105  src0.read();
106  src1.read();
107 
108  sdst = src0.rawData() - src1.rawData();
109  scc = (src1.rawData() > src0.rawData()) ? 1 : 0;
110 
111  sdst.write();
112  scc.write();
113  } // execute
114  // --- Inst_SOP2__S_ADD_I32 class methods ---
115 
117  : Inst_SOP2(iFmt, "s_add_i32")
118  {
119  setFlag(ALU);
120  } // Inst_SOP2__S_ADD_I32
121 
123  {
124  } // ~Inst_SOP2__S_ADD_I32
125 
126  // --- description from .arch file ---
127  // D.i = S0.i + S1.i;
128  // SCC = (S0.u[31] == S1.u[31] && S0.u[31] != D.u[31]) is a signed
129  // overflow.
130  // This opcode is not suitable for use with S_ADDC_U32 for implementing
131  // 64-bit operations.
132  void
134  {
135  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
136  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
137  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
138  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
139 
140  src0.read();
141  src1.read();
142 
143  sdst = src0.rawData() + src1.rawData();
144  scc = (bits(src0.rawData(), 31) == bits(src1.rawData(), 31)
145  && bits(src0.rawData(), 31) != bits(sdst.rawData(), 31))
146  ? 1 : 0;
147 
148  sdst.write();
149  scc.write();
150  } // execute
151  // --- Inst_SOP2__S_SUB_I32 class methods ---
152 
154  : Inst_SOP2(iFmt, "s_sub_i32")
155  {
156  setFlag(ALU);
157  } // Inst_SOP2__S_SUB_I32
158 
160  {
161  } // ~Inst_SOP2__S_SUB_I32
162 
163  // --- description from .arch file ---
164  // D.i = S0.i - S1.i;
165  // SCC = (S0.u[31] != S1.u[31] && S0.u[31] != D.u[31]) is a signed
166  // overflow.
167  // CAUTION: The condition code behaviour for this opcode is inconsistent
168  // with V_SUB_I32; see V_SUB_I32 for further details.
169  // This opcode is not suitable for use with S_SUBB_U32 for implementing
170  // 64-bit operations.
171  void
173  {
174  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
175  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
176  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
177  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
178 
179  src0.read();
180  src1.read();
181 
182  sdst = src0.rawData() - src1.rawData();
183  scc = (bits(src0.rawData(), 31) != bits(src1.rawData(), 31)
184  && bits(src0.rawData(), 31) != bits(sdst.rawData(), 31)) ? 1 : 0;
185 
186  sdst.write();
187  scc.write();
188  } // execute
189  // --- Inst_SOP2__S_ADDC_U32 class methods ---
190 
192  : Inst_SOP2(iFmt, "s_addc_u32")
193  {
194  setFlag(ALU);
195  } // Inst_SOP2__S_ADDC_U32
196 
198  {
199  } // ~Inst_SOP2__S_ADDC_U32
200 
201  // --- description from .arch file ---
202  // D.u = S0.u + S1.u + SCC;
203  // SCC = (S0.u + S1.u + SCC >= 0x800000000ULL ? 1 : 0) is an unsigned
204  // overflow.
205  void
207  {
208  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
209  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
210  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
211  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
212 
213  src0.read();
214  src1.read();
215  scc.read();
216 
217  sdst = src0.rawData() + src1.rawData() + scc.rawData();
218  scc = ((ScalarRegU64)src0.rawData() + (ScalarRegU64)src1.rawData()
219  + (ScalarRegU64)scc.rawData()) >= 0x100000000ULL ? 1 : 0;
220 
221  sdst.write();
222  scc.write();
223  } // execute
224  // --- Inst_SOP2__S_SUBB_U32 class methods ---
225 
227  : Inst_SOP2(iFmt, "s_subb_u32")
228  {
229  setFlag(ALU);
230  } // Inst_SOP2__S_SUBB_U32
231 
233  {
234  } // ~Inst_SOP2__S_SUBB_U32
235 
236  // --- description from .arch file ---
237  // D.u = S0.u - S1.u - SCC;
238  // SCC = (S1.u + SCC > S0.u ? 1 : 0) is an unsigned overflow.
239  void
241  {
242  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
243  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
244  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
245  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
246 
247  src0.read();
248  src1.read();
249  scc.read();
250 
251  sdst = src0.rawData() - src1.rawData() - scc.rawData();
252  scc = (src1.rawData() + scc.rawData()) > src0.rawData() ? 1 : 0;
253 
254  sdst.write();
255  scc.write();
256  } // execute
257  // --- Inst_SOP2__S_MIN_I32 class methods ---
258 
260  : Inst_SOP2(iFmt, "s_min_i32")
261  {
262  setFlag(ALU);
263  } // Inst_SOP2__S_MIN_I32
264 
266  {
267  } // ~Inst_SOP2__S_MIN_I32
268 
269  // --- description from .arch file ---
270  // D.i = (S0.i < S1.i) ? S0.i : S1.i;
271  // SCC = 1 if S0 is chosen as the minimum value.
272  void
274  {
275  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
276  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
277  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
278  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
279 
280  src0.read();
281  src1.read();
282 
283  sdst = std::min(src0.rawData(), src1.rawData());
284  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
285 
286  sdst.write();
287  scc.write();
288  } // execute
289  // --- Inst_SOP2__S_MIN_U32 class methods ---
290 
292  : Inst_SOP2(iFmt, "s_min_u32")
293  {
294  setFlag(ALU);
295  } // Inst_SOP2__S_MIN_U32
296 
298  {
299  } // ~Inst_SOP2__S_MIN_U32
300 
301  // --- description from .arch file ---
302  // D.u = (S0.u < S1.u) ? S0.u : S1.u;
303  // SCC = 1 if S0 is chosen as the minimum value.
304  void
306  {
307  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
308  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
309  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
310  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
311 
312  src0.read();
313  src1.read();
314 
315  sdst = std::min(src0.rawData(), src1.rawData());
316  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
317 
318  sdst.write();
319  scc.write();
320  } // execute
321  // --- Inst_SOP2__S_MAX_I32 class methods ---
322 
324  : Inst_SOP2(iFmt, "s_max_i32")
325  {
326  setFlag(ALU);
327  } // Inst_SOP2__S_MAX_I32
328 
330  {
331  } // ~Inst_SOP2__S_MAX_I32
332 
333  // --- description from .arch file ---
334  // D.i = (S0.i > S1.i) ? S0.i : S1.i;
335  // SCC = 1 if S0 is chosen as the maximum value.
336  void
338  {
339  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
340  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
341  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
342  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
343 
344  src0.read();
345  src1.read();
346 
347  sdst = std::max(src0.rawData(), src1.rawData());
348  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
349 
350  sdst.write();
351  scc.write();
352  } // execute
353  // --- Inst_SOP2__S_MAX_U32 class methods ---
354 
356  : Inst_SOP2(iFmt, "s_max_u32")
357  {
358  setFlag(ALU);
359  } // Inst_SOP2__S_MAX_U32
360 
362  {
363  } // ~Inst_SOP2__S_MAX_U32
364 
365  // --- description from .arch file ---
366  // D.u = (S0.u > S1.u) ? S0.u : S1.u;
367  // SCC = 1 if S0 is chosen as the maximum value.
368  void
370  {
371  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
372  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
373  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
374  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
375 
376  src0.read();
377  src1.read();
378 
379  sdst = std::max(src0.rawData(), src1.rawData());
380  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
381 
382  sdst.write();
383  scc.write();
384  } // execute
385  // --- Inst_SOP2__S_CSELECT_B32 class methods ---
386 
388  : Inst_SOP2(iFmt, "s_cselect_b32")
389  {
390  setFlag(ALU);
391  } // Inst_SOP2__S_CSELECT_B32
392 
394  {
395  } // ~Inst_SOP2__S_CSELECT_B32
396 
397  // --- description from .arch file ---
398  // D.u = SCC ? S0.u : S1.u (conditional select).
399  void
401  {
402  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
403  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
404  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
405  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
406 
407  src0.read();
408  src1.read();
409  scc.read();
410 
411  sdst = scc.rawData() ? src0.rawData() : src1.rawData();
412 
413  sdst.write();
414  } // execute
415  // --- Inst_SOP2__S_CSELECT_B64 class methods ---
416 
418  : Inst_SOP2(iFmt, "s_cselect_b64")
419  {
420  setFlag(ALU);
421  } // Inst_SOP2__S_CSELECT_B64
422 
424  {
425  } // ~Inst_SOP2__S_CSELECT_B64
426 
427  // --- description from .arch file ---
428  // D.u64 = SCC ? S0.u64 : S1.u64 (conditional select).
429  void
431  {
432  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
433  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
434  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
435  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
436 
437  src0.read();
438  src1.read();
439  scc.read();
440 
441  sdst = scc.rawData() ? src0.rawData() : src1.rawData();
442 
443  sdst.write();
444  } // execute
445  // --- Inst_SOP2__S_AND_B32 class methods ---
446 
448  : Inst_SOP2(iFmt, "s_and_b32")
449  {
450  setFlag(ALU);
451  } // Inst_SOP2__S_AND_B32
452 
454  {
455  } // ~Inst_SOP2__S_AND_B32
456 
457  // --- description from .arch file ---
458  // D.u = S0.u & S1.u;
459  // SCC = 1 if result is non-zero.
460  void
462  {
463  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
464  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
465  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
466  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
467 
468  src0.read();
469  src1.read();
470 
471  sdst = src0.rawData() & src1.rawData();
472  scc = sdst.rawData() ? 1 : 0;
473 
474  sdst.write();
475  scc.write();
476  } // execute
477  // --- Inst_SOP2__S_AND_B64 class methods ---
478 
480  : Inst_SOP2(iFmt, "s_and_b64")
481  {
482  setFlag(ALU);
483  } // Inst_SOP2__S_AND_B64
484 
486  {
487  } // ~Inst_SOP2__S_AND_B64
488 
489  // --- description from .arch file ---
490  // D.u64 = S0.u64 & S1.u64;
491  // SCC = 1 if result is non-zero.
492  void
494  {
495  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
496  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
497  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
498  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
499 
500  src0.read();
501  src1.read();
502 
503  sdst = src0.rawData() & src1.rawData();
504  scc = sdst.rawData() ? 1 : 0;
505 
506  sdst.write();
507  scc.write();
508  } // execute
509  // --- Inst_SOP2__S_OR_B32 class methods ---
510 
512  : Inst_SOP2(iFmt, "s_or_b32")
513  {
514  setFlag(ALU);
515  } // Inst_SOP2__S_OR_B32
516 
518  {
519  } // ~Inst_SOP2__S_OR_B32
520 
521  // --- description from .arch file ---
522  // D.u = S0.u | S1.u;
523  // SCC = 1 if result is non-zero.
524  void
526  {
527  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
528  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
529  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
530  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
531 
532  src0.read();
533  src1.read();
534 
535  sdst = src0.rawData() | src1.rawData();
536  scc = sdst.rawData() ? 1 : 0;
537 
538  sdst.write();
539  scc.write();
540  } // execute
541  // --- Inst_SOP2__S_OR_B64 class methods ---
542 
544  : Inst_SOP2(iFmt, "s_or_b64")
545  {
546  setFlag(ALU);
547  } // Inst_SOP2__S_OR_B64
548 
550  {
551  } // ~Inst_SOP2__S_OR_B64
552 
553  // --- description from .arch file ---
554  // D.u64 = S0.u64 | S1.u64;
555  // SCC = 1 if result is non-zero.
556  void
558  {
559  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
560  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
561  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
562  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
563 
564  src0.read();
565  src1.read();
566 
567  sdst = src0.rawData() | src1.rawData();
568  scc = sdst.rawData() ? 1 : 0;
569 
570  sdst.write();
571  scc.write();
572  } // execute
573  // --- Inst_SOP2__S_XOR_B32 class methods ---
574 
576  : Inst_SOP2(iFmt, "s_xor_b32")
577  {
578  setFlag(ALU);
579  } // Inst_SOP2__S_XOR_B32
580 
582  {
583  } // ~Inst_SOP2__S_XOR_B32
584 
585  // --- description from .arch file ---
586  // D.u = S0.u ^ S1.u;
587  // SCC = 1 if result is non-zero.
588  void
590  {
591  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
592  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
593  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
594  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
595 
596  src0.read();
597  src1.read();
598 
599  sdst = src0.rawData() ^ src1.rawData();
600  scc = sdst.rawData() ? 1 : 0;
601 
602  sdst.write();
603  scc.write();
604  } // execute
605  // --- Inst_SOP2__S_XOR_B64 class methods ---
606 
608  : Inst_SOP2(iFmt, "s_xor_b64")
609  {
610  setFlag(ALU);
611  } // Inst_SOP2__S_XOR_B64
612 
614  {
615  } // ~Inst_SOP2__S_XOR_B64
616 
617  // --- description from .arch file ---
618  // D.u64 = S0.u64 ^ S1.u64;
619  // SCC = 1 if result is non-zero.
620  void
622  {
623  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
624  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
625  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
626  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
627 
628  src0.read();
629  src1.read();
630 
631  sdst = src0.rawData() ^ src1.rawData();
632  scc = sdst.rawData() ? 1 : 0;
633 
634  sdst.write();
635  scc.write();
636  } // execute
637  // --- Inst_SOP2__S_ANDN2_B32 class methods ---
638 
640  : Inst_SOP2(iFmt, "s_andn2_b32")
641  {
642  setFlag(ALU);
643  } // Inst_SOP2__S_ANDN2_B32
644 
646  {
647  } // ~Inst_SOP2__S_ANDN2_B32
648 
649  // --- description from .arch file ---
650  // D.u = S0.u & ~S1.u;
651  // SCC = 1 if result is non-zero.
652  void
654  {
655  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
656  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
657  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
658  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
659 
660  src0.read();
661  src1.read();
662 
663  sdst = src0.rawData() &~ src1.rawData();
664  scc = sdst.rawData() ? 1 : 0;
665 
666  sdst.write();
667  scc.write();
668  } // execute
669  // --- Inst_SOP2__S_ANDN2_B64 class methods ---
670 
672  : Inst_SOP2(iFmt, "s_andn2_b64")
673  {
674  setFlag(ALU);
675  } // Inst_SOP2__S_ANDN2_B64
676 
678  {
679  } // ~Inst_SOP2__S_ANDN2_B64
680 
681  // --- description from .arch file ---
682  // D.u64 = S0.u64 & ~S1.u64;
683  // SCC = 1 if result is non-zero.
684  void
686  {
687  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
688  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
689  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
690  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
691 
692  src0.read();
693  src1.read();
694 
695  sdst = src0.rawData() &~ src1.rawData();
696  scc = sdst.rawData() ? 1 : 0;
697 
698  sdst.write();
699  scc.write();
700  } // execute
701  // --- Inst_SOP2__S_ORN2_B32 class methods ---
702 
704  : Inst_SOP2(iFmt, "s_orn2_b32")
705  {
706  setFlag(ALU);
707  } // Inst_SOP2__S_ORN2_B32
708 
710  {
711  } // ~Inst_SOP2__S_ORN2_B32
712 
713  // --- description from .arch file ---
714  // D.u = S0.u | ~S1.u;
715  // SCC = 1 if result is non-zero.
716  void
718  {
719  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
720  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
721  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
722  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
723 
724  src0.read();
725  src1.read();
726 
727  sdst = src0.rawData() |~ src1.rawData();
728  scc = sdst.rawData() ? 1 : 0;
729 
730  sdst.write();
731  scc.write();
732  } // execute
733  // --- Inst_SOP2__S_ORN2_B64 class methods ---
734 
736  : Inst_SOP2(iFmt, "s_orn2_b64")
737  {
738  setFlag(ALU);
739  } // Inst_SOP2__S_ORN2_B64
740 
742  {
743  } // ~Inst_SOP2__S_ORN2_B64
744 
745  // --- description from .arch file ---
746  // D.u64 = S0.u64 | ~S1.u64;
747  // SCC = 1 if result is non-zero.
748  void
750  {
751  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
752  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
753  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
754  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
755 
756  src0.read();
757  src1.read();
758 
759  sdst = src0.rawData() |~ src1.rawData();
760  scc = sdst.rawData() ? 1 : 0;
761 
762  sdst.write();
763  scc.write();
764  } // execute
765  // --- Inst_SOP2__S_NAND_B32 class methods ---
766 
768  : Inst_SOP2(iFmt, "s_nand_b32")
769  {
770  setFlag(ALU);
771  } // Inst_SOP2__S_NAND_B32
772 
774  {
775  } // ~Inst_SOP2__S_NAND_B32
776 
777  // --- description from .arch file ---
778  // D.u = ~(S0.u & S1.u);
779  // SCC = 1 if result is non-zero.
780  void
782  {
783  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
784  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
785  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
786  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
787 
788  src0.read();
789  src1.read();
790 
791  sdst = ~(src0.rawData() & src1.rawData());
792  scc = sdst.rawData() ? 1 : 0;
793 
794  sdst.write();
795  scc.write();
796  } // execute
797  // --- Inst_SOP2__S_NAND_B64 class methods ---
798 
800  : Inst_SOP2(iFmt, "s_nand_b64")
801  {
802  setFlag(ALU);
803  } // Inst_SOP2__S_NAND_B64
804 
806  {
807  } // ~Inst_SOP2__S_NAND_B64
808 
809  // --- description from .arch file ---
810  // D.u64 = ~(S0.u64 & S1.u64);
811  // SCC = 1 if result is non-zero.
812  void
814  {
815  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
816  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
817  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
818  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
819 
820  src0.read();
821  src1.read();
822 
823  sdst = ~(src0.rawData() & src1.rawData());
824  scc = sdst.rawData() ? 1 : 0;
825 
826  sdst.write();
827  scc.write();
828  } // execute
829  // --- Inst_SOP2__S_NOR_B32 class methods ---
830 
832  : Inst_SOP2(iFmt, "s_nor_b32")
833  {
834  setFlag(ALU);
835  } // Inst_SOP2__S_NOR_B32
836 
838  {
839  } // ~Inst_SOP2__S_NOR_B32
840 
841  // --- description from .arch file ---
842  // D.u = ~(S0.u | S1.u);
843  // SCC = 1 if result is non-zero.
844  void
846  {
847  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
848  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
849  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
850  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
851 
852  src0.read();
853  src1.read();
854 
855  sdst = ~(src0.rawData() | src1.rawData());
856  scc = sdst.rawData() ? 1 : 0;
857 
858  sdst.write();
859  scc.write();
860  } // execute
861  // --- Inst_SOP2__S_NOR_B64 class methods ---
862 
864  : Inst_SOP2(iFmt, "s_nor_b64")
865  {
866  setFlag(ALU);
867  } // Inst_SOP2__S_NOR_B64
868 
870  {
871  } // ~Inst_SOP2__S_NOR_B64
872 
873  // --- description from .arch file ---
874  // D.u64 = ~(S0.u64 | S1.u64);
875  // SCC = 1 if result is non-zero.
876  void
878  {
879  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
880  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
881  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
882  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
883 
884  src0.read();
885  src1.read();
886 
887  sdst = ~(src0.rawData() | src1.rawData());
888  scc = sdst.rawData() ? 1 : 0;
889 
890  sdst.write();
891  scc.write();
892  } // execute
893  // --- Inst_SOP2__S_XNOR_B32 class methods ---
894 
896  : Inst_SOP2(iFmt, "s_xnor_b32")
897  {
898  setFlag(ALU);
899  } // Inst_SOP2__S_XNOR_B32
900 
902  {
903  } // ~Inst_SOP2__S_XNOR_B32
904 
905  // --- description from .arch file ---
906  // D.u = ~(S0.u ^ S1.u);
907  // SCC = 1 if result is non-zero.
908  void
910  {
911  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
912  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
913  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
914  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
915 
916  src0.read();
917  src1.read();
918 
919  sdst = ~(src0.rawData() ^ src1.rawData());
920  scc = sdst.rawData() ? 1 : 0;
921 
922  sdst.write();
923  scc.write();
924  } // execute
925  // --- Inst_SOP2__S_XNOR_B64 class methods ---
926 
928  : Inst_SOP2(iFmt, "s_xnor_b64")
929  {
930  setFlag(ALU);
931  } // Inst_SOP2__S_XNOR_B64
932 
934  {
935  } // ~Inst_SOP2__S_XNOR_B64
936 
937  // --- description from .arch file ---
938  // D.u64 = ~(S0.u64 ^ S1.u64);
939  // SCC = 1 if result is non-zero.
940  void
942  {
943  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
944  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
945  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
946  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
947 
948  src0.read();
949  src1.read();
950 
951  sdst = ~(src0.rawData() ^ src1.rawData());
952  scc = sdst.rawData() ? 1 : 0;
953 
954  sdst.write();
955  scc.write();
956  } // execute
957  // --- Inst_SOP2__S_LSHL_B32 class methods ---
958 
960  : Inst_SOP2(iFmt, "s_lshl_b32")
961  {
962  setFlag(ALU);
963  } // Inst_SOP2__S_LSHL_B32
964 
966  {
967  } // ~Inst_SOP2__S_LSHL_B32
968 
969  // --- description from .arch file ---
970  // D.u = S0.u << S1.u[4:0];
971  // SCC = 1 if result is non-zero.
972  void
974  {
975  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
976  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
977  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
978  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
979 
980  src0.read();
981  src1.read();
982 
983  sdst = (src0.rawData() << bits(src1.rawData(), 4, 0));
984  scc = sdst.rawData() ? 1 : 0;
985 
986  sdst.write();
987  scc.write();
988  } // execute
989  // --- Inst_SOP2__S_LSHL_B64 class methods ---
990 
992  : Inst_SOP2(iFmt, "s_lshl_b64")
993  {
994  setFlag(ALU);
995  } // Inst_SOP2__S_LSHL_B64
996 
998  {
999  } // ~Inst_SOP2__S_LSHL_B64
1000 
1001  // --- description from .arch file ---
1002  // D.u64 = S0.u64 << S1.u[5:0];
1003  // SCC = 1 if result is non-zero.
1004  void
1006  {
1007  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
1008  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1009  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1010  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1011 
1012  src0.read();
1013  src1.read();
1014 
1015  sdst = (src0.rawData() << bits(src1.rawData(), 5, 0));
1016  scc = sdst.rawData() ? 1 : 0;
1017 
1018  sdst.write();
1019  scc.write();
1020  } // execute
1021  // --- Inst_SOP2__S_LSHR_B32 class methods ---
1022 
1024  : Inst_SOP2(iFmt, "s_lshr_b32")
1025  {
1026  setFlag(ALU);
1027  } // Inst_SOP2__S_LSHR_B32
1028 
1030  {
1031  } // ~Inst_SOP2__S_LSHR_B32
1032 
1033  // --- description from .arch file ---
1034  // D.u = S0.u >> S1.u[4:0];
1035  // SCC = 1 if result is non-zero.
1036  // The vacated bits are set to zero.
1037  void
1039  {
1040  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1041  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1042  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1043  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1044 
1045  src0.read();
1046  src1.read();
1047 
1048  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0));
1049  scc = sdst.rawData() ? 1 : 0;
1050 
1051  sdst.write();
1052  scc.write();
1053  } // execute
1054  // --- Inst_SOP2__S_LSHR_B64 class methods ---
1055 
1057  : Inst_SOP2(iFmt, "s_lshr_b64")
1058  {
1059  setFlag(ALU);
1060  } // Inst_SOP2__S_LSHR_B64
1061 
1063  {
1064  } // ~Inst_SOP2__S_LSHR_B64
1065 
1066  // --- description from .arch file ---
1067  // D.u64 = S0.u64 >> S1.u[5:0];
1068  // SCC = 1 if result is non-zero.
1069  // The vacated bits are set to zero.
1070  void
1072  {
1073  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
1074  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1075  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1076  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1077 
1078  src0.read();
1079  src1.read();
1080 
1081  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0));
1082  scc = sdst.rawData() ? 1 : 0;
1083 
1084  sdst.write();
1085  scc.write();
1086  } // execute
1087  // --- Inst_SOP2__S_ASHR_I32 class methods ---
1088 
1090  : Inst_SOP2(iFmt, "s_ashr_i32")
1091  {
1092  setFlag(ALU);
1093  } // Inst_SOP2__S_ASHR_I32
1094 
1096  {
1097  } // ~Inst_SOP2__S_ASHR_I32
1098 
1099  // --- description from .arch file ---
1100  // D.i = signext(S0.i) >> S1.u[4:0];
1101  // SCC = 1 if result is non-zero.
1102  // The vacated bits are set to the sign bit of the input value.
1103  void
1105  {
1106  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1107  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1108  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1109  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1110 
1111  src0.read();
1112  src1.read();
1113 
1114  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0));
1115  scc = sdst.rawData() ? 1 : 0;
1116 
1117  sdst.write();
1118  scc.write();
1119  } // execute
1120  // --- Inst_SOP2__S_ASHR_I64 class methods ---
1121 
1123  : Inst_SOP2(iFmt, "s_ashr_i64")
1124  {
1125  setFlag(ALU);
1126  } // Inst_SOP2__S_ASHR_I64
1127 
1129  {
1130  } // ~Inst_SOP2__S_ASHR_I64
1131 
1132  // --- description from .arch file ---
1133  // D.i64 = signext(S0.i64) >> S1.u[5:0];
1134  // SCC = 1 if result is non-zero.
1135  // The vacated bits are set to the sign bit of the input value.
1136  void
1138  {
1139  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
1140  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1141  ScalarOperandI64 sdst(gpuDynInst, instData.SDST);
1142  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1143 
1144  src0.read();
1145  src1.read();
1146 
1147  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0));
1148  scc = sdst.rawData() ? 1 : 0;
1149 
1150  sdst.write();
1151  scc.write();
1152  } // execute
1153  // --- Inst_SOP2__S_BFM_B32 class methods ---
1154 
1156  : Inst_SOP2(iFmt, "s_bfm_b32")
1157  {
1158  setFlag(ALU);
1159  } // Inst_SOP2__S_BFM_B32
1160 
1162  {
1163  } // ~Inst_SOP2__S_BFM_B32
1164 
1165  // --- description from .arch file ---
1166  // D.u = ((1 << S0.u[4:0]) - 1) << S1.u[4:0] (bitfield mask).
1167  void
1169  {
1170  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1171  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1172  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1173 
1174  src0.read();
1175  src1.read();
1176 
1177  sdst = ((1 << bits(src0.rawData(), 4, 0)) - 1)
1178  << bits(src1.rawData(), 4, 0);
1179 
1180  sdst.write();
1181  } // execute
1182  // --- Inst_SOP2__S_BFM_B64 class methods ---
1183 
1185  : Inst_SOP2(iFmt, "s_bfm_b64")
1186  {
1187  setFlag(ALU);
1188  } // Inst_SOP2__S_BFM_B64
1189 
1191  {
1192  } // ~Inst_SOP2__S_BFM_B64
1193 
1194  // --- description from .arch file ---
1195  // D.u64 = ((1ULL << S0.u[5:0]) - 1) << S1.u[5:0] (bitfield mask).
1196  void
1198  {
1199  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1200  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1201  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1202 
1203  src0.read();
1204  src1.read();
1205 
1206  sdst = ((1ULL << bits(src0.rawData(), 5, 0)) - 1)
1207  << bits(src1.rawData(), 5, 0);
1208 
1209  sdst.write();
1210  } // execute
1211  // --- Inst_SOP2__S_MUL_I32 class methods ---
1212 
1214  : Inst_SOP2(iFmt, "s_mul_i32")
1215  {
1216  setFlag(ALU);
1217  } // Inst_SOP2__S_MUL_I32
1218 
1220  {
1221  } // ~Inst_SOP2__S_MUL_I32
1222 
1223  // --- description from .arch file ---
1224  // D.i = S0.i * S1.i.
1225  void
1227  {
1228  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1229  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
1230  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1231 
1232  src0.read();
1233  src1.read();
1234 
1235  sdst = src0.rawData() * src1.rawData();
1236 
1237  sdst.write();
1238  } // execute
1239  // --- Inst_SOP2__S_BFE_U32 class methods ---
1240 
1242  : Inst_SOP2(iFmt, "s_bfe_u32")
1243  {
1244  setFlag(ALU);
1245  } // Inst_SOP2__S_BFE_U32
1246 
1248  {
1249  } // ~Inst_SOP2__S_BFE_U32
1250 
1251  // --- description from .arch file ---
1252  // Bit field extract. S0 is Data, S1[4:0] is field offset, S1[22:16] is
1253  // field width.
1254  // D.u = (S0.u>>S1.u[4:0]) & ((1<<S1.u[22:16])-1);
1255  // SCC = 1 if result is non-zero.
1256  void
1258  {
1259  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1260  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1261  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1262  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1263 
1264  src0.read();
1265  src1.read();
1266 
1267  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0))
1268  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1269  scc = sdst.rawData() ? 1 : 0;
1270 
1271  sdst.write();
1272  scc.write();
1273  } // execute
1274  // --- Inst_SOP2__S_BFE_I32 class methods ---
1275 
1277  : Inst_SOP2(iFmt, "s_bfe_i32")
1278  {
1279  setFlag(ALU);
1280  } // Inst_SOP2__S_BFE_I32
1281 
1283  {
1284  } // ~Inst_SOP2__S_BFE_I32
1285 
1286  // --- description from .arch file ---
1287  // Bit field extract. S0 is Data, S1[4:0] is field offset, S1[22:16] is
1288  // field width.
1289  // D.i = (S0.i>>S1.u[4:0]) & ((1<<S1.u[22:16])-1);
1290  // Sign-extend the result;
1291  // SCC = 1 if result is non-zero.
1292  void
1294  {
1295  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1296  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1297  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1298  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1299 
1300  src0.read();
1301  src1.read();
1302 
1303  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0))
1304  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1305 
1306  // Above extracted a signed int of size src1[22:16] bits which needs
1307  // to be signed-extended. Check if the MSB of our src1[22:16]-bit
1308  // integer is 1, and sign extend it is.
1309  //
1310  // Note: The description in the Vega ISA manual does not mention to
1311  // sign-extend the result. An update description can be found in the
1312  // more recent RDNA3 manual here:
1313  // https://developer.amd.com/wp-content/resources/
1314  // RDNA3_Shader_ISA_December2022.pdf
1315  if (sdst.rawData() >> (bits(src1.rawData(), 22, 16) - 1)) {
1316  sdst = sdst.rawData()
1317  | (0xffffffff << bits(src1.rawData(), 22, 16));
1318  }
1319 
1320  scc = sdst.rawData() ? 1 : 0;
1321 
1322  sdst.write();
1323  scc.write();
1324  } // execute
1325  // --- Inst_SOP2__S_BFE_U64 class methods ---
1326 
1328  : Inst_SOP2(iFmt, "s_bfe_u64")
1329  {
1330  setFlag(ALU);
1331  } // Inst_SOP2__S_BFE_U64
1332 
1334  {
1335  } // ~Inst_SOP2__S_BFE_U64
1336 
1337  // --- description from .arch file ---
1338  // Bit field extract. S0 is Data, S1[5:0] is field offset, S1[22:16] is
1339  // field width.
1340  // D.u64 = (S0.u64>>S1.u[5:0]) & ((1<<S1.u[22:16])-1);
1341  // SCC = 1 if result is non-zero.
1342  void
1344  {
1345  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
1346  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1347  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1348  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1349 
1350  src0.read();
1351  src1.read();
1352 
1353  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0))
1354  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1355  scc = sdst.rawData() ? 1 : 0;
1356 
1357  sdst.write();
1358  scc.write();
1359  } // execute
1360  // --- Inst_SOP2__S_BFE_I64 class methods ---
1361 
1363  : Inst_SOP2(iFmt, "s_bfe_i64")
1364  {
1365  setFlag(ALU);
1366  } // Inst_SOP2__S_BFE_I64
1367 
1369  {
1370  } // ~Inst_SOP2__S_BFE_I64
1371 
1372  // --- description from .arch file ---
1373  // Bit field extract. S0 is Data, S1[5:0] is field offset, S1[22:16] is
1374  // field width.
1375  // D.i64 = (S0.i64>>S1.u[5:0]) & ((1<<S1.u[22:16])-1);
1376  // Sign-extend result;
1377  // SCC = 1 if result is non-zero.
1378  void
1380  {
1381  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
1382  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1383  ScalarOperandI64 sdst(gpuDynInst, instData.SDST);
1384  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1385 
1386  src0.read();
1387  src1.read();
1388 
1389  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0))
1390  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1391 
1392  // Above extracted a signed int of size src1[22:16] bits which needs
1393  // to be signed-extended. Check if the MSB of our src1[22:16]-bit
1394  // integer is 1, and sign extend it is.
1395  if (sdst.rawData() >> (bits(src1.rawData(), 22, 16) - 1)) {
1396  sdst = sdst.rawData()
1397  | 0xffffffffffffffff << bits(src1.rawData(), 22, 16);
1398  }
1399  scc = sdst.rawData() ? 1 : 0;
1400 
1401  sdst.write();
1402  scc.write();
1403  } // execute
1404  // --- Inst_SOP2__S_CBRANCH_G_FORK class methods ---
1405 
1407  : Inst_SOP2(iFmt, "s_cbranch_g_fork")
1408  {
1409  setFlag(Branch);
1410  } // Inst_SOP2__S_CBRANCH_G_FORK
1411 
1413  {
1414  } // ~Inst_SOP2__S_CBRANCH_G_FORK
1415 
1416  // --- description from .arch file ---
1417  // mask_pass = S0.u64 & EXEC;
1418  // mask_fail = ~S0.u64 & EXEC;
1419  // if(mask_pass == EXEC)
1420  // PC = S1.u64;
1421  // elsif(mask_fail == EXEC)
1422  // PC += 4;
1423  // elsif(bitcount(mask_fail) < bitcount(mask_pass))
1424  // EXEC = mask_fail;
1425  // SGPR[CSP*4] = { S1.u64, mask_pass };
1426  // CSP++;
1427  // PC += 4;
1428  // else
1429  // EXEC = mask_pass;
1430  // SGPR[CSP*4] = { PC + 4, mask_fail };
1431  // CSP++;
1432  // PC = S1.u64;
1433  // end.
1434  // Conditional branch using branch-stack.
1435  // S0 = compare mask(vcc or any sgpr) and
1436  // S1 = 64-bit byte address of target instruction.
1437  // See also S_CBRANCH_JOIN.
1438  void
1440  {
1442  } // execute
1443  // --- Inst_SOP2__S_ABSDIFF_I32 class methods ---
1444 
1446  : Inst_SOP2(iFmt, "s_absdiff_i32")
1447  {
1448  setFlag(ALU);
1449  } // Inst_SOP2__S_ABSDIFF_I32
1450 
1452  {
1453  } // ~Inst_SOP2__S_ABSDIFF_I32
1454 
1455  // --- description from .arch file ---
1456  // D.i = S0.i - S1.i;
1457  // if(D.i < 0) then D.i = -D.i;
1458  // SCC = 1 if result is non-zero.
1459  // Compute the absolute value of difference between two values.
1460  void
1462  {
1463  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1464  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
1465  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1466  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1467 
1468  sdst = std::abs(src0.rawData() - src1.rawData());
1469  scc = sdst.rawData() ? 1 : 0;
1470 
1471  sdst.write();
1472  scc.write();
1473  } // execute
1474  // --- Inst_SOP2__S_RFE_RESTORE_B64 class methods ---
1475 
1477  InFmt_SOP2 *iFmt)
1478  : Inst_SOP2(iFmt, "s_rfe_restore_b64")
1479  {
1480  } // Inst_SOP2__S_RFE_RESTORE_B64
1481 
1483  {
1484  } // ~Inst_SOP2__S_RFE_RESTORE_B64
1485 
1486  // --- description from .arch file ---
1487  // PRIV = 0;
1488  // PC = S0.u64;
1489  // INST_ATC = S1.u32[0].
1490  // Return from exception handler and continue, possibly changing the
1491  // --- instruction ATC mode.
1492  // This instruction may only be used within a trap handler.
1493  // Use this instruction when the main program may be in a different memory
1494  // --- space than the trap handler.
1495  void
1497  {
1499  } // execute
1500  // --- Inst_SOP2__S_MUL_HI_U32 class methods ---
1501 
1503  : Inst_SOP2(iFmt, "s_mul_hi_u32")
1504  {
1505  setFlag(ALU);
1506  } // Inst_SOP2__S_MUL_HI_U32
1507 
1509  {
1510  } // ~Inst_SOP2__S_MUL_HI_U32
1511 
1512  // --- description from .arch file ---
1513  // D.u = (S0.u * S1.u) >> 32;
1514  void
1516  {
1517  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1518  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1519  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1520 
1521  src0.read();
1522  src1.read();
1523 
1524  VecElemU64 tmp_dst =
1525  ((VecElemU64)src0.rawData() * (VecElemU64)src1.rawData());
1526  sdst = (tmp_dst >> 32);
1527 
1528  sdst.write();
1529  } // execute
1530  // --- Inst_SOP2__S_MUL_HI_I32 class methods ---
1531 
1533  : Inst_SOP2(iFmt, "s_mul_hi_i32")
1534  {
1535  setFlag(ALU);
1536  } // Inst_SOP2__S_MUL_HI_I32
1537 
1539  {
1540  } // ~Inst_SOP2__S_MUL_HI_I32
1541 
1542  // --- description from .arch file ---
1543  // D.u = (S0.u * S1.u) >> 32;
1544  void
1546  {
1547  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1548  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
1549  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1550 
1551  src0.read();
1552  src1.read();
1553 
1554  VecElemI64 tmp_src0 =
1555  sext<std::numeric_limits<VecElemI64>::digits>(src0.rawData());
1556  VecElemI64 tmp_src1 =
1557  sext<std::numeric_limits<VecElemI64>::digits>(src1.rawData());
1558  sdst = (VecElemI32)((tmp_src0 * tmp_src1) >> 32);
1559 
1560  sdst.write();
1561  } // execute
1562  // --- Inst_SOPK__S_MOVK_I32 class methods ---
1563 
1565  : Inst_SOPK(iFmt, "s_movk_i32")
1566  {
1567  setFlag(ALU);
1568  } // Inst_SOPK__S_MOVK_I32
1569 
1571  {
1572  } // ~Inst_SOPK__S_MOVK_I32
1573 
1574  // --- description from .arch file ---
1575  // D.i = signext(SIMM16) (sign extension).
1576  void
1578  {
1579  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1580  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1581 
1582  sdst = simm16;
1583 
1584  sdst.write();
1585  } // execute
1586  // --- Inst_SOPK__S_CMOVK_I32 class methods ---
1587 
1589  : Inst_SOPK(iFmt, "s_cmovk_i32")
1590  {
1591  setFlag(ALU);
1592  } // Inst_SOPK__S_CMOVK_I32
1593 
1595  {
1596  } // ~Inst_SOPK__S_CMOVK_I32
1597 
1598  // --- description from .arch file ---
1599  // if(SCC) then D.i = signext(SIMM16);
1600  // else NOP.
1601  // Conditional move with sign extension.
1602  void
1604  {
1605  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1606  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1607  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
1608 
1609  scc.read();
1610 
1611  if (scc.rawData()) {
1612  sdst = simm16;
1613  sdst.write();
1614  }
1615  } // execute
1616  // --- Inst_SOPK__S_CMPK_EQ_I32 class methods ---
1617 
1619  : Inst_SOPK(iFmt, "s_cmpk_eq_i32")
1620  {
1621  setFlag(ALU);
1622  } // Inst_SOPK__S_CMPK_EQ_I32
1623 
1625  {
1626  } // ~Inst_SOPK__S_CMPK_EQ_I32
1627 
1628  // --- description from .arch file ---
1629  // SCC = (S0.i == signext(SIMM16)).
1630  void
1632  {
1633  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1634  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1635  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1636 
1637  src.read();
1638 
1639  scc = (src.rawData() == simm16) ? 1 : 0;
1640 
1641  scc.write();
1642  } // execute
1643  // --- Inst_SOPK__S_CMPK_LG_I32 class methods ---
1644 
1646  : Inst_SOPK(iFmt, "s_cmpk_lg_i32")
1647  {
1648  setFlag(ALU);
1649  } // Inst_SOPK__S_CMPK_LG_I32
1650 
1652  {
1653  } // ~Inst_SOPK__S_CMPK_LG_I32
1654 
1655  // --- description from .arch file ---
1656  // SCC = (S0.i != signext(SIMM16)).
1657  void
1659  {
1660  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1661  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1662  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1663 
1664  src.read();
1665 
1666  scc = (src.rawData() != simm16) ? 1 : 0;
1667 
1668  scc.write();
1669  } // execute
1670  // --- Inst_SOPK__S_CMPK_GT_I32 class methods ---
1671 
1673  : Inst_SOPK(iFmt, "s_cmpk_gt_i32")
1674  {
1675  setFlag(ALU);
1676  } // Inst_SOPK__S_CMPK_GT_I32
1677 
1679  {
1680  } // ~Inst_SOPK__S_CMPK_GT_I32
1681 
1682  // --- description from .arch file ---
1683  // SCC = (S0.i > signext(SIMM16)).
1684  void
1686  {
1687  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1688  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1689  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1690 
1691  src.read();
1692 
1693  scc = (src.rawData() > simm16) ? 1 : 0;
1694 
1695  scc.write();
1696  } // execute
1697  // --- Inst_SOPK__S_CMPK_GE_I32 class methods ---
1698 
1700  : Inst_SOPK(iFmt, "s_cmpk_ge_i32")
1701  {
1702  setFlag(ALU);
1703  } // Inst_SOPK__S_CMPK_GE_I32
1704 
1706  {
1707  } // ~Inst_SOPK__S_CMPK_GE_I32
1708 
1709  // --- description from .arch file ---
1710  // SCC = (S0.i >= signext(SIMM16)).
1711  void
1713  {
1714  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1715  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1716  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1717 
1718  src.read();
1719 
1720  scc = (src.rawData() >= simm16) ? 1 : 0;
1721 
1722  scc.write();
1723  } // execute
1724  // --- Inst_SOPK__S_CMPK_LT_I32 class methods ---
1725 
1727  : Inst_SOPK(iFmt, "s_cmpk_lt_i32")
1728  {
1729  setFlag(ALU);
1730  } // Inst_SOPK__S_CMPK_LT_I32
1731 
1733  {
1734  } // ~Inst_SOPK__S_CMPK_LT_I32
1735 
1736  // --- description from .arch file ---
1737  // SCC = (S0.i < signext(SIMM16)).
1738  void
1740  {
1741  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1742  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1743  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1744 
1745  src.read();
1746 
1747  scc = (src.rawData() < simm16) ? 1 : 0;
1748 
1749  scc.write();
1750  } // execute
1751  // --- Inst_SOPK__S_CMPK_LE_I32 class methods ---
1752 
1754  : Inst_SOPK(iFmt, "s_cmpk_le_i32")
1755  {
1756  setFlag(ALU);
1757  } // Inst_SOPK__S_CMPK_LE_I32
1758 
1760  {
1761  } // ~Inst_SOPK__S_CMPK_LE_I32
1762 
1763  // --- description from .arch file ---
1764  // SCC = (S0.i <= signext(SIMM16)).
1765  void
1767  {
1768  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1769  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1770  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1771 
1772  src.read();
1773 
1774  scc = (src.rawData() <= simm16) ? 1 : 0;
1775 
1776  scc.write();
1777  } // execute
1778  // --- Inst_SOPK__S_CMPK_EQ_U32 class methods ---
1779 
1781  : Inst_SOPK(iFmt, "s_cmpk_eq_u32")
1782  {
1783  setFlag(ALU);
1784  } // Inst_SOPK__S_CMPK_EQ_U32
1785 
1787  {
1788  } // ~Inst_SOPK__S_CMPK_EQ_U32
1789 
1790  // --- description from .arch file ---
1791  // SCC = (S0.u == SIMM16).
1792  void
1794  {
1796  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1797  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1798 
1799  src.read();
1800 
1801  scc = (src.rawData() == simm16) ? 1 : 0;
1802 
1803  scc.write();
1804  } // execute
1805  // --- Inst_SOPK__S_CMPK_LG_U32 class methods ---
1806 
1808  : Inst_SOPK(iFmt, "s_cmpk_lg_u32")
1809  {
1810  setFlag(ALU);
1811  } // Inst_SOPK__S_CMPK_LG_U32
1812 
1814  {
1815  } // ~Inst_SOPK__S_CMPK_LG_U32
1816 
1817  // --- description from .arch file ---
1818  // SCC = (S0.u != SIMM16).
1819  void
1821  {
1823  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1824  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1825 
1826  src.read();
1827 
1828  scc = (src.rawData() != simm16) ? 1 : 0;
1829 
1830  scc.write();
1831  } // execute
1832  // --- Inst_SOPK__S_CMPK_GT_U32 class methods ---
1833 
1835  : Inst_SOPK(iFmt, "s_cmpk_gt_u32")
1836  {
1837  setFlag(ALU);
1838  } // Inst_SOPK__S_CMPK_GT_U32
1839 
1841  {
1842  } // ~Inst_SOPK__S_CMPK_GT_U32
1843 
1844  // --- description from .arch file ---
1845  // SCC = (S0.u > SIMM16).
1846  void
1848  {
1850  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1851  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1852 
1853  src.read();
1854 
1855  scc = (src.rawData() > simm16) ? 1 : 0;
1856 
1857  scc.write();
1858  } // execute
1859  // --- Inst_SOPK__S_CMPK_GE_U32 class methods ---
1860 
1862  : Inst_SOPK(iFmt, "s_cmpk_ge_u32")
1863  {
1864  setFlag(ALU);
1865  } // Inst_SOPK__S_CMPK_GE_U32
1866 
1868  {
1869  } // ~Inst_SOPK__S_CMPK_GE_U32
1870 
1871  // --- description from .arch file ---
1872  // SCC = (S0.u >= SIMM16).
1873  void
1875  {
1877  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1878  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1879 
1880  src.read();
1881 
1882  scc = (src.rawData() >= simm16) ? 1 : 0;
1883 
1884  scc.write();
1885  } // execute
1886  // --- Inst_SOPK__S_CMPK_LT_U32 class methods ---
1887 
1889  : Inst_SOPK(iFmt, "s_cmpk_lt_u32")
1890  {
1891  setFlag(ALU);
1892  } // Inst_SOPK__S_CMPK_LT_U32
1893 
1895  {
1896  } // ~Inst_SOPK__S_CMPK_LT_U32
1897 
1898  // --- description from .arch file ---
1899  // SCC = (S0.u < SIMM16).
1900  void
1902  {
1904  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1905  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1906 
1907  src.read();
1908 
1909  scc = (src.rawData() < simm16) ? 1 : 0;
1910 
1911  scc.write();
1912  } // execute
1913  // --- Inst_SOPK__S_CMPK_LE_U32 class methods ---
1914 
1916  : Inst_SOPK(iFmt, "s_cmpk_le_u32")
1917  {
1918  setFlag(ALU);
1919  } // Inst_SOPK__S_CMPK_LE_U32
1920 
1922  {
1923  } // ~Inst_SOPK__S_CMPK_LE_U32
1924 
1925  // --- description from .arch file ---
1926  // SCC = (S0.u <= SIMM16).
1927  void
1929  {
1931  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1932  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1933 
1934  src.read();
1935 
1936  scc = (src.rawData() <= simm16) ? 1 : 0;
1937 
1938  scc.write();
1939  } // execute
1940  // --- Inst_SOPK__S_ADDK_I32 class methods ---
1941 
1943  : Inst_SOPK(iFmt, "s_addk_i32")
1944  {
1945  setFlag(ALU);
1946  } // Inst_SOPK__S_ADDK_I32
1947 
1949  {
1950  } // ~Inst_SOPK__S_ADDK_I32
1951 
1952  // --- description from .arch file ---
1953  // D.i = D.i + signext(SIMM16);
1954  // SCC = overflow.
1955  void
1957  {
1958  ScalarRegI16 simm16 = instData.SIMM16;
1959  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1960  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1961  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1962 
1963  src.read();
1964 
1965  sdst = src.rawData() + (ScalarRegI32)sext<16>(simm16);
1966  scc = (bits(src.rawData(), 31) == bits(simm16, 15)
1967  && bits(src.rawData(), 31) != bits(sdst.rawData(), 31)) ? 1 : 0;
1968 
1969  sdst.write();
1970  scc.write();
1971  } // execute
1972  // --- Inst_SOPK__S_MULK_I32 class methods ---
1973 
1975  : Inst_SOPK(iFmt, "s_mulk_i32")
1976  {
1977  setFlag(ALU);
1978  } // Inst_SOPK__S_MULK_I32
1979 
1981  {
1982  } // ~Inst_SOPK__S_MULK_I32
1983 
1984  // --- description from .arch file ---
1985  // D.i = D.i * signext(SIMM16).
1986  void
1988  {
1989  ScalarRegI16 simm16 = instData.SIMM16;
1990  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1991  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1992 
1993  src.read();
1994 
1995  sdst = src.rawData() * (ScalarRegI32)sext<16>(simm16);
1996 
1997  sdst.write();
1998  } // execute
1999  // --- Inst_SOPK__S_CBRANCH_I_FORK class methods ---
2000 
2002  : Inst_SOPK(iFmt, "s_cbranch_i_fork")
2003  {
2004  setFlag(Branch);
2005  } // Inst_SOPK__S_CBRANCH_I_FORK
2006 
2008  {
2009  } // ~Inst_SOPK__S_CBRANCH_I_FORK
2010 
2011  // --- description from .arch file ---
2012  // mask_pass = S0.u64 & EXEC;
2013  // mask_fail = ~S0.u64 & EXEC;
2014  // target_addr = PC + signext(SIMM16 * 4) + 4;
2015  // if(mask_pass == EXEC)
2016  // PC = target_addr;
2017  // elsif(mask_fail == EXEC)
2018  // PC += 4;
2019  // elsif(bitcount(mask_fail) < bitcount(mask_pass))
2020  // EXEC = mask_fail;
2021  // SGPR[CSP*4] = { target_addr, mask_pass };
2022  // CSP++;
2023  // PC += 4;
2024  // else
2025  // EXEC = mask_pass;
2026  // SGPR[CSP*4] = { PC + 4, mask_fail };
2027  // CSP++;
2028  // PC = target_addr;
2029  // end.
2030  // Conditional branch using branch-stack.
2031  // S0 = compare mask(vcc or any sgpr), and
2032  // SIMM16 = signed DWORD branch offset relative to next instruction.
2033  // See also S_CBRANCH_JOIN.
2034  void
2036  {
2038  } // execute
2039  // --- Inst_SOPK__S_GETREG_B32 class methods ---
2040 
2042  : Inst_SOPK(iFmt, "s_getreg_b32")
2043  {
2044  setFlag(ALU);
2045  } // Inst_SOPK__S_GETREG_B32
2046 
2048  {
2049  } // ~Inst_SOPK__S_GETREG_B32
2050 
2051  // --- description from .arch file ---
2052  // D.u = hardware-reg. Read some or all of a hardware register into the
2053  // LSBs of D.
2054  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
2055  // is 1..32.
2056  void
2058  {
2059  ScalarRegI16 simm16 = instData.SIMM16;
2060  ScalarRegU32 hwregId = simm16 & 0x3f;
2061  ScalarRegU32 offset = (simm16 >> 6) & 31;
2062  ScalarRegU32 size = ((simm16 >> 11) & 31) + 1;
2063 
2064  ScalarRegU32 hwreg =
2065  gpuDynInst->computeUnit()->shader->getHwReg(hwregId);
2066  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2067  sdst.read();
2068 
2069  // Store value from hardware to part of the SDST.
2070  ScalarRegU32 mask = (((1U << size) - 1U) << offset);
2071  sdst = (hwreg & mask) >> offset;
2072  sdst.write();
2073  } // execute
2074  // --- Inst_SOPK__S_SETREG_B32 class methods ---
2075 
2077  : Inst_SOPK(iFmt, "s_setreg_b32")
2078  {
2079  setFlag(ALU);
2080  } // Inst_SOPK__S_SETREG_B32
2081 
2083  {
2084  } // ~Inst_SOPK__S_SETREG_B32
2085 
2086  // --- description from .arch file ---
2087  // hardware-reg = S0.u. Write some or all of the LSBs of D into a hardware
2088  // register.
2089  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
2090  // is 1..32.
2091  void
2093  {
2094  ScalarRegI16 simm16 = instData.SIMM16;
2095  ScalarRegU32 hwregId = simm16 & 0x3f;
2096  ScalarRegU32 offset = (simm16 >> 6) & 31;
2097  ScalarRegU32 size = ((simm16 >> 11) & 31) + 1;
2098 
2099  ScalarRegU32 hwreg =
2100  gpuDynInst->computeUnit()->shader->getHwReg(hwregId);
2101  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2102  sdst.read();
2103 
2104  // Store value from SDST to part of the hardware register.
2105  ScalarRegU32 mask = (((1U << size) - 1U) << offset);
2106  hwreg = ((hwreg & ~mask) | ((sdst.rawData() << offset) & mask));
2107  gpuDynInst->computeUnit()->shader->setHwReg(hwregId, hwreg);
2108 
2109  // set MODE register to control the behavior of single precision
2110  // floating-point numbers: denormal mode or round mode
2111  if (hwregId==1 && size==2
2112  && (offset==4 || offset==0)) {
2113  warn_once("Be cautious that s_setreg_b32 has no real effect "
2114  "on FP modes: %s\n", gpuDynInst->disassemble());
2115  return;
2116  }
2117 
2118  // panic if not changing MODE of floating-point numbers
2120  } // execute
2121  // --- Inst_SOPK__S_SETREG_IMM32_B32 class methods ---
2122 
2124  InFmt_SOPK *iFmt)
2125  : Inst_SOPK(iFmt, "s_setreg_imm32_b32")
2126  {
2127  setFlag(ALU);
2128  } // Inst_SOPK__S_SETREG_IMM32_B32
2129 
2131  {
2132  } // ~Inst_SOPK__S_SETREG_IMM32_B32
2133 
2134  // --- description from .arch file ---
2135  // Write some or all of the LSBs of IMM32 into a hardware register; this
2136  // --- instruction requires a 32-bit literal constant.
2137  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
2138  // is 1..32.
2139  void
2141  {
2142  ScalarRegI16 simm16 = instData.SIMM16;
2143  ScalarRegU32 hwregId = simm16 & 0x3f;
2144  ScalarRegU32 offset = (simm16 >> 6) & 31;
2145  ScalarRegU32 size = ((simm16 >> 11) & 31) + 1;
2146 
2147  ScalarRegU32 hwreg =
2148  gpuDynInst->computeUnit()->shader->getHwReg(hwregId);
2149  ScalarRegI32 simm32 = extData.imm_u32;
2150 
2151  // Store value from SIMM32 to part of the hardware register.
2152  ScalarRegU32 mask = (((1U << size) - 1U) << offset);
2153  hwreg = ((hwreg & ~mask) | ((simm32 << offset) & mask));
2154  gpuDynInst->computeUnit()->shader->setHwReg(hwregId, hwreg);
2155 
2156  // set MODE register to control the behavior of single precision
2157  // floating-point numbers: denormal mode or round mode
2158  if (hwregId==HW_REG_MODE && size==2
2159  && (offset==4 || offset==0)) {
2160  warn_once("Be cautious that s_setreg_imm32_b32 has no real effect "
2161  "on FP modes: %s\n", gpuDynInst->disassemble());
2162  return;
2163  }
2164 
2165  // panic if not changing modes of single-precision FPs
2167  } // execute
2168  // --- Inst_SOP1__S_MOV_B32 class methods ---
2169 
2171  : Inst_SOP1(iFmt, "s_mov_b32")
2172  {
2173  setFlag(ALU);
2174  } // Inst_SOP1__S_MOV_B32
2175 
2177  {
2178  } // ~Inst_SOP1__S_MOV_B32
2179 
2180  // --- description from .arch file ---
2181  // D.u = S0.u.
2182  void
2184  {
2185  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2186  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2187 
2188  src.read();
2189 
2190  sdst = src.rawData();
2191 
2192  sdst.write();
2193  } // execute
2194  // --- Inst_SOP1__S_MOV_B64 class methods ---
2195 
2197  : Inst_SOP1(iFmt, "s_mov_b64")
2198  {
2199  setFlag(ALU);
2200  } // Inst_SOP1__S_MOV_B64
2201 
2203  {
2204  } // ~Inst_SOP1__S_MOV_B64
2205 
2206  // --- description from .arch file ---
2207  // D.u64 = S0.u64.
2208  void
2210  {
2211  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2212  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2213 
2214  src.read();
2215 
2216  sdst = src.rawData();
2217 
2218  sdst.write();
2219  } // execute
2220  // --- Inst_SOP1__S_CMOV_B32 class methods ---
2221 
2223  : Inst_SOP1(iFmt, "s_cmov_b32")
2224  {
2225  setFlag(ALU);
2226  } // Inst_SOP1__S_CMOV_B32
2227 
2229  {
2230  } // ~Inst_SOP1__S_CMOV_B32
2231 
2232  // --- description from .arch file ---
2233  // (SCC) then D.u = S0.u;
2234  // else NOP.
2235  // Conditional move.
2236  void
2238  {
2239  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2240  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2241  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2242 
2243  src.read();
2244  scc.read();
2245 
2246  if (scc.rawData()) {
2247  sdst = src.rawData();
2248  sdst.write();
2249  }
2250  } // execute
2251  // --- Inst_SOP1__S_CMOV_B64 class methods ---
2252 
2254  : Inst_SOP1(iFmt, "s_cmov_b64")
2255  {
2256  setFlag(ALU);
2257  } // Inst_SOP1__S_CMOV_B64
2258 
2260  {
2261  } // ~Inst_SOP1__S_CMOV_B64
2262 
2263  // --- description from .arch file ---
2264  // if(SCC) then D.u64 = S0.u64;
2265  // else NOP.
2266  // Conditional move.
2267  void
2269  {
2270  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2271  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2272  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2273 
2274  src.read();
2275  scc.read();
2276 
2277  if (scc.rawData()) {
2278  sdst = src.rawData();
2279  sdst.write();
2280  }
2281  } // execute
2282  // --- Inst_SOP1__S_NOT_B32 class methods ---
2283 
2285  : Inst_SOP1(iFmt, "s_not_b32")
2286  {
2287  setFlag(ALU);
2288  } // Inst_SOP1__S_NOT_B32
2289 
2291  {
2292  } // ~Inst_SOP1__S_NOT_B32
2293 
2294  // --- description from .arch file ---
2295  // D.u = ~S0.u;
2296  // SCC = 1 if result is non-zero.
2297  // Bitwise negation.
2298  void
2300  {
2301  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2302  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2303  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2304 
2305  src.read();
2306 
2307  sdst = ~src.rawData();
2308 
2309  scc = sdst.rawData() ? 1 : 0;
2310 
2311  sdst.write();
2312  scc.write();
2313  } // execute
2314  // --- Inst_SOP1__S_NOT_B64 class methods ---
2315 
2317  : Inst_SOP1(iFmt, "s_not_b64")
2318  {
2319  setFlag(ALU);
2320  } // Inst_SOP1__S_NOT_B64
2321 
2323  {
2324  } // ~Inst_SOP1__S_NOT_B64
2325 
2326  // --- description from .arch file ---
2327  // D.u64 = ~S0.u64;
2328  // SCC = 1 if result is non-zero.
2329  // Bitwise negation.
2330  void
2332  {
2333  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2334  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2335  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2336 
2337  src.read();
2338 
2339  sdst = ~src.rawData();
2340  scc = sdst.rawData() ? 1 : 0;
2341 
2342  sdst.write();
2343  scc.write();
2344  } // execute
2345  // --- Inst_SOP1__S_WQM_B32 class methods ---
2346 
2348  : Inst_SOP1(iFmt, "s_wqm_b32")
2349  {
2350  setFlag(ALU);
2351  } // Inst_SOP1__S_WQM_B32
2352 
2354  {
2355  } // ~Inst_SOP1__S_WQM_B32
2356 
2357  // --- description from .arch file ---
2358  // D[i] = (S0[(i & ~3):(i | 3)] != 0);
2359  // Computes whole quad mode for an active/valid mask.
2360  // SCC = 1 if result is non-zero.
2361  void
2363  {
2364  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2365  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2366  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2367 
2368  src.read();
2369 
2370  sdst = wholeQuadMode(src.rawData());
2371  scc = sdst.rawData() ? 1 : 0;
2372 
2373  sdst.write();
2374  scc.write();
2375  } // execute
2376  // --- Inst_SOP1__S_WQM_B64 class methods ---
2377 
2379  : Inst_SOP1(iFmt, "s_wqm_b64")
2380  {
2381  setFlag(ALU);
2382  } // Inst_SOP1__S_WQM_B64
2383 
2385  {
2386  } // ~Inst_SOP1__S_WQM_B64
2387 
2388  // --- description from .arch file ---
2389  // D[i] = (S0[(i & ~3):(i | 3)] != 0);
2390  // Computes whole quad mode for an active/valid mask.
2391  // SCC = 1 if result is non-zero.
2392  void
2394  {
2395  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2396  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2397  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2398 
2399  src.read();
2400 
2401  sdst = wholeQuadMode(src.rawData());
2402  scc = sdst.rawData() ? 1 : 0;
2403 
2404  sdst.write();
2405  scc.write();
2406  } // execute
2407  // --- Inst_SOP1__S_BREV_B32 class methods ---
2408 
2410  : Inst_SOP1(iFmt, "s_brev_b32")
2411  {
2412  setFlag(ALU);
2413  } // Inst_SOP1__S_BREV_B32
2414 
2416  {
2417  } // ~Inst_SOP1__S_BREV_B32
2418 
2419  // --- description from .arch file ---
2420  // D.u[31:0] = S0.u[0:31] (reverse bits).
2421  void
2423  {
2424  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2425  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2426 
2427  src.read();
2428 
2429  sdst = reverseBits(src.rawData());
2430 
2431  sdst.write();
2432  } // execute
2433  // --- Inst_SOP1__S_BREV_B64 class methods ---
2434 
2436  : Inst_SOP1(iFmt, "s_brev_b64")
2437  {
2438  setFlag(ALU);
2439  } // Inst_SOP1__S_BREV_B64
2440 
2442  {
2443  } // ~Inst_SOP1__S_BREV_B64
2444 
2445  // --- description from .arch file ---
2446  // D.u64[63:0] = S0.u64[0:63] (reverse bits).
2447  void
2449  {
2450  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2451  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2452 
2453  src.read();
2454 
2455  sdst = reverseBits(src.rawData());
2456 
2457  sdst.write();
2458  } // execute
2459  // --- Inst_SOP1__S_BCNT0_I32_B32 class methods ---
2460 
2462  : Inst_SOP1(iFmt, "s_bcnt0_i32_b32")
2463  {
2464  setFlag(ALU);
2465  } // Inst_SOP1__S_BCNT0_I32_B32
2466 
2468  {
2469  } // ~Inst_SOP1__S_BCNT0_I32_B32
2470 
2471  // --- description from .arch file ---
2472  // D.i = CountZeroBits(S0.u);
2473  // SCC = 1 if result is non-zero.
2474  void
2476  {
2477  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2478  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2479  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2480 
2481  src.read();
2482 
2483  sdst = countZeroBits(src.rawData());
2484  scc = sdst.rawData() ? 1 : 0;
2485 
2486  sdst.write();
2487  scc.write();
2488  } // execute
2489  // --- Inst_SOP1__S_BCNT0_I32_B64 class methods ---
2490 
2492  : Inst_SOP1(iFmt, "s_bcnt0_i32_b64")
2493  {
2494  setFlag(ALU);
2495  } // Inst_SOP1__S_BCNT0_I32_B64
2496 
2498  {
2499  } // ~Inst_SOP1__S_BCNT0_I32_B64
2500 
2501  // --- description from .arch file ---
2502  // D.i = CountZeroBits(S0.u64);
2503  // SCC = 1 if result is non-zero.
2504  void
2506  {
2507  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2508  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2509  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2510 
2511  src.read();
2512 
2513  sdst = countZeroBits(src.rawData());
2514  scc = sdst.rawData() ? 1 : 0;
2515 
2516  sdst.write();
2517  scc.write();
2518  } // execute
2519  // --- Inst_SOP1__S_BCNT1_I32_B32 class methods ---
2520 
2522  : Inst_SOP1(iFmt, "s_bcnt1_i32_b32")
2523  {
2524  setFlag(ALU);
2525  } // Inst_SOP1__S_BCNT1_I32_B32
2526 
2528  {
2529  } // ~Inst_SOP1__S_BCNT1_I32_B32
2530 
2531  // --- description from .arch file ---
2532  // D.i = CountOneBits(S0.u);
2533  // SCC = 1 if result is non-zero.
2534  void
2536  {
2537  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2538  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2539  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2540 
2541  src.read();
2542 
2543  sdst = popCount(src.rawData());
2544  scc = sdst.rawData() ? 1 : 0;
2545 
2546  sdst.write();
2547  scc.write();
2548  } // execute
2549  // --- Inst_SOP1__S_BCNT1_I32_B64 class methods ---
2550 
2552  : Inst_SOP1(iFmt, "s_bcnt1_i32_b64")
2553  {
2554  setFlag(ALU);
2555  } // Inst_SOP1__S_BCNT1_I32_B64
2556 
2558  {
2559  } // ~Inst_SOP1__S_BCNT1_I32_B64
2560 
2561  // --- description from .arch file ---
2562  // D.i = CountOneBits(S0.u64);
2563  // SCC = 1 if result is non-zero.
2564  void
2566  {
2567  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2568  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2569  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2570 
2571  src.read();
2572 
2573  sdst = popCount(src.rawData());
2574  scc = sdst.rawData() ? 1 : 0;
2575 
2576  sdst.write();
2577  scc.write();
2578  } // execute
2579  // --- Inst_SOP1__S_FF0_I32_B32 class methods ---
2580 
2582  : Inst_SOP1(iFmt, "s_ff0_i32_b32")
2583  {
2584  setFlag(ALU);
2585  } // Inst_SOP1__S_FF0_I32_B32
2586 
2588  {
2589  } // ~Inst_SOP1__S_FF0_I32_B32
2590 
2591  // --- description from .arch file ---
2592  // D.i = FindFirstZero(S0.u);
2593  // If no zeros are found, return -1.
2594  // Returns the bit position of the first zero from the LSB.
2595  void
2597  {
2598  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2599  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2600 
2601  src.read();
2602 
2603  sdst = findFirstZero(src.rawData());
2604 
2605  sdst.write();
2606  } // execute
2607  // --- Inst_SOP1__S_FF0_I32_B64 class methods ---
2608 
2610  : Inst_SOP1(iFmt, "s_ff0_i32_b64")
2611  {
2612  setFlag(ALU);
2613  } // Inst_SOP1__S_FF0_I32_B64
2614 
2616  {
2617  } // ~Inst_SOP1__S_FF0_I32_B64
2618 
2619  // --- description from .arch file ---
2620  // D.i = FindFirstZero(S0.u64);
2621  // If no zeros are found, return -1.
2622  // Returns the bit position of the first zero from the LSB.
2623  void
2625  {
2626  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2627  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2628 
2629  src.read();
2630 
2631  sdst = findFirstZero(src.rawData());
2632 
2633  sdst.write();
2634  } // execute
2635  // --- Inst_SOP1__S_FF1_I32_B32 class methods ---
2636 
2638  : Inst_SOP1(iFmt, "s_ff1_i32_b32")
2639  {
2640  setFlag(ALU);
2641  } // Inst_SOP1__S_FF1_I32_B32
2642 
2644  {
2645  } // ~Inst_SOP1__S_FF1_I32_B32
2646 
2647  // --- description from .arch file ---
2648  // D.i = FindFirstOne(S0.u);
2649  // If no ones are found, return -1.
2650  // Returns the bit position of the first one from the LSB.
2651  void
2653  {
2654  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2655  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2656 
2657  src.read();
2658 
2659  sdst = findFirstOne(src.rawData());
2660 
2661  sdst.write();
2662  } // execute
2663  // --- Inst_SOP1__S_FF1_I32_B64 class methods ---
2664 
2666  : Inst_SOP1(iFmt, "s_ff1_i32_b64")
2667  {
2668  setFlag(ALU);
2669  } // Inst_SOP1__S_FF1_I32_B64
2670 
2672  {
2673  } // ~Inst_SOP1__S_FF1_I32_B64
2674 
2675  // --- description from .arch file ---
2676  // D.i = FindFirstOne(S0.u64);
2677  // If no ones are found, return -1.
2678  // Returns the bit position of the first one from the LSB.
2679  void
2681  {
2682  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2683  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2684 
2685  src.read();
2686 
2687  sdst = findFirstOne(src.rawData());
2688 
2689  sdst.write();
2690  } // execute
2691  // --- Inst_SOP1__S_FLBIT_I32_B32 class methods ---
2692 
2694  : Inst_SOP1(iFmt, "s_flbit_i32_b32")
2695  {
2696  setFlag(ALU);
2697  } // Inst_SOP1__S_FLBIT_I32_B32
2698 
2700  {
2701  } // ~Inst_SOP1__S_FLBIT_I32_B32
2702 
2703  // --- description from .arch file ---
2704  // D.i = FindFirstOne(S0.u);
2705  // If no ones are found, return -1.
2706  // Counts how many zeros before the first one starting from the MSB.
2707  void
2709  {
2710  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2711  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2712 
2713  src.read();
2714 
2715  sdst = countZeroBitsMsb(src.rawData());
2716 
2717  sdst.write();
2718  } // execute
2719  // --- Inst_SOP1__S_FLBIT_I32_B64 class methods ---
2720 
2722  : Inst_SOP1(iFmt, "s_flbit_i32_b64")
2723  {
2724  setFlag(ALU);
2725  } // Inst_SOP1__S_FLBIT_I32_B64
2726 
2728  {
2729  } // ~Inst_SOP1__S_FLBIT_I32_B64
2730 
2731  // --- description from .arch file ---
2732  // D.i = FindFirstOne(S0.u64);
2733  // If no ones are found, return -1.
2734  // Counts how many zeros before the first one starting from the MSB.
2735  void
2737  {
2738  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2739  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2740 
2741  src.read();
2742 
2743  sdst = countZeroBitsMsb(src.rawData());
2744 
2745  sdst.write();
2746  } // execute
2747  // --- Inst_SOP1__S_FLBIT_I32 class methods ---
2748 
2750  : Inst_SOP1(iFmt, "s_flbit_i32")
2751  {
2752  setFlag(ALU);
2753  } // Inst_SOP1__S_FLBIT_I32
2754 
2756  {
2757  } // ~Inst_SOP1__S_FLBIT_I32
2758 
2759  // --- description from .arch file ---
2760  // D.i = FirstOppositeSignBit(S0.i);
2761  // If S0.i == 0 or S0.i == -1 (all bits are the same), return -1.
2762  // Counts how many bits in a row (from MSB to LSB) are the same as the
2763  // sign bit.
2764  void
2766  {
2767  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2768  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2769 
2770  src.read();
2771 
2772  sdst = firstOppositeSignBit(src.rawData());
2773 
2774  sdst.write();
2775  } // execute
2776  // --- Inst_SOP1__S_FLBIT_I32_I64 class methods ---
2777 
2779  : Inst_SOP1(iFmt, "s_flbit_i32_i64")
2780  {
2781  setFlag(ALU);
2782  } // Inst_SOP1__S_FLBIT_I32_I64
2783 
2785  {
2786  } // ~Inst_SOP1__S_FLBIT_I32_I64
2787 
2788  // --- description from .arch file ---
2789  // D.i = FirstOppositeSignBit(S0.i64);
2790  // If S0.i == 0 or S0.i == -1 (all bits are the same), return -1.
2791  // Counts how many bits in a row (from MSB to LSB) are the same as the
2792  // sign bit.
2793  void
2795  {
2796  ConstScalarOperandI64 src(gpuDynInst, instData.SSRC0);
2797  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2798 
2799  src.read();
2800 
2801  sdst = firstOppositeSignBit(src.rawData());
2802 
2803  sdst.write();
2804  } // execute
2805  // --- Inst_SOP1__S_SEXT_I32_I8 class methods ---
2806 
2808  : Inst_SOP1(iFmt, "s_sext_i32_i8")
2809  {
2810  setFlag(ALU);
2811  } // Inst_SOP1__S_SEXT_I32_I8
2812 
2814  {
2815  } // ~Inst_SOP1__S_SEXT_I32_I8
2816 
2817  // --- description from .arch file ---
2818  // D.i = signext(S0.i[7:0]) (sign extension).
2819  void
2821  {
2822  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2823  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2824 
2825  src.read();
2826 
2827  sdst = sext<std::numeric_limits<ScalarRegI8>::digits>(
2828  bits(src.rawData(), 7, 0));
2829 
2830  sdst.write();
2831  } // execute
2832  // --- Inst_SOP1__S_SEXT_I32_I16 class methods ---
2833 
2835  : Inst_SOP1(iFmt, "s_sext_i32_i16")
2836  {
2837  setFlag(ALU);
2838  } // Inst_SOP1__S_SEXT_I32_I16
2839 
2841  {
2842  } // ~Inst_SOP1__S_SEXT_I32_I16
2843 
2844  // --- description from .arch file ---
2845  // D.i = signext(S0.i[15:0]) (sign extension).
2846  void
2848  {
2849  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2850  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2851 
2852  src.read();
2853 
2854  sdst = sext<std::numeric_limits<ScalarRegI16>::digits>(
2855  bits(src.rawData(), 15, 0));
2856 
2857  sdst.write();
2858  } // execute
2859  // --- Inst_SOP1__S_BITSET0_B32 class methods ---
2860 
2862  : Inst_SOP1(iFmt, "s_bitset0_b32")
2863  {
2864  setFlag(ALU);
2865  } // Inst_SOP1__S_BITSET0_B32
2866 
2868  {
2869  } // ~Inst_SOP1__S_BITSET0_B32
2870 
2871  // --- description from .arch file ---
2872  // D.u[S0.u[4:0]] = 0.
2873  void
2875  {
2876  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2877  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2878 
2879  src.read();
2880 
2881  sdst.setBit(bits(src.rawData(), 4, 0), 0);
2882 
2883  sdst.write();
2884  } // execute
2885  // --- Inst_SOP1__S_BITSET0_B64 class methods ---
2886 
2888  : Inst_SOP1(iFmt, "s_bitset0_b64")
2889  {
2890  setFlag(ALU);
2891  } // Inst_SOP1__S_BITSET0_B64
2892 
2894  {
2895  } // ~Inst_SOP1__S_BITSET0_B64
2896 
2897  // --- description from .arch file ---
2898  // D.u64[S0.u[5:0]] = 0.
2899  void
2901  {
2902  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2903  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2904 
2905  src.read();
2906 
2907  sdst.setBit(bits(src.rawData(), 5, 0), 0);
2908 
2909  sdst.write();
2910  } // execute
2911  // --- Inst_SOP1__S_BITSET1_B32 class methods ---
2912 
2914  : Inst_SOP1(iFmt, "s_bitset1_b32")
2915  {
2916  setFlag(ALU);
2917  } // Inst_SOP1__S_BITSET1_B32
2918 
2920  {
2921  } // ~Inst_SOP1__S_BITSET1_B32
2922 
2923  // --- description from .arch file ---
2924  // D.u[S0.u[4:0]] = 1.
2925  void
2927  {
2928  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2929  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2930 
2931  src.read();
2932 
2933  sdst.setBit(bits(src.rawData(), 4, 0), 1);
2934 
2935  sdst.write();
2936  } // execute
2937  // --- Inst_SOP1__S_BITSET1_B64 class methods ---
2938 
2940  : Inst_SOP1(iFmt, "s_bitset1_b64")
2941  {
2942  setFlag(ALU);
2943  } // Inst_SOP1__S_BITSET1_B64
2944 
2946  {
2947  } // ~Inst_SOP1__S_BITSET1_B64
2948 
2949  // --- description from .arch file ---
2950  // D.u64[S0.u[5:0]] = 1.
2951  void
2953  {
2954  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2955  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2956 
2957  src.read();
2958 
2959  sdst.setBit(bits(src.rawData(), 5, 0), 1);
2960 
2961  sdst.write();
2962  } // execute
2963  // --- Inst_SOP1__S_GETPC_B64 class methods ---
2964 
2966  : Inst_SOP1(iFmt, "s_getpc_b64")
2967  {
2968  setFlag(ALU);
2969  } // Inst_SOP1__S_GETPC_B64
2970 
2972  {
2973  } // ~Inst_SOP1__S_GETPC_B64
2974 
2975  // --- description from .arch file ---
2976  // D.u64 = PC + 4.
2977  // Destination receives the byte address of the next instruction.
2978  void
2980  {
2981  Addr pc = gpuDynInst->pc();
2982  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2983 
2984  sdst = pc + 4;
2985 
2986  sdst.write();
2987  } // execute
2988  // --- Inst_SOP1__S_SETPC_B64 class methods ---
2989 
2991  : Inst_SOP1(iFmt, "s_setpc_b64")
2992  {
2993  setFlag(ALU);
2994  } // Inst_SOP1__S_SETPC_B64
2995 
2997  {
2998  } // ~Inst_SOP1__S_SETPC_B64
2999 
3000  // --- description from .arch file ---
3001  // PC = S0.u64.
3002  // S0.u64 is a byte address of the instruction to jump to.
3003  void
3005  {
3006  Wavefront *wf = gpuDynInst->wavefront();
3007  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3008 
3009  src.read();
3010 
3011  wf->pc(src.rawData());
3012  } // execute
3013  // --- Inst_SOP1__S_SWAPPC_B64 class methods ---
3014 
3016  : Inst_SOP1(iFmt, "s_swappc_b64")
3017  {
3018  setFlag(ALU);
3019  } // Inst_SOP1__S_SWAPPC_B64
3020 
3022  {
3023  } // ~Inst_SOP1__S_SWAPPC_B64
3024 
3025  // --- description from .arch file ---
3026  // D.u64 = PC + 4; PC = S0.u64.
3027  // S0.u64 is a byte address of the instruction to jump to.
3028  void
3030  {
3031  Wavefront *wf = gpuDynInst->wavefront();
3032  Addr pc = gpuDynInst->pc();
3033  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3034  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3035 
3036  src.read();
3037 
3038  sdst = pc + 4;
3039 
3040  wf->pc(src.rawData());
3041  sdst.write();
3042  } // execute
3043  // --- Inst_SOP1__S_RFE_B64 class methods ---
3044 
3046  : Inst_SOP1(iFmt, "s_rfe_b64")
3047  {
3048  } // Inst_SOP1__S_RFE_B64
3049 
3051  {
3052  } // ~Inst_SOP1__S_RFE_B64
3053 
3054  // --- description from .arch file ---
3055  // PRIV = 0;
3056  // PC = S0.u64.
3057  // Return from exception handler and continue.
3058  // This instruction may only be used within a trap handler.
3059  void
3061  {
3063  } // execute
3064  // --- Inst_SOP1__S_AND_SAVEEXEC_B64 class methods ---
3065 
3067  InFmt_SOP1 *iFmt)
3068  : Inst_SOP1(iFmt, "s_and_saveexec_b64")
3069  {
3070  setFlag(ALU);
3071  setFlag(ReadsEXEC);
3072  setFlag(WritesEXEC);
3073  } // Inst_SOP1__S_AND_SAVEEXEC_B64
3074 
3076  {
3077  } // ~Inst_SOP1__S_AND_SAVEEXEC_B64
3078 
3079  // --- description from .arch file ---
3080  // D.u64 = EXEC;
3081  // EXEC = S0.u64 & EXEC;
3082  // SCC = 1 if the new value of EXEC is non-zero.
3083  void
3085  {
3086  Wavefront *wf = gpuDynInst->wavefront();
3087  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3088  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3089  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3090 
3091  src.read();
3092 
3093  sdst = wf->execMask().to_ullong();
3094  wf->execMask() = src.rawData() & wf->execMask().to_ullong();
3095  scc = wf->execMask().any() ? 1 : 0;
3096 
3097  sdst.write();
3098  scc.write();
3099  } // execute
3100  // --- Inst_SOP1__S_OR_SAVEEXEC_B64 class methods ---
3101 
3103  InFmt_SOP1 *iFmt)
3104  : Inst_SOP1(iFmt, "s_or_saveexec_b64")
3105  {
3106  setFlag(ALU);
3107  setFlag(ReadsEXEC);
3108  setFlag(WritesEXEC);
3109  } // Inst_SOP1__S_OR_SAVEEXEC_B64
3110 
3112  {
3113  } // ~Inst_SOP1__S_OR_SAVEEXEC_B64
3114 
3115  // --- description from .arch file ---
3116  // D.u64 = EXEC;
3117  // EXEC = S0.u64 | EXEC;
3118  // SCC = 1 if the new value of EXEC is non-zero.
3119  void
3121  {
3122  Wavefront *wf = gpuDynInst->wavefront();
3123  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3124  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3125  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3126 
3127  src.read();
3128 
3129  sdst = wf->execMask().to_ullong();
3130  wf->execMask() = src.rawData() | wf->execMask().to_ullong();
3131  scc = wf->execMask().any() ? 1 : 0;
3132 
3133  sdst.write();
3134  scc.write();
3135  } // execute
3136  // --- Inst_SOP1__S_XOR_SAVEEXEC_B64 class methods ---
3137 
3139  InFmt_SOP1 *iFmt)
3140  : Inst_SOP1(iFmt, "s_xor_saveexec_b64")
3141  {
3142  setFlag(ALU);
3143  setFlag(ReadsEXEC);
3144  setFlag(WritesEXEC);
3145  } // Inst_SOP1__S_XOR_SAVEEXEC_B64
3146 
3148  {
3149  } // ~Inst_SOP1__S_XOR_SAVEEXEC_B64
3150 
3151  // --- description from .arch file ---
3152  // D.u64 = EXEC;
3153  // EXEC = S0.u64 ^ EXEC;
3154  // SCC = 1 if the new value of EXEC is non-zero.
3155  void
3157  {
3158  Wavefront *wf = gpuDynInst->wavefront();
3159  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3160  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3161  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3162 
3163  src.read();
3164 
3165  sdst = wf->execMask().to_ullong();
3166  wf->execMask() = src.rawData() ^ wf->execMask().to_ullong();
3167  scc = wf->execMask().any() ? 1 : 0;
3168 
3169  sdst.write();
3170  scc.write();
3171  } // execute
3172  // --- Inst_SOP1__S_ANDN2_SAVEEXEC_B64 class methods ---
3173 
3175  InFmt_SOP1 *iFmt)
3176  : Inst_SOP1(iFmt, "s_andn2_saveexec_b64")
3177  {
3178  setFlag(ALU);
3179  setFlag(ReadsEXEC);
3180  setFlag(WritesEXEC);
3181  } // Inst_SOP1__S_ANDN2_SAVEEXEC_B64
3182 
3184  {
3185  } // ~Inst_SOP1__S_ANDN2_SAVEEXEC_B64
3186 
3187  // --- description from .arch file ---
3188  // D.u64 = EXEC;
3189  // EXEC = S0.u64 & ~EXEC;
3190  // SCC = 1 if the new value of EXEC is non-zero.
3191  void
3193  {
3194  Wavefront *wf = gpuDynInst->wavefront();
3195  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3196  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3197  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3198 
3199  src.read();
3200 
3201  sdst = wf->execMask().to_ullong();
3202  wf->execMask() = src.rawData() &~ wf->execMask().to_ullong();
3203  scc = wf->execMask().any() ? 1 : 0;
3204 
3205  sdst.write();
3206  scc.write();
3207  } // execute
3208  // --- Inst_SOP1__S_ORN2_SAVEEXEC_B64 class methods ---
3209 
3211  InFmt_SOP1 *iFmt)
3212  : Inst_SOP1(iFmt, "s_orn2_saveexec_b64")
3213  {
3214  setFlag(ALU);
3215  setFlag(ReadsEXEC);
3216  setFlag(WritesEXEC);
3217  } // Inst_SOP1__S_ORN2_SAVEEXEC_B64
3218 
3220  {
3221  } // ~Inst_SOP1__S_ORN2_SAVEEXEC_B64
3222 
3223  // --- description from .arch file ---
3224  // D.u64 = EXEC;
3225  // EXEC = S0.u64 | ~EXEC;
3226  // SCC = 1 if the new value of EXEC is non-zero.
3227  void
3229  {
3230  Wavefront *wf = gpuDynInst->wavefront();
3231  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3232  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3233  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3234 
3235  src.read();
3236 
3237  sdst = wf->execMask().to_ullong();
3238  wf->execMask() = src.rawData() |~ wf->execMask().to_ullong();
3239  scc = wf->execMask().any() ? 1 : 0;
3240 
3241  sdst.write();
3242  scc.write();
3243  } // execute
3244  // --- Inst_SOP1__S_NAND_SAVEEXEC_B64 class methods ---
3245 
3247  InFmt_SOP1 *iFmt)
3248  : Inst_SOP1(iFmt, "s_nand_saveexec_b64")
3249  {
3250  setFlag(ALU);
3251  setFlag(ReadsEXEC);
3252  setFlag(WritesEXEC);
3253  } // Inst_SOP1__S_NAND_SAVEEXEC_B64
3254 
3256  {
3257  } // ~Inst_SOP1__S_NAND_SAVEEXEC_B64
3258 
3259  // --- description from .arch file ---
3260  // D.u64 = EXEC;
3261  // EXEC = ~(S0.u64 & EXEC);
3262  // SCC = 1 if the new value of EXEC is non-zero.
3263  void
3265  {
3266  Wavefront *wf = gpuDynInst->wavefront();
3267  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3268  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3269  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3270 
3271  src.read();
3272 
3273  sdst = wf->execMask().to_ullong();
3274  wf->execMask() = ~(src.rawData() & wf->execMask().to_ullong());
3275  scc = wf->execMask().any() ? 1 : 0;
3276 
3277  sdst.write();
3278  scc.write();
3279  } // execute
3280  // --- Inst_SOP1__S_NOR_SAVEEXEC_B64 class methods ---
3281 
3283  InFmt_SOP1 *iFmt)
3284  : Inst_SOP1(iFmt, "s_nor_saveexec_b64")
3285  {
3286  setFlag(ALU);
3287  setFlag(ReadsEXEC);
3288  setFlag(WritesEXEC);
3289  } // Inst_SOP1__S_NOR_SAVEEXEC_B64
3290 
3292  {
3293  } // ~Inst_SOP1__S_NOR_SAVEEXEC_B64
3294 
3295  // --- description from .arch file ---
3296  // D.u64 = EXEC;
3297  // EXEC = ~(S0.u64 | EXEC);
3298  // SCC = 1 if the new value of EXEC is non-zero.
3299  void
3301  {
3302  Wavefront *wf = gpuDynInst->wavefront();
3303  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3304  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3305  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3306 
3307  src.read();
3308 
3309  sdst = wf->execMask().to_ullong();
3310  wf->execMask() = ~(src.rawData() | wf->execMask().to_ullong());
3311  scc = wf->execMask().any() ? 1 : 0;
3312 
3313  sdst.write();
3314  scc.write();
3315  } // execute
3316  // --- Inst_SOP1__S_XNOR_SAVEEXEC_B64 class methods ---
3317 
3319  InFmt_SOP1 *iFmt)
3320  : Inst_SOP1(iFmt, "s_xnor_saveexec_b64")
3321  {
3322  setFlag(ALU);
3323  setFlag(ReadsEXEC);
3324  setFlag(WritesEXEC);
3325  } // Inst_SOP1__S_XNOR_SAVEEXEC_B64
3326 
3328  {
3329  } // ~Inst_SOP1__S_XNOR_SAVEEXEC_B64
3330 
3331  // --- description from .arch file ---
3332  // D.u64 = EXEC;
3333  // EXEC = ~(S0.u64 ^ EXEC);
3334  // SCC = 1 if the new value of EXEC is non-zero.
3335  void
3337  {
3338  Wavefront *wf = gpuDynInst->wavefront();
3339  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3340  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3341  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3342 
3343  src.read();
3344 
3345  sdst = wf->execMask().to_ullong();
3346  wf->execMask() = ~(src.rawData() ^ wf->execMask().to_ullong());
3347  scc = wf->execMask().any() ? 1 : 0;
3348 
3349  sdst.write();
3350  scc.write();
3351  } // execute
3352  // --- Inst_SOP1__S_QUADMASK_B32 class methods ---
3353 
3355  : Inst_SOP1(iFmt, "s_quadmask_b32")
3356  {
3357  setFlag(ALU);
3358  } // Inst_SOP1__S_QUADMASK_B32
3359 
3361  {
3362  } // ~Inst_SOP1__S_QUADMASK_B32
3363 
3364  // --- description from .arch file ---
3365  // D.u = QuadMask(S0.u):
3366  // D[0] = OR(S0[3:0]), D[1] = OR(S0[7:4]) ... D[31:8] = 0;
3367  // SCC = 1 if result is non-zero.
3368  void
3370  {
3371  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
3372  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
3373  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3374 
3375  src.read();
3376 
3377  sdst = quadMask(src.rawData());
3378  scc = sdst.rawData() ? 1 : 0;
3379 
3380  sdst.write();
3381  scc.write();
3382  } // execute
3383  // --- Inst_SOP1__S_QUADMASK_B64 class methods ---
3384 
3386  : Inst_SOP1(iFmt, "s_quadmask_b64")
3387  {
3388  setFlag(ALU);
3389  } // Inst_SOP1__S_QUADMASK_B64
3390 
3392  {
3393  } // ~Inst_SOP1__S_QUADMASK_B64
3394 
3395  // --- description from .arch file ---
3396  // D.u64 = QuadMask(S0.u64):
3397  // D[0] = OR(S0[3:0]), D[1] = OR(S0[7:4]) ... D[63:16] = 0;
3398  // SCC = 1 if result is non-zero.
3399  void
3401  {
3402  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3403  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3404  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3405 
3406  src.read();
3407 
3408  sdst = quadMask(src.rawData());
3409  scc = sdst.rawData() ? 1 : 0;
3410 
3411  sdst.write();
3412  scc.write();
3413  } // execute
3414  // --- Inst_SOP1__S_MOVRELS_B32 class methods ---
3415 
3417  : Inst_SOP1(iFmt, "s_movrels_b32")
3418  {
3419  setFlag(ALU);
3420  } // Inst_SOP1__S_MOVRELS_B32
3421 
3423  {
3424  } // ~Inst_SOP1__S_MOVRELS_B32
3425 
3426  // --- description from .arch file ---
3427  // D.u = SGPR[S0.u + M0.u].u (move from relative source).
3428  void
3430  {
3431  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3432  m0.read();
3433  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0 + m0.rawData());
3434  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
3435 
3436  src.read();
3437 
3438  sdst = src.rawData();
3439 
3440  sdst.write();
3441  } // execute
3442  // --- Inst_SOP1__S_MOVRELS_B64 class methods ---
3443 
3445  : Inst_SOP1(iFmt, "s_movrels_b64")
3446  {
3447  setFlag(ALU);
3448  } // Inst_SOP1__S_MOVRELS_B64
3449 
3451  {
3452  } // ~Inst_SOP1__S_MOVRELS_B64
3453 
3454  // --- description from .arch file ---
3455  // D.u64 = SGPR[S0.u + M0.u].u64 (move from relative source).
3456  // The index in M0.u must be even for this operation.
3457  void
3459  {
3460  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3461  m0.read();
3462  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0 + m0.rawData());
3463  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3464 
3465  src.read();
3466 
3467  sdst = src.rawData();
3468 
3469  sdst.write();
3470  } // execute
3471  // --- Inst_SOP1__S_MOVRELD_B32 class methods ---
3472 
3474  : Inst_SOP1(iFmt, "s_movreld_b32")
3475  {
3476  setFlag(ALU);
3477  } // Inst_SOP1__S_MOVRELD_B32
3478 
3480  {
3481  } // ~Inst_SOP1__S_MOVRELD_B32
3482 
3483  // --- description from .arch file ---
3484  // SGPR[D.u + M0.u].u = S0.u (move to relative destination).
3485  void
3487  {
3488  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3489  m0.read();
3490  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
3491  ScalarOperandU32 sdst(gpuDynInst, instData.SDST + m0.rawData());
3492 
3493  src.read();
3494 
3495  sdst = src.rawData();
3496 
3497  sdst.write();
3498  } // execute
3499  // --- Inst_SOP1__S_MOVRELD_B64 class methods ---
3500 
3502  : Inst_SOP1(iFmt, "s_movreld_b64")
3503  {
3504  setFlag(ALU);
3505  } // Inst_SOP1__S_MOVRELD_B64
3506 
3508  {
3509  } // ~Inst_SOP1__S_MOVRELD_B64
3510 
3511  // --- description from .arch file ---
3512  // SGPR[D.u + M0.u].u64 = S0.u64 (move to relative destination).
3513  // The index in M0.u must be even for this operation.
3514  void
3516  {
3517  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3518  m0.read();
3519  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3520  ScalarOperandU64 sdst(gpuDynInst, instData.SDST + m0.rawData());
3521 
3522  src.read();
3523 
3524  sdst = src.rawData();
3525 
3526  sdst.write();
3527  } // execute
3528  // --- Inst_SOP1__S_CBRANCH_JOIN class methods ---
3529 
3531  : Inst_SOP1(iFmt, "s_cbranch_join")
3532  {
3533  setFlag(Branch);
3534  setFlag(WritesEXEC);
3535  } // Inst_SOP1__S_CBRANCH_JOIN
3536 
3538  {
3539  } // ~Inst_SOP1__S_CBRANCH_JOIN
3540 
3541  // --- description from .arch file ---
3542  // saved_csp = S0.u;
3543  // if(CSP == saved_csp) then
3544  // PC += 4; // Second time to JOIN: continue with program.
3545  // else
3546  // CSP -= 1; // First time to JOIN; jump to other FORK path.
3547  // {PC, EXEC} = SGPR[CSP * 4]; // Read 128 bits from 4 consecutive
3548  // SGPRs.
3549  // end
3550  // Conditional branch join point (end of conditional branch block). S0 is
3551  // saved CSP value.
3552  // See S_CBRANCH_G_FORK and S_CBRANCH_I_FORK for related instructions.
3553  void
3555  {
3557  } // execute
3558  // --- Inst_SOP1__S_ABS_I32 class methods ---
3559 
3561  : Inst_SOP1(iFmt, "s_abs_i32")
3562  {
3563  setFlag(ALU);
3564  } // Inst_SOP1__S_ABS_I32
3565 
3567  {
3568  } // ~Inst_SOP1__S_ABS_I32
3569 
3570  // --- description from .arch file ---
3571  // if(S.i < 0) then D.i = -S.i;
3572  // else D.i = S.i;
3573  // SCC = 1 if result is non-zero.
3574  // Integer absolute value.
3575  void
3577  {
3578  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
3579  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
3580  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3581 
3582  src.read();
3583 
3584  sdst = std::abs(src.rawData());
3585 
3586  scc = sdst.rawData() ? 1 : 0;
3587 
3588  sdst.write();
3589  scc.write();
3590  } // execute
3591  // --- Inst_SOP1__S_MOV_FED_B32 class methods ---
3592 
3594  : Inst_SOP1(iFmt, "s_mov_fed_b32")
3595  {
3596  setFlag(ALU);
3597  } // Inst_SOP1__S_MOV_FED_B32
3598 
3600  {
3601  } // ~Inst_SOP1__S_MOV_FED_B32
3602 
3603  // --- description from .arch file ---
3604  // D.u = S0.u. Introduce an EDC double-detect error on write to the
3605  // destination SGPR.
3606  void
3608  {
3610  } // execute
3611  // --- Inst_SOP1__S_SET_GPR_IDX_IDX class methods ---
3612 
3614  InFmt_SOP1 *iFmt)
3615  : Inst_SOP1(iFmt, "s_set_gpr_idx_idx")
3616  {
3617  } // Inst_SOP1__S_SET_GPR_IDX_IDX
3618 
3620  {
3621  } // ~Inst_SOP1__S_SET_GPR_IDX_IDX
3622 
3623  // --- description from .arch file ---
3624  // M0[7:0] = S0.u[7:0].
3625  // Modify the index used in vector GPR indexing.
3626  void
3628  {
3630  } // execute
3631  // --- Inst_SOPC__S_CMP_EQ_I32 class methods ---
3632 
3634  : Inst_SOPC(iFmt, "s_cmp_eq_i32")
3635  {
3636  setFlag(ALU);
3637  } // Inst_SOPC__S_CMP_EQ_I32
3638 
3640  {
3641  } // ~Inst_SOPC__S_CMP_EQ_I32
3642 
3643  // --- description from .arch file ---
3644  // SCC = (S0.i == S1.i).
3645  void
3647  {
3648  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3649  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3650  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3651 
3652  src0.read();
3653  src1.read();
3654 
3655  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
3656 
3657  scc.write();
3658  } // execute
3659  // --- Inst_SOPC__S_CMP_LG_I32 class methods ---
3660 
3662  : Inst_SOPC(iFmt, "s_cmp_lg_i32")
3663  {
3664  setFlag(ALU);
3665  } // Inst_SOPC__S_CMP_LG_I32
3666 
3668  {
3669  } // ~Inst_SOPC__S_CMP_LG_I32
3670 
3671  // --- description from .arch file ---
3672  // SCC = (S0.i != S1.i).
3673  void
3675  {
3676  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3677  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3678  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3679 
3680  src0.read();
3681  src1.read();
3682 
3683  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
3684 
3685  scc.write();
3686  } // execute
3687  // --- Inst_SOPC__S_CMP_GT_I32 class methods ---
3688 
3690  : Inst_SOPC(iFmt, "s_cmp_gt_i32")
3691  {
3692  setFlag(ALU);
3693  } // Inst_SOPC__S_CMP_GT_I32
3694 
3696  {
3697  } // ~Inst_SOPC__S_CMP_GT_I32
3698 
3699  // --- description from .arch file ---
3700  // SCC = (S0.i > S1.i).
3701  void
3703  {
3704  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3705  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3706  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3707 
3708  src0.read();
3709  src1.read();
3710 
3711  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
3712 
3713  scc.write();
3714  } // execute
3715  // --- Inst_SOPC__S_CMP_GE_I32 class methods ---
3716 
3718  : Inst_SOPC(iFmt, "s_cmp_ge_i32")
3719  {
3720  setFlag(ALU);
3721  } // Inst_SOPC__S_CMP_GE_I32
3722 
3724  {
3725  } // ~Inst_SOPC__S_CMP_GE_I32
3726 
3727  // --- description from .arch file ---
3728  // SCC = (S0.i >= S1.i).
3729  void
3731  {
3732  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3733  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3734  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3735 
3736  src0.read();
3737  src1.read();
3738 
3739  scc = (src0.rawData() >= src1.rawData()) ? 1 : 0;
3740 
3741  scc.write();
3742  } // execute
3743  // --- Inst_SOPC__S_CMP_LT_I32 class methods ---
3744 
3746  : Inst_SOPC(iFmt, "s_cmp_lt_i32")
3747  {
3748  setFlag(ALU);
3749  } // Inst_SOPC__S_CMP_LT_I32
3750 
3752  {
3753  } // ~Inst_SOPC__S_CMP_LT_I32
3754 
3755  // --- description from .arch file ---
3756  // SCC = (S0.i < S1.i).
3757  void
3759  {
3760  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3761  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3762  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3763 
3764  src0.read();
3765  src1.read();
3766 
3767  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
3768 
3769  scc.write();
3770  } // execute
3771  // --- Inst_SOPC__S_CMP_LE_I32 class methods ---
3772 
3774  : Inst_SOPC(iFmt, "s_cmp_le_i32")
3775  {
3776  setFlag(ALU);
3777  } // Inst_SOPC__S_CMP_LE_I32
3778 
3780  {
3781  } // ~Inst_SOPC__S_CMP_LE_I32
3782 
3783  // --- description from .arch file ---
3784  // SCC = (S0.i <= S1.i).
3785  void
3787  {
3788  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3789  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3790  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3791 
3792  src0.read();
3793  src1.read();
3794 
3795  scc = (src0.rawData() <= src1.rawData()) ? 1 : 0;
3796 
3797  scc.write();
3798  } // execute
3799  // --- Inst_SOPC__S_CMP_EQ_U32 class methods ---
3800 
3802  : Inst_SOPC(iFmt, "s_cmp_eq_u32")
3803  {
3804  setFlag(ALU);
3805  } // Inst_SOPC__S_CMP_EQ_U32
3806 
3808  {
3809  } // ~Inst_SOPC__S_CMP_EQ_U32
3810 
3811  // --- description from .arch file ---
3812  // SCC = (S0.u == S1.u).
3813  void
3815  {
3816  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3817  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3818  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3819 
3820  src0.read();
3821  src1.read();
3822 
3823  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
3824 
3825  scc.write();
3826  } // execute
3827  // --- Inst_SOPC__S_CMP_LG_U32 class methods ---
3828 
3830  : Inst_SOPC(iFmt, "s_cmp_lg_u32")
3831  {
3832  setFlag(ALU);
3833  } // Inst_SOPC__S_CMP_LG_U32
3834 
3836  {
3837  } // ~Inst_SOPC__S_CMP_LG_U32
3838 
3839  // --- description from .arch file ---
3840  // SCC = (S0.u != S1.u).
3841  void
3843  {
3844  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3845  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3846  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3847 
3848  src0.read();
3849  src1.read();
3850 
3851  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
3852 
3853  scc.write();
3854  } // execute
3855  // --- Inst_SOPC__S_CMP_GT_U32 class methods ---
3856 
3858  : Inst_SOPC(iFmt, "s_cmp_gt_u32")
3859  {
3860  setFlag(ALU);
3861  } // Inst_SOPC__S_CMP_GT_U32
3862 
3864  {
3865  } // ~Inst_SOPC__S_CMP_GT_U32
3866 
3867  // --- description from .arch file ---
3868  // SCC = (S0.u > S1.u).
3869  void
3871  {
3872  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3873  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3874  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3875 
3876  src0.read();
3877  src1.read();
3878 
3879  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
3880 
3881  scc.write();
3882  } // execute
3883  // --- Inst_SOPC__S_CMP_GE_U32 class methods ---
3884 
3886  : Inst_SOPC(iFmt, "s_cmp_ge_u32")
3887  {
3888  setFlag(ALU);
3889  } // Inst_SOPC__S_CMP_GE_U32
3890 
3892  {
3893  } // ~Inst_SOPC__S_CMP_GE_U32
3894 
3895  // --- description from .arch file ---
3896  // SCC = (S0.u >= S1.u).
3897  void
3899  {
3900  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3901  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3902  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3903 
3904  src0.read();
3905  src1.read();
3906 
3907  scc = (src0.rawData() >= src1.rawData()) ? 1 : 0;
3908 
3909  scc.write();
3910  } // execute
3911  // --- Inst_SOPC__S_CMP_LT_U32 class methods ---
3912 
3914  : Inst_SOPC(iFmt, "s_cmp_lt_u32")
3915  {
3916  setFlag(ALU);
3917  } // Inst_SOPC__S_CMP_LT_U32
3918 
3920  {
3921  } // ~Inst_SOPC__S_CMP_LT_U32
3922 
3923  // --- description from .arch file ---
3924  // SCC = (S0.u < S1.u).
3925  void
3927  {
3928  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3929  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3930  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3931 
3932  src0.read();
3933  src1.read();
3934 
3935  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
3936 
3937  scc.write();
3938  } // execute
3939  // --- Inst_SOPC__S_CMP_LE_U32 class methods ---
3940 
3942  : Inst_SOPC(iFmt, "s_cmp_le_u32")
3943  {
3944  setFlag(ALU);
3945  } // Inst_SOPC__S_CMP_LE_U32
3946 
3948  {
3949  } // ~Inst_SOPC__S_CMP_LE_U32
3950 
3951  // --- description from .arch file ---
3952  // SCC = (S0.u <= S1.u).
3953  void
3955  {
3956  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3957  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3958  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3959 
3960  src0.read();
3961  src1.read();
3962 
3963  scc = (src0.rawData() <= src1.rawData()) ? 1 : 0;
3964 
3965  scc.write();
3966  } // execute
3967  // --- Inst_SOPC__S_BITCMP0_B32 class methods ---
3968 
3970  : Inst_SOPC(iFmt, "s_bitcmp0_b32")
3971  {
3972  setFlag(ALU);
3973  } // Inst_SOPC__S_BITCMP0_B32
3974 
3976  {
3977  } // ~Inst_SOPC__S_BITCMP0_B32
3978 
3979  // --- description from .arch file ---
3980  // SCC = (S0.u[S1.u[4:0]] == 0).
3981  void
3983  {
3984  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3985  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3986  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3987 
3988  src0.read();
3989  src1.read();
3990 
3991  scc = !bits(src0.rawData(), bits(src1.rawData(), 4, 0)) ? 1 : 0;
3992 
3993  scc.write();
3994  } // execute
3995  // --- Inst_SOPC__S_BITCMP1_B32 class methods ---
3996 
3998  : Inst_SOPC(iFmt, "s_bitcmp1_b32")
3999  {
4000  setFlag(ALU);
4001  } // Inst_SOPC__S_BITCMP1_B32
4002 
4004  {
4005  } // ~Inst_SOPC__S_BITCMP1_B32
4006 
4007  // --- description from .arch file ---
4008  // SCC = (S0.u[S1.u[4:0]] == 1).
4009  void
4011  {
4012  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
4013  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
4014  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
4015 
4016  src0.read();
4017  src1.read();
4018 
4019  scc = bits(src0.rawData(), bits(src1.rawData(), 4, 0)) ? 1 : 0;
4020 
4021  scc.write();
4022  } // execute
4023  // --- Inst_SOPC__S_BITCMP0_B64 class methods ---
4024 
4026  : Inst_SOPC(iFmt, "s_bitcmp0_b64")
4027  {
4028  setFlag(ALU);
4029  } // Inst_SOPC__S_BITCMP0_B64
4030 
4032  {
4033  } // ~Inst_SOPC__S_BITCMP0_B64
4034 
4035  // --- description from .arch file ---
4036  // SCC = (S0.u64[S1.u[5:0]] == 0).
4037  void
4039  {
4040  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
4041  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
4042  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
4043 
4044  src0.read();
4045  src1.read();
4046 
4047  scc = !bits(src0.rawData(), bits(src1.rawData(), 5, 0)) ? 1 : 0;
4048 
4049  scc.write();
4050  } // execute
4051  // --- Inst_SOPC__S_BITCMP1_B64 class methods ---
4052 
4054  : Inst_SOPC(iFmt, "s_bitcmp1_b64")
4055  {
4056  setFlag(ALU);
4057  } // Inst_SOPC__S_BITCMP1_B64
4058 
4060  {
4061  } // ~Inst_SOPC__S_BITCMP1_B64
4062 
4063  // --- description from .arch file ---
4064  // SCC = (S0.u64[S1.u[5:0]] == 1).
4065  void
4067  {
4068  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
4069  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
4070  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
4071 
4072  src0.read();
4073  src1.read();
4074 
4075  scc = bits(src0.rawData(), bits(src1.rawData(), 5, 0)) ? 1 : 0;
4076 
4077  scc.write();
4078  } // execute
4079  // --- Inst_SOPC__S_SETVSKIP class methods ---
4080 
4082  : Inst_SOPC(iFmt, "s_setvskip")
4083  {
4084  } // Inst_SOPC__S_SETVSKIP
4085 
4087  {
4088  } // ~Inst_SOPC__S_SETVSKIP
4089 
4090  // --- description from .arch file ---
4091  // VSKIP = S0.u[S1.u[4:0]].
4092  // Enables and disables VSKIP mode.
4093  // When VSKIP is enabled, no VOP*/M*BUF/MIMG/DS/FLAT/EXP instuctions are
4094  // issued.
4095  // If any vector operations are outstanding, S_WAITCNT must be issued
4096  // before executing.
4097  // This instruction requires one waitstate after executing (e.g. S_NOP 0).
4098  // Example:
4099  // s_waitcnt 0
4100  // s_setvskip 1, 0 // Enable vskip mode.
4101  // s_nop 1
4102  void
4104  {
4106  } // execute
4107  // --- Inst_SOPC__S_SET_GPR_IDX_ON class methods ---
4108 
4110  : Inst_SOPC(iFmt, "s_set_gpr_idx_on")
4111  {
4112  } // Inst_SOPC__S_SET_GPR_IDX_ON
4113 
4115  {
4116  } // ~Inst_SOPC__S_SET_GPR_IDX_ON
4117 
4118  // --- description from .arch file ---
4119  // MODE.gpr_idx_en = 1;
4120  // M0[7:0] = S0.u[7:0];
4121  // M0[15:12] = SIMM4 (direct contents of S1 field);
4122  // // Remaining bits of M0 are unmodified.
4123  // Enable GPR indexing mode. Vector operations after this will perform
4124  // relative GPR addressing based on the contents of M0. The structure
4125  // SQ_M0_GPR_IDX_WORD may be used to decode M0.
4126  // The raw contents of the S1 field are read and used to set the enable
4127  // bits. S1[0] = VSRC0_REL, S1[1] = VSRC1_REL, S1[2] = VSRC2_REL and
4128  // S1[3] = VDST_REL.
4129  void
4131  {
4133  } // execute
4134  // --- Inst_SOPC__S_CMP_EQ_U64 class methods ---
4135 
4137  : Inst_SOPC(iFmt, "s_cmp_eq_u64")
4138  {
4139  setFlag(ALU);
4140  } // Inst_SOPC__S_CMP_EQ_U64
4141 
4143  {
4144  } // ~Inst_SOPC__S_CMP_EQ_U64
4145 
4146  // --- description from .arch file ---
4147  // SCC = (S0.i64 == S1.i64).
4148  void
4150  {
4151  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
4152  ConstScalarOperandI64 src1(gpuDynInst, instData.SSRC1);
4153  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
4154 
4155  src0.read();
4156  src1.read();
4157 
4158  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
4159 
4160  scc.write();
4161  } // execute
4162  // --- Inst_SOPC__S_CMP_LG_U64 class methods ---
4163 
4165  : Inst_SOPC(iFmt, "s_cmp_lg_u64")
4166  {
4167  setFlag(ALU);
4168  } // Inst_SOPC__S_CMP_LG_U64
4169 
4171  {
4172  } // ~Inst_SOPC__S_CMP_LG_U64
4173 
4174  // --- description from .arch file ---
4175  // SCC = (S0.i64 != S1.i64).
4176  void
4178  {
4179  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
4180  ConstScalarOperandI64 src1(gpuDynInst, instData.SSRC1);
4181  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
4182 
4183  src0.read();
4184  src1.read();
4185 
4186  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
4187 
4188  scc.write();
4189  } // execute
4190  // --- Inst_SOPP__S_NOP class methods ---
4191 
4193  : Inst_SOPP(iFmt, "s_nop")
4194  {
4195  setFlag(Nop);
4196  } // Inst_SOPP__S_NOP
4197 
4199  {
4200  } // ~Inst_SOPP__S_NOP
4201 
4202  // --- description from .arch file ---
4203  // Do nothing. Repeat NOP 1..8 times based on SIMM16[2:0] -- 0 = 1 time,
4204  // 7 = 8 times.
4205  // This instruction may be used to introduce wait states to resolve
4206  // hazards; see the shader programming guide for details. Compare with
4207  // S_SLEEP.
4208  void
4210  {
4211  } // execute
4212  // --- Inst_SOPP__S_ENDPGM class methods ---
4213 
4215  : Inst_SOPP(iFmt, "s_endpgm")
4216  {
4217  setFlag(EndOfKernel);
4218  } // Inst_SOPP__S_ENDPGM
4219 
4221  {
4222  } // ~Inst_SOPP__S_ENDPGM
4223 
4224  // --- description from .arch file ---
4225  // End of program; terminate wavefront.
4226  // The hardware implicitly executes S_WAITCNT 0 before executing this
4227  // --- instruction.
4228  // See S_ENDPGM_SAVED for the context-switch version of this instruction.
4229  void
4231  {
4232  Wavefront *wf = gpuDynInst->wavefront();
4233  ComputeUnit *cu = gpuDynInst->computeUnit();
4234 
4235  // delete extra instructions fetched for completed work-items
4236  wf->instructionBuffer.erase(wf->instructionBuffer.begin() + 1,
4237  wf->instructionBuffer.end());
4238 
4239  if (wf->pendingFetch) {
4240  wf->dropFetch = true;
4241  }
4242 
4244  .flushBuf(wf->wfSlotId);
4246 
4247  int refCount = wf->computeUnit->getLds()
4248  .decreaseRefCounter(wf->dispatchId, wf->wgId);
4249 
4255  int bar_id = WFBarrier::InvalidID;
4256  if (wf->hasBarrier()) {
4257  assert(wf->getStatus() != Wavefront::S_BARRIER);
4258  bar_id = wf->barrierId();
4259  assert(bar_id != WFBarrier::InvalidID);
4260  wf->releaseBarrier();
4261  cu->decMaxBarrierCnt(bar_id);
4262  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - Exiting the "
4263  "program and decrementing max barrier count for "
4264  "barrier Id%d. New max count: %d.\n", cu->cu_id,
4265  wf->simdId, wf->wfSlotId, wf->wfDynId, bar_id,
4266  cu->maxBarrierCnt(bar_id));
4267  }
4268 
4269  DPRINTF(GPUExec, "CU%d: decrease ref ctr WG[%d] to [%d]\n",
4270  wf->computeUnit->cu_id, wf->wgId, refCount);
4271 
4274  wf->computeUnit->activeWaves--;
4275 
4276  panic_if(wf->computeUnit->activeWaves < 0, "CU[%d] Active waves less "
4277  "than zero\n", wf->computeUnit->cu_id);
4278 
4279  DPRINTF(GPUExec, "Doing return for CU%d: WF[%d][%d][%d]\n",
4280  wf->computeUnit->cu_id, wf->simdId, wf->wfSlotId, wf->wfDynId);
4281 
4282  for (int i = 0; i < wf->vecReads.size(); i++) {
4283  if (wf->rawDist.find(i) != wf->rawDist.end()) {
4284  wf->stats.readsPerWrite.sample(wf->vecReads.at(i));
4285  }
4286  }
4287  wf->vecReads.clear();
4288  wf->rawDist.clear();
4289  wf->lastInstExec = 0;
4290 
4291  if (!refCount) {
4298  if (bar_id != WFBarrier::InvalidID) {
4299  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - All waves are "
4300  "now complete. Releasing barrier Id%d.\n", cu->cu_id,
4301  wf->simdId, wf->wfSlotId, wf->wfDynId,
4302  wf->barrierId());
4303  cu->releaseBarrier(bar_id);
4304  }
4305 
4314  //check whether the workgroup is indicating the kernel end, i.e.,
4315  //the last workgroup in the kernel
4316  bool kernelEnd =
4318 
4319  bool relNeeded =
4321 
4322  //if it is not a kernel end, then retire the workgroup directly
4323  if (!kernelEnd || !relNeeded) {
4327 
4328  return;
4329  }
4330 
4338  setFlag(MemSync);
4339  setFlag(GlobalSegment);
4340  // Notify Memory System of Kernel Completion
4341  // Kernel End = isKernel + isMemSync
4343  gpuDynInst->simdId = wf->simdId;
4344  gpuDynInst->wfSlotId = wf->wfSlotId;
4345  gpuDynInst->wfDynId = wf->wfDynId;
4346 
4347  DPRINTF(GPUExec, "inject global memory fence for CU%d: "
4348  "WF[%d][%d][%d]\n", wf->computeUnit->cu_id,
4349  wf->simdId, wf->wfSlotId, wf->wfDynId);
4350 
4351  // call shader to prepare the flush operations
4352  wf->computeUnit->shader->prepareFlush(gpuDynInst);
4353 
4355  } else {
4357  }
4358  } // execute
4359 
4360  // --- Inst_SOPP__S_BRANCH class methods ---
4361 
4363  : Inst_SOPP(iFmt, "s_branch")
4364  {
4365  setFlag(Branch);
4366  } // Inst_SOPP__S_BRANCH
4367 
4369  {
4370  } // ~Inst_SOPP__S_BRANCH
4371 
4372  // --- description from .arch file ---
4373  // PC = PC + signext(SIMM16 * 4) + 4 (short jump).
4374  // For a long jump, use S_SETPC.
4375  void
4377  {
4378  Wavefront *wf = gpuDynInst->wavefront();
4379  Addr pc = gpuDynInst->pc();
4380  ScalarRegI16 simm16 = instData.SIMM16;
4381 
4382  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4383 
4384  wf->pc(pc);
4385  } // execute
4386  // --- Inst_SOPP__S_WAKEUP class methods ---
4387 
4389  : Inst_SOPP(iFmt, "s_wakeup")
4390  {
4391  } // Inst_SOPP__S_WAKEUP
4392 
4394  {
4395  } // ~Inst_SOPP__S_WAKEUP
4396 
4397  // --- description from .arch file ---
4398  // Allow a wave to 'ping' all the other waves in its threadgroup to force
4399  // them to wake up immediately from an S_SLEEP instruction. The ping is
4400  // ignored if the waves are not sleeping.
4401  // This allows for more efficient polling on a memory location. The waves
4402  // which are polling can sit in a long S_SLEEP between memory reads, but
4403  // the wave which writes the value can tell them all to wake up early now
4404  // that the data is available. This is useful for fBarrier implementations
4405  // (speedup).
4406  // This method is also safe from races because if any wave misses the ping,
4407  // everything still works fine (whoever missed it just completes their
4408  // normal S_SLEEP).
4409  void
4411  {
4413  } // execute
4414  // --- Inst_SOPP__S_CBRANCH_SCC0 class methods ---
4415 
4417  : Inst_SOPP(iFmt, "s_cbranch_scc0")
4418  {
4419  setFlag(Branch);
4420  } // Inst_SOPP__S_CBRANCH_SCC0
4421 
4423  {
4424  } // ~Inst_SOPP__S_CBRANCH_SCC0
4425 
4426  // --- description from .arch file ---
4427  // if(SCC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
4428  // else NOP.
4429  void
4431  {
4432  Wavefront *wf = gpuDynInst->wavefront();
4433  Addr pc = gpuDynInst->pc();
4434  ScalarRegI16 simm16 = instData.SIMM16;
4435  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
4436 
4437  scc.read();
4438 
4439  if (!scc.rawData()) {
4440  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4441  }
4442 
4443  wf->pc(pc);
4444  } // execute
4445  // --- Inst_SOPP__S_CBRANCH_SCC1 class methods ---
4446 
4448  : Inst_SOPP(iFmt, "s_cbranch_scc1")
4449  {
4450  setFlag(Branch);
4451  } // Inst_SOPP__S_CBRANCH_SCC1
4452 
4454  {
4455  } // ~Inst_SOPP__S_CBRANCH_SCC1
4456 
4457  // --- description from .arch file ---
4458  // if(SCC == 1) then PC = PC + signext(SIMM16 * 4) + 4;
4459  // else NOP.
4460  void
4462  {
4463  Wavefront *wf = gpuDynInst->wavefront();
4464  Addr pc = gpuDynInst->pc();
4465  ScalarRegI16 simm16 = instData.SIMM16;
4466  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
4467 
4468  scc.read();
4469 
4470  if (scc.rawData()) {
4471  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4472  }
4473 
4474  wf->pc(pc);
4475  } // execute
4476  // --- Inst_SOPP__S_CBRANCH_VCCZ class methods ---
4477 
4479  : Inst_SOPP(iFmt, "s_cbranch_vccz")
4480  {
4481  setFlag(Branch);
4482  setFlag(ReadsVCC);
4483  } // Inst_SOPP__S_CBRANCH_VCCZ
4484 
4486  {
4487  } // ~Inst_SOPP__S_CBRANCH_VCCZ
4488 
4489  // --- description from .arch file ---
4490  // if(VCC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
4491  // else NOP.
4492  void
4494  {
4495  Wavefront *wf = gpuDynInst->wavefront();
4496  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
4497  Addr pc = gpuDynInst->pc();
4498  ScalarRegI16 simm16 = instData.SIMM16;
4499 
4500  vcc.read();
4501 
4502  if (!vcc.rawData()) {
4503  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4504  }
4505 
4506  wf->pc(pc);
4507  } // execute
4508  // --- Inst_SOPP__S_CBRANCH_VCCNZ class methods ---
4509 
4511  : Inst_SOPP(iFmt, "s_cbranch_vccnz")
4512  {
4513  setFlag(Branch);
4514  setFlag(ReadsVCC);
4515  } // Inst_SOPP__S_CBRANCH_VCCNZ
4516 
4518  {
4519  } // ~Inst_SOPP__S_CBRANCH_VCCNZ
4520 
4521  // --- description from .arch file ---
4522  // if(VCC != 0) then PC = PC + signext(SIMM16 * 4) + 4;
4523  // else NOP.
4524  void
4526  {
4527  Wavefront *wf = gpuDynInst->wavefront();
4528  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
4529 
4530  vcc.read();
4531 
4532  if (vcc.rawData()) {
4533  Addr pc = gpuDynInst->pc();
4534  ScalarRegI16 simm16 = instData.SIMM16;
4535  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4536  wf->pc(pc);
4537  }
4538  } // execute
4539  // --- Inst_SOPP__S_CBRANCH_EXECZ class methods ---
4540 
4542  : Inst_SOPP(iFmt, "s_cbranch_execz")
4543  {
4544  setFlag(Branch);
4545  setFlag(ReadsEXEC);
4546  } // Inst_SOPP__S_CBRANCH_EXECZ
4547 
4549  {
4550  } // ~Inst_SOPP__S_CBRANCH_EXECZ
4551 
4552  // --- description from .arch file ---
4553  // if(EXEC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
4554  // else NOP.
4555  void
4557  {
4558  Wavefront *wf = gpuDynInst->wavefront();
4559 
4560  if (wf->execMask().none()) {
4561  Addr pc = gpuDynInst->pc();
4562  ScalarRegI16 simm16 = instData.SIMM16;
4563  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4564  wf->pc(pc);
4565  }
4566  } // execute
4567  // --- Inst_SOPP__S_CBRANCH_EXECNZ class methods ---
4568 
4570  : Inst_SOPP(iFmt, "s_cbranch_execnz")
4571  {
4572  setFlag(Branch);
4573  setFlag(ReadsEXEC);
4574  } // Inst_SOPP__S_CBRANCH_EXECNZ
4575 
4577  {
4578  } // ~Inst_SOPP__S_CBRANCH_EXECNZ
4579 
4580  // --- description from .arch file ---
4581  // if(EXEC != 0) then PC = PC + signext(SIMM16 * 4) + 4;
4582  // else NOP.
4583  void
4585  {
4586  Wavefront *wf = gpuDynInst->wavefront();
4587 
4588  if (wf->execMask().any()) {
4589  Addr pc = gpuDynInst->pc();
4590  ScalarRegI16 simm16 = instData.SIMM16;
4591  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4592  wf->pc(pc);
4593  }
4594  } // execute
4595  // --- Inst_SOPP__S_BARRIER class methods ---
4596 
4598  : Inst_SOPP(iFmt, "s_barrier")
4599  {
4600  setFlag(MemBarrier);
4601  } // Inst_SOPP__S_BARRIER
4602 
4604  {
4605  } // ~Inst_SOPP__S_BARRIER
4606 
4607  // --- description from .arch file ---
4608  // Synchronize waves within a threadgroup.
4609  // If not all waves of the threadgroup have been created yet, waits for
4610  // entire group before proceeding.
4611  // If some waves in the threadgroup have already terminated, this waits on
4612  // only the surviving waves.
4613  // Barriers are legal inside trap handlers.
4614  void
4616  {
4617  Wavefront *wf = gpuDynInst->wavefront();
4618  ComputeUnit *cu = gpuDynInst->computeUnit();
4619 
4620  if (wf->hasBarrier()) {
4621  int bar_id = wf->barrierId();
4622  assert(wf->getStatus() == Wavefront::S_BARRIER);
4623  cu->incNumAtBarrier(bar_id);
4624  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - Stalling at "
4625  "barrier Id%d. %d waves now at barrier, %d waves "
4626  "remain.\n", cu->cu_id, wf->simdId, wf->wfSlotId,
4627  wf->wfDynId, bar_id, cu->numAtBarrier(bar_id),
4628  cu->numYetToReachBarrier(bar_id));
4629  }
4630  } // execute
4631  // --- Inst_SOPP__S_SETKILL class methods ---
4632 
4634  : Inst_SOPP(iFmt, "s_setkill")
4635  {
4636  } // Inst_SOPP__S_SETKILL
4637 
4639  {
4640  } // ~Inst_SOPP__S_SETKILL
4641 
4642  // --- description from .arch file ---
4643  // set KILL bit to value of SIMM16[0].
4644  // Used primarily for debugging kill wave host command behavior.
4645  void
4647  {
4649  } // execute
4650  // --- Inst_SOPP__S_WAITCNT class methods ---
4651 
4653  : Inst_SOPP(iFmt, "s_waitcnt")
4654  {
4655  setFlag(ALU);
4656  setFlag(Waitcnt);
4657  } // Inst_SOPP__S_WAITCNT
4658 
4660  {
4661  } // ~Inst_SOPP__S_WAITCNT
4662 
4663  // --- description from .arch file ---
4664  // Wait for the counts of outstanding lds, vector-memory and
4665  // --- export/vmem-write-data to be at or below the specified levels.
4666  // SIMM16[3:0] = vmcount (vector memory operations),
4667  // SIMM16[6:4] = export/mem-write-data count,
4668  // SIMM16[12:8] = LGKM_cnt (scalar-mem/GDS/LDS count).
4669  void
4671  {
4672  ScalarRegI32 vm_cnt = 0;
4673  ScalarRegI32 exp_cnt = 0;
4674  ScalarRegI32 lgkm_cnt = 0;
4675  vm_cnt = bits<ScalarRegI16>(instData.SIMM16, 3, 0);
4676  exp_cnt = bits<ScalarRegI16>(instData.SIMM16, 6, 4);
4677  lgkm_cnt = bits<ScalarRegI16>(instData.SIMM16, 12, 8);
4678  gpuDynInst->wavefront()->setStatus(Wavefront::S_WAITCNT);
4679  gpuDynInst->wavefront()->setWaitCnts(vm_cnt, exp_cnt, lgkm_cnt);
4680  } // execute
4681  // --- Inst_SOPP__S_SETHALT class methods ---
4682 
4684  : Inst_SOPP(iFmt, "s_sethalt")
4685  {
4686  } // Inst_SOPP__S_SETHALT
4687 
4689  {
4690  } // ~Inst_SOPP__S_SETHALT
4691 
4692  // --- description from .arch file ---
4693  // Set HALT bit to value of SIMM16[0]; 1 = halt, 0 = resume.
4694  // The halt flag is ignored while PRIV == 1 (inside trap handlers) but the
4695  // shader will halt immediately after the handler returns if HALT is still
4696  // set at that time.
4697  void
4699  {
4701  } // execute
4702  // --- Inst_SOPP__S_SLEEP class methods ---
4703 
4705  : Inst_SOPP(iFmt, "s_sleep")
4706  {
4707  setFlag(ALU);
4708  setFlag(Sleep);
4709  } // Inst_SOPP__S_SLEEP
4710 
4712  {
4713  } // ~Inst_SOPP__S_SLEEP
4714 
4715  // --- description from .arch file ---
4716  // Cause a wave to sleep for (64 * SIMM16[2:0] + 1..64) clocks.
4717  // The exact amount of delay is approximate. Compare with S_NOP.
4718  void
4720  {
4722  gpuDynInst->wavefront()->setStatus(Wavefront::S_STALLED_SLEEP);
4723  // sleep duration is specified in multiples of 64 cycles
4724  gpuDynInst->wavefront()->setSleepTime(64 * simm16);
4725  } // execute
4726  // --- Inst_SOPP__S_SETPRIO class methods ---
4727 
4729  : Inst_SOPP(iFmt, "s_setprio")
4730  {
4731  } // Inst_SOPP__S_SETPRIO
4732 
4734  {
4735  } // ~Inst_SOPP__S_SETPRIO
4736 
4737  // --- description from .arch file ---
4738  // User settable wave priority is set to SIMM16[1:0]. 0 = lowest,
4739  // 3 = highest.
4740  // The overall wave priority is {SPIPrio[1:0] + UserPrio[1:0],
4741  // WaveAge[3:0]}.
4742  void
4744  {
4746  } // execute
4747  // --- Inst_SOPP__S_SENDMSG class methods ---
4748 
4750  : Inst_SOPP(iFmt, "s_sendmsg")
4751  {
4752  } // Inst_SOPP__S_SENDMSG
4753 
4755  {
4756  } // ~Inst_SOPP__S_SENDMSG
4757 
4758  // --- description from .arch file ---
4759  // Send a message upstream to VGT or the interrupt handler.
4760  // SIMM16[9:0] contains the message type and is documented in the shader
4761  // --- programming guide.
4762  void
4764  {
4766  } // execute
4767  // --- Inst_SOPP__S_SENDMSGHALT class methods ---
4768 
4770  : Inst_SOPP(iFmt, "s_sendmsghalt")
4771  {
4772  } // Inst_SOPP__S_SENDMSGHALT
4773 
4775  {
4776  } // ~Inst_SOPP__S_SENDMSGHALT
4777 
4778  // --- description from .arch file ---
4779  // Send a message and then HALT the wavefront; see S_SENDMSG for details.
4780  void
4782  {
4784  } // execute
4785  // --- Inst_SOPP__S_TRAP class methods ---
4786 
4788  : Inst_SOPP(iFmt, "s_trap")
4789  {
4790  } // Inst_SOPP__S_TRAP
4791 
4793  {
4794  } // ~Inst_SOPP__S_TRAP
4795 
4796  // --- description from .arch file ---
4797  // TrapID = SIMM16[7:0];
4798  // Wait for all instructions to complete;
4799  // set {TTMP1, TTMP0} = {3'h0, PCRewind[3:0], HT[0], TrapID[7:0],
4800  // PC[47:0]};
4801  // PC = TBA (trap base address);
4802  // PRIV = 1.
4803  // Enter the trap handler. This instruction may be generated internally as
4804  // well in response to a host trap (HT = 1) or an exception.
4805  // TrapID 0 is reserved for hardware use and should not be used in a
4806  // shader-generated trap.
4807  void
4809  {
4811  } // execute
4812  // --- Inst_SOPP__S_ICACHE_INV class methods ---
4813 
4815  : Inst_SOPP(iFmt, "s_icache_inv")
4816  {
4817  } // Inst_SOPP__S_ICACHE_INV
4818 
4820  {
4821  } // ~Inst_SOPP__S_ICACHE_INV
4822 
4823  // --- description from .arch file ---
4824  // Invalidate entire L1 instruction cache.
4825  // You must have 12 separate S_NOP instructions or a jump/branch
4826  // instruction after this instruction
4827  // to ensure the SQ instruction buffer is purged.
4828  void
4830  {
4832  } // execute
4833  // --- Inst_SOPP__S_INCPERFLEVEL class methods ---
4834 
4836  : Inst_SOPP(iFmt, "s_incperflevel")
4837  {
4838  } // Inst_SOPP__S_INCPERFLEVEL
4839 
4841  {
4842  } // ~Inst_SOPP__S_INCPERFLEVEL
4843 
4844  // --- description from .arch file ---
4845  // Increment performance counter specified in SIMM16[3:0] by 1.
4846  void
4848  {
4850  } // execute
4851  // --- Inst_SOPP__S_DECPERFLEVEL class methods ---
4852 
4854  : Inst_SOPP(iFmt, "s_decperflevel")
4855  {
4856  } // Inst_SOPP__S_DECPERFLEVEL
4857 
4859  {
4860  } // ~Inst_SOPP__S_DECPERFLEVEL
4861 
4862  // --- description from .arch file ---
4863  // Decrement performance counter specified in SIMM16[3:0] by 1.
4864  void
4866  {
4868  } // execute
4869  // --- Inst_SOPP__S_TTRACEDATA class methods ---
4870 
4872  : Inst_SOPP(iFmt, "s_ttracedata")
4873  {
4874  } // Inst_SOPP__S_TTRACEDATA
4875 
4877  {
4878  } // ~Inst_SOPP__S_TTRACEDATA
4879 
4880  // --- description from .arch file ---
4881  // Send M0 as user data to the thread trace stream.
4882  void
4884  {
4886  } // execute
4887  // --- Inst_SOPP__S_CBRANCH_CDBGSYS class methods ---
4888 
4890  InFmt_SOPP *iFmt)
4891  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys")
4892  {
4893  setFlag(Branch);
4894  } // Inst_SOPP__S_CBRANCH_CDBGSYS
4895 
4897  {
4898  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS
4899 
4900  // --- description from .arch file ---
4901  // if(conditional_debug_system != 0) then PC = PC + signext(SIMM16 * 4)
4902  // + 4;
4903  // else NOP.
4904  void
4906  {
4908  } // execute
4909  // --- Inst_SOPP__S_CBRANCH_CDBGUSER class methods ---
4910 
4912  InFmt_SOPP *iFmt)
4913  : Inst_SOPP(iFmt, "s_cbranch_cdbguser")
4914  {
4915  setFlag(Branch);
4916  } // Inst_SOPP__S_CBRANCH_CDBGUSER
4917 
4919  {
4920  } // ~Inst_SOPP__S_CBRANCH_CDBGUSER
4921 
4922  // --- description from .arch file ---
4923  // if(conditional_debug_user != 0) then PC = PC + signext(SIMM16 * 4) + 4;
4924  // else NOP.
4925  void
4927  {
4929  } // execute
4930  // --- Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER class methods ---
4931 
4933  InFmt_SOPP *iFmt)
4934  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys_or_user")
4935  {
4936  setFlag(Branch);
4937  } // Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
4938 
4941  {
4942  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
4943 
4944  // --- description from .arch file ---
4945  // if(conditional_debug_system || conditional_debug_user) then PC = PC +
4946  // --- signext(SIMM16 * 4) + 4;
4947  // else NOP.
4948  void
4950  {
4952  } // execute
4953  // --- Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER class methods ---
4954 
4957  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys_and_user")
4958  {
4959  setFlag(Branch);
4960  } // Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
4961 
4964  {
4965  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
4966 
4967  // --- description from .arch file ---
4968  // if(conditional_debug_system && conditional_debug_user) then PC = PC +
4969  // --- signext(SIMM16 * 4) + 4;
4970  // else NOP.
4971  void
4973  {
4975  } // execute
4976  // --- Inst_SOPP__S_ENDPGM_SAVED class methods ---
4977 
4979  : Inst_SOPP(iFmt, "s_endpgm_saved")
4980  {
4981  } // Inst_SOPP__S_ENDPGM_SAVED
4982 
4984  {
4985  } // ~Inst_SOPP__S_ENDPGM_SAVED
4986 
4987  // --- description from .arch file ---
4988  // End of program; signal that a wave has been saved by the context-switch
4989  // trap handler and terminate wavefront.
4990  // The hardware implicitly executes S_WAITCNT 0 before executing this
4991  // instruction.
4992  // Use S_ENDPGM in all cases unless you are executing the context-switch
4993  // save handler.
4994  void
4996  {
4998  } // execute
4999  // --- Inst_SOPP__S_SET_GPR_IDX_OFF class methods ---
5000 
5002  InFmt_SOPP *iFmt)
5003  : Inst_SOPP(iFmt, "s_set_gpr_idx_off")
5004  {
5005  } // Inst_SOPP__S_SET_GPR_IDX_OFF
5006 
5008  {
5009  } // ~Inst_SOPP__S_SET_GPR_IDX_OFF
5010 
5011  // --- description from .arch file ---
5012  // MODE.gpr_idx_en = 0.
5013  // Clear GPR indexing mode. Vector operations after this will not perform
5014  // --- relative GPR addressing regardless of the contents of M0. This
5015  // --- instruction does not modify M0.
5016  void
5018  {
5020  } // execute
5021  // --- Inst_SOPP__S_SET_GPR_IDX_MODE class methods ---
5022 
5024  InFmt_SOPP *iFmt)
5025  : Inst_SOPP(iFmt, "s_set_gpr_idx_mode")
5026  {
5027  } // Inst_SOPP__S_SET_GPR_IDX_MODE
5028 
5030  {
5031  } // ~Inst_SOPP__S_SET_GPR_IDX_MODE
5032 
5033  // --- description from .arch file ---
5034  // M0[15:12] = SIMM4.
5035  // Modify the mode used for vector GPR indexing.
5036  // The raw contents of the source field are read and used to set the enable
5037  // bits. SIMM4[0] = VSRC0_REL, SIMM4[1] = VSRC1_REL, SIMM4[2] = VSRC2_REL
5038  // and SIMM4[3] = VDST_REL.
5039  void
5041  {
5043  } // execute
5044  // --- Inst_SMEM__S_LOAD_DWORD class methods ---
5045 
5047  : Inst_SMEM(iFmt, "s_load_dword")
5048  {
5049  setFlag(MemoryRef);
5050  setFlag(Load);
5051  } // Inst_SMEM__S_LOAD_DWORD
5052 
5054  {
5055  } // ~Inst_SMEM__S_LOAD_DWORD
5056 
5063  void
5065  {
5066  Wavefront *wf = gpuDynInst->wavefront();
5067  gpuDynInst->execUnitId = wf->execUnitId;
5068  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5069  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5070  ScalarRegU32 offset(0);
5071  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5072 
5073  addr.read();
5074 
5075  if (instData.IMM) {
5076  offset = extData.OFFSET;
5077  } else {
5078  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5079  off_sgpr.read();
5080  offset = off_sgpr.rawData();
5081  }
5082 
5083  calcAddr(gpuDynInst, addr, offset);
5084 
5085  gpuDynInst->computeUnit()->scalarMemoryPipe
5086  .issueRequest(gpuDynInst);
5087  } // execute
5088 
5089  void
5091  {
5092  initMemRead<1>(gpuDynInst);
5093  } // initiateAcc
5094 
5095  void
5097  {
5098  ScalarOperandU32 sdst(gpuDynInst, instData.SDATA);
5099  sdst.write();
5100  } // completeAcc
5101  // --- Inst_SMEM__S_LOAD_DWORDX2 class methods ---
5102 
5104  : Inst_SMEM(iFmt, "s_load_dwordx2")
5105  {
5106  setFlag(MemoryRef);
5107  setFlag(Load);
5108  } // Inst_SMEM__S_LOAD_DWORDX2
5109 
5111  {
5112  } // ~Inst_SMEM__S_LOAD_DWORDX2
5113 
5118  void
5120  {
5121  Wavefront *wf = gpuDynInst->wavefront();
5122  gpuDynInst->execUnitId = wf->execUnitId;
5123  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5124  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5125  ScalarRegU32 offset(0);
5126  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5127 
5128  addr.read();
5129 
5130  if (instData.IMM) {
5131  offset = extData.OFFSET;
5132  } else {
5133  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5134  off_sgpr.read();
5135  offset = off_sgpr.rawData();
5136  }
5137 
5138  calcAddr(gpuDynInst, addr, offset);
5139 
5140  gpuDynInst->computeUnit()->scalarMemoryPipe.
5141  issueRequest(gpuDynInst);
5142  } // execute
5143 
5144  void
5146  {
5147  initMemRead<2>(gpuDynInst);
5148  } // initiateAcc
5149 
5150  void
5152  {
5153  ScalarOperandU64 sdst(gpuDynInst, instData.SDATA);
5154  sdst.write();
5155  } // completeAcc
5156  // --- Inst_SMEM__S_LOAD_DWORDX4 class methods ---
5157 
5159  : Inst_SMEM(iFmt, "s_load_dwordx4")
5160  {
5161  setFlag(MemoryRef);
5162  setFlag(Load);
5163  } // Inst_SMEM__S_LOAD_DWORDX4
5164 
5166  {
5167  } // ~Inst_SMEM__S_LOAD_DWORDX4
5168 
5169  // --- description from .arch file ---
5170  // Read 4 dwords from scalar data cache. See S_LOAD_DWORD for details on
5171  // the offset input.
5172  void
5174  {
5175  Wavefront *wf = gpuDynInst->wavefront();
5176  gpuDynInst->execUnitId = wf->execUnitId;
5177  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5178  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5179  ScalarRegU32 offset(0);
5180  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5181 
5182  addr.read();
5183 
5184  if (instData.IMM) {
5185  offset = extData.OFFSET;
5186  } else {
5187  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5188  off_sgpr.read();
5189  offset = off_sgpr.rawData();
5190  }
5191 
5192  calcAddr(gpuDynInst, addr, offset);
5193 
5194  gpuDynInst->computeUnit()->scalarMemoryPipe.
5195  issueRequest(gpuDynInst);
5196  } // execute
5197 
5198  void
5200  {
5201  initMemRead<4>(gpuDynInst);
5202  } // initiateAcc
5203 
5204  void
5206  {
5207  ScalarOperandU128 sdst(gpuDynInst, instData.SDATA);
5208  sdst.write();
5209  } // completeAcc
5210  // --- Inst_SMEM__S_LOAD_DWORDX8 class methods ---
5211 
5213  : Inst_SMEM(iFmt, "s_load_dwordx8")
5214  {
5215  setFlag(MemoryRef);
5216  setFlag(Load);
5217  } // Inst_SMEM__S_LOAD_DWORDX8
5218 
5220  {
5221  } // ~Inst_SMEM__S_LOAD_DWORDX8
5222 
5223  // --- description from .arch file ---
5224  // Read 8 dwords from scalar data cache. See S_LOAD_DWORD for details on
5225  // the offset input.
5226  void
5228  {
5229  Wavefront *wf = gpuDynInst->wavefront();
5230  gpuDynInst->execUnitId = wf->execUnitId;
5231  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5232  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5233  ScalarRegU32 offset(0);
5234  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5235 
5236  addr.read();
5237 
5238  if (instData.IMM) {
5239  offset = extData.OFFSET;
5240  } else {
5241  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5242  off_sgpr.read();
5243  offset = off_sgpr.rawData();
5244  }
5245 
5246  calcAddr(gpuDynInst, addr, offset);
5247 
5248  gpuDynInst->computeUnit()->scalarMemoryPipe.
5249  issueRequest(gpuDynInst);
5250  } // execute
5251 
5252  void
5254  {
5255  initMemRead<8>(gpuDynInst);
5256  } // initiateAcc
5257 
5258  void
5260  {
5261  ScalarOperandU256 sdst(gpuDynInst, instData.SDATA);
5262  sdst.write();
5263  } // completeAcc
5264  // --- Inst_SMEM__S_LOAD_DWORDX16 class methods ---
5265 
5267  : Inst_SMEM(iFmt, "s_load_dwordx16")
5268  {
5269  setFlag(MemoryRef);
5270  setFlag(Load);
5271  } // Inst_SMEM__S_LOAD_DWORDX16
5272 
5274  {
5275  } // ~Inst_SMEM__S_LOAD_DWORDX16
5276 
5277  // --- description from .arch file ---
5278  // Read 16 dwords from scalar data cache. See S_LOAD_DWORD for details on
5279  // the offset input.
5280  void
5282  {
5283  Wavefront *wf = gpuDynInst->wavefront();
5284  gpuDynInst->execUnitId = wf->execUnitId;
5285  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5286  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5287  ScalarRegU32 offset(0);
5288  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5289 
5290  addr.read();
5291 
5292  if (instData.IMM) {
5293  offset = extData.OFFSET;
5294  } else {
5295  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5296  off_sgpr.read();
5297  offset = off_sgpr.rawData();
5298  }
5299 
5300  calcAddr(gpuDynInst, addr, offset);
5301 
5302  gpuDynInst->computeUnit()->scalarMemoryPipe.
5303  issueRequest(gpuDynInst);
5304  } // execute
5305 
5306  void
5308  {
5309  initMemRead<16>(gpuDynInst);
5310  } // initiateAcc
5311 
5312  void
5314  {
5315  ScalarOperandU512 sdst(gpuDynInst, instData.SDATA);
5316  sdst.write();
5317  } // completeAcc
5318  // --- Inst_SMEM__S_BUFFER_LOAD_DWORD class methods ---
5319 
5321  InFmt_SMEM *iFmt)
5322  : Inst_SMEM(iFmt, "s_buffer_load_dword")
5323  {
5324  setFlag(MemoryRef);
5325  setFlag(Load);
5326  } // Inst_SMEM__S_BUFFER_LOAD_DWORD
5327 
5329  {
5330  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORD
5331 
5332  // --- description from .arch file ---
5333  // Read 1 dword from scalar data cache. See S_LOAD_DWORD for details on the
5334  // --- offset input.
5335  void
5337  {
5338  Wavefront *wf = gpuDynInst->wavefront();
5339  gpuDynInst->execUnitId = wf->execUnitId;
5340  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5341  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5342  ScalarRegU32 offset(0);
5343  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
5344 
5345  rsrcDesc.read();
5346 
5347  if (instData.IMM) {
5348  offset = extData.OFFSET;
5349  } else {
5350  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5351  off_sgpr.read();
5352  offset = off_sgpr.rawData();
5353  }
5354 
5355  calcAddr(gpuDynInst, rsrcDesc, offset);
5356 
5357  gpuDynInst->computeUnit()->scalarMemoryPipe
5358  .issueRequest(gpuDynInst);
5359  } // execute
5360 
5361  void
5363  {
5364  initMemRead<1>(gpuDynInst);
5365  } // initiateAcc
5366 
5367  void
5369  {
5370  // 1 request, size 32
5371  ScalarOperandU32 sdst(gpuDynInst, instData.SDATA);
5372  sdst.write();
5373  } // completeAcc
5374  // --- Inst_SMEM__S_BUFFER_LOAD_DWORDX2 class methods ---
5375 
5377  InFmt_SMEM *iFmt)
5378  : Inst_SMEM(iFmt, "s_buffer_load_dwordx2")
5379  {
5380  setFlag(MemoryRef);
5381  setFlag(Load);
5382  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX2
5383 
5385  {
5386  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX2
5387 
5388  // --- description from .arch file ---
5389  // Read 2 dwords from scalar data cache. See S_LOAD_DWORD for details on
5390  // the offset input.
5391  void
5393  {
5394  Wavefront *wf = gpuDynInst->wavefront();
5395  gpuDynInst->execUnitId = wf->execUnitId;
5396  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5397  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5398  ScalarRegU32 offset(0);
5399  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
5400 
5401  rsrcDesc.read();
5402 
5403  if (instData.IMM) {
5404  offset = extData.OFFSET;
5405  } else {
5406  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5407  off_sgpr.read();
5408  offset = off_sgpr.rawData();
5409  }
5410 
5411  calcAddr(gpuDynInst, rsrcDesc, offset);
5412 
5413  gpuDynInst->computeUnit()->scalarMemoryPipe
5414  .issueRequest(gpuDynInst);
5415  } // execute
5416 
5417  void
5419  {
5420  initMemRead<2>(gpuDynInst);
5421  } // initiateAcc
5422 
5423  void
5425  {
5426  // use U64 because 2 requests, each size 32
5427  ScalarOperandU64 sdst(gpuDynInst, instData.SDATA);
5428  sdst.write();
5429  } // completeAcc
5430  // --- Inst_SMEM__S_BUFFER_LOAD_DWORDX4 class methods ---
5431 
5433  InFmt_SMEM *iFmt)
5434  : Inst_SMEM(iFmt, "s_buffer_load_dwordx4")
5435  {
5436  setFlag(MemoryRef);
5437  setFlag(Load);
5438  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX4
5439 
5441  {
5442  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX4
5443 
5444  // --- description from .arch file ---
5445  // Read 4 dwords from scalar data cache. See S_LOAD_DWORD for details on
5446  // the offset input.
5447  void
5449  {
5450  Wavefront *wf = gpuDynInst->wavefront();
5451  gpuDynInst->execUnitId = wf->execUnitId;
5452  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5453  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5454  ScalarRegU32 offset(0);
5455  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
5456 
5457  rsrcDesc.read();
5458 
5459  if (instData.IMM) {
5460  offset = extData.OFFSET;
5461  } else {
5462  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5463  off_sgpr.read();
5464  offset = off_sgpr.rawData();
5465  }
5466 
5467  calcAddr(gpuDynInst, rsrcDesc, offset);
5468 
5469  gpuDynInst->computeUnit()->scalarMemoryPipe
5470  .issueRequest(gpuDynInst);
5471  } // execute
5472 
5473  void
5475  {
5476  initMemRead<4>(gpuDynInst);
5477  } // initiateAcc
5478 
5479  void
5481  {
5482  // 4 requests, each size 32
5483  ScalarOperandU128 sdst(gpuDynInst, instData.SDATA);
5484  sdst.write();
5485  } // completeAcc
5486  // --- Inst_SMEM__S_BUFFER_LOAD_DWORDX8 class methods ---
5487 
5489  InFmt_SMEM *iFmt)
5490  : Inst_SMEM(iFmt, "s_buffer_load_dwordx8")
5491  {
5492  setFlag(MemoryRef);
5493  setFlag(Load);
5494  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX8
5495 
5497  {
5498  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX8
5499 
5500  // --- description from .arch file ---
5501  // Read 8 dwords from scalar data cache. See S_LOAD_DWORD for details on
5502  // the offset input.
5503  void
5505  {
5506  Wavefront *wf = gpuDynInst->wavefront();
5507  gpuDynInst->execUnitId = wf->execUnitId;
5508  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5509  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5510  ScalarRegU32 offset(0);
5511  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
5512 
5513  rsrcDesc.read();
5514 
5515  if (instData.IMM) {
5516  offset = extData.OFFSET;
5517  } else {
5518  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5519  off_sgpr.read();
5520  offset = off_sgpr.rawData();
5521  }
5522 
5523  calcAddr(gpuDynInst, rsrcDesc, offset);
5524 
5525  gpuDynInst->computeUnit()->scalarMemoryPipe
5526  .issueRequest(gpuDynInst);
5527  } // execute
5528 
5529  void
5531  {
5532  initMemRead<8>(gpuDynInst);
5533  } // initiateAcc
5534 
5535  void
5537  {
5538  // 8 requests, each size 32
5539  ScalarOperandU256 sdst(gpuDynInst, instData.SDATA);
5540  sdst.write();
5541  } // completeAcc
5542  // --- Inst_SMEM__S_BUFFER_LOAD_DWORDX16 class methods ---
5543 
5545  InFmt_SMEM *iFmt)
5546  : Inst_SMEM(iFmt, "s_buffer_load_dwordx16")
5547  {
5548  setFlag(MemoryRef);
5549  setFlag(Load);
5550  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX16
5551 
5553  {
5554  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX16
5555 
5556  // --- description from .arch file ---
5557  // Read 16 dwords from scalar data cache. See S_LOAD_DWORD for details on
5558  // the offset input.
5559  void
5561  {
5562  Wavefront *wf = gpuDynInst->wavefront();
5563  gpuDynInst->execUnitId = wf->execUnitId;
5564  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5565  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5566  ScalarRegU32 offset(0);
5567  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
5568 
5569  rsrcDesc.read();
5570 
5571  if (instData.IMM) {
5572  offset = extData.OFFSET;
5573  } else {
5574  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5575  off_sgpr.read();
5576  offset = off_sgpr.rawData();
5577  }
5578 
5579  calcAddr(gpuDynInst, rsrcDesc, offset);
5580 
5581  gpuDynInst->computeUnit()->scalarMemoryPipe
5582  .issueRequest(gpuDynInst);
5583  } // execute
5584 
5585  void
5587  {
5588  initMemRead<16>(gpuDynInst);
5589  } // initiateAcc
5590 
5591  void
5593  {
5594  // 16 requests, each size 32
5595  ScalarOperandU512 sdst(gpuDynInst, instData.SDATA);
5596  sdst.write();
5597  } // completeAcc
5598  // --- Inst_SMEM__S_STORE_DWORD class methods ---
5599 
5601  : Inst_SMEM(iFmt, "s_store_dword")
5602  {
5603  setFlag(MemoryRef);
5604  setFlag(Store);
5605  } // Inst_SMEM__S_STORE_DWORD
5606 
5608  {
5609  } // ~Inst_SMEM__S_STORE_DWORD
5610 
5611  // --- description from .arch file ---
5612  // Write 1 dword to scalar data cache.
5613  // If the offset is specified as an SGPR, the SGPR contains an unsigned
5614  // BYTE offset (the 2 LSBs are ignored).
5615  // If the offset is specified as an immediate 20-bit constant, the
5616  // constant is an unsigned BYTE offset.
5617  void
5619  {
5620  Wavefront *wf = gpuDynInst->wavefront();
5621  gpuDynInst->execUnitId = wf->execUnitId;
5622  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5623  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5624  ScalarRegU32 offset(0);
5625  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5626  ConstScalarOperandU32 sdata(gpuDynInst, instData.SDATA);
5627 
5628  addr.read();
5629  sdata.read();
5630 
5631  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5632  sizeof(ScalarRegU32));
5633 
5634  if (instData.IMM) {
5635  offset = extData.OFFSET;
5636  } else {
5637  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5638  off_sgpr.read();
5639  offset = off_sgpr.rawData();
5640  }
5641 
5642  calcAddr(gpuDynInst, addr, offset);
5643 
5644  gpuDynInst->computeUnit()->scalarMemoryPipe.
5645  issueRequest(gpuDynInst);
5646  } // execute
5647 
5648  void
5650  {
5651  initMemWrite<1>(gpuDynInst);
5652  } // initiateAcc
5653 
5654  void
5656  {
5657  } // completeAcc
5658  // --- Inst_SMEM__S_STORE_DWORDX2 class methods ---
5659 
5661  : Inst_SMEM(iFmt, "s_store_dwordx2")
5662  {
5663  setFlag(MemoryRef);
5664  setFlag(Store);
5665  } // Inst_SMEM__S_STORE_DWORDX2
5666 
5668  {
5669  } // ~Inst_SMEM__S_STORE_DWORDX2
5670 
5671  // --- description from .arch file ---
5672  // Write 2 dwords to scalar data cache. See S_STORE_DWORD for details on
5673  // the offset input.
5674  void
5676  {
5677  Wavefront *wf = gpuDynInst->wavefront();
5678  gpuDynInst->execUnitId = wf->execUnitId;
5679  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5680  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5681  ScalarRegU32 offset(0);
5682  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5683  ConstScalarOperandU64 sdata(gpuDynInst, instData.SDATA);
5684 
5685  addr.read();
5686  sdata.read();
5687 
5688  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5689  sizeof(ScalarRegU64));
5690 
5691  if (instData.IMM) {
5692  offset = extData.OFFSET;
5693  } else {
5694  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5695  off_sgpr.read();
5696  offset = off_sgpr.rawData();
5697  }
5698 
5699  calcAddr(gpuDynInst, addr, offset);
5700 
5701  gpuDynInst->computeUnit()->scalarMemoryPipe.
5702  issueRequest(gpuDynInst);
5703  } // execute
5704 
5705  void
5707  {
5708  initMemWrite<2>(gpuDynInst);
5709  } // initiateAcc
5710 
5711  void
5713  {
5714  } // completeAcc
5715  // --- Inst_SMEM__S_STORE_DWORDX4 class methods ---
5716 
5718  : Inst_SMEM(iFmt, "s_store_dwordx4")
5719  {
5720  setFlag(MemoryRef);
5721  setFlag(Store);
5722  } // Inst_SMEM__S_STORE_DWORDX4
5723 
5725  {
5726  } // ~Inst_SMEM__S_STORE_DWORDX4
5727 
5728  // --- description from .arch file ---
5729  // Write 4 dwords to scalar data cache. See S_STORE_DWORD for details on
5730  // the offset input.
5731  void
5733  {
5734  Wavefront *wf = gpuDynInst->wavefront();
5735  gpuDynInst->execUnitId = wf->execUnitId;
5736  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5737  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5738  ScalarRegU32 offset(0);
5739  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5740  ConstScalarOperandU64 sdata(gpuDynInst, instData.SDATA);
5741 
5742  addr.read();
5743  sdata.read();
5744 
5745  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5746  sizeof(gpuDynInst->scalar_data));
5747 
5748  if (instData.IMM) {
5749  offset = extData.OFFSET;
5750  } else {
5751  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5752  off_sgpr.read();
5753  offset = off_sgpr.rawData();
5754  }
5755 
5756  calcAddr(gpuDynInst, addr, offset);
5757 
5758  gpuDynInst->computeUnit()->scalarMemoryPipe.
5759  issueRequest(gpuDynInst);
5760  } // execute
5761 
5762  void
5764  {
5765  initMemWrite<4>(gpuDynInst);
5766  } // initiateAcc
5767 
5768  void
5770  {
5771  } // completeAcc
5772  // --- Inst_SMEM__S_BUFFER_STORE_DWORD class methods ---
5773 
5775  InFmt_SMEM *iFmt)
5776  : Inst_SMEM(iFmt, "s_buffer_store_dword")
5777  {
5778  setFlag(MemoryRef);
5779  setFlag(Store);
5780  } // Inst_SMEM__S_BUFFER_STORE_DWORD
5781 
5783  {
5784  } // ~Inst_SMEM__S_BUFFER_STORE_DWORD
5785 
5786  // --- description from .arch file ---
5787  // Write 1 dword to scalar data cache. See S_STORE_DWORD for details on the
5788  // --- offset input.
5789  void
5791  {
5793  } // execute
5794 
5795  void
5797  {
5798  } // initiateAcc
5799 
5800  void
5802  {
5803  } // completeAcc
5804  // --- Inst_SMEM__S_BUFFER_STORE_DWORDX2 class methods ---
5805 
5807  InFmt_SMEM *iFmt)
5808  : Inst_SMEM(iFmt, "s_buffer_store_dwordx2")
5809  {
5810  setFlag(MemoryRef);
5811  setFlag(Store);
5812  } // Inst_SMEM__S_BUFFER_STORE_DWORDX2
5813 
5815  {
5816  } // ~Inst_SMEM__S_BUFFER_STORE_DWORDX2
5817 
5818  // --- description from .arch file ---
5819  // Write 2 dwords to scalar data cache. See S_STORE_DWORD for details on
5820  // the offset input.
5821  void
5823  {
5825  } // execute
5826 
5827  void
5829  {
5830  } // initiateAcc
5831 
5832  void
5834  {
5835  } // completeAcc
5836  // --- Inst_SMEM__S_BUFFER_STORE_DWORDX4 class methods ---
5837 
5839  InFmt_SMEM *iFmt)
5840  : Inst_SMEM(iFmt, "s_buffer_store_dwordx4")
5841  {
5842  setFlag(MemoryRef);
5843  setFlag(Store);
5844  } // Inst_SMEM__S_BUFFER_STORE_DWORDX4
5845 
5847  {
5848  } // ~Inst_SMEM__S_BUFFER_STORE_DWORDX4
5849 
5850  // --- description from .arch file ---
5851  // Write 4 dwords to scalar data cache. See S_STORE_DWORD for details on
5852  // the offset input.
5853  void
5855  {
5857  } // execute
5858 
5859  void
5861  {
5862  } // initiateAcc
5863 
5864  void
5866  {
5867  } // completeAcc
5868  // --- Inst_SMEM__S_DCACHE_INV class methods ---
5869 
5871  : Inst_SMEM(iFmt, "s_dcache_inv")
5872  {
5873  } // Inst_SMEM__S_DCACHE_INV
5874 
5876  {
5877  } // ~Inst_SMEM__S_DCACHE_INV
5878 
5879  // --- description from .arch file ---
5880  // Invalidate the scalar data cache.
5881  void
5883  {
5885  } // execute
5886  // --- Inst_SMEM__S_DCACHE_WB class methods ---
5887 
5889  : Inst_SMEM(iFmt, "s_dcache_wb")
5890  {
5891  } // Inst_SMEM__S_DCACHE_WB
5892 
5894  {
5895  } // ~Inst_SMEM__S_DCACHE_WB
5896 
5897  // --- description from .arch file ---
5898  // Write back dirty data in the scalar data cache.
5899  void
5901  {
5903  } // execute
5904  // --- Inst_SMEM__S_DCACHE_INV_VOL class methods ---
5905 
5907  : Inst_SMEM(iFmt, "s_dcache_inv_vol")
5908  {
5909  } // Inst_SMEM__S_DCACHE_INV_VOL
5910 
5912  {
5913  } // ~Inst_SMEM__S_DCACHE_INV_VOL
5914 
5915  // --- description from .arch file ---
5916  // Invalidate the scalar data cache volatile lines.
5917  void
5919  {
5921  } // execute
5922  // --- Inst_SMEM__S_DCACHE_WB_VOL class methods ---
5923 
5925  : Inst_SMEM(iFmt, "s_dcache_wb_vol")
5926  {
5927  } // Inst_SMEM__S_DCACHE_WB_VOL
5928 
5930  {
5931  } // ~Inst_SMEM__S_DCACHE_WB_VOL
5932 
5933  // --- description from .arch file ---
5934  // Write back dirty data in the scalar data cache volatile lines.
5935  void
5937  {
5939  } // execute
5940  // --- Inst_SMEM__S_MEMTIME class methods ---
5941 
5943  : Inst_SMEM(iFmt, "s_memtime")
5944  {
5945  // s_memtime does not issue a memory request
5946  setFlag(ALU);
5947  } // Inst_SMEM__S_MEMTIME
5948 
5950  {
5951  } // ~Inst_SMEM__S_MEMTIME
5952 
5953  // --- description from .arch file ---
5954  // Return current 64-bit timestamp.
5955  void
5957  {
5958  ScalarOperandU64 sdst(gpuDynInst, instData.SDATA);
5959  sdst = (ScalarRegU64)gpuDynInst->computeUnit()->curCycle();
5960  sdst.write();
5961  } // execute
5962  // --- Inst_SMEM__S_MEMREALTIME class methods ---
5963 
5965  : Inst_SMEM(iFmt, "s_memrealtime")
5966  {
5967  } // Inst_SMEM__S_MEMREALTIME
5968 
5970  {
5971  } // ~Inst_SMEM__S_MEMREALTIME
5972 
5973  // --- description from .arch file ---
5974  // Return current 64-bit RTC.
5975  void
5977  {
5979  } // execute
5980  // --- Inst_SMEM__S_ATC_PROBE class methods ---
5981 
5983  : Inst_SMEM(iFmt, "s_atc_probe")
5984  {
5985  } // Inst_SMEM__S_ATC_PROBE
5986 
5988  {
5989  } // ~Inst_SMEM__S_ATC_PROBE
5990 
5991  // --- description from .arch file ---
5992  // Probe or prefetch an address into the SQC data cache.
5993  void
5995  {
5997  } // execute
5998  // --- Inst_SMEM__S_ATC_PROBE_BUFFER class methods ---
5999 
6001  InFmt_SMEM *iFmt)
6002  : Inst_SMEM(iFmt, "s_atc_probe_buffer")
6003  {
6004  } // Inst_SMEM__S_ATC_PROBE_BUFFER
6005 
6007  {
6008  } // ~Inst_SMEM__S_ATC_PROBE_BUFFER
6009 
6010  // --- description from .arch file ---
6011  // Probe or prefetch an address into the SQC data cache.
6012  void
6014  {
6016  } // execute
6017  // --- Inst_VOP2__V_CNDMASK_B32 class methods ---
6018 
6020  : Inst_VOP2(iFmt, "v_cndmask_b32")
6021  {
6022  setFlag(ALU);
6023  setFlag(ReadsVCC);
6024  } // Inst_VOP2__V_CNDMASK_B32
6025 
6027  {
6028  } // ~Inst_VOP2__V_CNDMASK_B32
6029 
6030  // --- description from .arch file ---
6031  // D.u = (VCC[i] ? S1.u : S0.u) (i = threadID in wave); VOP3: specify VCC
6032  // as a scalar GPR in S2.
6033  void
6035  {
6036  Wavefront *wf = gpuDynInst->wavefront();
6037  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6038  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6039  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6040  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6041 
6042  src0.readSrc();
6043  src1.read();
6044  vcc.read();
6045 
6046  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6047  if (wf->execMask(lane)) {
6048  vdst[lane]
6049  = bits(vcc.rawData(), lane) ? src1[lane] : src0[lane];
6050  }
6051  }
6052 
6053  vdst.write();
6054  } // execute
6055  // --- Inst_VOP2__V_ADD_F32 class methods ---
6056 
6058  : Inst_VOP2(iFmt, "v_add_f32")
6059  {
6060  setFlag(ALU);
6061  setFlag(F32);
6062  } // Inst_VOP2__V_ADD_F32
6063 
6065  {
6066  } // ~Inst_VOP2__V_ADD_F32
6067 
6068  // --- description from .arch file ---
6069  // D.f = S0.f + S1.f.
6070  void
6072  {
6073  Wavefront *wf = gpuDynInst->wavefront();
6074  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6075  VecOperandF32 src1(gpuDynInst, instData.VSRC1);
6076  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6077 
6078  src0.readSrc();
6079  src1.read();
6080 
6081  if (isDPPInst()) {
6082  VecOperandF32 src0_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
6083  src0_dpp.read();
6084 
6085  DPRINTF(VEGA, "Handling V_ADD_F32 SRC DPP. SRC0: register v[%d], "
6086  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
6087  "SRC1_ABS: %d, SRC1_NEG: %d, BC: %d, "
6088  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
6097 
6098  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src0_dpp, src1);
6099 
6100  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6101  if (wf->execMask(lane)) {
6102  vdst[lane] = src0_dpp[lane] + src1[lane];
6103  }
6104  }
6105  } else {
6106  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6107  if (wf->execMask(lane)) {
6108  vdst[lane] = src0[lane] + src1[lane];
6109  }
6110  }
6111  }
6112 
6113  vdst.write();
6114  } // execute
6115  // --- Inst_VOP2__V_SUB_F32 class methods ---
6116 
6118  : Inst_VOP2(iFmt, "v_sub_f32")
6119  {
6120  setFlag(ALU);
6121  setFlag(F32);
6122  } // Inst_VOP2__V_SUB_F32
6123 
6125  {
6126  } // ~Inst_VOP2__V_SUB_F32
6127 
6128  // --- description from .arch file ---
6129  // D.f = S0.f - S1.f.
6130  // SQ translates to V_ADD_F32.
6131  void
6133  {
6134  Wavefront *wf = gpuDynInst->wavefront();
6135  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6136  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6137  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6138 
6139  src0.readSrc();
6140  src1.read();
6141 
6142  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6143  if (wf->execMask(lane)) {
6144  vdst[lane] = src0[lane] - src1[lane];
6145  }
6146  }
6147 
6148  vdst.write();
6149  } // execute
6150  // --- Inst_VOP2__V_SUBREV_F32 class methods ---
6151 
6153  : Inst_VOP2(iFmt, "v_subrev_f32")
6154  {
6155  setFlag(ALU);
6156  setFlag(F32);
6157  } // Inst_VOP2__V_SUBREV_F32
6158 
6160  {
6161  } // ~Inst_VOP2__V_SUBREV_F32
6162 
6163  // --- description from .arch file ---
6164  // D.f = S1.f - S0.f.
6165  // SQ translates to V_ADD_F32.
6166  void
6168  {
6169  Wavefront *wf = gpuDynInst->wavefront();
6170  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6171  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6172  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6173 
6174  src0.readSrc();
6175  src1.read();
6176 
6177  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6178  if (wf->execMask(lane)) {
6179  vdst[lane] = src1[lane] - src0[lane];
6180  }
6181  }
6182 
6183  vdst.write();
6184  } // execute
6185  // --- Inst_VOP2__V_MUL_LEGACY_F32 class methods ---
6186 
6188  : Inst_VOP2(iFmt, "v_mul_legacy_f32")
6189  {
6190  setFlag(ALU);
6191  setFlag(F32);
6192  } // Inst_VOP2__V_MUL_LEGACY_F32
6193 
6195  {
6196  } // ~Inst_VOP2__V_MUL_LEGACY_F32
6197 
6198  // --- description from .arch file ---
6199  // D.f = S0.f * S1.f (DX9 rules, 0.0*x = 0.0).
6200  void
6202  {
6203  Wavefront *wf = gpuDynInst->wavefront();
6204  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6205  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6206  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6207 
6208  src0.readSrc();
6209  src1.read();
6210 
6211  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6212  if (wf->execMask(lane)) {
6213  vdst[lane] = src0[lane] * src1[lane];
6214  }
6215  }
6216 
6217  vdst.write();
6218  } // execute
6219  // --- Inst_VOP2__V_MUL_F32 class methods ---
6220 
6222  : Inst_VOP2(iFmt, "v_mul_f32")
6223  {
6224  setFlag(ALU);
6225  setFlag(F32);
6226  } // Inst_VOP2__V_MUL_F32
6227 
6229  {
6230  } // ~Inst_VOP2__V_MUL_F32
6231 
6232  // --- description from .arch file ---
6233  // D.f = S0.f * S1.f.
6234  void
6236  {
6237  Wavefront *wf = gpuDynInst->wavefront();
6238  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6239  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6240  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6241 
6242  src0.readSrc();
6243  src1.read();
6244 
6245  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6246  if (wf->execMask(lane)) {
6247  if (std::isnan(src0[lane]) ||
6248  std::isnan(src1[lane])) {
6249  vdst[lane] = NAN;
6250  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
6251  std::fpclassify(src0[lane]) == FP_ZERO) &&
6252  !std::signbit(src0[lane])) {
6253  if (std::isinf(src1[lane])) {
6254  vdst[lane] = NAN;
6255  } else if (!std::signbit(src1[lane])) {
6256  vdst[lane] = +0.0;
6257  } else {
6258  vdst[lane] = -0.0;
6259  }
6260  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
6261  std::fpclassify(src0[lane]) == FP_ZERO) &&
6262  std::signbit(src0[lane])) {
6263  if (std::isinf(src1[lane])) {
6264  vdst[lane] = NAN;
6265  } else if (std::signbit(src1[lane])) {
6266  vdst[lane] = +0.0;
6267  } else {
6268  vdst[lane] = -0.0;
6269  }
6270  } else if (std::isinf(src0[lane]) &&
6271  !std::signbit(src0[lane])) {
6272  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
6273  std::fpclassify(src1[lane]) == FP_ZERO) {
6274  vdst[lane] = NAN;
6275  } else if (!std::signbit(src1[lane])) {
6276  vdst[lane] = +INFINITY;
6277  } else {
6278  vdst[lane] = -INFINITY;
6279  }
6280  } else if (std::isinf(src0[lane]) &&
6281  std::signbit(src0[lane])) {
6282  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
6283  std::fpclassify(src1[lane]) == FP_ZERO) {
6284  vdst[lane] = NAN;
6285  } else if (std::signbit(src1[lane])) {
6286  vdst[lane] = +INFINITY;
6287  } else {
6288  vdst[lane] = -INFINITY;
6289  }
6290  } else {
6291  vdst[lane] = src0[lane] * src1[lane];
6292  }
6293  }
6294  }
6295 
6296  vdst.write();
6297  } // execute
6298  // --- Inst_VOP2__V_MUL_I32_I24 class methods ---
6299 
6301  : Inst_VOP2(iFmt, "v_mul_i32_i24")
6302  {
6303  setFlag(ALU);
6304  } // Inst_VOP2__V_MUL_I32_I24
6305 
6307  {
6308  } // ~Inst_VOP2__V_MUL_I32_I24
6309 
6310  // --- description from .arch file ---
6311  // D.i = S0.i[23:0] * S1.i[23:0].
6312  void
6314  {
6315  Wavefront *wf = gpuDynInst->wavefront();
6316  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
6317  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
6318  VecOperandI32 vdst(gpuDynInst, instData.VDST);
6319 
6320  src0.readSrc();
6321  src1.read();
6322 
6323  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6324  if (wf->execMask(lane)) {
6325  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
6326  * sext<24>(bits(src1[lane], 23, 0));
6327  }
6328  }
6329 
6330  vdst.write();
6331  } // execute
6332  // --- Inst_VOP2__V_MUL_HI_I32_I24 class methods ---
6333 
6335  : Inst_VOP2(iFmt, "v_mul_hi_i32_i24")
6336  {
6337  setFlag(ALU);
6338  } // Inst_VOP2__V_MUL_HI_I32_I24
6339 
6341  {
6342  } // ~Inst_VOP2__V_MUL_HI_I32_I24
6343 
6344  // --- description from .arch file ---
6345  // D.i = (S0.i[23:0] * S1.i[23:0])>>32.
6346  void
6348  {
6349  Wavefront *wf = gpuDynInst->wavefront();
6350  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
6351  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
6352  VecOperandI32 vdst(gpuDynInst, instData.VDST);
6353 
6354  src0.readSrc();
6355  src1.read();
6356 
6357  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6358  if (wf->execMask(lane)) {
6359  VecElemI64 tmp_src0
6360  = (VecElemI64)sext<24>(bits(src0[lane], 23, 0));
6361  VecElemI64 tmp_src1
6362  = (VecElemI64)sext<24>(bits(src1[lane], 23, 0));
6363 
6364  vdst[lane] = (VecElemI32)((tmp_src0 * tmp_src1) >> 32);
6365  }
6366  }
6367 
6368  vdst.write();
6369  } // execute
6370  // --- Inst_VOP2__V_MUL_U32_U24 class methods ---
6371 
6373  : Inst_VOP2(iFmt, "v_mul_u32_u24")
6374  {
6375  setFlag(ALU);
6376  } // Inst_VOP2__V_MUL_U32_U24
6377 
6379  {
6380  } // ~Inst_VOP2__V_MUL_U32_U24
6381 
6382  // --- description from .arch file ---
6383  // D.u = S0.u[23:0] * S1.u[23:0].
6384  void
6386  {
6387  auto opImpl = [](VecOperandU32& src0, VecOperandU32& src1,
6388  VecOperandU32& vdst, Wavefront* wf) {
6389  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6390  if (wf->execMask(lane)) {
6391  vdst[lane] = bits(src0[lane], 23, 0) *
6392  bits(src1[lane], 23, 0);
6393  }
6394  }
6395  };
6396 
6397  vop2Helper<VecOperandU32>(gpuDynInst, opImpl);
6398  } // execute
6399  // --- Inst_VOP2__V_MUL_HI_U32_U24 class methods ---
6400 
6402  : Inst_VOP2(iFmt, "v_mul_hi_u32_u24")
6403  {
6404  setFlag(ALU);
6405  } // Inst_VOP2__V_MUL_HI_U32_U24
6406 
6408  {
6409  } // ~Inst_VOP2__V_MUL_HI_U32_U24
6410 
6411  // --- description from .arch file ---
6412  // D.i = (S0.u[23:0] * S1.u[23:0])>>32.
6413  void
6415  {
6416  Wavefront *wf = gpuDynInst->wavefront();
6417  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6418  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6419  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6420 
6421  src0.readSrc();
6422  src1.read();
6423 
6424  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6425  if (wf->execMask(lane)) {
6426  VecElemU64 tmp_src0 = (VecElemU64)bits(src0[lane], 23, 0);
6427  VecElemU64 tmp_src1 = (VecElemU64)bits(src1[lane], 23, 0);
6428  vdst[lane] = (VecElemU32)((tmp_src0 * tmp_src1) >> 32);
6429  }
6430  }
6431 
6432  vdst.write();
6433  } // execute
6434  // --- Inst_VOP2__V_MIN_F32 class methods ---
6435 
6437  : Inst_VOP2(iFmt, "v_min_f32")
6438  {
6439  setFlag(ALU);
6440  setFlag(F32);
6441  } // Inst_VOP2__V_MIN_F32
6442 
6444  {
6445  } // ~Inst_VOP2__V_MIN_F32
6446 
6447  // --- description from .arch file ---
6448  // D.f = (S0.f < S1.f ? S0.f : S1.f).
6449  void
6451  {
6452  Wavefront *wf = gpuDynInst->wavefront();
6453  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6454  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6455  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6456 
6457  src0.readSrc();
6458  src1.read();
6459 
6460  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6461  if (wf->execMask(lane)) {
6462  vdst[lane] = std::fmin(src0[lane], src1[lane]);
6463  }
6464  }
6465 
6466  vdst.write();
6467  } // execute
6468  // --- Inst_VOP2__V_MAX_F32 class methods ---
6469 
6471  : Inst_VOP2(iFmt, "v_max_f32")
6472  {
6473  setFlag(ALU);
6474  setFlag(F32);
6475  } // Inst_VOP2__V_MAX_F32
6476 
6478  {
6479  } // ~Inst_VOP2__V_MAX_F32
6480 
6481  // --- description from .arch file ---
6482  // D.f = (S0.f >= S1.f ? S0.f : S1.f).
6483  void
6485  {
6486  Wavefront *wf = gpuDynInst->wavefront();
6487  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6488  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6489  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6490 
6491  src0.readSrc();
6492  src1.read();
6493 
6494  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6495  if (wf->execMask(lane)) {
6496  vdst[lane] = std::fmax(src0[lane], src1[lane]);
6497  }
6498  }
6499 
6500  vdst.write();
6501  } // execute
6502  // --- Inst_VOP2__V_MIN_I32 class methods ---
6503 
6505  : Inst_VOP2(iFmt, "v_min_i32")
6506  {
6507  setFlag(ALU);
6508  } // Inst_VOP2__V_MIN_I32
6509 
6511  {
6512  } // ~Inst_VOP2__V_MIN_I32
6513 
6514  // --- description from .arch file ---
6515  // D.i = min(S0.i, S1.i).
6516  void
6518  {
6519  Wavefront *wf = gpuDynInst->wavefront();
6520  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
6521  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
6522  VecOperandI32 vdst(gpuDynInst, instData.VDST);
6523 
6524  src0.readSrc();
6525  src1.read();
6526 
6527  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6528  if (wf->execMask(lane)) {
6529  vdst[lane] = std::min(src0[lane], src1[lane]);
6530  }
6531  }
6532 
6533  vdst.write();
6534  } // execute
6535  // --- Inst_VOP2__V_MAX_I32 class methods ---
6536 
6538  : Inst_VOP2(iFmt, "v_max_i32")
6539  {
6540  setFlag(ALU);
6541  } // Inst_VOP2__V_MAX_I32
6542 
6544  {
6545  } // ~Inst_VOP2__V_MAX_I32
6546 
6547  // --- description from .arch file ---
6548  // D.i = max(S0.i, S1.i).
6549  void
6551  {
6552  Wavefront *wf = gpuDynInst->wavefront();
6553  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
6554  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
6555  VecOperandI32 vdst(gpuDynInst, instData.VDST);
6556 
6557  src0.readSrc();
6558  src1.read();
6559 
6560  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6561  if (wf->execMask(lane)) {
6562  vdst[lane] = std::max(src0[lane], src1[lane]);
6563  }
6564  }
6565 
6566  vdst.write();
6567  } // execute
6568  // --- Inst_VOP2__V_MIN_U32 class methods ---
6569 
6571  : Inst_VOP2(iFmt, "v_min_u32")
6572  {
6573  setFlag(ALU);
6574  } // Inst_VOP2__V_MIN_U32
6575 
6577  {
6578  } // ~Inst_VOP2__V_MIN_U32
6579 
6580  // --- description from .arch file ---
6581  // D.u = min(S0.u, S1.u).
6582  void
6584  {
6585  Wavefront *wf = gpuDynInst->wavefront();
6586  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6587  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6588  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6589 
6590  src0.readSrc();
6591  src1.read();
6592 
6593  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6594  if (wf->execMask(lane)) {
6595  vdst[lane] = std::min(src0[lane], src1[lane]);
6596  }
6597  }
6598 
6599  vdst.write();
6600  } // execute
6601  // --- Inst_VOP2__V_MAX_U32 class methods ---
6602 
6604  : Inst_VOP2(iFmt, "v_max_u32")
6605  {
6606  setFlag(ALU);
6607  } // Inst_VOP2__V_MAX_U32
6608 
6610  {
6611  } // ~Inst_VOP2__V_MAX_U32
6612 
6613  // --- description from .arch file ---
6614  // D.u = max(S0.u, S1.u).
6615  void
6617  {
6618  Wavefront *wf = gpuDynInst->wavefront();
6619  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6620  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6621  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6622 
6623  src0.readSrc();
6624  src1.read();
6625 
6626  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6627  if (wf->execMask(lane)) {
6628  vdst[lane] = std::max(src0[lane], src1[lane]);
6629  }
6630  }
6631 
6632  vdst.write();
6633  } // execute
6634  // --- Inst_VOP2__V_LSHRREV_B32 class methods ---
6635 
6637  : Inst_VOP2(iFmt, "v_lshrrev_b32")
6638  {
6639  setFlag(ALU);
6640  } // Inst_VOP2__V_LSHRREV_B32
6641 
6643  {
6644  } // ~Inst_VOP2__V_LSHRREV_B32
6645 
6646  // --- description from .arch file ---
6647  // D.u = S1.u >> S0.u[4:0].
6648  // The vacated bits are set to zero.
6649  // SQ translates this to an internal SP opcode.
6650  void
6652  {
6653  Wavefront *wf = gpuDynInst->wavefront();
6654  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6655  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6656  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6657 
6658  src0.readSrc();
6659  src1.read();
6660 
6661  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6662  if (wf->execMask(lane)) {
6663  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
6664  }
6665  }
6666 
6667  vdst.write();
6668  } // execute
6669  // --- Inst_VOP2__V_ASHRREV_I32 class methods ---
6670 
6672  : Inst_VOP2(iFmt, "v_ashrrev_i32")
6673  {
6674  setFlag(ALU);
6675  } // Inst_VOP2__V_ASHRREV_I32
6676 
6678  {
6679  } // ~Inst_VOP2__V_ASHRREV_I32
6680 
6681  // --- description from .arch file ---
6682  // D.i = signext(S1.i) >> S0.i[4:0].
6683  // The vacated bits are set to the sign bit of the input value.
6684  // SQ translates this to an internal SP opcode.
6685  void
6687  {
6688  Wavefront *wf = gpuDynInst->wavefront();
6689  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6690  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
6691  VecOperandI32 vdst(gpuDynInst, instData.VDST);
6692 
6693  src0.readSrc();
6694  src1.read();
6695 
6696  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6697  if (wf->execMask(lane)) {
6698  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
6699  }
6700  }
6701 
6702  vdst.write();
6703  } // execute
6704  // --- Inst_VOP2__V_LSHLREV_B32 class methods ---
6705 
6707  : Inst_VOP2(iFmt, "v_lshlrev_b32")
6708  {
6709  setFlag(ALU);
6710  } // Inst_VOP2__V_LSHLREV_B32
6711 
6713  {
6714  } // ~Inst_VOP2__V_LSHLREV_B32
6715 
6716  // --- description from .arch file ---
6717  // D.u = S1.u << S0.u[4:0].
6718  // SQ translates this to an internal SP opcode.
6719  void
6721  {
6722  Wavefront *wf = gpuDynInst->wavefront();
6723  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6724  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6725  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6726 
6727  src0.readSrc();
6728  src1.read();
6729 
6730  if (isSDWAInst()) {
6731  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
6732  // use copies of original src0, src1, and vdst during selecting
6733  VecOperandU32 origSrc0_sdwa(gpuDynInst,
6735  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
6736  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
6737 
6738  src0_sdwa.read();
6739  origSrc0_sdwa.read();
6740  origSrc1.read();
6741 
6742  DPRINTF(VEGA, "Handling V_LSHLREV_B32 SRC SDWA. SRC0: register "
6743  "v[%d], DST_SEL: %d, DST_U: %d, CLMP: %d, SRC0_SEL: "
6744  "%d, SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: "
6745  "%d, SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
6757 
6758  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
6759  src1, origSrc1);
6760 
6761  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6762  if (wf->execMask(lane)) {
6763  vdst[lane] = src1[lane] << bits(src0_sdwa[lane], 4, 0);
6764  origVdst[lane] = vdst[lane]; // keep copy consistent
6765  }
6766  }
6767 
6768  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
6769  } else {
6770  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6771  if (wf->execMask(lane)) {
6772  vdst[lane] = src1[lane] << bits(src0[lane], 4, 0);
6773  }
6774  }
6775  }
6776 
6777  vdst.write();
6778  } // execute
6779  // --- Inst_VOP2__V_AND_B32 class methods ---
6780 
6782  : Inst_VOP2(iFmt, "v_and_b32")
6783  {
6784  setFlag(ALU);
6785  } // Inst_VOP2__V_AND_B32
6786 
6788  {
6789  } // ~Inst_VOP2__V_AND_B32
6790 
6791  // --- description from .arch file ---
6792  // D.u = S0.u & S1.u.
6793  // Input and output modifiers not supported.
6794  void
6796  {
6797  Wavefront *wf = gpuDynInst->wavefront();
6798  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6799  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6800  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6801 
6802  src0.readSrc();
6803  src1.read();
6804 
6805  if (isDPPInst()) {
6806  VecOperandU32 src0_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
6807  src0_dpp.read();
6808 
6809  DPRINTF(VEGA, "Handling V_AND_B32 SRC DPP. SRC0: register v[%d], "
6810  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
6811  "SRC1_ABS: %d, SRC1_NEG: %d, BC: %d, "
6812  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
6821 
6822  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src0_dpp, src1);
6823 
6824  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6825  if (wf->execMask(lane)) {
6826  vdst[lane] = src0_dpp[lane] & src1[lane];
6827  }
6828  }
6829  } else {
6830  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6831  if (wf->execMask(lane)) {
6832  vdst[lane] = src0[lane] & src1[lane];
6833  }
6834  }
6835  }
6836 
6837  vdst.write();
6838  } // execute
6839  // --- Inst_VOP2__V_OR_B32 class methods ---
6840 
6842  : Inst_VOP2(iFmt, "v_or_b32")
6843  {
6844  setFlag(ALU);
6845  } // Inst_VOP2__V_OR_B32
6846 
6848  {
6849  } // ~Inst_VOP2__V_OR_B32
6850 
6851  // --- description from .arch file ---
6852  // D.u = S0.u | S1.u.
6853  // Input and output modifiers not supported.
6854  void
6856  {
6857  Wavefront *wf = gpuDynInst->wavefront();
6858  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6859  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6860  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6861 
6862  src0.readSrc();
6863  src1.read();
6864 
6865  if (isSDWAInst()) {
6866  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
6867  // use copies of original src0, src1, and dest during selecting
6868  VecOperandU32 origSrc0_sdwa(gpuDynInst,
6870  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
6871  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
6872 
6873  src0_sdwa.read();
6874  origSrc0_sdwa.read();
6875  origSrc1.read();
6876 
6877  DPRINTF(VEGA, "Handling V_OR_B32 SRC SDWA. SRC0: register v[%d], "
6878  "DST_SEL: %d, DST_U: %d, CLMP: %d, SRC0_SEL: %d, "
6879  "SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: %d, "
6880  "SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
6892 
6893  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
6894  src1, origSrc1);
6895 
6896  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6897  if (wf->execMask(lane)) {
6898  vdst[lane] = src0_sdwa[lane] | src1[lane];
6899  origVdst[lane] = vdst[lane]; // keep copy consistent
6900  }
6901  }
6902 
6903  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
6904  } else {
6905  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6906  if (wf->execMask(lane)) {
6907  vdst[lane] = src0[lane] | src1[lane];
6908  }
6909  }
6910  }
6911 
6912  vdst.write();
6913  } // execute
6914  // --- Inst_VOP2__V_XOR_B32 class methods ---
6915 
6917  : Inst_VOP2(iFmt, "v_xor_b32")
6918  {
6919  setFlag(ALU);
6920  } // Inst_VOP2__V_XOR_B32
6921 
6923  {
6924  } // ~Inst_VOP2__V_XOR_B32
6925 
6926  // --- description from .arch file ---
6927  // D.u = S0.u ^ S1.u.
6928  // Input and output modifiers not supported.
6929  void
6931  {
6932  Wavefront *wf = gpuDynInst->wavefront();
6933  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6934  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6935  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6936 
6937  src0.readSrc();
6938  src1.read();
6939 
6940  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6941  if (wf->execMask(lane)) {
6942  vdst[lane] = src0[lane] ^ src1[lane];
6943  }
6944  }
6945 
6946  vdst.write();
6947  } // execute
6948  // --- Inst_VOP2__V_MAC_F32 class methods ---
6949 
6951  : Inst_VOP2(iFmt, "v_mac_f32")
6952  {
6953  setFlag(ALU);
6954  setFlag(F32);
6955  setFlag(MAC);
6956  } // Inst_VOP2__V_MAC_F32
6957 
6959  {
6960  } // ~Inst_VOP2__V_MAC_F32
6961 
6962  // --- description from .arch file ---
6963  // D.f = S0.f * S1.f + D.f.
6964  // SQ translates to V_MAD_F32.
6965  void
6967  {
6968  Wavefront *wf = gpuDynInst->wavefront();
6969  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6970  VecOperandF32 src1(gpuDynInst, instData.VSRC1);
6971  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6972 
6973  src0.readSrc();
6974  src1.read();
6975  vdst.read();
6976 
6977  if (isDPPInst()) {
6978  VecOperandF32 src0_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
6979  src0_dpp.read();
6980 
6981  DPRINTF(VEGA, "Handling V_MAC_F32 SRC DPP. SRC0: register v[%d], "
6982  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
6983  "SRC1_ABS: %d, SRC1_NEG: %d, BC: %d, "
6984  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
6993 
6994  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src0_dpp, src1);
6995 
6996  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6997  if (wf->execMask(lane)) {
6998  vdst[lane] = std::fma(src0_dpp[lane], src1[lane],
6999  vdst[lane]);
7000  }
7001  }
7002  } else {
7003  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7004  if (wf->execMask(lane)) {
7005  vdst[lane] = std::fma(src0[lane], src1[lane], vdst[lane]);
7006  }
7007  }
7008  }
7009 
7010  vdst.write();
7011  } // execute
7012  // --- Inst_VOP2__V_MADMK_F32 class methods ---
7013 
7015  : Inst_VOP2(iFmt, "v_madmk_f32")
7016  {
7017  setFlag(ALU);
7018  setFlag(F32);
7019  setFlag(MAD);
7020  } // Inst_VOP2__V_MADMK_F32
7021 
7023  {
7024  } // ~Inst_VOP2__V_MADMK_F32
7025 
7026  // --- description from .arch file ---
7027  // D.f = S0.f * K + S1.f; K is a 32-bit inline constant.
7028  // This opcode cannot use the VOP3 encoding and cannot use input/output
7029  // --- modifiers.
7030  // SQ translates to V_MAD_F32.
7031  void
7033  {
7034  Wavefront *wf = gpuDynInst->wavefront();
7035  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
7036  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
7037  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7039 
7040  src0.readSrc();
7041  src1.read();
7042 
7043  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7044  if (wf->execMask(lane)) {
7045  vdst[lane] = std::fma(src0[lane], k, src1[lane]);
7046  }
7047  }
7048 
7049  vdst.write();
7050  } // execute
7051  // --- Inst_VOP2__V_MADAK_F32 class methods ---
7052 
7054  : Inst_VOP2(iFmt, "v_madak_f32")
7055  {
7056  setFlag(ALU);
7057  setFlag(F32);
7058  setFlag(MAD);
7059  } // Inst_VOP2__V_MADAK_F32
7060 
7062  {
7063  } // ~Inst_VOP2__V_MADAK_F32
7064 
7065  // --- description from .arch file ---
7066  // D.f = S0.f * S1.f + K; K is a 32-bit inline constant.
7067  // This opcode cannot use the VOP3 encoding and cannot use input/output
7068  // --- modifiers.
7069  // SQ translates to V_MAD_F32.
7070  void
7072  {
7073  Wavefront *wf = gpuDynInst->wavefront();
7074  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
7075  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
7076  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7078 
7079  src0.readSrc();
7080  src1.read();
7081 
7082  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7083  if (wf->execMask(lane)) {
7084  vdst[lane] = std::fma(src0[lane], src1[lane], k);
7085  }
7086  }
7087 
7088  vdst.write();
7089  } // execute
7090  // --- Inst_VOP2__V_ADD_CO_U32 class methods ---
7091 
7093  : Inst_VOP2(iFmt, "v_add_co_u32")
7094  {
7095  setFlag(ALU);
7096  setFlag(WritesVCC);
7097  } // Inst_VOP2__V_ADD_CO_U32
7098 
7100  {
7101  } // ~Inst_VOP2__V_ADD_CO_U32
7102 
7103  // --- description from .arch file ---
7104  // D.u = S0.u + S1.u;
7105  // VCC[threadId] = (S0.u + S1.u >= 0x800000000ULL ? 1 : 0) is an UNSIGNED
7106  // --- overflow or carry-out for V_ADDC_U32.
7107  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
7108  void
7110  {
7111  Wavefront *wf = gpuDynInst->wavefront();
7112  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
7113  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
7114  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7115  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
7116 
7117  src0.readSrc();
7118  src1.read();
7119 
7120  if (isSDWAInst()) {
7121  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
7122  // use copies of original src0, src1, and dest during selecting
7123  VecOperandU32 origSrc0_sdwa(gpuDynInst,
7125  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
7126  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
7127 
7128  src0_sdwa.read();
7129  origSrc0_sdwa.read();
7130  origSrc1.read();
7131 
7132  DPRINTF(VEGA, "Handling V_ADD_CO_U32 SRC SDWA. SRC0: register "
7133  "v[%d], DST_SEL: %d, DST_U: %d, CLMP: %d, SRC0_SEL: %d, "
7134  "SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: %d, "
7135  "SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
7147 
7148  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
7149  src1, origSrc1);
7150 
7151  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7152  if (wf->execMask(lane)) {
7153  vdst[lane] = src0_sdwa[lane] + src1[lane];
7154  origVdst[lane] = vdst[lane]; // keep copy consistent
7155  vcc.setBit(lane, ((VecElemU64)src0_sdwa[lane]
7156  + (VecElemU64)src1[lane] >= 0x100000000ULL) ? 1 : 0);
7157  }
7158  }
7159 
7160  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
7161  } else {
7162  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7163  if (wf->execMask(lane)) {
7164  vdst[lane] = src0[lane] + src1[lane];
7165  vcc.setBit(lane, ((VecElemU64)src0[lane]
7166  + (VecElemU64)src1[lane] >= 0x100000000ULL) ? 1 : 0);
7167  }
7168  }
7169  }
7170 
7171  vcc.write();
7172  vdst.write();
7173  } // execute
7174  // --- Inst_VOP2__V_SUB_CO_U32 class methods ---
7175 
7177  : Inst_VOP2(iFmt, "v_sub_co_u32")
7178  {
7179  setFlag(ALU);
7180  setFlag(WritesVCC);
7181  } // Inst_VOP2__V_SUB_CO_U32
7182 
7184  {
7185  } // ~Inst_VOP2__V_SUB_CO_U32
7186 
7187  // --- description from .arch file ---
7188  // D.u = S0.u - S1.u;
7189  // VCC[threadId] = (S1.u > S0.u ? 1 : 0) is an UNSIGNED overflow or
7190  // carry-out for V_SUBB_U32.
7191  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
7192  void
7194  {
7195  Wavefront *wf = gpuDynInst->wavefront();
7196  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
7197  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
7198  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7199  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
7200 
7201  src0.readSrc();
7202  src1.read();
7203 
7204  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7205  if (wf->execMask(lane)) {
7206  vdst[lane] = src0[lane] - src1[lane];
7207  vcc.setBit(lane, src1[lane] > src0[lane] ? 1 : 0);
7208  }
7209  }
7210 
7211  vdst.write();
7212  vcc.write();
7213  } // execute
7214  // --- Inst_VOP2__V_SUBREV_CO_U32 class methods ---
7215 
7217  : Inst_VOP2(iFmt, "v_subrev_co_u32")
7218  {
7219  setFlag(ALU);
7220  setFlag(WritesVCC);
7221  } // Inst_VOP2__V_SUBREV_CO_U32
7222 
7224  {
7225  } // ~Inst_VOP2__V_SUBREV_CO_U32
7226 
7227  // --- description from .arch file ---
7228  // D.u = S1.u - S0.u;
7229  // VCC[threadId] = (S0.u > S1.u ? 1 : 0) is an UNSIGNED overflow or
7230  // carry-out for V_SUBB_U32.
7231  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
7232  void
7234  {
7235  Wavefront *wf = gpuDynInst->wavefront();
7236  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
7237  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
7238  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7239  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
7240 
7241  src0.readSrc();
7242  src1.read();
7243 
7244  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7245  if (wf->execMask(lane)) {
7246  vdst[lane] = src1[lane] - src0[lane];
7247  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
7248  }
7249  }
7250 
7251  vdst.write();
7252  vcc.write();
7253  } // execute
7254  // --- Inst_VOP2__V_ADDC_CO_U32 class methods ---
7255 
7257  : Inst_VOP2(iFmt, "v_addc_co_u32")
7258  {
7259  setFlag(ALU);
7260  setFlag(WritesVCC);
7261  setFlag(ReadsVCC);
7262  } // Inst_VOP2__V_ADDC_CO_U32
7263 
7265  {
7266  } // ~Inst_VOP2__V_ADDC_CO_U32
7267 
7268  // --- description from .arch file ---
7269  // D.u = S0.u + S1.u + VCC[threadId];
7270  // VCC[threadId] = (S0.u + S1.u + VCC[threadId] >= 0x800000000ULL ? 1 : 0)
7271  // is an UNSIGNED overflow.
7272  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
7273  // source comes from the SGPR-pair at S2.u.
7274  void
7276  {
7277  Wavefront *wf = gpuDynInst->wavefront();
7278  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
7279  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
7280  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7281  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
7282 
7283  src0.readSrc();
7284  src1.read();
7285  vcc.read();
7286 
7287  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7288  if (wf->execMask(lane)) {
7289  vdst[lane] = src0[lane] + src1[lane]
7290  + bits(vcc.rawData(), lane);
7291  vcc.setBit(lane, ((VecElemU64)src0[lane]
7292  + (VecElemU64)src1[lane]
7293  + (VecElemU64)bits(vcc.rawData(), lane, lane))
7294  >= 0x100000000 ? 1 : 0);
7295  }
7296  }
7297 
7298  vdst.write();
7299  vcc.write();
7300  } // execute
7301  // --- Inst_VOP2__V_SUBB_CO_U32 class methods ---
7302 
7304  : Inst_VOP2(iFmt, "v_subb_co_u32")
7305  {
7306  setFlag(ALU);
7307  setFlag(WritesVCC);
7308  setFlag(ReadsVCC);
7309  } // Inst_VOP2__V_SUBB_CO_U32
7310 
7312  {
7313  } // ~Inst_VOP2__V_SUBB_CO_U32
7314 
7315  // --- description from .arch file ---
7316  // D.u = S0.u - S1.u - VCC[threadId];
7317  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
7318  // --- overflow.
7319  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
7320  // --- source comes from the SGPR-pair at S2.u.
7321  void
7323  {
7324  Wavefront *wf = gpuDynInst->wavefront();
7325  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
7326  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
7327  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7328  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
7329 
7330  src0.readSrc();
7331  src1.read();
7332  vcc.read();
7333 
7334  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7335  if (wf->execMask(lane)) {
7336  vdst[lane]
7337  = src0[lane] - src1[lane] - bits(vcc.rawData(), lane);
7338  vcc.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
7339  > src0[lane] ? 1 : 0);
7340  }
7341  }
7342 
7343  vdst.write();
7344  vcc.write();
7345  } // execute
7346  // --- Inst_VOP2__V_SUBBREV_CO_U32 class methods ---
7347 
7349  : Inst_VOP2(iFmt, "v_subbrev_co_u32")
7350  {
7351  setFlag(ALU);
7352  setFlag(WritesVCC);
7353  setFlag(ReadsVCC);
7354  } // Inst_VOP2__V_SUBBREV_CO_U32
7355 
7357  {
7358  } // ~Inst_VOP2__V_SUBBREV_CO_U32
7359 
7360  // --- description from .arch file ---
7361  // D.u = S1.u - S0.u - VCC[threadId];
7362  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
7363  // overflow.
7364  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
7365  // source comes from the SGPR-pair at S2.u. SQ translates to V_SUBB_U32.
7366  // SQ translates this to V_SUBREV_U32 with reversed operands.
7367  void
7369  {
7370  Wavefront *wf = gpuDynInst->wavefront();
7371  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
7372  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
7373  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7374  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
7375 
7376  src0.readSrc();
7377  src1.read();
7378  vcc.read();
7379 
7380  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7381  if (wf->execMask(lane)) {
7382  vdst[lane]
7383  = src1[lane] - src0[lane] - bits(vcc.rawData(), lane);
7384  vcc.setBit(lane, (src0[lane] + bits(vcc.rawData(), lane))
7385  > src1[lane] ? 1 : 0);
7386  }
7387  }
7388 
7389  vdst.write();
7390  vcc.write();
7391  } // execute
7392  // --- Inst_VOP2__V_ADD_F16 class methods ---
7393 
7395  : Inst_VOP2(iFmt, "v_add_f16")
7396  {
7397  setFlag(ALU);
7398  setFlag(F16);
7399  } // Inst_VOP2__V_ADD_F16
7400 
7402  {
7403  } // ~Inst_VOP2__V_ADD_F16
7404 
7405  // --- description from .arch file ---
7406  // D.f16 = S0.f16 + S1.f16.
7407  // Supports denormals, round mode, exception flags, saturation.
7408  void
7410  {
7412  } // execute
7413  // --- Inst_VOP2__V_SUB_F16 class methods ---
7414 
7416  : Inst_VOP2(iFmt, "v_sub_f16")
7417  {
7418  setFlag(ALU);
7419  setFlag(F16);
7420  } // Inst_VOP2__V_SUB_F16
7421 
7423  {
7424  } // ~Inst_VOP2__V_SUB_F16
7425 
7426  // --- description from .arch file ---
7427  // D.f16 = S0.f16 - S1.f16.
7428  // Supports denormals, round mode, exception flags, saturation.
7429  // SQ translates to V_ADD_F16.
7430  void
7432  {
7434  } // execute
7435  // --- Inst_VOP2__V_SUBREV_F16 class methods ---
7436 
7438  : Inst_VOP2(iFmt, "v_subrev_f16")
7439  {
7440  setFlag(ALU);
7441  setFlag(F16);
7442  } // Inst_VOP2__V_SUBREV_F16
7443 
7445  {
7446  } // ~Inst_VOP2__V_SUBREV_F16
7447 
7448  // --- description from .arch file ---
7449  // D.f16 = S1.f16 - S0.f16.
7450  // Supports denormals, round mode, exception flags, saturation.
7451  // SQ translates to V_ADD_F16.
7452  void
7454  {
7456  } // execute
7457  // --- Inst_VOP2__V_MUL_F16 class methods ---
7458 
7460  : Inst_VOP2(iFmt, "v_mul_f16")
7461  {
7462  setFlag(ALU);
7463  setFlag(F16);
7464  } // Inst_VOP2__V_MUL_F16
7465 
7467  {
7468  } // ~Inst_VOP2__V_MUL_F16
7469 
7470  // --- description from .arch file ---
7471  // D.f16 = S0.f16 * S1.f16.
7472  // Supports denormals, round mode, exception flags, saturation.
7473  void
7475  {
7477  } // execute
7478  // --- Inst_VOP2__V_MAC_F16 class methods ---
7479 
7481  : Inst_VOP2(iFmt, "v_mac_f16")
7482  {
7483  setFlag(ALU);
7484  setFlag(F16);
7485  setFlag(MAC);
7486  } // Inst_VOP2__V_MAC_F16
7487 
7489  {
7490  } // ~Inst_VOP2__V_MAC_F16
7491 
7492  // --- description from .arch file ---
7493  // D.f16 = S0.f16 * S1.f16 + D.f16.
7494  // Supports round mode, exception flags, saturation.
7495  // SQ translates this to V_MAD_F16.
7496  void
7498  {
7500  } // execute
7501  // --- Inst_VOP2__V_MADMK_F16 class methods ---
7502 
7504  : Inst_VOP2(iFmt, "v_madmk_f16")
7505  {
7506  setFlag(ALU);
7507  setFlag(F16);
7508  setFlag(MAD);
7509  } // Inst_VOP2__V_MADMK_F16
7510 
7512  {
7513  } // ~Inst_VOP2__V_MADMK_F16
7514 
7515  // --- description from .arch file ---
7516  // D.f16 = S0.f16 * K.f16 + S1.f16; K is a 16-bit inline constant stored
7517  // in the following literal DWORD.
7518  // This opcode cannot use the VOP3 encoding and cannot use input/output
7519  // modifiers. Supports round mode, exception flags, saturation.
7520  // SQ translates this to V_MAD_F16.
7521  void
7523  {
7525  } // execute
7526  // --- Inst_VOP2__V_MADAK_F16 class methods ---
7527 
7529  : Inst_VOP2(iFmt, "v_madak_f16")
7530  {
7531  setFlag(ALU);
7532  setFlag(F16);
7533  setFlag(MAD);
7534  } // Inst_VOP2__V_MADAK_F16
7535 
7537  {
7538  } // ~Inst_VOP2__V_MADAK_F16
7539 
7540  // --- description from .arch file ---
7541  // D.f16 = S0.f16 * S1.f16 + K.f16; K is a 16-bit inline constant stored
7542  // in the following literal DWORD.
7543  // This opcode cannot use the VOP3 encoding and cannot use input/output
7544  // modifiers. Supports round mode, exception flags, saturation.
7545  // SQ translates this to V_MAD_F16.
7546  void
7548  {
7550  } // execute
7551  // --- Inst_VOP2__V_ADD_U16 class methods ---
7552 
7554  : Inst_VOP2(iFmt, "v_add_u16")
7555  {
7556  setFlag(ALU);
7557  } // Inst_VOP2__V_ADD_U16
7558 
7560  {
7561  } // ~Inst_VOP2__V_ADD_U16
7562 
7563  // --- description from .arch file ---
7564  // D.u16 = S0.u16 + S1.u16.
7565  // Supports saturation (unsigned 16-bit integer domain).
7566  void
7568  {
7569  Wavefront *wf = gpuDynInst->wavefront();
7570  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7571  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7572  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7573 
7574  src0.readSrc();
7575  src1.read();
7576 
7577  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7578  if (wf->execMask(lane)) {
7579  vdst[lane] = src0[lane] + src1[lane];
7580  }
7581  }
7582 
7583  vdst.write();
7584  } // execute
7585  // --- Inst_VOP2__V_SUB_U16 class methods ---
7586 
7588  : Inst_VOP2(iFmt, "v_sub_u16")
7589  {
7590  setFlag(ALU);
7591  } // Inst_VOP2__V_SUB_U16
7592 
7594  {
7595  } // ~Inst_VOP2__V_SUB_U16
7596 
7597  // --- description from .arch file ---
7598  // D.u16 = S0.u16 - S1.u16.
7599  // Supports saturation (unsigned 16-bit integer domain).
7600  void
7602  {
7603  Wavefront *wf = gpuDynInst->wavefront();
7604  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7605  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7606  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7607 
7608  src0.readSrc();
7609  src1.read();
7610 
7611  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7612  if (wf->execMask(lane)) {
7613  vdst[lane] = src0[lane] - src1[lane];
7614  }
7615  }
7616 
7617  vdst.write();
7618  } // execute
7619  // --- Inst_VOP2__V_SUBREV_U16 class methods ---
7620 
7622  : Inst_VOP2(iFmt, "v_subrev_u16")
7623  {
7624  setFlag(ALU);
7625  } // Inst_VOP2__V_SUBREV_U16
7626 
7628  {
7629  } // ~Inst_VOP2__V_SUBREV_U16
7630 
7631  // --- description from .arch file ---
7632  // D.u16 = S1.u16 - S0.u16.
7633  // Supports saturation (unsigned 16-bit integer domain).
7634  // SQ translates this to V_SUB_U16 with reversed operands.
7635  void
7637  {
7638  Wavefront *wf = gpuDynInst->wavefront();
7639  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7640  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7641  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7642 
7643  src0.readSrc();
7644  src1.read();
7645 
7646  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7647  if (wf->execMask(lane)) {
7648  vdst[lane] = src1[lane] - src0[lane];
7649  }
7650  }
7651 
7652  vdst.write();
7653  } // execute
7654  // --- Inst_VOP2__V_MUL_LO_U16 class methods ---
7655 
7657  : Inst_VOP2(iFmt, "v_mul_lo_u16")
7658  {
7659  setFlag(ALU);
7660  } // Inst_VOP2__V_MUL_LO_U16
7661 
7663  {
7664  } // ~Inst_VOP2__V_MUL_LO_U16
7665 
7666  // --- description from .arch file ---
7667  // D.u16 = S0.u16 * S1.u16.
7668  // Supports saturation (unsigned 16-bit integer domain).
7669  void
7671  {
7672  Wavefront *wf = gpuDynInst->wavefront();
7673  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7674  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7675  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7676 
7677  src0.readSrc();
7678  src1.read();
7679 
7680  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7681  if (wf->execMask(lane)) {
7682  vdst[lane] = src0[lane] * src1[lane];
7683  }
7684  }
7685 
7686  vdst.write();
7687  } // execute
7688  // --- Inst_VOP2__V_LSHLREV_B16 class methods ---
7689 
7691  : Inst_VOP2(iFmt, "v_lshlrev_b16")
7692  {
7693  setFlag(ALU);
7694  } // Inst_VOP2__V_LSHLREV_B16
7695 
7697  {
7698  } // ~Inst_VOP2__V_LSHLREV_B16
7699 
7700  // --- description from .arch file ---
7701  // D.u[15:0] = S1.u[15:0] << S0.u[3:0].
7702  // SQ translates this to an internal SP opcode.
7703  void
7705  {
7706  Wavefront *wf = gpuDynInst->wavefront();
7707  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7708  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7709  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7710 
7711  src0.readSrc();
7712  src1.read();
7713 
7714  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7715  if (wf->execMask(lane)) {
7716  vdst[lane] = src1[lane] << bits(src0[lane], 3, 0);
7717  }
7718  }
7719 
7720  vdst.write();
7721  } // execute
7722  // --- Inst_VOP2__V_LSHRREV_B16 class methods ---
7723 
7725  : Inst_VOP2(iFmt, "v_lshrrev_b16")
7726  {
7727  setFlag(ALU);
7728  } // Inst_VOP2__V_LSHRREV_B16
7729 
7731  {
7732  } // ~Inst_VOP2__V_LSHRREV_B16
7733 
7734  // --- description from .arch file ---
7735  // D.u[15:0] = S1.u[15:0] >> S0.u[3:0].
7736  // The vacated bits are set to zero.
7737  // SQ translates this to an internal SP opcode.
7738  void
7740  {
7741  Wavefront *wf = gpuDynInst->wavefront();
7742  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7743  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7744  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7745 
7746  src0.readSrc();
7747  src1.read();
7748 
7749  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7750  if (wf->execMask(lane)) {
7751  vdst[lane] = src1[lane] >> src0[lane];
7752  }
7753  }
7754 
7755  vdst.write();
7756  } // execute
7757  // --- Inst_VOP2__V_ASHRREV_I16 class methods ---
7758 
7760  : Inst_VOP2(iFmt, "v_ashrrev_i16")
7761  {
7762  setFlag(ALU);
7763  } // Inst_VOP2__V_ASHRREV_I16
7764 
7766  {
7767  } // ~Inst_VOP2__V_ASHRREV_I16
7768 
7769  // --- description from .arch file ---
7770  // D.i[15:0] = signext(S1.i[15:0]) >> S0.i[3:0].
7771  // The vacated bits are set to the sign bit of the input value.
7772  // SQ translates this to an internal SP opcode.
7773  void
7775  {
7776  Wavefront *wf = gpuDynInst->wavefront();
7777  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7778  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7779  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7780 
7781  src0.readSrc();
7782  src1.read();
7783 
7784  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7785  if (wf->execMask(lane)) {
7786  vdst[lane] = src1[lane] >> src0[lane];
7787  }
7788  }
7789 
7790  vdst.write();
7791  } // execute
7792  // --- Inst_VOP2__V_MAX_F16 class methods ---
7793 
7795  : Inst_VOP2(iFmt, "v_max_f16")
7796  {
7797  setFlag(ALU);
7798  setFlag(F16);
7799  } // Inst_VOP2__V_MAX_F16
7800 
7802  {
7803  } // ~Inst_VOP2__V_MAX_F16
7804 
7805  // --- description from .arch file ---
7806  // D.f16 = max(S0.f16, S1.f16).
7807  // IEEE compliant. Supports denormals, round mode, exception flags,
7808  // saturation.
7809  void
7811  {
7813  } // execute
7814  // --- Inst_VOP2__V_MIN_F16 class methods ---
7815 
7817  : Inst_VOP2(iFmt, "v_min_f16")
7818  {
7819  setFlag(ALU);
7820  setFlag(F16);
7821  } // Inst_VOP2__V_MIN_F16
7822 
7824  {
7825  } // ~Inst_VOP2__V_MIN_F16
7826 
7827  // --- description from .arch file ---
7828  // D.f16 = min(S0.f16, S1.f16).
7829  // IEEE compliant. Supports denormals, round mode, exception flags,
7830  // saturation.
7831  void
7833  {
7835  } // execute
7836  // --- Inst_VOP2__V_MAX_U16 class methods ---
7837 
7839  : Inst_VOP2(iFmt, "v_max_u16")
7840  {
7841  setFlag(ALU);
7842  } // Inst_VOP2__V_MAX_U16
7843 
7845  {
7846  } // ~Inst_VOP2__V_MAX_U16
7847 
7848  // --- description from .arch file ---
7849  // D.u[15:0] = max(S0.u[15:0], S1.u[15:0]).
7850  void
7852  {
7853  Wavefront *wf = gpuDynInst->wavefront();
7854  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7855  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7856  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7857 
7858  src0.readSrc();
7859  src1.read();
7860 
7861  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7862  if (wf->execMask(lane)) {
7863  vdst[lane] = std::max(src0[lane], src1[lane]);
7864  }
7865  }
7866 
7867  vdst.write();
7868  } // execute
7869  // --- Inst_VOP2__V_MAX_I16 class methods ---
7870 
7872  : Inst_VOP2(iFmt, "v_max_i16")
7873  {
7874  setFlag(ALU);
7875  } // Inst_VOP2__V_MAX_I16
7876 
7878  {
7879  } // ~Inst_VOP2__V_MAX_I16
7880 
7881  // --- description from .arch file ---
7882  // D.i[15:0] = max(S0.i[15:0], S1.i[15:0]).
7883  void
7885  {
7886  Wavefront *wf = gpuDynInst->wavefront();
7887  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
7888  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7889  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7890 
7891  src0.readSrc();
7892  src1.read();
7893 
7894  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7895  if (wf->execMask(lane)) {
7896  vdst[lane] = std::max(src0[lane], src1[lane]);
7897  }
7898  }
7899 
7900  vdst.write();
7901  } // execute
7902  // --- Inst_VOP2__V_MIN_U16 class methods ---
7903 
7905  : Inst_VOP2(iFmt, "v_min_u16")
7906  {
7907  setFlag(ALU);
7908  } // Inst_VOP2__V_MIN_U16
7909 
7911  {
7912  } // ~Inst_VOP2__V_MIN_U16
7913 
7914  // --- description from .arch file ---
7915  // D.u[15:0] = min(S0.u[15:0], S1.u[15:0]).
7916  void
7918  {
7919  Wavefront *wf = gpuDynInst->wavefront();
7920  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7921  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7922  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7923 
7924  src0.readSrc();
7925  src1.read();
7926 
7927  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7928  if (wf->execMask(lane)) {
7929  vdst[lane] = std::min(src0[lane], src1[lane]);
7930  }
7931  }
7932 
7933  vdst.write();
7934  } // execute
7935  // --- Inst_VOP2__V_MIN_I16 class methods ---
7936 
7938  : Inst_VOP2(iFmt, "v_min_i16")
7939  {
7940  setFlag(ALU);
7941  } // Inst_VOP2__V_MIN_I16
7942 
7944  {
7945  } // ~Inst_VOP2__V_MIN_I16
7946 
7947  // --- description from .arch file ---
7948  // D.i[15:0] = min(S0.i[15:0], S1.i[15:0]).
7949  void
7951  {
7952  Wavefront *wf = gpuDynInst->wavefront();
7953  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
7954  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7955  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7956 
7957  src0.readSrc();
7958  src1.read();
7959 
7960  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7961  if (wf->execMask(lane)) {
7962  vdst[lane] = std::min(src0[lane], src1[lane]);
7963  }
7964  }
7965 
7966  vdst.write();
7967  } // execute
7968  // --- Inst_VOP2__V_LDEXP_F16 class methods ---
7969 
7971  : Inst_VOP2(iFmt, "v_ldexp_f16")
7972  {
7973  setFlag(ALU);
7974  setFlag(F16);
7975  } // Inst_VOP2__V_LDEXP_F16
7976 
7978  {
7979  } // ~Inst_VOP2__V_LDEXP_F16
7980 
7981  // --- description from .arch file ---
7982  // D.f16 = S0.f16 * (2 ** S1.i16).
7983  void
7985  {
7987  } // execute
7988  // --- Inst_VOP2__V_ADD_U32 class methods ---
7989 
7991  : Inst_VOP2(iFmt, "v_add_u32")
7992  {
7993  setFlag(ALU);
7994  } // Inst_VOP2__V_ADD_U32
7995 
7997  {
7998  } // ~Inst_VOP2__V_ADD_U32
7999 
8000  // --- description from .arch file ---
8001  // D.u = S0.u + S1.u;
8002  void
8004  {
8005  Wavefront *wf = gpuDynInst->wavefront();
8006  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
8007  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
8008  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8009 
8010  src0.readSrc();
8011  src1.read();
8012 
8013  if (isSDWAInst()) {
8014  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
8015  // use copies of original src0, src1, and dest during selecting
8016  VecOperandU32 origSrc0_sdwa(gpuDynInst,
8018  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
8019  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
8020 
8021  src0_sdwa.read();
8022  origSrc0_sdwa.read();
8023  origSrc1.read();
8024 
8025  DPRINTF(VEGA, "Handling V_ADD_U32 SRC SDWA. SRC0: register v[%d], "
8026  "DST_SEL: %d, DST_U: %d, CLMP: %d, SRC0_SEL: %d, "
8027  "SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: %d, "
8028  "SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
8040 
8041  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
8042  src1, origSrc1);
8043 
8044  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8045  if (wf->execMask(lane)) {
8046  vdst[lane] = src0_sdwa[lane] + src1[lane];
8047  origVdst[lane] = vdst[lane]; // keep copy consistent
8048  }
8049  }
8050 
8051  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
8052  } else {
8053  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8054  if (wf->execMask(lane)) {
8055  vdst[lane] = src0[lane] + src1[lane];
8056  }
8057  }
8058  }
8059 
8060  vdst.write();
8061  } // execute
8062  // --- Inst_VOP2__V_SUB_U32 class methods ---
8063 
8065  : Inst_VOP2(iFmt, "v_sub_u32")
8066  {
8067  setFlag(ALU);
8068  } // Inst_VOP2__V_SUB_U32
8069 
8071  {
8072  } // ~Inst_VOP2__V_SUB_U32
8073 
8074  // --- description from .arch file ---
8075  // D.u = S0.u - S1.u;
8076  void
8078  {
8079  Wavefront *wf = gpuDynInst->wavefront();
8080  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
8081  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
8082  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8083 
8084  src0.readSrc();
8085  src1.read();
8086 
8087  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8088  if (wf->execMask(lane)) {
8089  vdst[lane] = src0[lane] - src1[lane];
8090  }
8091  }
8092 
8093  vdst.write();
8094  } // execute
8095  // --- Inst_VOP2__V_SUBREV_U32 class methods ---
8096 
8098  : Inst_VOP2(iFmt, "v_subrev_u32")
8099  {
8100  setFlag(ALU);
8101  } // Inst_VOP2__V_SUBREV_U32
8102 
8104  {
8105  } // ~Inst_VOP2__V_SUBREV_U32
8106 
8107  // --- description from .arch file ---
8108  // D.u = S1.u - S0.u;
8109  void
8111  {
8112  Wavefront *wf = gpuDynInst->wavefront();
8113  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
8114  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
8115  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8116 
8117  src0.readSrc();
8118  src1.read();
8119 
8120  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8121  if (wf->execMask(lane)) {
8122  vdst[lane] = src1[lane] - src0[lane];
8123  }
8124  }
8125 
8126  vdst.write();
8127  } // execute
8128  // --- Inst_VOP1__V_NOP class methods ---
8129 
8131  : Inst_VOP1(iFmt, "v_nop")
8132  {
8133  setFlag(Nop);
8134  setFlag(ALU);
8135  } // Inst_VOP1__V_NOP
8136 
8138  {
8139  } // ~Inst_VOP1__V_NOP
8140 
8141  // --- description from .arch file ---
8142  // Do nothing.
8143  void
8145  {
8146  } // execute
8147  // --- Inst_VOP1__V_MOV_B32 class methods ---
8148 
8150  : Inst_VOP1(iFmt, "v_mov_b32")
8151  {
8152  setFlag(ALU);
8153  } // Inst_VOP1__V_MOV_B32
8154 
8156  {
8157  } // ~Inst_VOP1__V_MOV_B32
8158 
8159  // --- description from .arch file ---
8160  // D.u = S0.u.
8161  // Input and output modifiers not supported; this is an untyped operation.
8162  void
8164  {
8165  Wavefront *wf = gpuDynInst->wavefront();
8166  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8167  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8168 
8169  src.readSrc();
8170 
8171  if (isDPPInst()) {
8172  VecOperandU32 src_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
8173  src_dpp.read();
8174 
8175  DPRINTF(VEGA, "Handling V_MOV_B32 SRC DPP. SRC0: register v[%d], "
8176  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
8177  "SRC1_ABS: %d, SRC1_NEG: %d, BC: %d, "
8178  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
8187 
8188  // NOTE: For VOP1, there is no SRC1, so make sure we're not trying
8189  // to negate it or take the absolute value of it
8190  assert(!extData.iFmt_VOP_DPP.SRC1_ABS);
8191  assert(!extData.iFmt_VOP_DPP.SRC1_NEG);
8192  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src_dpp);
8193 
8194  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8195  if (wf->execMask(lane)) {
8196  vdst[lane] = src_dpp[lane];
8197  }
8198  }
8199  } else {
8200  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8201  if (wf->execMask(lane)) {
8202  vdst[lane] = src[lane];
8203  }
8204  }
8205  }
8206 
8207  vdst.write();
8208  } // execute
8209  // --- Inst_VOP1__V_READFIRSTLANE_B32 class methods ---
8210 
8212  InFmt_VOP1 *iFmt)
8213  : Inst_VOP1(iFmt, "v_readfirstlane_b32")
8214  {
8215  setFlag(ALU);
8216  } // Inst_VOP1__V_READFIRSTLANE_B32
8217 
8219  {
8220  } // ~Inst_VOP1__V_READFIRSTLANE_B32
8221 
8222  // --- description from .arch file ---
8223  // Copy one VGPR value to one SGPR. D = SGPR destination, S0 = source data
8224  // (VGPR# or M0 for lds direct access), Lane# = FindFirst1fromLSB(exec)
8225  // (Lane# = 0 if exec is zero). Ignores exec mask for the access. SQ
8226  // translates to V_READLANE_B32.
8227  // Input and output modifiers not supported; this is an untyped operation.
8228  void
8230  {
8231  Wavefront *wf = gpuDynInst->wavefront();
8232  ScalarRegI32 src_lane(0);
8233  ScalarRegU64 exec_mask = wf->execMask().to_ullong();
8234  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8235  ScalarOperandU32 sdst(gpuDynInst, instData.VDST);
8236 
8237  src.readSrc();
8238 
8239  if (exec_mask) {
8240  src_lane = findLsbSet(exec_mask);
8241  }
8242 
8243  sdst = src[src_lane];
8244 
8245  sdst.write();
8246  } // execute
8247  // --- Inst_VOP1__V_CVT_I32_F64 class methods ---
8248 
8250  : Inst_VOP1(iFmt, "v_cvt_i32_f64")
8251  {
8252  setFlag(ALU);
8253  setFlag(F64);
8254  } // Inst_VOP1__V_CVT_I32_F64
8255 
8257  {
8258  } // ~Inst_VOP1__V_CVT_I32_F64
8259 
8260  // --- description from .arch file ---
8261  // D.i = (int)S0.d.
8262  // Out-of-range floating point values (including infinity) saturate. NaN is
8263  // --- converted to 0.
8264  void
8266  {
8267  Wavefront *wf = gpuDynInst->wavefront();
8268  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8269  VecOperandI32 vdst(gpuDynInst, instData.VDST);
8270 
8271  src.readSrc();
8272 
8273  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8274  if (wf->execMask(lane)) {
8275  int exp;
8276  std::frexp(src[lane],&exp);
8277  if (std::isnan(src[lane])) {
8278  vdst[lane] = 0;
8279  } else if (std::isinf(src[lane]) || exp > 30) {
8280  if (std::signbit(src[lane])) {
8281  vdst[lane] = INT_MIN;
8282  } else {
8283  vdst[lane] = INT_MAX;
8284  }
8285  } else {
8286  vdst[lane] = (VecElemI32)src[lane];
8287  }
8288  }
8289  }
8290 
8291  vdst.write();
8292  } // execute
8293  // --- Inst_VOP1__V_CVT_F64_I32 class methods ---
8294 
8296  : Inst_VOP1(iFmt, "v_cvt_f64_i32")
8297  {
8298  setFlag(ALU);
8299  setFlag(F64);
8300  } // Inst_VOP1__V_CVT_F64_I32
8301 
8303  {
8304  } // ~Inst_VOP1__V_CVT_F64_I32
8305 
8306  // --- description from .arch file ---
8307  // D.d = (double)S0.i.
8308  void
8310  {
8311  Wavefront *wf = gpuDynInst->wavefront();
8312  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
8313  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8314 
8315  src.readSrc();
8316 
8317  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8318  if (wf->execMask(lane)) {
8319  vdst[lane] = (VecElemF64)src[lane];
8320  }
8321  }
8322 
8323  vdst.write();
8324  } // execute
8325  // --- Inst_VOP1__V_CVT_F32_I32 class methods ---
8326 
8328  : Inst_VOP1(iFmt, "v_cvt_f32_i32")
8329  {
8330  setFlag(ALU);
8331  setFlag(F32);
8332  } // Inst_VOP1__V_CVT_F32_I32
8333 
8335  {
8336  } // ~Inst_VOP1__V_CVT_F32_I32
8337 
8338  // --- description from .arch file ---
8339  // D.f = (float)S0.i.
8340  void
8342  {
8343  Wavefront *wf = gpuDynInst->wavefront();
8344  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
8345  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8346 
8347  src.readSrc();
8348 
8349  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8350  if (wf->execMask(lane)) {
8351  vdst[lane] = (VecElemF32)src[lane];
8352  }
8353  }
8354 
8355  vdst.write();
8356  } // execute
8357  // --- Inst_VOP1__V_CVT_F32_U32 class methods ---
8358 
8360  : Inst_VOP1(iFmt, "v_cvt_f32_u32")
8361  {
8362  setFlag(ALU);
8363  setFlag(F32);
8364  } // Inst_VOP1__V_CVT_F32_U32
8365 
8367  {
8368  } // ~Inst_VOP1__V_CVT_F32_U32
8369 
8370  // --- description from .arch file ---
8371  // D.f = (float)S0.u.
8372  void
8374  {
8375  Wavefront *wf = gpuDynInst->wavefront();
8376  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8377  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8378 
8379  src.readSrc();
8380 
8381  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8382  if (wf->execMask(lane)) {
8383  vdst[lane] = (VecElemF32)src[lane];
8384  }
8385  }
8386 
8387  vdst.write();
8388  } // execute
8389  // --- Inst_VOP1__V_CVT_U32_F32 class methods ---
8390 
8392  : Inst_VOP1(iFmt, "v_cvt_u32_f32")
8393  {
8394  setFlag(ALU);
8395  setFlag(F32);
8396  } // Inst_VOP1__V_CVT_U32_F32
8397 
8399  {
8400  } // ~Inst_VOP1__V_CVT_U32_F32
8401 
8402  // --- description from .arch file ---
8403  // D.u = (unsigned)S0.f.
8404  // Out-of-range floating point values (including infinity) saturate. NaN is
8405  // --- converted to 0.
8406  void
8408  {
8409  Wavefront *wf = gpuDynInst->wavefront();
8410  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8411  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8412 
8413  src.readSrc();
8414 
8415  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8416  if (wf->execMask(lane)) {
8417  int exp;
8418  std::frexp(src[lane],&exp);
8419  if (std::isnan(src[lane])) {
8420  vdst[lane] = 0;
8421  } else if (std::isinf(src[lane])) {
8422  if (std::signbit(src[lane])) {
8423  vdst[lane] = 0;
8424  } else {
8425  vdst[lane] = UINT_MAX;
8426  }
8427  } else if (exp > 31) {
8428  vdst[lane] = UINT_MAX;
8429  } else {
8430  vdst[lane] = (VecElemU32)src[lane];
8431  }
8432  }
8433  }
8434 
8435  vdst.write();
8436  } // execute
8437  // --- Inst_VOP1__V_CVT_I32_F32 class methods ---
8438 
8440  : Inst_VOP1(iFmt, "v_cvt_i32_f32")
8441  {
8442  setFlag(ALU);
8443  setFlag(F32);
8444  } // Inst_VOP1__V_CVT_I32_F32
8445 
8447  {
8448  } // ~Inst_VOP1__V_CVT_I32_F32
8449 
8450  // --- description from .arch file ---
8451  // D.i = (int)S0.f.
8452  // Out-of-range floating point values (including infinity) saturate. NaN is
8453  // --- converted to 0.
8454  void
8456  {
8457  Wavefront *wf = gpuDynInst->wavefront();
8458  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8459  VecOperandI32 vdst(gpuDynInst, instData.VDST);
8460 
8461  src.readSrc();
8462 
8463  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8464  if (wf->execMask(lane)) {
8465  int exp;
8466  std::frexp(src[lane],&exp);
8467  if (std::isnan(src[lane])) {
8468  vdst[lane] = 0;
8469  } else if (std::isinf(src[lane]) || exp > 30) {
8470  if (std::signbit(src[lane])) {
8471  vdst[lane] = INT_MIN;
8472  } else {
8473  vdst[lane] = INT_MAX;
8474  }
8475  } else {
8476  vdst[lane] = (VecElemI32)src[lane];
8477  }
8478  }
8479  }
8480 
8481  vdst.write();
8482  } // execute
8483  // --- Inst_VOP1__V_MOV_FED_B32 class methods ---
8484 
8486  : Inst_VOP1(iFmt, "v_mov_fed_b32")
8487  {
8488  setFlag(ALU);
8489  } // Inst_VOP1__V_MOV_FED_B32
8490 
8492  {
8493  } // ~Inst_VOP1__V_MOV_FED_B32
8494 
8495  // --- description from .arch file ---
8496  // D.u = S0.u;
8497  // Introduce EDC double error upon write to dest vgpr without causing an
8498  // --- exception.
8499  // Input and output modifiers not supported; this is an untyped operation.
8500  void
8502  {
8504  } // execute
8505  // --- Inst_VOP1__V_CVT_F16_F32 class methods ---
8506 
8508  : Inst_VOP1(iFmt, "v_cvt_f16_f32")
8509  {
8510  setFlag(ALU);
8511  setFlag(F32);
8512  } // Inst_VOP1__V_CVT_F16_F32
8513 
8515  {
8516  } // ~Inst_VOP1__V_CVT_F16_F32
8517 
8518  // --- description from .arch file ---
8519  // D.f16 = flt32_to_flt16(S0.f).
8520  // Supports input modifiers and creates FP16 denormals when appropriate.
8521  void
8523  {
8525  } // execute
8526  // --- Inst_VOP1__V_CVT_F32_F16 class methods ---
8527 
8529  : Inst_VOP1(iFmt, "v_cvt_f32_f16")
8530  {
8531  setFlag(ALU);
8532  setFlag(F32);
8533  } // Inst_VOP1__V_CVT_F32_F16
8534 
8536  {
8537  } // ~Inst_VOP1__V_CVT_F32_F16
8538 
8539  // --- description from .arch file ---
8540  // D.f = flt16_to_flt32(S0.f16).
8541  // FP16 denormal inputs are always accepted.
8542  void
8544  {
8546  } // execute
8547  // --- Inst_VOP1__V_CVT_RPI_I32_F32 class methods ---
8548 
8550  InFmt_VOP1 *iFmt)
8551  : Inst_VOP1(iFmt, "v_cvt_rpi_i32_f32")
8552  {
8553  setFlag(ALU);
8554  setFlag(F32);
8555  } // Inst_VOP1__V_CVT_RPI_I32_F32
8556 
8558  {
8559  } // ~Inst_VOP1__V_CVT_RPI_I32_F32
8560 
8561  // --- description from .arch file ---
8562  // D.i = (int)floor(S0.f + 0.5).
8563  void
8565  {
8566  Wavefront *wf = gpuDynInst->wavefront();
8567  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8568  VecOperandI32 vdst(gpuDynInst, instData.VDST);
8569 
8570  src.readSrc();
8571 
8572  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8573  if (wf->execMask(lane)) {
8574  vdst[lane] = (VecElemI32)std::floor(src[lane] + 0.5);
8575  }
8576  }
8577 
8578  vdst.write();
8579  } // execute
8580  // --- Inst_VOP1__V_CVT_FLR_I32_F32 class methods ---
8581 
8583  InFmt_VOP1 *iFmt)
8584  : Inst_VOP1(iFmt, "v_cvt_flr_i32_f32")
8585  {
8586  setFlag(ALU);
8587  setFlag(F32);
8588  } // Inst_VOP1__V_CVT_FLR_I32_F32
8589 
8591  {
8592  } // ~Inst_VOP1__V_CVT_FLR_I32_F32
8593 
8594  // --- description from .arch file ---
8595  // D.i = (int)floor(S0.f).
8596  void
8598  {
8599  Wavefront *wf = gpuDynInst->wavefront();
8600  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8601  VecOperandI32 vdst(gpuDynInst, instData.VDST);
8602 
8603  src.readSrc();
8604 
8605  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8606  if (wf->execMask(lane)) {
8607  vdst[lane] = (VecElemI32)std::floor(src[lane]);
8608  }
8609  }
8610 
8611  vdst.write();
8612  } // execute
8613  // --- Inst_VOP1__V_CVT_OFF_F32_I4 class methods ---
8614 
8616  : Inst_VOP1(iFmt, "v_cvt_off_f32_i4")
8617  {
8618  setFlag(ALU);
8619  setFlag(F32);
8620  } // Inst_VOP1__V_CVT_OFF_F32_I4
8621 
8623  {
8624  } // ~Inst_VOP1__V_CVT_OFF_F32_I4
8625 
8626  // --- description from .arch file ---
8627  // 4-bit signed int to 32-bit float. Used for interpolation in shader.
8628  void
8630  {
8631  // Could not parse sq_uc.arch desc field
8633  } // execute
8634  // --- Inst_VOP1__V_CVT_F32_F64 class methods ---
8635 
8637  : Inst_VOP1(iFmt, "v_cvt_f32_f64")
8638  {
8639  setFlag(ALU);
8640  setFlag(F64);
8641  } // Inst_VOP1__V_CVT_F32_F64
8642 
8644  {
8645  } // ~Inst_VOP1__V_CVT_F32_F64
8646 
8647  // --- description from .arch file ---
8648  // D.f = (float)S0.d.
8649  void
8651  {
8652  Wavefront *wf = gpuDynInst->wavefront();
8653  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8654  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8655 
8656  src.readSrc();
8657 
8658  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8659  if (wf->execMask(lane)) {
8660  vdst[lane] = (VecElemF32)src[lane];
8661  }
8662  }
8663 
8664  vdst.write();
8665  } // execute
8666  // --- Inst_VOP1__V_CVT_F64_F32 class methods ---
8667 
8669  : Inst_VOP1(iFmt, "v_cvt_f64_f32")
8670  {
8671  setFlag(ALU);
8672  setFlag(F64);
8673  } // Inst_VOP1__V_CVT_F64_F32
8674 
8676  {
8677  } // ~Inst_VOP1__V_CVT_F64_F32
8678 
8679  // --- description from .arch file ---
8680  // D.d = (double)S0.f.
8681  void
8683  {
8684  Wavefront *wf = gpuDynInst->wavefront();
8685  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8686  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8687 
8688  src.readSrc();
8689 
8690  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8691  if (wf->execMask(lane)) {
8692  vdst[lane] = (VecElemF64)src[lane];
8693  }
8694  }
8695 
8696  vdst.write();
8697  } // execute
8698  // --- Inst_VOP1__V_CVT_F32_UBYTE0 class methods ---
8699 
8701  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte0")
8702  {
8703  setFlag(ALU);
8704  setFlag(F32);
8705  } // Inst_VOP1__V_CVT_F32_UBYTE0
8706 
8708  {
8709  } // ~Inst_VOP1__V_CVT_F32_UBYTE0
8710 
8711  // --- description from .arch file ---
8712  // D.f = (float)(S0.u[7:0]).
8713  void
8715  {
8716  Wavefront *wf = gpuDynInst->wavefront();
8717  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8718  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8719 
8720  src.readSrc();
8721 
8722  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8723  if (wf->execMask(lane)) {
8724  vdst[lane] = (VecElemF32)(bits(src[lane], 7, 0));
8725  }
8726  }
8727 
8728  vdst.write();
8729  } // execute
8730  // --- Inst_VOP1__V_CVT_F32_UBYTE1 class methods ---
8731 
8733  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte1")
8734  {
8735  setFlag(ALU);
8736  setFlag(F32);
8737  } // Inst_VOP1__V_CVT_F32_UBYTE1
8738 
8740  {
8741  } // ~Inst_VOP1__V_CVT_F32_UBYTE1
8742 
8743  // --- description from .arch file ---
8744  // D.f = (float)(S0.u[15:8]).
8745  void
8747  {
8748  Wavefront *wf = gpuDynInst->wavefront();
8749  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8750  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8751 
8752  src.readSrc();
8753 
8754  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8755  if (wf->execMask(lane)) {
8756  vdst[lane] = (VecElemF32)(bits(src[lane], 15, 8));
8757  }
8758  }
8759 
8760  vdst.write();
8761  } // execute
8762  // --- Inst_VOP1__V_CVT_F32_UBYTE2 class methods ---
8763 
8765  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte2")
8766  {
8767  setFlag(ALU);
8768  setFlag(F32);
8769  } // Inst_VOP1__V_CVT_F32_UBYTE2
8770 
8772  {
8773  } // ~Inst_VOP1__V_CVT_F32_UBYTE2
8774 
8775  // --- description from .arch file ---
8776  // D.f = (float)(S0.u[23:16]).
8777  void
8779  {
8780  Wavefront *wf = gpuDynInst->wavefront();
8781  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8782  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8783 
8784  src.readSrc();
8785 
8786  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8787  if (wf->execMask(lane)) {
8788  vdst[lane] = (VecElemF32)(bits(src[lane], 23, 16));
8789  }
8790  }
8791 
8792  vdst.write();
8793  } // execute
8794  // --- Inst_VOP1__V_CVT_F32_UBYTE3 class methods ---
8795 
8797  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte3")
8798  {
8799  setFlag(ALU);
8800  setFlag(F32);
8801  } // Inst_VOP1__V_CVT_F32_UBYTE3
8802 
8804  {
8805  } // ~Inst_VOP1__V_CVT_F32_UBYTE3
8806 
8807  // --- description from .arch file ---
8808  // D.f = (float)(S0.u[31:24]).
8809  void
8811  {
8812  Wavefront *wf = gpuDynInst->wavefront();
8813  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8814  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8815 
8816  src.readSrc();
8817 
8818  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8819  if (wf->execMask(lane)) {
8820  vdst[lane] = (VecElemF32)(bits(src[lane], 31, 24));
8821  }
8822  }
8823 
8824  vdst.write();
8825  } // execute
8826  // --- Inst_VOP1__V_CVT_U32_F64 class methods ---
8827 
8829  : Inst_VOP1(iFmt, "v_cvt_u32_f64")
8830  {
8831  setFlag(ALU);
8832  setFlag(F64);
8833  } // Inst_VOP1__V_CVT_U32_F64
8834 
8836  {
8837  } // ~Inst_VOP1__V_CVT_U32_F64
8838 
8839  // --- description from .arch file ---
8840  // D.u = (unsigned)S0.d.
8841  // Out-of-range floating point values (including infinity) saturate. NaN is
8842  // --- converted to 0.
8843  void
8845  {
8846  Wavefront *wf = gpuDynInst->wavefront();
8847  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8848  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8849 
8850  src.readSrc();
8851 
8852  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8853  if (wf->execMask(lane)) {
8854  int exp;
8855  std::frexp(src[lane],&exp);
8856  if (std::isnan(src[lane])) {
8857  vdst[lane] = 0;
8858  } else if (std::isinf(src[lane])) {
8859  if (std::signbit(src[lane])) {
8860  vdst[lane] = 0;
8861  } else {
8862  vdst[lane] = UINT_MAX;
8863  }
8864  } else if (exp > 31) {
8865  vdst[lane] = UINT_MAX;
8866  } else {
8867  vdst[lane] = (VecElemU32)src[lane];
8868  }
8869  }
8870  }
8871 
8872  vdst.write();
8873  } // execute
8874  // --- Inst_VOP1__V_CVT_F64_U32 class methods ---
8875 
8877  : Inst_VOP1(iFmt, "v_cvt_f64_u32")
8878  {
8879  setFlag(ALU);
8880  setFlag(F64);
8881  } // Inst_VOP1__V_CVT_F64_U32
8882 
8884  {
8885  } // ~Inst_VOP1__V_CVT_F64_U32
8886 
8887  // --- description from .arch file ---
8888  // D.d = (double)S0.u.
8889  void
8891  {
8892  Wavefront *wf = gpuDynInst->wavefront();
8893  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8894  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8895 
8896  src.readSrc();
8897 
8898  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8899  if (wf->execMask(lane)) {
8900  vdst[lane] = (VecElemF64)src[lane];
8901  }
8902  }
8903 
8904  vdst.write();
8905  } // execute
8906  // --- Inst_VOP1__V_TRUNC_F64 class methods ---
8907 
8909  : Inst_VOP1(iFmt, "v_trunc_f64")
8910  {
8911  setFlag(ALU);
8912  setFlag(F64);
8913  } // Inst_VOP1__V_TRUNC_F64
8914 
8916  {
8917  } // ~Inst_VOP1__V_TRUNC_F64
8918 
8919  // --- description from .arch file ---
8920  // D.d = trunc(S0.d), return integer part of S0.d.
8921  void
8923  {
8924  Wavefront *wf = gpuDynInst->wavefront();
8925  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8926  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8927 
8928  src.readSrc();
8929 
8930  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8931  if (wf->execMask(lane)) {
8932  vdst[lane] = std::trunc(src[lane]);
8933  }
8934  }
8935 
8936  vdst.write();
8937  } // execute
8938  // --- Inst_VOP1__V_CEIL_F64 class methods ---
8939 
8941  : Inst_VOP1(iFmt, "v_ceil_f64")
8942  {
8943  setFlag(ALU);
8944  setFlag(F64);
8945  } // Inst_VOP1__V_CEIL_F64
8946 
8948  {
8949  } // ~Inst_VOP1__V_CEIL_F64
8950 
8951  // --- description from .arch file ---
8952  // D.d = trunc(S0.d);
8953  // if(S0.d > 0.0 && S0.d != D.d) then D.d += 1.0.
8954  void
8956  {
8957  Wavefront *wf = gpuDynInst->wavefront();
8958  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8959  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8960 
8961  src.readSrc();
8962 
8963  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8964  if (wf->execMask(lane)) {
8965  vdst[lane] = std::ceil(src[lane]);
8966  }
8967  }
8968 
8969  vdst.write();
8970  } // execute
8971  // --- Inst_VOP1__V_RNDNE_F64 class methods ---
8972 
8974  : Inst_VOP1(iFmt, "v_rndne_f64")
8975  {
8976  setFlag(ALU);
8977  setFlag(F64);
8978  } // Inst_VOP1__V_RNDNE_F64
8979 
8981  {
8982  } // ~Inst_VOP1__V_RNDNE_F64
8983 
8984  // --- description from .arch file ---
8985  // D.d = round_nearest_even(S0.d).
8986  void
8988  {
8989  Wavefront *wf = gpuDynInst->wavefront();
8990  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8991  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8992 
8993  src.readSrc();
8994 
8995  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8996  if (wf->execMask(lane)) {
8997  vdst[lane] = roundNearestEven(src[lane]);
8998  }
8999  }
9000 
9001  vdst.write();
9002  } // execute
9003  // --- Inst_VOP1__V_FLOOR_F64 class methods ---
9004 
9006  : Inst_VOP1(iFmt, "v_floor_f64")
9007  {
9008  setFlag(ALU);
9009  setFlag(F64);
9010  } // Inst_VOP1__V_FLOOR_F64
9011 
9013  {
9014  } // ~Inst_VOP1__V_FLOOR_F64
9015 
9016  // --- description from .arch file ---
9017  // D.d = trunc(S0.d);
9018  // if(S0.d < 0.0 && S0.d != D.d) then D.d += -1.0.
9019  void
9021  {
9022  Wavefront *wf = gpuDynInst->wavefront();
9023  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
9024  VecOperandF64 vdst(gpuDynInst, instData.VDST);
9025 
9026  src.readSrc();
9027 
9028  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9029  if (wf->execMask(lane)) {
9030  vdst[lane] = std::floor(src[lane]);
9031  }
9032  }
9033 
9034  vdst.write();
9035  } // execute
9036  // --- Inst_VOP1__V_FRACT_F32 class methods ---
9037 
9039  : Inst_VOP1(iFmt, "v_fract_f32")
9040  {
9041  setFlag(ALU);
9042  setFlag(F32);
9043  } // Inst_VOP1__V_FRACT_F32
9044 
9046  {
9047  } // ~Inst_VOP1__V_FRACT_F32
9048 
9049  // --- description from .arch file ---
9050  // D.f = S0.f - floor(S0.f).
9051  void
9053  {
9054  Wavefront *wf = gpuDynInst->wavefront();
9055  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9056  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9057 
9058  src.readSrc();
9059 
9060  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9061  if (wf->execMask(lane)) {
9062  VecElemF32 int_part(0.0);
9063  vdst[lane] = std::modf(src[lane], &int_part);
9064  }
9065  }
9066 
9067  vdst.write();
9068  } // execute
9069  // --- Inst_VOP1__V_TRUNC_F32 class methods ---
9070 
9072  : Inst_VOP1(iFmt, "v_trunc_f32")
9073  {
9074  setFlag(ALU);
9075  setFlag(F32);
9076  } // Inst_VOP1__V_TRUNC_F32
9077 
9079  {
9080  } // ~Inst_VOP1__V_TRUNC_F32
9081 
9082  // --- description from .arch file ---
9083  // D.f = trunc(S0.f), return integer part of S0.f.
9084  void
9086  {
9087  Wavefront *wf = gpuDynInst->wavefront();
9088  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9089  VecOperandF32 vdst (gpuDynInst, instData.VDST);
9090 
9091  src.readSrc();
9092 
9093  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9094  if (wf->execMask(lane)) {
9095  vdst[lane] = std::trunc(src[lane]);
9096  }
9097  }
9098 
9099  vdst.write();
9100  } // execute
9101  // --- Inst_VOP1__V_CEIL_F32 class methods ---
9102 
9104  : Inst_VOP1(iFmt, "v_ceil_f32")
9105  {
9106  setFlag(ALU);
9107  setFlag(F32);
9108  } // Inst_VOP1__V_CEIL_F32
9109 
9111  {
9112  } // ~Inst_VOP1__V_CEIL_F32
9113 
9114  // --- description from .arch file ---
9115  // D.f = trunc(S0.f);
9116  // if(S0.f > 0.0 && S0.f != D.f) then D.f += 1.0.
9117  void
9119  {
9120  Wavefront *wf = gpuDynInst->wavefront();
9121  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9122  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9123 
9124  src.readSrc();
9125 
9126  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9127  if (wf->execMask(lane)) {
9128  vdst[lane] = std::ceil(src[lane]);
9129  }
9130  }
9131 
9132  vdst.write();
9133  } // execute
9134  // --- Inst_VOP1__V_RNDNE_F32 class methods ---
9135 
9137  : Inst_VOP1(iFmt, "v_rndne_f32")
9138  {
9139  setFlag(ALU);
9140  setFlag(F32);
9141  } // Inst_VOP1__V_RNDNE_F32
9142 
9144  {
9145  } // ~Inst_VOP1__V_RNDNE_F32
9146 
9147  // --- description from .arch file ---
9148  // D.f = round_nearest_even(S0.f).
9149  void
9151  {
9152  Wavefront *wf = gpuDynInst->wavefront();
9153  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9154  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9155 
9156  src.readSrc();
9157 
9158  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9159  if (wf->execMask(lane)) {
9160  vdst[lane] = roundNearestEven(src[lane]);
9161  }
9162  }
9163 
9164  vdst.write();
9165  } // execute
9166  // --- Inst_VOP1__V_FLOOR_F32 class methods ---
9167 
9169  : Inst_VOP1(iFmt, "v_floor_f32")
9170  {
9171  setFlag(ALU);
9172  setFlag(F32);
9173  } // Inst_VOP1__V_FLOOR_F32
9174 
9176  {
9177  } // ~Inst_VOP1__V_FLOOR_F32
9178 
9179  // --- description from .arch file ---
9180  // D.f = trunc(S0.f);
9181  // if(S0.f < 0.0 && S0.f != D.f) then D.f += -1.0.
9182  void
9184  {
9185  Wavefront *wf = gpuDynInst->wavefront();
9186  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9187  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9188 
9189  src.readSrc();
9190 
9191  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9192  if (wf->execMask(lane)) {
9193  vdst[lane] = std::floor(src[lane]);
9194  }
9195  }
9196 
9197  vdst.write();
9198  } // execute
9199  // --- Inst_VOP1__V_EXP_F32 class methods ---
9200 
9202  : Inst_VOP1(iFmt, "v_exp_f32")
9203  {
9204  setFlag(ALU);
9205  setFlag(F32);
9206  } // Inst_VOP1__V_EXP_F32
9207 
9209  {
9210  } // ~Inst_VOP1__V_EXP_F32
9211 
9212  // --- description from .arch file ---
9213  // D.f = pow(2.0, S0.f).
9214  void
9216  {
9217  Wavefront *wf = gpuDynInst->wavefront();
9218  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9219  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9220 
9221  src.readSrc();
9222 
9223  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9224  if (wf->execMask(lane)) {
9225  vdst[lane] = std::pow(2.0, src[lane]);
9226  }
9227  }
9228 
9229  vdst.write();
9230  } // execute
9231  // --- Inst_VOP1__V_LOG_F32 class methods ---
9232 
9234  : Inst_VOP1(iFmt, "v_log_f32")
9235  {
9236  setFlag(ALU);
9237  setFlag(F32);
9238  } // Inst_VOP1__V_LOG_F32
9239 
9241  {
9242  } // ~Inst_VOP1__V_LOG_F32
9243 
9244  // --- description from .arch file ---
9245  // D.f = log2(S0.f). Base 2 logarithm.
9246  void
9248  {
9249  Wavefront *wf = gpuDynInst->wavefront();
9250  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9251  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9252 
9253  src.readSrc();
9254 
9255  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9256  if (wf->execMask(lane)) {
9257  vdst[lane] = std::log2(src[lane]);
9258  }
9259  }
9260 
9261  vdst.write();
9262  } // execute
9263  // --- Inst_VOP1__V_RCP_F32 class methods ---
9264 
9266  : Inst_VOP1(iFmt, "v_rcp_f32")
9267  {
9268  setFlag(ALU);
9269  setFlag(F32);
9270  } // Inst_VOP1__V_RCP_F32
9271 
9273  {
9274  } // ~Inst_VOP1__V_RCP_F32
9275 
9276  // --- description from .arch file ---
9277  // D.f = 1.0 / S0.f. Reciprocal with IEEE rules and < 1ulp error.
9278  void
9280  {
9281  Wavefront *wf = gpuDynInst->wavefront();
9282  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9283  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9284 
9285  src.readSrc();
9286 
9287  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9288  if (wf->execMask(lane)) {
9289  vdst[lane] = 1.0 / src[lane];
9290  }
9291  }
9292 
9293  vdst.write();
9294  } // execute
9295  // --- Inst_VOP1__V_RCP_IFLAG_F32 class methods ---
9296 
9298  : Inst_VOP1(iFmt, "v_rcp_iflag_f32")
9299  {
9300  setFlag(ALU);
9301  setFlag(F32);
9302  } // Inst_VOP1__V_RCP_IFLAG_F32
9303 
9305  {
9306  } // ~Inst_VOP1__V_RCP_IFLAG_F32
9307 
9308  // --- description from .arch file ---
9309  // D.f = 1.0 / S0.f. Reciprocal intended for integer division, can raise
9310  // --- integer DIV_BY_ZERO exception but cannot raise floating-point
9311  // --- exceptions.
9312  void
9314  {
9315  Wavefront *wf = gpuDynInst->wavefront();
9316  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9317  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9318 
9319  src.readSrc();
9320 
9321  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9322  if (wf->execMask(lane)) {
9323  vdst[lane] = 1.0 / src[lane];
9324  }
9325  }
9326 
9327  vdst.write();
9328  } // execute
9329  // --- Inst_VOP1__V_RSQ_F32 class methods ---
9330 
9332  : Inst_VOP1(iFmt, "v_rsq_f32")
9333  {
9334  setFlag(ALU);
9335  setFlag(F32);
9336  } // Inst_VOP1__V_RSQ_F32
9337 
9339  {
9340  } // ~Inst_VOP1__V_RSQ_F32
9341 
9342  // --- description from .arch file ---
9343  // D.f = 1.0 / sqrt(S0.f). Reciprocal square root with IEEE rules.
9344  void
9346  {
9347  Wavefront *wf = gpuDynInst->wavefront();
9348  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9349  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9350 
9351  src.readSrc();
9352 
9353  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9354  if (wf->execMask(lane)) {
9355  vdst[lane] = 1.0 / std::sqrt(src[lane]);
9356  }
9357  }
9358 
9359  vdst.write();
9360  } // execute
9361  // --- Inst_VOP1__V_RCP_F64 class methods ---
9362 
9364  : Inst_VOP1(iFmt, "v_rcp_f64")
9365  {
9366  setFlag(ALU);
9367  setFlag(F64);
9368  } // Inst_VOP1__V_RCP_F64
9369 
9371  {
9372  } // ~Inst_VOP1__V_RCP_F64
9373 
9374  // --- description from .arch file ---
9375  // D.d = 1.0 / S0.d.
9376  void
9378  {
9379  Wavefront *wf = gpuDynInst->wavefront();
9380  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
9381  VecOperandF64 vdst(gpuDynInst, instData.VDST);
9382 
9383  src.readSrc();
9384 
9385  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9386  if (wf->execMask(lane)) {
9387  if (std::fpclassify(src[lane]) == FP_ZERO) {
9388  vdst[lane] = +INFINITY;
9389  } else if (std::isnan(src[lane])) {
9390  vdst[lane] = NAN;
9391  } else if (std::isinf(src[lane])) {
9392  if (std::signbit(src[lane])) {
9393  vdst[lane] = -0.0;
9394  } else {
9395  vdst[lane] = 0.0;
9396  }
9397  } else {
9398  vdst[lane] = 1.0 / src[lane];
9399  }
9400  }
9401  }
9402 
9403  vdst.write();
9404  } // execute
9405  // --- Inst_VOP1__V_RSQ_F64 class methods ---
9406 
9408  : Inst_VOP1(iFmt, "v_rsq_f64")
9409  {
9410  setFlag(ALU);
9411  setFlag(F64);
9412  } // Inst_VOP1__V_RSQ_F64
9413 
9415  {
9416  } // ~Inst_VOP1__V_RSQ_F64
9417 
9418  // --- description from .arch file ---
9419  // D.d = 1.0 / sqrt(S0.d). See V_RSQ_F32.
9420  void
9422  {
9423  Wavefront *wf = gpuDynInst->wavefront();
9424  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
9425  VecOperandF64 vdst(gpuDynInst, instData.VDST);
9426 
9427  src.readSrc();
9428 
9429  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9430  if (wf->execMask(lane)) {
9431  if (std::fpclassify(src[lane]) == FP_ZERO) {
9432  vdst[lane] = +INFINITY;
9433  } else if (std::isnan(src[lane])) {
9434  vdst[lane] = NAN;
9435  } else if (std::isinf(src[lane])
9436  && !std::signbit(src[lane])) {
9437  vdst[lane] = 0.0;
9438  } else if (std::signbit(src[lane])) {
9439  vdst[lane] = NAN;
9440  } else {
9441  vdst[lane] = 1.0 / std::sqrt(src[lane]);
9442  }
9443  }
9444  }
9445 
9446  vdst.write();
9447  } // execute
9448  // --- Inst_VOP1__V_SQRT_F32 class methods ---
9449 
9451  : Inst_VOP1(iFmt, "v_sqrt_f32")
9452  {
9453  setFlag(ALU);
9454  setFlag(F32);
9455  } // Inst_VOP1__V_SQRT_F32
9456 
9458  {
9459  } // ~Inst_VOP1__V_SQRT_F32
9460 
9461  // --- description from .arch file ---
9462  // D.f = sqrt(S0.f).
9463  void
9465  {
9466  Wavefront *wf = gpuDynInst->wavefront();
9467  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9468  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9469 
9470  src.readSrc();
9471 
9472  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9473  if (wf->execMask(lane)) {
9474  vdst[lane] = std::sqrt(src[lane]);
9475  }
9476  }
9477 
9478  vdst.write();
9479  } // execute
9480  // --- Inst_VOP1__V_SQRT_F64 class methods ---
9481 
9483  : Inst_VOP1(iFmt, "v_sqrt_f64")
9484  {
9485  setFlag(ALU);
9486  setFlag(F64);
9487  } // Inst_VOP1__V_SQRT_F64
9488 
9490  {
9491  } // ~Inst_VOP1__V_SQRT_F64
9492 
9493  // --- description from .arch file ---
9494  // D.d = sqrt(S0.d).
9495  void
9497  {
9498  Wavefront *wf = gpuDynInst->wavefront();
9499  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
9500  VecOperandF64 vdst(gpuDynInst, instData.VDST);
9501 
9502  src.readSrc();
9503 
9504  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9505  if (wf->execMask(lane)) {
9506  vdst[lane] = std::sqrt(src[lane]);
9507  }
9508  }
9509 
9510  vdst.write();
9511  } // execute
9512  // --- Inst_VOP1__V_SIN_F32 class methods ---
9513 
9515  : Inst_VOP1(iFmt, "v_sin_f32")
9516  {
9517  setFlag(ALU);
9518  setFlag(F32);
9519  } // Inst_VOP1__V_SIN_F32
9520 
9522  {
9523  } // ~Inst_VOP1__V_SIN_F32
9524 
9525  // --- description from .arch file ---
9526  // D.f = sin(S0.f * 2 * PI).
9527  // Valid range of S0.f is [-256.0, +256.0]. Out of range input results in
9528  // float 0.0.
9529  void
9531  {
9532  Wavefront *wf = gpuDynInst->wavefront();
9533  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9534  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
9535  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9536 
9537  src.readSrc();
9538  pi.read();
9539 
9540  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9541  if (wf->execMask(lane)) {
9542  if (src[lane] < -256.0 || src[lane] > 256.0) {
9543  vdst[lane] = 0.0;
9544  } else {
9545  vdst[lane] = std::sin(src[lane] * 2.0 * pi.rawData());
9546  }
9547  }
9548  }
9549 
9550  vdst.write();
9551  } // execute
9552  // --- Inst_VOP1__V_COS_F32 class methods ---
9553 
9555  : Inst_VOP1(iFmt, "v_cos_f32")
9556  {
9557  setFlag(ALU);
9558  setFlag(F32);
9559  } // Inst_VOP1__V_COS_F32
9560 
9562  {
9563  } // ~Inst_VOP1__V_COS_F32
9564 
9565  // --- description from .arch file ---
9566  // D.f = cos(S0.f * 2 * PI).
9567  // Valid range of S0.f is [-256.0, +256.0]. Out of range input results in
9568  // float 1.0.
9569  void
9571  {
9572  Wavefront *wf = gpuDynInst->wavefront();
9573  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9574  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
9575  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9576 
9577  src.readSrc();
9578  pi.read();
9579 
9580  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9581  if (wf->execMask(lane)) {
9582  if (src[lane] < -256.0 || src[lane] > 256.0) {
9583  vdst[lane] = 0.0;
9584  } else {
9585  vdst[lane] = std::cos(src[lane] * 2.0 * pi.rawData());
9586  }
9587  }
9588  }
9589 
9590  vdst.write();
9591  } // execute
9592  // --- Inst_VOP1__V_NOT_B32 class methods ---
9593 
9595  : Inst_VOP1(iFmt, "v_not_b32")
9596  {
9597  setFlag(ALU);
9598  } // Inst_VOP1__V_NOT_B32
9599 
9601  {
9602  } // ~Inst_VOP1__V_NOT_B32
9603 
9604  // --- description from .arch file ---
9605  // D.u = ~S0.u.
9606  // Input and output modifiers not supported.
9607  void
9609  {
9610  Wavefront *wf = gpuDynInst->wavefront();
9611  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
9612  VecOperandU32 vdst(gpuDynInst, instData.VDST);
9613 
9614  src.readSrc();
9615 
9616  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9617  if (wf->execMask(lane)) {
9618  vdst[lane] = ~src[lane];
9619  }
9620  }
9621 
9622  vdst.write();
9623  } // execute
9624  // --- Inst_VOP1__V_BFREV_B32 class methods ---
9625 
9627  : Inst_VOP1(iFmt, "v_bfrev_b32")
9628  {
9629  setFlag(ALU);
9630  } // Inst_VOP1__V_BFREV_B32
9631 
9633  {
9634  } // ~Inst_VOP1__V_BFREV_B32
9635 
9636  // --- description from .arch file ---
9637  // D.u[31:0] = S0.u[0:31], bitfield reverse.
9638  // Input and output modifiers not supported.
9639  void
9641  {
9642  Wavefront *wf = gpuDynInst->wavefront();
9643  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
9644  VecOperandU32 vdst(gpuDynInst, instData.VDST);
9645 
9646  src.readSrc();
9647 
9648  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9649  if (wf->execMask(lane)) {
9650  vdst[lane] = reverseBits(src[lane]);
9651  }
9652  }
9653 
9654  vdst.write();
9655  } // execute
9656  // --- Inst_VOP1__V_FFBH_U32 class methods ---
9657 
9659  : Inst_VOP1(iFmt, "v_ffbh_u32")
9660  {
9661  setFlag(ALU);
9662  } // Inst_VOP1__V_FFBH_U32
9663 
9665  {
9666  } // ~Inst_VOP1__V_FFBH_U32
9667 
9668  // --- description from .arch file ---
9669  // D.u = position of first 1 in S0.u from MSB;
9670  // D.u = 0xffffffff if S0.u == 0.
9671  void
9673  {
9674  Wavefront *wf = gpuDynInst->wavefront();
9675  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
9676  VecOperandU32 vdst(gpuDynInst, instData.VDST);
9677 
9678  src.readSrc();
9679 
9680  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9681  if (wf->execMask(lane)) {
9682  vdst[lane] = findFirstOneMsb(src[lane]);
9683  }
9684  }
9685 
9686  vdst.write();
9687  } // execute
9688  // --- Inst_VOP1__V_FFBL_B32 class methods ---
9689 
9691  : Inst_VOP1(iFmt, "v_ffbl_b32")
9692  {
9693  setFlag(ALU);
9694  } // Inst_VOP1__V_FFBL_B32
9695 
9697  {
9698  } // ~Inst_VOP1__V_FFBL_B32
9699 
9700  // --- description from .arch file ---
9701  // D.u = position of first 1 in S0.u from LSB;
9702  // D.u = 0xffffffff if S0.u == 0.
9703  void
9705  {
9706  Wavefront *wf = gpuDynInst->wavefront();
9707  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
9708  VecOperandU32 vdst(gpuDynInst, instData.VDST);
9709 
9710  src.readSrc();
9711 
9712  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9713  if (wf->execMask(lane)) {
9714  vdst[lane] = findFirstOne(src[lane]);
9715  }
9716  }
9717 
9718  vdst.write();
9719  } // execute
9720  // --- Inst_VOP1__V_FFBH_I32 class methods ---
9721 
9723  : Inst_VOP1(iFmt, "v_ffbh_i32")
9724  {
9725  setFlag(ALU);
9726  } // Inst_VOP1__V_FFBH_I32
9727 
9729  {
9730  } // ~Inst_VOP1__V_FFBH_I32
9731 
9732  // --- description from .arch file ---
9733  // D.u = position of first bit different from sign bit in S0.i from MSB;
9734  // D.u = 0xffffffff if S0.i == 0 or S0.i == 0xffffffff.
9735  void
9737  {
9738  Wavefront *wf = gpuDynInst->wavefront();
9739  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
9740  VecOperandU32 vdst(gpuDynInst, instData.VDST);
9741 
9742  src.readSrc();
9743 
9744  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9745  if (wf->execMask(lane)) {
9746  vdst[lane] = firstOppositeSignBit(src[lane]);
9747  }
9748  }
9749 
9750  vdst.write();
9751  } // execute
9752  // --- Inst_VOP1__V_FREXP_EXP_I32_F64 class methods ---
9753 
9755  InFmt_VOP1 *iFmt)
9756  : Inst_VOP1(iFmt, "v_frexp_exp_i32_f64")
9757  {
9758  setFlag(ALU);
9759  setFlag(F64);
9760  } // Inst_VOP1__V_FREXP_EXP_I32_F64
9761 
9763  {
9764  } // ~Inst_VOP1__V_FREXP_EXP_I32_F64
9765 
9766  // --- description from .arch file ---
9767  // See V_FREXP_EXP_I32_F32.
9768  void
9770  {
9771  Wavefront *wf = gpuDynInst->wavefront();
9772  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
9773  VecOperandI32 vdst(gpuDynInst, instData.VDST);
9774 
9775  src.readSrc();
9776 
9777  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9778  if (wf->execMask(lane)) {
9779  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
9780  vdst[lane] = 0;
9781  } else {
9782  VecElemI32 exp = 0;
9783  std::frexp(src[lane], &exp);
9784  vdst[lane] = exp;
9785  }
9786  }
9787  }
9788 
9789  vdst.write();
9790  } // execute
9791  // --- Inst_VOP1__V_FREXP_MANT_F64 class methods ---
9792 
9794  : Inst_VOP1(iFmt, "v_frexp_mant_f64")
9795  {
9796  setFlag(ALU);
9797  setFlag(F64);
9798  } // Inst_VOP1__V_FREXP_MANT_F64
9799 
9801  {
9802  } // ~Inst_VOP1__V_FREXP_MANT_F64
9803 
9804  // --- description from .arch file ---
9805  // See V_FREXP_MANT_F32.
9806  void
9808  {
9809  Wavefront *wf = gpuDynInst->wavefront();
9810  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
9811  VecOperandF64 vdst(gpuDynInst, instData.VDST);
9812 
9813  src.readSrc();
9814 
9815  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9816  if (wf->execMask(lane)) {
9817  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
9818  vdst[lane] = src[lane];
9819  } else {
9820  VecElemI32 exp(0);
9821  vdst[lane] = std::frexp(src[lane], &exp);
9822  }
9823  }
9824  }
9825 
9826  vdst.write();
9827  } // execute
9828  // --- Inst_VOP1__V_FRACT_F64 class methods ---
9829 
9831  : Inst_VOP1(iFmt, "v_fract_f64")
9832  {
9833  setFlag(ALU);
9834  setFlag(F64);
9835  } // Inst_VOP1__V_FRACT_F64
9836 
9838  {
9839  } // ~Inst_VOP1__V_FRACT_F64
9840 
9841  // --- description from .arch file ---
9842  // See V_FRACT_F32.
9843  void
9845  {
9846  Wavefront *wf = gpuDynInst->wavefront();
9847  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
9848  VecOperandF64 vdst(gpuDynInst, instData.VDST);
9849 
9850  src.readSrc();
9851 
9852  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9853  if (wf->execMask(lane)) {
9854  VecElemF64 int_part(0.0);
9855  vdst[lane] = std::modf(src[lane], &int_part);
9856  }
9857  }
9858 
9859  vdst.write();
9860  } // execute
9861  // --- Inst_VOP1__V_FREXP_EXP_I32_F32 class methods ---
9862 
9864  InFmt_VOP1 *iFmt)
9865  : Inst_VOP1(iFmt, "v_frexp_exp_i32_f32")
9866  {
9867  setFlag(ALU);
9868  setFlag(F32);
9869  } // Inst_VOP1__V_FREXP_EXP_I32_F32
9870 
9872  {
9873  } // ~Inst_VOP1__V_FREXP_EXP_I32_F32
9874 
9875  // --- description from .arch file ---
9876  // if(S0.f == INF || S0.f == NAN) then D.i = 0;
9877  // else D.i = TwosComplement(Exponent(S0.f) - 127 + 1).
9878  // Returns exponent of single precision float input, such that S0.f =
9879  // significand * (2 ** exponent). See also FREXP_MANT_F32, which returns
9880  // the significand.
9881  void
9883  {
9884  Wavefront *wf = gpuDynInst->wavefront();
9885  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9886  VecOperandI32 vdst(gpuDynInst, instData.VDST);
9887 
9888  src.readSrc();
9889 
9890  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9891  if (wf->execMask(lane)) {
9892  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
9893  vdst[lane] = 0;
9894  } else {
9895  VecElemI32 exp(0);
9896  std::frexp(src[lane], &exp);
9897  vdst[lane] = exp;
9898  }
9899  }
9900  }
9901 
9902  vdst.write();
9903  } // execute
9904  // --- Inst_VOP1__V_FREXP_MANT_F32 class methods ---
9905 
9907  : Inst_VOP1(iFmt, "v_frexp_mant_f32")
9908  {
9909  setFlag(ALU);
9910  setFlag(F32);
9911  } // Inst_VOP1__V_FREXP_MANT_F32
9912 
9914  {
9915  } // ~Inst_VOP1__V_FREXP_MANT_F32
9916 
9917  // --- description from .arch file ---
9918  // if(S0.f == INF || S0.f == NAN) then D.f = S0.f;
9919  // else D.f = Mantissa(S0.f).
9920  // Result range is in (-1.0,-0.5][0.5,1.0) in normal cases. Returns binary
9921  // --- significand of single precision float input, such that S0.f =
9922  // --- significand * (2 ** exponent). See also FREXP_EXP_I32_F32, which
9923  // --- returns integer exponent.
9924  void
9926  {
9927  Wavefront *wf = gpuDynInst->wavefront();
9928  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9929  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9930 
9931  src.readSrc();
9932 
9933  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9934  if (wf->execMask(lane)) {
9935  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
9936  vdst[lane] = src[lane];
9937  } else {
9938  VecElemI32 exp(0);
9939  vdst[lane] = std::frexp(src[lane], &exp);
9940  }
9941  }
9942  }
9943 
9944  vdst.write();
9945  } // execute
9946  // --- Inst_VOP1__V_CLREXCP class methods ---
9947 
9949  : Inst_VOP1(iFmt, "v_clrexcp")
9950  {
9951  setFlag(ALU);
9952  } // Inst_VOP1__V_CLREXCP
9953 
9955  {
9956  } // ~Inst_VOP1__V_CLREXCP
9957 
9958  // --- description from .arch file ---
9959  // Clear wave's exception state in SIMD (SP).
9960  void
9962  {
9964  } // execute
9965  // --- Inst_VOP1__V_CVT_F16_U16 class methods ---
9966 
9968  : Inst_VOP1(iFmt, "v_cvt_f16_u16")
9969  {
9970  setFlag(ALU);
9971  setFlag(F16);
9972  } // Inst_VOP1__V_CVT_F16_U16
9973 
9975  {
9976  } // ~Inst_VOP1__V_CVT_F16_U16
9977 
9978  // --- description from .arch file ---
9979  // D.f16 = uint16_to_flt16(S.u16).
9980  // Supports denormals, rounding, exception flags and saturation.
9981  void
9983  {
9985  } // execute
9986  // --- Inst_VOP1__V_CVT_F16_I16 class methods ---
9987 
9989  : Inst_VOP1(iFmt, "v_cvt_f16_i16")
9990  {
9991  setFlag(ALU);
9992  setFlag(F16);
9993  } // Inst_VOP1__V_CVT_F16_I16
9994 
9996  {
9997  } // ~Inst_VOP1__V_CVT_F16_I16
9998 
9999  // --- description from .arch file ---
10000  // D.f16 = int16_to_flt16(S.i16).
10001  // Supports denormals, rounding, exception flags and saturation.
10002  void
10004  {
10006  } // execute
10007  // --- Inst_VOP1__V_CVT_U16_F16 class methods ---
10008 
10010  : Inst_VOP1(iFmt, "v_cvt_u16_f16")
10011  {
10012  setFlag(ALU);
10013  setFlag(F16);
10014  } // Inst_VOP1__V_CVT_U16_F16
10015 
10017  {
10018  } // ~Inst_VOP1__V_CVT_U16_F16
10019 
10020  // --- description from .arch file ---
10021  // D.u16 = flt16_to_uint16(S.f16).
10022  // Supports rounding, exception flags and saturation.
10023  void
10025  {
10027  } // execute
10028  // --- Inst_VOP1__V_CVT_I16_F16 class methods ---
10029 
10031  : Inst_VOP1(iFmt, "v_cvt_i16_f16")
10032  {
10033  setFlag(ALU);
10034  setFlag(F16);
10035  } // Inst_VOP1__V_CVT_I16_F16
10036 
10038  {
10039  } // ~Inst_VOP1__V_CVT_I16_F16
10040 
10041  // --- description from .arch file ---
10042  // D.i16 = flt16_to_int16(S.f16).
10043  // Supports rounding, exception flags and saturation.
10044  void
10046  {
10048  } // execute
10049  // --- Inst_VOP1__V_RCP_F16 class methods ---
10050 
10052  : Inst_VOP1(iFmt, "v_rcp_f16")
10053  {
10054  setFlag(ALU);
10055  setFlag(F16);
10056  } // Inst_VOP1__V_RCP_F16
10057 
10059  {
10060  } // ~Inst_VOP1__V_RCP_F16
10061 
10062  // --- description from .arch file ---
10063  // if(S0.f16 == 1.0f)
10064  // D.f16 = 1.0f;
10065  // else
10066  // D.f16 = ApproximateRecip(S0.f16).
10067  void
10069  {
10071  } // execute
10072  // --- Inst_VOP1__V_SQRT_F16 class methods ---
10073 
10075  : Inst_VOP1(iFmt, "v_sqrt_f16")
10076  {
10077  setFlag(ALU);
10078  setFlag(F16);
10079  } // Inst_VOP1__V_SQRT_F16
10080 
10082  {
10083  } // ~Inst_VOP1__V_SQRT_F16
10084 
10085  // --- description from .arch file ---
10086  // if(S0.f16 == 1.0f)
10087  // D.f16 = 1.0f;
10088  // else
10089  // D.f16 = ApproximateSqrt(S0.f16).
10090  void
10092  {
10094  } // execute
10095  // --- Inst_VOP1__V_RSQ_F16 class methods ---
10096 
10098  : Inst_VOP1(iFmt, "v_rsq_f16")
10099  {
10100  setFlag(ALU);
10101  setFlag(F16);
10102  } // Inst_VOP1__V_RSQ_F16
10103 
10105  {
10106  } // ~Inst_VOP1__V_RSQ_F16
10107 
10108  // --- description from .arch file ---
10109  // if(S0.f16 == 1.0f)
10110  // D.f16 = 1.0f;
10111  // else
10112  // D.f16 = ApproximateRecipSqrt(S0.f16).
10113  void
10115  {
10117  } // execute
10118  // --- Inst_VOP1__V_LOG_F16 class methods ---
10119 
10121  : Inst_VOP1(iFmt, "v_log_f16")
10122  {
10123  setFlag(ALU);
10124  setFlag(F16);
10125  } // Inst_VOP1__V_LOG_F16
10126 
10128  {
10129  } // ~Inst_VOP1__V_LOG_F16
10130 
10131  // --- description from .arch file ---
10132  // if(S0.f16 == 1.0f)
10133  // D.f16 = 0.0f;
10134  // else
10135  // D.f16 = ApproximateLog2(S0.f16).
10136  void
10138  {
10140  } // execute
10141  // --- Inst_VOP1__V_EXP_F16 class methods ---
10142 
10144  : Inst_VOP1(iFmt, "v_exp_f16")
10145  {
10146  setFlag(ALU);
10147  setFlag(F16);
10148  } // Inst_VOP1__V_EXP_F16
10149 
10151  {
10152  } // ~Inst_VOP1__V_EXP_F16
10153 
10154  // --- description from .arch file ---
10155  // if(S0.f16 == 0.0f)
10156  // D.f16 = 1.0f;
10157  // else
10158  // D.f16 = Approximate2ToX(S0.f16).
10159  void
10161  {
10163  } // execute
10164  // --- Inst_VOP1__V_FREXP_MANT_F16 class methods ---
10165 
10167  : Inst_VOP1(iFmt, "v_frexp_mant_f16")
10168  {
10169  setFlag(ALU);
10170  setFlag(F16);
10171  } // Inst_VOP1__V_FREXP_MANT_F16
10172 
10174  {
10175  } // ~Inst_VOP1__V_FREXP_MANT_F16
10176 
10177  // --- description from .arch file ---
10178  // if(S0.f16 == +-INF || S0.f16 == NAN)
10179  // D.f16 = S0.f16;
10180  // else
10181  // D.f16 = mantissa(S0.f16).
10182  // Result range is (-1.0,-0.5][0.5,1.0).
10183  // C math library frexp function.
10184  // Returns binary significand of half precision float input, such that the
10185  // original single float = significand * (2 ** exponent).
10186  void
10188  {
10190  } // execute
10191  // --- Inst_VOP1__V_FREXP_EXP_I16_F16 class methods ---
10192 
10194  InFmt_VOP1 *iFmt)
10195  : Inst_VOP1(iFmt, "v_frexp_exp_i16_f16")
10196  {
10197  setFlag(ALU);
10198  setFlag(F16);
10199  } // Inst_VOP1__V_FREXP_EXP_I16_F16
10200 
10202  {
10203  } // ~Inst_VOP1__V_FREXP_EXP_I16_F16
10204 
10205  // --- description from .arch file ---
10206  // if(S0.f16 == +-INF || S0.f16 == NAN)
10207  // D.i16 = 0;
10208  // else
10209  // D.i16 = 2s_complement(exponent(S0.f16) - 15 + 1).
10210  // C math library frexp function.
10211  // Returns exponent of half precision float input, such that the
10212  // original single float = significand * (2 ** exponent).
10213  void
10215  {
10217  } // execute
10218  // --- Inst_VOP1__V_FLOOR_F16 class methods ---
10219 
10221  : Inst_VOP1(iFmt, "v_floor_f16")
10222  {
10223  setFlag(ALU);
10224  setFlag(F16);
10225  } // Inst_VOP1__V_FLOOR_F16
10226 
10228  {
10229  } // ~Inst_VOP1__V_FLOOR_F16
10230 
10231  // --- description from .arch file ---
10232  // D.f16 = trunc(S0.f16);
10233  // if(S0.f16 < 0.0f && S0.f16 != D.f16) then D.f16 -= 1.0f.
10234  void
10236  {
10238  } // execute
10239  // --- Inst_VOP1__V_CEIL_F16 class methods ---
10240 
10242  : Inst_VOP1(iFmt, "v_ceil_f16")
10243  {
10244  setFlag(ALU);
10245  setFlag(F16);
10246  } // Inst_VOP1__V_CEIL_F16
10247 
10249  {
10250  } // ~Inst_VOP1__V_CEIL_F16
10251 
10252  // --- description from .arch file ---
10253  // D.f16 = trunc(S0.f16);
10254  // if(S0.f16 > 0.0f && S0.f16 != D.f16) then D.f16 += 1.0f.
10255  void
10257  {
10259  } // execute
10260  // --- Inst_VOP1__V_TRUNC_F16 class methods ---
10261 
10263  : Inst_VOP1(iFmt, "v_trunc_f16")
10264  {
10265  setFlag(ALU);
10266  setFlag(F16);
10267  } // Inst_VOP1__V_TRUNC_F16
10268 
10270  {
10271  } // ~Inst_VOP1__V_TRUNC_F16
10272 
10273  // --- description from .arch file ---
10274  // D.f16 = trunc(S0.f16).
10275  // Round-to-zero semantics.
10276  void
10278  {
10280  } // execute
10281  // --- Inst_VOP1__V_RNDNE_F16 class methods ---
10282 
10284  : Inst_VOP1(iFmt, "v_rndne_f16")
10285  {
10286  setFlag(ALU);
10287  setFlag(F16);
10288  } // Inst_VOP1__V_RNDNE_F16
10289 
10291  {
10292  } // ~Inst_VOP1__V_RNDNE_F16
10293 
10294  // --- description from .arch file ---
10295  // D.f16 = FLOOR(S0.f16 + 0.5f);
10296  // if(floor(S0.f16) is even && fract(S0.f16) == 0.5f) then D.f16 -= 1.0f.
10297  // Round-to-nearest-even semantics.
10298  void
10300  {
10302  } // execute
10303  // --- Inst_VOP1__V_FRACT_F16 class methods ---
10304 
10306  : Inst_VOP1(iFmt, "v_fract_f16")
10307  {
10308  setFlag(ALU);
10309  setFlag(F16);
10310  } // Inst_VOP1__V_FRACT_F16
10311 
10313  {
10314  } // ~Inst_VOP1__V_FRACT_F16
10315 
10316  // --- description from .arch file ---
10317  // D.f16 = S0.f16 + -floor(S0.f16).
10318  void
10320  {
10322  } // execute
10323  // --- Inst_VOP1__V_SIN_F16 class methods ---
10324 
10326  : Inst_VOP1(iFmt, "v_sin_f16")
10327  {
10328  setFlag(ALU);
10329  setFlag(F16);
10330  } // Inst_VOP1__V_SIN_F16
10331 
10333  {
10334  } // ~Inst_VOP1__V_SIN_F16
10335 
10336  // --- description from .arch file ---
10337  // D.f16 = sin(S0.f16 * 2 * PI).
10338  void
10340  {
10342  } // execute
10343  // --- Inst_VOP1__V_COS_F16 class methods ---
10344 
10346  : Inst_VOP1(iFmt, "v_cos_f16")
10347  {
10348  setFlag(ALU);
10349  setFlag(F16);
10350  } // Inst_VOP1__V_COS_F16
10351 
10353  {
10354  } // ~Inst_VOP1__V_COS_F16
10355 
10356  // --- description from .arch file ---
10357  // D.f16 = cos(S0.f16 * 2 * PI).
10358  void
10360  {
10362  } // execute
10363  // --- Inst_VOP1__V_EXP_LEGACY_F32 class methods ---
10364 
10366  : Inst_VOP1(iFmt, "v_exp_legacy_f32")
10367  {
10368  setFlag(ALU);
10369  setFlag(F32);
10370  } // Inst_VOP1__V_EXP_LEGACY_F32
10371 
10373  {
10374  } // ~Inst_VOP1__V_EXP_LEGACY_F32
10375 
10376  // --- description from .arch file ---
10377  // D.f = pow(2.0, S0.f) with legacy semantics.
10378  void
10380  {
10381  Wavefront *wf = gpuDynInst->wavefront();
10382  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
10383  VecOperandF32 vdst(gpuDynInst, instData.VDST);
10384 
10385  src.readSrc();
10386 
10387  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10388  if (wf->execMask(lane)) {
10389  vdst[lane] = std::pow(2.0, src[lane]);
10390  }
10391  }
10392 
10393  vdst.write();
10394  } // execute
10395  // --- Inst_VOP1__V_LOG_LEGACY_F32 class methods ---
10396 
10398  : Inst_VOP1(iFmt, "v_log_legacy_f32")
10399  {
10400  setFlag(ALU);
10401  setFlag(F32);
10402  } // Inst_VOP1__V_LOG_LEGACY_F32
10403 
10405  {
10406  } // ~Inst_VOP1__V_LOG_LEGACY_F32
10407 
10408  // --- description from .arch file ---
10409  // D.f = log2(S0.f). Base 2 logarithm with legacy semantics.
10410  void
10412  {
10413  Wavefront *wf = gpuDynInst->wavefront();
10414  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
10415  VecOperandF32 vdst(gpuDynInst, instData.VDST);
10416 
10417  src.readSrc();
10418 
10419  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10420  if (wf->execMask(lane)) {
10421  vdst[lane] = std::log2(src[lane]);
10422  }
10423  }
10424 
10425  vdst.write();
10426  } // execute
10427  // --- Inst_VOPC__V_CMP_CLASS_F32 class methods ---
10428 
10430  : Inst_VOPC(iFmt, "v_cmp_class_f32")
10431  {
10432  setFlag(ALU);
10433  setFlag(F32);
10434  } // Inst_VOPC__V_CMP_CLASS_F32
10435 
10437  {
10438  } // ~Inst_VOPC__V_CMP_CLASS_F32
10439 
10440  // --- description from .arch file ---
10441  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f
10442  // The function reports true if the floating point value is *any* of the
10443  // --- numeric types selected in S1.u according to the following list:
10444  // S1.u[0] -- value is a signaling NaN.
10445  // S1.u[1] -- value is a quiet NaN.
10446  // S1.u[2] -- value is negative infinity.
10447  // S1.u[3] -- value is a negative normal value.
10448  // S1.u[4] -- value is a negative denormal value.
10449  // S1.u[5] -- value is negative zero.
10450  // S1.u[6] -- value is positive zero.
10451  // S1.u[7] -- value is a positive denormal value.
10452  // S1.u[8] -- value is a positive normal value.
10453  // S1.u[9] -- value is positive infinity.
10454  void
10456  {
10457  Wavefront *wf = gpuDynInst->wavefront();
10458  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10459  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
10460  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10461 
10462  src0.readSrc();
10463  src1.read();
10464 
10465  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10466  if (wf->execMask(lane)) {
10467  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
10468  // is NaN
10469  if (std::isnan(src0[lane])) {
10470  vcc.setBit(lane, 1);
10471  continue;
10472  }
10473  }
10474  if (bits(src1[lane], 2)) {
10475  // is -infinity
10476  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
10477  vcc.setBit(lane, 1);
10478  continue;
10479  }
10480  }
10481  if (bits(src1[lane], 3)) {
10482  // is -normal
10483  if (std::isnormal(src0[lane])
10484  && std::signbit(src0[lane])) {
10485  vcc.setBit(lane, 1);
10486  continue;
10487  }
10488  }
10489  if (bits(src1[lane], 4)) {
10490  // is -denormal
10491  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
10492  && std::signbit(src0[lane])) {
10493  vcc.setBit(lane, 1);
10494  continue;
10495  }
10496  }
10497  if (bits(src1[lane], 5)) {
10498  // is -zero
10499  if (std::fpclassify(src0[lane]) == FP_ZERO
10500  && std::signbit(src0[lane])) {
10501  vcc.setBit(lane, 1);
10502  continue;
10503  }
10504  }
10505  if (bits(src1[lane], 6)) {
10506  // is +zero
10507  if (std::fpclassify(src0[lane]) == FP_ZERO
10508  && !std::signbit(src0[lane])) {
10509  vcc.setBit(lane, 1);
10510  continue;
10511  }
10512  }
10513  if (bits(src1[lane], 7)) {
10514  // is +denormal
10515  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
10516  && !std::signbit(src0[lane])) {
10517  vcc.setBit(lane, 1);
10518  continue;
10519  }
10520  }
10521  if (bits(src1[lane], 8)) {
10522  // is +normal
10523  if (std::isnormal(src0[lane])
10524  && !std::signbit(src0[lane])) {
10525  vcc.setBit(lane, 1);
10526  continue;
10527  }
10528  }
10529  if (bits(src1[lane], 9)) {
10530  // is +infinity
10531  if (std::isinf(src0[lane]) && !std::signbit(src0[lane])) {
10532  vcc.setBit(lane, 1);
10533  continue;
10534  }
10535  }
10536  }
10537  }
10538 
10539  vcc.write();
10540  } // execute
10541  // --- Inst_VOPC__V_CMPX_CLASS_F32 class methods ---
10542 
10544  : Inst_VOPC(iFmt, "v_cmpx_class_f32")
10545  {
10546  setFlag(ALU);
10547  setFlag(F32);
10548  setFlag(WritesEXEC);
10549  } // Inst_VOPC__V_CMPX_CLASS_F32
10550 
10552  {
10553  } // ~Inst_VOPC__V_CMPX_CLASS_F32
10554 
10555  // --- description from .arch file ---
10556  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
10557  // S0.f The function reports true if the floating point value is *any* of
10558  // the numeric types selected in S1.u according to the following list:
10559  // S1.u[0] -- value is a signaling NaN.
10560  // S1.u[1] -- value is a quiet NaN.
10561  // S1.u[2] -- value is negative infinity.
10562  // S1.u[3] -- value is a negative normal value.
10563  // S1.u[4] -- value is a negative denormal value.
10564  // S1.u[5] -- value is negative zero.
10565  // S1.u[6] -- value is positive zero.
10566  // S1.u[7] -- value is a positive denormal value.
10567  // S1.u[8] -- value is a positive normal value.
10568  // S1.u[9] -- value is positive infinity.
10569  void
10571  {
10572  Wavefront *wf = gpuDynInst->wavefront();
10573  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10574  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
10575  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10576 
10577  src0.readSrc();
10578  src1.read();
10579 
10580  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10581  if (wf->execMask(lane)) {
10582  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
10583  // is NaN
10584  if (std::isnan(src0[lane])) {
10585  vcc.setBit(lane, 1);
10586  continue;
10587  }
10588  }
10589  if (bits(src1[lane], 2)) {
10590  // is -infinity
10591  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
10592  vcc.setBit(lane, 1);
10593  continue;
10594  }
10595  }
10596  if (bits(src1[lane], 3)) {
10597  // is -normal
10598  if (std::isnormal(src0[lane])
10599  && std::signbit(src0[lane])) {
10600  vcc.setBit(lane, 1);
10601  continue;
10602  }
10603  }
10604  if (bits(src1[lane], 4)) {
10605  // is -denormal
10606  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
10607  && std::signbit(src0[lane])) {
10608  vcc.setBit(lane, 1);
10609  continue;
10610  }
10611  }
10612  if (bits(src1[lane], 5)) {
10613  // is -zero
10614  if (std::fpclassify(src0[lane]) == FP_ZERO
10615  && std::signbit(src0[lane])) {
10616  vcc.setBit(lane, 1);
10617  continue;
10618  }
10619  }
10620  if (bits(src1[lane], 6)) {
10621  // is +zero
10622  if (std::fpclassify(src0[lane]) == FP_ZERO
10623  && !std::signbit(src0[lane])) {
10624  vcc.setBit(lane, 1);
10625  continue;
10626  }
10627  }
10628  if (bits(src1[lane], 7)) {
10629  // is +denormal
10630  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
10631  && !std::signbit(src0[lane])) {
10632  vcc.setBit(lane, 1);
10633  continue;
10634  }
10635  }
10636  if (bits(src1[lane], 8)) {
10637  // is +normal
10638  if (std::isnormal(src0[lane])
10639  && !std::signbit(src0[lane])) {
10640  vcc.setBit(lane, 1);
10641  continue;
10642  }
10643  }
10644  if (bits(src1[lane], 9)) {
10645  // is +infinity
10646  if (std::isinf(src0[lane]) && !std::signbit(src0[lane])) {
10647  vcc.setBit(lane, 1);
10648  continue;
10649  }
10650  }
10651  }
10652  }
10653 
10654  vcc.write();
10655  wf->execMask() = vcc.rawData();
10656  } // execute
10657  // --- Inst_VOPC__V_CMP_CLASS_F64 class methods ---
10658 
10660  : Inst_VOPC(iFmt, "v_cmp_class_f64")
10661  {
10662  setFlag(ALU);
10663  setFlag(F64);
10664  } // Inst_VOPC__V_CMP_CLASS_F64
10665 
10667  {
10668  } // ~Inst_VOPC__V_CMP_CLASS_F64
10669 
10670  // --- description from .arch file ---
10671  // VCC = IEEE numeric class function specified in S1.u, performed on S0.d
10672  // The function reports true if the floating point value is *any* of the
10673  // --- numeric types selected in S1.u according to the following list:
10674  // S1.u[0] -- value is a signaling NaN.
10675  // S1.u[1] -- value is a quiet NaN.
10676  // S1.u[2] -- value is negative infinity.
10677  // S1.u[3] -- value is a negative normal value.
10678  // S1.u[4] -- value is a negative denormal value.
10679  // S1.u[5] -- value is negative zero.
10680  // S1.u[6] -- value is positive zero.
10681  // S1.u[7] -- value is a positive denormal value.
10682  // S1.u[8] -- value is a positive normal value.
10683  // S1.u[9] -- value is positive infinity.
10684  void
10686  {
10687  Wavefront *wf = gpuDynInst->wavefront();
10688  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
10689  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
10690  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10691 
10692  src0.readSrc();
10693  src1.read();
10694 
10695  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10696  if (wf->execMask(lane)) {
10697  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
10698  // is NaN
10699  if (std::isnan(src0[lane])) {
10700  vcc.setBit(lane, 1);
10701  continue;
10702  }
10703  }
10704  if (bits(src1[lane], 2)) {
10705  // is -infinity
10706  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
10707  vcc.setBit(lane, 1);
10708  continue;
10709  }
10710  }
10711  if (bits(src1[lane], 3)) {
10712  // is -normal
10713  if (std::isnormal(src0[lane])
10714  && std::signbit(src0[lane])) {
10715  vcc.setBit(lane, 1);
10716  continue;
10717  }
10718  }
10719  if (bits(src1[lane], 4)) {
10720  // is -denormal
10721  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
10722  && std::signbit(src0[lane])) {
10723  vcc.setBit(lane, 1);
10724  continue;
10725  }
10726  }
10727  if (bits(src1[lane], 5)) {
10728  // is -zero
10729  if (std::fpclassify(src0[lane]) == FP_ZERO
10730  && std::signbit(src0[lane])) {
10731  vcc.setBit(lane, 1);
10732  continue;
10733  }
10734  }
10735  if (bits(src1[lane], 6)) {
10736  // is +zero
10737  if (std::fpclassify(src0[lane]) == FP_ZERO
10738  && !std::signbit(src0[lane])) {
10739  vcc.setBit(lane, 1);
10740  continue;
10741  }
10742  }
10743  if (bits(src1[lane], 7)) {
10744  // is +denormal
10745  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
10746  && !std::signbit(src0[lane])) {
10747  vcc.setBit(lane, 1);
10748  continue;
10749  }
10750  }
10751  if (bits(src1[lane], 8)) {
10752  // is +normal
10753  if (std::isnormal(src0[lane])
10754  && !std::signbit(src0[lane])) {
10755  vcc.setBit(lane, 1);
10756  continue;
10757  }
10758  }
10759  if (bits(src1[lane], 9)) {
10760  // is +infinity
10761  if (std::isinf(src0[lane])
10762  && !std::signbit(src0[lane])) {
10763  vcc.setBit(lane, 1);
10764  continue;
10765  }
10766  }
10767  }
10768  }
10769 
10770  vcc.write();
10771  } // execute
10772  // --- Inst_VOPC__V_CMPX_CLASS_F64 class methods ---
10773 
10775  : Inst_VOPC(iFmt, "v_cmpx_class_f64")
10776  {
10777  setFlag(ALU);
10778  setFlag(F64);
10779  setFlag(WritesEXEC);
10780  } // Inst_VOPC__V_CMPX_CLASS_F64
10781 
10783  {
10784  } // ~Inst_VOPC__V_CMPX_CLASS_F64
10785 
10786  // --- description from .arch file ---
10787  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
10788  // S0.d The function reports true if the floating point value is *any* of
10789  // the numeric types selected in S1.u according to the following list:
10790  // S1.u[0] -- value is a signaling NaN.
10791  // S1.u[1] -- value is a quiet NaN.
10792  // S1.u[2] -- value is negative infinity.
10793  // S1.u[3] -- value is a negative normal value.
10794  // S1.u[4] -- value is a negative denormal value.
10795  // S1.u[5] -- value is negative zero.
10796  // S1.u[6] -- value is positive zero.
10797  // S1.u[7] -- value is a positive denormal value.
10798  // S1.u[8] -- value is a positive normal value.
10799  // S1.u[9] -- value is positive infinity.
10800  void
10802  {
10803  Wavefront *wf = gpuDynInst->wavefront();
10804  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
10805  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
10806  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10807 
10808  src0.readSrc();
10809  src1.read();
10810 
10811  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10812  if (wf->execMask(lane)) {
10813  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
10814  // is NaN
10815  if (std::isnan(src0[lane])) {
10816  vcc.setBit(lane, 1);
10817  continue;
10818  }
10819  }
10820  if (bits(src1[lane], 2)) {
10821  // is -infinity
10822  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
10823  vcc.setBit(lane, 1);
10824  continue;
10825  }
10826  }
10827  if (bits(src1[lane], 3)) {
10828  // is -normal
10829  if (std::isnormal(src0[lane])
10830  && std::signbit(src0[lane])) {
10831  vcc.setBit(lane, 1);
10832  continue;
10833  }
10834  }
10835  if (bits(src1[lane], 4)) {
10836  // is -denormal
10837  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
10838  && std::signbit(src0[lane])) {
10839  vcc.setBit(lane, 1);
10840  continue;
10841  }
10842  }
10843  if (bits(src1[lane], 5)) {
10844  // is -zero
10845  if (std::fpclassify(src0[lane]) == FP_ZERO
10846  && std::signbit(src0[lane])) {
10847  vcc.setBit(lane, 1);
10848  continue;
10849  }
10850  }
10851  if (bits(src1[lane], 6)) {
10852  // is +zero
10853  if (std::fpclassify(src0[lane]) == FP_ZERO
10854  && !std::signbit(src0[lane])) {
10855  vcc.setBit(lane, 1);
10856  continue;
10857  }
10858  }
10859  if (bits(src1[lane], 7)) {
10860  // is +denormal
10861  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
10862  && !std::signbit(src0[lane])) {
10863  vcc.setBit(lane, 1);
10864  continue;
10865  }
10866  }
10867  if (bits(src1[lane], 8)) {
10868  // is +normal
10869  if (std::isnormal(src0[lane])
10870  && !std::signbit(src0[lane])) {
10871  vcc.setBit(lane, 1);
10872  continue;
10873  }
10874  }
10875  if (bits(src1[lane], 9)) {
10876  // is +infinity
10877  if (std::isinf(src0[lane])
10878  && !std::signbit(src0[lane])) {
10879  vcc.setBit(lane, 1);
10880  continue;
10881  }
10882  }
10883  }
10884  }
10885 
10886  vcc.write();
10887  wf->execMask() = vcc.rawData();
10888  } // execute
10889  // --- Inst_VOPC__V_CMP_CLASS_F16 class methods ---
10890 
10892  : Inst_VOPC(iFmt, "v_cmp_class_f16")
10893  {
10894  setFlag(ALU);
10895  setFlag(F16);
10896  } // Inst_VOPC__V_CMP_CLASS_F16
10897 
10899  {
10900  } // ~Inst_VOPC__V_CMP_CLASS_F16
10901 
10902  // --- description from .arch file ---
10903  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f16
10904  // The function reports true if the floating point value is *any* of the
10905  // --- numeric types selected in S1.u according to the following list:
10906  // S1.u[0] -- value is a signaling NaN.
10907  // S1.u[1] -- value is a quiet NaN.
10908  // S1.u[2] -- value is negative infinity.
10909  // S1.u[3] -- value is a negative normal value.
10910  // S1.u[4] -- value is a negative denormal value.
10911  // S1.u[5] -- value is negative zero.
10912  // S1.u[6] -- value is positive zero.
10913  // S1.u[7] -- value is a positive denormal value.
10914  // S1.u[8] -- value is a positive normal value.
10915  // S1.u[9] -- value is positive infinity.
10916  void
10918  {
10920  } // execute
10921  // --- Inst_VOPC__V_CMPX_CLASS_F16 class methods ---
10922 
10924  : Inst_VOPC(iFmt, "v_cmpx_class_f16")
10925  {
10926  setFlag(ALU);
10927  setFlag(F16);
10928  setFlag(WritesEXEC);
10929  } // Inst_VOPC__V_CMPX_CLASS_F16
10930 
10932  {
10933  } // ~Inst_VOPC__V_CMPX_CLASS_F16
10934 
10935  // --- description from .arch file ---
10936  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
10937  // --- S0.f16
10938  // The function reports true if the floating point value is *any* of the
10939  // --- numeric types selected in S1.u according to the following list:
10940  // S1.u[0] -- value is a signaling NaN.
10941  // S1.u[1] -- value is a quiet NaN.
10942  // S1.u[2] -- value is negative infinity.
10943  // S1.u[3] -- value is a negative normal value.
10944  // S1.u[4] -- value is a negative denormal value.
10945  // S1.u[5] -- value is negative zero.
10946  // S1.u[6] -- value is positive zero.
10947  // S1.u[7] -- value is a positive denormal value.
10948  // S1.u[8] -- value is a positive normal value.
10949  // S1.u[9] -- value is positive infinity.
10950  void
10952  {
10954  } // execute
10955  // --- Inst_VOPC__V_CMP_F_F16 class methods ---
10956 
10958  : Inst_VOPC(iFmt, "v_cmp_f_f16")
10959  {
10960  setFlag(ALU);
10961  setFlag(F16);
10962  } // Inst_VOPC__V_CMP_F_F16
10963 
10965  {
10966  } // ~Inst_VOPC__V_CMP_F_F16
10967 
10968  // --- description from .arch file ---
10969  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
10970  void
10972  {
10974  } // execute
10975  // --- Inst_VOPC__V_CMP_LT_F16 class methods ---
10976 
10978  : Inst_VOPC(iFmt, "v_cmp_lt_f16")
10979  {
10980  setFlag(ALU);
10981  setFlag(F16);
10982  } // Inst_VOPC__V_CMP_LT_F16
10983 
10985  {
10986  } // ~Inst_VOPC__V_CMP_LT_F16
10987 
10988  // --- description from .arch file ---
10989  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
10990  void
10992  {
10994  } // execute
10995  // --- Inst_VOPC__V_CMP_EQ_F16 class methods ---
10996 
10998  : Inst_VOPC(iFmt, "v_cmp_eq_f16")
10999  {
11000  setFlag(ALU);
11001  setFlag(F16);
11002  } // Inst_VOPC__V_CMP_EQ_F16
11003 
11005  {
11006  } // ~Inst_VOPC__V_CMP_EQ_F16
11007 
11008  // --- description from .arch file ---
11009  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
11010  void
11012  {
11014  } // execute
11015  // --- Inst_VOPC__V_CMP_LE_F16 class methods ---
11016 
11018  : Inst_VOPC(iFmt, "v_cmp_le_f16")
11019  {
11020  setFlag(ALU);
11021  setFlag(F16);
11022  } // Inst_VOPC__V_CMP_LE_F16
11023 
11025  {
11026  } // ~Inst_VOPC__V_CMP_LE_F16
11027 
11028  // --- description from .arch file ---
11029  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
11030  void
11032  {
11034  } // execute
11035  // --- Inst_VOPC__V_CMP_GT_F16 class methods ---
11036 
11038  : Inst_VOPC(iFmt, "v_cmp_gt_f16")
11039  {
11040  setFlag(ALU);
11041  setFlag(F16);
11042  } // Inst_VOPC__V_CMP_GT_F16
11043 
11045  {
11046  } // ~Inst_VOPC__V_CMP_GT_F16
11047 
11048  // --- description from .arch file ---
11049  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
11050  void
11052  {
11054  } // execute
11055  // --- Inst_VOPC__V_CMP_LG_F16 class methods ---
11056 
11058  : Inst_VOPC(iFmt, "v_cmp_lg_f16")
11059  {
11060  setFlag(ALU);
11061  setFlag(F16);
11062  } // Inst_VOPC__V_CMP_LG_F16
11063 
11065  {
11066  } // ~Inst_VOPC__V_CMP_LG_F16
11067 
11068  // --- description from .arch file ---
11069  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
11070  void
11072  {
11074  } // execute
11075  // --- Inst_VOPC__V_CMP_GE_F16 class methods ---
11076 
11078  : Inst_VOPC(iFmt, "v_cmp_ge_f16")
11079  {
11080  setFlag(ALU);
11081  setFlag(F16);
11082  } // Inst_VOPC__V_CMP_GE_F16
11083 
11085  {
11086  } // ~Inst_VOPC__V_CMP_GE_F16
11087 
11088  // --- description from .arch file ---
11089  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
11090  void
11092  {
11094  } // execute
11095  // --- Inst_VOPC__V_CMP_O_F16 class methods ---
11096 
11098  : Inst_VOPC(iFmt, "v_cmp_o_f16")
11099  {
11100  setFlag(ALU);
11101  setFlag(F16);
11102  } // Inst_VOPC__V_CMP_O_F16
11103 
11105  {
11106  } // ~Inst_VOPC__V_CMP_O_F16
11107 
11108  // --- description from .arch file ---
11109  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
11110  void
11112  {
11114  } // execute
11115  // --- Inst_VOPC__V_CMP_U_F16 class methods ---
11116 
11118  : Inst_VOPC(iFmt, "v_cmp_u_f16")
11119  {
11120  setFlag(ALU);
11121  setFlag(F16);
11122  } // Inst_VOPC__V_CMP_U_F16
11123 
11125  {
11126  } // ~Inst_VOPC__V_CMP_U_F16
11127 
11128  // --- description from .arch file ---
11129  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
11130  void
11132  {
11134  } // execute
11135  // --- Inst_VOPC__V_CMP_NGE_F16 class methods ---
11136 
11138  : Inst_VOPC(iFmt, "v_cmp_nge_f16")
11139  {
11140  setFlag(ALU);
11141  setFlag(F16);
11142  } // Inst_VOPC__V_CMP_NGE_F16
11143 
11145  {
11146  } // ~Inst_VOPC__V_CMP_NGE_F16
11147 
11148  // --- description from .arch file ---
11149  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
11150  void
11152  {
11154  } // execute
11155  // --- Inst_VOPC__V_CMP_NLG_F16 class methods ---
11156 
11158  : Inst_VOPC(iFmt, "v_cmp_nlg_f16")
11159  {
11160  setFlag(ALU);
11161  setFlag(F16);
11162  } // Inst_VOPC__V_CMP_NLG_F16
11163 
11165  {
11166  } // ~Inst_VOPC__V_CMP_NLG_F16
11167 
11168  // --- description from .arch file ---
11169  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
11170  void
11172  {
11174  } // execute
11175  // --- Inst_VOPC__V_CMP_NGT_F16 class methods ---
11176 
11178  : Inst_VOPC(iFmt, "v_cmp_ngt_f16")
11179  {
11180  setFlag(ALU);
11181  setFlag(F16);
11182  } // Inst_VOPC__V_CMP_NGT_F16
11183 
11185  {
11186  } // ~Inst_VOPC__V_CMP_NGT_F16
11187 
11188  // --- description from .arch file ---
11189  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
11190  void
11192  {
11194  } // execute
11195  // --- Inst_VOPC__V_CMP_NLE_F16 class methods ---
11196 
11198  : Inst_VOPC(iFmt, "v_cmp_nle_f16")
11199  {
11200  setFlag(ALU);
11201  setFlag(F16);
11202  } // Inst_VOPC__V_CMP_NLE_F16
11203 
11205  {
11206  } // ~Inst_VOPC__V_CMP_NLE_F16
11207 
11208  // --- description from .arch file ---
11209  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
11210  void
11212  {
11214  } // execute
11215  // --- Inst_VOPC__V_CMP_NEQ_F16 class methods ---
11216 
11218  : Inst_VOPC(iFmt, "v_cmp_neq_f16")
11219  {
11220  setFlag(ALU);
11221  setFlag(F16);
11222  } // Inst_VOPC__V_CMP_NEQ_F16
11223 
11225  {
11226  } // ~Inst_VOPC__V_CMP_NEQ_F16
11227 
11228  // --- description from .arch file ---
11229  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
11230  void
11232  {
11234  } // execute
11235  // --- Inst_VOPC__V_CMP_NLT_F16 class methods ---
11236 
11238  : Inst_VOPC(iFmt, "v_cmp_nlt_f16")
11239  {
11240  setFlag(ALU);
11241  setFlag(F16);
11242  } // Inst_VOPC__V_CMP_NLT_F16
11243 
11245  {
11246  } // ~Inst_VOPC__V_CMP_NLT_F16
11247 
11248  // --- description from .arch file ---
11249  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
11250  void
11252  {
11254  } // execute
11255  // --- Inst_VOPC__V_CMP_TRU_F16 class methods ---
11256 
11258  : Inst_VOPC(iFmt, "v_cmp_tru_f16")
11259  {
11260  setFlag(ALU);
11261  setFlag(F16);
11262  } // Inst_VOPC__V_CMP_TRU_F16
11263 
11265  {
11266  } // ~Inst_VOPC__V_CMP_TRU_F16
11267 
11268  // --- description from .arch file ---
11269  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
11270  void
11272  {
11274  } // execute
11275  // --- Inst_VOPC__V_CMPX_F_F16 class methods ---
11276 
11278  : Inst_VOPC(iFmt, "v_cmpx_f_f16")
11279  {
11280  setFlag(ALU);
11281  setFlag(F16);
11282  setFlag(WritesEXEC);
11283  } // Inst_VOPC__V_CMPX_F_F16
11284 
11286  {
11287  } // ~Inst_VOPC__V_CMPX_F_F16
11288 
11289  // --- description from .arch file ---
11290  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
11291  void
11293  {
11295  } // execute
11296  // --- Inst_VOPC__V_CMPX_LT_F16 class methods ---
11297 
11299  : Inst_VOPC(iFmt, "v_cmpx_lt_f16")
11300  {
11301  setFlag(ALU);
11302  setFlag(F16);
11303  setFlag(WritesEXEC);
11304  } // Inst_VOPC__V_CMPX_LT_F16
11305 
11307  {
11308  } // ~Inst_VOPC__V_CMPX_LT_F16
11309 
11310  // --- description from .arch file ---
11311  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
11312  void
11314  {
11316  } // execute
11317  // --- Inst_VOPC__V_CMPX_EQ_F16 class methods ---
11318 
11320  : Inst_VOPC(iFmt, "v_cmpx_eq_f16")
11321  {
11322  setFlag(ALU);
11323  setFlag(F16);
11324  setFlag(WritesEXEC);
11325  } // Inst_VOPC__V_CMPX_EQ_F16
11326 
11328  {
11329  } // ~Inst_VOPC__V_CMPX_EQ_F16
11330 
11331  // --- description from .arch file ---
11332  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
11333  void
11335  {
11337  } // execute
11338  // --- Inst_VOPC__V_CMPX_LE_F16 class methods ---
11339 
11341  : Inst_VOPC(iFmt, "v_cmpx_le_f16")
11342  {
11343  setFlag(ALU);
11344  setFlag(F16);
11345  setFlag(WritesEXEC);
11346  } // Inst_VOPC__V_CMPX_LE_F16
11347 
11349  {
11350  } // ~Inst_VOPC__V_CMPX_LE_F16
11351 
11352  // --- description from .arch file ---
11353  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
11354  void
11356  {
11358  } // execute
11359  // --- Inst_VOPC__V_CMPX_GT_F16 class methods ---
11360 
11362  : Inst_VOPC(iFmt, "v_cmpx_gt_f16")
11363  {
11364  setFlag(ALU);
11365  setFlag(F16);
11366  setFlag(WritesEXEC);
11367  } // Inst_VOPC__V_CMPX_GT_F16
11368 
11370  {
11371  } // ~Inst_VOPC__V_CMPX_GT_F16
11372 
11373  // --- description from .arch file ---
11374  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
11375  void
11377  {
11379  } // execute
11380  // --- Inst_VOPC__V_CMPX_LG_F16 class methods ---
11381 
11383  : Inst_VOPC(iFmt, "v_cmpx_lg_f16")
11384  {
11385  setFlag(ALU);
11386  setFlag(F16);
11387  setFlag(WritesEXEC);
11388  } // Inst_VOPC__V_CMPX_LG_F16
11389 
11391  {
11392  } // ~Inst_VOPC__V_CMPX_LG_F16
11393 
11394  // --- description from .arch file ---
11395  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
11396  void
11398  {
11400  } // execute
11401  // --- Inst_VOPC__V_CMPX_GE_F16 class methods ---
11402 
11404  : Inst_VOPC(iFmt, "v_cmpx_ge_f16")
11405  {
11406  setFlag(ALU);
11407  setFlag(F16);
11408  setFlag(WritesEXEC);
11409  } // Inst_VOPC__V_CMPX_GE_F16
11410 
11412  {
11413  } // ~Inst_VOPC__V_CMPX_GE_F16
11414 
11415  // --- description from .arch file ---
11416  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
11417  void
11419  {
11421  } // execute
11422  // --- Inst_VOPC__V_CMPX_O_F16 class methods ---
11423 
11425  : Inst_VOPC(iFmt, "v_cmpx_o_f16")
11426  {
11427  setFlag(ALU);
11428  setFlag(F16);
11429  setFlag(WritesEXEC);
11430  } // Inst_VOPC__V_CMPX_O_F16
11431 
11433  {
11434  } // ~Inst_VOPC__V_CMPX_O_F16
11435 
11436  // --- description from .arch file ---
11437  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
11438  // encoding.
11439  void
11441  {
11443  } // execute
11444  // --- Inst_VOPC__V_CMPX_U_F16 class methods ---
11445 
11447  : Inst_VOPC(iFmt, "v_cmpx_u_f16")
11448  {
11449  setFlag(ALU);
11450  setFlag(F16);
11451  setFlag(WritesEXEC);
11452  } // Inst_VOPC__V_CMPX_U_F16
11453 
11455  {
11456  } // ~Inst_VOPC__V_CMPX_U_F16
11457 
11458  // --- description from .arch file ---
11459  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
11460  // encoding.
11461  void
11463  {
11465  } // execute
11466  // --- Inst_VOPC__V_CMPX_NGE_F16 class methods ---
11467 
11469  : Inst_VOPC(iFmt, "v_cmpx_nge_f16")
11470  {
11471  setFlag(ALU);
11472  setFlag(F16);
11473  setFlag(WritesEXEC);
11474  } // Inst_VOPC__V_CMPX_NGE_F16
11475 
11477  {
11478  } // ~Inst_VOPC__V_CMPX_NGE_F16
11479 
11480  // --- description from .arch file ---
11481  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
11482  void
11484  {
11486  } // execute
11487  // --- Inst_VOPC__V_CMPX_NLG_F16 class methods ---
11488 
11490  : Inst_VOPC(iFmt, "v_cmpx_nlg_f16")
11491  {
11492  setFlag(ALU);
11493  setFlag(F16);
11494  setFlag(WritesEXEC);
11495  } // Inst_VOPC__V_CMPX_NLG_F16
11496 
11498  {
11499  } // ~Inst_VOPC__V_CMPX_NLG_F16
11500 
11501  // --- description from .arch file ---
11502  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
11503  void
11505  {
11507  } // execute
11508  // --- Inst_VOPC__V_CMPX_NGT_F16 class methods ---
11509 
11511  : Inst_VOPC(iFmt, "v_cmpx_ngt_f16")
11512  {
11513  setFlag(ALU);
11514  setFlag(F16);
11515  setFlag(WritesEXEC);
11516  } // Inst_VOPC__V_CMPX_NGT_F16
11517 
11519  {
11520  } // ~Inst_VOPC__V_CMPX_NGT_F16
11521 
11522  // --- description from .arch file ---
11523  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
11524  void
11526  {
11528  } // execute
11529  // --- Inst_VOPC__V_CMPX_NLE_F16 class methods ---
11530 
11532  : Inst_VOPC(iFmt, "v_cmpx_nle_f16")
11533  {
11534  setFlag(ALU);
11535  setFlag(F16);
11536  setFlag(WritesEXEC);
11537  } // Inst_VOPC__V_CMPX_NLE_F16
11538 
11540  {
11541  } // ~Inst_VOPC__V_CMPX_NLE_F16
11542 
11543  // --- description from .arch file ---
11544  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
11545  void
11547  {
11549  } // execute
11550  // --- Inst_VOPC__V_CMPX_NEQ_F16 class methods ---
11551 
11553  : Inst_VOPC(iFmt, "v_cmpx_neq_f16")
11554  {
11555  setFlag(ALU);
11556  setFlag(F16);
11557  setFlag(WritesEXEC);
11558  } // Inst_VOPC__V_CMPX_NEQ_F16
11559 
11561  {
11562  } // ~Inst_VOPC__V_CMPX_NEQ_F16
11563 
11564  // --- description from .arch file ---
11565  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
11566  void
11568  {
11570  } // execute
11571  // --- Inst_VOPC__V_CMPX_NLT_F16 class methods ---
11572 
11574  : Inst_VOPC(iFmt, "v_cmpx_nlt_f16")
11575  {
11576  setFlag(ALU);
11577  setFlag(F16);
11578  setFlag(WritesEXEC);
11579  } // Inst_VOPC__V_CMPX_NLT_F16
11580 
11582  {
11583  } // ~Inst_VOPC__V_CMPX_NLT_F16
11584 
11585  // --- description from .arch file ---
11586  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
11587  void
11589  {
11591  } // execute
11592  // --- Inst_VOPC__V_CMPX_TRU_F16 class methods ---
11593 
11595  : Inst_VOPC(iFmt, "v_cmpx_tru_f16")
11596  {
11597  setFlag(ALU);
11598  setFlag(F16);
11599  setFlag(WritesEXEC);
11600  } // Inst_VOPC__V_CMPX_TRU_F16
11601 
11603  {
11604  } // ~Inst_VOPC__V_CMPX_TRU_F16
11605 
11606  // --- description from .arch file ---
11607  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
11608  void
11610  {
11612  } // execute
11613  // --- Inst_VOPC__V_CMP_F_F32 class methods ---
11614 
11616  : Inst_VOPC(iFmt, "v_cmp_f_f32")
11617  {
11618  setFlag(ALU);
11619  setFlag(F32);
11620  } // Inst_VOPC__V_CMP_F_F32
11621 
11623  {
11624  } // ~Inst_VOPC__V_CMP_F_F32
11625 
11626  // --- description from .arch file ---
11627  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
11628  void
11630  {
11631  Wavefront *wf = gpuDynInst->wavefront();
11632  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11633 
11634  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11635  if (wf->execMask(lane)) {
11636  vcc.setBit(lane, 0);
11637  }
11638  }
11639 
11640  vcc.write();
11641  } // execute
11642  // --- Inst_VOPC__V_CMP_LT_F32 class methods ---
11643 
11645  : Inst_VOPC(iFmt, "v_cmp_lt_f32")
11646  {
11647  setFlag(ALU);
11648  setFlag(F32);
11649  } // Inst_VOPC__V_CMP_LT_F32
11650 
11652  {
11653  } // ~Inst_VOPC__V_CMP_LT_F32
11654 
11655  // --- description from .arch file ---
11656  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
11657  void
11659  {
11660  Wavefront *wf = gpuDynInst->wavefront();
11661  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11662  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11663  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11664 
11665  src0.readSrc();
11666  src1.read();
11667 
11668  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11669  if (wf->execMask(lane)) {
11670  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
11671  }
11672  }
11673 
11674  vcc.write();
11675  } // execute
11676  // --- Inst_VOPC__V_CMP_EQ_F32 class methods ---
11677 
11679  : Inst_VOPC(iFmt, "v_cmp_eq_f32")
11680  {
11681  setFlag(ALU);
11682  setFlag(F32);
11683  } // Inst_VOPC__V_CMP_EQ_F32
11684 
11686  {
11687  } // ~Inst_VOPC__V_CMP_EQ_F32
11688 
11689  // --- description from .arch file ---
11690  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
11691  void
11693  {
11694  Wavefront *wf = gpuDynInst->wavefront();
11695  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11696  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11697  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11698 
11699  src0.readSrc();
11700  src1.read();
11701 
11702  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11703  if (wf->execMask(lane)) {
11704  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
11705  }
11706  }
11707 
11708  vcc.write();
11709  } // execute
11710  // --- Inst_VOPC__V_CMP_LE_F32 class methods ---
11711 
11713  : Inst_VOPC(iFmt, "v_cmp_le_f32")
11714  {
11715  setFlag(ALU);
11716  setFlag(F32);
11717  } // Inst_VOPC__V_CMP_LE_F32
11718 
11720  {
11721  } // ~Inst_VOPC__V_CMP_LE_F32
11722 
11723  // --- description from .arch file ---
11724  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
11725  void
11727  {
11728  Wavefront *wf = gpuDynInst->wavefront();
11729  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11730  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11731  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11732 
11733  src0.readSrc();
11734  src1.read();
11735 
11736  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11737  if (wf->execMask(lane)) {
11738  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
11739  }
11740  }
11741 
11742  vcc.write();
11743  } // execute
11744  // --- Inst_VOPC__V_CMP_GT_F32 class methods ---
11745 
11747  : Inst_VOPC(iFmt, "v_cmp_gt_f32")
11748  {
11749  setFlag(ALU);
11750  setFlag(F32);
11751  } // Inst_VOPC__V_CMP_GT_F32
11752 
11754  {
11755  } // ~Inst_VOPC__V_CMP_GT_F32
11756 
11757  // --- description from .arch file ---
11758  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
11759  void
11761  {
11762  Wavefront *wf = gpuDynInst->wavefront();
11763  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11764  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11765  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11766 
11767  src0.readSrc();
11768  src1.read();
11769 
11770  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11771  if (wf->execMask(lane)) {
11772  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
11773  }
11774  }
11775 
11776  vcc.write();
11777  } // execute
11778  // --- Inst_VOPC__V_CMP_LG_F32 class methods ---
11779 
11781  : Inst_VOPC(iFmt, "v_cmp_lg_f32")
11782  {
11783  setFlag(ALU);
11784  setFlag(F32);
11785  } // Inst_VOPC__V_CMP_LG_F32
11786 
11788  {
11789  } // ~Inst_VOPC__V_CMP_LG_F32
11790 
11791  // --- description from .arch file ---
11792  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
11793  void
11795  {
11796  Wavefront *wf = gpuDynInst->wavefront();
11797  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11798  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11799  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11800 
11801  src0.readSrc();
11802  src1.read();
11803 
11804  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11805  if (wf->execMask(lane)) {
11806  vcc.setBit(lane, (src0[lane] < src1[lane]
11807  || src0[lane] > src1[lane]) ? 1 : 0);
11808  }
11809  }
11810 
11811  vcc.write();
11812  } // execute
11813  // --- Inst_VOPC__V_CMP_GE_F32 class methods ---
11814 
11816  : Inst_VOPC(iFmt, "v_cmp_ge_f32")
11817  {
11818  setFlag(ALU);
11819  setFlag(F32);
11820  } // Inst_VOPC__V_CMP_GE_F32
11821 
11823  {
11824  } // ~Inst_VOPC__V_CMP_GE_F32
11825 
11826  // --- description from .arch file ---
11827  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
11828  void
11830  {
11831  Wavefront *wf = gpuDynInst->wavefront();
11832  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11833  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11834  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11835 
11836  src0.readSrc();
11837  src1.read();
11838 
11839  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11840  if (wf->execMask(lane)) {
11841  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
11842  }
11843  }
11844 
11845  vcc.write();
11846  } // execute
11847  // --- Inst_VOPC__V_CMP_O_F32 class methods ---
11848 
11850  : Inst_VOPC(iFmt, "v_cmp_o_f32")
11851  {
11852  setFlag(ALU);
11853  setFlag(F32);
11854  } // Inst_VOPC__V_CMP_O_F32
11855 
11857  {
11858  } // ~Inst_VOPC__V_CMP_O_F32
11859 
11860  // --- description from .arch file ---
11861  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
11862  void
11864  {
11865  Wavefront *wf = gpuDynInst->wavefront();
11866  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11867  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11868  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11869 
11870  src0.readSrc();
11871  src1.read();
11872 
11873  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11874  if (wf->execMask(lane)) {
11875  vcc.setBit(lane, (!std::isnan(src0[lane])
11876  && !std::isnan(src1[lane])) ? 1 : 0);
11877  }
11878  }
11879 
11880  vcc.write();
11881  } // execute
11882  // --- Inst_VOPC__V_CMP_U_F32 class methods ---
11883 
11885  : Inst_VOPC(iFmt, "v_cmp_u_f32")
11886  {
11887  setFlag(ALU);
11888  setFlag(F32);
11889  } // Inst_VOPC__V_CMP_U_F32
11890 
11892  {
11893  } // ~Inst_VOPC__V_CMP_U_F32
11894 
11895  // --- description from .arch file ---
11896  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
11897  void
11899  {
11900  Wavefront *wf = gpuDynInst->wavefront();
11901  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11902  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11903  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11904 
11905  src0.readSrc();
11906  src1.read();
11907 
11908  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11909  if (wf->execMask(lane)) {
11910  vcc.setBit(lane, (std::isnan(src0[lane])
11911  || std::isnan(src1[lane])) ? 1 : 0);
11912  }
11913  }
11914 
11915  vcc.write();
11916  } // execute
11917  // --- Inst_VOPC__V_CMP_NGE_F32 class methods ---
11918 
11920  : Inst_VOPC(iFmt, "v_cmp_nge_f32")
11921  {
11922  setFlag(ALU);
11923  setFlag(F32);
11924  } // Inst_VOPC__V_CMP_NGE_F32
11925 
11927  {
11928  } // ~Inst_VOPC__V_CMP_NGE_F32
11929 
11930  // --- description from .arch file ---
11931  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
11932  void
11934  {
11935  Wavefront *wf = gpuDynInst->wavefront();
11936  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11937  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11938  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11939 
11940  src0.readSrc();
11941  src1.read();
11942 
11943  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11944  if (wf->execMask(lane)) {
11945  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
11946  }
11947  }
11948 
11949  vcc.write();
11950  } // execute
11951  // --- Inst_VOPC__V_CMP_NLG_F32 class methods ---
11952 
11954  : Inst_VOPC(iFmt, "v_cmp_nlg_f32")
11955  {
11956  setFlag(ALU);
11957  setFlag(F32);
11958  } // Inst_VOPC__V_CMP_NLG_F32
11959 
11961  {
11962  } // ~Inst_VOPC__V_CMP_NLG_F32
11963 
11964  // --- description from .arch file ---
11965  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
11966  void
11968  {
11969  Wavefront *wf = gpuDynInst->wavefront();
11970  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11971  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11972  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11973 
11974  src0.readSrc();
11975  src1.read();
11976 
11977  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11978  if (wf->execMask(lane)) {
11979  vcc.setBit(lane, !(src0[lane] < src1[lane]
11980  || src0[lane] > src1[lane]) ? 1 : 0);
11981  }
11982  }
11983 
11984  vcc.write();
11985  } // execute
11986  // --- Inst_VOPC__V_CMP_NGT_F32 class methods ---
11987 
11989  : Inst_VOPC(iFmt, "v_cmp_ngt_f32")
11990  {
11991  setFlag(ALU);
11992  setFlag(F32);
11993  } // Inst_VOPC__V_CMP_NGT_F32
11994 
11996  {
11997  } // ~Inst_VOPC__V_CMP_NGT_F32
11998 
11999  // --- description from .arch file ---
12000  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
12001  void
12003  {
12004  Wavefront *wf = gpuDynInst->wavefront();
12005  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12006  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12007  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12008 
12009  src0.readSrc();
12010  src1.read();
12011 
12012  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12013  if (wf->execMask(lane)) {
12014  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
12015  }
12016  }
12017 
12018  vcc.write();
12019  } // execute
12020  // --- Inst_VOPC__V_CMP_NLE_F32 class methods ---
12021 
12023  : Inst_VOPC(iFmt, "v_cmp_nle_f32")
12024  {
12025  setFlag(ALU);
12026  setFlag(F32);
12027  } // Inst_VOPC__V_CMP_NLE_F32
12028 
12030  {
12031  } // ~Inst_VOPC__V_CMP_NLE_F32
12032 
12033  // --- description from .arch file ---
12034  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
12035  void
12037  {
12038  Wavefront *wf = gpuDynInst->wavefront();
12039  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12040  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12041  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12042 
12043  src0.readSrc();
12044  src1.read();
12045 
12046  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12047  if (wf->execMask(lane)) {
12048  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
12049  }
12050  }
12051 
12052  vcc.write();
12053  } // execute
12054  // --- Inst_VOPC__V_CMP_NEQ_F32 class methods ---
12055 
12057  : Inst_VOPC(iFmt, "v_cmp_neq_f32")
12058  {
12059  setFlag(ALU);
12060  setFlag(F32);
12061  } // Inst_VOPC__V_CMP_NEQ_F32
12062 
12064  {
12065  } // ~Inst_VOPC__V_CMP_NEQ_F32
12066 
12067  // --- description from .arch file ---
12068  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
12069  void
12071  {
12072  Wavefront *wf = gpuDynInst->wavefront();
12073  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12074  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12075  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12076 
12077  src0.readSrc();
12078  src1.read();
12079 
12080  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12081  if (wf->execMask(lane)) {
12082  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
12083  }
12084  }
12085 
12086  vcc.write();
12087  } // execute
12088  // --- Inst_VOPC__V_CMP_NLT_F32 class methods ---
12089 
12091  : Inst_VOPC(iFmt, "v_cmp_nlt_f32")
12092  {
12093  setFlag(ALU);
12094  setFlag(F32);
12095  } // Inst_VOPC__V_CMP_NLT_F32
12096 
12098  {
12099  } // ~Inst_VOPC__V_CMP_NLT_F32
12100 
12101  // --- description from .arch file ---
12102  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
12103  void
12105  {
12106  Wavefront *wf = gpuDynInst->wavefront();
12107  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12108  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12109  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12110 
12111  src0.readSrc();
12112  src1.read();
12113 
12114  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12115  if (wf->execMask(lane)) {
12116  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
12117  }
12118  }
12119 
12120  vcc.write();
12121  } // execute
12122  // --- Inst_VOPC__V_CMP_TRU_F32 class methods ---
12123 
12125  : Inst_VOPC(iFmt, "v_cmp_tru_f32")
12126  {
12127  setFlag(ALU);
12128  setFlag(F32);
12129  } // Inst_VOPC__V_CMP_TRU_F32
12130 
12132  {
12133  } // ~Inst_VOPC__V_CMP_TRU_F32
12134 
12135  // --- description from .arch file ---
12136  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
12137  void
12139  {
12140  Wavefront *wf = gpuDynInst->wavefront();
12141  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12142 
12143  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12144  if (wf->execMask(lane)) {
12145  vcc.setBit(lane, 1);
12146  }
12147  }
12148 
12149  vcc.write();
12150  } // execute
12151  // --- Inst_VOPC__V_CMPX_F_F32 class methods ---
12152 
12154  : Inst_VOPC(iFmt, "v_cmpx_f_f32")
12155  {
12156  setFlag(ALU);
12157  setFlag(F32);
12158  setFlag(WritesEXEC);
12159  } // Inst_VOPC__V_CMPX_F_F32
12160 
12162  {
12163  } // ~Inst_VOPC__V_CMPX_F_F32
12164 
12165  // --- description from .arch file ---
12166  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
12167  void
12169  {
12170  Wavefront *wf = gpuDynInst->wavefront();
12171  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12172 
12173  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12174  if (wf->execMask(lane)) {
12175  vcc.setBit(lane, 0);
12176  }
12177  }
12178 
12179  vcc.write();
12180  wf->execMask() = vcc.rawData();
12181  } // execute
12182  // --- Inst_VOPC__V_CMPX_LT_F32 class methods ---
12183 
12185  : Inst_VOPC(iFmt, "v_cmpx_lt_f32")
12186  {
12187  setFlag(ALU);
12188  setFlag(F32);
12189  setFlag(WritesEXEC);
12190  } // Inst_VOPC__V_CMPX_LT_F32
12191 
12193  {
12194  } // ~Inst_VOPC__V_CMPX_LT_F32
12195 
12196  // --- description from .arch file ---
12197  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
12198  void
12200  {
12201  Wavefront *wf = gpuDynInst->wavefront();
12202  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12203  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12204  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12205 
12206  src0.readSrc();
12207  src1.read();
12208 
12209  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12210  if (wf->execMask(lane)) {
12211  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
12212  }
12213  }
12214 
12215  vcc.write();
12216  wf->execMask() = vcc.rawData();
12217  } // execute
12218  // --- Inst_VOPC__V_CMPX_EQ_F32 class methods ---
12219 
12221  : Inst_VOPC(iFmt, "v_cmpx_eq_f32")
12222  {
12223  setFlag(ALU);
12224  setFlag(F32);
12225  setFlag(WritesEXEC);
12226  } // Inst_VOPC__V_CMPX_EQ_F32
12227 
12229  {
12230  } // ~Inst_VOPC__V_CMPX_EQ_F32
12231 
12232  // --- description from .arch file ---
12233  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
12234  void
12236  {
12237  Wavefront *wf = gpuDynInst->wavefront();
12238  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12239  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12240  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12241 
12242  src0.readSrc();
12243  src1.read();
12244 
12245  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12246  if (wf->execMask(lane)) {
12247  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
12248  }
12249  }
12250 
12251  vcc.write();
12252  wf->execMask() = vcc.rawData();
12253  } // execute
12254  // --- Inst_VOPC__V_CMPX_LE_F32 class methods ---
12255 
12257  : Inst_VOPC(iFmt, "v_cmpx_le_f32")
12258  {
12259  setFlag(ALU);
12260  setFlag(F32);
12261  setFlag(WritesEXEC);
12262  } // Inst_VOPC__V_CMPX_LE_F32
12263 
12265  {
12266  } // ~Inst_VOPC__V_CMPX_LE_F32
12267 
12268  // --- description from .arch file ---
12269  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
12270  void
12272  {
12273  Wavefront *wf = gpuDynInst->wavefront();
12274  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12275  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12276  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12277 
12278  src0.readSrc();
12279  src1.read();
12280 
12281  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12282  if (wf->execMask(lane)) {
12283  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
12284  }
12285  }
12286 
12287  vcc.write();
12288  wf->execMask() = vcc.rawData();
12289  } // execute
12290  // --- Inst_VOPC__V_CMPX_GT_F32 class methods ---
12291 
12293  : Inst_VOPC(iFmt, "v_cmpx_gt_f32")
12294  {
12295  setFlag(ALU);
12296  setFlag(F32);
12297  setFlag(WritesEXEC);
12298  } // Inst_VOPC__V_CMPX_GT_F32
12299 
12301  {
12302  } // ~Inst_VOPC__V_CMPX_GT_F32
12303 
12304  // --- description from .arch file ---
12305  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
12306  void
12308  {
12309  Wavefront *wf = gpuDynInst->wavefront();
12310  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12311  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12312  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12313 
12314  src0.readSrc();
12315  src1.read();
12316 
12317  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12318  if (wf->execMask(lane)) {
12319  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
12320  }
12321  }
12322 
12323  vcc.write();
12324  wf->execMask() = vcc.rawData();
12325  } // execute
12326  // --- Inst_VOPC__V_CMPX_LG_F32 class methods ---
12327 
12329  : Inst_VOPC(iFmt, "v_cmpx_lg_f32")
12330  {
12331  setFlag(ALU);
12332  setFlag(F32);
12333  setFlag(WritesEXEC);
12334  } // Inst_VOPC__V_CMPX_LG_F32
12335 
12337  {
12338  } // ~Inst_VOPC__V_CMPX_LG_F32
12339 
12340  // --- description from .arch file ---
12341  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
12342  void
12344  {
12345  Wavefront *wf = gpuDynInst->wavefront();
12346  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12347  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12348  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12349 
12350  src0.readSrc();
12351  src1.read();
12352 
12353  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12354  if (wf->execMask(lane)) {
12355  vcc.setBit(lane, (src0[lane] < src1[lane]
12356  || src0[lane] > src1[lane]) ? 1 : 0);
12357  }
12358  }
12359 
12360  vcc.write();
12361  wf->execMask() = vcc.rawData();
12362  } // execute
12363  // --- Inst_VOPC__V_CMPX_GE_F32 class methods ---
12364 
12366  : Inst_VOPC(iFmt, "v_cmpx_ge_f32")
12367  {
12368  setFlag(ALU);
12369  setFlag(F32);
12370  setFlag(WritesEXEC);
12371  } // Inst_VOPC__V_CMPX_GE_F32
12372 
12374  {
12375  } // ~Inst_VOPC__V_CMPX_GE_F32
12376 
12377  // --- description from .arch file ---
12378  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
12379  void
12381  {
12382  Wavefront *wf = gpuDynInst->wavefront();
12383  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12384  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12385  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12386 
12387  src0.readSrc();
12388  src1.read();
12389 
12390  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12391  if (wf->execMask(lane)) {
12392  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
12393  }
12394  }
12395 
12396  vcc.write();
12397  wf->execMask() = vcc.rawData();
12398  } // execute
12399  // --- Inst_VOPC__V_CMPX_O_F32 class methods ---
12400 
12402  : Inst_VOPC(iFmt, "v_cmpx_o_f32")
12403  {
12404  setFlag(ALU);
12405  setFlag(F32);
12406  setFlag(WritesEXEC);
12407  } // Inst_VOPC__V_CMPX_O_F32
12408 
12410  {
12411  } // ~Inst_VOPC__V_CMPX_O_F32
12412 
12413  // --- description from .arch file ---
12414  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
12415  // encoding.
12416  void
12418  {
12419  Wavefront *wf = gpuDynInst->wavefront();
12420  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12421  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12422  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12423 
12424  src0.readSrc();
12425  src1.read();
12426 
12427  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12428  if (wf->execMask(lane)) {
12429  vcc.setBit(lane, (!std::isnan(src0[lane])
12430  && !std::isnan(src1[lane])) ? 1 : 0);
12431  }
12432  }
12433 
12434  vcc.write();
12435  wf->execMask() = vcc.rawData();
12436  } // execute
12437  // --- Inst_VOPC__V_CMPX_U_F32 class methods ---
12438 
12440  : Inst_VOPC(iFmt, "v_cmpx_u_f32")
12441  {
12442  setFlag(ALU);
12443  setFlag(F32);
12444  setFlag(WritesEXEC);
12445  } // Inst_VOPC__V_CMPX_U_F32
12446 
12448  {
12449  } // ~Inst_VOPC__V_CMPX_U_F32
12450 
12451  // --- description from .arch file ---
12452  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
12453  // encoding.
12454  void
12456  {
12457  Wavefront *wf = gpuDynInst->wavefront();
12458  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12459  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12460  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12461 
12462  src0.readSrc();
12463  src1.read();
12464 
12465  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12466  if (wf->execMask(lane)) {
12467  vcc.setBit(lane, (std::isnan(src0[lane])
12468  || std::isnan(src1[lane])) ? 1 : 0);
12469  }
12470  }
12471 
12472  vcc.write();
12473  wf->execMask() = vcc.rawData();
12474  } // execute
12475  // --- Inst_VOPC__V_CMPX_NGE_F32 class methods ---
12476 
12478  : Inst_VOPC(iFmt, "v_cmpx_nge_f32")
12479  {
12480  setFlag(ALU);
12481  setFlag(F32);
12482  setFlag(WritesEXEC);
12483  } // Inst_VOPC__V_CMPX_NGE_F32
12484 
12486  {
12487  } // ~Inst_VOPC__V_CMPX_NGE_F32
12488 
12489  // --- description from .arch file ---
12490  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
12491  void
12493  {
12494  Wavefront *wf = gpuDynInst->wavefront();
12495  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12496  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12497  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12498 
12499  src0.readSrc();
12500  src1.read();
12501 
12502  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12503  if (wf->execMask(lane)) {
12504  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
12505  }
12506  }
12507 
12508  vcc.write();
12509  wf->execMask() = vcc.rawData();
12510  } // execute
12511  // --- Inst_VOPC__V_CMPX_NLG_F32 class methods ---
12512 
12514  : Inst_VOPC(iFmt, "v_cmpx_nlg_f32")
12515  {
12516  setFlag(ALU);
12517  setFlag(F32);
12518  setFlag(WritesEXEC);
12519  } // Inst_VOPC__V_CMPX_NLG_F32
12520 
12522  {
12523  } // ~Inst_VOPC__V_CMPX_NLG_F32
12524 
12525  // --- description from .arch file ---
12526  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
12527  void
12529  {
12530  Wavefront *wf = gpuDynInst->wavefront();
12531  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12532  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12533  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12534 
12535  src0.readSrc();
12536  src1.read();
12537 
12538  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12539  if (wf->execMask(lane)) {
12540  vcc.setBit(lane, !(src0[lane] < src1[lane]
12541  || src0[lane] > src1[lane]) ? 1 : 0);
12542  }
12543  }
12544 
12545  vcc.write();
12546  wf->execMask() = vcc.rawData();
12547  } // execute
12548  // --- Inst_VOPC__V_CMPX_NGT_F32 class methods ---
12549 
12551  : Inst_VOPC(iFmt, "v_cmpx_ngt_f32")
12552  {
12553  setFlag(ALU);
12554  setFlag(F32);
12555  setFlag(WritesEXEC);
12556  } // Inst_VOPC__V_CMPX_NGT_F32
12557 
12559  {
12560  } // ~Inst_VOPC__V_CMPX_NGT_F32
12561 
12562  // --- description from .arch file ---
12563  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
12564  void
12566  {
12567  Wavefront *wf = gpuDynInst->wavefront();
12568  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12569  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12570  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12571 
12572  src0.readSrc();
12573  src1.read();
12574 
12575  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12576  if (wf->execMask(lane)) {
12577  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
12578  }
12579  }
12580 
12581  vcc.write();
12582  wf->execMask() = vcc.rawData();
12583  } // execute
12584  // --- Inst_VOPC__V_CMPX_NLE_F32 class methods ---
12585 
12587  : Inst_VOPC(iFmt, "v_cmpx_nle_f32")
12588  {
12589  setFlag(ALU);
12590  setFlag(F32);
12591  setFlag(WritesEXEC);
12592  } // Inst_VOPC__V_CMPX_NLE_F32
12593 
12595  {
12596  } // ~Inst_VOPC__V_CMPX_NLE_F32
12597 
12598  // --- description from .arch file ---
12599  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
12600  void
12602  {
12603  Wavefront *wf = gpuDynInst->wavefront();
12604  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12605  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12606  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12607 
12608  src0.readSrc();
12609  src1.read();
12610 
12611  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12612  if (wf->execMask(lane)) {
12613  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
12614  }
12615  }
12616 
12617  vcc.write();
12618  wf->execMask() = vcc.rawData();
12619  } // execute
12620  // --- Inst_VOPC__V_CMPX_NEQ_F32 class methods ---
12621 
12623  : Inst_VOPC(iFmt, "v_cmpx_neq_f32")
12624  {
12625  setFlag(ALU);
12626  setFlag(F32);
12627  setFlag(WritesEXEC);
12628  } // Inst_VOPC__V_CMPX_NEQ_F32
12629 
12631  {
12632  } // ~Inst_VOPC__V_CMPX_NEQ_F32
12633 
12634  // --- description from .arch file ---
12635  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
12636  void
12638  {
12639  Wavefront *wf = gpuDynInst->wavefront();
12640  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12641  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12642  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12643 
12644  src0.readSrc();
12645  src1.read();
12646 
12647  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12648  if (wf->execMask(lane)) {
12649  vcc.setBit(lane, !(src0[lane] == src1[lane]) ? 1 : 0);
12650  }
12651  }
12652 
12653  vcc.write();
12654  wf->execMask() = vcc.rawData();
12655  } // execute
12656  // --- Inst_VOPC__V_CMPX_NLT_F32 class methods ---
12657 
12659  : Inst_VOPC(iFmt, "v_cmpx_nlt_f32")
12660  {
12661  setFlag(ALU);
12662  setFlag(F32);
12663  setFlag(WritesEXEC);
12664  } // Inst_VOPC__V_CMPX_NLT_F32
12665 
12667  {
12668  } // ~Inst_VOPC__V_CMPX_NLT_F32
12669 
12670  // --- description from .arch file ---
12671  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
12672  void
12674  {
12675  Wavefront *wf = gpuDynInst->wavefront();
12676  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
12677  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
12678  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12679 
12680  src0.readSrc();
12681  src1.read();
12682 
12683  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12684  if (wf->execMask(lane)) {
12685  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
12686  }
12687  }
12688 
12689  vcc.write();
12690  wf->execMask() = vcc.rawData();
12691  } // execute
12692  // --- Inst_VOPC__V_CMPX_TRU_F32 class methods ---
12693 
12695  : Inst_VOPC(iFmt, "v_cmpx_tru_f32")
12696  {
12697  setFlag(ALU);
12698  setFlag(F32);
12699  setFlag(WritesEXEC);
12700  } // Inst_VOPC__V_CMPX_TRU_F32
12701 
12703  {
12704  } // ~Inst_VOPC__V_CMPX_TRU_F32
12705 
12706  // --- description from .arch file ---
12707  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
12708  void
12710  {
12711  Wavefront *wf = gpuDynInst->wavefront();
12712  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12713 
12714  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12715  if (wf->execMask(lane)) {
12716  vcc.setBit(lane, 1);
12717  }
12718  }
12719 
12720  vcc.write();
12721  wf->execMask() = vcc.rawData();
12722  } // execute
12723  // --- Inst_VOPC__V_CMP_F_F64 class methods ---
12724 
12726  : Inst_VOPC(iFmt, "v_cmp_f_f64")
12727  {
12728  setFlag(ALU);
12729  setFlag(F64);
12730  } // Inst_VOPC__V_CMP_F_F64
12731 
12733  {
12734  } // ~Inst_VOPC__V_CMP_F_F64
12735 
12736  // --- description from .arch file ---
12737  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
12738  void
12740  {
12741  Wavefront *wf = gpuDynInst->wavefront();
12742  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12743 
12744  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12745  if (wf->execMask(lane)) {
12746  vcc.setBit(lane, 0);
12747  }
12748  }
12749 
12750  vcc.write();
12751  } // execute
12752  // --- Inst_VOPC__V_CMP_LT_F64 class methods ---
12753 
12755  : Inst_VOPC(iFmt, "v_cmp_lt_f64")
12756  {
12757  setFlag(ALU);
12758  setFlag(F64);
12759  } // Inst_VOPC__V_CMP_LT_F64
12760 
12762  {
12763  } // ~Inst_VOPC__V_CMP_LT_F64
12764 
12765  // --- description from .arch file ---
12766  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
12767  void
12769  {
12770  Wavefront *wf = gpuDynInst->wavefront();
12771  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12772  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12773  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12774 
12775  src0.readSrc();
12776  src1.read();
12777 
12778  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12779  if (wf->execMask(lane)) {
12780  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
12781  }
12782  }
12783 
12784  vcc.write();
12785  } // execute
12786  // --- Inst_VOPC__V_CMP_EQ_F64 class methods ---
12787 
12789  : Inst_VOPC(iFmt, "v_cmp_eq_f64")
12790  {
12791  setFlag(ALU);
12792  setFlag(F64);
12793  } // Inst_VOPC__V_CMP_EQ_F64
12794 
12796  {
12797  } // ~Inst_VOPC__V_CMP_EQ_F64
12798 
12799  // --- description from .arch file ---
12800  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
12801  void
12803  {
12804  Wavefront *wf = gpuDynInst->wavefront();
12805  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12806  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12807  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12808 
12809  src0.readSrc();
12810  src1.read();
12811 
12812  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12813  if (wf->execMask(lane)) {
12814  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
12815  }
12816  }
12817 
12818  vcc.write();
12819  } // execute
12820  // --- Inst_VOPC__V_CMP_LE_F64 class methods ---
12821 
12823  : Inst_VOPC(iFmt, "v_cmp_le_f64")
12824  {
12825  setFlag(ALU);
12826  setFlag(F64);
12827  } // Inst_VOPC__V_CMP_LE_F64
12828 
12830  {
12831  } // ~Inst_VOPC__V_CMP_LE_F64
12832 
12833  // --- description from .arch file ---
12834  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
12835  void
12837  {
12838  Wavefront *wf = gpuDynInst->wavefront();
12839  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12840  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12841  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12842 
12843  src0.readSrc();
12844  src1.read();
12845 
12846  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12847  if (wf->execMask(lane)) {
12848  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
12849  }
12850  }
12851 
12852  vcc.write();
12853  } // execute
12854  // --- Inst_VOPC__V_CMP_GT_F64 class methods ---
12855 
12857  : Inst_VOPC(iFmt, "v_cmp_gt_f64")
12858  {
12859  setFlag(ALU);
12860  setFlag(F64);
12861  } // Inst_VOPC__V_CMP_GT_F64
12862 
12864  {
12865  } // ~Inst_VOPC__V_CMP_GT_F64
12866 
12867  // --- description from .arch file ---
12868  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
12869  void
12871  {
12872  Wavefront *wf = gpuDynInst->wavefront();
12873  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12874  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12875  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12876 
12877  src0.readSrc();
12878  src1.read();
12879 
12880  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12881  if (wf->execMask(lane)) {
12882  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
12883  }
12884  }
12885 
12886  vcc.write();
12887  } // execute
12888  // --- Inst_VOPC__V_CMP_LG_F64 class methods ---
12889 
12891  : Inst_VOPC(iFmt, "v_cmp_lg_f64")
12892  {
12893  setFlag(ALU);
12894  setFlag(F64);
12895  } // Inst_VOPC__V_CMP_LG_F64
12896 
12898  {
12899  } // ~Inst_VOPC__V_CMP_LG_F64
12900 
12901  // --- description from .arch file ---
12902  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
12903  void
12905  {
12906  Wavefront *wf = gpuDynInst->wavefront();
12907  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12908  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12909  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12910 
12911  src0.readSrc();
12912  src1.read();
12913 
12914  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12915  if (wf->execMask(lane)) {
12916  vcc.setBit(lane, (src0[lane] < src1[lane]
12917  || src0[lane] > src1[lane]) ? 1 : 0);
12918  }
12919  }
12920 
12921  vcc.write();
12922  } // execute
12923  // --- Inst_VOPC__V_CMP_GE_F64 class methods ---
12924 
12926  : Inst_VOPC(iFmt, "v_cmp_ge_f64")
12927  {
12928  setFlag(ALU);
12929  setFlag(F64);
12930  } // Inst_VOPC__V_CMP_GE_F64
12931 
12933  {
12934  } // ~Inst_VOPC__V_CMP_GE_F64
12935 
12936  // --- description from .arch file ---
12937  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
12938  void
12940  {
12941  Wavefront *wf = gpuDynInst->wavefront();
12942  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12943  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12944  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12945 
12946  src0.readSrc();
12947  src1.read();
12948 
12949  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12950  if (wf->execMask(lane)) {
12951  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
12952  }
12953  }
12954 
12955  vcc.write();
12956  } // execute
12957  // --- Inst_VOPC__V_CMP_O_F64 class methods ---
12958 
12960  : Inst_VOPC(iFmt, "v_cmp_o_f64")
12961  {
12962  setFlag(ALU);
12963  setFlag(F64);
12964  } // Inst_VOPC__V_CMP_O_F64
12965 
12967  {
12968  } // ~Inst_VOPC__V_CMP_O_F64
12969 
12970  // --- description from .arch file ---
12971  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
12972  void
12974  {
12975  Wavefront *wf = gpuDynInst->wavefront();
12976  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12977  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12978  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12979 
12980  src0.readSrc();
12981  src1.read();
12982 
12983  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12984  if (wf->execMask(lane)) {
12985  vcc.setBit(lane, (!std::isnan(src0[lane])
12986  && !std::isnan(src1[lane])) ? 1 : 0);
12987  }
12988  }
12989 
12990  vcc.write();
12991  } // execute
12992  // --- Inst_VOPC__V_CMP_U_F64 class methods ---
12993 
12995  : Inst_VOPC(iFmt, "v_cmp_u_f64")
12996  {
12997  setFlag(ALU);
12998  setFlag(F64);
12999  } // Inst_VOPC__V_CMP_U_F64
13000 
13002  {
13003  } // ~Inst_VOPC__V_CMP_U_F64
13004 
13005  // --- description from .arch file ---
13006  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
13007  void
13009  {
13010  Wavefront *wf = gpuDynInst->wavefront();
13011  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13012  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13013  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13014 
13015  src0.readSrc();
13016  src1.read();
13017 
13018  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13019  if (wf->execMask(lane)) {
13020  vcc.setBit(lane, (std::isnan(src0[lane])
13021  || std::isnan(src1[lane])) ? 1 : 0);
13022  }
13023  }
13024 
13025  vcc.write();
13026  } // execute
13027  // --- Inst_VOPC__V_CMP_NGE_F64 class methods ---
13028 
13030  : Inst_VOPC(iFmt, "v_cmp_nge_f64")
13031  {
13032  setFlag(ALU);
13033  setFlag(F64);
13034  } // Inst_VOPC__V_CMP_NGE_F64
13035 
13037  {
13038  } // ~Inst_VOPC__V_CMP_NGE_F64
13039 
13040  // --- description from .arch file ---
13041  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
13042  void
13044  {
13045  Wavefront *wf = gpuDynInst->wavefront();
13046  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13047  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13048  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13049 
13050  src0.readSrc();
13051  src1.read();
13052 
13053  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13054  if (wf->execMask(lane)) {
13055  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
13056  }
13057  }
13058 
13059  vcc.write();
13060  } // execute
13061  // --- Inst_VOPC__V_CMP_NLG_F64 class methods ---
13062 
13064  : Inst_VOPC(iFmt, "v_cmp_nlg_f64")
13065  {
13066  setFlag(ALU);
13067  setFlag(F64);
13068  } // Inst_VOPC__V_CMP_NLG_F64
13069 
13071  {
13072  } // ~Inst_VOPC__V_CMP_NLG_F64
13073 
13074  // --- description from .arch file ---
13075  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
13076  void
13078  {
13079  Wavefront *wf = gpuDynInst->wavefront();
13080  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13081  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13082  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13083 
13084  src0.readSrc();
13085  src1.read();
13086 
13087  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13088  if (wf->execMask(lane)) {
13089  vcc.setBit(lane, !(src0[lane] < src1[lane]
13090  || src0[lane] > src1[lane]) ? 1 : 0);
13091  }
13092  }
13093 
13094  vcc.write();
13095  } // execute
13096  // --- Inst_VOPC__V_CMP_NGT_F64 class methods ---
13097 
13099  : Inst_VOPC(iFmt, "v_cmp_ngt_f64")
13100  {
13101  setFlag(ALU);
13102  setFlag(F64);
13103  } // Inst_VOPC__V_CMP_NGT_F64
13104 
13106  {
13107  } // ~Inst_VOPC__V_CMP_NGT_F64
13108 
13109  // --- description from .arch file ---
13110  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
13111  void
13113  {
13114  Wavefront *wf = gpuDynInst->wavefront();
13115  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13116  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13117  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13118 
13119  src0.readSrc();
13120  src1.read();
13121 
13122  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13123  if (wf->execMask(lane)) {
13124  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
13125  }
13126  }
13127 
13128  vcc.write();
13129  } // execute
13130  // --- Inst_VOPC__V_CMP_NLE_F64 class methods ---
13131 
13133  : Inst_VOPC(iFmt, "v_cmp_nle_f64")
13134  {
13135  setFlag(ALU);
13136  setFlag(F64);
13137  } // Inst_VOPC__V_CMP_NLE_F64
13138 
13140  {
13141  } // ~Inst_VOPC__V_CMP_NLE_F64
13142 
13143  // --- description from .arch file ---
13144  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
13145  void
13147  {
13148  Wavefront *wf = gpuDynInst->wavefront();
13149  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13150  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13151  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13152 
13153  src0.readSrc();
13154  src1.read();
13155 
13156  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13157  if (wf->execMask(lane)) {
13158  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
13159  }
13160  }
13161 
13162  vcc.write();
13163  } // execute
13164  // --- Inst_VOPC__V_CMP_NEQ_F64 class methods ---
13165 
13167  : Inst_VOPC(iFmt, "v_cmp_neq_f64")
13168  {
13169  setFlag(ALU);
13170  setFlag(F64);
13171  } // Inst_VOPC__V_CMP_NEQ_F64
13172 
13174  {
13175  } // ~Inst_VOPC__V_CMP_NEQ_F64
13176 
13177  // --- description from .arch file ---
13178  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
13179  void
13181  {
13182  Wavefront *wf = gpuDynInst->wavefront();
13183  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13184  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13185  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13186 
13187  src0.readSrc();
13188  src1.read();
13189 
13190  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13191  if (wf->execMask(lane)) {
13192  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13193  }
13194  }
13195 
13196  vcc.write();
13197  } // execute
13198  // --- Inst_VOPC__V_CMP_NLT_F64 class methods ---
13199 
13201  : Inst_VOPC(iFmt, "v_cmp_nlt_f64")
13202  {
13203  setFlag(ALU);
13204  setFlag(F64);
13205  } // Inst_VOPC__V_CMP_NLT_F64
13206 
13208  {
13209  } // ~Inst_VOPC__V_CMP_NLT_F64
13210 
13211  // --- description from .arch file ---
13212  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
13213  void
13215  {
13216  Wavefront *wf = gpuDynInst->wavefront();
13217  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13218  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13219  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13220 
13221  src0.readSrc();
13222  src1.read();
13223 
13224  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13225  if (wf->execMask(lane)) {
13226  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
13227  }
13228  }
13229 
13230  vcc.write();
13231  } // execute
13232  // --- Inst_VOPC__V_CMP_TRU_F64 class methods ---
13233 
13235  : Inst_VOPC(iFmt, "v_cmp_tru_f64")
13236  {
13237  setFlag(ALU);
13238  setFlag(F64);
13239  } // Inst_VOPC__V_CMP_TRU_F64
13240 
13242  {
13243  } // ~Inst_VOPC__V_CMP_TRU_F64
13244 
13245  // --- description from .arch file ---
13246  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
13247  void
13249  {
13250  Wavefront *wf = gpuDynInst->wavefront();
13251  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13252 
13253  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13254  if (wf->execMask(lane)) {
13255  vcc.setBit(lane, 1);
13256  }
13257  }
13258 
13259  vcc.write();
13260  } // execute
13261  // --- Inst_VOPC__V_CMPX_F_F64 class methods ---
13262 
13264  : Inst_VOPC(iFmt, "v_cmpx_f_f64")
13265  {
13266  setFlag(ALU);
13267  setFlag(F64);
13268  setFlag(WritesEXEC);
13269  } // Inst_VOPC__V_CMPX_F_F64
13270 
13272  {
13273  } // ~Inst_VOPC__V_CMPX_F_F64
13274 
13275  // --- description from .arch file ---
13276  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
13277  void
13279  {
13280  Wavefront *wf = gpuDynInst->wavefront();
13281  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13282 
13283  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13284  if (wf->execMask(lane)) {
13285  vcc.setBit(lane, 0);
13286  }
13287  }
13288 
13289  vcc.write();
13290  wf->execMask() = vcc.rawData();
13291  } // execute
13292  // --- Inst_VOPC__V_CMPX_LT_F64 class methods ---
13293 
13295  : Inst_VOPC(iFmt, "v_cmpx_lt_f64")
13296  {
13297  setFlag(ALU);
13298  setFlag(F64);
13299  setFlag(WritesEXEC);
13300  } // Inst_VOPC__V_CMPX_LT_F64
13301 
13303  {
13304  } // ~Inst_VOPC__V_CMPX_LT_F64
13305 
13306  // --- description from .arch file ---
13307  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13308  void
13310  {
13311  Wavefront *wf = gpuDynInst->wavefront();
13312  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13313  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13314  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13315 
13316  src0.readSrc();
13317  src1.read();
13318 
13319  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13320  if (wf->execMask(lane)) {
13321  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13322  }
13323  }
13324 
13325  vcc.write();
13326  wf->execMask() = vcc.rawData();
13327  } // execute
13328  // --- Inst_VOPC__V_CMPX_EQ_F64 class methods ---
13329 
13331  : Inst_VOPC(iFmt, "v_cmpx_eq_f64")
13332  {
13333  setFlag(ALU);
13334  setFlag(F64);
13335  setFlag(WritesEXEC);
13336  } // Inst_VOPC__V_CMPX_EQ_F64
13337 
13339  {
13340  } // ~Inst_VOPC__V_CMPX_EQ_F64
13341 
13342  // --- description from .arch file ---
13343  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13344  void
13346  {
13347  Wavefront *wf = gpuDynInst->wavefront();
13348  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13349  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13350  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13351 
13352  src0.readSrc();
13353  src1.read();
13354 
13355  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13356  if (wf->execMask(lane)) {
13357  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13358  }
13359  }
13360 
13361  vcc.write();
13362  wf->execMask() = vcc.rawData();
13363  } // execute
13364  // --- Inst_VOPC__V_CMPX_LE_F64 class methods ---
13365 
13367  : Inst_VOPC(iFmt, "v_cmpx_le_f64")
13368  {
13369  setFlag(ALU);
13370  setFlag(F64);
13371  setFlag(WritesEXEC);
13372  } // Inst_VOPC__V_CMPX_LE_F64
13373 
13375  {
13376  } // ~Inst_VOPC__V_CMPX_LE_F64
13377 
13378  // --- description from .arch file ---
13379  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13380  void
13382  {
13383  Wavefront *wf = gpuDynInst->wavefront();
13384  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13385  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13386  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13387 
13388  src0.readSrc();
13389  src1.read();
13390 
13391  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13392  if (wf->execMask(lane)) {
13393  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13394  }
13395  }
13396 
13397  wf->execMask() = vcc.rawData();
13398  vcc.write();
13399  } // execute
13400  // --- Inst_VOPC__V_CMPX_GT_F64 class methods ---
13401 
13403  : Inst_VOPC(iFmt, "v_cmpx_gt_f64")
13404  {
13405  setFlag(ALU);
13406  setFlag(F64);
13407  setFlag(WritesEXEC);
13408  } // Inst_VOPC__V_CMPX_GT_F64
13409 
13411  {
13412  } // ~Inst_VOPC__V_CMPX_GT_F64
13413 
13414  // --- description from .arch file ---
13415  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13416  void
13418  {
13419  Wavefront *wf = gpuDynInst->wavefront();
13420  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13421  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13422  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13423 
13424  src0.readSrc();
13425  src1.read();
13426 
13427  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13428  if (wf->execMask(lane)) {
13429  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13430  }
13431  }
13432 
13433  wf->execMask() = vcc.rawData();
13434  vcc.write();
13435  } // execute
13436  // --- Inst_VOPC__V_CMPX_LG_F64 class methods ---
13437 
13439  : Inst_VOPC(iFmt, "v_cmpx_lg_f64")
13440  {
13441  setFlag(ALU);
13442  setFlag(F64);
13443  setFlag(WritesEXEC);
13444  } // Inst_VOPC__V_CMPX_LG_F64
13445 
13447  {
13448  } // ~Inst_VOPC__V_CMPX_LG_F64
13449 
13450  // --- description from .arch file ---
13451  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13452  void
13454  {
13455  Wavefront *wf = gpuDynInst->wavefront();
13456  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13457  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13458  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13459 
13460  src0.readSrc();
13461  src1.read();
13462 
13463  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13464  if (wf->execMask(lane)) {
13465  vcc.setBit(lane, (src0[lane] < src1[lane]
13466  || src0[lane] > src1[lane]) ? 1 : 0);
13467  }
13468  }
13469 
13470  wf->execMask() = vcc.rawData();
13471  vcc.write();
13472  } // execute
13473  // --- Inst_VOPC__V_CMPX_GE_F64 class methods ---
13474 
13476  : Inst_VOPC(iFmt, "v_cmpx_ge_f64")
13477  {
13478  setFlag(ALU);
13479  setFlag(F64);
13480  setFlag(WritesEXEC);
13481  } // Inst_VOPC__V_CMPX_GE_F64
13482 
13484  {
13485  } // ~Inst_VOPC__V_CMPX_GE_F64
13486 
13487  // --- description from .arch file ---
13488  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13489  void
13491  {
13492  Wavefront *wf = gpuDynInst->wavefront();
13493  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13494  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13495  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13496 
13497  src0.readSrc();
13498  src1.read();
13499 
13500  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13501  if (wf->execMask(lane)) {
13502  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13503  }
13504  }
13505 
13506  wf->execMask() = vcc.rawData();
13507  vcc.write();
13508  } // execute
13509  // --- Inst_VOPC__V_CMPX_O_F64 class methods ---
13510 
13512  : Inst_VOPC(iFmt, "v_cmpx_o_f64")
13513  {
13514  setFlag(ALU);
13515  setFlag(F64);
13516  setFlag(WritesEXEC);
13517  } // Inst_VOPC__V_CMPX_O_F64
13518 
13520  {
13521  } // ~Inst_VOPC__V_CMPX_O_F64
13522 
13523  // --- description from .arch file ---
13524  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
13525  // encoding.
13526  void
13528  {
13529  Wavefront *wf = gpuDynInst->wavefront();
13530  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13531  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13532  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13533 
13534  src0.readSrc();
13535  src1.read();
13536 
13537  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13538  if (wf->execMask(lane)) {
13539  vcc.setBit(lane, (!std::isnan(src0[lane])
13540  && !std::isnan(src1[lane])) ? 1 : 0);
13541  }
13542  }
13543 
13544  wf->execMask() = vcc.rawData();
13545  vcc.write();
13546  } // execute
13547  // --- Inst_VOPC__V_CMPX_U_F64 class methods ---
13548 
13550  : Inst_VOPC(iFmt, "v_cmpx_u_f64")
13551  {
13552  setFlag(ALU);
13553  setFlag(F64);
13554  setFlag(WritesEXEC);
13555  } // Inst_VOPC__V_CMPX_U_F64
13556 
13558  {
13559  } // ~Inst_VOPC__V_CMPX_U_F64
13560 
13561  // --- description from .arch file ---
13562  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
13563  // encoding.
13564  void
13566  {
13567  Wavefront *wf = gpuDynInst->wavefront();
13568  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13569  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13570  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13571 
13572  src0.readSrc();
13573  src1.read();
13574 
13575  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13576  if (wf->execMask(lane)) {
13577  vcc.setBit(lane, (std::isnan(src0[lane])
13578  || std::isnan(src1[lane])) ? 1 : 0);
13579  }
13580  }
13581 
13582  wf->execMask() = vcc.rawData();
13583  vcc.write();
13584  } // execute
13585  // --- Inst_VOPC__V_CMPX_NGE_F64 class methods ---
13586 
13588  : Inst_VOPC(iFmt, "v_cmpx_nge_f64")
13589  {
13590  setFlag(ALU);
13591  setFlag(F64);
13592  setFlag(WritesEXEC);
13593  } // Inst_VOPC__V_CMPX_NGE_F64
13594 
13596  {
13597  } // ~Inst_VOPC__V_CMPX_NGE_F64
13598 
13599  // --- description from .arch file ---
13600  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
13601  void
13603  {
13604  Wavefront *wf = gpuDynInst->wavefront();
13605  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13606  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13607  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13608 
13609  src0.readSrc();
13610  src1.read();
13611 
13612  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13613  if (wf->execMask(lane)) {
13614  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
13615  }
13616  }
13617 
13618  wf->execMask() = vcc.rawData();
13619  vcc.write();
13620  } // execute
13621  // --- Inst_VOPC__V_CMPX_NLG_F64 class methods ---
13622 
13624  : Inst_VOPC(iFmt, "v_cmpx_nlg_f64")
13625  {
13626  setFlag(ALU);
13627  setFlag(F64);
13628  setFlag(WritesEXEC);
13629  } // Inst_VOPC__V_CMPX_NLG_F64
13630 
13632  {
13633  } // ~Inst_VOPC__V_CMPX_NLG_F64
13634 
13635  // --- description from .arch file ---
13636  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
13637  void
13639  {
13640  Wavefront *wf = gpuDynInst->wavefront();
13641  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13642  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13643  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13644 
13645  src0.readSrc();
13646  src1.read();
13647 
13648  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13649  if (wf->execMask(lane)) {
13650  vcc.setBit(lane, !(src0[lane] < src1[lane]
13651  || src0[lane] > src1[lane]) ? 1 : 0);
13652  }
13653  }
13654 
13655  wf->execMask() = vcc.rawData();
13656  vcc.write();
13657  } // execute
13658  // --- Inst_VOPC__V_CMPX_NGT_F64 class methods ---
13659 
13661  : Inst_VOPC(iFmt, "v_cmpx_ngt_f64")
13662  {
13663  setFlag(ALU);
13664  setFlag(F64);
13665  setFlag(WritesEXEC);
13666  } // Inst_VOPC__V_CMPX_NGT_F64
13667 
13669  {
13670  } // ~Inst_VOPC__V_CMPX_NGT_F64
13671 
13672  // --- description from .arch file ---
13673  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
13674  void
13676  {
13677  Wavefront *wf = gpuDynInst->wavefront();
13678  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13679  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13680  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13681 
13682  src0.readSrc();
13683  src1.read();
13684 
13685  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13686  if (wf->execMask(lane)) {
13687  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
13688  }
13689  }
13690 
13691  wf->execMask() = vcc.rawData();
13692  vcc.write();
13693  } // execute
13694  // --- Inst_VOPC__V_CMPX_NLE_F64 class methods ---
13695 
13697  : Inst_VOPC(iFmt, "v_cmpx_nle_f64")
13698  {
13699  setFlag(ALU);
13700  setFlag(F64);
13701  setFlag(WritesEXEC);
13702  } // Inst_VOPC__V_CMPX_NLE_F64
13703 
13705  {
13706  } // ~Inst_VOPC__V_CMPX_NLE_F64
13707 
13708  // --- description from .arch file ---
13709  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
13710  void
13712  {
13713  Wavefront *wf = gpuDynInst->wavefront();
13714  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13715  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13716  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13717 
13718  src0.readSrc();
13719  src1.read();
13720 
13721  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13722  if (wf->execMask(lane)) {
13723  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
13724  }
13725  }
13726 
13727  wf->execMask() = vcc.rawData();
13728  vcc.write();
13729  } // execute
13730  // --- Inst_VOPC__V_CMPX_NEQ_F64 class methods ---
13731 
13733  : Inst_VOPC(iFmt, "v_cmpx_neq_f64")
13734  {
13735  setFlag(ALU);
13736  setFlag(F64);
13737  setFlag(WritesEXEC);
13738  } // Inst_VOPC__V_CMPX_NEQ_F64
13739 
13741  {
13742  } // ~Inst_VOPC__V_CMPX_NEQ_F64
13743 
13744  // --- description from .arch file ---
13745  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
13746  void
13748  {
13749  Wavefront *wf = gpuDynInst->wavefront();
13750  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13751  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13752  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13753 
13754  src0.readSrc();
13755  src1.read();
13756 
13757  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13758  if (wf->execMask(lane)) {
13759  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13760  }
13761  }
13762 
13763  wf->execMask() = vcc.rawData();
13764  vcc.write();
13765  } // execute
13766  // --- Inst_VOPC__V_CMPX_NLT_F64 class methods ---
13767 
13769  : Inst_VOPC(iFmt, "v_cmpx_nlt_f64")
13770  {
13771  setFlag(ALU);
13772  setFlag(F64);
13773  setFlag(WritesEXEC);
13774  } // Inst_VOPC__V_CMPX_NLT_F64
13775 
13777  {
13778  } // ~Inst_VOPC__V_CMPX_NLT_F64
13779 
13780  // --- description from .arch file ---
13781  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
13782  void
13784  {
13785  Wavefront *wf = gpuDynInst->wavefront();
13786  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
13787  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
13788  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13789 
13790  src0.readSrc();
13791  src1.read();
13792 
13793  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13794  if (wf->execMask(lane)) {
13795  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
13796  }
13797  }
13798 
13799  wf->execMask() = vcc.rawData();
13800  vcc.write();
13801  } // execute
13802  // --- Inst_VOPC__V_CMPX_TRU_F64 class methods ---
13803 
13805  : Inst_VOPC(iFmt, "v_cmpx_tru_f64")
13806  {
13807  setFlag(ALU);
13808  setFlag(F64);
13809  setFlag(WritesEXEC);
13810  } // Inst_VOPC__V_CMPX_TRU_F64
13811 
13813  {
13814  } // ~Inst_VOPC__V_CMPX_TRU_F64
13815 
13816  // --- description from .arch file ---
13817  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
13818  void
13820  {
13821  Wavefront *wf = gpuDynInst->wavefront();
13822  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13823 
13824  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13825  if (wf->execMask(lane)) {
13826  vcc.setBit(lane, 1);
13827  }
13828  }
13829 
13830  wf->execMask() = vcc.rawData();
13831  vcc.write();
13832  } // execute
13833  // --- Inst_VOPC__V_CMP_F_I16 class methods ---
13834 
13836  : Inst_VOPC(iFmt, "v_cmp_f_i16")
13837  {
13838  setFlag(ALU);
13839  } // Inst_VOPC__V_CMP_F_I16
13840 
13842  {
13843  } // ~Inst_VOPC__V_CMP_F_I16
13844 
13845  // --- description from .arch file ---
13846  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
13847  void
13849  {
13850  Wavefront *wf = gpuDynInst->wavefront();
13851  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13852 
13853  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13854  if (wf->execMask(lane)) {
13855  vcc.setBit(lane, 0);
13856  }
13857  }
13858 
13859  vcc.write();
13860  } // execute
13861  // --- Inst_VOPC__V_CMP_LT_I16 class methods ---
13862 
13864  : Inst_VOPC(iFmt, "v_cmp_lt_i16")
13865  {
13866  setFlag(ALU);
13867  } // Inst_VOPC__V_CMP_LT_I16
13868 
13870  {
13871  } // ~Inst_VOPC__V_CMP_LT_I16
13872 
13873  // --- description from .arch file ---
13874  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13875  void
13877  {
13878  Wavefront *wf = gpuDynInst->wavefront();
13879  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13880  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13881  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13882 
13883  src0.readSrc();
13884  src1.read();
13885 
13886  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13887  if (wf->execMask(lane)) {
13888  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13889  }
13890  }
13891 
13892  vcc.write();
13893  } // execute
13894  // --- Inst_VOPC__V_CMP_EQ_I16 class methods ---
13895 
13897  : Inst_VOPC(iFmt, "v_cmp_eq_i16")
13898  {
13899  setFlag(ALU);
13900  } // Inst_VOPC__V_CMP_EQ_I16
13901 
13903  {
13904  } // ~Inst_VOPC__V_CMP_EQ_I16
13905 
13906  // --- description from .arch file ---
13907  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13908  void
13910  {
13911  Wavefront *wf = gpuDynInst->wavefront();
13912  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13913  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13914  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13915 
13916  src0.readSrc();
13917  src1.read();
13918 
13919  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13920  if (wf->execMask(lane)) {
13921  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13922  }
13923  }
13924 
13925  vcc.write();
13926  } // execute
13927  // --- Inst_VOPC__V_CMP_LE_I16 class methods ---
13928 
13930  : Inst_VOPC(iFmt, "v_cmp_le_i16")
13931  {
13932  setFlag(ALU);
13933  } // Inst_VOPC__V_CMP_LE_I16
13934 
13936  {
13937  } // ~Inst_VOPC__V_CMP_LE_I16
13938 
13939  // --- description from .arch file ---
13940  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13941  void
13943  {
13944  Wavefront *wf = gpuDynInst->wavefront();
13945  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13946  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13947  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13948 
13949  src0.readSrc();
13950  src1.read();
13951 
13952  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13953  if (wf->execMask(lane)) {
13954  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13955  }
13956  }
13957 
13958  vcc.write();
13959  } // execute
13960  // --- Inst_VOPC__V_CMP_GT_I16 class methods ---
13961 
13963  : Inst_VOPC(iFmt, "v_cmp_gt_i16")
13964  {
13965  setFlag(ALU);
13966  } // Inst_VOPC__V_CMP_GT_I16
13967 
13969  {
13970  } // ~Inst_VOPC__V_CMP_GT_I16
13971 
13972  // --- description from .arch file ---
13973  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13974  void
13976  {
13977  Wavefront *wf = gpuDynInst->wavefront();
13978  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13979  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13980  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13981 
13982  src0.readSrc();
13983  src1.read();
13984 
13985  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13986  if (wf->execMask(lane)) {
13987  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13988  }
13989  }
13990 
13991  vcc.write();
13992  } // execute
13993  // --- Inst_VOPC__V_CMP_NE_I16 class methods ---
13994 
13996  : Inst_VOPC(iFmt, "v_cmp_ne_i16")
13997  {
13998  setFlag(ALU);
13999  } // Inst_VOPC__V_CMP_NE_I16
14000 
14002  {
14003  } // ~Inst_VOPC__V_CMP_NE_I16
14004 
14005  // --- description from .arch file ---
14006  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14007  void
14009  {
14010  Wavefront *wf = gpuDynInst->wavefront();
14011  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
14012  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
14013  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14014 
14015  src0.readSrc();
14016  src1.read();
14017 
14018  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14019  if (wf->execMask(lane)) {
14020  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14021  }
14022  }
14023 
14024  vcc.write();
14025  } // execute
14026  // --- Inst_VOPC__V_CMP_GE_I16 class methods ---
14027 
14029  : Inst_VOPC(iFmt, "v_cmp_ge_i16")
14030  {
14031  setFlag(ALU);
14032  } // Inst_VOPC__V_CMP_GE_I16
14033 
14035  {
14036  } // ~Inst_VOPC__V_CMP_GE_I16
14037 
14038  // --- description from .arch file ---
14039  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14040  void
14042  {
14043  Wavefront *wf = gpuDynInst->wavefront();
14044  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
14045  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
14046  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14047 
14048  src0.readSrc();
14049  src1.read();
14050 
14051  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14052  if (wf->execMask(lane)) {
14053  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14054  }
14055  }
14056 
14057  vcc.write();
14058  } // execute
14059  // --- Inst_VOPC__V_CMP_T_I16 class methods ---
14060 
14062  : Inst_VOPC(iFmt, "v_cmp_t_i16")
14063  {
14064  setFlag(ALU);
14065  } // Inst_VOPC__V_CMP_T_I16
14066 
14068  {
14069  } // ~Inst_VOPC__V_CMP_T_I16
14070 
14071  // --- description from .arch file ---
14072  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
14073  void
14075  {
14076  Wavefront *wf = gpuDynInst->wavefront();
14077  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14078 
14079  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14080  if (wf->execMask(lane)) {
14081  vcc.setBit(lane, 1);
14082  }
14083  }
14084 
14085  vcc.write();
14086  } // execute
14087  // --- Inst_VOPC__V_CMP_F_U16 class methods ---
14088 
14090  : Inst_VOPC(iFmt, "v_cmp_f_u16")
14091  {
14092  setFlag(ALU);
14093  } // Inst_VOPC__V_CMP_F_U16
14094 
14096  {
14097  } // ~Inst_VOPC__V_CMP_F_U16
14098 
14099  // --- description from .arch file ---
14100  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
14101  void
14103  {
14104  Wavefront *wf = gpuDynInst->wavefront();
14105  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14106 
14107  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14108  if (wf->execMask(lane)) {
14109  vcc.setBit(lane, 0);
14110  }
14111  }
14112 
14113  vcc.write();
14114  } // execute
14115  // --- Inst_VOPC__V_CMP_LT_U16 class methods ---
14116 
14118  : Inst_VOPC(iFmt, "v_cmp_lt_u16")
14119  {
14120  setFlag(ALU);
14121  } // Inst_VOPC__V_CMP_LT_U16
14122 
14124  {
14125  } // ~Inst_VOPC__V_CMP_LT_U16
14126 
14127  // --- description from .arch file ---
14128  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14129  void
14131  {
14132  Wavefront *wf = gpuDynInst->wavefront();
14133  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14134  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14135  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14136 
14137  src0.readSrc();
14138  src1.read();
14139 
14140  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14141  if (wf->execMask(lane)) {
14142  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14143  }
14144  }
14145 
14146  vcc.write();
14147  } // execute
14148  // --- Inst_VOPC__V_CMP_EQ_U16 class methods ---
14149 
14151  : Inst_VOPC(iFmt, "v_cmp_eq_u16")
14152  {
14153  setFlag(ALU);
14154  } // Inst_VOPC__V_CMP_EQ_U16
14155 
14157  {
14158  } // ~Inst_VOPC__V_CMP_EQ_U16
14159 
14160  // --- description from .arch file ---
14161  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14162  void
14164  {
14165  Wavefront *wf = gpuDynInst->wavefront();
14166  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14167  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14168  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14169 
14170  src0.readSrc();
14171  src1.read();
14172 
14173  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14174  if (wf->execMask(lane)) {
14175  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14176  }
14177  }
14178 
14179  vcc.write();
14180  } // execute
14181  // --- Inst_VOPC__V_CMP_LE_U16 class methods ---
14182 
14184  : Inst_VOPC(iFmt, "v_cmp_le_u16")
14185  {
14186  setFlag(ALU);
14187  } // Inst_VOPC__V_CMP_LE_U16
14188 
14190  {
14191  } // ~Inst_VOPC__V_CMP_LE_U16
14192 
14193  // --- description from .arch file ---
14194  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14195  void
14197  {
14198  Wavefront *wf = gpuDynInst->wavefront();
14199  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14200  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14201  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14202 
14203  src0.readSrc();
14204  src1.read();
14205 
14206  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14207  if (wf->execMask(lane)) {
14208  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14209  }
14210  }
14211 
14212  vcc.write();
14213  } // execute
14214  // --- Inst_VOPC__V_CMP_GT_U16 class methods ---
14215 
14217  : Inst_VOPC(iFmt, "v_cmp_gt_u16")
14218  {
14219  setFlag(ALU);
14220  } // Inst_VOPC__V_CMP_GT_U16
14221 
14223  {
14224  } // ~Inst_VOPC__V_CMP_GT_U16
14225 
14226  // --- description from .arch file ---
14227  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14228  void
14230  {
14231  Wavefront *wf = gpuDynInst->wavefront();
14232  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14233  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14234  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14235 
14236  src0.readSrc();
14237  src1.read();
14238 
14239  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14240  if (wf->execMask(lane)) {
14241  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14242  }
14243  }
14244 
14245  vcc.write();
14246  } // execute
14247  // --- Inst_VOPC__V_CMP_NE_U16 class methods ---
14248 
14250  : Inst_VOPC(iFmt, "v_cmp_ne_u16")
14251  {
14252  setFlag(ALU);
14253  } // Inst_VOPC__V_CMP_NE_U16
14254 
14256  {
14257  } // ~Inst_VOPC__V_CMP_NE_U16
14258 
14259  // --- description from .arch file ---
14260  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14261  void
14263  {
14264  Wavefront *wf = gpuDynInst->wavefront();
14265  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14266  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14267  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14268 
14269  src0.readSrc();
14270  src1.read();
14271 
14272  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14273  if (wf->execMask(lane)) {
14274  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14275  }
14276  }
14277 
14278  vcc.write();
14279  } // execute
14280  // --- Inst_VOPC__V_CMP_GE_U16 class methods ---
14281 
14283  : Inst_VOPC(iFmt, "v_cmp_ge_u16")
14284  {
14285  setFlag(ALU);
14286  } // Inst_VOPC__V_CMP_GE_U16
14287 
14289  {
14290  } // ~Inst_VOPC__V_CMP_GE_U16
14291 
14292  // --- description from .arch file ---
14293  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14294  void
14296  {
14297  Wavefront *wf = gpuDynInst->wavefront();
14298  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14299  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14300  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14301 
14302  src0.readSrc();
14303  src1.read();
14304 
14305  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14306  if (wf->execMask(lane)) {
14307  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14308  }
14309  }
14310 
14311  vcc.write();
14312  } // execute
14313  // --- Inst_VOPC__V_CMP_T_U16 class methods ---
14314 
14316  : Inst_VOPC(iFmt, "v_cmp_t_u16")
14317  {
14318  setFlag(ALU);
14319  } // Inst_VOPC__V_CMP_T_U16
14320 
14322  {
14323  } // ~Inst_VOPC__V_CMP_T_U16
14324 
14325  // --- description from .arch file ---
14326  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
14327  void
14329  {
14330  Wavefront *wf = gpuDynInst->wavefront();
14331  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14332 
14333  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14334  if (wf->execMask(lane)) {
14335  vcc.setBit(lane, 1);
14336  }
14337  }
14338 
14339  vcc.write();
14340  } // execute
14341  // --- Inst_VOPC__V_CMPX_F_I16 class methods ---
14342 
14344  : Inst_VOPC(iFmt, "v_cmpx_f_i16")
14345  {
14346  setFlag(ALU);
14347  setFlag(WritesEXEC);
14348  } // Inst_VOPC__V_CMPX_F_I16
14349 
14351  {
14352  } // ~Inst_VOPC__V_CMPX_F_I16
14353 
14354  // --- description from .arch file ---
14355  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
14356  void
14358  {
14359  Wavefront *wf = gpuDynInst->wavefront();
14360  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14361 
14362  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14363  if (wf->execMask(lane)) {
14364  vcc.setBit(lane, 0);
14365  }
14366  }
14367 
14368  wf->execMask() = vcc.rawData();
14369  vcc.write();
14370  } // execute
14371  // --- Inst_VOPC__V_CMPX_LT_I16 class methods ---
14372 
14374  : Inst_VOPC(iFmt, "v_cmpx_lt_i16")
14375  {
14376  setFlag(ALU);
14377  setFlag(WritesEXEC);
14378  } // Inst_VOPC__V_CMPX_LT_I16
14379 
14381  {
14382  } // ~Inst_VOPC__V_CMPX_LT_I16
14383 
14384  // --- description from .arch file ---
14385  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14386  void
14388  {
14389  Wavefront *wf = gpuDynInst->wavefront();
14390  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
14391  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
14392  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14393 
14394  src0.readSrc();
14395  src1.read();
14396 
14397  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14398  if (wf->execMask(lane)) {
14399  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14400  }
14401  }
14402 
14403  wf->execMask() = vcc.rawData();
14404  vcc.write();
14405  } // execute
14406  // --- Inst_VOPC__V_CMPX_EQ_I16 class methods ---
14407 
14409  : Inst_VOPC(iFmt, "v_cmpx_eq_i16")
14410  {
14411  setFlag(ALU);
14412  setFlag(WritesEXEC);
14413  } // Inst_VOPC__V_CMPX_EQ_I16
14414 
14416  {
14417  } // ~Inst_VOPC__V_CMPX_EQ_I16
14418 
14419  // --- description from .arch file ---
14420  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14421  void
14423  {
14424  Wavefront *wf = gpuDynInst->wavefront();
14425  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
14426  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
14427  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14428 
14429  src0.readSrc();
14430  src1.read();
14431 
14432  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14433  if (wf->execMask(lane)) {
14434  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14435  }
14436  }
14437 
14438  wf->execMask() = vcc.rawData();
14439  vcc.write();
14440  } // execute
14441  // --- Inst_VOPC__V_CMPX_LE_I16 class methods ---
14442 
14444  : Inst_VOPC(iFmt, "v_cmpx_le_i16")
14445  {
14446  setFlag(ALU);
14447  setFlag(WritesEXEC);
14448  } // Inst_VOPC__V_CMPX_LE_I16
14449 
14451  {
14452  } // ~Inst_VOPC__V_CMPX_LE_I16
14453 
14454  // --- description from .arch file ---
14455  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14456  void
14458  {
14459  Wavefront *wf = gpuDynInst->wavefront();
14460  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
14461  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
14462  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14463 
14464  src0.readSrc();
14465  src1.read();
14466 
14467  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14468  if (wf->execMask(lane)) {
14469  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14470  }
14471  }
14472 
14473  wf->execMask() = vcc.rawData();
14474  vcc.write();
14475  } // execute
14476  // --- Inst_VOPC__V_CMPX_GT_I16 class methods ---
14477 
14479  : Inst_VOPC(iFmt, "v_cmpx_gt_i16")
14480  {
14481  setFlag(ALU);
14482  setFlag(WritesEXEC);
14483  } // Inst_VOPC__V_CMPX_GT_I16
14484 
14486  {
14487  } // ~Inst_VOPC__V_CMPX_GT_I16
14488 
14489  // --- description from .arch file ---
14490  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14491  void
14493  {
14494  Wavefront *wf = gpuDynInst->wavefront();
14495  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
14496  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
14497  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14498 
14499  src0.readSrc();
14500  src1.read();
14501 
14502  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14503  if (wf->execMask(lane)) {
14504  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14505  }
14506  }
14507 
14508  wf->execMask() = vcc.rawData();
14509  vcc.write();
14510  } // execute
14511  // --- Inst_VOPC__V_CMPX_NE_I16 class methods ---
14512 
14514  : Inst_VOPC(iFmt, "v_cmpx_ne_i16")
14515  {
14516  setFlag(ALU);
14517  setFlag(WritesEXEC);
14518  } // Inst_VOPC__V_CMPX_NE_I16
14519 
14521  {
14522  } // ~Inst_VOPC__V_CMPX_NE_I16
14523 
14524  // --- description from .arch file ---
14525  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14526  void
14528  {
14529  Wavefront *wf = gpuDynInst->wavefront();
14530  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
14531  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
14532  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14533 
14534  src0.readSrc();
14535  src1.read();
14536 
14537  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14538  if (wf->execMask(lane)) {
14539  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14540  }
14541  }
14542 
14543  wf->execMask() = vcc.rawData();
14544  vcc.write();
14545  } // execute
14546  // --- Inst_VOPC__V_CMPX_GE_I16 class methods ---
14547 
14549  : Inst_VOPC(iFmt, "v_cmpx_ge_i16")
14550  {
14551  setFlag(ALU);
14552  setFlag(WritesEXEC);
14553  } // Inst_VOPC__V_CMPX_GE_I16
14554 
14556  {
14557  } // ~Inst_VOPC__V_CMPX_GE_I16
14558 
14559  // --- description from .arch file ---
14560  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14561  void
14563  {
14564  Wavefront *wf = gpuDynInst->wavefront();
14565  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
14566  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
14567  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14568 
14569  src0.readSrc();
14570  src1.read();
14571 
14572  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14573  if (wf->execMask(lane)) {
14574  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14575  }
14576  }
14577 
14578  wf->execMask() = vcc.rawData();
14579  vcc.write();
14580  } // execute
14581  // --- Inst_VOPC__V_CMPX_T_I16 class methods ---
14582 
14584  : Inst_VOPC(iFmt, "v_cmpx_t_i16")
14585  {
14586  setFlag(ALU);
14587  setFlag(WritesEXEC);
14588  } // Inst_VOPC__V_CMPX_T_I16
14589 
14591  {
14592  } // ~Inst_VOPC__V_CMPX_T_I16
14593 
14594  // --- description from .arch file ---
14595  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
14596  void
14598  {
14599  Wavefront *wf = gpuDynInst->wavefront();
14600  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14601 
14602  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14603  if (wf->execMask(lane)) {
14604  vcc.setBit(lane, 1);
14605  }
14606  }
14607 
14608  wf->execMask() = vcc.rawData();
14609  vcc.write();
14610  } // execute
14611  // --- Inst_VOPC__V_CMPX_F_U16 class methods ---
14612 
14614  : Inst_VOPC(iFmt, "v_cmpx_f_u16")
14615  {
14616  setFlag(ALU);
14617  setFlag(WritesEXEC);
14618  } // Inst_VOPC__V_CMPX_F_U16
14619 
14621  {
14622  } // ~Inst_VOPC__V_CMPX_F_U16
14623 
14624  // --- description from .arch file ---
14625  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
14626  void
14628  {
14629  Wavefront *wf = gpuDynInst->wavefront();
14630  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14631 
14632  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14633  if (wf->execMask(lane)) {
14634  vcc.setBit(lane, 0);
14635  }
14636  }
14637 
14638  wf->execMask() = vcc.rawData();
14639  vcc.write();
14640  } // execute
14641  // --- Inst_VOPC__V_CMPX_LT_U16 class methods ---
14642 
14644  : Inst_VOPC(iFmt, "v_cmpx_lt_u16")
14645  {
14646  setFlag(ALU);
14647  setFlag(WritesEXEC);
14648  } // Inst_VOPC__V_CMPX_LT_U16
14649 
14651  {
14652  } // ~Inst_VOPC__V_CMPX_LT_U16
14653 
14654  // --- description from .arch file ---
14655  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14656  void
14658  {
14659  Wavefront *wf = gpuDynInst->wavefront();
14660  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14661  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14662  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14663 
14664  src0.readSrc();
14665  src1.read();
14666 
14667  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14668  if (wf->execMask(lane)) {
14669  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14670  }
14671  }
14672 
14673  wf->execMask() = vcc.rawData();
14674  vcc.write();
14675  } // execute
14676  // --- Inst_VOPC__V_CMPX_EQ_U16 class methods ---
14677 
14679  : Inst_VOPC(iFmt, "v_cmpx_eq_u16")
14680  {
14681  setFlag(ALU);
14682  setFlag(WritesEXEC);
14683  } // Inst_VOPC__V_CMPX_EQ_U16
14684 
14686  {
14687  } // ~Inst_VOPC__V_CMPX_EQ_U16
14688 
14689  // --- description from .arch file ---
14690  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14691  void
14693  {
14694  Wavefront *wf = gpuDynInst->wavefront();
14695  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14696  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14697  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14698 
14699  src0.readSrc();
14700  src1.read();
14701 
14702  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14703  if (wf->execMask(lane)) {
14704  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14705  }
14706  }
14707 
14708  wf->execMask() = vcc.rawData();
14709  vcc.write();
14710  } // execute
14711  // --- Inst_VOPC__V_CMPX_LE_U16 class methods ---
14712 
14714  : Inst_VOPC(iFmt, "v_cmpx_le_u16")
14715  {
14716  setFlag(ALU);
14717  setFlag(WritesEXEC);
14718  } // Inst_VOPC__V_CMPX_LE_U16
14719 
14721  {
14722  } // ~Inst_VOPC__V_CMPX_LE_U16
14723 
14724  // --- description from .arch file ---
14725  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14726  void
14728  {
14729  Wavefront *wf = gpuDynInst->wavefront();
14730  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14731  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14732  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14733 
14734  src0.readSrc();
14735  src1.read();
14736 
14737  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14738  if (wf->execMask(lane)) {
14739  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14740  }
14741  }
14742 
14743  wf->execMask() = vcc.rawData();
14744  vcc.write();
14745  } // execute
14746  // --- Inst_VOPC__V_CMPX_GT_U16 class methods ---
14747 
14749  : Inst_VOPC(iFmt, "v_cmpx_gt_u16")
14750  {
14751  setFlag(ALU);
14752  setFlag(WritesEXEC);
14753  } // Inst_VOPC__V_CMPX_GT_U16
14754 
14756  {
14757  } // ~Inst_VOPC__V_CMPX_GT_U16
14758 
14759  // --- description from .arch file ---
14760  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14761  void
14763  {
14764  Wavefront *wf = gpuDynInst->wavefront();
14765  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14766  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14767  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14768 
14769  src0.readSrc();
14770  src1.read();
14771 
14772  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14773  if (wf->execMask(lane)) {
14774  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14775  }
14776  }
14777 
14778  wf->execMask() = vcc.rawData();
14779  vcc.write();
14780  } // execute
14781  // --- Inst_VOPC__V_CMPX_NE_U16 class methods ---
14782 
14784  : Inst_VOPC(iFmt, "v_cmpx_ne_u16")
14785  {
14786  setFlag(ALU);
14787  setFlag(WritesEXEC);
14788  } // Inst_VOPC__V_CMPX_NE_U16
14789 
14791  {
14792  } // ~Inst_VOPC__V_CMPX_NE_U16
14793 
14794  // --- description from .arch file ---
14795  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14796  void
14798  {
14799  Wavefront *wf = gpuDynInst->wavefront();
14800  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14801  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14802  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14803 
14804  src0.readSrc();
14805  src1.read();
14806 
14807  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14808  if (wf->execMask(lane)) {
14809  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14810  }
14811  }
14812 
14813  wf->execMask() = vcc.rawData();
14814  vcc.write();
14815  } // execute
14816  // --- Inst_VOPC__V_CMPX_GE_U16 class methods ---
14817 
14819  : Inst_VOPC(iFmt, "v_cmpx_ge_u16")
14820  {
14821  setFlag(ALU);
14822  setFlag(WritesEXEC);
14823  } // Inst_VOPC__V_CMPX_GE_U16
14824 
14826  {
14827  } // ~Inst_VOPC__V_CMPX_GE_U16
14828 
14829  // --- description from .arch file ---
14830  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14831  void
14833  {
14834  Wavefront *wf = gpuDynInst->wavefront();
14835  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
14836  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
14837  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14838 
14839  src0.readSrc();
14840  src1.read();
14841 
14842  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14843  if (wf->execMask(lane)) {
14844  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14845  }
14846  }
14847 
14848  wf->execMask() = vcc.rawData();
14849  vcc.write();
14850  } // execute
14851  // --- Inst_VOPC__V_CMPX_T_U16 class methods ---
14852 
14854  : Inst_VOPC(iFmt, "v_cmpx_t_u16")
14855  {
14856  setFlag(ALU);
14857  setFlag(WritesEXEC);
14858  } // Inst_VOPC__V_CMPX_T_U16
14859 
14861  {
14862  } // ~Inst_VOPC__V_CMPX_T_U16
14863 
14864  // --- description from .arch file ---
14865  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
14866  void
14868  {
14869  Wavefront *wf = gpuDynInst->wavefront();
14870  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14871 
14872  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14873  if (wf->execMask(lane)) {
14874  vcc.setBit(lane, 1);
14875  }
14876  }
14877 
14878  wf->execMask() = vcc.rawData();
14879  vcc.write();
14880  } // execute
14881  // --- Inst_VOPC__V_CMP_F_I32 class methods ---
14882 
14884  : Inst_VOPC(iFmt, "v_cmp_f_i32")
14885  {
14886  setFlag(ALU);
14887  } // Inst_VOPC__V_CMP_F_I32
14888 
14890  {
14891  } // ~Inst_VOPC__V_CMP_F_I32
14892 
14893  // --- description from .arch file ---
14894  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
14895  void
14897  {
14898  Wavefront *wf = gpuDynInst->wavefront();
14899  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14900 
14901  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14902  if (wf->execMask(lane)) {
14903  vcc.setBit(lane, 0);
14904  }
14905  }
14906 
14907  vcc.write();
14908  } // execute
14909  // --- Inst_VOPC__V_CMP_LT_I32 class methods ---
14910 
14912  : Inst_VOPC(iFmt, "v_cmp_lt_i32")
14913  {
14914  setFlag(ALU);
14915  } // Inst_VOPC__V_CMP_LT_I32
14916 
14918  {
14919  } // ~Inst_VOPC__V_CMP_LT_I32
14920 
14921  // --- description from .arch file ---
14922  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14923  void
14925  {
14926  Wavefront *wf = gpuDynInst->wavefront();
14927  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14928  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14929  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14930 
14931  src0.readSrc();
14932  src1.read();
14933 
14934  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14935  if (wf->execMask(lane)) {
14936  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14937  }
14938  }
14939 
14940  vcc.write();
14941  } // execute
14942  // --- Inst_VOPC__V_CMP_EQ_I32 class methods ---
14943 
14945  : Inst_VOPC(iFmt, "v_cmp_eq_i32")
14946  {
14947  setFlag(ALU);
14948  } // Inst_VOPC__V_CMP_EQ_I32
14949 
14951  {
14952  } // ~Inst_VOPC__V_CMP_EQ_I32
14953 
14954  // --- description from .arch file ---
14955  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14956  void
14958  {
14959  Wavefront *wf = gpuDynInst->wavefront();
14960  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14961  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14962  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14963 
14964  src0.readSrc();
14965  src1.read();
14966 
14967  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14968  if (wf->execMask(lane)) {
14969  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14970  }
14971  }
14972 
14973  vcc.write();
14974  } // execute
14975  // --- Inst_VOPC__V_CMP_LE_I32 class methods ---
14976 
14978  : Inst_VOPC(iFmt, "v_cmp_le_i32")
14979  {
14980  setFlag(ALU);
14981  } // Inst_VOPC__V_CMP_LE_I32
14982 
14984  {
14985  } // ~Inst_VOPC__V_CMP_LE_I32
14986 
14987  // --- description from .arch file ---
14988  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14989  void
14991  {
14992  Wavefront *wf = gpuDynInst->wavefront();
14993  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14994  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14995  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14996 
14997  src0.readSrc();
14998  src1.read();
14999 
15000  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15001  if (wf->execMask(lane)) {
15002  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
15003  }
15004  }
15005 
15006  vcc.write();
15007  } // execute
15008  // --- Inst_VOPC__V_CMP_GT_I32 class methods ---
15009 
15011  : Inst_VOPC(iFmt, "v_cmp_gt_i32")
15012  {
15013  setFlag(ALU);
15014  } // Inst_VOPC__V_CMP_GT_I32
15015 
15017  {
15018  } // ~Inst_VOPC__V_CMP_GT_I32
15019 
15020  // --- description from .arch file ---
15021  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
15022  void
15024  {
15025  Wavefront *wf = gpuDynInst->wavefront();
15026  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15027  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15028  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15029 
15030  src0.readSrc();
15031  src1.read();
15032 
15033  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15034  if (wf->execMask(lane)) {
15035  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
15036  }
15037  }
15038 
15039  vcc.write();
15040  } // execute
15041  // --- Inst_VOPC__V_CMP_NE_I32 class methods ---
15042 
15044  : Inst_VOPC(iFmt, "v_cmp_ne_i32")
15045  {
15046  setFlag(ALU);
15047  } // Inst_VOPC__V_CMP_NE_I32
15048 
15050  {
15051  } // ~Inst_VOPC__V_CMP_NE_I32
15052 
15053  // --- description from .arch file ---
15054  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
15055  void
15057  {
15058  Wavefront *wf = gpuDynInst->wavefront();
15059  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15060  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15061  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15062 
15063  src0.readSrc();
15064  src1.read();
15065 
15066  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15067  if (wf->execMask(lane)) {
15068  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
15069  }
15070  }
15071 
15072  vcc.write();
15073  } // execute
15074  // --- Inst_VOPC__V_CMP_GE_I32 class methods ---
15075 
15077  : Inst_VOPC(iFmt, "v_cmp_ge_i32")
15078  {
15079  setFlag(ALU);
15080  } // Inst_VOPC__V_CMP_GE_I32
15081 
15083  {
15084  } // ~Inst_VOPC__V_CMP_GE_I32
15085 
15086  // --- description from .arch file ---
15087  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
15088  void
15090  {
15091  Wavefront *wf = gpuDynInst->wavefront();
15092  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15093  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15094  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15095 
15096  src0.readSrc();
15097  src1.read();
15098 
15099  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15100  if (wf->execMask(lane)) {
15101  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
15102  }
15103  }
15104 
15105  vcc.write();
15106  } // execute
15107  // --- Inst_VOPC__V_CMP_T_I32 class methods ---
15108 
15110  : Inst_VOPC(iFmt, "v_cmp_t_i32")
15111  {
15112  setFlag(ALU);
15113  } // Inst_VOPC__V_CMP_T_I32
15114 
15116  {
15117  } // ~Inst_VOPC__V_CMP_T_I32
15118 
15119  // --- description from .arch file ---
15120  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
15121  void
15123  {
15124  Wavefront *wf = gpuDynInst->wavefront();
15125  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15126 
15127  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15128  if (wf->execMask(lane)) {
15129  vcc.setBit(lane, 1);
15130  }
15131  }
15132 
15133  vcc.write();
15134  } // execute
15135  // --- Inst_VOPC__V_CMP_F_U32 class methods ---
15136 
15138  : Inst_VOPC(iFmt, "v_cmp_f_u32")
15139  {
15140  setFlag(ALU);
15141  } // Inst_VOPC__V_CMP_F_U32
15142 
15144  {
15145  } // ~Inst_VOPC__V_CMP_F_U32
15146 
15147  // --- description from .arch file ---
15148  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
15149  void
15151  {
15152  Wavefront *wf = gpuDynInst->wavefront();
15153  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15154 
15155  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15156  if (wf->execMask(lane)) {
15157  vcc.setBit(lane, 0);
15158  }
15159  }
15160 
15161  vcc.write();
15162  } // execute
15163  // --- Inst_VOPC__V_CMP_LT_U32 class methods ---
15164 
15166  : Inst_VOPC(iFmt, "v_cmp_lt_u32")
15167  {
15168  setFlag(ALU);
15169  } // Inst_VOPC__V_CMP_LT_U32
15170 
15172  {
15173  } // ~Inst_VOPC__V_CMP_LT_U32
15174 
15175  // --- description from .arch file ---
15176  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
15177  void
15179  {
15180  Wavefront *wf = gpuDynInst->wavefront();
15181  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15182  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15183  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15184 
15185  src0.readSrc();
15186  src1.read();
15187 
15188  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15189  if (wf->execMask(lane)) {
15190  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
15191  }
15192  }
15193 
15194  vcc.write();
15195  } // execute
15196  // --- Inst_VOPC__V_CMP_EQ_U32 class methods ---
15197 
15199  : Inst_VOPC(iFmt, "v_cmp_eq_u32")
15200  {
15201  setFlag(ALU);
15202  } // Inst_VOPC__V_CMP_EQ_U32
15203 
15205  {
15206  } // ~Inst_VOPC__V_CMP_EQ_U32
15207 
15208  // --- description from .arch file ---
15209  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
15210  void
15212  {
15213  Wavefront *wf = gpuDynInst->wavefront();
15214  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15215  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15216  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15217 
15218  src0.readSrc();
15219  src1.read();
15220 
15221  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15222  if (wf->execMask(lane)) {
15223  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
15224  }
15225  }
15226 
15227  vcc.write();
15228  } // execute
15229  // --- Inst_VOPC__V_CMP_LE_U32 class methods ---
15230 
15232  : Inst_VOPC(iFmt, "v_cmp_le_u32")
15233  {
15234  setFlag(ALU);
15235  } // Inst_VOPC__V_CMP_LE_U32
15236 
15238  {
15239  } // ~Inst_VOPC__V_CMP_LE_U32
15240 
15241  // --- description from .arch file ---
15242  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
15243  void
15245  {
15246  Wavefront *wf = gpuDynInst->wavefront();
15247  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15248  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15249  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15250 
15251  src0.readSrc();
15252  src1.read();
15253 
15254  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15255  if (wf->execMask(lane)) {
15256  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
15257  }
15258  }
15259 
15260  vcc.write();
15261  } // execute
15262  // --- Inst_VOPC__V_CMP_GT_U32 class methods ---
15263 
15265  : Inst_VOPC(iFmt, "v_cmp_gt_u32")
15266  {
15267  setFlag(ALU);
15268  } // Inst_VOPC__V_CMP_GT_U32
15269 
15271  {
15272  } // ~Inst_VOPC__V_CMP_GT_U32
15273 
15274  // --- description from .arch file ---
15275  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
15276  void
15278  {
15279  Wavefront *wf = gpuDynInst->wavefront();
15280  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15281  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15282  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15283 
15284  src0.readSrc();
15285  src1.read();
15286 
15287  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15288  if (wf->execMask(lane)) {
15289  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
15290  }
15291  }
15292 
15293  vcc.write();
15294  } // execute
15295  // --- Inst_VOPC__V_CMP_NE_U32 class methods ---
15296 
15298  : Inst_VOPC(iFmt, "v_cmp_ne_u32")
15299  {
15300  setFlag(ALU);
15301  } // Inst_VOPC__V_CMP_NE_U32
15302 
15304  {
15305  } // ~Inst_VOPC__V_CMP_NE_U32
15306 
15307  // --- description from .arch file ---
15308  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
15309  void
15311  {
15312  Wavefront *wf = gpuDynInst->wavefront();
15313  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15314  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15315  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15316 
15317  src0.readSrc();
15318  src1.read();
15319 
15320  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15321  if (wf->execMask(lane)) {
15322  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
15323  }
15324  }
15325 
15326  vcc.write();
15327  } // execute
15328  // --- Inst_VOPC__V_CMP_GE_U32 class methods ---
15329 
15331  : Inst_VOPC(iFmt, "v_cmp_ge_u32")
15332  {
15333  setFlag(ALU);
15334  } // Inst_VOPC__V_CMP_GE_U32
15335 
15337  {
15338  } // ~Inst_VOPC__V_CMP_GE_U32
15339 
15340  // --- description from .arch file ---
15341  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
15342  void
15344  {
15345  Wavefront *wf = gpuDynInst->wavefront();
15346  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15347  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15348  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15349 
15350  src0.readSrc();
15351  src1.read();
15352 
15353  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15354  if (wf->execMask(lane)) {
15355  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
15356  }
15357  }
15358 
15359  vcc.write();
15360  } // execute
15361  // --- Inst_VOPC__V_CMP_T_U32 class methods ---
15362 
15364  : Inst_VOPC(iFmt, "v_cmp_t_u32")
15365  {
15366  setFlag(ALU);
15367  } // Inst_VOPC__V_CMP_T_U32
15368 
15370  {
15371  } // ~Inst_VOPC__V_CMP_T_U32
15372 
15373  // --- description from .arch file ---
15374  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
15375  void
15377  {
15378  Wavefront *wf = gpuDynInst->wavefront();
15379  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15380 
15381  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15382  if (wf->execMask(lane)) {
15383  vcc.setBit(lane, 1);
15384  }
15385  }
15386 
15387  vcc.write();
15388  } // execute
15389  // --- Inst_VOPC__V_CMPX_F_I32 class methods ---
15390 
15392  : Inst_VOPC(iFmt, "v_cmpx_f_i32")
15393  {
15394  setFlag(ALU);
15395  setFlag(WritesEXEC);
15396  } // Inst_VOPC__V_CMPX_F_I32
15397 
15399  {
15400  } // ~Inst_VOPC__V_CMPX_F_I32
15401 
15402  // --- description from .arch file ---
15403  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
15404  void
15406  {
15407  Wavefront *wf = gpuDynInst->wavefront();
15408  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15409 
15410  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15411  if (wf->execMask(lane)) {
15412  vcc.setBit(lane, 0);
15413  }
15414  }
15415 
15416  wf->execMask() = vcc.rawData();
15417  vcc.write();
15418  } // execute
15419  // --- Inst_VOPC__V_CMPX_LT_I32 class methods ---
15420 
15422  : Inst_VOPC(iFmt, "v_cmpx_lt_i32")
15423  {
15424  setFlag(ALU);
15425  setFlag(WritesEXEC);
15426  } // Inst_VOPC__V_CMPX_LT_I32
15427 
15429  {
15430  } // ~Inst_VOPC__V_CMPX_LT_I32
15431 
15432  // --- description from .arch file ---
15433  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
15434  void
15436  {
15437  Wavefront *wf = gpuDynInst->wavefront();
15438  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15439  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15440  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15441 
15442  src0.readSrc();
15443  src1.read();
15444 
15445  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15446  if (wf->execMask(lane)) {
15447  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
15448  }
15449  }
15450 
15451  wf->execMask() = vcc.rawData();
15452  vcc.write();
15453  } // execute
15454  // --- Inst_VOPC__V_CMPX_EQ_I32 class methods ---
15455 
15457  : Inst_VOPC(iFmt, "v_cmpx_eq_i32")
15458  {
15459  setFlag(ALU);
15460  setFlag(WritesEXEC);
15461  } // Inst_VOPC__V_CMPX_EQ_I32
15462 
15464  {
15465  } // ~Inst_VOPC__V_CMPX_EQ_I32
15466 
15467  // --- description from .arch file ---
15468  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
15469  void
15471  {
15472  Wavefront *wf = gpuDynInst->wavefront();
15473  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15474  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15475  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15476 
15477  src0.readSrc();
15478  src1.read();
15479 
15480  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15481  if (wf->execMask(lane)) {
15482  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
15483  }
15484  }
15485 
15486  wf->execMask() = vcc.rawData();
15487  vcc.write();
15488  } // execute
15489  // --- Inst_VOPC__V_CMPX_LE_I32 class methods ---
15490 
15492  : Inst_VOPC(iFmt, "v_cmpx_le_i32")
15493  {
15494  setFlag(ALU);
15495  setFlag(WritesEXEC);
15496  } // Inst_VOPC__V_CMPX_LE_I32
15497 
15499  {
15500  } // ~Inst_VOPC__V_CMPX_LE_I32
15501 
15502  // --- description from .arch file ---
15503  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
15504  void
15506  {
15507  Wavefront *wf = gpuDynInst->wavefront();
15508  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15509  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15510  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15511 
15512  src0.readSrc();
15513  src1.read();
15514 
15515  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15516  if (wf->execMask(lane)) {
15517  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
15518  }
15519  }
15520 
15521  wf->execMask() = vcc.rawData();
15522  vcc.write();
15523  } // execute
15524  // --- Inst_VOPC__V_CMPX_GT_I32 class methods ---
15525 
15527  : Inst_VOPC(iFmt, "v_cmpx_gt_i32")
15528  {
15529  setFlag(ALU);
15530  setFlag(WritesEXEC);
15531  } // Inst_VOPC__V_CMPX_GT_I32
15532 
15534  {
15535  } // ~Inst_VOPC__V_CMPX_GT_I32
15536 
15537  // --- description from .arch file ---
15538  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
15539  void
15541  {
15542  Wavefront *wf = gpuDynInst->wavefront();
15543  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15544  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15545  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15546 
15547  src0.readSrc();
15548  src1.read();
15549 
15550  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15551  if (wf->execMask(lane)) {
15552  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
15553  }
15554  }
15555 
15556  wf->execMask() = vcc.rawData();
15557  vcc.write();
15558  } // execute
15559  // --- Inst_VOPC__V_CMPX_NE_I32 class methods ---
15560 
15562  : Inst_VOPC(iFmt, "v_cmpx_ne_i32")
15563  {
15564  setFlag(ALU);
15565  setFlag(WritesEXEC);
15566  } // Inst_VOPC__V_CMPX_NE_I32
15567 
15569  {
15570  } // ~Inst_VOPC__V_CMPX_NE_I32
15571 
15572  // --- description from .arch file ---
15573  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
15574  void
15576  {
15577  Wavefront *wf = gpuDynInst->wavefront();
15578  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15579  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15580  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15581 
15582  src0.readSrc();
15583  src1.read();
15584 
15585  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15586  if (wf->execMask(lane)) {
15587  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
15588  }
15589  }
15590 
15591  wf->execMask() = vcc.rawData();
15592  vcc.write();
15593  } // execute
15594  // --- Inst_VOPC__V_CMPX_GE_I32 class methods ---
15595 
15597  : Inst_VOPC(iFmt, "v_cmpx_ge_i32")
15598  {
15599  setFlag(ALU);
15600  setFlag(WritesEXEC);
15601  } // Inst_VOPC__V_CMPX_GE_I32
15602 
15604  {
15605  } // ~Inst_VOPC__V_CMPX_GE_I32
15606 
15607  // --- description from .arch file ---
15608  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
15609  void
15611  {
15612  Wavefront *wf = gpuDynInst->wavefront();
15613  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
15614  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
15615  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15616 
15617  src0.readSrc();
15618  src1.read();
15619 
15620  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15621  if (wf->execMask(lane)) {
15622  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
15623  }
15624  }
15625 
15626  wf->execMask() = vcc.rawData();
15627  vcc.write();
15628  } // execute
15629  // --- Inst_VOPC__V_CMPX_T_I32 class methods ---
15630 
15632  : Inst_VOPC(iFmt, "v_cmpx_t_i32")
15633  {
15634  setFlag(ALU);
15635  setFlag(WritesEXEC);
15636  } // Inst_VOPC__V_CMPX_T_I32
15637 
15639  {
15640  } // ~Inst_VOPC__V_CMPX_T_I32
15641 
15642  // --- description from .arch file ---
15643  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
15644  void
15646  {
15647  Wavefront *wf = gpuDynInst->wavefront();
15648  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15649 
15650  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15651  if (wf->execMask(lane)) {
15652  vcc.setBit(lane, 1);
15653  }
15654  }
15655 
15656  wf->execMask() = vcc.rawData();
15657  vcc.write();
15658  } // execute
15659  // --- Inst_VOPC__V_CMPX_F_U32 class methods ---
15660 
15662  : Inst_VOPC(iFmt, "v_cmpx_f_u32")
15663  {
15664  setFlag(ALU);
15665  setFlag(WritesEXEC);
15666  } // Inst_VOPC__V_CMPX_F_U32
15667 
15669  {
15670  } // ~Inst_VOPC__V_CMPX_F_U32
15671 
15672  // --- description from .arch file ---
15673  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
15674  void
15676  {
15677  Wavefront *wf = gpuDynInst->wavefront();
15678  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15679 
15680  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15681  if (wf->execMask(lane)) {
15682  vcc.setBit(lane, 0);
15683  }
15684  }
15685 
15686  wf->execMask() = vcc.rawData();
15687  vcc.write();
15688  } // execute
15689  // --- Inst_VOPC__V_CMPX_LT_U32 class methods ---
15690 
15692  : Inst_VOPC(iFmt, "v_cmpx_lt_u32")
15693  {
15694  setFlag(ALU);
15695  setFlag(WritesEXEC);
15696  } // Inst_VOPC__V_CMPX_LT_U32
15697 
15699  {
15700  } // ~Inst_VOPC__V_CMPX_LT_U32
15701 
15702  // --- description from .arch file ---
15703  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
15704  void
15706  {
15707  Wavefront *wf = gpuDynInst->wavefront();
15708  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15709  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15710  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15711 
15712  src0.readSrc();
15713  src1.read();
15714 
15715  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15716  if (wf->execMask(lane)) {
15717  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
15718  }
15719  }
15720 
15721  wf->execMask() = vcc.rawData();
15722  vcc.write();
15723  } // execute
15724  // --- Inst_VOPC__V_CMPX_EQ_U32 class methods ---
15725 
15727  : Inst_VOPC(iFmt, "v_cmpx_eq_u32")
15728  {
15729  setFlag(ALU);
15730  setFlag(WritesEXEC);
15731  } // Inst_VOPC__V_CMPX_EQ_U32
15732 
15734  {
15735  } // ~Inst_VOPC__V_CMPX_EQ_U32
15736 
15737  // --- description from .arch file ---
15738  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
15739  void
15741  {
15742  Wavefront *wf = gpuDynInst->wavefront();
15743  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15744  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15745  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15746 
15747  src0.readSrc();
15748  src1.read();
15749 
15750  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15751  if (wf->execMask(lane)) {
15752  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
15753  }
15754  }
15755 
15756  wf->execMask() = vcc.rawData();
15757  vcc.write();
15758  } // execute
15759  // --- Inst_VOPC__V_CMPX_LE_U32 class methods ---
15760 
15762  : Inst_VOPC(iFmt, "v_cmpx_le_u32")
15763  {
15764  setFlag(ALU);
15765  setFlag(WritesEXEC);
15766  } // Inst_VOPC__V_CMPX_LE_U32
15767 
15769  {
15770  } // ~Inst_VOPC__V_CMPX_LE_U32
15771 
15772  // --- description from .arch file ---
15773  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
15774  void
15776  {
15777  Wavefront *wf = gpuDynInst->wavefront();
15778  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15779  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15780  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15781 
15782  src0.readSrc();
15783  src1.read();
15784 
15785  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15786  if (wf->execMask(lane)) {
15787  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
15788  }
15789  }
15790 
15791  wf->execMask() = vcc.rawData();
15792  vcc.write();
15793  } // execute
15794  // --- Inst_VOPC__V_CMPX_GT_U32 class methods ---
15795 
15797  : Inst_VOPC(iFmt, "v_cmpx_gt_u32")
15798  {
15799  setFlag(ALU);
15800  setFlag(WritesEXEC);
15801  } // Inst_VOPC__V_CMPX_GT_U32
15802 
15804  {
15805  } // ~Inst_VOPC__V_CMPX_GT_U32
15806 
15807  // --- description from .arch file ---
15808  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
15809  void
15811  {
15812  Wavefront *wf = gpuDynInst->wavefront();
15813  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15814  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15815  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15816 
15817  src0.readSrc();
15818  src1.read();
15819 
15820  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15821  if (wf->execMask(lane)) {
15822  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
15823  }
15824  }
15825 
15826  wf->execMask() = vcc.rawData();
15827  vcc.write();
15828  } // execute
15829  // --- Inst_VOPC__V_CMPX_NE_U32 class methods ---
15830 
15832  : Inst_VOPC(iFmt, "v_cmpx_ne_u32")
15833  {
15834  setFlag(ALU);
15835  setFlag(WritesEXEC);
15836  } // Inst_VOPC__V_CMPX_NE_U32
15837 
15839  {
15840  } // ~Inst_VOPC__V_CMPX_NE_U32
15841 
15842  // --- description from .arch file ---
15843  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
15844  void
15846  {
15847  Wavefront *wf = gpuDynInst->wavefront();
15848  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15849  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15850  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15851 
15852  src0.readSrc();
15853  src1.read();
15854 
15855  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15856  if (wf->execMask(lane)) {
15857  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
15858  }
15859  }
15860 
15861  wf->execMask() = vcc.rawData();
15862  vcc.write();
15863  } // execute
15864  // --- Inst_VOPC__V_CMPX_GE_U32 class methods ---
15865 
15867  : Inst_VOPC(iFmt, "v_cmpx_ge_u32")
15868  {
15869  setFlag(ALU);
15870  setFlag(WritesEXEC);
15871  } // Inst_VOPC__V_CMPX_GE_U32
15872 
15874  {
15875  } // ~Inst_VOPC__V_CMPX_GE_U32
15876 
15877  // --- description from .arch file ---
15878  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
15879  void
15881  {
15882  Wavefront *wf = gpuDynInst->wavefront();
15883  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
15884  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
15885  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15886 
15887  src0.readSrc();
15888  src1.read();
15889 
15890  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15891  if (wf->execMask(lane)) {
15892  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
15893  }
15894  }
15895 
15896  wf->execMask() = vcc.rawData();
15897  vcc.write();
15898  } // execute
15899  // --- Inst_VOPC__V_CMPX_T_U32 class methods ---
15900 
15902  : Inst_VOPC(iFmt, "v_cmpx_t_u32")
15903  {
15904  setFlag(ALU);
15905  setFlag(WritesEXEC);
15906  } // Inst_VOPC__V_CMPX_T_U32
15907 
15909  {
15910  } // ~Inst_VOPC__V_CMPX_T_U32
15911 
15912  // --- description from .arch file ---
15913  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
15914  void
15916  {
15917  Wavefront *wf = gpuDynInst->wavefront();
15918  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15919 
15920  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15921  if (wf->execMask(lane)) {
15922  vcc.setBit(lane, 1);
15923  }
15924  }
15925 
15926  wf->execMask() = vcc.rawData();
15927  vcc.write();
15928  } // execute
15929  // --- Inst_VOPC__V_CMP_F_I64 class methods ---
15930 
15932  : Inst_VOPC(iFmt, "v_cmp_f_i64")
15933  {
15934  setFlag(ALU);
15935  } // Inst_VOPC__V_CMP_F_I64
15936 
15938  {
15939  } // ~Inst_VOPC__V_CMP_F_I64
15940 
15941  // --- description from .arch file ---
15942  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
15943  void
15945  {
15946  Wavefront *wf = gpuDynInst->wavefront();
15947  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15948 
15949  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15950  if (wf->execMask(lane)) {
15951  vcc.setBit(lane, 0);
15952  }
15953  }
15954 
15955  vcc.write();
15956  } // execute
15957  // --- Inst_VOPC__V_CMP_LT_I64 class methods ---
15958 
15960  : Inst_VOPC(iFmt, "v_cmp_lt_i64")
15961  {
15962  setFlag(ALU);
15963  } // Inst_VOPC__V_CMP_LT_I64
15964 
15966  {
15967  } // ~Inst_VOPC__V_CMP_LT_I64
15968 
15969  // --- description from .arch file ---
15970  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
15971  void
15973  {
15974  Wavefront *wf = gpuDynInst->wavefront();
15975  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15976  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15977  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15978 
15979  src0.readSrc();
15980  src1.read();
15981 
15982  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15983  if (wf->execMask(lane)) {
15984  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
15985  }
15986  }
15987 
15988  vcc.write();
15989  } // execute
15990  // --- Inst_VOPC__V_CMP_EQ_I64 class methods ---
15991 
15993  : Inst_VOPC(iFmt, "v_cmp_eq_i64")
15994  {
15995  setFlag(ALU);
15996  } // Inst_VOPC__V_CMP_EQ_I64
15997 
15999  {
16000  } // ~Inst_VOPC__V_CMP_EQ_I64
16001 
16002  // --- description from .arch file ---
16003  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16004  void
16006  {
16007  Wavefront *wf = gpuDynInst->wavefront();
16008  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16009  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16010  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16011 
16012  src0.readSrc();
16013  src1.read();
16014 
16015  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16016  if (wf->execMask(lane)) {
16017  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
16018  }
16019  }
16020 
16021  vcc.write();
16022  } // execute
16023  // --- Inst_VOPC__V_CMP_LE_I64 class methods ---
16024 
16026  : Inst_VOPC(iFmt, "v_cmp_le_i64")
16027  {
16028  setFlag(ALU);
16029  } // Inst_VOPC__V_CMP_LE_I64
16030 
16032  {
16033  } // ~Inst_VOPC__V_CMP_LE_I64
16034 
16035  // --- description from .arch file ---
16036  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16037  void
16039  {
16040  Wavefront *wf = gpuDynInst->wavefront();
16041  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16042  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16043  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16044 
16045  src0.readSrc();
16046  src1.read();
16047 
16048  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16049  if (wf->execMask(lane)) {
16050  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
16051  }
16052  }
16053 
16054  vcc.write();
16055  } // execute
16056  // --- Inst_VOPC__V_CMP_GT_I64 class methods ---
16057 
16059  : Inst_VOPC(iFmt, "v_cmp_gt_i64")
16060  {
16061  setFlag(ALU);
16062  } // Inst_VOPC__V_CMP_GT_I64
16063 
16065  {
16066  } // ~Inst_VOPC__V_CMP_GT_I64
16067 
16068  // --- description from .arch file ---
16069  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16070  void
16072  {
16073  Wavefront *wf = gpuDynInst->wavefront();
16074  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16075  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16076  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16077 
16078  src0.readSrc();
16079  src1.read();
16080 
16081  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16082  if (wf->execMask(lane)) {
16083  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
16084  }
16085  }
16086 
16087  vcc.write();
16088  } // execute
16089  // --- Inst_VOPC__V_CMP_NE_I64 class methods ---
16090 
16092  : Inst_VOPC(iFmt, "v_cmp_ne_i64")
16093  {
16094  setFlag(ALU);
16095  } // Inst_VOPC__V_CMP_NE_I64
16096 
16098  {
16099  } // ~Inst_VOPC__V_CMP_NE_I64
16100 
16101  // --- description from .arch file ---
16102  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16103  void
16105  {
16106  Wavefront *wf = gpuDynInst->wavefront();
16107  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16108  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16109  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16110 
16111  src0.readSrc();
16112  src1.read();
16113 
16114  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16115  if (wf->execMask(lane)) {
16116  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
16117  }
16118  }
16119 
16120  vcc.write();
16121  } // execute
16122  // --- Inst_VOPC__V_CMP_GE_I64 class methods ---
16123 
16125  : Inst_VOPC(iFmt, "v_cmp_ge_i64")
16126  {
16127  setFlag(ALU);
16128  } // Inst_VOPC__V_CMP_GE_I64
16129 
16131  {
16132  } // ~Inst_VOPC__V_CMP_GE_I64
16133 
16134  // --- description from .arch file ---
16135  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16136  void
16138  {
16139  Wavefront *wf = gpuDynInst->wavefront();
16140  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16141  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16142  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16143 
16144  src0.readSrc();
16145  src1.read();
16146 
16147  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16148  if (wf->execMask(lane)) {
16149  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
16150  }
16151  }
16152 
16153  vcc.write();
16154  } // execute
16155  // --- Inst_VOPC__V_CMP_T_I64 class methods ---
16156 
16158  : Inst_VOPC(iFmt, "v_cmp_t_i64")
16159  {
16160  setFlag(ALU);
16161  } // Inst_VOPC__V_CMP_T_I64
16162 
16164  {
16165  } // ~Inst_VOPC__V_CMP_T_I64
16166 
16167  // --- description from .arch file ---
16168  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
16169  void
16171  {
16172  Wavefront *wf = gpuDynInst->wavefront();
16173  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16174 
16175  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16176  if (wf->execMask(lane)) {
16177  vcc.setBit(lane, 1);
16178  }
16179  }
16180 
16181  vcc.write();
16182  } // execute
16183  // --- Inst_VOPC__V_CMP_F_U64 class methods ---
16184 
16186  : Inst_VOPC(iFmt, "v_cmp_f_u64")
16187  {
16188  setFlag(ALU);
16189  } // Inst_VOPC__V_CMP_F_U64
16190 
16192  {
16193  } // ~Inst_VOPC__V_CMP_F_U64
16194 
16195  // --- description from .arch file ---
16196  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
16197  void
16199  {
16200  Wavefront *wf = gpuDynInst->wavefront();
16201  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16202 
16203  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16204  if (wf->execMask(lane)) {
16205  vcc.setBit(lane, 0);
16206  }
16207  }
16208 
16209  vcc.write();
16210  } // execute
16211  // --- Inst_VOPC__V_CMP_LT_U64 class methods ---
16212 
16214  : Inst_VOPC(iFmt, "v_cmp_lt_u64")
16215  {
16216  setFlag(ALU);
16217  } // Inst_VOPC__V_CMP_LT_U64
16218 
16220  {
16221  } // ~Inst_VOPC__V_CMP_LT_U64
16222 
16223  // --- description from .arch file ---
16224  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16225  void
16227  {
16228  Wavefront *wf = gpuDynInst->wavefront();
16229  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16230  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16231  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16232 
16233  src0.readSrc();
16234  src1.read();
16235 
16236  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16237  if (wf->execMask(lane)) {
16238  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
16239  }
16240  }
16241 
16242  vcc.write();
16243  } // execute
16244  // --- Inst_VOPC__V_CMP_EQ_U64 class methods ---
16245 
16247  : Inst_VOPC(iFmt, "v_cmp_eq_u64")
16248  {
16249  setFlag(ALU);
16250  } // Inst_VOPC__V_CMP_EQ_U64
16251 
16253  {
16254  } // ~Inst_VOPC__V_CMP_EQ_U64
16255 
16256  // --- description from .arch file ---
16257  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16258  void
16260  {
16261  Wavefront *wf = gpuDynInst->wavefront();
16262  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16263  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16264  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16265 
16266  src0.readSrc();
16267  src1.read();
16268 
16269  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16270  if (wf->execMask(lane)) {
16271  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
16272  }
16273  }
16274 
16275  vcc.write();
16276  } // execute
16277  // --- Inst_VOPC__V_CMP_LE_U64 class methods ---
16278 
16280  : Inst_VOPC(iFmt, "v_cmp_le_u64")
16281  {
16282  setFlag(ALU);
16283  } // Inst_VOPC__V_CMP_LE_U64
16284 
16286  {
16287  } // ~Inst_VOPC__V_CMP_LE_U64
16288 
16289  // --- description from .arch file ---
16290  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16291  void
16293  {
16294  Wavefront *wf = gpuDynInst->wavefront();
16295  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16296  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16297  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16298 
16299  src0.readSrc();
16300  src1.read();
16301 
16302  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16303  if (wf->execMask(lane)) {
16304  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
16305  }
16306  }
16307 
16308  vcc.write();
16309  } // execute
16310  // --- Inst_VOPC__V_CMP_GT_U64 class methods ---
16311 
16313  : Inst_VOPC(iFmt, "v_cmp_gt_u64")
16314  {
16315  setFlag(ALU);
16316  } // Inst_VOPC__V_CMP_GT_U64
16317 
16319  {
16320  } // ~Inst_VOPC__V_CMP_GT_U64
16321 
16322  // --- description from .arch file ---
16323  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16324  void
16326  {
16327  Wavefront *wf = gpuDynInst->wavefront();
16328  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16329  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16330  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16331 
16332  src0.readSrc();
16333  src1.read();
16334 
16335  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16336  if (wf->execMask(lane)) {
16337  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
16338  }
16339  }
16340 
16341  vcc.write();
16342  } // execute
16343  // --- Inst_VOPC__V_CMP_NE_U64 class methods ---
16344 
16346  : Inst_VOPC(iFmt, "v_cmp_ne_u64")
16347  {
16348  setFlag(ALU);
16349  } // Inst_VOPC__V_CMP_NE_U64
16350 
16352  {
16353  } // ~Inst_VOPC__V_CMP_NE_U64
16354 
16355  // --- description from .arch file ---
16356  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16357  void
16359  {
16360  Wavefront *wf = gpuDynInst->wavefront();
16361  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16362  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16363  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16364 
16365  src0.readSrc();
16366  src1.read();
16367 
16368  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16369  if (wf->execMask(lane)) {
16370  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
16371  }
16372  }
16373 
16374  vcc.write();
16375  } // execute
16376  // --- Inst_VOPC__V_CMP_GE_U64 class methods ---
16377 
16379  : Inst_VOPC(iFmt, "v_cmp_ge_u64")
16380  {
16381  setFlag(ALU);
16382  } // Inst_VOPC__V_CMP_GE_U64
16383 
16385  {
16386  } // ~Inst_VOPC__V_CMP_GE_U64
16387 
16388  // --- description from .arch file ---
16389  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16390  void
16392  {
16393  Wavefront *wf = gpuDynInst->wavefront();
16394  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16395  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16396  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16397 
16398  src0.readSrc();
16399  src1.read();
16400 
16401  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16402  if (wf->execMask(lane)) {
16403  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
16404  }
16405  }
16406 
16407  vcc.write();
16408  } // execute
16409  // --- Inst_VOPC__V_CMP_T_U64 class methods ---
16410 
16412  : Inst_VOPC(iFmt, "v_cmp_t_u64")
16413  {
16414  setFlag(ALU);
16415  } // Inst_VOPC__V_CMP_T_U64
16416 
16418  {
16419  } // ~Inst_VOPC__V_CMP_T_U64
16420 
16421  // --- description from .arch file ---
16422  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
16423  void
16425  {
16426  Wavefront *wf = gpuDynInst->wavefront();
16427  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16428 
16429  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16430  if (wf->execMask(lane)) {
16431  vcc.setBit(lane, 1);
16432  }
16433  }
16434 
16435  vcc.write();
16436  } // execute
16437  // --- Inst_VOPC__V_CMPX_F_I64 class methods ---
16438 
16440  : Inst_VOPC(iFmt, "v_cmpx_f_i64")
16441  {
16442  setFlag(ALU);
16443  setFlag(WritesEXEC);
16444  } // Inst_VOPC__V_CMPX_F_I64
16445 
16447  {
16448  } // ~Inst_VOPC__V_CMPX_F_I64
16449 
16450  // --- description from .arch file ---
16451  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
16452  void
16454  {
16455  Wavefront *wf = gpuDynInst->wavefront();
16456  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16457 
16458  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16459  if (wf->execMask(lane)) {
16460  vcc.setBit(lane, 0);
16461  }
16462  }
16463 
16464  wf->execMask() = vcc.rawData();
16465  vcc.write();
16466  } // execute
16467  // --- Inst_VOPC__V_CMPX_LT_I64 class methods ---
16468 
16470  : Inst_VOPC(iFmt, "v_cmpx_lt_i64")
16471  {
16472  setFlag(ALU);
16473  setFlag(WritesEXEC);
16474  } // Inst_VOPC__V_CMPX_LT_I64
16475 
16477  {
16478  } // ~Inst_VOPC__V_CMPX_LT_I64
16479 
16480  // --- description from .arch file ---
16481  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16482  void
16484  {
16485  Wavefront *wf = gpuDynInst->wavefront();
16486  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16487  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16488  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16489 
16490  src0.readSrc();
16491  src1.read();
16492 
16493  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16494  if (wf->execMask(lane)) {
16495  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
16496  }
16497  }
16498 
16499  wf->execMask() = vcc.rawData();
16500  vcc.write();
16501  } // execute
16502  // --- Inst_VOPC__V_CMPX_EQ_I64 class methods ---
16503 
16505  : Inst_VOPC(iFmt, "v_cmpx_eq_i64")
16506  {
16507  setFlag(ALU);
16508  setFlag(WritesEXEC);
16509  } // Inst_VOPC__V_CMPX_EQ_I64
16510 
16512  {
16513  } // ~Inst_VOPC__V_CMPX_EQ_I64
16514 
16515  // --- description from .arch file ---
16516  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16517  void
16519  {
16520  Wavefront *wf = gpuDynInst->wavefront();
16521  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16522  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16523  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16524 
16525  src0.readSrc();
16526  src1.read();
16527 
16528  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16529  if (wf->execMask(lane)) {
16530  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
16531  }
16532  }
16533 
16534  wf->execMask() = vcc.rawData();
16535  vcc.write();
16536  } // execute
16537  // --- Inst_VOPC__V_CMPX_LE_I64 class methods ---
16538 
16540  : Inst_VOPC(iFmt, "v_cmpx_le_i64")
16541  {
16542  setFlag(ALU);
16543  setFlag(WritesEXEC);
16544  } // Inst_VOPC__V_CMPX_LE_I64
16545 
16547  {
16548  } // ~Inst_VOPC__V_CMPX_LE_I64
16549 
16550  // --- description from .arch file ---
16551  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16552  void
16554  {
16555  Wavefront *wf = gpuDynInst->wavefront();
16556  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16557  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16558  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16559 
16560  src0.readSrc();
16561  src1.read();
16562 
16563  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16564  if (wf->execMask(lane)) {
16565  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
16566  }
16567  }
16568 
16569  wf->execMask() = vcc.rawData();
16570  vcc.write();
16571  } // execute
16572  // --- Inst_VOPC__V_CMPX_GT_I64 class methods ---
16573 
16575  : Inst_VOPC(iFmt, "v_cmpx_gt_i64")
16576  {
16577  setFlag(ALU);
16578  setFlag(WritesEXEC);
16579  } // Inst_VOPC__V_CMPX_GT_I64
16580 
16582  {
16583  } // ~Inst_VOPC__V_CMPX_GT_I64
16584 
16585  // --- description from .arch file ---
16586  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16587  void
16589  {
16590  Wavefront *wf = gpuDynInst->wavefront();
16591  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16592  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16593  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16594 
16595  src0.readSrc();
16596  src1.read();
16597 
16598  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16599  if (wf->execMask(lane)) {
16600  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
16601  }
16602  }
16603 
16604  wf->execMask() = vcc.rawData();
16605  vcc.write();
16606  } // execute
16607  // --- Inst_VOPC__V_CMPX_NE_I64 class methods ---
16608 
16610  : Inst_VOPC(iFmt, "v_cmpx_ne_i64")
16611  {
16612  setFlag(ALU);
16613  setFlag(WritesEXEC);
16614  } // Inst_VOPC__V_CMPX_NE_I64
16615 
16617  {
16618  } // ~Inst_VOPC__V_CMPX_NE_I64
16619 
16620  // --- description from .arch file ---
16621  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16622  void
16624  {
16625  Wavefront *wf = gpuDynInst->wavefront();
16626  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16627  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16628  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16629 
16630  src0.readSrc();
16631  src1.read();
16632 
16633  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16634  if (wf->execMask(lane)) {
16635  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
16636  }
16637  }
16638 
16639  wf->execMask() = vcc.rawData();
16640  vcc.write();
16641  } // execute
16642  // --- Inst_VOPC__V_CMPX_GE_I64 class methods ---
16643 
16645  : Inst_VOPC(iFmt, "v_cmpx_ge_i64")
16646  {
16647  setFlag(ALU);
16648  setFlag(WritesEXEC);
16649  } // Inst_VOPC__V_CMPX_GE_I64
16650 
16652  {
16653  } // ~Inst_VOPC__V_CMPX_GE_I64
16654 
16655  // --- description from .arch file ---
16656  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16657  void
16659  {
16660  Wavefront *wf = gpuDynInst->wavefront();
16661  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
16662  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
16663  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16664 
16665  src0.readSrc();
16666  src1.read();
16667 
16668  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16669  if (wf->execMask(lane)) {
16670  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
16671  }
16672  }
16673 
16674  wf->execMask() = vcc.rawData();
16675  vcc.write();
16676  } // execute
16677  // --- Inst_VOPC__V_CMPX_T_I64 class methods ---
16678 
16680  : Inst_VOPC(iFmt, "v_cmpx_t_i64")
16681  {
16682  setFlag(ALU);
16683  setFlag(WritesEXEC);
16684  } // Inst_VOPC__V_CMPX_T_I64
16685 
16687  {
16688  } // ~Inst_VOPC__V_CMPX_T_I64
16689 
16690  // --- description from .arch file ---
16691  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
16692  void
16694  {
16695  Wavefront *wf = gpuDynInst->wavefront();
16696  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16697 
16698  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16699  if (wf->execMask(lane)) {
16700  vcc.setBit(lane, 1);
16701  }
16702  }
16703 
16704  wf->execMask() = vcc.rawData();
16705  vcc.write();
16706  } // execute
16707  // --- Inst_VOPC__V_CMPX_F_U64 class methods ---
16708 
16710  : Inst_VOPC(iFmt, "v_cmpx_f_u64")
16711  {
16712  setFlag(ALU);
16713  setFlag(WritesEXEC);
16714  } // Inst_VOPC__V_CMPX_F_U64
16715 
16717  {
16718  } // ~Inst_VOPC__V_CMPX_F_U64
16719 
16720  // --- description from .arch file ---
16721  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
16722  void
16724  {
16725  Wavefront *wf = gpuDynInst->wavefront();
16726  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16727 
16728  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16729  if (wf->execMask(lane)) {
16730  vcc.setBit(lane, 0);
16731  }
16732  }
16733 
16734  wf->execMask() = vcc.rawData();
16735  vcc.write();
16736  } // execute
16737  // --- Inst_VOPC__V_CMPX_LT_U64 class methods ---
16738 
16740  : Inst_VOPC(iFmt, "v_cmpx_lt_u64")
16741  {
16742  setFlag(ALU);
16743  setFlag(WritesEXEC);
16744  } // Inst_VOPC__V_CMPX_LT_U64
16745 
16747  {
16748  } // ~Inst_VOPC__V_CMPX_LT_U64
16749 
16750  // --- description from .arch file ---
16751  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16752  void
16754  {
16755  Wavefront *wf = gpuDynInst->wavefront();
16756  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16757  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16758  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16759 
16760  src0.readSrc();
16761  src1.read();
16762 
16763  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16764  if (wf->execMask(lane)) {
16765  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
16766  }
16767  }
16768 
16769  wf->execMask() = vcc.rawData();
16770  vcc.write();
16771  } // execute
16772  // --- Inst_VOPC__V_CMPX_EQ_U64 class methods ---
16773 
16775  : Inst_VOPC(iFmt, "v_cmpx_eq_u64")
16776  {
16777  setFlag(ALU);
16778  setFlag(WritesEXEC);
16779  } // Inst_VOPC__V_CMPX_EQ_U64
16780 
16782  {
16783  } // ~Inst_VOPC__V_CMPX_EQ_U64
16784 
16785  // --- description from .arch file ---
16786  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16787  void
16789  {
16790  Wavefront *wf = gpuDynInst->wavefront();
16791  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16792  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16793  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16794 
16795  src0.readSrc();
16796  src1.read();
16797 
16798  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16799  if (wf->execMask(lane)) {
16800  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
16801  }
16802  }
16803 
16804  wf->execMask() = vcc.rawData();
16805  vcc.write();
16806  } // execute
16807  // --- Inst_VOPC__V_CMPX_LE_U64 class methods ---
16808 
16810  : Inst_VOPC(iFmt, "v_cmpx_le_u64")
16811  {
16812  setFlag(ALU);
16813  setFlag(WritesEXEC);
16814  } // Inst_VOPC__V_CMPX_LE_U64
16815 
16817  {
16818  } // ~Inst_VOPC__V_CMPX_LE_U64
16819 
16820  // --- description from .arch file ---
16821  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16822  void
16824  {
16825  Wavefront *wf = gpuDynInst->wavefront();
16826  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16827  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16828  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16829 
16830  src0.readSrc();
16831  src1.read();
16832 
16833  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16834  if (wf->execMask(lane)) {
16835  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
16836  }
16837  }
16838 
16839  wf->execMask() = vcc.rawData();
16840  vcc.write();
16841  } // execute
16842  // --- Inst_VOPC__V_CMPX_GT_U64 class methods ---
16843 
16845  : Inst_VOPC(iFmt, "v_cmpx_gt_u64")
16846  {
16847  setFlag(ALU);
16848  setFlag(WritesEXEC);
16849  } // Inst_VOPC__V_CMPX_GT_U64
16850 
16852  {
16853  } // ~Inst_VOPC__V_CMPX_GT_U64
16854 
16855  // --- description from .arch file ---
16856  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16857  void
16859  {
16860  Wavefront *wf = gpuDynInst->wavefront();
16861  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16862  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16863  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16864 
16865  src0.readSrc();
16866  src1.read();
16867 
16868  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16869  if (wf->execMask(lane)) {
16870  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
16871  }
16872  }
16873 
16874  wf->execMask() = vcc.rawData();
16875  vcc.write();
16876  } // execute
16877  // --- Inst_VOPC__V_CMPX_NE_U64 class methods ---
16878 
16880  : Inst_VOPC(iFmt, "v_cmpx_ne_u64")
16881  {
16882  setFlag(ALU);
16883  setFlag(WritesEXEC);
16884  } // Inst_VOPC__V_CMPX_NE_U64
16885 
16887  {
16888  } // ~Inst_VOPC__V_CMPX_NE_U64
16889 
16890  // --- description from .arch file ---
16891  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16892  void
16894  {
16895  Wavefront *wf = gpuDynInst->wavefront();
16896  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16897  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16898  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16899 
16900  src0.readSrc();
16901  src1.read();
16902 
16903  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16904  if (wf->execMask(lane)) {
16905  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
16906  }
16907  }
16908 
16909  wf->execMask() = vcc.rawData();
16910  vcc.write();
16911  } // execute
16912  // --- Inst_VOPC__V_CMPX_GE_U64 class methods ---
16913 
16915  : Inst_VOPC(iFmt, "v_cmpx_ge_u64")
16916  {
16917  setFlag(ALU);
16918  setFlag(WritesEXEC);
16919  } // Inst_VOPC__V_CMPX_GE_U64
16920 
16922  {
16923  } // ~Inst_VOPC__V_CMPX_GE_U64
16924 
16925  // --- description from .arch file ---
16926  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16927  void
16929  {
16930  Wavefront *wf = gpuDynInst->wavefront();
16931  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
16932  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
16933  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16934 
16935  src0.readSrc();
16936  src1.read();
16937 
16938  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16939  if (wf->execMask(lane)) {
16940  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
16941  }
16942  }
16943 
16944  wf->execMask() = vcc.rawData();
16945  vcc.write();
16946  } // execute
16947  // --- Inst_VOPC__V_CMPX_T_U64 class methods ---
16948 
16950  : Inst_VOPC(iFmt, "v_cmpx_t_u64")
16951  {
16952  setFlag(ALU);
16953  setFlag(WritesEXEC);
16954  } // Inst_VOPC__V_CMPX_T_U64
16955 
16957  {
16958  } // ~Inst_VOPC__V_CMPX_T_U64
16959 
16960  // --- description from .arch file ---
16961  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
16962  void
16964  {
16965  Wavefront *wf = gpuDynInst->wavefront();
16966  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
16967 
16968  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16969  if (wf->execMask(lane)) {
16970  vcc.setBit(lane, 1);
16971  }
16972  }
16973 
16974  wf->execMask() = vcc.rawData();
16975  vcc.write();
16976  } // execute
16977  // --- Inst_VINTRP__V_INTERP_P1_F32 class methods ---
16978 
16980  InFmt_VINTRP *iFmt)
16981  : Inst_VINTRP(iFmt, "v_interp_p1_f32")
16982  {
16983  setFlag(ALU);
16984  setFlag(F32);
16985  } // Inst_VINTRP__V_INTERP_P1_F32
16986 
16988  {
16989  } // ~Inst_VINTRP__V_INTERP_P1_F32
16990 
16991  // --- description from .arch file ---
16992  // D.f = P10 * S.f + P0; parameter interpolation (SQ translates to
16993  // V_MAD_F32 for SP).
16994  // CAUTION: when in HALF_LDS mode, D must not be the same GPR as S;
16995  // if D == S then data corruption will occur.
16996  // NOTE: In textual representations the I/J VGPR is the first source and
16997  // the attribute is the second source; however in the VOP3 encoding the
16998  // attribute is stored in the src0 field and the VGPR is stored in the
16999  // src1 field.
17000  void
17002  {
17004  } // execute
17005  // --- Inst_VINTRP__V_INTERP_P2_F32 class methods ---
17006 
17008  InFmt_VINTRP *iFmt)
17009  : Inst_VINTRP(iFmt, "v_interp_p2_f32")
17010  {
17011  setFlag(ALU);
17012  setFlag(F32);
17013  } // Inst_VINTRP__V_INTERP_P2_F32
17014 
17016  {
17017  } // ~Inst_VINTRP__V_INTERP_P2_F32
17018 
17019  // --- description from .arch file ---
17020  // D.f = P20 * S.f + D.f; parameter interpolation (SQ translates to
17021  // V_MAD_F32 for SP).
17022  // NOTE: In textual representations the I/J VGPR is the first source and
17023  // the attribute is the second source; however in the VOP3 encoding the
17024  // attribute is stored in the src0 field and the VGPR is stored in the
17025  // src1 field.
17026  void
17028  {
17030  } // execute
17031  // --- Inst_VINTRP__V_INTERP_MOV_F32 class methods ---
17032 
17034  InFmt_VINTRP *iFmt)
17035  : Inst_VINTRP(iFmt, "v_interp_mov_f32")
17036  {
17037  setFlag(ALU);
17038  setFlag(F32);
17039  } // Inst_VINTRP__V_INTERP_MOV_F32
17040 
17042  {
17043  } // ~Inst_VINTRP__V_INTERP_MOV_F32
17044 
17045  // --- description from .arch file ---
17046  // D.f = {P10,P20,P0}[S.u]; parameter load.
17047  void
17049  {
17051  } // execute
17052  // --- Inst_VOP3__V_CMP_CLASS_F32 class methods ---
17053 
17055  InFmt_VOP3A *iFmt)
17056  : Inst_VOP3A(iFmt, "v_cmp_class_f32", true)
17057  {
17058  setFlag(ALU);
17059  setFlag(F32);
17060  } // Inst_VOP3__V_CMP_CLASS_F32
17061 
17063  {
17064  } // ~Inst_VOP3__V_CMP_CLASS_F32
17065 
17066  // --- description from .arch file ---
17067  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f
17068  // The function reports true if the floating point value is *any* of the
17069  // --- numeric types selected in S1.u according to the following list:
17070  // S1.u[0] -- value is a signaling NaN.
17071  // S1.u[1] -- value is a quiet NaN.
17072  // S1.u[2] -- value is negative infinity.
17073  // S1.u[3] -- value is a negative normal value.
17074  // S1.u[4] -- value is a negative denormal value.
17075  // S1.u[5] -- value is negative zero.
17076  // S1.u[6] -- value is positive zero.
17077  // S1.u[7] -- value is a positive denormal value.
17078  // S1.u[8] -- value is a positive normal value.
17079  // S1.u[9] -- value is positive infinity.
17080  void
17082  {
17083  Wavefront *wf = gpuDynInst->wavefront();
17084  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17085  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
17086  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17087 
17088  src0.readSrc();
17089  src1.readSrc();
17090 
17091  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17092  if (wf->execMask(lane)) {
17093  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
17094  // is NaN
17095  if (std::isnan(src0[lane])) {
17096  sdst.setBit(lane, 1);
17097  continue;
17098  }
17099  }
17100  if (bits(src1[lane], 2)) {
17101  // is -infinity
17102  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
17103  sdst.setBit(lane, 1);
17104  continue;
17105  }
17106  }
17107  if (bits(src1[lane], 3)) {
17108  // is -normal
17109  if (std::isnormal(src0[lane])
17110  && std::signbit(src0[lane])) {
17111  sdst.setBit(lane, 1);
17112  continue;
17113  }
17114  }
17115  if (bits(src1[lane], 4)) {
17116  // is -denormal
17117  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
17118  && std::signbit(src0[lane])) {
17119  sdst.setBit(lane, 1);
17120  continue;
17121  }
17122  }
17123  if (bits(src1[lane], 5)) {
17124  // is -zero
17125  if (std::fpclassify(src0[lane]) == FP_ZERO
17126  && std::signbit(src0[lane])) {
17127  sdst.setBit(lane, 1);
17128  continue;
17129  }
17130  }
17131  if (bits(src1[lane], 6)) {
17132  // is +zero
17133  if (std::fpclassify(src0[lane]) == FP_ZERO
17134  && !std::signbit(src0[lane])) {
17135  sdst.setBit(lane, 1);
17136  continue;
17137  }
17138  }
17139  if (bits(src1[lane], 7)) {
17140  // is +denormal
17141  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
17142  && !std::signbit(src0[lane])) {
17143  sdst.setBit(lane, 1);
17144  continue;
17145  }
17146  }
17147  if (bits(src1[lane], 8)) {
17148  // is +normal
17149  if (std::isnormal(src0[lane])
17150  && !std::signbit(src0[lane])) {
17151  sdst.setBit(lane, 1);
17152  continue;
17153  }
17154  }
17155  if (bits(src1[lane], 9)) {
17156  // is +infinity
17157  if (std::isinf(src0[lane])
17158  && !std::signbit(src0[lane])) {
17159  sdst.setBit(lane, 1);
17160  continue;
17161  }
17162  }
17163  }
17164  }
17165 
17166  sdst.write();
17167  } // execute
17168  // --- Inst_VOP3__V_CMPX_CLASS_F32 class methods ---
17169 
17171  InFmt_VOP3A *iFmt)
17172  : Inst_VOP3A(iFmt, "v_cmpx_class_f32", true)
17173  {
17174  setFlag(ALU);
17175  setFlag(F32);
17176  setFlag(WritesEXEC);
17177  } // Inst_VOP3__V_CMPX_CLASS_F32
17178 
17180  {
17181  } // ~Inst_VOP3__V_CMPX_CLASS_F32
17182 
17183  // --- description from .arch file ---
17184  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
17185  // S0.f
17186  // The function reports true if the floating point value is *any* of the
17187  // numeric types selected in S1.u according to the following list:
17188  // S1.u[0] -- value is a signaling NaN.
17189  // S1.u[1] -- value is a quiet NaN.
17190  // S1.u[2] -- value is negative infinity.
17191  // S1.u[3] -- value is a negative normal value.
17192  // S1.u[4] -- value is a negative denormal value.
17193  // S1.u[5] -- value is negative zero.
17194  // S1.u[6] -- value is positive zero.
17195  // S1.u[7] -- value is a positive denormal value.
17196  // S1.u[8] -- value is a positive normal value.
17197  // S1.u[9] -- value is positive infinity.
17198  void
17200  {
17201  Wavefront *wf = gpuDynInst->wavefront();
17202  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17203  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
17204  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17205 
17206  src0.readSrc();
17207  src1.readSrc();
17208 
17209  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17210  if (wf->execMask(lane)) {
17211  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
17212  // is NaN
17213  if (std::isnan(src0[lane])) {
17214  sdst.setBit(lane, 1);
17215  continue;
17216  }
17217  }
17218  if (bits(src1[lane], 2)) {
17219  // is -infinity
17220  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
17221  sdst.setBit(lane, 1);
17222  continue;
17223  }
17224  }
17225  if (bits(src1[lane], 3)) {
17226  // is -normal
17227  if (std::isnormal(src0[lane])
17228  && std::signbit(src0[lane])) {
17229  sdst.setBit(lane, 1);
17230  continue;
17231  }
17232  }
17233  if (bits(src1[lane], 4)) {
17234  // is -denormal
17235  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
17236  && std::signbit(src0[lane])) {
17237  sdst.setBit(lane, 1);
17238  continue;
17239  }
17240  }
17241  if (bits(src1[lane], 5)) {
17242  // is -zero
17243  if (std::fpclassify(src0[lane]) == FP_ZERO
17244  && std::signbit(src0[lane])) {
17245  sdst.setBit(lane, 1);
17246  continue;
17247  }
17248  }
17249  if (bits(src1[lane], 6)) {
17250  // is +zero
17251  if (std::fpclassify(src0[lane]) == FP_ZERO
17252  && !std::signbit(src0[lane])) {
17253  sdst.setBit(lane, 1);
17254  continue;
17255  }
17256  }
17257  if (bits(src1[lane], 7)) {
17258  // is +denormal
17259  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
17260  && !std::signbit(src0[lane])) {
17261  sdst.setBit(lane, 1);
17262  continue;
17263  }
17264  }
17265  if (bits(src1[lane], 8)) {
17266  // is +normal
17267  if (std::isnormal(src0[lane])
17268  && !std::signbit(src0[lane])) {
17269  sdst.setBit(lane, 1);
17270  continue;
17271  }
17272  }
17273  if (bits(src1[lane], 9)) {
17274  // is +infinity
17275  if (std::isinf(src0[lane])
17276  && !std::signbit(src0[lane])) {
17277  sdst.setBit(lane, 1);
17278  continue;
17279  }
17280  }
17281  }
17282  }
17283 
17284  wf->execMask() = sdst.rawData();
17285  sdst.write();
17286  } // execute
17287  // --- Inst_VOP3__V_CMP_CLASS_F64 class methods ---
17288 
17290  InFmt_VOP3A *iFmt)
17291  : Inst_VOP3A(iFmt, "v_cmp_class_f64", true)
17292  {
17293  setFlag(ALU);
17294  setFlag(F64);
17295  } // Inst_VOP3__V_CMP_CLASS_F64
17296 
17298  {
17299  } // ~Inst_VOP3__V_CMP_CLASS_F64
17300 
17301  // --- description from .arch file ---
17302  // VCC = IEEE numeric class function specified in S1.u, performed on S0.d
17303  // The function reports true if the floating point value is *any* of the
17304  // --- numeric types selected in S1.u according to the following list:
17305  // S1.u[0] -- value is a signaling NaN.
17306  // S1.u[1] -- value is a quiet NaN.
17307  // S1.u[2] -- value is negative infinity.
17308  // S1.u[3] -- value is a negative normal value.
17309  // S1.u[4] -- value is a negative denormal value.
17310  // S1.u[5] -- value is negative zero.
17311  // S1.u[6] -- value is positive zero.
17312  // S1.u[7] -- value is a positive denormal value.
17313  // S1.u[8] -- value is a positive normal value.
17314  // S1.u[9] -- value is positive infinity.
17315  void
17317  {
17318  Wavefront *wf = gpuDynInst->wavefront();
17319  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17320  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
17321  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17322 
17323  src0.readSrc();
17324  src1.readSrc();
17325 
17326  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17327  if (wf->execMask(lane)) {
17328  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
17329  // is NaN
17330  if (std::isnan(src0[lane])) {
17331  sdst.setBit(lane, 1);
17332  continue;
17333  }
17334  }
17335  if (bits(src1[lane], 2)) {
17336  // is -infinity
17337  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
17338  sdst.setBit(lane, 1);
17339  continue;
17340  }
17341  }
17342  if (bits(src1[lane], 3)) {
17343  // is -normal
17344  if (std::isnormal(src0[lane])
17345  && std::signbit(src0[lane])) {
17346  sdst.setBit(lane, 1);
17347  continue;
17348  }
17349  }
17350  if (bits(src1[lane], 4)) {
17351  // is -denormal
17352  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
17353  && std::signbit(src0[lane])) {
17354  sdst.setBit(lane, 1);
17355  continue;
17356  }
17357  }
17358  if (bits(src1[lane], 5)) {
17359  // is -zero
17360  if (std::fpclassify(src0[lane]) == FP_ZERO
17361  && std::signbit(src0[lane])) {
17362  sdst.setBit(lane, 1);
17363  continue;
17364  }
17365  }
17366  if (bits(src1[lane], 6)) {
17367  // is +zero
17368  if (std::fpclassify(src0[lane]) == FP_ZERO
17369  && !std::signbit(src0[lane])) {
17370  sdst.setBit(lane, 1);
17371  continue;
17372  }
17373  }
17374  if (bits(src1[lane], 7)) {
17375  // is +denormal
17376  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
17377  && !std::signbit(src0[lane])) {
17378  sdst.setBit(lane, 1);
17379  continue;
17380  }
17381  }
17382  if (bits(src1[lane], 8)) {
17383  // is +normal
17384  if (std::isnormal(src0[lane])
17385  && !std::signbit(src0[lane])) {
17386  sdst.setBit(lane, 1);
17387  continue;
17388  }
17389  }
17390  if (bits(src1[lane], 9)) {
17391  // is +infinity
17392  if (std::isinf(src0[lane])
17393  && !std::signbit(src0[lane])) {
17394  sdst.setBit(lane, 1);
17395  continue;
17396  }
17397  }
17398  }
17399  }
17400 
17401  sdst.write();
17402  } // execute
17403  // --- Inst_VOP3__V_CMPX_CLASS_F64 class methods ---
17404 
17406  InFmt_VOP3A *iFmt)
17407  : Inst_VOP3A(iFmt, "v_cmpx_class_f64", true)
17408  {
17409  setFlag(ALU);
17410  setFlag(F64);
17411  setFlag(WritesEXEC);
17412  } // Inst_VOP3__V_CMPX_CLASS_F64
17413 
17415  {
17416  } // ~Inst_VOP3__V_CMPX_CLASS_F64
17417 
17418  // --- description from .arch file ---
17419  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
17420  // S0.d
17421  // The function reports true if the floating point value is *any* of the
17422  // numeric types selected in S1.u according to the following list:
17423  // S1.u[0] -- value is a signaling NaN.
17424  // S1.u[1] -- value is a quiet NaN.
17425  // S1.u[2] -- value is negative infinity.
17426  // S1.u[3] -- value is a negative normal value.
17427  // S1.u[4] -- value is a negative denormal value.
17428  // S1.u[5] -- value is negative zero.
17429  // S1.u[6] -- value is positive zero.
17430  // S1.u[7] -- value is a positive denormal value.
17431  // S1.u[8] -- value is a positive normal value.
17432  // S1.u[9] -- value is positive infinity.
17433  void
17435  {
17436  Wavefront *wf = gpuDynInst->wavefront();
17437  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17438  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
17439  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17440 
17441  src0.readSrc();
17442  src1.readSrc();
17443 
17444  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17445  if (wf->execMask(lane)) {
17446  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
17447  // is NaN
17448  if (std::isnan(src0[lane])) {
17449  sdst.setBit(lane, 1);
17450  continue;
17451  }
17452  }
17453  if (bits(src1[lane], 2)) {
17454  // is -infinity
17455  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
17456  sdst.setBit(lane, 1);
17457  continue;
17458  }
17459  }
17460  if (bits(src1[lane], 3)) {
17461  // is -normal
17462  if (std::isnormal(src0[lane])
17463  && std::signbit(src0[lane])) {
17464  sdst.setBit(lane, 1);
17465  continue;
17466  }
17467  }
17468  if (bits(src1[lane], 4)) {
17469  // is -denormal
17470  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
17471  && std::signbit(src0[lane])) {
17472  sdst.setBit(lane, 1);
17473  continue;
17474  }
17475  }
17476  if (bits(src1[lane], 5)) {
17477  // is -zero
17478  if (std::fpclassify(src0[lane]) == FP_ZERO
17479  && std::signbit(src0[lane])) {
17480  sdst.setBit(lane, 1);
17481  continue;
17482  }
17483  }
17484  if (bits(src1[lane], 6)) {
17485  // is +zero
17486  if (std::fpclassify(src0[lane]) == FP_ZERO
17487  && !std::signbit(src0[lane])) {
17488  sdst.setBit(lane, 1);
17489  continue;
17490  }
17491  }
17492  if (bits(src1[lane], 7)) {
17493  // is +denormal
17494  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
17495  && !std::signbit(src0[lane])) {
17496  sdst.setBit(lane, 1);
17497  continue;
17498  }
17499  }
17500  if (bits(src1[lane], 8)) {
17501  // is +normal
17502  if (std::isnormal(src0[lane])
17503  && !std::signbit(src0[lane])) {
17504  sdst.setBit(lane, 1);
17505  continue;
17506  }
17507  }
17508  if (bits(src1[lane], 9)) {
17509  // is +infinity
17510  if (std::isinf(src0[lane])
17511  && !std::signbit(src0[lane])) {
17512  sdst.setBit(lane, 1);
17513  continue;
17514  }
17515  }
17516  }
17517  }
17518 
17519  wf->execMask() = sdst.rawData();
17520  sdst.write();
17521  } // execute
17522  // --- Inst_VOP3__V_CMP_CLASS_F16 class methods ---
17523 
17525  InFmt_VOP3A *iFmt)
17526  : Inst_VOP3A(iFmt, "v_cmp_class_f16", true)
17527  {
17528  setFlag(ALU);
17529  setFlag(F16);
17530  } // Inst_VOP3__V_CMP_CLASS_F16
17531 
17533  {
17534  } // ~Inst_VOP3__V_CMP_CLASS_F16
17535 
17536  // --- description from .arch file ---
17537  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f16
17538  // The function reports true if the floating point value is *any* of the
17539  // --- numeric types selected in S1.u according to the following list:
17540  // S1.u[0] -- value is a signaling NaN.
17541  // S1.u[1] -- value is a quiet NaN.
17542  // S1.u[2] -- value is negative infinity.
17543  // S1.u[3] -- value is a negative normal value.
17544  // S1.u[4] -- value is a negative denormal value.
17545  // S1.u[5] -- value is negative zero.
17546  // S1.u[6] -- value is positive zero.
17547  // S1.u[7] -- value is a positive denormal value.
17548  // S1.u[8] -- value is a positive normal value.
17549  // S1.u[9] -- value is positive infinity.
17550  void
17552  {
17554  } // execute
17555  // --- Inst_VOP3__V_CMPX_CLASS_F16 class methods ---
17556 
17558  InFmt_VOP3A *iFmt)
17559  : Inst_VOP3A(iFmt, "v_cmpx_class_f16", true)
17560  {
17561  setFlag(ALU);
17562  setFlag(F16);
17563  setFlag(WritesEXEC);
17564  } // Inst_VOP3__V_CMPX_CLASS_F16
17565 
17567  {
17568  } // ~Inst_VOP3__V_CMPX_CLASS_F16
17569 
17570  // --- description from .arch file ---
17571  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
17572  // --- S0.f16
17573  // The function reports true if the floating point value is *any* of the
17574  // --- numeric types selected in S1.u according to the following list:
17575  // S1.u[0] -- value is a signaling NaN.
17576  // S1.u[1] -- value is a quiet NaN.
17577  // S1.u[2] -- value is negative infinity.
17578  // S1.u[3] -- value is a negative normal value.
17579  // S1.u[4] -- value is a negative denormal value.
17580  // S1.u[5] -- value is negative zero.
17581  // S1.u[6] -- value is positive zero.
17582  // S1.u[7] -- value is a positive denormal value.
17583  // S1.u[8] -- value is a positive normal value.
17584  // S1.u[9] -- value is positive infinity.
17585  void
17587  {
17589  } // execute
17590  // --- Inst_VOP3__V_CMP_F_F16 class methods ---
17591 
17593  : Inst_VOP3A(iFmt, "v_cmp_f_f16", true)
17594  {
17595  setFlag(ALU);
17596  setFlag(F16);
17597  } // Inst_VOP3__V_CMP_F_F16
17598 
17600  {
17601  } // ~Inst_VOP3__V_CMP_F_F16
17602 
17603  // --- description from .arch file ---
17604  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
17605  void
17607  {
17609  } // execute
17610  // --- Inst_VOP3__V_CMP_LT_F16 class methods ---
17611 
17613  InFmt_VOP3A *iFmt)
17614  : Inst_VOP3A(iFmt, "v_cmp_lt_f16", true)
17615  {
17616  setFlag(ALU);
17617  setFlag(F16);
17618  } // Inst_VOP3__V_CMP_LT_F16
17619 
17621  {
17622  } // ~Inst_VOP3__V_CMP_LT_F16
17623 
17624  // --- description from .arch file ---
17625  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
17626  void
17628  {
17630  } // execute
17631  // --- Inst_VOP3__V_CMP_EQ_F16 class methods ---
17632 
17634  InFmt_VOP3A *iFmt)
17635  : Inst_VOP3A(iFmt, "v_cmp_eq_f16", true)
17636  {
17637  setFlag(ALU);
17638  setFlag(F16);
17639  } // Inst_VOP3__V_CMP_EQ_F16
17640 
17642  {
17643  } // ~Inst_VOP3__V_CMP_EQ_F16
17644 
17645  // --- description from .arch file ---
17646  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
17647  void
17649  {
17651  } // execute
17652  // --- Inst_VOP3__V_CMP_LE_F16 class methods ---
17653 
17655  InFmt_VOP3A *iFmt)
17656  : Inst_VOP3A(iFmt, "v_cmp_le_f16", true)
17657  {
17658  setFlag(ALU);
17659  setFlag(F16);
17660  } // Inst_VOP3__V_CMP_LE_F16
17661 
17663  {
17664  } // ~Inst_VOP3__V_CMP_LE_F16
17665 
17666  // --- description from .arch file ---
17667  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
17668  void
17670  {
17672  } // execute
17673  // --- Inst_VOP3__V_CMP_GT_F16 class methods ---
17674 
17676  InFmt_VOP3A *iFmt)
17677  : Inst_VOP3A(iFmt, "v_cmp_gt_f16", true)
17678  {
17679  setFlag(ALU);
17680  setFlag(F16);
17681  } // Inst_VOP3__V_CMP_GT_F16
17682 
17684  {
17685  } // ~Inst_VOP3__V_CMP_GT_F16
17686 
17687  // --- description from .arch file ---
17688  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
17689  void
17691  {
17693  } // execute
17694  // --- Inst_VOP3__V_CMP_LG_F16 class methods ---
17695 
17697  InFmt_VOP3A *iFmt)
17698  : Inst_VOP3A(iFmt, "v_cmp_lg_f16", true)
17699  {
17700  setFlag(ALU);
17701  setFlag(F16);
17702  } // Inst_VOP3__V_CMP_LG_F16
17703 
17705  {
17706  } // ~Inst_VOP3__V_CMP_LG_F16
17707 
17708  // --- description from .arch file ---
17709  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
17710  void
17712  {
17714  } // execute
17715  // --- Inst_VOP3__V_CMP_GE_F16 class methods ---
17716 
17718  InFmt_VOP3A *iFmt)
17719  : Inst_VOP3A(iFmt, "v_cmp_ge_f16", true)
17720  {
17721  setFlag(ALU);
17722  setFlag(F16);
17723  } // Inst_VOP3__V_CMP_GE_F16
17724 
17726  {
17727  } // ~Inst_VOP3__V_CMP_GE_F16
17728 
17729  // --- description from .arch file ---
17730  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
17731  void
17733  {
17735  } // execute
17736  // --- Inst_VOP3__V_CMP_O_F16 class methods ---
17737 
17739  : Inst_VOP3A(iFmt, "v_cmp_o_f16", true)
17740  {
17741  setFlag(ALU);
17742  setFlag(F16);
17743  } // Inst_VOP3__V_CMP_O_F16
17744 
17746  {
17747  } // ~Inst_VOP3__V_CMP_O_F16
17748 
17749  // --- description from .arch file ---
17750  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
17751  void
17753  {
17755  } // execute
17756  // --- Inst_VOP3__V_CMP_U_F16 class methods ---
17757 
17759  : Inst_VOP3A(iFmt, "v_cmp_u_f16", true)
17760  {
17761  setFlag(ALU);
17762  setFlag(F16);
17763  } // Inst_VOP3__V_CMP_U_F16
17764 
17766  {
17767  } // ~Inst_VOP3__V_CMP_U_F16
17768 
17769  // --- description from .arch file ---
17770  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
17771  void
17773  {
17775  } // execute
17776  // --- Inst_VOP3__V_CMP_NGE_F16 class methods ---
17777 
17779  InFmt_VOP3A *iFmt)
17780  : Inst_VOP3A(iFmt, "v_cmp_nge_f16", true)
17781  {
17782  setFlag(ALU);
17783  setFlag(F16);
17784  } // Inst_VOP3__V_CMP_NGE_F16
17785 
17787  {
17788  } // ~Inst_VOP3__V_CMP_NGE_F16
17789 
17790  // --- description from .arch file ---
17791  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
17792  void
17794  {
17796  } // execute
17797  // --- Inst_VOP3__V_CMP_NLG_F16 class methods ---
17798 
17800  InFmt_VOP3A *iFmt)
17801  : Inst_VOP3A(iFmt, "v_cmp_nlg_f16", true)
17802  {
17803  setFlag(ALU);
17804  setFlag(F16);
17805  } // Inst_VOP3__V_CMP_NLG_F16
17806 
17808  {
17809  } // ~Inst_VOP3__V_CMP_NLG_F16
17810 
17811  // --- description from .arch file ---
17812  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
17813  void
17815  {
17817  } // execute
17818  // --- Inst_VOP3__V_CMP_NGT_F16 class methods ---
17819 
17821  InFmt_VOP3A *iFmt)
17822  : Inst_VOP3A(iFmt, "v_cmp_ngt_f16", true)
17823  {
17824  setFlag(ALU);
17825  setFlag(F16);
17826  } // Inst_VOP3__V_CMP_NGT_F16
17827 
17829  {
17830  } // ~Inst_VOP3__V_CMP_NGT_F16
17831 
17832  // --- description from .arch file ---
17833  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
17834  void
17836  {
17838  } // execute
17839  // --- Inst_VOP3__V_CMP_NLE_F16 class methods ---
17840 
17842  InFmt_VOP3A *iFmt)
17843  : Inst_VOP3A(iFmt, "v_cmp_nle_f16", true)
17844  {
17845  setFlag(ALU);
17846  setFlag(F16);
17847  } // Inst_VOP3__V_CMP_NLE_F16
17848 
17850  {
17851  } // ~Inst_VOP3__V_CMP_NLE_F16
17852 
17853  // --- description from .arch file ---
17854  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
17855  void
17857  {
17859  } // execute
17860  // --- Inst_VOP3__V_CMP_NEQ_F16 class methods ---
17861 
17863  InFmt_VOP3A *iFmt)
17864  : Inst_VOP3A(iFmt, "v_cmp_neq_f16", true)
17865  {
17866  setFlag(ALU);
17867  setFlag(F16);
17868  } // Inst_VOP3__V_CMP_NEQ_F16
17869 
17871  {
17872  } // ~Inst_VOP3__V_CMP_NEQ_F16
17873 
17874  // --- description from .arch file ---
17875  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
17876  void
17878  {
17880  } // execute
17881  // --- Inst_VOP3__V_CMP_NLT_F16 class methods ---
17882 
17884  InFmt_VOP3A *iFmt)
17885  : Inst_VOP3A(iFmt, "v_cmp_nlt_f16", true)
17886  {
17887  setFlag(ALU);
17888  setFlag(F16);
17889  } // Inst_VOP3__V_CMP_NLT_F16
17890 
17892  {
17893  } // ~Inst_VOP3__V_CMP_NLT_F16
17894 
17895  // --- description from .arch file ---
17896  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
17897  void
17899  {
17901  } // execute
17902  // --- Inst_VOP3__V_CMP_TRU_F16 class methods ---
17903 
17905  InFmt_VOP3A *iFmt)
17906  : Inst_VOP3A(iFmt, "v_cmp_tru_f16", true)
17907  {
17908  setFlag(ALU);
17909  setFlag(F16);
17910  } // Inst_VOP3__V_CMP_TRU_F16
17911 
17913  {
17914  } // ~Inst_VOP3__V_CMP_TRU_F16
17915 
17916  // --- description from .arch file ---
17917  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
17918  void
17920  {
17921  Wavefront *wf = gpuDynInst->wavefront();
17922  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17923 
17924  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17925  if (wf->execMask(lane)) {
17926  sdst.setBit(lane, 1);
17927  }
17928  }
17929 
17930  sdst.write();
17931  } // execute
17932  // --- Inst_VOP3__V_CMPX_F_F16 class methods ---
17933 
17935  InFmt_VOP3A *iFmt)
17936  : Inst_VOP3A(iFmt, "v_cmpx_f_f16", true)
17937  {
17938  setFlag(ALU);
17939  setFlag(WritesEXEC);
17940  } // Inst_VOP3__V_CMPX_F_F16
17941 
17943  {
17944  } // ~Inst_VOP3__V_CMPX_F_F16
17945 
17946  // --- description from .arch file ---
17947  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
17948  void
17950  {
17951  Wavefront *wf = gpuDynInst->wavefront();
17952  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17953 
17954  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17955  if (wf->execMask(lane)) {
17956  sdst.setBit(lane, 0);
17957  }
17958  }
17959 
17960  wf->execMask() = sdst.rawData();
17961  sdst.write();
17962  } // execute
17963  // --- Inst_VOP3__V_CMPX_LT_F16 class methods ---
17964 
17966  InFmt_VOP3A *iFmt)
17967  : Inst_VOP3A(iFmt, "v_cmpx_lt_f16", true)
17968  {
17969  setFlag(ALU);
17970  setFlag(F16);
17971  setFlag(WritesEXEC);
17972  } // Inst_VOP3__V_CMPX_LT_F16
17973 
17975  {
17976  } // ~Inst_VOP3__V_CMPX_LT_F16
17977 
17978  // --- description from .arch file ---
17979  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
17980  void
17982  {
17984  } // execute
17985  // --- Inst_VOP3__V_CMPX_EQ_F16 class methods ---
17986 
17988  InFmt_VOP3A *iFmt)
17989  : Inst_VOP3A(iFmt, "v_cmpx_eq_f16", true)
17990  {
17991  setFlag(ALU);
17992  setFlag(F16);
17993  setFlag(WritesEXEC);
17994  } // Inst_VOP3__V_CMPX_EQ_F16
17995 
17997  {
17998  } // ~Inst_VOP3__V_CMPX_EQ_F16
17999 
18000  // --- description from .arch file ---
18001  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
18002  void
18004  {
18006  } // execute
18007  // --- Inst_VOP3__V_CMPX_LE_F16 class methods ---
18008 
18010  InFmt_VOP3A *iFmt)
18011  : Inst_VOP3A(iFmt, "v_cmpx_le_f16", true)
18012  {
18013  setFlag(ALU);
18014  setFlag(F16);
18015  setFlag(WritesEXEC);
18016  } // Inst_VOP3__V_CMPX_LE_F16
18017 
18019  {
18020  } // ~Inst_VOP3__V_CMPX_LE_F16
18021 
18022  // --- description from .arch file ---
18023  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
18024  void
18026  {
18028  } // execute
18029  // --- Inst_VOP3__V_CMPX_GT_F16 class methods ---
18030 
18032  InFmt_VOP3A *iFmt)
18033  : Inst_VOP3A(iFmt, "v_cmpx_gt_f16", true)
18034  {
18035  setFlag(ALU);
18036  setFlag(F16);
18037  setFlag(WritesEXEC);
18038  } // Inst_VOP3__V_CMPX_GT_F16
18039 
18041  {
18042  } // ~Inst_VOP3__V_CMPX_GT_F16
18043 
18044  // --- description from .arch file ---
18045  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
18046  void
18048  {
18050  } // execute
18051  // --- Inst_VOP3__V_CMPX_LG_F16 class methods ---
18052 
18054  InFmt_VOP3A *iFmt)
18055  : Inst_VOP3A(iFmt, "v_cmpx_lg_f16", true)
18056  {
18057  setFlag(ALU);
18058  setFlag(F16);
18059  setFlag(WritesEXEC);
18060  } // Inst_VOP3__V_CMPX_LG_F16
18061 
18063  {
18064  } // ~Inst_VOP3__V_CMPX_LG_F16
18065 
18066  // --- description from .arch file ---
18067  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
18068  void
18070  {
18072  } // execute
18073  // --- Inst_VOP3__V_CMPX_GE_F16 class methods ---
18074 
18076  InFmt_VOP3A *iFmt)
18077  : Inst_VOP3A(iFmt, "v_cmpx_ge_f16", true)
18078  {
18079  setFlag(ALU);
18080  setFlag(F16);
18081  setFlag(WritesEXEC);
18082  } // Inst_VOP3__V_CMPX_GE_F16
18083 
18085  {
18086  } // ~Inst_VOP3__V_CMPX_GE_F16
18087 
18088  // --- description from .arch file ---
18089  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
18090  void
18092  {
18094  } // execute
18095  // --- Inst_VOP3__V_CMPX_O_F16 class methods ---
18096 
18098  InFmt_VOP3A *iFmt)
18099  : Inst_VOP3A(iFmt, "v_cmpx_o_f16", true)
18100  {
18101  setFlag(ALU);
18102  setFlag(F16);
18103  setFlag(WritesEXEC);
18104  } // Inst_VOP3__V_CMPX_O_F16
18105 
18107  {
18108  } // ~Inst_VOP3__V_CMPX_O_F16
18109 
18110  // --- description from .arch file ---
18111  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
18112  // encoding.
18113  void
18115  {
18117  } // execute
18118  // --- Inst_VOP3__V_CMPX_U_F16 class methods ---
18119 
18121  InFmt_VOP3A *iFmt)
18122  : Inst_VOP3A(iFmt, "v_cmpx_u_f16", true)
18123  {
18124  setFlag(ALU);
18125  setFlag(F16);
18126  setFlag(WritesEXEC);
18127  } // Inst_VOP3__V_CMPX_U_F16
18128 
18130  {
18131  } // ~Inst_VOP3__V_CMPX_U_F16
18132 
18133  // --- description from .arch file ---
18134  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
18135  // encoding.
18136  void
18138  {
18140  } // execute
18141  // --- Inst_VOP3__V_CMPX_NGE_F16 class methods ---
18142 
18144  InFmt_VOP3A *iFmt)
18145  : Inst_VOP3A(iFmt, "v_cmpx_nge_f16", true)
18146  {
18147  setFlag(ALU);
18148  setFlag(F16);
18149  setFlag(WritesEXEC);
18150  } // Inst_VOP3__V_CMPX_NGE_F16
18151 
18153  {
18154  } // ~Inst_VOP3__V_CMPX_NGE_F16
18155 
18156  // --- description from .arch file ---
18157  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
18158  void
18160  {
18162  } // execute
18163  // --- Inst_VOP3__V_CMPX_NLG_F16 class methods ---
18164 
18166  InFmt_VOP3A *iFmt)
18167  : Inst_VOP3A(iFmt, "v_cmpx_nlg_f16", true)
18168  {
18169  setFlag(ALU);
18170  setFlag(F16);
18171  setFlag(WritesEXEC);
18172  } // Inst_VOP3__V_CMPX_NLG_F16
18173 
18175  {
18176  } // ~Inst_VOP3__V_CMPX_NLG_F16
18177 
18178  // --- description from .arch file ---
18179  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
18180  void
18182  {
18184  } // execute
18185  // --- Inst_VOP3__V_CMPX_NGT_F16 class methods ---
18186 
18188  InFmt_VOP3A *iFmt)
18189  : Inst_VOP3A(iFmt, "v_cmpx_ngt_f16", true)
18190  {
18191  setFlag(ALU);
18192  setFlag(F16);
18193  setFlag(WritesEXEC);
18194  } // Inst_VOP3__V_CMPX_NGT_F16
18195 
18197  {
18198  } // ~Inst_VOP3__V_CMPX_NGT_F16
18199 
18200  // --- description from .arch file ---
18201  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
18202  void
18204  {
18206  } // execute
18207  // --- Inst_VOP3__V_CMPX_NLE_F16 class methods ---
18208 
18210  InFmt_VOP3A *iFmt)
18211  : Inst_VOP3A(iFmt, "v_cmpx_nle_f16", true)
18212  {
18213  setFlag(ALU);
18214  setFlag(F16);
18215  setFlag(WritesEXEC);
18216  } // Inst_VOP3__V_CMPX_NLE_F16
18217 
18219  {
18220  } // ~Inst_VOP3__V_CMPX_NLE_F16
18221 
18222  // --- description from .arch file ---
18223  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
18224  void
18226  {
18228  } // execute
18229  // --- Inst_VOP3__V_CMPX_NEQ_F16 class methods ---
18230 
18232  InFmt_VOP3A *iFmt)
18233  : Inst_VOP3A(iFmt, "v_cmpx_neq_f16", true)
18234  {
18235  setFlag(ALU);
18236  setFlag(F16);
18237  setFlag(WritesEXEC);
18238  } // Inst_VOP3__V_CMPX_NEQ_F16
18239 
18241  {
18242  } // ~Inst_VOP3__V_CMPX_NEQ_F16
18243 
18244  // --- description from .arch file ---
18245  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
18246  void
18248  {
18250  } // execute
18251  // --- Inst_VOP3__V_CMPX_NLT_F16 class methods ---
18252 
18254  InFmt_VOP3A *iFmt)
18255  : Inst_VOP3A(iFmt, "v_cmpx_nlt_f16", true)
18256  {
18257  setFlag(ALU);
18258  setFlag(F16);
18259  setFlag(WritesEXEC);
18260  } // Inst_VOP3__V_CMPX_NLT_F16
18261 
18263  {
18264  } // ~Inst_VOP3__V_CMPX_NLT_F16
18265 
18266  // --- description from .arch file ---
18267  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
18268  void
18270  {
18272  } // execute
18273  // --- Inst_VOP3__V_CMPX_TRU_F16 class methods ---
18274 
18276  InFmt_VOP3A *iFmt)
18277  : Inst_VOP3A(iFmt, "v_cmpx_tru_f16", true)
18278  {
18279  setFlag(ALU);
18280  setFlag(F16);
18281  setFlag(WritesEXEC);
18282  } // Inst_VOP3__V_CMPX_TRU_F16
18283 
18285  {
18286  } // ~Inst_VOP3__V_CMPX_TRU_F16
18287 
18288  // --- description from .arch file ---
18289  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
18290  void
18292  {
18293  Wavefront *wf = gpuDynInst->wavefront();
18294  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18295 
18296  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18297  if (wf->execMask(lane)) {
18298  sdst.setBit(lane, 1);
18299  }
18300  }
18301 
18302  wf->execMask() = sdst.rawData();
18303  sdst.write();
18304  } // execute
18305  // --- Inst_VOP3__V_CMP_F_F32 class methods ---
18306 
18308  : Inst_VOP3A(iFmt, "v_cmp_f_f32", true)
18309  {
18310  setFlag(ALU);
18311  setFlag(F32);
18312  } // Inst_VOP3__V_CMP_F_F32
18313 
18315  {
18316  } // ~Inst_VOP3__V_CMP_F_F32
18317 
18318  // --- description from .arch file ---
18319  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
18320  void
18322  {
18323  Wavefront *wf = gpuDynInst->wavefront();
18324  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18325 
18326  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18327  if (wf->execMask(lane)) {
18328  sdst.setBit(lane, 0);
18329  }
18330  }
18331 
18332  sdst.write();
18333  } // execute
18334  // --- Inst_VOP3__V_CMP_LT_F32 class methods ---
18335 
18337  InFmt_VOP3A *iFmt)
18338  : Inst_VOP3A(iFmt, "v_cmp_lt_f32", true)
18339  {
18340  setFlag(ALU);
18341  setFlag(F32);
18342  } // Inst_VOP3__V_CMP_LT_F32
18343 
18345  {
18346  } // ~Inst_VOP3__V_CMP_LT_F32
18347 
18348  // --- description from .arch file ---
18349  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
18350  void
18352  {
18353  Wavefront *wf = gpuDynInst->wavefront();
18354  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18355  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18356  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18357 
18358  src0.readSrc();
18359  src1.readSrc();
18360 
18361  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18362  if (wf->execMask(lane)) {
18363  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
18364  }
18365  }
18366 
18367  sdst.write();
18368  } // execute
18369  // --- Inst_VOP3__V_CMP_EQ_F32 class methods ---
18370 
18372  InFmt_VOP3A *iFmt)
18373  : Inst_VOP3A(iFmt, "v_cmp_eq_f32", true)
18374  {
18375  setFlag(ALU);
18376  setFlag(F32);
18377  } // Inst_VOP3__V_CMP_EQ_F32
18378 
18380  {
18381  } // ~Inst_VOP3__V_CMP_EQ_F32
18382 
18383  // --- description from .arch file ---
18384  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
18385  void
18387  {
18388  Wavefront *wf = gpuDynInst->wavefront();
18389  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18390  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18391  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18392 
18393  src0.readSrc();
18394  src1.readSrc();
18395 
18396  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18397  if (wf->execMask(lane)) {
18398  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
18399  }
18400  }
18401 
18402  sdst.write();
18403  } // execute
18404  // --- Inst_VOP3__V_CMP_LE_F32 class methods ---
18405 
18407  InFmt_VOP3A *iFmt)
18408  : Inst_VOP3A(iFmt, "v_cmp_le_f32", true)
18409  {
18410  setFlag(ALU);
18411  setFlag(F32);
18412  } // Inst_VOP3__V_CMP_LE_F32
18413 
18415  {
18416  } // ~Inst_VOP3__V_CMP_LE_F32
18417 
18418  // --- description from .arch file ---
18419  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
18420  void
18422  {
18423  Wavefront *wf = gpuDynInst->wavefront();
18424  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18425  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18426  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18427 
18428  src0.readSrc();
18429  src1.readSrc();
18430 
18431  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18432  if (wf->execMask(lane)) {
18433  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
18434  }
18435  }
18436 
18437  sdst.write();
18438  } // execute
18439  // --- Inst_VOP3__V_CMP_GT_F32 class methods ---
18440 
18442  InFmt_VOP3A *iFmt)
18443  : Inst_VOP3A(iFmt, "v_cmp_gt_f32", true)
18444  {
18445  setFlag(ALU);
18446  setFlag(F32);
18447  } // Inst_VOP3__V_CMP_GT_F32
18448 
18450  {
18451  } // ~Inst_VOP3__V_CMP_GT_F32
18452 
18453  // --- description from .arch file ---
18454  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
18455  void
18457  {
18458  Wavefront *wf = gpuDynInst->wavefront();
18459  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18460  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18461  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18462 
18463  src0.readSrc();
18464  src1.readSrc();
18465 
18466  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18467  if (wf->execMask(lane)) {
18468  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
18469  }
18470  }
18471 
18472  sdst.write();
18473  } // execute
18474  // --- Inst_VOP3__V_CMP_LG_F32 class methods ---
18475 
18477  InFmt_VOP3A *iFmt)
18478  : Inst_VOP3A(iFmt, "v_cmp_lg_f32", true)
18479  {
18480  setFlag(ALU);
18481  setFlag(F32);
18482  } // Inst_VOP3__V_CMP_LG_F32
18483 
18485  {
18486  } // ~Inst_VOP3__V_CMP_LG_F32
18487 
18488  // --- description from .arch file ---
18489  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
18490  void
18492  {
18493  Wavefront *wf = gpuDynInst->wavefront();
18494  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18495  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18496  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18497 
18498  src0.readSrc();
18499  src1.readSrc();
18500 
18501  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18502  if (wf->execMask(lane)) {
18503  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
18504  }
18505  }
18506 
18507  sdst.write();
18508  } // execute
18509  // --- Inst_VOP3__V_CMP_GE_F32 class methods ---
18510 
18512  InFmt_VOP3A *iFmt)
18513  : Inst_VOP3A(iFmt, "v_cmp_ge_f32", true)
18514  {
18515  setFlag(ALU);
18516  setFlag(F32);
18517  } // Inst_VOP3__V_CMP_GE_F32
18518 
18520  {
18521  } // ~Inst_VOP3__V_CMP_GE_F32
18522 
18523  // --- description from .arch file ---
18524  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
18525  void
18527  {
18528  Wavefront *wf = gpuDynInst->wavefront();
18529  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18530  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18531  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18532 
18533  src0.readSrc();
18534  src1.readSrc();
18535 
18536  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18537  if (wf->execMask(lane)) {
18538  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
18539  }
18540  }
18541 
18542  sdst.write();
18543  } // execute
18544  // --- Inst_VOP3__V_CMP_O_F32 class methods ---
18545 
18547  : Inst_VOP3A(iFmt, "v_cmp_o_f32", true)
18548  {
18549  setFlag(ALU);
18550  setFlag(F32);
18551  } // Inst_VOP3__V_CMP_O_F32
18552 
18554  {
18555  } // ~Inst_VOP3__V_CMP_O_F32
18556 
18557  // --- description from .arch file ---
18558  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
18559  void
18561  {
18562  Wavefront *wf = gpuDynInst->wavefront();
18563  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18564  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18565  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18566 
18567  src0.readSrc();
18568  src1.readSrc();
18569 
18570  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18571  if (wf->execMask(lane)) {
18572  sdst.setBit(lane, (!std::isnan(src0[lane])
18573  && !std::isnan(src1[lane])) ? 1 : 0);
18574  }
18575  }
18576 
18577  sdst.write();
18578  } // execute
18579  // --- Inst_VOP3__V_CMP_U_F32 class methods ---
18580 
18582  : Inst_VOP3A(iFmt, "v_cmp_u_f32", true)
18583  {
18584  setFlag(ALU);
18585  setFlag(F32);
18586  } // Inst_VOP3__V_CMP_U_F32
18587 
18589  {
18590  } // ~Inst_VOP3__V_CMP_U_F32
18591 
18592  // --- description from .arch file ---
18593  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
18594  void
18596  {
18597  Wavefront *wf = gpuDynInst->wavefront();
18598  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18599  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18600  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18601 
18602  src0.readSrc();
18603  src1.readSrc();
18604 
18605  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18606  if (wf->execMask(lane)) {
18607  sdst.setBit(lane, (std::isnan(src0[lane])
18608  || std::isnan(src1[lane])) ? 1 : 0);
18609  }
18610  }
18611 
18612  sdst.write();
18613  } // execute
18614  // --- Inst_VOP3__V_CMP_NGE_F32 class methods ---
18615 
18617  InFmt_VOP3A *iFmt)
18618  : Inst_VOP3A(iFmt, "v_cmp_nge_f32", true)
18619  {
18620  setFlag(ALU);
18621  setFlag(F32);
18622  } // Inst_VOP3__V_CMP_NGE_F32
18623 
18625  {
18626  } // ~Inst_VOP3__V_CMP_NGE_F32
18627 
18628  // --- description from .arch file ---
18629  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
18630  void
18632  {
18633  Wavefront *wf = gpuDynInst->wavefront();
18634  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18635  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18636  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18637 
18638  src0.readSrc();
18639  src1.readSrc();
18640 
18641  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18642  if (wf->execMask(lane)) {
18643  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
18644  }
18645  }
18646 
18647  sdst.write();
18648  } // execute
18649  // --- Inst_VOP3__V_CMP_NLG_F32 class methods ---
18650 
18652  InFmt_VOP3A *iFmt)
18653  : Inst_VOP3A(iFmt, "v_cmp_nlg_f32", true)
18654  {
18655  setFlag(ALU);
18656  setFlag(F32);
18657  } // Inst_VOP3__V_CMP_NLG_F32
18658 
18660  {
18661  } // ~Inst_VOP3__V_CMP_NLG_F32
18662 
18663  // --- description from .arch file ---
18664  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
18665  void
18667  {
18668  Wavefront *wf = gpuDynInst->wavefront();
18669  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18670  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18671  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18672 
18673  src0.readSrc();
18674  src1.readSrc();
18675 
18676  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18677  if (wf->execMask(lane)) {
18678  sdst.setBit(lane, !(src0[lane] < src1[lane]
18679  || src0[lane] > src1[lane]) ? 1 : 0);
18680  }
18681  }
18682 
18683  sdst.write();
18684  } // execute
18685  // --- Inst_VOP3__V_CMP_NGT_F32 class methods ---
18686 
18688  InFmt_VOP3A *iFmt)
18689  : Inst_VOP3A(iFmt, "v_cmp_ngt_f32", true)
18690  {
18691  setFlag(ALU);
18692  setFlag(F32);
18693  } // Inst_VOP3__V_CMP_NGT_F32
18694 
18696  {
18697  } // ~Inst_VOP3__V_CMP_NGT_F32
18698 
18699  // --- description from .arch file ---
18700  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
18701  void
18703  {
18704  Wavefront *wf = gpuDynInst->wavefront();
18705  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18706  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18707  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18708 
18709  src0.readSrc();
18710  src1.readSrc();
18711 
18712  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18713  if (wf->execMask(lane)) {
18714  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
18715  }
18716  }
18717 
18718  sdst.write();
18719  } // execute
18720  // --- Inst_VOP3__V_CMP_NLE_F32 class methods ---
18721 
18723  InFmt_VOP3A *iFmt)
18724  : Inst_VOP3A(iFmt, "v_cmp_nle_f32", true)
18725  {
18726  setFlag(ALU);
18727  setFlag(F32);
18728  } // Inst_VOP3__V_CMP_NLE_F32
18729 
18731  {
18732  } // ~Inst_VOP3__V_CMP_NLE_F32
18733 
18734  // --- description from .arch file ---
18735  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
18736  void
18738  {
18739  Wavefront *wf = gpuDynInst->wavefront();
18740  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18741  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18742  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18743 
18744  src0.readSrc();
18745  src1.readSrc();
18746 
18747  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18748  if (wf->execMask(lane)) {
18749  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
18750  }
18751  }
18752 
18753  sdst.write();
18754  } // execute
18755  // --- Inst_VOP3__V_CMP_NEQ_F32 class methods ---
18756 
18758  InFmt_VOP3A *iFmt)
18759  : Inst_VOP3A(iFmt, "v_cmp_neq_f32", true)
18760  {
18761  setFlag(ALU);
18762  setFlag(F32);
18763  } // Inst_VOP3__V_CMP_NEQ_F32
18764 
18766  {
18767  } // ~Inst_VOP3__V_CMP_NEQ_F32
18768 
18769  // --- description from .arch file ---
18770  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
18771  void
18773  {
18774  Wavefront *wf = gpuDynInst->wavefront();
18775  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18776  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18777  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18778 
18779  src0.readSrc();
18780  src1.readSrc();
18781 
18782  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18783  if (wf->execMask(lane)) {
18784  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
18785  }
18786  }
18787 
18788  sdst.write();
18789  } // execute
18790  // --- Inst_VOP3__V_CMP_NLT_F32 class methods ---
18791 
18793  InFmt_VOP3A *iFmt)
18794  : Inst_VOP3A(iFmt, "v_cmp_nlt_f32", true)
18795  {
18796  setFlag(ALU);
18797  setFlag(F32);
18798  } // Inst_VOP3__V_CMP_NLT_F32
18799 
18801  {
18802  } // ~Inst_VOP3__V_CMP_NLT_F32
18803 
18804  // --- description from .arch file ---
18805  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
18806  void
18808  {
18809  Wavefront *wf = gpuDynInst->wavefront();
18810  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18811  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18812  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18813 
18814  src0.readSrc();
18815  src1.readSrc();
18816 
18817  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18818  if (wf->execMask(lane)) {
18819  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
18820  }
18821  }
18822 
18823  sdst.write();
18824  } // execute
18825  // --- Inst_VOP3__V_CMP_TRU_F32 class methods ---
18826 
18828  InFmt_VOP3A *iFmt)
18829  : Inst_VOP3A(iFmt, "v_cmp_tru_f32", true)
18830  {
18831  setFlag(ALU);
18832  setFlag(F32);
18833  } // Inst_VOP3__V_CMP_TRU_F32
18834 
18836  {
18837  } // ~Inst_VOP3__V_CMP_TRU_F32
18838 
18839  // --- description from .arch file ---
18840  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
18841  void
18843  {
18844  Wavefront *wf = gpuDynInst->wavefront();
18845  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18846 
18847  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18848  if (wf->execMask(lane)) {
18849  sdst.setBit(lane, 1);
18850  }
18851  }
18852 
18853  sdst.write();
18854  } // execute
18855  // --- Inst_VOP3__V_CMPX_F_F32 class methods ---
18856 
18858  InFmt_VOP3A *iFmt)
18859  : Inst_VOP3A(iFmt, "v_cmpx_f_f32", true)
18860  {
18861  setFlag(ALU);
18862  setFlag(F32);
18863  setFlag(WritesEXEC);
18864  } // Inst_VOP3__V_CMPX_F_F32
18865 
18867  {
18868  } // ~Inst_VOP3__V_CMPX_F_F32
18869 
18870  // --- description from .arch file ---
18871  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
18872  void
18874  {
18875  Wavefront *wf = gpuDynInst->wavefront();
18876  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18877 
18878  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18879  if (wf->execMask(lane)) {
18880  sdst.setBit(lane, 0);
18881  }
18882  }
18883 
18884  wf->execMask() = sdst.rawData();
18885  sdst.write();
18886  } // execute
18887  // --- Inst_VOP3__V_CMPX_LT_F32 class methods ---
18888 
18890  InFmt_VOP3A *iFmt)
18891  : Inst_VOP3A(iFmt, "v_cmpx_lt_f32", true)
18892  {
18893  setFlag(ALU);
18894  setFlag(F32);
18895  setFlag(WritesEXEC);
18896  } // Inst_VOP3__V_CMPX_LT_F32
18897 
18899  {
18900  } // ~Inst_VOP3__V_CMPX_LT_F32
18901 
18902  // --- description from .arch file ---
18903  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
18904  void
18906  {
18907  Wavefront *wf = gpuDynInst->wavefront();
18908  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18909  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18910  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18911 
18912  src0.readSrc();
18913  src1.readSrc();
18914 
18915  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18916  if (wf->execMask(lane)) {
18917  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
18918  }
18919  }
18920 
18921  wf->execMask() = sdst.rawData();
18922  sdst.write();
18923  } // execute
18924  // --- Inst_VOP3__V_CMPX_EQ_F32 class methods ---
18925 
18927  InFmt_VOP3A *iFmt)
18928  : Inst_VOP3A(iFmt, "v_cmpx_eq_f32", true)
18929  {
18930  setFlag(ALU);
18931  setFlag(F32);
18932  setFlag(WritesEXEC);
18933  } // Inst_VOP3__V_CMPX_EQ_F32
18934 
18936  {
18937  } // ~Inst_VOP3__V_CMPX_EQ_F32
18938 
18939  // --- description from .arch file ---
18940  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
18941  void
18943  {
18944  Wavefront *wf = gpuDynInst->wavefront();
18945  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18946  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18947  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18948 
18949  src0.readSrc();
18950  src1.readSrc();
18951 
18952  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18953  if (wf->execMask(lane)) {
18954  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
18955  }
18956  }
18957 
18958  wf->execMask() = sdst.rawData();
18959  sdst.write();
18960  } // execute
18961  // --- Inst_VOP3__V_CMPX_LE_F32 class methods ---
18962 
18964  InFmt_VOP3A *iFmt)
18965  : Inst_VOP3A(iFmt, "v_cmpx_le_f32", true)
18966  {
18967  setFlag(ALU);
18968  setFlag(F32);
18969  setFlag(WritesEXEC);
18970  } // Inst_VOP3__V_CMPX_LE_F32
18971 
18973  {
18974  } // ~Inst_VOP3__V_CMPX_LE_F32
18975 
18976  // --- description from .arch file ---
18977  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
18978  void
18980  {
18981  Wavefront *wf = gpuDynInst->wavefront();
18982  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
18983  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
18984  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18985 
18986  src0.readSrc();
18987  src1.readSrc();
18988 
18989  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18990  if (wf->execMask(lane)) {
18991  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
18992  }
18993  }
18994 
18995  wf->execMask() = sdst.rawData();
18996  sdst.write();
18997  } // execute
18998  // --- Inst_VOP3__V_CMPX_GT_F32 class methods ---
18999 
19001  InFmt_VOP3A *iFmt)
19002  : Inst_VOP3A(iFmt, "v_cmpx_gt_f32", true)
19003  {
19004  setFlag(ALU);
19005  setFlag(F32);
19006  setFlag(WritesEXEC);
19007  } // Inst_VOP3__V_CMPX_GT_F32
19008 
19010  {
19011  } // ~Inst_VOP3__V_CMPX_GT_F32
19012 
19013  // --- description from .arch file ---
19014  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
19015  void
19017  {
19018  Wavefront *wf = gpuDynInst->wavefront();
19019  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19020  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19021  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19022 
19023  src0.readSrc();
19024  src1.readSrc();
19025 
19026  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19027  if (wf->execMask(lane)) {
19028  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
19029  }
19030  }
19031 
19032  wf->execMask() = sdst.rawData();
19033  sdst.write();
19034  } // execute
19035  // --- Inst_VOP3__V_CMPX_LG_F32 class methods ---
19036 
19038  InFmt_VOP3A *iFmt)
19039  : Inst_VOP3A(iFmt, "v_cmpx_lg_f32", true)
19040  {
19041  setFlag(ALU);
19042  setFlag(F32);
19043  setFlag(WritesEXEC);
19044  } // Inst_VOP3__V_CMPX_LG_F32
19045 
19047  {
19048  } // ~Inst_VOP3__V_CMPX_LG_F32
19049 
19050  // --- description from .arch file ---
19051  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
19052  void
19054  {
19055  Wavefront *wf = gpuDynInst->wavefront();
19056  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19057  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19058  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19059 
19060  src0.readSrc();
19061  src1.readSrc();
19062 
19063  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19064  if (wf->execMask(lane)) {
19065  sdst.setBit(lane, (src0[lane] < src1[lane]
19066  || src0[lane] > src1[lane]) ? 1 : 0);
19067  }
19068  }
19069 
19070  wf->execMask() = sdst.rawData();
19071  sdst.write();
19072  } // execute
19073  // --- Inst_VOP3__V_CMPX_GE_F32 class methods ---
19074 
19076  InFmt_VOP3A *iFmt)
19077  : Inst_VOP3A(iFmt, "v_cmpx_ge_f32", true)
19078  {
19079  setFlag(ALU);
19080  setFlag(F32);
19081  setFlag(WritesEXEC);
19082  } // Inst_VOP3__V_CMPX_GE_F32
19083 
19085  {
19086  } // ~Inst_VOP3__V_CMPX_GE_F32
19087 
19088  // --- description from .arch file ---
19089  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
19090  void
19092  {
19093  Wavefront *wf = gpuDynInst->wavefront();
19094  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19095  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19096  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19097 
19098  src0.readSrc();
19099  src1.readSrc();
19100 
19101  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19102  if (wf->execMask(lane)) {
19103  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
19104  }
19105  }
19106 
19107  wf->execMask() = sdst.rawData();
19108  sdst.write();
19109  } // execute
19110  // --- Inst_VOP3__V_CMPX_O_F32 class methods ---
19111 
19113  InFmt_VOP3A *iFmt)
19114  : Inst_VOP3A(iFmt, "v_cmpx_o_f32", true)
19115  {
19116  setFlag(ALU);
19117  setFlag(F32);
19118  setFlag(WritesEXEC);
19119  } // Inst_VOP3__V_CMPX_O_F32
19120 
19122  {
19123  } // ~Inst_VOP3__V_CMPX_O_F32
19124 
19125  // --- description from .arch file ---
19126  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
19127  // encoding.
19128  void
19130  {
19131  Wavefront *wf = gpuDynInst->wavefront();
19132  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19133  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19134  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19135 
19136  src0.readSrc();
19137  src1.readSrc();
19138 
19139  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19140  if (wf->execMask(lane)) {
19141  sdst.setBit(lane, (!std::isnan(src0[lane])
19142  && !std::isnan(src1[lane])) ? 1 : 0);
19143  }
19144  }
19145 
19146  wf->execMask() = sdst.rawData();
19147  sdst.write();
19148  } // execute
19149  // --- Inst_VOP3__V_CMPX_U_F32 class methods ---
19150 
19152  InFmt_VOP3A *iFmt)
19153  : Inst_VOP3A(iFmt, "v_cmpx_u_f32", true)
19154  {
19155  setFlag(ALU);
19156  setFlag(F32);
19157  setFlag(WritesEXEC);
19158  } // Inst_VOP3__V_CMPX_U_F32
19159 
19161  {
19162  } // ~Inst_VOP3__V_CMPX_U_F32
19163 
19164  // --- description from .arch file ---
19165  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
19166  // encoding.
19167  void
19169  {
19170  Wavefront *wf = gpuDynInst->wavefront();
19171  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19172  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19173  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19174 
19175  src0.readSrc();
19176  src1.readSrc();
19177 
19178  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19179  if (wf->execMask(lane)) {
19180  sdst.setBit(lane, (std::isnan(src0[lane])
19181  || std::isnan(src1[lane])) ? 1 : 0);
19182  }
19183  }
19184 
19185  wf->execMask() = sdst.rawData();
19186  sdst.write();
19187  } // execute
19188  // --- Inst_VOP3__V_CMPX_NGE_F32 class methods ---
19189 
19191  InFmt_VOP3A *iFmt)
19192  : Inst_VOP3A(iFmt, "v_cmpx_nge_f32", true)
19193  {
19194  setFlag(ALU);
19195  setFlag(F32);
19196  setFlag(WritesEXEC);
19197  } // Inst_VOP3__V_CMPX_NGE_F32
19198 
19200  {
19201  } // ~Inst_VOP3__V_CMPX_NGE_F32
19202 
19203  // --- description from .arch file ---
19204  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
19205  void
19207  {
19208  Wavefront *wf = gpuDynInst->wavefront();
19209  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19210  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19211  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19212 
19213  src0.readSrc();
19214  src1.readSrc();
19215 
19216  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19217  if (wf->execMask(lane)) {
19218  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
19219  }
19220  }
19221 
19222  wf->execMask() = sdst.rawData();
19223  sdst.write();
19224  } // execute
19225  // --- Inst_VOP3__V_CMPX_NLG_F32 class methods ---
19226 
19228  InFmt_VOP3A *iFmt)
19229  : Inst_VOP3A(iFmt, "v_cmpx_nlg_f32", true)
19230  {
19231  setFlag(ALU);
19232  setFlag(F32);
19233  setFlag(WritesEXEC);
19234  } // Inst_VOP3__V_CMPX_NLG_F32
19235 
19237  {
19238  } // ~Inst_VOP3__V_CMPX_NLG_F32
19239 
19240  // --- description from .arch file ---
19241  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
19242  void
19244  {
19245  Wavefront *wf = gpuDynInst->wavefront();
19246  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19247  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19248  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19249 
19250  src0.readSrc();
19251  src1.readSrc();
19252 
19253  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19254  if (wf->execMask(lane)) {
19255  sdst.setBit(lane, !(src0[lane] < src1[lane]
19256  || src0[lane] > src1[lane]) ? 1 : 0);
19257  }
19258  }
19259 
19260  wf->execMask() = sdst.rawData();
19261  sdst.write();
19262  } // execute
19263  // --- Inst_VOP3__V_CMPX_NGT_F32 class methods ---
19264 
19266  InFmt_VOP3A *iFmt)
19267  : Inst_VOP3A(iFmt, "v_cmpx_ngt_f32", true)
19268  {
19269  setFlag(ALU);
19270  setFlag(F32);
19271  setFlag(WritesEXEC);
19272  } // Inst_VOP3__V_CMPX_NGT_F32
19273 
19275  {
19276  } // ~Inst_VOP3__V_CMPX_NGT_F32
19277 
19278  // --- description from .arch file ---
19279  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
19280  void
19282  {
19283  Wavefront *wf = gpuDynInst->wavefront();
19284  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19285  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19286  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19287 
19288  src0.readSrc();
19289  src1.readSrc();
19290 
19291  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19292  if (wf->execMask(lane)) {
19293  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
19294  }
19295  }
19296 
19297  wf->execMask() = sdst.rawData();
19298  sdst.write();
19299  } // execute
19300  // --- Inst_VOP3__V_CMPX_NLE_F32 class methods ---
19301 
19303  InFmt_VOP3A *iFmt)
19304  : Inst_VOP3A(iFmt, "v_cmpx_nle_f32", true)
19305  {
19306  setFlag(ALU);
19307  setFlag(F32);
19308  setFlag(WritesEXEC);
19309  } // Inst_VOP3__V_CMPX_NLE_F32
19310 
19312  {
19313  } // ~Inst_VOP3__V_CMPX_NLE_F32
19314 
19315  // --- description from .arch file ---
19316  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
19317  void
19319  {
19320  Wavefront *wf = gpuDynInst->wavefront();
19321  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19322  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19323  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19324 
19325  src0.readSrc();
19326  src1.readSrc();
19327 
19328  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19329  if (wf->execMask(lane)) {
19330  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
19331  }
19332  }
19333 
19334  wf->execMask() = sdst.rawData();
19335  sdst.write();
19336  } // execute
19337  // --- Inst_VOP3__V_CMPX_NEQ_F32 class methods ---
19338 
19340  InFmt_VOP3A *iFmt)
19341  : Inst_VOP3A(iFmt, "v_cmpx_neq_f32", true)
19342  {
19343  setFlag(ALU);
19344  setFlag(F32);
19345  setFlag(WritesEXEC);
19346  } // Inst_VOP3__V_CMPX_NEQ_F32
19347 
19349  {
19350  } // ~Inst_VOP3__V_CMPX_NEQ_F32
19351 
19352  // --- description from .arch file ---
19353  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
19354  void
19356  {
19357  Wavefront *wf = gpuDynInst->wavefront();
19358  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19359  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19360  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19361 
19362  src0.readSrc();
19363  src1.readSrc();
19364 
19365  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19366  if (wf->execMask(lane)) {
19367  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
19368  }
19369  }
19370 
19371  wf->execMask() = sdst.rawData();
19372  sdst.write();
19373  } // execute
19374  // --- Inst_VOP3__V_CMPX_NLT_F32 class methods ---
19375 
19377  InFmt_VOP3A *iFmt)
19378  : Inst_VOP3A(iFmt, "v_cmpx_nlt_f32", true)
19379  {
19380  setFlag(ALU);
19381  setFlag(F32);
19382  setFlag(WritesEXEC);
19383  } // Inst_VOP3__V_CMPX_NLT_F32
19384 
19386  {
19387  } // ~Inst_VOP3__V_CMPX_NLT_F32
19388 
19389  // --- description from .arch file ---
19390  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
19391  void
19393  {
19394  Wavefront *wf = gpuDynInst->wavefront();
19395  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
19396  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
19397  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19398 
19399  src0.readSrc();
19400  src1.readSrc();
19401 
19402  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19403  if (wf->execMask(lane)) {
19404  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
19405  }
19406  }
19407 
19408  wf->execMask() = sdst.rawData();
19409  sdst.write();
19410  } // execute
19411  // --- Inst_VOP3__V_CMPX_TRU_F32 class methods ---
19412 
19414  InFmt_VOP3A *iFmt)
19415  : Inst_VOP3A(iFmt, "v_cmpx_tru_f32", true)
19416  {
19417  setFlag(ALU);
19418  setFlag(F32);
19419  setFlag(WritesEXEC);
19420  } // Inst_VOP3__V_CMPX_TRU_F32
19421 
19423  {
19424  } // ~Inst_VOP3__V_CMPX_TRU_F32
19425 
19426  // --- description from .arch file ---
19427  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
19428  void
19430  {
19431  Wavefront *wf = gpuDynInst->wavefront();
19432  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19433 
19434  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19435  if (wf->execMask(lane)) {
19436  sdst.setBit(lane, 1);
19437  }
19438  }
19439 
19440  wf->execMask() = sdst.rawData();
19441  sdst.write();
19442  } // execute
19443  // --- Inst_VOP3__V_CMP_F_F64 class methods ---
19444 
19446  : Inst_VOP3A(iFmt, "v_cmp_f_f64", true)
19447  {
19448  setFlag(ALU);
19449  setFlag(F64);
19450  } // Inst_VOP3__V_CMP_F_F64
19451 
19453  {
19454  } // ~Inst_VOP3__V_CMP_F_F64
19455 
19456  // --- description from .arch file ---
19457  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
19458  void
19460  {
19461  Wavefront *wf = gpuDynInst->wavefront();
19462  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19463 
19464  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19465  if (wf->execMask(lane)) {
19466  sdst.setBit(lane, 0);
19467  }
19468  }
19469 
19470  sdst.write();
19471  } // execute
19472  // --- Inst_VOP3__V_CMP_LT_F64 class methods ---
19473 
19475  InFmt_VOP3A *iFmt)
19476  : Inst_VOP3A(iFmt, "v_cmp_lt_f64", true)
19477  {
19478  setFlag(ALU);
19479  setFlag(F64);
19480  } // Inst_VOP3__V_CMP_LT_F64
19481 
19483  {
19484  } // ~Inst_VOP3__V_CMP_LT_F64
19485 
19486  // --- description from .arch file ---
19487  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
19488  void
19490  {
19491  Wavefront *wf = gpuDynInst->wavefront();
19492  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19493  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19494  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19495 
19496  src0.readSrc();
19497  src1.readSrc();
19498 
19499  if (instData.ABS & 0x1) {
19500  src0.absModifier();
19501  }
19502 
19503  if (instData.ABS & 0x2) {
19504  src1.absModifier();
19505  }
19506 
19507  if (extData.NEG & 0x1) {
19508  src0.negModifier();
19509  }
19510 
19511  if (extData.NEG & 0x2) {
19512  src1.negModifier();
19513  }
19514 
19518  assert(!(instData.ABS & 0x4));
19519  assert(!(extData.NEG & 0x4));
19520 
19521  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19522  if (wf->execMask(lane)) {
19523  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
19524  }
19525  }
19526 
19527  sdst.write();
19528  } // execute
19529  // --- Inst_VOP3__V_CMP_EQ_F64 class methods ---
19530 
19532  InFmt_VOP3A *iFmt)
19533  : Inst_VOP3A(iFmt, "v_cmp_eq_f64", true)
19534  {
19535  setFlag(ALU);
19536  setFlag(F64);
19537  } // Inst_VOP3__V_CMP_EQ_F64
19538 
19540  {
19541  } // ~Inst_VOP3__V_CMP_EQ_F64
19542 
19543  // --- description from .arch file ---
19544  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
19545  void
19547  {
19548  Wavefront *wf = gpuDynInst->wavefront();
19549  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19550  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19551  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19552 
19553  src0.readSrc();
19554  src1.readSrc();
19555 
19556  if (instData.ABS & 0x1) {
19557  src0.absModifier();
19558  }
19559 
19560  if (instData.ABS & 0x2) {
19561  src1.absModifier();
19562  }
19563 
19564  if (extData.NEG & 0x1) {
19565  src0.negModifier();
19566  }
19567 
19568  if (extData.NEG & 0x2) {
19569  src1.negModifier();
19570  }
19571 
19575  assert(!(instData.ABS & 0x4));
19576  assert(!(extData.NEG & 0x4));
19577 
19578  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19579  if (wf->execMask(lane)) {
19580  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
19581  }
19582  }
19583 
19584  sdst.write();
19585  } // execute
19586  // --- Inst_VOP3__V_CMP_LE_F64 class methods ---
19587 
19589  InFmt_VOP3A *iFmt)
19590  : Inst_VOP3A(iFmt, "v_cmp_le_f64", true)
19591  {
19592  setFlag(ALU);
19593  setFlag(F64);
19594  } // Inst_VOP3__V_CMP_LE_F64
19595 
19597  {
19598  } // ~Inst_VOP3__V_CMP_LE_F64
19599 
19600  // --- description from .arch file ---
19601  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
19602  void
19604  {
19605  Wavefront *wf = gpuDynInst->wavefront();
19606  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19607  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19608  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19609 
19610  src0.readSrc();
19611  src1.readSrc();
19612 
19613  if (instData.ABS & 0x1) {
19614  src0.absModifier();
19615  }
19616 
19617  if (instData.ABS & 0x2) {
19618  src1.absModifier();
19619  }
19620 
19621  if (extData.NEG & 0x1) {
19622  src0.negModifier();
19623  }
19624 
19625  if (extData.NEG & 0x2) {
19626  src1.negModifier();
19627  }
19628 
19632  assert(!(instData.ABS & 0x4));
19633  assert(!(extData.NEG & 0x4));
19634 
19635  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19636  if (wf->execMask(lane)) {
19637  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
19638  }
19639  }
19640 
19641  sdst.write();
19642  } // execute
19643  // --- Inst_VOP3__V_CMP_GT_F64 class methods ---
19644 
19646  InFmt_VOP3A *iFmt)
19647  : Inst_VOP3A(iFmt, "v_cmp_gt_f64", true)
19648  {
19649  setFlag(ALU);
19650  setFlag(F64);
19651  } // Inst_VOP3__V_CMP_GT_F64
19652 
19654  {
19655  } // ~Inst_VOP3__V_CMP_GT_F64
19656 
19657  // --- description from .arch file ---
19658  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
19659  void
19661  {
19662  Wavefront *wf = gpuDynInst->wavefront();
19663  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19664  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19665  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19666 
19667  src0.readSrc();
19668  src1.readSrc();
19669 
19670  if (instData.ABS & 0x1) {
19671  src0.absModifier();
19672  }
19673 
19674  if (instData.ABS & 0x2) {
19675  src1.absModifier();
19676  }
19677 
19678  if (extData.NEG & 0x1) {
19679  src0.negModifier();
19680  }
19681 
19682  if (extData.NEG & 0x2) {
19683  src1.negModifier();
19684  }
19685 
19689  assert(!(instData.ABS & 0x4));
19690  assert(!(extData.NEG & 0x4));
19691 
19692  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19693  if (wf->execMask(lane)) {
19694  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
19695  }
19696  }
19697 
19698  sdst.write();
19699  } // execute
19700  // --- Inst_VOP3__V_CMP_LG_F64 class methods ---
19701 
19703  InFmt_VOP3A *iFmt)
19704  : Inst_VOP3A(iFmt, "v_cmp_lg_f64", true)
19705  {
19706  setFlag(ALU);
19707  setFlag(F64);
19708  } // Inst_VOP3__V_CMP_LG_F64
19709 
19711  {
19712  } // ~Inst_VOP3__V_CMP_LG_F64
19713 
19714  // --- description from .arch file ---
19715  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
19716  void
19718  {
19719  Wavefront *wf = gpuDynInst->wavefront();
19720  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19721  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19722  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19723 
19724  src0.readSrc();
19725  src1.readSrc();
19726 
19727  if (instData.ABS & 0x1) {
19728  src0.absModifier();
19729  }
19730 
19731  if (instData.ABS & 0x2) {
19732  src1.absModifier();
19733  }
19734 
19735  if (extData.NEG & 0x1) {
19736  src0.negModifier();
19737  }
19738 
19739  if (extData.NEG & 0x2) {
19740  src1.negModifier();
19741  }
19742 
19746  assert(!(instData.ABS & 0x4));
19747  assert(!(extData.NEG & 0x4));
19748 
19749  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19750  if (wf->execMask(lane)) {
19751  sdst.setBit(lane, (src0[lane] < src1[lane]
19752  || src0[lane] > src1[lane]) ? 1 : 0);
19753  }
19754  }
19755 
19756  sdst.write();
19757  } // execute
19758  // --- Inst_VOP3__V_CMP_GE_F64 class methods ---
19759 
19761  InFmt_VOP3A *iFmt)
19762  : Inst_VOP3A(iFmt, "v_cmp_ge_f64", true)
19763  {
19764  setFlag(ALU);
19765  setFlag(F64);
19766  } // Inst_VOP3__V_CMP_GE_F64
19767 
19769  {
19770  } // ~Inst_VOP3__V_CMP_GE_F64
19771 
19772  // --- description from .arch file ---
19773  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
19774  void
19776  {
19777  Wavefront *wf = gpuDynInst->wavefront();
19778  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19779  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19780  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19781 
19782  src0.readSrc();
19783  src1.readSrc();
19784 
19785  if (instData.ABS & 0x1) {
19786  src0.absModifier();
19787  }
19788 
19789  if (instData.ABS & 0x2) {
19790  src1.absModifier();
19791  }
19792 
19793  if (extData.NEG & 0x1) {
19794  src0.negModifier();
19795  }
19796 
19797  if (extData.NEG & 0x2) {
19798  src1.negModifier();
19799  }
19800 
19804  assert(!(instData.ABS & 0x4));
19805  assert(!(extData.NEG & 0x4));
19806 
19807  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19808  if (wf->execMask(lane)) {
19809  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
19810  }
19811  }
19812 
19813  sdst.write();
19814  } // execute
19815  // --- Inst_VOP3__V_CMP_O_F64 class methods ---
19816 
19818  : Inst_VOP3A(iFmt, "v_cmp_o_f64", true)
19819  {
19820  setFlag(ALU);
19821  setFlag(F64);
19822  } // Inst_VOP3__V_CMP_O_F64
19823 
19825  {
19826  } // ~Inst_VOP3__V_CMP_O_F64
19827 
19828  // --- description from .arch file ---
19829  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
19830  void
19832  {
19833  Wavefront *wf = gpuDynInst->wavefront();
19834  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19835  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19836  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19837 
19838  src0.readSrc();
19839  src1.readSrc();
19840 
19841  if (instData.ABS & 0x1) {
19842  src0.absModifier();
19843  }
19844 
19845  if (instData.ABS & 0x2) {
19846  src1.absModifier();
19847  }
19848 
19849  if (extData.NEG & 0x1) {
19850  src0.negModifier();
19851  }
19852 
19853  if (extData.NEG & 0x2) {
19854  src1.negModifier();
19855  }
19856 
19860  assert(!(instData.ABS & 0x4));
19861  assert(!(extData.NEG & 0x4));
19862 
19863  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19864  if (wf->execMask(lane)) {
19865  sdst.setBit(lane, (!std::isnan(src0[lane])
19866  && !std::isnan(src1[lane])) ? 1 : 0);
19867  }
19868  }
19869 
19870  sdst.write();
19871  } // execute
19872  // --- Inst_VOP3__V_CMP_U_F64 class methods ---
19873 
19875  : Inst_VOP3A(iFmt, "v_cmp_u_f64", true)
19876  {
19877  setFlag(ALU);
19878  setFlag(F64);
19879  } // Inst_VOP3__V_CMP_U_F64
19880 
19882  {
19883  } // ~Inst_VOP3__V_CMP_U_F64
19884 
19885  // --- description from .arch file ---
19886  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
19887  void
19889  {
19890  Wavefront *wf = gpuDynInst->wavefront();
19891  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19892  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19893  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19894 
19895  src0.readSrc();
19896  src1.readSrc();
19897 
19898  if (instData.ABS & 0x1) {
19899  src0.absModifier();
19900  }
19901 
19902  if (instData.ABS & 0x2) {
19903  src1.absModifier();
19904  }
19905 
19906  if (extData.NEG & 0x1) {
19907  src0.negModifier();
19908  }
19909 
19910  if (extData.NEG & 0x2) {
19911  src1.negModifier();
19912  }
19913 
19917  assert(!(instData.ABS & 0x4));
19918  assert(!(extData.NEG & 0x4));
19919 
19920  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19921  if (wf->execMask(lane)) {
19922  sdst.setBit(lane, (std::isnan(src0[lane])
19923  || std::isnan(src1[lane])) ? 1 : 0);
19924  }
19925  }
19926 
19927  sdst.write();
19928  } // execute
19929  // --- Inst_VOP3__V_CMP_NGE_F64 class methods ---
19930 
19932  InFmt_VOP3A *iFmt)
19933  : Inst_VOP3A(iFmt, "v_cmp_nge_f64", true)
19934  {
19935  setFlag(ALU);
19936  setFlag(F64);
19937  } // Inst_VOP3__V_CMP_NGE_F64
19938 
19940  {
19941  } // ~Inst_VOP3__V_CMP_NGE_F64
19942 
19943  // --- description from .arch file ---
19944  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
19945  void
19947  {
19948  Wavefront *wf = gpuDynInst->wavefront();
19949  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19950  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19951  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19952 
19953  src0.readSrc();
19954  src1.readSrc();
19955 
19956  if (instData.ABS & 0x1) {
19957  src0.absModifier();
19958  }
19959 
19960  if (instData.ABS & 0x2) {
19961  src1.absModifier();
19962  }
19963 
19964  if (extData.NEG & 0x1) {
19965  src0.negModifier();
19966  }
19967 
19968  if (extData.NEG & 0x2) {
19969  src1.negModifier();
19970  }
19971 
19975  assert(!(instData.ABS & 0x4));
19976  assert(!(extData.NEG & 0x4));
19977 
19978  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19979  if (wf->execMask(lane)) {
19980  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
19981  }
19982  }
19983 
19984  sdst.write();
19985  } // execute
19986  // --- Inst_VOP3__V_CMP_NLG_F64 class methods ---
19987 
19989  InFmt_VOP3A *iFmt)
19990  : Inst_VOP3A(iFmt, "v_cmp_nlg_f64", true)
19991  {
19992  setFlag(ALU);
19993  setFlag(F64);
19994  } // Inst_VOP3__V_CMP_NLG_F64
19995 
19997  {
19998  } // ~Inst_VOP3__V_CMP_NLG_F64
19999 
20000  // --- description from .arch file ---
20001  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
20002  void
20004  {
20005  Wavefront *wf = gpuDynInst->wavefront();
20006  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20007  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20008  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20009 
20010  src0.readSrc();
20011  src1.readSrc();
20012 
20013  if (instData.ABS & 0x1) {
20014  src0.absModifier();
20015  }
20016 
20017  if (instData.ABS & 0x2) {
20018  src1.absModifier();
20019  }
20020 
20021  if (extData.NEG & 0x1) {
20022  src0.negModifier();
20023  }
20024 
20025  if (extData.NEG & 0x2) {
20026  src1.negModifier();
20027  }
20028 
20032  assert(!(instData.ABS & 0x4));
20033  assert(!(extData.NEG & 0x4));
20034 
20035  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20036  if (wf->execMask(lane)) {
20037  sdst.setBit(lane, !(src0[lane] < src1[lane]
20038  || src0[lane] > src1[lane]) ? 1 : 0);
20039  }
20040  }
20041 
20042  sdst.write();
20043  } // execute
20044  // --- Inst_VOP3__V_CMP_NGT_F64 class methods ---
20045 
20047  InFmt_VOP3A *iFmt)
20048  : Inst_VOP3A(iFmt, "v_cmp_ngt_f64", true)
20049  {
20050  setFlag(ALU);
20051  setFlag(F64);
20052  } // Inst_VOP3__V_CMP_NGT_F64
20053 
20055  {
20056  } // ~Inst_VOP3__V_CMP_NGT_F64
20057 
20058  // --- description from .arch file ---
20059  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
20060  void
20062  {
20063  Wavefront *wf = gpuDynInst->wavefront();
20064  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20065  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20066  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20067 
20068  src0.readSrc();
20069  src1.readSrc();
20070 
20071  if (instData.ABS & 0x1) {
20072  src0.absModifier();
20073  }
20074 
20075  if (instData.ABS & 0x2) {
20076  src1.absModifier();
20077  }
20078 
20079  if (extData.NEG & 0x1) {
20080  src0.negModifier();
20081  }
20082 
20083  if (extData.NEG & 0x2) {
20084  src1.negModifier();
20085  }
20086 
20090  assert(!(instData.ABS & 0x4));
20091  assert(!(extData.NEG & 0x4));
20092 
20093  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20094  if (wf->execMask(lane)) {
20095  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
20096  }
20097  }
20098 
20099  sdst.write();
20100  } // execute
20101  // --- Inst_VOP3__V_CMP_NLE_F64 class methods ---
20102 
20104  InFmt_VOP3A *iFmt)
20105  : Inst_VOP3A(iFmt, "v_cmp_nle_f64", true)
20106  {
20107  setFlag(ALU);
20108  setFlag(F64);
20109  } // Inst_VOP3__V_CMP_NLE_F64
20110 
20112  {
20113  } // ~Inst_VOP3__V_CMP_NLE_F64
20114 
20115  // --- description from .arch file ---
20116  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
20117  void
20119  {
20120  Wavefront *wf = gpuDynInst->wavefront();
20121  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20122  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20123  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20124 
20125  src0.readSrc();
20126  src1.readSrc();
20127 
20128  if (instData.ABS & 0x1) {
20129  src0.absModifier();
20130  }
20131 
20132  if (instData.ABS & 0x2) {
20133  src1.absModifier();
20134  }
20135 
20136  if (extData.NEG & 0x1) {
20137  src0.negModifier();
20138  }
20139 
20140  if (extData.NEG & 0x2) {
20141  src1.negModifier();
20142  }
20143 
20147  assert(!(instData.ABS & 0x4));
20148  assert(!(extData.NEG & 0x4));
20149 
20150  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20151  if (wf->execMask(lane)) {
20152  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
20153  }
20154  }
20155 
20156  sdst.write();
20157  } // execute
20158  // --- Inst_VOP3__V_CMP_NEQ_F64 class methods ---
20159 
20161  InFmt_VOP3A *iFmt)
20162  : Inst_VOP3A(iFmt, "v_cmp_neq_f64", true)
20163  {
20164  setFlag(ALU);
20165  setFlag(F64);
20166  } // Inst_VOP3__V_CMP_NEQ_F64
20167 
20169  {
20170  } // ~Inst_VOP3__V_CMP_NEQ_F64
20171 
20172  // --- description from .arch file ---
20173  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
20174  void
20176  {
20177  Wavefront *wf = gpuDynInst->wavefront();
20178  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20179  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20180  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20181 
20182  src0.readSrc();
20183  src1.readSrc();
20184 
20185  if (instData.ABS & 0x1) {
20186  src0.absModifier();
20187  }
20188 
20189  if (instData.ABS & 0x2) {
20190  src1.absModifier();
20191  }
20192 
20193  if (extData.NEG & 0x1) {
20194  src0.negModifier();
20195  }
20196 
20197  if (extData.NEG & 0x2) {
20198  src1.negModifier();
20199  }
20200 
20204  assert(!(instData.ABS & 0x4));
20205  assert(!(extData.NEG & 0x4));
20206 
20207  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20208  if (wf->execMask(lane)) {
20209  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
20210  }
20211  }
20212 
20213  sdst.write();
20214  } // execute
20215  // --- Inst_VOP3__V_CMP_NLT_F64 class methods ---
20216 
20218  InFmt_VOP3A *iFmt)
20219  : Inst_VOP3A(iFmt, "v_cmp_nlt_f64", true)
20220  {
20221  setFlag(ALU);
20222  setFlag(F64);
20223  } // Inst_VOP3__V_CMP_NLT_F64
20224 
20226  {
20227  } // ~Inst_VOP3__V_CMP_NLT_F64
20228 
20229  // --- description from .arch file ---
20230  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
20231  void
20233  {
20234  Wavefront *wf = gpuDynInst->wavefront();
20235  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20236  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20237  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20238 
20239  src0.readSrc();
20240  src1.readSrc();
20241 
20242  if (instData.ABS & 0x1) {
20243  src0.absModifier();
20244  }
20245 
20246  if (instData.ABS & 0x2) {
20247  src1.absModifier();
20248  }
20249 
20250  if (extData.NEG & 0x1) {
20251  src0.negModifier();
20252  }
20253 
20254  if (extData.NEG & 0x2) {
20255  src1.negModifier();
20256  }
20257 
20261  assert(!(instData.ABS & 0x4));
20262  assert(!(extData.NEG & 0x4));
20263 
20264  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20265  if (wf->execMask(lane)) {
20266  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
20267  }
20268  }
20269 
20270  sdst.write();
20271  } // execute
20272  // --- Inst_VOP3__V_CMP_TRU_F64 class methods ---
20273 
20275  InFmt_VOP3A *iFmt)
20276  : Inst_VOP3A(iFmt, "v_cmp_tru_f64", true)
20277  {
20278  setFlag(ALU);
20279  setFlag(F64);
20280  } // Inst_VOP3__V_CMP_TRU_F64
20281 
20283  {
20284  } // ~Inst_VOP3__V_CMP_TRU_F64
20285 
20286  // --- description from .arch file ---
20287  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
20288  void
20290  {
20291  Wavefront *wf = gpuDynInst->wavefront();
20292  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20293 
20294  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20295  if (wf->execMask(lane)) {
20296  sdst.setBit(lane, 1);
20297  }
20298  }
20299 
20300  sdst.write();
20301  } // execute
20302  // --- Inst_VOP3__V_CMPX_F_F64 class methods ---
20303 
20305  InFmt_VOP3A *iFmt)
20306  : Inst_VOP3A(iFmt, "v_cmpx_f_f64", true)
20307  {
20308  setFlag(ALU);
20309  setFlag(F64);
20310  setFlag(WritesEXEC);
20311  } // Inst_VOP3__V_CMPX_F_F64
20312 
20314  {
20315  } // ~Inst_VOP3__V_CMPX_F_F64
20316 
20317  // --- description from .arch file ---
20318  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
20319  void
20321  {
20322  Wavefront *wf = gpuDynInst->wavefront();
20323  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20324 
20325  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20326  if (wf->execMask(lane)) {
20327  sdst.setBit(lane, 0);
20328  }
20329  }
20330 
20331  wf->execMask() = sdst.rawData();
20332  sdst.write();
20333  } // execute
20334  // --- Inst_VOP3__V_CMPX_LT_F64 class methods ---
20335 
20337  InFmt_VOP3A *iFmt)
20338  : Inst_VOP3A(iFmt, "v_cmpx_lt_f64", true)
20339  {
20340  setFlag(ALU);
20341  setFlag(F64);
20342  setFlag(WritesEXEC);
20343  } // Inst_VOP3__V_CMPX_LT_F64
20344 
20346  {
20347  } // ~Inst_VOP3__V_CMPX_LT_F64
20348 
20349  // --- description from .arch file ---
20350  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20351  void
20353  {
20354  Wavefront *wf = gpuDynInst->wavefront();
20355  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20356  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20357  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20358 
20359  src0.readSrc();
20360  src1.readSrc();
20361 
20362  if (instData.ABS & 0x1) {
20363  src0.absModifier();
20364  }
20365 
20366  if (instData.ABS & 0x2) {
20367  src1.absModifier();
20368  }
20369 
20370  if (extData.NEG & 0x1) {
20371  src0.negModifier();
20372  }
20373 
20374  if (extData.NEG & 0x2) {
20375  src1.negModifier();
20376  }
20377 
20381  assert(!(instData.ABS & 0x4));
20382  assert(!(extData.NEG & 0x4));
20383 
20384  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20385  if (wf->execMask(lane)) {
20386  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
20387  }
20388  }
20389 
20390  wf->execMask() = sdst.rawData();
20391  sdst.write();
20392  } // execute
20393  // --- Inst_VOP3__V_CMPX_EQ_F64 class methods ---
20394 
20396  InFmt_VOP3A *iFmt)
20397  : Inst_VOP3A(iFmt, "v_cmpx_eq_f64", true)
20398  {
20399  setFlag(ALU);
20400  setFlag(F64);
20401  setFlag(WritesEXEC);
20402  } // Inst_VOP3__V_CMPX_EQ_F64
20403 
20405  {
20406  } // ~Inst_VOP3__V_CMPX_EQ_F64
20407 
20408  // --- description from .arch file ---
20409  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
20410  void
20412  {
20413  Wavefront *wf = gpuDynInst->wavefront();
20414  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20415  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20416  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20417 
20418  src0.readSrc();
20419  src1.readSrc();
20420 
20421  if (instData.ABS & 0x1) {
20422  src0.absModifier();
20423  }
20424 
20425  if (instData.ABS & 0x2) {
20426  src1.absModifier();
20427  }
20428 
20429  if (extData.NEG & 0x1) {
20430  src0.negModifier();
20431  }
20432 
20433  if (extData.NEG & 0x2) {
20434  src1.negModifier();
20435  }
20436 
20440  assert(!(instData.ABS & 0x4));
20441  assert(!(extData.NEG & 0x4));
20442 
20443  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20444  if (wf->execMask(lane)) {
20445  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
20446  }
20447  }
20448 
20449  wf->execMask() = sdst.rawData();
20450  sdst.write();
20451  } // execute
20452  // --- Inst_VOP3__V_CMPX_LE_F64 class methods ---
20453 
20455  InFmt_VOP3A *iFmt)
20456  : Inst_VOP3A(iFmt, "v_cmpx_le_f64", true)
20457  {
20458  setFlag(ALU);
20459  setFlag(F64);
20460  setFlag(WritesEXEC);
20461  } // Inst_VOP3__V_CMPX_LE_F64
20462 
20464  {
20465  } // ~Inst_VOP3__V_CMPX_LE_F64
20466 
20467  // --- description from .arch file ---
20468  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
20469  void
20471  {
20472  Wavefront *wf = gpuDynInst->wavefront();
20473  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20474  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20475  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20476 
20477  src0.readSrc();
20478  src1.readSrc();
20479 
20480  if (instData.ABS & 0x1) {
20481  src0.absModifier();
20482  }
20483 
20484  if (instData.ABS & 0x2) {
20485  src1.absModifier();
20486  }
20487 
20488  if (extData.NEG & 0x1) {
20489  src0.negModifier();
20490  }
20491 
20492  if (extData.NEG & 0x2) {
20493  src1.negModifier();
20494  }
20495 
20499  assert(!(instData.ABS & 0x4));
20500  assert(!(extData.NEG & 0x4));
20501 
20502  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20503  if (wf->execMask(lane)) {
20504  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
20505  }
20506  }
20507 
20508  wf->execMask() = sdst.rawData();
20509  sdst.write();
20510  } // execute
20511  // --- Inst_VOP3__V_CMPX_GT_F64 class methods ---
20512 
20514  InFmt_VOP3A *iFmt)
20515  : Inst_VOP3A(iFmt, "v_cmpx_gt_f64", true)
20516  {
20517  setFlag(ALU);
20518  setFlag(F64);
20519  setFlag(WritesEXEC);
20520  } // Inst_VOP3__V_CMPX_GT_F64
20521 
20523  {
20524  } // ~Inst_VOP3__V_CMPX_GT_F64
20525 
20526  // --- description from .arch file ---
20527  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
20528  void
20530  {
20531  Wavefront *wf = gpuDynInst->wavefront();
20532  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20533  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20534  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20535 
20536  src0.readSrc();
20537  src1.readSrc();
20538 
20539  if (instData.ABS & 0x1) {
20540  src0.absModifier();
20541  }
20542 
20543  if (instData.ABS & 0x2) {
20544  src1.absModifier();
20545  }
20546 
20547  if (extData.NEG & 0x1) {
20548  src0.negModifier();
20549  }
20550 
20551  if (extData.NEG & 0x2) {
20552  src1.negModifier();
20553  }
20554 
20558  assert(!(instData.ABS & 0x4));
20559  assert(!(extData.NEG & 0x4));
20560 
20561  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20562  if (wf->execMask(lane)) {
20563  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
20564  }
20565  }
20566 
20567  wf->execMask() = sdst.rawData();
20568  sdst.write();
20569  } // execute
20570  // --- Inst_VOP3__V_CMPX_LG_F64 class methods ---
20571 
20573  InFmt_VOP3A *iFmt)
20574  : Inst_VOP3A(iFmt, "v_cmpx_lg_f64", true)
20575  {
20576  setFlag(ALU);
20577  setFlag(F64);
20578  setFlag(WritesEXEC);
20579  } // Inst_VOP3__V_CMPX_LG_F64
20580 
20582  {
20583  } // ~Inst_VOP3__V_CMPX_LG_F64
20584 
20585  // --- description from .arch file ---
20586  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
20587  void
20589  {
20590  Wavefront *wf = gpuDynInst->wavefront();
20591  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20592  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20593  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20594 
20595  src0.readSrc();
20596  src1.readSrc();
20597 
20598  if (instData.ABS & 0x1) {
20599  src0.absModifier();
20600  }
20601 
20602  if (instData.ABS & 0x2) {
20603  src1.absModifier();
20604  }
20605 
20606  if (extData.NEG & 0x1) {
20607  src0.negModifier();
20608  }
20609 
20610  if (extData.NEG & 0x2) {
20611  src1.negModifier();
20612  }
20613 
20617  assert(!(instData.ABS & 0x4));
20618  assert(!(extData.NEG & 0x4));
20619 
20620  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20621  if (wf->execMask(lane)) {
20622  sdst.setBit(lane, (src0[lane] < src1[lane]
20623  || src0[lane] > src1[lane]) ? 1 : 0);
20624  }
20625  }
20626 
20627  wf->execMask() = sdst.rawData();
20628  sdst.write();
20629  } // execute
20630  // --- Inst_VOP3__V_CMPX_GE_F64 class methods ---
20631 
20633  InFmt_VOP3A *iFmt)
20634  : Inst_VOP3A(iFmt, "v_cmpx_ge_f64", true)
20635  {
20636  setFlag(ALU);
20637  setFlag(F64);
20638  setFlag(WritesEXEC);
20639  } // Inst_VOP3__V_CMPX_GE_F64
20640 
20642  {
20643  } // ~Inst_VOP3__V_CMPX_GE_F64
20644 
20645  // --- description from .arch file ---
20646  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
20647  void
20649  {
20650  Wavefront *wf = gpuDynInst->wavefront();
20651  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20652  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20653  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20654 
20655  src0.readSrc();
20656  src1.readSrc();
20657 
20658  if (instData.ABS & 0x1) {
20659  src0.absModifier();
20660  }
20661 
20662  if (instData.ABS & 0x2) {
20663  src1.absModifier();
20664  }
20665 
20666  if (extData.NEG & 0x1) {
20667  src0.negModifier();
20668  }
20669 
20670  if (extData.NEG & 0x2) {
20671  src1.negModifier();
20672  }
20673 
20677  assert(!(instData.ABS & 0x4));
20678  assert(!(extData.NEG & 0x4));
20679 
20680  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20681  if (wf->execMask(lane)) {
20682  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
20683  }
20684  }
20685 
20686  wf->execMask() = sdst.rawData();
20687  sdst.write();
20688  } // execute
20689  // --- Inst_VOP3__V_CMPX_O_F64 class methods ---
20690 
20692  InFmt_VOP3A *iFmt)
20693  : Inst_VOP3A(iFmt, "v_cmpx_o_f64", true)
20694  {
20695  setFlag(ALU);
20696  setFlag(F64);
20697  setFlag(WritesEXEC);
20698  } // Inst_VOP3__V_CMPX_O_F64
20699 
20701  {
20702  } // ~Inst_VOP3__V_CMPX_O_F64
20703 
20704  // --- description from .arch file ---
20705  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
20706  // encoding.
20707  void
20709  {
20710  Wavefront *wf = gpuDynInst->wavefront();
20711  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20712  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20713  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20714 
20715  src0.readSrc();
20716  src1.readSrc();
20717 
20718  if (instData.ABS & 0x1) {
20719  src0.absModifier();
20720  }
20721 
20722  if (instData.ABS & 0x2) {
20723  src1.absModifier();
20724  }
20725 
20726  if (extData.NEG & 0x1) {
20727  src0.negModifier();
20728  }
20729 
20730  if (extData.NEG & 0x2) {
20731  src1.negModifier();
20732  }
20733 
20737  assert(!(instData.ABS & 0x4));
20738  assert(!(extData.NEG & 0x4));
20739 
20740  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20741  if (wf->execMask(lane)) {
20742  sdst.setBit(lane, (!std::isnan(src0[lane])
20743  && !std::isnan(src1[lane])) ? 1 : 0);
20744  }
20745  }
20746 
20747  wf->execMask() = sdst.rawData();
20748  sdst.write();
20749  } // execute
20750  // --- Inst_VOP3__V_CMPX_U_F64 class methods ---
20751 
20753  InFmt_VOP3A *iFmt)
20754  : Inst_VOP3A(iFmt, "v_cmpx_u_f64", true)
20755  {
20756  setFlag(ALU);
20757  setFlag(F64);
20758  setFlag(WritesEXEC);
20759  } // Inst_VOP3__V_CMPX_U_F64
20760 
20762  {
20763  } // ~Inst_VOP3__V_CMPX_U_F64
20764 
20765  // --- description from .arch file ---
20766  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
20767  // encoding.
20768  void
20770  {
20771  Wavefront *wf = gpuDynInst->wavefront();
20772  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20773  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20774  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20775 
20776  src0.readSrc();
20777  src1.readSrc();
20778 
20779  if (instData.ABS & 0x1) {
20780  src0.absModifier();
20781  }
20782 
20783  if (instData.ABS & 0x2) {
20784  src1.absModifier();
20785  }
20786 
20787  if (extData.NEG & 0x1) {
20788  src0.negModifier();
20789  }
20790 
20791  if (extData.NEG & 0x2) {
20792  src1.negModifier();
20793  }
20794 
20798  assert(!(instData.ABS & 0x4));
20799  assert(!(extData.NEG & 0x4));
20800 
20801  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20802  if (wf->execMask(lane)) {
20803  sdst.setBit(lane, (std::isnan(src0[lane])
20804  || std::isnan(src1[lane])) ? 1 : 0);
20805  }
20806  }
20807 
20808  wf->execMask() = sdst.rawData();
20809  sdst.write();
20810  } // execute
20811  // --- Inst_VOP3__V_CMPX_NGE_F64 class methods ---
20812 
20814  InFmt_VOP3A *iFmt)
20815  : Inst_VOP3A(iFmt, "v_cmpx_nge_f64", true)
20816  {
20817  setFlag(ALU);
20818  setFlag(F64);
20819  setFlag(WritesEXEC);
20820  } // Inst_VOP3__V_CMPX_NGE_F64
20821 
20823  {
20824  } // ~Inst_VOP3__V_CMPX_NGE_F64
20825 
20826  // --- description from .arch file ---
20827  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
20828  void
20830  {
20831  Wavefront *wf = gpuDynInst->wavefront();
20832  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20833  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20834  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20835 
20836  src0.readSrc();
20837  src1.readSrc();
20838 
20839  if (instData.ABS & 0x1) {
20840  src0.absModifier();
20841  }
20842 
20843  if (instData.ABS & 0x2) {
20844  src1.absModifier();
20845  }
20846 
20847  if (extData.NEG & 0x1) {
20848  src0.negModifier();
20849  }
20850 
20851  if (extData.NEG & 0x2) {
20852  src1.negModifier();
20853  }
20854 
20858  assert(!(instData.ABS & 0x4));
20859  assert(!(extData.NEG & 0x4));
20860 
20861  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20862  if (wf->execMask(lane)) {
20863  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
20864  }
20865  }
20866 
20867  wf->execMask() = sdst.rawData();
20868  sdst.write();
20869  } // execute
20870  // --- Inst_VOP3__V_CMPX_NLG_F64 class methods ---
20871 
20873  InFmt_VOP3A *iFmt)
20874  : Inst_VOP3A(iFmt, "v_cmpx_nlg_f64", true)
20875  {
20876  setFlag(ALU);
20877  setFlag(F64);
20878  setFlag(WritesEXEC);
20879  } // Inst_VOP3__V_CMPX_NLG_F64
20880 
20882  {
20883  } // ~Inst_VOP3__V_CMPX_NLG_F64
20884 
20885  // --- description from .arch file ---
20886  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
20887  void
20889  {
20890  Wavefront *wf = gpuDynInst->wavefront();
20891  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20892  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20893  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20894 
20895  src0.readSrc();
20896  src1.readSrc();
20897 
20898  if (instData.ABS & 0x1) {
20899  src0.absModifier();
20900  }
20901 
20902  if (instData.ABS & 0x2) {
20903  src1.absModifier();
20904  }
20905 
20906  if (extData.NEG & 0x1) {
20907  src0.negModifier();
20908  }
20909 
20910  if (extData.NEG & 0x2) {
20911  src1.negModifier();
20912  }
20913 
20917  assert(!(instData.ABS & 0x4));
20918  assert(!(extData.NEG & 0x4));
20919 
20920  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20921  if (wf->execMask(lane)) {
20922  sdst.setBit(lane, !(src0[lane] < src1[lane]
20923  || src0[lane] > src1[lane]) ? 1 : 0);
20924  }
20925  }
20926 
20927  wf->execMask() = sdst.rawData();
20928  sdst.write();
20929  } // execute
20930  // --- Inst_VOP3__V_CMPX_NGT_F64 class methods ---
20931 
20933  InFmt_VOP3A *iFmt)
20934  : Inst_VOP3A(iFmt, "v_cmpx_ngt_f64", true)
20935  {
20936  setFlag(ALU);
20937  setFlag(F64);
20938  setFlag(WritesEXEC);
20939  } // Inst_VOP3__V_CMPX_NGT_F64
20940 
20942  {
20943  } // ~Inst_VOP3__V_CMPX_NGT_F64
20944 
20945  // --- description from .arch file ---
20946  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
20947  void
20949  {
20950  Wavefront *wf = gpuDynInst->wavefront();
20951  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
20952  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
20953  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20954 
20955  src0.readSrc();
20956  src1.readSrc();
20957 
20958  if (instData.ABS & 0x1) {
20959  src0.absModifier();
20960  }
20961 
20962  if (instData.ABS & 0x2) {
20963  src1.absModifier();
20964  }
20965 
20966  if (extData.NEG & 0x1) {
20967  src0.negModifier();
20968  }
20969 
20970  if (extData.NEG & 0x2) {
20971  src1.negModifier();
20972  }
20973 
20977  assert(!(instData.ABS & 0x4));
20978  assert(!(extData.NEG & 0x4));
20979 
20980  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20981  if (wf->execMask(lane)) {
20982  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
20983  }
20984  }
20985 
20986  wf->execMask() = sdst.rawData();
20987  sdst.write();
20988  } // execute
20989  // --- Inst_VOP3__V_CMPX_NLE_F64 class methods ---
20990 
20992  InFmt_VOP3A *iFmt)
20993  : Inst_VOP3A(iFmt, "v_cmpx_nle_f64", true)
20994  {
20995  setFlag(ALU);
20996  setFlag(F64);
20997  setFlag(WritesEXEC);
20998  } // Inst_VOP3__V_CMPX_NLE_F64
20999 
21001  {
21002  } // ~Inst_VOP3__V_CMPX_NLE_F64
21003 
21004  // --- description from .arch file ---
21005  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
21006  void
21008  {
21009  Wavefront *wf = gpuDynInst->wavefront();
21010  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
21011  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
21012  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21013 
21014  src0.readSrc();
21015  src1.readSrc();
21016 
21017  if (instData.ABS & 0x1) {
21018  src0.absModifier();
21019  }
21020 
21021  if (instData.ABS & 0x2) {
21022  src1.absModifier();
21023  }
21024 
21025  if (extData.NEG & 0x1) {
21026  src0.negModifier();
21027  }
21028 
21029  if (extData.NEG & 0x2) {
21030  src1.negModifier();
21031  }
21032 
21036  assert(!(instData.ABS & 0x4));
21037  assert(!(extData.NEG & 0x4));
21038 
21039  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21040  if (wf->execMask(lane)) {
21041  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
21042  }
21043  }
21044 
21045  wf->execMask() = sdst.rawData();
21046  sdst.write();
21047  } // execute
21048  // --- Inst_VOP3__V_CMPX_NEQ_F64 class methods ---
21049 
21051  InFmt_VOP3A *iFmt)
21052  : Inst_VOP3A(iFmt, "v_cmpx_neq_f64", true)
21053  {
21054  setFlag(ALU);
21055  setFlag(F64);
21056  setFlag(WritesEXEC);
21057  } // Inst_VOP3__V_CMPX_NEQ_F64
21058 
21060  {
21061  } // ~Inst_VOP3__V_CMPX_NEQ_F64
21062 
21063  // --- description from .arch file ---
21064  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
21065  void
21067  {
21068  Wavefront *wf = gpuDynInst->wavefront();
21069  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
21070  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
21071  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21072 
21073  src0.readSrc();
21074  src1.readSrc();
21075 
21076  if (instData.ABS & 0x1) {
21077  src0.absModifier();
21078  }
21079 
21080  if (instData.ABS & 0x2) {
21081  src1.absModifier();
21082  }
21083 
21084  if (extData.NEG & 0x1) {
21085  src0.negModifier();
21086  }
21087 
21088  if (extData.NEG & 0x2) {
21089  src1.negModifier();
21090  }
21091 
21095  assert(!(instData.ABS & 0x4));
21096  assert(!(extData.NEG & 0x4));
21097 
21098  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21099  if (wf->execMask(lane)) {
21100  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21101  }
21102  }
21103 
21104  wf->execMask() = sdst.rawData();
21105  sdst.write();
21106  } // execute
21107  // --- Inst_VOP3__V_CMPX_NLT_F64 class methods ---
21108 
21110  InFmt_VOP3A *iFmt)
21111  : Inst_VOP3A(iFmt, "v_cmpx_nlt_f64", true)
21112  {
21113  setFlag(ALU);
21114  setFlag(F64);
21115  setFlag(WritesEXEC);
21116  } // Inst_VOP3__V_CMPX_NLT_F64
21117 
21119  {
21120  } // ~Inst_VOP3__V_CMPX_NLT_F64
21121 
21122  // --- description from .arch file ---
21123  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
21124  void
21126  {
21127  Wavefront *wf = gpuDynInst->wavefront();
21128  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
21129  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
21130  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21131 
21132  src0.readSrc();
21133  src1.readSrc();
21134 
21135  if (instData.ABS & 0x1) {
21136  src0.absModifier();
21137  }
21138 
21139  if (instData.ABS & 0x2) {
21140  src1.absModifier();
21141  }
21142 
21143  if (extData.NEG & 0x1) {
21144  src0.negModifier();
21145  }
21146 
21147  if (extData.NEG & 0x2) {
21148  src1.negModifier();
21149  }
21150 
21154  assert(!(instData.ABS & 0x4));
21155  assert(!(extData.NEG & 0x4));
21156 
21157  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21158  if (wf->execMask(lane)) {
21159  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
21160  }
21161  }
21162 
21163  wf->execMask() = sdst.rawData();
21164  sdst.write();
21165  } // execute
21166  // --- Inst_VOP3__V_CMPX_TRU_F64 class methods ---
21167 
21169  InFmt_VOP3A *iFmt)
21170  : Inst_VOP3A(iFmt, "v_cmpx_tru_f64", true)
21171  {
21172  setFlag(ALU);
21173  setFlag(F64);
21174  setFlag(WritesEXEC);
21175  } // Inst_VOP3__V_CMPX_TRU_F64
21176 
21178  {
21179  } // ~Inst_VOP3__V_CMPX_TRU_F64
21180 
21181  // --- description from .arch file ---
21182  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
21183  void
21185  {
21186  Wavefront *wf = gpuDynInst->wavefront();
21187  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21188 
21189  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21190  if (wf->execMask(lane)) {
21191  sdst.setBit(lane, 1);
21192  }
21193  }
21194 
21195  wf->execMask() = sdst.rawData();
21196  sdst.write();
21197  } // execute
21198  // --- Inst_VOP3__V_CMP_F_I16 class methods ---
21199 
21201  : Inst_VOP3A(iFmt, "v_cmp_f_i16", true)
21202  {
21203  setFlag(ALU);
21204  } // Inst_VOP3__V_CMP_F_I16
21205 
21207  {
21208  } // ~Inst_VOP3__V_CMP_F_I16
21209 
21210  // --- description from .arch file ---
21211  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
21212  void
21214  {
21215  Wavefront *wf = gpuDynInst->wavefront();
21216  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21217 
21218  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21219  if (wf->execMask(lane)) {
21220  sdst.setBit(lane, 0);
21221  }
21222  }
21223 
21224  sdst.write();
21225  } // execute
21226  // --- Inst_VOP3__V_CMP_LT_I16 class methods ---
21227 
21229  InFmt_VOP3A *iFmt)
21230  : Inst_VOP3A(iFmt, "v_cmp_lt_i16", true)
21231  {
21232  setFlag(ALU);
21233  } // Inst_VOP3__V_CMP_LT_I16
21234 
21236  {
21237  } // ~Inst_VOP3__V_CMP_LT_I16
21238 
21239  // --- description from .arch file ---
21240  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21241  void
21243  {
21244  Wavefront *wf = gpuDynInst->wavefront();
21245  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21246  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21247  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21248 
21249  src0.readSrc();
21250  src1.readSrc();
21251 
21255  assert(!(instData.ABS & 0x1));
21256  assert(!(instData.ABS & 0x2));
21257  assert(!(instData.ABS & 0x4));
21258  assert(!(extData.NEG & 0x1));
21259  assert(!(extData.NEG & 0x2));
21260  assert(!(extData.NEG & 0x4));
21261 
21262  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21263  if (wf->execMask(lane)) {
21264  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21265  }
21266  }
21267 
21268  sdst.write();
21269  } // execute
21270  // --- Inst_VOP3__V_CMP_EQ_I16 class methods ---
21271 
21273  InFmt_VOP3A *iFmt)
21274  : Inst_VOP3A(iFmt, "v_cmp_eq_i16", true)
21275  {
21276  setFlag(ALU);
21277  } // Inst_VOP3__V_CMP_EQ_I16
21278 
21280  {
21281  } // ~Inst_VOP3__V_CMP_EQ_I16
21282 
21283  // --- description from .arch file ---
21284  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21285  void
21287  {
21288  Wavefront *wf = gpuDynInst->wavefront();
21289  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21290  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21291  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21292 
21293  src0.readSrc();
21294  src1.readSrc();
21295 
21299  assert(!(instData.ABS & 0x1));
21300  assert(!(instData.ABS & 0x2));
21301  assert(!(instData.ABS & 0x4));
21302  assert(!(extData.NEG & 0x1));
21303  assert(!(extData.NEG & 0x2));
21304  assert(!(extData.NEG & 0x4));
21305 
21306  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21307  if (wf->execMask(lane)) {
21308  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21309  }
21310  }
21311 
21312  sdst.write();
21313  } // execute
21314  // --- Inst_VOP3__V_CMP_LE_I16 class methods ---
21315 
21317  InFmt_VOP3A *iFmt)
21318  : Inst_VOP3A(iFmt, "v_cmp_le_i16", true)
21319  {
21320  setFlag(ALU);
21321  } // Inst_VOP3__V_CMP_LE_I16
21322 
21324  {
21325  } // ~Inst_VOP3__V_CMP_LE_I16
21326 
21327  // --- description from .arch file ---
21328  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21329  void
21331  {
21332  Wavefront *wf = gpuDynInst->wavefront();
21333  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21334  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21335  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21336 
21337  src0.readSrc();
21338  src1.readSrc();
21339 
21343  assert(!(instData.ABS & 0x1));
21344  assert(!(instData.ABS & 0x2));
21345  assert(!(instData.ABS & 0x4));
21346  assert(!(extData.NEG & 0x1));
21347  assert(!(extData.NEG & 0x2));
21348  assert(!(extData.NEG & 0x4));
21349 
21350  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21351  if (wf->execMask(lane)) {
21352  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
21353  }
21354  }
21355 
21356  sdst.write();
21357  } // execute
21358  // --- Inst_VOP3__V_CMP_GT_I16 class methods ---
21359 
21361  InFmt_VOP3A *iFmt)
21362  : Inst_VOP3A(iFmt, "v_cmp_gt_i16", true)
21363  {
21364  setFlag(ALU);
21365  } // Inst_VOP3__V_CMP_GT_I16
21366 
21368  {
21369  } // ~Inst_VOP3__V_CMP_GT_I16
21370 
21371  // --- description from .arch file ---
21372  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
21373  void
21375  {
21376  Wavefront *wf = gpuDynInst->wavefront();
21377  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21378  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21379  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21380 
21381  src0.readSrc();
21382  src1.readSrc();
21383 
21387  assert(!(instData.ABS & 0x1));
21388  assert(!(instData.ABS & 0x2));
21389  assert(!(instData.ABS & 0x4));
21390  assert(!(extData.NEG & 0x1));
21391  assert(!(extData.NEG & 0x2));
21392  assert(!(extData.NEG & 0x4));
21393 
21394  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21395  if (wf->execMask(lane)) {
21396  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
21397  }
21398  }
21399 
21400  sdst.write();
21401  } // execute
21402  // --- Inst_VOP3__V_CMP_NE_I16 class methods ---
21403 
21405  InFmt_VOP3A *iFmt)
21406  : Inst_VOP3A(iFmt, "v_cmp_ne_i16", true)
21407  {
21408  setFlag(ALU);
21409  } // Inst_VOP3__V_CMP_NE_I16
21410 
21412  {
21413  } // ~Inst_VOP3__V_CMP_NE_I16
21414 
21415  // --- description from .arch file ---
21416  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
21417  void
21419  {
21420  Wavefront *wf = gpuDynInst->wavefront();
21421  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21422  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21423  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21424 
21425  src0.readSrc();
21426  src1.readSrc();
21427 
21431  assert(!(instData.ABS & 0x1));
21432  assert(!(instData.ABS & 0x2));
21433  assert(!(instData.ABS & 0x4));
21434  assert(!(extData.NEG & 0x1));
21435  assert(!(extData.NEG & 0x2));
21436  assert(!(extData.NEG & 0x4));
21437 
21438  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21439  if (wf->execMask(lane)) {
21440  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21441  }
21442  }
21443 
21444  sdst.write();
21445  } // execute
21446  // --- Inst_VOP3__V_CMP_GE_I16 class methods ---
21447 
21449  InFmt_VOP3A *iFmt)
21450  : Inst_VOP3A(iFmt, "v_cmp_ge_i16", true)
21451  {
21452  setFlag(ALU);
21453  } // Inst_VOP3__V_CMP_GE_I16
21454 
21456  {
21457  } // ~Inst_VOP3__V_CMP_GE_I16
21458 
21459  // --- description from .arch file ---
21460  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
21461  void
21463  {
21464  Wavefront *wf = gpuDynInst->wavefront();
21465  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21466  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21467  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21468 
21469  src0.readSrc();
21470  src1.readSrc();
21471 
21475  assert(!(instData.ABS & 0x1));
21476  assert(!(instData.ABS & 0x2));
21477  assert(!(instData.ABS & 0x4));
21478  assert(!(extData.NEG & 0x1));
21479  assert(!(extData.NEG & 0x2));
21480  assert(!(extData.NEG & 0x4));
21481 
21482  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21483  if (wf->execMask(lane)) {
21484  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
21485  }
21486  }
21487 
21488  sdst.write();
21489  } // execute
21490  // --- Inst_VOP3__V_CMP_T_I16 class methods ---
21491 
21493  : Inst_VOP3A(iFmt, "v_cmp_t_i16", true)
21494  {
21495  setFlag(ALU);
21496  } // Inst_VOP3__V_CMP_T_I16
21497 
21499  {
21500  } // ~Inst_VOP3__V_CMP_T_I16
21501 
21502  // --- description from .arch file ---
21503  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
21504  void
21506  {
21507  Wavefront *wf = gpuDynInst->wavefront();
21508  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21509 
21510  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21511  if (wf->execMask(lane)) {
21512  sdst.setBit(lane, 1);
21513  }
21514  }
21515 
21516  sdst.write();
21517  } // execute
21518  // --- Inst_VOP3__V_CMP_F_U16 class methods ---
21519 
21521  : Inst_VOP3A(iFmt, "v_cmp_f_u16", true)
21522  {
21523  setFlag(ALU);
21524  } // Inst_VOP3__V_CMP_F_U16
21525 
21527  {
21528  } // ~Inst_VOP3__V_CMP_F_U16
21529 
21530  // --- description from .arch file ---
21531  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
21532  void
21534  {
21535  Wavefront *wf = gpuDynInst->wavefront();
21536  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21537 
21538  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21539  if (wf->execMask(lane)) {
21540  sdst.setBit(lane, 0);
21541  }
21542  }
21543 
21544  sdst.write();
21545  } // execute
21546  // --- Inst_VOP3__V_CMP_LT_U16 class methods ---
21547 
21549  InFmt_VOP3A *iFmt)
21550  : Inst_VOP3A(iFmt, "v_cmp_lt_u16", true)
21551  {
21552  setFlag(ALU);
21553  } // Inst_VOP3__V_CMP_LT_U16
21554 
21556  {
21557  } // ~Inst_VOP3__V_CMP_LT_U16
21558 
21559  // --- description from .arch file ---
21560  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21561  void
21563  {
21564  Wavefront *wf = gpuDynInst->wavefront();
21565  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
21566  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
21567  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21568 
21569  src0.readSrc();
21570  src1.readSrc();
21571 
21575  assert(!(instData.ABS & 0x1));
21576  assert(!(instData.ABS & 0x2));
21577  assert(!(instData.ABS & 0x4));
21578  assert(!(extData.NEG & 0x1));
21579  assert(!(extData.NEG & 0x2));
21580  assert(!(extData.NEG & 0x4));
21581 
21582  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21583  if (wf->execMask(lane)) {
21584  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21585  }
21586  }
21587 
21588  sdst.write();
21589  } // execute
21590  // --- Inst_VOP3__V_CMP_EQ_U16 class methods ---
21591 
21593  InFmt_VOP3A *iFmt)
21594  : Inst_VOP3A(iFmt, "v_cmp_eq_u16", true)
21595  {
21596  setFlag(ALU);
21597  } // Inst_VOP3__V_CMP_EQ_U16
21598 
21600  {
21601  } // ~Inst_VOP3__V_CMP_EQ_U16
21602 
21603  // --- description from .arch file ---
21604  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21605  void
21607  {
21608  Wavefront *wf = gpuDynInst->wavefront();
21609  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
21610  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
21611  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21612 
21613  src0.readSrc();
21614  src1.readSrc();
21615 
21619  assert(!(instData.ABS & 0x1));
21620  assert(!(instData.ABS & 0x2));
21621  assert(!(instData.ABS & 0x4));
21622  assert(!(extData.NEG & 0x1));
21623  assert(!(extData.NEG & 0x2));
21624  assert(!(extData.NEG & 0x4));
21625 
21626  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21627  if (wf->execMask(lane)) {
21628  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21629  }
21630  }
21631 
21632  sdst.write();
21633  } // execute
21634  // --- Inst_VOP3__V_CMP_LE_U16 class methods ---
21635 
21637  InFmt_VOP3A *iFmt)
21638  : Inst_VOP3A(iFmt, "v_cmp_le_u16", true)
21639  {
21640  setFlag(ALU);
21641  } // Inst_VOP3__V_CMP_LE_U16
21642 
21644  {
21645  } // ~Inst_VOP3__V_CMP_LE_U16
21646 
21647  // --- description from .arch file ---
21648  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21649  void
21651  {
21652  Wavefront *wf = gpuDynInst->wavefront();
21653  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
21654  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
21655  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21656 
21657  src0.readSrc();
21658  src1.readSrc();
21659 
21663  assert(!(instData.ABS & 0x1));
21664  assert(!(instData.ABS & 0x2));
21665  assert(!(instData.ABS & 0x4));
21666  assert(!(extData.NEG & 0x1));
21667  assert(!(extData.NEG & 0x2));
21668  assert(!(extData.NEG & 0x4));
21669 
21670  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21671  if (wf->execMask(lane)) {
21672  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
21673  }
21674  }
21675 
21676  sdst.write();
21677  } // execute
21678  // --- Inst_VOP3__V_CMP_GT_U16 class methods ---
21679 
21681  InFmt_VOP3A *iFmt)
21682  : Inst_VOP3A(iFmt, "v_cmp_gt_u16", true)
21683  {
21684  setFlag(ALU);
21685  } // Inst_VOP3__V_CMP_GT_U16
21686 
21688  {
21689  } // ~Inst_VOP3__V_CMP_GT_U16
21690 
21691  // --- description from .arch file ---
21692  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
21693  void
21695  {
21696  Wavefront *wf = gpuDynInst->wavefront();
21697  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
21698  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
21699  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21700 
21701  src0.readSrc();
21702  src1.readSrc();
21703 
21707  assert(!(instData.ABS & 0x1));
21708  assert(!(instData.ABS & 0x2));
21709  assert(!(instData.ABS & 0x4));
21710  assert(!(extData.NEG & 0x1));
21711  assert(!(extData.NEG & 0x2));
21712  assert(!(extData.NEG & 0x4));
21713 
21714  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21715  if (wf->execMask(lane)) {
21716  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
21717  }
21718  }
21719 
21720  sdst.write();
21721  } // execute
21722  // --- Inst_VOP3__V_CMP_NE_U16 class methods ---
21723 
21725  InFmt_VOP3A *iFmt)
21726  : Inst_VOP3A(iFmt, "v_cmp_ne_u16", true)
21727  {
21728  setFlag(ALU);
21729  } // Inst_VOP3__V_CMP_NE_U16
21730 
21732  {
21733  } // ~Inst_VOP3__V_CMP_NE_U16
21734 
21735  // --- description from .arch file ---
21736  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
21737  void
21739  {
21740  Wavefront *wf = gpuDynInst->wavefront();
21741  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
21742  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
21743  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21744 
21745  src0.readSrc();
21746  src1.readSrc();
21747 
21751  assert(!(instData.ABS & 0x1));
21752  assert(!(instData.ABS & 0x2));
21753  assert(!(instData.ABS & 0x4));
21754  assert(!(extData.NEG & 0x1));
21755  assert(!(extData.NEG & 0x2));
21756  assert(!(extData.NEG & 0x4));
21757 
21758  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21759  if (wf->execMask(lane)) {
21760  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21761  }
21762  }
21763 
21764  sdst.write();
21765  } // execute
21766  // --- Inst_VOP3__V_CMP_GE_U16 class methods ---
21767 
21769  InFmt_VOP3A *iFmt)
21770  : Inst_VOP3A(iFmt, "v_cmp_ge_u16", true)
21771  {
21772  setFlag(ALU);
21773  } // Inst_VOP3__V_CMP_GE_U16
21774 
21776  {
21777  } // ~Inst_VOP3__V_CMP_GE_U16
21778 
21779  // --- description from .arch file ---
21780  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
21781  void
21783  {
21784  Wavefront *wf = gpuDynInst->wavefront();
21785  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
21786  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
21787  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21788 
21789  src0.readSrc();
21790  src1.readSrc();
21791 
21795  assert(!(instData.ABS & 0x1));
21796  assert(!(instData.ABS & 0x2));
21797  assert(!(instData.ABS & 0x4));
21798  assert(!(extData.NEG & 0x1));
21799  assert(!(extData.NEG & 0x2));
21800  assert(!(extData.NEG & 0x4));
21801 
21802  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21803  if (wf->execMask(lane)) {
21804  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
21805  }
21806  }
21807 
21808  sdst.write();
21809  } // execute
21810  // --- Inst_VOP3__V_CMP_T_U16 class methods ---
21811 
21813  : Inst_VOP3A(iFmt, "v_cmp_t_u16", true)
21814  {
21815  setFlag(ALU);
21816  } // Inst_VOP3__V_CMP_T_U16
21817 
21819  {
21820  } // ~Inst_VOP3__V_CMP_T_U16
21821 
21822  // --- description from .arch file ---
21823  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
21824  void
21826  {
21827  Wavefront *wf = gpuDynInst->wavefront();
21828  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21829 
21830  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21831  if (wf->execMask(lane)) {
21832  sdst.setBit(lane, 1);
21833  }
21834  }
21835 
21836  sdst.write();
21837  } // execute
21838  // --- Inst_VOP3__V_CMPX_F_I16 class methods ---
21839 
21841  InFmt_VOP3A *iFmt)
21842  : Inst_VOP3A(iFmt, "v_cmpx_f_i16", true)
21843  {
21844  setFlag(ALU);
21845  setFlag(WritesEXEC);
21846  } // Inst_VOP3__V_CMPX_F_I16
21847 
21849  {
21850  } // ~Inst_VOP3__V_CMPX_F_I16
21851 
21852  // --- description from .arch file ---
21853  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
21854  void
21856  {
21857  Wavefront *wf = gpuDynInst->wavefront();
21858  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21859 
21860  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21861  if (wf->execMask(lane)) {
21862  sdst.setBit(lane, 0);
21863  }
21864  }
21865 
21866  wf->execMask() = sdst.rawData();
21867  sdst.write();
21868  } // execute
21869  // --- Inst_VOP3__V_CMPX_LT_I16 class methods ---
21870 
21872  InFmt_VOP3A *iFmt)
21873  : Inst_VOP3A(iFmt, "v_cmpx_lt_i16", true)
21874  {
21875  setFlag(ALU);
21876  setFlag(WritesEXEC);
21877  } // Inst_VOP3__V_CMPX_LT_I16
21878 
21880  {
21881  } // ~Inst_VOP3__V_CMPX_LT_I16
21882 
21883  // --- description from .arch file ---
21884  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21885  void
21887  {
21888  Wavefront *wf = gpuDynInst->wavefront();
21889  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21890  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21891  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21892 
21893  src0.readSrc();
21894  src1.readSrc();
21895 
21899  assert(!(instData.ABS & 0x1));
21900  assert(!(instData.ABS & 0x2));
21901  assert(!(instData.ABS & 0x4));
21902  assert(!(extData.NEG & 0x1));
21903  assert(!(extData.NEG & 0x2));
21904  assert(!(extData.NEG & 0x4));
21905 
21906  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21907  if (wf->execMask(lane)) {
21908  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21909  }
21910  }
21911 
21912  wf->execMask() = sdst.rawData();
21913  sdst.write();
21914  } // execute
21915  // --- Inst_VOP3__V_CMPX_EQ_I16 class methods ---
21916 
21918  InFmt_VOP3A *iFmt)
21919  : Inst_VOP3A(iFmt, "v_cmpx_eq_i16", true)
21920  {
21921  setFlag(ALU);
21922  setFlag(WritesEXEC);
21923  } // Inst_VOP3__V_CMPX_EQ_I16
21924 
21926  {
21927  } // ~Inst_VOP3__V_CMPX_EQ_I16
21928 
21929  // --- description from .arch file ---
21930  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21931  void
21933  {
21934  Wavefront *wf = gpuDynInst->wavefront();
21935  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21936  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21937  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21938 
21939  src0.readSrc();
21940  src1.readSrc();
21941 
21945  assert(!(instData.ABS & 0x1));
21946  assert(!(instData.ABS & 0x2));
21947  assert(!(instData.ABS & 0x4));
21948  assert(!(extData.NEG & 0x1));
21949  assert(!(extData.NEG & 0x2));
21950  assert(!(extData.NEG & 0x4));
21951 
21952  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21953  if (wf->execMask(lane)) {
21954  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21955  }
21956  }
21957 
21958  wf->execMask() = sdst.rawData();
21959  sdst.write();
21960  } // execute
21961  // --- Inst_VOP3__V_CMPX_LE_I16 class methods ---
21962 
21964  InFmt_VOP3A *iFmt)
21965  : Inst_VOP3A(iFmt, "v_cmpx_le_i16", true)
21966  {
21967  setFlag(ALU);
21968  setFlag(WritesEXEC);
21969  } // Inst_VOP3__V_CMPX_LE_I16
21970 
21972  {
21973  } // ~Inst_VOP3__V_CMPX_LE_I16
21974 
21975  // --- description from .arch file ---
21976  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21977  void
21979  {
21980  Wavefront *wf = gpuDynInst->wavefront();
21981  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
21982  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
21983  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21984 
21985  src0.readSrc();
21986  src1.readSrc();
21987 
21991  assert(!(instData.ABS & 0x1));
21992  assert(!(instData.ABS & 0x2));
21993  assert(!(instData.ABS & 0x4));
21994  assert(!(extData.NEG & 0x1));
21995  assert(!(extData.NEG & 0x2));
21996  assert(!(extData.NEG & 0x4));
21997 
21998  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21999  if (wf->execMask(lane)) {
22000  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22001  }
22002  }
22003 
22004  wf->execMask() = sdst.rawData();
22005  sdst.write();
22006  } // execute
22007  // --- Inst_VOP3__V_CMPX_GT_I16 class methods ---
22008 
22010  InFmt_VOP3A *iFmt)
22011  : Inst_VOP3A(iFmt, "v_cmpx_gt_i16", true)
22012  {
22013  setFlag(ALU);
22014  setFlag(WritesEXEC);
22015  } // Inst_VOP3__V_CMPX_GT_I16
22016 
22018  {
22019  } // ~Inst_VOP3__V_CMPX_GT_I16
22020 
22021  // --- description from .arch file ---
22022  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22023  void
22025  {
22026  Wavefront *wf = gpuDynInst->wavefront();
22027  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
22028  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
22029  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22030 
22031  src0.readSrc();
22032  src1.readSrc();
22033 
22037  assert(!(instData.ABS & 0x1));
22038  assert(!(instData.ABS & 0x2));
22039  assert(!(instData.ABS & 0x4));
22040  assert(!(extData.NEG & 0x1));
22041  assert(!(extData.NEG & 0x2));
22042  assert(!(extData.NEG & 0x4));
22043 
22044  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22045  if (wf->execMask(lane)) {
22046  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22047  }
22048  }
22049 
22050  wf->execMask() = sdst.rawData();
22051  sdst.write();
22052  } // execute
22053  // --- Inst_VOP3__V_CMPX_NE_I16 class methods ---
22054 
22056  InFmt_VOP3A *iFmt)
22057  : Inst_VOP3A(iFmt, "v_cmpx_ne_i16", true)
22058  {
22059  setFlag(ALU);
22060  setFlag(WritesEXEC);
22061  } // Inst_VOP3__V_CMPX_NE_I16
22062 
22064  {
22065  } // ~Inst_VOP3__V_CMPX_NE_I16
22066 
22067  // --- description from .arch file ---
22068  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22069  void
22071  {
22072  Wavefront *wf = gpuDynInst->wavefront();
22073  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
22074  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
22075  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22076 
22077  src0.readSrc();
22078  src1.readSrc();
22079 
22083  assert(!(instData.ABS & 0x1));
22084  assert(!(instData.ABS & 0x2));
22085  assert(!(instData.ABS & 0x4));
22086  assert(!(extData.NEG & 0x1));
22087  assert(!(extData.NEG & 0x2));
22088  assert(!(extData.NEG & 0x4));
22089 
22090  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22091  if (wf->execMask(lane)) {
22092  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22093  }
22094  }
22095 
22096  wf->execMask() = sdst.rawData();
22097  sdst.write();
22098  } // execute
22099  // --- Inst_VOP3__V_CMPX_GE_I16 class methods ---
22100 
22102  InFmt_VOP3A *iFmt)
22103  : Inst_VOP3A(iFmt, "v_cmpx_ge_i16", true)
22104  {
22105  setFlag(ALU);
22106  setFlag(WritesEXEC);
22107  } // Inst_VOP3__V_CMPX_GE_I16
22108 
22110  {
22111  } // ~Inst_VOP3__V_CMPX_GE_I16
22112 
22113  // --- description from .arch file ---
22114  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22115  void
22117  {
22118  Wavefront *wf = gpuDynInst->wavefront();
22119  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
22120  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
22121  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22122 
22123  src0.readSrc();
22124  src1.readSrc();
22125 
22129  assert(!(instData.ABS & 0x1));
22130  assert(!(instData.ABS & 0x2));
22131  assert(!(instData.ABS & 0x4));
22132  assert(!(extData.NEG & 0x1));
22133  assert(!(extData.NEG & 0x2));
22134  assert(!(extData.NEG & 0x4));
22135 
22136  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22137  if (wf->execMask(lane)) {
22138  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
22139  }
22140  }
22141 
22142  wf->execMask() = sdst.rawData();
22143  sdst.write();
22144  } // execute
22145  // --- Inst_VOP3__V_CMPX_T_I16 class methods ---
22146 
22148  InFmt_VOP3A *iFmt)
22149  : Inst_VOP3A(iFmt, "v_cmpx_t_i16", true)
22150  {
22151  setFlag(ALU);
22152  setFlag(WritesEXEC);
22153  } // Inst_VOP3__V_CMPX_T_I16
22154 
22156  {
22157  } // ~Inst_VOP3__V_CMPX_T_I16
22158 
22159  // --- description from .arch file ---
22160  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
22161  void
22163  {
22164  Wavefront *wf = gpuDynInst->wavefront();
22165  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22166 
22167  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22168  if (wf->execMask(lane)) {
22169  sdst.setBit(lane, 1);
22170  }
22171  }
22172 
22173  wf->execMask() = sdst.rawData();
22174  sdst.write();
22175  } // execute
22176  // --- Inst_VOP3__V_CMPX_F_U16 class methods ---
22177 
22179  InFmt_VOP3A *iFmt)
22180  : Inst_VOP3A(iFmt, "v_cmpx_f_u16", true)
22181  {
22182  setFlag(ALU);
22183  setFlag(WritesEXEC);
22184  } // Inst_VOP3__V_CMPX_F_U16
22185 
22187  {
22188  } // ~Inst_VOP3__V_CMPX_F_U16
22189 
22190  // --- description from .arch file ---
22191  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
22192  void
22194  {
22195  Wavefront *wf = gpuDynInst->wavefront();
22196  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22197 
22198  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22199  if (wf->execMask(lane)) {
22200  sdst.setBit(lane, 0);
22201  }
22202  }
22203 
22204  wf->execMask() = sdst.rawData();
22205  sdst.write();
22206  } // execute
22207  // --- Inst_VOP3__V_CMPX_LT_U16 class methods ---
22208 
22210  InFmt_VOP3A *iFmt)
22211  : Inst_VOP3A(iFmt, "v_cmpx_lt_u16", true)
22212  {
22213  setFlag(ALU);
22214  setFlag(WritesEXEC);
22215  } // Inst_VOP3__V_CMPX_LT_U16
22216 
22218  {
22219  } // ~Inst_VOP3__V_CMPX_LT_U16
22220 
22221  // --- description from .arch file ---
22222  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22223  void
22225  {
22226  Wavefront *wf = gpuDynInst->wavefront();
22227  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
22228  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
22229  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22230 
22231  src0.readSrc();
22232  src1.readSrc();
22233 
22237  assert(!(instData.ABS & 0x1));
22238  assert(!(instData.ABS & 0x2));
22239  assert(!(instData.ABS & 0x4));
22240  assert(!(extData.NEG & 0x1));
22241  assert(!(extData.NEG & 0x2));
22242  assert(!(extData.NEG & 0x4));
22243 
22244  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22245  if (wf->execMask(lane)) {
22246  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22247  }
22248  }
22249 
22250  wf->execMask() = sdst.rawData();
22251  sdst.write();
22252  } // execute
22253  // --- Inst_VOP3__V_CMPX_EQ_U16 class methods ---
22254 
22256  InFmt_VOP3A *iFmt)
22257  : Inst_VOP3A(iFmt, "v_cmpx_eq_u16", true)
22258  {
22259  setFlag(ALU);
22260  setFlag(WritesEXEC);
22261  } // Inst_VOP3__V_CMPX_EQ_U16
22262 
22264  {
22265  } // ~Inst_VOP3__V_CMPX_EQ_U16
22266 
22267  // --- description from .arch file ---
22268  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22269  void
22271  {
22272  Wavefront *wf = gpuDynInst->wavefront();
22273  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
22274  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
22275  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22276 
22277  src0.readSrc();
22278  src1.readSrc();
22279 
22283  assert(!(instData.ABS & 0x1));
22284  assert(!(instData.ABS & 0x2));
22285  assert(!(instData.ABS & 0x4));
22286  assert(!(extData.NEG & 0x1));
22287  assert(!(extData.NEG & 0x2));
22288  assert(!(extData.NEG & 0x4));
22289 
22290  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22291  if (wf->execMask(lane)) {
22292  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22293  }
22294  }
22295 
22296  wf->execMask() = sdst.rawData();
22297  sdst.write();
22298  } // execute
22299  // --- Inst_VOP3__V_CMPX_LE_U16 class methods ---
22300 
22302  InFmt_VOP3A *iFmt)
22303  : Inst_VOP3A(iFmt, "v_cmpx_le_u16", true)
22304  {
22305  setFlag(ALU);
22306  setFlag(WritesEXEC);
22307  } // Inst_VOP3__V_CMPX_LE_U16
22308 
22310  {
22311  } // ~Inst_VOP3__V_CMPX_LE_U16
22312 
22313  // --- description from .arch file ---
22314  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22315  void
22317  {
22318  Wavefront *wf = gpuDynInst->wavefront();
22319  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
22320  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
22321  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22322 
22323  src0.readSrc();
22324  src1.readSrc();
22325 
22329  assert(!(instData.ABS & 0x1));
22330  assert(!(instData.ABS & 0x2));
22331  assert(!(instData.ABS & 0x4));
22332  assert(!(extData.NEG & 0x1));
22333  assert(!(extData.NEG & 0x2));
22334  assert(!(extData.NEG & 0x4));
22335 
22336  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22337  if (wf->execMask(lane)) {
22338  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22339  }
22340  }
22341 
22342  wf->execMask() = sdst.rawData();
22343  sdst.write();
22344  } // execute
22345  // --- Inst_VOP3__V_CMPX_GT_U16 class methods ---
22346 
22348  InFmt_VOP3A *iFmt)
22349  : Inst_VOP3A(iFmt, "v_cmpx_gt_u16", true)
22350  {
22351  setFlag(ALU);
22352  setFlag(WritesEXEC);
22353  } // Inst_VOP3__V_CMPX_GT_U16
22354 
22356  {
22357  } // ~Inst_VOP3__V_CMPX_GT_U16
22358 
22359  // --- description from .arch file ---
22360  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22361  void
22363  {
22364  Wavefront *wf = gpuDynInst->wavefront();
22365  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
22366  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
22367  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22368 
22369  src0.readSrc();
22370  src1.readSrc();
22371 
22375  assert(!(instData.ABS & 0x1));
22376  assert(!(instData.ABS & 0x2));
22377  assert(!(instData.ABS & 0x4));
22378  assert(!(extData.NEG & 0x1));
22379  assert(!(extData.NEG & 0x2));
22380  assert(!(extData.NEG & 0x4));
22381 
22382  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22383  if (wf->execMask(lane)) {
22384  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22385  }
22386  }
22387 
22388  wf->execMask() = sdst.rawData();
22389  sdst.write();
22390  } // execute
22391  // --- Inst_VOP3__V_CMPX_NE_U16 class methods ---
22392 
22394  InFmt_VOP3A *iFmt)
22395  : Inst_VOP3A(iFmt, "v_cmpx_ne_u16", true)
22396  {
22397  setFlag(ALU);
22398  setFlag(WritesEXEC);
22399  } // Inst_VOP3__V_CMPX_NE_U16
22400 
22402  {
22403  } // ~Inst_VOP3__V_CMPX_NE_U16
22404 
22405  // --- description from .arch file ---
22406  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22407  void
22409  {
22410  Wavefront *wf = gpuDynInst->wavefront();
22411  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
22412  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
22413  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22414 
22415  src0.readSrc();
22416  src1.readSrc();
22417 
22421  assert(!(instData.ABS & 0x1));
22422  assert(!(instData.ABS & 0x2));
22423  assert(!(instData.ABS & 0x4));
22424  assert(!(extData.NEG & 0x1));
22425  assert(!(extData.NEG & 0x2));
22426  assert(!(extData.NEG & 0x4));
22427 
22428  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22429  if (wf->execMask(lane)) {
22430  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22431  }
22432  }
22433 
22434  wf->execMask() = sdst.rawData();
22435  sdst.write();
22436  } // execute
22437  // --- Inst_VOP3__V_CMPX_GE_U16 class methods ---
22438 
22440  InFmt_VOP3A *iFmt)
22441  : Inst_VOP3A(iFmt, "v_cmpx_ge_u16", true)
22442  {
22443  setFlag(ALU);
22444  setFlag(WritesEXEC);
22445  } // Inst_VOP3__V_CMPX_GE_U16
22446 
22448  {
22449  } // ~Inst_VOP3__V_CMPX_GE_U16
22450 
22451  // --- description from .arch file ---
22452  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22453  void
22455  {
22456  Wavefront *wf = gpuDynInst->wavefront();
22457  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
22458  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
22459  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22460 
22461  src0.readSrc();
22462  src1.readSrc();
22463 
22467  assert(!(instData.ABS & 0x1));
22468  assert(!(instData.ABS & 0x2));
22469  assert(!(instData.ABS & 0x4));
22470  assert(!(extData.NEG & 0x1));
22471  assert(!(extData.NEG & 0x2));
22472  assert(!(extData.NEG & 0x4));
22473 
22474  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22475  if (wf->execMask(lane)) {
22476  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
22477  }
22478  }
22479 
22480  wf->execMask() = sdst.rawData();
22481  sdst.write();
22482  } // execute
22483  // --- Inst_VOP3__V_CMPX_T_U16 class methods ---
22484 
22486  InFmt_VOP3A *iFmt)
22487  : Inst_VOP3A(iFmt, "v_cmpx_t_u16", true)
22488  {
22489  setFlag(ALU);
22490  setFlag(WritesEXEC);
22491  } // Inst_VOP3__V_CMPX_T_U16
22492 
22494  {
22495  } // ~Inst_VOP3__V_CMPX_T_U16
22496 
22497  // --- description from .arch file ---
22498  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
22499  void
22501  {
22502  Wavefront *wf = gpuDynInst->wavefront();
22503  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22504 
22505  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22506  if (wf->execMask(lane)) {
22507  sdst.setBit(lane, 1);
22508  }
22509  }
22510 
22511  wf->execMask() = sdst.rawData();
22512  sdst.write();
22513  } // execute
22514  // --- Inst_VOP3__V_CMP_F_I32 class methods ---
22515 
22517  : Inst_VOP3A(iFmt, "v_cmp_f_i32", true)
22518  {
22519  setFlag(ALU);
22520  } // Inst_VOP3__V_CMP_F_I32
22521 
22523  {
22524  } // ~Inst_VOP3__V_CMP_F_I32
22525 
22526  // --- description from .arch file ---
22527  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
22528  void
22530  {
22531  Wavefront *wf = gpuDynInst->wavefront();
22532  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22533 
22534  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22535  if (wf->execMask(lane)) {
22536  sdst.setBit(lane, 0);
22537  }
22538  }
22539 
22540  sdst.write();
22541  } // execute
22542  // --- Inst_VOP3__V_CMP_LT_I32 class methods ---
22543 
22545  InFmt_VOP3A *iFmt)
22546  : Inst_VOP3A(iFmt, "v_cmp_lt_i32", true)
22547  {
22548  setFlag(ALU);
22549  } // Inst_VOP3__V_CMP_LT_I32
22550 
22552  {
22553  } // ~Inst_VOP3__V_CMP_LT_I32
22554 
22555  // --- description from .arch file ---
22556  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22557  void
22559  {
22560  Wavefront *wf = gpuDynInst->wavefront();
22561  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
22562  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
22563  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22564 
22565  src0.readSrc();
22566  src1.readSrc();
22567 
22571  assert(!(instData.ABS & 0x1));
22572  assert(!(instData.ABS & 0x2));
22573  assert(!(instData.ABS & 0x4));
22574  assert(!(extData.NEG & 0x1));
22575  assert(!(extData.NEG & 0x2));
22576  assert(!(extData.NEG & 0x4));
22577 
22578  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22579  if (wf->execMask(lane)) {
22580  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22581  }
22582  }
22583 
22584  sdst.write();
22585  } // execute
22586  // --- Inst_VOP3__V_CMP_EQ_I32 class methods ---
22587 
22589  InFmt_VOP3A *iFmt)
22590  : Inst_VOP3A(iFmt, "v_cmp_eq_i32", true)
22591  {
22592  setFlag(ALU);
22593  } // Inst_VOP3__V_CMP_EQ_I32
22594 
22596  {
22597  } // ~Inst_VOP3__V_CMP_EQ_I32
22598 
22599  // --- description from .arch file ---
22600  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22601  void
22603  {
22604  Wavefront *wf = gpuDynInst->wavefront();
22605  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
22606  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
22607  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22608 
22609  src0.readSrc();
22610  src1.readSrc();
22611 
22615  assert(!(instData.ABS & 0x1));
22616  assert(!(instData.ABS & 0x2));
22617  assert(!(instData.ABS & 0x4));
22618  assert(!(extData.NEG & 0x1));
22619  assert(!(extData.NEG & 0x2));
22620  assert(!(extData.NEG & 0x4));
22621 
22622  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22623  if (wf->execMask(lane)) {
22624  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22625  }
22626  }
22627 
22628  sdst.write();
22629  } // execute
22630  // --- Inst_VOP3__V_CMP_LE_I32 class methods ---
22631 
22633  InFmt_VOP3A *iFmt)
22634  : Inst_VOP3A(iFmt, "v_cmp_le_i32", true)
22635  {
22636  setFlag(ALU);
22637  } // Inst_VOP3__V_CMP_LE_I32
22638 
22640  {
22641  } // ~Inst_VOP3__V_CMP_LE_I32
22642 
22643  // --- description from .arch file ---
22644  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22645  void
22647  {
22648  Wavefront *wf = gpuDynInst->wavefront();
22649  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
22650  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
22651  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22652 
22653  src0.readSrc();
22654  src1.readSrc();
22655 
22659  assert(!(instData.ABS & 0x1));
22660  assert(!(instData.ABS & 0x2));
22661  assert(!(instData.ABS & 0x4));
22662  assert(!(extData.NEG & 0x1));
22663  assert(!(extData.NEG & 0x2));
22664  assert(!(extData.NEG & 0x4));
22665 
22666  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22667  if (wf->execMask(lane)) {
22668  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22669  }
22670  }
22671 
22672  sdst.write();
22673  } // execute
22674  // --- Inst_VOP3__V_CMP_GT_I32 class methods ---
22675 
22677  InFmt_VOP3A *iFmt)
22678  : Inst_VOP3A(iFmt, "v_cmp_gt_i32", true)
22679  {
22680  setFlag(ALU);
22681  } // Inst_VOP3__V_CMP_GT_I32
22682 
22684  {
22685  } // ~Inst_VOP3__V_CMP_GT_I32
22686 
22687  // --- description from .arch file ---
22688  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22689  void
22691  {
22692  Wavefront *wf = gpuDynInst->wavefront();
22693  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
22694  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
22695  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22696 
22697  src0.readSrc();
22698  src1.readSrc();
22699 
22703  assert(!(instData.ABS & 0x1));
22704  assert(!(instData.ABS & 0x2));
22705  assert(!(instData.ABS & 0x4));
22706  assert(!(extData.NEG & 0x1));
22707  assert(!(extData.NEG & 0x2));
22708  assert(!(extData.NEG & 0x4));
22709 
22710  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22711  if (wf->execMask(lane)) {
22712  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22713  }
22714  }
22715 
22716  sdst.write();
22717  } // execute
22718  // --- Inst_VOP3__V_CMP_NE_I32 class methods ---
22719 
22721  InFmt_VOP3A *iFmt)
22722  : Inst_VOP3A(iFmt, "v_cmp_ne_i32", true)
22723  {
22724  setFlag(ALU);
22725  } // Inst_VOP3__V_CMP_NE_I32
22726 
22728  {
22729  } // ~Inst_VOP3__V_CMP_NE_I32
22730 
22731  // --- description from .arch file ---
22732  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22733  void
22735  {
22736  Wavefront *wf = gpuDynInst->wavefront();
22737  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
22738  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
22739  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22740 
22741  src0.readSrc();
22742  src1.readSrc();
22743 
22747  assert(!(instData.ABS & 0x1));
22748  assert(!(instData.ABS & 0x2));
22749  assert(!(instData.ABS & 0x4));
22750  assert(!(extData.NEG & 0x1));
22751  assert(!(extData.NEG & 0x2));
22752  assert(!(extData.NEG & 0x4));
22753 
22754  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22755  if (wf->execMask(lane)) {
22756  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22757  }
22758  }
22759 
22760  sdst.write();
22761  } // execute
22762  // --- Inst_VOP3__V_CMP_GE_I32 class methods ---
22763 
22765  InFmt_VOP3A *iFmt)
22766  : Inst_VOP3A(iFmt, "v_cmp_ge_i32", true)
22767  {
22768  setFlag(ALU);
22769  } // Inst_VOP3__V_CMP_GE_I32
22770 
22772  {
22773  } // ~Inst_VOP3__V_CMP_GE_I32
22774 
22775  // --- description from .arch file ---
22776  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22777  void
22779  {
22780  Wavefront *wf = gpuDynInst->wavefront();
22781  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
22782  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
22783  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22784 
22785  src0.readSrc();
22786  src1.readSrc();
22787 
22791  assert(!(instData.ABS & 0x1));
22792  assert(!(instData.ABS & 0x2));
22793  assert(!(instData.ABS & 0x4));
22794  assert(!(extData.NEG & 0x1));
22795  assert(!(extData.NEG & 0x2));
22796  assert(!(extData.NEG & 0x4));
22797 
22798  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22799  if (wf->execMask(lane)) {
22800  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
22801  }
22802  }
22803 
22804  sdst.write();
22805  } // execute
22806  // --- Inst_VOP3__V_CMP_T_I32 class methods ---
22807 
22809  : Inst_VOP3A(iFmt, "v_cmp_t_i32", true)
22810  {
22811  setFlag(ALU);
22812  } // Inst_VOP3__V_CMP_T_I32
22813 
22815  {
22816  } // ~Inst_VOP3__V_CMP_T_I32
22817 
22818  // --- description from .arch file ---
22819  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
22820  void
22822  {
22823  Wavefront *wf = gpuDynInst->wavefront();
22824  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22825 
22826  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22827  if (wf->execMask(lane)) {
22828  sdst.setBit(lane, 1);
22829  }
22830  }
22831 
22832  sdst.write();
22833  } // execute
22834  // --- Inst_VOP3__V_CMP_F_U32 class methods ---
22835 
22837  : Inst_VOP3A(iFmt, "v_cmp_f_u32", true)
22838  {
22839  setFlag(ALU);
22840  } // Inst_VOP3__V_CMP_F_U32
22841 
22843  {
22844  } // ~Inst_VOP3__V_CMP_F_U32
22845 
22846  // --- description from .arch file ---
22847  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
22848  void
22850  {
22851  Wavefront *wf = gpuDynInst->wavefront();
22852  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22853 
22854  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22855  if (wf->execMask(lane)) {
22856  sdst.setBit(lane, 0);
22857  }
22858  }
22859 
22860  sdst.write();
22861  } // execute
22862  // --- Inst_VOP3__V_CMP_LT_U32 class methods ---
22863 
22865  InFmt_VOP3A *iFmt)
22866  : Inst_VOP3A(iFmt, "v_cmp_lt_u32", true)
22867  {
22868  setFlag(ALU);
22869  } // Inst_VOP3__V_CMP_LT_U32
22870 
22872  {
22873  } // ~Inst_VOP3__V_CMP_LT_U32
22874 
22875  // --- description from .arch file ---
22876  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22877  void
22879  {
22880  Wavefront *wf = gpuDynInst->wavefront();
22881  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
22882  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
22883  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22884 
22885  src0.readSrc();
22886  src1.readSrc();
22887 
22891  assert(!(instData.ABS & 0x1));
22892  assert(!(instData.ABS & 0x2));
22893  assert(!(instData.ABS & 0x4));
22894  assert(!(extData.NEG & 0x1));
22895  assert(!(extData.NEG & 0x2));
22896  assert(!(extData.NEG & 0x4));
22897 
22898  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22899  if (wf->execMask(lane)) {
22900  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22901  }
22902  }
22903 
22904  sdst.write();
22905  } // execute
22906  // --- Inst_VOP3__V_CMP_EQ_U32 class methods ---
22907 
22909  InFmt_VOP3A *iFmt)
22910  : Inst_VOP3A(iFmt, "v_cmp_eq_u32", true)
22911  {
22912  setFlag(ALU);
22913  } // Inst_VOP3__V_CMP_EQ_U32
22914 
22916  {
22917  } // ~Inst_VOP3__V_CMP_EQ_U32
22918 
22919  // --- description from .arch file ---
22920  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22921  void
22923  {
22924  Wavefront *wf = gpuDynInst->wavefront();
22925  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
22926  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
22927  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22928 
22929  src0.readSrc();
22930  src1.readSrc();
22931 
22935  assert(!(instData.ABS & 0x1));
22936  assert(!(instData.ABS & 0x2));
22937  assert(!(instData.ABS & 0x4));
22938  assert(!(extData.NEG & 0x1));
22939  assert(!(extData.NEG & 0x2));
22940  assert(!(extData.NEG & 0x4));
22941 
22942  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22943  if (wf->execMask(lane)) {
22944  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22945  }
22946  }
22947 
22948  sdst.write();
22949  } // execute
22950  // --- Inst_VOP3__V_CMP_LE_U32 class methods ---
22951 
22953  InFmt_VOP3A *iFmt)
22954  : Inst_VOP3A(iFmt, "v_cmp_le_u32", true)
22955  {
22956  setFlag(ALU);
22957  } // Inst_VOP3__V_CMP_LE_U32
22958 
22960  {
22961  } // ~Inst_VOP3__V_CMP_LE_U32
22962 
22963  // --- description from .arch file ---
22964  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22965  void
22967  {
22968  Wavefront *wf = gpuDynInst->wavefront();
22969  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
22970  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
22971  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22972 
22973  src0.readSrc();
22974  src1.readSrc();
22975 
22979  assert(!(instData.ABS & 0x1));
22980  assert(!(instData.ABS & 0x2));
22981  assert(!(instData.ABS & 0x4));
22982  assert(!(extData.NEG & 0x1));
22983  assert(!(extData.NEG & 0x2));
22984  assert(!(extData.NEG & 0x4));
22985 
22986  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22987  if (wf->execMask(lane)) {
22988  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22989  }
22990  }
22991 
22992  sdst.write();
22993  } // execute
22994  // --- Inst_VOP3__V_CMP_GT_U32 class methods ---
22995 
22997  InFmt_VOP3A *iFmt)
22998  : Inst_VOP3A(iFmt, "v_cmp_gt_u32", true)
22999  {
23000  setFlag(ALU);
23001  } // Inst_VOP3__V_CMP_GT_U32
23002 
23004  {
23005  } // ~Inst_VOP3__V_CMP_GT_U32
23006 
23007  // --- description from .arch file ---
23008  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
23009  void
23011  {
23012  Wavefront *wf = gpuDynInst->wavefront();
23013  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23014  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23015  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23016 
23017  src0.readSrc();
23018  src1.readSrc();
23019 
23023  assert(!(instData.ABS & 0x1));
23024  assert(!(instData.ABS & 0x2));
23025  assert(!(instData.ABS & 0x4));
23026  assert(!(extData.NEG & 0x1));
23027  assert(!(extData.NEG & 0x2));
23028  assert(!(extData.NEG & 0x4));
23029 
23030  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23031  if (wf->execMask(lane)) {
23032  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
23033  }
23034  }
23035 
23036  sdst.write();
23037  } // execute
23038  // --- Inst_VOP3__V_CMP_NE_U32 class methods ---
23039 
23041  InFmt_VOP3A *iFmt)
23042  : Inst_VOP3A(iFmt, "v_cmp_ne_u32", true)
23043  {
23044  setFlag(ALU);
23045  } // Inst_VOP3__V_CMP_NE_U32
23046 
23048  {
23049  } // ~Inst_VOP3__V_CMP_NE_U32
23050 
23051  // --- description from .arch file ---
23052  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
23053  void
23055  {
23056  Wavefront *wf = gpuDynInst->wavefront();
23057  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23058  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23059  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23060 
23061  src0.readSrc();
23062  src1.readSrc();
23063 
23067  assert(!(instData.ABS & 0x1));
23068  assert(!(instData.ABS & 0x2));
23069  assert(!(instData.ABS & 0x4));
23070  assert(!(extData.NEG & 0x1));
23071  assert(!(extData.NEG & 0x2));
23072  assert(!(extData.NEG & 0x4));
23073 
23074  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23075  if (wf->execMask(lane)) {
23076  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
23077  }
23078  }
23079 
23080  sdst.write();
23081  } // execute
23082  // --- Inst_VOP3__V_CMP_GE_U32 class methods ---
23083 
23085  InFmt_VOP3A *iFmt)
23086  : Inst_VOP3A(iFmt, "v_cmp_ge_u32", true)
23087  {
23088  setFlag(ALU);
23089  } // Inst_VOP3__V_CMP_GE_U32
23090 
23092  {
23093  } // ~Inst_VOP3__V_CMP_GE_U32
23094 
23095  // --- description from .arch file ---
23096  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
23097  void
23099  {
23100  Wavefront *wf = gpuDynInst->wavefront();
23101  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23102  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23103  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23104 
23105  src0.readSrc();
23106  src1.readSrc();
23107 
23111  assert(!(instData.ABS & 0x1));
23112  assert(!(instData.ABS & 0x2));
23113  assert(!(instData.ABS & 0x4));
23114  assert(!(extData.NEG & 0x1));
23115  assert(!(extData.NEG & 0x2));
23116  assert(!(extData.NEG & 0x4));
23117 
23118  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23119  if (wf->execMask(lane)) {
23120  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
23121  }
23122  }
23123 
23124  sdst.write();
23125  } // execute
23126  // --- Inst_VOP3__V_CMP_T_U32 class methods ---
23127 
23129  : Inst_VOP3A(iFmt, "v_cmp_t_u32", true)
23130  {
23131  setFlag(ALU);
23132  } // Inst_VOP3__V_CMP_T_U32
23133 
23135  {
23136  } // ~Inst_VOP3__V_CMP_T_U32
23137 
23138  // --- description from .arch file ---
23139  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
23140  void
23142  {
23143  Wavefront *wf = gpuDynInst->wavefront();
23144  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23145 
23146  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23147  if (wf->execMask(lane)) {
23148  sdst.setBit(lane, 1);
23149  }
23150  }
23151 
23152  sdst.write();
23153  } // execute
23154  // --- Inst_VOP3__V_CMPX_F_I32 class methods ---
23155 
23157  InFmt_VOP3A *iFmt)
23158  : Inst_VOP3A(iFmt, "v_cmpx_f_i32", true)
23159  {
23160  setFlag(ALU);
23161  setFlag(WritesEXEC);
23162  } // Inst_VOP3__V_CMPX_F_I32
23163 
23165  {
23166  } // ~Inst_VOP3__V_CMPX_F_I32
23167 
23168  // --- description from .arch file ---
23169  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
23170  void
23172  {
23173  Wavefront *wf = gpuDynInst->wavefront();
23174  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23175 
23176  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23177  if (wf->execMask(lane)) {
23178  sdst.setBit(lane, 0);
23179  }
23180  }
23181 
23182  wf->execMask() = sdst.rawData();
23183  sdst.write();
23184  } // execute
23185  // --- Inst_VOP3__V_CMPX_LT_I32 class methods ---
23186 
23188  InFmt_VOP3A *iFmt)
23189  : Inst_VOP3A(iFmt, "v_cmpx_lt_i32", true)
23190  {
23191  setFlag(ALU);
23192  setFlag(WritesEXEC);
23193  } // Inst_VOP3__V_CMPX_LT_I32
23194 
23196  {
23197  } // ~Inst_VOP3__V_CMPX_LT_I32
23198 
23199  // --- description from .arch file ---
23200  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
23201  void
23203  {
23204  Wavefront *wf = gpuDynInst->wavefront();
23205  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23206  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23207  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23208 
23209  src0.readSrc();
23210  src1.readSrc();
23211 
23215  assert(!(instData.ABS & 0x1));
23216  assert(!(instData.ABS & 0x2));
23217  assert(!(instData.ABS & 0x4));
23218  assert(!(extData.NEG & 0x1));
23219  assert(!(extData.NEG & 0x2));
23220  assert(!(extData.NEG & 0x4));
23221 
23222  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23223  if (wf->execMask(lane)) {
23224  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
23225  }
23226  }
23227 
23228  wf->execMask() = sdst.rawData();
23229  sdst.write();
23230  } // execute
23231  // --- Inst_VOP3__V_CMPX_EQ_I32 class methods ---
23232 
23234  InFmt_VOP3A *iFmt)
23235  : Inst_VOP3A(iFmt, "v_cmpx_eq_i32", true)
23236  {
23237  setFlag(ALU);
23238  setFlag(WritesEXEC);
23239  } // Inst_VOP3__V_CMPX_EQ_I32
23240 
23242  {
23243  } // ~Inst_VOP3__V_CMPX_EQ_I32
23244 
23245  // --- description from .arch file ---
23246  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
23247  void
23249  {
23250  Wavefront *wf = gpuDynInst->wavefront();
23251  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23252  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23253  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23254 
23255  src0.readSrc();
23256  src1.readSrc();
23257 
23261  assert(!(instData.ABS & 0x1));
23262  assert(!(instData.ABS & 0x2));
23263  assert(!(instData.ABS & 0x4));
23264  assert(!(extData.NEG & 0x1));
23265  assert(!(extData.NEG & 0x2));
23266  assert(!(extData.NEG & 0x4));
23267 
23268  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23269  if (wf->execMask(lane)) {
23270  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
23271  }
23272  }
23273 
23274  wf->execMask() = sdst.rawData();
23275  sdst.write();
23276  } // execute
23277  // --- Inst_VOP3__V_CMPX_LE_I32 class methods ---
23278 
23280  InFmt_VOP3A *iFmt)
23281  : Inst_VOP3A(iFmt, "v_cmpx_le_i32", true)
23282  {
23283  setFlag(ALU);
23284  setFlag(WritesEXEC);
23285  } // Inst_VOP3__V_CMPX_LE_I32
23286 
23288  {
23289  } // ~Inst_VOP3__V_CMPX_LE_I32
23290 
23291  // --- description from .arch file ---
23292  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
23293  void
23295  {
23296  Wavefront *wf = gpuDynInst->wavefront();
23297  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23298  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23299  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23300 
23301  src0.readSrc();
23302  src1.readSrc();
23303 
23307  assert(!(instData.ABS & 0x1));
23308  assert(!(instData.ABS & 0x2));
23309  assert(!(instData.ABS & 0x4));
23310  assert(!(extData.NEG & 0x1));
23311  assert(!(extData.NEG & 0x2));
23312  assert(!(extData.NEG & 0x4));
23313 
23314  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23315  if (wf->execMask(lane)) {
23316  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
23317  }
23318  }
23319 
23320  wf->execMask() = sdst.rawData();
23321  sdst.write();
23322  } // execute
23323  // --- Inst_VOP3__V_CMPX_GT_I32 class methods ---
23324 
23326  InFmt_VOP3A *iFmt)
23327  : Inst_VOP3A(iFmt, "v_cmpx_gt_i32", true)
23328  {
23329  setFlag(ALU);
23330  setFlag(WritesEXEC);
23331  } // Inst_VOP3__V_CMPX_GT_I32
23332 
23334  {
23335  } // ~Inst_VOP3__V_CMPX_GT_I32
23336 
23337  // --- description from .arch file ---
23338  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
23339  void
23341  {
23342  Wavefront *wf = gpuDynInst->wavefront();
23343  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23344  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23345  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23346 
23347  src0.readSrc();
23348  src1.readSrc();
23349 
23353  assert(!(instData.ABS & 0x1));
23354  assert(!(instData.ABS & 0x2));
23355  assert(!(instData.ABS & 0x4));
23356  assert(!(extData.NEG & 0x1));
23357  assert(!(extData.NEG & 0x2));
23358  assert(!(extData.NEG & 0x4));
23359 
23360  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23361  if (wf->execMask(lane)) {
23362  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
23363  }
23364  }
23365 
23366  wf->execMask() = sdst.rawData();
23367  sdst.write();
23368  } // execute
23369  // --- Inst_VOP3__V_CMPX_NE_I32 class methods ---
23370 
23372  InFmt_VOP3A *iFmt)
23373  : Inst_VOP3A(iFmt, "v_cmpx_ne_i32", true)
23374  {
23375  setFlag(ALU);
23376  setFlag(WritesEXEC);
23377  } // Inst_VOP3__V_CMPX_NE_I32
23378 
23380  {
23381  } // ~Inst_VOP3__V_CMPX_NE_I32
23382 
23383  // --- description from .arch file ---
23384  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
23385  void
23387  {
23388  Wavefront *wf = gpuDynInst->wavefront();
23389  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23390  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23391  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23392 
23393  src0.readSrc();
23394  src1.readSrc();
23395 
23399  assert(!(instData.ABS & 0x1));
23400  assert(!(instData.ABS & 0x2));
23401  assert(!(instData.ABS & 0x4));
23402  assert(!(extData.NEG & 0x1));
23403  assert(!(extData.NEG & 0x2));
23404  assert(!(extData.NEG & 0x4));
23405 
23406  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23407  if (wf->execMask(lane)) {
23408  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
23409  }
23410  }
23411 
23412  wf->execMask() = sdst.rawData();
23413  sdst.write();
23414  } // execute
23415  // --- Inst_VOP3__V_CMPX_GE_I32 class methods ---
23416 
23418  InFmt_VOP3A *iFmt)
23419  : Inst_VOP3A(iFmt, "v_cmpx_ge_i32", true)
23420  {
23421  setFlag(ALU);
23422  setFlag(WritesEXEC);
23423  } // Inst_VOP3__V_CMPX_GE_I32
23424 
23426  {
23427  } // ~Inst_VOP3__V_CMPX_GE_I32
23428 
23429  // --- description from .arch file ---
23430  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
23431  void
23433  {
23434  Wavefront *wf = gpuDynInst->wavefront();
23435  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23436  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23437  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23438 
23439  src0.readSrc();
23440  src1.readSrc();
23441 
23445  assert(!(instData.ABS & 0x1));
23446  assert(!(instData.ABS & 0x2));
23447  assert(!(instData.ABS & 0x4));
23448  assert(!(extData.NEG & 0x1));
23449  assert(!(extData.NEG & 0x2));
23450  assert(!(extData.NEG & 0x4));
23451 
23452  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23453  if (wf->execMask(lane)) {
23454  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
23455  }
23456  }
23457 
23458  wf->execMask() = sdst.rawData();
23459  sdst.write();
23460  } // execute
23461  // --- Inst_VOP3__V_CMPX_T_I32 class methods ---
23462 
23464  InFmt_VOP3A *iFmt)
23465  : Inst_VOP3A(iFmt, "v_cmpx_t_i32", true)
23466  {
23467  setFlag(ALU);
23468  setFlag(WritesEXEC);
23469  } // Inst_VOP3__V_CMPX_T_I32
23470 
23472  {
23473  } // ~Inst_VOP3__V_CMPX_T_I32
23474 
23475  // --- description from .arch file ---
23476  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
23477  void
23479  {
23480  Wavefront *wf = gpuDynInst->wavefront();
23481  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23482 
23483  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23484  if (wf->execMask(lane)) {
23485  sdst.setBit(lane, 1);
23486  }
23487  }
23488 
23489  wf->execMask() = sdst.rawData();
23490  sdst.write();
23491  } // execute
23492  // --- Inst_VOP3__V_CMPX_F_U32 class methods ---
23493 
23495  InFmt_VOP3A *iFmt)
23496  : Inst_VOP3A(iFmt, "v_cmpx_f_u32", true)
23497  {
23498  setFlag(ALU);
23499  setFlag(WritesEXEC);
23500  } // Inst_VOP3__V_CMPX_F_U32
23501 
23503  {
23504  } // ~Inst_VOP3__V_CMPX_F_U32
23505 
23506  // --- description from .arch file ---
23507  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
23508  void
23510  {
23511  Wavefront *wf = gpuDynInst->wavefront();
23512  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23513 
23514  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23515  if (wf->execMask(lane)) {
23516  sdst.setBit(lane, 0);
23517  }
23518  }
23519 
23520  wf->execMask() = sdst.rawData();
23521  sdst.write();
23522  } // execute
23523  // --- Inst_VOP3__V_CMPX_LT_U32 class methods ---
23524 
23526  InFmt_VOP3A *iFmt)
23527  : Inst_VOP3A(iFmt, "v_cmpx_lt_u32", true)
23528  {
23529  setFlag(ALU);
23530  setFlag(WritesEXEC);
23531  } // Inst_VOP3__V_CMPX_LT_U32
23532 
23534  {
23535  } // ~Inst_VOP3__V_CMPX_LT_U32
23536 
23537  // --- description from .arch file ---
23538  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
23539  void
23541  {
23542  Wavefront *wf = gpuDynInst->wavefront();
23543  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23544  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23545  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23546 
23547  src0.readSrc();
23548  src1.readSrc();
23549 
23553  assert(!(instData.ABS & 0x1));
23554  assert(!(instData.ABS & 0x2));
23555  assert(!(instData.ABS & 0x4));
23556  assert(!(extData.NEG & 0x1));
23557  assert(!(extData.NEG & 0x2));
23558  assert(!(extData.NEG & 0x4));
23559 
23560  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23561  if (wf->execMask(lane)) {
23562  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
23563  }
23564  }
23565 
23566  wf->execMask() = sdst.rawData();
23567  sdst.write();
23568  } // execute
23569  // --- Inst_VOP3__V_CMPX_EQ_U32 class methods ---
23570 
23572  InFmt_VOP3A *iFmt)
23573  : Inst_VOP3A(iFmt, "v_cmpx_eq_u32", true)
23574  {
23575  setFlag(ALU);
23576  setFlag(WritesEXEC);
23577  } // Inst_VOP3__V_CMPX_EQ_U32
23578 
23580  {
23581  } // ~Inst_VOP3__V_CMPX_EQ_U32
23582 
23583  // --- description from .arch file ---
23584  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
23585  void
23587  {
23588  Wavefront *wf = gpuDynInst->wavefront();
23589  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23590  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23591  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23592 
23593  src0.readSrc();
23594  src1.readSrc();
23595 
23599  assert(!(instData.ABS & 0x1));
23600  assert(!(instData.ABS & 0x2));
23601  assert(!(instData.ABS & 0x4));
23602  assert(!(extData.NEG & 0x1));
23603  assert(!(extData.NEG & 0x2));
23604  assert(!(extData.NEG & 0x4));
23605 
23606  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23607  if (wf->execMask(lane)) {
23608  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
23609  }
23610  }
23611 
23612  wf->execMask() = sdst.rawData();
23613  sdst.write();
23614  } // execute
23615  // --- Inst_VOP3__V_CMPX_LE_U32 class methods ---
23616 
23618  InFmt_VOP3A *iFmt)
23619  : Inst_VOP3A(iFmt, "v_cmpx_le_u32", true)
23620  {
23621  setFlag(ALU);
23622  setFlag(WritesEXEC);
23623  } // Inst_VOP3__V_CMPX_LE_U32
23624 
23626  {
23627  } // ~Inst_VOP3__V_CMPX_LE_U32
23628 
23629  // --- description from .arch file ---
23630  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
23631  void
23633  {
23634  Wavefront *wf = gpuDynInst->wavefront();
23635  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23636  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23637  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23638 
23639  src0.readSrc();
23640  src1.readSrc();
23641 
23645  assert(!(instData.ABS & 0x1));
23646  assert(!(instData.ABS & 0x2));
23647  assert(!(instData.ABS & 0x4));
23648  assert(!(extData.NEG & 0x1));
23649  assert(!(extData.NEG & 0x2));
23650  assert(!(extData.NEG & 0x4));
23651 
23652  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23653  if (wf->execMask(lane)) {
23654  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
23655  }
23656  }
23657 
23658  wf->execMask() = sdst.rawData();
23659  sdst.write();
23660  } // execute
23661  // --- Inst_VOP3__V_CMPX_GT_U32 class methods ---
23662 
23664  InFmt_VOP3A *iFmt)
23665  : Inst_VOP3A(iFmt, "v_cmpx_gt_u32", true)
23666  {
23667  setFlag(ALU);
23668  setFlag(WritesEXEC);
23669  } // Inst_VOP3__V_CMPX_GT_U32
23670 
23672  {
23673  } // ~Inst_VOP3__V_CMPX_GT_U32
23674 
23675  // --- description from .arch file ---
23676  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
23677  void
23679  {
23680  Wavefront *wf = gpuDynInst->wavefront();
23681  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23682  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23683  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23684 
23685  src0.readSrc();
23686  src1.readSrc();
23687 
23691  assert(!(instData.ABS & 0x1));
23692  assert(!(instData.ABS & 0x2));
23693  assert(!(instData.ABS & 0x4));
23694  assert(!(extData.NEG & 0x1));
23695  assert(!(extData.NEG & 0x2));
23696  assert(!(extData.NEG & 0x4));
23697 
23698  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23699  if (wf->execMask(lane)) {
23700  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
23701  }
23702  }
23703 
23704  wf->execMask() = sdst.rawData();
23705  sdst.write();
23706  } // execute
23707  // --- Inst_VOP3__V_CMPX_NE_U32 class methods ---
23708 
23710  InFmt_VOP3A *iFmt)
23711  : Inst_VOP3A(iFmt, "v_cmpx_ne_u32", true)
23712  {
23713  setFlag(ALU);
23714  setFlag(WritesEXEC);
23715  } // Inst_VOP3__V_CMPX_NE_U32
23716 
23718  {
23719  } // ~Inst_VOP3__V_CMPX_NE_U32
23720 
23721  // --- description from .arch file ---
23722  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
23723  void
23725  {
23726  Wavefront *wf = gpuDynInst->wavefront();
23727  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23728  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23729  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23730 
23731  src0.readSrc();
23732  src1.readSrc();
23733 
23737  assert(!(instData.ABS & 0x1));
23738  assert(!(instData.ABS & 0x2));
23739  assert(!(instData.ABS & 0x4));
23740  assert(!(extData.NEG & 0x1));
23741  assert(!(extData.NEG & 0x2));
23742  assert(!(extData.NEG & 0x4));
23743 
23744  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23745  if (wf->execMask(lane)) {
23746  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
23747  }
23748  }
23749 
23750  wf->execMask() = sdst.rawData();
23751  sdst.write();
23752  } // execute
23753  // --- Inst_VOP3__V_CMPX_GE_U32 class methods ---
23754 
23756  InFmt_VOP3A *iFmt)
23757  : Inst_VOP3A(iFmt, "v_cmpx_ge_u32", true)
23758  {
23759  setFlag(ALU);
23760  setFlag(WritesEXEC);
23761  } // Inst_VOP3__V_CMPX_GE_U32
23762 
23764  {
23765  } // ~Inst_VOP3__V_CMPX_GE_U32
23766 
23767  // --- description from .arch file ---
23768  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
23769  void
23771  {
23772  Wavefront *wf = gpuDynInst->wavefront();
23773  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23774  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23775  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23776 
23777  src0.readSrc();
23778  src1.readSrc();
23779 
23783  assert(!(instData.ABS & 0x1));
23784  assert(!(instData.ABS & 0x2));
23785  assert(!(instData.ABS & 0x4));
23786  assert(!(extData.NEG & 0x1));
23787  assert(!(extData.NEG & 0x2));
23788  assert(!(extData.NEG & 0x4));
23789 
23790  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23791  if (wf->execMask(lane)) {
23792  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
23793  }
23794  }
23795 
23796  wf->execMask() = sdst.rawData();
23797  sdst.write();
23798  } // execute
23799  // --- Inst_VOP3__V_CMPX_T_U32 class methods ---
23800 
23802  InFmt_VOP3A *iFmt)
23803  : Inst_VOP3A(iFmt, "v_cmpx_t_u32", true)
23804  {
23805  setFlag(ALU);
23806  setFlag(WritesEXEC);
23807  } // Inst_VOP3__V_CMPX_T_U32
23808 
23810  {
23811  } // ~Inst_VOP3__V_CMPX_T_U32
23812 
23813  // --- description from .arch file ---
23814  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
23815  void
23817  {
23818  Wavefront *wf = gpuDynInst->wavefront();
23819  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23820 
23821  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23822  if (wf->execMask(lane)) {
23823  sdst.setBit(lane, 1);
23824  }
23825  }
23826 
23827  wf->execMask() = sdst.rawData();
23828  sdst.write();
23829  } // execute
23830  // --- Inst_VOP3__V_CMP_F_I64 class methods ---
23831 
23833  : Inst_VOP3A(iFmt, "v_cmp_f_i64", true)
23834  {
23835  setFlag(ALU);
23836  } // Inst_VOP3__V_CMP_F_I64
23837 
23839  {
23840  } // ~Inst_VOP3__V_CMP_F_I64
23841 
23842  // --- description from .arch file ---
23843  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
23844  void
23846  {
23847  Wavefront *wf = gpuDynInst->wavefront();
23848  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23849 
23850  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23851  if (wf->execMask(lane)) {
23852  sdst.setBit(lane, 0);
23853  }
23854  }
23855 
23856  sdst.write();
23857  } // execute
23858  // --- Inst_VOP3__V_CMP_LT_I64 class methods ---
23859 
23861  InFmt_VOP3A *iFmt)
23862  : Inst_VOP3A(iFmt, "v_cmp_lt_i64", true)
23863  {
23864  setFlag(ALU);
23865  } // Inst_VOP3__V_CMP_LT_I64
23866 
23868  {
23869  } // ~Inst_VOP3__V_CMP_LT_I64
23870 
23871  // --- description from .arch file ---
23872  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
23873  void
23875  {
23876  Wavefront *wf = gpuDynInst->wavefront();
23877  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
23878  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
23879  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23880 
23881  src0.readSrc();
23882  src1.readSrc();
23883 
23887  assert(!(instData.ABS & 0x1));
23888  assert(!(instData.ABS & 0x2));
23889  assert(!(instData.ABS & 0x4));
23890  assert(!(extData.NEG & 0x1));
23891  assert(!(extData.NEG & 0x2));
23892  assert(!(extData.NEG & 0x4));
23893 
23894  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23895  if (wf->execMask(lane)) {
23896  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
23897  }
23898  }
23899 
23900  sdst.write();
23901  } // execute
23902  // --- Inst_VOP3__V_CMP_EQ_I64 class methods ---
23903 
23905  InFmt_VOP3A *iFmt)
23906  : Inst_VOP3A(iFmt, "v_cmp_eq_i64", true)
23907  {
23908  setFlag(ALU);
23909  } // Inst_VOP3__V_CMP_EQ_I64
23910 
23912  {
23913  } // ~Inst_VOP3__V_CMP_EQ_I64
23914 
23915  // --- description from .arch file ---
23916  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
23917  void
23919  {
23920  Wavefront *wf = gpuDynInst->wavefront();
23921  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
23922  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
23923  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23924 
23925  src0.readSrc();
23926  src1.readSrc();
23927 
23931  assert(!(instData.ABS & 0x1));
23932  assert(!(instData.ABS & 0x2));
23933  assert(!(instData.ABS & 0x4));
23934  assert(!(extData.NEG & 0x1));
23935  assert(!(extData.NEG & 0x2));
23936  assert(!(extData.NEG & 0x4));
23937 
23938  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23939  if (wf->execMask(lane)) {
23940  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
23941  }
23942  }
23943 
23944  sdst.write();
23945  } // execute
23946  // --- Inst_VOP3__V_CMP_LE_I64 class methods ---
23947 
23949  InFmt_VOP3A *iFmt)
23950  : Inst_VOP3A(iFmt, "v_cmp_le_i64", true)
23951  {
23952  setFlag(ALU);
23953  } // Inst_VOP3__V_CMP_LE_I64
23954 
23956  {
23957  } // ~Inst_VOP3__V_CMP_LE_I64
23958 
23959  // --- description from .arch file ---
23960  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
23961  void
23963  {
23964  Wavefront *wf = gpuDynInst->wavefront();
23965  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
23966  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
23967  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23968 
23969  src0.readSrc();
23970  src1.readSrc();
23971 
23975  assert(!(instData.ABS & 0x1));
23976  assert(!(instData.ABS & 0x2));
23977  assert(!(instData.ABS & 0x4));
23978  assert(!(extData.NEG & 0x1));
23979  assert(!(extData.NEG & 0x2));
23980  assert(!(extData.NEG & 0x4));
23981 
23982  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23983  if (wf->execMask(lane)) {
23984  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
23985  }
23986  }
23987 
23988  sdst.write();
23989  } // execute
23990  // --- Inst_VOP3__V_CMP_GT_I64 class methods ---
23991 
23993  InFmt_VOP3A *iFmt)
23994  : Inst_VOP3A(iFmt, "v_cmp_gt_i64", true)
23995  {
23996  setFlag(ALU);
23997  } // Inst_VOP3__V_CMP_GT_I64
23998 
24000  {
24001  } // ~Inst_VOP3__V_CMP_GT_I64
24002 
24003  // --- description from .arch file ---
24004  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
24005  void
24007  {
24008  Wavefront *wf = gpuDynInst->wavefront();
24009  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24010  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24011  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24012 
24013  src0.readSrc();
24014  src1.readSrc();
24015 
24019  assert(!(instData.ABS & 0x1));
24020  assert(!(instData.ABS & 0x2));
24021  assert(!(instData.ABS & 0x4));
24022  assert(!(extData.NEG & 0x1));
24023  assert(!(extData.NEG & 0x2));
24024  assert(!(extData.NEG & 0x4));
24025 
24026  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24027  if (wf->execMask(lane)) {
24028  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
24029  }
24030  }
24031 
24032  sdst.write();
24033  } // execute
24034  // --- Inst_VOP3__V_CMP_NE_I64 class methods ---
24035 
24037  InFmt_VOP3A *iFmt)
24038  : Inst_VOP3A(iFmt, "v_cmp_ne_i64", true)
24039  {
24040  setFlag(ALU);
24041  } // Inst_VOP3__V_CMP_NE_I64
24042 
24044  {
24045  } // ~Inst_VOP3__V_CMP_NE_I64
24046 
24047  // --- description from .arch file ---
24048  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
24049  void
24051  {
24052  Wavefront *wf = gpuDynInst->wavefront();
24053  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24054  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24055  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24056 
24057  src0.readSrc();
24058  src1.readSrc();
24059 
24063  assert(!(instData.ABS & 0x1));
24064  assert(!(instData.ABS & 0x2));
24065  assert(!(instData.ABS & 0x4));
24066  assert(!(extData.NEG & 0x1));
24067  assert(!(extData.NEG & 0x2));
24068  assert(!(extData.NEG & 0x4));
24069 
24070  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24071  if (wf->execMask(lane)) {
24072  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
24073  }
24074  }
24075 
24076  sdst.write();
24077  } // execute
24078  // --- Inst_VOP3__V_CMP_GE_I64 class methods ---
24079 
24081  InFmt_VOP3A *iFmt)
24082  : Inst_VOP3A(iFmt, "v_cmp_ge_i64", true)
24083  {
24084  setFlag(ALU);
24085  } // Inst_VOP3__V_CMP_GE_I64
24086 
24088  {
24089  } // ~Inst_VOP3__V_CMP_GE_I64
24090 
24091  // --- description from .arch file ---
24092  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
24093  void
24095  {
24096  Wavefront *wf = gpuDynInst->wavefront();
24097  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24098  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24099  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24100 
24101  src0.readSrc();
24102  src1.readSrc();
24103 
24107  assert(!(instData.ABS & 0x1));
24108  assert(!(instData.ABS & 0x2));
24109  assert(!(instData.ABS & 0x4));
24110  assert(!(extData.NEG & 0x1));
24111  assert(!(extData.NEG & 0x2));
24112  assert(!(extData.NEG & 0x4));
24113 
24114  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24115  if (wf->execMask(lane)) {
24116  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
24117  }
24118  }
24119 
24120  sdst.write();
24121  } // execute
24122  // --- Inst_VOP3__V_CMP_T_I64 class methods ---
24123 
24125  : Inst_VOP3A(iFmt, "v_cmp_t_i64", true)
24126  {
24127  setFlag(ALU);
24128  } // Inst_VOP3__V_CMP_T_I64
24129 
24131  {
24132  } // ~Inst_VOP3__V_CMP_T_I64
24133 
24134  // --- description from .arch file ---
24135  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
24136  void
24138  {
24139  Wavefront *wf = gpuDynInst->wavefront();
24140  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24141 
24142  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24143  if (wf->execMask(lane)) {
24144  sdst.setBit(lane, 1);
24145  }
24146  }
24147 
24148  sdst.write();
24149  } // execute
24150  // --- Inst_VOP3__V_CMP_F_U64 class methods ---
24151 
24153  : Inst_VOP3A(iFmt, "v_cmp_f_u64", true)
24154  {
24155  setFlag(ALU);
24156  } // Inst_VOP3__V_CMP_F_U64
24157 
24159  {
24160  } // ~Inst_VOP3__V_CMP_F_U64
24161 
24162  // --- description from .arch file ---
24163  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
24164  void
24166  {
24167  Wavefront *wf = gpuDynInst->wavefront();
24168  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24169 
24170  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24171  if (wf->execMask(lane)) {
24172  sdst.setBit(lane, 0);
24173  }
24174  }
24175 
24176  sdst.write();
24177  } // execute
24178  // --- Inst_VOP3__V_CMP_LT_U64 class methods ---
24179 
24181  InFmt_VOP3A *iFmt)
24182  : Inst_VOP3A(iFmt, "v_cmp_lt_u64", true)
24183  {
24184  setFlag(ALU);
24185  } // Inst_VOP3__V_CMP_LT_U64
24186 
24188  {
24189  } // ~Inst_VOP3__V_CMP_LT_U64
24190 
24191  // --- description from .arch file ---
24192  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
24193  void
24195  {
24196  Wavefront *wf = gpuDynInst->wavefront();
24197  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24198  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24199  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24200 
24201  src0.readSrc();
24202  src1.readSrc();
24203 
24207  assert(!(instData.ABS & 0x1));
24208  assert(!(instData.ABS & 0x2));
24209  assert(!(instData.ABS & 0x4));
24210  assert(!(extData.NEG & 0x1));
24211  assert(!(extData.NEG & 0x2));
24212  assert(!(extData.NEG & 0x4));
24213 
24214  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24215  if (wf->execMask(lane)) {
24216  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
24217  }
24218  }
24219 
24220  sdst.write();
24221  } // execute
24222  // --- Inst_VOP3__V_CMP_EQ_U64 class methods ---
24223 
24225  InFmt_VOP3A *iFmt)
24226  : Inst_VOP3A(iFmt, "v_cmp_eq_u64", true)
24227  {
24228  setFlag(ALU);
24229  } // Inst_VOP3__V_CMP_EQ_U64
24230 
24232  {
24233  } // ~Inst_VOP3__V_CMP_EQ_U64
24234 
24235  // --- description from .arch file ---
24236  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
24237  void
24239  {
24240  Wavefront *wf = gpuDynInst->wavefront();
24241  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24242  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24243  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24244 
24245  src0.readSrc();
24246  src1.readSrc();
24247 
24251  assert(!(instData.ABS & 0x1));
24252  assert(!(instData.ABS & 0x2));
24253  assert(!(instData.ABS & 0x4));
24254  assert(!(extData.NEG & 0x1));
24255  assert(!(extData.NEG & 0x2));
24256  assert(!(extData.NEG & 0x4));
24257 
24258  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24259  if (wf->execMask(lane)) {
24260  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
24261  }
24262  }
24263 
24264  sdst.write();
24265  } // execute
24266  // --- Inst_VOP3__V_CMP_LE_U64 class methods ---
24267 
24269  InFmt_VOP3A *iFmt)
24270  : Inst_VOP3A(iFmt, "v_cmp_le_u64", true)
24271  {
24272  setFlag(ALU);
24273  } // Inst_VOP3__V_CMP_LE_U64
24274 
24276  {
24277  } // ~Inst_VOP3__V_CMP_LE_U64
24278 
24279  // --- description from .arch file ---
24280  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
24281  void
24283  {
24284  Wavefront *wf = gpuDynInst->wavefront();
24285  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24286  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24287  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24288 
24289  src0.readSrc();
24290  src1.readSrc();
24291 
24295  assert(!(instData.ABS & 0x1));
24296  assert(!(instData.ABS & 0x2));
24297  assert(!(instData.ABS & 0x4));
24298  assert(!(extData.NEG & 0x1));
24299  assert(!(extData.NEG & 0x2));
24300  assert(!(extData.NEG & 0x4));
24301 
24302  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24303  if (wf->execMask(lane)) {
24304  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
24305  }
24306  }
24307 
24308  sdst.write();
24309  } // execute
24310  // --- Inst_VOP3__V_CMP_GT_U64 class methods ---
24311 
24313  InFmt_VOP3A *iFmt)
24314  : Inst_VOP3A(iFmt, "v_cmp_gt_u64", true)
24315  {
24316  setFlag(ALU);
24317  } // Inst_VOP3__V_CMP_GT_U64
24318 
24320  {
24321  } // ~Inst_VOP3__V_CMP_GT_U64
24322 
24323  // --- description from .arch file ---
24324  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
24325  void
24327  {
24328  Wavefront *wf = gpuDynInst->wavefront();
24329  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24330  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24331  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24332 
24333  src0.readSrc();
24334  src1.readSrc();
24335 
24339  assert(!(instData.ABS & 0x1));
24340  assert(!(instData.ABS & 0x2));
24341  assert(!(instData.ABS & 0x4));
24342  assert(!(extData.NEG & 0x1));
24343  assert(!(extData.NEG & 0x2));
24344  assert(!(extData.NEG & 0x4));
24345 
24346  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24347  if (wf->execMask(lane)) {
24348  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
24349  }
24350  }
24351 
24352  sdst.write();
24353  } // execute
24354  // --- Inst_VOP3__V_CMP_NE_U64 class methods ---
24355 
24357  InFmt_VOP3A *iFmt)
24358  : Inst_VOP3A(iFmt, "v_cmp_ne_u64", true)
24359  {
24360  setFlag(ALU);
24361  } // Inst_VOP3__V_CMP_NE_U64
24362 
24364  {
24365  } // ~Inst_VOP3__V_CMP_NE_U64
24366 
24367  // --- description from .arch file ---
24368  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
24369  void
24371  {
24372  Wavefront *wf = gpuDynInst->wavefront();
24373  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24374  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24375  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24376 
24377  src0.readSrc();
24378  src1.readSrc();
24379 
24383  assert(!(instData.ABS & 0x1));
24384  assert(!(instData.ABS & 0x2));
24385  assert(!(instData.ABS & 0x4));
24386  assert(!(extData.NEG & 0x1));
24387  assert(!(extData.NEG & 0x2));
24388  assert(!(extData.NEG & 0x4));
24389 
24390  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24391  if (wf->execMask(lane)) {
24392  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
24393  }
24394  }
24395 
24396  sdst.write();
24397  } // execute
24398  // --- Inst_VOP3__V_CMP_GE_U64 class methods ---
24399 
24401  InFmt_VOP3A *iFmt)
24402  : Inst_VOP3A(iFmt, "v_cmp_ge_u64", true)
24403  {
24404  setFlag(ALU);
24405  } // Inst_VOP3__V_CMP_GE_U64
24406 
24408  {
24409  } // ~Inst_VOP3__V_CMP_GE_U64
24410 
24411  // --- description from .arch file ---
24412  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
24413  void
24415  {
24416  Wavefront *wf = gpuDynInst->wavefront();
24417  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24418  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24419  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24420 
24421  src0.readSrc();
24422  src1.readSrc();
24423 
24427  assert(!(instData.ABS & 0x1));
24428  assert(!(instData.ABS & 0x2));
24429  assert(!(instData.ABS & 0x4));
24430  assert(!(extData.NEG & 0x1));
24431  assert(!(extData.NEG & 0x2));
24432  assert(!(extData.NEG & 0x4));
24433 
24434  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24435  if (wf->execMask(lane)) {
24436  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
24437  }
24438  }
24439 
24440  sdst.write();
24441  } // execute
24442  // --- Inst_VOP3__V_CMP_T_U64 class methods ---
24443 
24445  : Inst_VOP3A(iFmt, "v_cmp_t_u64", true)
24446  {
24447  setFlag(ALU);
24448  } // Inst_VOP3__V_CMP_T_U64
24449 
24451  {
24452  } // ~Inst_VOP3__V_CMP_T_U64
24453 
24454  // --- description from .arch file ---
24455  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
24456  void
24458  {
24459  Wavefront *wf = gpuDynInst->wavefront();
24460  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24461 
24462  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24463  if (wf->execMask(lane)) {
24464  sdst.setBit(lane, 1);
24465  }
24466  }
24467 
24468  sdst.write();
24469  } // execute
24470  // --- Inst_VOP3__V_CMPX_F_I64 class methods ---
24471 
24473  InFmt_VOP3A *iFmt)
24474  : Inst_VOP3A(iFmt, "v_cmpx_f_i64", true)
24475  {
24476  setFlag(ALU);
24477  setFlag(WritesEXEC);
24478  } // Inst_VOP3__V_CMPX_F_I64
24479 
24481  {
24482  } // ~Inst_VOP3__V_CMPX_F_I64
24483 
24484  // --- description from .arch file ---
24485  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
24486  void
24488  {
24489  Wavefront *wf = gpuDynInst->wavefront();
24490  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24491 
24492  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24493  if (wf->execMask(lane)) {
24494  sdst.setBit(lane, 0);
24495  }
24496  }
24497 
24498  wf->execMask() = sdst.rawData();
24499  sdst.write();
24500  } // execute
24501  // --- Inst_VOP3__V_CMPX_LT_I64 class methods ---
24502 
24504  InFmt_VOP3A *iFmt)
24505  : Inst_VOP3A(iFmt, "v_cmpx_lt_i64", true)
24506  {
24507  setFlag(ALU);
24508  setFlag(WritesEXEC);
24509  } // Inst_VOP3__V_CMPX_LT_I64
24510 
24512  {
24513  } // ~Inst_VOP3__V_CMPX_LT_I64
24514 
24515  // --- description from .arch file ---
24516  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
24517  void
24519  {
24520  Wavefront *wf = gpuDynInst->wavefront();
24521  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24522  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24523  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24524 
24525  src0.readSrc();
24526  src1.readSrc();
24527 
24531  assert(!(instData.ABS & 0x1));
24532  assert(!(instData.ABS & 0x2));
24533  assert(!(instData.ABS & 0x4));
24534  assert(!(extData.NEG & 0x1));
24535  assert(!(extData.NEG & 0x2));
24536  assert(!(extData.NEG & 0x4));
24537 
24538  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24539  if (wf->execMask(lane)) {
24540  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
24541  }
24542  }
24543 
24544  wf->execMask() = sdst.rawData();
24545  sdst.write();
24546  } // execute
24547  // --- Inst_VOP3__V_CMPX_EQ_I64 class methods ---
24548 
24550  InFmt_VOP3A *iFmt)
24551  : Inst_VOP3A(iFmt, "v_cmpx_eq_i64", true)
24552  {
24553  setFlag(ALU);
24554  setFlag(WritesEXEC);
24555  } // Inst_VOP3__V_CMPX_EQ_I64
24556 
24558  {
24559  } // ~Inst_VOP3__V_CMPX_EQ_I64
24560 
24561  // --- description from .arch file ---
24562  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
24563  void
24565  {
24566  Wavefront *wf = gpuDynInst->wavefront();
24567  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24568  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24569  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24570 
24571  src0.readSrc();
24572  src1.readSrc();
24573 
24577  assert(!(instData.ABS & 0x1));
24578  assert(!(instData.ABS & 0x2));
24579  assert(!(instData.ABS & 0x4));
24580  assert(!(extData.NEG & 0x1));
24581  assert(!(extData.NEG & 0x2));
24582  assert(!(extData.NEG & 0x4));
24583 
24584  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24585  if (wf->execMask(lane)) {
24586  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
24587  }
24588  }
24589 
24590  wf->execMask() = sdst.rawData();
24591  sdst.write();
24592  } // execute
24593  // --- Inst_VOP3__V_CMPX_LE_I64 class methods ---
24594 
24596  InFmt_VOP3A *iFmt)
24597  : Inst_VOP3A(iFmt, "v_cmpx_le_i64", true)
24598  {
24599  setFlag(ALU);
24600  setFlag(WritesEXEC);
24601  } // Inst_VOP3__V_CMPX_LE_I64
24602 
24604  {
24605  } // ~Inst_VOP3__V_CMPX_LE_I64
24606 
24607  // --- description from .arch file ---
24608  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
24609  void
24611  {
24612  Wavefront *wf = gpuDynInst->wavefront();
24613  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24614  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24615  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24616 
24617  src0.readSrc();
24618  src1.readSrc();
24619 
24623  assert(!(instData.ABS & 0x1));
24624  assert(!(instData.ABS & 0x2));
24625  assert(!(instData.ABS & 0x4));
24626  assert(!(extData.NEG & 0x1));
24627  assert(!(extData.NEG & 0x2));
24628  assert(!(extData.NEG & 0x4));
24629 
24630  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24631  if (wf->execMask(lane)) {
24632  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
24633  }
24634  }
24635 
24636  wf->execMask() = sdst.rawData();
24637  sdst.write();
24638  } // execute
24639  // --- Inst_VOP3__V_CMPX_GT_I64 class methods ---
24640 
24642  InFmt_VOP3A *iFmt)
24643  : Inst_VOP3A(iFmt, "v_cmpx_gt_i64", true)
24644  {
24645  setFlag(ALU);
24646  setFlag(WritesEXEC);
24647  } // Inst_VOP3__V_CMPX_GT_I64
24648 
24650  {
24651  } // ~Inst_VOP3__V_CMPX_GT_I64
24652 
24653  // --- description from .arch file ---
24654  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
24655  void
24657  {
24658  Wavefront *wf = gpuDynInst->wavefront();
24659  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24660  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24661  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24662 
24663  src0.readSrc();
24664  src1.readSrc();
24665 
24669  assert(!(instData.ABS & 0x1));
24670  assert(!(instData.ABS & 0x2));
24671  assert(!(instData.ABS & 0x4));
24672  assert(!(extData.NEG & 0x1));
24673  assert(!(extData.NEG & 0x2));
24674  assert(!(extData.NEG & 0x4));
24675 
24676  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24677  if (wf->execMask(lane)) {
24678  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
24679  }
24680  }
24681 
24682  wf->execMask() = sdst.rawData();
24683  sdst.write();
24684  } // execute
24685  // --- Inst_VOP3__V_CMPX_NE_I64 class methods ---
24686 
24688  InFmt_VOP3A *iFmt)
24689  : Inst_VOP3A(iFmt, "v_cmpx_ne_i64", true)
24690  {
24691  setFlag(ALU);
24692  setFlag(WritesEXEC);
24693  } // Inst_VOP3__V_CMPX_NE_I64
24694 
24696  {
24697  } // ~Inst_VOP3__V_CMPX_NE_I64
24698 
24699  // --- description from .arch file ---
24700  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
24701  void
24703  {
24704  Wavefront *wf = gpuDynInst->wavefront();
24705  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24706  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24707  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24708 
24709  src0.readSrc();
24710  src1.readSrc();
24711 
24715  assert(!(instData.ABS & 0x1));
24716  assert(!(instData.ABS & 0x2));
24717  assert(!(instData.ABS & 0x4));
24718  assert(!(extData.NEG & 0x1));
24719  assert(!(extData.NEG & 0x2));
24720  assert(!(extData.NEG & 0x4));
24721 
24722  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24723  if (wf->execMask(lane)) {
24724  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
24725  }
24726  }
24727 
24728  wf->execMask() = sdst.rawData();
24729  sdst.write();
24730  } // execute
24731  // --- Inst_VOP3__V_CMPX_GE_I64 class methods ---
24732 
24734  InFmt_VOP3A *iFmt)
24735  : Inst_VOP3A(iFmt, "v_cmpx_ge_i64", true)
24736  {
24737  setFlag(ALU);
24738  setFlag(WritesEXEC);
24739  } // Inst_VOP3__V_CMPX_GE_I64
24740 
24742  {
24743  } // ~Inst_VOP3__V_CMPX_GE_I64
24744 
24745  // --- description from .arch file ---
24746  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
24747  void
24749  {
24750  Wavefront *wf = gpuDynInst->wavefront();
24751  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
24752  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
24753  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24754 
24755  src0.readSrc();
24756  src1.readSrc();
24757 
24761  assert(!(instData.ABS & 0x1));
24762  assert(!(instData.ABS & 0x2));
24763  assert(!(instData.ABS & 0x4));
24764  assert(!(extData.NEG & 0x1));
24765  assert(!(extData.NEG & 0x2));
24766  assert(!(extData.NEG & 0x4));
24767 
24768  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24769  if (wf->execMask(lane)) {
24770  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
24771  }
24772  }
24773 
24774  wf->execMask() = sdst.rawData();
24775  sdst.write();
24776  } // execute
24777  // --- Inst_VOP3__V_CMPX_T_I64 class methods ---
24778 
24780  InFmt_VOP3A *iFmt)
24781  : Inst_VOP3A(iFmt, "v_cmpx_t_i64", true)
24782  {
24783  setFlag(ALU);
24784  setFlag(WritesEXEC);
24785  } // Inst_VOP3__V_CMPX_T_I64
24786 
24788  {
24789  } // ~Inst_VOP3__V_CMPX_T_I64
24790 
24791  // --- description from .arch file ---
24792  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
24793  void
24795  {
24796  Wavefront *wf = gpuDynInst->wavefront();
24797  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24798 
24799  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24800  if (wf->execMask(lane)) {
24801  sdst.setBit(lane, 1);
24802  }
24803  }
24804 
24805  wf->execMask() = sdst.rawData();
24806  sdst.write();
24807  } // execute
24808  // --- Inst_VOP3__V_CMPX_F_U64 class methods ---
24809 
24811  InFmt_VOP3A *iFmt)
24812  : Inst_VOP3A(iFmt, "v_cmpx_f_u64", true)
24813  {
24814  setFlag(ALU);
24815  setFlag(WritesEXEC);
24816  } // Inst_VOP3__V_CMPX_F_U64
24817 
24819  {
24820  } // ~Inst_VOP3__V_CMPX_F_U64
24821 
24822  // --- description from .arch file ---
24823  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
24824  void
24826  {
24827  Wavefront *wf = gpuDynInst->wavefront();
24828  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24829 
24830  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24831  if (wf->execMask(lane)) {
24832  sdst.setBit(lane, 0);
24833  }
24834  }
24835 
24836  wf->execMask() = sdst.rawData();
24837  sdst.write();
24838  } // execute
24839  // --- Inst_VOP3__V_CMPX_LT_U64 class methods ---
24840 
24842  InFmt_VOP3A *iFmt)
24843  : Inst_VOP3A(iFmt, "v_cmpx_lt_u64", true)
24844  {
24845  setFlag(ALU);
24846  setFlag(WritesEXEC);
24847  } // Inst_VOP3__V_CMPX_LT_U64
24848 
24850  {
24851  } // ~Inst_VOP3__V_CMPX_LT_U64
24852 
24853  // --- description from .arch file ---
24854  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
24855  void
24857  {
24858  Wavefront *wf = gpuDynInst->wavefront();
24859  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24860  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24861  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24862 
24863  src0.readSrc();
24864  src1.readSrc();
24865 
24869  assert(!(instData.ABS & 0x1));
24870  assert(!(instData.ABS & 0x2));
24871  assert(!(instData.ABS & 0x4));
24872  assert(!(extData.NEG & 0x1));
24873  assert(!(extData.NEG & 0x2));
24874  assert(!(extData.NEG & 0x4));
24875 
24876  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24877  if (wf->execMask(lane)) {
24878  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
24879  }
24880  }
24881 
24882  wf->execMask() = sdst.rawData();
24883  sdst.write();
24884  } // execute
24885  // --- Inst_VOP3__V_CMPX_EQ_U64 class methods ---
24886 
24888  InFmt_VOP3A *iFmt)
24889  : Inst_VOP3A(iFmt, "v_cmpx_eq_u64", true)
24890  {
24891  setFlag(ALU);
24892  setFlag(WritesEXEC);
24893  } // Inst_VOP3__V_CMPX_EQ_U64
24894 
24896  {
24897  } // ~Inst_VOP3__V_CMPX_EQ_U64
24898 
24899  // --- description from .arch file ---
24900  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
24901  void
24903  {
24904  Wavefront *wf = gpuDynInst->wavefront();
24905  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24906  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24907  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24908 
24909  src0.readSrc();
24910  src1.readSrc();
24911 
24915  assert(!(instData.ABS & 0x1));
24916  assert(!(instData.ABS & 0x2));
24917  assert(!(instData.ABS & 0x4));
24918  assert(!(extData.NEG & 0x1));
24919  assert(!(extData.NEG & 0x2));
24920  assert(!(extData.NEG & 0x4));
24921 
24922  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24923  if (wf->execMask(lane)) {
24924  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
24925  }
24926  }
24927 
24928  wf->execMask() = sdst.rawData();
24929  sdst.write();
24930  } // execute
24931  // --- Inst_VOP3__V_CMPX_LE_U64 class methods ---
24932 
24934  InFmt_VOP3A *iFmt)
24935  : Inst_VOP3A(iFmt, "v_cmpx_le_u64", true)
24936  {
24937  setFlag(ALU);
24938  setFlag(WritesEXEC);
24939  } // Inst_VOP3__V_CMPX_LE_U64
24940 
24942  {
24943  } // ~Inst_VOP3__V_CMPX_LE_U64
24944 
24945  // --- description from .arch file ---
24946  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
24947  void
24949  {
24950  Wavefront *wf = gpuDynInst->wavefront();
24951  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24952  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24953  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
24954 
24955  src0.readSrc();
24956  src1.readSrc();
24957 
24961  assert(!(instData.ABS & 0x1));
24962  assert(!(instData.ABS & 0x2));
24963  assert(!(instData.ABS & 0x4));
24964  assert(!(extData.NEG & 0x1));
24965  assert(!(extData.NEG & 0x2));
24966  assert(!(extData.NEG & 0x4));
24967 
24968  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24969  if (wf->execMask(lane)) {
24970  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
24971  }
24972  }
24973 
24974  wf->execMask() = sdst.rawData();
24975  sdst.write();
24976  } // execute
24977  // --- Inst_VOP3__V_CMPX_GT_U64 class methods ---
24978 
24980  InFmt_VOP3A *iFmt)
24981  : Inst_VOP3A(iFmt, "v_cmpx_gt_u64", true)
24982  {
24983  setFlag(ALU);
24984  setFlag(WritesEXEC);
24985  } // Inst_VOP3__V_CMPX_GT_U64
24986 
24988  {
24989  } // ~Inst_VOP3__V_CMPX_GT_U64
24990 
24991  // --- description from .arch file ---
24992  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
24993  void
24995  {
24996  Wavefront *wf = gpuDynInst->wavefront();
24997  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
24998  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
24999  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
25000 
25001  src0.readSrc();
25002  src1.readSrc();
25003 
25007  assert(!(instData.ABS & 0x1));
25008  assert(!(instData.ABS & 0x2));
25009  assert(!(instData.ABS & 0x4));
25010  assert(!(extData.NEG & 0x1));
25011  assert(!(extData.NEG & 0x2));
25012  assert(!(extData.NEG & 0x4));
25013 
25014  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25015  if (wf->execMask(lane)) {
25016  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
25017  }
25018  }
25019 
25020  wf->execMask() = sdst.rawData();
25021  sdst.write();
25022  } // execute
25023  // --- Inst_VOP3__V_CMPX_NE_U64 class methods ---
25024 
25026  InFmt_VOP3A *iFmt)
25027  : Inst_VOP3A(iFmt, "v_cmpx_ne_u64", true)
25028  {
25029  setFlag(ALU);
25030  setFlag(WritesEXEC);
25031  } // Inst_VOP3__V_CMPX_NE_U64
25032 
25034  {
25035  } // ~Inst_VOP3__V_CMPX_NE_U64
25036 
25037  // --- description from .arch file ---
25038  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
25039  void
25041  {
25042  Wavefront *wf = gpuDynInst->wavefront();
25043  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
25044  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
25045  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
25046 
25047  src0.readSrc();
25048  src1.readSrc();
25049 
25053  assert(!(instData.ABS & 0x1));
25054  assert(!(instData.ABS & 0x2));
25055  assert(!(instData.ABS & 0x4));
25056  assert(!(extData.NEG & 0x1));
25057  assert(!(extData.NEG & 0x2));
25058  assert(!(extData.NEG & 0x4));
25059 
25060  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25061  if (wf->execMask(lane)) {
25062  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
25063  }
25064  }
25065 
25066  wf->execMask() = sdst.rawData();
25067  sdst.write();
25068  } // execute
25069  // --- Inst_VOP3__V_CMPX_GE_U64 class methods ---
25070 
25072  InFmt_VOP3A *iFmt)
25073  : Inst_VOP3A(iFmt, "v_cmpx_ge_u64", true)
25074  {
25075  setFlag(ALU);
25076  setFlag(WritesEXEC);
25077  } // Inst_VOP3__V_CMPX_GE_U64
25078 
25080  {
25081  } // ~Inst_VOP3__V_CMPX_GE_U64
25082 
25083  // --- description from .arch file ---
25084  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
25085  void
25087  {
25088  Wavefront *wf = gpuDynInst->wavefront();
25089  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
25090  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
25091  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
25092 
25093  src0.readSrc();
25094  src1.readSrc();
25095 
25099  assert(!(instData.ABS & 0x1));
25100  assert(!(instData.ABS & 0x2));
25101  assert(!(instData.ABS & 0x4));
25102  assert(!(extData.NEG & 0x1));
25103  assert(!(extData.NEG & 0x2));
25104  assert(!(extData.NEG & 0x4));
25105 
25106  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25107  if (wf->execMask(lane)) {
25108  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
25109  }
25110  }
25111 
25112  wf->execMask() = sdst.rawData();
25113  sdst.write();
25114  } // execute
25115  // --- Inst_VOP3__V_CMPX_T_U64 class methods ---
25116 
25118  InFmt_VOP3A *iFmt)
25119  : Inst_VOP3A(iFmt, "v_cmpx_t_u64", true)
25120  {
25121  setFlag(ALU);
25122  setFlag(WritesEXEC);
25123  } // Inst_VOP3__V_CMPX_T_U64
25124 
25126  {
25127  } // ~Inst_VOP3__V_CMPX_T_U64
25128 
25129  // --- description from .arch file ---
25130  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
25131  void
25133  {
25134  Wavefront *wf = gpuDynInst->wavefront();
25135  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
25136 
25140  assert(!(instData.ABS & 0x1));
25141  assert(!(instData.ABS & 0x2));
25142  assert(!(instData.ABS & 0x4));
25143  assert(!(extData.NEG & 0x1));
25144  assert(!(extData.NEG & 0x2));
25145  assert(!(extData.NEG & 0x4));
25146 
25147  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25148  if (wf->execMask(lane)) {
25149  sdst.setBit(lane, 1);
25150  }
25151  }
25152 
25153  wf->execMask() = sdst.rawData();
25154  sdst.write();
25155  } // execute
25156  // --- Inst_VOP3__V_CNDMASK_B32 class methods ---
25157 
25159  : Inst_VOP3A(iFmt, "v_cndmask_b32", false)
25160  {
25161  setFlag(ALU);
25162  setFlag(ReadsVCC);
25163  } // Inst_VOP3__V_CNDMASK_B32
25164 
25166  {
25167  } // ~Inst_VOP3__V_CNDMASK_B32
25168 
25169  // --- description from .arch file ---
25170  // D.u = (VCC[i] ? S1.u : S0.u) (i = threadID in wave); VOP3: specify VCC
25171  // as a scalar GPR in S2.
25172  void
25174  {
25175  Wavefront *wf = gpuDynInst->wavefront();
25176  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
25177  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
25178  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
25179  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25180 
25181  src0.readSrc();
25182  src1.readSrc();
25183  vcc.read();
25184 
25188  assert(!(instData.ABS & 0x1));
25189  assert(!(instData.ABS & 0x2));
25190  assert(!(instData.ABS & 0x4));
25191  assert(!(extData.NEG & 0x1));
25192  assert(!(extData.NEG & 0x2));
25193  assert(!(extData.NEG & 0x4));
25194 
25195  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25196  if (wf->execMask(lane)) {
25197  vdst[lane] = bits(vcc.rawData(), lane)
25198  ? src1[lane] : src0[lane];
25199  }
25200  }
25201 
25202  vdst.write();
25203  } // execute
25204  // --- Inst_VOP3__V_ADD_F32 class methods ---
25205 
25207  : Inst_VOP3A(iFmt, "v_add_f32", false)
25208  {
25209  setFlag(ALU);
25210  setFlag(F32);
25211  } // Inst_VOP3__V_ADD_F32
25212 
25214  {
25215  } // ~Inst_VOP3__V_ADD_F32
25216 
25217  // --- description from .arch file ---
25218  // D.f = S0.f + S1.f.
25219  void
25221  {
25222  Wavefront *wf = gpuDynInst->wavefront();
25223  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
25224  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
25225  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25226 
25227  src0.readSrc();
25228  src1.readSrc();
25229 
25230  if (instData.ABS & 0x1) {
25231  src0.absModifier();
25232  }
25233 
25234  if (instData.ABS & 0x2) {
25235  src1.absModifier();
25236  }
25237 
25238  if (extData.NEG & 0x1) {
25239  src0.negModifier();
25240  }
25241 
25242  if (extData.NEG & 0x2) {
25243  src1.negModifier();
25244  }
25245 
25249  assert(!(instData.ABS & 0x4));
25250  assert(!(extData.NEG & 0x4));
25251 
25252  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25253  if (wf->execMask(lane)) {
25254  vdst[lane] = src0[lane] + src1[lane];
25255  }
25256  }
25257 
25258  vdst.write();
25259  } // execute
25260  // --- Inst_VOP3__V_SUB_F32 class methods ---
25261 
25263  : Inst_VOP3A(iFmt, "v_sub_f32", false)
25264  {
25265  setFlag(ALU);
25266  setFlag(F32);
25267  } // Inst_VOP3__V_SUB_F32
25268 
25270  {
25271  } // ~Inst_VOP3__V_SUB_F32
25272 
25273  // --- description from .arch file ---
25274  // D.f = S0.f - S1.f.
25275  // SQ translates to V_ADD_F32.
25276  void
25278  {
25279  Wavefront *wf = gpuDynInst->wavefront();
25280  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
25281  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
25282  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25283 
25284  src0.readSrc();
25285  src1.readSrc();
25286 
25287  if (instData.ABS & 0x1) {
25288  src0.absModifier();
25289  }
25290 
25291  if (instData.ABS & 0x2) {
25292  src1.absModifier();
25293  }
25294 
25295  if (extData.NEG & 0x1) {
25296  src0.negModifier();
25297  }
25298 
25299  if (extData.NEG & 0x2) {
25300  src1.negModifier();
25301  }
25302 
25306  assert(!(instData.ABS & 0x4));
25307  assert(!(extData.NEG & 0x4));
25308 
25309  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25310  if (wf->execMask(lane)) {
25311  vdst[lane] = src0[lane] - src1[lane];
25312  }
25313  }
25314 
25315  vdst.write();
25316  } // execute
25317  // --- Inst_VOP3__V_SUBREV_F32 class methods ---
25318 
25320  : Inst_VOP3A(iFmt, "v_subrev_f32", false)
25321  {
25322  setFlag(ALU);
25323  setFlag(F32);
25324  } // Inst_VOP3__V_SUBREV_F32
25325 
25327  {
25328  } // ~Inst_VOP3__V_SUBREV_F32
25329 
25330  // --- description from .arch file ---
25331  // D.f = S1.f - S0.f.
25332  // SQ translates to V_ADD_F32.
25333  void
25335  {
25336  Wavefront *wf = gpuDynInst->wavefront();
25337  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
25338  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
25339  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25340 
25341  src0.readSrc();
25342  src1.readSrc();
25343 
25344  if (instData.ABS & 0x1) {
25345  src0.absModifier();
25346  }
25347 
25348  if (instData.ABS & 0x2) {
25349  src1.absModifier();
25350  }
25351 
25352  if (extData.NEG & 0x1) {
25353  src0.negModifier();
25354  }
25355 
25356  if (extData.NEG & 0x2) {
25357  src1.negModifier();
25358  }
25359 
25363  assert(!(instData.ABS & 0x4));
25364  assert(!(extData.NEG & 0x4));
25365 
25366  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25367  if (wf->execMask(lane)) {
25368  vdst[lane] = src1[lane] - src0[lane];
25369  }
25370  }
25371 
25372  vdst.write();
25373  } // execute
25374  // --- Inst_VOP3__V_MUL_LEGACY_F32 class methods ---
25375 
25377  : Inst_VOP3A(iFmt, "v_mul_legacy_f32", false)
25378  {
25379  setFlag(ALU);
25380  setFlag(F32);
25381  } // Inst_VOP3__V_MUL_LEGACY_F32
25382 
25384  {
25385  } // ~Inst_VOP3__V_MUL_LEGACY_F32
25386 
25387  // --- description from .arch file ---
25388  // D.f = S0.f * S1.f (DX9 rules, 0.0*x = 0.0).
25389  void
25391  {
25392  Wavefront *wf = gpuDynInst->wavefront();
25393  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
25394  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
25395  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25396 
25397  src0.readSrc();
25398  src1.readSrc();
25399 
25400  if (instData.ABS & 0x1) {
25401  src0.absModifier();
25402  }
25403 
25404  if (instData.ABS & 0x2) {
25405  src1.absModifier();
25406  }
25407 
25408  if (extData.NEG & 0x1) {
25409  src0.negModifier();
25410  }
25411 
25412  if (extData.NEG & 0x2) {
25413  src1.negModifier();
25414  }
25415 
25419  assert(!(instData.ABS & 0x4));
25420  assert(!(extData.NEG & 0x4));
25421 
25422  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25423  if (wf->execMask(lane)) {
25424  if (std::isnan(src0[lane]) ||
25425  std::isnan(src1[lane])) {
25426  vdst[lane] = NAN;
25427  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
25428  std::fpclassify(src0[lane]) == FP_ZERO) &&
25429  !std::signbit(src0[lane])) {
25430  if (std::isinf(src1[lane])) {
25431  vdst[lane] = NAN;
25432  } else if (!std::signbit(src1[lane])) {
25433  vdst[lane] = +0.0;
25434  } else {
25435  vdst[lane] = -0.0;
25436  }
25437  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
25438  std::fpclassify(src0[lane]) == FP_ZERO) &&
25439  std::signbit(src0[lane])) {
25440  if (std::isinf(src1[lane])) {
25441  vdst[lane] = NAN;
25442  } else if (std::signbit(src1[lane])) {
25443  vdst[lane] = +0.0;
25444  } else {
25445  vdst[lane] = -0.0;
25446  }
25447  } else if (std::isinf(src0[lane]) &&
25448  !std::signbit(src0[lane])) {
25449  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
25450  std::fpclassify(src1[lane]) == FP_ZERO) {
25451  vdst[lane] = NAN;
25452  } else if (!std::signbit(src1[lane])) {
25453  vdst[lane] = +INFINITY;
25454  } else {
25455  vdst[lane] = -INFINITY;
25456  }
25457  } else if (std::isinf(src0[lane]) &&
25458  std::signbit(src0[lane])) {
25459  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
25460  std::fpclassify(src1[lane]) == FP_ZERO) {
25461  vdst[lane] = NAN;
25462  } else if (std::signbit(src1[lane])) {
25463  vdst[lane] = +INFINITY;
25464  } else {
25465  vdst[lane] = -INFINITY;
25466  }
25467  } else {
25468  vdst[lane] = src0[lane] * src1[lane];
25469  }
25470  }
25471  }
25472 
25473  vdst.write();
25474  } // execute
25475  // --- Inst_VOP3__V_MUL_F32 class methods ---
25476 
25478  : Inst_VOP3A(iFmt, "v_mul_f32", false)
25479  {
25480  setFlag(ALU);
25481  setFlag(F32);
25482  } // Inst_VOP3__V_MUL_F32
25483 
25485  {
25486  } // ~Inst_VOP3__V_MUL_F32
25487 
25488  // --- description from .arch file ---
25489  // D.f = S0.f * S1.f.
25490  void
25492  {
25493  Wavefront *wf = gpuDynInst->wavefront();
25494  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
25495  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
25496  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25497 
25498  src0.readSrc();
25499  src1.readSrc();
25500 
25501  if (instData.ABS & 0x1) {
25502  src0.absModifier();
25503  }
25504 
25505  if (instData.ABS & 0x2) {
25506  src1.absModifier();
25507  }
25508 
25509  if (extData.NEG & 0x1) {
25510  src0.negModifier();
25511  }
25512 
25513  if (extData.NEG & 0x2) {
25514  src1.negModifier();
25515  }
25516 
25520  assert(!(instData.ABS & 0x4));
25521  assert(!(extData.NEG & 0x4));
25522 
25523  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25524  if (wf->execMask(lane)) {
25525  if (std::isnan(src0[lane]) ||
25526  std::isnan(src1[lane])) {
25527  vdst[lane] = NAN;
25528  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
25529  std::fpclassify(src0[lane]) == FP_ZERO) &&
25530  !std::signbit(src0[lane])) {
25531  if (std::isinf(src1[lane])) {
25532  vdst[lane] = NAN;
25533  } else if (!std::signbit(src1[lane])) {
25534  vdst[lane] = +0.0;
25535  } else {
25536  vdst[lane] = -0.0;
25537  }
25538  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
25539  std::fpclassify(src0[lane]) == FP_ZERO) &&
25540  std::signbit(src0[lane])) {
25541  if (std::isinf(src1[lane])) {
25542  vdst[lane] = NAN;
25543  } else if (std::signbit(src1[lane])) {
25544  vdst[lane] = +0.0;
25545  } else {
25546  vdst[lane] = -0.0;
25547  }
25548  } else if (std::isinf(src0[lane]) &&
25549  !std::signbit(src0[lane])) {
25550  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
25551  std::fpclassify(src1[lane]) == FP_ZERO) {
25552  vdst[lane] = NAN;
25553  } else if (!std::signbit(src1[lane])) {
25554  vdst[lane] = +INFINITY;
25555  } else {
25556  vdst[lane] = -INFINITY;
25557  }
25558  } else if (std::isinf(src0[lane]) &&
25559  std::signbit(src0[lane])) {
25560  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
25561  std::fpclassify(src1[lane]) == FP_ZERO) {
25562  vdst[lane] = NAN;
25563  } else if (std::signbit(src1[lane])) {
25564  vdst[lane] = +INFINITY;
25565  } else {
25566  vdst[lane] = -INFINITY;
25567  }
25568  } else {
25569  vdst[lane] = src0[lane] * src1[lane];
25570  }
25571  }
25572  }
25573 
25574  vdst.write();
25575  } // execute
25576  // --- Inst_VOP3__V_MUL_I32_I24 class methods ---
25577 
25579  : Inst_VOP3A(iFmt, "v_mul_i32_i24", false)
25580  {
25581  setFlag(ALU);
25582  } // Inst_VOP3__V_MUL_I32_I24
25583 
25585  {
25586  } // ~Inst_VOP3__V_MUL_I32_I24
25587 
25588  // --- description from .arch file ---
25589  // D.i = S0.i[23:0] * S1.i[23:0].
25590  void
25592  {
25593  Wavefront *wf = gpuDynInst->wavefront();
25594  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
25595  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
25596  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25597 
25598  src0.readSrc();
25599  src1.read();
25600 
25604  assert(!(instData.ABS & 0x1));
25605  assert(!(instData.ABS & 0x2));
25606  assert(!(instData.ABS & 0x4));
25607  assert(!(extData.NEG & 0x1));
25608  assert(!(extData.NEG & 0x2));
25609  assert(!(extData.NEG & 0x4));
25610 
25611  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25612  if (wf->execMask(lane)) {
25613  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
25614  * sext<24>(bits(src1[lane], 23, 0));
25615  }
25616  }
25617 
25618  vdst.write();
25619  } // execute
25620  // --- Inst_VOP3__V_MUL_HI_I32_I24 class methods ---
25621 
25623  : Inst_VOP3A(iFmt, "v_mul_hi_i32_i24", false)
25624  {
25625  setFlag(ALU);
25626  } // Inst_VOP3__V_MUL_HI_I32_I24
25627 
25629  {
25630  } // ~Inst_VOP3__V_MUL_HI_I32_I24
25631 
25632  // --- description from .arch file ---
25633  // D.i = (S0.i[23:0] * S1.i[23:0])>>32.
25634  void
25636  {
25637  Wavefront *wf = gpuDynInst->wavefront();
25638  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
25639  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
25640  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25641 
25642  src0.readSrc();
25643  src1.readSrc();
25644 
25648  assert(!(instData.ABS & 0x1));
25649  assert(!(instData.ABS & 0x2));
25650  assert(!(instData.ABS & 0x4));
25651  assert(!(extData.NEG & 0x1));
25652  assert(!(extData.NEG & 0x2));
25653  assert(!(extData.NEG & 0x4));
25654 
25655  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25656  if (wf->execMask(lane)) {
25657  VecElemI64 tmp_src0
25658  = (VecElemI64)sext<24>(bits(src0[lane], 23, 0));
25659  VecElemI64 tmp_src1
25660  = (VecElemI64)sext<24>(bits(src1[lane], 23, 0));
25661 
25662  vdst[lane] = (VecElemI32)((tmp_src0 * tmp_src1) >> 32);
25663  }
25664  }
25665 
25666  vdst.write();
25667  } // execute
25668  // --- Inst_VOP3__V_MUL_U32_U24 class methods ---
25669 
25671  : Inst_VOP3A(iFmt, "v_mul_u32_u24", false)
25672  {
25673  setFlag(ALU);
25674  } // Inst_VOP3__V_MUL_U32_U24
25675 
25677  {
25678  } // ~Inst_VOP3__V_MUL_U32_U24
25679 
25680  // --- description from .arch file ---
25681  // D.u = S0.u[23:0] * S1.u[23:0].
25682  void
25684  {
25685  Wavefront *wf = gpuDynInst->wavefront();
25686  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
25687  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
25688  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25689 
25690  src0.readSrc();
25691  src1.readSrc();
25692 
25696  assert(!(instData.ABS & 0x1));
25697  assert(!(instData.ABS & 0x2));
25698  assert(!(instData.ABS & 0x4));
25699  assert(!(extData.NEG & 0x1));
25700  assert(!(extData.NEG & 0x2));
25701  assert(!(extData.NEG & 0x4));
25702 
25703  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25704  if (wf->execMask(lane)) {
25705  vdst[lane] = bits(src0[lane], 23, 0) * bits(src1[lane], 23, 0);
25706  }
25707  }
25708 
25709  vdst.write();
25710  } // execute
25711  // --- Inst_VOP3__V_MUL_HI_U32_U24 class methods ---
25712 
25714  : Inst_VOP3A(iFmt, "v_mul_hi_u32_u24", false)
25715  {
25716  setFlag(ALU);
25717  } // Inst_VOP3__V_MUL_HI_U32_U24
25718 
25720  {
25721  } // ~Inst_VOP3__V_MUL_HI_U32_U24
25722 
25723  // --- description from .arch file ---
25724  // D.i = (S0.u[23:0] * S1.u[23:0])>>32.
25725  void
25727  {
25728  Wavefront *wf = gpuDynInst->wavefront();
25729  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
25730  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
25731  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25732 
25733  src0.readSrc();
25734  src1.readSrc();
25735 
25739  assert(!(instData.ABS & 0x1));
25740  assert(!(instData.ABS & 0x2));
25741  assert(!(instData.ABS & 0x4));
25742  assert(!(extData.NEG & 0x1));
25743  assert(!(extData.NEG & 0x2));
25744  assert(!(extData.NEG & 0x4));
25745 
25746  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25747  if (wf->execMask(lane)) {
25748  VecElemU64 tmp_src0 = (VecElemU64)bits(src0[lane], 23, 0);
25749  VecElemU64 tmp_src1 = (VecElemU64)bits(src1[lane], 23, 0);
25750  vdst[lane] = (VecElemU32)((tmp_src0 * tmp_src1) >> 32);
25751  }
25752  }
25753 
25754  vdst.write();
25755  } // execute
25756  // --- Inst_VOP3__V_MIN_F32 class methods ---
25757 
25759  : Inst_VOP3A(iFmt, "v_min_f32", false)
25760  {
25761  setFlag(ALU);
25762  setFlag(F32);
25763  } // Inst_VOP3__V_MIN_F32
25764 
25766  {
25767  } // ~Inst_VOP3__V_MIN_F32
25768 
25769  // --- description from .arch file ---
25770  // D.f = (S0.f < S1.f ? S0.f : S1.f).
25771  void
25773  {
25774  Wavefront *wf = gpuDynInst->wavefront();
25775  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
25776  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
25777  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25778 
25779  src0.readSrc();
25780  src1.readSrc();
25781 
25782  if (instData.ABS & 0x1) {
25783  src0.absModifier();
25784  }
25785 
25786  if (instData.ABS & 0x2) {
25787  src1.absModifier();
25788  }
25789 
25790  if (extData.NEG & 0x1) {
25791  src0.negModifier();
25792  }
25793 
25794  if (extData.NEG & 0x2) {
25795  src1.negModifier();
25796  }
25797 
25801  assert(!(instData.ABS & 0x4));
25802  assert(!(extData.NEG & 0x4));
25803 
25804  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25805  if (wf->execMask(lane)) {
25806  vdst[lane] = std::fmin(src0[lane], src1[lane]);
25807  }
25808  }
25809 
25810  vdst.write();
25811  } // execute
25812  // --- Inst_VOP3__V_MAX_F32 class methods ---
25813 
25815  : Inst_VOP3A(iFmt, "v_max_f32", false)
25816  {
25817  setFlag(ALU);
25818  setFlag(F32);
25819  } // Inst_VOP3__V_MAX_F32
25820 
25822  {
25823  } // ~Inst_VOP3__V_MAX_F32
25824 
25825  // --- description from .arch file ---
25826  // D.f = (S0.f >= S1.f ? S0.f : S1.f).
25827  void
25829  {
25830  Wavefront *wf = gpuDynInst->wavefront();
25831  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
25832  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
25833  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25834 
25835  src0.readSrc();
25836  src1.readSrc();
25837 
25838  if (instData.ABS & 0x1) {
25839  src0.absModifier();
25840  }
25841 
25842  if (instData.ABS & 0x2) {
25843  src1.absModifier();
25844  }
25845 
25846  if (extData.NEG & 0x1) {
25847  src0.negModifier();
25848  }
25849 
25850  if (extData.NEG & 0x2) {
25851  src1.negModifier();
25852  }
25853 
25857  assert(!(instData.ABS & 0x4));
25858  assert(!(extData.NEG & 0x4));
25859 
25860  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25861  if (wf->execMask(lane)) {
25862  vdst[lane] = std::fmax(src0[lane], src1[lane]);
25863  }
25864  }
25865 
25866  vdst.write();
25867  } // execute
25868  // --- Inst_VOP3__V_MIN_I32 class methods ---
25869 
25871  : Inst_VOP3A(iFmt, "v_min_i32", false)
25872  {
25873  setFlag(ALU);
25874  } // Inst_VOP3__V_MIN_I32
25875 
25877  {
25878  } // ~Inst_VOP3__V_MIN_I32
25879 
25880  // --- description from .arch file ---
25881  // D.i = min(S0.i, S1.i).
25882  void
25884  {
25885  Wavefront *wf = gpuDynInst->wavefront();
25886  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
25887  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
25888  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25889 
25890  src0.readSrc();
25891  src1.readSrc();
25892 
25896  assert(!(instData.ABS & 0x1));
25897  assert(!(instData.ABS & 0x2));
25898  assert(!(instData.ABS & 0x4));
25899  assert(!(extData.NEG & 0x1));
25900  assert(!(extData.NEG & 0x2));
25901  assert(!(extData.NEG & 0x4));
25902 
25903  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25904  if (wf->execMask(lane)) {
25905  vdst[lane] = std::min(src0[lane], src1[lane]);
25906  }
25907  }
25908 
25909  vdst.write();
25910  } // execute
25911  // --- Inst_VOP3__V_MAX_I32 class methods ---
25912 
25914  : Inst_VOP3A(iFmt, "v_max_i32", false)
25915  {
25916  setFlag(ALU);
25917  } // Inst_VOP3__V_MAX_I32
25918 
25920  {
25921  } // ~Inst_VOP3__V_MAX_I32
25922 
25923  // --- description from .arch file ---
25924  // D.i = max(S0.i, S1.i).
25925  void
25927  {
25928  Wavefront *wf = gpuDynInst->wavefront();
25929  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
25930  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
25931  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25932 
25933  src0.readSrc();
25934  src1.readSrc();
25935 
25939  assert(!(instData.ABS & 0x1));
25940  assert(!(instData.ABS & 0x2));
25941  assert(!(instData.ABS & 0x4));
25942  assert(!(extData.NEG & 0x1));
25943  assert(!(extData.NEG & 0x2));
25944  assert(!(extData.NEG & 0x4));
25945 
25946  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25947  if (wf->execMask(lane)) {
25948  vdst[lane] = std::max(src0[lane], src1[lane]);
25949  }
25950  }
25951 
25952  vdst.write();
25953  } // execute
25954  // --- Inst_VOP3__V_MIN_U32 class methods ---
25955 
25957  : Inst_VOP3A(iFmt, "v_min_u32", false)
25958  {
25959  setFlag(ALU);
25960  } // Inst_VOP3__V_MIN_U32
25961 
25963  {
25964  } // ~Inst_VOP3__V_MIN_U32
25965 
25966  // --- description from .arch file ---
25967  // D.u = min(S0.u, S1.u).
25968  void
25970  {
25971  Wavefront *wf = gpuDynInst->wavefront();
25972  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
25973  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
25974  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25975 
25976  src0.readSrc();
25977  src1.readSrc();
25978 
25982  assert(!(instData.ABS & 0x1));
25983  assert(!(instData.ABS & 0x2));
25984  assert(!(instData.ABS & 0x4));
25985  assert(!(extData.NEG & 0x1));
25986  assert(!(extData.NEG & 0x2));
25987  assert(!(extData.NEG & 0x4));
25988 
25989  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25990  if (wf->execMask(lane)) {
25991  vdst[lane] = std::min(src0[lane], src1[lane]);
25992  }
25993  }
25994 
25995  vdst.write();
25996  } // execute
25997  // --- Inst_VOP3__V_MAX_U32 class methods ---
25998 
26000  : Inst_VOP3A(iFmt, "v_max_u32", false)
26001  {
26002  setFlag(ALU);
26003  } // Inst_VOP3__V_MAX_U32
26004 
26006  {
26007  } // ~Inst_VOP3__V_MAX_U32
26008 
26009  // --- description from .arch file ---
26010  // D.u = max(S0.u, S1.u).
26011  void
26013  {
26014  Wavefront *wf = gpuDynInst->wavefront();
26015  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26016  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26017  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26018 
26019  src0.readSrc();
26020  src1.readSrc();
26021 
26025  assert(!(instData.ABS & 0x1));
26026  assert(!(instData.ABS & 0x2));
26027  assert(!(instData.ABS & 0x4));
26028  assert(!(extData.NEG & 0x1));
26029  assert(!(extData.NEG & 0x2));
26030  assert(!(extData.NEG & 0x4));
26031 
26032  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26033  if (wf->execMask(lane)) {
26034  vdst[lane] = std::max(src0[lane], src1[lane]);
26035  }
26036  }
26037 
26038  vdst.write();
26039  } // execute
26040  // --- Inst_VOP3__V_LSHRREV_B32 class methods ---
26041 
26043  : Inst_VOP3A(iFmt, "v_lshrrev_b32", false)
26044  {
26045  setFlag(ALU);
26046  } // Inst_VOP3__V_LSHRREV_B32
26047 
26049  {
26050  } // ~Inst_VOP3__V_LSHRREV_B32
26051 
26052  // --- description from .arch file ---
26053  // D.u = S1.u >> S0.u[4:0].
26054  // The vacated bits are set to zero.
26055  // SQ translates this to an internal SP opcode.
26056  void
26058  {
26059  Wavefront *wf = gpuDynInst->wavefront();
26060  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26061  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26062  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26063 
26064  src0.readSrc();
26065  src1.readSrc();
26066 
26070  assert(!(instData.ABS & 0x1));
26071  assert(!(instData.ABS & 0x2));
26072  assert(!(instData.ABS & 0x4));
26073  assert(!(extData.NEG & 0x1));
26074  assert(!(extData.NEG & 0x2));
26075  assert(!(extData.NEG & 0x4));
26076 
26077  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26078  if (wf->execMask(lane)) {
26079  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
26080  }
26081  }
26082 
26083  vdst.write();
26084  } // execute
26085  // --- Inst_VOP3__V_ASHRREV_I32 class methods ---
26086 
26088  : Inst_VOP3A(iFmt, "v_ashrrev_i32", false)
26089  {
26090  setFlag(ALU);
26091  } // Inst_VOP3__V_ASHRREV_I32
26092 
26094  {
26095  } // ~Inst_VOP3__V_ASHRREV_I32
26096 
26097  // --- description from .arch file ---
26098  // D.i = signext(S1.i) >> S0.i[4:0].
26099  // The vacated bits are set to the sign bit of the input value.
26100  // SQ translates this to an internal SP opcode.
26101  void
26103  {
26104  Wavefront *wf = gpuDynInst->wavefront();
26105  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26106  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
26107  VecOperandI32 vdst(gpuDynInst, instData.VDST);
26108 
26109  src0.readSrc();
26110  src1.readSrc();
26111 
26115  assert(!(instData.ABS & 0x1));
26116  assert(!(instData.ABS & 0x2));
26117  assert(!(instData.ABS & 0x4));
26118  assert(!(extData.NEG & 0x1));
26119  assert(!(extData.NEG & 0x2));
26120  assert(!(extData.NEG & 0x4));
26121 
26122  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26123  if (wf->execMask(lane)) {
26124  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
26125  }
26126  }
26127 
26128  vdst.write();
26129  } // execute
26130  // --- Inst_VOP3__V_LSHLREV_B32 class methods ---
26131 
26133  : Inst_VOP3A(iFmt, "v_lshlrev_b32", false)
26134  {
26135  setFlag(ALU);
26136  } // Inst_VOP3__V_LSHLREV_B32
26137 
26139  {
26140  } // ~Inst_VOP3__V_LSHLREV_B32
26141 
26142  // --- description from .arch file ---
26143  // D.u = S1.u << S0.u[4:0].
26144  // SQ translates this to an internal SP opcode.
26145  void
26147  {
26148  Wavefront *wf = gpuDynInst->wavefront();
26149  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26150  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26151  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26152 
26153  src0.readSrc();
26154  src1.readSrc();
26155 
26159  assert(!(instData.ABS & 0x1));
26160  assert(!(instData.ABS & 0x2));
26161  assert(!(instData.ABS & 0x4));
26162  assert(!(extData.NEG & 0x1));
26163  assert(!(extData.NEG & 0x2));
26164  assert(!(extData.NEG & 0x4));
26165 
26166  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26167  if (wf->execMask(lane)) {
26168  vdst[lane] = src1[lane] << bits(src0[lane], 4, 0);
26169  }
26170  }
26171 
26172  vdst.write();
26173  } // execute
26174  // --- Inst_VOP3__V_AND_B32 class methods ---
26175 
26177  : Inst_VOP3A(iFmt, "v_and_b32", false)
26178  {
26179  setFlag(ALU);
26180  } // Inst_VOP3__V_AND_B32
26181 
26183  {
26184  } // ~Inst_VOP3__V_AND_B32
26185 
26186  // --- description from .arch file ---
26187  // D.u = S0.u & S1.u.
26188  // Input and output modifiers not supported.
26189  void
26191  {
26192  Wavefront *wf = gpuDynInst->wavefront();
26193  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26194  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26195  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26196 
26197  src0.readSrc();
26198  src1.readSrc();
26199 
26203  assert(!(instData.ABS & 0x1));
26204  assert(!(instData.ABS & 0x2));
26205  assert(!(instData.ABS & 0x4));
26206  assert(!(extData.NEG & 0x1));
26207  assert(!(extData.NEG & 0x2));
26208  assert(!(extData.NEG & 0x4));
26209 
26210  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26211  if (wf->execMask(lane)) {
26212  vdst[lane] = src0[lane] & src1[lane];
26213  }
26214  }
26215 
26216  vdst.write();
26217  } // execute
26218  // --- Inst_VOP3__V_OR_B32 class methods ---
26219 
26221  : Inst_VOP3A(iFmt, "v_or_b32", false)
26222  {
26223  setFlag(ALU);
26224  } // Inst_VOP3__V_OR_B32
26225 
26227  {
26228  } // ~Inst_VOP3__V_OR_B32
26229 
26230  // --- description from .arch file ---
26231  // D.u = S0.u | S1.u.
26232  // Input and output modifiers not supported.
26233  void
26235  {
26236  Wavefront *wf = gpuDynInst->wavefront();
26237  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26238  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26239  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26240 
26241  src0.readSrc();
26242  src1.readSrc();
26243 
26247  assert(!(instData.ABS & 0x1));
26248  assert(!(instData.ABS & 0x2));
26249  assert(!(instData.ABS & 0x4));
26250  assert(!(extData.NEG & 0x1));
26251  assert(!(extData.NEG & 0x2));
26252  assert(!(extData.NEG & 0x4));
26253 
26254  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26255  if (wf->execMask(lane)) {
26256  vdst[lane] = src0[lane] | src1[lane];
26257  }
26258  }
26259 
26260  vdst.write();
26261  } // execute
26262  // --- Inst_VOP3__V_OR3_B32 class methods ---
26263 
26265  : Inst_VOP3A(iFmt, "v_or3_b32", false)
26266  {
26267  setFlag(ALU);
26268  } // Inst_VOP3__V_OR3_B32
26269 
26271  {
26272  } // ~Inst_VOP3__V_OR3_B32
26273 
26274  // --- description from .arch file ---
26275  // D.u = S0.u | S1.u | S2.u.
26276  // Input and output modifiers not supported.
26277  void
26279  {
26280  Wavefront *wf = gpuDynInst->wavefront();
26281  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26282  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26283  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
26284  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26285 
26286  src0.readSrc();
26287  src1.readSrc();
26288  src2.readSrc();
26289 
26293  assert(!(instData.ABS & 0x1));
26294  assert(!(instData.ABS & 0x2));
26295  assert(!(instData.ABS & 0x4));
26296  assert(!(extData.NEG & 0x1));
26297  assert(!(extData.NEG & 0x2));
26298  assert(!(extData.NEG & 0x4));
26299 
26300  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26301  if (wf->execMask(lane)) {
26302  vdst[lane] = src0[lane] | src1[lane] | src2[lane];
26303  }
26304  }
26305 
26306  vdst.write();
26307  } // execute
26308  // --- Inst_VOP3__V_XOR_B32 class methods ---
26309 
26311  : Inst_VOP3A(iFmt, "v_xor_b32", false)
26312  {
26313  setFlag(ALU);
26314  } // Inst_VOP3__V_XOR_B32
26315 
26317  {
26318  } // ~Inst_VOP3__V_XOR_B32
26319 
26320  // --- description from .arch file ---
26321  // D.u = S0.u ^ S1.u.
26322  // Input and output modifiers not supported.
26323  void
26325  {
26326  Wavefront *wf = gpuDynInst->wavefront();
26327  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26328  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26329  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26330 
26331  src0.readSrc();
26332  src1.readSrc();
26333 
26337  assert(!(instData.ABS & 0x1));
26338  assert(!(instData.ABS & 0x2));
26339  assert(!(instData.ABS & 0x4));
26340  assert(!(extData.NEG & 0x1));
26341  assert(!(extData.NEG & 0x2));
26342  assert(!(extData.NEG & 0x4));
26343 
26344  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26345  if (wf->execMask(lane)) {
26346  vdst[lane] = src0[lane] ^ src1[lane];
26347  }
26348  }
26349 
26350  vdst.write();
26351  } // execute
26352  // --- Inst_VOP3__V_MAC_F32 class methods ---
26353 
26355  : Inst_VOP3A(iFmt, "v_mac_f32", false)
26356  {
26357  setFlag(ALU);
26358  setFlag(F32);
26359  setFlag(MAC);
26360  } // Inst_VOP3__V_MAC_F32
26361 
26363  {
26364  } // ~Inst_VOP3__V_MAC_F32
26365 
26366  // --- description from .arch file ---
26367  // D.f = S0.f * S1.f + D.f.
26368  // SQ translates to V_MAD_F32.
26369  void
26371  {
26372  Wavefront *wf = gpuDynInst->wavefront();
26373  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
26374  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
26375  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26376 
26377  src0.readSrc();
26378  src1.readSrc();
26379  vdst.read();
26380 
26381  if (instData.ABS & 0x1) {
26382  src0.absModifier();
26383  }
26384 
26385  if (instData.ABS & 0x2) {
26386  src1.absModifier();
26387  }
26388 
26389  if (extData.NEG & 0x1) {
26390  src0.negModifier();
26391  }
26392 
26393  if (extData.NEG & 0x2) {
26394  src1.negModifier();
26395  }
26396 
26400  assert(!(instData.ABS & 0x4));
26401  assert(!(extData.NEG & 0x4));
26402 
26403  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26404  if (wf->execMask(lane)) {
26405  vdst[lane] = std::fma(src0[lane], src1[lane], vdst[lane]);
26406  }
26407  }
26408 
26409  vdst.write();
26410  } // execute
26411  // --- Inst_VOP3__V_ADD_CO_U32 class methods ---
26412 
26414  : Inst_VOP3B(iFmt, "v_add_co_u32")
26415  {
26416  setFlag(ALU);
26417  setFlag(WritesVCC);
26418  } // Inst_VOP3__V_ADD_CO_U32
26419 
26421  {
26422  } // ~Inst_VOP3__V_ADD_CO_U32
26423 
26424  // --- description from .arch file ---
26425  // D.u = S0.u + S1.u;
26426  // VCC[threadId] = (S0.u + S1.u >= 0x800000000ULL ? 1 : 0) is an UNSIGNED
26427  // --- overflow or carry-out for V_ADDC_U32.
26428  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
26429  void
26431  {
26432  Wavefront *wf = gpuDynInst->wavefront();
26433  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26434  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26435  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26436  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
26437 
26438  src0.readSrc();
26439  src1.readSrc();
26440 
26444  assert(!(extData.NEG & 0x1));
26445  assert(!(extData.NEG & 0x2));
26446  assert(!(extData.NEG & 0x4));
26447 
26448  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26449  if (wf->execMask(lane)) {
26450  vdst[lane] = src0[lane] + src1[lane];
26451  vcc.setBit(lane, ((VecElemU64)src0[lane]
26452  + (VecElemU64)src1[lane]) >= 0x100000000ULL ? 1 : 0);
26453  }
26454  }
26455 
26456  vdst.write();
26457  vcc.write();
26458  } // execute
26459  // --- Inst_VOP3__V_SUB_CO_U32 class methods ---
26460 
26462  : Inst_VOP3B(iFmt, "v_sub_co_u32")
26463  {
26464  setFlag(ALU);
26465  setFlag(WritesVCC);
26466  } // Inst_VOP3__V_SUB_CO_U32
26467 
26469  {
26470  } // ~Inst_VOP3__V_SUB_CO_U32
26471 
26472  // --- description from .arch file ---
26473  // D.u = S0.u - S1.u;
26474  // VCC[threadId] = (S1.u > S0.u ? 1 : 0) is an UNSIGNED overflow or
26475  // carry-out for V_SUBB_U32.
26476  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
26477  void
26479  {
26480  Wavefront *wf = gpuDynInst->wavefront();
26481  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26482  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26483  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26484  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
26485 
26486  src0.readSrc();
26487  src1.readSrc();
26488 
26492  assert(!(extData.NEG & 0x1));
26493  assert(!(extData.NEG & 0x2));
26494  assert(!(extData.NEG & 0x4));
26495 
26496  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26497  if (wf->execMask(lane)) {
26498  vdst[lane] = src0[lane] - src1[lane];
26499  vcc.setBit(lane, src1[lane] > src0[lane] ? 1 : 0);
26500  }
26501  }
26502 
26503  vdst.write();
26504  vcc.write();
26505  } // execute
26506  // --- Inst_VOP3__V_SUBREV_CO_U32 class methods ---
26507 
26509  InFmt_VOP3B *iFmt)
26510  : Inst_VOP3B(iFmt, "v_subrev_co_u32")
26511  {
26512  setFlag(ALU);
26513  setFlag(WritesVCC);
26514  } // Inst_VOP3__V_SUBREV_CO_U32
26515 
26517  {
26518  } // ~Inst_VOP3__V_SUBREV_CO_U32
26519 
26520  // --- description from .arch file ---
26521  // D.u = S1.u - S0.u;
26522  // VCC[threadId] = (S0.u > S1.u ? 1 : 0) is an UNSIGNED overflow or
26523  // carry-out for V_SUBB_U32.
26524  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
26525  // SQ translates this to V_SUB_U32 with reversed operands.
26526  void
26528  {
26529  Wavefront *wf = gpuDynInst->wavefront();
26530  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26531  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26532  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26533  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
26534 
26535  src0.readSrc();
26536  src1.readSrc();
26537 
26541  assert(!(extData.NEG & 0x1));
26542  assert(!(extData.NEG & 0x2));
26543  assert(!(extData.NEG & 0x4));
26544 
26545  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26546  if (wf->execMask(lane)) {
26547  vdst[lane] = src1[lane] - src0[lane];
26548  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
26549  }
26550  }
26551 
26552  vdst.write();
26553  vcc.write();
26554  } // execute
26555  // --- Inst_VOP3__V_ADDC_CO_U32 class methods ---
26556 
26558  : Inst_VOP3B(iFmt, "v_addc_co_u32")
26559  {
26560  setFlag(ALU);
26561  setFlag(WritesVCC);
26562  setFlag(ReadsVCC);
26563  } // Inst_VOP3__V_ADDC_CO_U32
26564 
26566  {
26567  } // ~Inst_VOP3__V_ADDC_CO_U32
26568 
26569  // --- description from .arch file ---
26570  // D.u = S0.u + S1.u + VCC[threadId];
26571  // VCC[threadId] = (S0.u + S1.u + VCC[threadId] >= 0x800000000ULL ? 1 : 0)
26572  // is an UNSIGNED overflow.
26573  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
26574  // source comes from the SGPR-pair at S2.u.
26575  void
26577  {
26578  Wavefront *wf = gpuDynInst->wavefront();
26579  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26580  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26581  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
26582  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26583  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
26584 
26585  src0.readSrc();
26586  src1.readSrc();
26587  vcc.read();
26588 
26592  assert(!(extData.NEG & 0x1));
26593  assert(!(extData.NEG & 0x2));
26594  assert(!(extData.NEG & 0x4));
26595 
26596  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26597  if (wf->execMask(lane)) {
26598  vdst[lane] = src0[lane] + src1[lane]
26599  + bits(vcc.rawData(), lane);
26600  sdst.setBit(lane, ((VecElemU64)src0[lane]
26601  + (VecElemU64)src1[lane]
26602  + (VecElemU64)bits(vcc.rawData(), lane))
26603  >= 0x100000000 ? 1 : 0);
26604  }
26605  }
26606 
26607  vdst.write();
26608  sdst.write();
26609  } // execute
26610  // --- Inst_VOP3__V_SUBB_CO_U32 class methods ---
26611 
26613  : Inst_VOP3B(iFmt, "v_subb_co_u32")
26614  {
26615  setFlag(ALU);
26616  setFlag(WritesVCC);
26617  setFlag(ReadsVCC);
26618  } // Inst_VOP3__V_SUBB_CO_U32
26619 
26621  {
26622  } // ~Inst_VOP3__V_SUBB_CO_U32
26623 
26624  // --- description from .arch file ---
26625  // D.u = S0.u - S1.u - VCC[threadId];
26626  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
26627  // --- overflow.
26628  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
26629  // --- source comes from the SGPR-pair at S2.u.
26630  void
26632  {
26633  Wavefront *wf = gpuDynInst->wavefront();
26634  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26635  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26636  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
26637  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
26638  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26639 
26640  src0.readSrc();
26641  src1.readSrc();
26642  vcc.read();
26643 
26647  assert(!(extData.NEG & 0x1));
26648  assert(!(extData.NEG & 0x2));
26649  assert(!(extData.NEG & 0x4));
26650 
26651  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26652  if (wf->execMask(lane)) {
26653  vdst[lane] = src0[lane] - src1[lane]
26654  - bits(vcc.rawData(), lane);
26655  sdst.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
26656  > src0[lane] ? 1 : 0);
26657  }
26658  }
26659 
26660  vdst.write();
26661  sdst.write();
26662  } // execute
26663  // --- Inst_VOP3__V_SUBBREV_CO_U32 class methods ---
26664 
26666  InFmt_VOP3B *iFmt)
26667  : Inst_VOP3B(iFmt, "v_subbrev_co_u32")
26668  {
26669  setFlag(ALU);
26670  setFlag(WritesVCC);
26671  setFlag(ReadsVCC);
26672  } // Inst_VOP3__V_SUBBREV_CO_U32
26673 
26675  {
26676  } // ~Inst_VOP3__V_SUBBREV_CO_U32
26677 
26678  // --- description from .arch file ---
26679  // D.u = S1.u - S0.u - VCC[threadId];
26680  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
26681  // overflow.
26682  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
26683  // source comes from the SGPR-pair at S2.u. SQ translates to V_SUBB_U32.
26684  void
26686  {
26687  Wavefront *wf = gpuDynInst->wavefront();
26688  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
26689  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
26690  ConstScalarOperandU64 sdst(gpuDynInst, instData.SDST);
26691  ScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
26692  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26693 
26694  src0.readSrc();
26695  src1.readSrc();
26696  vcc.read();
26697 
26701  assert(!(extData.NEG & 0x1));
26702  assert(!(extData.NEG & 0x2));
26703  assert(!(extData.NEG & 0x4));
26704 
26705  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26706  if (wf->execMask(lane)) {
26707  vdst[lane] = src1[lane] - src0[lane]
26708  - bits(vcc.rawData(), lane);
26709  sdst.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
26710  > src0[lane] ? 1 : 0);
26711  }
26712  }
26713 
26714  vdst.write();
26715  sdst.write();
26716  } // execute
26717  // --- Inst_VOP3__V_ADD_F16 class methods ---
26718 
26720  : Inst_VOP3A(iFmt, "v_add_f16", false)
26721  {
26722  setFlag(ALU);
26723  setFlag(F16);
26724  } // Inst_VOP3__V_ADD_F16
26725 
26727  {
26728  } // ~Inst_VOP3__V_ADD_F16
26729 
26730  // --- description from .arch file ---
26731  // D.f16 = S0.f16 + S1.f16.
26732  // Supports denormals, round mode, exception flags, saturation.
26733  void
26735  {
26737  } // execute
26738  // --- Inst_VOP3__V_SUB_F16 class methods ---
26739 
26741  : Inst_VOP3A(iFmt, "v_sub_f16", false)
26742  {
26743  setFlag(ALU);
26744  setFlag(F16);
26745  } // Inst_VOP3__V_SUB_F16
26746 
26748  {
26749  } // ~Inst_VOP3__V_SUB_F16
26750 
26751  // --- description from .arch file ---
26752  // D.f16 = S0.f16 - S1.f16.
26753  // Supports denormals, round mode, exception flags, saturation.
26754  // SQ translates to V_ADD_F16.
26755  void
26757  {
26759  } // execute
26760  // --- Inst_VOP3__V_SUBREV_F16 class methods ---
26761 
26763  : Inst_VOP3A(iFmt, "v_subrev_f16", false)
26764  {
26765  setFlag(ALU);
26766  setFlag(F16);
26767  } // Inst_VOP3__V_SUBREV_F16
26768 
26770  {
26771  } // ~Inst_VOP3__V_SUBREV_F16
26772 
26773  // --- description from .arch file ---
26774  // D.f16 = S1.f16 - S0.f16.
26775  // Supports denormals, round mode, exception flags, saturation.
26776  // SQ translates to V_ADD_F16.
26777  void
26779  {
26781  } // execute
26782  // --- Inst_VOP3__V_MUL_F16 class methods ---
26783 
26785  : Inst_VOP3A(iFmt, "v_mul_f16", false)
26786  {
26787  setFlag(ALU);
26788  setFlag(F16);
26789  } // Inst_VOP3__V_MUL_F16
26790 
26792  {
26793  } // ~Inst_VOP3__V_MUL_F16
26794 
26795  // --- description from .arch file ---
26796  // D.f16 = S0.f16 * S1.f16.
26797  // Supports denormals, round mode, exception flags, saturation.
26798  void
26800  {
26802  } // execute
26803  // --- Inst_VOP3__V_MAC_F16 class methods ---
26804 
26806  : Inst_VOP3A(iFmt, "v_mac_f16", false)
26807  {
26808  setFlag(ALU);
26809  setFlag(F16);
26810  setFlag(MAC);
26811  } // Inst_VOP3__V_MAC_F16
26812 
26814  {
26815  } // ~Inst_VOP3__V_MAC_F16
26816 
26817  // --- description from .arch file ---
26818  // D.f16 = S0.f16 * S1.f16 + D.f16.
26819  // Supports round mode, exception flags, saturation.
26820  // SQ translates this to V_MAD_F16.
26821  void
26823  {
26825  } // execute
26826  // --- Inst_VOP3__V_ADD_U16 class methods ---
26827 
26829  : Inst_VOP3A(iFmt, "v_add_u16", false)
26830  {
26831  setFlag(ALU);
26832  } // Inst_VOP3__V_ADD_U16
26833 
26835  {
26836  } // ~Inst_VOP3__V_ADD_U16
26837 
26838  // --- description from .arch file ---
26839  // D.u16 = S0.u16 + S1.u16.
26840  // Supports saturation (unsigned 16-bit integer domain).
26841  void
26843  {
26844  Wavefront *wf = gpuDynInst->wavefront();
26845  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
26846  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
26847  VecOperandU16 vdst(gpuDynInst, instData.VDST);
26848 
26849  src0.readSrc();
26850  src1.readSrc();
26851 
26855  assert(!(instData.ABS & 0x1));
26856  assert(!(instData.ABS & 0x2));
26857  assert(!(instData.ABS & 0x4));
26858  assert(!(extData.NEG & 0x1));
26859  assert(!(extData.NEG & 0x2));
26860  assert(!(extData.NEG & 0x4));
26861 
26862  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26863  if (wf->execMask(lane)) {
26864  vdst[lane] = src0[lane] + src1[lane];
26865  }
26866  }
26867 
26868  vdst.write();
26869  } // execute
26870  // --- Inst_VOP3__V_SUB_U16 class methods ---
26871 
26873  : Inst_VOP3A(iFmt, "v_sub_u16", false)
26874  {
26875  setFlag(ALU);
26876  } // Inst_VOP3__V_SUB_U16
26877 
26879  {
26880  } // ~Inst_VOP3__V_SUB_U16
26881 
26882  // --- description from .arch file ---
26883  // D.u16 = S0.u16 - S1.u16.
26884  // Supports saturation (unsigned 16-bit integer domain).
26885  void
26887  {
26888  Wavefront *wf = gpuDynInst->wavefront();
26889  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
26890  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
26891  VecOperandU16 vdst(gpuDynInst, instData.VDST);
26892 
26893  src0.readSrc();
26894  src1.readSrc();
26895 
26899  assert(!(instData.ABS & 0x1));
26900  assert(!(instData.ABS & 0x2));
26901  assert(!(instData.ABS & 0x4));
26902  assert(!(extData.NEG & 0x1));
26903  assert(!(extData.NEG & 0x2));
26904  assert(!(extData.NEG & 0x4));
26905 
26906  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26907  if (wf->execMask(lane)) {
26908  vdst[lane] = src0[lane] - src1[lane];
26909  }
26910  }
26911 
26912  vdst.write();
26913  } // execute
26914  // --- Inst_VOP3__V_SUBREV_U16 class methods ---
26915 
26917  : Inst_VOP3A(iFmt, "v_subrev_u16", false)
26918  {
26919  setFlag(ALU);
26920  } // Inst_VOP3__V_SUBREV_U16
26921 
26923  {
26924  } // ~Inst_VOP3__V_SUBREV_U16
26925 
26926  // --- description from .arch file ---
26927  // D.u16 = S1.u16 - S0.u16.
26928  // Supports saturation (unsigned 16-bit integer domain).
26929  // SQ translates this to V_SUB_U16 with reversed operands.
26930  void
26932  {
26933  Wavefront *wf = gpuDynInst->wavefront();
26934  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
26935  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
26936  VecOperandU16 vdst(gpuDynInst, instData.VDST);
26937 
26938  src0.readSrc();
26939  src1.readSrc();
26940 
26944  assert(!(instData.ABS & 0x1));
26945  assert(!(instData.ABS & 0x2));
26946  assert(!(instData.ABS & 0x4));
26947  assert(!(extData.NEG & 0x1));
26948  assert(!(extData.NEG & 0x2));
26949  assert(!(extData.NEG & 0x4));
26950 
26951  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26952  if (wf->execMask(lane)) {
26953  vdst[lane] = src1[lane] - src0[lane];
26954  }
26955  }
26956 
26957  vdst.write();
26958  } // execute
26959  // --- Inst_VOP3__V_MUL_LO_U16 class methods ---
26960 
26962  : Inst_VOP3A(iFmt, "v_mul_lo_u16", false)
26963  {
26964  setFlag(ALU);
26965  } // Inst_VOP3__V_MUL_LO_U16
26966 
26968  {
26969  } // ~Inst_VOP3__V_MUL_LO_U16
26970 
26971  // --- description from .arch file ---
26972  // D.u16 = S0.u16 * S1.u16.
26973  // Supports saturation (unsigned 16-bit integer domain).
26974  void
26976  {
26977  Wavefront *wf = gpuDynInst->wavefront();
26978  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
26979  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
26980  VecOperandU16 vdst(gpuDynInst, instData.VDST);
26981 
26982  src0.readSrc();
26983  src1.readSrc();
26984 
26988  assert(!(instData.ABS & 0x1));
26989  assert(!(instData.ABS & 0x2));
26990  assert(!(instData.ABS & 0x4));
26991  assert(!(extData.NEG & 0x1));
26992  assert(!(extData.NEG & 0x2));
26993  assert(!(extData.NEG & 0x4));
26994 
26995  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26996  if (wf->execMask(lane)) {
26997  vdst[lane] = src0[lane] * src1[lane];
26998  }
26999  }
27000 
27001  vdst.write();
27002  } // execute
27003  // --- Inst_VOP3__V_LSHLREV_B16 class methods ---
27004 
27006  : Inst_VOP3A(iFmt, "v_lshlrev_b16", false)
27007  {
27008  setFlag(ALU);
27009  } // Inst_VOP3__V_LSHLREV_B16
27010 
27012  {
27013  } // ~Inst_VOP3__V_LSHLREV_B16
27014 
27015  // --- description from .arch file ---
27016  // D.u[15:0] = S1.u[15:0] << S0.u[3:0].
27017  // SQ translates this to an internal SP opcode.
27018  void
27020  {
27021  Wavefront *wf = gpuDynInst->wavefront();
27022  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
27023  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
27024  VecOperandU16 vdst(gpuDynInst, instData.VDST);
27025 
27026  src0.readSrc();
27027  src1.readSrc();
27028 
27032  assert(!(instData.ABS & 0x1));
27033  assert(!(instData.ABS & 0x2));
27034  assert(!(instData.ABS & 0x4));
27035  assert(!(extData.NEG & 0x1));
27036  assert(!(extData.NEG & 0x2));
27037  assert(!(extData.NEG & 0x4));
27038 
27039  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27040  if (wf->execMask(lane)) {
27041  vdst[lane] = src1[lane] << bits(src0[lane], 3, 0);
27042  }
27043  }
27044 
27045  vdst.write();
27046  } // execute
27047  // --- Inst_VOP3__V_LSHRREV_B16 class methods ---
27048 
27050  : Inst_VOP3A(iFmt, "v_lshrrev_b16", false)
27051  {
27052  setFlag(ALU);
27053  } // Inst_VOP3__V_LSHRREV_B16
27054 
27056  {
27057  } // ~Inst_VOP3__V_LSHRREV_B16
27058 
27059  // --- description from .arch file ---
27060  // D.u[15:0] = S1.u[15:0] >> S0.u[3:0].
27061  // The vacated bits are set to zero.
27062  // SQ translates this to an internal SP opcode.
27063  void
27065  {
27066  Wavefront *wf = gpuDynInst->wavefront();
27067  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
27068  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
27069  VecOperandU16 vdst(gpuDynInst, instData.VDST);
27070 
27071  src0.readSrc();
27072  src1.readSrc();
27073 
27074  if (instData.ABS & 0x1) {
27075  src0.absModifier();
27076  }
27077 
27078  if (instData.ABS & 0x2) {
27079  src1.absModifier();
27080  }
27081 
27082  if (extData.NEG & 0x1) {
27083  src0.negModifier();
27084  }
27085 
27086  if (extData.NEG & 0x2) {
27087  src1.negModifier();
27088  }
27089 
27090  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27091  if (wf->execMask(lane)) {
27092  vdst[lane] = src1[lane] >> bits(src0[lane], 3, 0);
27093  }
27094  }
27095 
27096  vdst.write();
27097  } // execute
27098  // --- Inst_VOP3__V_ASHRREV_I16 class methods ---
27099 
27101  : Inst_VOP3A(iFmt, "v_ashrrev_i16", false)
27102  {
27103  setFlag(ALU);
27104  } // Inst_VOP3__V_ASHRREV_I16
27105 
27107  {
27108  } // ~Inst_VOP3__V_ASHRREV_I16
27109 
27110  // --- description from .arch file ---
27111  // D.i[15:0] = signext(S1.i[15:0]) >> S0.i[3:0].
27112  // The vacated bits are set to the sign bit of the input value.
27113  // SQ translates this to an internal SP opcode.
27114  void
27116  {
27117  Wavefront *wf = gpuDynInst->wavefront();
27118  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
27119  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
27120  VecOperandI16 vdst(gpuDynInst, instData.VDST);
27121 
27122  src0.readSrc();
27123  src1.readSrc();
27124 
27128  assert(!(instData.ABS & 0x1));
27129  assert(!(instData.ABS & 0x2));
27130  assert(!(instData.ABS & 0x4));
27131  assert(!(extData.NEG & 0x1));
27132  assert(!(extData.NEG & 0x2));
27133  assert(!(extData.NEG & 0x4));
27134 
27135  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27136  if (wf->execMask(lane)) {
27137  vdst[lane] = src1[lane] >> bits(src0[lane], 3, 0);
27138  }
27139  }
27140 
27141  vdst.write();
27142  } // execute
27143  // --- Inst_VOP3__V_MAX_F16 class methods ---
27144 
27146  : Inst_VOP3A(iFmt, "v_max_f16", false)
27147  {
27148  setFlag(ALU);
27149  setFlag(F16);
27150  } // Inst_VOP3__V_MAX_F16
27151 
27153  {
27154  } // ~Inst_VOP3__V_MAX_F16
27155 
27156  // --- description from .arch file ---
27157  // D.f16 = max(S0.f16, S1.f16).
27158  // IEEE compliant. Supports denormals, round mode, exception flags,
27159  // saturation.
27160  void
27162  {
27164  } // execute
27165  // --- Inst_VOP3__V_MIN_F16 class methods ---
27166 
27168  : Inst_VOP3A(iFmt, "v_min_f16", false)
27169  {
27170  setFlag(ALU);
27171  setFlag(F16);
27172  } // Inst_VOP3__V_MIN_F16
27173 
27175  {
27176  } // ~Inst_VOP3__V_MIN_F16
27177 
27178  // --- description from .arch file ---
27179  // D.f16 = min(S0.f16, S1.f16).
27180  // IEEE compliant. Supports denormals, round mode, exception flags,
27181  // saturation.
27182  void
27184  {
27186  } // execute
27187  // --- Inst_VOP3__V_MAX_U16 class methods ---
27188 
27190  : Inst_VOP3A(iFmt, "v_max_u16", false)
27191  {
27192  setFlag(ALU);
27193  } // Inst_VOP3__V_MAX_U16
27194 
27196  {
27197  } // ~Inst_VOP3__V_MAX_U16
27198 
27199  // --- description from .arch file ---
27200  // D.u[15:0] = max(S0.u[15:0], S1.u[15:0]).
27201  void
27203  {
27204  Wavefront *wf = gpuDynInst->wavefront();
27205  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
27206  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
27207  VecOperandU16 vdst(gpuDynInst, instData.VDST);
27208 
27209  src0.readSrc();
27210  src1.readSrc();
27211 
27212  if (instData.ABS & 0x1) {
27213  src0.absModifier();
27214  }
27215 
27216  if (instData.ABS & 0x2) {
27217  src1.absModifier();
27218  }
27219 
27220  if (extData.NEG & 0x1) {
27221  src0.negModifier();
27222  }
27223 
27224  if (extData.NEG & 0x2) {
27225  src1.negModifier();
27226  }
27227 
27228  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27229  if (wf->execMask(lane)) {
27230  vdst[lane] = std::max(src0[lane], src1[lane]);
27231  }
27232  }
27233 
27234  vdst.write();
27235  } // execute
27236  // --- Inst_VOP3__V_MAX_I16 class methods ---
27237 
27239  : Inst_VOP3A(iFmt, "v_max_i16", false)
27240  {
27241  setFlag(ALU);
27242  } // Inst_VOP3__V_MAX_I16
27243 
27245  {
27246  } // ~Inst_VOP3__V_MAX_I16
27247 
27248  // --- description from .arch file ---
27249  // D.i[15:0] = max(S0.i[15:0], S1.i[15:0]).
27250  void
27252  {
27253  Wavefront *wf = gpuDynInst->wavefront();
27254  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
27255  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
27256  VecOperandI16 vdst(gpuDynInst, instData.VDST);
27257 
27258  src0.readSrc();
27259  src1.readSrc();
27260 
27261  if (instData.ABS & 0x1) {
27262  src0.absModifier();
27263  }
27264 
27265  if (instData.ABS & 0x2) {
27266  src1.absModifier();
27267  }
27268 
27269  if (extData.NEG & 0x1) {
27270  src0.negModifier();
27271  }
27272 
27273  if (extData.NEG & 0x2) {
27274  src1.negModifier();
27275  }
27276 
27277  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27278  if (wf->execMask(lane)) {
27279  vdst[lane] = std::max(src0[lane], src1[lane]);
27280  }
27281  }
27282 
27283  vdst.write();
27284  } // execute
27285  // --- Inst_VOP3__V_MIN_U16 class methods ---
27286 
27288  : Inst_VOP3A(iFmt, "v_min_u16", false)
27289  {
27290  setFlag(ALU);
27291  } // Inst_VOP3__V_MIN_U16
27292 
27294  {
27295  } // ~Inst_VOP3__V_MIN_U16
27296 
27297  // --- description from .arch file ---
27298  // D.u[15:0] = min(S0.u[15:0], S1.u[15:0]).
27299  void
27301  {
27302  Wavefront *wf = gpuDynInst->wavefront();
27303  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
27304  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
27305  VecOperandU16 vdst(gpuDynInst, instData.VDST);
27306 
27307  src0.readSrc();
27308  src1.readSrc();
27309 
27310  if (instData.ABS & 0x1) {
27311  src0.absModifier();
27312  }
27313 
27314  if (instData.ABS & 0x2) {
27315  src1.absModifier();
27316  }
27317 
27318  if (extData.NEG & 0x1) {
27319  src0.negModifier();
27320  }
27321 
27322  if (extData.NEG & 0x2) {
27323  src1.negModifier();
27324  }
27325 
27326  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27327  if (wf->execMask(lane)) {
27328  vdst[lane] = std::min(src0[lane], src1[lane]);
27329  }
27330  }
27331 
27332  vdst.write();
27333  } // execute
27334  // --- Inst_VOP3__V_MIN_I16 class methods ---
27335 
27337  : Inst_VOP3A(iFmt, "v_min_i16", false)
27338  {
27339  setFlag(ALU);
27340  } // Inst_VOP3__V_MIN_I16
27341 
27343  {
27344  } // ~Inst_VOP3__V_MIN_I16
27345 
27346  // --- description from .arch file ---
27347  // D.i[15:0] = min(S0.i[15:0], S1.i[15:0]).
27348  void
27350  {
27351  Wavefront *wf = gpuDynInst->wavefront();
27352  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
27353  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
27354  VecOperandI16 vdst(gpuDynInst, instData.VDST);
27355 
27356  src0.readSrc();
27357  src1.readSrc();
27358 
27359  if (instData.ABS & 0x1) {
27360  src0.absModifier();
27361  }
27362 
27363  if (instData.ABS & 0x2) {
27364  src1.absModifier();
27365  }
27366 
27367  if (extData.NEG & 0x1) {
27368  src0.negModifier();
27369  }
27370 
27371  if (extData.NEG & 0x2) {
27372  src1.negModifier();
27373  }
27374 
27375  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27376  if (wf->execMask(lane)) {
27377  vdst[lane] = std::min(src0[lane], src1[lane]);
27378  }
27379  }
27380 
27381  vdst.write();
27382  } // execute
27383  // --- Inst_VOP3__V_LDEXP_F16 class methods ---
27384 
27386  : Inst_VOP3A(iFmt, "v_ldexp_f16", false)
27387  {
27388  setFlag(ALU);
27389  setFlag(F16);
27390  } // Inst_VOP3__V_LDEXP_F16
27391 
27393  {
27394  } // ~Inst_VOP3__V_LDEXP_F16
27395 
27396  // --- description from .arch file ---
27397  // D.f16 = S0.f16 * (2 ** S1.i16).
27398  void
27400  {
27402  } // execute
27403  // --- Inst_VOP3__V_ADD_U32 class methods ---
27404 
27406  : Inst_VOP3A(iFmt, "v_add_u32", false)
27407  {
27408  setFlag(ALU);
27409  } // Inst_VOP3__V_ADD_U32
27410 
27412  {
27413  } // ~Inst_VOP3__V_ADD_U32
27414 
27415  // --- description from .arch file ---
27416  // D.u32 = S0.u32 + S1.u32.
27417  void
27419  {
27420  Wavefront *wf = gpuDynInst->wavefront();
27421  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
27422  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27423  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27424 
27425  src0.readSrc();
27426  src1.readSrc();
27427 
27431  assert(!(instData.ABS & 0x1));
27432  assert(!(instData.ABS & 0x2));
27433  assert(!(instData.ABS & 0x4));
27434  assert(!(extData.NEG & 0x1));
27435  assert(!(extData.NEG & 0x2));
27436  assert(!(extData.NEG & 0x4));
27437 
27438  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27439  if (wf->execMask(lane)) {
27440  vdst[lane] = src0[lane] + src1[lane];
27441  }
27442  }
27443 
27444  vdst.write();
27445  } // execute
27446  // --- Inst_VOP3__V_SUB_U32 class methods ---
27447 
27449  : Inst_VOP3A(iFmt, "v_sub_u32", false)
27450  {
27451  setFlag(ALU);
27452  } // Inst_VOP3__V_SUB_U32
27453 
27455  {
27456  } // ~Inst_VOP3__V_SUB_U32
27457 
27458  // --- description from .arch file ---
27459  // D.u32 = S0.u32 - S1.u32.
27460  void
27462  {
27463  Wavefront *wf = gpuDynInst->wavefront();
27464  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
27465  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27466  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27467 
27468  src0.readSrc();
27469  src1.readSrc();
27470 
27474  assert(!(instData.ABS & 0x1));
27475  assert(!(instData.ABS & 0x2));
27476  assert(!(instData.ABS & 0x4));
27477  assert(!(extData.NEG & 0x1));
27478  assert(!(extData.NEG & 0x2));
27479  assert(!(extData.NEG & 0x4));
27480 
27481  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27482  if (wf->execMask(lane)) {
27483  vdst[lane] = src0[lane] - src1[lane];
27484  }
27485  }
27486 
27487  vdst.write();
27488  } // execute
27489  // --- Inst_VOP3__V_SUBREV_U32 class methods ---
27490 
27492  : Inst_VOP3A(iFmt, "v_subrev_u32", false)
27493  {
27494  setFlag(ALU);
27495  } // Inst_VOP3__V_SUBREV_U32
27496 
27498  {
27499  } // ~Inst_VOP3__V_SUBREV_U32
27500 
27501  // --- description from .arch file ---
27502  // D.u32 = S1.u32 - S0.u32.
27503  void
27505  {
27506  Wavefront *wf = gpuDynInst->wavefront();
27507  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
27508  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27509  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27510 
27511  src0.readSrc();
27512  src1.readSrc();
27513 
27517  assert(!(instData.ABS & 0x1));
27518  assert(!(instData.ABS & 0x2));
27519  assert(!(instData.ABS & 0x4));
27520  assert(!(extData.NEG & 0x1));
27521  assert(!(extData.NEG & 0x2));
27522  assert(!(extData.NEG & 0x4));
27523 
27524  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27525  if (wf->execMask(lane)) {
27526  vdst[lane] = src1[lane] - src0[lane];
27527  }
27528  }
27529 
27530  vdst.write();
27531  } // execute
27532  // --- Inst_VOP3__V_NOP class methods ---
27533 
27535  : Inst_VOP3A(iFmt, "v_nop", false)
27536  {
27537  setFlag(Nop);
27538  setFlag(ALU);
27539  } // Inst_VOP3__V_NOP
27540 
27542  {
27543  } // ~Inst_VOP3__V_NOP
27544 
27545  // --- description from .arch file ---
27546  // Do nothing.
27547  void
27549  {
27550  } // execute
27551  // --- Inst_VOP3__V_MOV_B32 class methods ---
27552 
27554  : Inst_VOP3A(iFmt, "v_mov_b32", false)
27555  {
27556  setFlag(ALU);
27557  } // Inst_VOP3__V_MOV_B32
27558 
27560  {
27561  } // ~Inst_VOP3__V_MOV_B32
27562 
27563  // --- description from .arch file ---
27564  // D.u = S0.u.
27565  // Input and output modifiers not supported; this is an untyped operation.
27566  void
27568  {
27569  Wavefront *wf = gpuDynInst->wavefront();
27570  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
27571  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27572 
27573  src.readSrc();
27574 
27575  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27576  if (wf->execMask(lane)) {
27577  vdst[lane] = src[lane];
27578  }
27579  }
27580 
27581  vdst.write();
27582  } // execute
27583  // --- Inst_VOP3__V_CVT_I32_F64 class methods ---
27584 
27586  : Inst_VOP3A(iFmt, "v_cvt_i32_f64", false)
27587  {
27588  setFlag(ALU);
27589  setFlag(F64);
27590  } // Inst_VOP3__V_CVT_I32_F64
27591 
27593  {
27594  } // ~Inst_VOP3__V_CVT_I32_F64
27595 
27596  // --- description from .arch file ---
27597  // D.i = (int)S0.d.
27598  // Out-of-range floating point values (including infinity) saturate. NaN is
27599  // --- converted to 0.
27600  void
27602  {
27603  Wavefront *wf = gpuDynInst->wavefront();
27604  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
27605  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27606 
27607  src.readSrc();
27608 
27609  if (instData.ABS & 0x1) {
27610  src.absModifier();
27611  }
27612 
27613  if (extData.NEG & 0x1) {
27614  src.negModifier();
27615  }
27616 
27617  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27618  if (wf->execMask(lane)) {
27619  int exp;
27620  std::frexp(src[lane],&exp);
27621  if (std::isnan(src[lane])) {
27622  vdst[lane] = 0;
27623  } else if (std::isinf(src[lane]) || exp > 30) {
27624  if (std::signbit(src[lane])) {
27625  vdst[lane] = INT_MIN;
27626  } else {
27627  vdst[lane] = INT_MAX;
27628  }
27629  } else {
27630  vdst[lane] = (VecElemI32)src[lane];
27631  }
27632  }
27633  }
27634 
27635  vdst.write();
27636  } // execute
27637  // --- Inst_VOP3__V_CVT_F64_I32 class methods ---
27638 
27640  : Inst_VOP3A(iFmt, "v_cvt_f64_i32", false)
27641  {
27642  setFlag(ALU);
27643  setFlag(F64);
27644  } // Inst_VOP3__V_CVT_F64_I32
27645 
27647  {
27648  } // ~Inst_VOP3__V_CVT_F64_I32
27649 
27650  // --- description from .arch file ---
27651  // D.d = (double)S0.i.
27652  void
27654  {
27655  Wavefront *wf = gpuDynInst->wavefront();
27656  ConstVecOperandI32 src(gpuDynInst, extData.SRC0);
27657  VecOperandF64 vdst(gpuDynInst, instData.VDST);
27658 
27659  src.readSrc();
27660 
27661  if (instData.ABS & 0x1) {
27662  src.absModifier();
27663  }
27664 
27665  if (extData.NEG & 0x1) {
27666  src.negModifier();
27667  }
27668 
27669  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27670  if (wf->execMask(lane)) {
27671  vdst[lane] = (VecElemF64)src[lane];
27672  }
27673  }
27674 
27675  vdst.write();
27676  } // execute
27677  // --- Inst_VOP3__V_CVT_F32_I32 class methods ---
27678 
27680  : Inst_VOP3A(iFmt, "v_cvt_f32_i32", false)
27681  {
27682  setFlag(ALU);
27683  setFlag(F32);
27684  } // Inst_VOP3__V_CVT_F32_I32
27685 
27687  {
27688  } // ~Inst_VOP3__V_CVT_F32_I32
27689 
27690  // --- description from .arch file ---
27691  // D.f = (float)S0.i.
27692  void
27694  {
27695  Wavefront *wf = gpuDynInst->wavefront();
27696  VecOperandI32 src(gpuDynInst, extData.SRC0);
27697  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27698 
27699  src.readSrc();
27700 
27704  assert(!(instData.ABS & 0x1));
27705  assert(!(instData.ABS & 0x2));
27706  assert(!(instData.ABS & 0x4));
27707  assert(!(extData.NEG & 0x1));
27708  assert(!(extData.NEG & 0x2));
27709  assert(!(extData.NEG & 0x4));
27710 
27711  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27712  if (wf->execMask(lane)) {
27713  vdst[lane] = (VecElemF32)src[lane];
27714  }
27715  }
27716 
27717  vdst.write();
27718  } // execute
27719  // --- Inst_VOP3__V_CVT_F32_U32 class methods ---
27720 
27722  : Inst_VOP3A(iFmt, "v_cvt_f32_u32", false)
27723  {
27724  setFlag(ALU);
27725  setFlag(F32);
27726  } // Inst_VOP3__V_CVT_F32_U32
27727 
27729  {
27730  } // ~Inst_VOP3__V_CVT_F32_U32
27731 
27732  // --- description from .arch file ---
27733  // D.f = (float)S0.u.
27734  void
27736  {
27737  Wavefront *wf = gpuDynInst->wavefront();
27738  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
27739  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27740 
27741  src.readSrc();
27742 
27743  if (instData.ABS & 0x1) {
27744  src.absModifier();
27745  }
27746 
27747  if (extData.NEG & 0x1) {
27748  src.negModifier();
27749  }
27750 
27751  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27752  if (wf->execMask(lane)) {
27753  vdst[lane] = (VecElemF32)src[lane];
27754  }
27755  }
27756 
27757  vdst.write();
27758  } // execute
27759  // --- Inst_VOP3__V_CVT_U32_F32 class methods ---
27760 
27762  : Inst_VOP3A(iFmt, "v_cvt_u32_f32", false)
27763  {
27764  setFlag(ALU);
27765  setFlag(F32);
27766  } // Inst_VOP3__V_CVT_U32_F32
27767 
27769  {
27770  } // ~Inst_VOP3__V_CVT_U32_F32
27771 
27772  // --- description from .arch file ---
27773  // D.u = (unsigned)S0.f.
27774  // Out-of-range floating point values (including infinity) saturate. NaN is
27775  // --- converted to 0.
27776  void
27778  {
27779  Wavefront *wf = gpuDynInst->wavefront();
27780  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27781  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27782 
27783  src.readSrc();
27784 
27785  if (instData.ABS & 0x1) {
27786  src.absModifier();
27787  }
27788 
27789  if (extData.NEG & 0x1) {
27790  src.negModifier();
27791  }
27792 
27793  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27794  if (wf->execMask(lane)) {
27795  int exp;
27796  std::frexp(src[lane],&exp);
27797  if (std::isnan(src[lane])) {
27798  vdst[lane] = 0;
27799  } else if (std::isinf(src[lane])) {
27800  if (std::signbit(src[lane])) {
27801  vdst[lane] = 0;
27802  } else {
27803  vdst[lane] = UINT_MAX;
27804  }
27805  } else if (exp > 31) {
27806  vdst[lane] = UINT_MAX;
27807  } else {
27808  vdst[lane] = (VecElemU32)src[lane];
27809  }
27810  }
27811  }
27812 
27813  vdst.write();
27814  } // execute
27815  // --- Inst_VOP3__V_CVT_I32_F32 class methods ---
27816 
27818  : Inst_VOP3A(iFmt, "v_cvt_i32_f32", false)
27819  {
27820  setFlag(ALU);
27821  setFlag(F32);
27822  } // Inst_VOP3__V_CVT_I32_F32
27823 
27825  {
27826  } // ~Inst_VOP3__V_CVT_I32_F32
27827 
27828  // --- description from .arch file ---
27829  // D.i = (int)S0.f.
27830  // Out-of-range floating point values (including infinity) saturate. NaN is
27831  // --- converted to 0.
27832  void
27834  {
27835  Wavefront *wf = gpuDynInst->wavefront();
27836  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27837  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27838 
27839  src.readSrc();
27840 
27841  if (instData.ABS & 0x1) {
27842  src.absModifier();
27843  }
27844 
27845  if (extData.NEG & 0x1) {
27846  src.negModifier();
27847  }
27848 
27852  assert(!(instData.ABS & 0x2));
27853  assert(!(instData.ABS & 0x4));
27854  assert(!(extData.NEG & 0x2));
27855  assert(!(extData.NEG & 0x4));
27856 
27857  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27858  if (wf->execMask(lane)) {
27859  int exp;
27860  std::frexp(src[lane],&exp);
27861  if (std::isnan(src[lane])) {
27862  vdst[lane] = 0;
27863  } else if (std::isinf(src[lane]) || exp > 30) {
27864  if (std::signbit(src[lane])) {
27865  vdst[lane] = INT_MIN;
27866  } else {
27867  vdst[lane] = INT_MAX;
27868  }
27869  } else {
27870  vdst[lane] = (VecElemI32)src[lane];
27871  }
27872  }
27873  }
27874 
27875  vdst.write();
27876  } // execute
27877  // --- Inst_VOP3__V_MOV_FED_B32 class methods ---
27878 
27880  : Inst_VOP3A(iFmt, "v_mov_fed_b32", false)
27881  {
27882  setFlag(ALU);
27883  } // Inst_VOP3__V_MOV_FED_B32
27884 
27886  {
27887  } // ~Inst_VOP3__V_MOV_FED_B32
27888 
27889  // --- description from .arch file ---
27890  // D.u = S0.u;
27891  // Introduce EDC double error upon write to dest vgpr without causing an
27892  // --- exception.
27893  // Input and output modifiers not supported; this is an untyped operation.
27894  void
27896  {
27898  } // execute
27899  // --- Inst_VOP3__V_CVT_F16_F32 class methods ---
27900 
27902  : Inst_VOP3A(iFmt, "v_cvt_f16_f32", false)
27903  {
27904  setFlag(ALU);
27905  setFlag(F32);
27906  } // Inst_VOP3__V_CVT_F16_F32
27907 
27909  {
27910  } // ~Inst_VOP3__V_CVT_F16_F32
27911 
27912  // --- description from .arch file ---
27913  // D.f16 = flt32_to_flt16(S0.f).
27914  // Supports input modifiers and creates FP16 denormals when appropriate.
27915  void
27917  {
27919  } // execute
27920  // --- Inst_VOP3__V_CVT_F32_F16 class methods ---
27921 
27923  : Inst_VOP3A(iFmt, "v_cvt_f32_f16", false)
27924  {
27925  setFlag(ALU);
27926  setFlag(F32);
27927  } // Inst_VOP3__V_CVT_F32_F16
27928 
27930  {
27931  } // ~Inst_VOP3__V_CVT_F32_F16
27932 
27933  // --- description from .arch file ---
27934  // D.f = flt16_to_flt32(S0.f16).
27935  // FP16 denormal inputs are always accepted.
27936  void
27938  {
27940  } // execute
27941  // --- Inst_VOP3__V_CVT_RPI_I32_F32 class methods ---
27942 
27944  InFmt_VOP3A *iFmt)
27945  : Inst_VOP3A(iFmt, "v_cvt_rpi_i32_f32", false)
27946  {
27947  setFlag(ALU);
27948  setFlag(F32);
27949  } // Inst_VOP3__V_CVT_RPI_I32_F32
27950 
27952  {
27953  } // ~Inst_VOP3__V_CVT_RPI_I32_F32
27954 
27955  // --- description from .arch file ---
27956  // D.i = (int)floor(S0.f + 0.5).
27957  void
27959  {
27960  Wavefront *wf = gpuDynInst->wavefront();
27961  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27962  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27963 
27964  src.readSrc();
27965 
27966  if (instData.ABS & 0x1) {
27967  src.absModifier();
27968  }
27969 
27970  if (extData.NEG & 0x1) {
27971  src.negModifier();
27972  }
27973 
27974  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27975  if (wf->execMask(lane)) {
27976  vdst[lane] = (VecElemI32)std::floor(src[lane] + 0.5);
27977  }
27978  }
27979 
27980  vdst.write();
27981  } // execute
27982  // --- Inst_VOP3__V_CVT_FLR_I32_F32 class methods ---
27983 
27985  InFmt_VOP3A *iFmt)
27986  : Inst_VOP3A(iFmt, "v_cvt_flr_i32_f32", false)
27987  {
27988  setFlag(ALU);
27989  setFlag(F32);
27990  } // Inst_VOP3__V_CVT_FLR_I32_F32
27991 
27993  {
27994  } // ~Inst_VOP3__V_CVT_FLR_I32_F32
27995 
27996  // --- description from .arch file ---
27997  // D.i = (int)floor(S0.f).
27998  void
28000  {
28001  Wavefront *wf = gpuDynInst->wavefront();
28002  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28003  VecOperandI32 vdst(gpuDynInst, instData.VDST);
28004 
28005  src.readSrc();
28006 
28007  if (instData.ABS & 0x1) {
28008  src.absModifier();
28009  }
28010 
28011  if (extData.NEG & 0x1) {
28012  src.negModifier();
28013  }
28014 
28015  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28016  if (wf->execMask(lane)) {
28017  vdst[lane] = (VecElemI32)std::floor(src[lane]);
28018  }
28019  }
28020 
28021  vdst.write();
28022  } // execute
28023  // --- Inst_VOP3__V_CVT_OFF_F32_I4 class methods ---
28024 
28026  : Inst_VOP3A(iFmt, "v_cvt_off_f32_i4", false)
28027  {
28028  setFlag(ALU);
28029  setFlag(F32);
28030  } // Inst_VOP3__V_CVT_OFF_F32_I4
28031 
28033  {
28034  } // ~Inst_VOP3__V_CVT_OFF_F32_I4
28035 
28036  // --- description from .arch file ---
28037  // 4-bit signed int to 32-bit float. Used for interpolation in shader.
28038  void
28040  {
28041  // Could not parse sq_uc.arch desc field
28043  } // execute
28044  // --- Inst_VOP3__V_CVT_F32_F64 class methods ---
28045 
28047  : Inst_VOP3A(iFmt, "v_cvt_f32_f64", false)
28048  {
28049  setFlag(ALU);
28050  setFlag(F64);
28051  } // Inst_VOP3__V_CVT_F32_F64
28052 
28054  {
28055  } // ~Inst_VOP3__V_CVT_F32_F64
28056 
28057  // --- description from .arch file ---
28058  // D.f = (float)S0.d.
28059  void
28061  {
28062  Wavefront *wf = gpuDynInst->wavefront();
28063  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
28064  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28065 
28066  src.readSrc();
28067 
28068  if (instData.ABS & 0x1) {
28069  src.absModifier();
28070  }
28071 
28072  if (extData.NEG & 0x1) {
28073  src.negModifier();
28074  }
28075 
28079  assert(!(instData.ABS & 0x2));
28080  assert(!(instData.ABS & 0x4));
28081  assert(!(extData.NEG & 0x2));
28082  assert(!(extData.NEG & 0x4));
28083 
28084  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28085  if (wf->execMask(lane)) {
28086  vdst[lane] = (VecElemF32)src[lane];
28087  }
28088  }
28089 
28090  vdst.write();
28091  } // execute
28092  // --- Inst_VOP3__V_CVT_F64_F32 class methods ---
28093 
28095  : Inst_VOP3A(iFmt, "v_cvt_f64_f32", false)
28096  {
28097  setFlag(ALU);
28098  setFlag(F64);
28099  } // Inst_VOP3__V_CVT_F64_F32
28100 
28102  {
28103  } // ~Inst_VOP3__V_CVT_F64_F32
28104 
28105  // --- description from .arch file ---
28106  // D.d = (double)S0.f.
28107  void
28109  {
28110  Wavefront *wf = gpuDynInst->wavefront();
28111  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28112  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28113 
28114  src.readSrc();
28115 
28116  if (instData.ABS & 0x1) {
28117  src.absModifier();
28118  }
28119 
28120  if (extData.NEG & 0x1) {
28121  src.negModifier();
28122  }
28123 
28127  assert(!(instData.ABS & 0x2));
28128  assert(!(instData.ABS & 0x4));
28129  assert(!(extData.NEG & 0x2));
28130  assert(!(extData.NEG & 0x4));
28131 
28132  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28133  if (wf->execMask(lane)) {
28134  vdst[lane] = (VecElemF64)src[lane];
28135  }
28136  }
28137 
28138  vdst.write();
28139  } // execute
28140  // --- Inst_VOP3__V_CVT_F32_UBYTE0 class methods ---
28141 
28143  : Inst_VOP3A(iFmt, "v_cvt_f32_ubyte0", false)
28144  {
28145  setFlag(ALU);
28146  setFlag(F32);
28147  } // Inst_VOP3__V_CVT_F32_UBYTE0
28148 
28150  {
28151  } // ~Inst_VOP3__V_CVT_F32_UBYTE0
28152 
28153  // --- description from .arch file ---
28154  // D.f = (float)(S0.u[7:0]).
28155  void
28157  {
28158  Wavefront *wf = gpuDynInst->wavefront();
28159  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
28160  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28161 
28162  src.readSrc();
28163 
28164  if (instData.ABS & 0x1) {
28165  src.absModifier();
28166  }
28167 
28168  if (extData.NEG & 0x1) {
28169  src.negModifier();
28170  }
28171 
28172  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28173  if (wf->execMask(lane)) {
28174  vdst[lane] = (VecElemF32)bits(src[lane], 7, 0);
28175  }
28176  }
28177 
28178  vdst.write();
28179  } // execute
28180  // --- Inst_VOP3__V_CVT_F32_UBYTE1 class methods ---
28181 
28183  : Inst_VOP3A(iFmt, "v_cvt_f32_ubyte1", false)
28184  {
28185  setFlag(ALU);
28186  setFlag(F32);
28187  } // Inst_VOP3__V_CVT_F32_UBYTE1
28188 
28190  {
28191  } // ~Inst_VOP3__V_CVT_F32_UBYTE1
28192 
28193  // --- description from .arch file ---
28194  // D.f = (float)(S0.u[15:8]).
28195  void
28197  {
28198  Wavefront *wf = gpuDynInst->wavefront();
28199  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
28200  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28201 
28202  src.readSrc();
28203 
28204  if (instData.ABS & 0x1) {
28205  src.absModifier();
28206  }
28207 
28208  if (extData.NEG & 0x1) {
28209  src.negModifier();
28210  }
28211 
28212  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28213  if (wf->execMask(lane)) {
28214  vdst[lane] = (VecElemF32)bits(src[lane], 15, 8);
28215  }
28216  }
28217 
28218  vdst.write();
28219  } // execute
28220  // --- Inst_VOP3__V_CVT_F32_UBYTE2 class methods ---
28221 
28223  : Inst_VOP3A(iFmt, "v_cvt_f32_ubyte2", false)
28224  {
28225  setFlag(ALU);
28226  setFlag(F32);
28227  } // Inst_VOP3__V_CVT_F32_UBYTE2
28228 
28230  {
28231  } // ~Inst_VOP3__V_CVT_F32_UBYTE2
28232 
28233  // --- description from .arch file ---
28234  // D.f = (float)(S0.u[23:16]).
28235  void
28237  {
28238  Wavefront *wf = gpuDynInst->wavefront();
28239  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
28240  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28241 
28242  src.readSrc();
28243 
28244  if (instData.ABS & 0x1) {
28245  src.absModifier();
28246  }
28247 
28248  if (extData.NEG & 0x1) {
28249  src.negModifier();
28250  }
28251 
28252  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28253  if (wf->execMask(lane)) {
28254  vdst[lane] = (VecElemF32)bits(src[lane], 23, 16);
28255  }
28256  }
28257 
28258  vdst.write();
28259  } // execute
28260  // --- Inst_VOP3__V_CVT_F32_UBYTE3 class methods ---
28261 
28263  : Inst_VOP3A(iFmt, "v_cvt_f32_ubyte3", false)
28264  {
28265  setFlag(ALU);
28266  setFlag(F32);
28267  } // Inst_VOP3__V_CVT_F32_UBYTE3
28268 
28270  {
28271  } // ~Inst_VOP3__V_CVT_F32_UBYTE3
28272 
28273  // --- description from .arch file ---
28274  // D.f = (float)(S0.u[31:24]).
28275  void
28277  {
28278  Wavefront *wf = gpuDynInst->wavefront();
28279  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
28280  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28281 
28282  src.readSrc();
28283 
28284  if (instData.ABS & 0x1) {
28285  src.absModifier();
28286  }
28287 
28288  if (extData.NEG & 0x1) {
28289  src.negModifier();
28290  }
28291 
28292  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28293  if (wf->execMask(lane)) {
28294  vdst[lane] = (VecElemF32)bits(src[lane], 31, 24);
28295  }
28296  }
28297 
28298  vdst.write();
28299  } // execute
28300  // --- Inst_VOP3__V_CVT_U32_F64 class methods ---
28301 
28303  : Inst_VOP3A(iFmt, "v_cvt_u32_f64", false)
28304  {
28305  setFlag(ALU);
28306  setFlag(F64);
28307  } // Inst_VOP3__V_CVT_U32_F64
28308 
28310  {
28311  } // ~Inst_VOP3__V_CVT_U32_F64
28312 
28313  // --- description from .arch file ---
28314  // D.u = (unsigned)S0.d.
28315  // Out-of-range floating point values (including infinity) saturate. NaN is
28316  // --- converted to 0.
28317  void
28319  {
28320  Wavefront *wf = gpuDynInst->wavefront();
28321  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
28322  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28323 
28324  src.readSrc();
28325 
28326  if (instData.ABS & 0x1) {
28327  src.absModifier();
28328  }
28329 
28330  if (extData.NEG & 0x1) {
28331  src.negModifier();
28332  }
28333 
28334  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28335  if (wf->execMask(lane)) {
28336  int exp;
28337  std::frexp(src[lane],&exp);
28338  if (std::isnan(src[lane])) {
28339  vdst[lane] = 0;
28340  } else if (std::isinf(src[lane])) {
28341  if (std::signbit(src[lane])) {
28342  vdst[lane] = 0;
28343  } else {
28344  vdst[lane] = UINT_MAX;
28345  }
28346  } else if (exp > 31) {
28347  vdst[lane] = UINT_MAX;
28348  } else {
28349  vdst[lane] = (VecElemU32)src[lane];
28350  }
28351  }
28352  }
28353 
28354  vdst.write();
28355  } // execute
28356  // --- Inst_VOP3__V_CVT_F64_U32 class methods ---
28357 
28359  : Inst_VOP3A(iFmt, "v_cvt_f64_u32", false)
28360  {
28361  setFlag(ALU);
28362  setFlag(F64);
28363  } // Inst_VOP3__V_CVT_F64_U32
28364 
28366  {
28367  } // ~Inst_VOP3__V_CVT_F64_U32
28368 
28369  // --- description from .arch file ---
28370  // D.d = (double)S0.u.
28371  void
28373  {
28374  Wavefront *wf = gpuDynInst->wavefront();
28375  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
28376  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28377 
28378  src.readSrc();
28379 
28380  if (instData.ABS & 0x1) {
28381  src.absModifier();
28382  }
28383 
28384  if (extData.NEG & 0x1) {
28385  src.negModifier();
28386  }
28387 
28388  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28389  if (wf->execMask(lane)) {
28390  vdst[lane] = (VecElemF64)src[lane];
28391  }
28392  }
28393 
28394  vdst.write();
28395  } // execute
28396  // --- Inst_VOP3__V_TRUNC_F64 class methods ---
28397 
28399  : Inst_VOP3A(iFmt, "v_trunc_f64", false)
28400  {
28401  setFlag(ALU);
28402  setFlag(F64);
28403  } // Inst_VOP3__V_TRUNC_F64
28404 
28406  {
28407  } // ~Inst_VOP3__V_TRUNC_F64
28408 
28409  // --- description from .arch file ---
28410  // D.d = trunc(S0.d), return integer part of S0.d.
28411  void
28413  {
28414  Wavefront *wf = gpuDynInst->wavefront();
28415  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
28416  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28417 
28418  src.readSrc();
28419 
28420  if (instData.ABS & 0x1) {
28421  src.absModifier();
28422  }
28423 
28424  if (extData.NEG & 0x1) {
28425  src.negModifier();
28426  }
28427 
28428  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28429  if (wf->execMask(lane)) {
28430  vdst[lane] = std::trunc(src[lane]);
28431  }
28432  }
28433 
28434  vdst.write();
28435  } // execute
28436  // --- Inst_VOP3__V_CEIL_F64 class methods ---
28437 
28439  : Inst_VOP3A(iFmt, "v_ceil_f64", false)
28440  {
28441  setFlag(ALU);
28442  setFlag(F64);
28443  } // Inst_VOP3__V_CEIL_F64
28444 
28446  {
28447  } // ~Inst_VOP3__V_CEIL_F64
28448 
28449  // --- description from .arch file ---
28450  // D.d = trunc(S0.d);
28451  // if(S0.d > 0.0 && S0.d != D.d) then D.d += 1.0.
28452  void
28454  {
28455  Wavefront *wf = gpuDynInst->wavefront();
28456  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
28457  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28458 
28459  src.readSrc();
28460 
28461  if (instData.ABS & 0x1) {
28462  src.absModifier();
28463  }
28464 
28465  if (extData.NEG & 0x1) {
28466  src.negModifier();
28467  }
28468 
28469  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28470  if (wf->execMask(lane)) {
28471  vdst[lane] = std::ceil(src[lane]);
28472  }
28473  }
28474 
28475  vdst.write();
28476  } // execute
28477  // --- Inst_VOP3__V_RNDNE_F64 class methods ---
28478 
28480  : Inst_VOP3A(iFmt, "v_rndne_f64", false)
28481  {
28482  setFlag(ALU);
28483  setFlag(F64);
28484  } // Inst_VOP3__V_RNDNE_F64
28485 
28487  {
28488  } // ~Inst_VOP3__V_RNDNE_F64
28489 
28490  // --- description from .arch file ---
28491  // D.d = round_nearest_even(S0.d).
28492  void
28494  {
28495  Wavefront *wf = gpuDynInst->wavefront();
28496  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
28497  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28498 
28499  src.readSrc();
28500 
28501  if (instData.ABS & 0x1) {
28502  src.absModifier();
28503  }
28504 
28505  if (extData.NEG & 0x1) {
28506  src.negModifier();
28507  }
28508 
28509  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28510  if (wf->execMask(lane)) {
28511  vdst[lane] = roundNearestEven(src[lane]);
28512  }
28513  }
28514 
28515  vdst.write();
28516  } // execute
28517  // --- Inst_VOP3__V_FLOOR_F64 class methods ---
28518 
28520  : Inst_VOP3A(iFmt, "v_floor_f64", false)
28521  {
28522  setFlag(ALU);
28523  setFlag(F64);
28524  } // Inst_VOP3__V_FLOOR_F64
28525 
28527  {
28528  } // ~Inst_VOP3__V_FLOOR_F64
28529 
28530  // --- description from .arch file ---
28531  // D.d = trunc(S0.d);
28532  // if(S0.d < 0.0 && S0.d != D.d) then D.d += -1.0.
28533  void
28535  {
28536  Wavefront *wf = gpuDynInst->wavefront();
28537  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
28538  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28539 
28540  src.readSrc();
28541 
28542  if (instData.ABS & 0x1) {
28543  src.absModifier();
28544  }
28545 
28546  if (extData.NEG & 0x1) {
28547  src.negModifier();
28548  }
28549 
28550  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28551  if (wf->execMask(lane)) {
28552  vdst[lane] = std::floor(src[lane]);
28553  }
28554  }
28555 
28556  vdst.write();
28557  } // execute
28558  // --- Inst_VOP3__V_FRACT_F32 class methods ---
28559 
28561  : Inst_VOP3A(iFmt, "v_fract_f32", false)
28562  {
28563  setFlag(ALU);
28564  setFlag(F32);
28565  } // Inst_VOP3__V_FRACT_F32
28566 
28568  {
28569  } // ~Inst_VOP3__V_FRACT_F32
28570 
28571  // --- description from .arch file ---
28572  // D.f = S0.f - floor(S0.f).
28573  void
28575  {
28576  Wavefront *wf = gpuDynInst->wavefront();
28577  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28578  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28579 
28580  src.readSrc();
28581 
28582  if (instData.ABS & 0x1) {
28583  src.absModifier();
28584  }
28585 
28586  if (extData.NEG & 0x1) {
28587  src.negModifier();
28588  }
28589 
28590  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28591  if (wf->execMask(lane)) {
28592  VecElemF32 int_part(0.0);
28593  vdst[lane] = std::modf(src[lane], &int_part);
28594  }
28595  }
28596 
28597  vdst.write();
28598  } // execute
28599  // --- Inst_VOP3__V_TRUNC_F32 class methods ---
28600 
28602  : Inst_VOP3A(iFmt, "v_trunc_f32", false)
28603  {
28604  setFlag(ALU);
28605  setFlag(F32);
28606  } // Inst_VOP3__V_TRUNC_F32
28607 
28609  {
28610  } // ~Inst_VOP3__V_TRUNC_F32
28611 
28612  // --- description from .arch file ---
28613  // D.f = trunc(S0.f), return integer part of S0.f.
28614  void
28616  {
28617  Wavefront *wf = gpuDynInst->wavefront();
28618  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28619  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28620 
28621  src.readSrc();
28622 
28623  if (instData.ABS & 0x1) {
28624  src.absModifier();
28625  }
28626 
28627  if (extData.NEG & 0x1) {
28628  src.negModifier();
28629  }
28630 
28631  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28632  if (wf->execMask(lane)) {
28633  vdst[lane] = std::trunc(src[lane]);
28634  }
28635  }
28636 
28637  vdst.write();
28638  } // execute
28639  // --- Inst_VOP3__V_CEIL_F32 class methods ---
28640 
28642  : Inst_VOP3A(iFmt, "v_ceil_f32", false)
28643  {
28644  setFlag(ALU);
28645  setFlag(F32);
28646  } // Inst_VOP3__V_CEIL_F32
28647 
28649  {
28650  } // ~Inst_VOP3__V_CEIL_F32
28651 
28652  // --- description from .arch file ---
28653  // D.f = trunc(S0.f);
28654  // if(S0.f > 0.0 && S0.f != D.f) then D.f += 1.0.
28655  void
28657  {
28658  Wavefront *wf = gpuDynInst->wavefront();
28659  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28660  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28661 
28662  src.readSrc();
28663 
28664  if (instData.ABS & 0x1) {
28665  src.absModifier();
28666  }
28667 
28668  if (extData.NEG & 0x1) {
28669  src.negModifier();
28670  }
28671 
28672  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28673  if (wf->execMask(lane)) {
28674  vdst[lane] = std::ceil(src[lane]);
28675  }
28676  }
28677 
28678  vdst.write();
28679  } // execute
28680  // --- Inst_VOP3__V_RNDNE_F32 class methods ---
28681 
28683  : Inst_VOP3A(iFmt, "v_rndne_f32", false)
28684  {
28685  setFlag(ALU);
28686  setFlag(F32);
28687  } // Inst_VOP3__V_RNDNE_F32
28688 
28690  {
28691  } // ~Inst_VOP3__V_RNDNE_F32
28692 
28693  // --- description from .arch file ---
28694  // D.f = round_nearest_even(S0.f).
28695  void
28697  {
28698  Wavefront *wf = gpuDynInst->wavefront();
28699  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28700  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28701 
28702  src.readSrc();
28703 
28704  if (instData.ABS & 0x1) {
28705  src.absModifier();
28706  }
28707 
28708  if (extData.NEG & 0x1) {
28709  src.negModifier();
28710  }
28711 
28712  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28713  if (wf->execMask(lane)) {
28714  vdst[lane] = roundNearestEven(src[lane]);
28715  }
28716  }
28717 
28718  vdst.write();
28719  } // execute
28720  // --- Inst_VOP3__V_FLOOR_F32 class methods ---
28721 
28723  : Inst_VOP3A(iFmt, "v_floor_f32", false)
28724  {
28725  setFlag(ALU);
28726  setFlag(F32);
28727  } // Inst_VOP3__V_FLOOR_F32
28728 
28730  {
28731  } // ~Inst_VOP3__V_FLOOR_F32
28732 
28733  // --- description from .arch file ---
28734  // D.f = trunc(S0.f);
28735  // if(S0.f < 0.0 && S0.f != D.f) then D.f += -1.0.
28736  void
28738  {
28739  Wavefront *wf = gpuDynInst->wavefront();
28740  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28741  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28742 
28743  src.readSrc();
28744 
28745  if (instData.ABS & 0x1) {
28746  src.absModifier();
28747  }
28748 
28749  if (extData.NEG & 0x1) {
28750  src.negModifier();
28751  }
28752 
28753  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28754  if (wf->execMask(lane)) {
28755  vdst[lane] = std::floor(src[lane]);
28756  }
28757  }
28758 
28759  vdst.write();
28760  } // execute
28761  // --- Inst_VOP3__V_EXP_F32 class methods ---
28762 
28764  : Inst_VOP3A(iFmt, "v_exp_f32", false)
28765  {
28766  setFlag(ALU);
28767  setFlag(F32);
28768  } // Inst_VOP3__V_EXP_F32
28769 
28771  {
28772  } // ~Inst_VOP3__V_EXP_F32
28773 
28774  // --- description from .arch file ---
28775  // D.f = pow(2.0, S0.f).
28776  void
28778  {
28779  Wavefront *wf = gpuDynInst->wavefront();
28780  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28781  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28782 
28783  src.readSrc();
28784 
28785  if (instData.ABS & 0x1) {
28786  src.absModifier();
28787  }
28788 
28789  if (extData.NEG & 0x1) {
28790  src.negModifier();
28791  }
28792 
28793  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28794  if (wf->execMask(lane)) {
28795  vdst[lane] = std::pow(2.0, src[lane]);
28796  }
28797  }
28798 
28799  vdst.write();
28800  } // execute
28801  // --- Inst_VOP3__V_LOG_F32 class methods ---
28802 
28804  : Inst_VOP3A(iFmt, "v_log_f32", false)
28805  {
28806  setFlag(ALU);
28807  setFlag(F32);
28808  } // Inst_VOP3__V_LOG_F32
28809 
28811  {
28812  } // ~Inst_VOP3__V_LOG_F32
28813 
28814  // --- description from .arch file ---
28815  // D.f = log2(S0.f). Base 2 logarithm.
28816  void
28818  {
28819  Wavefront *wf = gpuDynInst->wavefront();
28820  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28821  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28822 
28823  src.readSrc();
28824 
28825  if (instData.ABS & 0x1) {
28826  src.absModifier();
28827  }
28828 
28829  if (extData.NEG & 0x1) {
28830  src.negModifier();
28831  }
28832 
28836  assert(!(instData.ABS & 0x2));
28837  assert(!(instData.ABS & 0x4));
28838  assert(!(extData.NEG & 0x2));
28839  assert(!(extData.NEG & 0x4));
28840 
28841  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28842  if (wf->execMask(lane)) {
28843  vdst[lane] = std::log2(src[lane]);
28844  }
28845  }
28846 
28847  vdst.write();
28848  } // execute
28849  // --- Inst_VOP3__V_RCP_F32 class methods ---
28850 
28852  : Inst_VOP3A(iFmt, "v_rcp_f32", false)
28853  {
28854  setFlag(ALU);
28855  setFlag(F32);
28856  } // Inst_VOP3__V_RCP_F32
28857 
28859  {
28860  } // ~Inst_VOP3__V_RCP_F32
28861 
28862  // --- description from .arch file ---
28863  // D.f = 1.0 / S0.f. Reciprocal with IEEE rules and < 1ulp error.
28864  void
28866  {
28867  Wavefront *wf = gpuDynInst->wavefront();
28868  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28869  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28870 
28871  src.readSrc();
28872 
28873  if (instData.ABS & 0x1) {
28874  src.absModifier();
28875  }
28876 
28877  if (extData.NEG & 0x1) {
28878  src.negModifier();
28879  }
28880 
28881  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28882  if (wf->execMask(lane)) {
28883  vdst[lane] = 1.0 / src[lane];
28884  }
28885  }
28886 
28887  vdst.write();
28888  } // execute
28889  // --- Inst_VOP3__V_RCP_IFLAG_F32 class methods ---
28890 
28892  : Inst_VOP3A(iFmt, "v_rcp_iflag_f32", false)
28893  {
28894  setFlag(ALU);
28895  setFlag(F32);
28896  } // Inst_VOP3__V_RCP_IFLAG_F32
28897 
28899  {
28900  } // ~Inst_VOP3__V_RCP_IFLAG_F32
28901 
28902  // --- description from .arch file ---
28903  // D.f = 1.0 / S0.f. Reciprocal intended for integer division, can raise
28904  // --- integer DIV_BY_ZERO exception but cannot raise floating-point
28905  // --- exceptions.
28906  void
28908  {
28909  Wavefront *wf = gpuDynInst->wavefront();
28910  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28911  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28912 
28913  src.readSrc();
28914 
28915  if (instData.ABS & 0x1) {
28916  src.absModifier();
28917  }
28918 
28919  if (extData.NEG & 0x1) {
28920  src.negModifier();
28921  }
28922 
28923  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28924  if (wf->execMask(lane)) {
28925  vdst[lane] = 1.0 / src[lane];
28926  }
28927  }
28928 
28929  vdst.write();
28930  } // execute
28931  // --- Inst_VOP3__V_RSQ_F32 class methods ---
28932 
28934  : Inst_VOP3A(iFmt, "v_rsq_f32", false)
28935  {
28936  setFlag(ALU);
28937  setFlag(F32);
28938  } // Inst_VOP3__V_RSQ_F32
28939 
28941  {
28942  } // ~Inst_VOP3__V_RSQ_F32
28943 
28944  // --- description from .arch file ---
28945  // D.f = 1.0 / sqrt(S0.f). Reciprocal square root with IEEE rules.
28946  void
28948  {
28949  Wavefront *wf = gpuDynInst->wavefront();
28950  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
28951  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28952 
28953  src.readSrc();
28954 
28955  if (instData.ABS & 0x1) {
28956  src.absModifier();
28957  }
28958 
28959  if (extData.NEG & 0x1) {
28960  src.negModifier();
28961  }
28962 
28963  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28964  if (wf->execMask(lane)) {
28965  vdst[lane] = 1.0 / std::sqrt(src[lane]);
28966  }
28967  }
28968 
28969  vdst.write();
28970  } // execute
28971  // --- Inst_VOP3__V_RCP_F64 class methods ---
28972 
28974  : Inst_VOP3A(iFmt, "v_rcp_f64", false)
28975  {
28976  setFlag(ALU);
28977  setFlag(F64);
28978  } // Inst_VOP3__V_RCP_F64
28979 
28981  {
28982  } // ~Inst_VOP3__V_RCP_F64
28983 
28984  // --- description from .arch file ---
28985  // D.d = 1.0 / S0.d.
28986  void
28988  {
28989  Wavefront *wf = gpuDynInst->wavefront();
28990  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
28991  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28992 
28993  src.readSrc();
28994 
28995  if (instData.ABS & 0x1) {
28996  src.absModifier();
28997  }
28998 
28999  if (extData.NEG & 0x1) {
29000  src.negModifier();
29001  }
29002 
29003  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29004  if (wf->execMask(lane)) {
29005  if (std::fpclassify(src[lane]) == FP_ZERO) {
29006  vdst[lane] = +INFINITY;
29007  } else if (std::isnan(src[lane])) {
29008  vdst[lane] = NAN;
29009  } else if (std::isinf(src[lane])) {
29010  if (std::signbit(src[lane])) {
29011  vdst[lane] = -0.0;
29012  } else {
29013  vdst[lane] = 0.0;
29014  }
29015  } else {
29016  vdst[lane] = 1.0 / src[lane];
29017  }
29018  }
29019  }
29020 
29021  vdst.write();
29022  } // execute
29023  // --- Inst_VOP3__V_RSQ_F64 class methods ---
29024 
29026  : Inst_VOP3A(iFmt, "v_rsq_f64", false)
29027  {
29028  setFlag(ALU);
29029  setFlag(F64);
29030  } // Inst_VOP3__V_RSQ_F64
29031 
29033  {
29034  } // ~Inst_VOP3__V_RSQ_F64
29035 
29036  // --- description from .arch file ---
29037  // D.d = 1.0 / sqrt(S0.d). See V_RSQ_F32.
29038  void
29040  {
29041  Wavefront *wf = gpuDynInst->wavefront();
29042  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
29043  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29044 
29045  src.readSrc();
29046 
29047  if (instData.ABS & 0x1) {
29048  src.absModifier();
29049  }
29050 
29051  if (extData.NEG & 0x1) {
29052  src.negModifier();
29053  }
29054 
29055  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29056  if (wf->execMask(lane)) {
29057  if (std::fpclassify(src[lane]) == FP_ZERO) {
29058  vdst[lane] = +INFINITY;
29059  } else if (std::isnan(src[lane])) {
29060  vdst[lane] = NAN;
29061  } else if (std::isinf(src[lane]) && !std::signbit(src[lane])) {
29062  vdst[lane] = 0.0;
29063  } else if (std::signbit(src[lane])) {
29064  vdst[lane] = NAN;
29065  } else {
29066  vdst[lane] = 1.0 / std::sqrt(src[lane]);
29067  }
29068  }
29069  }
29070 
29071  vdst.write();
29072  } // execute
29073  // --- Inst_VOP3__V_SQRT_F32 class methods ---
29074 
29076  : Inst_VOP3A(iFmt, "v_sqrt_f32", false)
29077  {
29078  setFlag(ALU);
29079  setFlag(F32);
29080  } // Inst_VOP3__V_SQRT_F32
29081 
29083  {
29084  } // ~Inst_VOP3__V_SQRT_F32
29085 
29086  // --- description from .arch file ---
29087  // D.f = sqrt(S0.f).
29088  void
29090  {
29091  Wavefront *wf = gpuDynInst->wavefront();
29092  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
29093  VecOperandF32 vdst(gpuDynInst, instData.VDST);
29094 
29095  src.readSrc();
29096 
29097  if (instData.ABS & 0x1) {
29098  src.absModifier();
29099  }
29100 
29101  if (extData.NEG & 0x1) {
29102  src.negModifier();
29103  }
29104 
29105  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29106  if (wf->execMask(lane)) {
29107  vdst[lane] = std::sqrt(src[lane]);
29108  }
29109  }
29110 
29111  vdst.write();
29112  } // execute
29113  // --- Inst_VOP3__V_SQRT_F64 class methods ---
29114 
29116  : Inst_VOP3A(iFmt, "v_sqrt_f64", false)
29117  {
29118  setFlag(ALU);
29119  setFlag(F64);
29120  } // Inst_VOP3__V_SQRT_F64
29121 
29123  {
29124  } // ~Inst_VOP3__V_SQRT_F64
29125 
29126  // --- description from .arch file ---
29127  // D.d = sqrt(S0.d).
29128  void
29130  {
29131  Wavefront *wf = gpuDynInst->wavefront();
29132  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
29133  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29134 
29135  src.readSrc();
29136 
29137  if (instData.ABS & 0x1) {
29138  src.absModifier();
29139  }
29140 
29141  if (extData.NEG & 0x1) {
29142  src.negModifier();
29143  }
29144 
29145  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29146  if (wf->execMask(lane)) {
29147  vdst[lane] = std::sqrt(src[lane]);
29148  }
29149  }
29150 
29151  vdst.write();
29152  } // execute
29153  // --- Inst_VOP3__V_SIN_F32 class methods ---
29154 
29156  : Inst_VOP3A(iFmt, "v_sin_f32", false)
29157  {
29158  setFlag(ALU);
29159  setFlag(F32);
29160  } // Inst_VOP3__V_SIN_F32
29161 
29163  {
29164  } // ~Inst_VOP3__V_SIN_F32
29165 
29166  // --- description from .arch file ---
29167  // D.f = sin(S0.f * 2 * PI).
29168  // Valid range of S0.f is [-256.0, +256.0]. Out of range input results in
29169  // float 0.0.
29170  void
29172  {
29173  Wavefront *wf = gpuDynInst->wavefront();
29174  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
29175  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
29176  VecOperandF32 vdst(gpuDynInst, instData.VDST);
29177 
29178  src.readSrc();
29179  pi.read();
29180 
29181  if (instData.ABS & 0x1) {
29182  src.absModifier();
29183  }
29184 
29185  if (extData.NEG & 0x1) {
29186  src.negModifier();
29187  }
29188 
29189  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29190  if (wf->execMask(lane)) {
29191  vdst[lane] = std::sin(src[lane] * 2 * pi.rawData());
29192  }
29193  }
29194 
29195  vdst.write();
29196  } // execute
29197  // --- Inst_VOP3__V_COS_F32 class methods ---
29198 
29200  : Inst_VOP3A(iFmt, "v_cos_f32", false)
29201  {
29202  setFlag(ALU);
29203  setFlag(F32);
29204  } // Inst_VOP3__V_COS_F32
29205 
29207  {
29208  } // ~Inst_VOP3__V_COS_F32
29209 
29210  // --- description from .arch file ---
29211  // D.f = cos(S0.f * 2 * PI).
29212  // Valid range of S0.f is [-256.0, +256.0]. Out of range input results in
29213  // float 1.0.
29214  void
29216  {
29217  Wavefront *wf = gpuDynInst->wavefront();
29218  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
29219  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
29220  VecOperandF32 vdst(gpuDynInst, instData.VDST);
29221 
29222  src.readSrc();
29223  pi.read();
29224 
29225  if (instData.ABS & 0x1) {
29226  src.absModifier();
29227  }
29228 
29229  if (extData.NEG & 0x1) {
29230  src.negModifier();
29231  }
29232 
29233  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29234  if (wf->execMask(lane)) {
29235  vdst[lane] = std::cos(src[lane] * 2 * pi.rawData());
29236  }
29237  }
29238 
29239  vdst.write();
29240  } // execute
29241  // --- Inst_VOP3__V_NOT_B32 class methods ---
29242 
29244  : Inst_VOP3A(iFmt, "v_not_b32", false)
29245  {
29246  setFlag(ALU);
29247  } // Inst_VOP3__V_NOT_B32
29248 
29250  {
29251  } // ~Inst_VOP3__V_NOT_B32
29252 
29253  // --- description from .arch file ---
29254  // D.u = ~S0.u.
29255  // Input and output modifiers not supported.
29256  void
29258  {
29259  Wavefront *wf = gpuDynInst->wavefront();
29260  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
29261  VecOperandU32 vdst(gpuDynInst, instData.VDST);
29262 
29263  src.readSrc();
29264 
29265  if (instData.ABS & 0x1) {
29266  src.absModifier();
29267  }
29268 
29269  if (extData.NEG & 0x1) {
29270  src.negModifier();
29271  }
29272 
29273  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29274  if (wf->execMask(lane)) {
29275  vdst[lane] = ~src[lane];
29276  }
29277  }
29278 
29279  vdst.write();
29280  } // execute
29281  // --- Inst_VOP3__V_BFREV_B32 class methods ---
29282 
29284  : Inst_VOP3A(iFmt, "v_bfrev_b32", false)
29285  {
29286  setFlag(ALU);
29287  } // Inst_VOP3__V_BFREV_B32
29288 
29290  {
29291  } // ~Inst_VOP3__V_BFREV_B32
29292 
29293  // --- description from .arch file ---
29294  // D.u[31:0] = S0.u[0:31], bitfield reverse.
29295  // Input and output modifiers not supported.
29296  void
29298  {
29299  Wavefront *wf = gpuDynInst->wavefront();
29300  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
29301  VecOperandU32 vdst(gpuDynInst, instData.VDST);
29302 
29303  src.readSrc();
29304 
29305  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29306  if (wf->execMask(lane)) {
29307  vdst[lane] = reverseBits(src[lane]);
29308  }
29309  }
29310 
29311  vdst.write();
29312  } // execute
29313  // --- Inst_VOP3__V_FFBH_U32 class methods ---
29314 
29316  : Inst_VOP3A(iFmt, "v_ffbh_u32", false)
29317  {
29318  setFlag(ALU);
29319  } // Inst_VOP3__V_FFBH_U32
29320 
29322  {
29323  } // ~Inst_VOP3__V_FFBH_U32
29324 
29325  // --- description from .arch file ---
29326  // D.u = position of first 1 in S0.u from MSB;
29327  // D.u = 0xffffffff if S0.u == 0.
29328  void
29330  {
29331  Wavefront *wf = gpuDynInst->wavefront();
29332  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
29333  VecOperandU32 vdst(gpuDynInst, instData.VDST);
29334 
29335  src.readSrc();
29336 
29337  if (instData.ABS & 0x1) {
29338  src.absModifier();
29339  }
29340 
29341  if (extData.NEG & 0x1) {
29342  src.negModifier();
29343  }
29344 
29345  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29346  if (wf->execMask(lane)) {
29347  vdst[lane] = findFirstOneMsb(src[lane]);
29348  }
29349  }
29350 
29351  vdst.write();
29352  } // execute
29353  // --- Inst_VOP3__V_FFBL_B32 class methods ---
29354 
29356  : Inst_VOP3A(iFmt, "v_ffbl_b32", false)
29357  {
29358  setFlag(ALU);
29359  } // Inst_VOP3__V_FFBL_B32
29360 
29362  {
29363  } // ~Inst_VOP3__V_FFBL_B32
29364 
29365  // --- description from .arch file ---
29366  // D.u = position of first 1 in S0.u from LSB;
29367  // D.u = 0xffffffff if S0.u == 0.
29368  void
29370  {
29371  Wavefront *wf = gpuDynInst->wavefront();
29372  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
29373  VecOperandU32 vdst(gpuDynInst, instData.VDST);
29374 
29375  src.readSrc();
29376 
29377  if (instData.ABS & 0x1) {
29378  src.absModifier();
29379  }
29380 
29381  if (extData.NEG & 0x1) {
29382  src.negModifier();
29383  }
29384 
29385  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29386  if (wf->execMask(lane)) {
29387  vdst[lane] = findFirstOne(src[lane]);
29388  }
29389  }
29390 
29391  vdst.write();
29392  } // execute
29393  // --- Inst_VOP3__V_FFBH_I32 class methods ---
29394 
29396  : Inst_VOP3A(iFmt, "v_ffbh_i32", false)
29397  {
29398  setFlag(ALU);
29399  } // Inst_VOP3__V_FFBH_I32
29400 
29402  {
29403  } // ~Inst_VOP3__V_FFBH_I32
29404 
29405  // --- description from .arch file ---
29406  // D.u = position of first bit different from sign bit in S0.i from MSB;
29407  // D.u = 0xffffffff if S0.i == 0 or S0.i == 0xffffffff.
29408  void
29410  {
29411  Wavefront *wf = gpuDynInst->wavefront();
29412  ConstVecOperandI32 src(gpuDynInst, extData.SRC0);
29413  VecOperandU32 vdst(gpuDynInst, instData.VDST);
29414 
29415  src.readSrc();
29416 
29417  if (instData.ABS & 0x1) {
29418  src.absModifier();
29419  }
29420 
29421  if (extData.NEG & 0x1) {
29422  src.negModifier();
29423  }
29424 
29425  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29426  if (wf->execMask(lane)) {
29427  vdst[lane] = firstOppositeSignBit(src[lane]);
29428  }
29429  }
29430 
29431  vdst.write();
29432  } // execute
29433  // --- Inst_VOP3__V_FREXP_EXP_I32_F64 class methods ---
29434 
29436  InFmt_VOP3A *iFmt)
29437  : Inst_VOP3A(iFmt, "v_frexp_exp_i32_f64", false)
29438  {
29439  setFlag(ALU);
29440  setFlag(F64);
29441  } // Inst_VOP3__V_FREXP_EXP_I32_F64
29442 
29444  {
29445  } // ~Inst_VOP3__V_FREXP_EXP_I32_F64
29446 
29447  // --- description from .arch file ---
29448  // See V_FREXP_EXP_I32_F32.
29449  void
29451  {
29452  Wavefront *wf = gpuDynInst->wavefront();
29453  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
29454  VecOperandI32 vdst(gpuDynInst, instData.VDST);
29455 
29456  src.readSrc();
29457 
29458  if (instData.ABS & 0x1) {
29459  src.absModifier();
29460  }
29461 
29462  if (extData.NEG & 0x1) {
29463  src.negModifier();
29464  }
29465 
29466  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29467  if (wf->execMask(lane)) {
29468  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
29469  vdst[lane] = 0;
29470  } else {
29471  VecElemI32 exp(0);
29472  std::frexp(src[lane], &exp);
29473  vdst[lane] = exp;
29474  }
29475  }
29476  }
29477 
29478  vdst.write();
29479  } // execute
29480  // --- Inst_VOP3__V_FREXP_MANT_F64 class methods ---
29481 
29483  : Inst_VOP3A(iFmt, "v_frexp_mant_f64", false)
29484  {
29485  setFlag(ALU);
29486  setFlag(F64);
29487  } // Inst_VOP3__V_FREXP_MANT_F64
29488 
29490  {
29491  } // ~Inst_VOP3__V_FREXP_MANT_F64
29492 
29493  // --- description from .arch file ---
29494  // See V_FREXP_MANT_F32.
29495  void
29497  {
29498  Wavefront *wf = gpuDynInst->wavefront();
29499  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
29500  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29501 
29502  src.readSrc();
29503 
29504  if (instData.ABS & 0x1) {
29505  src.absModifier();
29506  }
29507 
29508  if (extData.NEG & 0x1) {
29509  src.negModifier();
29510  }
29511 
29512  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29513  if (wf->execMask(lane)) {
29514  VecElemI32 exp(0);
29515  vdst[lane] = std::frexp(src[lane], &exp);
29516  }
29517  }
29518 
29519  vdst.write();
29520  } // execute
29521  // --- Inst_VOP3__V_FRACT_F64 class methods ---
29522 
29524  : Inst_VOP3A(iFmt, "v_fract_f64", false)
29525  {
29526  setFlag(ALU);
29527  setFlag(F64);
29528  } // Inst_VOP3__V_FRACT_F64
29529 
29531  {
29532  } // ~Inst_VOP3__V_FRACT_F64
29533 
29534  // --- description from .arch file ---
29535  // See V_FRACT_F32.
29536  void
29538  {
29539  Wavefront *wf = gpuDynInst->wavefront();
29540  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
29541  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29542 
29543  src.readSrc();
29544 
29545  if (instData.ABS & 0x1) {
29546  src.absModifier();
29547  }
29548 
29549  if (extData.NEG & 0x1) {
29550  src.negModifier();
29551  }
29552 
29553  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29554  if (wf->execMask(lane)) {
29555  VecElemF32 int_part(0.0);
29556  vdst[lane] = std::modf(src[lane], &int_part);
29557  }
29558  }
29559 
29560  vdst.write();
29561  } // execute
29562  // --- Inst_VOP3__V_FREXP_EXP_I32_F32 class methods ---
29563 
29565  InFmt_VOP3A *iFmt)
29566  : Inst_VOP3A(iFmt, "v_frexp_exp_i32_f32", false)
29567  {
29568  setFlag(ALU);
29569  setFlag(F32);
29570  } // Inst_VOP3__V_FREXP_EXP_I32_F32
29571 
29573  {
29574  } // ~Inst_VOP3__V_FREXP_EXP_I32_F32
29575 
29576  // --- description from .arch file ---
29577  // if(S0.f == INF || S0.f == NAN) then D.i = 0;
29578  // else D.i = TwosComplement(Exponent(S0.f) - 127 + 1).
29579  // Returns exponent of single precision float input, such that S0.f =
29580  // significand * (2 ** exponent). See also FREXP_MANT_F32, which returns
29581  // the significand.
29582  void
29584  {
29585  Wavefront *wf = gpuDynInst->wavefront();
29586  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
29587  VecOperandI32 vdst(gpuDynInst, instData.VDST);
29588 
29589  src.readSrc();
29590 
29591  if (instData.ABS & 0x1) {
29592  src.absModifier();
29593  }
29594 
29595  if (extData.NEG & 0x1) {
29596  src.negModifier();
29597  }
29598 
29599  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29600  if (wf->execMask(lane)) {
29601  if (std::isinf(src[lane])|| std::isnan(src[lane])) {
29602  vdst[lane] = 0;
29603  } else {
29604  VecElemI32 exp(0);
29605  std::frexp(src[lane], &exp);
29606  vdst[lane] = exp;
29607  }
29608  }
29609  }
29610 
29611  vdst.write();
29612  } // execute
29613  // --- Inst_VOP3__V_FREXP_MANT_F32 class methods ---
29614 
29616  : Inst_VOP3A(iFmt, "v_frexp_mant_f32", false)
29617  {
29618  setFlag(ALU);
29619  setFlag(F32);
29620  } // Inst_VOP3__V_FREXP_MANT_F32
29621 
29623  {
29624  } // ~Inst_VOP3__V_FREXP_MANT_F32
29625 
29626  // --- description from .arch file ---
29627  // if(S0.f == INF || S0.f == NAN) then D.f = S0.f;
29628  // else D.f = Mantissa(S0.f).
29629  // Result range is in (-1.0,-0.5][0.5,1.0) in normal cases. Returns binary
29630  // --- significand of single precision float input, such that S0.f =
29631  // --- significand * (2 ** exponent). See also FREXP_EXP_I32_F32, which
29632  // --- returns integer exponent.
29633  void
29635  {
29636  Wavefront *wf = gpuDynInst->wavefront();
29637  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
29638  VecOperandF32 vdst(gpuDynInst, instData.VDST);
29639 
29640  src.readSrc();
29641 
29642  if (instData.ABS & 0x1) {
29643  src.absModifier();
29644  }
29645 
29646  if (extData.NEG & 0x1) {
29647  src.negModifier();
29648  }
29649 
29650  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29651  if (wf->execMask(lane)) {
29652  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
29653  vdst[lane] = src[lane];
29654  } else {
29655  VecElemI32 exp(0);
29656  vdst[lane] = std::frexp(src[lane], &exp);
29657  }
29658  }
29659  }
29660 
29661  vdst.write();
29662  } // execute
29663  // --- Inst_VOP3__V_CLREXCP class methods ---
29664 
29666  : Inst_VOP3A(iFmt, "v_clrexcp", false)
29667  {
29668  } // Inst_VOP3__V_CLREXCP
29669 
29671  {
29672  } // ~Inst_VOP3__V_CLREXCP
29673 
29674  // --- description from .arch file ---
29675  // Clear wave's exception state in SIMD (SP).
29676  void
29678  {
29680  } // execute
29681  // --- Inst_VOP3__V_CVT_F16_U16 class methods ---
29682 
29684  : Inst_VOP3A(iFmt, "v_cvt_f16_u16", false)
29685  {
29686  setFlag(ALU);
29687  setFlag(F16);
29688  } // Inst_VOP3__V_CVT_F16_U16
29689 
29691  {
29692  } // ~Inst_VOP3__V_CVT_F16_U16
29693 
29694  // --- description from .arch file ---
29695  // D.f16 = uint16_to_flt16(S.u16).
29696  // Supports denormals, rounding, exception flags and saturation.
29697  void
29699  {
29701  } // execute
29702  // --- Inst_VOP3__V_CVT_F16_I16 class methods ---
29703 
29705  : Inst_VOP3A(iFmt, "v_cvt_f16_i16", false)
29706  {
29707  setFlag(ALU);
29708  setFlag(F16);
29709  } // Inst_VOP3__V_CVT_F16_I16
29710 
29712  {
29713  } // ~Inst_VOP3__V_CVT_F16_I16
29714 
29715  // --- description from .arch file ---
29716  // D.f16 = int16_to_flt16(S.i16).
29717  // Supports denormals, rounding, exception flags and saturation.
29718  void
29720  {
29722  } // execute
29723  // --- Inst_VOP3__V_CVT_U16_F16 class methods ---
29724 
29726  : Inst_VOP3A(iFmt, "v_cvt_u16_f16", false)
29727  {
29728  setFlag(ALU);
29729  setFlag(F16);
29730  } // Inst_VOP3__V_CVT_U16_F16
29731 
29733  {
29734  } // ~Inst_VOP3__V_CVT_U16_F16
29735 
29736  // --- description from .arch file ---
29737  // D.u16 = flt16_to_uint16(S.f16).
29738  // Supports rounding, exception flags and saturation.
29739  void
29741  {
29743  } // execute
29744  // --- Inst_VOP3__V_CVT_I16_F16 class methods ---
29745 
29747  : Inst_VOP3A(iFmt, "v_cvt_i16_f16", false)
29748  {
29749  setFlag(ALU);
29750  setFlag(F16);
29751  } // Inst_VOP3__V_CVT_I16_F16
29752 
29754  {
29755  } // ~Inst_VOP3__V_CVT_I16_F16
29756 
29757  // --- description from .arch file ---
29758  // D.i16 = flt16_to_int16(S.f16).
29759  // Supports rounding, exception flags and saturation.
29760  void
29762  {
29764  } // execute
29765  // --- Inst_VOP3__V_RCP_F16 class methods ---
29766 
29768  : Inst_VOP3A(iFmt, "v_rcp_f16", false)
29769  {
29770  setFlag(ALU);
29771  setFlag(F16);
29772  } // Inst_VOP3__V_RCP_F16
29773 
29775  {
29776  } // ~Inst_VOP3__V_RCP_F16
29777 
29778  // --- description from .arch file ---
29779  // if(S0.f16 == 1.0f)
29780  // D.f16 = 1.0f;
29781  // else
29782  // D.f16 = ApproximateRecip(S0.f16).
29783  void
29785  {
29787  } // execute
29788  // --- Inst_VOP3__V_SQRT_F16 class methods ---
29789 
29791  : Inst_VOP3A(iFmt, "v_sqrt_f16", false)
29792  {
29793  setFlag(ALU);
29794  setFlag(F16);
29795  } // Inst_VOP3__V_SQRT_F16
29796 
29798  {
29799  } // ~Inst_VOP3__V_SQRT_F16
29800 
29801  // --- description from .arch file ---
29802  // if(S0.f16 == 1.0f)
29803  // D.f16 = 1.0f;
29804  // else
29805  // D.f16 = ApproximateSqrt(S0.f16).
29806  void
29808  {
29810  } // execute
29811  // --- Inst_VOP3__V_RSQ_F16 class methods ---
29812 
29814  : Inst_VOP3A(iFmt, "v_rsq_f16", false)
29815  {
29816  setFlag(ALU);
29817  setFlag(F16);
29818  } // Inst_VOP3__V_RSQ_F16
29819 
29821  {
29822  } // ~Inst_VOP3__V_RSQ_F16
29823 
29824  // --- description from .arch file ---
29825  // if(S0.f16 == 1.0f)
29826  // D.f16 = 1.0f;
29827  // else
29828  // D.f16 = ApproximateRecipSqrt(S0.f16).
29829  void
29831  {
29833  } // execute
29834  // --- Inst_VOP3__V_LOG_F16 class methods ---
29835 
29837  : Inst_VOP3A(iFmt, "v_log_f16", false)
29838  {
29839  setFlag(ALU);
29840  setFlag(F16);
29841  } // Inst_VOP3__V_LOG_F16
29842 
29844  {
29845  } // ~Inst_VOP3__V_LOG_F16
29846 
29847  // --- description from .arch file ---
29848  // if(S0.f16 == 1.0f)
29849  // D.f16 = 0.0f;
29850  // else
29851  // D.f16 = ApproximateLog2(S0.f16).
29852  void
29854  {
29856  } // execute
29857  // --- Inst_VOP3__V_EXP_F16 class methods ---
29858 
29860  : Inst_VOP3A(iFmt, "v_exp_f16", false)
29861  {
29862  setFlag(ALU);
29863  setFlag(F16);
29864  } // Inst_VOP3__V_EXP_F16
29865 
29867  {
29868  } // ~Inst_VOP3__V_EXP_F16
29869 
29870  // --- description from .arch file ---
29871  // if(S0.f16 == 0.0f)
29872  // D.f16 = 1.0f;
29873  // else
29874  // D.f16 = Approximate2ToX(S0.f16).
29875  void
29877  {
29879  } // execute
29880  // --- Inst_VOP3__V_FREXP_MANT_F16 class methods ---
29881 
29883  : Inst_VOP3A(iFmt, "v_frexp_mant_f16", false)
29884  {
29885  setFlag(ALU);
29886  setFlag(F16);
29887  } // Inst_VOP3__V_FREXP_MANT_F16
29888 
29890  {
29891  } // ~Inst_VOP3__V_FREXP_MANT_F16
29892 
29893  // --- description from .arch file ---
29894  // if(S0.f16 == +-INF || S0.f16 == NAN)
29895  // D.f16 = S0.f16;
29896  // else
29897  // D.f16 = mantissa(S0.f16).
29898  // Result range is (-1.0,-0.5][0.5,1.0).
29899  // C math library frexp function.
29900  // Returns binary significand of half precision float input, such that the
29901  // original single float = significand * (2 ** exponent).
29902  void
29904  {
29906  } // execute
29907  // --- Inst_VOP3__V_FREXP_EXP_I16_F16 class methods ---
29908 
29910  InFmt_VOP3A *iFmt)
29911  : Inst_VOP3A(iFmt, "v_frexp_exp_i16_f16", false)
29912  {
29913  setFlag(ALU);
29914  setFlag(F16);
29915  } // Inst_VOP3__V_FREXP_EXP_I16_F16
29916 
29918  {
29919  } // ~Inst_VOP3__V_FREXP_EXP_I16_F16
29920 
29921  // --- description from .arch file ---
29922  // if(S0.f16 == +-INF || S0.f16 == NAN)
29923  // D.i16 = 0;
29924  // else
29925  // D.i16 = 2s_complement(exponent(S0.f16) - 15 + 1).
29926  // C math library frexp function.
29927  // Returns exponent of half precision float input, such that the
29928  // original single float = significand * (2 ** exponent).
29929  void
29931  {
29933  } // execute
29934  // --- Inst_VOP3__V_FLOOR_F16 class methods ---
29935 
29937  : Inst_VOP3A(iFmt, "v_floor_f16", false)
29938  {
29939  setFlag(ALU);
29940  setFlag(F16);
29941  } // Inst_VOP3__V_FLOOR_F16
29942 
29944  {
29945  } // ~Inst_VOP3__V_FLOOR_F16
29946 
29947  // --- description from .arch file ---
29948  // D.f16 = trunc(S0.f16);
29949  // if(S0.f16 < 0.0f && S0.f16 != D.f16) then D.f16 -= 1.0f.
29950  void
29952  {
29954  } // execute
29955  // --- Inst_VOP3__V_CEIL_F16 class methods ---
29956 
29958  : Inst_VOP3A(iFmt, "v_ceil_f16", false)
29959  {
29960  setFlag(ALU);
29961  setFlag(F16);
29962  } // Inst_VOP3__V_CEIL_F16
29963 
29965  {
29966  } // ~Inst_VOP3__V_CEIL_F16
29967 
29968  // --- description from .arch file ---
29969  // D.f16 = trunc(S0.f16);
29970  // if(S0.f16 > 0.0f && S0.f16 != D.f16) then D.f16 += 1.0f.
29971  void
29973  {
29975  } // execute
29976  // --- Inst_VOP3__V_TRUNC_F16 class methods ---
29977 
29979  : Inst_VOP3A(iFmt, "v_trunc_f16", false)
29980  {
29981  setFlag(ALU);
29982  setFlag(F16);
29983  } // Inst_VOP3__V_TRUNC_F16
29984 
29986  {
29987  } // ~Inst_VOP3__V_TRUNC_F16
29988 
29989  // --- description from .arch file ---
29990  // D.f16 = trunc(S0.f16).
29991  // Round-to-zero semantics.
29992  void
29994  {
29996  } // execute
29997  // --- Inst_VOP3__V_RNDNE_F16 class methods ---
29998 
30000  : Inst_VOP3A(iFmt, "v_rndne_f16", false)
30001  {
30002  setFlag(ALU);
30003  setFlag(F16);
30004  } // Inst_VOP3__V_RNDNE_F16
30005 
30007  {
30008  } // ~Inst_VOP3__V_RNDNE_F16
30009 
30010  // --- description from .arch file ---
30011  // D.f16 = FLOOR(S0.f16 + 0.5f);
30012  // if(floor(S0.f16) is even && fract(S0.f16) == 0.5f) then D.f16 -= 1.0f.
30013  // Round-to-nearest-even semantics.
30014  void
30016  {
30018  } // execute
30019  // --- Inst_VOP3__V_FRACT_F16 class methods ---
30020 
30022  : Inst_VOP3A(iFmt, "v_fract_f16", false)
30023  {
30024  setFlag(ALU);
30025  setFlag(F16);
30026  } // Inst_VOP3__V_FRACT_F16
30027 
30029  {
30030  } // ~Inst_VOP3__V_FRACT_F16
30031 
30032  // --- description from .arch file ---
30033  // D.f16 = S0.f16 + -floor(S0.f16).
30034  void
30036  {
30038  } // execute
30039  // --- Inst_VOP3__V_SIN_F16 class methods ---
30040 
30042  : Inst_VOP3A(iFmt, "v_sin_f16", false)
30043  {
30044  setFlag(ALU);
30045  setFlag(F16);
30046  } // Inst_VOP3__V_SIN_F16
30047 
30049  {
30050  } // ~Inst_VOP3__V_SIN_F16
30051 
30052  // --- description from .arch file ---
30053  // D.f16 = sin(S0.f16 * 2 * PI).
30054  void
30056  {
30058  } // execute
30059  // --- Inst_VOP3__V_COS_F16 class methods ---
30060 
30062  : Inst_VOP3A(iFmt, "v_cos_f16", false)
30063  {
30064  setFlag(ALU);
30065  setFlag(F16);
30066  } // Inst_VOP3__V_COS_F16
30067 
30069  {
30070  } // ~Inst_VOP3__V_COS_F16
30071 
30072  // --- description from .arch file ---
30073  // D.f16 = cos(S0.f16 * 2 * PI).
30074  void
30076  {
30078  } // execute
30079  // --- Inst_VOP3__V_EXP_LEGACY_F32 class methods ---
30080 
30082  : Inst_VOP3A(iFmt, "v_exp_legacy_f32", false)
30083  {
30084  setFlag(ALU);
30085  setFlag(F32);
30086  } // Inst_VOP3__V_EXP_LEGACY_F32
30087 
30089  {
30090  } // ~Inst_VOP3__V_EXP_LEGACY_F32
30091 
30092  // --- description from .arch file ---
30093  // D.f = pow(2.0, S0.f) with legacy semantics.
30094  void
30096  {
30097  Wavefront *wf = gpuDynInst->wavefront();
30098  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
30099  VecOperandF32 vdst(gpuDynInst, instData.VDST);
30100 
30101  src.readSrc();
30102 
30103  if (instData.ABS & 0x1) {
30104  src.absModifier();
30105  }
30106 
30107  if (extData.NEG & 0x1) {
30108  src.negModifier();
30109  }
30110 
30114  assert(!(instData.ABS & 0x2));
30115  assert(!(instData.ABS & 0x4));
30116  assert(!(extData.NEG & 0x2));
30117  assert(!(extData.NEG & 0x4));
30118 
30119  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30120  if (wf->execMask(lane)) {
30121  vdst[lane] = std::pow(2.0, src[lane]);
30122  }
30123  }
30124 
30125  vdst.write();
30126  } // execute
30127  // --- Inst_VOP3__V_LOG_LEGACY_F32 class methods ---
30128 
30130  : Inst_VOP3A(iFmt, "v_log_legacy_f32", false)
30131  {
30132  setFlag(ALU);
30133  setFlag(F32);
30134  } // Inst_VOP3__V_LOG_LEGACY_F32
30135 
30137  {
30138  } // ~Inst_VOP3__V_LOG_LEGACY_F32
30139 
30140  // --- description from .arch file ---
30141  // D.f = log2(S0.f). Base 2 logarithm with legacy semantics.
30142  void
30144  {
30145  Wavefront *wf = gpuDynInst->wavefront();
30146  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
30147  VecOperandF32 vdst(gpuDynInst, instData.VDST);
30148 
30149  src.readSrc();
30150 
30151  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30152  if (wf->execMask(lane)) {
30153  vdst[lane] = std::log2(src[lane]);
30154  }
30155  }
30156 
30157  vdst.write();
30158  } // execute
30159  // --- Inst_VOP3__V_MAD_LEGACY_F32 class methods ---
30160 
30162  : Inst_VOP3A(iFmt, "v_mad_legacy_f32", false)
30163  {
30164  setFlag(ALU);
30165  setFlag(F32);
30166  setFlag(MAD);
30167  } // Inst_VOP3__V_MAD_LEGACY_F32
30168 
30170  {
30171  } // ~Inst_VOP3__V_MAD_LEGACY_F32
30172 
30173  // --- description from .arch file ---
30174  // D.f = S0.f * S1.f + S2.f (DX9 rules, 0.0 * x = 0.0).
30175  void
30177  {
30178  Wavefront *wf = gpuDynInst->wavefront();
30179  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
30180  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
30181  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
30182  VecOperandF32 vdst(gpuDynInst, instData.VDST);
30183 
30184  src0.readSrc();
30185  src1.readSrc();
30186  src2.readSrc();
30187 
30188  if (instData.ABS & 0x1) {
30189  src0.absModifier();
30190  }
30191 
30192  if (instData.ABS & 0x2) {
30193  src1.absModifier();
30194  }
30195 
30196  if (instData.ABS & 0x4) {
30197  src2.absModifier();
30198  }
30199 
30200  if (extData.NEG & 0x1) {
30201  src0.negModifier();
30202  }
30203 
30204  if (extData.NEG & 0x2) {
30205  src1.negModifier();
30206  }
30207 
30208  if (extData.NEG & 0x4) {
30209  src2.negModifier();
30210  }
30211 
30212  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30213  if (wf->execMask(lane)) {
30214  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
30215  }
30216  }
30217 
30218  vdst.write();
30219  } // execute
30220  // --- Inst_VOP3__V_MAD_F32 class methods ---
30221 
30223  : Inst_VOP3A(iFmt, "v_mad_f32", false)
30224  {
30225  setFlag(ALU);
30226  setFlag(F32);
30227  setFlag(MAD);
30228  } // Inst_VOP3__V_MAD_F32
30229 
30231  {
30232  } // ~Inst_VOP3__V_MAD_F32
30233 
30234  // --- description from .arch file ---
30235  // D.f = S0.f * S1.f + S2.f.
30236  void
30238  {
30239  Wavefront *wf = gpuDynInst->wavefront();
30240  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
30241  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
30242  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
30243  VecOperandF32 vdst(gpuDynInst, instData.VDST);
30244 
30245  src0.readSrc();
30246  src1.readSrc();
30247  src2.readSrc();
30248 
30249  if (instData.ABS & 0x1) {
30250  src0.absModifier();
30251  }
30252 
30253  if (instData.ABS & 0x2) {
30254  src1.absModifier();
30255  }
30256 
30257  if (instData.ABS & 0x4) {
30258  src2.absModifier();
30259  }
30260 
30261  if (extData.NEG & 0x1) {
30262  src0.negModifier();
30263  }
30264 
30265  if (extData.NEG & 0x2) {
30266  src1.negModifier();
30267  }
30268 
30269  if (extData.NEG & 0x4) {
30270  src2.negModifier();
30271  }
30272 
30273  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30274  if (wf->execMask(lane)) {
30275  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
30276  }
30277  }
30278 
30279  vdst.write();
30280  } // execute
30281  // --- Inst_VOP3__V_MAD_I32_I24 class methods ---
30282 
30284  : Inst_VOP3A(iFmt, "v_mad_i32_i24", false)
30285  {
30286  setFlag(ALU);
30287  setFlag(MAD);
30288  } // Inst_VOP3__V_MAD_I32_I24
30289 
30291  {
30292  } // ~Inst_VOP3__V_MAD_I32_I24
30293 
30294  // --- description from .arch file ---
30295  // D.i = S0.i[23:0] * S1.i[23:0] + S2.i.
30296  void
30298  {
30299  Wavefront *wf = gpuDynInst->wavefront();
30300  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
30301  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
30302  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
30303  VecOperandI32 vdst(gpuDynInst, instData.VDST);
30304 
30305  src0.readSrc();
30306  src1.readSrc();
30307  src2.readSrc();
30308 
30312  assert(!(instData.ABS & 0x1));
30313  assert(!(instData.ABS & 0x2));
30314  assert(!(instData.ABS & 0x4));
30315  assert(!(extData.NEG & 0x1));
30316  assert(!(extData.NEG & 0x2));
30317  assert(!(extData.NEG & 0x4));
30318 
30319  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30320  if (wf->execMask(lane)) {
30321  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
30322  * sext<24>(bits(src1[lane], 23, 0)) + src2[lane];
30323  }
30324  }
30325 
30326  vdst.write();
30327  } // execute
30328  // --- Inst_VOP3__V_MAD_U32_U24 class methods ---
30329 
30331  : Inst_VOP3A(iFmt, "v_mad_u32_u24", false)
30332  {
30333  setFlag(ALU);
30334  setFlag(MAD);
30335  } // Inst_VOP3__V_MAD_U32_U24
30336 
30338  {
30339  } // ~Inst_VOP3__V_MAD_U32_U24
30340 
30341  // --- description from .arch file ---
30342  // D.u = S0.u[23:0] * S1.u[23:0] + S2.u.
30343  void
30345  {
30346  Wavefront *wf = gpuDynInst->wavefront();
30347  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30348  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30349  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
30350  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30351 
30352  src0.readSrc();
30353  src1.readSrc();
30354  src2.readSrc();
30355 
30359  assert(!(instData.ABS & 0x1));
30360  assert(!(instData.ABS & 0x2));
30361  assert(!(instData.ABS & 0x4));
30362  assert(!(extData.NEG & 0x1));
30363  assert(!(extData.NEG & 0x2));
30364  assert(!(extData.NEG & 0x4));
30365 
30366  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30367  if (wf->execMask(lane)) {
30368  vdst[lane] = bits(src0[lane], 23, 0) * bits(src1[lane], 23, 0)
30369  + src2[lane];
30370  }
30371  }
30372 
30373  vdst.write();
30374  } // execute
30375  // --- Inst_VOP3__V_CUBEID_F32 class methods ---
30376 
30378  : Inst_VOP3A(iFmt, "v_cubeid_f32", false)
30379  {
30380  setFlag(ALU);
30381  setFlag(F32);
30382  } // Inst_VOP3__V_CUBEID_F32
30383 
30385  {
30386  } // ~Inst_VOP3__V_CUBEID_F32
30387 
30388  // --- description from .arch file ---
30389  // D.f = cubemap face ID ({0.0, 1.0, ..., 5.0}). XYZ coordinate is given in
30390  // --- (S0.f, S1.f, S2.f).
30391  void
30393  {
30395  } // execute
30396  // --- Inst_VOP3__V_CUBESC_F32 class methods ---
30397 
30399  : Inst_VOP3A(iFmt, "v_cubesc_f32", false)
30400  {
30401  setFlag(ALU);
30402  setFlag(F32);
30403  } // Inst_VOP3__V_CUBESC_F32
30404 
30406  {
30407  } // ~Inst_VOP3__V_CUBESC_F32
30408 
30409  // --- description from .arch file ---
30410  // D.f = cubemap S coordinate. XYZ coordinate is given in (S0.f, S1.f,
30411  // S2.f).
30412  void
30414  {
30416  } // execute
30417  // --- Inst_VOP3__V_CUBETC_F32 class methods ---
30418 
30420  : Inst_VOP3A(iFmt, "v_cubetc_f32", false)
30421  {
30422  setFlag(ALU);
30423  setFlag(F32);
30424  } // Inst_VOP3__V_CUBETC_F32
30425 
30427  {
30428  } // ~Inst_VOP3__V_CUBETC_F32
30429 
30430  // --- description from .arch file ---
30431  // D.f = cubemap T coordinate. XYZ coordinate is given in (S0.f, S1.f,
30432  // S2.f).
30433  void
30435  {
30437  } // execute
30438  // --- Inst_VOP3__V_CUBEMA_F32 class methods ---
30439 
30441  : Inst_VOP3A(iFmt, "v_cubema_f32", false)
30442  {
30443  setFlag(ALU);
30444  setFlag(F32);
30445  } // Inst_VOP3__V_CUBEMA_F32
30446 
30448  {
30449  } // ~Inst_VOP3__V_CUBEMA_F32
30450 
30451  // --- description from .arch file ---
30452  // D.f = 2.0 * cubemap major axis. XYZ coordinate is given in (S0.f, S1.f,
30453  // --- S2.f).
30454  void
30456  {
30458  } // execute
30459  // --- Inst_VOP3__V_BFE_U32 class methods ---
30460 
30462  : Inst_VOP3A(iFmt, "v_bfe_u32", false)
30463  {
30464  setFlag(ALU);
30465  } // Inst_VOP3__V_BFE_U32
30466 
30468  {
30469  } // ~Inst_VOP3__V_BFE_U32
30470 
30471  // --- description from .arch file ---
30472  // D.u = (S0.u>>S1.u[4:0]) & ((1<<S2.u[4:0])-1).
30473  // Bitfield extract with S0 = data, S1 = field_offset, S2 = field_width.
30474  void
30476  {
30477  Wavefront *wf = gpuDynInst->wavefront();
30478  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30479  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30480  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
30481  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30482 
30483  src0.readSrc();
30484  src1.readSrc();
30485  src2.readSrc();
30486 
30490  assert(!(instData.ABS & 0x1));
30491  assert(!(instData.ABS & 0x2));
30492  assert(!(instData.ABS & 0x4));
30493  assert(!(extData.NEG & 0x1));
30494  assert(!(extData.NEG & 0x2));
30495  assert(!(extData.NEG & 0x4));
30496 
30497  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30498  if (wf->execMask(lane)) {
30499  vdst[lane] = (src0[lane] >> bits(src1[lane], 4, 0))
30500  & ((1 << bits(src2[lane], 4, 0)) - 1);
30501  }
30502  }
30503 
30504  vdst.write();
30505  } // execute
30506  // --- Inst_VOP3__V_BFE_I32 class methods ---
30507 
30509  : Inst_VOP3A(iFmt, "v_bfe_i32", false)
30510  {
30511  setFlag(ALU);
30512  } // Inst_VOP3__V_BFE_I32
30513 
30515  {
30516  } // ~Inst_VOP3__V_BFE_I32
30517 
30518  // --- description from .arch file ---
30519  // D.i = (S0.i>>S1.u[4:0]) & ((1<<S2.u[4:0])-1).
30520  // Bitfield extract with S0 = data, S1 = field_offset, S2 = field_width.
30521  void
30523  {
30524  Wavefront *wf = gpuDynInst->wavefront();
30525  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
30526  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30527  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
30528  VecOperandI32 vdst(gpuDynInst, instData.VDST);
30529 
30530  src0.readSrc();
30531  src1.readSrc();
30532  src2.readSrc();
30533 
30537  assert(!(instData.ABS & 0x1));
30538  assert(!(instData.ABS & 0x2));
30539  assert(!(instData.ABS & 0x4));
30540  assert(!(extData.NEG & 0x1));
30541  assert(!(extData.NEG & 0x2));
30542  assert(!(extData.NEG & 0x4));
30543 
30544  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30545  if (wf->execMask(lane)) {
30546  vdst[lane] = (src0[lane] >> bits(src1[lane], 4, 0))
30547  & ((1 << bits(src2[lane], 4, 0)) - 1);
30548 
30549  // Above extracted a signed int of size src2 bits which needs
30550  // to be signed-extended. Check if the MSB of our src2-bit
30551  // integer is 1, and sign extend it is.
30552  if (vdst[lane] >> (bits(src2[lane], 4, 0) - 1)) {
30553  vdst[lane] |= 0xffffffff << bits(src2[lane], 4, 0);
30554  }
30555  }
30556  }
30557 
30558  vdst.write();
30559  } // execute
30560  // --- Inst_VOP3__V_BFI_B32 class methods ---
30561 
30563  : Inst_VOP3A(iFmt, "v_bfi_b32", false)
30564  {
30565  setFlag(ALU);
30566  } // Inst_VOP3__V_BFI_B32
30567 
30569  {
30570  } // ~Inst_VOP3__V_BFI_B32
30571 
30572  // --- description from .arch file ---
30573  // D.u = (S0.u & S1.u) | (~S0.u & S2.u); bitfield insert.
30574  void
30576  {
30577  Wavefront *wf = gpuDynInst->wavefront();
30578  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30579  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30580  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
30581  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30582 
30583  src0.readSrc();
30584  src1.readSrc();
30585  src2.readSrc();
30586 
30590  assert(!(instData.ABS & 0x1));
30591  assert(!(instData.ABS & 0x2));
30592  assert(!(instData.ABS & 0x4));
30593  assert(!(extData.NEG & 0x1));
30594  assert(!(extData.NEG & 0x2));
30595  assert(!(extData.NEG & 0x4));
30596 
30597  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30598  if (wf->execMask(lane)) {
30599  vdst[lane] = (src0[lane] & src1[lane]) | (~src0[lane]
30600  & src2[lane]);
30601  }
30602  }
30603 
30604  vdst.write();
30605  } // execute
30606  // --- Inst_VOP3__V_FMA_F32 class methods ---
30607 
30609  : Inst_VOP3A(iFmt, "v_fma_f32", false)
30610  {
30611  setFlag(ALU);
30612  setFlag(F32);
30613  setFlag(FMA);
30614  } // Inst_VOP3__V_FMA_F32
30615 
30617  {
30618  } // ~Inst_VOP3__V_FMA_F32
30619 
30620  // --- description from .arch file ---
30621  // D.f = S0.f * S1.f + S2.f.
30622  void
30624  {
30625  Wavefront *wf = gpuDynInst->wavefront();
30626  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
30627  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
30628  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
30629  VecOperandF32 vdst(gpuDynInst, instData.VDST);
30630 
30631  src0.readSrc();
30632  src1.readSrc();
30633  src2.readSrc();
30634 
30635  if (instData.ABS & 0x1) {
30636  src0.absModifier();
30637  }
30638 
30639  if (instData.ABS & 0x2) {
30640  src1.absModifier();
30641  }
30642 
30643  if (instData.ABS & 0x4) {
30644  src2.absModifier();
30645  }
30646 
30647  if (extData.NEG & 0x1) {
30648  src0.negModifier();
30649  }
30650 
30651  if (extData.NEG & 0x2) {
30652  src1.negModifier();
30653  }
30654 
30655  if (extData.NEG & 0x4) {
30656  src2.negModifier();
30657  }
30658 
30659  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30660  if (wf->execMask(lane)) {
30661  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
30662  }
30663  }
30664 
30665  vdst.write();
30666  } // execute
30667  // --- Inst_VOP3__V_FMA_F64 class methods ---
30668 
30670  : Inst_VOP3A(iFmt, "v_fma_f64", false)
30671  {
30672  setFlag(ALU);
30673  setFlag(F64);
30674  setFlag(FMA);
30675  } // Inst_VOP3__V_FMA_F64
30676 
30678  {
30679  } // ~Inst_VOP3__V_FMA_F64
30680 
30681  // --- description from .arch file ---
30682  // D.d = S0.d * S1.d + S2.d.
30683  void
30685  {
30686  Wavefront *wf = gpuDynInst->wavefront();
30687  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30688  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
30689  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
30690  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30691 
30692  src0.readSrc();
30693  src1.readSrc();
30694  src2.readSrc();
30695 
30696  if (instData.ABS & 0x1) {
30697  src0.absModifier();
30698  }
30699 
30700  if (instData.ABS & 0x2) {
30701  src1.absModifier();
30702  }
30703 
30704  if (instData.ABS & 0x4) {
30705  src2.absModifier();
30706  }
30707 
30708  if (extData.NEG & 0x1) {
30709  src0.negModifier();
30710  }
30711 
30712  if (extData.NEG & 0x2) {
30713  src1.negModifier();
30714  }
30715 
30716  if (extData.NEG & 0x4) {
30717  src2.negModifier();
30718  }
30719 
30720  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30721  if (wf->execMask(lane)) {
30722  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
30723  }
30724  }
30725 
30726  vdst.write();
30727  } // execute
30728  // --- Inst_VOP3__V_LERP_U8 class methods ---
30729 
30731  : Inst_VOP3A(iFmt, "v_lerp_u8", false)
30732  {
30733  setFlag(ALU);
30734  } // Inst_VOP3__V_LERP_U8
30735 
30737  {
30738  } // ~Inst_VOP3__V_LERP_U8
30739 
30740  // --- description from .arch file ---
30741  // D.u = ((S0.u[31:24] + S1.u[31:24] + S2.u[24]) >> 1) << 24
30742  // D.u += ((S0.u[23:16] + S1.u[23:16] + S2.u[16]) >> 1) << 16;
30743  // D.u += ((S0.u[15:8] + S1.u[15:8] + S2.u[8]) >> 1) << 8;
30744  // D.u += ((S0.u[7:0] + S1.u[7:0] + S2.u[0]) >> 1).
30745  // Unsigned 8-bit pixel average on packed unsigned bytes (linear
30746  // --- interpolation). S2 acts as a round mode; if set, 0.5 rounds up,
30747  // --- otherwise 0.5 truncates.
30748  void
30750  {
30751  Wavefront *wf = gpuDynInst->wavefront();
30752  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30753  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30754  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
30755  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30756 
30757  src0.readSrc();
30758  src1.readSrc();
30759  src2.readSrc();
30760 
30764  assert(!(instData.ABS & 0x1));
30765  assert(!(instData.ABS & 0x2));
30766  assert(!(instData.ABS & 0x4));
30767  assert(!(extData.NEG & 0x1));
30768  assert(!(extData.NEG & 0x2));
30769  assert(!(extData.NEG & 0x4));
30770 
30771  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30772  if (wf->execMask(lane)) {
30773  vdst[lane] = ((bits(src0[lane], 31, 24)
30774  + bits(src1[lane], 31, 24) + bits(src2[lane], 24)) >> 1)
30775  << 24;
30776  vdst[lane] += ((bits(src0[lane], 23, 16)
30777  + bits(src1[lane], 23, 16) + bits(src2[lane], 16)) >> 1)
30778  << 16;
30779  vdst[lane] += ((bits(src0[lane], 15, 8)
30780  + bits(src1[lane], 15, 8) + bits(src2[lane], 8)) >> 1)
30781  << 8;
30782  vdst[lane] += ((bits(src0[lane], 7, 0) + bits(src1[lane], 7, 0)
30783  + bits(src2[lane], 0)) >> 1);
30784  }
30785  }
30786 
30787  vdst.write();
30788  } // execute
30789  // --- Inst_VOP3__V_ALIGNBIT_B32 class methods ---
30790 
30792  : Inst_VOP3A(iFmt, "v_alignbit_b32", false)
30793  {
30794  setFlag(ALU);
30795  } // Inst_VOP3__V_ALIGNBIT_B32
30796 
30798  {
30799  } // ~Inst_VOP3__V_ALIGNBIT_B32
30800 
30801  // --- description from .arch file ---
30802  // D.u = ({S0,S1} >> S2.u[4:0]) & 0xffffffff.
30803  void
30805  {
30806  Wavefront *wf = gpuDynInst->wavefront();
30807  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30808  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30809  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
30810  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30811 
30812  src0.readSrc();
30813  src1.readSrc();
30814  src2.readSrc();
30815 
30819  assert(!(instData.ABS & 0x1));
30820  assert(!(instData.ABS & 0x2));
30821  assert(!(instData.ABS & 0x4));
30822  assert(!(extData.NEG & 0x1));
30823  assert(!(extData.NEG & 0x2));
30824  assert(!(extData.NEG & 0x4));
30825 
30826  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30827  if (wf->execMask(lane)) {
30828  VecElemU64 src_0_1 = (((VecElemU64)src0[lane] << 32)
30829  | (VecElemU64)src1[lane]);
30830  vdst[lane] = (VecElemU32)((src_0_1
30831  >> (VecElemU64)bits(src2[lane], 4, 0)) & 0xffffffff);
30832  }
30833  }
30834 
30835  vdst.write();
30836  } // execute
30837  // --- Inst_VOP3__V_ALIGNBYTE_B32 class methods ---
30838 
30840  : Inst_VOP3A(iFmt, "v_alignbyte_b32", false)
30841  {
30842  setFlag(ALU);
30843  } // Inst_VOP3__V_ALIGNBYTE_B32
30844 
30846  {
30847  } // ~Inst_VOP3__V_ALIGNBYTE_B32
30848 
30849  // --- description from .arch file ---
30850  // D.u = ({S0,S1} >> (8*S2.u[4:0])) & 0xffffffff.
30851  void
30853  {
30854  Wavefront *wf = gpuDynInst->wavefront();
30855  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30856  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30857  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
30858  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30859 
30860  src0.readSrc();
30861  src1.readSrc();
30862  src2.readSrc();
30863 
30867  assert(!(instData.ABS & 0x1));
30868  assert(!(instData.ABS & 0x2));
30869  assert(!(instData.ABS & 0x4));
30870  assert(!(extData.NEG & 0x1));
30871  assert(!(extData.NEG & 0x2));
30872  assert(!(extData.NEG & 0x4));
30873 
30874  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30875  if (wf->execMask(lane)) {
30876  VecElemU64 src_0_1 = (((VecElemU64)src0[lane] << 32)
30877  | (VecElemU64)src1[lane]);
30878  vdst[lane] = (VecElemU32)((src_0_1
30879  >> (8ULL * (VecElemU64)bits(src2[lane], 4, 0)))
30880  & 0xffffffff);
30881  }
30882  }
30883 
30884  vdst.write();
30885  } // execute
30886  // --- Inst_VOP3__V_MIN3_F32 class methods ---
30887 
30889  : Inst_VOP3A(iFmt, "v_min3_f32", false)
30890  {
30891  setFlag(ALU);
30892  setFlag(F32);
30893  } // Inst_VOP3__V_MIN3_F32
30894 
30896  {
30897  } // ~Inst_VOP3__V_MIN3_F32
30898 
30899  // --- description from .arch file ---
30900  // D.f = min(S0.f, S1.f, S2.f).
30901  void
30903  {
30904  Wavefront *wf = gpuDynInst->wavefront();
30905  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
30906  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
30907  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
30908  VecOperandF32 vdst(gpuDynInst, instData.VDST);
30909 
30910  src0.readSrc();
30911  src1.readSrc();
30912  src2.readSrc();
30913 
30914  if (instData.ABS & 0x1) {
30915  src0.absModifier();
30916  }
30917 
30918  if (instData.ABS & 0x2) {
30919  src1.absModifier();
30920  }
30921 
30922  if (instData.ABS & 0x4) {
30923  src2.absModifier();
30924  }
30925 
30926  if (extData.NEG & 0x1) {
30927  src0.negModifier();
30928  }
30929 
30930  if (extData.NEG & 0x2) {
30931  src1.negModifier();
30932  }
30933 
30934  if (extData.NEG & 0x4) {
30935  src2.negModifier();
30936  }
30937 
30938  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30939  if (wf->execMask(lane)) {
30940  VecElemF32 min_0_1 = std::fmin(src0[lane], src1[lane]);
30941  vdst[lane] = std::fmin(min_0_1, src2[lane]);
30942  }
30943  }
30944 
30945  vdst.write();
30946  } // execute
30947  // --- Inst_VOP3__V_MIN3_I32 class methods ---
30948 
30950  : Inst_VOP3A(iFmt, "v_min3_i32", false)
30951  {
30952  setFlag(ALU);
30953  } // Inst_VOP3__V_MIN3_I32
30954 
30956  {
30957  } // ~Inst_VOP3__V_MIN3_I32
30958 
30959  // --- description from .arch file ---
30960  // D.i = min(S0.i, S1.i, S2.i).
30961  void
30963  {
30964  Wavefront *wf = gpuDynInst->wavefront();
30965  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
30966  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
30967  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
30968  VecOperandI32 vdst(gpuDynInst, instData.VDST);
30969 
30970  src0.readSrc();
30971  src1.readSrc();
30972  src2.readSrc();
30973 
30977  assert(!(instData.ABS & 0x1));
30978  assert(!(instData.ABS & 0x2));
30979  assert(!(instData.ABS & 0x4));
30980  assert(!(extData.NEG & 0x1));
30981  assert(!(extData.NEG & 0x2));
30982  assert(!(extData.NEG & 0x4));
30983 
30984  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30985  if (wf->execMask(lane)) {
30986  VecElemI32 min_0_1 = std::min(src0[lane], src1[lane]);
30987  vdst[lane] = std::min(min_0_1, src2[lane]);
30988  }
30989  }
30990 
30991  vdst.write();
30992  } // execute
30993  // --- Inst_VOP3__V_MIN3_U32 class methods ---
30994 
30996  : Inst_VOP3A(iFmt, "v_min3_u32", false)
30997  {
30998  setFlag(ALU);
30999  } // Inst_VOP3__V_MIN3_U32
31000 
31002  {
31003  } // ~Inst_VOP3__V_MIN3_U32
31004 
31005  // --- description from .arch file ---
31006  // D.u = min(S0.u, S1.u, S2.u).
31007  void
31009  {
31010  Wavefront *wf = gpuDynInst->wavefront();
31011  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
31012  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
31013  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
31014  VecOperandU32 vdst(gpuDynInst, instData.VDST);
31015 
31016  src0.readSrc();
31017  src1.readSrc();
31018  src2.readSrc();
31019 
31023  assert(!(instData.ABS & 0x1));
31024  assert(!(instData.ABS & 0x2));
31025  assert(!(instData.ABS & 0x4));
31026  assert(!(extData.NEG & 0x1));
31027  assert(!(extData.NEG & 0x2));
31028  assert(!(extData.NEG & 0x4));
31029 
31030  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31031  if (wf->execMask(lane)) {
31032  VecElemU32 min_0_1 = std::min(src0[lane], src1[lane]);
31033  vdst[lane] = std::min(min_0_1, src2[lane]);
31034  }
31035  }
31036 
31037  vdst.write();
31038  } // execute
31039  // --- Inst_VOP3__V_MAX3_F32 class methods ---
31040 
31042  : Inst_VOP3A(iFmt, "v_max3_f32", false)
31043  {
31044  setFlag(ALU);
31045  setFlag(F32);
31046  } // Inst_VOP3__V_MAX3_F32
31047 
31049  {
31050  } // ~Inst_VOP3__V_MAX3_F32
31051 
31052  // --- description from .arch file ---
31053  // D.f = max(S0.f, S1.f, S2.f).
31054  void
31056  {
31057  Wavefront *wf = gpuDynInst->wavefront();
31058  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
31059  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
31060  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
31061  VecOperandF32 vdst(gpuDynInst, instData.VDST);
31062 
31063  src0.readSrc();
31064  src1.readSrc();
31065  src2.readSrc();
31066 
31067  if (instData.ABS & 0x1) {
31068  src0.absModifier();
31069  }
31070 
31071  if (instData.ABS & 0x2) {
31072  src1.absModifier();
31073  }
31074 
31075  if (instData.ABS & 0x4) {
31076  src2.absModifier();
31077  }
31078 
31079  if (extData.NEG & 0x1) {
31080  src0.negModifier();
31081  }
31082 
31083  if (extData.NEG & 0x2) {
31084  src1.negModifier();
31085  }
31086 
31087  if (extData.NEG & 0x4) {
31088  src2.negModifier();
31089  }
31090 
31091  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31092  if (wf->execMask(lane)) {
31093  VecElemF32 max_0_1 = std::fmax(src0[lane], src1[lane]);
31094  vdst[lane] = std::fmax(max_0_1, src2[lane]);
31095  }
31096  }
31097 
31098  vdst.write();
31099  } // execute
31100  // --- Inst_VOP3__V_MAX3_I32 class methods ---
31101 
31103  : Inst_VOP3A(iFmt, "v_max3_i32", false)
31104  {
31105  setFlag(ALU);
31106  } // Inst_VOP3__V_MAX3_I32
31107 
31109  {
31110  } // ~Inst_VOP3__V_MAX3_I32
31111 
31112  // --- description from .arch file ---
31113  // D.i = max(S0.i, S1.i, S2.i).
31114  void
31116  {
31117  Wavefront *wf = gpuDynInst->wavefront();
31118  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
31119  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
31120  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
31121  VecOperandI32 vdst(gpuDynInst, instData.VDST);
31122 
31123  src0.readSrc();
31124  src1.readSrc();
31125  src2.readSrc();
31126 
31130  assert(!(instData.ABS & 0x1));
31131  assert(!(instData.ABS & 0x2));
31132  assert(!(instData.ABS & 0x4));
31133  assert(!(extData.NEG & 0x1));
31134  assert(!(extData.NEG & 0x2));
31135  assert(!(extData.NEG & 0x4));
31136 
31137  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31138  if (wf->execMask(lane)) {
31139  VecElemI32 max_0_1 = std::max(src0[lane], src1[lane]);
31140  vdst[lane] = std::max(max_0_1, src2[lane]);
31141  }
31142  }
31143 
31144  vdst.write();
31145  } // execute
31146  // --- Inst_VOP3__V_MAX3_U32 class methods ---
31147 
31149  : Inst_VOP3A(iFmt, "v_max3_u32", false)
31150  {
31151  setFlag(ALU);
31152  } // Inst_VOP3__V_MAX3_U32
31153 
31155  {
31156  } // ~Inst_VOP3__V_MAX3_U32
31157 
31158  // --- description from .arch file ---
31159  // D.u = max(S0.u, S1.u, S2.u).
31160  void
31162  {
31163  Wavefront *wf = gpuDynInst->wavefront();
31164  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
31165  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
31166  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
31167  VecOperandU32 vdst(gpuDynInst, instData.VDST);
31168 
31169  src0.readSrc();
31170  src1.readSrc();
31171  src2.readSrc();
31172 
31176  assert(!(instData.ABS & 0x1));
31177  assert(!(instData.ABS & 0x2));
31178  assert(!(instData.ABS & 0x4));
31179  assert(!(extData.NEG & 0x1));
31180  assert(!(extData.NEG & 0x2));
31181  assert(!(extData.NEG & 0x4));
31182 
31183  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31184  if (wf->execMask(lane)) {
31185  VecElemU32 max_0_1 = std::max(src0[lane], src1[lane]);
31186  vdst[lane] = std::max(max_0_1, src2[lane]);
31187  }
31188  }
31189 
31190  vdst.write();
31191  } // execute
31192  // --- Inst_VOP3__V_MED3_F32 class methods ---
31193 
31195  : Inst_VOP3A(iFmt, "v_med3_f32", false)
31196  {
31197  setFlag(ALU);
31198  setFlag(F32);
31199  } // Inst_VOP3__V_MED3_F32
31200 
31202  {
31203  } // ~Inst_VOP3__V_MED3_F32
31204 
31205  // --- description from .arch file ---
31206  // D.f = median(S0.f, S1.f, S2.f).
31207  void
31209  {
31210  Wavefront *wf = gpuDynInst->wavefront();
31211  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
31212  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
31213  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
31214  VecOperandF32 vdst(gpuDynInst, instData.VDST);
31215 
31216  src0.readSrc();
31217  src1.readSrc();
31218  src2.readSrc();
31219 
31220  if (instData.ABS & 0x1) {
31221  src0.absModifier();
31222  }
31223 
31224  if (instData.ABS & 0x2) {
31225  src1.absModifier();
31226  }
31227 
31228  if (instData.ABS & 0x4) {
31229  src2.absModifier();
31230  }
31231 
31232  if (extData.NEG & 0x1) {
31233  src0.negModifier();
31234  }
31235 
31236  if (extData.NEG & 0x2) {
31237  src1.negModifier();
31238  }
31239 
31240  if (extData.NEG & 0x4) {
31241  src2.negModifier();
31242  }
31243 
31244  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31245  if (wf->execMask(lane)) {
31246  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
31247  }
31248  }
31249 
31250  vdst.write();
31251  } // execute
31252  // --- Inst_VOP3__V_MED3_I32 class methods ---
31253 
31255  : Inst_VOP3A(iFmt, "v_med3_i32", false)
31256  {
31257  setFlag(ALU);
31258  } // Inst_VOP3__V_MED3_I32
31259 
31261  {
31262  } // ~Inst_VOP3__V_MED3_I32
31263 
31264  // --- description from .arch file ---
31265  // D.i = median(S0.i, S1.i, S2.i).
31266  void
31268  {
31269  Wavefront *wf = gpuDynInst->wavefront();
31270  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
31271  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
31272  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
31273  VecOperandI32 vdst(gpuDynInst, instData.VDST);
31274 
31275  src0.readSrc();
31276  src1.readSrc();
31277  src2.readSrc();
31278 
31282  assert(!(instData.ABS & 0x1));
31283  assert(!(instData.ABS & 0x2));
31284  assert(!(instData.ABS & 0x4));
31285  assert(!(extData.NEG & 0x1));
31286  assert(!(extData.NEG & 0x2));
31287  assert(!(extData.NEG & 0x4));
31288 
31289  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31290  if (wf->execMask(lane)) {
31291  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
31292  }
31293  }
31294 
31295  vdst.write();
31296  } // execute
31297  // --- Inst_VOP3__V_MED3_U32 class methods ---
31298 
31300  : Inst_VOP3A(iFmt, "v_med3_u32", false)
31301  {
31302  setFlag(ALU);
31303  } // Inst_VOP3__V_MED3_U32
31304 
31306  {
31307  } // ~Inst_VOP3__V_MED3_U32
31308 
31309  // --- description from .arch file ---
31310  // D.u = median(S0.u, S1.u, S2.u).
31311  void
31313  {
31314  Wavefront *wf = gpuDynInst->wavefront();
31315  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
31316  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
31317  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
31318  VecOperandU32 vdst(gpuDynInst, instData.VDST);
31319 
31320  src0.readSrc();
31321  src1.readSrc();
31322  src2.readSrc();
31323 
31327  assert(!(instData.ABS & 0x1));
31328  assert(!(instData.ABS & 0x2));
31329  assert(!(instData.ABS & 0x4));
31330  assert(!(extData.NEG & 0x1));
31331  assert(!(extData.NEG & 0x2));
31332  assert(!(extData.NEG & 0x4));
31333 
31334  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31335  if (wf->execMask(lane)) {
31336  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
31337  }
31338  }
31339 
31340  vdst.write();
31341  } // execute
31342  // --- Inst_VOP3__V_SAD_U8 class methods ---
31343 
31345  : Inst_VOP3A(iFmt, "v_sad_u8", false)
31346  {
31347  setFlag(ALU);
31348  } // Inst_VOP3__V_SAD_U8
31349 
31351  {
31352  } // ~Inst_VOP3__V_SAD_U8
31353 
31354  // --- description from .arch file ---
31355  // D.u = abs(S0.i[31:24] - S1.i[31:24]) + abs(S0.i[23:16] - S1.i[23:16]) +
31356  // abs(S0.i[15:8] - S1.i[15:8]) + abs(S0.i[7:0] - S1.i[7:0]) + S2.u.
31357  // Sum of absolute differences with accumulation, overflow into upper bits
31358  // is allowed.
31359  void
31361  {
31362  Wavefront *wf = gpuDynInst->wavefront();
31363  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
31364  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
31365  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
31366  VecOperandU32 vdst(gpuDynInst, instData.VDST);
31367 
31368  src0.readSrc();
31369  src1.readSrc();
31370  src2.readSrc();
31371 
31375  assert(!(instData.ABS & 0x1));
31376  assert(!(instData.ABS & 0x2));
31377  assert(!(instData.ABS & 0x4));
31378  assert(!(extData.NEG & 0x1));
31379  assert(!(extData.NEG & 0x2));
31380  assert(!(extData.NEG & 0x4));
31381 
31382  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31383  if (wf->execMask(lane)) {
31384  vdst[lane] = std::abs(bits(src0[lane], 31, 24)
31385  - bits(src1[lane], 31, 24))
31386  + std::abs(bits(src0[lane], 23, 16)
31387  - bits(src1[lane], 23, 16))
31388  + std::abs(bits(src0[lane], 15, 8)
31389  - bits(src1[lane], 15, 8))
31390  + std::abs(bits(src0[lane], 7, 0)
31391  - bits(src1[lane], 7, 0)) + src2[lane];
31392  }
31393  }
31394 
31395  vdst.write();
31396  } // execute
31397  // --- Inst_VOP3__V_SAD_HI_U8 class methods ---
31398 
31400  : Inst_VOP3A(iFmt, "v_sad_hi_u8", false)
31401  {
31402  setFlag(ALU);
31403  } // Inst_VOP3__V_SAD_HI_U8
31404 
31406  {
31407  } // ~Inst_VOP3__V_SAD_HI_U8
31408 
31409  // --- description from .arch file ---
31410  // D.u = (SAD_U8(S0, S1, 0) << 16) + S2.u.
31411  // Sum of absolute differences with accumulation, overflow is lost.
31412  void
31414  {
31415  Wavefront *wf = gpuDynInst->wavefront();
31416  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
31417  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
31418  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
31419  VecOperandU32 vdst(gpuDynInst, instData.VDST);
31420 
31421  src0.readSrc();
31422  src1.readSrc();
31423  src2.readSrc();
31424 
31428  assert(!(instData.ABS & 0x1));
31429  assert(!(instData.ABS & 0x2));
31430  assert(!(instData.ABS & 0x4));
31431  assert(!(extData.NEG & 0x1));
31432  assert(!(extData.NEG & 0x2));
31433  assert(!(extData.NEG & 0x4));
31434 
31435  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31436  if (wf->execMask(lane)) {
31437  vdst[lane] = (((bits(src0[lane], 31, 24)
31438  - bits(src1[lane], 31, 24)) + (bits(src0[lane], 23, 16)
31439  - bits(src1[lane], 23, 16)) + (bits(src0[lane], 15, 8)
31440  - bits(src1[lane], 15, 8)) + (bits(src0[lane], 7, 0)
31441  - bits(src1[lane], 7, 0))) << 16) + src2[lane];
31442  }
31443  }
31444 
31445  vdst.write();
31446  } // execute
31447  // --- Inst_VOP3__V_SAD_U16 class methods ---
31448 
31450  : Inst_VOP3A(iFmt, "v_sad_u16", false)
31451  {
31452  setFlag(ALU);
31453  } // Inst_VOP3__V_SAD_U16
31454 
31456  {
31457  } // ~Inst_VOP3__V_SAD_U16
31458 
31459  // --- description from .arch file ---
31460  // D.u = abs(S0.i[31:16] - S1.i[31:16]) + abs(S0.i[15:0] - S1.i[15:0])
31461  // + S2.u.
31462  // Word SAD with accumulation.
31463  void
31465  {
31466  Wavefront *wf = gpuDynInst->wavefront();
31467  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
31468  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
31469  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
31470  VecOperandU32 vdst(gpuDynInst, instData.VDST);
31471 
31472  src0.readSrc();
31473  src1.readSrc();
31474  src2.readSrc();
31475 
31479  assert(!(instData.ABS & 0x1));
31480  assert(!(instData.ABS & 0x2));
31481  assert(!(instData.ABS & 0x4));
31482  assert(!(extData.NEG & 0x1));
31483  assert(!(extData.NEG & 0x2));
31484  assert(!(extData.NEG & 0x4));
31485 
31486  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31487  if (wf->execMask(lane)) {
31488  vdst[lane] = std::abs(bits(src0[lane], 31, 16)
31489  - bits(src1[lane], 31, 16))
31490  + std::abs(bits(src0[lane], 15, 0)
31491  - bits(src1[lane], 15, 0)) + src2[lane];
31492  }
31493  }
31494 
31495  vdst.write();
31496  } // execute
31497  // --- Inst_VOP3__V_SAD_U32 class methods ---
31498 
31500  : Inst_VOP3A(iFmt, "v_sad_u32", false)
31501  {
31502  setFlag(ALU);
31503  } // Inst_VOP3__V_SAD_U32
31504 
31506  {
31507  } // ~Inst_VOP3__V_SAD_U32
31508 
31509  // --- description from .arch file ---
31510  // D.u = abs(S0.i - S1.i) + S2.u.
31511  // Dword SAD with accumulation.
31512  void
31514  {
31515  Wavefront *wf = gpuDynInst->wavefront();
31516  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
31517  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
31518  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
31519  VecOperandU32 vdst(gpuDynInst, instData.VDST);
31520 
31521  src0.readSrc();
31522  src1.readSrc();
31523  src2.readSrc();
31524 
31528  assert(!(instData.ABS & 0x1));
31529  assert(!(instData.ABS & 0x2));
31530  assert(!(instData.ABS & 0x4));
31531  assert(!(extData.NEG & 0x1));
31532  assert(!(extData.NEG & 0x2));
31533  assert(!(extData.NEG & 0x4));
31534 
31535  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31536  if (wf->execMask(lane)) {
31537  vdst[lane] = std::abs(src0[lane] - src1[lane]) + src2[lane];
31538  } // if
31539  } // for
31540 
31541  vdst.write();
31542  } // execute
31543  // --- Inst_VOP3__V_CVT_PK_U8_F32 class methods ---
31544 
31546  : Inst_VOP3A(iFmt, "v_cvt_pk_u8_f32", false)
31547  {
31548  setFlag(ALU);
31549  setFlag(F32);
31550  } // Inst_VOP3__V_CVT_PK_U8_F32
31551 
31553  {
31554  } // ~Inst_VOP3__V_CVT_PK_U8_F32
31555 
31556  // --- description from .arch file ---
31557  // D.u = ((flt32_to_uint8(S0.f) & 0xff) << (8 * S1.u[1:0]))
31558  // | (S2.u & ~(0xff << (8 * S1.u[1:0]))).
31559  // Convert floating point value S0 to 8-bit unsigned integer and pack the
31560  // result into byte S1 of dword S2.
31561  void
31563  {
31564  Wavefront *wf = gpuDynInst->wavefront();
31565  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
31566  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
31567  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
31568  VecOperandU32 vdst(gpuDynInst, instData.VDST);
31569 
31570  src0.readSrc();
31571  src1.readSrc();
31572  src2.readSrc();
31573 
31574  if (instData.ABS & 0x1) {
31575  src0.absModifier();
31576  }
31577 
31578 
31579  if (extData.NEG & 0x1) {
31580  src0.negModifier();
31581  }
31582 
31586  assert(!(instData.ABS & 0x2));
31587  assert(!(instData.ABS & 0x4));
31588  assert(!(extData.NEG & 0x2));
31589  assert(!(extData.NEG & 0x4));
31590 
31591  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31592  if (wf->execMask(lane)) {
31593  vdst[lane] = (((VecElemU8)src0[lane] & 0xff)
31594  << (8 * bits(src1[lane], 1, 0)))
31595  | (src2[lane] & ~(0xff << (8 * bits(src1[lane], 1, 0))));
31596  }
31597  }
31598 
31599  vdst.write();
31600  } // execute
31601  // --- Inst_VOP3__V_DIV_FIXUP_F32 class methods ---
31602 
31604  : Inst_VOP3A(iFmt, "v_div_fixup_f32", false)
31605  {
31606  setFlag(ALU);
31607  setFlag(F32);
31608  } // Inst_VOP3__V_DIV_FIXUP_F32
31609 
31611  {
31612  } // ~Inst_VOP3__V_DIV_FIXUP_F32
31613 
31614  // --- description from .arch file ---
31615  // D.f = Divide fixup and flags -- s0.f = Quotient, s1.f = Denominator,
31616  // s2.f = Numerator. This opcode generates exceptions resulting from the
31617  // division operation.
31618  void
31620  {
31621  Wavefront *wf = gpuDynInst->wavefront();
31622  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
31623  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
31624  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
31625  VecOperandF32 vdst(gpuDynInst, instData.VDST);
31626 
31627  src0.readSrc();
31628  src1.readSrc();
31629  src2.readSrc();
31630 
31631  if (instData.ABS & 0x1) {
31632  src0.absModifier();
31633  }
31634 
31635  if (instData.ABS & 0x2) {
31636  src1.absModifier();
31637  }
31638 
31639  if (instData.ABS & 0x4) {
31640  src2.absModifier();
31641  }
31642 
31643  if (extData.NEG & 0x1) {
31644  src0.negModifier();
31645  }
31646 
31647  if (extData.NEG & 0x2) {
31648  src1.negModifier();
31649  }
31650 
31651  if (extData.NEG & 0x4) {
31652  src2.negModifier();
31653  }
31654 
31655  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31656  if (wf->execMask(lane)) {
31657  if (std::fpclassify(src1[lane]) == FP_ZERO) {
31658  if (std::signbit(src1[lane])) {
31659  vdst[lane] = -INFINITY;
31660  } else {
31661  vdst[lane] = +INFINITY;
31662  }
31663  } else if (std::isnan(src2[lane]) || std::isnan(src1[lane])) {
31664  vdst[lane] = NAN;
31665  } else if (std::isinf(src1[lane])) {
31666  if (std::signbit(src1[lane])) {
31667  vdst[lane] = -INFINITY;
31668  } else {
31669  vdst[lane] = +INFINITY;
31670  }
31671  } else {
31672  vdst[lane] = src2[lane] / src1[lane];
31673  }
31674  }
31675  }
31676 
31677  vdst.write();
31678  } // execute
31679  // --- Inst_VOP3__V_DIV_FIXUP_F64 class methods ---
31680 
31682  : Inst_VOP3A(iFmt, "v_div_fixup_f64", false)
31683  {
31684  setFlag(ALU);
31685  setFlag(F64);
31686  } // Inst_VOP3__V_DIV_FIXUP_F64
31687 
31689  {
31690  } // ~Inst_VOP3__V_DIV_FIXUP_F64
31691 
31692  // --- description from .arch file ---
31693  // D.d = Divide fixup and flags -- s0.d = Quotient, s1.d = Denominator,
31694  // s2.d = Numerator. This opcode generates exceptions resulting from the
31695  // division operation.
31696  void
31698  {
31699  Wavefront *wf = gpuDynInst->wavefront();
31700  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
31701  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
31702  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
31703  VecOperandF64 vdst(gpuDynInst, instData.VDST);
31704 
31705  src0.readSrc();
31706  src1.readSrc();
31707  src2.readSrc();
31708 
31709  if (instData.ABS & 0x1) {
31710  src0.absModifier();
31711  }
31712 
31713  if (instData.ABS & 0x2) {
31714  src1.absModifier();
31715  }
31716 
31717  if (instData.ABS & 0x4) {
31718  src2.absModifier();
31719  }
31720 
31721  if (extData.NEG & 0x1) {
31722  src0.negModifier();
31723  }
31724 
31725  if (extData.NEG & 0x2) {
31726  src1.negModifier();
31727  }
31728 
31729  if (extData.NEG & 0x4) {
31730  src2.negModifier();
31731  }
31732 
31733  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31734  if (wf->execMask(lane)) {
31735  int sign_out = std::signbit(src1[lane])
31736  ^ std::signbit(src2[lane]);
31737  int exp1(0);
31738  int exp2(0);
31739  std::frexp(src1[lane], &exp1);
31740  std::frexp(src2[lane], &exp2);
31741 
31742  if (std::isnan(src1[lane]) || std::isnan(src2[lane])) {
31743  vdst[lane] = std::numeric_limits<VecElemF64>::quiet_NaN();
31744  } else if (std::fpclassify(src1[lane]) == FP_ZERO
31745  && std::fpclassify(src2[lane]) == FP_ZERO) {
31746  vdst[lane]
31747  = std::numeric_limits<VecElemF64>::signaling_NaN();
31748  } else if (std::isinf(src1[lane]) && std::isinf(src2[lane])) {
31749  vdst[lane]
31750  = std::numeric_limits<VecElemF64>::signaling_NaN();
31751  } else if (std::fpclassify(src1[lane]) == FP_ZERO
31752  || std::isinf(src2[lane])) {
31753  vdst[lane] = sign_out ? -INFINITY : +INFINITY;
31754  } else if (std::isinf(src1[lane])
31755  || std::fpclassify(src2[lane]) == FP_ZERO) {
31756  vdst[lane] = sign_out ? -0.0 : +0.0;
31757  } else if (exp2 - exp1 < -1075) {
31758  vdst[lane] = src0[lane];
31759  } else if (exp1 == 2047) {
31760  vdst[lane] = src0[lane];
31761  } else {
31762  vdst[lane] = sign_out ? -std::fabs(src0[lane])
31763  : std::fabs(src0[lane]);
31764  }
31765  }
31766  }
31767 
31768  vdst.write();
31769  } // execute
31770  // --- Inst_VOP3__V_DIV_SCALE_F32 class methods ---
31771 
31773  InFmt_VOP3B *iFmt)
31774  : Inst_VOP3B(iFmt, "v_div_scale_f32")
31775  {
31776  setFlag(ALU);
31777  setFlag(WritesVCC);
31778  setFlag(F32);
31779  } // Inst_VOP3__V_DIV_SCALE_F32
31780 
31782  {
31783  } // ~Inst_VOP3__V_DIV_SCALE_F32
31784 
31785  // --- description from .arch file ---
31786  // {vcc,D.f} = Divide preop and flags -- s0.f = Quotient, s1.f =
31787  // Denominator, s2.f = Numerator -- s0 must equal s1 or s2. Given a
31788  // numerator and denominator, this opcode will appropriately scale inputs
31789  // for division to avoid subnormal terms during Newton-Raphson correction
31790  // algorithm. This opcode producses a VCC flag for post-scale of quotient.
31791  void
31793  {
31794  Wavefront *wf = gpuDynInst->wavefront();
31795  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
31796  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
31797  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
31798  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
31799  VecOperandF32 vdst(gpuDynInst, instData.VDST);
31800 
31801  src0.readSrc();
31802  src1.readSrc();
31803  src2.readSrc();
31804 
31805  if (extData.NEG & 0x1) {
31806  src0.negModifier();
31807  }
31808 
31809  if (extData.NEG & 0x2) {
31810  src1.negModifier();
31811  }
31812 
31813  if (extData.NEG & 0x4) {
31814  src2.negModifier();
31815  }
31816 
31817  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31818  if (wf->execMask(lane)) {
31819  vdst[lane] = src0[lane];
31820  vcc.setBit(lane, 0);
31821  }
31822  }
31823 
31824  vcc.write();
31825  vdst.write();
31826  } // execute
31827  // --- Inst_VOP3__V_DIV_SCALE_F64 class methods ---
31828 
31830  InFmt_VOP3B *iFmt)
31831  : Inst_VOP3B(iFmt, "v_div_scale_f64")
31832  {
31833  setFlag(ALU);
31834  setFlag(WritesVCC);
31835  setFlag(F64);
31836  } // Inst_VOP3__V_DIV_SCALE_F64
31837 
31839  {
31840  } // ~Inst_VOP3__V_DIV_SCALE_F64
31841 
31842  // --- description from .arch file ---
31843  // {vcc,D.d} = Divide preop and flags -- s0.d = Quotient, s1.d =
31844  // Denominator, s2.d = Numerator -- s0 must equal s1 or s2. Given a
31845  // numerator and denominator, this opcode will appropriately scale inputs
31846  // for division to avoid subnormal terms during Newton-Raphson correction
31847  // algorithm. This opcode producses a VCC flag for post-scale of quotient.
31848  void
31850  {
31851  Wavefront *wf = gpuDynInst->wavefront();
31852  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
31853  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
31854  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
31855  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
31856  VecOperandF64 vdst(gpuDynInst, instData.VDST);
31857 
31858  src0.readSrc();
31859  src1.readSrc();
31860  src2.readSrc();
31861 
31862  if (extData.NEG & 0x1) {
31863  src0.negModifier();
31864  }
31865 
31866  if (extData.NEG & 0x2) {
31867  src1.negModifier();
31868  }
31869 
31870  if (extData.NEG & 0x4) {
31871  src2.negModifier();
31872  }
31873 
31874  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31875  if (wf->execMask(lane)) {
31876  int exp1(0);
31877  int exp2(0);
31878  std::frexp(src1[lane], &exp1);
31879  std::frexp(src2[lane], &exp2);
31880  vcc.setBit(lane, 0);
31881 
31882  if (std::fpclassify(src1[lane]) == FP_ZERO
31883  || std::fpclassify(src2[lane]) == FP_ZERO) {
31884  vdst[lane] = NAN;
31885  } else if (exp2 - exp1 >= 768) {
31886  vcc.setBit(lane, 1);
31887  if (src0[lane] == src1[lane]) {
31888  vdst[lane] = std::ldexp(src0[lane], 128);
31889  }
31890  } else if (std::fpclassify(src1[lane]) == FP_SUBNORMAL) {
31891  vdst[lane] = std::ldexp(src0[lane], 128);
31892  } else if (std::fpclassify(1.0 / src1[lane]) == FP_SUBNORMAL
31893  && std::fpclassify(src2[lane] / src1[lane])
31894  == FP_SUBNORMAL) {
31895  vcc.setBit(lane, 1);
31896  if (src0[lane] == src1[lane]) {
31897  vdst[lane] = std::ldexp(src0[lane], 128);
31898  }
31899  } else if (std::fpclassify(1.0 / src1[lane]) == FP_SUBNORMAL) {
31900  vdst[lane] = std::ldexp(src0[lane], -128);
31901  } else if (std::fpclassify(src2[lane] / src1[lane])
31902  == FP_SUBNORMAL) {
31903  vcc.setBit(lane, 1);
31904  if (src0[lane] == src2[lane]) {
31905  vdst[lane] = std::ldexp(src0[lane], 128);
31906  }
31907  } else if (exp2 <= 53) {
31908  vdst[lane] = std::ldexp(src0[lane], 128);
31909  }
31910  }
31911  }
31912 
31913  vcc.write();
31914  vdst.write();
31915  } // execute
31916  // --- Inst_VOP3__V_DIV_FMAS_F32 class methods ---
31917 
31919  : Inst_VOP3A(iFmt, "v_div_fmas_f32", false)
31920  {
31921  setFlag(ALU);
31922  setFlag(ReadsVCC);
31923  setFlag(F32);
31924  setFlag(FMA);
31925  } // Inst_VOP3__V_DIV_FMAS_F32
31926 
31928  {
31929  } // ~Inst_VOP3__V_DIV_FMAS_F32
31930 
31931  // --- description from .arch file ---
31932  // D.f = Special case divide FMA with scale and flags(s0.f = Quotient,
31933  // s1.f = Denominator, s2.f = Numerator)
31934  void
31936  {
31937  Wavefront *wf = gpuDynInst->wavefront();
31938  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
31939  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
31940  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
31941  VecOperandF64 vdst(gpuDynInst, instData.VDST);
31942 
31943  src0.readSrc();
31944  src1.readSrc();
31945  src2.readSrc();
31946 
31947  if (instData.ABS & 0x1) {
31948  src0.absModifier();
31949  }
31950 
31951  if (instData.ABS & 0x2) {
31952  src1.absModifier();
31953  }
31954 
31955  if (instData.ABS & 0x4) {
31956  src2.absModifier();
31957  }
31958 
31959  if (extData.NEG & 0x1) {
31960  src0.negModifier();
31961  }
31962 
31963  if (extData.NEG & 0x2) {
31964  src1.negModifier();
31965  }
31966 
31967  if (extData.NEG & 0x4) {
31968  src2.negModifier();
31969  }
31970 
31971  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31972  if (wf->execMask(lane)) {
31973  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
31974  }
31975  }
31976 
31977  //vdst.write();
31978  } // execute
31979  // --- Inst_VOP3__V_DIV_FMAS_F64 class methods ---
31980 
31982  : Inst_VOP3A(iFmt, "v_div_fmas_f64", false)
31983  {
31984  setFlag(ALU);
31985  setFlag(ReadsVCC);
31986  setFlag(F64);
31987  setFlag(FMA);
31988  } // Inst_VOP3__V_DIV_FMAS_F64
31989 
31991  {
31992  } // ~Inst_VOP3__V_DIV_FMAS_F64
31993 
31994  // --- description from .arch file ---
31995  // D.d = Special case divide FMA with scale and flags(s0.d = Quotient,
31996  // s1.d = Denominator, s2.d = Numerator)
31997  void
31999  {
32000  Wavefront *wf = gpuDynInst->wavefront();
32001  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
32002  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
32003  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
32004  VecOperandF64 vdst(gpuDynInst, instData.VDST);
32005  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
32006 
32007  src0.readSrc();
32008  src1.readSrc();
32009  src2.readSrc();
32010  vcc.read();
32011 
32012  if (instData.ABS & 0x1) {
32013  src0.absModifier();
32014  }
32015 
32016  if (instData.ABS & 0x2) {
32017  src1.absModifier();
32018  }
32019 
32020  if (instData.ABS & 0x4) {
32021  src2.absModifier();
32022  }
32023 
32024  if (extData.NEG & 0x1) {
32025  src0.negModifier();
32026  }
32027 
32028  if (extData.NEG & 0x2) {
32029  src1.negModifier();
32030  }
32031 
32032  if (extData.NEG & 0x4) {
32033  src2.negModifier();
32034  }
32035 
32036  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32037  if (wf->execMask(lane)) {
32038  if (bits(vcc.rawData(), lane)) {
32039  vdst[lane] = std::pow(2, 64)
32040  * std::fma(src0[lane], src1[lane], src2[lane]);
32041  } else {
32042  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
32043  }
32044  }
32045  }
32046 
32047  vdst.write();
32048  } // execute
32049  // --- Inst_VOP3__V_MSAD_U8 class methods ---
32050 
32052  : Inst_VOP3A(iFmt, "v_msad_u8", false)
32053  {
32054  setFlag(ALU);
32055  } // Inst_VOP3__V_MSAD_U8
32056 
32058  {
32059  } // ~Inst_VOP3__V_MSAD_U8
32060 
32061  // --- description from .arch file ---
32062  // D.u = Masked Byte SAD with accum_lo(S0.u, S1.u, S2.u).
32063  void
32065  {
32067  } // execute
32068  // --- Inst_VOP3__V_QSAD_PK_U16_U8 class methods ---
32069 
32071  : Inst_VOP3A(iFmt, "v_qsad_pk_u16_u8", false)
32072  {
32073  setFlag(ALU);
32074  } // Inst_VOP3__V_QSAD_PK_U16_U8
32075 
32077  {
32078  } // ~Inst_VOP3__V_QSAD_PK_U16_U8
32079 
32080  // --- description from .arch file ---
32081  // D.u = Quad-Byte SAD with 16-bit packed accum_lo/hi(S0.u[63:0],
32082  // S1.u[31:0], S2.u[63:0])
32083  void
32085  {
32087  } // execute
32088  // --- Inst_VOP3__V_MQSAD_PK_U16_U8 class methods ---
32089 
32091  InFmt_VOP3A *iFmt)
32092  : Inst_VOP3A(iFmt, "v_mqsad_pk_u16_u8", false)
32093  {
32094  setFlag(ALU);
32095  } // Inst_VOP3__V_MQSAD_PK_U16_U8
32096 
32098  {
32099  } // ~Inst_VOP3__V_MQSAD_PK_U16_U8
32100 
32101  // --- description from .arch file ---
32102  // D.u = Masked Quad-Byte SAD with 16-bit packed accum_lo/hi(S0.u[63:0],
32103  // --- S1.u[31:0], S2.u[63:0])
32104  void
32106  {
32108  } // execute
32109  // --- Inst_VOP3__V_MQSAD_U32_U8 class methods ---
32110 
32112  : Inst_VOP3A(iFmt, "v_mqsad_u32_u8", false)
32113  {
32114  setFlag(ALU);
32115  } // Inst_VOP3__V_MQSAD_U32_U8
32116 
32118  {
32119  } // ~Inst_VOP3__V_MQSAD_U32_U8
32120 
32121  // --- description from .arch file ---
32122  // D.u128 = Masked Quad-Byte SAD with 32-bit accum_lo/hi(S0.u[63:0],
32123  // --- S1.u[31:0], S2.u[127:0])
32124  void
32126  {
32128  } // execute
32129  // --- Inst_VOP3__V_MAD_U64_U32 class methods ---
32130 
32132  InFmt_VOP3B *iFmt)
32133  : Inst_VOP3B(iFmt, "v_mad_u64_u32")
32134  {
32135  setFlag(ALU);
32136  setFlag(WritesVCC);
32137  setFlag(MAD);
32138  } // Inst_VOP3__V_MAD_U64_U32
32139 
32141  {
32142  } // ~Inst_VOP3__V_MAD_U64_U32
32143 
32144  // --- description from .arch file ---
32145  // {vcc_out,D.u64} = S0.u32 * S1.u32 + S2.u64.
32146  void
32148  {
32149  Wavefront *wf = gpuDynInst->wavefront();
32150  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
32151  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
32152  ConstVecOperandU64 src2(gpuDynInst, extData.SRC2);
32153  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
32154  VecOperandU64 vdst(gpuDynInst, instData.VDST);
32155 
32156  src0.readSrc();
32157  src1.readSrc();
32158  src2.readSrc();
32159  vdst.read();
32160 
32164  assert(!(extData.NEG & 0x1));
32165  assert(!(extData.NEG & 0x2));
32166  assert(!(extData.NEG & 0x4));
32167 
32168  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32169  if (wf->execMask(lane)) {
32170  vcc.setBit(lane, muladd(vdst[lane], src0[lane], src1[lane],
32171  src2[lane]));
32172  }
32173  }
32174 
32175  vcc.write();
32176  vdst.write();
32177  } // execute
32178  // --- Inst_VOP3__V_MAD_I64_I32 class methods ---
32179 
32181  InFmt_VOP3B *iFmt)
32182  : Inst_VOP3B(iFmt, "v_mad_i64_i32")
32183  {
32184  setFlag(ALU);
32185  setFlag(WritesVCC);
32186  setFlag(MAD);
32187  } // Inst_VOP3__V_MAD_I64_I32
32188 
32190  {
32191  } // ~Inst_VOP3__V_MAD_I64_I32
32192 
32193  // --- description from .arch file ---
32194  // {vcc_out,D.i64} = S0.i32 * S1.i32 + S2.i64.
32195  void
32197  {
32198  Wavefront *wf = gpuDynInst->wavefront();
32199  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
32200  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
32201  ConstVecOperandI64 src2(gpuDynInst, extData.SRC2);
32202  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
32203  VecOperandI64 vdst(gpuDynInst, instData.VDST);
32204 
32205  src0.readSrc();
32206  src1.readSrc();
32207  src2.readSrc();
32208 
32212  assert(!(extData.NEG & 0x1));
32213  assert(!(extData.NEG & 0x2));
32214  assert(!(extData.NEG & 0x4));
32215 
32216  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32217  if (wf->execMask(lane)) {
32218  vcc.setBit(lane, muladd(vdst[lane], src0[lane], src1[lane],
32219  src2[lane]));
32220  }
32221  }
32222 
32223  vcc.write();
32224  vdst.write();
32225  } // execute
32226  // --- Inst_VOP3__V_XAD_U32 class methods ---
32227 
32229  : Inst_VOP3A(iFmt, "v_xad_u32", false)
32230  {
32231  setFlag(ALU);
32232  } // Inst_VOP3__V_XAD_U32
32233 
32235  {
32236  } // ~Inst_VOP3__V_XAD_U32
32237 
32238  // --- description from .arch file ---
32239  // D.u32 = (S0.u32 ^ S1.u32) + S2.u32.
32240  void
32242  {
32243  Wavefront *wf = gpuDynInst->wavefront();
32244  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
32245  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
32246  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
32247  VecOperandU32 vdst(gpuDynInst, instData.VDST);
32248 
32249  src0.readSrc();
32250  src1.readSrc();
32251  src2.readSrc();
32252 
32256  assert(!(instData.ABS & 0x1));
32257  assert(!(instData.ABS & 0x2));
32258  assert(!(instData.ABS & 0x4));
32259  assert(!(extData.NEG & 0x1));
32260  assert(!(extData.NEG & 0x2));
32261  assert(!(extData.NEG & 0x4));
32262 
32263  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32264  if (wf->execMask(lane)) {
32265  vdst[lane] = (src0[lane] ^ src1[lane]) + src2[lane];
32266  }
32267  }
32268 
32269  vdst.write();
32270  } // execute
32271  // --- Inst_VOP3__V_LSHL_ADD_U32 class methods ---
32272 
32274  : Inst_VOP3A(iFmt, "v_lshl_add_u32", false)
32275  {
32276  setFlag(ALU);
32277  } // Inst_VOP3__V_LSHL_ADD_U32
32278 
32280  {
32281  } // ~Inst_VOP3__V_LSHL_ADD_U32
32282 
32283  // --- description from .arch file ---
32284  // D.u = (S0.u << S1.u[4:0]) + S2.u.
32285  void
32287  {
32288  Wavefront *wf = gpuDynInst->wavefront();
32289  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
32290  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
32291  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
32292  VecOperandU32 vdst(gpuDynInst, instData.VDST);
32293 
32294  src0.readSrc();
32295  src1.readSrc();
32296  src2.readSrc();
32297 
32301  assert(!(instData.ABS & 0x1));
32302  assert(!(instData.ABS & 0x2));
32303  assert(!(instData.ABS & 0x4));
32304  assert(!(extData.NEG & 0x1));
32305  assert(!(extData.NEG & 0x2));
32306  assert(!(extData.NEG & 0x4));
32307 
32308  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32309  if (wf->execMask(lane)) {
32310  vdst[lane] = (src0[lane] << bits(src1[lane], 4, 0))
32311  + src2[lane];
32312  }
32313  }
32314 
32315  vdst.write();
32316  } // execute
32317  // --- Inst_VOP3__V_ADD_LSHL_U32 class methods ---
32318 
32320  : Inst_VOP3A(iFmt, "v_add_lshl_u32", false)
32321  {
32322  setFlag(ALU);
32323  } // Inst_VOP3__V_ADD_LSHL_U32
32324 
32326  {
32327  } // ~Inst_VOP3__V_ADD_LSHL_U32
32328 
32329  // --- description from .arch file ---
32330  // D.u = (S0.u + S1.u) << S2.u[4:0].
32331  void
32333  {
32334  Wavefront *wf = gpuDynInst->wavefront();
32335  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
32336  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
32337  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
32338  VecOperandU32 vdst(gpuDynInst, instData.VDST);
32339 
32340  src0.readSrc();
32341  src1.readSrc();
32342  src2.readSrc();
32343 
32347  assert(!(instData.ABS & 0x1));
32348  assert(!(instData.ABS & 0x2));
32349  assert(!(instData.ABS & 0x4));
32350  assert(!(extData.NEG & 0x1));
32351  assert(!(extData.NEG & 0x2));
32352  assert(!(extData.NEG & 0x4));
32353 
32354  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32355  if (wf->execMask(lane)) {
32356  vdst[lane] =
32357  (src0[lane] + src1[lane]) << bits(src2[lane], 4, 0);
32358  }
32359  }
32360 
32361  vdst.write();
32362  } // execute
32363  // --- Inst_VOP3__V_ADD3_U32 class methods ---
32364 
32366  : Inst_VOP3A(iFmt, "v_add3_u32", false)
32367  {
32368  setFlag(ALU);
32369  } // Inst_VOP3__V_ADD3_U32
32370 
32372  {
32373  } // ~Inst_VOP3__V_ADD3_U32
32374 
32375  // --- description from .arch file ---
32376  // D.u = S0.u + S1.u + S2.u.
32377  void
32379  {
32380  Wavefront *wf = gpuDynInst->wavefront();
32381  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
32382  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
32383  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
32384  VecOperandU32 vdst(gpuDynInst, instData.VDST);
32385 
32386  src0.readSrc();
32387  src1.readSrc();
32388  src2.readSrc();
32389 
32393  assert(!(instData.ABS & 0x1));
32394  assert(!(instData.ABS & 0x2));
32395  assert(!(instData.ABS & 0x4));
32396  assert(!(extData.NEG & 0x1));
32397  assert(!(extData.NEG & 0x2));
32398  assert(!(extData.NEG & 0x4));
32399 
32400  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32401  if (wf->execMask(lane)) {
32402  vdst[lane] = src0[lane] + src1[lane] + src2[lane];
32403  }
32404  }
32405 
32406  vdst.write();
32407  } // execute
32408  // --- Inst_VOP3__V_LSHL_OR_B32 class methods ---
32409 
32411  : Inst_VOP3A(iFmt, "v_lshl_or_b32", false)
32412  {
32413  setFlag(ALU);
32414  } // Inst_VOP3__V_LSHL_OR_B32
32415 
32417  {
32418  } // ~Inst_VOP3__V_LSHL_OR_B32
32419 
32420  // --- description from .arch file ---
32421  // D.u = (S0.u << S1.u[4:0]) | S2.u.
32422  void
32424  {
32425  Wavefront *wf = gpuDynInst->wavefront();
32426  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
32427  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
32428  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
32429  VecOperandU32 vdst(gpuDynInst, instData.VDST);
32430 
32431  src0.readSrc();
32432  src1.readSrc();
32433  src2.readSrc();
32434 
32438  assert(!(instData.ABS & 0x1));
32439  assert(!(instData.ABS & 0x2));
32440  assert(!(instData.ABS & 0x4));
32441  assert(!(extData.NEG & 0x1));
32442  assert(!(extData.NEG & 0x2));
32443  assert(!(extData.NEG & 0x4));
32444 
32445  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32446  if (wf->execMask(lane)) {
32447  vdst[lane] = (src0[lane] << bits(src1[lane], 4, 0))
32448  | src2[lane];
32449  }
32450  }
32451 
32452  vdst.write();
32453  } // execute
32454  // --- Inst_VOP3__V_AND_OR_B32 class methods ---
32455 
32457  : Inst_VOP3A(iFmt, "v_and_or_b32", false)
32458  {
32459  setFlag(ALU);
32460  } // Inst_VOP3__V_AND_OR_B32
32461 
32463  {
32464  } // ~Inst_VOP3__V_AND_OR_B32
32465 
32466  // --- description from .arch file ---
32467  // D.u = (S0.u & S1.u) | S2.u.
32468  // Input and output modifiers not supported.
32469  void
32471  {
32472  Wavefront *wf = gpuDynInst->wavefront();
32473  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
32474  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
32475  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
32476  VecOperandU32 vdst(gpuDynInst, instData.VDST);
32477 
32478  src0.readSrc();
32479  src1.readSrc();
32480  src2.readSrc();
32481 
32485  assert(!(instData.ABS & 0x1));
32486  assert(!(instData.ABS & 0x2));
32487  assert(!(instData.ABS & 0x4));
32488  assert(!(extData.NEG & 0x1));
32489  assert(!(extData.NEG & 0x2));
32490  assert(!(extData.NEG & 0x4));
32491 
32492  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32493  if (wf->execMask(lane)) {
32494  vdst[lane] = (src0[lane] & src1[lane]) | src2[lane];
32495  }
32496  }
32497 
32498  vdst.write();
32499  } // execute
32500  // --- Inst_VOP3__V_MAD_F16 class methods ---
32501 
32503  : Inst_VOP3A(iFmt, "v_mad_f16", false)
32504  {
32505  setFlag(ALU);
32506  setFlag(F16);
32507  setFlag(MAD);
32508  } // Inst_VOP3__V_MAD_F16
32509 
32511  {
32512  } // ~Inst_VOP3__V_MAD_F16
32513 
32514  // --- description from .arch file ---
32515  // D.f16 = S0.f16 * S1.f16 + S2.f16.
32516  // Supports round mode, exception flags, saturation.
32517  void
32519  {
32521  } // execute
32522  // --- Inst_VOP3__V_MAD_U16 class methods ---
32523 
32525  : Inst_VOP3A(iFmt, "v_mad_u16", false)
32526  {
32527  setFlag(ALU);
32528  setFlag(MAD);
32529  } // Inst_VOP3__V_MAD_U16
32530 
32532  {
32533  } // ~Inst_VOP3__V_MAD_U16
32534 
32535  // --- description from .arch file ---
32536  // D.u16 = S0.u16 * S1.u16 + S2.u16.
32537  // Supports saturation (unsigned 16-bit integer domain).
32538  void
32540  {
32541  Wavefront *wf = gpuDynInst->wavefront();
32542  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
32543  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
32544  ConstVecOperandU16 src2(gpuDynInst, extData.SRC2);
32545  VecOperandU16 vdst(gpuDynInst, instData.VDST);
32546 
32547  src0.readSrc();
32548  src1.readSrc();
32549  src2.readSrc();
32550 
32554  assert(!(instData.ABS & 0x1));
32555  assert(!(instData.ABS & 0x2));
32556  assert(!(instData.ABS & 0x4));
32557  assert(!(extData.NEG & 0x1));
32558  assert(!(extData.NEG & 0x2));
32559  assert(!(extData.NEG & 0x4));
32560 
32561  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32562  if (wf->execMask(lane)) {
32563  vdst[lane] = src0[lane] * src1[lane] + src2[lane];
32564  }
32565  }
32566 
32567  vdst.write();
32568  } // execute
32569  // --- Inst_VOP3__V_MAD_I16 class methods ---
32570 
32572  : Inst_VOP3A(iFmt, "v_mad_i16", false)
32573  {
32574  setFlag(ALU);
32575  setFlag(MAD);
32576  } // Inst_VOP3__V_MAD_I16
32577 
32579  {
32580  } // ~Inst_VOP3__V_MAD_I16
32581 
32582  // --- description from .arch file ---
32583  // D.i16 = S0.i16 * S1.i16 + S2.i16.
32584  // Supports saturation (signed 16-bit integer domain).
32585  void
32587  {
32588  Wavefront *wf = gpuDynInst->wavefront();
32589  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
32590  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
32591  ConstVecOperandI16 src2(gpuDynInst, extData.SRC2);
32592  VecOperandI16 vdst(gpuDynInst, instData.VDST);
32593 
32594  src0.readSrc();
32595  src1.readSrc();
32596  src2.readSrc();
32597 
32601  assert(!(instData.ABS & 0x1));
32602  assert(!(instData.ABS & 0x2));
32603  assert(!(instData.ABS & 0x4));
32604  assert(!(extData.NEG & 0x1));
32605  assert(!(extData.NEG & 0x2));
32606  assert(!(extData.NEG & 0x4));
32607 
32608  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32609  if (wf->execMask(lane)) {
32610  vdst[lane] = src0[lane] * src1[lane] + src2[lane];
32611  }
32612  }
32613 
32614  vdst.write();
32615  } // execute
32616  // --- Inst_VOP3__V_PERM_B32 class methods ---
32617 
32619  : Inst_VOP3A(iFmt, "v_perm_b32", false)
32620  {
32621  setFlag(ALU);
32622  } // Inst_VOP3__V_PERM_B32
32623 
32625  {
32626  } // ~Inst_VOP3__V_PERM_B32
32627 
32628  // --- description from .arch file ---
32629  // D.u[31:24] = permute({S0.u, S1.u}, S2.u[31:24]);
32630  // D.u[23:16] = permute({S0.u, S1.u}, S2.u[23:16]);
32631  // D.u[15:8] = permute({S0.u, S1.u}, S2.u[15:8]);
32632  // D.u[7:0] = permute({S0.u, S1.u}, S2.u[7:0]);
32633  // byte permute(byte in[8], byte sel) {
32634  // if(sel>=13) then return 0xff;
32635  // elsif(sel==12) then return 0x00;
32636  // elsif(sel==11) then return in[7][7] * 0xff;
32637  // elsif(sel==10) then return in[5][7] * 0xff;
32638  // elsif(sel==9) then return in[3][7] * 0xff;
32639  // elsif(sel==8) then return in[1][7] * 0xff;
32640  // else return in[sel];
32641  // }
32642  // Byte permute.
32643  void
32645  {
32646  Wavefront *wf = gpuDynInst->wavefront();
32647  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
32648  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
32649  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
32650  VecOperandU32 vdst(gpuDynInst, instData.VDST);
32651 
32652  src0.readSrc();
32653  src1.readSrc();
32654  src2.readSrc();
32655 
32656  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32657  if (wf->execMask(lane)) {
32658  VecElemU64 selector = (VecElemU64)src0[lane];
32659  selector = (selector << 32) | (VecElemU64)src1[lane];
32660  vdst[lane] = 0;
32661 
32662  DPRINTF(VEGA, "Executing v_perm_b32 src_0 0x%08x, src_1 "
32663  "0x%08x, src_2 0x%08x, vdst 0x%08x\n", src0[lane],
32664  src1[lane], src2[lane], vdst[lane]);
32665  DPRINTF(VEGA, "Selector: 0x%08x \n", selector);
32666 
32667  for (int i = 0; i < 4 ; ++i) {
32668  VecElemU32 permuted_val = permute(selector, 0xFF
32669  & ((VecElemU32)src2[lane] >> (8 * i)));
32670  vdst[lane] |= (permuted_val << i);
32671  }
32672 
32673  DPRINTF(VEGA, "v_perm result: 0x%08x\n", vdst[lane]);
32674  }
32675  }
32676 
32677  vdst.write();
32678  } // execute
32679  // --- Inst_VOP3__V_FMA_F16 class methods ---
32680 
32682  : Inst_VOP3A(iFmt, "v_fma_f16", false)
32683  {
32684  setFlag(ALU);
32685  setFlag(F16);
32686  setFlag(FMA);
32687  } // Inst_VOP3__V_FMA_F16
32688 
32690  {
32691  } // ~Inst_VOP3__V_FMA_F16
32692 
32693  // --- description from .arch file ---
32694  // D.f16 = S0.f16 * S1.f16 + S2.f16.
32695  // Fused half precision multiply add.
32696  void
32698  {
32700  } // execute
32701  // --- Inst_VOP3__V_DIV_FIXUP_F16 class methods ---
32702 
32704  : Inst_VOP3A(iFmt, "v_div_fixup_f16", false)
32705  {
32706  setFlag(ALU);
32707  setFlag(F16);
32708  } // Inst_VOP3__V_DIV_FIXUP_F16
32709 
32711  {
32712  } // ~Inst_VOP3__V_DIV_FIXUP_F16
32713 
32714  // --- description from .arch file ---
32715  // sign_out = sign(S1.f16)^sign(S2.f16);
32716  // if (S2.f16 == NAN)
32717  // D.f16 = Quiet(S2.f16);
32718  // else if (S1.f16 == NAN)
32719  // D.f16 = Quiet(S1.f16);
32720  // else if (S1.f16 == S2.f16 == 0)
32721  // # 0/0
32722  // D.f16 = pele_nan(0xfe00);
32723  // else if (abs(S1.f16) == abs(S2.f16) == +-INF)
32724  // # inf/inf
32725  // D.f16 = pele_nan(0xfe00);
32726  // else if (S1.f16 ==0 || abs(S2.f16) == +-INF)
32727  // # x/0, or inf/y
32728  // D.f16 = sign_out ? -INF : INF;
32729  // else if (abs(S1.f16) == +-INF || S2.f16 == 0)
32730  // # x/inf, 0/y
32731  // D.f16 = sign_out ? -0 : 0;
32732  // else if ((exp(S2.f16) - exp(S1.f16)) < -150)
32733  // D.f16 = sign_out ? -underflow : underflow;
32734  // else if (exp(S1.f16) == 255)
32735  // D.f16 = sign_out ? -overflow : overflow;
32736  // else
32737  // D.f16 = sign_out ? -abs(S0.f16) : abs(S0.f16).
32738  // Half precision division fixup.
32739  // S0 = Quotient, S1 = Denominator, S3 = Numerator.
32740  // Given a numerator, denominator, and quotient from a divide, this opcode
32741  // will detect and apply special case numerics, touching up the quotient if
32742  // necessary. This opcode also generates invalid, denorm and divide by
32743  // zero exceptions caused by the division.
32744  void
32746  {
32748  } // execute
32749  // --- Inst_VOP3__V_CVT_PKACCUM_U8_F32 class methods ---
32750 
32752  InFmt_VOP3A *iFmt)
32753  : Inst_VOP3A(iFmt, "v_cvt_pkaccum_u8_f32", false)
32754  {
32755  setFlag(ALU);
32756  setFlag(F32);
32757  } // Inst_VOP3__V_CVT_PKACCUM_U8_F32
32758 
32760  {
32761  } // ~Inst_VOP3__V_CVT_PKACCUM_U8_F32
32762 
32763  // --- description from .arch file ---
32764  // byte = S1.u[1:0]; bit = byte * 8;
32765  // D.u[bit+7:bit] = flt32_to_uint8(S0.f);
32766  // Pack converted value of S0.f into byte S1 of the destination.
32767  // SQ translates to V_CVT_PK_U8_F32.
32768  // Note: this opcode uses src_c to pass destination in as a source.
32769  void
32771  {
32773  } // execute
32774  // --- Inst_VOP3__V_INTERP_P1_F32 class methods ---
32775 
32777  : Inst_VOP3A(iFmt, "v_interp_p1_f32", false)
32778  {
32779  setFlag(ALU);
32780  setFlag(F32);
32781  } // Inst_VOP3__V_INTERP_P1_F32
32782 
32784  {
32785  } // ~Inst_VOP3__V_INTERP_P1_F32
32786 
32787  // --- description from .arch file ---
32788  // D.f = P10 * S.f + P0; parameter interpolation (SQ translates to
32789  // V_MAD_F32 for SP).
32790  // CAUTION: when in HALF_LDS mode, D must not be the same GPR as S; if
32791  // D == S then data corruption will occur.
32792  // NOTE: In textual representations the I/J VGPR is the first source and
32793  // the attribute is the second source; however in the VOP3 encoding the
32794  // attribute is stored in the src0 field and the VGPR is stored in the
32795  // src1 field.
32796  void
32798  {
32800  } // execute
32801  // --- Inst_VOP3__V_INTERP_P2_F32 class methods ---
32802 
32804  : Inst_VOP3A(iFmt, "v_interp_p2_f32", false)
32805  {
32806  setFlag(ALU);
32807  setFlag(F32);
32808  } // Inst_VOP3__V_INTERP_P2_F32
32809 
32811  {
32812  } // ~Inst_VOP3__V_INTERP_P2_F32
32813 
32814  // --- description from .arch file ---
32815  // D.f = P20 * S.f + D.f; parameter interpolation (SQ translates to
32816  // V_MAD_F32 for SP).
32817  // NOTE: In textual representations the I/J VGPR is the first source and
32818  // the attribute is the second source; however in the VOP3 encoding the
32819  // attribute is stored in the src0 field and the VGPR is stored in the
32820  // src1 field.
32821  void
32823  {
32825  } // execute
32826  // --- Inst_VOP3__V_INTERP_MOV_F32 class methods ---
32827 
32829  : Inst_VOP3A(iFmt, "v_interp_mov_f32", false)
32830  {
32831  setFlag(ALU);
32832  setFlag(F32);
32833  } // Inst_VOP3__V_INTERP_MOV_F32
32834 
32836  {
32837  } // ~Inst_VOP3__V_INTERP_MOV_F32
32838 
32839  // --- description from .arch file ---
32840  // D.f = {P10,P20,P0}[S.u]; parameter load.
32841  void
32843  {
32845  } // execute
32846  // --- Inst_VOP3__V_INTERP_P1LL_F16 class methods ---
32847 
32849  InFmt_VOP3A *iFmt)
32850  : Inst_VOP3A(iFmt, "v_interp_p1ll_f16", false)
32851  {
32852  setFlag(ALU);
32853  setFlag(F16);
32854  } // Inst_VOP3__V_INTERP_P1LL_F16
32855 
32857  {
32858  } // ~Inst_VOP3__V_INTERP_P1LL_F16
32859 
32860  // --- description from .arch file ---
32861  // D.f32 = P10.f16 * S0.f32 + P0.f16.
32862  // 'LL' stands for 'two LDS arguments'.
32863  // attr_word selects the high or low half 16 bits of each LDS dword
32864  // accessed.
32865  // This opcode is available for 32-bank LDS only.
32866  // NOTE: In textual representations the I/J VGPR is the first source and
32867  // the attribute is the second source; however in the VOP3 encoding the
32868  // attribute is stored in the src0 field and the VGPR is stored in the
32869  // src1 field.
32870  void
32872  {
32874  } // execute
32875  // --- Inst_VOP3__V_INTERP_P1LV_F16 class methods ---
32876 
32878  InFmt_VOP3A *iFmt)
32879  : Inst_VOP3A(iFmt, "v_interp_p1lv_f16", false)
32880  {
32881  setFlag(ALU);
32882  setFlag(F16);
32883  } // Inst_VOP3__V_INTERP_P1LV_F16
32884 
32886  {
32887  } // ~Inst_VOP3__V_INTERP_P1LV_F16
32888 
32889  // --- description from .arch file ---
32890  // D.f32 = P10.f16 * S0.f32 + (S2.u32 >> (attr_word * 16)).f16.
32891  // 'LV' stands for 'One LDS and one VGPR argument'.
32892  // S2 holds two parameters, attr_word selects the high or low word of the
32893  // VGPR for this calculation, as well as the high or low half of the LDS
32894  // data.
32895  // Meant for use with 16-bank LDS.
32896  // NOTE: In textual representations the I/J VGPR is the first source and
32897  // the attribute is the second source; however in the VOP3 encoding the
32898  // attribute is stored in the src0 field and the VGPR is stored in the
32899  // src1 field.
32900  void
32902  {
32904  } // execute
32905  // --- Inst_VOP3__V_INTERP_P2_F16 class methods ---
32906 
32908  : Inst_VOP3A(iFmt, "v_interp_p2_f16", false)
32909  {
32910  setFlag(ALU);
32911  setFlag(F16);
32912  } // Inst_VOP3__V_INTERP_P2_F16
32913 
32915  {
32916  } // ~Inst_VOP3__V_INTERP_P2_F16
32917 
32918  // --- description from .arch file ---
32919  // D.f16 = P20.f16 * S0.f32 + S2.f32.
32920  // Final computation. attr_word selects LDS high or low 16bits. Used for
32921  // both 16- and 32-bank LDS.
32922  // Result is always written to the 16 LSBs of the destination VGPR.
32923  // NOTE: In textual representations the I/J VGPR is the first source and
32924  // the attribute is the second source; however in the VOP3 encoding the
32925  // attribute is stored in the src0 field and the VGPR is stored in the
32926  // src1 field.
32927  void
32929  {
32931  } // execute
32932  // --- Inst_VOP3__V_ADD_F64 class methods ---
32933 
32935  : Inst_VOP3A(iFmt, "v_add_f64", false)
32936  {
32937  setFlag(ALU);
32938  setFlag(F64);
32939  } // Inst_VOP3__V_ADD_F64
32940 
32942  {
32943  } // ~Inst_VOP3__V_ADD_F64
32944 
32945  // --- description from .arch file ---
32946  // D.d = S0.d + S1.d.
32947  void
32949  {
32950  Wavefront *wf = gpuDynInst->wavefront();
32951  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
32952  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
32953  VecOperandF64 vdst(gpuDynInst, instData.VDST);
32954 
32955  src0.readSrc();
32956  src1.readSrc();
32957 
32958  if (instData.ABS & 0x1) {
32959  src0.absModifier();
32960  }
32961 
32962  if (instData.ABS & 0x2) {
32963  src1.absModifier();
32964  }
32965 
32966  if (extData.NEG & 0x1) {
32967  src0.negModifier();
32968  }
32969 
32970  if (extData.NEG & 0x2) {
32971  src1.negModifier();
32972  }
32973 
32977  assert(!(instData.ABS & 0x4));
32978  assert(!(extData.NEG & 0x4));
32979 
32980  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32981  if (wf->execMask(lane)) {
32982  if (std::isnan(src0[lane]) ||
32983  std::isnan(src1[lane]) ) {
32984  vdst[lane] = NAN;
32985  } else if (std::isinf(src0[lane]) &&
32986  std::isinf(src1[lane])) {
32987  if (std::signbit(src0[lane]) !=
32988  std::signbit(src1[lane])) {
32989  vdst[lane] = NAN;
32990  } else {
32991  vdst[lane] = src0[lane];
32992  }
32993  } else if (std::isinf(src0[lane])) {
32994  vdst[lane] = src0[lane];
32995  } else if (std::isinf(src1[lane])) {
32996  vdst[lane] = src1[lane];
32997  } else if (std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
32998  std::fpclassify(src0[lane]) == FP_ZERO) {
32999  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
33000  std::fpclassify(src1[lane]) == FP_ZERO) {
33001  if (std::signbit(src0[lane]) &&
33002  std::signbit(src1[lane])) {
33003  vdst[lane] = -0.0;
33004  } else {
33005  vdst[lane] = 0.0;
33006  }
33007  } else {
33008  vdst[lane] = src1[lane];
33009  }
33010  } else if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
33011  std::fpclassify(src1[lane]) == FP_ZERO) {
33012  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
33013  std::fpclassify(src0[lane]) == FP_ZERO) {
33014  if (std::signbit(src0[lane]) &&
33015  std::signbit(src1[lane])) {
33016  vdst[lane] = -0.0;
33017  } else {
33018  vdst[lane] = 0.0;
33019  }
33020  } else {
33021  vdst[lane] = src0[lane];
33022  }
33023  } else {
33024  vdst[lane] = src0[lane] + src1[lane];
33025  }
33026  }
33027  }
33028 
33029  vdst.write();
33030  } // execute
33031  // --- Inst_VOP3__V_MUL_F64 class methods ---
33032 
33034  : Inst_VOP3A(iFmt, "v_mul_f64", false)
33035  {
33036  setFlag(ALU);
33037  setFlag(F64);
33038  } // Inst_VOP3__V_MUL_F64
33039 
33041  {
33042  } // ~Inst_VOP3__V_MUL_F64
33043 
33044  // --- description from .arch file ---
33045  // D.d = S0.d * S1.d.
33046  void
33048  {
33049  Wavefront *wf = gpuDynInst->wavefront();
33050  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
33051  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
33052  VecOperandF64 vdst(gpuDynInst, instData.VDST);
33053 
33054  src0.readSrc();
33055  src1.readSrc();
33056 
33057  if (instData.ABS & 0x1) {
33058  src0.absModifier();
33059  }
33060 
33061  if (instData.ABS & 0x2) {
33062  src1.absModifier();
33063  }
33064 
33065  if (extData.NEG & 0x1) {
33066  src0.negModifier();
33067  }
33068 
33069  if (extData.NEG & 0x2) {
33070  src1.negModifier();
33071  }
33072 
33076  assert(!(instData.ABS & 0x4));
33077  assert(!(extData.NEG & 0x4));
33078 
33079  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33080  if (wf->execMask(lane)) {
33081  if (std::isnan(src0[lane]) ||
33082  std::isnan(src1[lane])) {
33083  vdst[lane] = NAN;
33084  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
33085  std::fpclassify(src0[lane]) == FP_ZERO) &&
33086  !std::signbit(src0[lane])) {
33087  if (std::isinf(src1[lane])) {
33088  vdst[lane] = NAN;
33089  } else if (!std::signbit(src1[lane])) {
33090  vdst[lane] = +0.0;
33091  } else {
33092  vdst[lane] = -0.0;
33093  }
33094  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
33095  std::fpclassify(src0[lane]) == FP_ZERO) &&
33096  std::signbit(src0[lane])) {
33097  if (std::isinf(src1[lane])) {
33098  vdst[lane] = NAN;
33099  } else if (std::signbit(src1[lane])) {
33100  vdst[lane] = +0.0;
33101  } else {
33102  vdst[lane] = -0.0;
33103  }
33104  } else if (std::isinf(src0[lane]) &&
33105  !std::signbit(src0[lane])) {
33106  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
33107  std::fpclassify(src1[lane]) == FP_ZERO) {
33108  vdst[lane] = NAN;
33109  } else if (!std::signbit(src1[lane])) {
33110  vdst[lane] = +INFINITY;
33111  } else {
33112  vdst[lane] = -INFINITY;
33113  }
33114  } else if (std::isinf(src0[lane]) &&
33115  std::signbit(src0[lane])) {
33116  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
33117  std::fpclassify(src1[lane]) == FP_ZERO) {
33118  vdst[lane] = NAN;
33119  } else if (std::signbit(src1[lane])) {
33120  vdst[lane] = +INFINITY;
33121  } else {
33122  vdst[lane] = -INFINITY;
33123  }
33124  } else {
33125  vdst[lane] = src0[lane] * src1[lane];
33126  }
33127  }
33128  }
33129 
33130  vdst.write();
33131  } // execute
33132  // --- Inst_VOP3__V_MIN_F64 class methods ---
33133 
33135  : Inst_VOP3A(iFmt, "v_min_f64", false)
33136  {
33137  setFlag(ALU);
33138  setFlag(F64);
33139  } // Inst_VOP3__V_MIN_F64
33140 
33142  {
33143  } // ~Inst_VOP3__V_MIN_F64
33144 
33145  // --- description from .arch file ---
33146  // D.d = min(S0.d, S1.d).
33147  void
33149  {
33150  Wavefront *wf = gpuDynInst->wavefront();
33151  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
33152  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
33153  VecOperandF64 vdst(gpuDynInst, instData.VDST);
33154 
33155  src0.readSrc();
33156  src1.readSrc();
33157 
33158  if (instData.ABS & 0x1) {
33159  src0.absModifier();
33160  }
33161 
33162  if (instData.ABS & 0x2) {
33163  src1.absModifier();
33164  }
33165 
33166  if (extData.NEG & 0x1) {
33167  src0.negModifier();
33168  }
33169 
33170  if (extData.NEG & 0x2) {
33171  src1.negModifier();
33172  }
33173 
33177  assert(!(instData.ABS & 0x4));
33178  assert(!(extData.NEG & 0x4));
33179 
33180  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33181  if (wf->execMask(lane)) {
33182  vdst[lane] = std::fmin(src0[lane], src1[lane]);
33183  }
33184  }
33185 
33186  vdst.write();
33187  } // execute
33188  // --- Inst_VOP3__V_MAX_F64 class methods ---
33189 
33191  : Inst_VOP3A(iFmt, "v_max_f64", false)
33192  {
33193  setFlag(ALU);
33194  setFlag(F64);
33195  } // Inst_VOP3__V_MAX_F64
33196 
33198  {
33199  } // ~Inst_VOP3__V_MAX_F64
33200 
33201  // --- description from .arch file ---
33202  // D.d = max(S0.d, S1.d).
33203  void
33205  {
33206  Wavefront *wf = gpuDynInst->wavefront();
33207  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
33208  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
33209  VecOperandF64 vdst(gpuDynInst, instData.VDST);
33210 
33211  src0.readSrc();
33212  src1.readSrc();
33213 
33214  if (instData.ABS & 0x1) {
33215  src0.absModifier();
33216  }
33217 
33218  if (instData.ABS & 0x2) {
33219  src1.absModifier();
33220  }
33221 
33222  if (extData.NEG & 0x1) {
33223  src0.negModifier();
33224  }
33225 
33226  if (extData.NEG & 0x2) {
33227  src1.negModifier();
33228  }
33229 
33233  assert(!(instData.ABS & 0x4));
33234  assert(!(extData.NEG & 0x4));
33235 
33236  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33237  if (wf->execMask(lane)) {
33238  vdst[lane] = std::fmax(src0[lane], src1[lane]);
33239  }
33240  }
33241 
33242  vdst.write();
33243  } // execute
33244  // --- Inst_VOP3__V_LDEXP_F64 class methods ---
33245 
33247  : Inst_VOP3A(iFmt, "v_ldexp_f64", false)
33248  {
33249  setFlag(ALU);
33250  setFlag(F64);
33251  } // Inst_VOP3__V_LDEXP_F64
33252 
33254  {
33255  } // ~Inst_VOP3__V_LDEXP_F64
33256 
33257  // --- description from .arch file ---
33258  // D.d = pow(S0.d, S1.i[31:0]).
33259  void
33261  {
33262  Wavefront *wf = gpuDynInst->wavefront();
33263  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
33264  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
33265  VecOperandF64 vdst(gpuDynInst, instData.VDST);
33266 
33267  src0.readSrc();
33268  src1.readSrc();
33269 
33270  if (instData.ABS & 0x1) {
33271  src0.absModifier();
33272  }
33273 
33274  if (extData.NEG & 0x1) {
33275  src0.negModifier();
33276  }
33277 
33281  assert(!(instData.ABS & 0x2));
33282  assert(!(instData.ABS & 0x4));
33283  assert(!(extData.NEG & 0x2));
33284  assert(!(extData.NEG & 0x4));
33285 
33286  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33287  if (wf->execMask(lane)) {
33288  if (std::isnan(src0[lane]) || std::isinf(src0[lane])) {
33289  vdst[lane] = src0[lane];
33290  } else if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
33291  || std::fpclassify(src0[lane]) == FP_ZERO) {
33292  if (std::signbit(src0[lane])) {
33293  vdst[lane] = -0.0;
33294  } else {
33295  vdst[lane] = +0.0;
33296  }
33297  } else {
33298  vdst[lane] = std::ldexp(src0[lane], src1[lane]);
33299  }
33300  }
33301  }
33302 
33303  vdst.write();
33304  } // execute
33305  // --- Inst_VOP3__V_MUL_LO_U32 class methods ---
33306 
33308  : Inst_VOP3A(iFmt, "v_mul_lo_u32", false)
33309  {
33310  setFlag(ALU);
33311  } // Inst_VOP3__V_MUL_LO_U32
33312 
33314  {
33315  } // ~Inst_VOP3__V_MUL_LO_U32
33316 
33317  // --- description from .arch file ---
33318  // D.u = S0.u * S1.u.
33319  void
33321  {
33322  Wavefront *wf = gpuDynInst->wavefront();
33323  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33324  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
33325  VecOperandU32 vdst(gpuDynInst, instData.VDST);
33326 
33327  src0.readSrc();
33328  src1.readSrc();
33329 
33333  assert(!(instData.ABS & 0x1));
33334  assert(!(instData.ABS & 0x2));
33335  assert(!(instData.ABS & 0x4));
33336  assert(!(extData.NEG & 0x1));
33337  assert(!(extData.NEG & 0x2));
33338  assert(!(extData.NEG & 0x4));
33339 
33340  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33341  if (wf->execMask(lane)) {
33342  VecElemI64 s0 = (VecElemI64)src0[lane];
33343  VecElemI64 s1 = (VecElemI64)src1[lane];
33344  vdst[lane] = (VecElemU32)((s0 * s1) & 0xffffffffLL);
33345  }
33346  }
33347 
33348  vdst.write();
33349  } // execute
33350  // --- Inst_VOP3__V_MUL_HI_U32 class methods ---
33351 
33353  : Inst_VOP3A(iFmt, "v_mul_hi_u32", false)
33354  {
33355  setFlag(ALU);
33356  } // Inst_VOP3__V_MUL_HI_U32
33357 
33359  {
33360  } // ~Inst_VOP3__V_MUL_HI_U32
33361 
33362  // --- description from .arch file ---
33363  // D.u = (S0.u * S1.u) >> 32.
33364  void
33366  {
33367  Wavefront *wf = gpuDynInst->wavefront();
33368  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33369  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
33370  VecOperandU32 vdst(gpuDynInst, instData.VDST);
33371 
33372  src0.readSrc();
33373  src1.readSrc();
33374 
33378  assert(!(instData.ABS & 0x1));
33379  assert(!(instData.ABS & 0x2));
33380  assert(!(instData.ABS & 0x4));
33381  assert(!(extData.NEG & 0x1));
33382  assert(!(extData.NEG & 0x2));
33383  assert(!(extData.NEG & 0x4));
33384 
33385  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33386  if (wf->execMask(lane)) {
33387  VecElemI64 s0 = (VecElemI64)src0[lane];
33388  VecElemI64 s1 = (VecElemI64)src1[lane];
33389  vdst[lane]
33390  = (VecElemU32)(((s0 * s1) >> 32) & 0xffffffffLL);
33391  }
33392  }
33393 
33394  vdst.write();
33395  } // execute
33396  // --- Inst_VOP3__V_MUL_HI_I32 class methods ---
33397 
33399  : Inst_VOP3A(iFmt, "v_mul_hi_i32", false)
33400  {
33401  setFlag(ALU);
33402  } // Inst_VOP3__V_MUL_HI_I32
33403 
33405  {
33406  } // ~Inst_VOP3__V_MUL_HI_I32
33407 
33408  // --- description from .arch file ---
33409  // D.i = (S0.i * S1.i) >> 32.
33410  void
33412  {
33413  Wavefront *wf = gpuDynInst->wavefront();
33414  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
33415  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
33416  VecOperandI32 vdst(gpuDynInst, instData.VDST);
33417 
33418  src0.readSrc();
33419  src1.readSrc();
33420 
33424  assert(!(instData.ABS & 0x1));
33425  assert(!(instData.ABS & 0x2));
33426  assert(!(instData.ABS & 0x4));
33427  assert(!(extData.NEG & 0x1));
33428  assert(!(extData.NEG & 0x2));
33429  assert(!(extData.NEG & 0x4));
33430 
33431  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33432  if (wf->execMask(lane)) {
33433  VecElemI64 s0 = (VecElemI64)src0[lane];
33434  VecElemI64 s1 = (VecElemI64)src1[lane];
33435  vdst[lane]
33436  = (VecElemI32)(((s0 * s1) >> 32LL) & 0xffffffffLL);
33437  }
33438  }
33439 
33440  vdst.write();
33441  } // execute
33442  // --- Inst_VOP3__V_LDEXP_F32 class methods ---
33443 
33445  : Inst_VOP3A(iFmt, "v_ldexp_f32", false)
33446  {
33447  setFlag(ALU);
33448  setFlag(F32);
33449  } // Inst_VOP3__V_LDEXP_F32
33450 
33452  {
33453  } // ~Inst_VOP3__V_LDEXP_F32
33454 
33455  // --- description from .arch file ---
33456  // D.f = pow(S0.f, S1.i)
33457  void
33459  {
33460  Wavefront *wf = gpuDynInst->wavefront();
33461  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
33462  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
33463  VecOperandF32 vdst(gpuDynInst, instData.VDST);
33464 
33465  src0.readSrc();
33466  src1.readSrc();
33467 
33471  assert(!(instData.ABS & 0x2));
33472  assert(!(instData.ABS & 0x4));
33473  assert(!(extData.NEG & 0x2));
33474  assert(!(extData.NEG & 0x4));
33475 
33476  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33477  if (wf->execMask(lane)) {
33478  vdst[lane] = std::ldexp(src0[lane], src1[lane]);
33479  }
33480  }
33481 
33482  vdst.write();
33483  } // execute
33484  // --- Inst_VOP3__V_READLANE_B32 class methods ---
33485 
33487  : Inst_VOP3A(iFmt, "v_readlane_b32", true)
33488  {
33489  setFlag(ALU);
33490  setFlag(IgnoreExec);
33491  } // Inst_VOP3__V_READLANE_B32
33492 
33494  {
33495  } // ~Inst_VOP3__V_READLANE_B32
33496 
33497  // --- description from .arch file ---
33498  // Copy one VGPR value to one SGPR. D = SGPR-dest, S0 = Source Data (VGPR#
33499  // or M0(lds-direct)), S1 = Lane Select (SGPR or M0). Ignores exec mask.
33500  // Input and output modifiers not supported; this is an untyped operation.
33501  void
33503  {
33504  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33505  ConstScalarOperandU32 src1(gpuDynInst, extData.SRC1);
33506  ScalarOperandU32 sdst(gpuDynInst, instData.VDST);
33507 
33508  src0.readSrc();
33509  src1.read();
33510 
33514  assert(!(instData.ABS & 0x1));
33515  assert(!(instData.ABS & 0x2));
33516  assert(!(instData.ABS & 0x4));
33517  assert(!(extData.NEG & 0x1));
33518  assert(!(extData.NEG & 0x2));
33519  assert(!(extData.NEG & 0x4));
33520 
33521  sdst = src0[src1.rawData() & 0x3f];
33522 
33523  sdst.write();
33524  } // execute
33525  // --- Inst_VOP3__V_WRITELANE_B32 class methods ---
33526 
33528  : Inst_VOP3A(iFmt, "v_writelane_b32", false)
33529  {
33530  setFlag(ALU);
33531  setFlag(IgnoreExec);
33532  } // Inst_VOP3__V_WRITELANE_B32
33533 
33535  {
33536  } // ~Inst_VOP3__V_WRITELANE_B32
33537 
33538  // --- description from .arch file ---
33539  // Write value into one VGPR in one lane. D = VGPR-dest, S0 = Source Data
33540  // (sgpr, m0, exec or constants), S1 = Lane Select (SGPR or M0). Ignores
33541  // exec mask.
33542  // Input and output modifiers not supported; this is an untyped operation.
33543  // SQ translates to V_MOV_B32.
33544  void
33546  {
33547  ConstScalarOperandU32 src0(gpuDynInst, extData.SRC0);
33548  ConstScalarOperandU32 src1(gpuDynInst, extData.SRC1);
33549  VecOperandU32 vdst(gpuDynInst, instData.VDST);
33550 
33551  src0.read();
33552  src1.read();
33553  vdst.read();
33554 
33558  assert(!(instData.ABS & 0x1));
33559  assert(!(instData.ABS & 0x2));
33560  assert(!(instData.ABS & 0x4));
33561  assert(!(extData.NEG & 0x1));
33562  assert(!(extData.NEG & 0x2));
33563  assert(!(extData.NEG & 0x4));
33564 
33565  vdst[src1.rawData() & 0x3f] = src0.rawData();
33566 
33567  vdst.write();
33568  } // execute
33569  // --- Inst_VOP3__V_BCNT_U32_B32 class methods ---
33570 
33572  : Inst_VOP3A(iFmt, "v_bcnt_u32_b32", false)
33573  {
33574  setFlag(ALU);
33575  } // Inst_VOP3__V_BCNT_U32_B32
33576 
33578  {
33579  } // ~Inst_VOP3__V_BCNT_U32_B32
33580 
33581  // --- description from .arch file ---
33582  // D.u = CountOneBits(S0.u) + S1.u. Bit count.
33583  void
33585  {
33586  Wavefront *wf = gpuDynInst->wavefront();
33587  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33588  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
33589  VecOperandU32 vdst(gpuDynInst, instData.VDST);
33590 
33591  src0.readSrc();
33592  src1.readSrc();
33593 
33597  assert(!(instData.ABS & 0x1));
33598  assert(!(instData.ABS & 0x2));
33599  assert(!(instData.ABS & 0x4));
33600  assert(!(extData.NEG & 0x1));
33601  assert(!(extData.NEG & 0x2));
33602  assert(!(extData.NEG & 0x4));
33603 
33604  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33605  if (wf->execMask(lane)) {
33606  vdst[lane] = popCount(src0[lane]) + src1[lane];
33607  }
33608  }
33609 
33610  vdst.write();
33611  } // execute
33612  // --- Inst_VOP3__V_MBCNT_LO_U32_B32 class methods ---
33613 
33615  InFmt_VOP3A *iFmt)
33616  : Inst_VOP3A(iFmt, "v_mbcnt_lo_u32_b32", false)
33617  {
33618  setFlag(ALU);
33619  } // Inst_VOP3__V_MBCNT_LO_U32_B32
33620 
33622  {
33623  } // ~Inst_VOP3__V_MBCNT_LO_U32_B32
33624 
33625  // --- description from .arch file ---
33626  // ThreadMask = (1 << ThreadPosition) - 1;
33627  // D.u = CountOneBits(S0.u & ThreadMask[31:0]) + S1.u.
33628  // Masked bit count, ThreadPosition is the position of this thread in the
33629  // --- wavefront (in 0..63).
33630  void
33632  {
33633  Wavefront *wf = gpuDynInst->wavefront();
33634  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33635  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
33636  VecOperandU32 vdst(gpuDynInst, instData.VDST);
33637  uint64_t threadMask = 0;
33638 
33639  src0.readSrc();
33640  src1.readSrc();
33641 
33645  assert(!(instData.ABS & 0x1));
33646  assert(!(instData.ABS & 0x2));
33647  assert(!(instData.ABS & 0x4));
33648  assert(!(extData.NEG & 0x1));
33649  assert(!(extData.NEG & 0x2));
33650  assert(!(extData.NEG & 0x4));
33651 
33652  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33653  if (wf->execMask(lane)) {
33654  threadMask = ((1LL << lane) - 1LL);
33655  vdst[lane] = popCount(src0[lane] & bits(threadMask, 31, 0)) +
33656  src1[lane];
33657  }
33658  }
33659 
33660  vdst.write();
33661  } // execute
33662  // --- Inst_VOP3__V_MBCNT_HI_U32_B32 class methods ---
33663 
33665  InFmt_VOP3A *iFmt)
33666  : Inst_VOP3A(iFmt, "v_mbcnt_hi_u32_b32", false)
33667  {
33668  setFlag(ALU);
33669  } // Inst_VOP3__V_MBCNT_HI_U32_B32
33670 
33672  {
33673  } // ~Inst_VOP3__V_MBCNT_HI_U32_B32
33674 
33675  // --- description from .arch file ---
33676  // ThreadMask = (1 << ThreadPosition) - 1;
33677  // D.u = CountOneBits(S0.u & ThreadMask[63:32]) + S1.u.
33678  // Masked bit count, ThreadPosition is the position of this thread in the
33679  // --- wavefront (in 0..63).
33680  void
33682  {
33683  Wavefront *wf = gpuDynInst->wavefront();
33684  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33685  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
33686  VecOperandU32 vdst(gpuDynInst, instData.VDST);
33687  uint64_t threadMask = 0;
33688 
33689  src0.readSrc();
33690  src1.readSrc();
33691 
33695  assert(!(instData.ABS & 0x1));
33696  assert(!(instData.ABS & 0x2));
33697  assert(!(instData.ABS & 0x4));
33698  assert(!(extData.NEG & 0x1));
33699  assert(!(extData.NEG & 0x2));
33700  assert(!(extData.NEG & 0x4));
33701 
33702  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33703  if (wf->execMask(lane)) {
33704  threadMask = ((1LL << lane) - 1LL);
33705  vdst[lane] = popCount(src0[lane] & bits(threadMask, 63, 32)) +
33706  src1[lane];
33707  }
33708  }
33709 
33710  vdst.write();
33711  } // execute
33712  // --- Inst_VOP3__V_LSHLREV_B64 class methods ---
33713 
33715  : Inst_VOP3A(iFmt, "v_lshlrev_b64", false)
33716  {
33717  setFlag(ALU);
33718  } // Inst_VOP3__V_LSHLREV_B64
33719 
33721  {
33722  } // ~Inst_VOP3__V_LSHLREV_B64
33723 
33724  // --- description from .arch file ---
33725  // D.u64 = S1.u64 << S0.u[5:0].
33726  // SQ translates this to an internal SP opcode.
33727  void
33729  {
33730  Wavefront *wf = gpuDynInst->wavefront();
33731  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33732  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
33733  VecOperandU64 vdst(gpuDynInst, instData.VDST);
33734 
33735  src0.readSrc();
33736  src1.readSrc();
33737 
33741  assert(!(instData.ABS & 0x1));
33742  assert(!(instData.ABS & 0x2));
33743  assert(!(instData.ABS & 0x4));
33744  assert(!(extData.NEG & 0x1));
33745  assert(!(extData.NEG & 0x2));
33746  assert(!(extData.NEG & 0x4));
33747 
33748  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33749  if (wf->execMask(lane)) {
33750  vdst[lane] = src1[lane] << bits(src0[lane], 5, 0);
33751  }
33752  }
33753 
33754  vdst.write();
33755  } // execute
33756  // --- Inst_VOP3__V_LSHRREV_B64 class methods ---
33757 
33759  : Inst_VOP3A(iFmt, "v_lshrrev_b64", false)
33760  {
33761  setFlag(ALU);
33762  } // Inst_VOP3__V_LSHRREV_B64
33763 
33765  {
33766  } // ~Inst_VOP3__V_LSHRREV_B64
33767 
33768  // --- description from .arch file ---
33769  // D.u64 = S1.u64 >> S0.u[5:0].
33770  // The vacated bits are set to zero.
33771  // SQ translates this to an internal SP opcode.
33772  void
33774  {
33775  Wavefront *wf = gpuDynInst->wavefront();
33776  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33777  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
33778  VecOperandU64 vdst(gpuDynInst, instData.VDST);
33779 
33780  src0.readSrc();
33781  src1.readSrc();
33782 
33786  assert(!(instData.ABS & 0x1));
33787  assert(!(instData.ABS & 0x2));
33788  assert(!(instData.ABS & 0x4));
33789  assert(!(extData.NEG & 0x1));
33790  assert(!(extData.NEG & 0x2));
33791  assert(!(extData.NEG & 0x4));
33792 
33793  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33794  if (wf->execMask(lane)) {
33795  vdst[lane] = src1[lane] >> bits(src0[lane], 5, 0);
33796  }
33797  }
33798 
33799  vdst.write();
33800  } // execute
33801  // --- Inst_VOP3__V_ASHRREV_I64 class methods ---
33802 
33804  : Inst_VOP3A(iFmt, "v_ashrrev_i64", false)
33805  {
33806  setFlag(ALU);
33807  } // Inst_VOP3__V_ASHRREV_I64
33808 
33810  {
33811  } // ~Inst_VOP3__V_ASHRREV_I64
33812 
33813  // --- description from .arch file ---
33814  // D.u64 = signext(S1.u64) >> S0.u[5:0].
33815  // The vacated bits are set to the sign bit of the input value.
33816  // SQ translates this to an internal SP opcode.
33817  void
33819  {
33820  Wavefront *wf = gpuDynInst->wavefront();
33821  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33822  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
33823  VecOperandU64 vdst(gpuDynInst, instData.VDST);
33824 
33825  src0.readSrc();
33826  src1.readSrc();
33827 
33831  assert(!(instData.ABS & 0x1));
33832  assert(!(instData.ABS & 0x2));
33833  assert(!(instData.ABS & 0x4));
33834  assert(!(extData.NEG & 0x1));
33835  assert(!(extData.NEG & 0x2));
33836  assert(!(extData.NEG & 0x4));
33837 
33838  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33839  if (wf->execMask(lane)) {
33840  vdst[lane]
33841  = src1[lane] >> bits(src0[lane], 5, 0);
33842  }
33843  }
33844 
33845  vdst.write();
33846  } // execute
33847  // --- Inst_VOP3__V_TRIG_PREOP_F64 class methods ---
33848 
33850  : Inst_VOP3A(iFmt, "v_trig_preop_f64", false)
33851  {
33852  setFlag(ALU);
33853  setFlag(F64);
33854  } // Inst_VOP3__V_TRIG_PREOP_F64
33855 
33857  {
33858  } // ~Inst_VOP3__V_TRIG_PREOP_F64
33859 
33860  // --- description from .arch file ---
33861  // D.d = Look Up 2/PI (S0.d) with segment select S1.u[4:0]. This operation
33862  // returns an aligned, double precision segment of 2/PI needed to do range
33863  // reduction on S0.d (double-precision value). Multiple segments can be
33864  // specified through S1.u[4:0]. Rounding is always round-to-zero. Large
33865  // inputs (exp > 1968) are scaled to avoid loss of precision through
33866  // denormalization.
33867  void
33869  {
33871  } // execute
33872  // --- Inst_VOP3__V_BFM_B32 class methods ---
33873 
33875  : Inst_VOP3A(iFmt, "v_bfm_b32", false)
33876  {
33877  setFlag(ALU);
33878  } // Inst_VOP3__V_BFM_B32
33879 
33881  {
33882  } // ~Inst_VOP3__V_BFM_B32
33883 
33884  // --- description from .arch file ---
33885  // D.u = ((1<<S0.u[4:0])-1) << S1.u[4:0]; S0 is the bitfield width and S1
33886  // is the bitfield offset.
33887  void
33889  {
33890  Wavefront *wf = gpuDynInst->wavefront();
33891  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
33892  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
33893  VecOperandU32 vdst(gpuDynInst, instData.VDST);
33894 
33895  src0.readSrc();
33896  src1.readSrc();
33897 
33901  assert(!(instData.ABS & 0x1));
33902  assert(!(instData.ABS & 0x2));
33903  assert(!(instData.ABS & 0x4));
33904  assert(!(extData.NEG & 0x1));
33905  assert(!(extData.NEG & 0x2));
33906  assert(!(extData.NEG & 0x4));
33907 
33908  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33909  if (wf->execMask(lane)) {
33910  vdst[lane] = ((1 << bits(src0[lane], 4, 0)) - 1)
33911  << bits(src1[lane], 4, 0);
33912  }
33913  }
33914 
33915  vdst.write();
33916  } // execute
33917  // --- Inst_VOP3__V_CVT_PKNORM_I16_F32 class methods ---
33918 
33920  InFmt_VOP3A *iFmt)
33921  : Inst_VOP3A(iFmt, "v_cvt_pknorm_i16_f32", false)
33922  {
33923  setFlag(ALU);
33924  setFlag(F32);
33925  } // Inst_VOP3__V_CVT_PKNORM_I16_F32
33926 
33928  {
33929  } // ~Inst_VOP3__V_CVT_PKNORM_I16_F32
33930 
33931  // --- description from .arch file ---
33932  // D = {(snorm)S1.f, (snorm)S0.f}.
33933  void
33935  {
33937  } // execute
33938  // --- Inst_VOP3__V_CVT_PKNORM_U16_F32 class methods ---
33939 
33941  InFmt_VOP3A *iFmt)
33942  : Inst_VOP3A(iFmt, "v_cvt_pknorm_u16_f32", false)
33943  {
33944  setFlag(ALU);
33945  setFlag(F32);
33946  } // Inst_VOP3__V_CVT_PKNORM_U16_F32
33947 
33949  {
33950  } // ~Inst_VOP3__V_CVT_PKNORM_U16_F32
33951 
33952  // --- description from .arch file ---
33953  // D = {(unorm)S1.f, (unorm)S0.f}.
33954  void
33956  {
33958  } // execute
33959  // --- Inst_VOP3__V_CVT_PKRTZ_F16_F32 class methods ---
33960 
33962  InFmt_VOP3A *iFmt)
33963  : Inst_VOP3A(iFmt, "v_cvt_pkrtz_f16_f32", false)
33964  {
33965  setFlag(ALU);
33966  setFlag(F32);
33967  } // Inst_VOP3__V_CVT_PKRTZ_F16_F32
33968 
33970  {
33971  } // ~Inst_VOP3__V_CVT_PKRTZ_F16_F32
33972 
33973  // --- description from .arch file ---
33974  // D = {flt32_to_flt16(S1.f),flt32_to_flt16(S0.f)}, with round-toward-zero
33975  // --- regardless of current round mode setting in hardware.
33976  // This opcode is intended for use with 16-bit compressed exports.
33977  // See V_CVT_F16_F32 for a version that respects the current rounding mode.
33978  void
33980  {
33982  } // execute
33983  // --- Inst_VOP3__V_CVT_PK_U16_U32 class methods ---
33984 
33986  : Inst_VOP3A(iFmt, "v_cvt_pk_u16_u32", false)
33987  {
33988  setFlag(ALU);
33989  } // Inst_VOP3__V_CVT_PK_U16_U32
33990 
33992  {
33993  } // ~Inst_VOP3__V_CVT_PK_U16_U32
33994 
33995  // --- description from .arch file ---
33996  // D = {uint32_to_uint16(S1.u), uint32_to_uint16(S0.u)}.
33997  void
33999  {
34001  } // execute
34002  // --- Inst_VOP3__V_CVT_PK_I16_I32 class methods ---
34003 
34005  : Inst_VOP3A(iFmt, "v_cvt_pk_i16_i32", false)
34006  {
34007  setFlag(ALU);
34008  } // Inst_VOP3__V_CVT_PK_I16_I32
34009 
34011  {
34012  } // ~Inst_VOP3__V_CVT_PK_I16_I32
34013 
34014  // --- description from .arch file ---
34015  // D = {int32_to_int16(S1.i), int32_to_int16(S0.i)}.
34016  void
34018  {
34020  } // execute
34021  // --- Inst_DS__DS_ADD_U32 class methods ---
34022 
34024  : Inst_DS(iFmt, "ds_add_u32")
34025  {
34026  setFlag(MemoryRef);
34027  setFlag(GroupSegment);
34028  setFlag(AtomicAdd);
34029  setFlag(AtomicNoReturn);
34030  } // Inst_DS__DS_ADD_U32
34031 
34033  {
34034  } // ~Inst_DS__DS_ADD_U32
34035 
34036  // --- description from .arch file ---
34037  // 32b:
34038  // MEM[ADDR] += DATA;
34039  void
34041  {
34042  Wavefront *wf = gpuDynInst->wavefront();
34043 
34044  if (gpuDynInst->exec_mask.none()) {
34045  wf->decLGKMInstsIssued();
34046  return;
34047  }
34048 
34049  gpuDynInst->execUnitId = wf->execUnitId;
34050  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34051  gpuDynInst->latency.set(
34052  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34053  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34054  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
34055 
34056  addr.read();
34057  data.read();
34058 
34059  calcAddr(gpuDynInst, addr);
34060 
34061  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34062  if (gpuDynInst->exec_mask[lane]) {
34063  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
34064  = data[lane];
34065  }
34066  }
34067 
34068  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34069  } // execute
34070 
34071  void
34073  {
34074  Addr offset0 = instData.OFFSET0;
34075  Addr offset1 = instData.OFFSET1;
34076  Addr offset = (offset1 << 8) | offset0;
34077 
34078  initAtomicAccess<VecElemU32>(gpuDynInst, offset);
34079  } // initiateAcc
34080 
34081  void
34083  {
34084  } // completeAcc
34085  // --- Inst_DS__DS_SUB_U32 class methods ---
34086 
34088  : Inst_DS(iFmt, "ds_sub_u32")
34089  {
34090  } // Inst_DS__DS_SUB_U32
34091 
34093  {
34094  } // ~Inst_DS__DS_SUB_U32
34095 
34096  // --- description from .arch file ---
34097  // 32b:
34098  // tmp = MEM[ADDR];
34099  // MEM[ADDR] -= DATA;
34100  // RETURN_DATA = tmp.
34101  void
34103  {
34105  } // execute
34106  // --- Inst_DS__DS_RSUB_U32 class methods ---
34107 
34109  : Inst_DS(iFmt, "ds_rsub_u32")
34110  {
34111  } // Inst_DS__DS_RSUB_U32
34112 
34114  {
34115  } // ~Inst_DS__DS_RSUB_U32
34116 
34117  // --- description from .arch file ---
34118  // 32b:
34119  // tmp = MEM[ADDR];
34120  // MEM[ADDR] = DATA - MEM[ADDR];
34121  // RETURN_DATA = tmp.
34122  // Subtraction with reversed operands.
34123  void
34125  {
34127  } // execute
34128  // --- Inst_DS__DS_INC_U32 class methods ---
34129 
34131  : Inst_DS(iFmt, "ds_inc_u32")
34132  {
34133  } // Inst_DS__DS_INC_U32
34134 
34136  {
34137  } // ~Inst_DS__DS_INC_U32
34138 
34139  // --- description from .arch file ---
34140  // 32b:
34141  // tmp = MEM[ADDR];
34142  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
34143  // RETURN_DATA = tmp.
34144  void
34146  {
34148  } // execute
34149  // --- Inst_DS__DS_DEC_U32 class methods ---
34150 
34152  : Inst_DS(iFmt, "ds_dec_u32")
34153  {
34154  } // Inst_DS__DS_DEC_U32
34155 
34157  {
34158  } // ~Inst_DS__DS_DEC_U32
34159 
34160  // --- description from .arch file ---
34161  // 32b:
34162  // tmp = MEM[ADDR];
34163  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
34164  // (unsigned compare); RETURN_DATA = tmp.
34165  void
34167  {
34169  } // execute
34170  // --- Inst_DS__DS_MIN_I32 class methods ---
34171 
34173  : Inst_DS(iFmt, "ds_min_i32")
34174  {
34175  } // Inst_DS__DS_MIN_I32
34176 
34178  {
34179  } // ~Inst_DS__DS_MIN_I32
34180 
34181  // --- description from .arch file ---
34182  // 32b:
34183  // tmp = MEM[ADDR];
34184  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
34185  // RETURN_DATA = tmp.
34186  void
34188  {
34190  } // execute
34191  // --- Inst_DS__DS_MAX_I32 class methods ---
34192 
34194  : Inst_DS(iFmt, "ds_max_i32")
34195  {
34196  } // Inst_DS__DS_MAX_I32
34197 
34199  {
34200  } // ~Inst_DS__DS_MAX_I32
34201 
34202  // --- description from .arch file ---
34203  // 32b:
34204  // tmp = MEM[ADDR];
34205  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
34206  // RETURN_DATA = tmp.
34207  void
34209  {
34211  } // execute
34212  // --- Inst_DS__DS_MIN_U32 class methods ---
34213 
34215  : Inst_DS(iFmt, "ds_min_u32")
34216  {
34217  } // Inst_DS__DS_MIN_U32
34218 
34220  {
34221  } // ~Inst_DS__DS_MIN_U32
34222 
34223  // --- description from .arch file ---
34224  // 32b:
34225  // tmp = MEM[ADDR];
34226  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
34227  // RETURN_DATA = tmp.
34228  void
34230  {
34232  } // execute
34233  // --- Inst_DS__DS_MAX_U32 class methods ---
34234 
34236  : Inst_DS(iFmt, "ds_max_u32")
34237  {
34238  } // Inst_DS__DS_MAX_U32
34239 
34241  {
34242  } // ~Inst_DS__DS_MAX_U32
34243 
34244  // --- description from .arch file ---
34245  // 32b:
34246  // tmp = MEM[ADDR];
34247  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
34248  // RETURN_DATA = tmp.
34249  void
34251  {
34253  } // execute
34254  // --- Inst_DS__DS_AND_B32 class methods ---
34255 
34257  : Inst_DS(iFmt, "ds_and_b32")
34258  {
34259  } // Inst_DS__DS_AND_B32
34260 
34262  {
34263  } // ~Inst_DS__DS_AND_B32
34264 
34265  // --- description from .arch file ---
34266  // 32b:
34267  // tmp = MEM[ADDR];
34268  // MEM[ADDR] &= DATA;
34269  // RETURN_DATA = tmp.
34270  void
34272  {
34274  } // execute
34275  // --- Inst_DS__DS_OR_B32 class methods ---
34276 
34278  : Inst_DS(iFmt, "ds_or_b32")
34279  {
34280  setFlag(MemoryRef);
34281  setFlag(GroupSegment);
34282  setFlag(AtomicOr);
34283  setFlag(AtomicNoReturn);
34284  } // Inst_DS__DS_OR_B32
34285 
34287  {
34288  } // ~Inst_DS__DS_OR_B32
34289 
34290  // --- description from .arch file ---
34291  // 32b:
34292  // MEM[ADDR] |= DATA;
34293  void
34295  {
34296  Wavefront *wf = gpuDynInst->wavefront();
34297 
34298  if (gpuDynInst->exec_mask.none()) {
34299  wf->decLGKMInstsIssued();
34300  return;
34301  }
34302 
34303  gpuDynInst->execUnitId = wf->execUnitId;
34304  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34305  gpuDynInst->latency.set(
34306  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34307  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34308  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
34309 
34310  addr.read();
34311  data.read();
34312 
34313  calcAddr(gpuDynInst, addr);
34314 
34315  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34316  if (gpuDynInst->exec_mask[lane]) {
34317  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
34318  = data[lane];
34319  }
34320  }
34321 
34322  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34323  } // execute
34324 
34325  void
34327  {
34328  Addr offset0 = instData.OFFSET0;
34329  Addr offset1 = instData.OFFSET1;
34330  Addr offset = (offset1 << 8) | offset0;
34331 
34332  initAtomicAccess<VecElemU32>(gpuDynInst, offset);
34333  } // initiateAcc
34334 
34335  void
34337  {
34338  } // completeAcc
34339 
34340  // --- Inst_DS__DS_XOR_B32 class methods ---
34341 
34343  : Inst_DS(iFmt, "ds_xor_b32")
34344  {
34345  } // Inst_DS__DS_XOR_B32
34346 
34348  {
34349  } // ~Inst_DS__DS_XOR_B32
34350 
34351  // --- description from .arch file ---
34352  // 32b:
34353  // tmp = MEM[ADDR];
34354  // MEM[ADDR] ^= DATA;
34355  // RETURN_DATA = tmp.
34356  void
34358  {
34360  } // execute
34361  // --- Inst_DS__DS_MSKOR_B32 class methods ---
34362 
34364  : Inst_DS(iFmt, "ds_mskor_b32")
34365  {
34366  } // Inst_DS__DS_MSKOR_B32
34367 
34369  {
34370  } // ~Inst_DS__DS_MSKOR_B32
34371 
34372  // --- description from .arch file ---
34373  // 32b:
34374  // tmp = MEM[ADDR];
34375  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
34376  // RETURN_DATA = tmp.
34377  // Masked dword OR, D0 contains the mask and D1 contains the new value.
34378  void
34380  {
34382  } // execute
34383  // --- Inst_DS__DS_WRITE_B32 class methods ---
34384 
34386  : Inst_DS(iFmt, "ds_write_b32")
34387  {
34388  setFlag(MemoryRef);
34389  setFlag(Store);
34390  } // Inst_DS__DS_WRITE_B32
34391 
34393  {
34394  } // ~Inst_DS__DS_WRITE_B32
34395 
34396  // --- description from .arch file ---
34397  // 32b:
34398  // MEM[ADDR] = DATA.
34399  // Write dword.
34400  void
34402  {
34403  Wavefront *wf = gpuDynInst->wavefront();
34404 
34405  if (gpuDynInst->exec_mask.none()) {
34406  wf->decLGKMInstsIssued();
34407  return;
34408  }
34409 
34410  gpuDynInst->execUnitId = wf->execUnitId;
34411  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34412  gpuDynInst->latency.set(
34413  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34414  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34415  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
34416 
34417  addr.read();
34418  data.read();
34419 
34420  calcAddr(gpuDynInst, addr);
34421 
34422  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34423  if (gpuDynInst->exec_mask[lane]) {
34424  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane]
34425  = data[lane];
34426  }
34427  }
34428 
34429  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34430  } // execute
34431 
34432  void
34434  {
34435  Addr offset0 = instData.OFFSET0;
34436  Addr offset1 = instData.OFFSET1;
34437  Addr offset = (offset1 << 8) | offset0;
34438 
34439  initMemWrite<VecElemU32>(gpuDynInst, offset);
34440  } // initiateAcc
34441 
34442  void
34444  {
34445  } // completeAcc
34446  // --- Inst_DS__DS_WRITE2_B32 class methods ---
34447 
34449  : Inst_DS(iFmt, "ds_write2_b32")
34450  {
34451  setFlag(MemoryRef);
34452  setFlag(Store);
34453  } // Inst_DS__DS_WRITE2_B32
34454 
34456  {
34457  } // ~Inst_DS__DS_WRITE2_B32
34458 
34459  // --- description from .arch file ---
34460  // 32b:
34461  // MEM[ADDR_BASE + OFFSET0 * 4] = DATA;
34462  // MEM[ADDR_BASE + OFFSET1 * 4] = DATA2.
34463  // Write 2 dwords.
34464  void
34466  {
34467  Wavefront *wf = gpuDynInst->wavefront();
34468 
34469  if (gpuDynInst->exec_mask.none()) {
34470  wf->decLGKMInstsIssued();
34471  return;
34472  }
34473 
34474  gpuDynInst->execUnitId = wf->execUnitId;
34475  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34476  gpuDynInst->latency.set(
34477  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34478  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34479  ConstVecOperandU32 data0(gpuDynInst, extData.DATA0);
34480  ConstVecOperandU32 data1(gpuDynInst, extData.DATA1);
34481 
34482  addr.read();
34483  data0.read();
34484  data1.read();
34485 
34486  calcAddr(gpuDynInst, addr);
34487 
34488  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34489  if (gpuDynInst->exec_mask[lane]) {
34490  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 2]
34491  = data0[lane];
34492  (reinterpret_cast<VecElemU32*>(
34493  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
34494  }
34495  }
34496 
34497  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34498  } // execute
34499 
34500  void
34502  {
34503  Addr offset0 = instData.OFFSET0 * 4;
34504  Addr offset1 = instData.OFFSET1 * 4;
34505 
34506  initDualMemWrite<VecElemU32>(gpuDynInst, offset0, offset1);
34507  }
34508 
34509  void
34511  {
34512  }
34513  // --- Inst_DS__DS_WRITE2ST64_B32 class methods ---
34514 
34516  : Inst_DS(iFmt, "ds_write2st64_b32")
34517  {
34518  setFlag(MemoryRef);
34519  setFlag(Store);
34520  } // Inst_DS__DS_WRITE2ST64_B32
34521 
34523  {
34524  } // ~Inst_DS__DS_WRITE2ST64_B32
34525 
34526  // --- description from .arch file ---
34527  // 32b:
34528  // MEM[ADDR_BASE + OFFSET0 * 4 * 64] = DATA;
34529  // MEM[ADDR_BASE + OFFSET1 * 4 * 64] = DATA2;
34530  // Write 2 dwords.
34531  void
34533  {
34534  Wavefront *wf = gpuDynInst->wavefront();
34535 
34536  if (gpuDynInst->exec_mask.none()) {
34537  wf->decLGKMInstsIssued();
34538  return;
34539  }
34540 
34541  gpuDynInst->execUnitId = wf->execUnitId;
34542  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34543  gpuDynInst->latency.set(
34544  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34545  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34546  ConstVecOperandU32 data0(gpuDynInst, extData.DATA0);
34547  ConstVecOperandU32 data1(gpuDynInst, extData.DATA1);
34548 
34549  addr.read();
34550  data0.read();
34551  data1.read();
34552 
34553  calcAddr(gpuDynInst, addr);
34554 
34555  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34556  if (gpuDynInst->exec_mask[lane]) {
34557  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 2]
34558  = data0[lane];
34559  (reinterpret_cast<VecElemU32*>(
34560  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
34561  }
34562  }
34563 
34564  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34565  } // execute
34566 
34567  void
34569  {
34570  Addr offset0 = instData.OFFSET0 * 4 * 64;
34571  Addr offset1 = instData.OFFSET1 * 4 * 64;
34572 
34573  initDualMemWrite<VecElemU32>(gpuDynInst, offset0, offset1);
34574  }
34575 
34576  void
34578  {
34579  }
34580  // --- Inst_DS__DS_CMPST_B32 class methods ---
34581 
34583  : Inst_DS(iFmt, "ds_cmpst_b32")
34584  {
34585  } // Inst_DS__DS_CMPST_B32
34586 
34588  {
34589  } // ~Inst_DS__DS_CMPST_B32
34590 
34591  // --- description from .arch file ---
34592  // 32b:
34593  // tmp = MEM[ADDR];
34594  // src = DATA2;
34595  // cmp = DATA;
34596  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
34597  // RETURN_DATA[0] = tmp.
34598  // Compare and store.
34599  // Caution, the order of src and cmp are the *opposite* of the
34600  // --- BUFFER_ATOMIC_CMPSWAP opcode.
34601  void
34603  {
34605  } // execute
34606  // --- Inst_DS__DS_CMPST_F32 class methods ---
34607 
34609  : Inst_DS(iFmt, "ds_cmpst_f32")
34610  {
34611  setFlag(F32);
34612  } // Inst_DS__DS_CMPST_F32
34613 
34615  {
34616  } // ~Inst_DS__DS_CMPST_F32
34617 
34618  // --- description from .arch file ---
34619  // 32b:
34620  // tmp = MEM[ADDR];
34621  // src = DATA2;
34622  // cmp = DATA;
34623  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
34624  // RETURN_DATA[0] = tmp.
34625  // Floating point compare and store that handles NaN/INF/denormal values.
34626  // Caution, the order of src and cmp are the *opposite* of the
34627  // --- BUFFER_ATOMIC_FCMPSWAP opcode.
34628  void
34630  {
34632  } // execute
34633  // --- Inst_DS__DS_MIN_F32 class methods ---
34634 
34636  : Inst_DS(iFmt, "ds_min_f32")
34637  {
34638  setFlag(F32);
34639  } // Inst_DS__DS_MIN_F32
34640 
34642  {
34643  } // ~Inst_DS__DS_MIN_F32
34644 
34645  // --- description from .arch file ---
34646  // 32b.
34647  // tmp = MEM[ADDR];
34648  // src = DATA;
34649  // cmp = DATA2;
34650  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
34651  // Floating point minimum that handles NaN/INF/denormal values.
34652  // Note that this opcode is slightly more general-purpose than
34653  // --- BUFFER_ATOMIC_FMIN.
34654  void
34656  {
34658  } // execute
34659  // --- Inst_DS__DS_MAX_F32 class methods ---
34660 
34662  : Inst_DS(iFmt, "ds_max_f32")
34663  {
34664  setFlag(F32);
34665  } // Inst_DS__DS_MAX_F32
34666 
34668  {
34669  } // ~Inst_DS__DS_MAX_F32
34670 
34671  // --- description from .arch file ---
34672  // 32b.
34673  // tmp = MEM[ADDR];
34674  // src = DATA;
34675  // cmp = DATA2;
34676  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
34677  // Floating point maximum that handles NaN/INF/denormal values.
34678  // Note that this opcode is slightly more general-purpose than
34679  // --- BUFFER_ATOMIC_FMAX.
34680  void
34682  {
34684  } // execute
34685  // --- Inst_DS__DS_NOP class methods ---
34686 
34688  : Inst_DS(iFmt, "ds_nop")
34689  {
34690  setFlag(Nop);
34691  } // Inst_DS__DS_NOP
34692 
34694  {
34695  } // ~Inst_DS__DS_NOP
34696 
34697  // --- description from .arch file ---
34698  // Do nothing.
34699  void
34701  {
34702  gpuDynInst->wavefront()->decLGKMInstsIssued();
34703  } // execute
34704  // --- Inst_DS__DS_ADD_F32 class methods ---
34705 
34707  : Inst_DS(iFmt, "ds_add_f32")
34708  {
34709  setFlag(F32);
34710  setFlag(MemoryRef);
34711  setFlag(GroupSegment);
34712  setFlag(AtomicAdd);
34713  setFlag(AtomicNoReturn);
34714  } // Inst_DS__DS_ADD_F32
34715 
34717  {
34718  } // ~Inst_DS__DS_ADD_F32
34719 
34720  // --- description from .arch file ---
34721  // 32b:
34722  // MEM[ADDR] += DATA;
34723  // Floating point add that handles NaN/INF/denormal values.
34724  void
34726  {
34727  Wavefront *wf = gpuDynInst->wavefront();
34728 
34729  if (gpuDynInst->exec_mask.none()) {
34730  wf->decLGKMInstsIssued();
34731  return;
34732  }
34733 
34734  gpuDynInst->execUnitId = wf->execUnitId;
34735  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34736  gpuDynInst->latency.set(
34737  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34738  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34739  ConstVecOperandF32 data(gpuDynInst, extData.DATA0);
34740 
34741  addr.read();
34742  data.read();
34743 
34744  calcAddr(gpuDynInst, addr);
34745 
34746  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34747  if (gpuDynInst->exec_mask[lane]) {
34748  (reinterpret_cast<VecElemF32*>(gpuDynInst->a_data))[lane]
34749  = data[lane];
34750  }
34751  }
34752 
34753  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34754  } // execute
34755 
34756  void
34758  {
34759  Addr offset0 = instData.OFFSET0;
34760  Addr offset1 = instData.OFFSET1;
34761  Addr offset = (offset1 << 8) | offset0;
34762 
34763  initAtomicAccess<VecElemF32>(gpuDynInst, offset);
34764  } // initiateAcc
34765 
34766  void
34768  {
34769  } // completeAcc
34770  // --- Inst_DS__DS_WRITE_B8 class methods ---
34771 
34773  : Inst_DS(iFmt, "ds_write_b8")
34774  {
34775  setFlag(MemoryRef);
34776  setFlag(Store);
34777  } // Inst_DS__DS_WRITE_B8
34778 
34780  {
34781  } // ~Inst_DS__DS_WRITE_B8
34782 
34783  // --- description from .arch file ---
34784  // MEM[ADDR] = DATA[7:0].
34785  // Byte write.
34786  void
34788  {
34789  Wavefront *wf = gpuDynInst->wavefront();
34790 
34791  if (gpuDynInst->exec_mask.none()) {
34792  wf->decLGKMInstsIssued();
34793  return;
34794  }
34795 
34796  gpuDynInst->execUnitId = wf->execUnitId;
34797  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34798  gpuDynInst->latency.set(
34799  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34800  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34801  ConstVecOperandU8 data(gpuDynInst, extData.DATA0);
34802 
34803  addr.read();
34804  data.read();
34805 
34806  calcAddr(gpuDynInst, addr);
34807 
34808  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34809  if (gpuDynInst->exec_mask[lane]) {
34810  (reinterpret_cast<VecElemU8*>(gpuDynInst->d_data))[lane]
34811  = data[lane];
34812  }
34813  }
34814 
34815  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34816  } // execute
34817 
34818  void
34820  {
34821  Addr offset0 = instData.OFFSET0;
34822  Addr offset1 = instData.OFFSET1;
34823  Addr offset = (offset1 << 8) | offset0;
34824 
34825  initMemWrite<VecElemU8>(gpuDynInst, offset);
34826  } // initiateAcc
34827 
34828  void
34830  {
34831  } // completeAcc
34832  // --- Inst_DS__DS_WRITE_B8_D16_HI class methods ---
34833 
34835  : Inst_DS(iFmt, "ds_write_b8_d16_hi")
34836  {
34837  setFlag(MemoryRef);
34838  setFlag(Store);
34839  } // Inst_DS__DS_WRITE_B8_D16_HI
34840 
34842  {
34843  } // ~Inst_DS__DS_WRITE_B8_D16_HI
34844 
34845  // --- description from .arch file ---
34846  // MEM[ADDR] = DATA[23:16].
34847  // Byte write in to high word.
34848  void
34850  {
34851  Wavefront *wf = gpuDynInst->wavefront();
34852 
34853  if (gpuDynInst->exec_mask.none()) {
34854  wf->decLGKMInstsIssued();
34855  return;
34856  }
34857 
34858  gpuDynInst->execUnitId = wf->execUnitId;
34859  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34860  gpuDynInst->latency.set(
34861  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34862  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34863  ConstVecOperandU8 data(gpuDynInst, extData.DATA0);
34864 
34865  addr.read();
34866  data.read();
34867 
34868  calcAddr(gpuDynInst, addr);
34869 
34870  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34871  if (gpuDynInst->exec_mask[lane]) {
34872  (reinterpret_cast<VecElemU8*>(gpuDynInst->d_data))[lane]
34873  = bits(data[lane], 23, 16);
34874  }
34875  }
34876 
34877  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34878  } // execute
34879 
34880  void
34882  {
34883  Addr offset0 = instData.OFFSET0;
34884  Addr offset1 = instData.OFFSET1;
34885  Addr offset = (offset1 << 8) | offset0;
34886 
34887  initMemWrite<VecElemU8>(gpuDynInst, offset);
34888  } // initiateAcc
34889 
34890  void
34892  {
34893  } // completeAcc
34894  // --- Inst_DS__DS_WRITE_B16 class methods ---
34895 
34897  : Inst_DS(iFmt, "ds_write_b16")
34898  {
34899  setFlag(MemoryRef);
34900  setFlag(Store);
34901  } // Inst_DS__DS_WRITE_B16
34902 
34904  {
34905  } // ~Inst_DS__DS_WRITE_B16
34906 
34907  // --- description from .arch file ---
34908  // MEM[ADDR] = DATA[15:0]
34909  // Short write.
34910  void
34912  {
34913  Wavefront *wf = gpuDynInst->wavefront();
34914 
34915  if (gpuDynInst->exec_mask.none()) {
34916  wf->decLGKMInstsIssued();
34917  return;
34918  }
34919 
34920  gpuDynInst->execUnitId = wf->execUnitId;
34921  gpuDynInst->latency.init(gpuDynInst->computeUnit());
34922  gpuDynInst->latency.set(
34923  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
34924  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
34925  ConstVecOperandU16 data(gpuDynInst, extData.DATA0);
34926 
34927  addr.read();
34928  data.read();
34929 
34930  calcAddr(gpuDynInst, addr);
34931 
34932  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
34933  if (gpuDynInst->exec_mask[lane]) {
34934  (reinterpret_cast<VecElemU16*>(gpuDynInst->d_data))[lane]
34935  = data[lane];
34936  }
34937  }
34938 
34939  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
34940  } // execute
34941 
34942  void
34944  {
34945  Addr offset0 = instData.OFFSET0;
34946  Addr offset1 = instData.OFFSET1;
34947  Addr offset = (offset1 << 8) | offset0;
34948 
34949  initMemWrite<VecElemU16>(gpuDynInst, offset);
34950  } // initiateAcc
34951 
34952  void
34954  {
34955  } // completeAcc
34956  // --- Inst_DS__DS_ADD_RTN_U32 class methods ---
34957 
34959  : Inst_DS(iFmt, "ds_add_rtn_u32")
34960  {
34961  } // Inst_DS__DS_ADD_RTN_U32
34962 
34964  {
34965  } // ~Inst_DS__DS_ADD_RTN_U32
34966 
34967  // --- description from .arch file ---
34968  // 32b:
34969  // tmp = MEM[ADDR];
34970  // MEM[ADDR] += DATA;
34971  // RETURN_DATA = tmp.
34972  void
34974  {
34976  } // execute
34977  // --- Inst_DS__DS_SUB_RTN_U32 class methods ---
34978 
34980  : Inst_DS(iFmt, "ds_sub_rtn_u32")
34981  {
34982  } // Inst_DS__DS_SUB_RTN_U32
34983 
34985  {
34986  } // ~Inst_DS__DS_SUB_RTN_U32
34987 
34988  // --- description from .arch file ---
34989  // 32b:
34990  // tmp = MEM[ADDR];
34991  // MEM[ADDR] -= DATA;
34992  // RETURN_DATA = tmp.
34993  void
34995  {
34997  } // execute
34998  // --- Inst_DS__DS_RSUB_RTN_U32 class methods ---
34999 
35001  : Inst_DS(iFmt, "ds_rsub_rtn_u32")
35002  {
35003  } // Inst_DS__DS_RSUB_RTN_U32
35004 
35006  {
35007  } // ~Inst_DS__DS_RSUB_RTN_U32
35008 
35009  // --- description from .arch file ---
35010  // 32b:
35011  // tmp = MEM[ADDR];
35012  // MEM[ADDR] = DATA - MEM[ADDR];
35013  // RETURN_DATA = tmp.
35014  // Subtraction with reversed operands.
35015  void
35017  {
35019  } // execute
35020  // --- Inst_DS__DS_INC_RTN_U32 class methods ---
35021 
35023  : Inst_DS(iFmt, "ds_inc_rtn_u32")
35024  {
35025  } // Inst_DS__DS_INC_RTN_U32
35026 
35028  {
35029  } // ~Inst_DS__DS_INC_RTN_U32
35030 
35031  // --- description from .arch file ---
35032  // 32b:
35033  // tmp = MEM[ADDR];
35034  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
35035  // RETURN_DATA = tmp.
35036  void
35038  {
35040  } // execute
35041  // --- Inst_DS__DS_DEC_RTN_U32 class methods ---
35042 
35044  : Inst_DS(iFmt, "ds_dec_rtn_u32")
35045  {
35046  } // Inst_DS__DS_DEC_RTN_U32
35047 
35049  {
35050  } // ~Inst_DS__DS_DEC_RTN_U32
35051 
35052  // --- description from .arch file ---
35053  // 32b:
35054  // tmp = MEM[ADDR];
35055  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
35056  // (unsigned compare); RETURN_DATA = tmp.
35057  void
35059  {
35061  } // execute
35062  // --- Inst_DS__DS_MIN_RTN_I32 class methods ---
35063 
35065  : Inst_DS(iFmt, "ds_min_rtn_i32")
35066  {
35067  } // Inst_DS__DS_MIN_RTN_I32
35068 
35070  {
35071  } // ~Inst_DS__DS_MIN_RTN_I32
35072 
35073  // --- description from .arch file ---
35074  // 32b:
35075  // tmp = MEM[ADDR];
35076  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
35077  // RETURN_DATA = tmp.
35078  void
35080  {
35082  } // execute
35083  // --- Inst_DS__DS_MAX_RTN_I32 class methods ---
35084 
35086  : Inst_DS(iFmt, "ds_max_rtn_i32")
35087  {
35088  } // Inst_DS__DS_MAX_RTN_I32
35089 
35091  {
35092  } // ~Inst_DS__DS_MAX_RTN_I32
35093 
35094  // --- description from .arch file ---
35095  // 32b:
35096  // tmp = MEM[ADDR];
35097  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
35098  // RETURN_DATA = tmp.
35099  void
35101  {
35103  } // execute
35104  // --- Inst_DS__DS_MIN_RTN_U32 class methods ---
35105 
35107  : Inst_DS(iFmt, "ds_min_rtn_u32")
35108  {
35109  } // Inst_DS__DS_MIN_RTN_U32
35110 
35112  {
35113  } // ~Inst_DS__DS_MIN_RTN_U32
35114 
35115  // --- description from .arch file ---
35116  // 32b:
35117  // tmp = MEM[ADDR];
35118  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
35119  // RETURN_DATA = tmp.
35120  void
35122  {
35124  } // execute
35125  // --- Inst_DS__DS_MAX_RTN_U32 class methods ---
35126 
35128  : Inst_DS(iFmt, "ds_max_rtn_u32")
35129  {
35130  } // Inst_DS__DS_MAX_RTN_U32
35131 
35133  {
35134  } // ~Inst_DS__DS_MAX_RTN_U32
35135 
35136  // --- description from .arch file ---
35137  // 32b:
35138  // tmp = MEM[ADDR];
35139  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
35140  // RETURN_DATA = tmp.
35141  void
35143  {
35145  } // execute
35146  // --- Inst_DS__DS_AND_RTN_B32 class methods ---
35147 
35149  : Inst_DS(iFmt, "ds_and_rtn_b32")
35150  {
35151  } // Inst_DS__DS_AND_RTN_B32
35152 
35154  {
35155  } // ~Inst_DS__DS_AND_RTN_B32
35156 
35157  // --- description from .arch file ---
35158  // 32b:
35159  // tmp = MEM[ADDR];
35160  // MEM[ADDR] &= DATA;
35161  // RETURN_DATA = tmp.
35162  void
35164  {
35166  } // execute
35167  // --- Inst_DS__DS_OR_RTN_B32 class methods ---
35168 
35170  : Inst_DS(iFmt, "ds_or_rtn_b32")
35171  {
35172  } // Inst_DS__DS_OR_RTN_B32
35173 
35175  {
35176  } // ~Inst_DS__DS_OR_RTN_B32
35177 
35178  // --- description from .arch file ---
35179  // 32b:
35180  // tmp = MEM[ADDR];
35181  // MEM[ADDR] |= DATA;
35182  // RETURN_DATA = tmp.
35183  void
35185  {
35187  } // execute
35188  // --- Inst_DS__DS_XOR_RTN_B32 class methods ---
35189 
35191  : Inst_DS(iFmt, "ds_xor_rtn_b32")
35192  {
35193  } // Inst_DS__DS_XOR_RTN_B32
35194 
35196  {
35197  } // ~Inst_DS__DS_XOR_RTN_B32
35198 
35199  // --- description from .arch file ---
35200  // 32b:
35201  // tmp = MEM[ADDR];
35202  // MEM[ADDR] ^= DATA;
35203  // RETURN_DATA = tmp.
35204  void
35206  {
35208  } // execute
35209  // --- Inst_DS__DS_MSKOR_RTN_B32 class methods ---
35210 
35212  : Inst_DS(iFmt, "ds_mskor_rtn_b32")
35213  {
35214  } // Inst_DS__DS_MSKOR_RTN_B32
35215 
35217  {
35218  } // ~Inst_DS__DS_MSKOR_RTN_B32
35219 
35220  // --- description from .arch file ---
35221  // 32b:
35222  // tmp = MEM[ADDR];
35223  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
35224  // RETURN_DATA = tmp.
35225  // Masked dword OR, D0 contains the mask and D1 contains the new value.
35226  void
35228  {
35230  } // execute
35231  // --- Inst_DS__DS_WRXCHG_RTN_B32 class methods ---
35232 
35234  : Inst_DS(iFmt, "ds_wrxchg_rtn_b32")
35235  {
35236  } // Inst_DS__DS_WRXCHG_RTN_B32
35237 
35239  {
35240  } // ~Inst_DS__DS_WRXCHG_RTN_B32
35241 
35242  // --- description from .arch file ---
35243  // tmp = MEM[ADDR];
35244  // MEM[ADDR] = DATA;
35245  // RETURN_DATA = tmp.
35246  // Write-exchange operation.
35247  void
35249  {
35251  } // execute
35252  // --- Inst_DS__DS_WRXCHG2_RTN_B32 class methods ---
35253 
35255  : Inst_DS(iFmt, "ds_wrxchg2_rtn_b32")
35256  {
35257  } // Inst_DS__DS_WRXCHG2_RTN_B32
35258 
35260  {
35261  } // ~Inst_DS__DS_WRXCHG2_RTN_B32
35262 
35263  // --- description from .arch file ---
35264  // Write-exchange 2 separate dwords.
35265  void
35267  {
35269  } // execute
35270  // --- Inst_DS__DS_WRXCHG2ST64_RTN_B32 class methods ---
35271 
35273  InFmt_DS *iFmt)
35274  : Inst_DS(iFmt, "ds_wrxchg2st64_rtn_b32")
35275  {
35276  } // Inst_DS__DS_WRXCHG2ST64_RTN_B32
35277 
35279  {
35280  } // ~Inst_DS__DS_WRXCHG2ST64_RTN_B32
35281 
35282  // --- description from .arch file ---
35283  // Write-exchange 2 separate dwords with a stride of 64 dwords.
35284  void
35286  {
35288  } // execute
35289  // --- Inst_DS__DS_CMPST_RTN_B32 class methods ---
35290 
35292  : Inst_DS(iFmt, "ds_cmpst_rtn_b32")
35293  {
35294  } // Inst_DS__DS_CMPST_RTN_B32
35295 
35297  {
35298  } // ~Inst_DS__DS_CMPST_RTN_B32
35299 
35300  // --- description from .arch file ---
35301  // 32b:
35302  // tmp = MEM[ADDR];
35303  // src = DATA2;
35304  // cmp = DATA;
35305  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
35306  // RETURN_DATA[0] = tmp.
35307  // Compare and store.
35308  // Caution, the order of src and cmp are the *opposite* of the
35309  // --- BUFFER_ATOMIC_CMPSWAP opcode.
35310  void
35312  {
35314  } // execute
35315  // --- Inst_DS__DS_CMPST_RTN_F32 class methods ---
35316 
35318  : Inst_DS(iFmt, "ds_cmpst_rtn_f32")
35319  {
35320  setFlag(F32);
35321  } // Inst_DS__DS_CMPST_RTN_F32
35322 
35324  {
35325  } // ~Inst_DS__DS_CMPST_RTN_F32
35326 
35327  // --- description from .arch file ---
35328  // 32b:
35329  // tmp = MEM[ADDR];
35330  // src = DATA2;
35331  // cmp = DATA;
35332  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
35333  // RETURN_DATA[0] = tmp.
35334  // Floating point compare and store that handles NaN/INF/denormal values.
35335  // Caution, the order of src and cmp are the *opposite* of the
35336  // --- BUFFER_ATOMIC_FCMPSWAP opcode.
35337  void
35339  {
35341  } // execute
35342  // --- Inst_DS__DS_MIN_RTN_F32 class methods ---
35343 
35345  : Inst_DS(iFmt, "ds_min_rtn_f32")
35346  {
35347  setFlag(F32);
35348  } // Inst_DS__DS_MIN_RTN_F32
35349 
35351  {
35352  } // ~Inst_DS__DS_MIN_RTN_F32
35353 
35354  // --- description from .arch file ---
35355  // 32b.
35356  // tmp = MEM[ADDR];
35357  // src = DATA;
35358  // cmp = DATA2;
35359  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
35360  // Floating point minimum that handles NaN/INF/denormal values.
35361  // Note that this opcode is slightly more general-purpose than
35362  // --- BUFFER_ATOMIC_FMIN.
35363  void
35365  {
35367  } // execute
35368  // --- Inst_DS__DS_MAX_RTN_F32 class methods ---
35369 
35371  : Inst_DS(iFmt, "ds_max_rtn_f32")
35372  {
35373  setFlag(F32);
35374  } // Inst_DS__DS_MAX_RTN_F32
35375 
35377  {
35378  } // ~Inst_DS__DS_MAX_RTN_F32
35379 
35380  // --- description from .arch file ---
35381  // 32b.
35382  // tmp = MEM[ADDR];
35383  // src = DATA;
35384  // cmp = DATA2;
35385  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
35386  // Floating point maximum that handles NaN/INF/denormal values.
35387  // Note that this opcode is slightly more general-purpose than
35388  // --- BUFFER_ATOMIC_FMAX.
35389  void
35391  {
35393  } // execute
35394  // --- Inst_DS__DS_WRAP_RTN_B32 class methods ---
35395 
35397  : Inst_DS(iFmt, "ds_wrap_rtn_b32")
35398  {
35399  } // Inst_DS__DS_WRAP_RTN_B32
35400 
35402  {
35403  } // ~Inst_DS__DS_WRAP_RTN_B32
35404 
35405  // --- description from .arch file ---
35406  // tmp = MEM[ADDR];
35407  // MEM[ADDR] = (tmp >= DATA) ? tmp - DATA : tmp + DATA2;
35408  // RETURN_DATA = tmp.
35409  void
35411  {
35413  } // execute
35414  // --- Inst_DS__DS_ADD_RTN_F32 class methods ---
35415 
35417  : Inst_DS(iFmt, "ds_add_rtn_f32")
35418  {
35419  setFlag(F32);
35420  } // Inst_DS__DS_ADD_RTN_F32
35421 
35423  {
35424  } // ~Inst_DS__DS_ADD_RTN_F32
35425 
35426  // --- description from .arch file ---
35427  // 32b:
35428  // tmp = MEM[ADDR];
35429  // MEM[ADDR] += DATA;
35430  // RETURN_DATA = tmp.
35431  // Floating point add that handles NaN/INF/denormal values.
35432  void
35434  {
35436  } // execute
35437  // --- Inst_DS__DS_READ_B32 class methods ---
35438 
35440  : Inst_DS(iFmt, "ds_read_b32")
35441  {
35442  setFlag(MemoryRef);
35443  setFlag(Load);
35444  } // Inst_DS__DS_READ_B32
35445 
35447  {
35448  } // ~Inst_DS__DS_READ_B32
35449 
35450  // --- description from .arch file ---
35451  // RETURN_DATA = MEM[ADDR].
35452  // Dword read.
35453  void
35455  {
35456  Wavefront *wf = gpuDynInst->wavefront();
35457 
35458  if (gpuDynInst->exec_mask.none()) {
35459  wf->decLGKMInstsIssued();
35460  return;
35461  }
35462 
35463  gpuDynInst->execUnitId = wf->execUnitId;
35464  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35465  gpuDynInst->latency.set(
35466  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
35467  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
35468 
35469  addr.read();
35470 
35471  calcAddr(gpuDynInst, addr);
35472 
35473  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
35474  } // execute
35475 
35476  void
35478  {
35479  Addr offset0 = instData.OFFSET0;
35480  Addr offset1 = instData.OFFSET1;
35481  Addr offset = (offset1 << 8) | offset0;
35482 
35483  initMemRead<VecElemU32>(gpuDynInst, offset);
35484  } // initiateAcc
35485 
35486  void
35488  {
35489  VecOperandU32 vdst(gpuDynInst, extData.VDST);
35490 
35491  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35492  if (gpuDynInst->exec_mask[lane]) {
35493  vdst[lane] = (reinterpret_cast<VecElemU32*>(
35494  gpuDynInst->d_data))[lane];
35495  }
35496  }
35497 
35498  vdst.write();
35499  } // completeAcc
35500  // --- Inst_DS__DS_READ2_B32 class methods ---
35501 
35503  : Inst_DS(iFmt, "ds_read2_b32")
35504  {
35505  setFlag(MemoryRef);
35506  setFlag(Load);
35507  } // Inst_DS__DS_READ2_B32
35508 
35510  {
35511  } // ~Inst_DS__DS_READ2_B32
35512 
35513  // --- description from .arch file ---
35514  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 4];
35515  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 4].
35516  // Read 2 dwords.
35517  void
35519  {
35520  Wavefront *wf = gpuDynInst->wavefront();
35521 
35522  if (gpuDynInst->exec_mask.none()) {
35523  wf->decLGKMInstsIssued();
35524  return;
35525  }
35526 
35527  gpuDynInst->execUnitId = wf->execUnitId;
35528  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35529  gpuDynInst->latency.set(
35530  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
35531  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
35532 
35533  addr.read();
35534 
35535  calcAddr(gpuDynInst, addr);
35536 
35537  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
35538  } // execute
35539 
35540  void
35542  {
35543  Addr offset0 = instData.OFFSET0 * 4;
35544  Addr offset1 = instData.OFFSET1 * 4;
35545 
35546  initDualMemRead<VecElemU32>(gpuDynInst, offset0, offset1);
35547  } // initiateAcc
35548 
35549  void
35551  {
35552  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
35553  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
35554 
35555  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35556  if (gpuDynInst->exec_mask[lane]) {
35557  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
35558  gpuDynInst->d_data))[lane * 2];
35559  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
35560  gpuDynInst->d_data))[lane * 2 + 1];
35561  }
35562  }
35563 
35564  vdst0.write();
35565  vdst1.write();
35566  } // completeAcc
35567  // --- Inst_DS__DS_READ2ST64_B32 class methods ---
35568 
35570  : Inst_DS(iFmt, "ds_read2st64_b32")
35571  {
35572  setFlag(MemoryRef);
35573  setFlag(Load);
35574  } // Inst_DS__DS_READ2ST64_B32
35575 
35577  {
35578  } // ~Inst_DS__DS_READ2ST64_B32
35579 
35580  // --- description from .arch file ---
35581  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 4 * 64];
35582  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 4 * 64].
35583  // Read 2 dwords.
35584  void
35586  {
35587  Wavefront *wf = gpuDynInst->wavefront();
35588 
35589  if (gpuDynInst->exec_mask.none()) {
35590  wf->decLGKMInstsIssued();
35591  return;
35592  }
35593 
35594  gpuDynInst->execUnitId = wf->execUnitId;
35595  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35596  gpuDynInst->latency.set(
35597  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
35598  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
35599 
35600  addr.read();
35601 
35602  calcAddr(gpuDynInst, addr);
35603 
35604  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
35605  } // execute
35606 
35607  void
35609  {
35610  Addr offset0 = (instData.OFFSET0 * 4 * 64);
35611  Addr offset1 = (instData.OFFSET1 * 4 * 64);
35612 
35613  initDualMemRead<VecElemU32>(gpuDynInst, offset0, offset1);
35614  }
35615 
35616  void
35618  {
35619  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
35620  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
35621 
35622  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35623  if (gpuDynInst->exec_mask[lane]) {
35624  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
35625  gpuDynInst->d_data))[lane * 2];
35626  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
35627  gpuDynInst->d_data))[lane * 2 + 1];
35628  }
35629  }
35630 
35631  vdst0.write();
35632  vdst1.write();
35633  }
35634  // --- Inst_DS__DS_READ_I8 class methods ---
35635 
35637  : Inst_DS(iFmt, "ds_read_i8")
35638  {
35639  setFlag(MemoryRef);
35640  setFlag(Load);
35641  } // Inst_DS__DS_READ_I8
35642 
35644  {
35645  } // ~Inst_DS__DS_READ_I8
35646 
35647  // --- description from .arch file ---
35648  // RETURN_DATA = signext(MEM[ADDR][7:0]).
35649  // Signed byte read.
35650  void
35652  {
35653  Wavefront *wf = gpuDynInst->wavefront();
35654 
35655  if (gpuDynInst->exec_mask.none()) {
35656  wf->decLGKMInstsIssued();
35657  return;
35658  }
35659 
35660  gpuDynInst->execUnitId = wf->execUnitId;
35661  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35662  gpuDynInst->latency.set(
35663  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
35664  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
35665 
35666  addr.read();
35667 
35668  calcAddr(gpuDynInst, addr);
35669 
35670  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
35671  } // execute
35672 
35673  void
35675  {
35676  Addr offset0 = instData.OFFSET0;
35677  Addr offset1 = instData.OFFSET1;
35678  Addr offset = (offset1 << 8) | offset0;
35679 
35680  initMemRead<VecElemI8>(gpuDynInst, offset);
35681  } // initiateAcc
35682 
35683  void
35685  {
35686  VecOperandU32 vdst(gpuDynInst, extData.VDST);
35687 
35688  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35689  if (gpuDynInst->exec_mask[lane]) {
35690  vdst[lane] = (VecElemU32)sext<8>((reinterpret_cast<VecElemI8*>(
35691  gpuDynInst->d_data))[lane]);
35692  }
35693  }
35694 
35695  vdst.write();
35696  } // completeAcc
35697  // --- Inst_DS__DS_READ_U8 class methods ---
35698 
35700  : Inst_DS(iFmt, "ds_read_u8")
35701  {
35702  setFlag(MemoryRef);
35703  setFlag(Load);
35704  } // Inst_DS__DS_READ_U8
35705 
35707  {
35708  } // ~Inst_DS__DS_READ_U8
35709 
35710  // --- description from .arch file ---
35711  // RETURN_DATA = {24'h0,MEM[ADDR][7:0]}.
35712  // Unsigned byte read.
35713  void
35715  {
35716  Wavefront *wf = gpuDynInst->wavefront();
35717 
35718  if (gpuDynInst->exec_mask.none()) {
35719  wf->decLGKMInstsIssued();
35720  return;
35721  }
35722 
35723  gpuDynInst->execUnitId = wf->execUnitId;
35724  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35725  gpuDynInst->latency.set(
35726  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
35727  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
35728 
35729  addr.read();
35730 
35731  calcAddr(gpuDynInst, addr);
35732 
35733  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
35734  } // execute
35735 
35736  void
35738  {
35739  Addr offset0 = instData.OFFSET0;
35740  Addr offset1 = instData.OFFSET1;
35741  Addr offset = (offset1 << 8) | offset0;
35742 
35743  initMemRead<VecElemU8>(gpuDynInst, offset);
35744  } // initiateAcc
35745 
35746  void
35748  {
35749  VecOperandU32 vdst(gpuDynInst, extData.VDST);
35750 
35751  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35752  if (gpuDynInst->exec_mask[lane]) {
35753  vdst[lane] = (VecElemU32)(reinterpret_cast<VecElemU8*>(
35754  gpuDynInst->d_data))[lane];
35755  }
35756  }
35757 
35758  vdst.write();
35759  } // completeAcc
35760  // --- Inst_DS__DS_READ_I16 class methods ---
35761 
35763  : Inst_DS(iFmt, "ds_read_i16")
35764  {
35765  setFlag(MemoryRef);
35766  setFlag(Load);
35767  } // Inst_DS__DS_READ_I16
35768 
35770  {
35771  } // ~Inst_DS__DS_READ_I16
35772 
35773  // --- description from .arch file ---
35774  // RETURN_DATA = signext(MEM[ADDR][15:0]).
35775  // Signed short read.
35776  void
35778  {
35780  } // execute
35781  // --- Inst_DS__DS_READ_U16 class methods ---
35782 
35784  : Inst_DS(iFmt, "ds_read_u16")
35785  {
35786  setFlag(MemoryRef);
35787  setFlag(Load);
35788  } // Inst_DS__DS_READ_U16
35789 
35791  {
35792  } // ~Inst_DS__DS_READ_U16
35793 
35794  // --- description from .arch file ---
35795  // RETURN_DATA = {16'h0,MEM[ADDR][15:0]}.
35796  // Unsigned short read.
35797  void
35799  {
35800  Wavefront *wf = gpuDynInst->wavefront();
35801 
35802  if (gpuDynInst->exec_mask.none()) {
35803  wf->decLGKMInstsIssued();
35804  return;
35805  }
35806 
35807  gpuDynInst->execUnitId = wf->execUnitId;
35808  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35809  gpuDynInst->latency.set(
35810  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
35811  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
35812 
35813  addr.read();
35814 
35815  calcAddr(gpuDynInst, addr);
35816 
35817  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
35818  } // execute
35819  void
35821  {
35822  Addr offset0 = instData.OFFSET0;
35823  Addr offset1 = instData.OFFSET1;
35824  Addr offset = (offset1 << 8) | offset0;
35825 
35826  initMemRead<VecElemU16>(gpuDynInst, offset);
35827  } // initiateAcc
35828 
35829  void
35831  {
35832  VecOperandU32 vdst(gpuDynInst, extData.VDST);
35833 
35834  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35835  if (gpuDynInst->exec_mask[lane]) {
35836  vdst[lane] = (VecElemU32)(reinterpret_cast<VecElemU16*>(
35837  gpuDynInst->d_data))[lane];
35838  }
35839  }
35840 
35841  vdst.write();
35842  } // completeAcc
35843  // --- Inst_DS__DS_SWIZZLE_B32 class methods ---
35844 
35846  : Inst_DS(iFmt, "ds_swizzle_b32")
35847  {
35853  setFlag(Load);
35854  } // Inst_DS__DS_SWIZZLE_B32
35855 
35857  {
35858  } // ~Inst_DS__DS_SWIZZLE_B32
35859 
35860  // --- description from .arch file ---
35861  // RETURN_DATA = swizzle(vgpr_data, offset1:offset0).
35862  // Dword swizzle, no data is written to LDS memory; See ds_opcodes.docx for
35863  // --- details.
35864  void
35866  {
35867  Wavefront *wf = gpuDynInst->wavefront();
35868  wf->decLGKMInstsIssued();
35869 
35870  if (gpuDynInst->exec_mask.none()) {
35871  return;
35872  }
35873 
35874  gpuDynInst->execUnitId = wf->execUnitId;
35875  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35876  gpuDynInst->latency.set(gpuDynInst->computeUnit()
35877  ->cyclesToTicks(Cycles(24)));
35878 
35879  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
35880  VecOperandU32 vdst(gpuDynInst, extData.VDST);
35898  VecElemU16 ds_pattern = ((instData.OFFSET1 << 8) | instData.OFFSET0);
35899 
35900  data.read();
35901 
35902  if (bits(ds_pattern, 15)) {
35903  // QDMode
35904  for (int lane = 0; lane < NumVecElemPerVecReg; lane += 4) {
35910  if (gpuDynInst->exec_mask[lane]) {
35911  int index0 = lane + bits(ds_pattern, 1, 0);
35912  panic_if(index0 >= NumVecElemPerVecReg, "%s: index0 (%d) "
35913  "is out of bounds.\n", gpuDynInst->disassemble(),
35914  index0);
35915  vdst[lane]
35916  = gpuDynInst->exec_mask[index0] ? data[index0]: 0;
35917  }
35918  if (gpuDynInst->exec_mask[lane + 1]) {
35919  int index1 = lane + bits(ds_pattern, 3, 2);
35920  panic_if(index1 >= NumVecElemPerVecReg, "%s: index1 (%d) "
35921  "is out of bounds.\n", gpuDynInst->disassemble(),
35922  index1);
35923  vdst[lane + 1]
35924  = gpuDynInst->exec_mask[index1] ? data[index1]: 0;
35925  }
35926  if (gpuDynInst->exec_mask[lane + 2]) {
35927  int index2 = lane + bits(ds_pattern, 5, 4);
35928  panic_if(index2 >= NumVecElemPerVecReg, "%s: index2 (%d) "
35929  "is out of bounds.\n", gpuDynInst->disassemble(),
35930  index2);
35931  vdst[lane + 2]
35932  = gpuDynInst->exec_mask[index2] ? data[index2]: 0;
35933  }
35934  if (gpuDynInst->exec_mask[lane + 3]) {
35935  int index3 = lane + bits(ds_pattern, 7, 6);
35936  panic_if(index3 >= NumVecElemPerVecReg, "%s: index3 (%d) "
35937  "is out of bounds.\n", gpuDynInst->disassemble(),
35938  index3);
35939  vdst[lane + 3]
35940  = gpuDynInst->exec_mask[index3] ? data[index3]: 0;
35941  }
35942  }
35943  } else {
35944  // Bit Mode
35945  int and_mask = bits(ds_pattern, 4, 0);
35946  int or_mask = bits(ds_pattern, 9, 5);
35947  int xor_mask = bits(ds_pattern, 14, 10);
35948  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35949  if (gpuDynInst->exec_mask[lane]) {
35950  int index = (((lane & and_mask) | or_mask) ^ xor_mask);
35951  // Adjust for the next 32 lanes.
35952  if (lane > 31) {
35953  index += 32;
35954  }
35955  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is "
35956  "out of bounds.\n", gpuDynInst->disassemble(),
35957  index);
35958  vdst[lane]
35959  = gpuDynInst->exec_mask[index] ? data[index] : 0;
35960  }
35961  }
35962  }
35963 
35964  vdst.write();
35965 
35972  wf->computeUnit->vrf[wf->simdId]->
35973  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
35974  } // execute
35975  // --- Inst_DS__DS_PERMUTE_B32 class methods ---
35976 
35978  : Inst_DS(iFmt, "ds_permute_b32")
35979  {
35980  setFlag(MemoryRef);
35986  setFlag(Load);
35987  } // Inst_DS__DS_PERMUTE_B32
35988 
35990  {
35991  } // ~Inst_DS__DS_PERMUTE_B32
35992 
35993  // --- description from .arch file ---
35994  // Forward permute.
35995  void
35997  {
35998  Wavefront *wf = gpuDynInst->wavefront();
35999  wf->decLGKMInstsIssued();
36000 
36001  if (gpuDynInst->exec_mask.none()) {
36002  return;
36003  }
36004 
36005  gpuDynInst->execUnitId = wf->execUnitId;
36006  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36007  gpuDynInst->latency.set(gpuDynInst->computeUnit()
36008  ->cyclesToTicks(Cycles(24)));
36009  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
36010  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
36011  VecOperandU32 vdst(gpuDynInst, extData.VDST);
36012 
36013  addr.read();
36014  data.read();
36015 
36016  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36017  if (gpuDynInst->exec_mask[lane]) {
36024  assert(!instData.OFFSET1);
36031  int index = bits(addr[lane] + instData.OFFSET0, 7, 2);
36032  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is out "
36033  "of bounds.\n", gpuDynInst->disassemble(), index);
36039  if (wf->execMask(index)) {
36040  vdst[index] = data[lane];
36041  } else {
36042  vdst[index] = 0;
36043  }
36044  }
36045  }
36046 
36047  vdst.write();
36048 
36055  wf->computeUnit->vrf[wf->simdId]->
36056  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
36057  } // execute
36058  // --- Inst_DS__DS_BPERMUTE_B32 class methods ---
36059 
36061  : Inst_DS(iFmt, "ds_bpermute_b32")
36062  {
36063  setFlag(MemoryRef);
36069  setFlag(Load);
36070  } // Inst_DS__DS_BPERMUTE_B32
36071 
36073  {
36074  } // ~Inst_DS__DS_BPERMUTE_B32
36075 
36076  // --- description from .arch file ---
36077  // Backward permute.
36078  void
36080  {
36081  Wavefront *wf = gpuDynInst->wavefront();
36082  wf->decLGKMInstsIssued();
36083 
36084  if (gpuDynInst->exec_mask.none()) {
36085  return;
36086  }
36087 
36088  gpuDynInst->execUnitId = wf->execUnitId;
36089  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36090  gpuDynInst->latency.set(gpuDynInst->computeUnit()
36091  ->cyclesToTicks(Cycles(24)));
36092  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
36093  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
36094  VecOperandU32 vdst(gpuDynInst, extData.VDST);
36095 
36096  addr.read();
36097  data.read();
36098 
36099  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36100  if (gpuDynInst->exec_mask[lane]) {
36107  assert(!instData.OFFSET1);
36114  int index = bits(addr[lane] + instData.OFFSET0, 7, 2);
36115  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is out "
36116  "of bounds.\n", gpuDynInst->disassemble(), index);
36122  if (wf->execMask(index)) {
36123  vdst[lane] = data[index];
36124  } else {
36125  vdst[lane] = 0;
36126  }
36127  }
36128  }
36129 
36130  vdst.write();
36131 
36138  wf->computeUnit->vrf[wf->simdId]->
36139  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
36140  } // execute
36141 
36142  // --- Inst_DS__DS_ADD_U64 class methods ---
36143 
36145  : Inst_DS(iFmt, "ds_add_u64")
36146  {
36147  setFlag(MemoryRef);
36148  setFlag(GroupSegment);
36149  setFlag(AtomicAdd);
36150  setFlag(AtomicNoReturn);
36151  } // Inst_DS__DS_ADD_U64
36152 
36154  {
36155  } // ~Inst_DS__DS_ADD_U64
36156 
36157  // --- description from .arch file ---
36158  // 64b:
36159  // MEM[ADDR] += DATA[0:1];
36160  void
36162  {
36163  Wavefront *wf = gpuDynInst->wavefront();
36164 
36165  if (gpuDynInst->exec_mask.none()) {
36166  wf->decLGKMInstsIssued();
36167  return;
36168  }
36169 
36170  gpuDynInst->execUnitId = wf->execUnitId;
36171  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36172  gpuDynInst->latency.set(
36173  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
36174  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
36175  ConstVecOperandU64 data(gpuDynInst, extData.DATA0);
36176 
36177  addr.read();
36178  data.read();
36179 
36180  calcAddr(gpuDynInst, addr);
36181 
36182  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36183  if (gpuDynInst->exec_mask[lane]) {
36184  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
36185  = data[lane];
36186  }
36187  }
36188 
36189  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
36190  } // execute
36191 
36192  void
36194  {
36195  Addr offset0 = instData.OFFSET0;
36196  Addr offset1 = instData.OFFSET1;
36197  Addr offset = (offset1 << 8) | offset0;
36198 
36199  initAtomicAccess<VecElemU64>(gpuDynInst, offset);
36200  } // initiateAcc
36201 
36202  void
36204  {
36205  } // completeAcc
36206  // --- Inst_DS__DS_SUB_U64 class methods ---
36207 
36209  : Inst_DS(iFmt, "ds_sub_u64")
36210  {
36211  } // Inst_DS__DS_SUB_U64
36212 
36214  {
36215  } // ~Inst_DS__DS_SUB_U64
36216 
36217  // --- description from .arch file ---
36218  // 64b:
36219  // tmp = MEM[ADDR];
36220  // MEM[ADDR] -= DATA[0:1];
36221  // RETURN_DATA[0:1] = tmp.
36222  void
36224  {
36226  } // execute
36227  // --- Inst_DS__DS_RSUB_U64 class methods ---
36228 
36230  : Inst_DS(iFmt, "ds_rsub_u64")
36231  {
36232  } // Inst_DS__DS_RSUB_U64
36233 
36235  {
36236  } // ~Inst_DS__DS_RSUB_U64
36237 
36238  // --- description from .arch file ---
36239  // 64b:
36240  // tmp = MEM[ADDR];
36241  // MEM[ADDR] = DATA - MEM[ADDR];
36242  // RETURN_DATA = tmp.
36243  // Subtraction with reversed operands.
36244  void
36246  {
36248  } // execute
36249  // --- Inst_DS__DS_INC_U64 class methods ---
36250 
36252  : Inst_DS(iFmt, "ds_inc_u64")
36253  {
36254  } // Inst_DS__DS_INC_U64
36255 
36257  {
36258  } // ~Inst_DS__DS_INC_U64
36259 
36260  // --- description from .arch file ---
36261  // 64b:
36262  // tmp = MEM[ADDR];
36263  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
36264  // RETURN_DATA[0:1] = tmp.
36265  void
36267  {
36269  } // execute
36270  // --- Inst_DS__DS_DEC_U64 class methods ---
36271 
36273  : Inst_DS(iFmt, "ds_dec_u64")
36274  {
36275  } // Inst_DS__DS_DEC_U64
36276 
36278  {
36279  } // ~Inst_DS__DS_DEC_U64
36280 
36281  // --- description from .arch file ---
36282  // 64b:
36283  // tmp = MEM[ADDR];
36284  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
36285  // (unsigned compare);
36286  // RETURN_DATA[0:1] = tmp.
36287  void
36289  {
36291  } // execute
36292  // --- Inst_DS__DS_MIN_I64 class methods ---
36293 
36295  : Inst_DS(iFmt, "ds_min_i64")
36296  {
36297  } // Inst_DS__DS_MIN_I64
36298 
36300  {
36301  } // ~Inst_DS__DS_MIN_I64
36302 
36303  // --- description from .arch file ---
36304  // 64b:
36305  // tmp = MEM[ADDR];
36306  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
36307  // RETURN_DATA[0:1] = tmp.
36308  void
36310  {
36312  } // execute
36313  // --- Inst_DS__DS_MAX_I64 class methods ---
36314 
36316  : Inst_DS(iFmt, "ds_max_i64")
36317  {
36318  } // Inst_DS__DS_MAX_I64
36319 
36321  {
36322  } // ~Inst_DS__DS_MAX_I64
36323 
36324  // --- description from .arch file ---
36325  // 64b:
36326  // tmp = MEM[ADDR];
36327  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
36328  // RETURN_DATA[0:1] = tmp.
36329  void
36331  {
36333  } // execute
36334  // --- Inst_DS__DS_MIN_U64 class methods ---
36335 
36337  : Inst_DS(iFmt, "ds_min_u64")
36338  {
36339  } // Inst_DS__DS_MIN_U64
36340 
36342  {
36343  } // ~Inst_DS__DS_MIN_U64
36344 
36345  // --- description from .arch file ---
36346  // 64b:
36347  // tmp = MEM[ADDR];
36348  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
36349  // RETURN_DATA[0:1] = tmp.
36350  void
36352  {
36354  } // execute
36355  // --- Inst_DS__DS_MAX_U64 class methods ---
36356 
36358  : Inst_DS(iFmt, "ds_max_u64")
36359  {
36360  } // Inst_DS__DS_MAX_U64
36361 
36363  {
36364  } // ~Inst_DS__DS_MAX_U64
36365 
36366  // --- description from .arch file ---
36367  // 64b:
36368  // tmp = MEM[ADDR];
36369  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
36370  // RETURN_DATA[0:1] = tmp.
36371  void
36373  {
36375  } // execute
36376  // --- Inst_DS__DS_AND_B64 class methods ---
36377 
36379  : Inst_DS(iFmt, "ds_and_b64")
36380  {
36381  } // Inst_DS__DS_AND_B64
36382 
36384  {
36385  } // ~Inst_DS__DS_AND_B64
36386 
36387  // --- description from .arch file ---
36388  // 64b:
36389  // tmp = MEM[ADDR];
36390  // MEM[ADDR] &= DATA[0:1];
36391  // RETURN_DATA[0:1] = tmp.
36392  void
36394  {
36396  } // execute
36397  // --- Inst_DS__DS_OR_B64 class methods ---
36398 
36400  : Inst_DS(iFmt, "ds_or_b64")
36401  {
36402  } // Inst_DS__DS_OR_B64
36403 
36405  {
36406  } // ~Inst_DS__DS_OR_B64
36407 
36408  // --- description from .arch file ---
36409  // 64b:
36410  // tmp = MEM[ADDR];
36411  // MEM[ADDR] |= DATA[0:1];
36412  // RETURN_DATA[0:1] = tmp.
36413  void
36415  {
36417  } // execute
36418  // --- Inst_DS__DS_XOR_B64 class methods ---
36419 
36421  : Inst_DS(iFmt, "ds_xor_b64")
36422  {
36423  } // Inst_DS__DS_XOR_B64
36424 
36426  {
36427  } // ~Inst_DS__DS_XOR_B64
36428 
36429  // --- description from .arch file ---
36430  // 64b:
36431  // tmp = MEM[ADDR];
36432  // MEM[ADDR] ^= DATA[0:1];
36433  // RETURN_DATA[0:1] = tmp.
36434  void
36436  {
36438  } // execute
36439  // --- Inst_DS__DS_MSKOR_B64 class methods ---
36440 
36442  : Inst_DS(iFmt, "ds_mskor_b64")
36443  {
36444  } // Inst_DS__DS_MSKOR_B64
36445 
36447  {
36448  } // ~Inst_DS__DS_MSKOR_B64
36449 
36450  // --- description from .arch file ---
36451  // 64b:
36452  // tmp = MEM[ADDR];
36453  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
36454  // RETURN_DATA = tmp.
36455  // Masked dword OR, D0 contains the mask and D1 contains the new value.
36456  void
36458  {
36460  } // execute
36461  // --- Inst_DS__DS_WRITE_B64 class methods ---
36462 
36464  : Inst_DS(iFmt, "ds_write_b64")
36465  {
36466  setFlag(MemoryRef);
36467  setFlag(Store);
36468  } // Inst_DS__DS_WRITE_B64
36469 
36471  {
36472  } // ~Inst_DS__DS_WRITE_B64
36473 
36474  // --- description from .arch file ---
36475  // 64b:
36476  // MEM[ADDR] = DATA.
36477  // Write qword.
36478  void
36480  {
36481  Wavefront *wf = gpuDynInst->wavefront();
36482 
36483  if (gpuDynInst->exec_mask.none()) {
36484  wf->decLGKMInstsIssued();
36485  return;
36486  }
36487 
36488  gpuDynInst->execUnitId = wf->execUnitId;
36489  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36490  gpuDynInst->latency.set(
36491  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
36492  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
36493  ConstVecOperandU64 data(gpuDynInst, extData.DATA0);
36494 
36495  addr.read();
36496  data.read();
36497 
36498  calcAddr(gpuDynInst, addr);
36499 
36500  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36501  if (gpuDynInst->exec_mask[lane]) {
36502  (reinterpret_cast<VecElemU64*>(gpuDynInst->d_data))[lane]
36503  = data[lane];
36504  }
36505  }
36506 
36507  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
36508  } // execute
36509 
36510  void
36512  {
36513  Addr offset0 = instData.OFFSET0;
36514  Addr offset1 = instData.OFFSET1;
36515  Addr offset = (offset1 << 8) | offset0;
36516 
36517  initMemWrite<VecElemU64>(gpuDynInst, offset);
36518  } // initiateAcc
36519 
36520  void
36522  {
36523  } // completeAcc
36524  // --- Inst_DS__DS_WRITE2_B64 class methods ---
36525 
36527  : Inst_DS(iFmt, "ds_write2_b64")
36528  {
36529  setFlag(MemoryRef);
36530  setFlag(Store);
36531  } // Inst_DS__DS_WRITE2_B64
36532 
36534  {
36535  } // ~Inst_DS__DS_WRITE2_B64
36536 
36537  // --- description from .arch file ---
36538  // 64b:
36539  // MEM[ADDR_BASE + OFFSET0 * 8] = DATA;
36540  // MEM[ADDR_BASE + OFFSET1 * 8] = DATA2.
36541  // Write 2 qwords.
36542  void
36544  {
36545  Wavefront *wf = gpuDynInst->wavefront();
36546 
36547  if (gpuDynInst->exec_mask.none()) {
36548  wf->decLGKMInstsIssued();
36549  return;
36550  }
36551 
36552  gpuDynInst->execUnitId = wf->execUnitId;
36553  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36554  gpuDynInst->latency.set(
36555  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
36556  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
36557  ConstVecOperandU64 data0(gpuDynInst, extData.DATA0);
36558  ConstVecOperandU64 data1(gpuDynInst, extData.DATA1);
36559 
36560  addr.read();
36561  data0.read();
36562  data1.read();
36563 
36564  calcAddr(gpuDynInst, addr);
36565 
36566  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36567  if (gpuDynInst->exec_mask[lane]) {
36568  (reinterpret_cast<VecElemU64*>(
36569  gpuDynInst->d_data))[lane * 2] = data0[lane];
36570  (reinterpret_cast<VecElemU64*>(
36571  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
36572  }
36573  }
36574 
36575  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
36576  } // execute
36577 
36578  void
36580  {
36581  Addr offset0 = instData.OFFSET0 * 8;
36582  Addr offset1 = instData.OFFSET1 * 8;
36583 
36584  initDualMemWrite<VecElemU64>(gpuDynInst, offset0, offset1);
36585  }
36586 
36587  void
36589  {
36590  }
36591  // --- Inst_DS__DS_WRITE2ST64_B64 class methods ---
36592 
36594  : Inst_DS(iFmt, "ds_write2st64_b64")
36595  {
36596  setFlag(MemoryRef);
36597  setFlag(Store);
36598  } // Inst_DS__DS_WRITE2ST64_B64
36599 
36601  {
36602  } // ~Inst_DS__DS_WRITE2ST64_B64
36603 
36604  // --- description from .arch file ---
36605  // 64b:
36606  // MEM[ADDR_BASE + OFFSET0 * 8 * 64] = DATA;
36607  // MEM[ADDR_BASE + OFFSET1 * 8 * 64] = DATA2;
36608  // Write 2 qwords.
36609  void
36611  {
36612  Wavefront *wf = gpuDynInst->wavefront();
36613 
36614  if (gpuDynInst->exec_mask.none()) {
36615  wf->decLGKMInstsIssued();
36616  return;
36617  }
36618 
36619  gpuDynInst->execUnitId = wf->execUnitId;
36620  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36621  gpuDynInst->latency.set(
36622  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
36623  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
36624  ConstVecOperandU64 data0(gpuDynInst, extData.DATA0);
36625  ConstVecOperandU64 data1(gpuDynInst, extData.DATA1);
36626 
36627  addr.read();
36628  data0.read();
36629  data1.read();
36630 
36631  calcAddr(gpuDynInst, addr);
36632 
36633  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36634  if (gpuDynInst->exec_mask[lane]) {
36635  (reinterpret_cast<VecElemU64*>(
36636  gpuDynInst->d_data))[lane * 2] = data0[lane];
36637  (reinterpret_cast<VecElemU64*>(
36638  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
36639  }
36640  }
36641 
36642  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
36643  } // execute
36644 
36645  void
36647  {
36648  Addr offset0 = instData.OFFSET0 * 8 * 64;
36649  Addr offset1 = instData.OFFSET1 * 8 * 64;
36650 
36651  initDualMemWrite<VecElemU64>(gpuDynInst, offset0, offset1);
36652  }
36653 
36654  void
36656  {
36657  }
36658  // --- Inst_DS__DS_CMPST_B64 class methods ---
36659 
36661  : Inst_DS(iFmt, "ds_cmpst_b64")
36662  {
36663  } // Inst_DS__DS_CMPST_B64
36664 
36666  {
36667  } // ~Inst_DS__DS_CMPST_B64
36668 
36669  // --- description from .arch file ---
36670  // 64b:
36671  // tmp = MEM[ADDR];
36672  // src = DATA2;
36673  // cmp = DATA;
36674  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
36675  // RETURN_DATA[0] = tmp.
36676  // Compare and store.
36677  // Caution, the order of src and cmp are the *opposite* of the
36678  // --- BUFFER_ATOMIC_CMPSWAP_X2 opcode.
36679  void
36681  {
36683  } // execute
36684  // --- Inst_DS__DS_CMPST_F64 class methods ---
36685 
36687  : Inst_DS(iFmt, "ds_cmpst_f64")
36688  {
36689  setFlag(F64);
36690  } // Inst_DS__DS_CMPST_F64
36691 
36693  {
36694  } // ~Inst_DS__DS_CMPST_F64
36695 
36696  // --- description from .arch file ---
36697  // 64b:
36698  // tmp = MEM[ADDR];
36699  // src = DATA2;
36700  // cmp = DATA;
36701  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
36702  // RETURN_DATA[0] = tmp.
36703  // Floating point compare and store that handles NaN/INF/denormal values.
36704  // Caution, the order of src and cmp are the *opposite* of the
36705  // --- BUFFER_ATOMIC_FCMPSWAP_X2 opcode.
36706  void
36708  {
36710  } // execute
36711  // --- Inst_DS__DS_MIN_F64 class methods ---
36712 
36714  : Inst_DS(iFmt, "ds_min_f64")
36715  {
36716  setFlag(F64);
36717  } // Inst_DS__DS_MIN_F64
36718 
36720  {
36721  } // ~Inst_DS__DS_MIN_F64
36722 
36723  // --- description from .arch file ---
36724  // 64b.
36725  // tmp = MEM[ADDR];
36726  // src = DATA;
36727  // cmp = DATA2;
36728  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
36729  // Floating point minimum that handles NaN/INF/denormal values.
36730  // Note that this opcode is slightly more general-purpose than
36731  // --- BUFFER_ATOMIC_FMIN_X2.
36732  void
36734  {
36736  } // execute
36737  // --- Inst_DS__DS_MAX_F64 class methods ---
36738 
36740  : Inst_DS(iFmt, "ds_max_f64")
36741  {
36742  setFlag(F64);
36743  } // Inst_DS__DS_MAX_F64
36744 
36746  {
36747  } // ~Inst_DS__DS_MAX_F64
36748 
36749  // --- description from .arch file ---
36750  // 64b.
36751  // tmp = MEM[ADDR];
36752  // src = DATA;
36753  // cmp = DATA2;
36754  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
36755  // Floating point maximum that handles NaN/INF/denormal values.
36756  // Note that this opcode is slightly more general-purpose than
36757  // --- BUFFER_ATOMIC_FMAX_X2.
36758  void
36760  {
36762  } // execute
36763  // --- Inst_DS__DS_ADD_RTN_U64 class methods ---
36764 
36766  : Inst_DS(iFmt, "ds_add_rtn_u64")
36767  {
36768  } // Inst_DS__DS_ADD_RTN_U64
36769 
36771  {
36772  } // ~Inst_DS__DS_ADD_RTN_U64
36773 
36774  // --- description from .arch file ---
36775  // 64b:
36776  // tmp = MEM[ADDR];
36777  // MEM[ADDR] += DATA[0:1];
36778  // RETURN_DATA[0:1] = tmp.
36779  void
36781  {
36783  } // execute
36784  // --- Inst_DS__DS_SUB_RTN_U64 class methods ---
36785 
36787  : Inst_DS(iFmt, "ds_sub_rtn_u64")
36788  {
36789  } // Inst_DS__DS_SUB_RTN_U64
36790 
36792  {
36793  } // ~Inst_DS__DS_SUB_RTN_U64
36794 
36795  // --- description from .arch file ---
36796  // 64b:
36797  // tmp = MEM[ADDR];
36798  // MEM[ADDR] -= DATA[0:1];
36799  // RETURN_DATA[0:1] = tmp.
36800  void
36802  {
36804  } // execute
36805  // --- Inst_DS__DS_RSUB_RTN_U64 class methods ---
36806 
36808  : Inst_DS(iFmt, "ds_rsub_rtn_u64")
36809  {
36810  } // Inst_DS__DS_RSUB_RTN_U64
36811 
36813  {
36814  } // ~Inst_DS__DS_RSUB_RTN_U64
36815 
36816  // --- description from .arch file ---
36817  // 64b:
36818  // tmp = MEM[ADDR];
36819  // MEM[ADDR] = DATA - MEM[ADDR];
36820  // RETURN_DATA = tmp.
36821  // Subtraction with reversed operands.
36822  void
36824  {
36826  } // execute
36827  // --- Inst_DS__DS_INC_RTN_U64 class methods ---
36828 
36830  : Inst_DS(iFmt, "ds_inc_rtn_u64")
36831  {
36832  } // Inst_DS__DS_INC_RTN_U64
36833 
36835  {
36836  } // ~Inst_DS__DS_INC_RTN_U64
36837 
36838  // --- description from .arch file ---
36839  // 64b:
36840  // tmp = MEM[ADDR];
36841  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
36842  // RETURN_DATA[0:1] = tmp.
36843  void
36845  {
36847  } // execute
36848  // --- Inst_DS__DS_DEC_RTN_U64 class methods ---
36849 
36851  : Inst_DS(iFmt, "ds_dec_rtn_u64")
36852  {
36853  } // Inst_DS__DS_DEC_RTN_U64
36854 
36856  {
36857  } // ~Inst_DS__DS_DEC_RTN_U64
36858 
36859  // --- description from .arch file ---
36860  // 64b:
36861  // tmp = MEM[ADDR];
36862  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
36863  // (unsigned compare);
36864  // RETURN_DATA[0:1] = tmp.
36865  void
36867  {
36869  } // execute
36870  // --- Inst_DS__DS_MIN_RTN_I64 class methods ---
36871 
36873  : Inst_DS(iFmt, "ds_min_rtn_i64")
36874  {
36875  } // Inst_DS__DS_MIN_RTN_I64
36876 
36878  {
36879  } // ~Inst_DS__DS_MIN_RTN_I64
36880 
36881  // --- description from .arch file ---
36882  // 64b:
36883  // tmp = MEM[ADDR];
36884  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
36885  // RETURN_DATA[0:1] = tmp.
36886  void
36888  {
36890  } // execute
36891  // --- Inst_DS__DS_MAX_RTN_I64 class methods ---
36892 
36894  : Inst_DS(iFmt, "ds_max_rtn_i64")
36895  {
36896  } // Inst_DS__DS_MAX_RTN_I64
36897 
36899  {
36900  } // ~Inst_DS__DS_MAX_RTN_I64
36901 
36902  // --- description from .arch file ---
36903  // 64b:
36904  // tmp = MEM[ADDR];
36905  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
36906  // RETURN_DATA[0:1] = tmp.
36907  void
36909  {
36911  } // execute
36912  // --- Inst_DS__DS_MIN_RTN_U64 class methods ---
36913 
36915  : Inst_DS(iFmt, "ds_min_rtn_u64")
36916  {
36917  } // Inst_DS__DS_MIN_RTN_U64
36918 
36920  {
36921  } // ~Inst_DS__DS_MIN_RTN_U64
36922 
36923  // --- description from .arch file ---
36924  // 64b:
36925  // tmp = MEM[ADDR];
36926  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
36927  // RETURN_DATA[0:1] = tmp.
36928  void
36930  {
36932  } // execute
36933  // --- Inst_DS__DS_MAX_RTN_U64 class methods ---
36934 
36936  : Inst_DS(iFmt, "ds_max_rtn_u64")
36937  {
36938  } // Inst_DS__DS_MAX_RTN_U64
36939 
36941  {
36942  } // ~Inst_DS__DS_MAX_RTN_U64
36943 
36944  // --- description from .arch file ---
36945  // 64b:
36946  // tmp = MEM[ADDR];
36947  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
36948  // RETURN_DATA[0:1] = tmp.
36949  void
36951  {
36953  } // execute
36954  // --- Inst_DS__DS_AND_RTN_B64 class methods ---
36955 
36957  : Inst_DS(iFmt, "ds_and_rtn_b64")
36958  {
36959  } // Inst_DS__DS_AND_RTN_B64
36960 
36962  {
36963  } // ~Inst_DS__DS_AND_RTN_B64
36964 
36965  // --- description from .arch file ---
36966  // 64b:
36967  // tmp = MEM[ADDR];
36968  // MEM[ADDR] &= DATA[0:1];
36969  // RETURN_DATA[0:1] = tmp.
36970  void
36972  {
36974  } // execute
36975  // --- Inst_DS__DS_OR_RTN_B64 class methods ---
36976 
36978  : Inst_DS(iFmt, "ds_or_rtn_b64")
36979  {
36980  } // Inst_DS__DS_OR_RTN_B64
36981 
36983  {
36984  } // ~Inst_DS__DS_OR_RTN_B64
36985 
36986  // --- description from .arch file ---
36987  // 64b:
36988  // tmp = MEM[ADDR];
36989  // MEM[ADDR] |= DATA[0:1];
36990  // RETURN_DATA[0:1] = tmp.
36991  void
36993  {
36995  } // execute
36996  // --- Inst_DS__DS_XOR_RTN_B64 class methods ---
36997 
36999  : Inst_DS(iFmt, "ds_xor_rtn_b64")
37000  {
37001  } // Inst_DS__DS_XOR_RTN_B64
37002 
37004  {
37005  } // ~Inst_DS__DS_XOR_RTN_B64
37006 
37007  // --- description from .arch file ---
37008  // 64b:
37009  // tmp = MEM[ADDR];
37010  // MEM[ADDR] ^= DATA[0:1];
37011  // RETURN_DATA[0:1] = tmp.
37012  void
37014  {
37016  } // execute
37017  // --- Inst_DS__DS_MSKOR_RTN_B64 class methods ---
37018 
37020  : Inst_DS(iFmt, "ds_mskor_rtn_b64")
37021  {
37022  } // Inst_DS__DS_MSKOR_RTN_B64
37023 
37025  {
37026  } // ~Inst_DS__DS_MSKOR_RTN_B64
37027 
37028  // --- description from .arch file ---
37029  // 64b:
37030  // tmp = MEM[ADDR];
37031  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
37032  // RETURN_DATA = tmp.
37033  // Masked dword OR, D0 contains the mask and D1 contains the new value.
37034  void
37036  {
37038  } // execute
37039  // --- Inst_DS__DS_WRXCHG_RTN_B64 class methods ---
37040 
37042  : Inst_DS(iFmt, "ds_wrxchg_rtn_b64")
37043  {
37044  } // Inst_DS__DS_WRXCHG_RTN_B64
37045 
37047  {
37048  } // ~Inst_DS__DS_WRXCHG_RTN_B64
37049 
37050  // --- description from .arch file ---
37051  // tmp = MEM[ADDR];
37052  // MEM[ADDR] = DATA;
37053  // RETURN_DATA = tmp.
37054  // Write-exchange operation.
37055  void
37057  {
37059  } // execute
37060  // --- Inst_DS__DS_WRXCHG2_RTN_B64 class methods ---
37061 
37063  : Inst_DS(iFmt, "ds_wrxchg2_rtn_b64")
37064  {
37065  } // Inst_DS__DS_WRXCHG2_RTN_B64
37066 
37068  {
37069  } // ~Inst_DS__DS_WRXCHG2_RTN_B64
37070 
37071  // --- description from .arch file ---
37072  // Write-exchange 2 separate qwords.
37073  void
37075  {
37077  } // execute
37078  // --- Inst_DS__DS_WRXCHG2ST64_RTN_B64 class methods ---
37079 
37081  InFmt_DS *iFmt)
37082  : Inst_DS(iFmt, "ds_wrxchg2st64_rtn_b64")
37083  {
37084  } // Inst_DS__DS_WRXCHG2ST64_RTN_B64
37085 
37087  {
37088  } // ~Inst_DS__DS_WRXCHG2ST64_RTN_B64
37089 
37090  // --- description from .arch file ---
37091  // Write-exchange 2 qwords with a stride of 64 qwords.
37092  void
37094  {
37096  } // execute
37097  // --- Inst_DS__DS_CMPST_RTN_B64 class methods ---
37098 
37100  : Inst_DS(iFmt, "ds_cmpst_rtn_b64")
37101  {
37102  } // Inst_DS__DS_CMPST_RTN_B64
37103 
37105  {
37106  } // ~Inst_DS__DS_CMPST_RTN_B64
37107 
37108  // --- description from .arch file ---
37109  // 64b:
37110  // tmp = MEM[ADDR];
37111  // src = DATA2;
37112  // cmp = DATA;
37113  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
37114  // RETURN_DATA[0] = tmp.
37115  // Compare and store.
37116  // Caution, the order of src and cmp are the *opposite* of the
37117  // --- BUFFER_ATOMIC_CMPSWAP_X2 opcode.
37118  void
37120  {
37122  } // execute
37123  // --- Inst_DS__DS_CMPST_RTN_F64 class methods ---
37124 
37126  : Inst_DS(iFmt, "ds_cmpst_rtn_f64")
37127  {
37128  setFlag(F64);
37129  } // Inst_DS__DS_CMPST_RTN_F64
37130 
37132  {
37133  } // ~Inst_DS__DS_CMPST_RTN_F64
37134 
37135  // --- description from .arch file ---
37136  // 64b:
37137  // tmp = MEM[ADDR];
37138  // src = DATA2;
37139  // cmp = DATA;
37140  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
37141  // RETURN_DATA[0] = tmp.
37142  // Floating point compare and store that handles NaN/INF/denormal values.
37143  // Caution, the order of src and cmp are the *opposite* of the
37144  // --- BUFFER_ATOMIC_FCMPSWAP_X2 opcode.
37145  void
37147  {
37149  } // execute
37150  // --- Inst_DS__DS_MIN_RTN_F64 class methods ---
37151 
37153  : Inst_DS(iFmt, "ds_min_rtn_f64")
37154  {
37155  setFlag(F64);
37156  } // Inst_DS__DS_MIN_RTN_F64
37157 
37159  {
37160  } // ~Inst_DS__DS_MIN_RTN_F64
37161 
37162  // --- description from .arch file ---
37163  // 64b.
37164  // tmp = MEM[ADDR];
37165  // src = DATA;
37166  // cmp = DATA2;
37167  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
37168  // Floating point minimum that handles NaN/INF/denormal values.
37169  // Note that this opcode is slightly more general-purpose than
37170  // --- BUFFER_ATOMIC_FMIN_X2.
37171  void
37173  {
37175  } // execute
37176  // --- Inst_DS__DS_MAX_RTN_F64 class methods ---
37177 
37179  : Inst_DS(iFmt, "ds_max_rtn_f64")
37180  {
37181  setFlag(F64);
37182  } // Inst_DS__DS_MAX_RTN_F64
37183 
37185  {
37186  } // ~Inst_DS__DS_MAX_RTN_F64
37187 
37188  // --- description from .arch file ---
37189  // 64b.
37190  // tmp = MEM[ADDR];
37191  // src = DATA;
37192  // cmp = DATA2;
37193  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
37194  // Floating point maximum that handles NaN/INF/denormal values.
37195  // Note that this opcode is slightly more general-purpose than
37196  // --- BUFFER_ATOMIC_FMAX_X2.
37197  void
37199  {
37201  } // execute
37202  // --- Inst_DS__DS_READ_B64 class methods ---
37203 
37205  : Inst_DS(iFmt, "ds_read_b64")
37206  {
37207  setFlag(MemoryRef);
37208  setFlag(Load);
37209  } // Inst_DS__DS_READ_B64
37210 
37212  {
37213  } // ~Inst_DS__DS_READ_B64
37214 
37215  // --- description from .arch file ---
37216  // RETURN_DATA = MEM[ADDR].
37217  // Read 1 qword.
37218  void
37220  {
37221  Wavefront *wf = gpuDynInst->wavefront();
37222 
37223  if (gpuDynInst->exec_mask.none()) {
37224  wf->decLGKMInstsIssued();
37225  return;
37226  }
37227 
37228  gpuDynInst->execUnitId = wf->execUnitId;
37229  gpuDynInst->latency.init(gpuDynInst->computeUnit());
37230  gpuDynInst->latency.set(
37231  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
37232  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
37233 
37234  addr.read();
37235 
37236  calcAddr(gpuDynInst, addr);
37237 
37238  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
37239  } // execute
37240 
37241  void
37243  {
37244  Addr offset0 = instData.OFFSET0;
37245  Addr offset1 = instData.OFFSET1;
37246  Addr offset = (offset1 << 8) | offset0;
37247 
37248  initMemRead<VecElemU64>(gpuDynInst, offset);
37249  } // initiateAcc
37250 
37251  void
37253  {
37254  VecOperandU64 vdst(gpuDynInst, extData.VDST);
37255 
37256  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
37257  if (gpuDynInst->exec_mask[lane]) {
37258  vdst[lane] = (reinterpret_cast<VecElemU64*>(
37259  gpuDynInst->d_data))[lane];
37260  }
37261  }
37262 
37263  vdst.write();
37264  } // completeAcc
37265  // --- Inst_DS__DS_READ2_B64 class methods ---
37266 
37268  : Inst_DS(iFmt, "ds_read2_b64")
37269  {
37270  setFlag(MemoryRef);
37271  setFlag(Load);
37272  } // Inst_DS__DS_READ2_B64
37273 
37275  {
37276  } // ~Inst_DS__DS_READ2_B64
37277 
37278  // --- description from .arch file ---
37279  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 8];
37280  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 8].
37281  // Read 2 qwords.
37282  void
37284  {
37285  Wavefront *wf = gpuDynInst->wavefront();
37286 
37287  if (gpuDynInst->exec_mask.none()) {
37288  wf->decLGKMInstsIssued();
37289  return;
37290  }
37291 
37292  gpuDynInst->execUnitId = wf->execUnitId;
37293  gpuDynInst->latency.init(gpuDynInst->computeUnit());
37294  gpuDynInst->latency.set(
37295  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
37296  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
37297 
37298  addr.read();
37299 
37300  calcAddr(gpuDynInst, addr);
37301 
37302  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
37303  } // execute
37304 
37305  void
37307  {
37308  Addr offset0 = instData.OFFSET0 * 8;
37309  Addr offset1 = instData.OFFSET1 * 8;
37310 
37311  initDualMemRead<VecElemU64>(gpuDynInst, offset0, offset1);
37312  } // initiateAcc
37313 
37314  void
37316  {
37317  VecOperandU64 vdst0(gpuDynInst, extData.VDST);
37318  VecOperandU64 vdst1(gpuDynInst, extData.VDST + 2);
37319 
37320  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
37321  if (gpuDynInst->exec_mask[lane]) {
37322  vdst0[lane] = (reinterpret_cast<VecElemU64*>(
37323  gpuDynInst->d_data))[lane * 2];
37324  vdst1[lane] = (reinterpret_cast<VecElemU64*>(
37325  gpuDynInst->d_data))[lane * 2 + 1];
37326  }
37327  }
37328 
37329  vdst0.write();
37330  vdst1.write();
37331  } // completeAcc
37332  // --- Inst_DS__DS_READ2ST64_B64 class methods ---
37333 
37335  : Inst_DS(iFmt, "ds_read2st64_b64")
37336  {
37337  setFlag(MemoryRef);
37338  setFlag(Load);
37339  } // Inst_DS__DS_READ2ST64_B64
37340 
37342  {
37343  } // ~Inst_DS__DS_READ2ST64_B64
37344 
37345  // --- description from .arch file ---
37346  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 8 * 64];
37347  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 8 * 64].
37348  // Read 2 qwords.
37349  void
37351  {
37352  Wavefront *wf = gpuDynInst->wavefront();
37353 
37354  if (gpuDynInst->exec_mask.none()) {
37355  wf->decLGKMInstsIssued();
37356  return;
37357  }
37358 
37359  gpuDynInst->execUnitId = wf->execUnitId;
37360  gpuDynInst->latency.init(gpuDynInst->computeUnit());
37361  gpuDynInst->latency.set(
37362  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
37363  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
37364 
37365  addr.read();
37366 
37367  calcAddr(gpuDynInst, addr);
37368 
37369  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
37370  } // execute
37371 
37372  void
37374  {
37375  Addr offset0 = (instData.OFFSET0 * 8 * 64);
37376  Addr offset1 = (instData.OFFSET1 * 8 * 64);
37377 
37378  initDualMemRead<VecElemU64>(gpuDynInst, offset0, offset1);
37379  }
37380 
37381  void
37383  {
37384  VecOperandU64 vdst0(gpuDynInst, extData.VDST);
37385  VecOperandU64 vdst1(gpuDynInst, extData.VDST + 2);
37386 
37387  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
37388  if (gpuDynInst->exec_mask[lane]) {
37389  vdst0[lane] = (reinterpret_cast<VecElemU64*>(
37390  gpuDynInst->d_data))[lane * 2];
37391  vdst1[lane] = (reinterpret_cast<VecElemU64*>(
37392  gpuDynInst->d_data))[lane * 2 + 1];
37393  }
37394  }
37395 
37396  vdst0.write();
37397  vdst1.write();
37398  }
37399  // --- Inst_DS__DS_CONDXCHG32_RTN_B64 class methods ---
37400 
37402  InFmt_DS *iFmt)
37403  : Inst_DS(iFmt, "ds_condxchg32_rtn_b64")
37404  {
37405  } // Inst_DS__DS_CONDXCHG32_RTN_B64
37406 
37408  {
37409  } // ~Inst_DS__DS_CONDXCHG32_RTN_B64
37410 
37411  // --- description from .arch file ---
37412  // Conditional write exchange.
37413  void
37415  {
37417  } // execute
37418  // --- Inst_DS__DS_ADD_SRC2_U32 class methods ---
37419 
37421  : Inst_DS(iFmt, "ds_add_src2_u32")
37422  {
37423  } // Inst_DS__DS_ADD_SRC2_U32
37424 
37426  {
37427  } // ~Inst_DS__DS_ADD_SRC2_U32
37428 
37429  // --- description from .arch file ---
37430  // 32b:
37431  // A = ADDR_BASE;
37432  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37433  // --- {offset1[6],offset1[6:0],offset0});
37434  // MEM[A] = MEM[A] + MEM[B].
37435  void
37437  {
37439  } // execute
37440  // --- Inst_DS__DS_SUB_SRC2_U32 class methods ---
37441 
37443  : Inst_DS(iFmt, "ds_sub_src2_u32")
37444  {
37445  } // Inst_DS__DS_SUB_SRC2_U32
37446 
37448  {
37449  } // ~Inst_DS__DS_SUB_SRC2_U32
37450 
37451  // --- description from .arch file ---
37452  // 32b:
37453  // A = ADDR_BASE;
37454  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37455  // --- {offset1[6],offset1[6:0],offset0});
37456  // MEM[A] = MEM[A] - MEM[B].
37457  void
37459  {
37461  } // execute
37462  // --- Inst_DS__DS_RSUB_SRC2_U32 class methods ---
37463 
37465  : Inst_DS(iFmt, "ds_rsub_src2_u32")
37466  {
37467  } // Inst_DS__DS_RSUB_SRC2_U32
37468 
37470  {
37471  } // ~Inst_DS__DS_RSUB_SRC2_U32
37472 
37473  // --- description from .arch file ---
37474  // 32b:
37475  // A = ADDR_BASE;
37476  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37477  // --- {offset1[6],offset1[6:0],offset0});
37478  // MEM[A] = MEM[B] - MEM[A].
37479  void
37481  {
37483  } // execute
37484  // --- Inst_DS__DS_INC_SRC2_U32 class methods ---
37485 
37487  : Inst_DS(iFmt, "ds_inc_src2_u32")
37488  {
37489  } // Inst_DS__DS_INC_SRC2_U32
37490 
37492  {
37493  } // ~Inst_DS__DS_INC_SRC2_U32
37494 
37495  // --- description from .arch file ---
37496  // 32b:
37497  // A = ADDR_BASE;
37498  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37499  // --- {offset1[6],offset1[6:0],offset0});
37500  // MEM[A] = (MEM[A] >= MEM[B] ? 0 : MEM[A] + 1).
37501  void
37503  {
37505  } // execute
37506  // --- Inst_DS__DS_DEC_SRC2_U32 class methods ---
37507 
37509  : Inst_DS(iFmt, "ds_dec_src2_u32")
37510  {
37511  } // Inst_DS__DS_DEC_SRC2_U32
37512 
37514  {
37515  } // ~Inst_DS__DS_DEC_SRC2_U32
37516 
37517  // --- description from .arch file ---
37518  // 32b:
37519  // A = ADDR_BASE;
37520  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37521  // --- {offset1[6],offset1[6:0],offset0});
37522  // MEM[A] = (MEM[A] == 0 || MEM[A] > MEM[B] ? MEM[B] : MEM[A] - 1).
37523  // Uint decrement.
37524  void
37526  {
37528  } // execute
37529  // --- Inst_DS__DS_MIN_SRC2_I32 class methods ---
37530 
37532  : Inst_DS(iFmt, "ds_min_src2_i32")
37533  {
37534  } // Inst_DS__DS_MIN_SRC2_I32
37535 
37537  {
37538  } // ~Inst_DS__DS_MIN_SRC2_I32
37539 
37540  // --- description from .arch file ---
37541  // 32b:
37542  // A = ADDR_BASE;
37543  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37544  // --- {offset1[6],offset1[6:0],offset0});
37545  // MEM[A] = min(MEM[A], MEM[B]).
37546  void
37548  {
37550  } // execute
37551  // --- Inst_DS__DS_MAX_SRC2_I32 class methods ---
37552 
37554  : Inst_DS(iFmt, "ds_max_src2_i32")
37555  {
37556  } // Inst_DS__DS_MAX_SRC2_I32
37557 
37559  {
37560  } // ~Inst_DS__DS_MAX_SRC2_I32
37561 
37562  // --- description from .arch file ---
37563  // 32b:
37564  // A = ADDR_BASE;
37565  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37566  // --- {offset1[6],offset1[6:0],offset0});
37567  // MEM[A] = max(MEM[A], MEM[B]).
37568  void
37570  {
37572  } // execute
37573  // --- Inst_DS__DS_MIN_SRC2_U32 class methods ---
37574 
37576  : Inst_DS(iFmt, "ds_min_src2_u32")
37577  {
37578  } // Inst_DS__DS_MIN_SRC2_U32
37579 
37581  {
37582  } // ~Inst_DS__DS_MIN_SRC2_U32
37583 
37584  // --- description from .arch file ---
37585  // 32b:
37586  // A = ADDR_BASE;
37587  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37588  // --- {offset1[6],offset1[6:0],offset0});
37589  // MEM[A] = min(MEM[A], MEM[B]).
37590  void
37592  {
37594  } // execute
37595  // --- Inst_DS__DS_MAX_SRC2_U32 class methods ---
37596 
37598  : Inst_DS(iFmt, "ds_max_src2_u32")
37599  {
37600  } // Inst_DS__DS_MAX_SRC2_U32
37601 
37603  {
37604  } // ~Inst_DS__DS_MAX_SRC2_U32
37605 
37606  // --- description from .arch file ---
37607  // 32b:
37608  // A = ADDR_BASE;
37609  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37610  // --- {offset1[6],offset1[6:0],offset0});
37611  // MEM[A] = max(MEM[A], MEM[B]).
37612  void
37614  {
37616  } // execute
37617  // --- Inst_DS__DS_AND_SRC2_B32 class methods ---
37618 
37620  : Inst_DS(iFmt, "ds_and_src2_b32")
37621  {
37622  } // Inst_DS__DS_AND_SRC2_B32
37623 
37625  {
37626  } // ~Inst_DS__DS_AND_SRC2_B32
37627 
37628  // --- description from .arch file ---
37629  // 32b:
37630  // A = ADDR_BASE;
37631  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37632  // --- {offset1[6],offset1[6:0],offset0});
37633  // MEM[A] = MEM[A] & MEM[B].
37634  void
37636  {
37638  } // execute
37639  // --- Inst_DS__DS_OR_SRC2_B32 class methods ---
37640 
37642  : Inst_DS(iFmt, "ds_or_src2_b32")
37643  {
37644  } // Inst_DS__DS_OR_SRC2_B32
37645 
37647  {
37648  } // ~Inst_DS__DS_OR_SRC2_B32
37649 
37650  // --- description from .arch file ---
37651  // 32b:
37652  // A = ADDR_BASE;
37653  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37654  // --- {offset1[6],offset1[6:0],offset0});
37655  // MEM[A] = MEM[A] | MEM[B].
37656  void
37658  {
37660  } // execute
37661  // --- Inst_DS__DS_XOR_SRC2_B32 class methods ---
37662 
37664  : Inst_DS(iFmt, "ds_xor_src2_b32")
37665  {
37666  } // Inst_DS__DS_XOR_SRC2_B32
37667 
37669  {
37670  } // ~Inst_DS__DS_XOR_SRC2_B32
37671 
37672  // --- description from .arch file ---
37673  // 32b:
37674  // A = ADDR_BASE;
37675  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37676  // --- {offset1[6],offset1[6:0],offset0});
37677  // MEM[A] = MEM[A] ^ MEM[B].
37678  void
37680  {
37682  } // execute
37683  // --- Inst_DS__DS_WRITE_SRC2_B32 class methods ---
37684 
37686  : Inst_DS(iFmt, "ds_write_src2_b32")
37687  {
37688  setFlag(MemoryRef);
37689  setFlag(Store);
37690  } // Inst_DS__DS_WRITE_SRC2_B32
37691 
37693  {
37694  } // ~Inst_DS__DS_WRITE_SRC2_B32
37695 
37696  // --- description from .arch file ---
37697  // 32b:
37698  // A = ADDR_BASE;
37699  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37700  // --- {offset1[6],offset1[6:0],offset0});
37701  // MEM[A] = MEM[B].
37702  // Write dword.
37703  void
37705  {
37707  } // execute
37708  // --- Inst_DS__DS_MIN_SRC2_F32 class methods ---
37709 
37711  : Inst_DS(iFmt, "ds_min_src2_f32")
37712  {
37713  setFlag(F32);
37714  } // Inst_DS__DS_MIN_SRC2_F32
37715 
37717  {
37718  } // ~Inst_DS__DS_MIN_SRC2_F32
37719 
37720  // --- description from .arch file ---
37721  // 32b:
37722  // A = ADDR_BASE;
37723  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37724  // --- {offset1[6],offset1[6:0],offset0});
37725  // MEM[A] = (MEM[B] < MEM[A]) ? MEM[B] : MEM[A].
37726  // Float, handles NaN/INF/denorm.
37727  void
37729  {
37731  } // execute
37732  // --- Inst_DS__DS_MAX_SRC2_F32 class methods ---
37733 
37735  : Inst_DS(iFmt, "ds_max_src2_f32")
37736  {
37737  setFlag(F32);
37738  } // Inst_DS__DS_MAX_SRC2_F32
37739 
37741  {
37742  } // ~Inst_DS__DS_MAX_SRC2_F32
37743 
37744  // --- description from .arch file ---
37745  // 32b:
37746  // A = ADDR_BASE;
37747  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37748  // --- {offset1[6],offset1[6:0],offset0});
37749  // MEM[A] = (MEM[B] > MEM[A]) ? MEM[B] : MEM[A].
37750  // Float, handles NaN/INF/denorm.
37751  void
37753  {
37755  } // execute
37756  // --- Inst_DS__DS_ADD_SRC2_F32 class methods ---
37757 
37759  : Inst_DS(iFmt, "ds_add_src2_f32")
37760  {
37761  setFlag(F32);
37762  } // Inst_DS__DS_ADD_SRC2_F32
37763 
37765  {
37766  } // ~Inst_DS__DS_ADD_SRC2_F32
37767 
37768  // --- description from .arch file ---
37769  // 32b:
37770  // A = ADDR_BASE;
37771  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
37772  // --- {offset1[6],offset1[6:0],offset0});
37773  // MEM[A] = MEM[B] + MEM[A].
37774  // Float, handles NaN/INF/denorm.
37775  void
37777  {
37779  } // execute
37780  // --- Inst_DS__DS_GWS_SEMA_RELEASE_ALL class methods ---
37781 
37783  InFmt_DS *iFmt)
37784  : Inst_DS(iFmt, "ds_gws_sema_release_all")
37785  {
37786  } // Inst_DS__DS_GWS_SEMA_RELEASE_ALL
37787 
37789  {
37790  } // ~Inst_DS__DS_GWS_SEMA_RELEASE_ALL
37791 
37792  // --- description from .arch file ---
37793  // GDS Only: The GWS resource (rid) indicated will process this opcode by
37794  // updating the counter and labeling the specified resource as a semaphore.
37795  // //Determine the GWS resource to work on
37796  // rid[5:0] = SH_SX_EXPCMD.gds_base[5:0] + offset0[5:0];
37797  // //Incr the state counter of the resource
37798  // state.counter[rid] = state.wave_in_queue;
37799  // state.type = SEMAPHORE;
37800  // return rd_done; //release calling wave
37801  // This action will release ALL queued waves; it Will have no effect if no
37802  // --- waves are present.
37803  void
37805  {
37807  } // execute
37808  // --- Inst_DS__DS_GWS_INIT class methods ---
37809 
37811  : Inst_DS(iFmt, "ds_gws_init")
37812  {
37813  } // Inst_DS__DS_GWS_INIT
37814 
37816  {
37817  } // ~Inst_DS__DS_GWS_INIT
37818 
37819  // --- description from .arch file ---
37820  // GDS Only: Initialize a barrier or semaphore resource.
37821  // //Determine the GWS resource to work on
37822  // rid[5:0] = SH_SX_EXPCMD.gds_base[5:0] + offset0[5:0];
37823  // //Get the value to use in init
37824  // index = find_first_valid(vector mask)
37825  // value = DATA[thread: index]
37826  // //Set the state of the resource
37827  // state.counter[rid] = lsb(value); //limit #waves
37828  // state.flag[rid] = 0;
37829  // return rd_done; //release calling wave
37830  void
37832  {
37834  } // execute
37835  // --- Inst_DS__DS_GWS_SEMA_V class methods ---
37836 
37838  : Inst_DS(iFmt, "ds_gws_sema_v")
37839  {
37840  } // Inst_DS__DS_GWS_SEMA_V
37841 
37843  {
37844  } // ~Inst_DS__DS_GWS_SEMA_V
37845 
37846  // --- description from .arch file ---
37847  // GDS Only: The GWS resource indicated will process this opcode by
37848  // updating the counter and labeling the resource as a semaphore.
37849  // //Determine the GWS resource to work on
37850  // rid[5:0] = SH_SX_EXPCMD.gds_base[5:0] + offset0[5:0];
37851  // //Incr the state counter of the resource
37852  // state.counter[rid]++;
37853  // state.type = SEMAPHORE;
37854  // return rd_done; //release calling wave
37855  // This action will release one waved if any are queued in this resource.
37856  void
37858  {
37860  } // execute
37861  // --- Inst_DS__DS_GWS_SEMA_BR class methods ---
37862 
37864  : Inst_DS(iFmt, "ds_gws_sema_br")
37865  {
37866  } // Inst_DS__DS_GWS_SEMA_BR
37867 
37869  {
37870  } // ~Inst_DS__DS_GWS_SEMA_BR
37871 
37872  // --- description from .arch file ---
37873  // GDS Only: The GWS resource indicated will process this opcode by
37874  // updating the counter by the bulk release delivered count and labeling
37875  // the resource as a semaphore.
37876  // //Determine the GWS resource to work on
37877  // rid[5:0] = SH_SX_EXPCMD.gds_base[5:0] + offset0[5:0];
37878  // index = find first valid (vector mask)
37879  // count = DATA[thread: index];
37880  // //Add count to the resource state counter
37881  // state.counter[rid] += count;
37882  // state.type = SEMAPHORE;
37883  // return rd_done; //release calling wave
37884  // This action will release count number of waves, immediately if queued,
37885  // or as they arrive from the noted resource.
37886  void
37888  {
37890  } // execute
37891  // --- Inst_DS__DS_GWS_SEMA_P class methods ---
37892 
37894  : Inst_DS(iFmt, "ds_gws_sema_p")
37895  {
37896  } // Inst_DS__DS_GWS_SEMA_P
37897 
37899  {
37900  } // ~Inst_DS__DS_GWS_SEMA_P
37901 
37902  // --- description from .arch file ---
37903  // GDS Only: The GWS resource indicated will process this opcode by
37904  // queueing it until counter enables a release and then decrementing the
37905  // counter of the resource as a semaphore.
37906  // //Determine the GWS resource to work on
37907  // rid[5:0] = SH_SX_EXPCMD.gds_base[5:0] + offset0[5:0];
37908  // state.type = SEMAPHORE;
37909  // ENQUEUE until(state[rid].counter > 0)
37910  // state[rid].counter--;
37911  // return rd_done
37912  void
37914  {
37916  } // execute
37917  // --- Inst_DS__DS_GWS_BARRIER class methods ---
37918 
37920  : Inst_DS(iFmt, "ds_gws_barrier")
37921  {
37922  } // Inst_DS__DS_GWS_BARRIER
37923 
37925  {
37926  } // ~Inst_DS__DS_GWS_BARRIER
37927 
37928  // --- description from .arch file ---
37929  // GDS Only: The GWS resource indicated will process this opcode by
37930  // queueing it until barrier is satisfied. The number of waves needed is
37931  // passed in as DATA of first valid thread.
37932  // //Determine the GWS resource to work on
37933  // rid[5:0] = SH_SX_EXPCMD.gds_base[5:0] + OFFSET0[5:0];
37934  // index = find first valid (vector mask);
37935  // value = DATA[thread: index];
37936  // // Input Decision Machine
37937  // state.type[rid] = BARRIER;
37938  // if(state[rid].counter <= 0) {
37939  // thread[rid].flag = state[rid].flag;
37940  // ENQUEUE;
37941  // state[rid].flag = !state.flag;
37942  // state[rid].counter = value;
37943  // return rd_done;
37944  // } else {
37945  // state[rid].counter--;
37946  // thread.flag = state[rid].flag;
37947  // ENQUEUE;
37948  // }
37949  // Since the waves deliver the count for the next barrier, this function
37950  // can have a different size barrier for each occurrence.
37951  // // Release Machine
37952  // if(state.type == BARRIER) {
37953  // if(state.flag != thread.flag) {
37954  // return rd_done;
37955  // }
37956  // }
37957  void
37959  {
37961  } // execute
37962  // --- Inst_DS__DS_CONSUME class methods ---
37963 
37965  : Inst_DS(iFmt, "ds_consume")
37966  {
37967  } // Inst_DS__DS_CONSUME
37968 
37970  {
37971  } // ~Inst_DS__DS_CONSUME
37972 
37973  // --- description from .arch file ---
37974  // LDS & GDS. Subtract (count_bits(exec_mask)) from the value stored in DS
37975  // memory at (M0.base + instr_offset). Return the pre-operation value to
37976  // VGPRs.
37977  void
37979  {
37981  } // execute
37982  // --- Inst_DS__DS_APPEND class methods ---
37983 
37985  : Inst_DS(iFmt, "ds_append")
37986  {
37987  } // Inst_DS__DS_APPEND
37988 
37990  {
37991  } // ~Inst_DS__DS_APPEND
37992 
37993  // --- description from .arch file ---
37994  // LDS & GDS. Add (count_bits(exec_mask)) to the value stored in DS memory
37995  // at (M0.base + instr_offset). Return the pre-operation value to VGPRs.
37996  void
37998  {
38000  } // execute
38001  // --- Inst_DS__DS_ORDERED_COUNT class methods ---
38002 
38004  : Inst_DS(iFmt, "ds_ordered_count")
38005  {
38006  } // Inst_DS__DS_ORDERED_COUNT
38007 
38009  {
38010  } // ~Inst_DS__DS_ORDERED_COUNT
38011 
38012  // --- description from .arch file ---
38013  // GDS-only. Add (count_bits(exec_mask)) to one of 4 dedicated
38014  // ordered-count counters (aka 'packers'). Additional bits of instr.offset
38015  // field are overloaded to hold packer-id, 'last'.
38016  void
38018  {
38020  } // execute
38021  // --- Inst_DS__DS_ADD_SRC2_U64 class methods ---
38022 
38024  : Inst_DS(iFmt, "ds_add_src2_u64")
38025  {
38026  } // Inst_DS__DS_ADD_SRC2_U64
38027 
38029  {
38030  } // ~Inst_DS__DS_ADD_SRC2_U64
38031 
38032  // --- description from .arch file ---
38033  // 64b:
38034  // A = ADDR_BASE;
38035  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38036  // --- {offset1[6],offset1[6:0],offset0});
38037  // MEM[A] = MEM[A] + MEM[B].
38038  void
38040  {
38042  } // execute
38043  // --- Inst_DS__DS_SUB_SRC2_U64 class methods ---
38044 
38046  : Inst_DS(iFmt, "ds_sub_src2_u64")
38047  {
38048  } // Inst_DS__DS_SUB_SRC2_U64
38049 
38051  {
38052  } // ~Inst_DS__DS_SUB_SRC2_U64
38053 
38054  // --- description from .arch file ---
38055  // 64b:
38056  // A = ADDR_BASE;
38057  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38058  // --- {offset1[6],offset1[6:0],offset0});
38059  // MEM[A] = MEM[A] - MEM[B].
38060  void
38062  {
38064  } // execute
38065  // --- Inst_DS__DS_RSUB_SRC2_U64 class methods ---
38066 
38068  : Inst_DS(iFmt, "ds_rsub_src2_u64")
38069  {
38070  } // Inst_DS__DS_RSUB_SRC2_U64
38071 
38073  {
38074  } // ~Inst_DS__DS_RSUB_SRC2_U64
38075 
38076  // --- description from .arch file ---
38077  // 64b:
38078  // A = ADDR_BASE;
38079  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38080  // --- {offset1[6],offset1[6:0],offset0});
38081  // MEM[A] = MEM[B] - MEM[A].
38082  void
38084  {
38086  } // execute
38087  // --- Inst_DS__DS_INC_SRC2_U64 class methods ---
38088 
38090  : Inst_DS(iFmt, "ds_inc_src2_u64")
38091  {
38092  } // Inst_DS__DS_INC_SRC2_U64
38093 
38095  {
38096  } // ~Inst_DS__DS_INC_SRC2_U64
38097 
38098  // --- description from .arch file ---
38099  // 64b:
38100  // A = ADDR_BASE;
38101  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38102  // --- {offset1[6],offset1[6:0],offset0});
38103  // MEM[A] = (MEM[A] >= MEM[B] ? 0 : MEM[A] + 1).
38104  void
38106  {
38108  } // execute
38109  // --- Inst_DS__DS_DEC_SRC2_U64 class methods ---
38110 
38112  : Inst_DS(iFmt, "ds_dec_src2_u64")
38113  {
38114  } // Inst_DS__DS_DEC_SRC2_U64
38115 
38117  {
38118  } // ~Inst_DS__DS_DEC_SRC2_U64
38119 
38120  // --- description from .arch file ---
38121  // 64b:
38122  // A = ADDR_BASE;
38123  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38124  // --- {offset1[6],offset1[6:0],offset0});
38125  // MEM[A] = (MEM[A] == 0 || MEM[A] > MEM[B] ? MEM[B] : MEM[A] - 1).
38126  // Uint decrement.
38127  void
38129  {
38131  } // execute
38132  // --- Inst_DS__DS_MIN_SRC2_I64 class methods ---
38133 
38135  : Inst_DS(iFmt, "ds_min_src2_i64")
38136  {
38137  } // Inst_DS__DS_MIN_SRC2_I64
38138 
38140  {
38141  } // ~Inst_DS__DS_MIN_SRC2_I64
38142 
38143  // --- description from .arch file ---
38144  // 64b:
38145  // A = ADDR_BASE;
38146  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38147  // --- {offset1[6],offset1[6:0],offset0});
38148  // MEM[A] = min(MEM[A], MEM[B]).
38149  void
38151  {
38153  } // execute
38154  // --- Inst_DS__DS_MAX_SRC2_I64 class methods ---
38155 
38157  : Inst_DS(iFmt, "ds_max_src2_i64")
38158  {
38159  } // Inst_DS__DS_MAX_SRC2_I64
38160 
38162  {
38163  } // ~Inst_DS__DS_MAX_SRC2_I64
38164 
38165  // --- description from .arch file ---
38166  // 64b:
38167  // A = ADDR_BASE;
38168  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38169  // --- {offset1[6],offset1[6:0],offset0});
38170  // MEM[A] = max(MEM[A], MEM[B]).
38171  void
38173  {
38175  } // execute
38176  // --- Inst_DS__DS_MIN_SRC2_U64 class methods ---
38177 
38179  : Inst_DS(iFmt, "ds_min_src2_u64")
38180  {
38181  } // Inst_DS__DS_MIN_SRC2_U64
38182 
38184  {
38185  } // ~Inst_DS__DS_MIN_SRC2_U64
38186 
38187  // --- description from .arch file ---
38188  // 64b:
38189  // A = ADDR_BASE;
38190  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38191  // --- {offset1[6],offset1[6:0],offset0});
38192  // MEM[A] = min(MEM[A], MEM[B]).
38193  void
38195  {
38197  } // execute
38198  // --- Inst_DS__DS_MAX_SRC2_U64 class methods ---
38199 
38201  : Inst_DS(iFmt, "ds_max_src2_u64")
38202  {
38203  } // Inst_DS__DS_MAX_SRC2_U64
38204 
38206  {
38207  } // ~Inst_DS__DS_MAX_SRC2_U64
38208 
38209  // --- description from .arch file ---
38210  // 64b:
38211  // A = ADDR_BASE;
38212  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38213  // --- {offset1[6],offset1[6:0],offset0});
38214  // MEM[A] = max(MEM[A], MEM[B]).
38215  void
38217  {
38219  } // execute
38220  // --- Inst_DS__DS_AND_SRC2_B64 class methods ---
38221 
38223  : Inst_DS(iFmt, "ds_and_src2_b64")
38224  {
38225  } // Inst_DS__DS_AND_SRC2_B64
38226 
38228  {
38229  } // ~Inst_DS__DS_AND_SRC2_B64
38230 
38231  // --- description from .arch file ---
38232  // 64b:
38233  // A = ADDR_BASE;
38234  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38235  // --- {offset1[6],offset1[6:0],offset0});
38236  // MEM[A] = MEM[A] & MEM[B].
38237  void
38239  {
38241  } // execute
38242  // --- Inst_DS__DS_OR_SRC2_B64 class methods ---
38243 
38245  : Inst_DS(iFmt, "ds_or_src2_b64")
38246  {
38247  } // Inst_DS__DS_OR_SRC2_B64
38248 
38250  {
38251  } // ~Inst_DS__DS_OR_SRC2_B64
38252 
38253  // --- description from .arch file ---
38254  // 64b:
38255  // A = ADDR_BASE;
38256  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38257  // --- {offset1[6],offset1[6:0],offset0});
38258  // MEM[A] = MEM[A] | MEM[B].
38259  void
38261  {
38263  } // execute
38264  // --- Inst_DS__DS_XOR_SRC2_B64 class methods ---
38265 
38267  : Inst_DS(iFmt, "ds_xor_src2_b64")
38268  {
38269  } // Inst_DS__DS_XOR_SRC2_B64
38270 
38272  {
38273  } // ~Inst_DS__DS_XOR_SRC2_B64
38274 
38275  // --- description from .arch file ---
38276  // 64b:
38277  // A = ADDR_BASE;
38278  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38279  // --- {offset1[6],offset1[6:0],offset0});
38280  // MEM[A] = MEM[A] ^ MEM[B].
38281  void
38283  {
38285  } // execute
38286  // --- Inst_DS__DS_WRITE_SRC2_B64 class methods ---
38287 
38289  : Inst_DS(iFmt, "ds_write_src2_b64")
38290  {
38291  setFlag(MemoryRef);
38292  setFlag(Store);
38293  } // Inst_DS__DS_WRITE_SRC2_B64
38294 
38296  {
38297  } // ~Inst_DS__DS_WRITE_SRC2_B64
38298 
38299  // --- description from .arch file ---
38300  // 64b:
38301  // A = ADDR_BASE;
38302  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38303  // --- {offset1[6],offset1[6:0],offset0});
38304  // MEM[A] = MEM[B].
38305  // Write qword.
38306  void
38308  {
38310  } // execute
38311  // --- Inst_DS__DS_MIN_SRC2_F64 class methods ---
38312 
38314  : Inst_DS(iFmt, "ds_min_src2_f64")
38315  {
38316  setFlag(F64);
38317  } // Inst_DS__DS_MIN_SRC2_F64
38318 
38320  {
38321  } // ~Inst_DS__DS_MIN_SRC2_F64
38322 
38323  // --- description from .arch file ---
38324  // 64b:
38325  // A = ADDR_BASE;
38326  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38327  // --- {offset1[6],offset1[6:0],offset0});
38328  // MEM[A] = (MEM[B] < MEM[A]) ? MEM[B] : MEM[A].
38329  // Float, handles NaN/INF/denorm.
38330  void
38332  {
38334  } // execute
38335  // --- Inst_DS__DS_MAX_SRC2_F64 class methods ---
38336 
38338  : Inst_DS(iFmt, "ds_max_src2_f64")
38339  {
38340  setFlag(F64);
38341  } // Inst_DS__DS_MAX_SRC2_F64
38342 
38344  {
38345  } // ~Inst_DS__DS_MAX_SRC2_F64
38346 
38347  // --- description from .arch file ---
38348  // 64b:
38349  // A = ADDR_BASE;
38350  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
38351  // --- {offset1[6],offset1[6:0],offset0});
38352  // MEM[A] = (MEM[B] > MEM[A]) ? MEM[B] : MEM[A].
38353  // Float, handles NaN/INF/denorm.
38354  void
38356  {
38358  } // execute
38359  // --- Inst_DS__DS_WRITE_B96 class methods ---
38360 
38362  : Inst_DS(iFmt, "ds_write_b96")
38363  {
38364  setFlag(MemoryRef);
38365  setFlag(Store);
38366  } // Inst_DS__DS_WRITE_B96
38367 
38369  {
38370  } // ~Inst_DS__DS_WRITE_B96
38371 
38372  // --- description from .arch file ---
38373  // {MEM[ADDR + 8], MEM[ADDR + 4], MEM[ADDR]} = DATA[95:0].
38374  // Tri-dword write.
38375  void
38377  {
38378  Wavefront *wf = gpuDynInst->wavefront();
38379  gpuDynInst->execUnitId = wf->execUnitId;
38380  gpuDynInst->latency.init(gpuDynInst->computeUnit());
38381  gpuDynInst->latency.set(
38382  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
38383  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
38384  ConstVecOperandU32 data0(gpuDynInst, extData.DATA0);
38385  ConstVecOperandU32 data1(gpuDynInst, extData.DATA0 + 1);
38386  ConstVecOperandU32 data2(gpuDynInst, extData.DATA0 + 2);
38387 
38388  addr.read();
38389  data0.read();
38390  data1.read();
38391  data2.read();
38392 
38393  calcAddr(gpuDynInst, addr);
38394 
38395  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
38396  if (gpuDynInst->exec_mask[lane]) {
38397  (reinterpret_cast<VecElemU32*>(
38398  gpuDynInst->d_data))[lane * 4] = data0[lane];
38399  (reinterpret_cast<VecElemU32*>(
38400  gpuDynInst->d_data))[lane * 4 + 1] = data1[lane];
38401  (reinterpret_cast<VecElemU32*>(
38402  gpuDynInst->d_data))[lane * 4 + 2] = data2[lane];
38403  }
38404  }
38405 
38406  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
38407  } // execute
38408 
38409  void
38411  {
38412  Addr offset0 = instData.OFFSET0;
38413  Addr offset1 = instData.OFFSET1;
38414  Addr offset = (offset1 << 8) | offset0;
38415 
38416  initMemWrite<3>(gpuDynInst, offset);
38417  } // initiateAcc
38418 
38419  void
38421  {
38422  } // completeAcc
38423  // --- Inst_DS__DS_WRITE_B128 class methods ---
38424 
38426  : Inst_DS(iFmt, "ds_write_b128")
38427  {
38428  setFlag(MemoryRef);
38429  setFlag(Store);
38430  } // Inst_DS__DS_WRITE_B128
38431 
38433  {
38434  } // ~Inst_DS__DS_WRITE_B128
38435 
38436  // --- description from .arch file ---
38437  // {MEM[ADDR + 12], MEM[ADDR + 8], MEM[ADDR + 4], MEM[ADDR]} = DATA[127:0].
38438  // Qword write.
38439  void
38441  {
38442  Wavefront *wf = gpuDynInst->wavefront();
38443  gpuDynInst->execUnitId = wf->execUnitId;
38444  gpuDynInst->latency.init(gpuDynInst->computeUnit());
38445  gpuDynInst->latency.set(
38446  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
38447  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
38448  ConstVecOperandU32 data0(gpuDynInst, extData.DATA0);
38449  ConstVecOperandU32 data1(gpuDynInst, extData.DATA0 + 1);
38450  ConstVecOperandU32 data2(gpuDynInst, extData.DATA0 + 2);
38451  ConstVecOperandU32 data3(gpuDynInst, extData.DATA0 + 3);
38452 
38453  addr.read();
38454  data0.read();
38455  data1.read();
38456  data2.read();
38457  data3.read();
38458 
38459  calcAddr(gpuDynInst, addr);
38460 
38461  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
38462  if (gpuDynInst->exec_mask[lane]) {
38463  (reinterpret_cast<VecElemU32*>(
38464  gpuDynInst->d_data))[lane * 4] = data0[lane];
38465  (reinterpret_cast<VecElemU32*>(
38466  gpuDynInst->d_data))[lane * 4 + 1] = data1[lane];
38467  (reinterpret_cast<VecElemU32*>(
38468  gpuDynInst->d_data))[lane * 4 + 2] = data2[lane];
38469  (reinterpret_cast<VecElemU32*>(
38470  gpuDynInst->d_data))[lane * 4 + 3] = data3[lane];
38471  }
38472  }
38473 
38474  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
38475  } // execute
38476 
38477  void
38479  {
38480  Addr offset0 = instData.OFFSET0;
38481  Addr offset1 = instData.OFFSET1;
38482  Addr offset = (offset1 << 8) | offset0;
38483 
38484  initMemWrite<4>(gpuDynInst, offset);
38485  } // initiateAcc
38486 
38487  void
38489  {
38490  } // completeAcc
38491  // --- Inst_DS__DS_READ_B96 class methods ---
38492 
38494  : Inst_DS(iFmt, "ds_read_b96")
38495  {
38496  setFlag(MemoryRef);
38497  setFlag(Load);
38498  } // Inst_DS__DS_READ_B96
38499 
38501  {
38502  } // ~Inst_DS__DS_READ_B96
38503 
38504  // --- description from .arch file ---
38505  // Tri-dword read.
38506  void
38508  {
38509  Wavefront *wf = gpuDynInst->wavefront();
38510  gpuDynInst->execUnitId = wf->execUnitId;
38511  gpuDynInst->latency.init(gpuDynInst->computeUnit());
38512  gpuDynInst->latency.set(
38513  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
38514  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
38515 
38516  addr.read();
38517 
38518  calcAddr(gpuDynInst, addr);
38519 
38520  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
38521  } // execute
38522 
38523  void
38525  {
38526  Addr offset0 = instData.OFFSET0;
38527  Addr offset1 = instData.OFFSET1;
38528  Addr offset = (offset1 << 8) | offset0;
38529 
38530  initMemRead<3>(gpuDynInst, offset);
38531  }
38532 
38533  void
38535  {
38536  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
38537  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
38538  VecOperandU32 vdst2(gpuDynInst, extData.VDST + 2);
38539 
38540  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
38541  if (gpuDynInst->exec_mask[lane]) {
38542  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
38543  gpuDynInst->d_data))[lane * 4];
38544  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
38545  gpuDynInst->d_data))[lane * 4 + 1];
38546  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
38547  gpuDynInst->d_data))[lane * 4 + 2];
38548  }
38549  }
38550 
38551  vdst0.write();
38552  vdst1.write();
38553  vdst2.write();
38554  }
38555  // --- Inst_DS__DS_READ_B128 class methods ---
38556 
38558  : Inst_DS(iFmt, "ds_read_b128")
38559  {
38560  setFlag(MemoryRef);
38561  setFlag(Load);
38562  } // Inst_DS__DS_READ_B128
38563 
38565  {
38566  } // ~Inst_DS__DS_READ_B128
38567 
38568  // --- description from .arch file ---
38569  // Qword read.
38570  void
38572  {
38573  Wavefront *wf = gpuDynInst->wavefront();
38574  gpuDynInst->execUnitId = wf->execUnitId;
38575  gpuDynInst->latency.init(gpuDynInst->computeUnit());
38576  gpuDynInst->latency.set(
38577  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
38578  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
38579 
38580  addr.read();
38581 
38582  calcAddr(gpuDynInst, addr);
38583 
38584  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
38585  } // execute
38586 
38587  void
38589  {
38590  Addr offset0 = instData.OFFSET0;
38591  Addr offset1 = instData.OFFSET1;
38592  Addr offset = (offset1 << 8) | offset0;
38593 
38594  initMemRead<4>(gpuDynInst, offset);
38595  } // initiateAcc
38596 
38597  void
38599  {
38600  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
38601  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
38602  VecOperandU32 vdst2(gpuDynInst, extData.VDST + 2);
38603  VecOperandU32 vdst3(gpuDynInst, extData.VDST + 3);
38604 
38605  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
38606  if (gpuDynInst->exec_mask[lane]) {
38607  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
38608  gpuDynInst->d_data))[lane * 4];
38609  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
38610  gpuDynInst->d_data))[lane * 4 + 1];
38611  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
38612  gpuDynInst->d_data))[lane * 4 + 2];
38613  vdst3[lane] = (reinterpret_cast<VecElemU32*>(
38614  gpuDynInst->d_data))[lane * 4 + 3];
38615  }
38616  }
38617 
38618  vdst0.write();
38619  vdst1.write();
38620  vdst2.write();
38621  vdst3.write();
38622  } // completeAcc
38623  // --- Inst_MUBUF__BUFFER_LOAD_FORMAT_X class methods ---
38624 
38627  : Inst_MUBUF(iFmt, "buffer_load_format_x")
38628  {
38629  setFlag(MemoryRef);
38630  setFlag(Load);
38631  setFlag(GlobalSegment);
38632  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_X
38633 
38635  {
38636  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_X
38637 
38638  // --- description from .arch file ---
38639  // Untyped buffer load 1 dword with format conversion.
38640  void
38642  {
38644  } // execute
38645 
38646  void
38648  {
38649  } // initiateAcc
38650 
38651  void
38653  {
38654  } // execute
38655  // --- Inst_MUBUF__BUFFER_LOAD_FORMAT_XY class methods ---
38656 
38659  : Inst_MUBUF(iFmt, "buffer_load_format_xy")
38660  {
38661  setFlag(MemoryRef);
38662  setFlag(Load);
38663  setFlag(GlobalSegment);
38664  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
38665 
38667  {
38668  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
38669 
38670  // --- description from .arch file ---
38671  // Untyped buffer load 2 dwords with format conversion.
38672  void
38674  {
38676  } // execute
38677 
38678  void
38680  {
38681  } // initiateAcc
38682 
38683  void
38685  {
38686  } // execute
38687  // --- Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ class methods ---
38688 
38691  : Inst_MUBUF(iFmt, "buffer_load_format_xyz")
38692  {
38693  setFlag(MemoryRef);
38694  setFlag(Load);
38695  setFlag(GlobalSegment);
38696  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
38697 
38699  {
38700  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
38701 
38702  // --- description from .arch file ---
38703  // Untyped buffer load 3 dwords with format conversion.
38704  void
38706  {
38708  } // execute
38709 
38710  void
38712  {
38713  } // initiateAcc
38714 
38715  void
38717  {
38718  } // execute
38719  // --- Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW class methods ---
38720 
38723  : Inst_MUBUF(iFmt, "buffer_load_format_xyzw")
38724  {
38725  setFlag(MemoryRef);
38726  setFlag(Load);
38727  setFlag(GlobalSegment);
38728  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
38729 
38731  {
38732  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
38733 
38734  // --- description from .arch file ---
38735  // Untyped buffer load 4 dwords with format conversion.
38736  void
38738  {
38740  } // execute
38741 
38742  void
38744  {
38745  } // initiateAcc
38746 
38747  void
38749  {
38750  } // execute
38751  // --- Inst_MUBUF__BUFFER_STORE_FORMAT_X class methods ---
38752 
38755  : Inst_MUBUF(iFmt, "buffer_store_format_x")
38756  {
38757  setFlag(MemoryRef);
38758  setFlag(Store);
38759  setFlag(GlobalSegment);
38760  } // Inst_MUBUF__BUFFER_STORE_FORMAT_X
38761 
38763  {
38764  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_X
38765 
38766  // --- description from .arch file ---
38767  // Untyped buffer store 1 dword with format conversion.
38768  void
38770  {
38772  } // execute
38773 
38774  void
38776  {
38777  } // initiateAcc
38778 
38779  void
38781  {
38782  } // execute
38783  // --- Inst_MUBUF__BUFFER_STORE_FORMAT_XY class methods ---
38784 
38787  : Inst_MUBUF(iFmt, "buffer_store_format_xy")
38788  {
38789  setFlag(MemoryRef);
38790  setFlag(Store);
38791  setFlag(GlobalSegment);
38792  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XY
38793 
38795  {
38796  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XY
38797 
38798  // --- description from .arch file ---
38799  // Untyped buffer store 2 dwords with format conversion.
38800  void
38802  {
38804  } // execute
38805 
38806  void
38808  {
38809  } // initiateAcc
38810 
38811  void
38813  {
38814  } // execute
38815  // --- Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ class methods ---
38816 
38819  : Inst_MUBUF(iFmt, "buffer_store_format_xyz")
38820  {
38821  setFlag(MemoryRef);
38822  setFlag(Store);
38823  setFlag(GlobalSegment);
38824  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
38825 
38827  {
38828  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
38829 
38830  // --- description from .arch file ---
38831  // Untyped buffer store 3 dwords with format conversion.
38832  void
38834  {
38836  } // execute
38837 
38838  void
38840  {
38841  } // initiateAcc
38842 
38843  void
38845  {
38846  } // execute
38847  // --- Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW class methods ---
38848 
38851  : Inst_MUBUF(iFmt, "buffer_store_format_xyzw")
38852  {
38853  setFlag(MemoryRef);
38854  setFlag(Store);
38855  setFlag(GlobalSegment);
38856  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
38857 
38860  {
38861  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
38862 
38863  // --- description from .arch file ---
38864  // Untyped buffer store 4 dwords with format conversion.
38865  void
38867  {
38869  } // execute
38870 
38871  void
38873  {
38874  } // initiateAcc
38875 
38876  void
38878  {
38879  } // execute
38880  // --- Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X class methods ---
38881 
38884  : Inst_MUBUF(iFmt, "buffer_load_format_d16_x")
38885  {
38886  setFlag(MemoryRef);
38887  setFlag(Load);
38888  setFlag(GlobalSegment);
38889  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
38890 
38893  {
38894  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
38895 
38896  // --- description from .arch file ---
38897  // Untyped buffer load 1 dword with format conversion.
38898  void
38900  {
38902  } // execute
38903 
38904  void
38906  {
38907  } // initiateAcc
38908 
38909  void
38911  {
38912  } // execute
38913  // --- Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY class methods ---
38914 
38917  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xy")
38918  {
38919  setFlag(MemoryRef);
38920  setFlag(Load);
38921  setFlag(GlobalSegment);
38922  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
38923 
38926  {
38927  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
38928 
38929  // --- description from .arch file ---
38930  // Untyped buffer load 2 dwords with format conversion.
38931  void
38933  {
38935  } // execute
38936 
38937  void
38939  GPUDynInstPtr gpuDynInst)
38940  {
38941  } // initiateAcc
38942 
38943  void
38945  GPUDynInstPtr gpuDynInst)
38946  {
38947  } // execute
38948  // --- Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ class methods ---
38949 
38952  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xyz")
38953  {
38954  setFlag(MemoryRef);
38955  setFlag(Load);
38956  setFlag(GlobalSegment);
38957  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
38958 
38961  {
38962  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
38963 
38964  // --- description from .arch file ---
38965  // Untyped buffer load 3 dwords with format conversion.
38966  void
38968  {
38970  } // execute
38971 
38972  void
38974  GPUDynInstPtr gpuDynInst)
38975  {
38976  } // initiateAcc
38977 
38978  void
38980  GPUDynInstPtr gpuDynInst)
38981  {
38982  } // execute
38983  // --- Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW class methods ---
38984 
38987  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xyzw")
38988  {
38989  setFlag(MemoryRef);
38990  setFlag(Load);
38991  setFlag(GlobalSegment);
38992  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
38993 
38996  {
38997  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
38998 
38999  // --- description from .arch file ---
39000  // Untyped buffer load 4 dwords with format conversion.
39001  void
39003  {
39005  } // execute
39006 
39007  void
39009  GPUDynInstPtr gpuDynInst)
39010  {
39011  } // initiateAcc
39012 
39013  void
39015  GPUDynInstPtr gpuDynInst)
39016  {
39017  } // execute
39018  // --- Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X class methods ---
39019 
39022  : Inst_MUBUF(iFmt, "buffer_store_format_d16_x")
39023  {
39024  setFlag(Store);
39025  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
39026 
39029  {
39030  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
39031 
39032  // --- description from .arch file ---
39033  // Untyped buffer store 1 dword with format conversion.
39034  void
39036  {
39038  } // execute
39039 
39040  void
39042  GPUDynInstPtr gpuDynInst)
39043  {
39044  } // initiateAcc
39045 
39046  void
39048  GPUDynInstPtr gpuDynInst)
39049  {
39050  } // execute
39051  // --- Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY class methods ---
39052 
39055  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xy")
39056  {
39057  setFlag(MemoryRef);
39058  setFlag(Store);
39059  setFlag(GlobalSegment);
39060  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
39061 
39064  {
39065  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
39066 
39067  // --- description from .arch file ---
39068  // Untyped buffer store 2 dwords with format conversion.
39069  void
39071  {
39073  } // execute
39074 
39075  void
39077  GPUDynInstPtr gpuDynInst)
39078  {
39079  } // initiateAcc
39080 
39081  void
39083  GPUDynInstPtr gpuDynInst)
39084  {
39085  } // execute
39086  // --- Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ class methods ---
39087 
39090  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xyz")
39091  {
39092  setFlag(MemoryRef);
39093  setFlag(Store);
39094  setFlag(GlobalSegment);
39095  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
39096 
39099  {
39100  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
39101 
39102  // --- description from .arch file ---
39103  // Untyped buffer store 3 dwords with format conversion.
39104  void
39106  {
39108  } // execute
39109 
39110  void
39112  GPUDynInstPtr gpuDynInst)
39113  {
39114  } // initiateAcc
39115 
39116  void
39118  GPUDynInstPtr gpuDynInst)
39119  {
39120  } // execute
39121  // --- Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW class methods ---
39122 
39125  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xyzw")
39126  {
39127  setFlag(MemoryRef);
39128  setFlag(Store);
39129  setFlag(GlobalSegment);
39130  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
39131 
39134  {
39135  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
39136 
39137  // --- description from .arch file ---
39138  // Untyped buffer store 4 dwords with format conversion.
39139  void
39141  {
39143  } // execute
39144 
39145  void
39147  GPUDynInstPtr gpuDynInst)
39148  {
39149  } // initiateAcc
39150 
39151  void
39153  GPUDynInstPtr gpuDynInst)
39154  {
39155  } // execute
39156  // --- Inst_MUBUF__BUFFER_LOAD_UBYTE class methods ---
39157 
39160  : Inst_MUBUF(iFmt, "buffer_load_ubyte")
39161  {
39162  setFlag(MemoryRef);
39163  setFlag(Load);
39164  if (instData.LDS) {
39165  setFlag(GroupSegment);
39166  } else {
39167  setFlag(GlobalSegment);
39168  }
39169  } // Inst_MUBUF__BUFFER_LOAD_UBYTE
39170 
39172  {
39173  } // ~Inst_MUBUF__BUFFER_LOAD_UBYTE
39174 
39175  // --- description from .arch file ---
39176  // Untyped buffer load unsigned byte (zero extend to VGPR destination).
39177  void
39179  {
39180  Wavefront *wf = gpuDynInst->wavefront();
39181 
39182  if (gpuDynInst->exec_mask.none()) {
39183  wf->decVMemInstsIssued();
39184  return;
39185  }
39186 
39187  gpuDynInst->execUnitId = wf->execUnitId;
39188  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39189  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39190 
39191  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
39192  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
39193  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
39195 
39196  rsrcDesc.read();
39197  offset.read();
39198 
39199  int inst_offset = instData.OFFSET;
39200 
39201  if (!instData.IDXEN && !instData.OFFEN) {
39204  addr0, addr1, rsrcDesc, offset, inst_offset);
39205  } else if (!instData.IDXEN && instData.OFFEN) {
39206  addr0.read();
39209  addr0, addr1, rsrcDesc, offset, inst_offset);
39210  } else if (instData.IDXEN && !instData.OFFEN) {
39211  addr0.read();
39214  addr1, addr0, rsrcDesc, offset, inst_offset);
39215  } else {
39216  addr0.read();
39217  addr1.read();
39220  addr1, addr0, rsrcDesc, offset, inst_offset);
39221  }
39222 
39223  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
39224  } // execute
39225 
39226  void
39228  {
39229  initMemRead<VecElemU8>(gpuDynInst);
39230  } // initiateAcc
39231 
39232  void
39234  {
39235  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
39236 
39237  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39238  if (gpuDynInst->exec_mask[lane]) {
39239  if (!oobMask[lane]) {
39240  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU8*>(
39241  gpuDynInst->d_data))[lane]);
39242  } else {
39243  vdst[lane] = 0;
39244  }
39245  }
39246  }
39247 
39248  vdst.write();
39249  } // execute
39250 
39251  // --- Inst_MUBUF__BUFFER_LOAD_SBYTE class methods ---
39252 
39255  : Inst_MUBUF(iFmt, "buffer_load_sbyte")
39256  {
39257  setFlag(MemoryRef);
39258  setFlag(Load);
39259  setFlag(GlobalSegment);
39260  } // Inst_MUBUF__BUFFER_LOAD_SBYTE
39261 
39263  {
39264  } // ~Inst_MUBUF__BUFFER_LOAD_SBYTE
39265 
39266  // --- description from .arch file ---
39267  // Untyped buffer load signed byte (sign extend to VGPR destination).
39268  void
39270  {
39272  } // execute
39273 
39274  void
39276  {
39277  } // initiateAcc
39278 
39279  void
39281  {
39282  } // execute
39283  // --- Inst_MUBUF__BUFFER_LOAD_USHORT class methods ---
39284 
39287  : Inst_MUBUF(iFmt, "buffer_load_ushort")
39288  {
39289  setFlag(MemoryRef);
39290  setFlag(Load);
39291  if (instData.LDS) {
39292  setFlag(GroupSegment);
39293  } else {
39294  setFlag(GlobalSegment);
39295  }
39296  } // Inst_MUBUF__BUFFER_LOAD_USHORT
39297 
39299  {
39300  } // ~Inst_MUBUF__BUFFER_LOAD_USHORT
39301 
39302  // --- description from .arch file ---
39303  // Untyped buffer load unsigned short (zero extend to VGPR destination).
39304  void
39306  {
39307  Wavefront *wf = gpuDynInst->wavefront();
39308 
39309  if (gpuDynInst->exec_mask.none()) {
39310  wf->decVMemInstsIssued();
39311  return;
39312  }
39313 
39314  gpuDynInst->execUnitId = wf->execUnitId;
39315  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39316  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39317 
39318  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
39319  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
39320  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
39322 
39323  rsrcDesc.read();
39324  offset.read();
39325 
39326  int inst_offset = instData.OFFSET;
39327 
39328  if (!instData.IDXEN && !instData.OFFEN) {
39331  addr0, addr1, rsrcDesc, offset, inst_offset);
39332  } else if (!instData.IDXEN && instData.OFFEN) {
39333  addr0.read();
39336  addr0, addr1, rsrcDesc, offset, inst_offset);
39337  } else if (instData.IDXEN && !instData.OFFEN) {
39338  addr0.read();
39341  addr1, addr0, rsrcDesc, offset, inst_offset);
39342  } else {
39343  addr0.read();
39344  addr1.read();
39347  addr1, addr0, rsrcDesc, offset, inst_offset);
39348  }
39349 
39350  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
39351  } // execute
39352 
39353  void
39355  {
39356  initMemRead<VecElemU16>(gpuDynInst);
39357  } // initiateAcc
39358 
39359  void
39361  {
39362  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
39363 
39364  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39365  if (gpuDynInst->exec_mask[lane]) {
39366  if (!oobMask[lane]) {
39367  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU16*>(
39368  gpuDynInst->d_data))[lane]);
39369  } else {
39370  vdst[lane] = 0;
39371  }
39372  }
39373  }
39374 
39375  vdst.write();
39376  } // execute
39377 
39378  // --- Inst_MUBUF__BUFFER_LOAD_SSHORT class methods ---
39379 
39382  : Inst_MUBUF(iFmt, "buffer_load_sshort")
39383  {
39384  setFlag(MemoryRef);
39385  setFlag(Load);
39386  setFlag(GlobalSegment);
39387  } // Inst_MUBUF__BUFFER_LOAD_SSHORT
39388 
39390  {
39391  } // ~Inst_MUBUF__BUFFER_LOAD_SSHORT
39392 
39393  // --- description from .arch file ---
39394  // Untyped buffer load signed short (sign extend to VGPR destination).
39395  void
39397  {
39399  } // execute
39400 
39401  void
39403  {
39404  } // initiateAcc
39405 
39406  void
39408  {
39409  } // execute
39410  // --- Inst_MUBUF__BUFFER_LOAD_DWORD class methods ---
39411 
39414  : Inst_MUBUF(iFmt, "buffer_load_dword")
39415  {
39416  setFlag(MemoryRef);
39417  setFlag(Load);
39418  if (instData.LDS) {
39419  setFlag(GroupSegment);
39420  } else {
39421  setFlag(GlobalSegment);
39422  }
39423  } // Inst_MUBUF__BUFFER_LOAD_DWORD
39424 
39426  {
39427  } // ~Inst_MUBUF__BUFFER_LOAD_DWORD
39428 
39429  // --- description from .arch file ---
39430  // Untyped buffer load dword.
39431  void
39433  {
39434  Wavefront *wf = gpuDynInst->wavefront();
39435 
39436  if (gpuDynInst->exec_mask.none()) {
39437  wf->decVMemInstsIssued();
39438  return;
39439  }
39440 
39441  gpuDynInst->execUnitId = wf->execUnitId;
39442  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39443  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39444 
39445  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
39446  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
39447  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
39449 
39450  rsrcDesc.read();
39451  offset.read();
39452 
39453  int inst_offset = instData.OFFSET;
39454 
39455  if (!instData.IDXEN && !instData.OFFEN) {
39458  addr0, addr1, rsrcDesc, offset, inst_offset);
39459  } else if (!instData.IDXEN && instData.OFFEN) {
39460  addr0.read();
39463  addr0, addr1, rsrcDesc, offset, inst_offset);
39464  } else if (instData.IDXEN && !instData.OFFEN) {
39465  addr0.read();
39468  addr1, addr0, rsrcDesc, offset, inst_offset);
39469  } else {
39470  addr0.read();
39471  addr1.read();
39474  addr1, addr0, rsrcDesc, offset, inst_offset);
39475  }
39476 
39477  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
39478  } // execute
39479 
39480  void
39482  {
39483  initMemRead<VecElemU32>(gpuDynInst);
39484  } // initiateAcc
39485 
39486  void
39488  {
39489  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
39490 
39491  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39492  if (gpuDynInst->exec_mask[lane]) {
39493  if (!oobMask[lane]) {
39494  vdst[lane] = (reinterpret_cast<VecElemU32*>(
39495  gpuDynInst->d_data))[lane];
39496  } else {
39497  vdst[lane] = 0;
39498  }
39499  }
39500  }
39501 
39502  vdst.write();
39503  } // completeAcc
39504  // --- Inst_MUBUF__BUFFER_LOAD_DWORDX2 class methods ---
39505 
39508  : Inst_MUBUF(iFmt, "buffer_load_dwordx2")
39509  {
39510  setFlag(MemoryRef);
39511  setFlag(Load);
39512  if (instData.LDS) {
39513  setFlag(GroupSegment);
39514  } else {
39515  setFlag(GlobalSegment);
39516  }
39517  } // Inst_MUBUF__BUFFER_LOAD_DWORDX2
39518 
39520  {
39521  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX2
39522 
39523  // --- description from .arch file ---
39524  // Untyped buffer load 2 dwords.
39525  void
39527  {
39528  Wavefront *wf = gpuDynInst->wavefront();
39529 
39530  if (gpuDynInst->exec_mask.none()) {
39531  wf->decVMemInstsIssued();
39532  return;
39533  }
39534 
39535  gpuDynInst->execUnitId = wf->execUnitId;
39536  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39537  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39538 
39539  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
39540  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
39541  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
39543 
39544  rsrcDesc.read();
39545  offset.read();
39546 
39547  int inst_offset = instData.OFFSET;
39548 
39549  if (!instData.IDXEN && !instData.OFFEN) {
39552  addr0, addr1, rsrcDesc, offset, inst_offset);
39553  } else if (!instData.IDXEN && instData.OFFEN) {
39554  addr0.read();
39557  addr0, addr1, rsrcDesc, offset, inst_offset);
39558  } else if (instData.IDXEN && !instData.OFFEN) {
39559  addr0.read();
39562  addr1, addr0, rsrcDesc, offset, inst_offset);
39563  } else {
39564  addr0.read();
39565  addr1.read();
39568  addr1, addr0, rsrcDesc, offset, inst_offset);
39569  }
39570 
39571  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
39572  } // execute
39573 
39574  void
39576  {
39577  initMemRead<2>(gpuDynInst);
39578  } // initiateAcc
39579 
39580  void
39582  {
39583  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
39584  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
39585 
39586  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39587  if (gpuDynInst->exec_mask[lane]) {
39588  if (!oobMask[lane]) {
39589  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
39590  gpuDynInst->d_data))[lane * 2];
39591  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
39592  gpuDynInst->d_data))[lane * 2 + 1];
39593  } else {
39594  vdst0[lane] = 0;
39595  vdst1[lane] = 0;
39596  }
39597  }
39598  }
39599 
39600  vdst0.write();
39601  vdst1.write();
39602  } // completeAcc
39603  // --- Inst_MUBUF__BUFFER_LOAD_DWORDX3 class methods ---
39604 
39607  : Inst_MUBUF(iFmt, "buffer_load_dwordx3")
39608  {
39609  setFlag(MemoryRef);
39610  setFlag(Load);
39611  if (instData.LDS) {
39612  setFlag(GroupSegment);
39613  } else {
39614  setFlag(GlobalSegment);
39615  }
39616  } // Inst_MUBUF__BUFFER_LOAD_DWORDX3
39617 
39619  {
39620  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX3
39621 
39622  // --- description from .arch file ---
39623  // Untyped buffer load 3 dwords.
39624  void
39626  {
39627  Wavefront *wf = gpuDynInst->wavefront();
39628 
39629  if (gpuDynInst->exec_mask.none()) {
39630  wf->decVMemInstsIssued();
39631  return;
39632  }
39633 
39634  gpuDynInst->execUnitId = wf->execUnitId;
39635  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39636  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39637 
39638  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
39639  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
39640  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
39642 
39643  rsrcDesc.read();
39644  offset.read();
39645 
39646  int inst_offset = instData.OFFSET;
39647 
39648  if (!instData.IDXEN && !instData.OFFEN) {
39651  addr0, addr1, rsrcDesc, offset, inst_offset);
39652  } else if (!instData.IDXEN && instData.OFFEN) {
39653  addr0.read();
39656  addr0, addr1, rsrcDesc, offset, inst_offset);
39657  } else if (instData.IDXEN && !instData.OFFEN) {
39658  addr0.read();
39661  addr1, addr0, rsrcDesc, offset, inst_offset);
39662  } else {
39663  addr0.read();
39664  addr1.read();
39667  addr1, addr0, rsrcDesc, offset, inst_offset);
39668  }
39669 
39670  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
39671  } // execute
39672 
39673  void
39675  {
39676  initMemRead<3>(gpuDynInst);
39677  } // initiateAcc
39678 
39679  void
39681  {
39682  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
39683  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
39684  VecOperandU32 vdst2(gpuDynInst, extData.VDATA + 2);
39685 
39686  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39687  if (gpuDynInst->exec_mask[lane]) {
39688  if (!oobMask[lane]) {
39689  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
39690  gpuDynInst->d_data))[lane * 3];
39691  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
39692  gpuDynInst->d_data))[lane * 3 + 1];
39693  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
39694  gpuDynInst->d_data))[lane * 3 + 2];
39695  } else {
39696  vdst0[lane] = 0;
39697  vdst1[lane] = 0;
39698  vdst2[lane] = 0;
39699  }
39700  }
39701  }
39702 
39703  vdst0.write();
39704  vdst1.write();
39705  vdst2.write();
39706  } // completeAcc
39707  // --- Inst_MUBUF__BUFFER_LOAD_DWORDX4 class methods ---
39708 
39711  : Inst_MUBUF(iFmt, "buffer_load_dwordx4")
39712  {
39713  setFlag(MemoryRef);
39714  setFlag(Load);
39715  if (instData.LDS) {
39716  setFlag(GroupSegment);
39717  } else {
39718  setFlag(GlobalSegment);
39719  }
39720  } // Inst_MUBUF__BUFFER_LOAD_DWORDX4
39721 
39723  {
39724  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX4
39725 
39726  // --- description from .arch file ---
39727  // Untyped buffer load 4 dwords.
39728  void
39730  {
39731  Wavefront *wf = gpuDynInst->wavefront();
39732 
39733  if (gpuDynInst->exec_mask.none()) {
39734  wf->decVMemInstsIssued();
39735  return;
39736  }
39737 
39738  gpuDynInst->execUnitId = wf->execUnitId;
39739  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39740  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39741 
39742  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
39743  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
39744  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
39746 
39747  rsrcDesc.read();
39748  offset.read();
39749 
39750  int inst_offset = instData.OFFSET;
39751 
39752  if (!instData.IDXEN && !instData.OFFEN) {
39755  addr0, addr1, rsrcDesc, offset, inst_offset);
39756  } else if (!instData.IDXEN && instData.OFFEN) {
39757  addr0.read();
39760  addr0, addr1, rsrcDesc, offset, inst_offset);
39761  } else if (instData.IDXEN && !instData.OFFEN) {
39762  addr0.read();
39765  addr1, addr0, rsrcDesc, offset, inst_offset);
39766  } else {
39767  addr0.read();
39768  addr1.read();
39771  addr1, addr0, rsrcDesc, offset, inst_offset);
39772  }
39773 
39774  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
39775  } // execute
39776 
39777  void
39779  {
39780  initMemRead<4>(gpuDynInst);
39781  } // initiateAcc
39782 
39783  void
39785  {
39786  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
39787  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
39788  VecOperandU32 vdst2(gpuDynInst, extData.VDATA + 2);
39789  VecOperandU32 vdst3(gpuDynInst, extData.VDATA + 3);
39790 
39791  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39792  if (gpuDynInst->exec_mask[lane]) {
39793  if (!oobMask[lane]) {
39794  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
39795  gpuDynInst->d_data))[lane * 4];
39796  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
39797  gpuDynInst->d_data))[lane * 4 + 1];
39798  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
39799  gpuDynInst->d_data))[lane * 4 + 2];
39800  vdst3[lane] = (reinterpret_cast<VecElemU32*>(
39801  gpuDynInst->d_data))[lane * 4 + 3];
39802  } else {
39803  vdst0[lane] = 0;
39804  vdst1[lane] = 0;
39805  vdst2[lane] = 0;
39806  vdst3[lane] = 0;
39807  }
39808  }
39809  }
39810 
39811  vdst0.write();
39812  vdst1.write();
39813  vdst2.write();
39814  vdst3.write();
39815  } // completeAcc
39816  // --- Inst_MUBUF__BUFFER_STORE_BYTE class methods ---
39817 
39820  : Inst_MUBUF(iFmt, "buffer_store_byte")
39821  {
39822  setFlag(MemoryRef);
39823  setFlag(Store);
39824  if (instData.LDS) {
39825  setFlag(GroupSegment);
39826  } else {
39827  setFlag(GlobalSegment);
39828  }
39829  } // Inst_MUBUF__BUFFER_STORE_BYTE
39830 
39832  {
39833  } // ~Inst_MUBUF__BUFFER_STORE_BYTE
39834 
39835  // --- description from .arch file ---
39836  // Untyped buffer store byte.
39837  void
39839  {
39840  Wavefront *wf = gpuDynInst->wavefront();
39841 
39842  if (gpuDynInst->exec_mask.none()) {
39843  wf->decVMemInstsIssued();
39844  wf->decExpInstsIssued();
39845  return;
39846  }
39847 
39848  gpuDynInst->execUnitId = wf->execUnitId;
39849  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39850  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39851 
39852  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
39853  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
39854  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
39856  ConstVecOperandI8 data(gpuDynInst, extData.VDATA);
39857 
39858  rsrcDesc.read();
39859  offset.read();
39860  data.read();
39861 
39862  int inst_offset = instData.OFFSET;
39863 
39864  if (!instData.IDXEN && !instData.OFFEN) {
39867  addr0, addr1, rsrcDesc, offset, inst_offset);
39868  } else if (!instData.IDXEN && instData.OFFEN) {
39869  addr0.read();
39872  addr0, addr1, rsrcDesc, offset, inst_offset);
39873  } else if (instData.IDXEN && !instData.OFFEN) {
39874  addr0.read();
39877  addr1, addr0, rsrcDesc, offset, inst_offset);
39878  } else {
39879  addr0.read();
39880  addr1.read();
39883  addr1, addr0, rsrcDesc, offset, inst_offset);
39884  }
39885 
39886  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
39887 
39888  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39889  if (gpuDynInst->exec_mask[lane]) {
39890  (reinterpret_cast<VecElemI8*>(gpuDynInst->d_data))[lane]
39891  = data[lane];
39892  }
39893  }
39894  } // execute
39895 
39896  void
39898  {
39899  initMemWrite<VecElemI8>(gpuDynInst);
39900  } // initiateAcc
39901 
39902  void
39904  {
39905  } // execute
39906  // --- Inst_MUBUF__BUFFER_STORE_SHORT class methods ---
39907 
39910  : Inst_MUBUF(iFmt, "buffer_store_short")
39911  {
39912  setFlag(MemoryRef);
39913  setFlag(Store);
39914  if (instData.LDS) {
39915  setFlag(GroupSegment);
39916  } else {
39917  setFlag(GlobalSegment);
39918  }
39919  } // Inst_MUBUF__BUFFER_STORE_SHORT
39920 
39922  {
39923  } // ~Inst_MUBUF__BUFFER_STORE_SHORT
39924 
39925  // --- description from .arch file ---
39926  // Untyped buffer store short.
39927  void
39929  {
39930  Wavefront *wf = gpuDynInst->wavefront();
39931 
39932  if (gpuDynInst->exec_mask.none()) {
39933  wf->decVMemInstsIssued();
39934  wf->decExpInstsIssued();
39935  return;
39936  }
39937 
39938  gpuDynInst->execUnitId = wf->execUnitId;
39939  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39940  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39941 
39942  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
39943  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
39944  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
39946  ConstVecOperandI16 data(gpuDynInst, extData.VDATA);
39947 
39948  rsrcDesc.read();
39949  offset.read();
39950  data.read();
39951 
39952  int inst_offset = instData.OFFSET;
39953 
39954  if (!instData.IDXEN && !instData.OFFEN) {
39957  addr0, addr1, rsrcDesc, offset, inst_offset);
39958  } else if (!instData.IDXEN && instData.OFFEN) {
39959  addr0.read();
39962  addr0, addr1, rsrcDesc, offset, inst_offset);
39963  } else if (instData.IDXEN && !instData.OFFEN) {
39964  addr0.read();
39967  addr1, addr0, rsrcDesc, offset, inst_offset);
39968  } else {
39969  addr0.read();
39970  addr1.read();
39973  addr1, addr0, rsrcDesc, offset, inst_offset);
39974  }
39975 
39976  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
39977 
39978  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39979  if (gpuDynInst->exec_mask[lane]) {
39980  (reinterpret_cast<VecElemI16*>(gpuDynInst->d_data))[lane]
39981  = data[lane];
39982  }
39983  }
39984  } // execute
39985 
39986  void
39988  {
39989  initMemWrite<VecElemI16>(gpuDynInst);
39990  } // initiateAcc
39991 
39992  void
39994  {
39995  } // execute
39996  // --- Inst_MUBUF__BUFFER_STORE_DWORD class methods ---
39997 
40000  : Inst_MUBUF(iFmt, "buffer_store_dword")
40001  {
40002  setFlag(MemoryRef);
40003  setFlag(Store);
40004  if (instData.LDS) {
40005  setFlag(GroupSegment);
40006  } else {
40007  setFlag(GlobalSegment);
40008  }
40009  } // Inst_MUBUF__BUFFER_STORE_DWORD
40010 
40012  {
40013  } // ~Inst_MUBUF__BUFFER_STORE_DWORD
40014 
40015  // --- description from .arch file ---
40016  // Untyped buffer store dword.
40017  void
40019  {
40020  Wavefront *wf = gpuDynInst->wavefront();
40021 
40022  if (gpuDynInst->exec_mask.none()) {
40023  wf->decVMemInstsIssued();
40024  wf->decExpInstsIssued();
40025  return;
40026  }
40027 
40028  gpuDynInst->execUnitId = wf->execUnitId;
40029  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40030  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40031 
40032  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
40033  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
40034  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
40036  ConstVecOperandU32 data(gpuDynInst, extData.VDATA);
40037 
40038  rsrcDesc.read();
40039  offset.read();
40040  data.read();
40041 
40042  int inst_offset = instData.OFFSET;
40043 
40044  if (!instData.IDXEN && !instData.OFFEN) {
40047  addr0, addr1, rsrcDesc, offset, inst_offset);
40048  } else if (!instData.IDXEN && instData.OFFEN) {
40049  addr0.read();
40052  addr0, addr1, rsrcDesc, offset, inst_offset);
40053  } else if (instData.IDXEN && !instData.OFFEN) {
40054  addr0.read();
40057  addr1, addr0, rsrcDesc, offset, inst_offset);
40058  } else {
40059  addr0.read();
40060  addr1.read();
40063  addr1, addr0, rsrcDesc, offset, inst_offset);
40064  }
40065 
40066  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
40067 
40068  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40069  if (gpuDynInst->exec_mask[lane]) {
40070  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane]
40071  = data[lane];
40072  }
40073  }
40074  } // execute
40075 
40076  void
40078  {
40079  initMemWrite<VecElemU32>(gpuDynInst);
40080  } // initiateAcc
40081 
40082  void
40084  {
40085  } // completeAcc
40086  // --- Inst_MUBUF__BUFFER_STORE_DWORDX2 class methods ---
40087 
40090  : Inst_MUBUF(iFmt, "buffer_store_dwordx2")
40091  {
40092  setFlag(MemoryRef);
40093  setFlag(Store);
40094  if (instData.LDS) {
40095  setFlag(GroupSegment);
40096  } else {
40097  setFlag(GlobalSegment);
40098  }
40099  } // Inst_MUBUF__BUFFER_STORE_DWORDX2
40100 
40102  {
40103  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX2
40104 
40105  // --- description from .arch file ---
40106  // Untyped buffer store 2 dwords.
40107  void
40109  {
40110  Wavefront *wf = gpuDynInst->wavefront();
40111 
40112  if (gpuDynInst->exec_mask.none()) {
40113  wf->decVMemInstsIssued();
40114  wf->decExpInstsIssued();
40115  return;
40116  }
40117 
40118  gpuDynInst->execUnitId = wf->execUnitId;
40119  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40120  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40121 
40122  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
40123  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
40124  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
40126  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
40127  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
40128 
40129  rsrcDesc.read();
40130  offset.read();
40131  data0.read();
40132  data1.read();
40133 
40134  int inst_offset = instData.OFFSET;
40135 
40136  if (!instData.IDXEN && !instData.OFFEN) {
40139  addr0, addr1, rsrcDesc, offset, inst_offset);
40140  } else if (!instData.IDXEN && instData.OFFEN) {
40141  addr0.read();
40144  addr0, addr1, rsrcDesc, offset, inst_offset);
40145  } else if (instData.IDXEN && !instData.OFFEN) {
40146  addr0.read();
40149  addr1, addr0, rsrcDesc, offset, inst_offset);
40150  } else {
40151  addr0.read();
40152  addr1.read();
40155  addr1, addr0, rsrcDesc, offset, inst_offset);
40156  }
40157 
40158  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
40159 
40160  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40161  if (gpuDynInst->exec_mask[lane]) {
40162  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
40163  = data0[lane];
40164  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
40165  = data1[lane];
40166  }
40167  }
40168  } // execute
40169 
40170  void
40172  {
40173  initMemWrite<2>(gpuDynInst);
40174  } // initiateAcc
40175 
40176  void
40178  {
40179  } // completeAcc
40180  // --- Inst_MUBUF__BUFFER_STORE_DWORDX3 class methods ---
40181 
40184  : Inst_MUBUF(iFmt, "buffer_store_dwordx3")
40185  {
40186  setFlag(MemoryRef);
40187  setFlag(Store);
40188  if (instData.LDS) {
40189  setFlag(GroupSegment);
40190  } else {
40191  setFlag(GlobalSegment);
40192  }
40193  } // Inst_MUBUF__BUFFER_STORE_DWORDX3
40194 
40196  {
40197  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX3
40198 
40199  // --- description from .arch file ---
40200  // Untyped buffer store 3 dwords.
40201  void
40203  {
40204  Wavefront *wf = gpuDynInst->wavefront();
40205 
40206  if (gpuDynInst->exec_mask.none()) {
40207  wf->decVMemInstsIssued();
40208  wf->decExpInstsIssued();
40209  return;
40210  }
40211 
40212  gpuDynInst->execUnitId = wf->execUnitId;
40213  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40214  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40215 
40216  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
40217  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
40218  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
40220  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
40221  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
40222  ConstVecOperandU32 data2(gpuDynInst, extData.VDATA + 2);
40223 
40224  rsrcDesc.read();
40225  offset.read();
40226  data0.read();
40227  data1.read();
40228  data2.read();
40229 
40230  int inst_offset = instData.OFFSET;
40231 
40232  if (!instData.IDXEN && !instData.OFFEN) {
40235  addr0, addr1, rsrcDesc, offset, inst_offset);
40236  } else if (!instData.IDXEN && instData.OFFEN) {
40237  addr0.read();
40240  addr0, addr1, rsrcDesc, offset, inst_offset);
40241  } else if (instData.IDXEN && !instData.OFFEN) {
40242  addr0.read();
40245  addr1, addr0, rsrcDesc, offset, inst_offset);
40246  } else {
40247  addr0.read();
40248  addr1.read();
40251  addr1, addr0, rsrcDesc, offset, inst_offset);
40252  }
40253 
40254  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
40255 
40256  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40257  if (gpuDynInst->exec_mask[lane]) {
40258  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
40259  = data0[lane];
40260  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
40261  = data1[lane];
40262  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 2]
40263  = data2[lane];
40264  }
40265  }
40266  } // execute
40267 
40268  void
40270  {
40271  initMemWrite<3>(gpuDynInst);
40272  } // initiateAcc
40273 
40274  void
40276  {
40277  } // completeAcc
40278  // --- Inst_MUBUF__BUFFER_STORE_DWORDX4 class methods ---
40279 
40282  : Inst_MUBUF(iFmt, "buffer_store_dwordx4")
40283  {
40284  setFlag(MemoryRef);
40285  setFlag(Store);
40286  if (instData.LDS) {
40287  setFlag(GroupSegment);
40288  } else {
40289  setFlag(GlobalSegment);
40290  }
40291  } // Inst_MUBUF__BUFFER_STORE_DWORDX4
40292 
40294  {
40295  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX4
40296 
40297  // --- description from .arch file ---
40298  // Untyped buffer store 4 dwords.
40299  void
40301  {
40302  Wavefront *wf = gpuDynInst->wavefront();
40303 
40304  if (gpuDynInst->exec_mask.none()) {
40305  wf->decVMemInstsIssued();
40306  wf->decExpInstsIssued();
40307  return;
40308  }
40309 
40310  gpuDynInst->execUnitId = wf->execUnitId;
40311  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40312  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40313 
40314  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
40315  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
40316  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
40318  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
40319  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
40320  ConstVecOperandU32 data2(gpuDynInst, extData.VDATA + 2);
40321  ConstVecOperandU32 data3(gpuDynInst, extData.VDATA + 3);
40322 
40323  rsrcDesc.read();
40324  offset.read();
40325  data0.read();
40326  data1.read();
40327  data2.read();
40328  data3.read();
40329 
40330  int inst_offset = instData.OFFSET;
40331 
40332  if (!instData.IDXEN && !instData.OFFEN) {
40335  addr0, addr1, rsrcDesc, offset, inst_offset);
40336  } else if (!instData.IDXEN && instData.OFFEN) {
40337  addr0.read();
40340  addr0, addr1, rsrcDesc, offset, inst_offset);
40341  } else if (instData.IDXEN && !instData.OFFEN) {
40342  addr0.read();
40345  addr1, addr0, rsrcDesc, offset, inst_offset);
40346  } else {
40347  addr0.read();
40348  addr1.read();
40351  addr1, addr0, rsrcDesc, offset, inst_offset);
40352  }
40353 
40354  gpuDynInst->computeUnit()->globalMemoryPipe.issueRequest(gpuDynInst);
40355 
40356  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40357  if (gpuDynInst->exec_mask[lane]) {
40358  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
40359  = data0[lane];
40360  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
40361  = data1[lane];
40362  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 2]
40363  = data2[lane];
40364  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 3]
40365  = data3[lane];
40366  }
40367  }
40368  } // execute
40369 
40370  void
40372  {
40373  initMemWrite<4>(gpuDynInst);
40374  } // initiateAcc
40375 
40376  void
40378  {
40379  } // completeAcc
40380  // --- Inst_MUBUF__BUFFER_STORE_LDS_DWORD class methods ---
40381 
40384  : Inst_MUBUF(iFmt, "buffer_store_lds_dword")
40385  {
40386  setFlag(Store);
40387  setFlag(GlobalSegment);
40388  } // Inst_MUBUF__BUFFER_STORE_LDS_DWORD
40389 
40391  {
40392  } // ~Inst_MUBUF__BUFFER_STORE_LDS_DWORD
40393 
40394  // --- description from .arch file ---
40395  // Store one DWORD from LDS memory to system memory without utilizing
40396  // VGPRs.
40397  void
40399  {
40401  } // execute
40402  // --- Inst_MUBUF__BUFFER_WBINVL1 class methods ---
40403 
40405  : Inst_MUBUF(iFmt, "buffer_wbinvl1")
40406  {
40407  setFlag(MemoryRef);
40408  setFlag(GPUStaticInst::MemSync);
40409  setFlag(GlobalSegment);
40410  setFlag(MemSync);
40411  } // Inst_MUBUF__BUFFER_WBINVL1
40412 
40414  {
40415  } // ~Inst_MUBUF__BUFFER_WBINVL1
40416 
40417  // --- description from .arch file ---
40418  // Write back and invalidate the shader L1.
40419  // Always returns ACK to shader.
40420  void
40422  {
40423  Wavefront *wf = gpuDynInst->wavefront();
40424 
40425  if (gpuDynInst->exec_mask.none()) {
40426  wf->decVMemInstsIssued();
40427  return;
40428  }
40429 
40430  gpuDynInst->execUnitId = wf->execUnitId;
40431  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40432  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40433 
40434  if (gpuDynInst->executedAs() == enums::SC_GLOBAL) {
40435  gpuDynInst->computeUnit()->globalMemoryPipe.
40436  issueRequest(gpuDynInst);
40437  } else {
40438  fatal("Unsupported scope for flat instruction.\n");
40439  }
40440  } // execute
40441 
40442  void
40444  {
40445  // TODO: Fix it for gfx10. Once we have the new gfx10 cache model, we
40446  // need to precisely communicate the writeback-invalidate operation to
40447  // the new gfx10 coalescer rather than sending AcquireRelease markers.
40448  // The SICoalescer would need to be updated appropriately as well.
40449  injectGlobalMemFence(gpuDynInst);
40450  } // initiateAcc
40451  void
40453  {
40454  } // completeAcc
40455  // --- Inst_MUBUF__BUFFER_WBINVL1_VOL class methods ---
40456 
40459  : Inst_MUBUF(iFmt, "buffer_wbinvl1_vol") {
40460  // This instruction is same as buffer_wbinvl1 instruction except this
40461  // instruction only invalidate L1 shader line with MTYPE SC and GC.
40462  // Since Hermes L1 (TCP) do not differentiate between its cache lines,
40463  // this instruction currently behaves (and implemented ) exactly like
40464  // buffer_wbinvl1 instruction.
40465  setFlag(MemoryRef);
40466  setFlag(GPUStaticInst::MemSync);
40467  setFlag(GlobalSegment);
40468  setFlag(MemSync);
40469  } // Inst_MUBUF__BUFFER_WBINVL1_VOL
40470 
40472  {
40473  } // ~Inst_MUBUF__BUFFER_WBINVL1_VOL
40474 
40475  // --- description from .arch file ---
40476  // Write back and invalidate the shader L1 only for lines that are marked
40477  // --- volatile.
40478  // Always returns ACK to shader.
40479  void
40481  {
40482  Wavefront *wf = gpuDynInst->wavefront();
40483 
40484  if (gpuDynInst->exec_mask.none()) {
40485  wf->decVMemInstsIssued();
40486  return;
40487  }
40488 
40489  gpuDynInst->execUnitId = wf->execUnitId;
40490  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40491  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40492 
40493  if (gpuDynInst->executedAs() == enums::SC_GLOBAL) {
40494  gpuDynInst->computeUnit()->globalMemoryPipe.
40495  issueRequest(gpuDynInst);
40496  } else {
40497  fatal("Unsupported scope for flat instruction.\n");
40498  }
40499  } // execute
40500  void
40502  {
40503  injectGlobalMemFence(gpuDynInst);
40504  } // initiateAcc
40505  void
40507  {
40508  } // completeAcc
40509  // --- Inst_MUBUF__BUFFER_ATOMIC_SWAP class methods ---
40510 
40513  : Inst_MUBUF(iFmt, "buffer_atomic_swap")
40514  {
40515  setFlag(AtomicExch);
40516  if (instData.GLC) {
40517  setFlag(AtomicReturn);
40518  } else {
40519  setFlag(AtomicNoReturn);
40520  }
40521  setFlag(MemoryRef);
40522  setFlag(GlobalSegment);
40523  } // Inst_MUBUF__BUFFER_ATOMIC_SWAP
40524 
40526  {
40527  } // ~Inst_MUBUF__BUFFER_ATOMIC_SWAP
40528 
40529  // --- description from .arch file ---
40530  // 32b:
40531  // tmp = MEM[ADDR];
40532  // MEM[ADDR] = DATA;
40533  // RETURN_DATA = tmp.
40534  void
40536  {
40538  } // execute
40539  // --- Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP class methods ---
40540 
40543  : Inst_MUBUF(iFmt, "buffer_atomic_cmpswap")
40544  {
40545  setFlag(AtomicCAS);
40546  if (instData.GLC) {
40547  setFlag(AtomicReturn);
40548  } else {
40549  setFlag(AtomicNoReturn);
40550  }
40551  setFlag(MemoryRef);
40552  setFlag(GlobalSegment);
40553  } // Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
40554 
40556  {
40557  } // ~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
40558 
40559  // --- description from .arch file ---
40560  // 32b:
40561  // tmp = MEM[ADDR];
40562  // src = DATA[0];
40563  // cmp = DATA[1];
40564  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
40565  // RETURN_DATA[0] = tmp.
40566  void
40568  {
40570  } // execute
40571  // --- Inst_MUBUF__BUFFER_ATOMIC_ADD class methods ---
40572 
40575  : Inst_MUBUF(iFmt, "buffer_atomic_add")
40576  {
40577  setFlag(AtomicAdd);
40578  if (instData.GLC) {
40579  setFlag(AtomicReturn);
40580  } else {
40581  setFlag(AtomicNoReturn);
40582  }
40583  setFlag(MemoryRef);
40584  setFlag(GlobalSegment);
40585  } // Inst_MUBUF__BUFFER_ATOMIC_ADD
40586 
40588  {
40589  } // ~Inst_MUBUF__BUFFER_ATOMIC_ADD
40590 
40591  // --- description from .arch file ---
40592  // 32b:
40593  // tmp = MEM[ADDR];
40594  // MEM[ADDR] += DATA;
40595  // RETURN_DATA = tmp.
40596  void
40598  {
40600  } // execute
40601  // --- Inst_MUBUF__BUFFER_ATOMIC_SUB class methods ---
40602 
40605  : Inst_MUBUF(iFmt, "buffer_atomic_sub")
40606  {
40607  setFlag(AtomicSub);
40608  if (instData.GLC) {
40609  setFlag(AtomicReturn);
40610  } else {
40611  setFlag(AtomicNoReturn);
40612  }
40613  setFlag(MemoryRef);
40614  setFlag(GlobalSegment);
40615  } // Inst_MUBUF__BUFFER_ATOMIC_SUB
40616 
40618  {
40619  } // ~Inst_MUBUF__BUFFER_ATOMIC_SUB
40620 
40621  // --- description from .arch file ---
40622  // 32b:
40623  // tmp = MEM[ADDR];
40624  // MEM[ADDR] -= DATA;
40625  // RETURN_DATA = tmp.
40626  void
40628  {
40630  } // execute
40631  // --- Inst_MUBUF__BUFFER_ATOMIC_SMIN class methods ---
40632 
40635  : Inst_MUBUF(iFmt, "buffer_atomic_smin")
40636  {
40637  setFlag(AtomicMin);
40638  if (instData.GLC) {
40639  setFlag(AtomicReturn);
40640  } else {
40641  setFlag(AtomicNoReturn);
40642  }
40643  setFlag(MemoryRef);
40644  setFlag(GlobalSegment);
40645  } // Inst_MUBUF__BUFFER_ATOMIC_SMIN
40646 
40648  {
40649  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMIN
40650 
40651  // --- description from .arch file ---
40652  // 32b:
40653  // tmp = MEM[ADDR];
40654  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
40655  // RETURN_DATA = tmp.
40656  void
40658  {
40660  } // execute
40661  // --- Inst_MUBUF__BUFFER_ATOMIC_UMIN class methods ---
40662 
40665  : Inst_MUBUF(iFmt, "buffer_atomic_umin")
40666  {
40667  setFlag(AtomicMin);
40668  if (instData.GLC) {
40669  setFlag(AtomicReturn);
40670  } else {
40671  setFlag(AtomicNoReturn);
40672  }
40673  setFlag(MemoryRef);
40674  setFlag(GlobalSegment);
40675  } // Inst_MUBUF__BUFFER_ATOMIC_UMIN
40676 
40678  {
40679  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMIN
40680 
40681  // --- description from .arch file ---
40682  // 32b:
40683  // tmp = MEM[ADDR];
40684  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
40685  // RETURN_DATA = tmp.
40686  void
40688  {
40690  } // execute
40691  // --- Inst_MUBUF__BUFFER_ATOMIC_SMAX class methods ---
40692 
40695  : Inst_MUBUF(iFmt, "buffer_atomic_smax")
40696  {
40697  setFlag(AtomicMax);
40698  if (instData.GLC) {
40699  setFlag(AtomicReturn);
40700  } else {
40701  setFlag(AtomicNoReturn);
40702  }
40703  setFlag(MemoryRef);
40704  setFlag(GlobalSegment);
40705  } // Inst_MUBUF__BUFFER_ATOMIC_SMAX
40706 
40708  {
40709  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMAX
40710 
40711  // --- description from .arch file ---
40712  // 32b:
40713  // tmp = MEM[ADDR];
40714  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
40715  // RETURN_DATA = tmp.
40716  void
40718  {
40720  } // execute
40721  // --- Inst_MUBUF__BUFFER_ATOMIC_UMAX class methods ---
40722 
40725  : Inst_MUBUF(iFmt, "buffer_atomic_umax")
40726  {
40727  setFlag(AtomicMax);
40728  if (instData.GLC) {
40729  setFlag(AtomicReturn);
40730  } else {
40731  setFlag(AtomicNoReturn);
40732  }
40733  setFlag(MemoryRef);
40734  setFlag(GlobalSegment);
40735  } // Inst_MUBUF__BUFFER_ATOMIC_UMAX
40736 
40738  {
40739  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMAX
40740 
40741  // --- description from .arch file ---
40742  // 32b:
40743  // tmp = MEM[ADDR];
40744  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
40745  // RETURN_DATA = tmp.
40746  void
40748  {
40750  } // execute
40751  // --- Inst_MUBUF__BUFFER_ATOMIC_AND class methods ---
40752 
40755  : Inst_MUBUF(iFmt, "buffer_atomic_and")
40756  {
40757  setFlag(AtomicAnd);
40758  if (instData.GLC) {
40759  setFlag(AtomicReturn);
40760  } else {
40761  setFlag(AtomicNoReturn);
40762  }
40763  setFlag(MemoryRef);
40764  setFlag(GlobalSegment);
40765  } // Inst_MUBUF__BUFFER_ATOMIC_AND
40766 
40768  {
40769  } // ~Inst_MUBUF__BUFFER_ATOMIC_AND
40770 
40771  // --- description from .arch file ---
40772  // 32b:
40773  // tmp = MEM[ADDR];
40774  // MEM[ADDR] &= DATA;
40775  // RETURN_DATA = tmp.
40776  void
40778  {
40780  } // execute
40781  // --- Inst_MUBUF__BUFFER_ATOMIC_OR class methods ---
40782 
40785  : Inst_MUBUF(iFmt, "buffer_atomic_or")
40786  {
40787  setFlag(AtomicOr);
40788  if (instData.GLC) {
40789  setFlag(AtomicReturn);
40790  } else {
40791  setFlag(AtomicNoReturn);
40792  }
40793  setFlag(MemoryRef);
40794  setFlag(GlobalSegment);
40795  } // Inst_MUBUF__BUFFER_ATOMIC_OR
40796 
40798  {
40799  } // ~Inst_MUBUF__BUFFER_ATOMIC_OR
40800 
40801  // --- description from .arch file ---
40802  // 32b:
40803  // tmp = MEM[ADDR];
40804  // MEM[ADDR] |= DATA;
40805  // RETURN_DATA = tmp.
40806  void
40808  {
40810  } // execute
40811  // --- Inst_MUBUF__BUFFER_ATOMIC_XOR class methods ---
40812 
40815  : Inst_MUBUF(iFmt, "buffer_atomic_xor")
40816  {
40817  setFlag(AtomicXor);
40818  if (instData.GLC) {
40819  setFlag(AtomicReturn);
40820  } else {
40821  setFlag(AtomicNoReturn);
40822  }
40823  setFlag(MemoryRef);
40824  setFlag(GlobalSegment);
40825  } // Inst_MUBUF__BUFFER_ATOMIC_XOR
40826 
40828  {
40829  } // ~Inst_MUBUF__BUFFER_ATOMIC_XOR
40830 
40831  // --- description from .arch file ---
40832  // 32b:
40833  // tmp = MEM[ADDR];
40834  // MEM[ADDR] ^= DATA;
40835  // RETURN_DATA = tmp.
40836  void
40838  {
40840  } // execute
40841  // --- Inst_MUBUF__BUFFER_ATOMIC_INC class methods ---
40842 
40845  : Inst_MUBUF(iFmt, "buffer_atomic_inc")
40846  {
40847  setFlag(AtomicInc);
40848  if (instData.GLC) {
40849  setFlag(AtomicReturn);
40850  } else {
40851  setFlag(AtomicNoReturn);
40852  }
40853  setFlag(MemoryRef);
40854  setFlag(GlobalSegment);
40855  } // Inst_MUBUF__BUFFER_ATOMIC_INC
40856 
40858  {
40859  } // ~Inst_MUBUF__BUFFER_ATOMIC_INC
40860 
40861  // --- description from .arch file ---
40862  // 32b:
40863  // tmp = MEM[ADDR];
40864  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
40865  // RETURN_DATA = tmp.
40866  void
40868  {
40870  } // execute
40871  // --- Inst_MUBUF__BUFFER_ATOMIC_DEC class methods ---
40872 
40875  : Inst_MUBUF(iFmt, "buffer_atomic_dec")
40876  {
40877  setFlag(AtomicDec);
40878  if (instData.GLC) {
40879  setFlag(AtomicReturn);
40880  } else {
40881  setFlag(AtomicNoReturn);
40882  }
40883  setFlag(MemoryRef);
40884  setFlag(GlobalSegment);
40885  } // Inst_MUBUF__BUFFER_ATOMIC_DEC
40886 
40888  {
40889  } // ~Inst_MUBUF__BUFFER_ATOMIC_DEC
40890 
40891  // --- description from .arch file ---
40892  // 32b:
40893  // tmp = MEM[ADDR];
40894  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
40895  // (unsigned compare); RETURN_DATA = tmp.
40896  void
40898  {
40900  } // execute
40901  // --- Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2 class methods ---
40902 
40905  : Inst_MUBUF(iFmt, "buffer_atomic_swap_x2")
40906  {
40907  setFlag(AtomicExch);
40908  if (instData.GLC) {
40909  setFlag(AtomicReturn);
40910  } else {
40911  setFlag(AtomicNoReturn);
40912  }
40913  setFlag(MemoryRef);
40914  setFlag(GlobalSegment);
40915  } // Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
40916 
40918  {
40919  } // ~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
40920 
40921  // --- description from .arch file ---
40922  // 64b:
40923  // tmp = MEM[ADDR];
40924  // MEM[ADDR] = DATA[0:1];
40925  // RETURN_DATA[0:1] = tmp.
40926  void
40928  {
40930  } // execute
40931  // --- Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2 class methods ---
40932 
40935  : Inst_MUBUF(iFmt, "buffer_atomic_cmpswap_x2")
40936  {
40937  setFlag(AtomicCAS);
40938  if (instData.GLC) {
40939  setFlag(AtomicReturn);
40940  } else {
40941  setFlag(AtomicNoReturn);
40942  }
40943  setFlag(MemoryRef);
40944  setFlag(GlobalSegment);
40945  } // Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
40946 
40949  {
40950  } // ~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
40951 
40952  // --- description from .arch file ---
40953  // 64b:
40954  // tmp = MEM[ADDR];
40955  // src = DATA[0:1];
40956  // cmp = DATA[2:3];
40957  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
40958  // RETURN_DATA[0:1] = tmp.
40959  void
40961  {
40963  } // execute
40964  // --- Inst_MUBUF__BUFFER_ATOMIC_ADD_X2 class methods ---
40965 
40968  : Inst_MUBUF(iFmt, "buffer_atomic_add_x2")
40969  {
40970  setFlag(AtomicAdd);
40971  if (instData.GLC) {
40972  setFlag(AtomicReturn);
40973  } else {
40974  setFlag(AtomicNoReturn);
40975  }
40976  setFlag(MemoryRef);
40977  setFlag(GlobalSegment);
40978  } // Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
40979 
40981  {
40982  } // ~Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
40983 
40984  // --- description from .arch file ---
40985  // 64b:
40986  // tmp = MEM[ADDR];
40987  // MEM[ADDR] += DATA[0:1];
40988  // RETURN_DATA[0:1] = tmp.
40989  void
40991  {
40993  } // execute
40994  // --- Inst_MUBUF__BUFFER_ATOMIC_SUB_X2 class methods ---
40995 
40998  : Inst_MUBUF(iFmt, "buffer_atomic_sub_x2")
40999  {
41000  setFlag(AtomicSub);
41001  if (instData.GLC) {
41002  setFlag(AtomicReturn);
41003  } else {
41004  setFlag(AtomicNoReturn);
41005  }
41006  setFlag(MemoryRef);
41007  setFlag(GlobalSegment);
41008  } // Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
41009 
41011  {
41012  } // ~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
41013 
41014  // --- description from .arch file ---
41015  // 64b:
41016  // tmp = MEM[ADDR];
41017  // MEM[ADDR] -= DATA[0:1];
41018  // RETURN_DATA[0:1] = tmp.
41019  void
41021  {
41023  } // execute
41024  // --- Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2 class methods ---
41025 
41028  : Inst_MUBUF(iFmt, "buffer_atomic_smin_x2")
41029  {
41030  setFlag(AtomicMin);
41031  if (instData.GLC) {
41032  setFlag(AtomicReturn);
41033  } else {
41034  setFlag(AtomicNoReturn);
41035  }
41036  setFlag(MemoryRef);
41037  setFlag(GlobalSegment);
41038  } // Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
41039 
41041  {
41042  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
41043 
41044  // --- description from .arch file ---
41045  // 64b:
41046  // tmp = MEM[ADDR];
41047  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
41048  // RETURN_DATA[0:1] = tmp.
41049  void
41051  {
41053  } // execute
41054  // --- Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2 class methods ---
41055 
41058  : Inst_MUBUF(iFmt, "buffer_atomic_umin_x2")
41059  {
41060  setFlag(AtomicMin);
41061  if (instData.GLC) {
41062  setFlag(AtomicReturn);
41063  } else {
41064  setFlag(AtomicNoReturn);
41065  }
41066  setFlag(MemoryRef);
41067  setFlag(GlobalSegment);
41068  } // Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
41069 
41071  {
41072  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
41073 
41074  // --- description from .arch file ---
41075  // 64b:
41076  // tmp = MEM[ADDR];
41077  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
41078  // RETURN_DATA[0:1] = tmp.
41079  void
41081  {
41083  } // execute
41084  // --- Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2 class methods ---
41085 
41088  : Inst_MUBUF(iFmt, "buffer_atomic_smax_x2")
41089  {
41090  setFlag(AtomicMax);
41091  if (instData.GLC) {
41092  setFlag(AtomicReturn);
41093  } else {
41094  setFlag(AtomicNoReturn);
41095  }
41096  setFlag(MemoryRef);
41097  setFlag(GlobalSegment);
41098  } // Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
41099 
41101  {
41102  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
41103 
41104  // --- description from .arch file ---
41105  // 64b:
41106  // tmp = MEM[ADDR];
41107  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
41108  // RETURN_DATA[0:1] = tmp.
41109  void
41111  {
41113  } // execute
41114  // --- Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2 class methods ---
41115 
41118  : Inst_MUBUF(iFmt, "buffer_atomic_umax_x2")
41119  {
41120  setFlag(AtomicMax);
41121  if (instData.GLC) {
41122  setFlag(AtomicReturn);
41123  } else {
41124  setFlag(AtomicNoReturn);
41125  }
41126  setFlag(MemoryRef);
41127  setFlag(GlobalSegment);
41128  } // Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
41129 
41131  {
41132  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
41133 
41134  // --- description from .arch file ---
41135  // 64b:
41136  // tmp = MEM[ADDR];
41137  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
41138  // RETURN_DATA[0:1] = tmp.
41139  void
41141  {
41143  } // execute
41144  // --- Inst_MUBUF__BUFFER_ATOMIC_AND_X2 class methods ---
41145 
41148  : Inst_MUBUF(iFmt, "buffer_atomic_and_x2")
41149  {
41150  setFlag(AtomicAnd);
41151  if (instData.GLC) {
41152  setFlag(AtomicReturn);
41153  } else {
41154  setFlag(AtomicNoReturn);
41155  }
41156  setFlag(MemoryRef);
41157  setFlag(GlobalSegment);
41158  } // Inst_MUBUF__BUFFER_ATOMIC_AND_X2
41159 
41161  {
41162  } // ~Inst_MUBUF__BUFFER_ATOMIC_AND_X2
41163 
41164  // --- description from .arch file ---
41165  // 64b:
41166  // tmp = MEM[ADDR];
41167  // MEM[ADDR] &= DATA[0:1];
41168  // RETURN_DATA[0:1] = tmp.
41169  void
41171  {
41173  } // execute
41174  // --- Inst_MUBUF__BUFFER_ATOMIC_OR_X2 class methods ---
41175 
41178  : Inst_MUBUF(iFmt, "buffer_atomic_or_x2")
41179  {
41180  setFlag(AtomicOr);
41181  if (instData.GLC) {
41182  setFlag(AtomicReturn);
41183  } else {
41184  setFlag(AtomicNoReturn);
41185  }
41186  } // Inst_MUBUF__BUFFER_ATOMIC_OR_X2
41187 
41189  {
41190  } // ~Inst_MUBUF__BUFFER_ATOMIC_OR_X2
41191 
41192  // --- description from .arch file ---
41193  // 64b:
41194  // tmp = MEM[ADDR];
41195  // MEM[ADDR] |= DATA[0:1];
41196  // RETURN_DATA[0:1] = tmp.
41197  void
41199  {
41201  } // execute
41202  // --- Inst_MUBUF__BUFFER_ATOMIC_XOR_X2 class methods ---
41203 
41206  : Inst_MUBUF(iFmt, "buffer_atomic_xor_x2")
41207  {
41208  setFlag(AtomicXor);
41209  if (instData.GLC) {
41210  setFlag(AtomicReturn);
41211  } else {
41212  setFlag(AtomicNoReturn);
41213  }
41214  setFlag(MemoryRef);
41215  setFlag(GlobalSegment);
41216  } // Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
41217 
41219  {
41220  } // ~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
41221 
41222  // --- description from .arch file ---
41223  // 64b:
41224  // tmp = MEM[ADDR];
41225  // MEM[ADDR] ^= DATA[0:1];
41226  // RETURN_DATA[0:1] = tmp.
41227  void
41229  {
41231  } // execute
41232  // --- Inst_MUBUF__BUFFER_ATOMIC_INC_X2 class methods ---
41233 
41236  : Inst_MUBUF(iFmt, "buffer_atomic_inc_x2")
41237  {
41238  setFlag(AtomicInc);
41239  if (instData.GLC) {
41240  setFlag(AtomicReturn);
41241  } else {
41242  setFlag(AtomicNoReturn);
41243  }
41244  setFlag(MemoryRef);
41245  setFlag(GlobalSegment);
41246  } // Inst_MUBUF__BUFFER_ATOMIC_INC_X2
41247 
41249  {
41250  } // ~Inst_MUBUF__BUFFER_ATOMIC_INC_X2
41251 
41252  // --- description from .arch file ---
41253  // 64b:
41254  // tmp = MEM[ADDR];
41255  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
41256  // RETURN_DATA[0:1] = tmp.
41257  void
41259  {
41261  } // execute
41262  // --- Inst_MUBUF__BUFFER_ATOMIC_DEC_X2 class methods ---
41263 
41266  : Inst_MUBUF(iFmt, "buffer_atomic_dec_x2")
41267  {
41268  setFlag(AtomicDec);
41269  if (instData.GLC) {
41270  setFlag(AtomicReturn);
41271  } else {
41272  setFlag(AtomicNoReturn);
41273  }
41274  setFlag(MemoryRef);
41275  setFlag(GlobalSegment);
41276  } // Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
41277 
41279  {
41280  } // ~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
41281 
41282  // --- description from .arch file ---
41283  // 64b:
41284  // tmp = MEM[ADDR];
41285  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
41286  // (unsigned compare);
41287  // RETURN_DATA[0:1] = tmp.
41288  void
41290  {
41292  } // execute
41293  // --- Inst_MTBUF__TBUFFER_LOAD_FORMAT_X class methods ---
41294 
41297  : Inst_MTBUF(iFmt, "tbuffer_load_format_x")
41298  {
41299  setFlag(MemoryRef);
41300  setFlag(Load);
41301  setFlag(GlobalSegment);
41302  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
41303 
41305  {
41306  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
41307 
41308  // --- description from .arch file ---
41309  // Typed buffer load 1 dword with format conversion.
41310  void
41312  {
41314  } // execute
41315 
41316  void
41318  {
41319  } // initiateAcc
41320 
41321  void
41323  {
41324  } // execute
41325  // --- Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY class methods ---
41326 
41329  : Inst_MTBUF(iFmt, "tbuffer_load_format_xy")
41330  {
41331  setFlag(MemoryRef);
41332  setFlag(Load);
41333  setFlag(GlobalSegment);
41334  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
41335 
41337  {
41338  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
41339 
41340  // --- description from .arch file ---
41341  // Typed buffer load 2 dwords with format conversion.
41342  void
41344  {
41346  } // execute
41347 
41348  void
41350  {
41351  } // initiateAcc
41352 
41353  void
41355  {
41356  } // execute
41357  // --- Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ class methods ---
41358 
41361  : Inst_MTBUF(iFmt, "tbuffer_load_format_xyz")
41362  {
41363  setFlag(MemoryRef);
41364  setFlag(Load);
41365  setFlag(GlobalSegment);
41366  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
41367 
41369  {
41370  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
41371 
41372  // --- description from .arch file ---
41373  // Typed buffer load 3 dwords with format conversion.
41374  void
41376  {
41378  } // execute
41379 
41380  void
41382  {
41383  } // initiateAcc
41384 
41385  void
41387  {
41388  } // execute
41389  // --- Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW class methods ---
41390 
41393  : Inst_MTBUF(iFmt, "tbuffer_load_format_xyzw")
41394  {
41395  setFlag(MemoryRef);
41396  setFlag(Load);
41397  setFlag(GlobalSegment);
41398  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
41399 
41402  {
41403  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
41404 
41405  // --- description from .arch file ---
41406  // Typed buffer load 4 dwords with format conversion.
41407  void
41409  {
41411  } // execute
41412 
41413  void
41415  {
41416  } // initiateAcc
41417 
41418  void
41420  {
41421  } // execute
41422  // --- Inst_MTBUF__TBUFFER_STORE_FORMAT_X class methods ---
41423 
41426  : Inst_MTBUF(iFmt, "tbuffer_store_format_x")
41427  {
41428  setFlag(MemoryRef);
41429  setFlag(Store);
41430  setFlag(GlobalSegment);
41431  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_X
41432 
41434  {
41435  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_X
41436 
41437  // --- description from .arch file ---
41438  // Typed buffer store 1 dword with format conversion.
41439  void
41441  {
41443  } // execute
41444 
41445  void
41447  {
41448  } // initiateAcc
41449 
41450  void
41452  {
41453  } // execute
41454  // --- Inst_MTBUF__TBUFFER_STORE_FORMAT_XY class methods ---
41455 
41458  : Inst_MTBUF(iFmt, "tbuffer_store_format_xy")
41459  {
41460  setFlag(MemoryRef);
41461  setFlag(Store);
41462  setFlag(GlobalSegment);
41463  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
41464 
41466  {
41467  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
41468 
41469  // --- description from .arch file ---
41470  // Typed buffer store 2 dwords with format conversion.
41471  void
41473  {
41475  } // execute
41476 
41477  void
41479  {
41480  } // initiateAcc
41481 
41482  void
41484  {
41485  } // execute
41486  // --- Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ class methods ---
41487 
41490  : Inst_MTBUF(iFmt, "tbuffer_store_format_xyz")
41491  {
41492  setFlag(MemoryRef);
41493  setFlag(Store);
41494  setFlag(GlobalSegment);
41495  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
41496 
41499  {
41500  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
41501 
41502  // --- description from .arch file ---
41503  // Typed buffer store 3 dwords with format conversion.
41504  void
41506  {
41508  } // execute
41509 
41510  void
41512  {
41513  } // initiateAcc
41514 
41515  void
41517  {
41518  } // execute
41519  // --- Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW class methods ---
41520 
41523  : Inst_MTBUF(iFmt, "tbuffer_store_format_xyzw")
41524  {
41525  setFlag(MemoryRef);
41526  setFlag(Store);
41527  setFlag(GlobalSegment);
41528  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
41529 
41532  {
41533  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
41534 
41535  // --- description from .arch file ---
41536  // Typed buffer store 4 dwords with format conversion.
41537  void
41539  {
41541  } // execute
41542 
41543  void
41545  GPUDynInstPtr gpuDynInst)
41546  {
41547  } // initiateAcc
41548 
41549  void
41551  GPUDynInstPtr gpuDynInst)
41552  {
41553  } // execute
41554  // --- Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X class methods ---
41555 
41558  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_x")
41559  {
41560  setFlag(MemoryRef);
41561  setFlag(Load);
41562  setFlag(GlobalSegment);
41563  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
41564 
41567  {
41568  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
41569 
41570  // --- description from .arch file ---
41571  // Typed buffer load 1 dword with format conversion.
41572  void
41574  {
41576  } // execute
41577 
41578  void
41580  GPUDynInstPtr gpuDynInst)
41581  {
41582  } // initiateAcc
41583 
41584  void
41586  GPUDynInstPtr gpuDynInst)
41587  {
41588  } // execute
41589  // --- Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY class methods ---
41590 
41593  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xy")
41594  {
41595  setFlag(MemoryRef);
41596  setFlag(Load);
41597  setFlag(GlobalSegment);
41598  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
41599 
41602  {
41603  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
41604 
41605  // --- description from .arch file ---
41606  // Typed buffer load 2 dwords with format conversion.
41607  void
41609  {
41611  } // execute
41612 
41613  void
41615  GPUDynInstPtr gpuDynInst)
41616  {
41617  } // initiateAcc
41618 
41619  void
41621  GPUDynInstPtr gpuDynInst)
41622  {
41623  } // execute
41624  // --- Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ class methods ---
41625 
41628  InFmt_MTBUF *iFmt)
41629  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xyz")
41630  {
41631  setFlag(MemoryRef);
41632  setFlag(Load);
41633  setFlag(GlobalSegment);
41634  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
41635 
41638  {
41639  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
41640 
41641  // --- description from .arch file ---
41642  // Typed buffer load 3 dwords with format conversion.
41643  void
41645  {
41647  } // execute
41648 
41649  void
41651  GPUDynInstPtr gpuDynInst)
41652  {
41653  } // initiateAcc
41654 
41655  void
41657  GPUDynInstPtr gpuDynInst)
41658  {
41659  } // execute
41660  // --- Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW class methods ---
41661 
41664  InFmt_MTBUF *iFmt)
41665  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xyzw")
41666  {
41667  setFlag(MemoryRef);
41668  setFlag(Load);
41669  setFlag(GlobalSegment);
41670  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
41671 
41674  {
41675  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
41676 
41677  // --- description from .arch file ---
41678  // Typed buffer load 4 dwords with format conversion.
41679  void
41681  {
41683  } // execute
41684 
41685  void
41687  GPUDynInstPtr gpuDynInst)
41688  {
41689  } // initiateAcc
41690 
41691  void
41693  GPUDynInstPtr gpuDynInst)
41694  {
41695  } // execute
41696  // --- Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X class methods ---
41697 
41700  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_x")
41701  {
41702  setFlag(MemoryRef);
41703  setFlag(Store);
41704  setFlag(GlobalSegment);
41705  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
41706 
41709  {
41710  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
41711 
41712  // --- description from .arch file ---
41713  // Typed buffer store 1 dword with format conversion.
41714  void
41716  {
41718  } // execute
41719 
41720  void
41722  GPUDynInstPtr gpuDynInst)
41723  {
41724  } // initiateAcc
41725 
41726  void
41728  GPUDynInstPtr gpuDynInst)
41729  {
41730  } // execute
41731  // --- Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY class methods ---
41732 
41735  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xy")
41736  {
41737  setFlag(MemoryRef);
41738  setFlag(Store);
41739  setFlag(GlobalSegment);
41740  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
41741 
41744  {
41745  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
41746 
41747  // --- description from .arch file ---
41748  // Typed buffer store 2 dwords with format conversion.
41749  void
41751  {
41753  } // execute
41754 
41755  void
41757  GPUDynInstPtr gpuDynInst)
41758  {
41759  } // initiateAcc
41760 
41761  void
41763  GPUDynInstPtr gpuDynInst)
41764  {
41765  } // execute
41766  // --- Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ class methods ---
41767 
41770  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xyz")
41771  {
41772  setFlag(MemoryRef);
41773  setFlag(Store);
41774  setFlag(GlobalSegment);
41775  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
41776 
41779  {
41780  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
41781 
41782  // --- description from .arch file ---
41783  // Typed buffer store 3 dwords with format conversion.
41784  void
41786  {
41788  } // execute
41789 
41790  void
41792  GPUDynInstPtr gpuDynInst)
41793  {
41794  } // initiateAcc
41795 
41796  void
41798  GPUDynInstPtr gpuDynInst)
41799  {
41800  } // execute
41801  // --- Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW class methods ---
41802 
41805  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xyzw")
41806  {
41807  setFlag(MemoryRef);
41808  setFlag(Store);
41809  setFlag(GlobalSegment);
41810  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
41811 
41814  {
41815  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
41816 
41817  // --- description from .arch file ---
41818  // Typed buffer store 4 dwords with format conversion.
41819  void
41821  GPUDynInstPtr gpuDynInst)
41822  {
41824  } // execute
41825 
41826  void
41828  GPUDynInstPtr gpuDynInst)
41829  {
41830  } // initiateAcc
41831 
41832  void
41834  GPUDynInstPtr gpuDynInst)
41835  {
41836  } // execute
41837  // --- Inst_MIMG__IMAGE_LOAD class methods ---
41838 
41840  : Inst_MIMG(iFmt, "image_load")
41841  {
41842  setFlag(MemoryRef);
41843  setFlag(Load);
41844  setFlag(GlobalSegment);
41845  } // Inst_MIMG__IMAGE_LOAD
41846 
41848  {
41849  } // ~Inst_MIMG__IMAGE_LOAD
41850 
41851  // --- description from .arch file ---
41852  // Image memory load with format conversion specified in T#. No sampler.
41853  void
41855  {
41857  } // execute
41858 
41859  void
41861  {
41862  } // initiateAcc
41863 
41864  void
41866  {
41867  } // execute
41868  // --- Inst_MIMG__IMAGE_LOAD_MIP class methods ---
41869 
41871  : Inst_MIMG(iFmt, "image_load_mip")
41872  {
41873  setFlag(MemoryRef);
41874  setFlag(Load);
41875  setFlag(GlobalSegment);
41876  } // Inst_MIMG__IMAGE_LOAD_MIP
41877 
41879  {
41880  } // ~Inst_MIMG__IMAGE_LOAD_MIP
41881 
41882  // --- description from .arch file ---
41883  // Image memory load with user-supplied mip level. No sampler.
41884  void
41886  {
41888  } // execute
41889 
41890  void
41892  {
41893  } // initiateAcc
41894 
41895  void
41897  {
41898  } // execute
41899  // --- Inst_MIMG__IMAGE_LOAD_PCK class methods ---
41900 
41902  : Inst_MIMG(iFmt, "image_load_pck")
41903  {
41904  setFlag(MemoryRef);
41905  setFlag(Load);
41906  setFlag(GlobalSegment);
41907  } // Inst_MIMG__IMAGE_LOAD_PCK
41908 
41910  {
41911  } // ~Inst_MIMG__IMAGE_LOAD_PCK
41912 
41913  // --- description from .arch file ---
41914  // Image memory load with no format conversion. No sampler.
41915  void
41917  {
41919  } // execute
41920 
41921  void
41923  {
41924  } // initiateAcc
41925 
41926  void
41928  {
41929  } // execute
41930  // --- Inst_MIMG__IMAGE_LOAD_PCK_SGN class methods ---
41931 
41933  InFmt_MIMG *iFmt)
41934  : Inst_MIMG(iFmt, "image_load_pck_sgn")
41935  {
41936  setFlag(MemoryRef);
41937  setFlag(Load);
41938  setFlag(GlobalSegment);
41939  } // Inst_MIMG__IMAGE_LOAD_PCK_SGN
41940 
41942  {
41943  } // ~Inst_MIMG__IMAGE_LOAD_PCK_SGN
41944 
41945  // --- description from .arch file ---
41946  // Image memory load with with no format conversion and sign extension. No
41947  // --- sampler.
41948  void
41950  {
41952  } // execute
41953 
41954  void
41956  {
41957  } // initiateAcc
41958 
41959  void
41961  {
41962  } // execute
41963  // --- Inst_MIMG__IMAGE_LOAD_MIP_PCK class methods ---
41964 
41966  InFmt_MIMG *iFmt)
41967  : Inst_MIMG(iFmt, "image_load_mip_pck")
41968  {
41969  setFlag(MemoryRef);
41970  setFlag(Load);
41971  setFlag(GlobalSegment);
41972  } // Inst_MIMG__IMAGE_LOAD_MIP_PCK
41973 
41975  {
41976  } // ~Inst_MIMG__IMAGE_LOAD_MIP_PCK
41977 
41978  // --- description from .arch file ---
41979  // Image memory load with user-supplied mip level, no format conversion. No
41980  // --- sampler.
41981  void
41983  {
41985  } // execute
41986 
41987  void
41989  {
41990  } // initiateAcc
41991 
41992  void
41994  {
41995  } // execute
41996  // --- Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN class methods ---
41997 
41999  InFmt_MIMG *iFmt)
42000  : Inst_MIMG(iFmt, "image_load_mip_pck_sgn")
42001  {
42002  setFlag(MemoryRef);
42003  setFlag(Load);
42004  setFlag(GlobalSegment);
42005  } // Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
42006 
42008  {
42009  } // ~Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
42010 
42011  // --- description from .arch file ---
42012  // Image memory load with user-supplied mip level, no format conversion and
42013  // --- with sign extension. No sampler.
42014  void
42016  {
42018  } // execute
42019 
42020  void
42022  {
42023  } // initiateAcc
42024 
42025  void
42027  {
42028  } // execute
42029  // --- Inst_MIMG__IMAGE_STORE class methods ---
42030 
42032  : Inst_MIMG(iFmt, "image_store")
42033  {
42034  setFlag(MemoryRef);
42035  setFlag(Store);
42036  setFlag(GlobalSegment);
42037  } // Inst_MIMG__IMAGE_STORE
42038 
42040  {
42041  } // ~Inst_MIMG__IMAGE_STORE
42042 
42043  // --- description from .arch file ---
42044  // Image memory store with format conversion specified in T#. No sampler.
42045  void
42047  {
42049  } // execute
42050 
42051  void
42053  {
42054  } // initiateAcc
42055 
42056  void
42058  {
42059  } // execute
42060  // --- Inst_MIMG__IMAGE_STORE_MIP class methods ---
42061 
42063  : Inst_MIMG(iFmt, "image_store_mip")
42064  {
42065  setFlag(MemoryRef);
42066  setFlag(Store);
42067  setFlag(GlobalSegment);
42068  } // Inst_MIMG__IMAGE_STORE_MIP
42069 
42071  {
42072  } // ~Inst_MIMG__IMAGE_STORE_MIP
42073 
42074  // --- description from .arch file ---
42075  // Image memory store with format conversion specified in T# to user
42076  // specified mip level. No sampler.
42077  void
42079  {
42081  } // execute
42082 
42083  void
42085  {
42086  } // initiateAcc
42087 
42088  void
42090  {
42091  } // execute
42092  // --- Inst_MIMG__IMAGE_STORE_PCK class methods ---
42093 
42095  : Inst_MIMG(iFmt, "image_store_pck")
42096  {
42097  setFlag(MemoryRef);
42098  setFlag(Store);
42099  setFlag(GlobalSegment);
42100  } // Inst_MIMG__IMAGE_STORE_PCK
42101 
42103  {
42104  } // ~Inst_MIMG__IMAGE_STORE_PCK
42105 
42106  // --- description from .arch file ---
42107  // Image memory store of packed data without format conversion. No sampler.
42108  void
42110  {
42112  } // execute
42113 
42114  void
42116  {
42117  } // initiateAcc
42118 
42119  void
42121  {
42122  } // execute
42123  // --- Inst_MIMG__IMAGE_STORE_MIP_PCK class methods ---
42124 
42126  InFmt_MIMG *iFmt)
42127  : Inst_MIMG(iFmt, "image_store_mip_pck")
42128  {
42129  setFlag(MemoryRef);
42130  setFlag(Store);
42131  setFlag(GlobalSegment);
42132  } // Inst_MIMG__IMAGE_STORE_MIP_PCK
42133 
42135  {
42136  } // ~Inst_MIMG__IMAGE_STORE_MIP_PCK
42137 
42138  // --- description from .arch file ---
42139  // Image memory store of packed data without format conversion to
42140  // user-supplied mip level. No sampler.
42141  void
42143  {
42145  } // execute
42146 
42147  void
42149  {
42150  } // initiateAcc
42151 
42152  void
42154  {
42155  } // execute
42156  // --- Inst_MIMG__IMAGE_GET_RESINFO class methods ---
42157 
42159  InFmt_MIMG *iFmt)
42160  : Inst_MIMG(iFmt, "image_get_resinfo")
42161  {
42162  setFlag(GlobalSegment);
42163  } // Inst_MIMG__IMAGE_GET_RESINFO
42164 
42166  {
42167  } // ~Inst_MIMG__IMAGE_GET_RESINFO
42168 
42169  // --- description from .arch file ---
42170  // return resource info for a given mip level specified in the address
42171  // vgpr. No sampler. Returns 4 integer values into VGPRs 3-0:
42172  // {num_mip_levels, depth, height, width}.
42173  void
42175  {
42177  } // execute
42178  // --- Inst_MIMG__IMAGE_ATOMIC_SWAP class methods ---
42179 
42181  InFmt_MIMG *iFmt)
42182  : Inst_MIMG(iFmt, "image_atomic_swap")
42183  {
42184  setFlag(AtomicExch);
42185  if (instData.GLC) {
42186  setFlag(AtomicReturn);
42187  } else {
42188  setFlag(AtomicNoReturn);
42189  }
42190  setFlag(MemoryRef);
42191  setFlag(GlobalSegment);
42192  } // Inst_MIMG__IMAGE_ATOMIC_SWAP
42193 
42195  {
42196  } // ~Inst_MIMG__IMAGE_ATOMIC_SWAP
42197 
42198  // --- description from .arch file ---
42199  // 32b:
42200  // tmp = MEM[ADDR];
42201  // MEM[ADDR] = DATA;
42202  // RETURN_DATA = tmp.
42203  void
42205  {
42207  } // execute
42208  // --- Inst_MIMG__IMAGE_ATOMIC_CMPSWAP class methods ---
42209 
42211  InFmt_MIMG *iFmt)
42212  : Inst_MIMG(iFmt, "image_atomic_cmpswap")
42213  {
42214  setFlag(AtomicCAS);
42215  if (instData.GLC) {
42216  setFlag(AtomicReturn);
42217  } else {
42218  setFlag(AtomicNoReturn);
42219  }
42220  setFlag(MemoryRef);
42221  setFlag(GlobalSegment);
42222  } // Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
42223 
42225  {
42226  } // ~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
42227 
42228  // --- description from .arch file ---
42229  // 32b:
42230  // tmp = MEM[ADDR];
42231  // src = DATA[0];
42232  // cmp = DATA[1];
42233  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
42234  // RETURN_DATA[0] = tmp.
42235  void
42237  {
42239  } // execute
42240  // --- Inst_MIMG__IMAGE_ATOMIC_ADD class methods ---
42241 
42243  : Inst_MIMG(iFmt, "image_atomic_add")
42244  {
42245  setFlag(AtomicAdd);
42246  if (instData.GLC) {
42247  setFlag(AtomicReturn);
42248  } else {
42249  setFlag(AtomicNoReturn);
42250  }
42251  setFlag(MemoryRef);
42252  setFlag(GlobalSegment);
42253  } // Inst_MIMG__IMAGE_ATOMIC_ADD
42254 
42256  {
42257  } // ~Inst_MIMG__IMAGE_ATOMIC_ADD
42258 
42259  // --- description from .arch file ---
42260  // 32b:
42261  // tmp = MEM[ADDR];
42262  // MEM[ADDR] += DATA;
42263  // RETURN_DATA = tmp.
42264  void
42266  {
42268  } // execute
42269  // --- Inst_MIMG__IMAGE_ATOMIC_SUB class methods ---
42270 
42272  : Inst_MIMG(iFmt, "image_atomic_sub")
42273  {
42274  setFlag(AtomicSub);
42275  if (instData.GLC) {
42276  setFlag(AtomicReturn);
42277  } else {
42278  setFlag(AtomicNoReturn);
42279  }
42280  setFlag(MemoryRef);
42281  setFlag(GlobalSegment);
42282  } // Inst_MIMG__IMAGE_ATOMIC_SUB
42283 
42285  {
42286  } // ~Inst_MIMG__IMAGE_ATOMIC_SUB
42287 
42288  // --- description from .arch file ---
42289  // 32b:
42290  // tmp = MEM[ADDR];
42291  // MEM[ADDR] -= DATA;
42292  // RETURN_DATA = tmp.
42293  void
42295  {
42297  } // execute
42298  // --- Inst_MIMG__IMAGE_ATOMIC_SMIN class methods ---
42299 
42301  InFmt_MIMG *iFmt)
42302  : Inst_MIMG(iFmt, "image_atomic_smin")
42303  {
42304  setFlag(AtomicMin);
42305  if (instData.GLC) {
42306  setFlag(AtomicReturn);
42307  } else {
42308  setFlag(AtomicNoReturn);
42309  }
42310  setFlag(MemoryRef);
42311  setFlag(GlobalSegment);
42312  } // Inst_MIMG__IMAGE_ATOMIC_SMIN
42313 
42315  {
42316  } // ~Inst_MIMG__IMAGE_ATOMIC_SMIN
42317 
42318  // --- description from .arch file ---
42319  // 32b:
42320  // tmp = MEM[ADDR];
42321  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
42322  // RETURN_DATA = tmp.
42323  void
42325  {
42327  } // execute
42328  // --- Inst_MIMG__IMAGE_ATOMIC_UMIN class methods ---
42329 
42331  InFmt_MIMG *iFmt)
42332  : Inst_MIMG(iFmt, "image_atomic_umin")
42333  {
42334  setFlag(AtomicMin);
42335  if (instData.GLC) {
42336  setFlag(AtomicReturn);
42337  } else {
42338  setFlag(AtomicNoReturn);
42339  }
42340  setFlag(MemoryRef);
42341  setFlag(GlobalSegment);
42342  } // Inst_MIMG__IMAGE_ATOMIC_UMIN
42343 
42345  {
42346  } // ~Inst_MIMG__IMAGE_ATOMIC_UMIN
42347 
42348  // --- description from .arch file ---
42349  // 32b:
42350  // tmp = MEM[ADDR];
42351  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
42352  // RETURN_DATA = tmp.
42353  void
42355  {
42357  } // execute
42358  // --- Inst_MIMG__IMAGE_ATOMIC_SMAX class methods ---
42359 
42361  InFmt_MIMG *iFmt)
42362  : Inst_MIMG(iFmt, "image_atomic_smax")
42363  {
42364  setFlag(AtomicMax);
42365  if (instData.GLC) {
42366  setFlag(AtomicReturn);
42367  } else {
42368  setFlag(AtomicNoReturn);
42369  }
42370  setFlag(MemoryRef);
42371  setFlag(GlobalSegment);
42372  } // Inst_MIMG__IMAGE_ATOMIC_SMAX
42373 
42375  {
42376  } // ~Inst_MIMG__IMAGE_ATOMIC_SMAX
42377 
42378  // --- description from .arch file ---
42379  // 32b:
42380  // tmp = MEM[ADDR];
42381  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
42382  // RETURN_DATA = tmp.
42383  void
42385  {
42387  } // execute
42388  // --- Inst_MIMG__IMAGE_ATOMIC_UMAX class methods ---
42389 
42391  InFmt_MIMG *iFmt)
42392  : Inst_MIMG(iFmt, "image_atomic_umax")
42393  {
42394  setFlag(AtomicMax);
42395  if (instData.GLC) {
42396  setFlag(AtomicReturn);
42397  } else {
42398  setFlag(AtomicNoReturn);
42399  }
42400  setFlag(MemoryRef);
42401  setFlag(GlobalSegment);
42402  } // Inst_MIMG__IMAGE_ATOMIC_UMAX
42403 
42405  {
42406  } // ~Inst_MIMG__IMAGE_ATOMIC_UMAX
42407 
42408  // --- description from .arch file ---
42409  // 32b:
42410  // tmp = MEM[ADDR];
42411  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
42412  // RETURN_DATA = tmp.
42413  void
42415  {
42417  } // execute
42418  // --- Inst_MIMG__IMAGE_ATOMIC_AND class methods ---
42419 
42421  : Inst_MIMG(iFmt, "image_atomic_and")
42422  {
42423  setFlag(AtomicAnd);
42424  if (instData.GLC) {
42425  setFlag(AtomicReturn);
42426  } else {
42427  setFlag(AtomicNoReturn);
42428  }
42429  setFlag(MemoryRef);
42430  setFlag(GlobalSegment);
42431  } // Inst_MIMG__IMAGE_ATOMIC_AND
42432 
42434  {
42435  } // ~Inst_MIMG__IMAGE_ATOMIC_AND
42436 
42437  // --- description from .arch file ---
42438  // 32b:
42439  // tmp = MEM[ADDR];
42440  // MEM[ADDR] &= DATA;
42441  // RETURN_DATA = tmp.
42442  void
42444  {
42446  } // execute
42447  // --- Inst_MIMG__IMAGE_ATOMIC_OR class methods ---
42448 
42450  : Inst_MIMG(iFmt, "image_atomic_or")
42451  {
42452  setFlag(AtomicOr);
42453  if (instData.GLC) {
42454  setFlag(AtomicReturn);
42455  } else {
42456  setFlag(AtomicNoReturn);
42457  }
42458  setFlag(MemoryRef);
42459  setFlag(GlobalSegment);
42460  } // Inst_MIMG__IMAGE_ATOMIC_OR
42461 
42463  {
42464  } // ~Inst_MIMG__IMAGE_ATOMIC_OR
42465 
42466  // --- description from .arch file ---
42467  // 32b:
42468  // tmp = MEM[ADDR];
42469  // MEM[ADDR] |= DATA;
42470  // RETURN_DATA = tmp.
42471  void
42473  {
42475  } // execute
42476  // --- Inst_MIMG__IMAGE_ATOMIC_XOR class methods ---
42477 
42479  : Inst_MIMG(iFmt, "image_atomic_xor")
42480  {
42481  setFlag(AtomicXor);
42482  if (instData.GLC) {
42483  setFlag(AtomicReturn);
42484  } else {
42485  setFlag(AtomicNoReturn);
42486  }
42487  setFlag(MemoryRef);
42488  setFlag(GlobalSegment);
42489  } // Inst_MIMG__IMAGE_ATOMIC_XOR
42490 
42492  {
42493  } // ~Inst_MIMG__IMAGE_ATOMIC_XOR
42494 
42495  // --- description from .arch file ---
42496  // 32b:
42497  // tmp = MEM[ADDR];
42498  // MEM[ADDR] ^= DATA;
42499  // RETURN_DATA = tmp.
42500  void
42502  {
42504  } // execute
42505  // --- Inst_MIMG__IMAGE_ATOMIC_INC class methods ---
42506 
42508  : Inst_MIMG(iFmt, "image_atomic_inc")
42509  {
42510  setFlag(AtomicInc);
42511  if (instData.GLC) {
42512  setFlag(AtomicReturn);
42513  } else {
42514  setFlag(AtomicNoReturn);
42515  }
42516  setFlag(MemoryRef);
42517  setFlag(GlobalSegment);
42518  } // Inst_MIMG__IMAGE_ATOMIC_INC
42519 
42521  {
42522  } // ~Inst_MIMG__IMAGE_ATOMIC_INC
42523 
42524  // --- description from .arch file ---
42525  // 32b:
42526  // tmp = MEM[ADDR];
42527  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
42528  // RETURN_DATA = tmp.
42529  void
42531  {
42533  } // execute
42534  // --- Inst_MIMG__IMAGE_ATOMIC_DEC class methods ---
42535 
42537  : Inst_MIMG(iFmt, "image_atomic_dec")
42538  {
42539  setFlag(AtomicDec);
42540  if (instData.GLC) {
42541  setFlag(AtomicReturn);
42542  } else {
42543  setFlag(AtomicNoReturn);
42544  }
42545  setFlag(MemoryRef);
42546  setFlag(GlobalSegment);
42547  } // Inst_MIMG__IMAGE_ATOMIC_DEC
42548 
42550  {
42551  } // ~Inst_MIMG__IMAGE_ATOMIC_DEC
42552 
42553  // --- description from .arch file ---
42554  // 32b:
42555  // tmp = MEM[ADDR];
42556  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
42557  // (unsigned compare); RETURN_DATA = tmp.
42558  void
42560  {
42562  } // execute
42563  // --- Inst_MIMG__IMAGE_SAMPLE class methods ---
42564 
42566  : Inst_MIMG(iFmt, "image_sample")
42567  {
42568  } // Inst_MIMG__IMAGE_SAMPLE
42569 
42571  {
42572  } // ~Inst_MIMG__IMAGE_SAMPLE
42573 
42574  // --- description from .arch file ---
42575  // sample texture map.
42576  void
42578  {
42580  } // execute
42581  // --- Inst_MIMG__IMAGE_SAMPLE_CL class methods ---
42582 
42584  : Inst_MIMG(iFmt, "image_sample_cl")
42585  {
42586  setFlag(GlobalSegment);
42587  } // Inst_MIMG__IMAGE_SAMPLE_CL
42588 
42590  {
42591  } // ~Inst_MIMG__IMAGE_SAMPLE_CL
42592 
42593  // --- description from .arch file ---
42594  // sample texture map, with LOD clamp specified in shader.
42595  void
42597  {
42599  } // execute
42600  // --- Inst_MIMG__IMAGE_SAMPLE_D class methods ---
42601 
42603  : Inst_MIMG(iFmt, "image_sample_d")
42604  {
42605  setFlag(GlobalSegment);
42606  } // Inst_MIMG__IMAGE_SAMPLE_D
42607 
42609  {
42610  } // ~Inst_MIMG__IMAGE_SAMPLE_D
42611 
42612  // --- description from .arch file ---
42613  // sample texture map, with user derivatives
42614  void
42616  {
42618  } // execute
42619  // --- Inst_MIMG__IMAGE_SAMPLE_D_CL class methods ---
42620 
42622  InFmt_MIMG *iFmt)
42623  : Inst_MIMG(iFmt, "image_sample_d_cl")
42624  {
42625  setFlag(GlobalSegment);
42626  } // Inst_MIMG__IMAGE_SAMPLE_D_CL
42627 
42629  {
42630  } // ~Inst_MIMG__IMAGE_SAMPLE_D_CL
42631 
42632  // --- description from .arch file ---
42633  // sample texture map, with LOD clamp specified in shader, with user
42634  // --- derivatives.
42635  void
42637  {
42639  } // execute
42640  // --- Inst_MIMG__IMAGE_SAMPLE_L class methods ---
42641 
42643  : Inst_MIMG(iFmt, "image_sample_l")
42644  {
42645  setFlag(GlobalSegment);
42646  } // Inst_MIMG__IMAGE_SAMPLE_L
42647 
42649  {
42650  } // ~Inst_MIMG__IMAGE_SAMPLE_L
42651 
42652  // --- description from .arch file ---
42653  // sample texture map, with user LOD.
42654  void
42656  {
42658  } // execute
42659  // --- Inst_MIMG__IMAGE_SAMPLE_B class methods ---
42660 
42662  : Inst_MIMG(iFmt, "image_sample_b")
42663  {
42664  setFlag(GlobalSegment);
42665  } // Inst_MIMG__IMAGE_SAMPLE_B
42666 
42668  {
42669  } // ~Inst_MIMG__IMAGE_SAMPLE_B
42670 
42671  // --- description from .arch file ---
42672  // sample texture map, with lod bias.
42673  void
42675  {
42677  } // execute
42678  // --- Inst_MIMG__IMAGE_SAMPLE_B_CL class methods ---
42679 
42681  InFmt_MIMG *iFmt)
42682  : Inst_MIMG(iFmt, "image_sample_b_cl")
42683  {
42684  setFlag(GlobalSegment);
42685  } // Inst_MIMG__IMAGE_SAMPLE_B_CL
42686 
42688  {
42689  } // ~Inst_MIMG__IMAGE_SAMPLE_B_CL
42690 
42691  // --- description from .arch file ---
42692  // sample texture map, with LOD clamp specified in shader, with lod bias.
42693  void
42695  {
42697  } // execute
42698  // --- Inst_MIMG__IMAGE_SAMPLE_LZ class methods ---
42699 
42701  : Inst_MIMG(iFmt, "image_sample_lz")
42702  {
42703  setFlag(GlobalSegment);
42704  } // Inst_MIMG__IMAGE_SAMPLE_LZ
42705 
42707  {
42708  } // ~Inst_MIMG__IMAGE_SAMPLE_LZ
42709 
42710  // --- description from .arch file ---
42711  // sample texture map, from level 0.
42712  void
42714  {
42716  } // execute
42717  // --- Inst_MIMG__IMAGE_SAMPLE_C class methods ---
42718 
42720  : Inst_MIMG(iFmt, "image_sample_c")
42721  {
42722  setFlag(GlobalSegment);
42723  } // Inst_MIMG__IMAGE_SAMPLE_C
42724 
42726  {
42727  } // ~Inst_MIMG__IMAGE_SAMPLE_C
42728 
42729  // --- description from .arch file ---
42730  // sample texture map, with PCF.
42731  void
42733  {
42735  } // execute
42736  // --- Inst_MIMG__IMAGE_SAMPLE_C_CL class methods ---
42737 
42739  InFmt_MIMG *iFmt)
42740  : Inst_MIMG(iFmt, "image_sample_c_cl")
42741  {
42742  setFlag(GlobalSegment);
42743  } // Inst_MIMG__IMAGE_SAMPLE_C_CL
42744 
42746  {
42747  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CL
42748 
42749  // --- description from .arch file ---
42750  // SAMPLE_C, with LOD clamp specified in shader.
42751  void
42753  {
42755  } // execute
42756  // --- Inst_MIMG__IMAGE_SAMPLE_C_D class methods ---
42757 
42759  : Inst_MIMG(iFmt, "image_sample_c_d")
42760  {
42761  setFlag(GlobalSegment);
42762  } // Inst_MIMG__IMAGE_SAMPLE_C_D
42763 
42765  {
42766  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D
42767 
42768  // --- description from .arch file ---
42769  // SAMPLE_C, with user derivatives.
42770  void
42772  {
42774  } // execute
42775  // --- Inst_MIMG__IMAGE_SAMPLE_C_D_CL class methods ---
42776 
42778  InFmt_MIMG *iFmt)
42779  : Inst_MIMG(iFmt, "image_sample_c_d_cl")
42780  {
42781  setFlag(GlobalSegment);
42782  } // Inst_MIMG__IMAGE_SAMPLE_C_D_CL
42783 
42785  {
42786  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_CL
42787 
42788  // --- description from .arch file ---
42789  // SAMPLE_C, with LOD clamp specified in shader, with user derivatives.
42790  void
42792  {
42794  } // execute
42795  // --- Inst_MIMG__IMAGE_SAMPLE_C_L class methods ---
42796 
42798  : Inst_MIMG(iFmt, "image_sample_c_l")
42799  {
42800  setFlag(GlobalSegment);
42801  } // Inst_MIMG__IMAGE_SAMPLE_C_L
42802 
42804  {
42805  } // ~Inst_MIMG__IMAGE_SAMPLE_C_L
42806 
42807  // --- description from .arch file ---
42808  // SAMPLE_C, with user LOD.
42809  void
42811  {
42813  } // execute
42814  // --- Inst_MIMG__IMAGE_SAMPLE_C_B class methods ---
42815 
42817  : Inst_MIMG(iFmt, "image_sample_c_b")
42818  {
42819  setFlag(GlobalSegment);
42820  } // Inst_MIMG__IMAGE_SAMPLE_C_B
42821 
42823  {
42824  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B
42825 
42826  // --- description from .arch file ---
42827  // SAMPLE_C, with lod bias.
42828  void
42830  {
42832  } // execute
42833  // --- Inst_MIMG__IMAGE_SAMPLE_C_B_CL class methods ---
42834 
42836  InFmt_MIMG *iFmt)
42837  : Inst_MIMG(iFmt, "image_sample_c_b_cl")
42838  {
42839  setFlag(GlobalSegment);
42840  } // Inst_MIMG__IMAGE_SAMPLE_C_B_CL
42841 
42843  {
42844  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_CL
42845 
42846  // --- description from .arch file ---
42847  // SAMPLE_C, with LOD clamp specified in shader, with lod bias.
42848  void
42850  {
42852  } // execute
42853  // --- Inst_MIMG__IMAGE_SAMPLE_C_LZ class methods ---
42854 
42856  InFmt_MIMG *iFmt)
42857  : Inst_MIMG(iFmt, "image_sample_c_lz")
42858  {
42859  setFlag(GlobalSegment);
42860  } // Inst_MIMG__IMAGE_SAMPLE_C_LZ
42861 
42863  {
42864  } // ~Inst_MIMG__IMAGE_SAMPLE_C_LZ
42865 
42866  // --- description from .arch file ---
42867  // SAMPLE_C, from level 0.
42868  void
42870  {
42872  } // execute
42873  // --- Inst_MIMG__IMAGE_SAMPLE_O class methods ---
42874 
42876  : Inst_MIMG(iFmt, "image_sample_o")
42877  {
42878  setFlag(GlobalSegment);
42879  } // Inst_MIMG__IMAGE_SAMPLE_O
42880 
42882  {
42883  } // ~Inst_MIMG__IMAGE_SAMPLE_O
42884 
42885  // --- description from .arch file ---
42886  // sample texture map, with user offsets.
42887  void
42889  {
42891  } // execute
42892  // --- Inst_MIMG__IMAGE_SAMPLE_CL_O class methods ---
42893 
42895  InFmt_MIMG *iFmt)
42896  : Inst_MIMG(iFmt, "image_sample_cl_o")
42897  {
42898  setFlag(GlobalSegment);
42899  } // Inst_MIMG__IMAGE_SAMPLE_CL_O
42900 
42902  {
42903  } // ~Inst_MIMG__IMAGE_SAMPLE_CL_O
42904 
42905  // --- description from .arch file ---
42906  // SAMPLE_O with LOD clamp specified in shader.
42907  void
42909  {
42911  } // execute
42912  // --- Inst_MIMG__IMAGE_SAMPLE_D_O class methods ---
42913 
42915  : Inst_MIMG(iFmt, "image_sample_d_o")
42916  {
42917  setFlag(GlobalSegment);
42918  } // Inst_MIMG__IMAGE_SAMPLE_D_O
42919 
42921  {
42922  } // ~Inst_MIMG__IMAGE_SAMPLE_D_O
42923 
42924  // --- description from .arch file ---
42925  // SAMPLE_O, with user derivatives.
42926  void
42928  {
42930  } // execute
42931  // --- Inst_MIMG__IMAGE_SAMPLE_D_CL_O class methods ---
42932 
42934  InFmt_MIMG *iFmt)
42935  : Inst_MIMG(iFmt, "image_sample_d_cl_o")
42936  {
42937  setFlag(GlobalSegment);
42938  } // Inst_MIMG__IMAGE_SAMPLE_D_CL_O
42939 
42941  {
42942  } // ~Inst_MIMG__IMAGE_SAMPLE_D_CL_O
42943 
42944  // --- description from .arch file ---
42945  // SAMPLE_O, with LOD clamp specified in shader, with user derivatives.
42946  void
42948  {
42950  } // execute
42951  // --- Inst_MIMG__IMAGE_SAMPLE_L_O class methods ---
42952 
42954  : Inst_MIMG(iFmt, "image_sample_l_o")
42955  {
42956  setFlag(GlobalSegment);
42957  } // Inst_MIMG__IMAGE_SAMPLE_L_O
42958 
42960  {
42961  } // ~Inst_MIMG__IMAGE_SAMPLE_L_O
42962 
42963  // --- description from .arch file ---
42964  // SAMPLE_O, with user LOD.
42965  void
42967  {
42969  } // execute
42970  // --- Inst_MIMG__IMAGE_SAMPLE_B_O class methods ---
42971 
42973  : Inst_MIMG(iFmt, "image_sample_b_o")
42974  {
42975  setFlag(GlobalSegment);
42976  } // Inst_MIMG__IMAGE_SAMPLE_B_O
42977 
42979  {
42980  } // ~Inst_MIMG__IMAGE_SAMPLE_B_O
42981 
42982  // --- description from .arch file ---
42983  // SAMPLE_O, with lod bias.
42984  void
42986  {
42988  } // execute
42989  // --- Inst_MIMG__IMAGE_SAMPLE_B_CL_O class methods ---
42990 
42992  InFmt_MIMG *iFmt)
42993  : Inst_MIMG(iFmt, "image_sample_b_cl_o")
42994  {
42995  setFlag(GlobalSegment);
42996  } // Inst_MIMG__IMAGE_SAMPLE_B_CL_O
42997 
42999  {
43000  } // ~Inst_MIMG__IMAGE_SAMPLE_B_CL_O
43001 
43002  // --- description from .arch file ---
43003  // SAMPLE_O, with LOD clamp specified in shader, with lod bias.
43004  void
43006  {
43008  } // execute
43009  // --- Inst_MIMG__IMAGE_SAMPLE_LZ_O class methods ---
43010 
43012  InFmt_MIMG *iFmt)
43013  : Inst_MIMG(iFmt, "image_sample_lz_o")
43014  {
43015  setFlag(GlobalSegment);
43016  } // Inst_MIMG__IMAGE_SAMPLE_LZ_O
43017 
43019  {
43020  } // ~Inst_MIMG__IMAGE_SAMPLE_LZ_O
43021 
43022  // --- description from .arch file ---
43023  // SAMPLE_O, from level 0.
43024  void
43026  {
43028  } // execute
43029  // --- Inst_MIMG__IMAGE_SAMPLE_C_O class methods ---
43030 
43032  : Inst_MIMG(iFmt, "image_sample_c_o")
43033  {
43034  setFlag(GlobalSegment);
43035  } // Inst_MIMG__IMAGE_SAMPLE_C_O
43036 
43038  {
43039  } // ~Inst_MIMG__IMAGE_SAMPLE_C_O
43040 
43041  // --- description from .arch file ---
43042  // SAMPLE_C with user specified offsets.
43043  void
43045  {
43047  } // execute
43048  // --- Inst_MIMG__IMAGE_SAMPLE_C_CL_O class methods ---
43049 
43051  InFmt_MIMG *iFmt)
43052  : Inst_MIMG(iFmt, "image_sample_c_cl_o")
43053  {
43054  setFlag(GlobalSegment);
43055  } // Inst_MIMG__IMAGE_SAMPLE_C_CL_O
43056 
43058  {
43059  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CL_O
43060 
43061  // --- description from .arch file ---
43062  // SAMPLE_C_O, with LOD clamp specified in shader.
43063  void
43065  {
43067  } // execute
43068  // --- Inst_MIMG__IMAGE_SAMPLE_C_D_O class methods ---
43069 
43071  InFmt_MIMG *iFmt)
43072  : Inst_MIMG(iFmt, "image_sample_c_d_o")
43073  {
43074  setFlag(GlobalSegment);
43075  } // Inst_MIMG__IMAGE_SAMPLE_C_D_O
43076 
43078  {
43079  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_O
43080 
43081  // --- description from .arch file ---
43082  // SAMPLE_C_O, with user derivatives.
43083  void
43085  {
43087  } // execute
43088  // --- Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O class methods ---
43089 
43091  InFmt_MIMG *iFmt)
43092  : Inst_MIMG(iFmt, "image_sample_c_d_cl_o")
43093  {
43094  setFlag(GlobalSegment);
43095  } // Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O
43096 
43098  {
43099  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O
43100 
43101  // --- description from .arch file ---
43102  // SAMPLE_C_O, with LOD clamp specified in shader, with user derivatives.
43103  void
43105  {
43107  } // execute
43108  // --- Inst_MIMG__IMAGE_SAMPLE_C_L_O class methods ---
43109 
43111  InFmt_MIMG *iFmt)
43112  : Inst_MIMG(iFmt, "image_sample_c_l_o")
43113  {
43114  setFlag(GlobalSegment);
43115  } // Inst_MIMG__IMAGE_SAMPLE_C_L_O
43116 
43118  {
43119  } // ~Inst_MIMG__IMAGE_SAMPLE_C_L_O
43120 
43121  // --- description from .arch file ---
43122  // SAMPLE_C_O, with user LOD.
43123  void
43125  {
43127  } // execute
43128  // --- Inst_MIMG__IMAGE_SAMPLE_C_B_O class methods ---
43129 
43131  InFmt_MIMG *iFmt)
43132  : Inst_MIMG(iFmt, "image_sample_c_b_o")
43133  {
43134  setFlag(GlobalSegment);
43135  } // Inst_MIMG__IMAGE_SAMPLE_C_B_O
43136 
43138  {
43139  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_O
43140 
43141  // --- description from .arch file ---
43142  // SAMPLE_C_O, with lod bias.
43143  void
43145  {
43147  } // execute
43148  // --- Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O class methods ---
43149 
43151  InFmt_MIMG *iFmt)
43152  : Inst_MIMG(iFmt, "image_sample_c_b_cl_o")
43153  {
43154  setFlag(GlobalSegment);
43155  } // Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O
43156 
43158  {
43159  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O
43160 
43161  // --- description from .arch file ---
43162  // SAMPLE_C_O, with LOD clamp specified in shader, with lod bias.
43163  void
43165  {
43167  } // execute
43168  // --- Inst_MIMG__IMAGE_SAMPLE_C_LZ_O class methods ---
43169 
43171  InFmt_MIMG *iFmt)
43172  : Inst_MIMG(iFmt, "image_sample_c_lz_o")
43173  {
43174  setFlag(GlobalSegment);
43175  } // Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
43176 
43178  {
43179  } // ~Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
43180 
43181  // --- description from .arch file ---
43182  // SAMPLE_C_O, from level 0.
43183  void
43185  {
43187  } // execute
43188  // --- Inst_MIMG__IMAGE_GATHER4 class methods ---
43189 
43191  : Inst_MIMG(iFmt, "image_gather4")
43192  {
43193  setFlag(GlobalSegment);
43194  } // Inst_MIMG__IMAGE_GATHER4
43195 
43197  {
43198  } // ~Inst_MIMG__IMAGE_GATHER4
43199 
43200  // --- description from .arch file ---
43201  // gather 4 single component elements (2x2).
43202  void
43204  {
43206  } // execute
43207  // --- Inst_MIMG__IMAGE_GATHER4_CL class methods ---
43208 
43210  : Inst_MIMG(iFmt, "image_gather4_cl")
43211  {
43212  setFlag(GlobalSegment);
43213  } // Inst_MIMG__IMAGE_GATHER4_CL
43214 
43216  {
43217  } // ~Inst_MIMG__IMAGE_GATHER4_CL
43218 
43219  // --- description from .arch file ---
43220  // gather 4 single component elements (2x2) with user LOD clamp.
43221  void
43223  {
43225  } // execute
43226  // --- Inst_MIMG__IMAGE_GATHER4_L class methods ---
43227 
43229  : Inst_MIMG(iFmt, "image_gather4_l")
43230  {
43231  setFlag(GlobalSegment);
43232  } // Inst_MIMG__IMAGE_GATHER4_L
43233 
43235  {
43236  } // ~Inst_MIMG__IMAGE_GATHER4_L
43237 
43238  // --- description from .arch file ---
43239  // gather 4 single component elements (2x2) with user LOD.
43240  void
43242  {
43244  } // execute
43245  // --- Inst_MIMG__IMAGE_GATHER4_B class methods ---
43246 
43248  : Inst_MIMG(iFmt, "image_gather4_b")
43249  {
43250  setFlag(GlobalSegment);
43251  } // Inst_MIMG__IMAGE_GATHER4_B
43252 
43254  {
43255  } // ~Inst_MIMG__IMAGE_GATHER4_B
43256 
43257  // --- description from .arch file ---
43258  // gather 4 single component elements (2x2) with user bias.
43259  void
43261  {
43263  } // execute
43264  // --- Inst_MIMG__IMAGE_GATHER4_B_CL class methods ---
43265 
43267  InFmt_MIMG *iFmt)
43268  : Inst_MIMG(iFmt, "image_gather4_b_cl")
43269  {
43270  setFlag(GlobalSegment);
43271  } // Inst_MIMG__IMAGE_GATHER4_B_CL
43272 
43274  {
43275  } // ~Inst_MIMG__IMAGE_GATHER4_B_CL
43276 
43277  // --- description from .arch file ---
43278  // gather 4 single component elements (2x2) with user bias and clamp.
43279  void
43281  {
43283  } // execute
43284  // --- Inst_MIMG__IMAGE_GATHER4_LZ class methods ---
43285 
43287  : Inst_MIMG(iFmt, "image_gather4_lz")
43288  {
43289  setFlag(GlobalSegment);
43290  } // Inst_MIMG__IMAGE_GATHER4_LZ
43291 
43293  {
43294  } // ~Inst_MIMG__IMAGE_GATHER4_LZ
43295 
43296  // --- description from .arch file ---
43297  // gather 4 single component elements (2x2) at level 0.
43298  void
43300  {
43302  } // execute
43303  // --- Inst_MIMG__IMAGE_GATHER4_C class methods ---
43304 
43306  : Inst_MIMG(iFmt, "image_gather4_c")
43307  {
43308  setFlag(GlobalSegment);
43309  } // Inst_MIMG__IMAGE_GATHER4_C
43310 
43312  {
43313  } // ~Inst_MIMG__IMAGE_GATHER4_C
43314 
43315  // --- description from .arch file ---
43316  // gather 4 single component elements (2x2) with PCF.
43317  void
43319  {
43321  } // execute
43322  // --- Inst_MIMG__IMAGE_GATHER4_C_CL class methods ---
43323 
43325  InFmt_MIMG *iFmt)
43326  : Inst_MIMG(iFmt, "image_gather4_c_cl")
43327  {
43328  setFlag(GlobalSegment);
43329  } // Inst_MIMG__IMAGE_GATHER4_C_CL
43330 
43332  {
43333  } // ~Inst_MIMG__IMAGE_GATHER4_C_CL
43334 
43335  // --- description from .arch file ---
43336  // gather 4 single component elements (2x2) with user LOD clamp and PCF.
43337  void
43339  {
43341  } // execute
43342  // --- Inst_MIMG__IMAGE_GATHER4_C_L class methods ---
43343 
43345  InFmt_MIMG *iFmt)
43346  : Inst_MIMG(iFmt, "image_gather4_c_l")
43347  {
43348  setFlag(GlobalSegment);
43349  } // Inst_MIMG__IMAGE_GATHER4_C_L
43350 
43352  {
43353  } // ~Inst_MIMG__IMAGE_GATHER4_C_L
43354 
43355  // --- description from .arch file ---
43356  // gather 4 single component elements (2x2) with user LOD and PCF.
43357  void
43359  {
43361  } // execute
43362  // --- Inst_MIMG__IMAGE_GATHER4_C_B class methods ---
43363 
43365  InFmt_MIMG *iFmt)
43366  : Inst_MIMG(iFmt, "image_gather4_c_b")
43367  {
43368  setFlag(GlobalSegment);
43369  } // Inst_MIMG__IMAGE_GATHER4_C_B
43370 
43372  {
43373  } // ~Inst_MIMG__IMAGE_GATHER4_C_B
43374 
43375  // --- description from .arch file ---
43376  // gather 4 single component elements (2x2) with user bias and PCF.
43377  void
43379  {
43381  } // execute
43382  // --- Inst_MIMG__IMAGE_GATHER4_C_B_CL class methods ---
43383 
43385  InFmt_MIMG *iFmt)
43386  : Inst_MIMG(iFmt, "image_gather4_c_b_cl")
43387  {
43388  setFlag(GlobalSegment);
43389  } // Inst_MIMG__IMAGE_GATHER4_C_B_CL
43390 
43392  {
43393  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_CL
43394 
43395  // --- description from .arch file ---
43396  // gather 4 single component elements (2x2) with user bias, clamp and PCF.
43397  void
43399  {
43401  } // execute
43402  // --- Inst_MIMG__IMAGE_GATHER4_C_LZ class methods ---
43403 
43405  InFmt_MIMG *iFmt)
43406  : Inst_MIMG(iFmt, "image_gather4_c_lz")
43407  {
43408  setFlag(GlobalSegment);
43409  } // Inst_MIMG__IMAGE_GATHER4_C_LZ
43410 
43412  {
43413  } // ~Inst_MIMG__IMAGE_GATHER4_C_LZ
43414 
43415  // --- description from .arch file ---
43416  // gather 4 single component elements (2x2) at level 0, with PCF.
43417  void
43419  {
43421  } // execute
43422  // --- Inst_MIMG__IMAGE_GATHER4_O class methods ---
43423 
43425  : Inst_MIMG(iFmt, "image_gather4_o")
43426  {
43427  setFlag(GlobalSegment);
43428  } // Inst_MIMG__IMAGE_GATHER4_O
43429 
43431  {
43432  } // ~Inst_MIMG__IMAGE_GATHER4_O
43433 
43434  // --- description from .arch file ---
43435  // GATHER4, with user offsets.
43436  void
43438  {
43440  } // execute
43441  // --- Inst_MIMG__IMAGE_GATHER4_CL_O class methods ---
43442 
43444  InFmt_MIMG *iFmt)
43445  : Inst_MIMG(iFmt, "image_gather4_cl_o")
43446  {
43447  setFlag(GlobalSegment);
43448  } // Inst_MIMG__IMAGE_GATHER4_CL_O
43449 
43451  {
43452  } // ~Inst_MIMG__IMAGE_GATHER4_CL_O
43453 
43454  // --- description from .arch file ---
43455  // GATHER4_CL, with user offsets.
43456  void
43458  {
43460  } // execute
43461  // --- Inst_MIMG__IMAGE_GATHER4_L_O class methods ---
43462 
43464  InFmt_MIMG *iFmt)
43465  : Inst_MIMG(iFmt, "image_gather4_l_o")
43466  {
43467  setFlag(GlobalSegment);
43468  } // Inst_MIMG__IMAGE_GATHER4_L_O
43469 
43471  {
43472  } // ~Inst_MIMG__IMAGE_GATHER4_L_O
43473 
43474  // --- description from .arch file ---
43475  // GATHER4_L, with user offsets.
43476  void
43478  {
43480  } // execute
43481  // --- Inst_MIMG__IMAGE_GATHER4_B_O class methods ---
43482 
43484  InFmt_MIMG *iFmt)
43485  : Inst_MIMG(iFmt, "image_gather4_b_o")
43486  {
43487  setFlag(GlobalSegment);
43488  } // Inst_MIMG__IMAGE_GATHER4_B_O
43489 
43491  {
43492  } // ~Inst_MIMG__IMAGE_GATHER4_B_O
43493 
43494  // --- description from .arch file ---
43495  // GATHER4_B, with user offsets.
43496  void
43498  {
43500  } // execute
43501  // --- Inst_MIMG__IMAGE_GATHER4_B_CL_O class methods ---
43502 
43504  InFmt_MIMG *iFmt)
43505  : Inst_MIMG(iFmt, "image_gather4_b_cl_o")
43506  {
43507  setFlag(GlobalSegment);
43508  } // Inst_MIMG__IMAGE_GATHER4_B_CL_O
43509 
43511  {
43512  } // ~Inst_MIMG__IMAGE_GATHER4_B_CL_O
43513 
43514  // --- description from .arch file ---
43515  // GATHER4_B_CL, with user offsets.
43516  void
43518  {
43520  } // execute
43521  // --- Inst_MIMG__IMAGE_GATHER4_LZ_O class methods ---
43522 
43524  InFmt_MIMG *iFmt)
43525  : Inst_MIMG(iFmt, "image_gather4_lz_o")
43526  {
43527  setFlag(GlobalSegment);
43528  } // Inst_MIMG__IMAGE_GATHER4_LZ_O
43529 
43531  {
43532  } // ~Inst_MIMG__IMAGE_GATHER4_LZ_O
43533 
43534  // --- description from .arch file ---
43535  // GATHER4_LZ, with user offsets.
43536  void
43538  {
43540  } // execute
43541  // --- Inst_MIMG__IMAGE_GATHER4_C_O class methods ---
43542 
43544  InFmt_MIMG *iFmt)
43545  : Inst_MIMG(iFmt, "image_gather4_c_o")
43546  {
43547  setFlag(GlobalSegment);
43548  } // Inst_MIMG__IMAGE_GATHER4_C_O
43549 
43551  {
43552  } // ~Inst_MIMG__IMAGE_GATHER4_C_O
43553 
43554  // --- description from .arch file ---
43555  // GATHER4_C, with user offsets.
43556  void
43558  {
43560  } // execute
43561  // --- Inst_MIMG__IMAGE_GATHER4_C_CL_O class methods ---
43562 
43564  InFmt_MIMG *iFmt)
43565  : Inst_MIMG(iFmt, "image_gather4_c_cl_o")
43566  {
43567  setFlag(GlobalSegment);
43568  } // Inst_MIMG__IMAGE_GATHER4_C_CL_O
43569 
43571  {
43572  } // ~Inst_MIMG__IMAGE_GATHER4_C_CL_O
43573 
43574  // --- description from .arch file ---
43575  // GATHER4_C_CL, with user offsets.
43576  void
43578  {
43580  } // execute
43581  // --- Inst_MIMG__IMAGE_GATHER4_C_L_O class methods ---
43582 
43584  InFmt_MIMG *iFmt)
43585  : Inst_MIMG(iFmt, "image_gather4_c_l_o")
43586  {
43587  setFlag(GlobalSegment);
43588  } // Inst_MIMG__IMAGE_GATHER4_C_L_O
43589 
43591  {
43592  } // ~Inst_MIMG__IMAGE_GATHER4_C_L_O
43593 
43594  // --- description from .arch file ---
43595  // GATHER4_C_L, with user offsets.
43596  void
43598  {
43600  } // execute
43601  // --- Inst_MIMG__IMAGE_GATHER4_C_B_O class methods ---
43602 
43604  InFmt_MIMG *iFmt)
43605  : Inst_MIMG(iFmt, "image_gather4_c_b_o")
43606  {
43607  setFlag(GlobalSegment);
43608  } // Inst_MIMG__IMAGE_GATHER4_C_B_O
43609 
43611  {
43612  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_O
43613 
43614  // --- description from .arch file ---
43615  // GATHER4_B, with user offsets.
43616  void
43618  {
43620  } // execute
43621  // --- Inst_MIMG__IMAGE_GATHER4_C_B_CL_O class methods ---
43622 
43624  InFmt_MIMG *iFmt)
43625  : Inst_MIMG(iFmt, "image_gather4_c_b_cl_o")
43626  {
43627  setFlag(GlobalSegment);
43628  } // Inst_MIMG__IMAGE_GATHER4_C_B_CL_O
43629 
43631  {
43632  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_CL_O
43633 
43634  // --- description from .arch file ---
43635  // GATHER4_B_CL, with user offsets.
43636  void
43638  {
43640  } // execute
43641  // --- Inst_MIMG__IMAGE_GATHER4_C_LZ_O class methods ---
43642 
43644  InFmt_MIMG *iFmt)
43645  : Inst_MIMG(iFmt, "image_gather4_c_lz_o")
43646  {
43647  setFlag(GlobalSegment);
43648  } // Inst_MIMG__IMAGE_GATHER4_C_LZ_O
43649 
43651  {
43652  } // ~Inst_MIMG__IMAGE_GATHER4_C_LZ_O
43653 
43654  // --- description from .arch file ---
43655  // GATHER4_C_LZ, with user offsets.
43656  void
43658  {
43660  } // execute
43661  // --- Inst_MIMG__IMAGE_GET_LOD class methods ---
43662 
43664  : Inst_MIMG(iFmt, "image_get_lod")
43665  {
43666  setFlag(GlobalSegment);
43667  } // Inst_MIMG__IMAGE_GET_LOD
43668 
43670  {
43671  } // ~Inst_MIMG__IMAGE_GET_LOD
43672 
43673  // --- description from .arch file ---
43674  // Return calculated LOD. Vdata gets 2 32bit integer values: { rawLOD,
43675  // --- clampedLOD }.
43676  void
43678  {
43680  } // execute
43681  // --- Inst_MIMG__IMAGE_SAMPLE_CD class methods ---
43682 
43684  : Inst_MIMG(iFmt, "image_sample_cd")
43685  {
43686  setFlag(GlobalSegment);
43687  } // Inst_MIMG__IMAGE_SAMPLE_CD
43688 
43690  {
43691  } // ~Inst_MIMG__IMAGE_SAMPLE_CD
43692 
43693  // --- description from .arch file ---
43694  // sample texture map, with user derivatives (LOD per quad)
43695  void
43697  {
43699  } // execute
43700  // --- Inst_MIMG__IMAGE_SAMPLE_CD_CL class methods ---
43701 
43703  InFmt_MIMG *iFmt)
43704  : Inst_MIMG(iFmt, "image_sample_cd_cl")
43705  {
43706  setFlag(GlobalSegment);
43707  } // Inst_MIMG__IMAGE_SAMPLE_CD_CL
43708 
43710  {
43711  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_CL
43712 
43713  // --- description from .arch file ---
43714  // sample texture map, with LOD clamp specified in shader, with user
43715  // --- derivatives (LOD per quad).
43716  void
43718  {
43720  } // execute
43721  // --- Inst_MIMG__IMAGE_SAMPLE_C_CD class methods ---
43722 
43724  InFmt_MIMG *iFmt)
43725  : Inst_MIMG(iFmt, "image_sample_c_cd")
43726  {
43727  setFlag(GlobalSegment);
43728  } // Inst_MIMG__IMAGE_SAMPLE_C_CD
43729 
43731  {
43732  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD
43733 
43734  // --- description from .arch file ---
43735  // SAMPLE_C, with user derivatives (LOD per quad).
43736  void
43738  {
43740  } // execute
43741  // --- Inst_MIMG__IMAGE_SAMPLE_C_CD_CL class methods ---
43742 
43744  InFmt_MIMG *iFmt)
43745  : Inst_MIMG(iFmt, "image_sample_c_cd_cl")
43746  {
43747  setFlag(GlobalSegment);
43748  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
43749 
43751  {
43752  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
43753 
43754  // --- description from .arch file ---
43755  // SAMPLE_C, with LOD clamp specified in shader, with user derivatives
43756  // (LOD per quad).
43757  void
43759  {
43761  } // execute
43762  // --- Inst_MIMG__IMAGE_SAMPLE_CD_O class methods ---
43763 
43765  InFmt_MIMG *iFmt)
43766  : Inst_MIMG(iFmt, "image_sample_cd_o")
43767  {
43768  setFlag(GlobalSegment);
43769  } // Inst_MIMG__IMAGE_SAMPLE_CD_O
43770 
43772  {
43773  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_O
43774 
43775  // --- description from .arch file ---
43776  // SAMPLE_O, with user derivatives (LOD per quad).
43777  void
43779  {
43781  } // execute
43782  // --- Inst_MIMG__IMAGE_SAMPLE_CD_CL_O class methods ---
43783 
43785  InFmt_MIMG *iFmt)
43786  : Inst_MIMG(iFmt, "image_sample_cd_cl_o")
43787  {
43788  setFlag(GlobalSegment);
43789  } // Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
43790 
43792  {
43793  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
43794 
43795  // --- description from .arch file ---
43796  // SAMPLE_O, with LOD clamp specified in shader, with user derivatives
43797  // (LOD per quad).
43798  void
43800  {
43802  } // execute
43803  // --- Inst_MIMG__IMAGE_SAMPLE_C_CD_O class methods ---
43804 
43806  InFmt_MIMG *iFmt)
43807  : Inst_MIMG(iFmt, "image_sample_c_cd_o")
43808  {
43809  setFlag(GlobalSegment);
43810  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_O
43811 
43813  {
43814  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_O
43815 
43816  // --- description from .arch file ---
43817  // SAMPLE_C_O, with user derivatives (LOD per quad).
43818  void
43820  {
43822  } // execute
43823  // --- Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O class methods ---
43824 
43826  InFmt_MIMG *iFmt)
43827  : Inst_MIMG(iFmt, "image_sample_c_cd_cl_o")
43828  {
43829  setFlag(GlobalSegment);
43830  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O
43831 
43833  {
43834  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O
43835 
43836  // --- description from .arch file ---
43837  // SAMPLE_C_O, with LOD clamp specified in shader, with user derivatives
43838  // (LOD per quad).
43839  void
43841  {
43843  } // execute
43844  // --- Inst_EXP__EXP class methods ---
43845 
43847  : Inst_EXP(iFmt, "exp")
43848  {
43849  } // Inst_EXP__EXP
43850 
43852  {
43853  } // ~Inst_EXP__EXP
43854 
43855  // --- description from .arch file ---
43856  // Export through SX.
43857  void
43859  {
43861  } // execute
43862  // --- Inst_FLAT__FLAT_LOAD_UBYTE class methods ---
43863 
43865  : Inst_FLAT(iFmt, "flat_load_ubyte")
43866  {
43867  setFlag(MemoryRef);
43868  setFlag(Load);
43869  } // Inst_FLAT__FLAT_LOAD_UBYTE
43870 
43872  {
43873  } // ~Inst_FLAT__FLAT_LOAD_UBYTE
43874 
43875  // --- description from .arch file ---
43876  // Untyped buffer load unsigned byte (zero extend to VGPR destination).
43877  void
43879  {
43880  Wavefront *wf = gpuDynInst->wavefront();
43881 
43882  if (gpuDynInst->exec_mask.none() && isFlat()) {
43883  wf->decVMemInstsIssued();
43884  wf->decLGKMInstsIssued();
43885  return;
43886  }
43887 
43888  gpuDynInst->execUnitId = wf->execUnitId;
43889  gpuDynInst->latency.init(gpuDynInst->computeUnit());
43890  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
43891 
43892  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
43893 
43894  issueRequestHelper(gpuDynInst);
43895  } // execute
43896 
43897  void
43899  {
43900  initMemRead<VecElemU8>(gpuDynInst);
43901  } // initiateAcc
43902 
43903  void
43905  {
43906  VecOperandU32 vdst(gpuDynInst, extData.VDST);
43907 
43908  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
43909  if (gpuDynInst->exec_mask[lane]) {
43910  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU8*>(
43911  gpuDynInst->d_data))[lane]);
43912  }
43913  }
43914  vdst.write();
43915  } // execute
43916  // --- Inst_FLAT__FLAT_LOAD_SBYTE class methods ---
43917 
43919  : Inst_FLAT(iFmt, "flat_load_sbyte")
43920  {
43921  setFlag(MemoryRef);
43922  setFlag(Load);
43923  } // Inst_FLAT__FLAT_LOAD_SBYTE
43924 
43926  {
43927  } // ~Inst_FLAT__FLAT_LOAD_SBYTE
43928 
43929  // --- description from .arch file ---
43930  // Untyped buffer load signed byte (sign extend to VGPR destination).
43931  void
43933  {
43935  } // execute
43936 
43937  void
43939  {
43940  } // initiateAcc
43941 
43942  void
43944  {
43945  } // execute
43946  // --- Inst_FLAT__FLAT_LOAD_USHORT class methods ---
43947 
43949  : Inst_FLAT(iFmt, "flat_load_ushort")
43950  {
43951  setFlag(MemoryRef);
43952  setFlag(Load);
43953  } // Inst_FLAT__FLAT_LOAD_USHORT
43954 
43956  {
43957  } // ~Inst_FLAT__FLAT_LOAD_USHORT
43958 
43959  // --- description from .arch file ---
43960  // Untyped buffer load unsigned short (zero extend to VGPR destination).
43961  void
43963  {
43964  Wavefront *wf = gpuDynInst->wavefront();
43965 
43966  if (gpuDynInst->exec_mask.none() && isFlat()) {
43967  wf->decVMemInstsIssued();
43968  wf->decLGKMInstsIssued();
43969  return;
43970  }
43971 
43972  gpuDynInst->execUnitId = wf->execUnitId;
43973  gpuDynInst->latency.init(gpuDynInst->computeUnit());
43974  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
43975 
43976  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
43977 
43978  issueRequestHelper(gpuDynInst);
43979  } // execute
43980 
43981  void
43983  {
43984  initMemRead<VecElemU16>(gpuDynInst);
43985  } // initiateAcc
43986 
43987  void
43989  {
43990  VecOperandU32 vdst(gpuDynInst, extData.VDST);
43991 
43992  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
43993  if (gpuDynInst->exec_mask[lane]) {
43994  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU16*>(
43995  gpuDynInst->d_data))[lane]);
43996  }
43997  }
43998  vdst.write();
43999  } // execute
44000 
44001  // --- Inst_FLAT__FLAT_LOAD_SSHORT class methods ---
44002 
44004  : Inst_FLAT(iFmt, "flat_load_sshort")
44005  {
44006  setFlag(MemoryRef);
44007  setFlag(Load);
44008  } // Inst_FLAT__FLAT_LOAD_SSHORT
44009 
44011  {
44012  } // ~Inst_FLAT__FLAT_LOAD_SSHORT
44013 
44014  // --- description from .arch file ---
44015  // Untyped buffer load signed short (sign extend to VGPR destination).
44016  void
44018  {
44020  } // execute
44021 
44022  void
44024  {
44025  } // initiateAcc
44026 
44027  void
44029  {
44030  } // execute
44031  // --- Inst_FLAT__FLAT_LOAD_DWORD class methods ---
44032 
44034  : Inst_FLAT(iFmt, "flat_load_dword")
44035  {
44036  setFlag(MemoryRef);
44037  setFlag(Load);
44038  } // Inst_FLAT__FLAT_LOAD_DWORD
44039 
44041  {
44042  } // ~Inst_FLAT__FLAT_LOAD_DWORD
44043 
44044  // --- description from .arch file ---
44045  // Untyped buffer load dword.
44046  void
44048  {
44049  Wavefront *wf = gpuDynInst->wavefront();
44050 
44051  if (gpuDynInst->exec_mask.none() && isFlat()) {
44052  wf->decVMemInstsIssued();
44053  wf->decLGKMInstsIssued();
44054  return;
44055  }
44056 
44057  gpuDynInst->execUnitId = wf->execUnitId;
44058  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44059  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44060 
44061  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44062 
44063  issueRequestHelper(gpuDynInst);
44064  } // execute
44065 
44066  void
44068  {
44069  initMemRead<VecElemU32>(gpuDynInst);
44070  } // initiateAcc
44071 
44072  void
44074  {
44075  VecOperandU32 vdst(gpuDynInst, extData.VDST);
44076 
44077  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44078  if (gpuDynInst->exec_mask[lane]) {
44079  vdst[lane] = (reinterpret_cast<VecElemU32*>(
44080  gpuDynInst->d_data))[lane];
44081  }
44082  }
44083  vdst.write();
44084  } // completeAcc
44085  // --- Inst_FLAT__FLAT_LOAD_DWORDX2 class methods ---
44086 
44088  InFmt_FLAT *iFmt)
44089  : Inst_FLAT(iFmt, "flat_load_dwordx2")
44090  {
44091  setFlag(MemoryRef);
44092  setFlag(Load);
44093  } // Inst_FLAT__FLAT_LOAD_DWORDX2
44094 
44096  {
44097  } // ~Inst_FLAT__FLAT_LOAD_DWORDX2
44098 
44099  // --- description from .arch file ---
44100  // Untyped buffer load 2 dwords.
44101  void
44103  {
44104  Wavefront *wf = gpuDynInst->wavefront();
44105 
44106  if (gpuDynInst->exec_mask.none() && isFlat()) {
44107  wf->decVMemInstsIssued();
44108  wf->decLGKMInstsIssued();
44109  return;
44110  }
44111 
44112  gpuDynInst->execUnitId = wf->execUnitId;
44113  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44114  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44115 
44116  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44117 
44118  issueRequestHelper(gpuDynInst);
44119  } // execute
44120 
44121  void
44123  {
44124  initMemRead<VecElemU64>(gpuDynInst);
44125  } // initiateAcc
44126 
44127  void
44129  {
44130  VecOperandU64 vdst(gpuDynInst, extData.VDST);
44131 
44132  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44133  if (gpuDynInst->exec_mask[lane]) {
44134  vdst[lane] = (reinterpret_cast<VecElemU64*>(
44135  gpuDynInst->d_data))[lane];
44136  }
44137  }
44138  vdst.write();
44139  } // completeAcc
44140  // --- Inst_FLAT__FLAT_LOAD_DWORDX3 class methods ---
44141 
44143  InFmt_FLAT *iFmt)
44144  : Inst_FLAT(iFmt, "flat_load_dwordx3")
44145  {
44146  setFlag(MemoryRef);
44147  setFlag(Load);
44148  } // Inst_FLAT__FLAT_LOAD_DWORDX3
44149 
44151  {
44152  } // ~Inst_FLAT__FLAT_LOAD_DWORDX3
44153 
44154  // --- description from .arch file ---
44155  // Untyped buffer load 3 dwords.
44156  void
44158  {
44159  Wavefront *wf = gpuDynInst->wavefront();
44160 
44161  if (gpuDynInst->exec_mask.none() && isFlat()) {
44162  wf->decVMemInstsIssued();
44163  wf->decLGKMInstsIssued();
44164  return;
44165  }
44166 
44167  gpuDynInst->execUnitId = wf->execUnitId;
44168  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44169  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44170 
44171  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44172 
44173  issueRequestHelper(gpuDynInst);
44174  } // execute
44175 
44176  void
44178  {
44179  initMemRead<3>(gpuDynInst);
44180  } // initiateAcc
44181 
44182  void
44184  {
44185  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
44186  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
44187  VecOperandU32 vdst2(gpuDynInst, extData.VDST + 2);
44188 
44189  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44190  if (gpuDynInst->exec_mask[lane]) {
44191  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
44192  gpuDynInst->d_data))[lane * 3];
44193  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
44194  gpuDynInst->d_data))[lane * 3 + 1];
44195  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
44196  gpuDynInst->d_data))[lane * 3 + 2];
44197  }
44198  }
44199 
44200  vdst0.write();
44201  vdst1.write();
44202  vdst2.write();
44203  } // completeAcc
44204  // --- Inst_FLAT__FLAT_LOAD_DWORDX4 class methods ---
44205 
44207  InFmt_FLAT *iFmt)
44208  : Inst_FLAT(iFmt, "flat_load_dwordx4")
44209  {
44210  setFlag(MemoryRef);
44211  setFlag(Load);
44212  } // Inst_FLAT__FLAT_LOAD_DWORDX4
44213 
44215  {
44216  } // ~Inst_FLAT__FLAT_LOAD_DWORDX4
44217 
44218  // --- description from .arch file ---
44219  // Untyped buffer load 4 dwords.
44220  void
44222  {
44223  Wavefront *wf = gpuDynInst->wavefront();
44224 
44225  if (gpuDynInst->exec_mask.none() && isFlat()) {
44226  wf->decVMemInstsIssued();
44227  wf->decLGKMInstsIssued();
44228  return;
44229  }
44230 
44231  gpuDynInst->execUnitId = wf->execUnitId;
44232  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44233  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44234 
44235  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44236 
44237  issueRequestHelper(gpuDynInst);
44238  } // execute
44239 
44240  void
44242  {
44243  initMemRead<4>(gpuDynInst);
44244  } // initiateAcc
44245 
44246  void
44248  {
44249  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
44250  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
44251  VecOperandU32 vdst2(gpuDynInst, extData.VDST + 2);
44252  VecOperandU32 vdst3(gpuDynInst, extData.VDST + 3);
44253 
44254  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44255  if (gpuDynInst->exec_mask[lane]) {
44256  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
44257  gpuDynInst->d_data))[lane * 4];
44258  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
44259  gpuDynInst->d_data))[lane * 4 + 1];
44260  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
44261  gpuDynInst->d_data))[lane * 4 + 2];
44262  vdst3[lane] = (reinterpret_cast<VecElemU32*>(
44263  gpuDynInst->d_data))[lane * 4 + 3];
44264  }
44265  }
44266 
44267  vdst0.write();
44268  vdst1.write();
44269  vdst2.write();
44270  vdst3.write();
44271  } // completeAcc
44272  // --- Inst_FLAT__FLAT_STORE_BYTE class methods ---
44273 
44275  : Inst_FLAT(iFmt, "flat_store_byte")
44276  {
44277  setFlag(MemoryRef);
44278  setFlag(Store);
44279  } // Inst_FLAT__FLAT_STORE_BYTE
44280 
44282  {
44283  } // ~Inst_FLAT__FLAT_STORE_BYTE
44284 
44285  // --- description from .arch file ---
44286  // Untyped buffer store byte.
44287  void
44289  {
44290  Wavefront *wf = gpuDynInst->wavefront();
44291 
44292  if (gpuDynInst->exec_mask.none() && isFlat()) {
44293  wf->decVMemInstsIssued();
44294  wf->decLGKMInstsIssued();
44295  wf->decExpInstsIssued();
44296  return;
44297  }
44298 
44299  gpuDynInst->execUnitId = wf->execUnitId;
44300  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44301  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44302 
44303  ConstVecOperandU8 data(gpuDynInst, extData.DATA);
44304 
44305  data.read();
44306 
44307  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44308 
44309  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44310  if (gpuDynInst->exec_mask[lane]) {
44311  (reinterpret_cast<VecElemU8*>(gpuDynInst->d_data))[lane]
44312  = data[lane];
44313  }
44314  }
44315 
44316  issueRequestHelper(gpuDynInst);
44317  } // execute
44318 
44319  void
44321  {
44322  initMemWrite<VecElemU8>(gpuDynInst);
44323  } // initiateAcc
44324 
44325  void
44327  {
44328  } // execute
44329  // --- Inst_FLAT__FLAT_STORE_SHORT class methods ---
44330 
44332  : Inst_FLAT(iFmt, "flat_store_short")
44333  {
44334  setFlag(MemoryRef);
44335  setFlag(Store);
44336  } // Inst_FLAT__FLAT_STORE_SHORT
44337 
44339  {
44340  } // ~Inst_FLAT__FLAT_STORE_SHORT
44341 
44342  // --- description from .arch file ---
44343  // Untyped buffer store short.
44344  void
44346  {
44347  Wavefront *wf = gpuDynInst->wavefront();
44348 
44349  if (gpuDynInst->exec_mask.none() && isFlat()) {
44350  wf->decVMemInstsIssued();
44351  wf->decLGKMInstsIssued();
44352  wf->decExpInstsIssued();
44353  return;
44354  }
44355 
44356  gpuDynInst->execUnitId = wf->execUnitId;
44357  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44358  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44359 
44360  ConstVecOperandU16 data(gpuDynInst, extData.DATA);
44361 
44362  data.read();
44363 
44364  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44365 
44366  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44367  if (gpuDynInst->exec_mask[lane]) {
44368  (reinterpret_cast<VecElemU16*>(gpuDynInst->d_data))[lane]
44369  = data[lane];
44370  }
44371  }
44372 
44373  issueRequestHelper(gpuDynInst);
44374  } // execute
44375 
44376  void
44378  {
44379  initMemWrite<VecElemU16>(gpuDynInst);
44380  } // initiateAcc
44381 
44382  void
44384  {
44385  } // completeAcc
44386  // --- Inst_FLAT__FLAT_STORE_DWORD class methods ---
44387 
44389  : Inst_FLAT(iFmt, "flat_store_dword")
44390  {
44391  setFlag(MemoryRef);
44392  setFlag(Store);
44393  } // Inst_FLAT__FLAT_STORE_DWORD
44394 
44396  {
44397  } // ~Inst_FLAT__FLAT_STORE_DWORD
44398 
44399  // --- description from .arch file ---
44400  // Untyped buffer store dword.
44401  void
44403  {
44404  Wavefront *wf = gpuDynInst->wavefront();
44405 
44406  if (gpuDynInst->exec_mask.none() && isFlat()) {
44407  wf->decVMemInstsIssued();
44408  wf->decLGKMInstsIssued();
44409  wf->decExpInstsIssued();
44410  return;
44411  }
44412 
44413  gpuDynInst->execUnitId = wf->execUnitId;
44414  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44415  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44416 
44417  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
44418 
44419  data.read();
44420 
44421  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44422 
44423  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44424  if (gpuDynInst->exec_mask[lane]) {
44425  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane]
44426  = data[lane];
44427  }
44428  }
44429 
44430  issueRequestHelper(gpuDynInst);
44431  } // execute
44432 
44433  void
44435  {
44436  initMemWrite<VecElemU32>(gpuDynInst);
44437  } // initiateAcc
44438 
44439  void
44441  {
44442  } // completeAcc
44443  // --- Inst_FLAT__FLAT_STORE_DWORDX2 class methods ---
44444 
44446  InFmt_FLAT *iFmt)
44447  : Inst_FLAT(iFmt, "flat_store_dwordx2")
44448  {
44449  setFlag(MemoryRef);
44450  setFlag(Store);
44451  } // Inst_FLAT__FLAT_STORE_DWORDX2
44452 
44454  {
44455  } // ~Inst_FLAT__FLAT_STORE_DWORDX2
44456 
44457  // --- description from .arch file ---
44458  // Untyped buffer store 2 dwords.
44459  void
44461  {
44462  Wavefront *wf = gpuDynInst->wavefront();
44463 
44464  if (gpuDynInst->exec_mask.none() && isFlat()) {
44465  wf->decVMemInstsIssued();
44466  wf->decLGKMInstsIssued();
44467  wf->decExpInstsIssued();
44468  return;
44469  }
44470 
44471  gpuDynInst->execUnitId = wf->execUnitId;
44472  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44473  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44474 
44475  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
44476 
44477  data.read();
44478 
44479  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44480 
44481  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44482  if (gpuDynInst->exec_mask[lane]) {
44483  (reinterpret_cast<VecElemU64*>(gpuDynInst->d_data))[lane]
44484  = data[lane];
44485  }
44486  }
44487 
44488  issueRequestHelper(gpuDynInst);
44489  } // execute
44490 
44491  void
44493  {
44494  initMemWrite<VecElemU64>(gpuDynInst);
44495  } // initiateAcc
44496 
44497  void
44499  {
44500  } // completeAcc
44501  // --- Inst_FLAT__FLAT_STORE_DWORDX3 class methods ---
44502 
44504  InFmt_FLAT *iFmt)
44505  : Inst_FLAT(iFmt, "flat_store_dwordx3")
44506  {
44507  setFlag(MemoryRef);
44508  setFlag(Store);
44509  } // Inst_FLAT__FLAT_STORE_DWORDX3
44510 
44512  {
44513  } // ~Inst_FLAT__FLAT_STORE_DWORDX3
44514 
44515  // --- description from .arch file ---
44516  // Untyped buffer store 3 dwords.
44517  void
44519  {
44520  Wavefront *wf = gpuDynInst->wavefront();
44521 
44522  if (gpuDynInst->exec_mask.none() && isFlat()) {
44523  wf->decVMemInstsIssued();
44524  wf->decLGKMInstsIssued();
44525  wf->decExpInstsIssued();
44526  return;
44527  }
44528 
44529  gpuDynInst->execUnitId = wf->execUnitId;
44530  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44531  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44532 
44533  ConstVecOperandU32 data0(gpuDynInst, extData.DATA);
44534  ConstVecOperandU32 data1(gpuDynInst, extData.DATA + 1);
44535  ConstVecOperandU32 data2(gpuDynInst, extData.DATA + 2);
44536 
44537  data0.read();
44538  data1.read();
44539  data2.read();
44540 
44541  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44542 
44543  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44544  if (gpuDynInst->exec_mask[lane]) {
44545  (reinterpret_cast<VecElemU32*>(
44546  gpuDynInst->d_data))[lane * 3] = data0[lane];
44547  (reinterpret_cast<VecElemU32*>(
44548  gpuDynInst->d_data))[lane * 3 + 1] = data1[lane];
44549  (reinterpret_cast<VecElemU32*>(
44550  gpuDynInst->d_data))[lane * 3 + 2] = data2[lane];
44551  }
44552  }
44553 
44554  issueRequestHelper(gpuDynInst);
44555  } // execute
44556 
44557  void
44559  {
44560  initMemWrite<3>(gpuDynInst);
44561  } // initiateAcc
44562 
44563  void
44565  {
44566  } // completeAcc
44567  // --- Inst_FLAT__FLAT_STORE_DWORDX4 class methods ---
44568 
44570  InFmt_FLAT *iFmt)
44571  : Inst_FLAT(iFmt, "flat_store_dwordx4")
44572  {
44573  setFlag(MemoryRef);
44574  setFlag(Store);
44575  } // Inst_FLAT__FLAT_STORE_DWORDX4
44576 
44578  {
44579  } // ~Inst_FLAT__FLAT_STORE_DWORDX4
44580 
44581  // --- description from .arch file ---
44582  // Untyped buffer store 4 dwords.
44583  void
44585  {
44586  Wavefront *wf = gpuDynInst->wavefront();
44587 
44588  if (gpuDynInst->exec_mask.none() && isFlat()) {
44589  wf->decVMemInstsIssued();
44590  wf->decLGKMInstsIssued();
44591  wf->decExpInstsIssued();
44592  return;
44593  }
44594 
44595  gpuDynInst->execUnitId = wf->execUnitId;
44596  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44597  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44598 
44599  ConstVecOperandU32 data0(gpuDynInst, extData.DATA);
44600  ConstVecOperandU32 data1(gpuDynInst, extData.DATA + 1);
44601  ConstVecOperandU32 data2(gpuDynInst, extData.DATA + 2);
44602  ConstVecOperandU32 data3(gpuDynInst, extData.DATA + 3);
44603 
44604  data0.read();
44605  data1.read();
44606  data2.read();
44607  data3.read();
44608 
44609  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44610 
44611  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44612  if (gpuDynInst->exec_mask[lane]) {
44613  (reinterpret_cast<VecElemU32*>(
44614  gpuDynInst->d_data))[lane * 4] = data0[lane];
44615  (reinterpret_cast<VecElemU32*>(
44616  gpuDynInst->d_data))[lane * 4 + 1] = data1[lane];
44617  (reinterpret_cast<VecElemU32*>(
44618  gpuDynInst->d_data))[lane * 4 + 2] = data2[lane];
44619  (reinterpret_cast<VecElemU32*>(
44620  gpuDynInst->d_data))[lane * 4 + 3] = data3[lane];
44621  }
44622  }
44623 
44624  issueRequestHelper(gpuDynInst);
44625  } // execute
44626 
44627  void
44629  {
44630  initMemWrite<4>(gpuDynInst);
44631  } // initiateAcc
44632 
44633  void
44635  {
44636  } // completeAcc
44637  // --- Inst_FLAT__FLAT_ATOMIC_SWAP class methods ---
44638 
44640  : Inst_FLAT(iFmt, "flat_atomic_swap")
44641  {
44642  setFlag(AtomicExch);
44643  if (instData.GLC) {
44644  setFlag(AtomicReturn);
44645  } else {
44646  setFlag(AtomicNoReturn);
44647  }
44648  setFlag(MemoryRef);
44649  } // Inst_FLAT__FLAT_ATOMIC_SWAP
44650 
44652  {
44653  } // ~Inst_FLAT__FLAT_ATOMIC_SWAP
44654 
44655  // --- description from .arch file ---
44656  // 32b:
44657  // tmp = MEM[ADDR];
44658  // MEM[ADDR] = DATA;
44659  // RETURN_DATA = tmp.
44660  void
44662  {
44663  Wavefront *wf = gpuDynInst->wavefront();
44664 
44665  if (gpuDynInst->exec_mask.none() && isFlat()) {
44666  wf->decVMemInstsIssued();
44667  wf->decLGKMInstsIssued();
44668  return;
44669  }
44670 
44671  gpuDynInst->execUnitId = wf->execUnitId;
44672  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44673  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44674 
44675  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
44676 
44677  data.read();
44678 
44679  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44680 
44681  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44682  if (gpuDynInst->exec_mask[lane]) {
44683  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
44684  = data[lane];
44685  }
44686  }
44687 
44688  issueRequestHelper(gpuDynInst);
44689  } // execute
44690 
44691  void
44693  {
44694  initAtomicAccess<VecElemU32>(gpuDynInst);
44695  } // initiateAcc
44696 
44697  void
44699  {
44700  if (isAtomicRet()) {
44701  VecOperandU32 vdst(gpuDynInst, extData.VDST);
44702 
44703  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44704  if (gpuDynInst->exec_mask[lane]) {
44705  vdst[lane] = (reinterpret_cast<VecElemU32*>(
44706  gpuDynInst->d_data))[lane];
44707  }
44708  }
44709 
44710  vdst.write();
44711  }
44712  } // completeAcc
44713 
44714  // --- Inst_FLAT__FLAT_ATOMIC_CMPSWAP class methods ---
44715 
44718  : Inst_FLAT(iFmt, "flat_atomic_cmpswap")
44719  {
44720  setFlag(AtomicCAS);
44721  if (instData.GLC) {
44722  setFlag(AtomicReturn);
44723  } else {
44724  setFlag(AtomicNoReturn);
44725  }
44726  setFlag(MemoryRef);
44727  } // Inst_FLAT__FLAT_ATOMIC_CMPSWAP
44728 
44730  {
44731  } // ~Inst_FLAT__FLAT_ATOMIC_CMPSWAP
44732 
44733  // --- description from .arch file ---
44734  // 32b:
44735  // tmp = MEM[ADDR];
44736  // src = DATA[0];
44737  // cmp = DATA[1];
44738  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
44739  // RETURN_DATA[0] = tmp.
44740  void
44742  {
44743  Wavefront *wf = gpuDynInst->wavefront();
44744 
44745  if (gpuDynInst->exec_mask.none() && isFlat()) {
44746  wf->decVMemInstsIssued();
44747  wf->decLGKMInstsIssued();
44748  return;
44749  }
44750 
44751  gpuDynInst->execUnitId = wf->execUnitId;
44752  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44753  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44754 
44755  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
44756  ConstVecOperandU32 cmp(gpuDynInst, extData.DATA + 1);
44757 
44758  data.read();
44759  cmp.read();
44760 
44761  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44762 
44763  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44764  if (gpuDynInst->exec_mask[lane]) {
44765  (reinterpret_cast<VecElemU32*>(gpuDynInst->x_data))[lane]
44766  = data[lane];
44767  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
44768  = cmp[lane];
44769  }
44770  }
44771 
44772  issueRequestHelper(gpuDynInst);
44773  } // execute
44774 
44775  void
44777  {
44778  initAtomicAccess<VecElemU32>(gpuDynInst);
44779  } // initiateAcc
44780 
44781  void
44783  {
44784  if (isAtomicRet()) {
44785  VecOperandU32 vdst(gpuDynInst, extData.VDST);
44786 
44787  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44788  if (gpuDynInst->exec_mask[lane]) {
44789  vdst[lane] = (reinterpret_cast<VecElemU32*>(
44790  gpuDynInst->d_data))[lane];
44791  }
44792  }
44793 
44794  vdst.write();
44795  }
44796  } // completeAcc
44797  // --- Inst_FLAT__FLAT_ATOMIC_ADD class methods ---
44798 
44800  : Inst_FLAT(iFmt, "flat_atomic_add")
44801  {
44802  setFlag(AtomicAdd);
44803  if (instData.GLC) {
44804  setFlag(AtomicReturn);
44805  } else {
44806  setFlag(AtomicNoReturn);
44807  }
44808  setFlag(MemoryRef);
44809  } // Inst_FLAT__FLAT_ATOMIC_ADD
44810 
44812  {
44813  } // ~Inst_FLAT__FLAT_ATOMIC_ADD
44814 
44815  // --- description from .arch file ---
44816  // 32b:
44817  // tmp = MEM[ADDR];
44818  // MEM[ADDR] += DATA;
44819  // RETURN_DATA = tmp.
44820  void
44822  {
44823  Wavefront *wf = gpuDynInst->wavefront();
44824 
44825  if (gpuDynInst->exec_mask.none() && isFlat()) {
44826  wf->decVMemInstsIssued();
44827  wf->decLGKMInstsIssued();
44828  return;
44829  }
44830 
44831  gpuDynInst->execUnitId = wf->execUnitId;
44832  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44833  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44834 
44835  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
44836 
44837  data.read();
44838 
44839  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44840 
44841  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44842  if (gpuDynInst->exec_mask[lane]) {
44843  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
44844  = data[lane];
44845  }
44846  }
44847 
44848  issueRequestHelper(gpuDynInst);
44849  } // execute
44850 
44851  void
44853  {
44854  initAtomicAccess<VecElemU32>(gpuDynInst);
44855  } // initiateAcc
44856 
44857  void
44859  {
44860  if (isAtomicRet()) {
44861  VecOperandU32 vdst(gpuDynInst, extData.VDST);
44862 
44863  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44864  if (gpuDynInst->exec_mask[lane]) {
44865  vdst[lane] = (reinterpret_cast<VecElemU32*>(
44866  gpuDynInst->d_data))[lane];
44867  }
44868  }
44869 
44870  vdst.write();
44871  }
44872  } // completeAcc
44873  // --- Inst_FLAT__FLAT_ATOMIC_SUB class methods ---
44874 
44876  : Inst_FLAT(iFmt, "flat_atomic_sub")
44877  {
44878  setFlag(AtomicSub);
44879  if (instData.GLC) {
44880  setFlag(AtomicReturn);
44881  } else {
44882  setFlag(AtomicNoReturn);
44883  }
44884  setFlag(MemoryRef);
44885  } // Inst_FLAT__FLAT_ATOMIC_SUB
44886 
44888  {
44889  } // ~Inst_FLAT__FLAT_ATOMIC_SUB
44890 
44891  // --- description from .arch file ---
44892  // 32b:
44893  // tmp = MEM[ADDR];
44894  // MEM[ADDR] -= DATA;
44895  // RETURN_DATA = tmp.
44896  void
44898  {
44900  } // execute
44901  // --- Inst_FLAT__FLAT_ATOMIC_SMIN class methods ---
44902 
44904  : Inst_FLAT(iFmt, "flat_atomic_smin")
44905  {
44906  setFlag(AtomicMin);
44907  if (instData.GLC) {
44908  setFlag(AtomicReturn);
44909  } else {
44910  setFlag(AtomicNoReturn);
44911  }
44912  setFlag(MemoryRef);
44913  } // Inst_FLAT__FLAT_ATOMIC_SMIN
44914 
44916  {
44917  } // ~Inst_FLAT__FLAT_ATOMIC_SMIN
44918 
44919  // --- description from .arch file ---
44920  // 32b:
44921  // tmp = MEM[ADDR];
44922  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
44923  // RETURN_DATA = tmp.
44924  void
44926  {
44927  Wavefront *wf = gpuDynInst->wavefront();
44928 
44929  if (gpuDynInst->exec_mask.none()) {
44930  wf->decVMemInstsIssued();
44931  wf->decLGKMInstsIssued();
44932  return;
44933  }
44934 
44935  gpuDynInst->execUnitId = wf->execUnitId;
44936  gpuDynInst->latency.init(gpuDynInst->computeUnit());
44937  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
44938 
44939  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
44940 
44941  data.read();
44942 
44943  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
44944 
44945  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44946  if (gpuDynInst->exec_mask[lane]) {
44947  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
44948  = data[lane];
44949  }
44950  }
44951 
44952  issueRequestHelper(gpuDynInst);
44953  } // execute
44954 
44955  void
44957  {
44958  initAtomicAccess<VecElemU32>(gpuDynInst);
44959  } // initiateAcc
44960 
44961  void
44963  {
44964  if (isAtomicRet()) {
44965  VecOperandU32 vdst(gpuDynInst, extData.VDST);
44966 
44967  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
44968  if (gpuDynInst->exec_mask[lane]) {
44969  vdst[lane] = (reinterpret_cast<VecElemU32*>(
44970  gpuDynInst->d_data))[lane];
44971  }
44972  }
44973 
44974  vdst.write();
44975  }
44976  } // completeAcc
44977  // --- Inst_FLAT__FLAT_ATOMIC_UMIN class methods ---
44978 
44980  : Inst_FLAT(iFmt, "flat_atomic_umin")
44981  {
44982  setFlag(AtomicMin);
44983  if (instData.GLC) {
44984  setFlag(AtomicReturn);
44985  } else {
44986  setFlag(AtomicNoReturn);
44987  }
44988  setFlag(MemoryRef);
44989  } // Inst_FLAT__FLAT_ATOMIC_UMIN
44990 
44992  {
44993  } // ~Inst_FLAT__FLAT_ATOMIC_UMIN
44994 
44995  // --- description from .arch file ---
44996  // 32b:
44997  // tmp = MEM[ADDR];
44998  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
44999  // RETURN_DATA = tmp.
45000  void
45002  {
45004  } // execute
45005  // --- Inst_FLAT__FLAT_ATOMIC_SMAX class methods ---
45006 
45008  : Inst_FLAT(iFmt, "flat_atomic_smax")
45009  {
45010  setFlag(AtomicMax);
45011  if (instData.GLC) {
45012  setFlag(AtomicReturn);
45013  } else {
45014  setFlag(AtomicNoReturn);
45015  }
45016  setFlag(MemoryRef);
45017  } // Inst_FLAT__FLAT_ATOMIC_SMAX
45018 
45020  {
45021  } // ~Inst_FLAT__FLAT_ATOMIC_SMAX
45022 
45023  // --- description from .arch file ---
45024  // 32b:
45025  // tmp = MEM[ADDR];
45026  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
45027  // RETURN_DATA = tmp.
45028  void
45030  {
45031  Wavefront *wf = gpuDynInst->wavefront();
45032 
45033  if (gpuDynInst->exec_mask.none()) {
45034  wf->decVMemInstsIssued();
45035  wf->decLGKMInstsIssued();
45036  return;
45037  }
45038 
45039  gpuDynInst->execUnitId = wf->execUnitId;
45040  gpuDynInst->latency.init(gpuDynInst->computeUnit());
45041  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
45042 
45043  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
45044 
45045  data.read();
45046 
45047  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
45048 
45049  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
45050  if (gpuDynInst->exec_mask[lane]) {
45051  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
45052  = data[lane];
45053  }
45054  }
45055 
45056  issueRequestHelper(gpuDynInst);
45057  } // execute
45058 
45059  void
45061  {
45062  initAtomicAccess<VecElemU32>(gpuDynInst);
45063  } // initiateAcc
45064 
45065  void
45067  {
45068  if (isAtomicRet()) {
45069  VecOperandU32 vdst(gpuDynInst, extData.VDST);
45070 
45071  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
45072  if (gpuDynInst->exec_mask[lane]) {
45073  vdst[lane] = (reinterpret_cast<VecElemU32*>(
45074  gpuDynInst->d_data))[lane];
45075  }
45076  }
45077 
45078  vdst.write();
45079  }
45080  } // completeAcc
45081  // --- Inst_FLAT__FLAT_ATOMIC_UMAX class methods ---
45082 
45084  : Inst_FLAT(iFmt, "flat_atomic_umax")
45085  {
45086  setFlag(AtomicMax);
45087  if (instData.GLC) {
45088  setFlag(AtomicReturn);
45089  } else {
45090  setFlag(AtomicNoReturn);
45091  }
45092  setFlag(MemoryRef);
45093  } // Inst_FLAT__FLAT_ATOMIC_UMAX
45094 
45096  {
45097  } // ~Inst_FLAT__FLAT_ATOMIC_UMAX
45098 
45099  // --- description from .arch file ---
45100  // 32b:
45101  // tmp = MEM[ADDR];
45102  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
45103  // RETURN_DATA = tmp.
45104  void
45106  {
45108  } // execute
45109  // --- Inst_FLAT__FLAT_ATOMIC_AND class methods ---
45110 
45112  : Inst_FLAT(iFmt, "flat_atomic_and")
45113  {
45114  setFlag(AtomicAnd);
45115  if (instData.GLC) {
45116  setFlag(AtomicReturn);
45117  } else {
45118  setFlag(AtomicNoReturn);
45119  }
45120  setFlag(MemoryRef);
45121  } // Inst_FLAT__FLAT_ATOMIC_AND
45122 
45124  {
45125  } // ~Inst_FLAT__FLAT_ATOMIC_AND
45126 
45127  // --- description from .arch file ---
45128  // 32b:
45129  // tmp = MEM[ADDR];
45130  // MEM[ADDR] &= DATA;
45131  // RETURN_DATA = tmp.
45132  void
45134  {
45136  } // execute
45137  // --- Inst_FLAT__FLAT_ATOMIC_OR class methods ---
45138 
45140  : Inst_FLAT(iFmt, "flat_atomic_or")
45141  {
45142  setFlag(AtomicOr);
45143  if (instData.GLC) {
45144  setFlag(AtomicReturn);
45145  } else {
45146  setFlag(AtomicNoReturn);
45147  }
45148  setFlag(MemoryRef);
45149  } // Inst_FLAT__FLAT_ATOMIC_OR
45150 
45152  {
45153  } // ~Inst_FLAT__FLAT_ATOMIC_OR
45154 
45155  // --- description from .arch file ---
45156  // 32b:
45157  // tmp = MEM[ADDR];
45158  // MEM[ADDR] |= DATA;
45159  // RETURN_DATA = tmp.
45160  void
45162  {
45163  Wavefront *wf = gpuDynInst->wavefront();
45164 
45165  if (gpuDynInst->exec_mask.none()) {
45166  wf->decVMemInstsIssued();
45167  wf->decLGKMInstsIssued();
45168  return;
45169  }
45170 
45171  gpuDynInst->execUnitId = wf->execUnitId;
45172  gpuDynInst->latency.init(gpuDynInst->computeUnit());
45173  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
45174 
45175  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
45176 
45177  data.read();
45178 
45179  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
45180 
45181  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
45182  if (gpuDynInst->exec_mask[lane]) {
45183  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
45184  = data[lane];
45185  }
45186  }
45187 
45188  issueRequestHelper(gpuDynInst);
45189  } // execute
45190 
45191  void
45193  {
45194  initAtomicAccess<VecElemU32>(gpuDynInst);
45195  } // initiateAcc
45196 
45197  void
45199  {
45200  if (isAtomicRet()) {
45201  VecOperandU32 vdst(gpuDynInst, extData.VDST);
45202 
45203  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
45204  if (gpuDynInst->exec_mask[lane]) {
45205  vdst[lane] = (reinterpret_cast<VecElemU32*>(
45206  gpuDynInst->d_data))[lane];
45207  }
45208  }
45209 
45210  vdst.write();
45211  }
45212  } // completeAcc
45213 
45214  // --- Inst_FLAT__FLAT_ATOMIC_XOR class methods ---
45215 
45217  : Inst_FLAT(iFmt, "flat_atomic_xor")
45218  {
45219  setFlag(AtomicXor);
45220  if (instData.GLC) {
45221  setFlag(AtomicReturn);
45222  } else {
45223  setFlag(AtomicNoReturn);
45224  }
45225  setFlag(MemoryRef);
45226  } // Inst_FLAT__FLAT_ATOMIC_XOR
45227 
45229  {
45230  } // ~Inst_FLAT__FLAT_ATOMIC_XOR
45231 
45232  // --- description from .arch file ---
45233  // 32b:
45234  // tmp = MEM[ADDR];
45235  // MEM[ADDR] ^= DATA;
45236  // RETURN_DATA = tmp.
45237  void
45239  {
45241  } // execute
45242  // --- Inst_FLAT__FLAT_ATOMIC_INC class methods ---
45243 
45245  : Inst_FLAT(iFmt, "flat_atomic_inc")
45246  {
45247  setFlag(AtomicInc);
45248  if (instData.GLC) {
45249  setFlag(AtomicReturn);
45250  } else {
45251  setFlag(AtomicNoReturn);
45252  }
45253  setFlag(MemoryRef);
45254  } // Inst_FLAT__FLAT_ATOMIC_INC
45255 
45257  {
45258  } // ~Inst_FLAT__FLAT_ATOMIC_INC
45259 
45260  // --- description from .arch file ---
45261  // 32b:
45262  // tmp = MEM[ADDR];
45263  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
45264  // RETURN_DATA = tmp.
45265  void
45267  {
45269  } // execute
45270  // --- Inst_FLAT__FLAT_ATOMIC_DEC class methods ---
45271 
45273  : Inst_FLAT(iFmt, "flat_atomic_dec")
45274  {
45275  setFlag(AtomicDec);
45276  if (instData.GLC) {
45277  setFlag(AtomicReturn);
45278  } else {
45279  setFlag(AtomicNoReturn);
45280  }
45281  setFlag(MemoryRef);
45282  } // Inst_FLAT__FLAT_ATOMIC_DEC
45283 
45285  {
45286  } // ~Inst_FLAT__FLAT_ATOMIC_DEC
45287 
45288  // --- description from .arch file ---
45289  // 32b:
45290  // tmp = MEM[ADDR];
45291  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
45292  // (unsigned compare); RETURN_DATA = tmp.
45293  void
45295  {
45297  } // execute
45298  // --- Inst_FLAT__FLAT_ATOMIC_SWAP_X2 class methods ---
45299 
45301  InFmt_FLAT *iFmt)
45302  : Inst_FLAT(iFmt, "flat_atomic_swap_x2")
45303  {
45304  setFlag(AtomicExch);
45305  if (instData.GLC) {
45306  setFlag(AtomicReturn);
45307  } else {
45308  setFlag(AtomicNoReturn);
45309  }
45310  setFlag(MemoryRef);
45311  } // Inst_FLAT__FLAT_ATOMIC_SWAP_X2
45312 
45314  {
45315  } // ~Inst_FLAT__FLAT_ATOMIC_SWAP_X2
45316 
45317  // --- description from .arch file ---
45318  // 64b:
45319  // tmp = MEM[ADDR];
45320  // MEM[ADDR] = DATA[0:1];
45321  // RETURN_DATA[0:1] = tmp.
45322  void
45324  {
45326  } // execute
45327  // --- Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2 class methods ---
45328 
45330  InFmt_FLAT *iFmt)
45331  : Inst_FLAT(iFmt, "flat_atomic_cmpswap_x2")
45332  {
45333  setFlag(AtomicCAS);
45334  if (instData.GLC) {
45335  setFlag(AtomicReturn);
45336  } else {
45337  setFlag(AtomicNoReturn);
45338  }
45339  setFlag(MemoryRef);
45340  } // Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
45341 
45343  {
45344  } // ~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
45345 
45346  // --- description from .arch file ---
45347  // 64b:
45348  // tmp = MEM[ADDR];
45349  // src = DATA[0:1];
45350  // cmp = DATA[2:3];
45351  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
45352  // RETURN_DATA[0:1] = tmp.
45353  void
45355  {
45356  Wavefront *wf = gpuDynInst->wavefront();
45357 
45358  if (gpuDynInst->exec_mask.none() && isFlat()) {
45359  wf->decVMemInstsIssued();
45360  wf->decLGKMInstsIssued();
45361  return;
45362  }
45363 
45364  gpuDynInst->execUnitId = wf->execUnitId;
45365  gpuDynInst->latency.init(gpuDynInst->computeUnit());
45366  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
45367 
45368  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
45369  ConstVecOperandU64 cmp(gpuDynInst, extData.DATA + 2);
45370 
45371  data.read();
45372  cmp.read();
45373 
45374  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
45375 
45376  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
45377  if (gpuDynInst->exec_mask[lane]) {
45378  (reinterpret_cast<VecElemU64*>(gpuDynInst->x_data))[lane]
45379  = data[lane];
45380  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
45381  = cmp[lane];
45382  }
45383  }
45384 
45385  issueRequestHelper(gpuDynInst);
45386  } // execute
45387 
45388  void
45390  {
45391  initAtomicAccess<VecElemU64>(gpuDynInst);
45392  } // initiateAcc
45393 
45394  void
45396  {
45397  if (isAtomicRet()) {
45398  VecOperandU64 vdst(gpuDynInst, extData.VDST);
45399 
45400  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
45401  if (gpuDynInst->exec_mask[lane]) {
45402  vdst[lane] = (reinterpret_cast<VecElemU64*>(
45403  gpuDynInst->d_data))[lane];
45404  }
45405  }
45406 
45407  vdst.write();
45408  }
45409  } // completeAcc
45410  // --- Inst_FLAT__FLAT_ATOMIC_ADD_X2 class methods ---
45411 
45413  InFmt_FLAT *iFmt)
45414  : Inst_FLAT(iFmt, "flat_atomic_add_x2")
45415  {
45416  setFlag(AtomicAdd);
45417  if (instData.GLC) {
45418  setFlag(AtomicReturn);
45419  } else {
45420  setFlag(AtomicNoReturn);
45421  }
45422  setFlag(MemoryRef);
45423  } // Inst_FLAT__FLAT_ATOMIC_ADD_X2
45424 
45426  {
45427  } // ~Inst_FLAT__FLAT_ATOMIC_ADD_X2
45428 
45429  // --- description from .arch file ---
45430  // 64b:
45431  // tmp = MEM[ADDR];
45432  // MEM[ADDR] += DATA[0:1];
45433  // RETURN_DATA[0:1] = tmp.
45434  void
45436  {
45437  Wavefront *wf = gpuDynInst->wavefront();
45438 
45439  if (gpuDynInst->exec_mask.none() && isFlat()) {
45440  wf->decVMemInstsIssued();
45441  wf->decLGKMInstsIssued();
45442  return;
45443  }
45444 
45445  gpuDynInst->execUnitId = wf->execUnitId;
45446  gpuDynInst->latency.init(gpuDynInst->computeUnit());
45447  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
45448 
45449  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
45450 
45451  data.read();
45452 
45453  calcAddr(gpuDynInst, extData.ADDR, extData.SADDR, instData.OFFSET);
45454 
45455  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
45456  if (gpuDynInst->exec_mask[lane]) {
45457  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
45458  = data[lane];
45459  }
45460  }
45461 
45462  issueRequestHelper(gpuDynInst);
45463  } // execute
45464 
45465  void
45467  {
45468  initAtomicAccess<VecElemU64>(gpuDynInst);
45469  } // initiateAcc
45470 
45471  void
45473  {
45474  if (isAtomicRet()) {
45475  VecOperandU64 vdst(gpuDynInst, extData.VDST);
45476 
45477 
45478  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
45479  if (gpuDynInst->exec_mask[lane]) {
45480  vdst[lane] = (reinterpret_cast<VecElemU64*>(
45481  gpuDynInst->d_data))[lane];
45482  }
45483  }
45484 
45485  vdst.write();
45486  }
45487  } // completeAcc
45488  // --- Inst_FLAT__FLAT_ATOMIC_SUB_X2 class methods ---
45489 
45491  InFmt_FLAT *iFmt)
45492  : Inst_FLAT(iFmt, "flat_atomic_sub_x2")
45493  {
45494  setFlag(AtomicSub);
45495  if (instData.GLC) {
45496  setFlag(AtomicReturn);
45497  } else {
45498  setFlag(AtomicNoReturn);
45499  }
45500  setFlag(MemoryRef);
45501  } // Inst_FLAT__FLAT_ATOMIC_SUB_X2
45502 
45504  {
45505  } // ~Inst_FLAT__FLAT_ATOMIC_SUB_X2
45506 
45507  // --- description from .arch file ---
45508  // 64b:
45509  // tmp = MEM[ADDR];
45510  // MEM[ADDR] -= DATA[0:1];
45511  // RETURN_DATA[0:1] = tmp.
45512  void
45514  {
45516  } // execute
45517  // --- Inst_FLAT__FLAT_ATOMIC_SMIN_X2 class methods ---
45518 
45520  InFmt_FLAT *iFmt)
45521  : Inst_FLAT(iFmt, "flat_atomic_smin_x2")
45522  {
45523  setFlag(AtomicMin);
45524  if (instData.GLC) {
45525  setFlag(AtomicReturn);
45526  } else {
45527  setFlag(AtomicNoReturn);
45528  }
45529  setFlag(MemoryRef);
45530  } // Inst_FLAT__FLAT_ATOMIC_SMIN_X2
45531 
45533  {
45534  } // ~Inst_FLAT__FLAT_ATOMIC_SMIN_X2
45535 
45536  // --- description from .arch file ---
45537  // 64b:
45538  // tmp = MEM[ADDR];
45539  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
45540  // RETURN_DATA[0:1] = tmp.
45541  void
45543  {
45545  } // execute
45546  // --- Inst_FLAT__FLAT_ATOMIC_UMIN_X2 class methods ---
45547 
45549  InFmt_FLAT *iFmt)
45550  : Inst_FLAT(iFmt, "flat_atomic_umin_x2")
45551  {
45552  setFlag(AtomicMin);
45553  if (instData.GLC) {
45554  setFlag(AtomicReturn);
45555  } else {
45556  setFlag(AtomicNoReturn);
45557  }
45558  setFlag(MemoryRef);
45559  } // Inst_FLAT__FLAT_ATOMIC_UMIN_X2
45560 
45562  {
45563  } // ~Inst_FLAT__FLAT_ATOMIC_UMIN_X2
45564 
45565  // --- description from .arch file ---
45566  // 64b:
45567  // tmp = MEM[ADDR];
45568  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
45569  // RETURN_DATA[0:1] = tmp.
45570  void
45572  {
45574  } // execute
45575  // --- Inst_FLAT__FLAT_ATOMIC_SMAX_X2 class methods ---
45576 
45578  InFmt_FLAT *iFmt)
45579  : Inst_FLAT(iFmt, "flat_atomic_smax_x2")
45580  {
45581  setFlag(AtomicMax);
45582  if (instData.GLC) {
45583  setFlag(AtomicReturn);
45584  } else {
45585  setFlag(AtomicNoReturn);
45586  }
45587  setFlag(MemoryRef);
45588  } // Inst_FLAT__FLAT_ATOMIC_SMAX_X2
45589 
45591  {
45592  } // ~Inst_FLAT__FLAT_ATOMIC_SMAX_X2
45593 
45594  // --- description from .arch file ---
45595  // 64b:
45596  // tmp = MEM[ADDR];
45597  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
45598  // RETURN_DATA[0:1] = tmp.
45599  void
45601  {
45603  } // execute
45604  // --- Inst_FLAT__FLAT_ATOMIC_UMAX_X2 class methods ---
45605 
45607  InFmt_FLAT *iFmt)
45608  : Inst_FLAT(iFmt, "flat_atomic_umax_x2")
45609  {
45610  setFlag(AtomicMax);
45611  if (instData.GLC) {
45612  setFlag(AtomicReturn);
45613  } else {
45614  setFlag(AtomicNoReturn);
45615  }
45616  setFlag(MemoryRef);
45617  } // Inst_FLAT__FLAT_ATOMIC_UMAX_X2
45618 
45620  {
45621  } // ~Inst_FLAT__FLAT_ATOMIC_UMAX_X2
45622 
45623  // --- description from .arch file ---
45624  // 64b:
45625  // tmp = MEM[ADDR];
45626  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
45627  // RETURN_DATA[0:1] = tmp.
45628  void
45630  {
45632  } // execute
45633  // --- Inst_FLAT__FLAT_ATOMIC_AND_X2 class methods ---
45634 
45636  InFmt_FLAT *iFmt)
45637  : Inst_FLAT(iFmt, "flat_atomic_and_x2")
45638  {
45639  setFlag(AtomicAnd);
45640  if (instData.GLC) {
45641  setFlag(AtomicReturn);
45642  } else {
45643  setFlag(AtomicNoReturn);
45644  }
45645  setFlag(MemoryRef);
45646  } // Inst_FLAT__FLAT_ATOMIC_AND_X2
45647 
45649  {
45650  } // ~Inst_FLAT__FLAT_ATOMIC_AND_X2
45651 
45652  // --- description from .arch file ---
45653  // 64b:
45654  // tmp = MEM[ADDR];
45655  // MEM[ADDR] &= DATA[0:1];
45656  // RETURN_DATA[0:1] = tmp.
45657  void
45659  {
45661  } // execute
45662  // --- Inst_FLAT__FLAT_ATOMIC_OR_X2 class methods ---
45663 
45665  InFmt_FLAT *iFmt)
45666  : Inst_FLAT(iFmt, "flat_atomic_or_x2")
45667  {
45668  setFlag(AtomicOr);
45669  if (instData.GLC) {
45670  setFlag(AtomicReturn);
45671  } else {
45672  setFlag(AtomicNoReturn);
45673  }
45674  setFlag(MemoryRef);
45675  } // Inst_FLAT__FLAT_ATOMIC_OR_X2
45676 
45678  {
45679  } // ~Inst_FLAT__FLAT_ATOMIC_OR_X2
45680 
45681  // --- description from .arch file ---
45682  // 64b:
45683  // tmp = MEM[ADDR];
45684  // MEM[ADDR] |= DATA[0:1];
45685  // RETURN_DATA[0:1] = tmp.
45686  void
45688  {
45690  } // execute
45691  // --- Inst_FLAT__FLAT_ATOMIC_XOR_X2 class methods ---
45692 
45694  InFmt_FLAT *iFmt)
45695  : Inst_FLAT(iFmt, "flat_atomic_xor_x2")
45696  {
45697  setFlag(AtomicXor);
45698  if (instData.GLC) {
45699  setFlag(AtomicReturn);
45700  } else {
45701  setFlag(AtomicNoReturn);
45702  }
45703  setFlag(MemoryRef);
45704  } // Inst_FLAT__FLAT_ATOMIC_XOR_X2
45705 
45707  {
45708  } // ~Inst_FLAT__FLAT_ATOMIC_XOR_X2
45709 
45710  // --- description from .arch file ---
45711  // 64b:
45712  // tmp = MEM[ADDR];
45713  // MEM[ADDR] ^= DATA[0:1];
45714  // RETURN_DATA[0:1] = tmp.
45715  void
45717  {
45719  } // execute
45720  // --- Inst_FLAT__FLAT_ATOMIC_INC_X2 class methods ---
45721 
45723  InFmt_FLAT *iFmt)
45724  : Inst_FLAT(iFmt, "flat_atomic_inc_x2")
45725  {
45726  setFlag(AtomicInc);
45727  if (instData.GLC) {
45728  setFlag(AtomicReturn);
45729  } else {
45730  setFlag(AtomicNoReturn);
45731  }
45732  setFlag(MemoryRef);
45733  } // Inst_FLAT__FLAT_ATOMIC_INC_X2
45734 
45736  {
45737  } // ~Inst_FLAT__FLAT_ATOMIC_INC_X2
45738 
45739  // --- description from .arch file ---
45740  // 64b:
45741  // tmp = MEM[ADDR];
45742  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
45743  // RETURN_DATA[0:1] = tmp.
45744  void
45746  {
45748  } // execute
45749  // --- Inst_FLAT__FLAT_ATOMIC_DEC_X2 class methods ---
45750 
45752  InFmt_FLAT *iFmt)
45753  : Inst_FLAT(iFmt, "flat_atomic_dec_x2")
45754  {
45755  setFlag(AtomicDec);
45756  if (instData.GLC) {
45757  setFlag(AtomicReturn);
45758  } else {
45759  setFlag(AtomicNoReturn);
45760  }
45761  setFlag(MemoryRef);
45762  } // Inst_FLAT__FLAT_ATOMIC_DEC_X2
45763 
45765  {
45766  } // ~Inst_FLAT__FLAT_ATOMIC_DEC_X2
45767 
45768  // --- description from .arch file ---
45769  // 64b:
45770  // tmp = MEM[ADDR];
45771  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
45772  // (unsigned compare);
45773  // RETURN_DATA[0:1] = tmp.
45774  void
45776  {
45778  } // execute
45779 } // namespace VegaISA
45780 } // namespace gem5
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42294
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U16::Inst_VOPC__V_CMP_GT_U16
Inst_VOPC__V_CMP_GT_U16(InFmt_VOPC *)
Definition: instructions.cc:14216
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24370
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F16::Inst_VOP3__V_CMP_NGT_F16
Inst_VOP3__V_CMP_NGT_F16(InFmt_VOP3A *)
Definition: instructions.cc:17820
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F64::~Inst_VOP3__V_CMPX_NLT_F64
~Inst_VOP3__V_CMPX_NLT_F64()
Definition: instructions.cc:21118
gem5::VegaISA::Inst_SOPK::extData
InstFormat extData
Definition: op_encodings.hh:109
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39082
gem5::VegaISA::Inst_VOP3__V_MUL_LEGACY_F32::Inst_VOP3__V_MUL_LEGACY_F32
Inst_VOP3__V_MUL_LEGACY_F32(InFmt_VOP3A *)
Definition: instructions.cc:25376
gem5::VegaISA::Inst_VOP1__V_NOT_B32::~Inst_VOP1__V_NOT_B32
~Inst_VOP1__V_NOT_B32()
Definition: instructions.cc:9600
gem5::VegaISA::Inst_VOP3__V_TRUNC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29993
gem5::VegaISA::Inst_VOP2__V_MIN_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7950
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11525
gem5::VegaISA::Inst_DS__DS_AND_SRC2_B32::Inst_DS__DS_AND_SRC2_B32
Inst_DS__DS_AND_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:37619
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE0::~Inst_VOP1__V_CVT_F32_UBYTE0
~Inst_VOP1__V_CVT_F32_UBYTE0()
Definition: instructions.cc:8707
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP()
Definition: instructions.cc:40555
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U32::Inst_VOP3__V_CMP_GT_U32
Inst_VOP3__V_CMP_GT_U32(InFmt_VOP3A *)
Definition: instructions.cc:22996
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_L::Inst_MIMG__IMAGE_GATHER4_C_L
Inst_MIMG__IMAGE_GATHER4_C_L(InFmt_MIMG *)
Definition: instructions.cc:43344
gem5::VegaISA::Inst_SOPK__S_CMPK_GE_U32::Inst_SOPK__S_CMPK_GE_U32
Inst_SOPK__S_CMPK_GE_U32(InFmt_SOPK *)
Definition: instructions.cc:1861
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U16::Inst_VOPC__V_CMPX_F_U16
Inst_VOPC__V_CMPX_F_U16(InFmt_VOPC *)
Definition: instructions.cc:14613
gem5::VegaISA::Inst_SOP2__S_OR_B32::Inst_SOP2__S_OR_B32
Inst_SOP2__S_OR_B32(InFmt_SOP2 *)
Definition: instructions.cc:511
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F32::~Inst_VOP1__V_FREXP_MANT_F32
~Inst_VOP1__V_FREXP_MANT_F32()
Definition: instructions.cc:9913
gem5::VegaISA::Inst_VOP3__V_MUL_HI_U32_U24::~Inst_VOP3__V_MUL_HI_U32_U24
~Inst_VOP3__V_MUL_HI_U32_U24()
Definition: instructions.cc:25719
gem5::VegaISA::Inst_DS__DS_SUB_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37458
gem5::VegaISA::Inst_VOP3__V_CVT_F32_F64::Inst_VOP3__V_CVT_F32_F64
Inst_VOP3__V_CVT_F32_F64(InFmt_VOP3A *)
Definition: instructions.cc:28046
gem5::VegaISA::Inst_VOP1__V_NOP::Inst_VOP1__V_NOP
Inst_VOP1__V_NOP(InFmt_VOP1 *)
Definition: instructions.cc:8130
gem5::VegaISA::Inst_VOP3__V_CVT_F64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27653
gem5::VegaISA::Inst_DS__DS_MAX_RTN_I64::Inst_DS__DS_MAX_RTN_I64
Inst_DS__DS_MAX_RTN_I64(InFmt_DS *)
Definition: instructions.cc:36893
gem5::VegaISA::Inst_SOP1__S_MOV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2209
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F64::~Inst_VOPC__V_CMPX_NLG_F64
~Inst_VOPC__V_CMPX_NLG_F64()
Definition: instructions.cc:13631
gem5::VegaISA::Inst_VOP3__V_CVT_PK_U8_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31562
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F32::Inst_VOPC__V_CMP_GE_F32
Inst_VOPC__V_CMP_GE_F32(InFmt_VOPC *)
Definition: instructions.cc:11815
gem5::VegaISA::Inst_VOP1__V_CVT_U32_F64::Inst_VOP1__V_CVT_U32_F64
Inst_VOP1__V_CVT_U32_F64(InFmt_VOP1 *)
Definition: instructions.cc:8828
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40627
gem5::VegaISA::Inst_SOP1__S_MOVRELS_B64::Inst_SOP1__S_MOVRELS_B64
Inst_SOP1__S_MOVRELS_B64(InFmt_SOP1 *)
Definition: instructions.cc:3444
gem5::VegaISA::Inst_VOP3__V_RSQ_F64::~Inst_VOP3__V_RSQ_F64
~Inst_VOP3__V_RSQ_F64()
Definition: instructions.cc:29032
gem5::VegaISA::Inst_SOP1__S_ABS_I32::~Inst_SOP1__S_ABS_I32
~Inst_SOP1__S_ABS_I32()
Definition: instructions.cc:3566
fatal
#define fatal(...)
This implements a cprintf based fatal() function.
Definition: logging.hh:200
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_USHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39360
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_B32::~Inst_DS__DS_CMPST_RTN_B32
~Inst_DS__DS_CMPST_RTN_B32()
Definition: instructions.cc:35296
gem5::VegaISA::Inst_VOPC__V_CMP_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11863
gem5::VegaISA::Inst_DS__DS_WRITE_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38307
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43737
gem5::VegaISA::Inst_SOP2__S_AND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:493
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F16::~Inst_VOPC__V_CMPX_O_F16
~Inst_VOPC__V_CMPX_O_F16()
Definition: instructions.cc:11432
gem5::VegaISA::REG_SCC
@ REG_SCC
Definition: gpu_registers.hh:128
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B::~Inst_MIMG__IMAGE_SAMPLE_B
~Inst_MIMG__IMAGE_SAMPLE_B()
Definition: instructions.cc:42667
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I16::Inst_VOP3__V_CMPX_F_I16
Inst_VOP3__V_CMPX_F_I16(InFmt_VOP3A *)
Definition: instructions.cc:21840
gem5::VegaISA::Inst_VOP3__V_LDEXP_F16::~Inst_VOP3__V_LDEXP_F16
~Inst_VOP3__V_LDEXP_F16()
Definition: instructions.cc:27392
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F64::Inst_VOP3__V_CMP_NEQ_F64
Inst_VOP3__V_CMP_NEQ_F64(InFmt_VOP3A *)
Definition: instructions.cc:20160
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_O::Inst_MIMG__IMAGE_GATHER4_C_B_O
Inst_MIMG__IMAGE_GATHER4_C_B_O(InFmt_MIMG *)
Definition: instructions.cc:43603
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F32::Inst_VOP3__V_CMP_LT_F32
Inst_VOP3__V_CMP_LT_F32(InFmt_VOP3A *)
Definition: instructions.cc:18336
gem5::VegaISA::Inst_DS__DS_RSUB_SRC2_U32::Inst_DS__DS_RSUB_SRC2_U32
Inst_DS__DS_RSUB_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:37464
gem5::Wavefront::vecReads
std::vector< int > vecReads
Definition: wavefront.hh:237
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I64::~Inst_VOP3__V_CMPX_GE_I64
~Inst_VOP3__V_CMPX_GE_I64()
Definition: instructions.cc:24741
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41865
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11376
gem5::VegaISA::Inst_SOP2__S_RFE_RESTORE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1496
gem5::GPUStaticInst::isDPPInst
bool isDPPInst() const
Definition: gpu_static_inst.hh:116
gem5::Shader::prepareFlush
void prepareFlush(GPUDynInstPtr gpuDynInst)
dispatcher/shader arranges flush requests to the CUs
Definition: shader.cc:222
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW()
Definition: instructions.cc:38995
gem5::VegaISA::Inst_DS__DS_OR_B32::Inst_DS__DS_OR_B32
Inst_DS__DS_OR_B32(InFmt_DS *)
Definition: instructions.cc:34277
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13214
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY(InFmt_MUBUF *)
Definition: instructions.cc:38916
gem5::VegaISA::Inst_VOP3__V_AND_B32::Inst_VOP3__V_AND_B32
Inst_VOP3__V_AND_B32(InFmt_VOP3A *)
Definition: instructions.cc:26176
gem5::VegaISA::Inst_MUBUF
Definition: op_encodings.hh:639
gem5::VegaISA::Inst_VOP2__V_MIN_U16::~Inst_VOP2__V_MIN_U16
~Inst_VOP2__V_MIN_U16()
Definition: instructions.cc:7910
gem5::VegaISA::Inst_DS__DS_INC_U32::~Inst_DS__DS_INC_U32
~Inst_DS__DS_INC_U32()
Definition: instructions.cc:34135
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F64::Inst_VOPC__V_CMPX_O_F64
Inst_VOPC__V_CMPX_O_F64(InFmt_VOPC *)
Definition: instructions.cc:13511
gem5::VegaISA::Inst_VOP2__V_MAX_F16::Inst_VOP2__V_MAX_F16
Inst_VOP2__V_MAX_F16(InFmt_VOP2 *)
Definition: instructions.cc:7794
gem5::VegaISA::Inst_VOP2__V_ASHRREV_I32::Inst_VOP2__V_ASHRREV_I32
Inst_VOP2__V_ASHRREV_I32(InFmt_VOP2 *)
Definition: instructions.cc:6671
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41885
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18942
gem5::VegaISA::Inst_VOP1__V_FFBH_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9736
gem5::VegaISA::Inst_VOP3__V_SQRT_F64::Inst_VOP3__V_SQRT_F64
Inst_VOP3__V_SQRT_F64(InFmt_VOP3A *)
Definition: instructions.cc:29115
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U64::~Inst_VOPC__V_CMPX_T_U64
~Inst_VOPC__V_CMPX_T_U64()
Definition: instructions.cc:16956
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::~Inst_MUBUF__BUFFER_LOAD_SBYTE
~Inst_MUBUF__BUFFER_LOAD_SBYTE()
Definition: instructions.cc:39262
gem5::VegaISA::Inst_VOP3__V_SUBREV_CO_U32::~Inst_VOP3__V_SUBREV_CO_U32
~Inst_VOP3__V_SUBREV_CO_U32()
Definition: instructions.cc:26516
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_U64::Inst_DS__DS_MAX_SRC2_U64
Inst_DS__DS_MAX_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:38200
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14692
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12870
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41050
gem5::VegaISA::Inst_DS__DS_OR_SRC2_B64::~Inst_DS__DS_OR_SRC2_B64
~Inst_DS__DS_OR_SRC2_B64()
Definition: instructions.cc:38249
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I16::~Inst_VOPC__V_CMPX_LT_I16
~Inst_VOPC__V_CMPX_LT_I16()
Definition: instructions.cc:14380
gem5::VegaISA::Inst_VOP1__V_FFBL_B32::Inst_VOP1__V_FFBL_B32
Inst_VOP1__V_FFBL_B32(InFmt_VOP1 *)
Definition: instructions.cc:9690
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44858
gem5::VegaISA::Inst_VOP3__V_EXP_LEGACY_F32::Inst_VOP3__V_EXP_LEGACY_F32
Inst_VOP3__V_EXP_LEGACY_F32(InFmt_VOP3A *)
Definition: instructions.cc:30081
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I16::Inst_VOP3__V_CMP_EQ_I16
Inst_VOP3__V_CMP_EQ_I16(InFmt_VOP3A *)
Definition: instructions.cc:21272
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17081
gem5::VegaISA::Inst_DS__DS_READ2_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35550
gem5::VegaISA::Inst_VOP3__V_NOP::Inst_VOP3__V_NOP
Inst_VOP3__V_NOP(InFmt_VOP3A *)
Definition: instructions.cc:27534
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I64::Inst_VOPC__V_CMPX_GT_I64
Inst_VOPC__V_CMPX_GT_I64(InFmt_VOPC *)
Definition: instructions.cc:16574
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F64::Inst_VOP3__V_CMP_LG_F64
Inst_VOP3__V_CMP_LG_F64(InFmt_VOP3A *)
Definition: instructions.cc:19702
gem5::VegaISA::Inst_DS__DS_AND_B32::~Inst_DS__DS_AND_B32
~Inst_DS__DS_AND_B32()
Definition: instructions.cc:34261
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_OR_X2::Inst_FLAT__FLAT_ATOMIC_OR_X2
Inst_FLAT__FLAT_ATOMIC_OR_X2(InFmt_FLAT *)
Definition: instructions.cc:45664
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMIN::~Inst_FLAT__FLAT_ATOMIC_UMIN
~Inst_FLAT__FLAT_ATOMIC_UMIN()
Definition: instructions.cc:44991
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22602
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I16::Inst_VOPC__V_CMP_LE_I16
Inst_VOPC__V_CMP_LE_I16(InFmt_VOPC *)
Definition: instructions.cc:13929
gem5::VegaISA::Inst_VOP3__V_CMP_T_U16::Inst_VOP3__V_CMP_T_U16
Inst_VOP3__V_CMP_T_U16(InFmt_VOP3A *)
Definition: instructions.cc:21812
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F32::~Inst_VOP3__V_CMP_CLASS_F32
~Inst_VOP3__V_CMP_CLASS_F32()
Definition: instructions.cc:17062
gem5::VegaISA::Inst_SOP1__S_BITSET0_B64::~Inst_SOP1__S_BITSET0_B64
~Inst_SOP1__S_BITSET0_B64()
Definition: instructions.cc:2893
gem5::VegaISA::Inst_DS__DS_AND_B32::Inst_DS__DS_AND_B32
Inst_DS__DS_AND_B32(InFmt_DS *)
Definition: instructions.cc:34256
gem5::VegaISA::Inst_SOP2__S_LSHL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:973
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_I64::Inst_SOP1__S_FLBIT_I32_I64
Inst_SOP1__S_FLBIT_I32_I64(InFmt_SOP1 *)
Definition: instructions.cc:2778
gem5::VegaISA::Inst_VOP3__V_RCP_IFLAG_F32::~Inst_VOP3__V_RCP_IFLAG_F32
~Inst_VOP3__V_RCP_IFLAG_F32()
Definition: instructions.cc:28898
gem5::VegaISA::Inst_DS__DS_READ_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37219
gem5::VegaISA::Inst_VOP3__V_FMA_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30623
gem5::VegaISA::Inst_VOP2__V_MADMK_F32::Inst_VOP2__V_MADMK_F32
Inst_VOP2__V_MADMK_F32(InFmt_VOP2 *)
Definition: instructions.cc:7014
gem5::VegaISA::Inst_VOPC__V_CMP_U_F32::~Inst_VOPC__V_CMP_U_F32
~Inst_VOPC__V_CMP_U_F32()
Definition: instructions.cc:11891
gem5::VegaISA::Inst_VOP1__V_FFBH_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9672
gem5::VegaISA::Inst_VOP2__V_SUBREV_F32::Inst_VOP2__V_SUBREV_F32
Inst_VOP2__V_SUBREV_F32(InFmt_VOP2 *)
Definition: instructions.cc:6152
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F16::Inst_VOP3__V_FREXP_MANT_F16
Inst_VOP3__V_FREXP_MANT_F16(InFmt_VOP3A *)
Definition: instructions.cc:29882
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U64::Inst_VOPC__V_CMPX_GT_U64
Inst_VOPC__V_CMPX_GT_U64(InFmt_VOPC *)
Definition: instructions.cc:16844
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21932
gem5::VegaISA::Inst_VOP1__V_LOG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10137
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21694
gem5::VegaISA::Inst_DS__DS_READ_B96::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38524
gem5::VegaISA::Inst_VOP3__V_XOR_B32::~Inst_VOP3__V_XOR_B32
~Inst_VOP3__V_XOR_B32()
Definition: instructions.cc:26316
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19168
gem5::VegaISA::Inst_SOP1__S_FF1_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2680
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::~Inst_MUBUF__BUFFER_STORE_LDS_DWORD
~Inst_MUBUF__BUFFER_STORE_LDS_DWORD()
Definition: instructions.cc:40390
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_USHORT::~Inst_FLAT__FLAT_LOAD_USHORT
~Inst_FLAT__FLAT_LOAD_USHORT()
Definition: instructions.cc:43955
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U32::~Inst_VOP3__V_CMPX_LT_U32
~Inst_VOP3__V_CMPX_LT_U32()
Definition: instructions.cc:23533
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I64::~Inst_VOPC__V_CMP_GT_I64
~Inst_VOPC__V_CMP_GT_I64()
Definition: instructions.cc:16064
gem5::VegaISA::Inst_VOP1__V_SIN_F16::~Inst_VOP1__V_SIN_F16
~Inst_VOP1__V_SIN_F16()
Definition: instructions.cc:10332
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F32::Inst_VOP3__V_CMPX_GE_F32
Inst_VOP3__V_CMPX_GE_F32(InFmt_VOP3A *)
Definition: instructions.cc:19075
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER::Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER(InFmt_SOPP *)
Definition: instructions.cc:4932
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14041
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_CL_O::Inst_MIMG__IMAGE_SAMPLE_D_CL_O
Inst_MIMG__IMAGE_SAMPLE_D_CL_O(InFmt_MIMG *)
Definition: instructions.cc:42933
gem5::VegaISA::Inst_SOPP__S_SETKILL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4646
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F32::Inst_VOP3__V_CMP_LE_F32
Inst_VOP3__V_CMP_LE_F32(InFmt_VOP3A *)
Definition: instructions.cc:18406
gem5::VegaISA::Inst_VOP2__V_MAX_I32::~Inst_VOP2__V_MAX_I32
~Inst_VOP2__V_MAX_I32()
Definition: instructions.cc:6543
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I64::Inst_VOP3__V_CMPX_EQ_I64
Inst_VOP3__V_CMPX_EQ_I64(InFmt_VOP3A *)
Definition: instructions.cc:24549
gem5::VegaISA::Inst_VOP1__V_BFREV_B32::~Inst_VOP1__V_BFREV_B32
~Inst_VOP1__V_BFREV_B32()
Definition: instructions.cc:9632
gem5::VegaISA::Inst_VOP3__V_CVT_PKNORM_I16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33934
gem5::VegaISA::InFmt_SMEM
Definition: gpu_decoder.hh:1733
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I64::Inst_VOP3__V_CMPX_GT_I64
Inst_VOP3__V_CMPX_GT_I64(InFmt_VOP3A *)
Definition: instructions.cc:24641
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35311
gem5::VegaISA::Inst_VOP3__V_SUBREV_U32::~Inst_VOP3__V_SUBREV_U32
~Inst_VOP3__V_SUBREV_U32()
Definition: instructions.cc:27497
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22116
gem5::VegaISA::Inst_VOP3__V_CMP_T_U64::~Inst_VOP3__V_CMP_T_U64
~Inst_VOP3__V_CMP_T_U64()
Definition: instructions.cc:24450
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F64::~Inst_VOPC__V_CMP_NGT_F64
~Inst_VOPC__V_CMP_NGT_F64()
Definition: instructions.cc:13105
gem5::VegaISA::Inst_VOP3__V_MUL_HI_U32_U24::Inst_VOP3__V_MUL_HI_U32_U24
Inst_VOP3__V_MUL_HI_U32_U24(InFmt_VOP3A *)
Definition: instructions.cc:25713
gem5::VegaISA::Inst_DS__DS_APPEND::~Inst_DS__DS_APPEND
~Inst_DS__DS_APPEND()
Definition: instructions.cc:37989
gem5::VegaISA::Inst_VOP3__V_SUBREV_U32::Inst_VOP3__V_SUBREV_U32
Inst_VOP3__V_SUBREV_U32(InFmt_VOP3A *)
Definition: instructions.cc:27491
gem5::VegaISA::Inst_VOP2__V_MUL_F16::~Inst_VOP2__V_MUL_F16
~Inst_VOP2__V_MUL_F16()
Definition: instructions.cc:7466
gem5::VegaISA::Inst_SOP2__S_BFM_B64::Inst_SOP2__S_BFM_B64
Inst_SOP2__S_BFM_B64(InFmt_SOP2 *)
Definition: instructions.cc:1184
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F16::~Inst_VOP3__V_CMP_TRU_F16
~Inst_VOP3__V_CMP_TRU_F16()
Definition: instructions.cc:17912
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31619
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5828
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F64::Inst_VOP3__V_CMP_NLG_F64
Inst_VOP3__V_CMP_NLG_F64(InFmt_VOP3A *)
Definition: instructions.cc:19988
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F16::~Inst_VOP3__V_CMP_NLG_F16
~Inst_VOP3__V_CMP_NLG_F16()
Definition: instructions.cc:17807
gem5::VegaISA::Inst_VOP1__V_CVT_F32_F16::~Inst_VOP1__V_CVT_F32_F16
~Inst_VOP1__V_CVT_F32_F16()
Definition: instructions.cc:8535
gem5::VegaISA::Inst_DS__DS_READ_I8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35651
gem5::VegaISA::InFmt_VOP2::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1805
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F16::Inst_VOP3__V_CMPX_NLT_F16
Inst_VOP3__V_CMPX_NLT_F16(InFmt_VOP3A *)
Definition: instructions.cc:18253
gem5::VegaISA::Inst_SOP2__S_CSELECT_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:430
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C::Inst_MIMG__IMAGE_GATHER4_C
Inst_MIMG__IMAGE_GATHER4_C(InFmt_MIMG *)
Definition: instructions.cc:43305
gem5::VegaISA::Inst_SOPK__S_CBRANCH_I_FORK::Inst_SOPK__S_CBRANCH_I_FORK
Inst_SOPK__S_CBRANCH_I_FORK(InFmt_SOPK *)
Definition: instructions.cc:2001
gem5::VegaISA::Inst_VOP3__V_MAX_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27251
gem5::VegaISA::Inst_SOPK__S_SETREG_IMM32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2140
gem5::VegaISA::Inst_VOP3__V_FLOOR_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28534
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2794
gem5::VegaISA::Inst_VOP3__V_LSHL_ADD_U32::Inst_VOP3__V_LSHL_ADD_U32
Inst_VOP3__V_LSHL_ADD_U32(InFmt_VOP3A *)
Definition: instructions.cc:32273
gem5::VegaISA::Inst_VOP3__V_MAX_I32::Inst_VOP3__V_MAX_I32
Inst_VOP3__V_MAX_I32(InFmt_VOP3A *)
Definition: instructions.cc:25913
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11151
gem5::VegaISA::Inst_SOPC__S_CMP_GE_I32::Inst_SOPC__S_CMP_GE_I32
Inst_SOPC__S_CMP_GE_I32(InFmt_SOPC *)
Definition: instructions.cc:3717
gem5::VegaISA::Inst_FLAT
Definition: op_encodings.hh:901
gem5::VegaISA::Inst_SOP1__S_SEXT_I32_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2847
gem5::VegaISA::Inst_VOP2__V_MIN_U16::Inst_VOP2__V_MIN_U16
Inst_VOP2__V_MIN_U16(InFmt_VOP2 *)
Definition: instructions.cc:7904
gem5::VegaISA::Inst_VOP3__V_EXP_F32::~Inst_VOP3__V_EXP_F32
~Inst_VOP3__V_EXP_F32()
Definition: instructions.cc:28770
gem5::VegaISA::Inst_SOP1__S_MOV_B32::Inst_SOP1__S_MOV_B32
Inst_SOP1__S_MOV_B32(InFmt_SOP1 *)
Definition: instructions.cc:2170
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U16::~Inst_VOPC__V_CMPX_NE_U16
~Inst_VOPC__V_CMPX_NE_U16()
Definition: instructions.cc:14790
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42713
gem5::VegaISA::Inst_SOPC__S_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3870
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F64::Inst_VOP3__V_CMP_GE_F64
Inst_VOP3__V_CMP_GE_F64(InFmt_VOP3A *)
Definition: instructions.cc:19760
gem5::VegaISA::Inst_SOP2__S_LSHL_B32::~Inst_SOP2__S_LSHL_B32
~Inst_SOP2__S_LSHL_B32()
Definition: instructions.cc:965
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B64::~Inst_VOP3__V_LSHRREV_B64
~Inst_VOP3__V_LSHRREV_B64()
Definition: instructions.cc:33764
gem5::VegaISA::Inst_DS__DS_GWS_BARRIER::~Inst_DS__DS_GWS_BARRIER
~Inst_DS__DS_GWS_BARRIER()
Definition: instructions.cc:37924
gem5::VegaISA::Inst_VOP3__V_SUB_CO_U32::Inst_VOP3__V_SUB_CO_U32
Inst_VOP3__V_SUB_CO_U32(InFmt_VOP3B *)
Definition: instructions.cc:26461
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_OR::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:45198
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ()
Definition: instructions.cc:41778
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43617
gem5::VegaISA::Inst_VOP3__V_MUL_F64::~Inst_VOP3__V_MUL_F64
~Inst_VOP3__V_MUL_F64()
Definition: instructions.cc:33040
gem5::VegaISA::Inst_DS__DS_ORDERED_COUNT::Inst_DS__DS_ORDERED_COUNT
Inst_DS__DS_ORDERED_COUNT(InFmt_DS *)
Definition: instructions.cc:38003
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20003
gem5::VegaISA::Inst_MIMG::instData
InFmt_MIMG instData
Definition: op_encodings.hh:880
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_XOR::~Inst_MIMG__IMAGE_ATOMIC_XOR
~Inst_MIMG__IMAGE_ATOMIC_XOR()
Definition: instructions.cc:42491
gem5::VegaISA::Inst_DS__DS_WRITE_B16::~Inst_DS__DS_WRITE_B16
~Inst_DS__DS_WRITE_B16()
Definition: instructions.cc:34903
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41650
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41317
gem5::VegaISA::Inst_DS__DS_WRITE2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36543
gem5::VegaISA::Inst_VOP3__V_CMP_F_F16::Inst_VOP3__V_CMP_F_F16
Inst_VOP3__V_CMP_F_F16(InFmt_VOP3A *)
Definition: instructions.cc:17592
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_P::Inst_DS__DS_GWS_SEMA_P
Inst_DS__DS_GWS_SEMA_P(InFmt_DS *)
Definition: instructions.cc:37893
gem5::VegaISA::Inst_VOP3__V_LOG_LEGACY_F32::~Inst_VOP3__V_LOG_LEGACY_F32
~Inst_VOP3__V_LOG_LEGACY_F32()
Definition: instructions.cc:30136
gem5::VegaISA::Inst_SOP1__S_FF1_I32_B64::Inst_SOP1__S_FF1_I32_B64
Inst_SOP1__S_FF1_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2665
gem5::VegaISA::Inst_DS__DS_MIN_RTN_U64::Inst_DS__DS_MIN_RTN_U64
Inst_DS__DS_MIN_RTN_U64(InFmt_DS *)
Definition: instructions.cc:36914
gem5::VegaISA::Inst_DS__DS_SUB_RTN_U64::Inst_DS__DS_SUB_RTN_U64
Inst_DS__DS_SUB_RTN_U64(InFmt_DS *)
Definition: instructions.cc:36786
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F32::~Inst_VOPC__V_CMPX_GE_F32
~Inst_VOPC__V_CMPX_GE_F32()
Definition: instructions.cc:12373
gem5::VegaISA::Inst_VOP3__V_CVT_U32_F64::Inst_VOP3__V_CVT_U32_F64
Inst_VOP3__V_CVT_U32_F64(InFmt_VOP3A *)
Definition: instructions.cc:28302
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F16::~Inst_VOPC__V_CMP_LG_F16
~Inst_VOPC__V_CMP_LG_F16()
Definition: instructions.cc:11064
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O::Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O
Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43090
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F32::~Inst_VOPC__V_CMP_TRU_F32
~Inst_VOPC__V_CMP_TRU_F32()
Definition: instructions.cc:12131
gem5::VegaISA::Inst_VOP1__V_RCP_F32::Inst_VOP1__V_RCP_F32
Inst_VOP1__V_RCP_F32(InFmt_VOP1 *)
Definition: instructions.cc:9265
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14196
gem5::VegaISA::Inst_SOP1__S_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2183
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I32::~Inst_VOPC__V_CMP_GE_I32
~Inst_VOPC__V_CMP_GE_I32()
Definition: instructions.cc:15082
gem5::VegaISA::Inst_VOP3__V_MIN_U16::~Inst_VOP3__V_MIN_U16
~Inst_VOP3__V_MIN_U16()
Definition: instructions.cc:27293
gem5::VegaISA::Inst_VOPC__V_CMP_F_I16::Inst_VOPC__V_CMP_F_I16
Inst_VOPC__V_CMP_F_I16(InFmt_VOPC *)
Definition: instructions.cc:13835
gem5::VegaISA::Inst_VOP1__V_LOG_F16::Inst_VOP1__V_LOG_F16
Inst_VOP1__V_LOG_F16(InFmt_VOP1 *)
Definition: instructions.cc:10120
gem5::VegaISA::Inst_MIMG
Definition: op_encodings.hh:869
gem5::VegaISA::InFmt_FLAT_1::ADDR
unsigned int ADDR
Definition: gpu_decoder.hh:1655
gem5::VegaISA::Inst_VOP1__V_CEIL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10256
gem5::VegaISA::Inst_DS__DS_MSKOR_RTN_B64::~Inst_DS__DS_MSKOR_RTN_B64
~Inst_DS__DS_MSKOR_RTN_B64()
Definition: instructions.cc:37024
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40960
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::~Inst_MIMG__IMAGE_SAMPLE_B_CL
~Inst_MIMG__IMAGE_SAMPLE_B_CL()
Definition: instructions.cc:42687
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORD::Inst_MUBUF__BUFFER_STORE_DWORD
Inst_MUBUF__BUFFER_STORE_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:39999
gem5::VegaISA::Inst_VOP3__V_CVT_F64_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28108
gem5::VegaISA::Inst_SOPC__S_CMP_LT_U32::Inst_SOPC__S_CMP_LT_U32
Inst_SOPC__S_CMP_LT_U32(InFmt_SOPC *)
Definition: instructions.cc:3913
gem5::VegaISA::Inst_VOP2__V_MAX_F32::~Inst_VOP2__V_MAX_F32
~Inst_VOP2__V_MAX_F32()
Definition: instructions.cc:6477
gem5::VegaISA::Inst_VOP2__V_ASHRREV_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6686
gem5::VegaISA::Inst_VOP3__V_MAX_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27161
gem5::VegaISA::Inst_VOP3__V_TRUNC_F64::Inst_VOP3__V_TRUNC_F64
Inst_VOP3__V_TRUNC_F64(InFmt_VOP3A *)
Definition: instructions.cc:28398
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U16::Inst_VOPC__V_CMPX_LT_U16
Inst_VOPC__V_CMPX_LT_U16(InFmt_VOPC *)
Definition: instructions.cc:14643
gem5::VegaISA::Inst_DS__DS_ADD_RTN_U32::~Inst_DS__DS_ADD_RTN_U32
~Inst_DS__DS_ADD_RTN_U32()
Definition: instructions.cc:34963
gem5::VegaISA::Inst_SOP1__S_SWAPPC_B64::Inst_SOP1__S_SWAPPC_B64
Inst_SOP1__S_SWAPPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3015
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38910
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37728
gem5::VegaISA::Inst_SOPC__S_BITCMP1_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4010
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I32::~Inst_VOP3__V_CMPX_T_I32
~Inst_VOP3__V_CMPX_T_I32()
Definition: instructions.cc:23471
gem5::VegaISA::Inst_SOPP__S_CBRANCH_SCC1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4461
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39105
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I16::Inst_VOP3__V_CMP_LT_I16
Inst_VOP3__V_CMP_LT_I16(InFmt_VOP3A *)
Definition: instructions.cc:21228
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39146
gem5::VegaISA::Inst_SOPK__S_CMPK_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1685
gem5::VegaISA::Inst_VOP3__V_SUB_F32::~Inst_VOP3__V_SUB_F32
~Inst_VOP3__V_SUB_F32()
Definition: instructions.cc:25269
gem5::VegaISA::Inst_SOPC__S_BITCMP0_B64::~Inst_SOPC__S_BITCMP0_B64
~Inst_SOPC__S_BITCMP0_B64()
Definition: instructions.cc:4031
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23509
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12199
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F32::Inst_VOPC__V_CMP_LG_F32
Inst_VOPC__V_CMP_LG_F32(InFmt_VOPC *)
Definition: instructions.cc:11780
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F64::~Inst_VOPC__V_CMPX_O_F64
~Inst_VOPC__V_CMPX_O_F64()
Definition: instructions.cc:13519
gem5::VegaISA::Inst_SOP2__S_ANDN2_B64::Inst_SOP2__S_ANDN2_B64
Inst_SOP2__S_ANDN2_B64(InFmt_SOP2 *)
Definition: instructions.cc:671
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F64::~Inst_VOP3__V_FREXP_MANT_F64
~Inst_VOP3__V_FREXP_MANT_F64()
Definition: instructions.cc:29489
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17669
gem5::VegaISA::Inst_SOPP__S_CBRANCH_EXECNZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4584
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F64::Inst_VOP3__V_CMP_CLASS_F64
Inst_VOP3__V_CMP_CLASS_F64(InFmt_VOP3A *)
Definition: instructions.cc:17289
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12271
gem5::VegaISA::Inst_VOP1__V_RNDNE_F32::Inst_VOP1__V_RNDNE_F32
Inst_VOP1__V_RNDNE_F32(InFmt_VOP1 *)
Definition: instructions.cc:9136
gem5::VegaISA::Inst_VOP3__V_SUBREV_U16::~Inst_VOP3__V_SUBREV_U16
~Inst_VOP3__V_SUBREV_U16()
Definition: instructions.cc:26922
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I16::~Inst_VOPC__V_CMP_EQ_I16
~Inst_VOPC__V_CMP_EQ_I16()
Definition: instructions.cc:13902
gem5::ComputeUnit::fetchStage
FetchStage fetchStage
Definition: compute_unit.hh:280
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9882
gem5::VegaISA::Inst_VOP3__V_RNDNE_F16::~Inst_VOP3__V_RNDNE_F16
~Inst_VOP3__V_RNDNE_F16()
Definition: instructions.cc:30006
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F64::Inst_VOP3__V_CMPX_EQ_F64
Inst_VOP3__V_CMPX_EQ_F64(InFmt_VOP3A *)
Definition: instructions.cc:20395
gem5::VegaISA::Inst_SOPK__S_CMPK_LG_I32::Inst_SOPK__S_CMPK_LG_I32
Inst_SOPK__S_CMPK_LG_I32(InFmt_SOPK *)
Definition: instructions.cc:1645
gem5::VegaISA::Inst_VOP3__V_CMP_F_U32::~Inst_VOP3__V_CMP_F_U32
~Inst_VOP3__V_CMP_F_U32()
Definition: instructions.cc:22842
gem5::VegaISA::Inst_VOP3__V_MIN_F16::Inst_VOP3__V_MIN_F16
Inst_VOP3__V_MIN_F16(InFmt_VOP3A *)
Definition: instructions.cc:27167
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45658
gem5::VegaISA::Inst_DS__DS_MAX_F64::~Inst_DS__DS_MAX_F64
~Inst_DS__DS_MAX_F64()
Definition: instructions.cc:36745
gem5::VegaISA::Inst_VOP3__V_MQSAD_U32_U8::Inst_VOP3__V_MQSAD_U32_U8
Inst_VOP3__V_MQSAD_U32_U8(InFmt_VOP3A *)
Definition: instructions.cc:32111
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F32::Inst_VOP3__V_CMP_NLE_F32
Inst_VOP3__V_CMP_NLE_F32(InFmt_VOP3A *)
Definition: instructions.cc:18722
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4::Inst_MIMG__IMAGE_GATHER4
Inst_MIMG__IMAGE_GATHER4(InFmt_MIMG *)
Definition: instructions.cc:43190
gem5::VegaISA::Inst_DS__DS_SWIZZLE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35865
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F32::~Inst_VOP3__V_CMPX_NEQ_F32
~Inst_VOP3__V_CMPX_NEQ_F32()
Definition: instructions.cc:19348
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::Inst_FLAT__FLAT_ATOMIC_INC_X2
Inst_FLAT__FLAT_ATOMIC_INC_X2(InFmt_FLAT *)
Definition: instructions.cc:45722
gem5::VegaISA::Inst_MUBUF::instData
InFmt_MUBUF instData
Definition: op_encodings.hh:841
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41922
gem5::VegaISA::Inst_DS__DS_MIN_I64::~Inst_DS__DS_MIN_I64
~Inst_DS__DS_MIN_I64()
Definition: instructions.cc:36299
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F64::Inst_VOP3__V_CMPX_GE_F64
Inst_VOP3__V_CMPX_GE_F64(InFmt_VOP3A *)
Definition: instructions.cc:20632
gem5::VegaISA::Inst_VOP2__V_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6583
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_USHORT::Inst_MUBUF__BUFFER_LOAD_USHORT
Inst_MUBUF__BUFFER_LOAD_USHORT(InFmt_MUBUF *)
Definition: instructions.cc:39286
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_L_O::Inst_MIMG__IMAGE_GATHER4_C_L_O
Inst_MIMG__IMAGE_GATHER4_C_L_O(InFmt_MIMG *)
Definition: instructions.cc:43583
gem5::VegaISA::Inst_DS__DS_MAX_RTN_F32::Inst_DS__DS_MAX_RTN_F32
Inst_DS__DS_MAX_RTN_F32(InFmt_DS *)
Definition: instructions.cc:35370
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38716
gem5::VegaISA::Inst_VOP3__V_EXP_F16::Inst_VOP3__V_EXP_F16
Inst_VOP3__V_EXP_F16(InFmt_VOP3A *)
Definition: instructions.cc:29859
gem5::VegaISA::Inst_VOP2__V_ADD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7567
gem5::VegaISA::Inst_VOP3__V_WRITELANE_B32::~Inst_VOP3__V_WRITELANE_B32
~Inst_VOP3__V_WRITELANE_B32()
Definition: instructions.cc:33534
gem5::VegaISA::Inst_VOPC__V_CMP_T_U64::Inst_VOPC__V_CMP_T_U64
Inst_VOPC__V_CMP_T_U64(InFmt_VOPC *)
Definition: instructions.cc:16411
gem5::VegaISA::Inst_SOPP__S_TTRACEDATA::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4883
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I32::~Inst_VOPC__V_CMP_GT_I32
~Inst_VOPC__V_CMP_GT_I32()
Definition: instructions.cc:15016
gem5::VegaISA::Inst_SOP2__S_LSHR_B64::~Inst_SOP2__S_LSHR_B64
~Inst_SOP2__S_LSHR_B64()
Definition: instructions.cc:1062
gem5::VegaISA::Inst_VOP3A::instData
InFmt_VOP3A instData
Definition: op_encodings.hh:442
gem5::VegaISA::Inst_SOP1__S_RFE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3060
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5536
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39035
gem5::VegaISA::Inst_SOP1__S_WQM_B32::~Inst_SOP1__S_WQM_B32
~Inst_SOP1__S_WQM_B32()
Definition: instructions.cc:2353
gem5::VegaISA::Inst_VOP3__V_ADD3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32378
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::~Inst_SMEM__S_BUFFER_STORE_DWORDX2
~Inst_SMEM__S_BUFFER_STORE_DWORDX2()
Definition: instructions.cc:5814
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F32::Inst_VOPC__V_CMPX_NGE_F32
Inst_VOPC__V_CMPX_NGE_F32(InFmt_VOPC *)
Definition: instructions.cc:12477
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U32::Inst_VOPC__V_CMPX_GE_U32
Inst_VOPC__V_CMPX_GE_U32(InFmt_VOPC *)
Definition: instructions.cc:15866
gem5::VegaISA::Inst_VOP2__V_MIN_F32::~Inst_VOP2__V_MIN_F32
~Inst_VOP2__V_MIN_F32()
Definition: instructions.cc:6443
gem5::VegaISA::Inst_DS__DS_OR_B32::initiateAcc
void initiateAcc(GPUDynInstPtr gpuDynInst)
Definition: instructions.cc:34326
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19660
gem5::VegaISA::Inst_SOPK::instData
InFmt_SOPK instData
Definition: op_encodings.hh:107
gem5::VegaISA::Inst_DS__DS_WRITE_B8_D16_HI::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34849
gem5::VegaISA::Inst_SOP2
Definition: op_encodings.hh:73
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38150
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17627
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I64::~Inst_VOPC__V_CMPX_NE_I64
~Inst_VOPC__V_CMPX_NE_I64()
Definition: instructions.cc:16616
gem5::VegaISA::Inst_DS__DS_NOP::Inst_DS__DS_NOP
Inst_DS__DS_NOP(InFmt_DS *)
Definition: instructions.cc:34687
gem5::VegaISA::Inst_SOPC__S_CMP_GE_U32::~Inst_SOPC__S_CMP_GE_U32
~Inst_SOPC__S_CMP_GE_U32()
Definition: instructions.cc:3891
gem5::VegaISA::InstFormat::imm_f32
float imm_f32
Definition: gpu_decoder.hh:1945
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I16::~Inst_VOP3__V_CMPX_F_I16
~Inst_VOP3__V_CMPX_F_I16()
Definition: instructions.cc:21848
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::~Inst_MUBUF__BUFFER_STORE_DWORDX2
~Inst_MUBUF__BUFFER_STORE_DWORDX2()
Definition: instructions.cc:40101
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::~Inst_MUBUF__BUFFER_LOAD_DWORDX3
~Inst_MUBUF__BUFFER_LOAD_DWORDX3()
Definition: instructions.cc:39618
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F32::Inst_VOP3__V_CMPX_GT_F32
Inst_VOP3__V_CMPX_GT_F32(InFmt_VOP3A *)
Definition: instructions.cc:19000
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18203
gem5::VegaISA::Inst_SOPP__S_CBRANCH_VCCZ::Inst_SOPP__S_CBRANCH_VCCZ
Inst_SOPP__S_CBRANCH_VCCZ(InFmt_SOPP *)
Definition: instructions.cc:4478
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15244
gem5::VegaISA::Inst_SOPP__S_ENDPGM::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4230
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20118
gem5::VegaISA::Inst_VOP1__V_CVT_U32_F64::~Inst_VOP1__V_CVT_U32_F64
~Inst_VOP1__V_CVT_U32_F64()
Definition: instructions.cc:8835
gem5::VegaISA::Inst_VOP3__V_SUBREV_F16::Inst_VOP3__V_SUBREV_F16
Inst_VOP3__V_SUBREV_F16(InFmt_VOP3A *)
Definition: instructions.cc:26762
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX4::Inst_SMEM__S_STORE_DWORDX4
Inst_SMEM__S_STORE_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:5717
gem5::VegaISA::Inst_SOPK__S_CMPK_LG_U32::Inst_SOPK__S_CMPK_LG_U32
Inst_SOPK__S_CMPK_LG_U32(InFmt_SOPK *)
Definition: instructions.cc:1807
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37591
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D::Inst_MIMG__IMAGE_SAMPLE_C_D
Inst_MIMG__IMAGE_SAMPLE_C_D(InFmt_MIMG *)
Definition: instructions.cc:42758
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F16::~Inst_VOP3__V_CMPX_NLT_F16
~Inst_VOP3__V_CMPX_NLT_F16()
Definition: instructions.cc:18262
gem5::VegaISA::Inst_VOP3__V_CVT_I32_F64::Inst_VOP3__V_CVT_I32_F64
Inst_VOP3__V_CVT_I32_F64(InFmt_VOP3A *)
Definition: instructions.cc:27585
gem5::VegaISA::Inst_VOP3__V_DIV_SCALE_F64::Inst_VOP3__V_DIV_SCALE_F64
Inst_VOP3__V_DIV_SCALE_F64(InFmt_VOP3B *)
Definition: instructions.cc:31829
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_RELEASE_ALL::Inst_DS__DS_GWS_SEMA_RELEASE_ALL
Inst_DS__DS_GWS_SEMA_RELEASE_ALL(InFmt_DS *)
Definition: instructions.cc:37782
gem5::VegaISA::Inst_VOP3__V_FFBH_U32::~Inst_VOP3__V_FFBH_U32
~Inst_VOP3__V_FFBH_U32()
Definition: instructions.cc:29321
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41644
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17732
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F32::Inst_VOP3__V_CMPX_CLASS_F32
Inst_VOP3__V_CMPX_CLASS_F32(InFmt_VOP3A *)
Definition: instructions.cc:17170
gem5::VegaISA::InFmt_MUBUF_1::SRSRC
unsigned int SRSRC
Definition: gpu_decoder.hh:1727
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F16::Inst_VOP3__V_CMP_GE_F16
Inst_VOP3__V_CMP_GE_F16(InFmt_VOP3A *)
Definition: instructions.cc:17717
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5586
gem5::VegaISA::Inst_DS__DS_WRITE_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36511
gem5::VegaISA::Inst_DS__DS_MSKOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36457
gem5::VegaISA::Inst_DS__DS_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34725
gem5::VegaISA::Inst_DS__DS_DEC_RTN_U64::~Inst_DS__DS_DEC_RTN_U64
~Inst_DS__DS_DEC_RTN_U64()
Definition: instructions.cc:36855
gem5::VegaISA::Inst_DS__DS_MAX_I64::~Inst_DS__DS_MAX_I64
~Inst_DS__DS_MAX_I64()
Definition: instructions.cc:36320
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11211
gem5::VegaISA::Inst_VOP3__V_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25772
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38172
gem5::VegaISA::Inst_SOP1__S_GETPC_B64::~Inst_SOP1__S_GETPC_B64
~Inst_SOP1__S_GETPC_B64()
Definition: instructions.cc:2971
gem5::VegaISA::Inst_VOPC__V_CMP_T_U64::~Inst_VOPC__V_CMP_T_U64
~Inst_VOPC__V_CMP_T_U64()
Definition: instructions.cc:16417
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41573
gem5::VegaISA::Inst_DS__DS_WRITE_B96::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38376
gem5::VegaISA::Inst_SOP2__S_ABSDIFF_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1461
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_BYTE::Inst_MUBUF__BUFFER_STORE_BYTE
Inst_MUBUF__BUFFER_STORE_BYTE(InFmt_MUBUF *)
Definition: instructions.cc:39819
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F64::Inst_VOPC__V_CMPX_LT_F64
Inst_VOPC__V_CMPX_LT_F64(InFmt_VOPC *)
Definition: instructions.cc:13294
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5801
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U32::Inst_VOP3__V_CMPX_EQ_U32
Inst_VOP3__V_CMPX_EQ_U32(InFmt_VOP3A *)
Definition: instructions.cc:23571
gem5::VegaISA::Inst_DS__DS_SUB_SRC2_U32::Inst_DS__DS_SUB_SRC2_U32
Inst_DS__DS_SUB_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:37442
gem5::VegaISA::Inst_SOPP__S_ICACHE_INV::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4829
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I16::~Inst_VOP3__V_CMP_GE_I16
~Inst_VOP3__V_CMP_GE_I16()
Definition: instructions.cc:21455
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43517
gem5::VegaISA::Inst_VOPC__V_CMP_U_F64::~Inst_VOPC__V_CMP_U_F64
~Inst_VOPC__V_CMP_U_F64()
Definition: instructions.cc:13001
gem5::VegaISA::Inst_SOP1__S_MOV_B64::~Inst_SOP1__S_MOV_B64
~Inst_SOP1__S_MOV_B64()
Definition: instructions.cc:2202
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F16::Inst_VOP3__V_CMPX_U_F16
Inst_VOP3__V_CMPX_U_F16(InFmt_VOP3A *)
Definition: instructions.cc:18120
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL_O::~Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
~Inst_MIMG__IMAGE_SAMPLE_CD_CL_O()
Definition: instructions.cc:43791
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE::Inst_MIMG__IMAGE_SAMPLE
Inst_MIMG__IMAGE_SAMPLE(InFmt_MIMG *)
Definition: instructions.cc:42565
gem5::VegaISA::Inst_SOP2__S_BFE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1343
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15972
gem5::VegaISA::Inst_VOP2__V_MIN_F32::Inst_VOP2__V_MIN_F32
Inst_VOP2__V_MIN_F32(InFmt_VOP2 *)
Definition: instructions.cc:6436
gem5::VegaISA::Inst_VOP3__V_MAD_LEGACY_F32::~Inst_VOP3__V_MAD_LEGACY_F32
~Inst_VOP3__V_MAD_LEGACY_F32()
Definition: instructions.cc:30169
gem5::VegaISA::Inst_VOP1__V_MOV_FED_B32::~Inst_VOP1__V_MOV_FED_B32
~Inst_VOP1__V_MOV_FED_B32()
Definition: instructions.cc:8491
gem5::VegaISA::Inst_DS__DS_WRITE_B8_D16_HI::~Inst_DS__DS_WRITE_B8_D16_HI
~Inst_DS__DS_WRITE_B8_D16_HI()
Definition: instructions.cc:34841
gem5::VegaISA::Inst_VOP1__V_CVT_RPI_I32_F32::~Inst_VOP1__V_CVT_RPI_I32_F32
~Inst_VOP1__V_CVT_RPI_I32_F32()
Definition: instructions.cc:8557
gem5::VegaISA::Inst_DS__DS_CONDXCHG32_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37414
gem5::VegaISA::Inst_SOP2__S_MAX_I32::~Inst_SOP2__S_MAX_I32
~Inst_SOP2__S_MAX_I32()
Definition: instructions.cc:329
gem5::VegaISA::VecElemU64
uint64_t VecElemU64
Definition: gpu_registers.hh:168
gem5::VegaISA::Inst_VOP1__V_CVT_F32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8650
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13638
gem5::VegaISA::Inst_VOP1__V_FRACT_F16::Inst_VOP1__V_FRACT_F16
Inst_VOP1__V_FRACT_F16(InFmt_VOP1 *)
Definition: instructions.cc:10305
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B::Inst_MIMG__IMAGE_SAMPLE_B
Inst_MIMG__IMAGE_SAMPLE_B(InFmt_MIMG *)
Definition: instructions.cc:42661
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I32::Inst_VOP3__V_CMP_LE_I32
Inst_VOP3__V_CMP_LE_I32(InFmt_VOP3A *)
Definition: instructions.cc:22632
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::Inst_MUBUF__BUFFER_ATOMIC_UMAX
Inst_MUBUF__BUFFER_ATOMIC_UMAX(InFmt_MUBUF *)
Definition: instructions.cc:40724
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::Inst_MIMG__IMAGE_SAMPLE_LZ_O
Inst_MIMG__IMAGE_SAMPLE_LZ_O(InFmt_MIMG *)
Definition: instructions.cc:43011
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F32::~Inst_VOP3__V_CMPX_NLE_F32
~Inst_VOP3__V_CMPX_NLE_F32()
Definition: instructions.cc:19311
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22162
gem5::VegaISA::Inst_DS__DS_AND_SRC2_B32::~Inst_DS__DS_AND_SRC2_B32
~Inst_DS__DS_AND_SRC2_B32()
Definition: instructions.cc:37624
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F32::Inst_VOPC__V_CMPX_EQ_F32
Inst_VOPC__V_CMPX_EQ_F32(InFmt_VOPC *)
Definition: instructions.cc:12220
gem5::VegaISA::Inst_VOP3__V_MAD_F16::Inst_VOP3__V_MAD_F16
Inst_VOP3__V_MAD_F16(InFmt_VOP3A *)
Definition: instructions.cc:32502
gem5::VegaISA::Inst_SOPK
Definition: op_encodings.hh:94
gem5::VegaISA::Inst_DS__DS_INC_SRC2_U64::Inst_DS__DS_INC_SRC2_U64
Inst_DS__DS_INC_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:38089
gem5::VegaISA::Inst_DS__DS_READ_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37242
gem5::VegaISA::InFmt_VOP_DPP::ROW_MASK
unsigned int ROW_MASK
Definition: gpu_decoder.hh:1852
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_I32::Inst_DS__DS_MAX_SRC2_I32
Inst_DS__DS_MAX_SRC2_I32(InFmt_DS *)
Definition: instructions.cc:37553
gem5::VegaISA::InFmt_SOPP::SIMM16
unsigned int SIMM16
Definition: gpu_decoder.hh:1781
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMAX::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:45066
gem5::FetchUnit::flushBuf
void flushBuf(int wfSlotId)
Definition: fetch_unit.cc:333
gem5::VegaISA::Inst_VOP3__V_RCP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28987
gem5::SparcISA::Nop
Nop class.
Definition: nop.hh:48
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40421
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39227
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U32::Inst_VOPC__V_CMP_LT_U32
Inst_VOPC__V_CMP_LT_U32(InFmt_VOPC *)
Definition: instructions.cc:15165
gem5::VegaISA::Inst_DS__DS_READ2ST64_B64::Inst_DS__DS_READ2ST64_B64
Inst_DS__DS_READ2ST64_B64(InFmt_DS *)
Definition: instructions.cc:37334
gem5::VegaISA::Inst_VOP1__V_CVT_OFF_F32_I4::Inst_VOP1__V_CVT_OFF_F32_I4
Inst_VOP1__V_CVT_OFF_F32_I4(InFmt_VOP1 *)
Definition: instructions.cc:8615
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F32::~Inst_VOPC__V_CMPX_CLASS_F32
~Inst_VOPC__V_CMPX_CLASS_F32()
Definition: instructions.cc:10551
gem5::VegaISA::Inst_SOP1__S_MOVRELD_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3486
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SBYTE::~Inst_FLAT__FLAT_LOAD_SBYTE
~Inst_FLAT__FLAT_LOAD_SBYTE()
Definition: instructions.cc:43925
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F16::~Inst_VOP3__V_CMPX_EQ_F16
~Inst_VOP3__V_CMPX_EQ_F16()
Definition: instructions.cc:17996
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_O::Inst_MIMG__IMAGE_SAMPLE_O
Inst_MIMG__IMAGE_SAMPLE_O(InFmt_MIMG *)
Definition: instructions.cc:42875
gem5::VegaISA::Inst_SMEM__S_MEMTIME::~Inst_SMEM__S_MEMTIME
~Inst_SMEM__S_MEMTIME()
Definition: instructions.cc:5949
data
const char data[]
Definition: circlebuf.test.cc:48
shader.hh
gem5::VegaISA::Inst_SOPC__S_CMP_LE_U32::~Inst_SOPC__S_CMP_LE_U32
~Inst_SOPC__S_CMP_LE_U32()
Definition: instructions.cc:3947
gem5::VegaISA::Inst_VOP3__V_CMP_F_U64::Inst_VOP3__V_CMP_F_U64
Inst_VOP3__V_CMP_F_U64(InFmt_VOP3A *)
Definition: instructions.cc:24152
gem5::VegaISA::Inst_SOP2__S_LSHR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1071
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U32::~Inst_VOP3__V_CMP_GT_U32
~Inst_VOP3__V_CMP_GT_U32()
Definition: instructions.cc:23003
gem5::VegaISA::Inst_SOP1__S_SEXT_I32_I16::~Inst_SOP1__S_SEXT_I32_I16
~Inst_SOP1__S_SEXT_I32_I16()
Definition: instructions.cc:2840
gem5::VegaISA::Inst_VOP3__V_MIN_F64::Inst_VOP3__V_MIN_F64
Inst_VOP3__V_MIN_F64(InFmt_VOP3A *)
Definition: instructions.cc:33134
gem5::VegaISA::Inst_VOP1__V_CVT_I32_F64::Inst_VOP1__V_CVT_I32_F64
Inst_VOP1__V_CVT_I32_F64(InFmt_VOP1 *)
Definition: instructions.cc:8249
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I16::Inst_VOPC__V_CMP_LT_I16
Inst_VOPC__V_CMP_LT_I16(InFmt_VOPC *)
Definition: instructions.cc:13863
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_B64::~Inst_SOP1__S_FLBIT_I32_B64
~Inst_SOP1__S_FLBIT_I32_B64()
Definition: instructions.cc:2727
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I16::Inst_VOP3__V_CMP_GE_I16
Inst_VOP3__V_CMP_GE_I16(InFmt_VOP3A *)
Definition: instructions.cc:21448
gem5::Wavefront::releaseBarrier
void releaseBarrier()
Definition: wavefront.cc:1466
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I32::~Inst_VOPC__V_CMPX_LT_I32
~Inst_VOPC__V_CMPX_LT_I32()
Definition: instructions.cc:15428
gem5::VegaISA::Inst_VOP2
Definition: op_encodings.hh:257
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F64::~Inst_VOP3__V_CMP_NLE_F64
~Inst_VOP3__V_CMP_NLE_F64()
Definition: instructions.cc:20111
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F32::Inst_VOP3__V_CMPX_NLG_F32
Inst_VOP3__V_CMPX_NLG_F32(InFmt_VOP3A *)
Definition: instructions.cc:19227
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11829
gem5::VegaISA::Inst_SOP2__S_BFE_I32::~Inst_SOP2__S_BFE_I32
~Inst_SOP2__S_BFE_I32()
Definition: instructions.cc:1282
gem5::VegaISA::Inst_SOP2__S_BFE_I32::Inst_SOP2__S_BFE_I32
Inst_SOP2__S_BFE_I32(InFmt_SOP2 *)
Definition: instructions.cc:1276
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U16::~Inst_VOP3__V_CMPX_LE_U16
~Inst_VOP3__V_CMPX_LE_U16()
Definition: instructions.cc:22309
gem5::VegaISA::Inst_SMEM__S_MEMTIME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5956
gem5::VegaISA::Inst_VOP3__V_BFE_I32::~Inst_VOP3__V_BFE_I32
~Inst_VOP3__V_BFE_I32()
Definition: instructions.cc:30514
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Read 2 dwords from scalar data cache.
Definition: instructions.cc:5119
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I16::Inst_VOP3__V_CMPX_GT_I16
Inst_VOP3__V_CMPX_GT_I16(InFmt_VOP3A *)
Definition: instructions.cc:22009
gem5::VegaISA::Inst_VOP3__V_CMP_F_F32::Inst_VOP3__V_CMP_F_F32
Inst_VOP3__V_CMP_F_F32(InFmt_VOP3A *)
Definition: instructions.cc:18307
gem5::VegaISA::Inst_VOP3__V_CVT_F32_F16::~Inst_VOP3__V_CVT_F32_F16
~Inst_VOP3__V_CVT_F32_F16()
Definition: instructions.cc:27929
gem5::VegaISA::Inst_SOP1__S_SEXT_I32_I8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2820
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_OR::Inst_MUBUF__BUFFER_ATOMIC_OR
Inst_MUBUF__BUFFER_ATOMIC_OR(InFmt_MUBUF *)
Definition: instructions.cc:40784
gem5::VegaISA::Inst_DS__DS_MIN_U64::~Inst_DS__DS_MIN_U64
~Inst_DS__DS_MIN_U64()
Definition: instructions.cc:36341
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F64::Inst_VOPC__V_CMPX_EQ_F64
Inst_VOPC__V_CMPX_EQ_F64(InFmt_VOPC *)
Definition: instructions.cc:13330
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41343
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18386
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19717
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F64::Inst_VOPC__V_CMPX_NLE_F64
Inst_VOPC__V_CMPX_NLE_F64(InFmt_VOPC *)
Definition: instructions.cc:13696
gem5::VegaISA::Inst_DS__DS_MAX_RTN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35100
gem5::VegaISA::Inst_VOP3__V_MIN_I16::~Inst_VOP3__V_MIN_I16
~Inst_VOP3__V_MIN_I16()
Definition: instructions.cc:27342
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F64::~Inst_VOPC__V_CMPX_U_F64
~Inst_VOPC__V_CMPX_U_F64()
Definition: instructions.cc:13557
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19946
gem5::VegaISA::Inst_SOPK__S_CMPK_GT_U32::~Inst_SOPK__S_CMPK_GT_U32
~Inst_SOPK__S_CMPK_GT_U32()
Definition: instructions.cc:1840
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F32::~Inst_VOP3__V_CMPX_NLG_F32
~Inst_VOP3__V_CMPX_NLG_F32()
Definition: instructions.cc:19236
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F64::Inst_VOPC__V_CMP_NGE_F64
Inst_VOPC__V_CMP_NGE_F64(InFmt_VOPC *)
Definition: instructions.cc:13029
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13345
gem5::GPUStaticInst::isFlat
bool isFlat() const
Definition: gpu_static_inst.hh:131
gem5::VegaISA::Inst_VOP3__V_CMP_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18560
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_BYTE::~Inst_MUBUF__BUFFER_STORE_BYTE
~Inst_MUBUF__BUFFER_STORE_BYTE()
Definition: instructions.cc:39831
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22316
gem5::VegaISA::Inst_VOP3__V_CVT_F64_I32::Inst_VOP3__V_CVT_F64_I32
Inst_VOP3__V_CVT_F64_I32(InFmt_VOP3A *)
Definition: instructions.cc:27639
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42674
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_OR::Inst_MIMG__IMAGE_ATOMIC_OR
Inst_MIMG__IMAGE_ATOMIC_OR(InFmt_MIMG *)
Definition: instructions.cc:42449
gem5::VegaISA::Inst_VOP3__V_CMP_F_I16::Inst_VOP3__V_CMP_F_I16
Inst_VOP3__V_CMP_F_I16(InFmt_VOP3A *)
Definition: instructions.cc:21200
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U64::Inst_VOPC__V_CMPX_LE_U64
Inst_VOPC__V_CMPX_LE_U64(InFmt_VOPC *)
Definition: instructions.cc:16809
gem5::VegaISA::Inst_VOP3__V_MOV_B32::Inst_VOP3__V_MOV_B32
Inst_VOP3__V_MOV_B32(InFmt_VOP3A *)
Definition: instructions.cc:27553
gem5::VegaISA::Inst_DS__DS_INC_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38105
gem5::VegaISA::Inst_VOP3__V_BCNT_U32_B32::~Inst_VOP3__V_BCNT_U32_B32
~Inst_VOP3__V_BCNT_U32_B32()
Definition: instructions.cc:33577
gem5::VegaISA::Inst_VOPC__V_CMP_O_F32::Inst_VOPC__V_CMP_O_F32
Inst_VOPC__V_CMP_O_F32(InFmt_VOPC *)
Definition: instructions.cc:11849
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::~Inst_FLAT__FLAT_ATOMIC_SMAX_X2
~Inst_FLAT__FLAT_ATOMIC_SMAX_X2()
Definition: instructions.cc:45590
gem5::VegaISA::Inst_VOP3__V_MUL_LO_U32::~Inst_VOP3__V_MUL_LO_U32
~Inst_VOP3__V_MUL_LO_U32()
Definition: instructions.cc:33313
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20708
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F16::~Inst_VOP3__V_CMPX_O_F16
~Inst_VOP3__V_CMPX_O_F16()
Definition: instructions.cc:18106
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::~Inst_MIMG__IMAGE_SAMPLE_C_CD
~Inst_MIMG__IMAGE_SAMPLE_C_CD()
Definition: instructions.cc:43730
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16893
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F32::Inst_VOPC__V_CMPX_NLG_F32
Inst_VOPC__V_CMPX_NLG_F32(InFmt_VOPC *)
Definition: instructions.cc:12513
gem5::VegaISA::Inst_VOP3__V_LOG_F32::Inst_VOP3__V_LOG_F32
Inst_VOP3__V_LOG_F32(InFmt_VOP3A *)
Definition: instructions.cc:28803
gem5::VegaISA::Inst_DS__DS_MIN_RTN_I32::Inst_DS__DS_MIN_RTN_I32
Inst_DS__DS_MIN_RTN_I32(InFmt_DS *)
Definition: instructions.cc:35064
gem5::VegaISA::REG_M0
@ REG_M0
Definition: gpu_registers.hh:74
gem5::VegaISA::Inst_DS__DS_CMPST_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34602
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::Inst_SMEM__S_BUFFER_LOAD_DWORDX16
Inst_SMEM__S_BUFFER_LOAD_DWORDX16(InFmt_SMEM *)
Definition: instructions.cc:5544
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I32::~Inst_VOPC__V_CMP_EQ_I32
~Inst_VOPC__V_CMP_EQ_I32()
Definition: instructions.cc:14950
gem5::VegaISA::Inst_VOP3__V_CMP_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19888
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I32::~Inst_VOPC__V_CMPX_LE_I32
~Inst_VOPC__V_CMPX_LE_I32()
Definition: instructions.cc:15498
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U32::Inst_VOPC__V_CMP_LE_U32
Inst_VOPC__V_CMP_LE_U32(InFmt_VOPC *)
Definition: instructions.cc:15231
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22408
gem5::VegaISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::~Inst_SOP1__S_XOR_SAVEEXEC_B64
~Inst_SOP1__S_XOR_SAVEEXEC_B64()
Definition: instructions.cc:3147
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD::~Inst_MIMG__IMAGE_LOAD
~Inst_MIMG__IMAGE_LOAD()
Definition: instructions.cc:41847
gem5::VegaISA::Inst_DS__DS_WRITE_B8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34829
gem5::VegaISA::Inst_DS__DS_WRITE_SRC2_B64::Inst_DS__DS_WRITE_SRC2_B64
Inst_DS__DS_WRITE_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:38288
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42142
gem5::VegaISA::Inst_VOP3__V_CMP_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22849
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F32::~Inst_VOPC__V_CMPX_NGE_F32
~Inst_VOPC__V_CMPX_NGE_F32()
Definition: instructions.cc:12485
gem5::VegaISA::Inst_SOP1__S_CBRANCH_JOIN::Inst_SOP1__S_CBRANCH_JOIN
Inst_SOP1__S_CBRANCH_JOIN(InFmt_SOP1 *)
Definition: instructions.cc:3530
gem5::VegaISA::Inst_SOP2__S_LSHL_B64::Inst_SOP2__S_LSHL_B64
Inst_SOP2__S_LSHL_B64(InFmt_SOP2 *)
Definition: instructions.cc:991
gem5::VegaISA::Inst_SOP2__S_NOR_B64::~Inst_SOP2__S_NOR_B64
~Inst_SOP2__S_NOR_B64()
Definition: instructions.cc:869
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2()
Definition: instructions.cc:41010
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_USHORT::~Inst_MUBUF__BUFFER_LOAD_USHORT
~Inst_MUBUF__BUFFER_LOAD_USHORT()
Definition: instructions.cc:39298
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I32::Inst_VOPC__V_CMP_NE_I32
Inst_VOPC__V_CMP_NE_I32(InFmt_VOPC *)
Definition: instructions.cc:15043
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::~Inst_MUBUF__BUFFER_ATOMIC_OR_X2
~Inst_MUBUF__BUFFER_ATOMIC_OR_X2()
Definition: instructions.cc:41188
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5227
gem5::VegaISA::Inst_SOP2__S_MUL_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1226
gem5::VegaISA::Inst_VOP3__V_ADD_F32::~Inst_VOP3__V_ADD_F32
~Inst_VOP3__V_ADD_F32()
Definition: instructions.cc:25213
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23432
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18666
gem5::VegaISA::Inst_DS__DS_MIN_RTN_F64::~Inst_DS__DS_MIN_RTN_F64
~Inst_DS__DS_MIN_RTN_F64()
Definition: instructions.cc:37158
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_BYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39897
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5732
gem5::VegaISA::Inst_VOP1__V_COS_F16::~Inst_VOP1__V_COS_F16
~Inst_VOP1__V_COS_F16()
Definition: instructions.cc:10352
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U64::~Inst_VOP3__V_CMPX_GE_U64
~Inst_VOP3__V_CMPX_GE_U64()
Definition: instructions.cc:25079
gem5::VegaISA::Inst_SOPC__S_CMP_LT_U32::~Inst_SOPC__S_CMP_LT_U32
~Inst_SOPC__S_CMP_LT_U32()
Definition: instructions.cc:3919
gem5::VegaISA::Inst_DS__DS_XOR_B64::Inst_DS__DS_XOR_B64
Inst_DS__DS_XOR_B64(InFmt_DS *)
Definition: instructions.cc:36420
gem5::VegaISA::Inst_DS::extData
InFmt_DS_1 extData
Definition: op_encodings.hh:636
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24238
gem5::VegaISA::Inst_VOP1__V_CEIL_F32::Inst_VOP1__V_CEIL_F32
Inst_VOP1__V_CEIL_F32(InFmt_VOP1 *)
Definition: instructions.cc:9103
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SSHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44017
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21606
gem5::VegaISA::Inst_SOPP__S_ENDPGM_SAVED::~Inst_SOPP__S_ENDPGM_SAVED
~Inst_SOPP__S_ENDPGM_SAVED()
Definition: instructions.cc:4983
gem5::VegaISA::Inst_VOP3__V_MAD_I64_I32::~Inst_VOP3__V_MAD_I64_I32
~Inst_VOP3__V_MAD_I64_I32()
Definition: instructions.cc:32189
gem5::VegaISA::Inst_VOP2__V_LSHRREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6651
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F64::~Inst_VOP3__V_CMPX_F_F64
~Inst_VOP3__V_CMPX_F_F64()
Definition: instructions.cc:20313
gem5::VegaISA::Inst_VOP3__V_MUL_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25683
gem5::VegaISA::Inst_VOP1__V_FFBL_B32::~Inst_VOP1__V_FFBL_B32
~Inst_VOP1__V_FFBL_B32()
Definition: instructions.cc:9696
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_O::~Inst_MIMG__IMAGE_GATHER4_O
~Inst_MIMG__IMAGE_GATHER4_O()
Definition: instructions.cc:43430
gem5::VegaISA::Inst_VOP3__V_MIN_F32::~Inst_VOP3__V_MIN_F32
~Inst_VOP3__V_MIN_F32()
Definition: instructions.cc:25765
gem5::VegaISA::Inst_DS__DS_DEC_U32::Inst_DS__DS_DEC_U32
Inst_DS__DS_DEC_U32(InFmt_DS *)
Definition: instructions.cc:34151
gem5::VegaISA::Inst_DS__DS_SUB_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34994
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I32::~Inst_VOP3__V_CMPX_EQ_I32
~Inst_VOP3__V_CMPX_EQ_I32()
Definition: instructions.cc:23241
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31697
gem5::VegaISA::Inst_VOP3__V_DIV_SCALE_F32::~Inst_VOP3__V_DIV_SCALE_F32
~Inst_VOP3__V_DIV_SCALE_F32()
Definition: instructions.cc:31781
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORD::~Inst_MUBUF__BUFFER_LOAD_DWORD
~Inst_MUBUF__BUFFER_LOAD_DWORD()
Definition: instructions.cc:39425
gem5::VegaISA::Inst_VOP3__V_CMP_F_I16::~Inst_VOP3__V_CMP_F_I16
~Inst_VOP3__V_CMP_F_I16()
Definition: instructions.cc:21206
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F64::Inst_VOP3__V_CMPX_NLE_F64
Inst_VOP3__V_CMPX_NLE_F64(InFmt_VOP3A *)
Definition: instructions.cc:20991
gem5::VegaISA::Inst_VOPC__V_CMP_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13008
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_O::Inst_MIMG__IMAGE_GATHER4_O
Inst_MIMG__IMAGE_GATHER4_O(InFmt_MIMG *)
Definition: instructions.cc:43424
gem5::VegaISA::Inst_VOPC__V_CMP_T_U16::~Inst_VOPC__V_CMP_T_U16
~Inst_VOPC__V_CMP_T_U16()
Definition: instructions.cc:14321
gem5::VegaISA::Inst_DS__DS_READ2_B64::~Inst_DS__DS_READ2_B64
~Inst_DS__DS_READ2_B64()
Definition: instructions.cc:37274
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19016
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I16::~Inst_VOP3__V_CMP_LT_I16
~Inst_VOP3__V_CMP_LT_I16()
Definition: instructions.cc:21235
gem5::VegaISA::Inst_DS__DS_READ_B64::~Inst_DS__DS_READ_B64
~Inst_DS__DS_READ_B64()
Definition: instructions.cc:37211
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:45389
gem5::VegaISA::Inst_VOP2__V_SUB_CO_U32::~Inst_VOP2__V_SUB_CO_U32
~Inst_VOP2__V_SUB_CO_U32()
Definition: instructions.cc:7183
gem5::VegaISA::InFmt_VOP_SDWA::SRC0_NEG
unsigned int SRC0_NEG
Definition: gpu_decoder.hh:1863
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43299
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORD::Inst_FLAT__FLAT_LOAD_DWORD
Inst_FLAT__FLAT_LOAD_DWORD(InFmt_FLAT *)
Definition: instructions.cc:44033
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY(InFmt_MTBUF *)
Definition: instructions.cc:41734
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F32::Inst_VOP3__V_CMP_GE_F32
Inst_VOP3__V_CMP_GE_F32(InFmt_VOP3A *)
Definition: instructions.cc:18511
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33773
gem5::VegaISA::Inst_VOPC__V_CMP_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16198
gem5::VegaISA::Inst_SMEM__S_DCACHE_WB_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5936
gem5::VegaISA::Inst_VOP3__V_FRACT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30035
gem5::VegaISA::Inst_SOPC__S_CMP_LG_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3842
gem5::VegaISA::Inst_FLAT__FLAT_STORE_BYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44288
gem5::VegaISA::Inst_VOP1__V_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8163
gem5::VegaISA::Inst_VOP1__V_SQRT_F64::~Inst_VOP1__V_SQRT_F64
~Inst_VOP1__V_SQRT_F64()
Definition: instructions.cc:9489
gem5::VegaISA::Inst_SOPP__S_CBRANCH_SCC1::~Inst_SOPP__S_CBRANCH_SCC1
~Inst_SOPP__S_CBRANCH_SCC1()
Definition: instructions.cc:4453
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F64::~Inst_VOP3__V_CMP_NGE_F64
~Inst_VOP3__V_CMP_NGE_F64()
Definition: instructions.cc:19939
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F16::Inst_VOP3__V_CMP_NLT_F16
Inst_VOP3__V_CMP_NLT_F16(InFmt_VOP3A *)
Definition: instructions.cc:17883
gem5::MipsISA::index
Bitfield< 30, 0 > index
Definition: pra_constants.hh:47
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44821
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F32::Inst_VOPC__V_CMP_NLT_F32
Inst_VOPC__V_CMP_NLT_F32(InFmt_VOPC *)
Definition: instructions.cc:12090
gem5::VegaISA::Inst_VOP3__V_CVT_I32_F64::~Inst_VOP3__V_CVT_I32_F64
~Inst_VOP3__V_CVT_I32_F64()
Definition: instructions.cc:27592
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::~Inst_MIMG__IMAGE_GATHER4_LZ_O
~Inst_MIMG__IMAGE_GATHER4_LZ_O()
Definition: instructions.cc:43530
gem5::VegaISA::Inst_SOPC__S_BITCMP1_B32::~Inst_SOPC__S_BITCMP1_B32
~Inst_SOPC__S_BITCMP1_B32()
Definition: instructions.cc:4003
gem5::VegaISA::Inst_SMEM__S_DCACHE_INV::~Inst_SMEM__S_DCACHE_INV
~Inst_SMEM__S_DCACHE_INV()
Definition: instructions.cc:5875
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F16::Inst_VOPC__V_CMP_GE_F16
Inst_VOPC__V_CMP_GE_F16(InFmt_VOPC *)
Definition: instructions.cc:11077
gem5::VegaISA::Inst_VOP3__V_MAX3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31161
gem5::VegaISA::Inst_VOP3__V_CMP_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22529
gem5::VegaISA::Inst_SOP2__S_BFM_B64::~Inst_SOP2__S_BFM_B64
~Inst_SOP2__S_BFM_B64()
Definition: instructions.cc:1190
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40807
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP::Inst_MIMG__IMAGE_STORE_MIP
Inst_MIMG__IMAGE_STORE_MIP(InFmt_MIMG *)
Definition: instructions.cc:42062
warn_once
#define warn_once(...)
Definition: logging.hh:260
gem5::VegaISA::Inst_VOP3__V_TRUNC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28615
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34532
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23962
gem5::VegaISA::Inst_SOPC__S_CMP_GE_U32::Inst_SOPC__S_CMP_GE_U32
Inst_SOPC__S_CMP_GE_U32(InFmt_SOPC *)
Definition: instructions.cc:3885
gem5::VegaISA::Inst_VOP1__V_EXP_F32::~Inst_VOP1__V_EXP_F32
~Inst_VOP1__V_EXP_F32()
Definition: instructions.cc:9208
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::~Inst_MUBUF__BUFFER_ATOMIC_SUB
~Inst_MUBUF__BUFFER_ATOMIC_SUB()
Definition: instructions.cc:40617
gem5::VegaISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::~Inst_SOP1__S_XNOR_SAVEEXEC_B64
~Inst_SOP1__S_XNOR_SAVEEXEC_B64()
Definition: instructions.cc:3327
gem5::VegaISA::Inst_VOP3__V_MIN3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31008
gem5::VegaISA::Inst_VOP1__V_LOG_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10411
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14295
gem5::VegaISA::Inst_SOPC__S_CMP_LG_U32::Inst_SOPC__S_CMP_LG_U32
Inst_SOPC__S_CMP_LG_U32(InFmt_SOPC *)
Definition: instructions.cc:3829
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::~Inst_MUBUF__BUFFER_ATOMIC_UMAX
~Inst_MUBUF__BUFFER_ATOMIC_UMAX()
Definition: instructions.cc:40737
gem5::VegaISA::Inst_VOP3__V_QSAD_PK_U16_U8::~Inst_VOP3__V_QSAD_PK_U16_U8
~Inst_VOP3__V_QSAD_PK_U16_U8()
Definition: instructions.cc:32076
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORD::~Inst_SMEM__S_BUFFER_STORE_DWORD
~Inst_SMEM__S_BUFFER_STORE_DWORD()
Definition: instructions.cc:5782
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16723
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F64::Inst_VOP3__V_CMPX_NLG_F64
Inst_VOP3__V_CMPX_NLG_F64(InFmt_VOP3A *)
Definition: instructions.cc:20872
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY(InFmt_MTBUF *)
Definition: instructions.cc:41592
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SUB::~Inst_FLAT__FLAT_ATOMIC_SUB
~Inst_FLAT__FLAT_ATOMIC_SUB()
Definition: instructions.cc:44887
gem5::VegaISA::Inst_VOP3__V_RCP_IFLAG_F32::Inst_VOP3__V_RCP_IFLAG_F32
Inst_VOP3__V_RCP_IFLAG_F32(InFmt_VOP3A *)
Definition: instructions.cc:28891
gem5::VegaISA::Inst_VOP3__V_CVT_F16_F32::Inst_VOP3__V_CVT_F16_F32
Inst_VOP3__V_CVT_F16_F32(InFmt_VOP3A *)
Definition: instructions.cc:27901
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY(InFmt_MTBUF *)
Definition: instructions.cc:41328
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_L_O::~Inst_MIMG__IMAGE_SAMPLE_L_O
~Inst_MIMG__IMAGE_SAMPLE_L_O()
Definition: instructions.cc:42959
gem5::VegaISA::Inst_SOPP__S_BARRIER::Inst_SOPP__S_BARRIER
Inst_SOPP__S_BARRIER(InFmt_SOPP *)
Definition: instructions.cc:4597
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17877
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9807
gem5::VegaISA::Inst_VOP3__V_CMP_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23141
gem5::VegaISA::Inst_DS__DS_CONDXCHG32_RTN_B64::~Inst_DS__DS_CONDXCHG32_RTN_B64
~Inst_DS__DS_CONDXCHG32_RTN_B64()
Definition: instructions.cc:37407
gem5::VegaISA::Inst_SOP2__S_SUB_I32::~Inst_SOP2__S_SUB_I32
~Inst_SOP2__S_SUB_I32()
Definition: instructions.cc:159
gem5::VegaISA::InstFormat::imm_u32
uint32_t imm_u32
Definition: gpu_decoder.hh:1944
gem5::VegaISA::InFmt_SOP1::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1752
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34568
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23054
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U16::Inst_VOP3__V_CMPX_T_U16
Inst_VOP3__V_CMPX_T_U16(InFmt_VOP3A *)
Definition: instructions.cc:22485
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10917
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38973
gem5::VegaISA::Inst_VOP3__V_MAX_I32::~Inst_VOP3__V_MAX_I32
~Inst_VOP3__V_MAX_I32()
Definition: instructions.cc:25919
gem5::VegaISA::Inst_VOPC__V_CMP_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15150
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U32::Inst_VOPC__V_CMPX_GT_U32
Inst_VOPC__V_CMPX_GT_U32(InFmt_VOPC *)
Definition: instructions.cc:15796
gem5::VegaISA::InFmt_MUBUF::OFFSET
unsigned int OFFSET
Definition: gpu_decoder.hh:1712
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_O::~Inst_MIMG__IMAGE_SAMPLE_C_O
~Inst_MIMG__IMAGE_SAMPLE_C_O()
Definition: instructions.cc:43037
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::~Inst_MIMG__IMAGE_LOAD_PCK_SGN
~Inst_MIMG__IMAGE_LOAD_PCK_SGN()
Definition: instructions.cc:41941
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11967
gem5::VegaISA::InFmt_SOPC::SSRC1
unsigned int SSRC1
Definition: gpu_decoder.hh:1768
gem5::VegaISA::Inst_DS__DS_RSUB_U64::Inst_DS__DS_RSUB_U64
Inst_DS__DS_RSUB_U64(InFmt_DS *)
Definition: instructions.cc:36229
gem5::VegaISA::Inst_VOP3__V_MUL_U32_U24::~Inst_VOP3__V_MUL_U32_U24
~Inst_VOP3__V_MUL_U32_U24()
Definition: instructions.cc:25676
gem5::VegaISA::Inst_VOP3__V_PERM_B32::Inst_VOP3__V_PERM_B32
Inst_VOP3__V_PERM_B32(InFmt_VOP3A *)
Definition: instructions.cc:32618
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::~Inst_MIMG__IMAGE_LOAD_MIP_PCK
~Inst_MIMG__IMAGE_LOAD_MIP_PCK()
Definition: instructions.cc:41974
gem5::VegaISA::Inst_VOP1__V_FRACT_F32::~Inst_VOP1__V_FRACT_F32
~Inst_VOP1__V_FRACT_F32()
Definition: instructions.cc:9045
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41993
gem5::VegaISA::Inst_DS__DS_WRITE_B8_D16_HI::Inst_DS__DS_WRITE_B8_D16_HI
Inst_DS__DS_WRITE_B8_D16_HI(InFmt_DS *)
Definition: instructions.cc:34834
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43164
gem5::VegaISA::Inst_VOP1__V_MOV_B32::Inst_VOP1__V_MOV_B32
Inst_VOP1__V_MOV_B32(InFmt_VOP1 *)
Definition: instructions.cc:8149
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::~Inst_MIMG__IMAGE_ATOMIC_SMAX
~Inst_MIMG__IMAGE_ATOMIC_SMAX()
Definition: instructions.cc:42374
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45716
gem5::VegaISA::Inst_VOP3__V_XOR_B32::Inst_VOP3__V_XOR_B32
Inst_VOP3__V_XOR_B32(InFmt_VOP3A *)
Definition: instructions.cc:26310
gem5::VegaISA::Inst_VOP3__V_OR3_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26278
gem5::VegaISA::Inst_VOP1__V_CVT_I16_F16::~Inst_VOP1__V_CVT_I16_F16
~Inst_VOP1__V_CVT_I16_F16()
Definition: instructions.cc:10037
gem5::VegaISA::Inst_DS__DS_WRITE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34401
gem5::VegaISA::Inst_VOP2__V_LSHLREV_B16::~Inst_VOP2__V_LSHLREV_B16
~Inst_VOP2__V_LSHLREV_B16()
Definition: instructions.cc:7696
gem5::VegaISA::Inst_VOP3__V_INTERP_P2_F32::~Inst_VOP3__V_INTERP_P2_F32
~Inst_VOP3__V_INTERP_P2_F32()
Definition: instructions.cc:32810
gem5::VegaISA::Inst_VOP3__V_CMP_F_I32::~Inst_VOP3__V_CMP_F_I32
~Inst_VOP3__V_CMP_F_I32()
Definition: instructions.cc:22522
gem5::VegaISA::Inst_DS__DS_XOR_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37679
gem5::VegaISA::Inst_VOP3__V_MAD_U64_U32::Inst_VOP3__V_MAD_U64_U32
Inst_VOP3__V_MAD_U64_U32(InFmt_VOP3B *)
Definition: instructions.cc:32131
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18456
gem5::ComputeUnit::ComputeUnitStats::completedWGs
statistics::Scalar completedWGs
Definition: compute_unit.hh:1131
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F64::~Inst_VOPC__V_CMP_CLASS_F64
~Inst_VOPC__V_CMP_CLASS_F64()
Definition: instructions.cc:10666
gem5::VegaISA::Inst_DS__DS_WRITE2_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34510
gem5::VegaISA::Inst_VOP1__V_FLOOR_F64::~Inst_VOP1__V_FLOOR_F64
~Inst_VOP1__V_FLOOR_F64()
Definition: instructions.cc:9012
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F64::~Inst_VOPC__V_CMPX_GE_F64
~Inst_VOPC__V_CMPX_GE_F64()
Definition: instructions.cc:13483
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ(InFmt_MTBUF *)
Definition: instructions.cc:41489
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13909
gem5::VegaISA::Inst_DS__DS_WRITE2_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36588
gem5::VegaISA::Inst_VOP1__V_CVT_F64_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8682
gem5::VegaISA::Inst_DS::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, ConstVecOperandU32 &addr)
Definition: op_encodings.hh:622
gem5::VegaISA::Inst_SOP2::instData
InFmt_SOP2 instData
Definition: op_encodings.hh:85
gem5::VegaISA::InFmt_VOP_DPP::DPP_CTRL
unsigned int DPP_CTRL
Definition: gpu_decoder.hh:1844
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12528
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_AND::~Inst_MUBUF__BUFFER_ATOMIC_AND
~Inst_MUBUF__BUFFER_ATOMIC_AND()
Definition: instructions.cc:40767
gem5::VegaISA::Inst_SOPK__S_CMPK_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1901
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24326
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F64::Inst_VOP3__V_DIV_FIXUP_F64
Inst_VOP3__V_DIV_FIXUP_F64(InFmt_VOP3A *)
Definition: instructions.cc:31681
gem5::VegaISA::findFirstOneMsb
ScalarRegI32 findFirstOneMsb(T val)
Definition: inst_util.hh:152
gem5::VegaISA::Inst_SOPK__S_SETREG_B32::~Inst_SOPK__S_SETREG_B32
~Inst_SOPK__S_SETREG_B32()
Definition: instructions.cc:2082
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_USHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43962
gem5::VegaISA::Inst_VOP2__V_ADDC_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7275
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_LZ::~Inst_MIMG__IMAGE_SAMPLE_LZ
~Inst_MIMG__IMAGE_SAMPLE_LZ()
Definition: instructions.cc:42706
gem5::VegaISA::Inst_VOP2__V_AND_B32::Inst_VOP2__V_AND_B32
Inst_VOP2__V_AND_B32(InFmt_VOP2 *)
Definition: instructions.cc:6781
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F64::Inst_VOP3__V_CMP_GT_F64
Inst_VOP3__V_CMP_GT_F64(InFmt_VOP3A *)
Definition: instructions.cc:19645
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::~Inst_MIMG__IMAGE_SAMPLE_CL_O
~Inst_MIMG__IMAGE_SAMPLE_CL_O()
Definition: instructions.cc:42901
gem5::VegaISA::Inst_DS__DS_RSUB_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38083
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10991
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23918
gem5::VegaISA::Inst_SOPP__S_ENDPGM::~Inst_SOPP__S_ENDPGM
~Inst_SOPP__S_ENDPGM()
Definition: instructions.cc:4220
gem5::VegaISA::Inst_VOP1__V_FLOOR_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9020
gem5::VegaISA::Inst_SOP1__S_CBRANCH_JOIN::~Inst_SOP1__S_CBRANCH_JOIN
~Inst_SOP1__S_CBRANCH_JOIN()
Definition: instructions.cc:3537
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F32::~Inst_VOP3__V_CMP_NGE_F32
~Inst_VOP3__V_CMP_NGE_F32()
Definition: instructions.cc:18624
gem5::VegaISA::Inst_DS__DS_SUB_SRC2_U64::~Inst_DS__DS_SUB_SRC2_U64
~Inst_DS__DS_SUB_SRC2_U64()
Definition: instructions.cc:38050
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::~Inst_MUBUF__BUFFER_LOAD_FORMAT_X
~Inst_MUBUF__BUFFER_LOAD_FORMAT_X()
Definition: instructions.cc:38634
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_B64::Inst_SOP1__S_FLBIT_I32_B64
Inst_SOP1__S_FLBIT_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2721
gem5::VegaISA::Inst_VOP2__V_SUBBREV_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7368
gem5::VegaISA::Inst_VOP2__V_MUL_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6385
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13565
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43758
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::Inst_MIMG__IMAGE_LOAD_MIP_PCK
Inst_MIMG__IMAGE_LOAD_MIP_PCK(InFmt_MIMG *)
Definition: instructions.cc:41965
gem5::VegaISA::Inst_VOP1__V_CVT_F32_F16::Inst_VOP1__V_CVT_F32_F16
Inst_VOP1__V_CVT_F32_F16(InFmt_VOP1 *)
Definition: instructions.cc:8528
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F32::~Inst_VOPC__V_CMP_NGE_F32
~Inst_VOPC__V_CMP_NGE_F32()
Definition: instructions.cc:11926
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40300
gem5::VegaISA::Inst_VOP3__V_MAX_I16::~Inst_VOP3__V_MAX_I16
~Inst_VOP3__V_MAX_I16()
Definition: instructions.cc:27244
gem5::VegaISA::Inst_SOPP__S_SET_GPR_IDX_MODE::Inst_SOPP__S_SET_GPR_IDX_MODE
Inst_SOPP__S_SET_GPR_IDX_MODE(InFmt_SOPP *)
Definition: instructions.cc:5023
gem5::VegaISA::Inst_VOP1__V_SQRT_F64::Inst_VOP1__V_SQRT_F64
Inst_VOP1__V_SQRT_F64(InFmt_VOP1 *)
Definition: instructions.cc:9482
gem5::VegaISA::Inst_DS__DS_WRXCHG2_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37074
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11567
gem5::VegaISA::Inst_VOP1__V_FLOOR_F16::Inst_VOP1__V_FLOOR_F16
Inst_VOP1__V_FLOOR_F16(InFmt_VOP1 *)
Definition: instructions.cc:10220
gem5::VegaISA::Inst_VOP1__V_RSQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9345
gem5::VegaISA::Inst_DS__DS_READ2ST64_B64::~Inst_DS__DS_READ2ST64_B64
~Inst_DS__DS_READ2ST64_B64()
Definition: instructions.cc:37341
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23678
gem5::VegaISA::Inst_SOP1__S_OR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3120
gem5::VegaISA::Inst_DS__DS_WRITE_B96::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38420
gem5::VegaISA::Inst_VOP3__V_LOG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28817
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41446
gem5::VegaISA::Inst_VOP1__V_CEIL_F16::~Inst_VOP1__V_CEIL_F16
~Inst_VOP1__V_CEIL_F16()
Definition: instructions.cc:10248
gem5::VegaISA::Inst_SOPC__S_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3926
gem5::VegaISA::Inst_VOPC__V_CMP_T_U32::Inst_VOPC__V_CMP_T_U32
Inst_VOPC__V_CMP_T_U32(InFmt_VOPC *)
Definition: instructions.cc:15363
gem5::VegaISA::Inst_VOP3__V_FFBH_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29329
gem5::VegaISA::Inst_VOP3__V_SUB_F16::Inst_VOP3__V_SUB_F16
Inst_VOP3__V_SUB_F16(InFmt_VOP3A *)
Definition: instructions.cc:26740
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38769
gem5::VegaISA::Inst_VOPC__V_CMP_F_F16::~Inst_VOPC__V_CMP_F_F16
~Inst_VOPC__V_CMP_F_F16()
Definition: instructions.cc:10964
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I32::Inst_VOPC__V_CMPX_GE_I32
Inst_VOPC__V_CMPX_GE_I32(InFmt_VOPC *)
Definition: instructions.cc:15596
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18979
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F16::~Inst_VOPC__V_CMPX_EQ_F16
~Inst_VOPC__V_CMPX_EQ_F16()
Definition: instructions.cc:11327
gem5::VegaISA::Inst_DS__DS_ADD_RTN_F32::Inst_DS__DS_ADD_RTN_F32
Inst_DS__DS_ADD_RTN_F32(InFmt_DS *)
Definition: instructions.cc:35416
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29634
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U32::~Inst_VOP3__V_CMP_NE_U32
~Inst_VOP3__V_CMP_NE_U32()
Definition: instructions.cc:23047
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U16::Inst_VOP3__V_CMP_GT_U16
Inst_VOP3__V_CMP_GT_U16(InFmt_VOP3A *)
Definition: instructions.cc:21680
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I16::~Inst_VOPC__V_CMPX_LE_I16
~Inst_VOPC__V_CMPX_LE_I16()
Definition: instructions.cc:14450
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43840
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I16::~Inst_VOP3__V_CMPX_GT_I16
~Inst_VOP3__V_CMPX_GT_I16()
Definition: instructions.cc:22017
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U16::~Inst_VOP3__V_CMPX_T_U16
~Inst_VOP3__V_CMPX_T_U16()
Definition: instructions.cc:22493
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13309
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F32::~Inst_VOP3__V_CMP_TRU_F32
~Inst_VOP3__V_CMP_TRU_F32()
Definition: instructions.cc:18835
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:43938
gem5::VegaISA::Inst_VOP3__V_MUL_LO_U32::Inst_VOP3__V_MUL_LO_U32
Inst_VOP3__V_MUL_LO_U32(InFmt_VOP3A *)
Definition: instructions.cc:33307
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I32::~Inst_VOP3__V_CMP_LT_I32
~Inst_VOP3__V_CMP_LT_I32()
Definition: instructions.cc:22551
gem5::VegaISA::Inst_VINTRP
Definition: op_encodings.hh:416
gem5::Wavefront
Definition: wavefront.hh:60
gem5::VegaISA::Inst_VOP2__V_MAX_U16::Inst_VOP2__V_MAX_U16
Inst_VOP2__V_MAX_U16(InFmt_VOP2 *)
Definition: instructions.cc:7838
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::Inst_FLAT__FLAT_ATOMIC_XOR_X2
Inst_FLAT__FLAT_ATOMIC_XOR_X2(InFmt_FLAT *)
Definition: instructions.cc:45693
gem5::VegaISA::Inst_DS__DS_READ_U16::Inst_DS__DS_READ_U16
Inst_DS__DS_READ_U16(InFmt_DS *)
Definition: instructions.cc:35783
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39778
gem5::VegaISA::Inst_SOPP__S_CBRANCH_SCC1::Inst_SOPP__S_CBRANCH_SCC1
Inst_SOPP__S_CBRANCH_SCC1(InFmt_SOPP *)
Definition: instructions.cc:4447
gem5::VegaISA::Inst_DS__DS_SUB_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36801
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U32::Inst_VOP3__V_CMPX_T_U32
Inst_VOP3__V_CMPX_T_U32(InFmt_VOP3A *)
Definition: instructions.cc:23801
gem5::VegaISA::Inst_SOP1__S_BCNT1_I32_B32::~Inst_SOP1__S_BCNT1_I32_B32
~Inst_SOP1__S_BCNT1_I32_B32()
Definition: instructions.cc:2527
gem5::VegaISA::ScalarRegI16
int16_t ScalarRegI16
Definition: gpu_registers.hh:152
gem5::VegaISA::Inst_VOP3__V_CVT_F32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28060
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11588
gem5::VegaISA::Inst_VOP3__V_CMP_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17606
gem5::VegaISA::Inst_VOPC__V_CMP_T_I16::~Inst_VOPC__V_CMP_T_I16
~Inst_VOPC__V_CMP_T_I16()
Definition: instructions.cc:14067
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38877
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U64::Inst_VOPC__V_CMPX_EQ_U64
Inst_VOPC__V_CMPX_EQ_U64(InFmt_VOPC *)
Definition: instructions.cc:16774
gem5::VegaISA::Inst_VOP3__V_MIN3_F32::Inst_VOP3__V_MIN3_F32
Inst_VOP3__V_MIN3_F32(InFmt_VOP3A *)
Definition: instructions.cc:30888
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15310
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39269
gem5::VegaISA::Inst_VOP3__V_CVT_PKNORM_I16_F32::~Inst_VOP3__V_CVT_PKNORM_I16_F32
~Inst_VOP3__V_CVT_PKNORM_I16_F32()
Definition: instructions.cc:33927
gem5::VegaISA::Inst_VOP1__V_READFIRSTLANE_B32::~Inst_VOP1__V_READFIRSTLANE_B32
~Inst_VOP1__V_READFIRSTLANE_B32()
Definition: instructions.cc:8218
gem5::VegaISA::Inst_SMEM__S_DCACHE_INV_VOL::~Inst_SMEM__S_DCACHE_INV_VOL
~Inst_SMEM__S_DCACHE_INV_VOL()
Definition: instructions.cc:5911
gem5::VegaISA::InFmt_VOP2::VSRC1
unsigned int VSRC1
Definition: gpu_decoder.hh:1804
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39002
gem5::VegaISA::Inst_VOP3__V_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25883
gem5::VegaISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3228
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:42115
gem5::VegaISA::Inst_SOP1__S_BREV_B64::Inst_SOP1__S_BREV_B64
Inst_SOP1__S_BREV_B64(InFmt_SOP1 *)
Definition: instructions.cc:2435
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F16::Inst_VOP3__V_CMP_NGE_F16
Inst_VOP3__V_CMP_NGE_F16(InFmt_VOP3A *)
Definition: instructions.cc:17778
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL_O::~Inst_MIMG__IMAGE_GATHER4_C_B_CL_O
~Inst_MIMG__IMAGE_GATHER4_C_B_CL_O()
Definition: instructions.cc:43630
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I64::~Inst_VOP3__V_CMP_LE_I64
~Inst_VOP3__V_CMP_LE_I64()
Definition: instructions.cc:23955
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F64::Inst_VOP3__V_CMPX_U_F64
Inst_VOP3__V_CMPX_U_F64(InFmt_VOP3A *)
Definition: instructions.cc:20752
gem5::VegaISA::Inst_DS__DS_MIN_U32::~Inst_DS__DS_MIN_U32
~Inst_DS__DS_MIN_U32()
Definition: instructions.cc:34219
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
Inst_MUBUF__BUFFER_ATOMIC_SUB_X2(InFmt_MUBUF *)
Definition: instructions.cc:40997
gem5::VegaISA::Inst_VOP3__V_CMP_T_I64::Inst_VOP3__V_CMP_T_I64
Inst_VOP3__V_CMP_T_I64(InFmt_VOP3A *)
Definition: instructions.cc:24124
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41854
gem5::VegaISA::Inst_VOP3__V_CMP_T_U16::~Inst_VOP3__V_CMP_T_U16
~Inst_VOP3__V_CMP_T_U16()
Definition: instructions.cc:21818
gem5::VegaISA::Inst_VOP3A
Definition: op_encodings.hh:429
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22734
gem5::VegaISA::Inst_VOP1__V_MOV_FED_B32::Inst_VOP1__V_MOV_FED_B32
Inst_VOP1__V_MOV_FED_B32(InFmt_VOP1 *)
Definition: instructions.cc:8485
gem5::VegaISA::Inst_VOP2__V_MAX_F32::Inst_VOP2__V_MAX_F32
Inst_VOP2__V_MAX_F32(InFmt_VOP2 *)
Definition: instructions.cc:6470
gem5::VegaISA::Inst_DS__DS_RSUB_RTN_U64::Inst_DS__DS_RSUB_RTN_U64
Inst_DS__DS_RSUB_RTN_U64(InFmt_DS *)
Definition: instructions.cc:36807
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19429
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SSHORT::Inst_FLAT__FLAT_LOAD_SSHORT
Inst_FLAT__FLAT_LOAD_SSHORT(InFmt_FLAT *)
Definition: instructions.cc:44003
gem5::VegaISA::Inst_VOP2__V_MADAK_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7547
gem5::VegaISA::Inst_VOP3__V_MAX3_I32::~Inst_VOP3__V_MAX3_I32
~Inst_VOP3__V_MAX3_I32()
Definition: instructions.cc:31108
gem5::VegaISA::Inst_VOP1__V_CVT_OFF_F32_I4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8629
gem5::VegaISA::Inst_SOP2__S_CSELECT_B32::~Inst_SOP2__S_CSELECT_B32
~Inst_SOP2__S_CSELECT_B32()
Definition: instructions.cc:393
gem5::VegaISA::Inst_VOP2__V_SUB_CO_U32::Inst_VOP2__V_SUB_CO_U32
Inst_VOP2__V_SUB_CO_U32(InFmt_VOP2 *)
Definition: instructions.cc:7176
gem5::VegaISA::Inst_SOP1__S_SETPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3004
gem5::VegaISA::Inst_SOP2__S_AND_B32::Inst_SOP2__S_AND_B32
Inst_SOP2__S_AND_B32(InFmt_SOP2 *)
Definition: instructions.cc:447
gem5::VegaISA::Inst_DS__DS_GWS_BARRIER::Inst_DS__DS_GWS_BARRIER
Inst_DS__DS_GWS_BARRIER(InFmt_DS *)
Definition: instructions.cc:37919
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U64::~Inst_VOPC__V_CMPX_F_U64
~Inst_VOPC__V_CMPX_F_U64()
Definition: instructions.cc:16716
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F16::~Inst_VOPC__V_CMP_NEQ_F16
~Inst_VOPC__V_CMP_NEQ_F16()
Definition: instructions.cc:11224
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F32::~Inst_VOPC__V_CMPX_NLT_F32
~Inst_VOPC__V_CMPX_NLT_F32()
Definition: instructions.cc:12666
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F16::~Inst_VOP3__V_CMPX_NGE_F16
~Inst_VOP3__V_CMPX_NGE_F16()
Definition: instructions.cc:18152
gem5::VegaISA::Inst_SOP2__S_XNOR_B32::Inst_SOP2__S_XNOR_B32
Inst_SOP2__S_XNOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:895
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::~Inst_MUBUF__BUFFER_ATOMIC_SWAP
~Inst_MUBUF__BUFFER_ATOMIC_SWAP()
Definition: instructions.cc:40525
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F16::Inst_VOPC__V_CMP_GT_F16
Inst_VOPC__V_CMP_GT_F16(InFmt_VOPC *)
Definition: instructions.cc:11037
gem5::VegaISA::VecOperand
Definition: operand.hh:101
gem5::VegaISA::ScalarOperand::rawData
std::enable_if< Condition, DataType >::type rawData() const
we store scalar data in a std::array, however if we need the full operand data we use this method to ...
Definition: operand.hh:391
gem5::VegaISA::Inst_VOP3__V_FFBH_U32::Inst_VOP3__V_FFBH_U32
Inst_VOP3__V_FFBH_U32(InFmt_VOP3A *)
Definition: instructions.cc:29315
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F16::~Inst_VOPC__V_CMP_NLG_F16
~Inst_VOPC__V_CMP_NLG_F16()
Definition: instructions.cc:11164
gem5::VegaISA::Inst_VOP3__V_ADD_F64::~Inst_VOP3__V_ADD_F64
~Inst_VOP3__V_ADD_F64()
Definition: instructions.cc:32941
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F64::Inst_VOP3__V_CMPX_NLT_F64
Inst_VOP3__V_CMPX_NLT_F64(InFmt_VOP3A *)
Definition: instructions.cc:21109
gem5::VegaISA::Inst_SOPP__S_NOP::Inst_SOPP__S_NOP
Inst_SOPP__S_NOP(InFmt_SOPP *)
Definition: instructions.cc:4192
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I64::Inst_VOP3__V_CMPX_LE_I64
Inst_VOP3__V_CMPX_LE_I64(InFmt_VOP3A *)
Definition: instructions.cc:24595
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22690
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F16::Inst_VOPC__V_CMP_EQ_F16
Inst_VOPC__V_CMP_EQ_F16(InFmt_VOPC *)
Definition: instructions.cc:10997
gem5::VegaISA::Inst_DS__DS_WRXCHG_RTN_B64::~Inst_DS__DS_WRXCHG_RTN_B64
~Inst_DS__DS_WRXCHG_RTN_B64()
Definition: instructions.cc:37046
gem5::VegaISA::Inst_VOP2__V_MUL_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6313
gem5::VegaISA::Inst_DS__DS_OR_RTN_B32::~Inst_DS__DS_OR_RTN_B32
~Inst_DS__DS_OR_RTN_B32()
Definition: instructions.cc:35174
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F16::Inst_VOPC__V_CMPX_EQ_F16
Inst_VOPC__V_CMPX_EQ_F16(InFmt_VOPC *)
Definition: instructions.cc:11319
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40077
gem5::VegaISA::Inst_SOP2__S_ASHR_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1104
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ()
Definition: instructions.cc:41368
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_O::~Inst_MIMG__IMAGE_GATHER4_C_O
~Inst_MIMG__IMAGE_GATHER4_C_O()
Definition: instructions.cc:43550
gem5::VegaISA::Inst_MIMG__IMAGE_GET_RESINFO::Inst_MIMG__IMAGE_GET_RESINFO
Inst_MIMG__IMAGE_GET_RESINFO(InFmt_MIMG *)
Definition: instructions.cc:42158
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORD::Inst_FLAT__FLAT_STORE_DWORD
Inst_FLAT__FLAT_STORE_DWORD(InFmt_FLAT *)
Definition: instructions.cc:44388
gem5::VegaISA::Inst_VOP1__V_EXP_F16::Inst_VOP1__V_EXP_F16
Inst_VOP1__V_EXP_F16(InFmt_VOP1 *)
Definition: instructions.cc:10143
gem5::VegaISA::NumVecElemPerVecReg
const int NumVecElemPerVecReg(64)
gem5::VegaISA::Inst_VOP2__V_MIN_I16::Inst_VOP2__V_MIN_I16
Inst_VOP2__V_MIN_I16(InFmt_VOP2 *)
Definition: instructions.cc:7937
gem5::VegaISA::Inst_VOP3__V_DIV_FMAS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31935
gem5::VegaISA::Inst_VOPC__V_CMP_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11898
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U16::Inst_VOP3__V_CMPX_GT_U16
Inst_VOP3__V_CMPX_GT_U16(InFmt_VOP3A *)
Definition: instructions.cc:22347
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP()
Definition: instructions.cc:42224
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41927
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F32::~Inst_VOP3__V_CMPX_GE_F32
~Inst_VOP3__V_CMPX_GE_F32()
Definition: instructions.cc:19084
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I32::~Inst_VOPC__V_CMPX_NE_I32
~Inst_VOPC__V_CMPX_NE_I32()
Definition: instructions.cc:15568
gem5::VegaISA::Inst_VOP2__V_SUBREV_U32::~Inst_VOP2__V_SUBREV_U32
~Inst_VOP2__V_SUBREV_U32()
Definition: instructions.cc:8103
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42577
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44558
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42414
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44440
gem5::Wavefront::S_STALLED_SLEEP
@ S_STALLED_SLEEP
Definition: wavefront.hh:74
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B32::Inst_VOP3__V_LSHRREV_B32
Inst_VOP3__V_LSHRREV_B32(InFmt_VOP3A *)
Definition: instructions.cc:26042
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18421
gem5::VegaISA::Inst_VOP3__V_CMP_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19459
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11251
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43378
gem5::VegaISA::Inst_DS__DS_MAX_RTN_F64::Inst_DS__DS_MAX_RTN_F64
Inst_DS__DS_MAX_RTN_F64(InFmt_DS *)
Definition: instructions.cc:37178
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F16::~Inst_VOPC__V_CMP_CLASS_F16
~Inst_VOPC__V_CMP_CLASS_F16()
Definition: instructions.cc:10898
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_L::Inst_MIMG__IMAGE_SAMPLE_C_L
Inst_MIMG__IMAGE_SAMPLE_C_L(InFmt_MIMG *)
Definition: instructions.cc:42797
gem5::VegaISA::Inst_SOPK__S_CMPK_EQ_U32::~Inst_SOPK__S_CMPK_EQ_U32
~Inst_SOPK__S_CMPK_EQ_U32()
Definition: instructions.cc:1786
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F16::Inst_VOP3__V_CMPX_NLE_F16
Inst_VOP3__V_CMPX_NLE_F16(InFmt_VOP3A *)
Definition: instructions.cc:18209
gem5::VegaISA::Inst_MIMG__IMAGE_STORE::~Inst_MIMG__IMAGE_STORE
~Inst_MIMG__IMAGE_STORE()
Definition: instructions.cc:42039
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F16::Inst_VOPC__V_CMP_TRU_F16
Inst_VOPC__V_CMP_TRU_F16(InFmt_VOPC *)
Definition: instructions.cc:11257
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U64::~Inst_VOPC__V_CMPX_GE_U64
~Inst_VOPC__V_CMPX_GE_U64()
Definition: instructions.cc:16921
gem5::VegaISA::Inst_SOP1__S_BCNT1_I32_B64::~Inst_SOP1__S_BCNT1_I32_B64
~Inst_SOP1__S_BCNT1_I32_B64()
Definition: instructions.cc:2557
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I64::Inst_VOP3__V_CMPX_NE_I64
Inst_VOP3__V_CMPX_NE_I64(InFmt_VOP3A *)
Definition: instructions.cc:24687
gem5::VegaISA::Inst_SOP1__S_FF0_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2624
gem5::VegaISA::Inst_SOP2__S_ANDN2_B64::~Inst_SOP2__S_ANDN2_B64
~Inst_SOP2__S_ANDN2_B64()
Definition: instructions.cc:677
gem5::VegaISA::Inst_VOP2__V_SUB_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6132
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F64::~Inst_VOPC__V_CMP_NLE_F64
~Inst_VOPC__V_CMP_NLE_F64()
Definition: instructions.cc:13139
gem5::VegaISA::Inst_SOP2__S_ORN2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:717
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::~Inst_MUBUF__BUFFER_STORE_FORMAT_XY
~Inst_MUBUF__BUFFER_STORE_FORMAT_XY()
Definition: instructions.cc:38794
gem5::VegaISA::Inst_SOPK__S_CMPK_LE_U32::Inst_SOPK__S_CMPK_LE_U32
Inst_SOPK__S_CMPK_LE_U32(InFmt_SOPK *)
Definition: instructions.cc:1915
gem5::VegaISA::Inst_VOP2__V_MADMK_F16::~Inst_VOP2__V_MADMK_F16
~Inst_VOP2__V_MADMK_F16()
Definition: instructions.cc:7511
gem5::VegaISA::Inst_DS__DS_GWS_BARRIER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37958
gem5::VegaISA::Inst_VOP3__V_SIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30055
gem5::VegaISA::Inst_VOP3__V_MUL_HI_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25726
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U64::Inst_VOP3__V_CMPX_F_U64
Inst_VOP3__V_CMPX_F_U64(InFmt_VOP3A *)
Definition: instructions.cc:24810
gem5::VegaISA::Inst_SOPP__S_INCPERFLEVEL::~Inst_SOPP__S_INCPERFLEVEL
~Inst_SOPP__S_INCPERFLEVEL()
Definition: instructions.cc:4840
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F16::Inst_VOPC__V_CMP_NEQ_F16
Inst_VOPC__V_CMP_NEQ_F16(InFmt_VOPC *)
Definition: instructions.cc:11217
gem5::VegaISA::Inst_DS__DS_READ_B96::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38534
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_F64::Inst_DS__DS_MIN_SRC2_F64
Inst_DS__DS_MIN_SRC2_F64(InFmt_DS *)
Definition: instructions.cc:38313
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20769
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE0::~Inst_VOP3__V_CVT_F32_UBYTE0
~Inst_VOP3__V_CVT_F32_UBYTE0()
Definition: instructions.cc:28149
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F32::~Inst_VOP3__V_CMP_GT_F32
~Inst_VOP3__V_CMP_GT_F32()
Definition: instructions.cc:18449
gem5::VegaISA::Inst_VOP1__V_FLOOR_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9183
gem5::VegaISA::Inst_VOP3__V_MUL_F32::~Inst_VOP3__V_MUL_F32
~Inst_VOP3__V_MUL_F32()
Definition: instructions.cc:25484
gem5::VegaISA::REG_PI
@ REG_PI
Definition: gpu_registers.hh:122
gem5::VegaISA::Inst_SOPK__S_MOVK_I32::Inst_SOPK__S_MOVK_I32
Inst_SOPK__S_MOVK_I32(InFmt_SOPK *)
Definition: instructions.cc:1564
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::~Inst_SMEM__S_BUFFER_LOAD_DWORDX2
~Inst_SMEM__S_BUFFER_LOAD_DWORDX2()
Definition: instructions.cc:5384
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16553
gem5::VegaISA::VecElemU16
uint16_t VecElemU16
Definition: gpu_registers.hh:163
gem5::VegaISA::Inst_DS__DS_INC_RTN_U64::~Inst_DS__DS_INC_RTN_U64
~Inst_DS__DS_INC_RTN_U64()
Definition: instructions.cc:36834
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U32::~Inst_VOP3__V_CMP_LE_U32
~Inst_VOP3__V_CMP_LE_U32()
Definition: instructions.cc:22959
gem5::VegaISA::InFmt_VOP3_1::NEG
unsigned int NEG
Definition: gpu_decoder.hh:1824
gem5::VegaISA::Inst_VOPC__V_CMP_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14074
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U32::~Inst_VOP3__V_CMPX_NE_U32
~Inst_VOP3__V_CMPX_NE_U32()
Definition: instructions.cc:23717
gem5::VegaISA::Inst_DS__DS_ADD_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36161
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23294
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F32::~Inst_VOP3__V_CMP_NLG_F32
~Inst_VOP3__V_CMP_NLG_F32()
Definition: instructions.cc:18659
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I16::Inst_VOP3__V_CMPX_LT_I16
Inst_VOP3__V_CMPX_LT_I16(InFmt_VOP3A *)
Definition: instructions.cc:21871
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F16::~Inst_VOPC__V_CMPX_NLT_F16
~Inst_VOPC__V_CMPX_NLT_F16()
Definition: instructions.cc:11581
gem5::VegaISA::Inst_VOP2::extData
InstFormat extData
Definition: op_encodings.hh:272
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44661
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::~Inst_FLAT__FLAT_ATOMIC_SMIN_X2
~Inst_FLAT__FLAT_ATOMIC_SMIN_X2()
Definition: instructions.cc:45532
gem5::VegaISA::Inst_VOP3__V_MQSAD_U32_U8::~Inst_VOP3__V_MQSAD_U32_U8
~Inst_VOP3__V_MQSAD_U32_U8()
Definition: instructions.cc:32117
gem5::VegaISA::Inst_VOP2__V_SUB_F32::Inst_VOP2__V_SUB_F32
Inst_VOP2__V_SUB_F32(InFmt_VOP2 *)
Definition: instructions.cc:6117
gem5::VegaISA::Inst_SMEM__S_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5655
gem5::VegaISA::Inst_VOP3__V_MIN3_U32::~Inst_VOP3__V_MIN3_U32
~Inst_VOP3__V_MIN3_U32()
Definition: instructions.cc:31001
gem5::VegaISA::Inst_VOP3__V_CMP_U_F16::~Inst_VOP3__V_CMP_U_F16
~Inst_VOP3__V_CMP_U_F16()
Definition: instructions.cc:17765
gem5::VegaISA::Inst_VOP1__V_CVT_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10045
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F16::Inst_VOP3__V_CMPX_NEQ_F16
Inst_VOP3__V_CMPX_NEQ_F16(InFmt_VOP3A *)
Definition: instructions.cc:18231
gem5::VegaISA::Inst_VOP3__V_ADD_LSHL_U32::Inst_VOP3__V_ADD_LSHL_U32
Inst_VOP3__V_ADD_LSHL_U32(InFmt_VOP3A *)
Definition: instructions.cc:32319
gem5::VegaISA::Inst_DS__DS_MAX_RTN_I32::~Inst_DS__DS_MAX_RTN_I32
~Inst_DS__DS_MAX_RTN_I32()
Definition: instructions.cc:35090
gem5::VegaISA::Inst_VOP3__V_CUBETC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30434
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11091
gem5::VegaISA::Inst_VOP2__V_MAX_I32::Inst_VOP2__V_MAX_I32
Inst_VOP2__V_MAX_I32(InFmt_VOP2 *)
Definition: instructions.cc:6537
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I64::~Inst_VOPC__V_CMPX_GE_I64
~Inst_VOPC__V_CMPX_GE_I64()
Definition: instructions.cc:16651
gem5::VegaISA::Inst_SMEM__S_DCACHE_WB_VOL::Inst_SMEM__S_DCACHE_WB_VOL
Inst_SMEM__S_DCACHE_WB_VOL(InFmt_SMEM *)
Definition: instructions.cc:5924
gem5::VegaISA::Inst_VOP3__V_RNDNE_F32::Inst_VOP3__V_RNDNE_F32
Inst_VOP3__V_RNDNE_F32(InFmt_VOP3A *)
Definition: instructions.cc:28682
gem5::VegaISA::Inst_SOPK__S_CMPK_LG_U32::~Inst_SOPK__S_CMPK_LG_U32
~Inst_SOPK__S_CMPK_LG_U32()
Definition: instructions.cc:1813
gem5::VegaISA::Inst_DS__DS_MAX_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37198
gem5::VegaISA::Inst_SOP1__S_BCNT0_I32_B64::~Inst_SOP1__S_BCNT0_I32_B64
~Inst_SOP1__S_BCNT0_I32_B64()
Definition: instructions.cc:2497
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41140
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40443
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11418
gem5::VegaISA::Inst_SOPP__S_CBRANCH_SCC0::Inst_SOPP__S_CBRANCH_SCC0
Inst_SOPP__S_CBRANCH_SCC0(InFmt_SOPP *)
Definition: instructions.cc:4416
gem5::VegaISA::Inst_DS__DS_MIN_I32::Inst_DS__DS_MIN_I32
Inst_DS__DS_MIN_I32(InFmt_DS *)
Definition: instructions.cc:34172
gem5::VegaISA::Inst_SOP2__S_ANDN2_B32::~Inst_SOP2__S_ANDN2_B32
~Inst_SOP2__S_ANDN2_B32()
Definition: instructions.cc:645
gem5::VegaISA::Inst_VOP3__V_MQSAD_PK_U16_U8::Inst_VOP3__V_MQSAD_PK_U16_U8
Inst_VOP3__V_MQSAD_PK_U16_U8(InFmt_VOP3A *)
Definition: instructions.cc:32090
gem5::VegaISA::Inst_DS__DS_OR_B32::~Inst_DS__DS_OR_B32
~Inst_DS__DS_OR_B32()
Definition: instructions.cc:34286
gem5::VegaISA::Inst_VOP3__V_CVT_PKACCUM_U8_F32::Inst_VOP3__V_CVT_PKACCUM_U8_F32
Inst_VOP3__V_CVT_PKACCUM_U8_F32(InFmt_VOP3A *)
Definition: instructions.cc:32751
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38737
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5259
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F16::~Inst_VOP3__V_CMPX_CLASS_F16
~Inst_VOP3__V_CMPX_CLASS_F16()
Definition: instructions.cc:17566
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15775
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW(InFmt_MUBUF *)
Definition: instructions.cc:38986
gem5::VegaISA::VecElemI8
int8_t VecElemI8
Definition: gpu_registers.hh:162
gem5::VegaISA::Inst_VOP3__V_SUBREV_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26527
gem5::VegaISA::ScalarOperand::rawDataPtr
void * rawDataPtr()
Definition: operand.hh:402
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43799
gem5::VegaISA::Inst_DS__DS_AND_RTN_B64::Inst_DS__DS_AND_RTN_B64
Inst_DS__DS_AND_RTN_B64(InFmt_DS *)
Definition: instructions.cc:36956
gem5::VegaISA::Inst_DS__DS_INC_RTN_U32::Inst_DS__DS_INC_RTN_U32
Inst_DS__DS_INC_RTN_U32(InFmt_DS *)
Definition: instructions.cc:35022
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SUB::Inst_FLAT__FLAT_ATOMIC_SUB
Inst_FLAT__FLAT_ATOMIC_SUB(InFmt_FLAT *)
Definition: instructions.cc:44875
gem5::VegaISA::Inst_VOP3__V_CVT_RPI_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27958
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I64::Inst_VOPC__V_CMP_NE_I64
Inst_VOPC__V_CMP_NE_I64(InFmt_VOPC *)
Definition: instructions.cc:16091
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41715
gem5::VegaISA::Inst_VOP3__V_CMP_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24457
gem5::VegaISA::Inst_SOPP__S_SLEEP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4719
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2(InFmt_MUBUF *)
Definition: instructions.cc:41057
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_O::Inst_MIMG__IMAGE_SAMPLE_D_O
Inst_MIMG__IMAGE_SAMPLE_D_O(InFmt_MIMG *)
Definition: instructions.cc:42914
gem5::VegaISA::Inst_SOPK__S_MULK_I32::~Inst_SOPK__S_MULK_I32
~Inst_SOPK__S_MULK_I32()
Definition: instructions.cc:1980
gem5::VegaISA::Inst_DS__DS_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34294
gem5::ComputeUnit::stats
gem5::ComputeUnit::ComputeUnitStats stats
gem5::VegaISA::Inst_VOP1__V_CVT_I32_F32::Inst_VOP1__V_CVT_I32_F32
Inst_VOP1__V_CVT_I32_F32(InFmt_VOP1 *)
Definition: instructions.cc:8439
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U64::Inst_VOPC__V_CMP_GE_U64
Inst_VOPC__V_CMP_GE_U64(InFmt_VOPC *)
Definition: instructions.cc:16378
gem5::VegaISA::Inst_VOP3__V_SQRT_F32::Inst_VOP3__V_SQRT_F32
Inst_VOP3__V_SQRT_F32(InFmt_VOP3A *)
Definition: instructions.cc:29075
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44782
gem5::VegaISA::Inst_SOP2__S_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:589
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4905
gem5::VegaISA::Inst_VOP3__V_CMP_F_F64::Inst_VOP3__V_CMP_F_F64
Inst_VOP3__V_CMP_F_F64(InFmt_VOP3A *)
Definition: instructions.cc:19445
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20529
gem5::VegaISA::Inst_VOP3__V_MIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27183
gem5::VegaISA::InFmt_VOP3A
Definition: gpu_decoder.hh:1810
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U16::~Inst_VOP3__V_CMPX_EQ_U16
~Inst_VOP3__V_CMPX_EQ_U16()
Definition: instructions.cc:22263
gem5::VegaISA::Inst_VOP3__V_MAX_F32::~Inst_VOP3__V_MAX_F32
~Inst_VOP3__V_MAX_F32()
Definition: instructions.cc:25821
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_CL_O::~Inst_MIMG__IMAGE_GATHER4_CL_O
~Inst_MIMG__IMAGE_GATHER4_CL_O()
Definition: instructions.cc:43450
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U16::~Inst_VOPC__V_CMPX_EQ_U16
~Inst_VOPC__V_CMPX_EQ_U16()
Definition: instructions.cc:14685
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13876
gem5::VegaISA::Inst_SOPP__S_SENDMSGHALT::Inst_SOPP__S_SENDMSGHALT
Inst_SOPP__S_SENDMSGHALT(InFmt_SOPP *)
Definition: instructions.cc:4769
gem5::VegaISA::Inst_VOP3__V_MQSAD_PK_U16_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32105
gem5::VegaISA::Inst_VOP3__V_SUBBREV_CO_U32::~Inst_VOP3__V_SUBBREV_CO_U32
~Inst_VOP3__V_SUBBREV_CO_U32()
Definition: instructions.cc:26674
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37752
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12904
gem5::VegaISA::Inst_VOP3__V_SUBREV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26778
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F64::~Inst_VOPC__V_CMPX_NLE_F64
~Inst_VOPC__V_CMPX_NLE_F64()
Definition: instructions.cc:13704
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5362
gem5::VegaISA::Inst_DS__DS_DEC_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35058
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B32::~Inst_VOP3__V_LSHLREV_B32
~Inst_VOP3__V_LSHLREV_B32()
Definition: instructions.cc:26138
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
Inst_MUBUF__BUFFER_LOAD_FORMAT_XY(InFmt_MUBUF *)
Definition: instructions.cc:38658
gem5::VegaISA::Inst_VOPC__V_CMP_F_F32::~Inst_VOPC__V_CMP_F_F32
~Inst_VOPC__V_CMP_F_F32()
Definition: instructions.cc:11622
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::~Inst_MIMG__IMAGE_ATOMIC_SWAP
~Inst_MIMG__IMAGE_ATOMIC_SWAP()
Definition: instructions.cc:42194
gem5::VegaISA::Inst_VOP2__V_SUBB_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7322
gem5::VegaISA::Inst_DS__DS_DEC_SRC2_U32::~Inst_DS__DS_DEC_SRC2_U32
~Inst_DS__DS_DEC_SRC2_U32()
Definition: instructions.cc:37513
gem5::VegaISA::Inst_VOP3__V_MED3_I32::~Inst_VOP3__V_MED3_I32
~Inst_VOP3__V_MED3_I32()
Definition: instructions.cc:31260
gem5::VegaISA::Inst_VOP3__V_FRACT_F32::~Inst_VOP3__V_FRACT_F32
~Inst_VOP3__V_FRACT_F32()
Definition: instructions.cc:28567
gem5::VegaISA::Inst_VOP3__V_MAC_F16::~Inst_VOP3__V_MAC_F16
~Inst_VOP3__V_MAC_F16()
Definition: instructions.cc:26813
gem5::VegaISA::Inst_VOP2__V_MAC_F32::Inst_VOP2__V_MAC_F32
Inst_VOP2__V_MAC_F32(InFmt_VOP2 *)
Definition: instructions.cc:6950
gem5::VegaISA::Inst_SOP1__S_CMOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2237
gem5::VegaISA::Inst_SOP2__S_BFE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1379
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14130
gem5::VegaISA::Inst_VOP2__V_ADD_F16::~Inst_VOP2__V_ADD_F16
~Inst_VOP2__V_ADD_F16()
Definition: instructions.cc:7401
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F32::~Inst_VOP3__V_CMP_NEQ_F32
~Inst_VOP3__V_CMP_NEQ_F32()
Definition: instructions.cc:18765
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I32::Inst_VOPC__V_CMPX_EQ_I32
Inst_VOPC__V_CMPX_EQ_I32(InFmt_VOPC *)
Definition: instructions.cc:15456
gem5::VegaISA::Inst_SOPK__S_CMPK_LT_I32::~Inst_SOPK__S_CMPK_LT_I32
~Inst_SOPK__S_CMPK_LT_I32()
Definition: instructions.cc:1732
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23171
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_UBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:43904
gem5::VegaISA::Inst_SOPC__S_CMP_LE_I32::~Inst_SOPC__S_CMP_LE_I32
~Inst_SOPC__S_CMP_LE_I32()
Definition: instructions.cc:3779
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21374
gem5::VegaISA::Inst_VOP3__V_LERP_U8::~Inst_VOP3__V_LERP_U8
~Inst_VOP3__V_LERP_U8()
Definition: instructions.cc:30736
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_L_O::Inst_MIMG__IMAGE_GATHER4_L_O
Inst_MIMG__IMAGE_GATHER4_L_O(InFmt_MIMG *)
Definition: instructions.cc:43463
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O::~Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O
~Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O()
Definition: instructions.cc:43097
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18631
gem5::VegaISA::Inst_DS__DS_READ2ST64_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35617
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2()
Definition: instructions.cc:41070
gem5::VegaISA::Inst_VOP3__V_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26190
gem5::VegaISA::Inst_DS__DS_CMPST_B64::Inst_DS__DS_CMPST_B64
Inst_DS__DS_CMPST_B64(InFmt_DS *)
Definition: instructions.cc:36660
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U32::~Inst_VOPC__V_CMP_NE_U32
~Inst_VOPC__V_CMP_NE_U32()
Definition: instructions.cc:15303
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_CL_O::Inst_MIMG__IMAGE_GATHER4_CL_O
Inst_MIMG__IMAGE_GATHER4_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43443
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F16::Inst_VOP3__V_CMPX_EQ_F16
Inst_VOP3__V_CMPX_EQ_F16(InFmt_VOP3A *)
Definition: instructions.cc:17987
gem5::VegaISA::Inst_VOP2__V_MAC_F32::~Inst_VOP2__V_MAC_F32
~Inst_VOP2__V_MAC_F32()
Definition: instructions.cc:6958
gem5::VegaISA::Inst_DS__DS_READ_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35714
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44402
gem5::VegaISA::Inst_DS__DS_MIN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36351
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13146
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41896
gem5::VegaISA::Inst_DS__DS_READ2ST64_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37382
gem5::VegaISA::Inst_VOP1__V_RNDNE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8987
gem5::VegaISA::Inst_DS__DS_READ_B128::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38598
gem5::VegaISA::Inst_VOP3__V_CVT_OFF_F32_I4::Inst_VOP3__V_CVT_OFF_F32_I4
Inst_VOP3__V_CVT_OFF_F32_I4(InFmt_VOP3A *)
Definition: instructions.cc:28025
gem5::VegaISA::Inst_SMEM__S_MEMTIME::Inst_SMEM__S_MEMTIME
Inst_SMEM__S_MEMTIME(InFmt_SMEM *)
Definition: instructions.cc:5942
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40687
gem5::VegaISA::Inst_SOP2__S_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:98
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::Inst_MUBUF__BUFFER_STORE_LDS_DWORD
Inst_MUBUF__BUFFER_STORE_LDS_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:40383
gem5::VegaISA::Inst_DS__DS_RSUB_SRC2_U64::~Inst_DS__DS_RSUB_SRC2_U64
~Inst_DS__DS_RSUB_SRC2_U64()
Definition: instructions.cc:38072
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16693
gem5::VegaISA::Inst_SOP1__S_BCNT1_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2565
gem5::VegaISA::InFmt_VOP_SDWA::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1856
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U16::~Inst_VOPC__V_CMP_GE_U16
~Inst_VOPC__V_CMP_GE_U16()
Definition: instructions.cc:14288
gem5::VegaISA::VEGAGPUStaticInst::panicUnimplemented
void panicUnimplemented() const
Definition: gpu_static_inst.cc:54
gem5::VegaISA::Inst_VOPC__V_CMP_T_U16::Inst_VOPC__V_CMP_T_U16
Inst_VOPC__V_CMP_T_U16(InFmt_VOPC *)
Definition: instructions.cc:14315
gem5::VegaISA::Inst_DS__DS_ORDERED_COUNT::~Inst_DS__DS_ORDERED_COUNT
~Inst_DS__DS_ORDERED_COUNT()
Definition: instructions.cc:38008
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F16::Inst_VOP3__V_CMP_LE_F16
Inst_VOP3__V_CMP_LE_F16(InFmt_VOP3A *)
Definition: instructions.cc:17654
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21066
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U16::Inst_VOPC__V_CMPX_T_U16
Inst_VOPC__V_CMPX_T_U16(InFmt_VOPC *)
Definition: instructions.cc:14853
gem5::VegaISA::Inst_SOP2__S_MAX_U32::Inst_SOP2__S_MAX_U32
Inst_SOP2__S_MAX_U32(InFmt_SOP2 *)
Definition: instructions.cc:355
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38194
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5096
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::~Inst_MIMG__IMAGE_ATOMIC_UMIN
~Inst_MIMG__IMAGE_ATOMIC_UMIN()
Definition: instructions.cc:42344
gem5::VegaISA::Inst_VOP3__V_MUL_LEGACY_F32::~Inst_VOP3__V_MUL_LEGACY_F32
~Inst_VOP3__V_MUL_LEGACY_F32()
Definition: instructions.cc:25383
gem5::VegaISA::Inst_SOP1__S_FF1_I32_B64::~Inst_SOP1__S_FF1_I32_B64
~Inst_SOP1__S_FF1_I32_B64()
Definition: instructions.cc:2671
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21007
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U16::~Inst_VOP3__V_CMP_LT_U16
~Inst_VOP3__V_CMP_LT_U16()
Definition: instructions.cc:21555
gem5::VegaISA::Inst_VOP3__V_INTERP_P1LV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32901
gem5::VegaISA::Inst_VOPC__V_CMP_F_F64::~Inst_VOPC__V_CMP_F_F64
~Inst_VOPC__V_CMP_F_F64()
Definition: instructions.cc:12732
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGUSER::~Inst_SOPP__S_CBRANCH_CDBGUSER
~Inst_SOPP__S_CBRANCH_CDBGUSER()
Definition: instructions.cc:4918
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11171
gem5::VegaISA::Inst_DS__DS_READ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35798
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_LZ::~Inst_MIMG__IMAGE_GATHER4_LZ
~Inst_MIMG__IMAGE_GATHER4_LZ()
Definition: instructions.cc:43292
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45238
gem5::VegaISA::Inst_VOP3__V_ADD3_U32::Inst_VOP3__V_ADD3_U32
Inst_VOP3__V_ADD3_U32(InFmt_VOP3A *)
Definition: instructions.cc:32365
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ(InFmt_MTBUF *)
Definition: instructions.cc:41627
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F64::Inst_VOPC__V_CMP_LT_F64
Inst_VOPC__V_CMP_LT_F64(InFmt_VOPC *)
Definition: instructions.cc:12754
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F16::Inst_VOPC__V_CMP_NGT_F16
Inst_VOPC__V_CMP_NGT_F16(InFmt_VOPC *)
Definition: instructions.cc:11177
gem5::VegaISA::Inst_VOPC__V_CMP_F_I64::Inst_VOPC__V_CMP_F_I64
Inst_VOPC__V_CMP_F_I64(InFmt_VOPC *)
Definition: instructions.cc:15931
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21978
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE1::Inst_VOP3__V_CVT_F32_UBYTE1
Inst_VOP3__V_CVT_F32_UBYTE1(InFmt_VOP3A *)
Definition: instructions.cc:28182
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U64::Inst_VOP3__V_CMP_NE_U64
Inst_VOP3__V_CMP_NE_U64(InFmt_VOP3A *)
Definition: instructions.cc:24356
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U64::Inst_VOPC__V_CMPX_GE_U64
Inst_VOPC__V_CMPX_GE_U64(InFmt_VOPC *)
Definition: instructions.cc:16914
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::~Inst_MUBUF__BUFFER_LOAD_SSHORT
~Inst_MUBUF__BUFFER_LOAD_SSHORT()
Definition: instructions.cc:39389
gem5::Wavefront::pendingFetch
bool pendingFetch
Definition: wavefront.hh:111
gem5::VegaISA::Inst_VOP3__V_FRACT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28574
gem5::VegaISA::Inst_VOP3__V_CNDMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25173
gem5::VegaISA::Inst_VOP1__V_CLREXCP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9961
gem5::VegaISA::Inst_FLAT__FLAT_STORE_BYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44326
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29583
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL::Inst_MIMG__IMAGE_GATHER4_C_B_CL
Inst_MIMG__IMAGE_GATHER4_C_B_CL(InFmt_MIMG *)
Definition: instructions.cc:43384
gem5::VegaISA::Inst_SOP1__S_FF1_I32_B32::Inst_SOP1__S_FF1_I32_B32
Inst_SOP1__S_FF1_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2637
gem5::VegaISA::Inst_FLAT__FLAT_STORE_BYTE::~Inst_FLAT__FLAT_STORE_BYTE
~Inst_FLAT__FLAT_STORE_BYTE()
Definition: instructions.cc:44281
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U16::~Inst_VOPC__V_CMPX_T_U16
~Inst_VOPC__V_CMPX_T_U16()
Definition: instructions.cc:14860
gem5::VegaISA::REG_VCC_LO
@ REG_VCC_LO
Definition: gpu_registers.hh:56
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U64::Inst_VOP3__V_CMPX_EQ_U64
Inst_VOP3__V_CMPX_EQ_U64(InFmt_VOP3A *)
Definition: instructions.cc:24887
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F64::Inst_VOP3__V_CMPX_F_F64
Inst_VOP3__V_CMPX_F_F64(InFmt_VOP3A *)
Definition: instructions.cc:20304
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
Inst_MTBUF__TBUFFER_STORE_FORMAT_XY(InFmt_MTBUF *)
Definition: instructions.cc:41457
gem5::VegaISA::Inst_VOP3__V_MIN_I16::Inst_VOP3__V_MIN_I16
Inst_VOP3__V_MIN_I16(InFmt_VOP3A *)
Definition: instructions.cc:27336
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U16::~Inst_VOPC__V_CMPX_F_U16
~Inst_VOPC__V_CMPX_F_U16()
Definition: instructions.cc:14620
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15405
gem5::VegaISA::Inst_SOPC__S_CMP_LE_I32::Inst_SOPC__S_CMP_LE_I32
Inst_SOPC__S_CMP_LE_I32(InFmt_SOPC *)
Definition: instructions.cc:3773
gem5::VegaISA::Inst_VOP3__V_CVT_PK_I16_I32::~Inst_VOP3__V_CVT_PK_I16_I32
~Inst_VOP3__V_CVT_PK_I16_I32()
Definition: instructions.cc:34010
gem5::VegaISA::Inst_VOPC__V_CMP_U_F32::Inst_VOPC__V_CMP_U_F32
Inst_VOPC__V_CMP_U_F32(InFmt_VOPC *)
Definition: instructions.cc:11884
gem5::VegaISA::Inst_SOP2__S_LSHL_B32::Inst_SOP2__S_LSHL_B32
Inst_SOP2__S_LSHL_B32(InFmt_SOP2 *)
Definition: instructions.cc:959
gem5::VegaISA::Inst_VOP1__V_CVT_F16_F32::Inst_VOP1__V_CVT_F16_F32
Inst_VOP1__V_CVT_F16_F32(InFmt_VOP1 *)
Definition: instructions.cc:8507
gem5::VegaISA::Inst_VOP3__V_CVT_PKNORM_U16_F32::~Inst_VOP3__V_CVT_PKNORM_U16_F32
~Inst_VOP3__V_CVT_PKNORM_U16_F32()
Definition: instructions.cc:33948
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U64::~Inst_VOP3__V_CMPX_NE_U64
~Inst_VOP3__V_CMPX_NE_U64()
Definition: instructions.cc:25033
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21855
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F16::~Inst_VOPC__V_CMP_NGT_F16
~Inst_VOPC__V_CMP_NGT_F16()
Definition: instructions.cc:11184
gem5::VegaISA::Inst_SOPP__S_WAITCNT::~Inst_SOPP__S_WAITCNT
~Inst_SOPP__S_WAITCNT()
Definition: instructions.cc:4659
gem5::ComputeUnit::releaseBarrier
void releaseBarrier(int bar_id)
Definition: compute_unit.cc:707
gem5::VegaISA::Inst_SOPK__S_CMPK_LT_U32::~Inst_SOPK__S_CMPK_LT_U32
~Inst_SOPK__S_CMPK_LT_U32()
Definition: instructions.cc:1894
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17793
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F16::Inst_VOPC__V_CMPX_NLG_F16
Inst_VOPC__V_CMPX_NLG_F16(InFmt_VOPC *)
Definition: instructions.cc:11489
gem5::VegaISA::Inst_VOPC__V_CMP_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16424
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11609
gem5::VegaISA::Inst_VOP3__V_CVT_F32_I32::Inst_VOP3__V_CVT_F32_I32
Inst_VOP3__V_CVT_F32_I32(InFmt_VOP3A *)
Definition: instructions.cc:27679
gem5::VegaISA::InFmt_MIMG
Definition: gpu_decoder.hh:1666
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U64::Inst_VOP3__V_CMP_GE_U64
Inst_VOP3__V_CMP_GE_U64(InFmt_VOP3A *)
Definition: instructions.cc:24400
gem5::VegaISA::Inst_VOP3__V_CMP_U_F32::Inst_VOP3__V_CMP_U_F32
Inst_VOP3__V_CMP_U_F32(InFmt_VOP3A *)
Definition: instructions.cc:18581
gem5::VegaISA::Inst_VOP3__V_CMP_U_F16::Inst_VOP3__V_CMP_U_F16
Inst_VOP3__V_CMP_U_F16(InFmt_VOP3A *)
Definition: instructions.cc:17758
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX4::~Inst_FLAT__FLAT_LOAD_DWORDX4
~Inst_FLAT__FLAT_LOAD_DWORDX4()
Definition: instructions.cc:44214
gem5::VegaISA::Inst_DS__DS_OR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35184
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F64::~Inst_VOPC__V_CMPX_LT_F64
~Inst_VOPC__V_CMPX_LT_F64()
Definition: instructions.cc:13302
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43203
gem5::ComputeUnit::numYetToReachBarrier
int numYetToReachBarrier(int bar_id)
Definition: compute_unit.cc:658
gem5::VegaISA::Inst_DS__DS_WRITE_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34443
gem5::VegaISA::Inst_VOP1__V_BFREV_B32::Inst_VOP1__V_BFREV_B32
Inst_VOP1__V_BFREV_B32(InFmt_VOP1 *)
Definition: instructions.cc:9626
gem5::VegaISA::Inst_VOP3__V_INTERP_P1_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32797
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15880
gem5::VegaISA::Inst_MIMG__IMAGE_GET_RESINFO::~Inst_MIMG__IMAGE_GET_RESINFO
~Inst_MIMG__IMAGE_GET_RESINFO()
Definition: instructions.cc:42165
gem5::VegaISA::Inst_SOP2__S_RFE_RESTORE_B64::Inst_SOP2__S_RFE_RESTORE_B64
Inst_SOP2__S_RFE_RESTORE_B64(InFmt_SOP2 *)
Definition: instructions.cc:1476
gem5::VegaISA::Inst_VOP3__V_CNDMASK_B32::~Inst_VOP3__V_CNDMASK_B32
~Inst_VOP3__V_CNDMASK_B32()
Definition: instructions.cc:25165
gem5::VegaISA::Inst_VOP2__V_MAC_F16::~Inst_VOP2__V_MAC_F16
~Inst_VOP2__V_MAC_F16()
Definition: instructions.cc:7488
gem5::VegaISA::Inst_SOPC__S_CMP_GT_U32::~Inst_SOPC__S_CMP_GT_U32
~Inst_SOPC__S_CMP_GT_U32()
Definition: instructions.cc:3863
gem5::Wavefront::pc
Addr pc() const
Definition: wavefront.cc:1395
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_OR::~Inst_MUBUF__BUFFER_ATOMIC_OR
~Inst_MUBUF__BUFFER_ATOMIC_OR()
Definition: instructions.cc:40797
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13381
gem5::VegaISA::Inst_SOP1__S_MOV_FED_B32::~Inst_SOP1__S_MOV_FED_B32
~Inst_SOP1__S_MOV_FED_B32()
Definition: instructions.cc:3599
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMAX::~Inst_FLAT__FLAT_ATOMIC_SMAX
~Inst_FLAT__FLAT_ATOMIC_SMAX()
Definition: instructions.cc:45019
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I64::Inst_VOP3__V_CMP_GE_I64
Inst_VOP3__V_CMP_GE_I64(InFmt_VOP3A *)
Definition: instructions.cc:24080
gem5::VegaISA::Inst_SOP2__S_NOR_B64::Inst_SOP2__S_NOR_B64
Inst_SOP2__S_NOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:863
gem5::VegaISA::Inst_SOPP__S_TTRACEDATA::Inst_SOPP__S_TTRACEDATA
Inst_SOPP__S_TTRACEDATA(InFmt_SOPP *)
Definition: instructions.cc:4871
gem5::VegaISA::Inst_DS__DS_ADD_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36780
gem5::VegaISA::Inst_DS__DS_WRITE_SRC2_B64::~Inst_DS__DS_WRITE_SRC2_B64
~Inst_DS__DS_WRITE_SRC2_B64()
Definition: instructions.cc:38295
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::Inst_MUBUF__BUFFER_ATOMIC_SMIN
Inst_MUBUF__BUFFER_ATOMIC_SMIN(InFmt_MUBUF *)
Definition: instructions.cc:40634
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41820
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_B64::~Inst_DS__DS_CMPST_RTN_B64
~Inst_DS__DS_CMPST_RTN_B64()
Definition: instructions.cc:37104
gem5::VegaISA::InFmt_SMEM::SBASE
unsigned int SBASE
Definition: gpu_decoder.hh:1734
gem5::VegaISA::Inst_VOP1__V_CVT_U16_F16::~Inst_VOP1__V_CVT_U16_F16
~Inst_VOP1__V_CVT_U16_F16()
Definition: instructions.cc:10016
gem5::VegaISA::Inst_VOP1__V_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8144
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39680
gem5::VegaISA::Inst_VOP3__V_PERM_B32::~Inst_VOP3__V_PERM_B32
~Inst_VOP3__V_PERM_B32()
Definition: instructions.cc:32624
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26146
gem5::VegaISA::Inst_VOP3__V_MED3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31208
gem5::VegaISA::Inst_VOP3__V_MAX_U16::Inst_VOP3__V_MAX_U16
Inst_VOP3__V_MAX_U16(InFmt_VOP3A *)
Definition: instructions.cc:27189
gem5::VegaISA::Inst_DS__DS_MAX_RTN_U32::Inst_DS__DS_MAX_RTN_U32
Inst_DS__DS_MAX_RTN_U32(InFmt_DS *)
Definition: instructions.cc:35127
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F64::Inst_VOPC__V_CMPX_U_F64
Inst_VOPC__V_CMPX_U_F64(InFmt_VOPC *)
Definition: instructions.cc:13549
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F64::~Inst_VOP3__V_CMPX_NGT_F64
~Inst_VOP3__V_CMPX_NGT_F64()
Definition: instructions.cc:20941
gem5::VegaISA::Inst_SOP1__S_MOVRELD_B64::Inst_SOP1__S_MOVRELD_B64
Inst_SOP1__S_MOVRELD_B64(InFmt_SOP1 *)
Definition: instructions.cc:3501
gem5::VegaISA::Inst_VOP3__V_RSQ_F16::~Inst_VOP3__V_RSQ_F16
~Inst_VOP3__V_RSQ_F16()
Definition: instructions.cc:29820
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18526
gem5::VegaISA::Inst_VOP2__V_MADMK_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7522
gem5::VegaISA::Inst_SOP1__S_GETPC_B64::Inst_SOP1__S_GETPC_B64
Inst_SOP1__S_GETPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2965
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18491
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_INC::~Inst_MIMG__IMAGE_ATOMIC_INC
~Inst_MIMG__IMAGE_ATOMIC_INC()
Definition: instructions.cc:42520
gem5::VegaISA::Inst_VOP3__V_MAD_LEGACY_F32::Inst_VOP3__V_MAD_LEGACY_F32
Inst_VOP3__V_MAD_LEGACY_F32(InFmt_VOP3A *)
Definition: instructions.cc:30161
gem5::VegaISA::Inst_VOP3__V_INTERP_MOV_F32::Inst_VOP3__V_INTERP_MOV_F32
Inst_VOP3__V_INTERP_MOV_F32(InFmt_VOP3A *)
Definition: instructions.cc:32828
gem5::VegaISA::Inst_VOP3__V_FFBL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29369
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I16::Inst_VOPC__V_CMPX_GE_I16
Inst_VOPC__V_CMPX_GE_I16(InFmt_VOPC *)
Definition: instructions.cc:14548
gem5::VegaISA::Inst_DS__DS_ADD_U64::~Inst_DS__DS_ADD_U64
~Inst_DS__DS_ADD_U64()
Definition: instructions.cc:36153
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I16::Inst_VOP3__V_CMP_NE_I16
Inst_VOP3__V_CMP_NE_I16(InFmt_VOP3A *)
Definition: instructions.cc:21404
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F32::Inst_VOP3__V_FREXP_MANT_F32
Inst_VOP3__V_FREXP_MANT_F32(InFmt_VOP3A *)
Definition: instructions.cc:29615
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U32::~Inst_VOP3__V_CMPX_GT_U32
~Inst_VOP3__V_CMPX_GT_U32()
Definition: instructions.cc:23671
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I16::~Inst_VOPC__V_CMPX_EQ_I16
~Inst_VOPC__V_CMPX_EQ_I16()
Definition: instructions.cc:14415
gem5::VegaISA::InFmt_DS
Definition: gpu_decoder.hh:1610
gem5::VegaISA::Inst_VOP3__V_CUBESC_F32::Inst_VOP3__V_CUBESC_F32
Inst_VOP3__V_CUBESC_F32(InFmt_VOP3A *)
Definition: instructions.cc:30398
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45354
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::Inst_FLAT__FLAT_ATOMIC_SMIN_X2
Inst_FLAT__FLAT_ATOMIC_SMIN_X2(InFmt_FLAT *)
Definition: instructions.cc:45519
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41579
gem5::GPUStaticInst::isSDWAInst
bool isSDWAInst() const
Definition: gpu_static_inst.hh:115
gem5::VegaISA::Inst_VOP3__V_FRACT_F64::~Inst_VOP3__V_FRACT_F64
~Inst_VOP3__V_FRACT_F64()
Definition: instructions.cc:29530
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I16_F16::~Inst_VOP3__V_FREXP_EXP_I16_F16
~Inst_VOP3__V_FREXP_EXP_I16_F16()
Definition: instructions.cc:29917
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORD::~Inst_FLAT__FLAT_STORE_DWORD
~Inst_FLAT__FLAT_STORE_DWORD()
Definition: instructions.cc:44395
gem5::VegaISA::Inst_VOP3__V_QSAD_PK_U16_U8::Inst_VOP3__V_QSAD_PK_U16_U8
Inst_VOP3__V_QSAD_PK_U16_U8(InFmt_VOP3A *)
Definition: instructions.cc:32070
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F32::Inst_VOPC__V_CMP_GT_F32
Inst_VOPC__V_CMP_GT_F32(InFmt_VOPC *)
Definition: instructions.cc:11746
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14457
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43437
gem5::VegaISA::Inst_VOP2__V_MADAK_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7071
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42443
gem5::VegaISA::Inst_SOP1__S_SETPC_B64::~Inst_SOP1__S_SETPC_B64
~Inst_SOP1__S_SETPC_B64()
Definition: instructions.cc:2996
gem5::VegaISA::Inst_SMEM
Definition: op_encodings.hh:176
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U16::~Inst_VOPC__V_CMPX_GT_U16
~Inst_VOPC__V_CMPX_GT_U16()
Definition: instructions.cc:14755
gem5::VegaISA::Inst_SOPK__S_SETREG_B32::Inst_SOPK__S_SETREG_B32
Inst_SOPK__S_SETREG_B32(InFmt_SOPK *)
Definition: instructions.cc:2076
gem5::VegaISA::Inst_SOP2__S_BFM_B32::~Inst_SOP2__S_BFM_B32
~Inst_SOP2__S_BFM_B32()
Definition: instructions.cc:1161
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16259
gem5::VegaISA::Inst_DS__DS_WRITE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36479
gem5::VegaISA::Inst_VOP3__V_CVT_PKRTZ_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33979
gem5::VegaISA::Inst_VOP3__V_CMP_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22821
gem5::VegaISA::Inst_VOP3__V_BFE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30522
gem5::VegaISA::Inst_SOPC
Definition: op_encodings.hh:138
gem5::VegaISA::Inst_VOP1__V_COS_F32::Inst_VOP1__V_COS_F32
Inst_VOP1__V_COS_F32(InFmt_VOP1 *)
Definition: instructions.cc:9554
gem5::VegaISA::InstFormat::iFmt_VOP_DPP
InFmt_VOP_DPP iFmt_VOP_DPP
Definition: gpu_decoder.hh:1939
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_INC::Inst_MUBUF__BUFFER_ATOMIC_INC
Inst_MUBUF__BUFFER_ATOMIC_INC(InFmt_MUBUF *)
Definition: instructions.cc:40844
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::Inst_MUBUF__BUFFER_STORE_DWORDX3
Inst_MUBUF__BUFFER_STORE_DWORDX3(InFmt_MUBUF *)
Definition: instructions.cc:40183
gem5::VegaISA::Inst_DS__DS_SUB_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36223
gem5::VegaISA::Inst_VOP3__V_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26012
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I32::Inst_VOPC__V_CMP_GE_I32
Inst_VOPC__V_CMP_GE_I32(InFmt_VOPC *)
Definition: instructions.cc:15076
gem5::VegaISA::Inst_VOP3__V_MUL_HI_I32::~Inst_VOP3__V_MUL_HI_I32
~Inst_VOP3__V_MUL_HI_I32()
Definition: instructions.cc:33404
gem5::VegaISA::Inst_SOP1__S_BCNT0_I32_B32::~Inst_SOP1__S_BCNT0_I32_B32
~Inst_SOP1__S_BCNT0_I32_B32()
Definition: instructions.cc:2467
gem5::VegaISA::InFmt_MUBUF_1::VADDR
unsigned int VADDR
Definition: gpu_decoder.hh:1725
gem5::VegaISA::Inst_VOP1__V_MOV_B32::~Inst_VOP1__V_MOV_B32
~Inst_VOP1__V_MOV_B32()
Definition: instructions.cc:8155
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5368
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43398
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I64::Inst_VOPC__V_CMP_EQ_I64
Inst_VOPC__V_CMP_EQ_I64(InFmt_VOPC *)
Definition: instructions.cc:15992
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39041
gem5::GPUDispatcher::isReachingKernelEnd
bool isReachingKernelEnd(Wavefront *wf)
Definition: dispatcher.cc:228
gem5::VegaISA::Inst_DS__DS_MIN_I32::~Inst_DS__DS_MIN_I32
~Inst_DS__DS_MIN_I32()
Definition: instructions.cc:34177
gem5::VegaISA::Inst_VOP3__V_CVT_RPI_I32_F32::~Inst_VOP3__V_CVT_RPI_I32_F32
~Inst_VOP3__V_CVT_RPI_I32_F32()
Definition: instructions.cc:27951
gem5::VegaISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::Inst_SOP1__S_ANDN2_SAVEEXEC_B64
Inst_SOP1__S_ANDN2_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3174
gem5::VegaISA::Inst_SOP2__S_NAND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:813
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U16::Inst_VOPC__V_CMP_LE_U16
Inst_VOPC__V_CMP_LE_U16(InFmt_VOPC *)
Definition: instructions.cc:14183
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38938
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX4::Inst_FLAT__FLAT_STORE_DWORDX4
Inst_FLAT__FLAT_STORE_DWORDX4(InFmt_FLAT *)
Definition: instructions.cc:44569
gem5::Wavefront::S_STOPPED
@ S_STOPPED
Definition: wavefront.hh:66
gem5::VegaISA::Inst_VOP1__V_SQRT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10091
gem5::VegaISA::Inst_SOPK__S_CMOVK_I32::~Inst_SOPK__S_CMOVK_I32
~Inst_SOPK__S_CMOVK_I32()
Definition: instructions.cc:1594
gem5::VegaISA::Inst_VOP2__V_ADD_U16::Inst_VOP2__V_ADD_U16
Inst_VOP2__V_ADD_U16(InFmt_VOP2 *)
Definition: instructions.cc:7553
gem5::VegaISA::Inst_VOP2__V_XOR_B32::Inst_VOP2__V_XOR_B32
Inst_VOP2__V_XOR_B32(InFmt_VOP2 *)
Definition: instructions.cc:6916
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_BR::Inst_DS__DS_GWS_SEMA_BR
Inst_DS__DS_GWS_SEMA_BR(InFmt_DS *)
Definition: instructions.cc:37863
gem5::VegaISA::Inst_SOP2__S_ASHR_I64::~Inst_SOP2__S_ASHR_I64
~Inst_SOP2__S_ASHR_I64()
Definition: instructions.cc:1128
gem5::VegaISA::Inst_DS__DS_OR_SRC2_B64::Inst_DS__DS_OR_SRC2_B64
Inst_DS__DS_OR_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:38244
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38684
gem5::VegaISA::Inst_DS__DS_XOR_RTN_B64::Inst_DS__DS_XOR_RTN_B64
Inst_DS__DS_XOR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:36998
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_SHORT::~Inst_MUBUF__BUFFER_STORE_SHORT
~Inst_MUBUF__BUFFER_STORE_SHORT()
Definition: instructions.cc:39921
gem5::VegaISA::Inst_VOP3__V_MUL_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25390
gem5::VegaISA::Inst_SMEM__S_DCACHE_INV_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5918
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I32::~Inst_VOP3__V_CMPX_NE_I32
~Inst_VOP3__V_CMPX_NE_I32()
Definition: instructions.cc:23379
gem5::VegaISA::Inst_DS__DS_RSUB_RTN_U32::Inst_DS__DS_RSUB_RTN_U32
Inst_DS__DS_RSUB_RTN_U32(InFmt_DS *)
Definition: instructions.cc:35000
gem5::VegaISA::Inst_VOP3__V_CVT_PK_U8_F32::Inst_VOP3__V_CVT_PK_U8_F32
Inst_VOP3__V_CVT_PK_U8_F32(InFmt_VOP3A *)
Definition: instructions.cc:31545
gem5::VegaISA::Inst_DS__DS_MSKOR_RTN_B32::~Inst_DS__DS_MSKOR_RTN_B32
~Inst_DS__DS_MSKOR_RTN_B32()
Definition: instructions.cc:35216
gem5::VegaISA::Inst_VOP3__V_MIN_I32::Inst_VOP3__V_MIN_I32
Inst_VOP3__V_MIN_I32(InFmt_VOP3A *)
Definition: instructions.cc:25870
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::~Inst_MUBUF__BUFFER_LOAD_DWORDX2
~Inst_MUBUF__BUFFER_LOAD_DWORDX2()
Definition: instructions.cc:39519
gem5::VegaISA::Inst_EXP__EXP::~Inst_EXP__EXP
~Inst_EXP__EXP()
Definition: instructions.cc:43851
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::Inst_MTBUF__TBUFFER_STORE_FORMAT_X
Inst_MTBUF__TBUFFER_STORE_FORMAT_X(InFmt_MTBUF *)
Definition: instructions.cc:41425
gem5::VegaISA::Inst_DS__DS_WRAP_RTN_B32::~Inst_DS__DS_WRAP_RTN_B32
~Inst_DS__DS_WRAP_RTN_B32()
Definition: instructions.cc:35401
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U32::~Inst_VOPC__V_CMP_GT_U32
~Inst_VOPC__V_CMP_GT_U32()
Definition: instructions.cc:15270
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42810
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SSHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44023
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17551
gem5::VegaISA::Inst_VOP3__V_LOG_F32::~Inst_VOP3__V_LOG_F32
~Inst_VOP3__V_LOG_F32()
Definition: instructions.cc:28810
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW()
Definition: instructions.cc:41673
gem5::VegaISA::Inst_VOP3__V_INTERP_P2_F16::Inst_VOP3__V_INTERP_P2_F16
Inst_VOP3__V_INTERP_P2_F16(InFmt_VOP3A *)
Definition: instructions.cc:32907
gem5::VegaISA::Inst_VOP3__V_INTERP_MOV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32842
gem5::VegaISA::Inst_SOP2__S_NAND_B64::~Inst_SOP2__S_NAND_B64
~Inst_SOP2__S_NAND_B64()
Definition: instructions.cc:805
gem5::VegaISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3192
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39178
gem5::VegaISA::Inst_VOP1__V_CVT_F16_F32::~Inst_VOP1__V_CVT_F16_F32
~Inst_VOP1__V_CVT_F16_F32()
Definition: instructions.cc:8514
gem5::VegaISA::Inst_SOPP__S_CBRANCH_VCCNZ::Inst_SOPP__S_CBRANCH_VCCNZ
Inst_SOPP__S_CBRANCH_VCCNZ(InFmt_SOPP *)
Definition: instructions.cc:4510
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_O::~Inst_MIMG__IMAGE_GATHER4_C_B_O
~Inst_MIMG__IMAGE_GATHER4_C_B_O()
Definition: instructions.cc:43610
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I64::~Inst_VOP3__V_CMPX_F_I64
~Inst_VOP3__V_CMPX_F_I64()
Definition: instructions.cc:24480
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41833
gem5::VegaISA::Inst_SOP1__S_QUADMASK_B32::Inst_SOP1__S_QUADMASK_B32
Inst_SOP1__S_QUADMASK_B32(InFmt_SOP1 *)
Definition: instructions.cc:3354
gem5::VegaISA::Inst_SOP2__S_XNOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:941
gem5::VegaISA::Inst_DS__DS_WRITE_B8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34819
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44584
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::Inst_MIMG__IMAGE_ATOMIC_UMAX
Inst_MIMG__IMAGE_ATOMIC_UMAX(InFmt_MIMG *)
Definition: instructions.cc:42390
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F32::~Inst_VOP3__V_CMP_LT_F32
~Inst_VOP3__V_CMP_LT_F32()
Definition: instructions.cc:18344
gem5::VegaISA::Inst_VOP1__V_FFBH_I32::~Inst_VOP1__V_FFBH_I32
~Inst_VOP1__V_FFBH_I32()
Definition: instructions.cc:9728
gem5::VegaISA::Inst_VOP2__V_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6550
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F32::~Inst_VOP3__V_DIV_FIXUP_F32
~Inst_VOP3__V_DIV_FIXUP_F32()
Definition: instructions.cc:31610
gem5::VegaISA::Inst_DS__DS_INC_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36844
gem5::VegaISA::Inst_VOP3__V_ADD_LSHL_U32::~Inst_VOP3__V_ADD_LSHL_U32
~Inst_VOP3__V_ADD_LSHL_U32()
Definition: instructions.cc:32325
gem5::VegaISA::Inst_SOP1__S_BREV_B64::~Inst_SOP1__S_BREV_B64
~Inst_SOP1__S_BREV_B64()
Definition: instructions.cc:2441
gem5::VegaISA::Inst_VOP1__V_EXP_LEGACY_F32::Inst_VOP1__V_EXP_LEGACY_F32
Inst_VOP1__V_EXP_LEGACY_F32(InFmt_VOP1 *)
Definition: instructions.cc:10365
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I32::Inst_VOPC__V_CMPX_LT_I32
Inst_VOPC__V_CMPX_LT_I32(InFmt_VOPC *)
Definition: instructions.cc:15421
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_F32::Inst_DS__DS_MIN_SRC2_F32
Inst_DS__DS_MIN_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:37710
gem5::VegaISA::Inst_VOP3__V_CMP_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21825
gem5::VegaISA::Inst_VOP3__V_CVT_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29761
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I64::~Inst_VOPC__V_CMPX_GT_I64
~Inst_VOPC__V_CMPX_GT_I64()
Definition: instructions.cc:16581
gem5::VegaISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::Inst_SOP1__S_NOR_SAVEEXEC_B64
Inst_SOP1__S_NOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3282
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F64::Inst_VOPC__V_CMP_TRU_F64
Inst_VOPC__V_CMP_TRU_F64(InFmt_VOPC *)
Definition: instructions.cc:13234
gem5::VegaISA::Inst_VOP3__V_CVT_F16_I16::~Inst_VOP3__V_CVT_F16_I16
~Inst_VOP3__V_CVT_F16_I16()
Definition: instructions.cc:29711
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18159
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F64::~Inst_VOPC__V_CMPX_LG_F64
~Inst_VOPC__V_CMPX_LG_F64()
Definition: instructions.cc:13446
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16788
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14492
gem5::VegaISA::Inst_SOPC__S_CMP_LG_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3674
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41170
gem5::VegaISA::Inst_VOP1__V_NOT_B32::Inst_VOP1__V_NOT_B32
Inst_VOP1__V_NOT_B32(InFmt_VOP1 *)
Definition: instructions.cc:9594
gem5::VegaISA::Inst_VOP1__V_TRUNC_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8922
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18269
gem5::VegaISA::Inst_SOP2__S_XNOR_B64::~Inst_SOP2__S_XNOR_B64
~Inst_SOP2__S_XNOR_B64()
Definition: instructions.cc:933
gem5::VegaISA::Inst_VOP3__V_RCP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29784
gem5::VegaISA::Inst_VOP3__V_RSQ_F32::~Inst_VOP3__V_RSQ_F32
~Inst_VOP3__V_RSQ_F32()
Definition: instructions.cc:28940
gem5::VegaISA::Inst_VOP3__V_MIN_F16::~Inst_VOP3__V_MIN_F16
~Inst_VOP3__V_MIN_F16()
Definition: instructions.cc:27174
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U16::Inst_VOP3__V_CMPX_GE_U16
Inst_VOP3__V_CMPX_GE_U16(InFmt_VOP3A *)
Definition: instructions.cc:22439
gem5::VegaISA::Inst_VOP3__V_CMP_O_F32::Inst_VOP3__V_CMP_O_F32
Inst_VOP3__V_CMP_O_F32(InFmt_VOP3A *)
Definition: instructions.cc:18546
gem5::VegaISA::Inst_SOP1
Definition: op_encodings.hh:116
gem5::VegaISA::Inst_SOP2__S_XOR_B64::~Inst_SOP2__S_XOR_B64
~Inst_SOP2__S_XOR_B64()
Definition: instructions.cc:613
gem5::VegaISA::Inst_SOPK__S_ADDK_I32::Inst_SOPK__S_ADDK_I32
Inst_SOPK__S_ADDK_I32(InFmt_SOPK *)
Definition: instructions.cc:1942
gem5::VegaISA::Inst_DS__DS_WRXCHG2_RTN_B32::Inst_DS__DS_WRXCHG2_RTN_B32
Inst_DS__DS_WRXCHG2_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35254
gem5::VegaISA::Inst_VOP3__V_MAD_F32::~Inst_VOP3__V_MAD_F32
~Inst_VOP3__V_MAD_F32()
Definition: instructions.cc:30230
gem5::VegaISA::Inst_MUBUF::injectGlobalMemFence
void injectGlobalMemFence(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:705
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24948
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F16::Inst_VOP3__V_CMP_NLE_F16
Inst_VOP3__V_CMP_NLE_F16(InFmt_VOP3A *)
Definition: instructions.cc:17841
gem5::VegaISA::Inst_DS__DS_ADD_RTN_U32::Inst_DS__DS_ADD_RTN_U32
Inst_DS__DS_ADD_RTN_U32(InFmt_DS *)
Definition: instructions.cc:34958
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:42089
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL_O::Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
Inst_MIMG__IMAGE_SAMPLE_CD_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43784
gem5::ComputeUnit::getLds
LdsState & getLds() const
Definition: compute_unit.hh:477
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMAX::Inst_FLAT__FLAT_ATOMIC_UMAX
Inst_FLAT__FLAT_ATOMIC_UMAX(InFmt_FLAT *)
Definition: instructions.cc:45083
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_BR::~Inst_DS__DS_GWS_SEMA_BR
~Inst_DS__DS_GWS_SEMA_BR()
Definition: instructions.cc:37868
gem5::VegaISA::Inst_DS__DS_ADD_F32::Inst_DS__DS_ADD_F32
Inst_DS__DS_ADD_F32(InFmt_DS *)
Definition: instructions.cc:34706
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U32::~Inst_VOP3__V_CMP_EQ_U32
~Inst_VOP3__V_CMP_EQ_U32()
Definition: instructions.cc:22915
gem5::VegaISA::Inst_VOP1__V_CVT_I16_F16::Inst_VOP1__V_CVT_I16_F16
Inst_VOP1__V_CVT_I16_F16(InFmt_VOP1 *)
Definition: instructions.cc:10030
gem5::VegaISA::Inst_VOP1__V_SQRT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9496
gem5::VegaISA::Inst_VOP3__V_CMP_U_F64::~Inst_VOP3__V_CMP_U_F64
~Inst_VOP3__V_CMP_U_F64()
Definition: instructions.cc:19881
gem5::VegaISA::Inst_VOP3__V_CMP_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21213
gem5::VegaISA::Inst_DS__DS_ADD_F32::~Inst_DS__DS_ADD_F32
~Inst_DS__DS_ADD_F32()
Definition: instructions.cc:34716
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44518
gem5::VegaISA::Inst_VOP3__V_MAD_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30344
gem5::VegaISA::Inst_VOPC
Definition: op_encodings.hh:394
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F16::Inst_VOP3__V_CMPX_GE_F16
Inst_VOP3__V_CMPX_GE_F16(InFmt_VOP3A *)
Definition: instructions.cc:18075
gem5::VegaISA::Inst_DS__DS_SUB_RTN_U32::Inst_DS__DS_SUB_RTN_U32
Inst_DS__DS_SUB_RTN_U32(InFmt_DS *)
Definition: instructions.cc:34979
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40083
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I16::~Inst_VOP3__V_CMP_EQ_I16
~Inst_VOP3__V_CMP_EQ_I16()
Definition: instructions.cc:21279
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44564
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16928
gem5::VegaISA::Inst_VOP1__V_TRUNC_F16::~Inst_VOP1__V_TRUNC_F16
~Inst_VOP1__V_TRUNC_F16()
Definition: instructions.cc:10269
gem5::VegaISA::Inst_SOP1__S_BCNT0_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2475
gem5::VegaISA::Inst_VOP3__V_MIN3_I32::Inst_VOP3__V_MIN3_I32
Inst_VOP3__V_MIN3_I32(InFmt_VOP3A *)
Definition: instructions.cc:30949
gem5::VegaISA::Inst_VOP2__V_SUBB_CO_U32::~Inst_VOP2__V_SUBB_CO_U32
~Inst_VOP2__V_SUBB_CO_U32()
Definition: instructions.cc:7311
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::Inst_MUBUF__BUFFER_ATOMIC_INC_X2
Inst_MUBUF__BUFFER_ATOMIC_INC_X2(InFmt_MUBUF *)
Definition: instructions.cc:41235
gem5::VegaISA::Inst_VOP3__V_CUBEID_F32::Inst_VOP3__V_CUBEID_F32
Inst_VOP3__V_CUBEID_F32(InFmt_VOP3A *)
Definition: instructions.cc:30377
gem5::VegaISA::Inst_VOP3__V_FMA_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32697
gem5::VegaISA::Inst_SOP1__S_OR_SAVEEXEC_B64::~Inst_SOP1__S_OR_SAVEEXEC_B64
~Inst_SOP1__S_OR_SAVEEXEC_B64()
Definition: instructions.cc:3111
gem5::VegaISA::Inst_SOPP__S_WAKEUP::~Inst_SOPP__S_WAKEUP
~Inst_SOPP__S_WAKEUP()
Definition: instructions.cc:4393
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17919
gem5::VegaISA::Inst_DS__DS_READ_B32::Inst_DS__DS_READ_B32
Inst_DS__DS_READ_B32(InFmt_DS *)
Definition: instructions.cc:35439
gem5::ArmISA::i
Bitfield< 7 > i
Definition: misc_types.hh:67
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41955
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F16::Inst_VOPC__V_CMP_NLT_F16
Inst_VOPC__V_CMP_NLT_F16(InFmt_VOPC *)
Definition: instructions.cc:11237
gem5::VegaISA::InFmt_VOP3_1::SRC2
unsigned int SRC2
Definition: gpu_decoder.hh:1822
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U32::~Inst_VOPC__V_CMPX_EQ_U32
~Inst_VOPC__V_CMPX_EQ_U32()
Definition: instructions.cc:15733
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42530
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_CL::Inst_MIMG__IMAGE_GATHER4_C_CL
Inst_MIMG__IMAGE_GATHER4_C_CL(InFmt_MIMG *)
Definition: instructions.cc:43324
gem5::VegaISA::Inst_VOP1__V_RSQ_F16::Inst_VOP1__V_RSQ_F16
Inst_VOP1__V_RSQ_F16(InFmt_VOP1 *)
Definition: instructions.cc:10097
gem5::VegaISA::Inst_SOPK__S_CMPK_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1712
gem5::VegaISA::Inst_VOP3__V_MIN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33148
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F16::Inst_VOP1__V_FREXP_MANT_F16
Inst_VOP1__V_FREXP_MANT_F16(InFmt_VOP1 *)
Definition: instructions.cc:10166
gem5::VegaISA::Inst_DS__DS_READ_U16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35820
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F32::Inst_VOP3__V_CMP_NLT_F32
Inst_VOP3__V_CMP_NLT_F32(InFmt_VOP3A *)
Definition: instructions.cc:18792
gem5::VegaISA::Inst_VOPC__V_CMP_F_I16::~Inst_VOPC__V_CMP_F_I16
~Inst_VOPC__V_CMP_F_I16()
Definition: instructions.cc:13841
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_U64::Inst_DS__DS_MIN_SRC2_U64
Inst_DS__DS_MIN_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:38178
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43222
gem5::VegaISA::Inst_DS__DS_READ2_B64::Inst_DS__DS_READ2_B64
Inst_DS__DS_READ2_B64(InFmt_DS *)
Definition: instructions.cc:37267
gem5::ComputeUnit::shader
Shader * shader
Definition: compute_unit.hh:353
gem5::VegaISA::InFmt_VOP_SDWA::SRC0_SEXT
unsigned int SRC0_SEXT
Definition: gpu_decoder.hh:1862
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F16::~Inst_VOP3__V_CMPX_LG_F16
~Inst_VOP3__V_CMPX_LG_F16()
Definition: instructions.cc:18062
gem5::VegaISA::Inst_SOP1__S_FF0_I32_B64::Inst_SOP1__S_FF0_I32_B64
Inst_SOP1__S_FF0_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2609
gem5::VegaISA::Inst_SOP1__S_RFE_B64::Inst_SOP1__S_RFE_B64
Inst_SOP1__S_RFE_B64(InFmt_SOP1 *)
Definition: instructions.cc:3045
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I32::Inst_VOP3__V_CMP_GT_I32
Inst_VOP3__V_CMP_GT_I32(InFmt_VOP3A *)
Definition: instructions.cc:22676
gem5::VegaISA::roundNearestEven
T roundNearestEven(T val)
Definition: inst_util.hh:258
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40897
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F32::Inst_VOP3__V_CMP_TRU_F32
Inst_VOP3__V_CMP_TRU_F32(InFmt_VOP3A *)
Definition: instructions.cc:18827
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F16::Inst_VOPC__V_CMP_LE_F16
Inst_VOPC__V_CMP_LE_F16(InFmt_VOPC *)
Definition: instructions.cc:11017
gem5::VegaISA::Inst_SOP1__S_QUADMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3369
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11292
gem5::VegaISA::Inst_VOP2__V_SUB_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7431
gem5::VegaISA::Inst_SOP1__S_BREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2422
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F64::~Inst_VOP3__V_CMPX_NLG_F64
~Inst_VOP3__V_CMPX_NLG_F64()
Definition: instructions.cc:20881
gem5::VegaISA::Inst_VOP1__V_LOG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9247
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2(InFmt_MUBUF *)
Definition: instructions.cc:41117
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38844
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41988
gem5::VegaISA::Inst_DS__DS_AND_RTN_B32::Inst_DS__DS_AND_RTN_B32
Inst_DS__DS_AND_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35148
gem5::VegaISA::Inst_DS
Definition: op_encodings.hh:482
gem5::VegaISA::Inst_VOP1__V_COS_F32::~Inst_VOP1__V_COS_F32
~Inst_VOP1__V_COS_F32()
Definition: instructions.cc:9561
gem5::VegaISA::Inst_VOPC__V_CMP_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11131
gem5::VegaISA::Inst_DS__DS_READ_B96::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38507
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I32::~Inst_VOP3__V_CMP_GT_I32
~Inst_VOP3__V_CMP_GT_I32()
Definition: instructions.cc:22683
gem5::VegaISA::Inst_DS__DS_MIN_RTN_I64::~Inst_DS__DS_MIN_RTN_I64
~Inst_DS__DS_MIN_RTN_I64()
Definition: instructions.cc:36877
gem5::VegaISA::Inst_DS__DS_RSUB_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37480
gem5::VegaISA::Inst_SOP2__S_ORN2_B64::~Inst_SOP2__S_ORN2_B64
~Inst_SOP2__S_ORN2_B64()
Definition: instructions.cc:741
gem5::VegaISA::Inst_SOP2__S_BFM_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1197
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13112
gem5::VegaISA::Inst_DS__DS_WRITE_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34911
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23248
gem5::VegaISA::Inst_VOP3__V_RNDNE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28493
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F64::~Inst_VOP3__V_CMPX_U_F64
~Inst_VOP3__V_CMPX_U_F64()
Definition: instructions.cc:20761
gem5::VegaISA::Inst_VOP3__V_BCNT_U32_B32::Inst_VOP3__V_BCNT_U32_B32
Inst_VOP3__V_BCNT_U32_B32(InFmt_VOP3A *)
Definition: instructions.cc:33571
gem5::VegaISA::Inst_VOP2__V_SUB_U32::~Inst_VOP2__V_SUB_U32
~Inst_VOP2__V_SUB_U32()
Definition: instructions.cc:8070
gem5::VegaISA::Inst_DS__DS_INC_U32::Inst_DS__DS_INC_U32
Inst_DS__DS_INC_U32(InFmt_DS *)
Definition: instructions.cc:34130
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U64::Inst_VOPC__V_CMP_GT_U64
Inst_VOPC__V_CMP_GT_U64(InFmt_VOPC *)
Definition: instructions.cc:16312
gem5::VegaISA::Inst_VOP2__V_SUB_U32::Inst_VOP2__V_SUB_U32
Inst_VOP2__V_SUB_U32(InFmt_VOP2 *)
Definition: instructions.cc:8064
gem5::VegaISA::Inst_VOPC__V_CMP_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16170
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41721
gem5::VegaISA::Inst_SMEM__S_DCACHE_WB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5900
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX16::~Inst_SMEM__S_LOAD_DWORDX16
~Inst_SMEM__S_LOAD_DWORDX16()
Definition: instructions.cc:5273
gem5::VegaISA::ScalarOperand::setBit
std::enable_if< Condition, void >::type setBit(int bit, int bit_val)
bit access to scalar data.
Definition: operand.hh:490
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F64::~Inst_VOP3__V_CMP_NEQ_F64
~Inst_VOP3__V_CMP_NEQ_F64()
Definition: instructions.cc:20168
gem5::VegaISA::Inst_VOP3__V_MIN3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30902
gem5::VegaISA::Inst_SOP1__S_NOT_B64::Inst_SOP1__S_NOT_B64
Inst_SOP1__S_NOT_B64(InFmt_SOP1 *)
Definition: instructions.cc:2316
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F16::~Inst_VOPC__V_CMP_NLE_F16
~Inst_VOPC__V_CMP_NLE_F16()
Definition: instructions.cc:11204
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12939
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F64::Inst_VOPC__V_CMPX_NGE_F64
Inst_VOPC__V_CMPX_NGE_F64(InFmt_VOPC *)
Definition: instructions.cc:13587
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I64::~Inst_VOP3__V_ASHRREV_I64
~Inst_VOP3__V_ASHRREV_I64()
Definition: instructions.cc:33809
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14163
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14627
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U64::~Inst_VOPC__V_CMP_GT_U64
~Inst_VOPC__V_CMP_GT_U64()
Definition: instructions.cc:16318
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U32::Inst_VOP3__V_CMPX_F_U32
Inst_VOP3__V_CMPX_F_U32(InFmt_VOP3A *)
Definition: instructions.cc:23494
gem5::VegaISA::Inst_VOP1
Definition: op_encodings.hh:372
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20175
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15470
gem5::VegaISA::Inst_SOP2__S_BFE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1257
gem5::VegaISA::Inst_VOP3__V_DIV_FMAS_F32::Inst_VOP3__V_DIV_FMAS_F32
Inst_VOP3__V_DIV_FMAS_F32(InFmt_VOP3A *)
Definition: instructions.cc:31918
gem5::VegaISA::Inst_VOP2__V_MAC_F16::Inst_VOP2__V_MAC_F16
Inst_VOP2__V_MAC_F16(InFmt_VOP2 *)
Definition: instructions.cc:7480
gem5::VegaISA::Inst_EXP__EXP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43858
gem5::VegaISA::Inst_VOP1__V_CVT_U32_F32::~Inst_VOP1__V_CVT_U32_F32
~Inst_VOP1__V_CVT_U32_F32()
Definition: instructions.cc:8398
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F64::Inst_VOP3__V_CMPX_NGT_F64
Inst_VOP3__V_CMPX_NGT_F64(InFmt_VOP3A *)
Definition: instructions.cc:20932
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CL_O::Inst_MIMG__IMAGE_SAMPLE_C_CL_O
Inst_MIMG__IMAGE_SAMPLE_C_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43050
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38801
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::Inst_SMEM__S_BUFFER_LOAD_DWORDX2
Inst_SMEM__S_BUFFER_LOAD_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:5376
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41827
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38866
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I32::~Inst_VOP3__V_CMPX_LT_I32
~Inst_VOP3__V_CMPX_LT_I32()
Definition: instructions.cc:23195
gem5::VegaISA::Inst_SOPK__S_ADDK_I32::~Inst_SOPK__S_ADDK_I32
~Inst_SOPK__S_ADDK_I32()
Definition: instructions.cc:1948
gem5::VegaISA::Inst_SOPK__S_CMPK_EQ_I32::~Inst_SOPK__S_CMPK_EQ_I32
~Inst_SOPK__S_CMPK_EQ_I32()
Definition: instructions.cc:1624
gem5::VegaISA::Inst_SOP1__S_MOVRELS_B64::~Inst_SOP1__S_MOVRELS_B64
~Inst_SOP1__S_MOVRELS_B64()
Definition: instructions.cc:3450
gem5::VegaISA::Inst_VOP3__V_ADD_F16::Inst_VOP3__V_ADD_F16
Inst_VOP3__V_ADD_F16(InFmt_VOP3A *)
Definition: instructions.cc:26719
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_L::~Inst_MIMG__IMAGE_SAMPLE_L
~Inst_MIMG__IMAGE_SAMPLE_L()
Definition: instructions.cc:42648
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U64::Inst_VOP3__V_CMPX_LE_U64
Inst_VOP3__V_CMPX_LE_U64(InFmt_VOP3A *)
Definition: instructions.cc:24933
gem5::VegaISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::Inst_SOP1__S_XOR_SAVEEXEC_B64
Inst_SOP1__S_XOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3138
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::Inst_MIMG__IMAGE_SAMPLE_C_LZ
Inst_MIMG__IMAGE_SAMPLE_C_LZ(InFmt_MIMG *)
Definition: instructions.cc:42855
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE::~Inst_MIMG__IMAGE_SAMPLE
~Inst_MIMG__IMAGE_SAMPLE()
Definition: instructions.cc:42570
gem5::VegaISA::Inst_VOP1__V_CVT_RPI_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8564
gem5::Wavefront::rawDist
std::unordered_map< int, uint64_t > rawDist
Definition: wavefront.hh:233
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38711
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U16::Inst_VOP3__V_CMPX_F_U16
Inst_VOP3__V_CMPX_F_U16(InFmt_VOP3A *)
Definition: instructions.cc:22178
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19603
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13490
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44460
gem5::VegaISA::Inst_VOP1__V_CVT_F16_U16::~Inst_VOP1__V_CVT_F16_U16
~Inst_VOP1__V_CVT_F16_U16()
Definition: instructions.cc:9974
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I64::~Inst_VOP3__V_CMPX_LE_I64
~Inst_VOP3__V_CMPX_LE_I64()
Definition: instructions.cc:24603
gem5::VegaISA::Inst_DS__DS_ADD_U32::~Inst_DS__DS_ADD_U32
~Inst_DS__DS_ADD_U32()
Definition: instructions.cc:34032
gem5::VegaISA::Inst_VOP3__V_CVT_PKACCUM_U8_F32::~Inst_VOP3__V_CVT_PKACCUM_U8_F32
~Inst_VOP3__V_CVT_PKACCUM_U8_F32()
Definition: instructions.cc:32759
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMAX::~Inst_FLAT__FLAT_ATOMIC_UMAX
~Inst_FLAT__FLAT_ATOMIC_UMAX()
Definition: instructions.cc:45095
gem5::VegaISA::Inst_DS__DS_READ_I16::~Inst_DS__DS_READ_I16
~Inst_DS__DS_READ_I16()
Definition: instructions.cc:35769
gem5::VegaISA::Inst_DS__DS_READ_B128::~Inst_DS__DS_READ_B128
~Inst_DS__DS_READ_B128()
Definition: instructions.cc:38564
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I32::Inst_VOPC__V_CMP_LT_I32
Inst_VOPC__V_CMP_LT_I32(InFmt_VOPC *)
Definition: instructions.cc:14911
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_OR::~Inst_FLAT__FLAT_ATOMIC_OR
~Inst_FLAT__FLAT_ATOMIC_OR()
Definition: instructions.cc:45151
gem5::VegaISA::Inst_VOP1__V_FRACT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10319
gem5::VegaISA::Inst_VOP2__V_MUL_I32_I24::~Inst_VOP2__V_MUL_I32_I24
~Inst_VOP2__V_MUL_I32_I24()
Definition: instructions.cc:6306
gem5::ComputeUnit::cu_id
int cu_id
Definition: compute_unit.hh:292
gem5::VegaISA::Inst_SOP2__S_ASHR_I64::Inst_SOP2__S_ASHR_I64
Inst_SOP2__S_ASHR_I64(InFmt_SOP2 *)
Definition: instructions.cc:1122
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F32::~Inst_VOP3__V_FREXP_MANT_F32
~Inst_VOP3__V_FREXP_MANT_F32()
Definition: instructions.cc:29622
gem5::VegaISA::Inst_VOP3__V_SQRT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29129
gem5::VegaISA::Inst_VOPC__V_CMP_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14328
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12070
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX2::Inst_FLAT__FLAT_LOAD_DWORDX2
Inst_FLAT__FLAT_LOAD_DWORDX2(InFmt_FLAT *)
Definition: instructions.cc:44087
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11726
gem5::VegaISA::Inst_DS__DS_RSUB_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35016
gem5::VegaISA::Inst_VOP3__V_ALIGNBIT_B32::Inst_VOP3__V_ALIGNBIT_B32
Inst_VOP3__V_ALIGNBIT_B32(InFmt_VOP3A *)
Definition: instructions.cc:30791
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F64::~Inst_VOP3__V_CMP_EQ_F64
~Inst_VOP3__V_CMP_EQ_F64()
Definition: instructions.cc:19539
gem5::VegaISA::Inst_VOP3__V_CVT_I16_F16::Inst_VOP3__V_CVT_I16_F16
Inst_VOP3__V_CVT_I16_F16(InFmt_VOP3A *)
Definition: instructions.cc:29746
gem5::VegaISA::Inst_VOP3__V_INTERP_P1LL_F16::~Inst_VOP3__V_INTERP_P1LL_F16
~Inst_VOP3__V_INTERP_P1LL_F16()
Definition: instructions.cc:32856
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F32::~Inst_VOPC__V_CMPX_GT_F32
~Inst_VOPC__V_CMPX_GT_F32()
Definition: instructions.cc:12300
gem5::VegaISA::Inst_VOP3__V_INTERP_P1_F32::~Inst_VOP3__V_INTERP_P1_F32
~Inst_VOP3__V_INTERP_P1_F32()
Definition: instructions.cc:32783
gem5::VegaISA::Inst_DS__DS_MSKOR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37035
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORD::Inst_SMEM__S_BUFFER_STORE_DWORD
Inst_SMEM__S_BUFFER_STORE_DWORD(InFmt_SMEM *)
Definition: instructions.cc:5774
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX4::~Inst_FLAT__FLAT_STORE_DWORDX4
~Inst_FLAT__FLAT_STORE_DWORDX4()
Definition: instructions.cc:44577
gem5::VegaISA::Inst_VOP3__V_MED3_U32::~Inst_VOP3__V_MED3_U32
~Inst_VOP3__V_MED3_U32()
Definition: instructions.cc:31305
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_UBYTE::~Inst_FLAT__FLAT_LOAD_UBYTE
~Inst_FLAT__FLAT_LOAD_UBYTE()
Definition: instructions.cc:43871
gem5::VegaISA::Inst_VOP3__V_MUL_U32_U24::Inst_VOP3__V_MUL_U32_U24
Inst_VOP3__V_MUL_U32_U24(InFmt_VOP3A *)
Definition: instructions.cc:25670
gem5::VegaISA::Inst_VOP3__V_CNDMASK_B32::Inst_VOP3__V_CNDMASK_B32
Inst_VOP3__V_CNDMASK_B32(InFmt_VOP3A *)
Definition: instructions.cc:25158
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F32::~Inst_VOPC__V_CMP_LT_F32
~Inst_VOPC__V_CMP_LT_F32()
Definition: instructions.cc:11651
gem5::statistics::DistBase::sample
void sample(const U &v, int n=1)
Add a value to the distribtion n times.
Definition: statistics.hh:1327
gem5::VegaISA::Inst_DS__DS_WRITE2_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36579
gem5::VegaISA::Inst_DS__DS_WRITE_B128::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38478
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F64::~Inst_VOP3__V_CMP_TRU_F64
~Inst_VOP3__V_CMP_TRU_F64()
Definition: instructions.cc:20282
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_CL_O::Inst_MIMG__IMAGE_GATHER4_C_CL_O
Inst_MIMG__IMAGE_GATHER4_C_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43563
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44073
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11546
gem5::ComputeUnit::vrf
std::vector< VectorRegisterFile * > vrf
Definition: compute_unit.hh:295
gem5::VegaISA::Inst_SOP1__S_BREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2448
gem5::VegaISA::Inst_VOP1__V_CVT_F32_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8543
gem5::VegaISA::Inst_VOP3__V_NOT_B32::~Inst_VOP3__V_NOT_B32
~Inst_VOP3__V_NOT_B32()
Definition: instructions.cc:29249
gem5::VegaISA::Inst_DS__DS_INC_SRC2_U32::Inst_DS__DS_INC_SRC2_U32
Inst_DS__DS_INC_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:37486
gem5::VegaISA::Inst_VOP1__V_CVT_I32_F64::~Inst_VOP1__V_CVT_I32_F64
~Inst_VOP1__V_CVT_I32_F64()
Definition: instructions.cc:8256
gem5::VegaISA::Inst_VOP2__V_SUBREV_F32::~Inst_VOP2__V_SUBREV_F32
~Inst_VOP2__V_SUBREV_F32()
Definition: instructions.cc:6159
gem5::VegaISA::Inst_VOP3A::extData
InFmt_VOP3_1 extData
Definition: op_encodings.hh:444
gem5::VegaISA::Inst_DS__DS_MIN_F64::~Inst_DS__DS_MIN_F64
~Inst_DS__DS_MIN_F64()
Definition: instructions.cc:36719
gem5::VegaISA::Inst_VOP3__V_CVT_PK_U16_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33998
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27019
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U32::~Inst_VOP3__V_CMP_GE_U32
~Inst_VOP3__V_CMP_GE_U32()
Definition: instructions.cc:23091
gem5::VegaISA::Inst_SOPP__S_INCPERFLEVEL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4847
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_USHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:43988
gem5::VegaISA::Inst_VOP3__V_BFE_U32::~Inst_VOP3__V_BFE_U32
~Inst_VOP3__V_BFE_U32()
Definition: instructions.cc:30467
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U64::Inst_VOPC__V_CMPX_NE_U64
Inst_VOPC__V_CMPX_NE_U64(InFmt_VOPC *)
Definition: instructions.cc:16879
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16071
gem5::VegaISA::InFmt_FLAT_1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1659
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U16::~Inst_VOP3__V_CMP_GT_U16
~Inst_VOP3__V_CMP_GT_U16()
Definition: instructions.cc:21687
gem5::VegaISA::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:741
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39581
gem5::VegaISA::Inst_DS__DS_CONSUME::Inst_DS__DS_CONSUME
Inst_DS__DS_CONSUME(InFmt_DS *)
Definition: instructions.cc:37964
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F16::Inst_VOPC__V_CMP_NLE_F16
Inst_VOPC__V_CMP_NLE_F16(InFmt_VOPC *)
Definition: instructions.cc:11197
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F32::~Inst_VOPC__V_CMP_GT_F32
~Inst_VOPC__V_CMP_GT_F32()
Definition: instructions.cc:11753
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U32::~Inst_VOPC__V_CMPX_T_U32
~Inst_VOPC__V_CMPX_T_U32()
Definition: instructions.cc:15908
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F64::~Inst_VOPC__V_CMPX_CLASS_F64
~Inst_VOPC__V_CMPX_CLASS_F64()
Definition: instructions.cc:10782
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23874
gem5::VegaISA::Inst_VOP3__V_FLOOR_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28737
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I16::~Inst_VOP3__V_CMPX_T_I16
~Inst_VOP3__V_CMPX_T_I16()
Definition: instructions.cc:22155
gem5::VegaISA::Inst_SOP2__S_BFE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1293
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13675
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F64::~Inst_VOP3__V_CMP_GE_F64
~Inst_VOP3__V_CMP_GE_F64()
Definition: instructions.cc:19768
gem5::VegaISA::Inst_SOP2__S_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:461
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13043
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17690
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_O::Inst_MIMG__IMAGE_SAMPLE_C_D_O
Inst_MIMG__IMAGE_SAMPLE_C_D_O(InFmt_MIMG *)
Definition: instructions.cc:43070
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_I64::~Inst_DS__DS_MIN_SRC2_I64
~Inst_DS__DS_MIN_SRC2_I64()
Definition: instructions.cc:38139
gem5::VegaISA::Inst_DS__DS_AND_SRC2_B64::Inst_DS__DS_AND_SRC2_B64
Inst_DS__DS_AND_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:38222
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2()
Definition: instructions.cc:40917
gem5::VegaISA::Inst_SOP2__S_ADD_I32::~Inst_SOP2__S_ADD_I32
~Inst_SOP2__S_ADD_I32()
Definition: instructions.cc:122
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F16::Inst_VOPC__V_CMPX_F_F16
Inst_VOPC__V_CMPX_F_F16(InFmt_VOPC *)
Definition: instructions.cc:11277
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37776
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C::~Inst_MIMG__IMAGE_SAMPLE_C
~Inst_MIMG__IMAGE_SAMPLE_C()
Definition: instructions.cc:42725
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33818
gem5::VegaISA::Inst_DS__DS_AND_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36971
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14527
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12235
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41680
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36646
gem5::VegaISA::Inst_VOP3__V_RSQ_F64::Inst_VOP3__V_RSQ_F64
Inst_VOP3__V_RSQ_F64(InFmt_VOP3A *)
Definition: instructions.cc:29025
gem5::VegaISA::Inst_VOPC__V_CMP_O_F32::~Inst_VOPC__V_CMP_O_F32
~Inst_VOPC__V_CMP_O_F32()
Definition: instructions.cc:11856
gem5::VegaISA::Inst_VOP2__V_MIN_I32::Inst_VOP2__V_MIN_I32
Inst_VOP2__V_MIN_I32(InFmt_VOP2 *)
Definition: instructions.cc:6504
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U64::Inst_VOP3__V_CMPX_GE_U64
Inst_VOP3__V_CMPX_GE_U64(InFmt_VOP3A *)
Definition: instructions.cc:25071
gem5::VegaISA::Inst_VOP1__V_CVT_F32_U32::Inst_VOP1__V_CVT_F32_U32
Inst_VOP1__V_CVT_F32_U32(InFmt_VOP1 *)
Definition: instructions.cc:8359
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42596
gem5::VegaISA::Inst_VOP3__V_CVT_I32_F32::Inst_VOP3__V_CVT_I32_F32
Inst_VOP3__V_CVT_I32_F32(InFmt_VOP3A *)
Definition: instructions.cc:27817
gem5::VegaISA::Inst_SOPC::instData
InFmt_SOPC instData
Definition: op_encodings.hh:151
gem5::VegaISA::Inst_DS__DS_CMPST_F32::Inst_DS__DS_CMPST_F32
Inst_DS__DS_CMPST_F32(InFmt_DS *)
Definition: instructions.cc:34608
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I32::Inst_VOPC__V_CMP_GT_I32
Inst_VOPC__V_CMP_GT_I32(InFmt_VOPC *)
Definition: instructions.cc:15010
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12565
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ(InFmt_MTBUF *)
Definition: instructions.cc:41769
gem5::VegaISA::Inst_VOP2__V_MAX_I16::~Inst_VOP2__V_MAX_I16
~Inst_VOP2__V_MAX_I16()
Definition: instructions.cc:7877
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::Inst_SMEM__S_BUFFER_LOAD_DWORD
Inst_SMEM__S_BUFFER_LOAD_DWORD(InFmt_SMEM *)
Definition: instructions.cc:5320
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_INC::Inst_MIMG__IMAGE_ATOMIC_INC
Inst_MIMG__IMAGE_ATOMIC_INC(InFmt_MIMG *)
Definition: instructions.cc:42507
gem5::VegaISA::Inst_VOP3__V_ADD_F16::~Inst_VOP3__V_ADD_F16
~Inst_VOP3__V_ADD_F16()
Definition: instructions.cc:26726
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42265
gem5::VegaISA::Inst_SOPK__S_CMPK_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1739
gem5::VegaISA::Inst_VOP3__V_MAD_U64_U32::~Inst_VOP3__V_MAD_U64_U32
~Inst_VOP3__V_MAD_U64_U32()
Definition: instructions.cc:32140
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34577
gem5::VegaISA::Inst_SOP2__S_OR_B32::~Inst_SOP2__S_OR_B32
~Inst_SOP2__S_OR_B32()
Definition: instructions.cc:517
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39233
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U32::~Inst_VOPC__V_CMPX_GT_U32
~Inst_VOPC__V_CMPX_GT_U32()
Definition: instructions.cc:15803
gem5::VegaISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::~Inst_SOP1__S_NAND_SAVEEXEC_B64
~Inst_SOP1__S_NAND_SAVEEXEC_B64()
Definition: instructions.cc:3255
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17898
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12673
gem5::VegaISA::Inst_VOP2__V_SUBREV_CO_U32::Inst_VOP2__V_SUBREV_CO_U32
Inst_VOP2__V_SUBREV_CO_U32(InFmt_VOP2 *)
Definition: instructions.cc:7216
gem5::mask
constexpr uint64_t mask(unsigned nbits)
Generate a 64-bit mask of 'nbits' 1s, right justified.
Definition: bitfield.hh:63
gem5::VegaISA::Inst_SOP1__S_QUADMASK_B64::Inst_SOP1__S_QUADMASK_B64
Inst_SOP1__S_QUADMASK_B64(InFmt_SOP1 *)
Definition: instructions.cc:3385
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23724
gem5::VegaISA::Inst_VOP3__V_SQRT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29089
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_CL_O::Inst_MIMG__IMAGE_SAMPLE_B_CL_O
Inst_MIMG__IMAGE_SAMPLE_B_CL_O(InFmt_MIMG *)
Definition: instructions.cc:42991
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U32::Inst_VOP3__V_CMPX_GE_U32
Inst_VOP3__V_CMPX_GE_U32(InFmt_VOP3A *)
Definition: instructions.cc:23755
gem5::VegaISA::Inst_VOP3__V_MBCNT_HI_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33681
gem5::VegaISA::Inst_VOP2__V_MADMK_F16::Inst_VOP2__V_MADMK_F16
Inst_VOP2__V_MADMK_F16(InFmt_VOP2 *)
Definition: instructions.cc:7503
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41692
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41375
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I32::Inst_VOPC__V_CMPX_T_I32
Inst_VOPC__V_CMPX_T_I32(InFmt_VOPC *)
Definition: instructions.cc:15631
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I16::~Inst_VOPC__V_CMP_LT_I16
~Inst_VOPC__V_CMP_LT_I16()
Definition: instructions.cc:13869
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41408
gem5::VegaISA::Inst_DS__DS_AND_RTN_B64::~Inst_DS__DS_AND_RTN_B64
~Inst_DS__DS_AND_RTN_B64()
Definition: instructions.cc:36961
gem5::VegaISA::InFmt_VOP_DPP::SRC1_NEG
unsigned int SRC1_NEG
Definition: gpu_decoder.hh:1849
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:42148
gem5::VegaISA::firstOppositeSignBit
ScalarRegI32 firstOppositeSignBit(ScalarRegI32 val)
Definition: inst_util.hh:173
gem5::VegaISA::Inst_VOP3__V_CVT_FLR_I32_F32::Inst_VOP3__V_CVT_FLR_I32_F32
Inst_VOP3__V_CVT_FLR_I32_F32(InFmt_VOP3A *)
Definition: instructions.cc:27984
gem5::VegaISA::Inst_VOP3__V_INTERP_MOV_F32::~Inst_VOP3__V_INTERP_MOV_F32
~Inst_VOP3__V_INTERP_MOV_F32()
Definition: instructions.cc:32835
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U32::Inst_VOP3__V_CMPX_GT_U32
Inst_VOP3__V_CMPX_GT_U32(InFmt_VOP3A *)
Definition: instructions.cc:23663
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMIN::Inst_FLAT__FLAT_ATOMIC_SMIN
Inst_FLAT__FLAT_ATOMIC_SMIN(InFmt_FLAT *)
Definition: instructions.cc:44903
gem5::VegaISA::Inst_VOP1__V_RCP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9377
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4149
gem5::VegaISA::Inst_VOP3__V_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25926
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I32_F64::Inst_VOP3__V_FREXP_EXP_I32_F64
Inst_VOP3__V_FREXP_EXP_I32_F64(InFmt_VOP3A *)
Definition: instructions.cc:29435
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24794
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F16::~Inst_VOPC__V_CMPX_F_F16
~Inst_VOPC__V_CMPX_F_F16()
Definition: instructions.cc:11285
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44498
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5480
gem5::VegaISA::Inst_VOPC__V_CMP_O_F64::~Inst_VOPC__V_CMP_O_F64
~Inst_VOPC__V_CMP_O_F64()
Definition: instructions.cc:12966
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37436
gem5::VegaISA::Inst_VOP3__V_CVT_PKNORM_I16_F32::Inst_VOP3__V_CVT_PKNORM_I16_F32
Inst_VOP3__V_CVT_PKNORM_I16_F32(InFmt_VOP3A *)
Definition: instructions.cc:33919
gem5::VegaISA::VecElemU8
uint8_t VecElemU8
Definition: gpu_registers.hh:161
gem5::VegaISA::Inst_VOP2__V_MUL_LO_U16::Inst_VOP2__V_MUL_LO_U16
Inst_VOP2__V_MUL_LO_U16(InFmt_VOP2 *)
Definition: instructions.cc:7656
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43418
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F16::~Inst_VOP3__V_CMPX_LE_F16
~Inst_VOP3__V_CMPX_LE_F16()
Definition: instructions.cc:18018
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18905
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O::Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O
Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43150
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F32::~Inst_VOP3__V_CMPX_NGE_F32
~Inst_VOP3__V_CMPX_NGE_F32()
Definition: instructions.cc:19199
gem5::VegaISA::Inst_SOP2__S_ANDN2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:653
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16104
gem5::VegaISA::Inst_SOP2__S_BFM_B32::Inst_SOP2__S_BFM_B32
Inst_SOP2__S_BFM_B32(InFmt_SOP2 *)
Definition: instructions.cc:1155
gem5::VegaISA::Inst_SOP2__S_ORN2_B32::Inst_SOP2__S_ORN2_B32
Inst_SOP2__S_ORN2_B32(InFmt_SOP2 *)
Definition: instructions.cc:703
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_B32::~Inst_SOP1__S_FLBIT_I32_B32
~Inst_SOP1__S_FLBIT_I32_B32()
Definition: instructions.cc:2699
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::~Inst_SMEM__S_BUFFER_LOAD_DWORDX16
~Inst_SMEM__S_BUFFER_LOAD_DWORDX16()
Definition: instructions.cc:5552
gem5::VegaISA::Inst_SOP2__S_MIN_U32::~Inst_SOP2__S_MIN_U32
~Inst_SOP2__S_MIN_U32()
Definition: instructions.cc:297
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_I32::Inst_DS__DS_MIN_SRC2_I32
Inst_DS__DS_MIN_SRC2_I32(InFmt_DS *)
Definition: instructions.cc:37531
gem5::VegaISA::Inst_VOP3__V_SAD_U16::~Inst_VOP3__V_SAD_U16
~Inst_VOP3__V_SAD_U16()
Definition: instructions.cc:31455
gem5::VegaISA::Inst_SOP2__S_XOR_B32::~Inst_SOP2__S_XOR_B32
~Inst_SOP2__S_XOR_B32()
Definition: instructions.cc:581
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F16::~Inst_VOPC__V_CMPX_NGT_F16
~Inst_VOPC__V_CMPX_NGT_F16()
Definition: instructions.cc:11518
gem5::VegaISA::Inst_VOP2__V_SUBREV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6167
gem5::VegaISA::Inst_VOP1__V_CVT_OFF_F32_I4::~Inst_VOP1__V_CVT_OFF_F32_I4
~Inst_VOP1__V_CVT_OFF_F32_I4()
Definition: instructions.cc:8622
gem5::VegaISA::Inst_SOPP__S_SENDMSGHALT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4781
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X()
Definition: instructions.cc:39028
gem5::VegaISA::Inst_VOP3__V_MUL_F16::~Inst_VOP3__V_MUL_F16
~Inst_VOP3__V_MUL_F16()
Definition: instructions.cc:26791
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F32::~Inst_VOP3__V_CMP_LE_F32
~Inst_VOP3__V_CMP_LE_F32()
Definition: instructions.cc:18414
gem5::VegaISA::Inst_VOPC__V_CMP_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15944
gem5::VegaISA::Inst_VOP3__V_MBCNT_LO_U32_B32::~Inst_VOP3__V_MBCNT_LO_U32_B32
~Inst_VOP3__V_MBCNT_LO_U32_B32()
Definition: instructions.cc:33621
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U64::~Inst_VOP3__V_CMPX_EQ_U64
~Inst_VOP3__V_CMPX_EQ_U64()
Definition: instructions.cc:24895
gem5::VegaISA::Inst_SOPP__S_CBRANCH_SCC0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4430
gem5::Cycles
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:78
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15277
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I16::~Inst_VOP3__V_CMP_GT_I16
~Inst_VOP3__V_CMP_GT_I16()
Definition: instructions.cc:21367
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43597
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D::~Inst_MIMG__IMAGE_SAMPLE_D
~Inst_MIMG__IMAGE_SAMPLE_D()
Definition: instructions.cc:42608
gem5::VegaISA::Inst_SOPP__S_ICACHE_INV::~Inst_SOPP__S_ICACHE_INV
~Inst_SOPP__S_ICACHE_INV()
Definition: instructions.cc:4819
gem5::VegaISA::InFmt_VOP_DPP::SRC0_NEG
unsigned int SRC0_NEG
Definition: gpu_decoder.hh:1847
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33728
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F64::~Inst_VOP3__V_CMPX_NEQ_F64
~Inst_VOP3__V_CMPX_NEQ_F64()
Definition: instructions.cc:21059
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F32::Inst_VOPC__V_CMP_NLE_F32
Inst_VOPC__V_CMP_NLE_F32(InFmt_VOPC *)
Definition: instructions.cc:12022
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U64::Inst_VOP3__V_CMPX_LT_U64
Inst_VOP3__V_CMPX_LT_U64(InFmt_VOP3A *)
Definition: instructions.cc:24841
gem5::VegaISA::Inst_SOP2__S_NOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:845
gem5::VegaISA::InFmt_MTBUF
Definition: gpu_decoder.hh:1690
gem5::VegaISA::Inst_VOP3__V_CEIL_F64::Inst_VOP3__V_CEIL_F64
Inst_VOP3__V_CEIL_F64(InFmt_VOP3A *)
Definition: instructions.cc:28438
gem5::VegaISA::InFmt_MUBUF::IDXEN
unsigned int IDXEN
Definition: gpu_decoder.hh:1714
gem5::GPUStaticInst::isAtomicRet
bool isAtomicRet() const
Definition: gpu_static_inst.hh:143
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41472
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_CL_O::Inst_MIMG__IMAGE_GATHER4_B_CL_O
Inst_MIMG__IMAGE_GATHER4_B_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43503
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20061
gem5::VegaISA::InFmt_MUBUF_1::VDATA
unsigned int VDATA
Definition: gpu_decoder.hh:1726
gem5::VegaISA::InFmt_DS::OFFSET0
unsigned int OFFSET0
Definition: gpu_decoder.hh:1611
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I16::~Inst_VOPC__V_CMP_LE_I16
~Inst_VOPC__V_CMP_LE_I16()
Definition: instructions.cc:13935
gem5::VegaISA::Inst_VOP3__V_LOG_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30143
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F16::~Inst_VOP3__V_CMP_LT_F16
~Inst_VOP3__V_CMP_LT_F16()
Definition: instructions.cc:17620
gem5::VegaISA::Inst_VOP1__V_RSQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9421
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40501
gem5::VegaISA::Inst_VOP3__V_MAX3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31115
gem5::VegaISA::Inst_DS__DS_MAX_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35390
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_O::Inst_MIMG__IMAGE_SAMPLE_C_B_O
Inst_MIMG__IMAGE_SAMPLE_C_B_O(InFmt_MIMG *)
Definition: instructions.cc:43130
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41080
gem5::VegaISA::Inst_SMEM__S_DCACHE_INV::Inst_SMEM__S_DCACHE_INV
Inst_SMEM__S_DCACHE_INV(InFmt_SMEM *)
Definition: instructions.cc:5870
gem5::VegaISA::Inst_SOPP__S_SETHALT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4698
gem5::VegaISA::Inst_VOP3__V_RCP_F32::Inst_VOP3__V_RCP_F32
Inst_VOP3__V_RCP_F32(InFmt_VOP3A *)
Definition: instructions.cc:28851
gem5::VegaISA::InFmt_VOP_DPP::SRC0_ABS
unsigned int SRC0_ABS
Definition: gpu_decoder.hh:1848
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I64::Inst_VOPC__V_CMPX_EQ_I64
Inst_VOPC__V_CMPX_EQ_I64(InFmt_VOPC *)
Definition: instructions.cc:16504
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::~Inst_MIMG__IMAGE_SAMPLE_C_LZ
~Inst_MIMG__IMAGE_SAMPLE_C_LZ()
Definition: instructions.cc:42862
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42354
gem5::VegaISA::Inst_SOPP__S_SETHALT::Inst_SOPP__S_SETHALT
Inst_SOPP__S_SETHALT(InFmt_SOPP *)
Definition: instructions.cc:4683
gem5::VegaISA::countZeroBitsMsb
ScalarRegI32 countZeroBitsMsb(T val)
Definition: inst_util.hh:163
gem5::VegaISA::Inst_VOP3__V_SUB_F32::Inst_VOP3__V_SUB_F32
Inst_VOP3__V_SUB_F32(InFmt_VOP3A *)
Definition: instructions.cc:25262
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B32::~Inst_DS__DS_WRITE2ST64_B32
~Inst_DS__DS_WRITE2ST64_B32()
Definition: instructions.cc:34522
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I64::~Inst_VOP3__V_CMPX_NE_I64
~Inst_VOP3__V_CMPX_NE_I64()
Definition: instructions.cc:24695
gem5::VegaISA::Inst_SOPC__S_BITCMP0_B32::Inst_SOPC__S_BITCMP0_B32
Inst_SOPC__S_BITCMP0_B32(InFmt_SOPC *)
Definition: instructions.cc:3969
gem5::VegaISA::Inst_VOP1__V_LOG_F32::~Inst_VOP1__V_LOG_F32
~Inst_VOP1__V_LOG_F32()
Definition: instructions.cc:9240
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::Inst_SMEM__S_BUFFER_STORE_DWORDX2
Inst_SMEM__S_BUFFER_STORE_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:5806
gem5::VegaISA::Inst_SOP1__S_WQM_B64::Inst_SOP1__S_WQM_B64
Inst_SOP1__S_WQM_B64(InFmt_SOP1 *)
Definition: instructions.cc:2378
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F32::Inst_VOPC__V_CMPX_NLE_F32
Inst_VOPC__V_CMPX_NLE_F32(InFmt_VOPC *)
Definition: instructions.cc:12586
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32::~Inst_SOP1__S_FLBIT_I32
~Inst_SOP1__S_FLBIT_I32()
Definition: instructions.cc:2755
gem5::VegaISA::Inst_DS__DS_ADD_U32::Inst_DS__DS_ADD_U32
Inst_DS__DS_ADD_U32(InFmt_DS *)
Definition: instructions.cc:34023
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I32::Inst_VOPC__V_CMP_EQ_I32
Inst_VOPC__V_CMP_EQ_I32(InFmt_VOPC *)
Definition: instructions.cc:14944
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::Inst_MUBUF__BUFFER_LOAD_SSHORT
Inst_MUBUF__BUFFER_LOAD_SSHORT(InFmt_MUBUF *)
Definition: instructions.cc:39381
gem5::VegaISA::Inst_SOPP__S_SLEEP::~Inst_SOPP__S_SLEEP
~Inst_SOPP__S_SLEEP()
Definition: instructions.cc:4711
gem5::VegaISA::Inst_DS__DS_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34681
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F64::~Inst_VOP3__V_CMP_CLASS_F64
~Inst_VOP3__V_CMP_CLASS_F64()
Definition: instructions.cc:17297
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CL_O::~Inst_MIMG__IMAGE_SAMPLE_C_CL_O
~Inst_MIMG__IMAGE_SAMPLE_C_CL_O()
Definition: instructions.cc:43057
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ()
Definition: instructions.cc:38960
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15435
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15023
gem5::VegaISA::Inst_VOP3__V_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27418
gem5::VegaISA::Inst_VOP3__V_MED3_F32::~Inst_VOP3__V_MED3_F32
~Inst_VOP3__V_MED3_F32()
Definition: instructions.cc:31201
gem5::VegaISA::Inst_VOP2__V_SUBREV_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7636
gem5::VegaISA::Inst_VOP1__V_CVT_F64_I32::~Inst_VOP1__V_CVT_F64_I32
~Inst_VOP1__V_CVT_F64_I32()
Definition: instructions.cc:8302
gem5::VegaISA::Inst_DS__DS_MIN_RTN_I64::Inst_DS__DS_MIN_RTN_I64
Inst_DS__DS_MIN_RTN_I64(InFmt_DS *)
Definition: instructions.cc:36872
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F16::~Inst_VOPC__V_CMP_GT_F16
~Inst_VOPC__V_CMP_GT_F16()
Definition: instructions.cc:11044
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F64::Inst_VOPC__V_CMP_NGT_F64
Inst_VOPC__V_CMP_NGT_F64(InFmt_VOPC *)
Definition: instructions.cc:13098
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I32::Inst_VOPC__V_CMPX_NE_I32
Inst_VOPC__V_CMPX_NE_I32(InFmt_VOPC *)
Definition: instructions.cc:15561
gem5::VegaISA::Inst_DS__DS_AND_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35163
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16005
gem5::VegaISA::Inst_SOPP__S_CBRANCH_VCCZ::~Inst_SOPP__S_CBRANCH_VCCZ
~Inst_SOPP__S_CBRANCH_VCCZ()
Definition: instructions.cc:4485
gem5::VegaISA::Inst_SMEM__S_DCACHE_INV_VOL::Inst_SMEM__S_DCACHE_INV_VOL
Inst_SMEM__S_DCACHE_INV_VOL(InFmt_SMEM *)
Definition: instructions.cc:5906
gem5::VegaISA::Inst_SOPK__S_CBRANCH_I_FORK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2035
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U16::Inst_VOP3__V_CMP_LT_U16
Inst_VOP3__V_CMP_LT_U16(InFmt_VOP3A *)
Definition: instructions.cc:21548
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_L_O::~Inst_MIMG__IMAGE_GATHER4_L_O
~Inst_MIMG__IMAGE_GATHER4_L_O()
Definition: instructions.cc:43470
gem5::VegaISA::Inst_SOP2__S_XOR_B64::Inst_SOP2__S_XOR_B64
Inst_SOP2__S_XOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:607
gem5::VegaISA::Inst_DS__DS_MIN_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35364
gem5::VegaISA::Inst_SOPP__S_NOP::~Inst_SOPP__S_NOP
~Inst_SOPP__S_NOP()
Definition: instructions.cc:4198
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44047
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::~Inst_FLAT__FLAT_ATOMIC_UMAX_X2
~Inst_FLAT__FLAT_ATOMIC_UMAX_X2()
Definition: instructions.cc:45619
gem5::VegaISA::Inst_VOP3__V_TRIG_PREOP_F64::Inst_VOP3__V_TRIG_PREOP_F64
Inst_VOP3__V_TRIG_PREOP_F64(InFmt_VOP3A *)
Definition: instructions.cc:33849
gem5::VegaISA::Inst_VOP3__V_MUL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33047
gem5::VegaISA::Inst_VOP3__V_ADD_U32::~Inst_VOP3__V_ADD_U32
~Inst_VOP3__V_ADD_U32()
Definition: instructions.cc:27411
gem5::VegaISA::Inst_VOPC__V_CMP_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12739
gem5::VegaISA::Inst_SOP1__S_FF0_I32_B64::~Inst_SOP1__S_FF0_I32_B64
~Inst_SOP1__S_FF0_I32_B64()
Definition: instructions.cc:2615
gem5::VegaISA::Inst_SOPP__S_TRAP::~Inst_SOPP__S_TRAP
~Inst_SOPP__S_TRAP()
Definition: instructions.cc:4792
gem5::VegaISA::Inst_DS__DS_READ_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35454
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_I64::Inst_DS__DS_MIN_SRC2_I64
Inst_DS__DS_MIN_SRC2_I64(InFmt_DS *)
Definition: instructions.cc:38134
gem5::VegaISA::Inst_VOP3__V_SIN_F32::~Inst_VOP3__V_SIN_F32
~Inst_VOP3__V_SIN_F32()
Definition: instructions.cc:29162
gem5::VegaISA::Inst_VOP3__V_CEIL_F32::Inst_VOP3__V_CEIL_F32
Inst_VOP3__V_CEIL_F32(InFmt_VOP3A *)
Definition: instructions.cc:28641
gem5::VegaISA::Inst_VOP1__V_SQRT_F16::~Inst_VOP1__V_SQRT_F16
~Inst_VOP1__V_SQRT_F16()
Definition: instructions.cc:10081
gem5::VegaISA::Inst_VINTRP__V_INTERP_P1_F32::~Inst_VINTRP__V_INTERP_P1_F32
~Inst_VINTRP__V_INTERP_P1_F32()
Definition: instructions.cc:16987
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F16::Inst_VOP3__V_CMPX_LT_F16
Inst_VOP3__V_CMPX_LT_F16(InFmt_VOP3A *)
Definition: instructions.cc:17965
gem5::VegaISA::Inst_SOP2__S_BFE_I64::~Inst_SOP2__S_BFE_I64
~Inst_SOP2__S_BFE_I64()
Definition: instructions.cc:1368
gem5::VegaISA::Inst_DS__DS_READ2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37283
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24856
gem5::Wavefront::wgId
uint32_t wgId
Definition: wavefront.hh:160
gem5::VegaISA::Inst_DS__DS_READ_I8::~Inst_DS__DS_READ_I8
~Inst_DS__DS_READ_I8()
Definition: instructions.cc:35643
gem5::VegaISA::Inst_VOP3__V_LSHL_ADD_U32::~Inst_VOP3__V_LSHL_ADD_U32
~Inst_VOP3__V_LSHL_ADD_U32()
Definition: instructions.cc:32279
gem5::VegaISA::Inst_VOP1__V_CVT_F64_F32::~Inst_VOP1__V_CVT_F64_F32
~Inst_VOP1__V_CVT_F64_F32()
Definition: instructions.cc:8675
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5592
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18025
gem5::VegaISA::Inst_VOP3__V_MUL_HI_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33365
gem5::VegaISA::Inst_VOP2__V_MADAK_F16::Inst_VOP2__V_MADAK_F16
Inst_VOP2__V_MADAK_F16(InFmt_VOP2 *)
Definition: instructions.cc:7528
gem5::VegaISA::Inst_VOP2__V_LDEXP_F16::Inst_VOP2__V_LDEXP_F16
Inst_VOP2__V_LDEXP_F16(InFmt_VOP2 *)
Definition: instructions.cc:7970
gem5::VegaISA::Inst_DS__DS_PERMUTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35996
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21184
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18737
gem5::VegaISA::InFmt_SOPP
Definition: gpu_decoder.hh:1780
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I32::~Inst_VOPC__V_CMPX_EQ_I32
~Inst_VOPC__V_CMPX_EQ_I32()
Definition: instructions.cc:15463
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I16::~Inst_VOPC__V_CMPX_GT_I16
~Inst_VOPC__V_CMPX_GT_I16()
Definition: instructions.cc:14485
gem5::VegaISA::Inst_VOP1__V_SQRT_F32::~Inst_VOP1__V_SQRT_F32
~Inst_VOP1__V_SQRT_F32()
Definition: instructions.cc:9457
gem5::VegaISA::Inst_VOP3__V_CMP_O_F32::~Inst_VOP3__V_CMP_O_F32
~Inst_VOP3__V_CMP_O_F32()
Definition: instructions.cc:18553
gem5::VegaISA::Inst_SOP1__S_MOV_B64::Inst_SOP1__S_MOV_B64
Inst_SOP1__S_MOV_B64(InFmt_SOP1 *)
Definition: instructions.cc:2196
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12709
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U32::~Inst_VOPC__V_CMP_GE_U32
~Inst_VOPC__V_CMP_GE_U32()
Definition: instructions.cc:15336
gem5::VegaISA::Inst_VOP1__V_CEIL_F64::~Inst_VOP1__V_CEIL_F64
~Inst_VOP1__V_CEIL_F64()
Definition: instructions.cc:8947
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43457
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37547
gem5::VegaISA::Inst_VOP3__V_CEIL_F16::~Inst_VOP3__V_CEIL_F16
~Inst_VOP3__V_CEIL_F16()
Definition: instructions.cc:29964
gem5::VegaISA::Inst_SOP1__S_BITSET0_B32::Inst_SOP1__S_BITSET0_B32
Inst_SOP1__S_BITSET0_B32(InFmt_SOP1 *)
Definition: instructions.cc:2861
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I32::~Inst_VOP3__V_ASHRREV_I32
~Inst_VOP3__V_ASHRREV_I32()
Definition: instructions.cc:26093
gem5::VegaISA::Inst_VOP3__V_MAX_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27202
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F32::~Inst_VOPC__V_CMPX_NLG_F32
~Inst_VOPC__V_CMPX_NLG_F32()
Definition: instructions.cc:12521
gem5::VegaISA::Inst_VOP3__V_MAX3_I32::Inst_VOP3__V_MAX3_I32
Inst_VOP3__V_MAX3_I32(InFmt_VOP3A *)
Definition: instructions.cc:31102
gem5::VegaISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3336
gem5::VegaISA::Inst_VOP3__V_CUBESC_F32::~Inst_VOP3__V_CUBESC_F32
~Inst_VOP3__V_CUBESC_F32()
Definition: instructions.cc:30405
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW(InFmt_MUBUF *)
Definition: instructions.cc:38722
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_I32::~Inst_DS__DS_MIN_SRC2_I32
~Inst_DS__DS_MIN_SRC2_I32()
Definition: instructions.cc:37536
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B::~Inst_MIMG__IMAGE_GATHER4_C_B
~Inst_MIMG__IMAGE_GATHER4_C_B()
Definition: instructions.cc:43371
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X()
Definition: instructions.cc:41304
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B32::Inst_DS__DS_WRITE2ST64_B32
Inst_DS__DS_WRITE2ST64_B32(InFmt_DS *)
Definition: instructions.cc:34515
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I16::~Inst_VOP3__V_CMPX_EQ_I16
~Inst_VOP3__V_CMPX_EQ_I16()
Definition: instructions.cc:21925
gem5::Wavefront::setStatus
void setStatus(status_e newStatus)
Definition: wavefront.cc:550
gem5::VegaISA::InFmt_MUBUF
Definition: gpu_decoder.hh:1711
gem5::VegaISA::Inst_SOP1__S_WQM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2362
gem5::VegaISA::Inst_VOP1__V_CVT_F64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8890
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23386
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F16::Inst_VOPC__V_CMPX_GT_F16
Inst_VOPC__V_CMPX_GT_F16(InFmt_VOPC *)
Definition: instructions.cc:11361
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORD::~Inst_FLAT__FLAT_LOAD_DWORD
~Inst_FLAT__FLAT_LOAD_DWORD()
Definition: instructions.cc:44040
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15343
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_F32::~Inst_DS__DS_ADD_SRC2_F32
~Inst_DS__DS_ADD_SRC2_F32()
Definition: instructions.cc:37764
gem5::VegaISA::Inst_VOP3__V_ADD_U16::Inst_VOP3__V_ADD_U16
Inst_VOP3__V_ADD_U16(InFmt_VOP3A *)
Definition: instructions.cc:26828
gem5::VegaISA::Inst_VOP3__V_COS_F16::Inst_VOP3__V_COS_F16
Inst_VOP3__V_COS_F16(InFmt_VOP3A *)
Definition: instructions.cc:30061
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U16::Inst_VOPC__V_CMPX_EQ_U16
Inst_VOPC__V_CMPX_EQ_U16(InFmt_VOPC *)
Definition: instructions.cc:14678
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I16::Inst_VOPC__V_CMPX_T_I16
Inst_VOPC__V_CMPX_T_I16(InFmt_VOPC *)
Definition: instructions.cc:14583
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17981
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F32::Inst_VOP3__V_CMP_LG_F32
Inst_VOP3__V_CMP_LG_F32(InFmt_VOP3A *)
Definition: instructions.cc:18476
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I16::Inst_VOPC__V_CMP_GT_I16
Inst_VOPC__V_CMP_GT_I16(InFmt_VOPC *)
Definition: instructions.cc:13962
gem5::VegaISA::Inst_DS__DS_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34040
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12138
gem5::VegaISA::Inst_DS__DS_SUB_U64::~Inst_DS__DS_SUB_U64
~Inst_DS__DS_SUB_U64()
Definition: instructions.cc:36213
gem5::VegaISA::Inst_VOP3__V_INTERP_P1LV_F16::~Inst_VOP3__V_INTERP_P1LV_F16
~Inst_VOP3__V_INTERP_P1LV_F16()
Definition: instructions.cc:32885
gem5::VegaISA::Inst_VOP3__V_FFBL_B32::~Inst_VOP3__V_FFBL_B32
~Inst_VOP3__V_FFBL_B32()
Definition: instructions.cc:29361
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I16::Inst_VOP3__V_CMPX_EQ_I16
Inst_VOP3__V_CMPX_EQ_I16(InFmt_VOP3A *)
Definition: instructions.cc:21917
gem5::VegaISA::Inst_DS__DS_ADD_U32::initiateAcc
void initiateAcc(GPUDynInstPtr gpuDynInst) override
Definition: instructions.cc:34072
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F32::~Inst_VOPC__V_CMPX_EQ_F32
~Inst_VOPC__V_CMPX_EQ_F32()
Definition: instructions.cc:12228
gem5::VegaISA::Inst_DS__DS_RSUB_U32::Inst_DS__DS_RSUB_U32
Inst_DS__DS_RSUB_U32(InFmt_DS *)
Definition: instructions.cc:34108
gem5::VegaISA::Inst_VOP1__V_CVT_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8265
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45266
gem5::VegaISA::Inst_SOPC__S_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3702
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14957
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F64::Inst_VOPC__V_CMPX_LG_F64
Inst_VOPC__V_CMPX_LG_F64(InFmt_VOPC *)
Definition: instructions.cc:13438
gem5::VegaISA::Inst_VOP1__V_RNDNE_F64::~Inst_VOP1__V_RNDNE_F64
~Inst_VOP1__V_RNDNE_F64()
Definition: instructions.cc:8980
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F16::Inst_VOPC__V_CMPX_O_F16
Inst_VOPC__V_CMPX_O_F16(InFmt_VOPC *)
Definition: instructions.cc:11424
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F64::Inst_VOPC__V_CMP_CLASS_F64
Inst_VOPC__V_CMP_CLASS_F64(InFmt_VOPC *)
Definition: instructions.cc:10659
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41110
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F32::Inst_VOP3__V_CMPX_U_F32
Inst_VOP3__V_CMPX_U_F32(InFmt_VOP3A *)
Definition: instructions.cc:19151
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8746
gem5::VegaISA::Inst_SOP2__S_ORN2_B32::~Inst_SOP2__S_ORN2_B32
~Inst_SOP2__S_ORN2_B32()
Definition: instructions.cc:709
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U32::Inst_VOPC__V_CMP_EQ_U32
Inst_VOPC__V_CMP_EQ_U32(InFmt_VOPC *)
Definition: instructions.cc:15198
gem5::VegaISA::Inst_SOPP__S_ENDPGM_SAVED::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4995
gem5::VegaISA::Inst_DS__DS_WRITE2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34465
gem5::VegaISA::Inst_VOP2__V_MAX_F16::~Inst_VOP2__V_MAX_F16
~Inst_VOP2__V_MAX_F16()
Definition: instructions.cc:7801
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I32::Inst_VOPC__V_CMPX_LE_I32
Inst_VOPC__V_CMPX_LE_I32(InFmt_VOPC *)
Definition: instructions.cc:15491
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK::~Inst_MIMG__IMAGE_LOAD_PCK
~Inst_MIMG__IMAGE_LOAD_PCK()
Definition: instructions.cc:41909
gem5::VegaISA::Inst_DS__DS_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34208
gem5::VegaISA::Inst_DS__DS_RSUB_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36823
gem5::VegaISA::Inst_DS__DS_WRITE2_B64::Inst_DS__DS_WRITE2_B64
Inst_DS__DS_WRITE2_B64(InFmt_DS *)
Definition: instructions.cc:36526
gem5::VegaISA::Inst_DS__DS_WRXCHG2_RTN_B64::~Inst_DS__DS_WRXCHG2_RTN_B64
~Inst_DS__DS_WRXCHG2_RTN_B64()
Definition: instructions.cc:37067
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43005
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19129
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18842
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16358
gem5::VegaISA::Inst_DS__DS_MAX_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36950
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F16::Inst_VOP3__V_CMP_NEQ_F16
Inst_VOP3__V_CMP_NEQ_F16(InFmt_VOP3A *)
Definition: instructions.cc:17862
gem5::VegaISA::Inst_SOPP::instData
InFmt_SOPP instData
Definition: op_encodings.hh:173
gem5::VegaISA::Inst_SOPP__S_SETHALT::~Inst_SOPP__S_SETHALT
~Inst_SOPP__S_SETHALT()
Definition: instructions.cc:4688
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F32::Inst_VOP3__V_CMP_GT_F32
Inst_VOP3__V_CMP_GT_F32(InFmt_VOP3A *)
Definition: instructions.cc:18441
gem5::VegaISA::Inst_SOPC__S_CMP_LG_I32::~Inst_SOPC__S_CMP_LG_I32
~Inst_SOPC__S_CMP_LG_I32()
Definition: instructions.cc:3667
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::~Inst_MUBUF__BUFFER_STORE_FORMAT_X
~Inst_MUBUF__BUFFER_STORE_FORMAT_X()
Definition: instructions.cc:38762
gem5::VegaISA::Inst_DS__DS_RSUB_RTN_U64::~Inst_DS__DS_RSUB_RTN_U64
~Inst_DS__DS_RSUB_RTN_U64()
Definition: instructions.cc:36812
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B::Inst_MIMG__IMAGE_GATHER4_B
Inst_MIMG__IMAGE_GATHER4_B(InFmt_MIMG *)
Definition: instructions.cc:43247
gem5::VegaISA::Inst_SMEM__S_MEMREALTIME::~Inst_SMEM__S_MEMREALTIME
~Inst_SMEM__S_MEMREALTIME()
Definition: instructions.cc:5969
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::~Inst_SMEM__S_BUFFER_LOAD_DWORD
~Inst_SMEM__S_BUFFER_LOAD_DWORD()
Definition: instructions.cc:5328
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39526
gem5::VegaISA::Inst_SOP1__S_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2299
gem5::VegaISA::Inst_DS__DS_DEC_RTN_U64::Inst_DS__DS_DEC_RTN_U64
Inst_DS__DS_DEC_RTN_U64(InFmt_DS *)
Definition: instructions.cc:36850
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16137
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_DEC::~Inst_MIMG__IMAGE_ATOMIC_DEC
~Inst_MIMG__IMAGE_ATOMIC_DEC()
Definition: instructions.cc:42549
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_UBYTE::Inst_FLAT__FLAT_LOAD_UBYTE
Inst_FLAT__FLAT_LOAD_UBYTE(InFmt_FLAT *)
Definition: instructions.cc:43864
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I16::~Inst_VOP3__V_CMPX_GE_I16
~Inst_VOP3__V_CMPX_GE_I16()
Definition: instructions.cc:22109
gem5::VegaISA::Inst_DS__DS_READ2ST64_B32::~Inst_DS__DS_READ2ST64_B32
~Inst_DS__DS_READ2ST64_B32()
Definition: instructions.cc:35576
gem5::ComputeUnit
Definition: compute_unit.hh:201
gem5::VegaISA::Inst_SOPP__S_WAKEUP::Inst_SOPP__S_WAKEUP
Inst_SOPP__S_WAKEUP(InFmt_SOPP *)
Definition: instructions.cc:4388
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_LZ_O::Inst_MIMG__IMAGE_GATHER4_C_LZ_O
Inst_MIMG__IMAGE_GATHER4_C_LZ_O(InFmt_MIMG *)
Definition: instructions.cc:43643
gem5::VegaISA::Inst_VOP3__V_INTERP_P2_F32::Inst_VOP3__V_INTERP_P2_F32
Inst_VOP3__V_INTERP_P2_F32(InFmt_VOP3A *)
Definition: instructions.cc:32803
gem5::VegaISA::Inst_VOP3__V_CVT_PK_I16_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34017
gem5::VegaISA::Inst_VOP1__V_RNDNE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10299
gem5::VegaISA::InFmt_VOP_SDWA::CLMP
unsigned int CLMP
Definition: gpu_decoder.hh:1859
gem5::VegaISA::Inst_DS__DS_CMPST_F64::Inst_DS__DS_CMPST_F64
Inst_DS__DS_CMPST_F64(InFmt_DS *)
Definition: instructions.cc:36686
gem5::VegaISA::Inst_VOP2__V_SUB_U16::Inst_VOP2__V_SUB_U16
Inst_VOP2__V_SUB_U16(InFmt_VOP2 *)
Definition: instructions.cc:7587
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44221
gem5::VegaISA::InFmt_FLAT::GLC
unsigned int GLC
Definition: gpu_decoder.hh:1647
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21462
gem5::VegaISA::Inst_VOP1__V_CVT_F32_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8373
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16963
gem5::VegaISA::Inst_VOP3__V_SAD_HI_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31413
gem5::VegaISA::Inst_DS__DS_READ_B64::Inst_DS__DS_READ_B64
Inst_DS__DS_READ_B64(InFmt_DS *)
Definition: instructions.cc:37204
gem5::VegaISA::Inst_SOP1__S_BITSET1_B64::~Inst_SOP1__S_BITSET1_B64
~Inst_SOP1__S_BITSET1_B64()
Definition: instructions.cc:2945
gem5::VegaISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::Inst_SOP1__S_NAND_SAVEEXEC_B64
Inst_SOP1__S_NAND_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3246
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38839
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21562
gem5::VegaISA::Inst_VOP1__V_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9608
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38812
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::~Inst_FLAT__FLAT_ATOMIC_DEC_X2
~Inst_FLAT__FLAT_ATOMIC_DEC_X2()
Definition: instructions.cc:45764
gem5::VegaISA::Inst_VOP2__V_ADD_F16::Inst_VOP2__V_ADD_F16
Inst_VOP2__V_ADD_F16(InFmt_VOP2 *)
Definition: instructions.cc:7394
gem5::VegaISA::Inst_VOP3__V_AND_B32::~Inst_VOP3__V_AND_B32
~Inst_VOP3__V_AND_B32()
Definition: instructions.cc:26182
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44102
gem5::VegaISA::median
T median(T val_0, T val_1, T val_2)
Definition: inst_util.hh:246
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW()
Definition: instructions.cc:41401
gem5::VegaISA::Inst_DS__DS_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34102
gem5::VegaISA::ConstVecOperandU32
VecOperand< VecElemU32, true > ConstVecOperandU32
Definition: operand.hh:728
gem5::VegaISA::Inst_VOP3__V_FMA_F64::Inst_VOP3__V_FMA_F64
Inst_VOP3__V_FMA_F64(InFmt_VOP3A *)
Definition: instructions.cc:30669
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::Inst_FLAT__FLAT_ATOMIC_SWAP_X2
Inst_FLAT__FLAT_ATOMIC_SWAP_X2(InFmt_FLAT *)
Definition: instructions.cc:45300
gem5::VegaISA::InFmt_MIMG::GLC
unsigned int GLC
Definition: gpu_decoder.hh:1671
gem5::VegaISA::Inst_VOP3__V_MUL_HI_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33411
gem5::VegaISA::Inst_SOPP__S_BRANCH::Inst_SOPP__S_BRANCH
Inst_SOPP__S_BRANCH(InFmt_SOPP *)
Definition: instructions.cc:4362
gem5::VegaISA::Inst_SOP1__S_AND_SAVEEXEC_B64::~Inst_SOP1__S_AND_SAVEEXEC_B64
~Inst_SOP1__S_AND_SAVEEXEC_B64()
Definition: instructions.cc:3075
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41538
gem5::VegaISA::Inst_VOP3__V_CVT_F32_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27693
gem5::VegaISA::Inst_VOP3__V_CVT_F32_I32::~Inst_VOP3__V_CVT_F32_I32
~Inst_VOP3__V_CVT_F32_I32()
Definition: instructions.cc:27686
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19318
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14597
gem5::VegaISA::Inst_SOPP__S_WAITCNT::Inst_SOPP__S_WAITCNT
Inst_SOPP__S_WAITCNT(InFmt_SOPP *)
Definition: instructions.cc:4652
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5560
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44183
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5504
gem5::VegaISA::Inst_DS__DS_WRXCHG2_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35266
gem5::VegaISA::Inst_VOP3__V_CVT_RPI_I32_F32::Inst_VOP3__V_CVT_RPI_I32_F32
Inst_VOP3__V_CVT_RPI_I32_F32(InFmt_VOP3A *)
Definition: instructions.cc:27943
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW()
Definition: instructions.cc:41813
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW(InFmt_MUBUF *)
Definition: instructions.cc:38850
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41756
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13527
gem5::VegaISA::Inst_VOP1__V_TRUNC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9085
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX4::Inst_FLAT__FLAT_LOAD_DWORDX4
Inst_FLAT__FLAT_LOAD_DWORDX4(InFmt_FLAT *)
Definition: instructions.cc:44206
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41656
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::~Inst_MUBUF__BUFFER_ATOMIC_XOR
~Inst_MUBUF__BUFFER_ATOMIC_XOR()
Definition: instructions.cc:40827
gem5::VegaISA::Inst_VOP1__V_CVT_F64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8309
gem5::VegaISA::Inst_DS__DS_MAX_F32::Inst_DS__DS_MAX_F32
Inst_DS__DS_MAX_F32(InFmt_DS *)
Definition: instructions.cc:34661
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_L_O::~Inst_MIMG__IMAGE_SAMPLE_C_L_O
~Inst_MIMG__IMAGE_SAMPLE_C_L_O()
Definition: instructions.cc:43117
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16823
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I64::~Inst_VOPC__V_CMPX_F_I64
~Inst_VOPC__V_CMPX_F_I64()
Definition: instructions.cc:16446
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44434
gem5::VegaISA::InFmt_SMEM_1::OFFSET
unsigned int OFFSET
Definition: gpu_decoder.hh:1746
gem5::VegaISA::Inst_VOP2__V_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6930
gem5::RegisterManager::freeRegisters
void freeRegisters(Wavefront *w)
Definition: register_manager.cc:129
gem5::VegaISA::Inst_VOP3__V_RCP_F64::Inst_VOP3__V_RCP_F64
Inst_VOP3__V_RCP_F64(InFmt_VOP3A *)
Definition: instructions.cc:28973
gem5::VegaISA::Inst_VINTRP__V_INTERP_MOV_F32::~Inst_VINTRP__V_INTERP_MOV_F32
~Inst_VINTRP__V_INTERP_MOV_F32()
Definition: instructions.cc:17041
gem5::VegaISA::Inst_DS__DS_ADD_F32::completeAcc
void completeAcc(GPUDynInstPtr gpuDynInst) override
Definition: instructions.cc:34767
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_INC::~Inst_FLAT__FLAT_ATOMIC_INC
~Inst_FLAT__FLAT_ATOMIC_INC()
Definition: instructions.cc:45256
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_L::Inst_MIMG__IMAGE_GATHER4_L
Inst_MIMG__IMAGE_GATHER4_L(InFmt_MIMG *)
Definition: instructions.cc:43228
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U32::Inst_VOP3__V_CMP_LE_U32
Inst_VOP3__V_CMP_LE_U32(InFmt_VOP3A *)
Definition: instructions.cc:22952
gem5::VegaISA::Inst_SOP2__S_SUBB_U32::Inst_SOP2__S_SUBB_U32
Inst_SOP2__S_SUBB_U32(InFmt_SOP2 *)
Definition: instructions.cc:226
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18351
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::Inst_MIMG__IMAGE_GATHER4_C_LZ
Inst_MIMG__IMAGE_GATHER4_C_LZ(InFmt_MIMG *)
Definition: instructions.cc:43404
gem5::VegaISA::Inst_VOP3__V_SUBREV_U16::Inst_VOP3__V_SUBREV_U16
Inst_VOP3__V_SUBREV_U16(InFmt_VOP3A *)
Definition: instructions.cc:26916
gem5::VegaISA::Inst_VOP3__V_MUL_HI_I32::Inst_VOP3__V_MUL_HI_I32
Inst_VOP3__V_MUL_HI_I32(InFmt_VOP3A *)
Definition: instructions.cc:33398
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_CL_O::~Inst_MIMG__IMAGE_SAMPLE_B_CL_O
~Inst_MIMG__IMAGE_SAMPLE_B_CL_O()
Definition: instructions.cc:42998
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40202
gem5::VegaISA::VecElemF64
double VecElemF64
Definition: gpu_registers.hh:170
gem5::VegaISA::Inst_DS__DS_READ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35777
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_O::Inst_MIMG__IMAGE_GATHER4_C_O
Inst_MIMG__IMAGE_GATHER4_C_O(InFmt_MIMG *)
Definition: instructions.cc:43543
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F64::~Inst_VOPC__V_CMP_TRU_F64
~Inst_VOPC__V_CMP_TRU_F64()
Definition: instructions.cc:13241
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B16::Inst_VOP3__V_LSHLREV_B16
Inst_VOP3__V_LSHLREV_B16(InFmt_VOP3A *)
Definition: instructions.cc:27005
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I16::~Inst_VOPC__V_CMPX_T_I16
~Inst_VOPC__V_CMPX_T_I16()
Definition: instructions.cc:14590
gem5::VegaISA::Inst_VOPC__V_CMP_O_F64::Inst_VOPC__V_CMP_O_F64
Inst_VOPC__V_CMP_O_F64(InFmt_VOPC *)
Definition: instructions.cc:12959
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_O::~Inst_MIMG__IMAGE_GATHER4_B_O
~Inst_MIMG__IMAGE_GATHER4_B_O()
Definition: instructions.cc:43490
gem5::VegaISA::Inst_SOPC__S_BITCMP1_B32::Inst_SOPC__S_BITCMP1_B32
Inst_SOPC__S_BITCMP1_B32(InFmt_SOPC *)
Definition: instructions.cc:3997
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F32::~Inst_VOPC__V_CMPX_F_F32
~Inst_VOPC__V_CMPX_F_F32()
Definition: instructions.cc:12161
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F16::Inst_VOPC__V_CMPX_LE_F16
Inst_VOPC__V_CMPX_LE_F16(InFmt_VOPC *)
Definition: instructions.cc:11340
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F16::~Inst_VOP3__V_CMP_GE_F16
~Inst_VOP3__V_CMP_GE_F16()
Definition: instructions.cc:17725
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42966
gem5::VegaISA::Inst_VOP3__V_ADD_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26430
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U32::Inst_VOPC__V_CMP_GE_U32
Inst_VOPC__V_CMP_GE_U32(InFmt_VOPC *)
Definition: instructions.cc:15330
gem5::VegaISA::Inst_VOP3__V_DIV_SCALE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31849
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U32::Inst_VOPC__V_CMPX_NE_U32
Inst_VOPC__V_CMPX_NE_U32(InFmt_VOPC *)
Definition: instructions.cc:15831
gem5::VegaISA::Inst_SOP2__S_XNOR_B64::Inst_SOP2__S_XNOR_B64
Inst_SOP2__S_XNOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:927
gem5::VegaISA::Inst_VOP3__V_MIN_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27300
gem5::VegaISA::Inst_SOP2__S_MUL_HI_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1545
gem5::VegaISA::Inst_SOP1__S_MOVRELD_B64::~Inst_SOP1__S_MOVRELD_B64
~Inst_SOP1__S_MOVRELD_B64()
Definition: instructions.cc:3507
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD::~Inst_FLAT__FLAT_ATOMIC_ADD
~Inst_FLAT__FLAT_ATOMIC_ADD()
Definition: instructions.cc:44811
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP::~Inst_MIMG__IMAGE_STORE_MIP
~Inst_MIMG__IMAGE_STORE_MIP()
Definition: instructions.cc:42070
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14657
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15211
gem5::VegaISA::Inst_SOPP__S_CBRANCH_EXECNZ::Inst_SOPP__S_CBRANCH_EXECNZ
Inst_SOPP__S_CBRANCH_EXECNZ(InFmt_SOPP *)
Definition: instructions.cc:4569
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24610
gem5::VegaISA::Inst_VOP3__V_SIN_F32::Inst_VOP3__V_SIN_F32
Inst_VOP3__V_SIN_F32(InFmt_VOP3A *)
Definition: instructions.cc:29155
gem5::VegaISA::Inst_VOP3__V_ADD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26734
gem5::VegaISA::Inst_DS__DS_READ2_B32::Inst_DS__DS_READ2_B32
Inst_DS__DS_READ2_B32(InFmt_DS *)
Definition: instructions.cc:35502
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24656
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX3::~Inst_FLAT__FLAT_STORE_DWORDX3
~Inst_FLAT__FLAT_STORE_DWORDX3()
Definition: instructions.cc:44511
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23010
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER::Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER(InFmt_SOPP *)
Definition: instructions.cc:4956
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SWAP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44692
gem5::VegaISA::Inst_SOP1__S_MOVRELS_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3458
gem5::VegaISA::Inst_VOP3__V_PERM_B32::permute
uint8_t permute(uint64_t in_dword2x, uint32_t sel)
Definition: instructions.hh:30037
gem5::VegaISA::Inst_VOP3__V_FFBH_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29409
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_CL::Inst_MIMG__IMAGE_GATHER4_CL
Inst_MIMG__IMAGE_GATHER4_CL(InFmt_MIMG *)
Definition: instructions.cc:43209
gem5::VegaISA::Inst_VOPC__V_CMP_U_F64::Inst_VOPC__V_CMP_U_F64
Inst_VOPC__V_CMP_U_F64(InFmt_VOPC *)
Definition: instructions.cc:12994
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::~Inst_MUBUF__BUFFER_LOAD_UBYTE
~Inst_MUBUF__BUFFER_LOAD_UBYTE()
Definition: instructions.cc:39171
gem5::VegaISA::Inst_VOP3__V_FRACT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29537
gem5::MipsISA::float_reg::F16
constexpr RegId F16
Definition: float.hh:115
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19281
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18137
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41228
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19546
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44122
gem5::VegaISA::Inst_DS__DS_CONSUME::~Inst_DS__DS_CONSUME
~Inst_DS__DS_CONSUME()
Definition: instructions.cc:37969
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::Inst_MIMG__IMAGE_SAMPLE_C_CD
Inst_MIMG__IMAGE_SAMPLE_C_CD(InFmt_MIMG *)
Definition: instructions.cc:43723
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43241
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12104
gem5::VegaISA::Inst_VOP3__V_CVT_PK_I16_I32::Inst_VOP3__V_CVT_PK_I16_I32
Inst_VOP3__V_CVT_PK_I16_I32(InFmt_VOP3A *)
Definition: instructions.cc:34004
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44157
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22193
gem5::VegaISA::Inst_DS__DS_DEC_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36866
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F16::Inst_VOP3__V_CMPX_GT_F16
Inst_VOP3__V_CMPX_GT_F16(InFmt_VOP3A *)
Definition: instructions.cc:18031
gem5::VegaISA::Inst_SOPK__S_MULK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1987
gem5::ComputeUnit::numAtBarrier
int numAtBarrier(int bar_id)
Definition: compute_unit.cc:679
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14422
gem5::VegaISA::Inst_VOP3__V_LDEXP_F32::~Inst_VOP3__V_LDEXP_F32
~Inst_VOP3__V_LDEXP_F32()
Definition: instructions.cc:33451
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F32::Inst_VOPC__V_CMPX_LT_F32
Inst_VOPC__V_CMPX_LT_F32(InFmt_VOPC *)
Definition: instructions.cc:12184
gem5::ComputeUnit::incNumAtBarrier
void incNumAtBarrier(int bar_id)
Definition: compute_unit.cc:672
gem5::VegaISA::Inst_VOP3__V_OR_B32::Inst_VOP3__V_OR_B32
Inst_VOP3__V_OR_B32(InFmt_VOP3A *)
Definition: instructions.cc:26220
gem5::VegaISA::Inst_SOP1__S_ABS_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3576
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38833
gem5::VegaISA::Inst_DS__DS_BPERMUTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36079
gem5::VegaISA::Inst_VOP2__V_MAX_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7884
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F16::~Inst_VOP1__V_FREXP_MANT_F16
~Inst_VOP1__V_FREXP_MANT_F16()
Definition: instructions.cc:10173
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F16::Inst_VOP3__V_CMP_GT_F16
Inst_VOP3__V_CMP_GT_F16(InFmt_VOP3A *)
Definition: instructions.cc:17675
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12492
gem5::VegaISA::Inst_VOP2__V_LDEXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7984
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F64::~Inst_VOPC__V_CMPX_NGE_F64
~Inst_VOPC__V_CMPX_NGE_F64()
Definition: instructions.cc:13595
gem5::VegaISA::Inst_VOP2__V_MIN_I16::~Inst_VOP2__V_MIN_I16
~Inst_VOP2__V_MIN_I16()
Definition: instructions.cc:7943
gem5::VegaISA::Inst_SOP1__S_CMOV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2268
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42615
gem5::ComputeUnit::ComputeUnitStats::completedWfs
statistics::Scalar completedWfs
Definition: compute_unit.hh:1130
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_ADD::~Inst_MIMG__IMAGE_ATOMIC_ADD
~Inst_MIMG__IMAGE_ATOMIC_ADD()
Definition: instructions.cc:42255
gem5::VegaISA::Inst_VOP3__V_SAD_U32::Inst_VOP3__V_SAD_U32
Inst_VOP3__V_SAD_U32(InFmt_VOP3A *)
Definition: instructions.cc:31499
gem5::VegaISA::Inst_VOP3__V_MAX_I16::Inst_VOP3__V_MAX_I16
Inst_VOP3__V_MAX_I16(InFmt_VOP3A *)
Definition: instructions.cc:27238
gem5::VegaISA::Inst_VOP1__V_CEIL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9118
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F64::Inst_VOPC__V_CMP_GE_F64
Inst_VOPC__V_CMP_GE_F64(InFmt_VOPC *)
Definition: instructions.cc:12925
gem5::VegaISA::Inst_DS__DS_XOR_SRC2_B32::~Inst_DS__DS_XOR_SRC2_B32
~Inst_DS__DS_XOR_SRC2_B32()
Definition: instructions.cc:37668
gem5::VegaISA::Inst_VOP3__V_CVT_U32_F64::~Inst_VOP3__V_CVT_U32_F64
~Inst_VOP3__V_CVT_U32_F64()
Definition: instructions.cc:28309
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16753
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F16::~Inst_VOPC__V_CMP_GE_F16
~Inst_VOPC__V_CMP_GE_F16()
Definition: instructions.cc:11084
gem5::VegaISA::Inst_VOP2__V_ADDC_CO_U32::~Inst_VOP2__V_ADDC_CO_U32
~Inst_VOP2__V_ADDC_CO_U32()
Definition: instructions.cc:7264
gem5::VegaISA::Inst_VOP1__V_RSQ_F16::~Inst_VOP1__V_RSQ_F16
~Inst_VOP1__V_RSQ_F16()
Definition: instructions.cc:10104
gem5::VegaISA::Inst_VOP3__V_ADD3_U32::~Inst_VOP3__V_ADD3_U32
~Inst_VOP3__V_ADD3_U32()
Definition: instructions.cc:32371
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F64::Inst_VOPC__V_CMP_NEQ_F64
Inst_VOPC__V_CMP_NEQ_F64(InFmt_VOPC *)
Definition: instructions.cc:13166
gem5::VegaISA::InFmt_VOP_DPP::SRC1_ABS
unsigned int SRC1_ABS
Definition: gpu_decoder.hh:1850
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19775
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F32::~Inst_VOPC__V_CMP_NGT_F32
~Inst_VOPC__V_CMP_NGT_F32()
Definition: instructions.cc:11995
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10801
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39280
gem5::VegaISA::Inst_VOP3__V_MED3_I32::Inst_VOP3__V_MED3_I32
Inst_VOP3__V_MED3_I32(InFmt_VOP3A *)
Definition: instructions.cc:31254
gem5::VegaISA::Inst_SOPP__S_CBRANCH_EXECZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4556
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24194
gem5::VegaISA::Inst_SOP2__S_MUL_HI_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1515
gem5::VegaISA::Inst_VOP3__V_CVT_PK_U16_U32::Inst_VOP3__V_CVT_PK_U16_U32
Inst_VOP3__V_CVT_PK_U16_U32(InFmt_VOP3A *)
Definition: instructions.cc:33985
gem5::VegaISA::Inst_DS__DS_MSKOR_B32::Inst_DS__DS_MSKOR_B32
Inst_DS__DS_MSKOR_B32(InFmt_DS *)
Definition: instructions.cc:34363
gem5::VegaISA::Inst_DS__DS_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34229
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B64::~Inst_VOP3__V_LSHLREV_B64
~Inst_VOP3__V_LSHLREV_B64()
Definition: instructions.cc:33720
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24414
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I16::~Inst_VOPC__V_CMP_NE_I16
~Inst_VOPC__V_CMP_NE_I16()
Definition: instructions.cc:14001
gem5::VegaISA::Inst_VOP3__V_MAD_U16::Inst_VOP3__V_MAD_U16
Inst_VOP3__V_MAD_U16(InFmt_VOP3A *)
Definition: instructions.cc:32524
gem5::VegaISA::Inst_SOPP__S_CBRANCH_EXECZ::Inst_SOPP__S_CBRANCH_EXECZ
Inst_SOPP__S_CBRANCH_EXECZ(InFmt_SOPP *)
Definition: instructions.cc:4541
gem5::VegaISA::Inst_SOPP__S_BRANCH::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4376
gem5::VegaISA::Inst_VOP3__V_CMP_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19831
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F32::Inst_VOPC__V_CMPX_TRU_F32
Inst_VOPC__V_CMPX_TRU_F32(InFmt_VOPC *)
Definition: instructions.cc:12694
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_I32::~Inst_DS__DS_MAX_SRC2_I32
~Inst_DS__DS_MAX_SRC2_I32()
Definition: instructions.cc:37558
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F64::~Inst_VOP3__V_CMP_LE_F64
~Inst_VOP3__V_CMP_LE_F64()
Definition: instructions.cc:19596
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F32::Inst_VOPC__V_CMP_NGE_F32
Inst_VOPC__V_CMP_NGE_F32(InFmt_VOPC *)
Definition: instructions.cc:11919
gem5::VegaISA::Inst_VOP3__V_CMP_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18595
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I32::~Inst_VOP3__V_CMP_EQ_I32
~Inst_VOP3__V_CMP_EQ_I32()
Definition: instructions.cc:22595
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44492
gem5::VegaISA::Inst_VOP3__V_CVT_FLR_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27999
gem5::VegaISA::Inst_SOP1__S_WQM_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2393
gem5::VegaISA::Inst_VOP3__V_SUBREV_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26931
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F16::~Inst_VOPC__V_CMPX_GT_F16
~Inst_VOPC__V_CMPX_GT_F16()
Definition: instructions.cc:11369
gem5::VegaISA::Inst_VOP3__V_RNDNE_F64::Inst_VOP3__V_RNDNE_F64
Inst_VOP3__V_RNDNE_F64(InFmt_VOP3A *)
Definition: instructions.cc:28479
gem5::VegaISA::Inst_VOP3__V_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29257
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I16::~Inst_VOPC__V_CMPX_GE_I16
~Inst_VOPC__V_CMPX_GE_I16()
Definition: instructions.cc:14555
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19355
gem5::VegaISA::Inst_DS__DS_SUB_U32::Inst_DS__DS_SUB_U32
Inst_DS__DS_SUB_U32(InFmt_DS *)
Definition: instructions.cc:34087
gem5::VegaISA::Inst_VOP3__V_MIN_U32::~Inst_VOP3__V_MIN_U32
~Inst_VOP3__V_MIN_U32()
Definition: instructions.cc:25962
gem5::VegaISA::Inst_SMEM__S_STORE_DWORD::~Inst_SMEM__S_STORE_DWORD
~Inst_SMEM__S_STORE_DWORD()
Definition: instructions.cc:5607
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER::~Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
~Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER()
Definition: instructions.cc:4940
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41585
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F64::~Inst_VOP3__V_DIV_FIXUP_F64
~Inst_VOP3__V_DIV_FIXUP_F64()
Definition: instructions.cc:31688
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18247
gem5::VegaISA::Inst_SOP2__S_LSHL_B64::~Inst_SOP2__S_LSHL_B64
~Inst_SOP2__S_LSHL_B64()
Definition: instructions.cc:997
gem5::VegaISA::Inst_VOP3__V_LSHL_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32286
gem5::WFBarrier::InvalidID
static const int InvalidID
Definition: compute_unit.hh:97
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY()
Definition: instructions.cc:38666
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I32::Inst_VOP3__V_CMP_GE_I32
Inst_VOP3__V_CMP_GE_I32(InFmt_VOP3A *)
Definition: instructions.cc:22764
gem5::findLsbSet
constexpr int findLsbSet(uint64_t val)
Returns the bit position of the LSB that is set in the input.
Definition: bitfield.hh:312
gem5::VegaISA::Inst_SOPP__S_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4209
gem5::VegaISA::Inst_VOP1__V_EXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9215
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN(InFmt_MIMG *)
Definition: instructions.cc:41998
gem5::RiscvISA::Load
Definition: mem.hh:56
gem5::VegaISA::Inst_VOP3__V_RNDNE_F16::Inst_VOP3__V_RNDNE_F16
Inst_VOP3__V_RNDNE_F16(InFmt_VOP3A *)
Definition: instructions.cc:29999
gem5::VegaISA::Inst_SOP2__S_ADDC_U32::Inst_SOP2__S_ADDC_U32
Inst_SOP2__S_ADDC_U32(InFmt_SOP2 *)
Definition: instructions.cc:191
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_B32::Inst_DS__DS_CMPST_RTN_B32
Inst_DS__DS_CMPST_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35291
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW(InFmt_MTBUF *)
Definition: instructions.cc:41804
gem5::VegaISA::ScalarOperand
Definition: operand.hh:97
gem5::VegaISA::Inst_VOP3__V_BCNT_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33584
gem5::VegaISA::Inst_DS__DS_READ_B32::~Inst_DS__DS_READ_B32
~Inst_DS__DS_READ_B32()
Definition: instructions.cc:35446
gem5::VegaISA::Inst_VOP3__V_COS_F16::~Inst_VOP3__V_COS_F16
~Inst_VOP3__V_COS_F16()
Definition: instructions.cc:30068
gem5::VegaISA::Inst_VOP3__V_LOG_F16::~Inst_VOP3__V_LOG_F16
~Inst_VOP3__V_LOG_F16()
Definition: instructions.cc:29843
gem5::VegaISA::Inst_VOP3__V_CLREXCP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29677
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::Inst_MUBUF__BUFFER_LOAD_FORMAT_X
Inst_MUBUF__BUFFER_LOAD_FORMAT_X(InFmt_MUBUF *)
Definition: instructions.cc:38626
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I64::~Inst_VOPC__V_CMP_LE_I64
~Inst_VOPC__V_CMP_LE_I64()
Definition: instructions.cc:16031
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F16::Inst_VOP3__V_CMPX_LG_F16
Inst_VOP3__V_CMPX_LG_F16(InFmt_VOP3A *)
Definition: instructions.cc:18053
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_DEC::Inst_FLAT__FLAT_ATOMIC_DEC
Inst_FLAT__FLAT_ATOMIC_DEC(InFmt_FLAT *)
Definition: instructions.cc:45272
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14727
gem5::VegaISA::Inst_SOP1__S_NOT_B64::~Inst_SOP1__S_NOT_B64
~Inst_SOP1__S_NOT_B64()
Definition: instructions.cc:2322
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::Inst_MIMG__IMAGE_SAMPLE_CD_O
Inst_MIMG__IMAGE_SAMPLE_CD_O(InFmt_MIMG *)
Definition: instructions.cc:43764
gem5::VegaISA::InFmt_MUBUF_1::SOFFSET
unsigned int SOFFSET
Definition: gpu_decoder.hh:1730
gem5::VegaISA::Inst_VOP1__V_CVT_F64_F32::Inst_VOP1__V_CVT_F64_F32
Inst_VOP1__V_CVT_F64_F32(InFmt_VOP1 *)
Definition: instructions.cc:8668
gem5::VegaISA::Inst_SOP1__S_BITSET0_B64::Inst_SOP1__S_BITSET0_B64
Inst_SOP1__S_BITSET0_B64(InFmt_SOP1 *)
Definition: instructions.cc:2887
gem5::VegaISA::Inst_SOP2__S_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:273
gem5::VegaISA::Inst_VOP1__V_CVT_U16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10024
gem5::VegaISA::Inst_VOP3__V_BFI_B32::~Inst_VOP3__V_BFI_B32
~Inst_VOP3__V_BFI_B32()
Definition: instructions.cc:30568
gem5::VegaISA::Inst_SOPK__S_CMPK_GT_I32::Inst_SOPK__S_CMPK_GT_I32
Inst_SOPK__S_CMPK_GT_I32(InFmt_SOPK *)
Definition: instructions.cc:1672
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8810
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45571
gem5::VegaISA::Inst_DS__DS_MIN_RTN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36887
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I64::Inst_VOP3__V_CMP_EQ_I64
Inst_VOP3__V_CMP_EQ_I64(InFmt_VOP3A *)
Definition: instructions.cc:23904
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F32::Inst_VOP3__V_CMPX_NLE_F32
Inst_VOP3__V_CMPX_NLE_F32(InFmt_VOP3A *)
Definition: instructions.cc:19302
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F32::Inst_VOPC__V_CMP_NGT_F32
Inst_VOPC__V_CMP_NGT_F32(InFmt_VOPC *)
Definition: instructions.cc:11988
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::~Inst_MIMG__IMAGE_ATOMIC_UMAX
~Inst_MIMG__IMAGE_ATOMIC_UMAX()
Definition: instructions.cc:42404
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_U32::~Inst_DS__DS_ADD_SRC2_U32
~Inst_DS__DS_ADD_SRC2_U32()
Definition: instructions.cc:37425
gem5::VegaISA::Inst_VOP3__V_SUBREV_F32::Inst_VOP3__V_SUBREV_F32
Inst_VOP3__V_SUBREV_F32(InFmt_VOP3A *)
Definition: instructions.cc:25319
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U32::~Inst_VOP3__V_CMP_LT_U32
~Inst_VOP3__V_CMP_LT_U32()
Definition: instructions.cc:22871
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY()
Definition: instructions.cc:41601
inst_util.hh
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39396
gem5::ComputeUnit::decMaxBarrierCnt
void decMaxBarrierCnt(int bar_id)
Definition: compute_unit.cc:700
gem5::VegaISA::Inst_SMEM__S_ATC_PROBE::Inst_SMEM__S_ATC_PROBE
Inst_SMEM__S_ATC_PROBE(InFmt_SMEM *)
Definition: instructions.cc:5982
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U32::Inst_VOP3__V_CMP_NE_U32
Inst_VOP3__V_CMP_NE_U32(InFmt_VOP3A *)
Definition: instructions.cc:23040
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SUB::~Inst_MIMG__IMAGE_ATOMIC_SUB
~Inst_MIMG__IMAGE_ATOMIC_SUB()
Definition: instructions.cc:42284
gem5::VegaISA::Inst_SOP2__S_CSELECT_B64::Inst_SOP2__S_CSELECT_B64
Inst_SOP2__S_CSELECT_B64(InFmt_SOP2 *)
Definition: instructions.cc:417
gem5::VegaISA::Inst_DS__DS_RSUB_RTN_U32::~Inst_DS__DS_RSUB_RTN_U32
~Inst_DS__DS_RSUB_RTN_U32()
Definition: instructions.cc:35005
gem5::VegaISA::Inst_VOP3__V_SUBREV_F16::~Inst_VOP3__V_SUBREV_F16
~Inst_VOP3__V_SUBREV_F16()
Definition: instructions.cc:26769
gem5::VegaISA::Inst_VOP3__V_CVT_F64_U32::~Inst_VOP3__V_CVT_F64_U32
~Inst_VOP3__V_CVT_F64_U32()
Definition: instructions.cc:28365
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42501
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24518
gem5::VegaISA::Inst_DS__DS_MIN_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36929
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42985
gem5::VegaISA::Inst_VOP3__V_MAD_F16::~Inst_VOP3__V_MAD_F16
~Inst_VOP3__V_MAD_F16()
Definition: instructions.cc:32510
gem5::VegaISA::Inst_SOPC__S_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3898
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24748
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42771
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U32::Inst_VOP3__V_CMP_EQ_U32
Inst_VOP3__V_CMP_EQ_U32(InFmt_VOP3A *)
Definition: instructions.cc:22908
gem5::VegaISA::Inst_VOP3__V_SUB_U16::Inst_VOP3__V_SUB_U16
Inst_VOP3__V_SUB_U16(InFmt_VOP3A *)
Definition: instructions.cc:26872
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21782
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::Inst_MIMG__IMAGE_SAMPLE_B_CL
Inst_MIMG__IMAGE_SAMPLE_B_CL(InFmt_MIMG *)
Definition: instructions.cc:42680
gem5::VegaISA::Inst_VOP3__V_RCP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28865
DPRINTF
#define DPRINTF(x,...)
Definition: trace.hh:210
gem5::VegaISA::Inst_DS__DS_CMPST_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36707
gem5::VegaISA::Inst_VOP3__V_SUB_CO_U32::~Inst_VOP3__V_SUB_CO_U32
~Inst_VOP3__V_SUB_CO_U32()
Definition: instructions.cc:26468
gem5::VegaISA::Inst_VOP1__V_FRACT_F32::Inst_VOP1__V_FRACT_F32
Inst_VOP1__V_FRACT_F32(InFmt_VOP1 *)
Definition: instructions.cc:9038
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43025
gem5::VegaISA::Inst_SOP2__S_ABSDIFF_I32::Inst_SOP2__S_ABSDIFF_I32
Inst_SOP2__S_ABSDIFF_I32(InFmt_SOP2 *)
Definition: instructions.cc:1445
gem5::VegaISA::Inst_VOP3__V_MUL_I32_I24::Inst_VOP3__V_MUL_I32_I24
Inst_VOP3__V_MUL_I32_I24(InFmt_VOP3A *)
Definition: instructions.cc:25578
gem5::VegaISA::Inst_VOP2__V_SUB_F16::Inst_VOP2__V_SUB_F16
Inst_VOP2__V_SUB_F16(InFmt_VOP2 *)
Definition: instructions.cc:7415
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U16::Inst_VOP3__V_CMP_GE_U16
Inst_VOP3__V_CMP_GE_U16(InFmt_VOP3A *)
Definition: instructions.cc:21768
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18181
gem5::VegaISA::Inst_VOP2__V_MIN_F16::~Inst_VOP2__V_MIN_F16
~Inst_VOP2__V_MIN_F16()
Definition: instructions.cc:7823
gem5::VegaISA::Inst_FLAT__FLAT_STORE_SHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44377
gem5::VegaISA::Inst_DS__DS_CMPST_B64::~Inst_DS__DS_CMPST_B64
~Inst_DS__DS_CMPST_B64()
Definition: instructions.cc:36665
gem5::VegaISA::Inst_VOP3__V_MAD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30237
gem5::VegaISA::Inst_VOPC__V_CMP_F_U64::Inst_VOPC__V_CMP_F_U64
Inst_VOPC__V_CMP_F_U64(InFmt_VOPC *)
Definition: instructions.cc:16185
gem5::VegaISA::InFmt_EXP
Definition: gpu_decoder.hh:1626
gem5::VegaISA::Inst_DS__DS_INC_RTN_U32::~Inst_DS__DS_INC_RTN_U32
~Inst_DS__DS_INC_RTN_U32()
Definition: instructions.cc:35027
gem5::VegaISA::Inst_VOP3__V_RSQ_F16::Inst_VOP3__V_RSQ_F16
Inst_VOP3__V_RSQ_F16(InFmt_VOP3A *)
Definition: instructions.cc:29813
gem5::VegaISA::Inst_VOP2__V_LSHLREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6720
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_OR::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:45192
gem5::VegaISA::Inst_VOP3__V_ALIGNBIT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30804
gem5::VegaISA::Inst_VOP3__V_CMP_T_I16::~Inst_VOP3__V_CMP_T_I16
~Inst_VOP3__V_CMP_T_I16()
Definition: instructions.cc:21498
gem5::VegaISA::Inst_SOPK__S_CMPK_LG_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1820
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U32::~Inst_VOPC__V_CMPX_LE_U32
~Inst_VOPC__V_CMPX_LE_U32()
Definition: instructions.cc:15768
gem5::VegaISA::Inst_VOP2__V_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8077
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43084
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I32::Inst_VOP3__V_CMPX_GE_I32
Inst_VOP3__V_CMPX_GE_I32(InFmt_VOP3A *)
Definition: instructions.cc:23417
gem5::VegaISA::Inst_VOP2__V_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6855
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F64::Inst_VOP3__V_CMPX_CLASS_F64
Inst_VOP3__V_CMPX_CLASS_F64(InFmt_VOP3A *)
Definition: instructions.cc:17405
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38807
gem5::VegaISA::Inst_SOPK__S_CMPK_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1766
gem5::VegaISA::Inst_VOP3__V_MSAD_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32064
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27115
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::~Inst_FLAT__FLAT_ATOMIC_AND_X2
~Inst_FLAT__FLAT_ATOMIC_AND_X2()
Definition: instructions.cc:45648
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8778
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F16::~Inst_VOPC__V_CMPX_GE_F16
~Inst_VOPC__V_CMPX_GE_F16()
Definition: instructions.cc:11411
gem5::VegaISA::ScalarOperand::write
void write() override
Definition: operand.hh:426
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SWAP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44698
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42752
gem5::VegaISA::Inst_DS__DS_MIN_RTN_F64::Inst_DS__DS_MIN_RTN_F64
Inst_DS__DS_MIN_RTN_F64(InFmt_DS *)
Definition: instructions.cc:37152
gem5::VegaISA::Inst_DS__DS_WRXCHG2_RTN_B64::Inst_DS__DS_WRXCHG2_RTN_B64
Inst_DS__DS_WRXCHG2_RTN_B64(InFmt_DS *)
Definition: instructions.cc:37062
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_USHORT::Inst_FLAT__FLAT_LOAD_USHORT
Inst_FLAT__FLAT_LOAD_USHORT(InFmt_FLAT *)
Definition: instructions.cc:43948
gem5::popCount
constexpr int popCount(uint64_t val)
Returns the number of set ones in the provided value.
Definition: bitfield.hh:350
gem5::VegaISA::Inst_VOP3__V_SUBREV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25334
gem5::VegaISA::Inst_VOP2__V_ADD_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7109
gem5::VegaISA::Inst_VOP2__V_LSHLREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7704
gem5::VegaISA::Inst_DS__DS_WRITE_B128::~Inst_DS__DS_WRITE_B128
~Inst_DS__DS_WRITE_B128()
Definition: instructions.cc:38432
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U32::Inst_VOP3__V_CMPX_LE_U32
Inst_VOP3__V_CMPX_LE_U32(InFmt_VOP3A *)
Definition: instructions.cc:23617
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F16::~Inst_VOP3__V_CMP_LG_F16
~Inst_VOP3__V_CMP_LG_F16()
Definition: instructions.cc:17704
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41960
gem5::VegaISA::Inst_VOP3__V_MSAD_U8::~Inst_VOP3__V_MSAD_U8
~Inst_VOP3__V_MSAD_U8()
Definition: instructions.cc:32057
gem5::VegaISA::Inst_VOP3__V_ADD_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32948
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11658
gem5::VegaISA::Inst_VOP3__V_SAD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31513
gem5::VegaISA::Inst_DS__DS_READ2_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35541
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U64::Inst_VOP3__V_CMP_LT_U64
Inst_VOP3__V_CMP_LT_U64(InFmt_VOP3A *)
Definition: instructions.cc:24180
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F16::~Inst_VOPC__V_CMPX_NLE_F16
~Inst_VOPC__V_CMPX_NLE_F16()
Definition: instructions.cc:11539
gem5::VegaISA::Inst_VOP2__V_SUBREV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7453
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F16::~Inst_VOP3__V_CMP_NGT_F16
~Inst_VOP3__V_CMP_NGT_F16()
Definition: instructions.cc:17828
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12768
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38331
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12002
gem5::VegaISA::Inst_SOPP__S_TRAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4808
gem5::VegaISA::Inst_VOP3__V_MOV_B32::~Inst_VOP3__V_MOV_B32
~Inst_VOP3__V_MOV_B32()
Definition: instructions.cc:27559
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL::~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL()
Definition: instructions.cc:43750
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14762
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39117
gem5::VegaISA::Inst_VOP3__V_XAD_U32::Inst_VOP3__V_XAD_U32
Inst_VOP3__V_XAD_U32(InFmt_VOP3A *)
Definition: instructions.cc:32228
gem5::VegaISA::Inst_VOP1__V_CEIL_F16::Inst_VOP1__V_CEIL_F16
Inst_VOP1__V_CEIL_F16(InFmt_VOP1 *)
Definition: instructions.cc:10241
gem5::VegaISA::Inst_VOP1__V_RSQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10114
gem5::VegaISA::Inst_SOP2__S_RFE_RESTORE_B64::~Inst_SOP2__S_RFE_RESTORE_B64
~Inst_SOP2__S_RFE_RESTORE_B64()
Definition: instructions.cc:1482
gem5::VegaISA::Inst_DS__DS_MIN_U64::Inst_DS__DS_MIN_U64
Inst_DS__DS_MIN_U64(InFmt_DS *)
Definition: instructions.cc:36336
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::~Inst_SMEM__S_BUFFER_STORE_DWORDX4
~Inst_SMEM__S_BUFFER_STORE_DWORDX4()
Definition: instructions.cc:5846
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I32::~Inst_VOP3__V_CMP_GE_I32
~Inst_VOP3__V_CMP_GE_I32()
Definition: instructions.cc:22771
gem5::VegaISA::Inst_VOP3__V_MQSAD_U32_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32125
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15645
gem5::VegaISA::Inst_DS__DS_NOP::~Inst_DS__DS_NOP
~Inst_DS__DS_NOP()
Definition: instructions.cc:34693
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U32::Inst_VOPC__V_CMPX_EQ_U32
Inst_VOPC__V_CMPX_EQ_U32(InFmt_VOPC *)
Definition: instructions.cc:15726
gem5::VegaISA::Inst_VINTRP__V_INTERP_P2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17027
gem5::VegaISA::Inst_DS__DS_MAX_F64::Inst_DS__DS_MAX_F64
Inst_DS__DS_MAX_F64(InFmt_DS *)
Definition: instructions.cc:36739
gem5::VegaISA::Inst_VOP3__V_CVT_F16_F32::~Inst_VOP3__V_CVT_F16_F32
~Inst_VOP3__V_CVT_F16_F32()
Definition: instructions.cc:27908
gem5::VegaISA::Inst_SOPP__S_SETPRIO::Inst_SOPP__S_SETPRIO
Inst_SOPP__S_SETPRIO(InFmt_SOPP *)
Definition: instructions.cc:4728
gem5::VegaISA::Inst_SOP1__S_BCNT1_I32_B64::Inst_SOP1__S_BCNT1_I32_B64
Inst_SOP1__S_BCNT1_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2551
gem5::VegaISA::Inst_SOP1__S_BITSET1_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2952
gem5::VegaISA::Inst_DS__DS_MAX_I32::Inst_DS__DS_MAX_I32
Inst_DS__DS_MAX_I32(InFmt_DS *)
Definition: instructions.cc:34193
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_SHORT::Inst_MUBUF__BUFFER_STORE_SHORT
Inst_MUBUF__BUFFER_STORE_SHORT(InFmt_MUBUF *)
Definition: instructions.cc:39909
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2(InFmt_MUBUF *)
Definition: instructions.cc:40934
gem5::VegaISA::Inst_VOP3__V_FLOOR_F32::Inst_VOP3__V_FLOOR_F32
Inst_VOP3__V_FLOOR_F32(InFmt_VOP3A *)
Definition: instructions.cc:28722
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X(InFmt_MUBUF *)
Definition: instructions.cc:38883
gem5::VegaISA::Inst_VINTRP__V_INTERP_P1_F32::Inst_VINTRP__V_INTERP_P1_F32
Inst_VINTRP__V_INTERP_P1_F32(InFmt_VINTRP *)
Definition: instructions.cc:16979
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I64::Inst_VOP3__V_CMPX_LT_I64
Inst_VOP3__V_CMPX_LT_I64(InFmt_VOP3A *)
Definition: instructions.cc:24503
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U64::~Inst_VOP3__V_CMP_EQ_U64
~Inst_VOP3__V_CMP_EQ_U64()
Definition: instructions.cc:24231
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F32::Inst_VOPC__V_CMPX_NLT_F32
Inst_VOPC__V_CMPX_NLT_F32(InFmt_VOPC *)
Definition: instructions.cc:12658
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::Inst_MIMG__IMAGE_ATOMIC_SMAX
Inst_MIMG__IMAGE_ATOMIC_SMAX(InFmt_MIMG *)
Definition: instructions.cc:42360
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18702
gem5::VegaISA::Inst_VOP2__V_MAX_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7851
gem5::VegaISA::Inst_VOP2__V_SUBREV_CO_U32::~Inst_VOP2__V_SUBREV_CO_U32
~Inst_VOP2__V_SUBREV_CO_U32()
Definition: instructions.cc:7223
gem5::VegaISA::Inst_VOP3__V_SAD_U32::~Inst_VOP3__V_SAD_U32
~Inst_VOP3__V_SAD_U32()
Definition: instructions.cc:31505
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I16::~Inst_VOP3__V_CMPX_LT_I16
~Inst_VOP3__V_CMPX_LT_I16()
Definition: instructions.cc:21879
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F32::~Inst_VOP3__V_CMPX_F_F32
~Inst_VOP3__V_CMPX_F_F32()
Definition: instructions.cc:18866
gem5::VegaISA::Inst_VOP2__V_SUB_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7193
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_AND::~Inst_FLAT__FLAT_ATOMIC_AND
~Inst_FLAT__FLAT_ATOMIC_AND()
Definition: instructions.cc:45123
gem5::VegaISA::Inst_SOPC__S_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3954
gem5::VegaISA::ConstScalarOperandU128
ScalarOperand< ScalarRegU32, true, 4 > ConstScalarOperandU128
Definition: operand.hh:705
gem5::VegaISA::Inst_DS__DS_READ2ST64_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37350
gem5::VegaISA::Inst_SOP1__S_RFE_B64::~Inst_SOP1__S_RFE_B64
~Inst_SOP1__S_RFE_B64()
Definition: instructions.cc:3050
gem5::VegaISA::Inst_VOP3__V_MAX_F64::Inst_VOP3__V_MAX_F64
Inst_VOP3__V_MAX_F64(InFmt_VOP3A *)
Definition: instructions.cc:33190
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I16::Inst_VOPC__V_CMPX_EQ_I16
Inst_VOPC__V_CMPX_EQ_I16(InFmt_VOPC *)
Definition: instructions.cc:14408
gem5::VegaISA::Inst_DS__DS_XOR_B32::~Inst_DS__DS_XOR_B32
~Inst_DS__DS_XOR_B32()
Definition: instructions.cc:34347
gem5::VegaISA::Inst_SOP1__S_BITSET0_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2900
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42559
gem5::VegaISA::Inst_VOP3__V_LDEXP_F16::Inst_VOP3__V_LDEXP_F16
Inst_VOP3__V_LDEXP_F16(InFmt_VOP3A *)
Definition: instructions.cc:27385
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42849
gem5::VegaISA::Inst_VOP2__V_MUL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6235
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22778
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::Inst_SMEM__S_BUFFER_LOAD_DWORDX8
Inst_SMEM__S_BUFFER_LOAD_DWORDX8(InFmt_SMEM *)
Definition: instructions.cc:5488
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:42120
gem5::VegaISA::Inst_DS__DS_WRAP_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35410
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F32::Inst_VOP1__V_FREXP_MANT_F32
Inst_VOP1__V_FREXP_MANT_F32(InFmt_VOP1 *)
Definition: instructions.cc:9906
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I32::~Inst_VOP3__V_CMPX_GE_I32
~Inst_VOP3__V_CMPX_GE_I32()
Definition: instructions.cc:23425
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U16::~Inst_VOP3__V_CMPX_F_U16
~Inst_VOP3__V_CMPX_F_U16()
Definition: instructions.cc:22186
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::Inst_MIMG__IMAGE_SAMPLE_C_CL
Inst_MIMG__IMAGE_SAMPLE_C_CL(InFmt_MIMG *)
Definition: instructions.cc:42738
gem5::VegaISA::Inst_VOP3__V_FMA_F16::Inst_VOP3__V_FMA_F16
Inst_VOP3__V_FMA_F16(InFmt_VOP3A *)
Definition: instructions.cc:32681
gem5::VegaISA::Inst_VOP3__V_MIN_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27349
gem5::VegaISA::Inst_VOP2__V_ADD_U32::~Inst_VOP2__V_ADD_U32
~Inst_VOP2__V_ADD_U32()
Definition: instructions.cc:7996
gem5::VegaISA::Inst_VOP2__V_MAX_U16::~Inst_VOP2__V_MAX_U16
~Inst_VOP2__V_MAX_U16()
Definition: instructions.cc:7844
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_F32::~Inst_DS__DS_MIN_SRC2_F32
~Inst_DS__DS_MIN_SRC2_F32()
Definition: instructions.cc:37716
gem5::VegaISA::Inst_VOP3__V_ADD_CO_U32::Inst_VOP3__V_ADD_CO_U32
Inst_VOP3__V_ADD_CO_U32(InFmt_VOP3B *)
Definition: instructions.cc:26413
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMIN::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44962
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_F64::Inst_DS__DS_CMPST_RTN_F64
Inst_DS__DS_CMPST_RTN_F64(InFmt_DS *)
Definition: instructions.cc:37125
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5205
gem5::VegaISA::InFmt_SOP2::SSRC1
unsigned int SSRC1
Definition: gpu_decoder.hh:1760
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I64::Inst_VOPC__V_CMP_GE_I64
Inst_VOPC__V_CMP_GE_I64(InFmt_VOPC *)
Definition: instructions.cc:16124
gem5::VegaISA::Inst_SOPK__S_CMPK_GE_I32::Inst_SOPK__S_CMPK_GE_I32
Inst_SOPK__S_CMPK_GE_I32(InFmt_SOPK *)
Definition: instructions.cc:1699
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F16::Inst_VOPC__V_CMPX_NEQ_F16
Inst_VOPC__V_CMPX_NEQ_F16(InFmt_VOPC *)
Definition: instructions.cc:11552
gem5::VegaISA::InFmt_DS_1::DATA0
unsigned int DATA0
Definition: gpu_decoder.hh:1621
gem5::VegaISA::Inst_VOP2__V_LSHLREV_B32::~Inst_VOP2__V_LSHLREV_B32
~Inst_VOP2__V_LSHLREV_B32()
Definition: instructions.cc:6712
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41440
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F16::~Inst_VOP3__V_CMPX_TRU_F16
~Inst_VOP3__V_CMPX_TRU_F16()
Definition: instructions.cc:18284
gem5::VegaISA::Inst_SOP1__S_BCNT0_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2505
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18003
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_I64::~Inst_SOP1__S_FLBIT_I32_I64
~Inst_SOP1__S_FLBIT_I32_I64()
Definition: instructions.cc:2784
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24702
gem5::VegaISA::Inst_VOP1__V_CLREXCP::~Inst_VOP1__V_CLREXCP
~Inst_VOP1__V_CLREXCP()
Definition: instructions.cc:9954
gem5::VegaISA::Inst_SOP2__S_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:369
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40747
gem5::VegaISA::Inst_DS__DS_CMPST_F64::~Inst_DS__DS_CMPST_F64
~Inst_DS__DS_CMPST_F64()
Definition: instructions.cc:36692
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43064
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::~Inst_FLAT__FLAT_ATOMIC_UMIN_X2
~Inst_FLAT__FLAT_ATOMIC_UMIN_X2()
Definition: instructions.cc:45561
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15575
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_L::Inst_MIMG__IMAGE_SAMPLE_L
Inst_MIMG__IMAGE_SAMPLE_L(InFmt_MIMG *)
Definition: instructions.cc:42642
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U32::~Inst_VOPC__V_CMPX_F_U32
~Inst_VOPC__V_CMPX_F_U32()
Definition: instructions.cc:15668
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14229
gem5::VegaISA::Inst_VOP3__V_CMP_T_I16::Inst_VOP3__V_CMP_T_I16
Inst_VOP3__V_CMP_T_I16(InFmt_VOP3A *)
Definition: instructions.cc:21492
gem5::VegaISA::Inst_VOP3__V_RSQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29039
gem5::VegaISA::Inst_DS__DS_XOR_SRC2_B64::Inst_DS__DS_XOR_SRC2_B64
Inst_DS__DS_XOR_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:38266
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B64::Inst_DS__DS_WRITE2ST64_B64
Inst_DS__DS_WRITE2ST64_B64(InFmt_DS *)
Definition: instructions.cc:36593
gem5::VegaISA::Inst_SOP2__S_ADD_I32::Inst_SOP2__S_ADD_I32
Inst_SOP2__S_ADD_I32(InFmt_SOP2 *)
Definition: instructions.cc:116
gem5::VegaISA::Inst_SOPP__S_SLEEP::Inst_SOPP__S_SLEEP
Inst_SOPP__S_SLEEP(InFmt_SOPP *)
Definition: instructions.cc:4704
gem5::VegaISA::InFmt_VOP_DPP::BANK_MASK
unsigned int BANK_MASK
Definition: gpu_decoder.hh:1851
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28236
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42636
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43497
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F32::~Inst_VOPC__V_CMPX_LG_F32
~Inst_VOPC__V_CMPX_LG_F32()
Definition: instructions.cc:12336
gem5::VegaISA::Inst_DS__DS_DEC_U64::~Inst_DS__DS_DEC_U64
~Inst_DS__DS_DEC_U64()
Definition: instructions.cc:36277
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I32_F32::Inst_VOP3__V_FREXP_EXP_I32_F32
Inst_VOP3__V_FREXP_EXP_I32_F32(InFmt_VOP3A *)
Definition: instructions.cc:29564
gem5::VegaISA::Inst_VOP3__V_CMP_F_I32::Inst_VOP3__V_CMP_F_I32
Inst_VOP3__V_CMP_F_I32(InFmt_VOP3A *)
Definition: instructions.cc:22516
gem5::VegaISA::Inst_DS__DS_DEC_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37525
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX2::~Inst_FLAT__FLAT_STORE_DWORDX2
~Inst_FLAT__FLAT_STORE_DWORDX2()
Definition: instructions.cc:44453
gem5::VegaISA::Inst_VOP3__V_MAD_I32_I24::~Inst_VOP3__V_MAD_I32_I24
~Inst_VOP3__V_MAD_I32_I24()
Definition: instructions.cc:30290
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13453
gem5::VegaISA::Inst_VOP3__V_ADD_U32::Inst_VOP3__V_ADD_U32
Inst_VOP3__V_ADD_U32(InFmt_VOP3A *)
Definition: instructions.cc:27405
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F32::~Inst_VOP3__V_CMP_NLE_F32
~Inst_VOP3__V_CMP_NLE_F32()
Definition: instructions.cc:18730
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F64::Inst_VOPC__V_CMP_NLE_F64
Inst_VOPC__V_CMP_NLE_F64(InFmt_VOPC *)
Definition: instructions.cc:13132
gem5::VegaISA::Inst_VOP2__V_ASHRREV_I16::Inst_VOP2__V_ASHRREV_I16
Inst_VOP2__V_ASHRREV_I16(InFmt_VOP2 *)
Definition: instructions.cc:7759
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I16::Inst_VOPC__V_CMPX_GT_I16
Inst_VOPC__V_CMPX_GT_I16(InFmt_VOPC *)
Definition: instructions.cc:14478
gem5::VegaISA::Inst_VOP2__V_SUBREV_U16::~Inst_VOP2__V_SUBREV_U16
~Inst_VOP2__V_SUBREV_U16()
Definition: instructions.cc:7627
gem5::VegaISA::Inst_DS__DS_INC_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37502
gem5::VegaISA::Inst_VOP1__V_FLOOR_F32::Inst_VOP1__V_FLOOR_F32
Inst_VOP1__V_FLOOR_F32(InFmt_VOP1 *)
Definition: instructions.cc:9168
gem5::VegaISA::Inst_VOP3__V_BFREV_B32::Inst_VOP3__V_BFREV_B32
Inst_VOP3__V_BFREV_B32(InFmt_VOP3A *)
Definition: instructions.cc:29283
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39070
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23478
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F32::~Inst_VOPC__V_CMP_CLASS_F32
~Inst_VOPC__V_CMP_CLASS_F32()
Definition: instructions.cc:10436
gem5::VegaISA::Inst_VOP1__V_RCP_IFLAG_F32::~Inst_VOP1__V_RCP_IFLAG_F32
~Inst_VOP1__V_RCP_IFLAG_F32()
Definition: instructions.cc:9304
gem5::VegaISA::Inst_VOP3__V_MSAD_U8::Inst_VOP3__V_MSAD_U8
Inst_VOP3__V_MSAD_U8(InFmt_VOP3A *)
Definition: instructions.cc:32051
gem5::VegaISA::Inst_VOP2__V_MAC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6966
gem5::VegaISA::Inst_VOP1__V_FLOOR_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10235
gem5::VegaISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3300
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I32::Inst_VOP3__V_CMPX_T_I32
Inst_VOP3__V_CMPX_T_I32(InFmt_VOP3A *)
Definition: instructions.cc:23463
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F64::Inst_VOP3__V_CMPX_NEQ_F64
Inst_VOP3__V_CMPX_NEQ_F64(InFmt_VOP3A *)
Definition: instructions.cc:21050
gem5::VegaISA::InFmt_VOP_SDWA::SRC1_ABS
unsigned int SRC1_ABS
Definition: gpu_decoder.hh:1870
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41419
gem5::VegaISA::Inst_VOP3__V_CMP_O_F16::~Inst_VOP3__V_CMP_O_F16
~Inst_VOP3__V_CMP_O_F16()
Definition: instructions.cc:17745
gem5::VegaISA::Inst_SOPK__S_CMPK_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1928
gem5::VegaISA::Inst_VOP1__V_CVT_U16_F16::Inst_VOP1__V_CVT_U16_F16
Inst_VOP1__V_CVT_U16_F16(InFmt_VOP1 *)
Definition: instructions.cc:10009
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F16::~Inst_VOP3__V_CMP_NEQ_F16
~Inst_VOP3__V_CMP_NEQ_F16()
Definition: instructions.cc:17870
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12417
gem5::Wavefront::wfSlotId
const int wfSlotId
Definition: wavefront.hh:96
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:45466
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F64::~Inst_VOP3__V_CMPX_TRU_F64
~Inst_VOP3__V_CMPX_TRU_F64()
Definition: instructions.cc:21177
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F32::Inst_VOP3__V_CMP_CLASS_F32
Inst_VOP3__V_CMP_CLASS_F32(InFmt_VOP3A *)
Definition: instructions.cc:17054
gem5::VegaISA::Inst_SOPC__S_CMP_GT_I32::Inst_SOPC__S_CMP_GT_I32
Inst_SOPC__S_CMP_GT_I32(InFmt_SOPC *)
Definition: instructions.cc:3689
gem5::VegaISA::Inst_VOPC__V_CMP_T_I32::~Inst_VOPC__V_CMP_T_I32
~Inst_VOPC__V_CMP_T_I32()
Definition: instructions.cc:15115
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I64::~Inst_VOPC__V_CMP_NE_I64
~Inst_VOPC__V_CMP_NE_I64()
Definition: instructions.cc:16097
gem5::VegaISA::Inst_VOP3__V_CVT_U16_F16::Inst_VOP3__V_CVT_U16_F16
Inst_VOP3__V_CVT_U16_F16(InFmt_VOP3A *)
Definition: instructions.cc:29725
gem5::VegaISA::Inst_DS__DS_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34250
gem5::VegaISA::Inst_VOP3__V_MAD_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32586
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CL::~Inst_MIMG__IMAGE_SAMPLE_CL
~Inst_MIMG__IMAGE_SAMPLE_CL()
Definition: instructions.cc:42589
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40597
gem5::VegaISA::Inst_VOP2__V_MUL_LEGACY_F32::~Inst_VOP2__V_MUL_LEGACY_F32
~Inst_VOP2__V_MUL_LEGACY_F32()
Definition: instructions.cc:6194
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_O::Inst_MIMG__IMAGE_SAMPLE_C_O
Inst_MIMG__IMAGE_SAMPLE_C_O(InFmt_MIMG *)
Definition: instructions.cc:43031
gem5::VegaISA::Inst_DS__DS_MSKOR_RTN_B32::Inst_DS__DS_MSKOR_RTN_B32
Inst_DS__DS_MSKOR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35211
gem5::VegaISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::~Inst_SOP1__S_NOR_SAVEEXEC_B64
~Inst_SOP1__S_NOR_SAVEEXEC_B64()
Definition: instructions.cc:3291
gem5::VegaISA::Inst_VOP1::extData
InstFormat extData
Definition: op_encodings.hh:387
gem5::VegaISA::Inst_SMEM__S_ATC_PROBE_BUFFER::~Inst_SMEM__S_ATC_PROBE_BUFFER
~Inst_SMEM__S_ATC_PROBE_BUFFER()
Definition: instructions.cc:6006
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40177
gem5::VegaISA::Inst_SOPC__S_BITCMP0_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4038
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I16::~Inst_VOP3__V_CMPX_NE_I16
~Inst_VOP3__V_CMPX_NE_I16()
Definition: instructions.cc:22063
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F16::Inst_VOP3__V_CMPX_LE_F16
Inst_VOP3__V_CMPX_LE_F16(InFmt_VOP3A *)
Definition: instructions.cc:18009
gem5::VegaISA::Inst_VOP2__V_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6450
gem5::VegaISA::Inst_DS__DS_WRITE2_B32::~Inst_DS__DS_WRITE2_B32
~Inst_DS__DS_WRITE2_B32()
Definition: instructions.cc:34455
gem5::VegaISA::Inst_DS__DS_BPERMUTE_B32::~Inst_DS__DS_BPERMUTE_B32
~Inst_DS__DS_BPERMUTE_B32()
Definition: instructions.cc:36072
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F16::Inst_VOPC__V_CMP_LG_F16
Inst_VOPC__V_CMP_LG_F16(InFmt_VOPC *)
Definition: instructions.cc:11057
gem5::VegaISA::Inst_VOP3__V_MAC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26370
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F16::~Inst_VOPC__V_CMPX_NLG_F16
~Inst_VOPC__V_CMPX_NLG_F16()
Definition: instructions.cc:11497
gem5::VegaISA::Inst_SOP2__S_BFE_U64::~Inst_SOP2__S_BFE_U64
~Inst_SOP2__S_BFE_U64()
Definition: instructions.cc:1333
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1::~Inst_MUBUF__BUFFER_WBINVL1
~Inst_MUBUF__BUFFER_WBINVL1()
Definition: instructions.cc:40413
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U64::~Inst_VOP3__V_CMPX_GT_U64
~Inst_VOP3__V_CMPX_GT_U64()
Definition: instructions.cc:24987
gem5::VegaISA::Inst_VOP2__V_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6616
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U64::Inst_VOP3__V_CMPX_T_U64
Inst_VOP3__V_CMPX_T_U64(InFmt_VOP3A *)
Definition: instructions.cc:25117
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F32::Inst_VOP3__V_CMP_NLG_F32
Inst_VOP3__V_CMP_NLG_F32(InFmt_VOP3A *)
Definition: instructions.cc:18651
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F64::~Inst_VOPC__V_CMP_NLT_F64
~Inst_VOPC__V_CMP_NLT_F64()
Definition: instructions.cc:13207
gem5::VegaISA::Inst_DS__DS_SUB_RTN_U32::~Inst_DS__DS_SUB_RTN_U32
~Inst_DS__DS_SUB_RTN_U32()
Definition: instructions.cc:34984
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F32::~Inst_VOP3__V_CMPX_TRU_F32
~Inst_VOP3__V_CMPX_TRU_F32()
Definition: instructions.cc:19422
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F16::Inst_VOP3__V_CMPX_NLG_F16
Inst_VOP3__V_CMPX_NLG_F16(InFmt_VOP3A *)
Definition: instructions.cc:18165
gem5::VegaISA::Inst_DS__DS_MIN_RTN_F32::Inst_DS__DS_MIN_RTN_F32
Inst_DS__DS_MIN_RTN_F32(InFmt_DS *)
Definition: instructions.cc:35344
gem5::VegaISA::Inst_DS__DS_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34187
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F64::~Inst_VOP3__V_CMPX_LG_F64
~Inst_VOP3__V_CMPX_LG_F64()
Definition: instructions.cc:20581
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I64::~Inst_VOP3__V_CMPX_LT_I64
~Inst_VOP3__V_CMPX_LT_I64()
Definition: instructions.cc:24511
gem5::VegaISA::Inst_VOP3__V_CMP_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18321
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41511
gem5::VegaISA::Inst_VOP1__V_CVT_F16_I16::~Inst_VOP1__V_CVT_F16_I16
~Inst_VOP1__V_CVT_F16_I16()
Definition: instructions.cc:9995
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMAX::Inst_FLAT__FLAT_ATOMIC_SMAX
Inst_FLAT__FLAT_ATOMIC_SMAX(InFmt_FLAT *)
Definition: instructions.cc:45007
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32745
gem5::Wavefront::execUnitId
int execUnitId
Definition: wavefront.hh:102
gem5::VegaISA::Inst_SOPP__S_SET_GPR_IDX_MODE::~Inst_SOPP__S_SET_GPR_IDX_MODE
~Inst_SOPP__S_SET_GPR_IDX_MODE()
Definition: instructions.cc:5029
gem5::VegaISA::Inst_VOP3__V_MAX3_U32::Inst_VOP3__V_MAX3_U32
Inst_VOP3__V_MAX3_U32(InFmt_VOP3A *)
Definition: instructions.cc:31148
gem5::VegaISA::Inst_SOPP__S_SETPRIO::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4743
gem5::VegaISA::InFmt_VOP3_1::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1820
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I32::~Inst_VOPC__V_CMPX_GE_I32
~Inst_VOPC__V_CMPX_GE_I32()
Definition: instructions.cc:15603
gem5::VegaISA::Inst_VOP3__V_SUB_U16::~Inst_VOP3__V_SUB_U16
~Inst_VOP3__V_SUB_U16()
Definition: instructions.cc:26878
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER::~Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
~Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER()
Definition: instructions.cc:4963
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38905
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::~Inst_MIMG__IMAGE_SAMPLE_C_CL
~Inst_MIMG__IMAGE_SAMPLE_C_CL()
Definition: instructions.cc:42745
gem5::VegaISA::Inst_SOPK__S_CMPK_EQ_U32::Inst_SOPK__S_CMPK_EQ_U32
Inst_SOPK__S_CMPK_EQ_U32(InFmt_SOPK *)
Definition: instructions.cc:1780
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX2::Inst_SMEM__S_LOAD_DWORDX2
Inst_SMEM__S_LOAD_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:5103
gem5::VegaISA::Inst_DS__DS_READ_B96::~Inst_DS__DS_READ_B96
~Inst_DS__DS_READ_B96()
Definition: instructions.cc:38500
gem5::VegaISA::Inst_SOP1__S_FF0_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2596
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19053
gem5::VegaISA::Inst_SOP1__S_CMOV_B64::Inst_SOP1__S_CMOV_B64
Inst_SOP1__S_CMOV_B64(InFmt_SOP1 *)
Definition: instructions.cc:2253
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::~Inst_MUBUF__BUFFER_LOAD_DWORDX4
~Inst_MUBUF__BUFFER_LOAD_DWORDX4()
Definition: instructions.cc:39722
gem5::VegaISA::Inst_VOP3__V_CVT_F32_U32::Inst_VOP3__V_CVT_F32_U32
Inst_VOP3__V_CVT_F32_U32(InFmt_VOP3A *)
Definition: instructions.cc:27721
gem5::VegaISA::Inst_VOP3__V_ALIGNBYTE_B32::Inst_VOP3__V_ALIGNBYTE_B32
Inst_VOP3__V_ALIGNBYTE_B32(InFmt_VOP3A *)
Definition: instructions.cc:30839
gem5::VegaISA::Inst_DS__DS_WRITE_B64::~Inst_DS__DS_WRITE_B64
~Inst_DS__DS_WRITE_B64()
Definition: instructions.cc:36470
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F16::~Inst_VOPC__V_CMPX_U_F16
~Inst_VOPC__V_CMPX_U_F16()
Definition: instructions.cc:11454
gem5::VegaISA::Inst_SOPP__S_WAITCNT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4670
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41727
gem5::VegaISA::Inst_DS__DS_CONSUME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37978
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::~Inst_MUBUF__BUFFER_STORE_DWORDX4
~Inst_MUBUF__BUFFER_STORE_DWORDX4()
Definition: instructions.cc:40293
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42791
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_F64::~Inst_DS__DS_CMPST_RTN_F64
~Inst_DS__DS_CMPST_RTN_F64()
Definition: instructions.cc:37131
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41544
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2765
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U16::Inst_VOP3__V_CMPX_LE_U16
Inst_VOP3__V_CMPX_LE_U16(InFmt_VOP3A *)
Definition: instructions.cc:22301
gem5::VegaISA::Inst_VOP3__V_RCP_F32::~Inst_VOP3__V_RCP_F32
~Inst_VOP3__V_RCP_F32()
Definition: instructions.cc:28858
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I32::Inst_VOP3__V_CMPX_LE_I32
Inst_VOP3__V_CMPX_LE_I32(InFmt_VOP3A *)
Definition: instructions.cc:23279
gem5::VegaISA::Inst_VOP3__V_SAD_U8::~Inst_VOP3__V_SAD_U8
~Inst_VOP3__V_SAD_U8()
Definition: instructions.cc:31350
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I16::Inst_VOPC__V_CMPX_F_I16
Inst_VOPC__V_CMPX_F_I16(InFmt_VOPC *)
Definition: instructions.cc:14343
gem5::ComputeUnit::registerManager
RegisterManager * registerManager
Definition: compute_unit.hh:278
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::~Inst_FLAT__FLAT_ATOMIC_CMPSWAP
~Inst_FLAT__FLAT_ATOMIC_CMPSWAP()
Definition: instructions.cc:44729
gem5::VegaISA::Inst_VOP3__V_CVT_F16_I16::Inst_VOP3__V_CVT_F16_I16
Inst_VOP3__V_CVT_F16_I16(InFmt_VOP3A *)
Definition: instructions.cc:29704
gem5::VegaISA::Inst_VOP2__V_MAC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7497
gem5::VegaISA::Inst_DS__DS_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34655
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_AND::~Inst_MIMG__IMAGE_ATOMIC_AND
~Inst_MIMG__IMAGE_ATOMIC_AND()
Definition: instructions.cc:42433
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10455
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_P::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37913
gem5::VegaISA::Inst_VOP2__V_SUB_U16::~Inst_VOP2__V_SUB_U16
~Inst_VOP2__V_SUB_U16()
Definition: instructions.cc:7593
gem5::VegaISA::Inst_SOPK__S_CMPK_EQ_I32::Inst_SOPK__S_CMPK_EQ_I32
Inst_SOPK__S_CMPK_EQ_I32(InFmt_SOPK *)
Definition: instructions.cc:1618
gem5::VegaISA::Inst_VOP1__V_CVT_F32_F64::~Inst_VOP1__V_CVT_F32_F64
~Inst_VOP1__V_CVT_F32_F64()
Definition: instructions.cc:8643
gem5::VegaISA::Inst_VOP3__V_FLOOR_F32::~Inst_VOP3__V_FLOOR_F32
~Inst_VOP3__V_FLOOR_F32()
Definition: instructions.cc:28729
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_SHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39993
gem5::VegaISA::Inst_DS__DS_INC_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35037
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I64::Inst_VOPC__V_CMPX_LT_I64
Inst_VOPC__V_CMPX_LT_I64(InFmt_VOPC *)
Definition: instructions.cc:16469
gem5::VegaISA::Inst_VOP2__V_MUL_LO_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7670
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19243
gem5::VegaISA::Inst_DS__DS_WRITE_B8_D16_HI::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34881
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13417
gem5::VegaISA::Inst_DS__DS_MAX_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35142
gem5::VegaISA::Inst_VOP3__V_MAD_F32::Inst_VOP3__V_MAD_F32
Inst_VOP3__V_MAD_F32(InFmt_VOP3A *)
Definition: instructions.cc:30222
gem5::VegaISA::Inst_VOP3__V_BFI_B32::Inst_VOP3__V_BFI_B32
Inst_VOP3__V_BFI_B32(InFmt_VOP3A *)
Definition: instructions.cc:30562
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38705
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::Inst_FLAT__FLAT_ATOMIC_ADD_X2
Inst_FLAT__FLAT_ATOMIC_ADD_X2(InFmt_FLAT *)
Definition: instructions.cc:45412
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U32::~Inst_VOPC__V_CMP_EQ_U32
~Inst_VOPC__V_CMP_EQ_U32()
Definition: instructions.cc:15204
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44776
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41608
gem5::VegaISA::Inst_SOP2__S_MUL_HI_U32::~Inst_SOP2__S_MUL_HI_U32
~Inst_SOP2__S_MUL_HI_U32()
Definition: instructions.cc:1508
gem5::VegaISA::Inst_DS__DS_MAX_RTN_F32::~Inst_DS__DS_MAX_RTN_F32
~Inst_DS__DS_MAX_RTN_F32()
Definition: instructions.cc:35376
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13942
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44897
gem5::Wavefront::S_BARRIER
@ S_BARRIER
WF is stalled at a barrier.
Definition: wavefront.hh:92
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U16::Inst_VOPC__V_CMP_EQ_U16
Inst_VOPC__V_CMP_EQ_U16(InFmt_VOPC *)
Definition: instructions.cc:14150
gem5::VegaISA::Inst_DS__DS_DEC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34166
gem5::VegaISA::Inst_SOP2__S_SUB_U32::Inst_SOP2__S_SUB_U32
Inst_SOP2__S_SUB_U32(InFmt_SOP2 *)
Definition: instructions.cc:83
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40717
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I32::Inst_VOP3__V_CMP_LT_I32
Inst_VOP3__V_CMP_LT_I32(InFmt_VOP3A *)
Definition: instructions.cc:22544
gem5::VegaISA::VecOperand::absModifier
void absModifier()
Definition: operand.hh:255
gem5::VegaISA::Inst_VINTRP__V_INTERP_P1_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17001
gem5::VegaISA::Inst_SOP1__S_MOVRELS_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3429
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORD::Inst_SMEM__S_LOAD_DWORD
Inst_SMEM__S_LOAD_DWORD(InFmt_SMEM *)
Definition: instructions.cc:5046
gem5::VegaISA::Inst_VOP1__V_SQRT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9464
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13747
gem5::VegaISA::Inst_DS__DS_MAX_RTN_U64::Inst_DS__DS_MAX_RTN_U64
Inst_DS__DS_MAX_RTN_U64(InFmt_DS *)
Definition: instructions.cc:36935
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F64::Inst_VOPC__V_CMP_NLT_F64
Inst_VOPC__V_CMP_NLT_F64(InFmt_VOPC *)
Definition: instructions.cc:13200
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F16::~Inst_VOPC__V_CMPX_TRU_F16
~Inst_VOPC__V_CMPX_TRU_F16()
Definition: instructions.cc:11602
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41311
gem5::VegaISA::Inst_FLAT__FLAT_STORE_SHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44345
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F64::~Inst_VOPC__V_CMPX_EQ_F64
~Inst_VOPC__V_CMPX_EQ_F64()
Definition: instructions.cc:13338
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43778
gem5::VegaISA::Inst_VOP1__V_CVT_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8522
gem5::VegaISA::Inst_VOP2__V_SUBB_CO_U32::Inst_VOP2__V_SUBB_CO_U32
Inst_VOP2__V_SUBB_CO_U32(InFmt_VOP2 *)
Definition: instructions.cc:7303
gem5::VegaISA::Inst_SOP2__S_AND_B64::Inst_SOP2__S_AND_B64
Inst_SOP2__S_AND_B64(InFmt_SOP2 *)
Definition: instructions.cc:479
gem5::VegaISA::Inst_SOPP__S_SET_GPR_IDX_OFF::Inst_SOPP__S_SET_GPR_IDX_OFF
Inst_SOPP__S_SET_GPR_IDX_OFF(InFmt_SOPP *)
Definition: instructions.cc:5001
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F32::~Inst_VOP3__V_CMPX_GT_F32
~Inst_VOP3__V_CMPX_GT_F32()
Definition: instructions.cc:19009
gem5::VegaISA::Inst_VOP3__V_CVT_U16_F16::~Inst_VOP3__V_CVT_U16_F16
~Inst_VOP3__V_CVT_U16_F16()
Definition: instructions.cc:29732
gem5::VegaISA::Inst_DS__DS_READ2_B32::~Inst_DS__DS_READ2_B32
~Inst_DS__DS_READ2_B32()
Definition: instructions.cc:35509
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20232
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41354
gem5::VegaISA::Inst_MIMG__IMAGE_STORE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:42057
gem5::VegaISA::Inst_VOP3__V_CVT_U32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28318
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36655
gem5::VegaISA::Inst_VOP3__V_MIN3_I32::~Inst_VOP3__V_MIN3_I32
~Inst_VOP3__V_MIN3_I32()
Definition: instructions.cc:30955
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U64::~Inst_VOP3__V_CMPX_F_U64
~Inst_VOP3__V_CMPX_F_U64()
Definition: instructions.cc:24818
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F16::Inst_VOPC__V_CMPX_GE_F16
Inst_VOPC__V_CMPX_GE_F16(InFmt_VOPC *)
Definition: instructions.cc:11403
gem5::VegaISA::Inst_DS__DS_OR_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38260
gem5::VegaISA::Inst_VOP3__V_SIN_F16::~Inst_VOP3__V_SIN_F16
~Inst_VOP3__V_SIN_F16()
Definition: instructions.cc:30048
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_CL::~Inst_MIMG__IMAGE_GATHER4_C_CL
~Inst_MIMG__IMAGE_GATHER4_C_CL()
Definition: instructions.cc:43331
gem5::VegaISA::Inst_VOP3__V_CVT_F32_F64::~Inst_VOP3__V_CVT_F32_F64
~Inst_VOP3__V_CVT_F32_F64()
Definition: instructions.cc:28053
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U64::Inst_VOPC__V_CMPX_F_U64
Inst_VOPC__V_CMPX_F_U64(InFmt_VOPC *)
Definition: instructions.cc:16709
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U32::Inst_VOPC__V_CMPX_LT_U32
Inst_VOPC__V_CMPX_LT_U32(InFmt_VOPC *)
Definition: instructions.cc:15691
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F16::Inst_VOP3__V_CMPX_CLASS_F16
Inst_VOP3__V_CMPX_CLASS_F16(InFmt_VOP3A *)
Definition: instructions.cc:17557
gem5::VegaISA::Inst_VOP3__V_FLOOR_F16::Inst_VOP3__V_FLOOR_F16
Inst_VOP3__V_FLOOR_F16(InFmt_VOP3A *)
Definition: instructions.cc:29936
gem5::VegaISA::findFirstZero
ScalarRegI32 findFirstZero(T val)
Definition: inst_util.hh:130
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24825
gem5::VegaISA::Inst_SOPK__S_CMPK_LE_I32::~Inst_SOPK__S_CMPK_LE_I32
~Inst_SOPK__S_CMPK_LE_I32()
Definition: instructions.cc:1759
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45161
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F32::~Inst_VOPC__V_CMP_EQ_F32
~Inst_VOPC__V_CMP_EQ_F32()
Definition: instructions.cc:11685
gem5::VegaISA::Inst_SOPK__S_CMPK_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1793
gem5::VegaISA::Inst_VOP3__V_MUL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26799
gem5::VegaISA::Inst_DS__DS_GWS_INIT::~Inst_DS__DS_GWS_INIT
~Inst_DS__DS_GWS_INIT()
Definition: instructions.cc:37815
gem5::VegaISA::Inst_SOPC__S_CMP_LG_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4177
gem5::VegaISA::Inst_MIMG__IMAGE_STORE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:42052
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38641
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ_O::~Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
~Inst_MIMG__IMAGE_SAMPLE_C_LZ_O()
Definition: instructions.cc:43177
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14990
gem5::VegaISA::Inst_SOP1__S_CMOV_B64::~Inst_SOP1__S_CMOV_B64
~Inst_SOP1__S_CMOV_B64()
Definition: instructions.cc:2259
gem5::VegaISA::Inst_DS__DS_READ_I8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35684
gem5::VegaISA::InFmt_VINTRP
Definition: gpu_decoder.hh:1786
gem5::VegaISA::Inst_VOPC__V_CMP_F_I64::~Inst_VOPC__V_CMP_F_I64
~Inst_VOPC__V_CMP_F_I64()
Definition: instructions.cc:15937
gem5::VegaISA::Inst_DS__DS_AND_SRC2_B64::~Inst_DS__DS_AND_SRC2_B64
~Inst_DS__DS_AND_SRC2_B64()
Definition: instructions.cc:38227
gem5::VegaISA::Inst_VOP1__V_SQRT_F32::Inst_VOP1__V_SQRT_F32
Inst_VOP1__V_SQRT_F32(InFmt_VOP1 *)
Definition: instructions.cc:9450
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U64::~Inst_VOPC__V_CMPX_LT_U64
~Inst_VOPC__V_CMPX_LT_U64()
Definition: instructions.cc:16746
gem5::VegaISA::Inst_VOP1__V_TRUNC_F32::Inst_VOP1__V_TRUNC_F32
Inst_VOP1__V_TRUNC_F32(InFmt_VOP1 *)
Definition: instructions.cc:9071
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23816
gem5::VegaISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::Inst_DS__DS_WRXCHG2ST64_RTN_B32
Inst_DS__DS_WRXCHG2ST64_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35272
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24006
gem5::VegaISA::Inst_VOP3__V_MBCNT_HI_U32_B32::Inst_VOP3__V_MBCNT_HI_U32_B32
Inst_VOP3__V_MBCNT_HI_U32_B32(InFmt_VOP3A *)
Definition: instructions.cc:33664
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_L::~Inst_MIMG__IMAGE_SAMPLE_C_L
~Inst_MIMG__IMAGE_SAMPLE_C_L()
Definition: instructions.cc:42803
gem5::VegaISA::Inst_VOP3__V_ALIGNBYTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30852
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_I32::~Inst_SOPC__S_CMP_EQ_I32
~Inst_SOPC__S_CMP_EQ_I32()
Definition: instructions.cc:3639
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F64::~Inst_VOP3__V_CMP_LT_F64
~Inst_VOP3__V_CMP_LT_F64()
Definition: instructions.cc:19482
gem5::VegaISA::Inst_VOP3__V_COS_F32::Inst_VOP3__V_COS_F32
Inst_VOP3__V_COS_F32(InFmt_VOP3A *)
Definition: instructions.cc:29199
gem5::VegaISA::Inst_VOP2__V_SUBREV_U32::Inst_VOP2__V_SUBREV_U32
Inst_VOP2__V_SUBREV_U32(InFmt_VOP2 *)
Definition: instructions.cc:8097
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39275
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F32::Inst_VOPC__V_CMPX_LE_F32
Inst_VOPC__V_CMPX_LE_F32(InFmt_VOPC *)
Definition: instructions.cc:12256
gem5::VegaISA::Inst_DS__DS_MAX_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36759
gem5::VegaISA::Inst_VOP3__V_TRUNC_F16::Inst_VOP3__V_TRUNC_F16
Inst_VOP3__V_TRUNC_F16(InFmt_VOP3A *)
Definition: instructions.cc:29978
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5474
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F64::Inst_VOPC__V_CMPX_NLT_F64
Inst_VOPC__V_CMPX_NLT_F64(InFmt_VOPC *)
Definition: instructions.cc:13768
gem5::VegaISA::Inst_DS__DS_ADD_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34973
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I16::Inst_VOPC__V_CMPX_NE_I16
Inst_VOPC__V_CMPX_NE_I16(InFmt_VOPC *)
Definition: instructions.cc:14513
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F64::Inst_VOPC__V_CMPX_F_F64
Inst_VOPC__V_CMPX_F_F64(InFmt_VOPC *)
Definition: instructions.cc:13263
gem5::VegaISA::InFmt_VOPC::VSRC1
unsigned int VSRC1
Definition: gpu_decoder.hh:1837
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U16::~Inst_VOP3__V_CMP_GE_U16
~Inst_VOP3__V_CMP_GE_U16()
Definition: instructions.cc:21775
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B64::Inst_VOP3__V_LSHLREV_B64
Inst_VOP3__V_LSHLREV_B64(InFmt_VOP3A *)
Definition: instructions.cc:33714
gem5::VegaISA::Inst_VOP3__V_MAC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26822
gem5::VegaISA::Inst_VOP2__V_MAX_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7810
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGUSER::Inst_SOPP__S_CBRANCH_CDBGUSER
Inst_SOPP__S_CBRANCH_CDBGUSER(InFmt_SOPP *)
Definition: instructions.cc:4911
gem5::VegaISA::Inst_SOP2__S_SUB_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:172
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP::~Inst_MIMG__IMAGE_LOAD_MIP
~Inst_MIMG__IMAGE_LOAD_MIP()
Definition: instructions.cc:41878
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::~Inst_MIMG__IMAGE_ATOMIC_SMIN
~Inst_MIMG__IMAGE_ATOMIC_SMIN()
Definition: instructions.cc:42314
gem5::VegaISA::Inst_FLAT::issueRequestHelper
void issueRequestHelper(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:1061
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ(InFmt_MUBUF *)
Definition: instructions.cc:39089
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43577
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::~Inst_MUBUF__BUFFER_STORE_DWORDX3
~Inst_MUBUF__BUFFER_STORE_DWORDX3()
Definition: instructions.cc:40195
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_F32::~Inst_DS__DS_CMPST_RTN_F32
~Inst_DS__DS_CMPST_RTN_F32()
Definition: instructions.cc:35323
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45435
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11355
gem5::VegaISA::Inst_DS__DS_XOR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37013
gem5::VegaISA::Inst_DS__DS_MSKOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34379
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::Inst_FLAT__FLAT_ATOMIC_UMAX_X2
Inst_FLAT__FLAT_ATOMIC_UMAX_X2(InFmt_FLAT *)
Definition: instructions.cc:45606
gem5::VegaISA::Inst_VOP3__V_MAD_I64_I32::Inst_VOP3__V_MAD_I64_I32
Inst_VOP3__V_MAD_I64_I32(InFmt_VOP3B *)
Definition: instructions.cc:32180
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43477
gem5::VegaISA::Inst_SOP1__S_CMOV_B32::Inst_SOP1__S_CMOV_B32
Inst_SOP1__S_CMOV_B32(InFmt_SOP1 *)
Definition: instructions.cc:2222
gem5::VegaISA::Inst_SOP2__S_SUB_I32::Inst_SOP2__S_SUB_I32
Inst_SOP2__S_SUB_I32(InFmt_SOP2 *)
Definition: instructions.cc:153
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I16::Inst_VOP3__V_CMPX_NE_I16
Inst_VOP3__V_CMPX_NE_I16(InFmt_VOP3A *)
Definition: instructions.cc:22055
gem5::VegaISA::Inst_SOP2__S_ANDN2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:685
gem5::VegaISA::Inst_FLAT::instData
InFmt_FLAT instData
Definition: op_encodings.hh:1083
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_V::Inst_DS__DS_GWS_SEMA_V
Inst_DS__DS_GWS_SEMA_V(InFmt_DS *)
Definition: instructions.cc:37837
gem5::VegaISA::Inst_VOPC__V_CMP_T_I32::Inst_VOPC__V_CMP_T_I32
Inst_VOPC__V_CMP_T_I32(InFmt_VOPC *)
Definition: instructions.cc:15109
gem5::VegaISA::Inst_VOP3__V_RNDNE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28696
gem5::VegaISA::Inst_VOP3__V_CMP_T_U32::Inst_VOP3__V_CMP_T_U32
Inst_VOP3__V_CMP_T_U32(InFmt_VOP3A *)
Definition: instructions.cc:23128
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F32::Inst_VOPC__V_CMPX_NEQ_F32
Inst_VOPC__V_CMPX_NEQ_F32(InFmt_VOPC *)
Definition: instructions.cc:12622
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F16::Inst_VOP3__V_CMP_NLG_F16
Inst_VOP3__V_CMP_NLG_F16(InFmt_VOP3A *)
Definition: instructions.cc:17799
gem5::VegaISA::Inst_SOP1__S_GETPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2979
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SSHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44028
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21650
gem5::VegaISA::Inst_SOPC__S_BITCMP0_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3982
gem5::VegaISA::Inst_VOP1__V_FRACT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9844
gem5::VegaISA::Inst_SMEM__S_DCACHE_WB::~Inst_SMEM__S_DCACHE_WB
~Inst_SMEM__S_DCACHE_WB()
Definition: instructions.cc:5893
gem5::VegaISA::Inst_SOP1__S_OR_SAVEEXEC_B64::Inst_SOP1__S_OR_SAVEEXEC_B64
Inst_SOP1__S_OR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3102
gem5::VegaISA::Inst_SOPC__S_BITCMP1_B64::~Inst_SOPC__S_BITCMP1_B64
~Inst_SOPC__S_BITCMP1_B64()
Definition: instructions.cc:4059
gem5::VegaISA::Inst_VOP3__V_BFM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33888
gem5::ArmISA::offset
Bitfield< 23, 0 > offset
Definition: types.hh:144
gem5::VegaISA::Inst_SOPP__S_WAKEUP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4410
gem5::VegaISA::Inst_VOP3__V_CMP_F_F32::~Inst_VOP3__V_CMP_F_F32
~Inst_VOP3__V_CMP_F_F32()
Definition: instructions.cc:18314
gem5::VegaISA::Inst_SOP2__S_MAX_U32::~Inst_SOP2__S_MAX_U32
~Inst_SOP2__S_MAX_U32()
Definition: instructions.cc:361
gem5::VegaISA::Inst_VOP3__V_CMP_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23845
gem5::VegaISA::Inst_VOP3__V_MUL_F64::Inst_VOP3__V_MUL_F64
Inst_VOP3__V_MUL_F64(InFmt_VOP3A *)
Definition: instructions.cc:33033
gem5::reverseBits
std::enable_if_t< std::is_integral_v< T >, T > reverseBits(T val, size_t size=sizeof(T))
Takes a value and returns the bit reversed version.
Definition: bitfield.hh:252
gem5::VegaISA::Inst_VOP3__V_LDEXP_F32::Inst_VOP3__V_LDEXP_F32
Inst_VOP3__V_LDEXP_F32(InFmt_VOP3A *)
Definition: instructions.cc:33444
gem5::VegaISA::Inst_VOP3__V_MUL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25491
gem5::VegaISA::InFmt_SOPK::SIMM16
unsigned int SIMM16
Definition: gpu_decoder.hh:1774
gem5::VegaISA::Inst_VOP3__V_MED3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31312
gem5::ComputeUnit::activeWaves
int activeWaves
Definition: compute_unit.hh:994
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::Inst_MIMG__IMAGE_ATOMIC_SWAP
Inst_MIMG__IMAGE_ATOMIC_SWAP(InFmt_MIMG *)
Definition: instructions.cc:42180
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL::Inst_MIMG__IMAGE_SAMPLE_C_D_CL
Inst_MIMG__IMAGE_SAMPLE_C_D_CL(InFmt_MIMG *)
Definition: instructions.cc:42777
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F64::Inst_VOP3__V_CMP_TRU_F64
Inst_VOP3__V_CMP_TRU_F64(InFmt_VOP3A *)
Definition: instructions.cc:20274
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F64::Inst_VOP1__V_FREXP_MANT_F64
Inst_VOP1__V_FREXP_MANT_F64(InFmt_VOP1 *)
Definition: instructions.cc:9793
gem5::VegaISA::Inst_VOPC__V_CMP_U_F16::Inst_VOPC__V_CMP_U_F16
Inst_VOPC__V_CMP_U_F16(InFmt_VOPC *)
Definition: instructions.cc:11117
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::Inst_MUBUF__BUFFER_STORE_FORMAT_X
Inst_MUBUF__BUFFER_STORE_FORMAT_X(InFmt_MUBUF *)
Definition: instructions.cc:38754
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10570
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2()
Definition: instructions.cc:41130
gem5::VegaISA::Inst_SOP2__S_MIN_I32::~Inst_SOP2__S_MIN_I32
~Inst_SOP2__S_MIN_I32()
Definition: instructions.cc:265
gem5::VegaISA::Inst_DS__DS_WRITE2_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34501
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::Inst_MIMG__IMAGE_ATOMIC_UMIN
Inst_MIMG__IMAGE_ATOMIC_UMIN(InFmt_MIMG *)
Definition: instructions.cc:42330
gem5::VegaISA::Inst_DS__DS_DEC_SRC2_U32::Inst_DS__DS_DEC_SRC2_U32
Inst_DS__DS_DEC_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:37508
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I64::Inst_VOPC__V_CMPX_F_I64
Inst_VOPC__V_CMPX_F_I64(InFmt_VOPC *)
Definition: instructions.cc:16439
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_PCK::Inst_MIMG__IMAGE_STORE_PCK
Inst_MIMG__IMAGE_STORE_PCK(InFmt_MIMG *)
Definition: instructions.cc:42094
gem5::VegaISA::Inst_VOPC__V_CMP_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11629
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE0::Inst_VOP1__V_CVT_F32_UBYTE0
Inst_VOP1__V_CVT_F32_UBYTE0(InFmt_VOP1 *)
Definition: instructions.cc:8700
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD::Inst_MIMG__IMAGE_SAMPLE_CD
Inst_MIMG__IMAGE_SAMPLE_CD(InFmt_MIMG *)
Definition: instructions.cc:43683
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2()
Definition: instructions.cc:41040
gem5::VegaISA::InFmt_SMEM::SDATA
unsigned int SDATA
Definition: gpu_decoder.hh:1735
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U32::Inst_VOPC__V_CMPX_LE_U32
Inst_VOPC__V_CMPX_LE_U32(InFmt_VOPC *)
Definition: instructions.cc:15761
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36610
gem5::VegaISA::Inst_VOP3__V_ADD_U16::~Inst_VOP3__V_ADD_U16
~Inst_VOP3__V_ADD_U16()
Definition: instructions.cc:26834
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1::Inst_MUBUF__BUFFER_WBINVL1
Inst_MUBUF__BUFFER_WBINVL1(InFmt_MUBUF *)
Definition: instructions.cc:40404
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21738
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_CL::~Inst_MIMG__IMAGE_GATHER4_CL
~Inst_MIMG__IMAGE_GATHER4_CL()
Definition: instructions.cc:43215
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12637
gem5::VegaISA::Inst_VOP3__V_RSQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28947
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B16::Inst_VOP3__V_LSHRREV_B16
Inst_VOP3__V_LSHRREV_B16(InFmt_VOP3A *)
Definition: instructions.cc:27049
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL_O::Inst_MIMG__IMAGE_GATHER4_C_B_CL_O
Inst_MIMG__IMAGE_GATHER4_C_B_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43623
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2(InFmt_MUBUF *)
Definition: instructions.cc:41087
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F32::~Inst_VOP3__V_CMP_NGT_F32
~Inst_VOP3__V_CMP_NGT_F32()
Definition: instructions.cc:18695
gem5::VegaISA::Inst_VOPC__V_CMP_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15122
gem5::VegaISA::Inst_VOP3__V_MUL_F16::Inst_VOP3__V_MUL_F16
Inst_VOP3__V_MUL_F16(InFmt_VOP3A *)
Definition: instructions.cc:26784
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5151
gem5::VegaISA::wholeQuadMode
T wholeQuadMode(T val)
Definition: inst_util.hh:89
gem5::VegaISA::Inst_SOPK__S_CMPK_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1874
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22922
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::Inst_MUBUF__BUFFER_ATOMIC_SUB
Inst_MUBUF__BUFFER_ATOMIC_SUB(InFmt_MUBUF *)
Definition: instructions.cc:40604
gem5::VegaISA::Inst_DS__DS_SUB_SRC2_U32::~Inst_DS__DS_SUB_SRC2_U32
~Inst_DS__DS_SUB_SRC2_U32()
Definition: instructions.cc:37447
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41620
gem5::VegaISA::Inst_VOP1__V_CVT_U32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8844
gem5::VegaISA::Inst_DS__DS_MIN_RTN_F32::~Inst_DS__DS_MIN_RTN_F32
~Inst_DS__DS_MIN_RTN_F32()
Definition: instructions.cc:35350
gem5::VegaISA::Inst_VOP3__V_SQRT_F32::~Inst_VOP3__V_SQRT_F32
~Inst_VOP3__V_SQRT_F32()
Definition: instructions.cc:29082
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15810
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I64::~Inst_VOP3__V_CMP_GT_I64
~Inst_VOP3__V_CMP_GT_I64()
Definition: instructions.cc:23999
gem5::VegaISA::Inst_FLAT__FLAT_STORE_SHORT::Inst_FLAT__FLAT_STORE_SHORT
Inst_FLAT__FLAT_STORE_SHORT(InFmt_FLAT *)
Definition: instructions.cc:44331
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_O::~Inst_MIMG__IMAGE_SAMPLE_C_B_O
~Inst_MIMG__IMAGE_SAMPLE_C_B_O()
Definition: instructions.cc:43137
gem5::VegaISA::Inst_VOP2__V_CNDMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6034
gem5::VegaISA::Inst_SOP1__S_QUADMASK_B64::~Inst_SOP1__S_QUADMASK_B64
~Inst_SOP1__S_QUADMASK_B64()
Definition: instructions.cc:3391
gem5::VegaISA::Inst_DS__DS_XOR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35205
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5313
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F64::~Inst_VOP3__V_CMPX_O_F64
~Inst_VOP3__V_CMPX_O_F64()
Definition: instructions.cc:20700
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28196
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U32::~Inst_VOP3__V_CMPX_EQ_U32
~Inst_VOP3__V_CMPX_EQ_U32()
Definition: instructions.cc:23579
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16518
gem5::VegaISA::Inst_VOP3__V_SUB_F16::~Inst_VOP3__V_SUB_F16
~Inst_VOP3__V_SUB_F16()
Definition: instructions.cc:26747
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I32::~Inst_VOPC__V_CMPX_T_I32
~Inst_VOPC__V_CMPX_T_I32()
Definition: instructions.cc:15638
gem5::VegaISA::Inst_SOPP__S_SENDMSGHALT::~Inst_SOPP__S_SENDMSGHALT
~Inst_SOPP__S_SENDMSGHALT()
Definition: instructions.cc:4774
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_L::~Inst_MIMG__IMAGE_GATHER4_C_L
~Inst_MIMG__IMAGE_GATHER4_C_L()
Definition: instructions.cc:43351
gem5::VegaISA::Inst_VOPC__V_CMP_F_U32::Inst_VOPC__V_CMP_F_U32
Inst_VOPC__V_CMP_F_U32(InFmt_VOPC *)
Definition: instructions.cc:15137
gem5::bits
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
Definition: bitfield.hh:76
gem5::VegaISA::Inst_DS__DS_WRITE2ST64_B64::~Inst_DS__DS_WRITE2ST64_B64
~Inst_DS__DS_WRITE2ST64_B64()
Definition: instructions.cc:36600
gem5::VegaISA::Inst_VOP3__V_BFE_I32::Inst_VOP3__V_BFE_I32
Inst_VOP3__V_BFE_I32(InFmt_VOP3A *)
Definition: instructions.cc:30508
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U64::~Inst_VOP3__V_CMPX_LE_U64
~Inst_VOP3__V_CMPX_LE_U64()
Definition: instructions.cc:24941
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F64::~Inst_VOPC__V_CMP_LT_F64
~Inst_VOPC__V_CMP_LT_F64()
Definition: instructions.cc:12761
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::~Inst_SMEM__S_BUFFER_LOAD_DWORDX8
~Inst_SMEM__S_BUFFER_LOAD_DWORDX8()
Definition: instructions.cc:5496
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38039
gem5::VegaISA::Inst_DS__DS_READ_B128::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38588
gem5::VegaISA::Inst_VOP3__V_CMP_F_I64::~Inst_VOP3__V_CMP_F_I64
~Inst_VOP3__V_CMP_F_I64()
Definition: instructions.cc:23838
gem5::VegaISA::InFmt_MUBUF::LDS
unsigned int LDS
Definition: gpu_decoder.hh:1717
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17648
gem5::VegaISA::Inst_VOP1__V_TRUNC_F64::~Inst_VOP1__V_TRUNC_F64
~Inst_VOP1__V_TRUNC_F64()
Definition: instructions.cc:8915
gem5::VegaISA::Inst_DS__DS_DEC_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38128
gem5::VegaISA::Inst_VOP3__V_LSHL_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32423
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F16::~Inst_VOPC__V_CMP_NGE_F16
~Inst_VOPC__V_CMP_NGE_F16()
Definition: instructions.cc:11144
gem5::VegaISA::Inst_SOPP__S_ENDPGM::Inst_SOPP__S_ENDPGM
Inst_SOPP__S_ENDPGM(InFmt_SOPP *)
Definition: instructions.cc:4214
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U32::~Inst_VOPC__V_CMPX_LT_U32
~Inst_VOPC__V_CMPX_LT_U32()
Definition: instructions.cc:15698
gem5::VegaISA::Inst_VOP2__V_ADD_U16::~Inst_VOP2__V_ADD_U16
~Inst_VOP2__V_ADD_U16()
Definition: instructions.cc:7559
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23340
gem5::VegaISA::Inst_VOP3__V_CLREXCP::Inst_VOP3__V_CLREXCP
Inst_VOP3__V_CLREXCP(InFmt_VOP3A *)
Definition: instructions.cc:29665
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F32::Inst_VOPC__V_CMPX_O_F32
Inst_VOPC__V_CMPX_O_F32(InFmt_VOPC *)
Definition: instructions.cc:12401
gem5::VegaISA::InFmt_SMEM::IMM
unsigned int IMM
Definition: gpu_decoder.hh:1740
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
Inst_MUBUF__BUFFER_ATOMIC_ADD_X2(InFmt_MUBUF *)
Definition: instructions.cc:40967
gem5::VegaISA::Inst_VOP2__V_MUL_LO_U16::~Inst_VOP2__V_MUL_LO_U16
~Inst_VOP2__V_MUL_LO_U16()
Definition: instructions.cc:7662
gem5::VegaISA::InFmt_MUBUF::OFFEN
unsigned int OFFEN
Definition: gpu_decoder.hh:1713
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_AND::Inst_FLAT__FLAT_ATOMIC_AND
Inst_FLAT__FLAT_ATOMIC_AND(InFmt_FLAT *)
Definition: instructions.cc:45111
gem5::VegaISA::Inst_VOP3__V_EXP_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30095
gem5::VegaISA::Inst_VOP2::instData
InFmt_VOP2 instData
Definition: op_encodings.hh:270
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F64::~Inst_VOPC__V_CMP_LG_F64
~Inst_VOPC__V_CMP_LG_F64()
Definition: instructions.cc:12897
gem5::VegaISA::Inst_VOP1__V_FRACT_F16::~Inst_VOP1__V_FRACT_F16
~Inst_VOP1__V_FRACT_F16()
Definition: instructions.cc:10312
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20948
gem5::VegaISA::Inst_VOP2__V_MUL_I32_I24::Inst_VOP2__V_MUL_I32_I24
Inst_VOP2__V_MUL_I32_I24(InFmt_VOP2 *)
Definition: instructions.cc:6300
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16658
gem5::VegaISA::Inst_SOP1__S_WQM_B32::Inst_SOP1__S_WQM_B32
Inst_SOP1__S_WQM_B32(InFmt_SOP1 *)
Definition: instructions.cc:2347
gem5::VegaISA::Inst_VOP3__V_XAD_U32::~Inst_VOP3__V_XAD_U32
~Inst_VOP3__V_XAD_U32()
Definition: instructions.cc:32234
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45133
gem5::VegaISA::quadMask
T quadMask(T val)
Definition: inst_util.hh:103
gem5::VegaISA::InFmt_VOP3B::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1828
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41791
gem5::VegaISA::Inst_DS__DS_AND_B64::~Inst_DS__DS_AND_B64
~Inst_DS__DS_AND_B64()
Definition: instructions.cc:36383
gem5::VegaISA::Inst_SOP1__S_FF1_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2652
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_AND::Inst_MUBUF__BUFFER_ATOMIC_AND
Inst_MUBUF__BUFFER_ATOMIC_AND(InFmt_MUBUF *)
Definition: instructions.cc:40754
gem5::VegaISA::Inst_VOP3__V_MOV_FED_B32::~Inst_VOP3__V_MOV_FED_B32
~Inst_VOP3__V_MOV_FED_B32()
Definition: instructions.cc:27885
gem5::VegaISA::InFmt_DS_1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1623
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43124
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ(InFmt_MUBUF *)
Definition: instructions.cc:38818
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45001
gem5::VegaISA::Inst_VOP1__V_CVT_F64_I32::Inst_VOP1__V_CVT_F64_I32
Inst_VOP1__V_CVT_F64_I32(InFmt_VOP1 *)
Definition: instructions.cc:8295
gem5::VegaISA::Inst_VOP2__V_MADAK_F32::~Inst_VOP2__V_MADAK_F32
~Inst_VOP2__V_MADAK_F32()
Definition: instructions.cc:7061
gem5::VegaISA::Inst_SOP1__S_MOVRELD_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3515
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F32::~Inst_VOP3__V_CMP_LG_F32
~Inst_VOP3__V_CMP_LG_F32()
Definition: instructions.cc:18484
gem5::VegaISA::Inst_VOP3__V_TRUNC_F32::~Inst_VOP3__V_TRUNC_F32
~Inst_VOP3__V_TRUNC_F32()
Definition: instructions.cc:28608
gem5::VegaISA::Inst_VOP3__V_LDEXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33458
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F32::Inst_VOPC__V_CMP_LT_F32
Inst_VOPC__V_CMP_LT_F32(InFmt_VOPC *)
Definition: instructions.cc:11644
gem5::VegaISA::Inst_VOP3__V_LERP_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30749
gem5::VegaISA::Inst_SOP1__S_FF1_I32_B32::~Inst_SOP1__S_FF1_I32_B32
~Inst_SOP1__S_FF1_I32_B32()
Definition: instructions.cc:2643
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F16::Inst_VOP3__V_CMPX_F_F16
Inst_VOP3__V_CMPX_F_F16(InFmt_VOP3A *)
Definition: instructions.cc:17934
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F64::~Inst_VOPC__V_CMP_NLG_F64
~Inst_VOPC__V_CMP_NLG_F64()
Definition: instructions.cc:13070
gem5::VegaISA::Inst_SMEM::extData
InFmt_SMEM_1 extData
Definition: op_encodings.hh:254
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_L_O::Inst_MIMG__IMAGE_SAMPLE_C_L_O
Inst_MIMG__IMAGE_SAMPLE_C_L_O(InFmt_MIMG *)
Definition: instructions.cc:43110
gem5::VegaISA::Inst_DS__DS_ADD_U64::initiateAcc
void initiateAcc(GPUDynInstPtr gpuDynInst) override
Definition: instructions.cc:36193
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
Inst_MTBUF__TBUFFER_LOAD_FORMAT_X(InFmt_MTBUF *)
Definition: instructions.cc:41296
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43557
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F64::Inst_VOPC__V_CMPX_GT_F64
Inst_VOPC__V_CMPX_GT_F64(InFmt_VOPC *)
Definition: instructions.cc:13402
gem5::VegaISA::Inst_VOP3__V_BFM_B32::~Inst_VOP3__V_BFM_B32
~Inst_VOP3__V_BFM_B32()
Definition: instructions.cc:33880
gem5::VegaISA::Inst_VOP1__V_CVT_F32_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8341
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX2::~Inst_SMEM__S_LOAD_DWORDX2
~Inst_SMEM__S_LOAD_DWORDX2()
Definition: instructions.cc:5110
gem5::VegaISA::Inst_VOP3__V_RSQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29830
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42236
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14262
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42908
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19489
gem5::VegaISA::Inst_SOPK__S_CMPK_LT_U32::Inst_SOPK__S_CMPK_LT_U32
Inst_SOPK__S_CMPK_LT_U32(InFmt_SOPK *)
Definition: instructions.cc:1888
gem5::VegaISA::Inst_VOP3__V_MED3_F32::Inst_VOP3__V_MED3_F32
Inst_VOP3__V_MED3_F32(InFmt_VOP3A *)
Definition: instructions.cc:31194
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE2::Inst_VOP1__V_CVT_F32_UBYTE2
Inst_VOP1__V_CVT_F32_UBYTE2(InFmt_VOP1 *)
Definition: instructions.cc:8764
gem5::VegaISA::InstFormat::iFmt_VOP_SDWA
InFmt_VOP_SDWA iFmt_VOP_SDWA
Definition: gpu_decoder.hh:1940
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMIN::~Inst_FLAT__FLAT_ATOMIC_SMIN
~Inst_FLAT__FLAT_ATOMIC_SMIN()
Definition: instructions.cc:44915
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I32::~Inst_VOP3__V_CMPX_LE_I32
~Inst_VOP3__V_CMPX_LE_I32()
Definition: instructions.cc:23287
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F64::Inst_VOP3__V_CMP_NGT_F64
Inst_VOP3__V_CMP_NGT_F64(InFmt_VOP3A *)
Definition: instructions.cc:20046
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21286
gem5::VegaISA::Inst_DS__DS_READ2_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37315
gem5::VegaISA::Inst_SOPK__S_SETREG_IMM32_B32::Inst_SOPK__S_SETREG_IMM32_B32
Inst_SOPK__S_SETREG_IMM32_B32(InFmt_SOPK *)
Definition: instructions.cc:2123
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10685
gem5::VegaISA::Inst_VOP3__V_CVT_U32_F32::Inst_VOP3__V_CVT_U32_F32
Inst_VOP3__V_CVT_U32_F32(InFmt_VOP3A *)
Definition: instructions.cc:27761
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_OR::~Inst_MIMG__IMAGE_ATOMIC_OR
~Inst_MIMG__IMAGE_ATOMIC_OR()
Definition: instructions.cc:42462
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_USHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39305
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I64::Inst_VOPC__V_CMPX_NE_I64
Inst_VOPC__V_CMPX_NE_I64(InFmt_VOPC *)
Definition: instructions.cc:16609
gem5::VegaISA::Inst_VOP2__V_SUB_F32::~Inst_VOP2__V_SUB_F32
~Inst_VOP2__V_SUB_F32()
Definition: instructions.cc:6124
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39487
gem5::VegaISA::Inst_DS__DS_WRITE_B16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34943
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U16::~Inst_VOP3__V_CMPX_LT_U16
~Inst_VOP3__V_CMPX_LT_U16()
Definition: instructions.cc:22217
gem5::VegaISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::~Inst_SOP1__S_ORN2_SAVEEXEC_B64
~Inst_SOP1__S_ORN2_SAVEEXEC_B64()
Definition: instructions.cc:3219
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25040
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F16::~Inst_VOP3__V_CMP_NLT_F16
~Inst_VOP3__V_CMP_NLT_F16()
Definition: instructions.cc:17891
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F32::~Inst_VOPC__V_CMPX_O_F32
~Inst_VOPC__V_CMPX_O_F32()
Definition: instructions.cc:12409
gem5::VegaISA::Inst_SOP2__S_SUBB_U32::~Inst_SOP2__S_SUBB_U32
~Inst_SOP2__S_SUBB_U32()
Definition: instructions.cc:232
gem5::VegaISA::Inst_DS__DS_OR_B32::completeAcc
void completeAcc(GPUDynInstPtr gpuDynInst)
Definition: instructions.cc:34336
gem5::VegaISA::Inst_VOP3__V_NOP::~Inst_VOP3__V_NOP
~Inst_VOP3__V_NOP()
Definition: instructions.cc:27541
gem5::VegaISA::Inst_VOP2__V_MIN_F16::Inst_VOP2__V_MIN_F16
Inst_VOP2__V_MIN_F16(InFmt_VOP2 *)
Definition: instructions.cc:7816
gem5::VegaISA::InFmt_VOP_SDWA::SRC0_SEL
unsigned int SRC0_SEL
Definition: gpu_decoder.hh:1861
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::Inst_MIMG__IMAGE_LOAD_PCK_SGN
Inst_MIMG__IMAGE_LOAD_PCK_SGN(InFmt_MIMG *)
Definition: instructions.cc:41932
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B::Inst_MIMG__IMAGE_GATHER4_C_B
Inst_MIMG__IMAGE_GATHER4_C_B(InFmt_MIMG *)
Definition: instructions.cc:43364
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ()
Definition: instructions.cc:38698
gem5::VegaISA::Inst_DS__DS_MAX_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36372
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15505
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_INC::Inst_FLAT__FLAT_ATOMIC_INC
Inst_FLAT__FLAT_ATOMIC_INC(InFmt_FLAT *)
Definition: instructions.cc:45244
gem5::VegaISA::VecElemI64
int64_t VecElemI64
Definition: gpu_registers.hh:169
gem5::VegaISA::Inst_SMEM__S_MEMREALTIME::Inst_SMEM__S_MEMREALTIME
Inst_SMEM__S_MEMREALTIME(InFmt_SMEM *)
Definition: instructions.cc:5964
gem5::VegaISA::Inst_VOP2__V_SUBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8110
gem5::VegaISA::Inst_SOPP__S_DECPERFLEVEL::Inst_SOPP__S_DECPERFLEVEL
Inst_SOPP__S_DECPERFLEVEL(InFmt_SOPP *)
Definition: instructions.cc:4853
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I16::Inst_VOPC__V_CMPX_LE_I16
Inst_VOPC__V_CMPX_LE_I16(InFmt_VOPC *)
Definition: instructions.cc:14443
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13278
gem5::VegaISA::VecOperand::readSrc
void readSrc()
certain vector operands can read from the vrf/srf or constants.
Definition: operand.hh:130
gem5::VegaISA::Inst_VOP3__V_OR3_B32::Inst_VOP3__V_OR3_B32
Inst_VOP3__V_OR3_B32(InFmt_VOP3A *)
Definition: instructions.cc:26264
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15089
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F32::~Inst_VOPC__V_CMP_LE_F32
~Inst_VOPC__V_CMP_LE_F32()
Definition: instructions.cc:11719
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F32::~Inst_VOP3__V_CMP_EQ_F32
~Inst_VOP3__V_CMP_EQ_F32()
Definition: instructions.cc:18379
gem5::VegaISA::Inst_VOP2__V_SUBBREV_CO_U32::~Inst_VOP2__V_SUBBREV_CO_U32
~Inst_VOP2__V_SUBBREV_CO_U32()
Definition: instructions.cc:7356
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F16::~Inst_VOP3__V_CMP_NLE_F16
~Inst_VOP3__V_CMP_NLE_F16()
Definition: instructions.cc:17849
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW(InFmt_MTBUF *)
Definition: instructions.cc:41392
gem5::VegaISA::Inst_MIMG__IMAGE_GET_LOD::~Inst_MIMG__IMAGE_GET_LOD
~Inst_MIMG__IMAGE_GET_LOD()
Definition: instructions.cc:43669
gem5::VegaISA::Inst_SOPK__S_GETREG_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2057
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F64::~Inst_VOP3__V_CMP_GT_F64
~Inst_VOP3__V_CMP_GT_F64()
Definition: instructions.cc:19653
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY()
Definition: instructions.cc:41465
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I64::Inst_VOPC__V_CMPX_T_I64
Inst_VOPC__V_CMPX_T_I64(InFmt_VOPC *)
Definition: instructions.cc:16679
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5392
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U64::~Inst_VOPC__V_CMP_NE_U64
~Inst_VOPC__V_CMP_NE_U64()
Definition: instructions.cc:16351
gem5::VegaISA::Inst_VOP3__V_MOV_FED_B32::Inst_VOP3__V_MOV_FED_B32
Inst_VOP3__V_MOV_FED_B32(InFmt_VOP3A *)
Definition: instructions.cc:27879
gem5::VegaISA::Inst_DS__DS_READ2ST64_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35585
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY()
Definition: instructions.cc:39063
gem5::VegaISA::Inst_VOP3__V_BFREV_B32::~Inst_VOP3__V_BFREV_B32
~Inst_VOP3__V_BFREV_B32()
Definition: instructions.cc:29289
gem5::VegaISA::Inst_VOP3__V_MAX_F16::Inst_VOP3__V_MAX_F16
Inst_VOP3__V_MAX_F16(InFmt_VOP3A *)
Definition: instructions.cc:27145
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41020
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41198
gem5::VegaISA::Inst_SOPP__S_BARRIER::~Inst_SOPP__S_BARRIER
~Inst_SOPP__S_BARRIER()
Definition: instructions.cc:4603
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45294
gem5::VegaISA::Inst_VOP1__V_SIN_F16::Inst_VOP1__V_SIN_F16
Inst_VOP1__V_SIN_F16(InFmt_VOP1 *)
Definition: instructions.cc:10325
gem5::VegaISA::Inst_DS__DS_CMPST_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36680
gem5::VegaISA::Inst_VOP1__V_CVT_FLR_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8597
gem5::VegaISA::Inst_VOP3__V_CVT_F64_U32::Inst_VOP3__V_CVT_F64_U32
Inst_VOP3__V_CVT_F64_U32(InFmt_VOP3A *)
Definition: instructions.cc:28358
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F64::~Inst_VOPC__V_CMPX_NGT_F64
~Inst_VOPC__V_CMPX_NGT_F64()
Definition: instructions.cc:13668
gem5::VegaISA::Inst_SOP1__S_FF0_I32_B32::Inst_SOP1__S_FF0_I32_B32
Inst_SOP1__S_FF0_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2581
gem5::VegaISA::Inst_SOP2__S_LSHR_B32::Inst_SOP2__S_LSHR_B32
Inst_SOP2__S_LSHR_B32(InFmt_SOP2 *)
Definition: instructions.cc:1023
gem5::VegaISA::Inst_SOP2__S_CBRANCH_G_FORK::~Inst_SOP2__S_CBRANCH_G_FORK
~Inst_SOP2__S_CBRANCH_G_FORK()
Definition: instructions.cc:1412
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2()
Definition: instructions.cc:40948
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I16::Inst_VOPC__V_CMP_NE_I16
Inst_VOPC__V_CMP_NE_I16(InFmt_VOPC *)
Definition: instructions.cc:13995
gem5::VegaISA::Inst_VOP3__V_CVT_F16_U16::~Inst_VOP3__V_CVT_F16_U16
~Inst_VOP3__V_CVT_F16_U16()
Definition: instructions.cc:29690
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_RELEASE_ALL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37804
gem5::VegaISA::Inst_VOP3__V_CEIL_F32::~Inst_VOP3__V_CEIL_F32
~Inst_VOP3__V_CEIL_F32()
Definition: instructions.cc:28648
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F64::~Inst_VOP3__V_CMPX_LE_F64
~Inst_VOP3__V_CMPX_LE_F64()
Definition: instructions.cc:20463
gem5::VegaISA::Inst_VOP3__V_CVT_F64_F32::~Inst_VOP3__V_CVT_F64_F32
~Inst_VOP3__V_CVT_F64_F32()
Definition: instructions.cc:28101
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U64::~Inst_VOP3__V_CMP_GT_U64
~Inst_VOP3__V_CMP_GT_U64()
Definition: instructions.cc:24319
gem5::VegaISA::Inst_SOPP__S_DECPERFLEVEL::~Inst_SOPP__S_DECPERFLEVEL
~Inst_SOPP__S_DECPERFLEVEL()
Definition: instructions.cc:4858
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_LZ_O::~Inst_MIMG__IMAGE_GATHER4_C_LZ_O
~Inst_MIMG__IMAGE_GATHER4_C_LZ_O()
Definition: instructions.cc:43650
gem5::VegaISA::Inst_SOPP__S_SET_GPR_IDX_MODE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5040
gem5::Wavefront::wfDynId
uint64_t wfDynId
Definition: wavefront.hh:226
gem5::VegaISA::Inst_SOP2__S_NAND_B64::Inst_SOP2__S_NAND_B64
Inst_SOP2__S_NAND_B64(InFmt_SOP2 *)
Definition: instructions.cc:799
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U16::~Inst_VOPC__V_CMP_EQ_U16
~Inst_VOPC__V_CMP_EQ_U16()
Definition: instructions.cc:14156
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40371
gem5::VegaISA::Inst_VOP3B::instData
InFmt_VOP3B instData
Definition: op_encodings.hh:474
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGUSER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4926
gem5::Wavefront::computeUnit
ComputeUnit * computeUnit
Definition: wavefront.hh:106
gem5::VegaISA::Inst_VOP2__V_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8003
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I32::Inst_VOP3__V_CMPX_GT_I32
Inst_VOP3__V_CMPX_GT_I32(InFmt_VOP3A *)
Definition: instructions.cc:23325
gem5::VegaISA::Inst_SOPK__S_CMPK_LE_U32::~Inst_SOPK__S_CMPK_LE_U32
~Inst_SOPK__S_CMPK_LE_U32()
Definition: instructions.cc:1921
gem5::VegaISA::Inst_SOPP__S_SETKILL::Inst_SOPP__S_SETKILL
Inst_SOPP__S_SETKILL(InFmt_SOPP *)
Definition: instructions.cc:4633
gem5::Wavefront::execMask
VectorMask & execMask()
Definition: wavefront.cc:1407
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18772
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F16::Inst_VOPC__V_CMP_NGE_F16
Inst_VOPC__V_CMP_NGE_F16(InFmt_VOPC *)
Definition: instructions.cc:11137
gem5::VegaISA::Inst_DS__DS_READ_U8::Inst_DS__DS_READ_U8
Inst_DS__DS_READ_U8(InFmt_DS *)
Definition: instructions.cc:35699
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17199
gem5::VegaISA::Inst_VOP3__V_CVT_U16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29740
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U32::Inst_VOPC__V_CMPX_F_U32
Inst_VOPC__V_CMPX_F_U32(InFmt_VOPC *)
Definition: instructions.cc:15661
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15540
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42015
gem5::VegaISA::Inst_DS__DS_INC_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36266
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::~Inst_MUBUF__BUFFER_ATOMIC_SMAX
~Inst_MUBUF__BUFFER_ATOMIC_SMAX()
Definition: instructions.cc:40707
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45323
gem5::VegaISA::Inst_VOPC__V_CMP_O_F16::Inst_VOPC__V_CMP_O_F16
Inst_VOPC__V_CMP_O_F16(InFmt_VOPC *)
Definition: instructions.cc:11097
gem5::VegaISA::InFmt_VOP3B::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1829
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F64::Inst_VOP3__V_CMP_LT_F64
Inst_VOP3__V_CMP_LT_F64(InFmt_VOP3A *)
Definition: instructions.cc:19474
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16588
gem5::VegaISA::Inst_DS__DS_MSKOR_B32::~Inst_DS__DS_MSKOR_B32
~Inst_DS__DS_MSKOR_B32()
Definition: instructions.cc:34368
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41949
gem5::VegaISA::Inst_VOP1__V_EXP_F16::~Inst_VOP1__V_EXP_F16
~Inst_VOP1__V_EXP_F16()
Definition: instructions.cc:10150
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5763
gem5::VegaISA::Inst_DS__DS_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34700
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::~Inst_MIMG__IMAGE_SAMPLE_CD_O
~Inst_MIMG__IMAGE_SAMPLE_CD_O()
Definition: instructions.cc:43771
gem5::VegaISA::Inst_VOP3__V_CVT_F64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28372
gem5::VegaISA::Inst_SOP1__S_BITSET1_B64::Inst_SOP1__S_BITSET1_B64
Inst_SOP1__S_BITSET1_B64(InFmt_SOP1 *)
Definition: instructions.cc:2939
gem5::VegaISA::Inst_SOPP__S_CBRANCH_VCCZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4493
gem5::VegaISA::Inst_VOP2__V_MUL_HI_U32_U24::Inst_VOP2__V_MUL_HI_U32_U24
Inst_VOP2__V_MUL_HI_U32_U24(InFmt_VOP2 *)
Definition: instructions.cc:6401
gem5::VegaISA::Inst_VOP3__V_CMP_F_U16::~Inst_VOP3__V_CMP_F_U16
~Inst_VOP3__V_CMP_F_U16()
Definition: instructions.cc:21526
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F32::~Inst_VOPC__V_CMPX_U_F32
~Inst_VOPC__V_CMPX_U_F32()
Definition: instructions.cc:12447
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F32::Inst_VOP3__V_CMP_EQ_F32
Inst_VOP3__V_CMP_EQ_F32(InFmt_VOP3A *)
Definition: instructions.cc:18371
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F16::~Inst_VOPC__V_CMPX_LE_F16
~Inst_VOPC__V_CMPX_LE_F16()
Definition: instructions.cc:11348
gem5::VegaISA::Inst_VOP1__V_RCP_F64::Inst_VOP1__V_RCP_F64
Inst_VOP1__V_RCP_F64(InFmt_VOP1 *)
Definition: instructions.cc:9363
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_O::Inst_MIMG__IMAGE_SAMPLE_B_O
Inst_MIMG__IMAGE_SAMPLE_B_O(InFmt_MIMG *)
Definition: instructions.cc:42972
gem5::VegaISA::Inst_DS__DS_OR_B64::Inst_DS__DS_OR_B64
Inst_DS__DS_OR_B64(InFmt_DS *)
Definition: instructions.cc:36399
gem5::VegaISA::Inst_SOP1__S_BCNT1_I32_B32::Inst_SOP1__S_BCNT1_I32_B32
Inst_SOP1__S_BCNT1_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2521
gem5::VegaISA::Inst_VOP3__V_FLOOR_F16::~Inst_VOP3__V_FLOOR_F16
~Inst_VOP3__V_FLOOR_F16()
Definition: instructions.cc:29943
gem5::VegaISA::Inst_SOPK__S_SETREG_IMM32_B32::~Inst_SOPK__S_SETREG_IMM32_B32
~Inst_SOPK__S_SETREG_IMM32_B32()
Definition: instructions.cc:2130
gem5::VegaISA::Inst_DS__DS_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34357
gem5::VegaISA::Inst_VOP3__V_ALIGNBIT_B32::~Inst_VOP3__V_ALIGNBIT_B32
~Inst_VOP3__V_ALIGNBIT_B32()
Definition: instructions.cc:30797
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F64::Inst_VOPC__V_CMPX_TRU_F64
Inst_VOPC__V_CMPX_TRU_F64(InFmt_VOPC *)
Definition: instructions.cc:13804
gem5::VegaISA::Inst_DS__DS_READ_U8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35737
gem5::VegaISA::Inst_DS__DS_MSKOR_B64::Inst_DS__DS_MSKOR_B64
Inst_DS__DS_MSKOR_B64(InFmt_DS *)
Definition: instructions.cc:36441
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5336
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_CL_O::~Inst_MIMG__IMAGE_SAMPLE_D_CL_O
~Inst_MIMG__IMAGE_SAMPLE_D_CL_O()
Definition: instructions.cc:42940
gem5::VegaISA::Inst_DS__DS_RSUB_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36245
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F64::~Inst_VOPC__V_CMPX_F_F64
~Inst_VOPC__V_CMPX_F_F64()
Definition: instructions.cc:13271
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D::~Inst_MIMG__IMAGE_SAMPLE_C_D
~Inst_MIMG__IMAGE_SAMPLE_C_D()
Definition: instructions.cc:42764
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14797
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43260
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I32_F32::~Inst_VOP1__V_FREXP_EXP_I32_F32
~Inst_VOP1__V_FREXP_EXP_I32_F32()
Definition: instructions.cc:9871
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F16::Inst_VOP3__V_CMP_CLASS_F16
Inst_VOP3__V_CMP_CLASS_F16(InFmt_VOP3A *)
Definition: instructions.cc:17524
gem5::VegaISA::Inst_DS__DS_WRITE_B32::~Inst_DS__DS_WRITE_B32
~Inst_DS__DS_WRITE_B32()
Definition: instructions.cc:34392
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39625
gem5::VegaISA::Inst_VOP1__V_TRUNC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10277
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F16::Inst_VOPC__V_CMPX_NLT_F16
Inst_VOPC__V_CMPX_NLT_F16(InFmt_VOPC *)
Definition: instructions.cc:11573
gem5::VegaISA::Inst_VOP3__V_SUBBREV_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26685
gem5::VegaISA::Inst_SOPK__S_MOVK_I32::~Inst_SOPK__S_MOVK_I32
~Inst_SOPK__S_MOVK_I32()
Definition: instructions.cc:1570
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::VegaISA::Inst_DS__DS_WRITE_B128::Inst_DS__DS_WRITE_B128
Inst_DS__DS_WRITE_B128(InFmt_DS *)
Definition: instructions.cc:38425
gem5::VegaISA::Inst_VOP1__V_SIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10339
gem5::VegaISA::Inst_DS__DS_MAX_U64::~Inst_DS__DS_MAX_U64
~Inst_DS__DS_MAX_U64()
Definition: instructions.cc:36362
gem5::VegaISA::Inst_VOP2__V_ADD_CO_U32::~Inst_VOP2__V_ADD_CO_U32
~Inst_VOP2__V_ADD_CO_U32()
Definition: instructions.cc:7099
gem5::VegaISA::Inst_VOP3__V_MBCNT_LO_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33631
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F16::~Inst_VOPC__V_CMP_TRU_F16
~Inst_VOPC__V_CMP_TRU_F16()
Definition: instructions.cc:11264
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44741
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39402
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F32::~Inst_VOPC__V_CMPX_LE_F32
~Inst_VOPC__V_CMPX_LE_F32()
Definition: instructions.cc:12264
gem5::VegaISA::Inst_VOP3__V_SUBB_CO_U32::~Inst_VOP3__V_SUBB_CO_U32
~Inst_VOP3__V_SUBB_CO_U32()
Definition: instructions.cc:26620
gem5::VegaISA::Inst_VOP2__V_MIN_U32::Inst_VOP2__V_MIN_U32
Inst_VOP2__V_MIN_U32(InFmt_VOP2 *)
Definition: instructions.cc:6570
gem5::VegaISA::Inst_VOP3__V_CMP_T_I32::Inst_VOP3__V_CMP_T_I32
Inst_VOP3__V_CMP_T_I32(InFmt_VOP3A *)
Definition: instructions.cc:22808
gem5::VegaISA::Inst_VOP1__V_FRACT_F64::~Inst_VOP1__V_FRACT_F64
~Inst_VOP1__V_FRACT_F64()
Definition: instructions.cc:9837
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U16::Inst_VOPC__V_CMP_LT_U16
Inst_VOPC__V_CMP_LT_U16(InFmt_VOPC *)
Definition: instructions.cc:14117
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::~Inst_MUBUF__BUFFER_ATOMIC_UMIN
~Inst_MUBUF__BUFFER_ATOMIC_UMIN()
Definition: instructions.cc:40677
gem5::VegaISA::Inst_DS__DS_SUB_U64::Inst_DS__DS_SUB_U64
Inst_DS__DS_SUB_U64(InFmt_DS *)
Definition: instructions.cc:36208
gem5::VegaISA::Inst_VOP3__V_SUBREV_F32::~Inst_VOP3__V_SUBREV_F32
~Inst_VOP3__V_SUBREV_F32()
Definition: instructions.cc:25326
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11483
gem5::VegaISA::Inst_DS__DS_MIN_RTN_I32::~Inst_DS__DS_MIN_RTN_I32
~Inst_DS__DS_MIN_RTN_I32()
Definition: instructions.cc:35069
gem5::VegaISA::Inst_VOP1__V_RCP_F16::Inst_VOP1__V_RCP_F16
Inst_VOP1__V_RCP_F16(InFmt_VOP1 *)
Definition: instructions.cc:10051
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F16::~Inst_VOPC__V_CMPX_NGE_F16
~Inst_VOPC__V_CMPX_NGE_F16()
Definition: instructions.cc:11476
gem5::VegaISA::Inst_VOP3__V_SUB_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26756
gem5::VegaISA::Inst_SOP1__S_BREV_B32::Inst_SOP1__S_BREV_B32
Inst_SOP1__S_BREV_B32(InFmt_SOP1 *)
Definition: instructions.cc:2409
gem5::VegaISA::Inst_SOP2__S_CSELECT_B32::Inst_SOP2__S_CSELECT_B32
Inst_SOP2__S_CSELECT_B32(InFmt_SOP2 *)
Definition: instructions.cc:387
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F32::Inst_VOP3__V_CMPX_O_F32
Inst_VOP3__V_CMPX_O_F32(InFmt_VOP3A *)
Definition: instructions.cc:19112
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12343
gem5::VegaISA::Inst_EXP
Definition: op_encodings.hh:885
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_RELEASE_ALL::~Inst_DS__DS_GWS_SEMA_RELEASE_ALL
~Inst_DS__DS_GWS_SEMA_RELEASE_ALL()
Definition: instructions.cc:37788
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I64::Inst_VOP3__V_ASHRREV_I64
Inst_VOP3__V_ASHRREV_I64(InFmt_VOP3A *)
Definition: instructions.cc:33803
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23098
gem5::VegaISA::Inst_VOPC__V_CMP_F_U64::~Inst_VOPC__V_CMP_F_U64
~Inst_VOPC__V_CMP_F_U64()
Definition: instructions.cc:16191
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44247
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17814
gem5::Wavefront::decExpInstsIssued
void decExpInstsIssued()
Definition: wavefront.cc:1383
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F32::~Inst_VOPC__V_CMP_NLG_F32
~Inst_VOPC__V_CMP_NLG_F32()
Definition: instructions.cc:11960
gem5::VegaISA::ScalarRegU64
uint64_t ScalarRegU64
Definition: gpu_registers.hh:156
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW()
Definition: instructions.cc:39133
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B::Inst_MIMG__IMAGE_SAMPLE_C_B
Inst_MIMG__IMAGE_SAMPLE_C_B(InFmt_MIMG *)
Definition: instructions.cc:42816
gem5::VegaISA::Inst_DS__DS_SWIZZLE_B32::~Inst_DS__DS_SWIZZLE_B32
~Inst_DS__DS_SWIZZLE_B32()
Definition: instructions.cc:35856
gem5::VegaISA::Inst_VOP1__V_TRUNC_F64::Inst_VOP1__V_TRUNC_F64
Inst_VOP1__V_TRUNC_F64(InFmt_VOP1 *)
Definition: instructions.cc:8908
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F32::Inst_VOPC__V_CMP_LE_F32
Inst_VOPC__V_CMP_LE_F32(InFmt_VOPC *)
Definition: instructions.cc:11712
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F16::~Inst_VOP3__V_CMPX_U_F16
~Inst_VOP3__V_CMPX_U_F16()
Definition: instructions.cc:18129
gem5::VegaISA::InFmt_VOP2
Definition: gpu_decoder.hh:1802
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15740
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3646
gem5::VegaISA::Inst_DS__DS_SWIZZLE_B32::Inst_DS__DS_SWIZZLE_B32
Inst_DS__DS_SWIZZLE_B32(InFmt_DS *)
Definition: instructions.cc:35845
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U32::~Inst_VOP3__V_CMPX_T_U32
~Inst_VOP3__V_CMPX_T_U32()
Definition: instructions.cc:23809
gem5::VegaISA::Inst_VOP2__V_CNDMASK_B32::Inst_VOP2__V_CNDMASK_B32
Inst_VOP2__V_CNDMASK_B32(InFmt_VOP2 *)
Definition: instructions.cc:6019
gem5::VegaISA::Inst_DS__DS_GWS_INIT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37831
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39407
gem5::VegaISA::Inst_DS__DS_ADD_U32::completeAcc
void completeAcc(GPUDynInstPtr gpuDynInst) override
Definition: instructions.cc:34082
gem5::VegaISA::Inst_VOP2__V_CNDMASK_B32::~Inst_VOP2__V_CNDMASK_B32
~Inst_VOP2__V_CNDMASK_B32()
Definition: instructions.cc:6026
gem5::VegaISA::Inst_VOP3__V_MAX_F16::~Inst_VOP3__V_MAX_F16
~Inst_VOP3__V_MAX_F16()
Definition: instructions.cc:27152
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U64::Inst_VOPC__V_CMP_NE_U64
Inst_VOPC__V_CMP_NE_U64(InFmt_VOPC *)
Definition: instructions.cc:16345
gem5::VegaISA::Inst_VOP1__V_RSQ_F64::~Inst_VOP1__V_RSQ_F64
~Inst_VOP1__V_RSQ_F64()
Definition: instructions.cc:9414
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW(InFmt_MTBUF *)
Definition: instructions.cc:41522
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38780
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_B64::Inst_DS__DS_CMPST_RTN_B64
Inst_DS__DS_CMPST_RTN_B64(InFmt_DS *)
Definition: instructions.cc:37099
gem5::VegaISA::Inst_VOP3__V_BFI_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30575
gem5::VegaISA::Inst_VOP2__V_SUBBREV_CO_U32::Inst_VOP2__V_SUBBREV_CO_U32
Inst_VOP2__V_SUBBREV_CO_U32(InFmt_VOP2 *)
Definition: instructions.cc:7348
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38679
gem5::VegaISA::Inst_SOPP__S_DECPERFLEVEL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4865
gem5::VegaISA::Inst_SOP2__S_OR_B64::~Inst_SOP2__S_OR_B64
~Inst_SOP2__S_OR_B64()
Definition: instructions.cc:549
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15056
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B16::~Inst_VOP3__V_LSHRREV_B16
~Inst_VOP3__V_LSHRREV_B16()
Definition: instructions.cc:27055
gem5::VegaISA::Inst_DS__DS_MIN_F32::Inst_DS__DS_MIN_F32
Inst_DS__DS_MIN_F32(InFmt_DS *)
Definition: instructions.cc:34635
gem5::VegaISA::Inst_VOP3__V_DIV_SCALE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31792
gem5::VegaISA::Inst_SOP2__S_BFE_U32::Inst_SOP2__S_BFE_U32
Inst_SOP2__S_BFE_U32(InFmt_SOP2 *)
Definition: instructions.cc:1241
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40777
gem5::VegaISA::Inst_DS__DS_AND_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37635
gem5::VegaISA::Inst_VOP3__V_CMP_F_U16::Inst_VOP3__V_CMP_F_U16
Inst_VOP3__V_CMP_F_U16(InFmt_VOP3A *)
Definition: instructions.cc:21520
gem5::VegaISA::Inst_VOP3__V_SUB_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26478
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11031
gem5::VegaISA::Inst_VOP2__V_MUL_HI_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6414
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F64::Inst_VOP3__V_CMPX_TRU_F64
Inst_VOP3__V_CMPX_TRU_F64(InFmt_VOP3A *)
Definition: instructions.cc:21168
gem5::VegaISA::Inst_VOP2__V_MADMK_F32::~Inst_VOP2__V_MADMK_F32
~Inst_VOP2__V_MADMK_F32()
Definition: instructions.cc:7022
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43932
gem5::VegaISA::Inst_VOP3__V_CVT_PKNORM_U16_F32::Inst_VOP3__V_CVT_PKNORM_U16_F32
Inst_VOP3__V_CVT_PKNORM_U16_F32(InFmt_VOP3A *)
Definition: instructions.cc:33940
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I32::~Inst_VOPC__V_CMPX_F_I32
~Inst_VOPC__V_CMPX_F_I32()
Definition: instructions.cc:15398
gem5::VegaISA::Inst_VOP3__V_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25220
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F32::Inst_VOPC__V_CMPX_GE_F32
Inst_VOPC__V_CMPX_GE_F32(InFmt_VOPC *)
Definition: instructions.cc:12365
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::Inst_FLAT__FLAT_ATOMIC_DEC_X2
Inst_FLAT__FLAT_ATOMIC_DEC_X2(InFmt_FLAT *)
Definition: instructions.cc:45751
gem5::VegaISA::Inst_DS__DS_WRITE_B96::Inst_DS__DS_WRITE_B96
Inst_DS__DS_WRITE_B96(InFmt_DS *)
Definition: instructions.cc:38361
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U64::Inst_VOPC__V_CMP_LE_U64
Inst_VOPC__V_CMP_LE_U64(InFmt_VOPC *)
Definition: instructions.cc:16279
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW()
Definition: instructions.cc:38859
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F32::Inst_VOP3__V_CMPX_LE_F32
Inst_VOP3__V_CMPX_LE_F32(InFmt_VOP3A *)
Definition: instructions.cc:18963
gem5::VegaISA::Inst_SOPC__S_SETVSKIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4103
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F16::~Inst_VOP3__V_CMPX_NLG_F16
~Inst_VOP3__V_CMPX_NLG_F16()
Definition: instructions.cc:18174
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16453
gem5::VegaISA::Inst_VOP3__V_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27895
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::Inst_MUBUF__BUFFER_LOAD_DWORDX3
Inst_MUBUF__BUFFER_LOAD_DWORDX3(InFmt_MUBUF *)
Definition: instructions.cc:39606
gem5::VegaISA::Inst_DS__DS_READ_B128::Inst_DS__DS_READ_B128
Inst_DS__DS_READ_B128(InFmt_DS *)
Definition: instructions.cc:38557
gem5::VegaISA::Inst_DS__DS_WRITE_B8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34787
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F16::Inst_VOPC__V_CMPX_NGE_F16
Inst_VOPC__V_CMPX_NGE_F16(InFmt_VOPC *)
Definition: instructions.cc:11468
gem5::VegaISA::InFmt_SOP2::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1759
gem5::FetchStage::fetchUnit
FetchUnit & fetchUnit(int simdId)
Definition: fetch_stage.hh:66
gem5::VegaISA::Inst_SOP2__S_CSELECT_B64::~Inst_SOP2__S_CSELECT_B64
~Inst_SOP2__S_CSELECT_B64()
Definition: instructions.cc:423
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SSHORT::~Inst_FLAT__FLAT_LOAD_SSHORT
~Inst_FLAT__FLAT_LOAD_SSHORT()
Definition: instructions.cc:44010
gem5::VegaISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::~Inst_SOP1__S_ANDN2_SAVEEXEC_B64
~Inst_SOP1__S_ANDN2_SAVEEXEC_B64()
Definition: instructions.cc:3183
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I64::Inst_VOP3__V_CMPX_F_I64
Inst_VOP3__V_CMPX_F_I64(InFmt_VOP3A *)
Definition: instructions.cc:24472
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41483
gem5::VegaISA::Inst_SOP1__S_WQM_B64::~Inst_SOP1__S_WQM_B64
~Inst_SOP1__S_WQM_B64()
Definition: instructions.cc:2384
gem5::VegaISA::Inst_VOP3__V_LOG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29853
gem5::VegaISA::Inst_VOP3__V_OR_B32::~Inst_VOP3__V_OR_B32
~Inst_VOP3__V_OR_B32()
Definition: instructions.cc:26226
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45513
gem5::VegaISA::Inst_SOP2__S_LSHR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1038
gem5::VegaISA::Inst_VOP3__V_CVT_FLR_I32_F32::~Inst_VOP3__V_CVT_FLR_I32_F32
~Inst_VOP3__V_CVT_FLR_I32_F32()
Definition: instructions.cc:27992
gem5::VegaISA::Inst_DS__DS_MAX_RTN_U64::~Inst_DS__DS_MAX_RTN_U64
~Inst_DS__DS_MAX_RTN_U64()
Definition: instructions.cc:36940
gem5::VegaISA::Inst_VOP3__V_QSAD_PK_U16_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32084
gem5::VegaISA::Inst_VOP2__V_MUL_F16::Inst_VOP2__V_MUL_F16
Inst_VOP2__V_MUL_F16(InFmt_VOP2 *)
Definition: instructions.cc:7459
gem5::VegaISA::VecElemI32
int32_t VecElemI32
Definition: gpu_registers.hh:166
gem5::VegaISA::Inst_VOP2__V_ADD_F32::Inst_VOP2__V_ADD_F32
Inst_VOP2__V_ADD_F32(InFmt_VOP2 *)
Definition: instructions.cc:6057
gem5::VegaISA::Inst_DS__DS_XOR_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38282
gem5::VegaISA::Inst_VOP3__V_CVT_OFF_F32_I4::~Inst_VOP3__V_CVT_OFF_F32_I4
~Inst_VOP3__V_CVT_OFF_F32_I4()
Definition: instructions.cc:28032
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F16::~Inst_VOP3__V_CMP_NGE_F16
~Inst_VOP3__V_CMP_NGE_F16()
Definition: instructions.cc:17786
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F32::Inst_VOP3__V_CMPX_LG_F32
Inst_VOP3__V_CMPX_LG_F32(InFmt_VOP3A *)
Definition: instructions.cc:19037
gem5::GPUDynInstPtr
std::shared_ptr< GPUDynInst > GPUDynInstPtr
Definition: misc.hh:49
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_OR::Inst_FLAT__FLAT_ATOMIC_OR
Inst_FLAT__FLAT_ATOMIC_OR(InFmt_FLAT *)
Definition: instructions.cc:45139
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_O::Inst_MIMG__IMAGE_GATHER4_B_O
Inst_MIMG__IMAGE_GATHER4_B_O(InFmt_MIMG *)
Definition: instructions.cc:43483
gem5::VegaISA::Inst_SOPC__S_CMP_GT_U32::Inst_SOPC__S_CMP_GT_U32
Inst_SOPC__S_CMP_GT_U32(InFmt_SOPC *)
Definition: instructions.cc:3857
gem5::VegaISA::Inst_VOP2__V_ASHRREV_I32::~Inst_VOP2__V_ASHRREV_I32
~Inst_VOP2__V_ASHRREV_I32()
Definition: instructions.cc:6677
gem5::VegaISA::Inst_VOP1__V_FLOOR_F64::Inst_VOP1__V_FLOOR_F64
Inst_VOP1__V_FLOOR_F64(InFmt_VOP1 *)
Definition: instructions.cc:9005
gem5::VegaISA::Inst_VOP2__V_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6795
gem5::VegaISA::Inst_VOP1__V_SIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9530
gem5::VegaISA::Inst_SOPP__S_ICACHE_INV::Inst_SOPP__S_ICACHE_INV
Inst_SOPP__S_ICACHE_INV(InFmt_SOPP *)
Definition: instructions.cc:4814
gem5::VegaISA::Inst_VOP1__V_RSQ_F64::Inst_VOP1__V_RSQ_F64
Inst_VOP1__V_RSQ_F64(InFmt_VOP1 *)
Definition: instructions.cc:9407
gem5::VegaISA::Inst_VOP3__V_FRACT_F32::Inst_VOP3__V_FRACT_F32
Inst_VOP3__V_FRACT_F32(InFmt_VOP3A *)
Definition: instructions.cc:28560
gem5::VegaISA::ScalarRegI64
int64_t ScalarRegI64
Definition: gpu_registers.hh:157
gem5::VegaISA::Inst_VOP2__V_ADD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7409
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43144
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U16::Inst_VOPC__V_CMPX_GT_U16
Inst_VOPC__V_CMPX_GT_U16(InFmt_VOPC *)
Definition: instructions.cc:14748
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::~Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
~Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN()
Definition: instructions.cc:42007
gem5::VegaISA::Inst_VOPC__V_CMP_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14896
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I32::~Inst_VOP3__V_CMP_NE_I32
~Inst_VOP3__V_CMP_NE_I32()
Definition: instructions.cc:22727
gem5::Wavefront::decVMemInstsIssued
void decVMemInstsIssued()
Definition: wavefront.cc:1377
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F32::Inst_VOP3__V_CMPX_NEQ_F32
Inst_VOP3__V_CMPX_NEQ_F32(InFmt_VOP3A *)
Definition: instructions.cc:19339
gem5::VegaISA::Inst_DS__DS_ADD_RTN_U64::~Inst_DS__DS_ADD_RTN_U64
~Inst_DS__DS_ADD_RTN_U64()
Definition: instructions.cc:36770
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F16::~Inst_VOP3__V_CMPX_NGT_F16
~Inst_VOP3__V_CMPX_NGT_F16()
Definition: instructions.cc:18196
gem5::VegaISA::Inst_DS__DS_WRXCHG2_RTN_B32::~Inst_DS__DS_WRXCHG2_RTN_B32
~Inst_DS__DS_WRXCHG2_RTN_B32()
Definition: instructions.cc:35259
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X()
Definition: instructions.cc:41566
gem5::VegaISA::Inst_SOP1__S_SETPC_B64::Inst_SOP1__S_SETPC_B64
Inst_SOP1__S_SETPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2990
gem5::VegaISA::Inst_SOPC__S_CMP_LT_I32::Inst_SOPC__S_CMP_LT_I32
Inst_SOPC__S_CMP_LT_I32(InFmt_SOPC *)
Definition: instructions.cc:3745
gem5::VegaISA::Inst_VOP1__V_READFIRSTLANE_B32::Inst_VOP1__V_READFIRSTLANE_B32
Inst_VOP1__V_READFIRSTLANE_B32(InFmt_VOP1 *)
Definition: instructions.cc:8211
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25132
gem5::VegaISA::Inst_VINTRP__V_INTERP_P2_F32::~Inst_VINTRP__V_INTERP_P2_F32
~Inst_VINTRP__V_INTERP_P2_F32()
Definition: instructions.cc:17015
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5173
gem5::VegaISA::InFmt_SOP2
Definition: gpu_decoder.hh:1758
gem5::VegaISA::Inst_VOP3__V_CMP_F_F64::~Inst_VOP3__V_CMP_F_F64
~Inst_VOP3__V_CMP_F_F64()
Definition: instructions.cc:19452
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::~Inst_MUBUF__BUFFER_WBINVL1_VOL
~Inst_MUBUF__BUFFER_WBINVL1_VOL()
Definition: instructions.cc:40471
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5769
gem5::VegaISA::Inst_DS__DS_XOR_RTN_B64::~Inst_DS__DS_XOR_RTN_B64
~Inst_DS__DS_XOR_RTN_B64()
Definition: instructions.cc:37003
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMIN::Inst_FLAT__FLAT_ATOMIC_UMIN
Inst_FLAT__FLAT_ATOMIC_UMIN(InFmt_FLAT *)
Definition: instructions.cc:44979
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_I64::~Inst_DS__DS_MAX_SRC2_I64
~Inst_DS__DS_MAX_SRC2_I64()
Definition: instructions.cc:38161
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F16::~Inst_VOP3__V_FREXP_MANT_F16
~Inst_VOP3__V_FREXP_MANT_F16()
Definition: instructions.cc:29889
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40269
gem5::VegaISA::Inst_DS__DS_MIN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36309
gem5::VegaISA::Inst_VOP3__V_CVT_F32_U32::~Inst_VOP3__V_CVT_F32_U32
~Inst_VOP3__V_CVT_F32_U32()
Definition: instructions.cc:27728
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25086
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F64::Inst_VOPC__V_CMP_LE_F64
Inst_VOPC__V_CMP_LE_F64(InFmt_VOPC *)
Definition: instructions.cc:12822
gem5::VegaISA::Inst_SOPC__S_CMP_LG_U32::~Inst_SOPC__S_CMP_LG_U32
~Inst_SOPC__S_CMP_LG_U32()
Definition: instructions.cc:3835
gem5::VegaISA::Inst_DS__DS_PERMUTE_B32::Inst_DS__DS_PERMUTE_B32
Inst_DS__DS_PERMUTE_B32(InFmt_DS *)
Definition: instructions.cc:35977
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41686
gem5::VegaISA::Inst_DS__DS_WRAP_RTN_B32::Inst_DS__DS_WRAP_RTN_B32
Inst_DS__DS_WRAP_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35396
gem5::VegaISA::Inst_SOP1__S_ABS_I32::Inst_SOP1__S_ABS_I32
Inst_SOP1__S_ABS_I32(InFmt_SOP1 *)
Definition: instructions.cc:3560
gem5::VegaISA::Inst_SOPP__S_SET_GPR_IDX_OFF::~Inst_SOPP__S_SET_GPR_IDX_OFF
~Inst_SOPP__S_SET_GPR_IDX_OFF()
Definition: instructions.cc:5007
gem5::VegaISA::Inst_FLAT::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, ScalarRegU32 vaddr, ScalarRegU32 saddr, ScalarRegI32 offset)
Definition: op_encodings.hh:1021
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F64::Inst_VOPC__V_CMPX_CLASS_F64
Inst_VOPC__V_CMPX_CLASS_F64(InFmt_VOPC *)
Definition: instructions.cc:10774
gem5::VegaISA::Inst_VOP3__V_SAD_U16::Inst_VOP3__V_SAD_U16
Inst_VOP3__V_SAD_U16(InFmt_VOP3A *)
Definition: instructions.cc:31449
gem5::VegaISA::Inst_SOP2__S_MUL_I32::~Inst_SOP2__S_MUL_I32
~Inst_SOP2__S_MUL_I32()
Definition: instructions.cc:1219
gem5::VegaISA::VecElemU32
uint32_t VecElemU32
Definition: gpu_registers.hh:165
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ()
Definition: instructions.cc:41498
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40657
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U16::~Inst_VOP3__V_CMP_EQ_U16
~Inst_VOP3__V_CMP_EQ_U16()
Definition: instructions.cc:21599
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I64::Inst_VOPC__V_CMPX_LE_I64
Inst_VOPC__V_CMPX_LE_I64(InFmt_VOPC *)
Definition: instructions.cc:16539
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL::~Inst_MIMG__IMAGE_SAMPLE_C_B_CL
~Inst_MIMG__IMAGE_SAMPLE_C_B_CL()
Definition: instructions.cc:42842
gem5::VegaISA::Inst_VOP3__V_DIV_FMAS_F32::~Inst_VOP3__V_DIV_FMAS_F32
~Inst_VOP3__V_DIV_FMAS_F32()
Definition: instructions.cc:31927
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F32::Inst_VOP3__V_CMPX_LT_F32
Inst_VOP3__V_CMPX_LT_F32(InFmt_VOP3A *)
Definition: instructions.cc:18889
gem5::VegaISA::Inst_SOPP__S_CBRANCH_SCC0::~Inst_SOPP__S_CBRANCH_SCC0
~Inst_SOPP__S_CBRANCH_SCC0()
Definition: instructions.cc:4422
gem5::VegaISA::Inst_VOP3__V_CVT_PK_U8_F32::~Inst_VOP3__V_CVT_PK_U8_F32
~Inst_VOP3__V_CVT_PK_U8_F32()
Definition: instructions.cc:31552
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U16::Inst_VOPC__V_CMP_NE_U16
Inst_VOPC__V_CMP_NE_U16(InFmt_VOPC *)
Definition: instructions.cc:14249
gem5::VegaISA::Inst_DS__DS_INC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34145
gem5::VegaISA::Inst_SOP2__S_ORN2_B64::Inst_SOP2__S_ORN2_B64
Inst_SOP2__S_ORN2_B64(InFmt_SOP2 *)
Definition: instructions.cc:735
gem5::VegaISA::Inst_VOP3__V_ADD_LSHL_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32332
gem5::VegaISA::Inst_DS__DS_SUB_SRC2_U64::Inst_DS__DS_SUB_SRC2_U64
Inst_DS__DS_SUB_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:38045
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B32::~Inst_VOP3__V_LSHRREV_B32
~Inst_VOP3__V_LSHRREV_B32()
Definition: instructions.cc:26048
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I16::Inst_VOP3__V_CMPX_T_I16
Inst_VOP3__V_CMPX_T_I16(InFmt_VOP3A *)
Definition: instructions.cc:22147
gem5::VegaISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::Inst_SOP1__S_ORN2_SAVEEXEC_B64
Inst_SOP1__S_ORN2_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3210
gem5::VegaISA::Inst_VOP3__V_CUBEID_F32::~Inst_VOP3__V_CUBEID_F32
~Inst_VOP3__V_CUBEID_F32()
Definition: instructions.cc:30384
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F32::~Inst_VOP3__V_CMPX_LT_F32
~Inst_VOP3__V_CMPX_LT_F32()
Definition: instructions.cc:18898
gem5::VegaISA::Inst_DS__DS_READ_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35477
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F64::Inst_VOPC__V_CMP_LG_F64
Inst_VOPC__V_CMP_LG_F64(InFmt_VOPC *)
Definition: instructions.cc:12890
gem5::VegaISA::Inst_DS__DS_MIN_RTN_U64::~Inst_DS__DS_MIN_RTN_U64
~Inst_DS__DS_MIN_RTN_U64()
Definition: instructions.cc:36919
gem5::VegaISA::Inst_VOP3__V_CEIL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29972
gem5::VegaISA::Inst_VOP3__V_MAX_U32::~Inst_VOP3__V_MAX_U32
~Inst_VOP3__V_MAX_U32()
Definition: instructions.cc:26005
gem5::VegaISA::Inst_DS__DS_READ_B128::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38571
gem5::VegaISA::Inst_SOPK__S_CMPK_GT_I32::~Inst_SOPK__S_CMPK_GT_I32
~Inst_SOPK__S_CMPK_GT_I32()
Definition: instructions.cc:1678
gem5::VegaISA::Inst_VOP3__V_MAD_I32_I24::Inst_VOP3__V_MAD_I32_I24
Inst_VOP3__V_MAD_I32_I24(InFmt_VOP3A *)
Definition: instructions.cc:30283
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F32::Inst_VOP3__V_CMPX_EQ_F32
Inst_VOP3__V_CMPX_EQ_F32(InFmt_VOP3A *)
Definition: instructions.cc:18926
gem5::VegaISA::Inst_VOP1__V_RCP_F32::~Inst_VOP1__V_RCP_F32
~Inst_VOP1__V_RCP_F32()
Definition: instructions.cc:9272
gem5::VegaISA::Inst_VOP3__V_SAD_HI_U8::Inst_VOP3__V_SAD_HI_U8
Inst_VOP3__V_SAD_HI_U8(InFmt_VOP3A *)
Definition: instructions.cc:31399
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F64::~Inst_VOPC__V_CMPX_TRU_F64
~Inst_VOPC__V_CMPX_TRU_F64()
Definition: instructions.cc:13812
gem5::VegaISA::Inst_VOP3__V_MAD_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30297
gem5::VegaISA::Inst_SOP2__S_NAND_B32::~Inst_SOP2__S_NAND_B32
~Inst_SOP2__S_NAND_B32()
Definition: instructions.cc:773
gem5::VegaISA::Inst_VOP2__V_MUL_U32_U24::~Inst_VOP2__V_MUL_U32_U24
~Inst_VOP2__V_MUL_U32_U24()
Definition: instructions.cc:6378
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I64::~Inst_VOP3__V_CMP_GE_I64
~Inst_VOP3__V_CMP_GE_I64()
Definition: instructions.cc:24087
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F64::~Inst_VOP3__V_CMPX_CLASS_F64
~Inst_VOP3__V_CMPX_CLASS_F64()
Definition: instructions.cc:17414
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_U64::~Inst_SOPC__S_CMP_EQ_U64
~Inst_SOPC__S_CMP_EQ_U64()
Definition: instructions.cc:4142
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13819
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F16::Inst_VOP3__V_CMPX_NGT_F16
Inst_VOP3__V_CMPX_NGT_F16(InFmt_VOP3A *)
Definition: instructions.cc:18187
gem5::VegaISA::Inst_SMEM__S_ATC_PROBE_BUFFER::Inst_SMEM__S_ATC_PROBE_BUFFER
Inst_SMEM__S_ATC_PROBE_BUFFER(InFmt_SMEM *)
Definition: instructions.cc:6000
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15705
gem5::VegaISA::Inst_VOP2__V_ADD_CO_U32::Inst_VOP2__V_ADD_CO_U32
Inst_VOP2__V_ADD_CO_U32(InFmt_VOP2 *)
Definition: instructions.cc:7092
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX4::Inst_SMEM__S_LOAD_DWORDX4
Inst_SMEM__S_LOAD_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:5158
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16325
gem5::VegaISA::Inst_VOP3__V_AND_OR_B32::Inst_VOP3__V_AND_OR_B32
Inst_VOP3__V_AND_OR_B32(InFmt_VOP3A *)
Definition: instructions.cc:32456
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B32::Inst_VOP3__V_LSHLREV_B32
Inst_VOP3__V_LSHLREV_B32(InFmt_VOP3A *)
Definition: instructions.cc:26132
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F16::~Inst_VOP3__V_CMPX_GE_F16
~Inst_VOP3__V_CMPX_GE_F16()
Definition: instructions.cc:18084
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F32::~Inst_VOP3__V_CMPX_CLASS_F32
~Inst_VOP3__V_CMPX_CLASS_F32()
Definition: instructions.cc:17179
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F32::Inst_VOP3__V_CMPX_NLT_F32
Inst_VOP3__V_CMPX_NLT_F32(InFmt_VOP3A *)
Definition: instructions.cc:19376
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::Inst_MUBUF__BUFFER_ATOMIC_XOR
Inst_MUBUF__BUFFER_ATOMIC_XOR(InFmt_MUBUF *)
Definition: instructions.cc:40814
gem5::VegaISA::Inst_VOP3__V_WRITELANE_B32::Inst_VOP3__V_WRITELANE_B32
Inst_VOP3__V_WRITELANE_B32(InFmt_VOP3A *)
Definition: instructions.cc:33527
gem5::VegaISA::Inst_DS__DS_WRITE_B64::Inst_DS__DS_WRITE_B64
Inst_DS__DS_WRITE_B64(InFmt_DS *)
Definition: instructions.cc:36463
gem5::VegaISA::Inst_VOP3__V_MUL_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25591
gem5::VegaISA::Inst_VOP3__V_CMP_NEQ_F32::Inst_VOP3__V_CMP_NEQ_F32
Inst_VOP3__V_CMP_NEQ_F32(InFmt_VOP3A *)
Definition: instructions.cc:18757
gem5::VegaISA::Inst_SOP2__S_XOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:621
gem5::VegaISA::Inst_VOP3__V_CMP_T_U32::~Inst_VOP3__V_CMP_T_U32
~Inst_VOP3__V_CMP_T_U32()
Definition: instructions.cc:23134
gem5::VegaISA::Inst_SOPK__S_CMPK_LG_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1658
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW()
Definition: instructions.cc:41531
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24902
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U16::~Inst_VOPC__V_CMP_GT_U16
~Inst_VOPC__V_CMP_GT_U16()
Definition: instructions.cc:14222
gem5::VegaISA::Inst_SOP2__S_BFE_I64::Inst_SOP2__S_BFE_I64
Inst_SOP2__S_BFE_I64(InFmt_SOP2 *)
Definition: instructions.cc:1362
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I16_F16::~Inst_VOP1__V_FREXP_EXP_I16_F16
~Inst_VOP1__V_FREXP_EXP_I16_F16()
Definition: instructions.cc:10201
gem5::VegaISA::Inst_VOP3__V_MAD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32518
gem5::VegaISA::Inst_VOP3__V_MUL_LO_U16::Inst_VOP3__V_MUL_LO_U16
Inst_VOP3__V_MUL_LO_U16(InFmt_VOP3A *)
Definition: instructions.cc:26961
gem5::VegaISA::Inst_VOP3__V_SUBREV_CO_U32::Inst_VOP3__V_SUBREV_CO_U32
Inst_VOP3__V_SUBREV_CO_U32(InFmt_VOP3B *)
Definition: instructions.cc:26508
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45775
gem5::Wavefront::hasBarrier
bool hasBarrier() const
Definition: wavefront.cc:1460
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39111
gem5::VegaISA::Inst_DS__DS_MIN_I64::Inst_DS__DS_MIN_I64
Inst_DS__DS_MIN_I64(InFmt_DS *)
Definition: instructions.cc:36294
gem5::VegaISA::Inst_DS__DS_WRXCHG_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35248
gem5::VegaISA::Inst_VOP2__V_LSHRREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7739
gem5::VegaISA::Inst_VOPC__V_CMP_GT_U32::Inst_VOPC__V_CMP_GT_U32
Inst_VOPC__V_CMP_GT_U32(InFmt_VOPC *)
Definition: instructions.cc:15264
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17434
gem5::GPUDispatcher::notifyWgCompl
void notifyWgCompl(Wavefront *wf)
When an end program instruction detects that the last WF in a WG has completed it will call this meth...
Definition: dispatcher.cc:297
gem5::VegaISA::Inst_VOP3__V_MAX_U32::Inst_VOP3__V_MAX_U32
Inst_VOP3__V_MAX_U32(InFmt_VOP3A *)
Definition: instructions.cc:25999
gem5::VegaISA::Inst_VOP1__V_FLOOR_F16::~Inst_VOP1__V_FLOOR_F16
~Inst_VOP1__V_FLOOR_F16()
Definition: instructions.cc:10227
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U64::~Inst_VOPC__V_CMP_LT_U64
~Inst_VOPC__V_CMP_LT_U64()
Definition: instructions.cc:16219
gem5::VegaISA::Inst_VOP3__V_SAD_U8::Inst_VOP3__V_SAD_U8
Inst_VOP3__V_SAD_U8(InFmt_VOP3A *)
Definition: instructions.cc:31344
gem5::VegaISA::Inst_VOP3__V_SUB_U32::Inst_VOP3__V_SUB_U32
Inst_VOP3__V_SUB_U32(InFmt_VOP3A *)
Definition: instructions.cc:27448
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14357
gem5::VegaISA::InFmt_VOP1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1798
gem5::VegaISA::Inst_DS__DS_MAX_RTN_F64::~Inst_DS__DS_MAX_RTN_F64
~Inst_DS__DS_MAX_RTN_F64()
Definition: instructions.cc:37184
gem5::VegaISA::Inst_VOP1__V_CVT_F16_U16::Inst_VOP1__V_CVT_F16_U16
Inst_VOP1__V_CVT_F16_U16(InFmt_VOP1 *)
Definition: instructions.cc:9967
gem5::VegaISA::Inst_DS__DS_WRITE_B128::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38440
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SWAP::~Inst_FLAT__FLAT_ATOMIC_SWAP
~Inst_FLAT__FLAT_ATOMIC_SWAP()
Definition: instructions.cc:44651
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20470
gem5::VegaISA::Inst_VOP2__V_SUB_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7601
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I64::Inst_VOP3__V_CMP_GT_I64
Inst_VOP3__V_CMP_GT_I64(InFmt_VOP3A *)
Definition: instructions.cc:23992
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13180
gem5::VegaISA::Inst_VOP3__V_INTERP_P1LV_F16::Inst_VOP3__V_INTERP_P1LV_F16
Inst_VOP3__V_INTERP_P1LV_F16(InFmt_VOP3A *)
Definition: instructions.cc:32877
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40171
gem5::VegaISA::Inst_DS__DS_WRITE_B8_D16_HI::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34891
gem5::VegaISA::InFmt_FLAT::OFFSET
unsigned int OFFSET
Definition: gpu_decoder.hh:1644
gem5::VegaISA::Inst_SOP2__S_ADD_U32::~Inst_SOP2__S_ADD_U32
~Inst_SOP2__S_ADD_U32()
Definition: instructions.cc:55
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5865
gem5::RiscvISA::Store
Definition: mem.hh:65
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:45395
gem5::VegaISA::InFmt_SOPC::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1767
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I16::Inst_VOP3__V_ASHRREV_I16
Inst_VOP3__V_ASHRREV_I16(InFmt_VOP3A *)
Definition: instructions.cc:27100
gem5::VegaISA::Inst_VOP3__V_CVT_PK_U16_U32::~Inst_VOP3__V_CVT_PK_U16_U32
~Inst_VOP3__V_CVT_PK_U16_U32()
Definition: instructions.cc:33991
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F32::~Inst_VOPC__V_CMPX_NGT_F32
~Inst_VOPC__V_CMPX_NGT_F32()
Definition: instructions.cc:12558
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43044
gem5::VegaISA::Inst_VOP3__V_MAD_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30176
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27064
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U64::~Inst_VOPC__V_CMP_GE_U64
~Inst_VOPC__V_CMP_GE_U64()
Definition: instructions.cc:16384
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14867
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::Inst_FLAT__FLAT_ATOMIC_SUB_X2
Inst_FLAT__FLAT_ATOMIC_SUB_X2(InFmt_FLAT *)
Definition: instructions.cc:45490
gem5::VegaISA::ScalarOperand::read
void read() override
Definition: operand.hh:408
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_UBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43878
gem5::VegaISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3156
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I32::Inst_VOPC__V_CMP_LE_I32
Inst_VOPC__V_CMP_LE_I32(InFmt_VOPC *)
Definition: instructions.cc:14977
gem5::VegaISA::Inst_VOP1__V_COS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10359
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12836
gem5::VegaISA::Inst_VOP3__V_SUBBREV_CO_U32::Inst_VOP3__V_SUBBREV_CO_U32
Inst_VOP3__V_SUBBREV_CO_U32(InFmt_VOP3B *)
Definition: instructions.cc:26665
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18873
gem5::VegaISA::Inst_VOP1__V_READFIRSTLANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8229
gem5::VegaISA::Inst_VOP2__V_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6484
gem5::VegaISA::Inst_SOP2__S_MUL_I32::Inst_SOP2__S_MUL_I32
Inst_SOP2__S_MUL_I32(InFmt_SOP2 *)
Definition: instructions.cc:1213
gem5::VegaISA::Inst_FLAT::extData
InFmt_FLAT_1 extData
Definition: op_encodings.hh:1085
gem5::VegaISA::Inst_VOP3__V_FMA_F32::Inst_VOP3__V_FMA_F32
Inst_VOP3__V_FMA_F32(InFmt_VOP3A *)
Definition: instructions.cc:30608
gem5::VegaISA::Inst_SOPC__S_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3786
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B::~Inst_MIMG__IMAGE_GATHER4_B
~Inst_MIMG__IMAGE_GATHER4_B()
Definition: instructions.cc:43253
gem5::VegaISA::Inst_SOP2__S_LSHL_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1005
gem5::VegaISA::Inst_SOPP__S_SETPRIO::~Inst_SOPP__S_SETPRIO
~Inst_SOPP__S_SETPRIO()
Definition: instructions.cc:4733
gem5::VegaISA::Inst_DS__DS_SUB_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38061
gem5::VegaISA::Inst_VOP3__V_FFBL_B32::Inst_VOP3__V_FFBL_B32
Inst_VOP3__V_FFBL_B32(InFmt_VOP3A *)
Definition: instructions.cc:29355
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5530
gem5::VegaISA::Inst_DS__DS_READ_U8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35747
gem5::VegaISA::Inst_SOPK__S_CMPK_LE_I32::Inst_SOPK__S_CMPK_LE_I32
Inst_SOPK__S_CMPK_LE_I32(InFmt_SOPK *)
Definition: instructions.cc:1753
instructions.hh
gem5::VegaISA::Inst_DS__DS_ADD_RTN_F32::~Inst_DS__DS_ADD_RTN_F32
~Inst_DS__DS_ADD_RTN_F32()
Definition: instructions.cc:35422
gem5::VegaISA::Inst_SOP2__S_LSHR_B64::Inst_SOP2__S_LSHR_B64
Inst_SOP2__S_LSHR_B64(InFmt_SOP2 *)
Definition: instructions.cc:1056
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18091
gem5::VegaISA::Inst_VOP2__V_ASHRREV_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7774
gem5::VegaISA::Inst_VOP2__V_MADMK_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7032
gem5::VegaISA::ScalarRegI32
int32_t ScalarRegI32
Definition: gpu_registers.hh:154
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::Inst_FLAT__FLAT_ATOMIC_UMIN_X2
Inst_FLAT__FLAT_ATOMIC_UMIN_X2(InFmt_FLAT *)
Definition: instructions.cc:45548
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F64::Inst_VOP3__V_CMP_NLE_F64
Inst_VOP3__V_CMP_NLE_F64(InFmt_VOP3A *)
Definition: instructions.cc:20103
gem5::VegaISA::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:214
gem5::VegaISA::Inst_SOP1__S_QUADMASK_B32::~Inst_SOP1__S_QUADMASK_B32
~Inst_SOP1__S_QUADMASK_B32()
Definition: instructions.cc:3360
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD::~Inst_MIMG__IMAGE_SAMPLE_CD
~Inst_MIMG__IMAGE_SAMPLE_CD()
Definition: instructions.cc:43689
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_I64::Inst_DS__DS_MAX_SRC2_I64
Inst_DS__DS_MAX_SRC2_I64(InFmt_DS *)
Definition: instructions.cc:38156
gem5::VegaISA::Inst_VOP2__V_MUL_HI_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6347
gem5::VegaISA::Inst_SOPK__S_CMOVK_I32::Inst_SOPK__S_CMOVK_I32
Inst_SOPK__S_CMOVK_I32(InFmt_SOPK *)
Definition: instructions.cc:1588
gem5::VegaISA::InFmt_VOP_SDWA::DST_U
unsigned int DST_U
Definition: gpu_decoder.hh:1858
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I32::~Inst_VOPC__V_CMP_LT_I32
~Inst_VOPC__V_CMP_LT_I32()
Definition: instructions.cc:14917
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F32::~Inst_VOP3__V_CMPX_NGT_F32
~Inst_VOP3__V_CMPX_NGT_F32()
Definition: instructions.cc:19274
gem5::VegaISA::Inst_VOP1__V_EXP_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10379
gem5::VegaISA::Inst_VOP1__V_RNDNE_F32::~Inst_VOP1__V_RNDNE_F32
~Inst_VOP1__V_RNDNE_F32()
Definition: instructions.cc:9143
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::~Inst_MUBUF__BUFFER_ATOMIC_INC_X2
~Inst_MUBUF__BUFFER_ATOMIC_INC_X2()
Definition: instructions.cc:41248
gem5::VegaISA::Inst_VINTRP__V_INTERP_P2_F32::Inst_VINTRP__V_INTERP_P2_F32
Inst_VINTRP__V_INTERP_P2_F32(InFmt_VINTRP *)
Definition: instructions.cc:17007
gem5::VegaISA::Inst_VOP3__V_SAD_HI_U8::~Inst_VOP3__V_SAD_HI_U8
~Inst_VOP3__V_SAD_HI_U8()
Definition: instructions.cc:31405
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22070
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:42021
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I32::Inst_VOP3__V_CMPX_LT_I32
Inst_VOP3__V_CMPX_LT_I32(InFmt_VOP3A *)
Definition: instructions.cc:23187
gem5::VegaISA::Inst_VOP1__V_CVT_F16_I16::Inst_VOP1__V_CVT_F16_I16
Inst_VOP1__V_CVT_F16_I16(InFmt_VOP1 *)
Definition: instructions.cc:9988
gem5::VegaISA::Inst_SOPC__S_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3730
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42204
gem5::VegaISA::Inst_DS__DS_WRITE_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34433
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I16::~Inst_VOPC__V_CMPX_NE_I16
~Inst_VOPC__V_CMPX_NE_I16()
Definition: instructions.cc:14520
gem5::VegaISA::Inst_VOP1__V_CVT_F64_U32::Inst_VOP1__V_CVT_F64_U32
Inst_VOP1__V_CVT_F64_U32(InFmt_VOP1 *)
Definition: instructions.cc:8876
gem5::VegaISA::Inst_VOP1__V_CVT_F32_I32::~Inst_VOP1__V_CVT_F32_I32
~Inst_VOP1__V_CVT_F32_I32()
Definition: instructions.cc:8334
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U64::~Inst_VOP3__V_CMP_LT_U64
~Inst_VOP3__V_CMP_LT_U64()
Definition: instructions.cc:24187
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10951
gem5::VegaISA::Inst_VOP3__V_MAC_F32::~Inst_VOP3__V_MAC_F32
~Inst_VOP3__V_MAC_F32()
Definition: instructions.cc:26362
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX8::~Inst_SMEM__S_LOAD_DWORDX8
~Inst_SMEM__S_LOAD_DWORDX8()
Definition: instructions.cc:5219
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U64::~Inst_VOPC__V_CMP_LE_U64
~Inst_VOPC__V_CMP_LE_U64()
Definition: instructions.cc:16285
gem5::VegaISA::Inst_SMEM__S_MEMREALTIME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5976
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I32::~Inst_VOPC__V_CMP_LE_I32
~Inst_VOPC__V_CMP_LE_I32()
Definition: instructions.cc:14983
gem5::VegaISA::Inst_DS__DS_CMPST_B32::Inst_DS__DS_CMPST_B32
Inst_DS__DS_CMPST_B32(InFmt_DS *)
Definition: instructions.cc:34582
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22878
gem5::VegaISA::Inst_VOP3__V_FMA_F16::~Inst_VOP3__V_FMA_F16
~Inst_VOP3__V_FMA_F16()
Definition: instructions.cc:32689
gem5::VegaISA::Inst_DS__DS_WRITE2_B32::Inst_DS__DS_WRITE2_B32
Inst_DS__DS_WRITE2_B32(InFmt_DS *)
Definition: instructions.cc:34448
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_U32::Inst_SOPC__S_CMP_EQ_U32
Inst_SOPC__S_CMP_EQ_U32(InFmt_SOPC *)
Definition: instructions.cc:3801
gem5::VegaISA::Inst_DS__DS_READ_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35487
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U16::Inst_VOPC__V_CMPX_GE_U16
Inst_VOPC__V_CMPX_GE_U16(InFmt_VOPC *)
Definition: instructions.cc:14818
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12802
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX2::Inst_SMEM__S_STORE_DWORDX2
Inst_SMEM__S_STORE_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:5660
panic_if
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
Definition: logging.hh:214
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I32_F32::~Inst_VOP3__V_FREXP_EXP_I32_F32
~Inst_VOP3__V_FREXP_EXP_I32_F32()
Definition: instructions.cc:29572
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U64::~Inst_VOP3__V_CMP_NE_U64
~Inst_VOP3__V_CMP_NE_U64()
Definition: instructions.cc:24363
gem5::VegaISA::Inst_SOP2__S_CSELECT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:400
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F64::~Inst_VOP3__V_CMP_NGT_F64
~Inst_VOP3__V_CMP_NGT_F64()
Definition: instructions.cc:20054
gem5::Wavefront::decLGKMInstsIssued
void decLGKMInstsIssued()
Definition: wavefront.cc:1389
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F64::Inst_VOP3__V_CMPX_NGE_F64
Inst_VOP3__V_CMPX_NGE_F64(InFmt_VOP3A *)
Definition: instructions.cc:20813
gem5::VegaISA::Inst_VOPC__V_CMP_O_F16::~Inst_VOPC__V_CMP_O_F16
~Inst_VOPC__V_CMP_O_F16()
Definition: instructions.cc:11104
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B::~Inst_MIMG__IMAGE_SAMPLE_C_B
~Inst_MIMG__IMAGE_SAMPLE_C_B()
Definition: instructions.cc:42822
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C::~Inst_MIMG__IMAGE_GATHER4_C
~Inst_MIMG__IMAGE_GATHER4_C()
Definition: instructions.cc:43311
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19392
gem5::VegaISA::Inst_VOP1__V_FRACT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9052
gem5::VegaISA::Inst_VOPC__V_CMP_F_I32::~Inst_VOPC__V_CMP_F_I32
~Inst_VOPC__V_CMP_F_I32()
Definition: instructions.cc:14889
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5822
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F64::~Inst_VOP3__V_CMP_LG_F64
~Inst_VOP3__V_CMP_LG_F64()
Definition: instructions.cc:19710
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::Inst_MIMG__IMAGE_STORE_MIP_PCK
Inst_MIMG__IMAGE_STORE_MIP_PCK(InFmt_MIMG *)
Definition: instructions.cc:42125
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45105
gem5::VegaISA::Inst_VOP3__V_MAD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32539
gem5::VegaISA::Inst_VOP2__V_MADAK_F32::Inst_VOP2__V_MADAK_F32
Inst_VOP2__V_MADAK_F32(InFmt_VOP2 *)
Definition: instructions.cc:7053
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12036
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39014
gem5::VegaISA::Inst_VOP3__V_ADDC_CO_U32::~Inst_VOP3__V_ADDC_CO_U32
~Inst_VOP3__V_ADDC_CO_U32()
Definition: instructions.cc:26565
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5253
gem5::Wavefront::barrierId
void barrierId(int bar_id)
Definition: wavefront.cc:1446
gem5::VegaISA::Inst_SOPK__S_CBRANCH_I_FORK::~Inst_SOPK__S_CBRANCH_I_FORK
~Inst_SOPK__S_CBRANCH_I_FORK()
Definition: instructions.cc:2007
gem5::VegaISA::Inst_DS__DS_MIN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36733
gem5::VegaISA::Inst_VOP1__V_RCP_F64::~Inst_VOP1__V_RCP_F64
~Inst_VOP1__V_RCP_F64()
Definition: instructions.cc:9370
gem5::VegaISA::Inst_SOPP__S_INCPERFLEVEL::Inst_SOPP__S_INCPERFLEVEL
Inst_SOPP__S_INCPERFLEVEL(InFmt_SOPP *)
Definition: instructions.cc:4835
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_BR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37887
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F16::Inst_VOP3__V_DIV_FIXUP_F16
Inst_VOP3__V_DIV_FIXUP_F16(InFmt_VOP3A *)
Definition: instructions.cc:32703
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4949
gem5::VegaISA::Inst_VOP3B::extData
InFmt_VOP3_1 extData
Definition: op_encodings.hh:476
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::~Inst_MTBUF__TBUFFER_STORE_FORMAT_X
~Inst_MTBUF__TBUFFER_STORE_FORMAT_X()
Definition: instructions.cc:41433
gem5::VegaISA::Inst_VOP3__V_CMP_GT_I16::Inst_VOP3__V_CMP_GT_I16
Inst_VOP3__V_CMP_GT_I16(InFmt_VOP3A *)
Definition: instructions.cc:21360
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_UBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:43898
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44128
gem5::VegaISA::Inst_SOP2__S_MIN_U32::Inst_SOP2__S_MIN_U32
Inst_SOP2__S_MIN_U32(InFmt_SOP2 *)
Definition: instructions.cc:291
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
Inst_MUBUF__BUFFER_ATOMIC_XOR_X2(InFmt_MUBUF *)
Definition: instructions.cc:41205
gem5::VegaISA::Inst_VOP3__V_SUB_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26886
gem5::VegaISA::Inst_DS__DS_ADD_U64::Inst_DS__DS_ADD_U64
Inst_DS__DS_ADD_U64(InFmt_DS *)
Definition: instructions.cc:36144
gem5::Wavefront::S_RETURNING
@ S_RETURNING
Definition: wavefront.hh:68
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U64::~Inst_VOPC__V_CMPX_GT_U64
~Inst_VOPC__V_CMPX_GT_U64()
Definition: instructions.cc:16851
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_F32::~Inst_DS__DS_MAX_SRC2_F32
~Inst_DS__DS_MAX_SRC2_F32()
Definition: instructions.cc:37740
gem5::VegaISA::Inst_SOP2__S_OR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:557
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40990
gem5::VegaISA::Inst_DS__DS_READ2_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37306
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22362
gem5::VegaISA::Inst_VOP3__V_COS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30075
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U32::Inst_VOP3__V_CMPX_NE_U32
Inst_VOP3__V_CMPX_NE_U32(InFmt_VOP3A *)
Definition: instructions.cc:23709
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41762
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11760
gem5::VegaISA::Inst_VOP2__V_MIN_U32::~Inst_VOP2__V_MIN_U32
~Inst_VOP2__V_MIN_U32()
Definition: instructions.cc:6576
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_BYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39903
gem5::VegaISA::Inst_SOP2__S_SUB_U32::~Inst_SOP2__S_SUB_U32
~Inst_SOP2__S_SUB_U32()
Definition: instructions.cc:89
gem5::VegaISA::Inst_SOP1__S_SEXT_I32_I8::Inst_SOP1__S_SEXT_I32_I8
Inst_SOP1__S_SEXT_I32_I8(InFmt_SOP1 *)
Definition: instructions.cc:2807
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13975
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F32::~Inst_VOP3__V_CMPX_LE_F32
~Inst_VOP3__V_CMPX_LE_F32()
Definition: instructions.cc:18972
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18114
gem5::VegaISA::Inst_SOP2__S_CBRANCH_G_FORK::Inst_SOP2__S_CBRANCH_G_FORK
Inst_SOP2__S_CBRANCH_G_FORK(InFmt_SOP2 *)
Definition: instructions.cc:1406
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F64::Inst_VOPC__V_CMP_NLG_F64
Inst_VOPC__V_CMP_NLG_F64(InFmt_VOPC *)
Definition: instructions.cc:13063
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I16::~Inst_VOPC__V_CMPX_F_I16
~Inst_VOPC__V_CMPX_F_I16()
Definition: instructions.cc:14350
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::~Inst_FLAT__FLAT_ATOMIC_SUB_X2
~Inst_FLAT__FLAT_ATOMIC_SUB_X2()
Definition: instructions.cc:45503
gem5::VegaISA::Inst_SOP2__S_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:64
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17835
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19206
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42829
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F64::Inst_VOPC__V_CMPX_GE_F64
Inst_VOPC__V_CMPX_GE_F64(InFmt_VOPC *)
Definition: instructions.cc:13475
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F32::~Inst_VOPC__V_CMPX_TRU_F32
~Inst_VOPC__V_CMPX_TRU_F32()
Definition: instructions.cc:12702
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::~Inst_MIMG__IMAGE_SAMPLE_CD_CL
~Inst_MIMG__IMAGE_SAMPLE_CD_CL()
Definition: instructions.cc:43709
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I64::Inst_VOPC__V_CMP_LT_I64
Inst_VOPC__V_CMP_LT_I64(InFmt_VOPC *)
Definition: instructions.cc:15959
gem5::VegaISA::Inst_SOPP__S_SENDMSG::Inst_SOPP__S_SENDMSG
Inst_SOPP__S_SENDMSG(InFmt_SOPP *)
Definition: instructions.cc:4749
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F64::Inst_VOPC__V_CMP_GT_F64
Inst_VOPC__V_CMP_GT_F64(InFmt_VOPC *)
Definition: instructions.cc:12856
gem5::VegaISA::Inst_VOP3__V_CEIL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28656
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38748
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U16::~Inst_VOPC__V_CMPX_LT_U16
~Inst_VOPC__V_CMPX_LT_U16()
Definition: instructions.cc:14650
gem5::VegaISA::Inst_SOP1__S_BCNT0_I32_B64::Inst_SOP1__S_BCNT0_I32_B64
Inst_SOP1__S_BCNT0_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2491
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_XOR::~Inst_FLAT__FLAT_ATOMIC_XOR
~Inst_FLAT__FLAT_ATOMIC_XOR()
Definition: instructions.cc:45228
gem5::VegaISA::Inst_VOP3__V_CUBEMA_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30455
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13077
gem5::VegaISA::Inst_VOP3__V_CVT_PKRTZ_F16_F32::Inst_VOP3__V_CVT_PKRTZ_F16_F32
Inst_VOP3__V_CVT_PKRTZ_F16_F32(InFmt_VOP3A *)
Definition: instructions.cc:33961
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41381
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F64::~Inst_VOPC__V_CMPX_NEQ_F64
~Inst_VOPC__V_CMPX_NEQ_F64()
Definition: instructions.cc:13740
gem5::VegaISA::Inst_SOP1__S_SET_GPR_IDX_IDX::~Inst_SOP1__S_SET_GPR_IDX_IDX
~Inst_SOP1__S_SET_GPR_IDX_IDX()
Definition: instructions.cc:3619
gem5::VegaISA::VecOperand::read
void read() override
read from the vrf.
Definition: operand.hh:146
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F16::~Inst_VOP3__V_CMP_EQ_F16
~Inst_VOP3__V_CMP_EQ_F16()
Definition: instructions.cc:17641
gem5::VegaISA::Inst_SOPK__S_CMPK_GE_I32::~Inst_SOPK__S_CMPK_GE_I32
~Inst_SOPK__S_CMPK_GE_I32()
Definition: instructions.cc:1705
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK::Inst_MIMG__IMAGE_LOAD_PCK
Inst_MIMG__IMAGE_LOAD_PCK(InFmt_MIMG *)
Definition: instructions.cc:41901
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_U64::Inst_DS__DS_ADD_SRC2_U64
Inst_DS__DS_ADD_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:38023
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F64::~Inst_VOP3__V_CMPX_GT_F64
~Inst_VOP3__V_CMPX_GT_F64()
Definition: instructions.cc:20522
gem5::VegaISA::Inst_DS__DS_WRITE_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37704
gem5::VegaISA::Inst_DS__DS_MSKOR_RTN_B64::Inst_DS__DS_MSKOR_RTN_B64
Inst_DS__DS_MSKOR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:37019
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23770
gem5::VegaISA::Inst_DS__DS_WRITE_SRC2_B32::~Inst_DS__DS_WRITE_SRC2_B32
~Inst_DS__DS_WRITE_SRC2_B32()
Definition: instructions.cc:37692
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24282
gem5::VegaISA::Inst_VOP3__V_FLOOR_F64::Inst_VOP3__V_FLOOR_F64
Inst_VOP3__V_FLOOR_F64(InFmt_VOP3A *)
Definition: instructions.cc:28519
gem5::VegaISA::Inst_VOP3__V_CMP_U_F32::~Inst_VOP3__V_CMP_U_F32
~Inst_VOP3__V_CMP_U_F32()
Definition: instructions.cc:18588
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17316
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F64::Inst_VOP3__V_CMPX_LG_F64
Inst_VOP3__V_CMPX_LG_F64(InFmt_VOP3A *)
Definition: instructions.cc:20572
gem5::VegaISA::Inst_VOP2__V_MUL_LEGACY_F32::Inst_VOP2__V_MUL_LEGACY_F32
Inst_VOP2__V_MUL_LEGACY_F32(InFmt_VOP2 *)
Definition: instructions.cc:6187
gem5::VegaISA::Inst_SOP1__S_NOT_B32::~Inst_SOP1__S_NOT_B32
~Inst_SOP1__S_NOT_B32()
Definition: instructions.cc:2290
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U16::Inst_VOP3__V_CMPX_LT_U16
Inst_VOP3__V_CMPX_LT_U16(InFmt_VOP3A *)
Definition: instructions.cc:22209
gem5::VegaISA::Inst_VOP3__V_RCP_F16::~Inst_VOP3__V_RCP_F16
~Inst_VOP3__V_RCP_F16()
Definition: instructions.cc:29774
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_L_O::Inst_MIMG__IMAGE_SAMPLE_L_O
Inst_MIMG__IMAGE_SAMPLE_L_O(InFmt_MIMG *)
Definition: instructions.cc:42953
gem5::VegaISA::Inst_VOP3__V_LSHL_OR_B32::~Inst_VOP3__V_LSHL_OR_B32
~Inst_VOP3__V_LSHL_OR_B32()
Definition: instructions.cc:32416
gem5::VegaISA::Inst_VOP3__V_SIN_F16::Inst_VOP3__V_SIN_F16
Inst_VOP3__V_SIN_F16(InFmt_VOP3A *)
Definition: instructions.cc:30041
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_SHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39987
gem5::VegaISA::Inst_VOP3__V_CMP_O_F16::Inst_VOP3__V_CMP_O_F16
Inst_VOP3__V_CMP_O_F16(InFmt_VOP3A *)
Definition: instructions.cc:17738
gem5::VegaISA::InFmt_SOPK
Definition: gpu_decoder.hh:1773
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::Inst_FLAT__FLAT_ATOMIC_CMPSWAP
Inst_FLAT__FLAT_ATOMIC_CMPSWAP(InFmt_FLAT *)
Definition: instructions.cc:44717
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U64::Inst_VOPC__V_CMP_EQ_U64
Inst_VOPC__V_CMP_EQ_U64(InFmt_VOPC *)
Definition: instructions.cc:16246
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43819
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18069
gem5::VegaISA::Inst_SOPP
Definition: op_encodings.hh:160
gem5::VegaISA::Inst_DS__DS_READ_U16::~Inst_DS__DS_READ_U16
~Inst_DS__DS_READ_U16()
Definition: instructions.cc:35790
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40108
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F16::Inst_VOPC__V_CMPX_CLASS_F16
Inst_VOPC__V_CMPX_CLASS_F16(InFmt_VOPC *)
Definition: instructions.cc:10923
gem5::VegaISA::Inst_VOP2__V_XOR_B32::~Inst_VOP2__V_XOR_B32
~Inst_VOP2__V_XOR_B32()
Definition: instructions.cc:6922
gem5::VegaISA::Inst_SOP1__S_BITSET0_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2874
gem5::VegaISA::countZeroBits
ScalarRegI32 countZeroBits(T val)
Definition: inst_util.hh:120
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::Inst_SMEM__S_BUFFER_STORE_DWORDX4
Inst_SMEM__S_BUFFER_STORE_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:5838
gem5::VegaISA::processDPP
void processDPP(GPUDynInstPtr gpuDynInst, InFmt_VOP_DPP dppInst, T &src0)
processDPP is a helper function for implementing Data Parallel Primitive instructions.
Definition: inst_util.hh:422
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F64::~Inst_VOPC__V_CMP_NGE_F64
~Inst_VOPC__V_CMP_NGE_F64()
Definition: instructions.cc:13036
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12380
gem5::VegaISA::Inst_VOP2__V_ADDC_CO_U32::Inst_VOP2__V_ADDC_CO_U32
Inst_VOP2__V_ADDC_CO_U32(InFmt_VOP2 *)
Definition: instructions.cc:7256
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F64::~Inst_VOPC__V_CMPX_LE_F64
~Inst_VOPC__V_CMPX_LE_F64()
Definition: instructions.cc:13374
gem5::VegaISA::Inst_SOP1::instData
InFmt_SOP1 instData
Definition: op_encodings.hh:129
gem5::VegaISA::Inst_VOP3__V_BFE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30475
gem5::VegaISA::Inst_SMEM__S_ATC_PROBE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5994
gem5::VegaISA::Inst_VOP2__V_MUL_HI_I32_I24::Inst_VOP2__V_MUL_HI_I32_I24
Inst_VOP2__V_MUL_HI_I32_I24(InFmt_VOP2 *)
Definition: instructions.cc:6334
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43104
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX3::Inst_FLAT__FLAT_STORE_DWORDX3
Inst_FLAT__FLAT_STORE_DWORDX3(InFmt_FLAT *)
Definition: instructions.cc:44503
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15915
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F32::Inst_VOPC__V_CMPX_U_F32
Inst_VOPC__V_CMPX_U_F32(InFmt_VOPC *)
Definition: instructions.cc:12439
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42888
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I16::Inst_VOP3__V_CMP_LE_I16
Inst_VOP3__V_CMP_LE_I16(InFmt_VOP3A *)
Definition: instructions.cc:21316
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11271
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12601
gem5::VegaISA::Inst_VOP3__V_MUL_F32::Inst_VOP3__V_MUL_F32
Inst_VOP3__V_MUL_F32(InFmt_VOP3A *)
Definition: instructions.cc:25477
gem5::VegaISA::Inst_SOPC__S_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3758
gem5::VegaISA::Inst_SOPC__S_CMP_GE_I32::~Inst_SOPC__S_CMP_GE_I32
~Inst_SOPC__S_CMP_GE_I32()
Definition: instructions.cc:3723
gem5::VegaISA::Inst_VOP3__V_CUBEMA_F32::Inst_VOP3__V_CUBEMA_F32
Inst_VOP3__V_CUBEMA_F32(InFmt_VOP3A *)
Definition: instructions.cc:30440
gem5::VegaISA::Inst_VOP3__V_CMP_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17752
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43318
gem5::Shader::dispatcher
GPUDispatcher & dispatcher()
Definition: shader.cc:99
gem5::VegaISA::Inst_SOP2__S_MAX_I32::Inst_SOP2__S_MAX_I32
Inst_SOP2__S_MAX_I32(InFmt_SOP2 *)
Definition: instructions.cc:323
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O
Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O(InFmt_MIMG *)
Definition: instructions.cc:43825
gem5::VegaISA::Inst_VOP3__V_FRACT_F16::Inst_VOP3__V_FRACT_F16
Inst_VOP3__V_FRACT_F16(InFmt_VOP3A *)
Definition: instructions.cc:30021
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE3::Inst_VOP3__V_CVT_F32_UBYTE3
Inst_VOP3__V_CVT_F32_UBYTE3(InFmt_VOP3A *)
Definition: instructions.cc:28262
gem5::VegaISA::Inst_SOPP__S_TTRACEDATA::~Inst_SOPP__S_TTRACEDATA
~Inst_SOPP__S_TTRACEDATA()
Definition: instructions.cc:4876
gem5::VegaISA::Inst_SOPP__S_SETKILL::~Inst_SOPP__S_SETKILL
~Inst_SOPP__S_SETKILL()
Definition: instructions.cc:4638
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I32_F64::~Inst_VOP3__V_FREXP_EXP_I32_F64
~Inst_VOP3__V_FREXP_EXP_I32_F64()
Definition: instructions.cc:29443
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13711
gem5::VegaISA::Inst_DS__DS_AND_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38238
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F16::Inst_VOPC__V_CMPX_LT_F16
Inst_VOPC__V_CMPX_LT_F16(InFmt_VOPC *)
Definition: instructions.cc:11298
gem5::VegaISA::Inst_VOP1__V_FRACT_F64::Inst_VOP1__V_FRACT_F64
Inst_VOP1__V_FRACT_F64(InFmt_VOP1 *)
Definition: instructions.cc:9830
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_U32::~Inst_SOPC__S_CMP_EQ_U32
~Inst_SOPC__S_CMP_EQ_U32()
Definition: instructions.cc:3807
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::Inst_MUBUF__BUFFER_LOAD_DWORDX2
Inst_MUBUF__BUFFER_LOAD_DWORDX2(InFmt_MUBUF *)
Definition: instructions.cc:39507
gem5::VegaISA::Inst_VOP3__V_MBCNT_HI_U32_B32::~Inst_VOP3__V_MBCNT_HI_U32_B32
~Inst_VOP3__V_MBCNT_HI_U32_B32()
Definition: instructions.cc:33671
gem5::VegaISA::Inst_VOP3__V_MUL_HI_I32_I24::Inst_VOP3__V_MUL_HI_I32_I24
Inst_VOP3__V_MUL_HI_I32_I24(InFmt_VOP3A *)
Definition: instructions.cc:25622
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16292
gem5::VegaISA::Inst_VOP1__V_RNDNE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9150
gem5::VegaISA::Inst_DS__DS_READ_U16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35830
gem5::VegaISA::Inst_VOP3__V_FFBH_I32::~Inst_VOP3__V_FFBH_I32
~Inst_VOP3__V_FFBH_I32()
Definition: instructions.cc:29401
gem5::VegaISA::Inst_VOP3__V_SUBB_CO_U32::Inst_VOP3__V_SUBB_CO_U32
Inst_VOP3__V_SUBB_CO_U32(InFmt_VOP3B *)
Definition: instructions.cc:26612
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20352
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F32::~Inst_VOPC__V_CMP_LG_F32
~Inst_VOPC__V_CMP_LG_F32()
Definition: instructions.cc:11787
gem5::VegaISA::Inst_VOP3__V_MAX_U16::~Inst_VOP3__V_MAX_U16
~Inst_VOP3__V_MAX_U16()
Definition: instructions.cc:27195
gem5::VegaISA::Inst_DS__DS_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34271
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I32::~Inst_VOPC__V_CMPX_GT_I32
~Inst_VOPC__V_CMPX_GT_I32()
Definition: instructions.cc:15533
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41451
gem5::VegaISA::Inst_DS__DS_XOR_RTN_B32::Inst_DS__DS_XOR_RTN_B32
Inst_DS__DS_XOR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35190
gem5::VegaISA::Inst_VOP3__V_ADD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26842
gem5::VegaISA::Inst_VOP2__V_ADD_U32::Inst_VOP2__V_ADD_U32
Inst_VOP2__V_ADD_U32(InFmt_VOP2 *)
Definition: instructions.cc:7990
gem5::VegaISA::Inst_DS__DS_WRITE_B8::~Inst_DS__DS_WRITE_B8
~Inst_DS__DS_WRITE_B8()
Definition: instructions.cc:34779
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41386
gem5::VegaISA::Inst_DS__DS_PERMUTE_B32::~Inst_DS__DS_PERMUTE_B32
~Inst_DS__DS_PERMUTE_B32()
Definition: instructions.cc:35989
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ(InFmt_MUBUF *)
Definition: instructions.cc:38690
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I16::~Inst_VOP3__V_CMP_LE_I16
~Inst_VOP3__V_CMP_LE_I16()
Definition: instructions.cc:21323
gem5::VegaISA::Inst_SOP2__S_CBRANCH_G_FORK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1439
gem5::VegaISA::Inst_DS__DS_DEC_RTN_U32::~Inst_DS__DS_DEC_RTN_U32
~Inst_DS__DS_DEC_RTN_U32()
Definition: instructions.cc:35048
gem5::VegaISA::Inst_SOP2__S_SUBB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:240
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10214
gem5::VegaISA::Inst_VOP3__V_CVT_F32_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27937
gem5::VegaISA::Inst_DS__DS_WRITE_B16::Inst_DS__DS_WRITE_B16
Inst_DS__DS_WRITE_B16(InFmt_DS *)
Definition: instructions.cc:34896
gem5::VegaISA::Inst_SOP1__S_SET_GPR_IDX_IDX::Inst_SOP1__S_SET_GPR_IDX_IDX
Inst_SOP1__S_SET_GPR_IDX_IDX(InFmt_SOP1 *)
Definition: instructions.cc:3613
gem5::VegaISA::Inst_SOP1__S_SWAPPC_B64::~Inst_SOP1__S_SWAPPC_B64
~Inst_SOP1__S_SWAPPC_B64()
Definition: instructions.cc:3021
gem5::VegaISA::Inst_MIMG__IMAGE_GET_LOD::Inst_MIMG__IMAGE_GET_LOD
Inst_MIMG__IMAGE_GET_LOD(InFmt_MIMG *)
Definition: instructions.cc:43663
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41414
gem5::VegaISA::Inst_VOP1__V_CVT_RPI_I32_F32::Inst_VOP1__V_CVT_RPI_I32_F32
Inst_VOP1__V_CVT_RPI_I32_F32(InFmt_VOP1 *)
Definition: instructions.cc:8549
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4::~Inst_MIMG__IMAGE_GATHER4
~Inst_MIMG__IMAGE_GATHER4()
Definition: instructions.cc:43196
gem5::VegaISA::InFmt_VOP3A::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1811
gem5::VegaISA::Inst_SOP2__S_OR_B64::Inst_SOP2__S_OR_B64
Inst_SOP2__S_OR_B64(InFmt_SOP2 *)
Definition: instructions.cc:543
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F32::Inst_VOP3__V_CMPX_NGE_F32
Inst_VOP3__V_CMPX_NGE_F32(InFmt_VOP3A *)
Definition: instructions.cc:19190
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X()
Definition: instructions.cc:41708
gem5::VegaISA::Inst_VOP3__V_MAX_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33204
gem5::VegaISA::Inst_VOP3__V_MIN3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30962
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F16::~Inst_VOP3__V_CMPX_GT_F16
~Inst_VOP3__V_CMPX_GT_F16()
Definition: instructions.cc:18040
gem5::VegaISA::Inst_DS__DS_XOR_B32::Inst_DS__DS_XOR_B32
Inst_DS__DS_XOR_B32(InFmt_DS *)
Definition: instructions.cc:34342
gem5::VegaISA::Inst_SOPK__S_SETREG_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2092
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:43943
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20289
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I32::Inst_VOP3__V_CMPX_EQ_I32
Inst_VOP3__V_CMPX_EQ_I32(InFmt_VOP3A *)
Definition: instructions.cc:23233
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX4::~Inst_SMEM__S_LOAD_DWORDX4
~Inst_SMEM__S_LOAD_DWORDX4()
Definition: instructions.cc:5165
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F64::~Inst_VOP3__V_CMPX_EQ_F64
~Inst_VOP3__V_CMPX_EQ_F64()
Definition: instructions.cc:20404
gem5::VegaISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::Inst_DS__DS_WRXCHG2ST64_RTN_B64
Inst_DS__DS_WRXCHG2ST64_RTN_B64(InFmt_DS *)
Definition: instructions.cc:37080
gem5::VegaISA::Inst_VOP3__V_CVT_U32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27777
gem5::VegaISA::Inst_SOP2__S_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:305
gem5::VegaISA::Inst_VOP1__V_RSQ_F32::Inst_VOP1__V_RSQ_F32
Inst_VOP1__V_RSQ_F32(InFmt_VOP1 *)
Definition: instructions.cc:9331
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::~Inst_MIMG__IMAGE_STORE_MIP_PCK
~Inst_MIMG__IMAGE_STORE_MIP_PCK()
Definition: instructions.cc:42134
gem5::VegaISA::Inst_VOPC__V_CMP_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10971
gem5::VegaISA::Inst_VOP3__V_CEIL_F16::Inst_VOP3__V_CEIL_F16
Inst_VOP3__V_CEIL_F16(InFmt_VOP3A *)
Definition: instructions.cc:29957
gem5::VegaISA::Inst_SOP1__S_MOV_FED_B32::Inst_SOP1__S_MOV_FED_B32
Inst_SOP1__S_MOV_FED_B32(InFmt_SOP1 *)
Definition: instructions.cc:3593
gem5::VegaISA::Inst_VOP3__V_COS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29215
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX2::~Inst_FLAT__FLAT_LOAD_DWORDX2
~Inst_FLAT__FLAT_LOAD_DWORDX2()
Definition: instructions.cc:44095
gem5::VegaISA::InFmt_DS_1::DATA1
unsigned int DATA1
Definition: gpu_decoder.hh:1622
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F32::Inst_VOP3__V_CMP_NGE_F32
Inst_VOP3__V_CMP_NGE_F32(InFmt_VOP3A *)
Definition: instructions.cc:18616
gem5::VegaISA::Inst_VOPC__V_CMP_F_U32::~Inst_VOPC__V_CMP_F_U32
~Inst_VOPC__V_CMP_F_U32()
Definition: instructions.cc:15143
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I64::Inst_VOP3__V_CMPX_T_I64
Inst_VOP3__V_CMPX_T_I64(InFmt_VOP3A *)
Definition: instructions.cc:24779
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14387
gem5::VegaISA::Inst_VOP3__V_MIN_U32::Inst_VOP3__V_MIN_U32
Inst_VOP3__V_MIN_U32(InFmt_VOP3A *)
Definition: instructions.cc:25956
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14832
gem5::SparcISA::Branch
Base class for branch operations.
Definition: branch.hh:48
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F64::Inst_VOPC__V_CMPX_NLG_F64
Inst_VOPC__V_CMPX_NLG_F64(InFmt_VOPC *)
Definition: instructions.cc:13623
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_L::~Inst_MIMG__IMAGE_GATHER4_L
~Inst_MIMG__IMAGE_GATHER4_L()
Definition: instructions.cc:43234
gem5::VegaISA::Inst_VOP3__V_SQRT_F16::~Inst_VOP3__V_SQRT_F16
~Inst_VOP3__V_SQRT_F16()
Definition: instructions.cc:29797
gem5::VegaISA::Inst_VOPC__V_CMPX_T_I64::~Inst_VOPC__V_CMPX_T_I64
~Inst_VOPC__V_CMPX_T_I64()
Definition: instructions.cc:16686
gem5::VegaISA::Inst_VOP3__V_RCP_F16::Inst_VOP3__V_RCP_F16
Inst_VOP3__V_RCP_F16(InFmt_VOP3A *)
Definition: instructions.cc:29767
gem5::VegaISA::Inst_VINTRP__V_INTERP_MOV_F32::Inst_VINTRP__V_INTERP_MOV_F32
Inst_VINTRP__V_INTERP_MOV_F32(InFmt_VINTRP *)
Definition: instructions.cc:17033
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40567
gem5::VegaISA::Inst_SOPP__S_BARRIER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4615
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP::Inst_MIMG__IMAGE_LOAD_MIP
Inst_MIMG__IMAGE_LOAD_MIP(InFmt_MIMG *)
Definition: instructions.cc:41870
gem5::VegaISA::Inst_VOP3__V_CMP_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24165
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP(InFmt_MUBUF *)
Definition: instructions.cc:40542
gem5::VegaISA::Inst_DS__DS_MAX_I32::~Inst_DS__DS_MAX_I32
~Inst_DS__DS_MAX_I32()
Definition: instructions.cc:34198
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I64::Inst_VOP3__V_CMP_NE_I64
Inst_VOP3__V_CMP_NE_I64(InFmt_VOP3A *)
Definition: instructions.cc:24036
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX8::Inst_SMEM__S_LOAD_DWORDX8
Inst_SMEM__S_LOAD_DWORDX8(InFmt_SMEM *)
Definition: instructions.cc:5212
gem5::VegaISA::Inst_VOP3__V_MUL_HI_U32::~Inst_VOP3__V_MUL_HI_U32
~Inst_VOP3__V_MUL_HI_U32()
Definition: instructions.cc:33358
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U64::Inst_VOP3__V_CMPX_GT_U64
Inst_VOP3__V_CMPX_GT_U64(InFmt_VOP3A *)
Definition: instructions.cc:24979
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::~Inst_MUBUF__BUFFER_ATOMIC_ADD
~Inst_MUBUF__BUFFER_ATOMIC_ADD()
Definition: instructions.cc:40587
gem5::VegaISA::Inst_SOPK__S_MULK_I32::Inst_SOPK__S_MULK_I32
Inst_SOPK__S_MULK_I32(InFmt_SOPK *)
Definition: instructions.cc:1974
gem5::VegaISA::Inst_SOP2__S_MUL_HI_I32::~Inst_SOP2__S_MUL_HI_I32
~Inst_SOP2__S_MUL_HI_I32()
Definition: instructions.cc:1538
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42078
gem5::VegaISA::Inst_DS__DS_OR_SRC2_B32::Inst_DS__DS_OR_SRC2_B32
Inst_DS__DS_OR_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:37641
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14562
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD::Inst_MIMG__IMAGE_LOAD
Inst_MIMG__IMAGE_LOAD(InFmt_MIMG *)
Definition: instructions.cc:41839
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_INC::~Inst_MUBUF__BUFFER_ATOMIC_INC
~Inst_MUBUF__BUFFER_ATOMIC_INC()
Definition: instructions.cc:40857
gem5::VegaISA::Inst_VOP3__V_DIV_SCALE_F32::Inst_VOP3__V_DIV_SCALE_F32
Inst_VOP3__V_DIV_SCALE_F32(InFmt_VOP3B *)
Definition: instructions.cc:31772
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42324
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_F64::~Inst_DS__DS_MAX_SRC2_F64
~Inst_DS__DS_MAX_SRC2_F64()
Definition: instructions.cc:38343
gem5::VegaISA::Inst_VOP1__V_CLREXCP::Inst_VOP1__V_CLREXCP
Inst_VOP1__V_CLREXCP(InFmt_VOP1 *)
Definition: instructions.cc:9948
gem5::VegaISA::Inst_VOP3__V_CMP_F_I64::Inst_VOP3__V_CMP_F_I64
Inst_VOP3__V_CMP_F_I64(InFmt_VOP3A *)
Definition: instructions.cc:23832
gem5::VegaISA::Inst_VOP3__V_BFREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29297
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_B32::Inst_SOP1__S_FLBIT_I32_B32
Inst_SOP1__S_FLBIT_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2693
gem5::VegaISA::Inst_VOP3__V_MAC_F16::Inst_VOP3__V_MAC_F16
Inst_VOP3__V_MAC_F16(InFmt_VOP3A *)
Definition: instructions.cc:26805
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X(InFmt_MTBUF *)
Definition: instructions.cc:41699
gem5::VegaISA::Inst_VOP1__V_EXP_LEGACY_F32::~Inst_VOP1__V_EXP_LEGACY_F32
~Inst_VOP1__V_EXP_LEGACY_F32()
Definition: instructions.cc:10372
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMAX::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:45060
gem5::VegaISA::Inst_VOP1__V_CVT_I32_F32::~Inst_VOP1__V_CVT_I32_F32
~Inst_VOP1__V_CVT_I32_F32()
Definition: instructions.cc:8446
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F32::Inst_VOP3__V_CMPX_TRU_F32
Inst_VOP3__V_CMPX_TRU_F32(InFmt_VOP3A *)
Definition: instructions.cc:19413
gem5::VegaISA::Inst_DS__DS_DEC_U64::Inst_DS__DS_DEC_U64
Inst_DS__DS_DEC_U64(InFmt_DS *)
Definition: instructions.cc:36272
gem5::VegaISA::Inst_VOP3__V_OR3_B32::~Inst_VOP3__V_OR3_B32
~Inst_VOP3__V_OR3_B32()
Definition: instructions.cc:26270
gem5::VegaISA::Inst_SOP2__S_ABSDIFF_I32::~Inst_SOP2__S_ABSDIFF_I32
~Inst_SOP2__S_ABSDIFF_I32()
Definition: instructions.cc:1451
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16038
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44067
gem5::VegaISA::Inst_VOP3__V_MUL_LO_U16::~Inst_VOP3__V_MUL_LO_U16
~Inst_VOP3__V_MUL_LO_U16()
Definition: instructions.cc:26967
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5860
gem5::VegaISA::Inst_VOPC__V_CMP_NLE_F32::~Inst_VOPC__V_CMP_NLE_F32
~Inst_VOPC__V_CMP_NLE_F32()
Definition: instructions.cc:12029
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD::Inst_FLAT__FLAT_ATOMIC_ADD
Inst_FLAT__FLAT_ATOMIC_ADD(InFmt_FLAT *)
Definition: instructions.cc:44799
gem5::VegaISA::Inst_DS__DS_WRITE_B8::Inst_DS__DS_WRITE_B8
Inst_DS__DS_WRITE_B8(InFmt_DS *)
Definition: instructions.cc:34772
gem5::VegaISA::Inst_VOP3__V_INTERP_P1LL_F16::Inst_VOP3__V_INTERP_P1LL_F16
Inst_VOP3__V_INTERP_P1LL_F16(InFmt_VOP3A *)
Definition: instructions.cc:32848
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::Inst_MIMG__IMAGE_SAMPLE_D_CL
Inst_MIMG__IMAGE_SAMPLE_D_CL(InFmt_MIMG *)
Definition: instructions.cc:42621
gem5::X86ISA::selector
Bitfield< 31, 16 > selector
Definition: misc.hh:1010
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43338
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::~Inst_MIMG__IMAGE_SAMPLE_LZ_O
~Inst_MIMG__IMAGE_SAMPLE_LZ_O()
Definition: instructions.cc:43018
gem5::VegaISA::Inst_VOP3__V_MAD_I16::~Inst_VOP3__V_MAD_I16
~Inst_VOP3__V_MAD_I16()
Definition: instructions.cc:32578
gem5::VegaISA::Inst_VOP3__V_SAD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31464
gem5::VegaISA::Inst_SOP2__S_ORN2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:749
gem5::Wavefront::S_WAITCNT
@ S_WAITCNT
wavefront has unsatisfied wait counts
Definition: wavefront.hh:88
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3814
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5199
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_U64::Inst_VOPC__V_CMPX_LT_U64
Inst_VOPC__V_CMPX_LT_U64(InFmt_VOPC *)
Definition: instructions.cc:16739
gem5::VegaISA::Inst_VOP3__V_CEIL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28453
gem5::VegaISA::Inst_SOPK__S_MOVK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1577
gem5::VegaISA::Inst_DS__DS_MAX_RTN_I32::Inst_DS__DS_MAX_RTN_I32
Inst_DS__DS_MAX_RTN_I32(InFmt_DS *)
Definition: instructions.cc:35085
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY()
Definition: instructions.cc:41336
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39784
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F16::Inst_VOPC__V_CMPX_NGT_F16
Inst_VOPC__V_CMPX_NGT_F16(InFmt_VOPC *)
Definition: instructions.cc:11510
gem5::VegaISA::Inst_DS__DS_RSUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34124
gem5::VegaISA::Inst_VOP3__V_READLANE_B32::Inst_VOP3__V_READLANE_B32
Inst_VOP3__V_READLANE_B32(InFmt_VOP3A *)
Definition: instructions.cc:33486
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29930
gem5::VegaISA::Inst_SOPP__S_CBRANCH_EXECZ::~Inst_SOPP__S_CBRANCH_EXECZ
~Inst_SOPP__S_CBRANCH_EXECZ()
Definition: instructions.cc:4548
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B64::Inst_VOP3__V_LSHRREV_B64
Inst_VOP3__V_LSHRREV_B64(InFmt_VOP3A *)
Definition: instructions.cc:33758
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_OR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45687
gem5::VegaISA::Inst_DS__DS_MAX_RTN_I64::~Inst_DS__DS_MAX_RTN_I64
~Inst_DS__DS_MAX_RTN_I64()
Definition: instructions.cc:36898
gem5::VegaISA::Inst_VOP3__V_CVT_I32_F32::~Inst_VOP3__V_CVT_I32_F32
~Inst_VOP3__V_CVT_I32_F32()
Definition: instructions.cc:27824
gem5::VegaISA::InFmt_SOP2::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1761
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F32::~Inst_VOPC__V_CMPX_NLE_F32
~Inst_VOPC__V_CMPX_NLE_F32()
Definition: instructions.cc:12594
gem5::VegaISA::Inst_SOP1__S_MOVRELS_B32::~Inst_SOP1__S_MOVRELS_B32
~Inst_SOP1__S_MOVRELS_B32()
Definition: instructions.cc:3422
gem5::VegaISA::Inst_SOP1__S_AND_SAVEEXEC_B64::Inst_SOP1__S_AND_SAVEEXEC_B64
Inst_SOP1__S_AND_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3066
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U16::~Inst_VOPC__V_CMPX_LE_U16
~Inst_VOPC__V_CMPX_LE_U16()
Definition: instructions.cc:14720
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43637
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F64::~Inst_VOPC__V_CMP_EQ_F64
~Inst_VOPC__V_CMP_EQ_F64()
Definition: instructions.cc:12795
gem5::VegaISA::Inst_DS__DS_MIN_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35121
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:44925
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I16_F16::Inst_VOP3__V_FREXP_EXP_I16_F16
Inst_VOP3__V_FREXP_EXP_I16_F16(InFmt_VOP3A *)
Definition: instructions.cc:29909
gem5::VegaISA::Inst_VOP2__V_MIN_I32::~Inst_VOP2__V_MIN_I32
~Inst_VOP2__V_MIN_I32()
Definition: instructions.cc:6510
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42732
gem5::VegaISA::Inst_VOP3__V_MUL_HI_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25635
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I32::~Inst_VOP3__V_CMPX_F_I32
~Inst_VOP3__V_CMPX_F_I32()
Definition: instructions.cc:23164
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F64::~Inst_VOPC__V_CMP_GE_F64
~Inst_VOPC__V_CMP_GE_F64()
Definition: instructions.cc:12932
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_AND::Inst_MIMG__IMAGE_ATOMIC_AND
Inst_MIMG__IMAGE_ATOMIC_AND(InFmt_MIMG *)
Definition: instructions.cc:42420
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40867
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U16::Inst_VOPC__V_CMP_GE_U16
Inst_VOPC__V_CMP_GE_U16(InFmt_VOPC *)
Definition: instructions.cc:14282
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5833
gem5::VegaISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::~Inst_DS__DS_WRXCHG2ST64_RTN_B64
~Inst_DS__DS_WRXCHG2ST64_RTN_B64()
Definition: instructions.cc:37086
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45629
gem5::VegaISA::Inst_MIMG__IMAGE_STORE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42046
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C::Inst_MIMG__IMAGE_SAMPLE_C
Inst_MIMG__IMAGE_SAMPLE_C(InFmt_MIMG *)
Definition: instructions.cc:42719
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE1::~Inst_VOP3__V_CVT_F32_UBYTE1
~Inst_VOP3__V_CVT_F32_UBYTE1()
Definition: instructions.cc:28189
gem5::VegaISA::Inst_SOPK__S_GETREG_B32::Inst_SOPK__S_GETREG_B32
Inst_SOPK__S_GETREG_B32(InFmt_SOPK *)
Definition: instructions.cc:2041
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U64::Inst_VOP3__V_CMP_LE_U64
Inst_VOP3__V_CMP_LE_U64(InFmt_VOP3A *)
Definition: instructions.cc:24268
gem5::VegaISA::Inst_VOP3__V_MIN3_U32::Inst_VOP3__V_MIN3_U32
Inst_VOP3__V_MIN3_U32(InFmt_VOP3A *)
Definition: instructions.cc:30995
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23586
gem5::VegaISA::Inst_VOP2__V_OR_B32::~Inst_VOP2__V_OR_B32
~Inst_VOP2__V_OR_B32()
Definition: instructions.cc:6847
gem5::VegaISA::Inst_MIMG__IMAGE_GET_LOD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43677
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43358
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL::Inst_MIMG__IMAGE_SAMPLE_C_B_CL
Inst_MIMG__IMAGE_SAMPLE_C_B_CL(InFmt_MIMG *)
Definition: instructions.cc:42835
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I64::Inst_VOP3__V_CMP_LT_I64
Inst_VOP3__V_CMP_LT_I64(InFmt_VOP3A *)
Definition: instructions.cc:23860
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11313
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5790
gem5::VegaISA::Inst_SOP1__S_FF0_I32_B32::~Inst_SOP1__S_FF0_I32_B32
~Inst_SOP1__S_FF0_I32_B32()
Definition: instructions.cc:2587
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_CL::Inst_MIMG__IMAGE_GATHER4_B_CL
Inst_MIMG__IMAGE_GATHER4_B_CL(InFmt_MIMG *)
Definition: instructions.cc:43266
gem5::VegaISA::Inst_DS__DS_WRXCHG_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37056
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21330
gem5::VegaISA::InFmt_VOP3A::ABS
unsigned int ABS
Definition: gpu_decoder.hh:1812
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ_O::Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
Inst_MIMG__IMAGE_SAMPLE_C_LZ_O(InFmt_MIMG *)
Definition: instructions.cc:43170
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11462
gem5::VegaISA::Inst_DS__DS_DEC_SRC2_U64::Inst_DS__DS_DEC_SRC2_U64
Inst_DS__DS_DEC_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:38111
gem5::VegaISA::Inst_DS__DS_ADD_U64::completeAcc
void completeAcc(GPUDynInstPtr gpuDynInst) override
Definition: instructions.cc:36203
gem5::VegaISA::Inst_VOPC__V_CMP_F_F32::Inst_VOPC__V_CMP_F_F32
Inst_VOPC__V_CMP_F_F32(InFmt_VOPC *)
Definition: instructions.cc:11615
gem5::MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:243
gem5::VegaISA::Inst_VOP3__V_TRIG_PREOP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33868
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::Inst_MUBUF__BUFFER_LOAD_UBYTE
Inst_MUBUF__BUFFER_LOAD_UBYTE(InFmt_MUBUF *)
Definition: instructions.cc:39159
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11011
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::Inst_MUBUF__BUFFER_ATOMIC_DEC
Inst_MUBUF__BUFFER_ATOMIC_DEC(InFmt_MUBUF *)
Definition: instructions.cc:40874
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS::~Inst_SOPP__S_CBRANCH_CDBGSYS
~Inst_SOPP__S_CBRANCH_CDBGSYS()
Definition: instructions.cc:4896
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39047
gem5::VegaISA::Inst_VOP3__V_RCP_IFLAG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28907
gem5::VegaISA::Inst_SOP2__S_NOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:877
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F16::Inst_VOPC__V_CMP_NLG_F16
Inst_VOPC__V_CMP_NLG_F16(InFmt_VOPC *)
Definition: instructions.cc:11157
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_O::~Inst_MIMG__IMAGE_SAMPLE_C_CD_O
~Inst_MIMG__IMAGE_SAMPLE_C_CD_O()
Definition: instructions.cc:43812
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U16::Inst_VOP3__V_CMP_EQ_U16
Inst_VOP3__V_CMP_EQ_U16(InFmt_VOP3A *)
Definition: instructions.cc:21592
gem5::VegaISA::Inst_SOP1__S_CMOV_B32::~Inst_SOP1__S_CMOV_B32
~Inst_SOP1__S_CMOV_B32()
Definition: instructions.cc:2228
gem5::VegaISA::Inst_VOP3__V_CLREXCP::~Inst_VOP3__V_CLREXCP
~Inst_VOP3__V_CLREXCP()
Definition: instructions.cc:29670
gem5::VegaISA::Inst_SOP2__S_XNOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:909
gem5::VegaISA::Inst_VOP3__V_CUBESC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30413
gem5::VegaISA::Inst_VOPC__V_CMP_F_U16::Inst_VOPC__V_CMP_F_U16
Inst_VOPC__V_CMP_F_U16(InFmt_VOPC *)
Definition: instructions.cc:14089
gem5::VegaISA::Inst_FLAT__FLAT_STORE_SHORT::~Inst_FLAT__FLAT_STORE_SHORT
~Inst_FLAT__FLAT_STORE_SHORT()
Definition: instructions.cc:44338
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42927
gem5::VegaISA::Inst_FLAT__FLAT_STORE_BYTE::Inst_FLAT__FLAT_STORE_BYTE
Inst_FLAT__FLAT_STORE_BYTE(InFmt_FLAT *)
Definition: instructions.cc:44274
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F16::~Inst_VOPC__V_CMP_LT_F16
~Inst_VOPC__V_CMP_LT_F16()
Definition: instructions.cc:10984
gem5::VegaISA::Inst_VOP2__V_MUL_F32::~Inst_VOP2__V_MUL_F32
~Inst_VOP2__V_MUL_F32()
Definition: instructions.cc:6228
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_F64::~Inst_DS__DS_MIN_SRC2_F64
~Inst_DS__DS_MIN_SRC2_F64()
Definition: instructions.cc:38319
gem5::VegaISA::Inst_VOP1__V_TRUNC_F16::Inst_VOP1__V_TRUNC_F16
Inst_VOP1__V_TRUNC_F16(InFmt_VOP1 *)
Definition: instructions.cc:10262
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::Inst_MUBUF__BUFFER_STORE_FORMAT_XY
Inst_MUBUF__BUFFER_STORE_FORMAT_XY(InFmt_MUBUF *)
Definition: instructions.cc:38786
gem5::VegaISA::Inst_VOP3__V_FFBH_I32::Inst_VOP3__V_FFBH_I32
Inst_VOP3__V_FFBH_I32(InFmt_VOP3A *)
Definition: instructions.cc:29395
gem5::VegaISA::Inst_DS__DS_READ2ST64_B32::Inst_DS__DS_READ2ST64_B32
Inst_DS__DS_READ2ST64_B32(InFmt_DS *)
Definition: instructions.cc:35569
gem5::ComputeUnit::maxBarrierCnt
int maxBarrierCnt(int bar_id)
Definition: compute_unit.cc:686
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2()
Definition: instructions.cc:45342
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORD::~Inst_MUBUF__BUFFER_STORE_DWORD
~Inst_MUBUF__BUFFER_STORE_DWORD()
Definition: instructions.cc:40011
gem5::VegaISA::InFmt_VOP_SDWA::SRC0_ABS
unsigned int SRC0_ABS
Definition: gpu_decoder.hh:1864
gem5::VegaISA::Inst_VOP3__V_EXP_F16::~Inst_VOP3__V_EXP_F16
~Inst_VOP3__V_EXP_F16()
Definition: instructions.cc:29866
gem5::VegaISA::Inst_DS__DS_SUB_U32::~Inst_DS__DS_SUB_U32
~Inst_DS__DS_SUB_U32()
Definition: instructions.cc:34092
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22646
gem5::VegaISA::Inst_VOP3__V_LDEXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27399
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I16::Inst_VOPC__V_CMPX_LT_I16
Inst_VOPC__V_CMPX_LT_I16(InFmt_VOPC *)
Definition: instructions.cc:14373
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15610
gem5::VegaISA::Inst_SOP1__S_BREV_B32::~Inst_SOP1__S_BREV_B32
~Inst_SOP1__S_BREV_B32()
Definition: instructions.cc:2415
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21125
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_F64::Inst_DS__DS_MAX_SRC2_F64
Inst_DS__DS_MAX_SRC2_F64(InFmt_DS *)
Definition: instructions.cc:38337
hwreg_defines.hh
gem5::VegaISA::Inst_VOP3__V_SQRT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29807
gem5::VegaISA::muladd
VecElemU32 muladd(VecElemU64 &dst, VecElemU32 val_0, VecElemU32 val_1, VecElemU64 val_2)
Definition: inst_util.hh:271
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D::Inst_MIMG__IMAGE_SAMPLE_D
Inst_MIMG__IMAGE_SAMPLE_D(InFmt_MIMG *)
Definition: instructions.cc:42602
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X(InFmt_MUBUF *)
Definition: instructions.cc:39021
gem5::VegaISA::Inst_SOPC__S_SET_GPR_IDX_ON::~Inst_SOPC__S_SET_GPR_IDX_ON
~Inst_SOPC__S_SET_GPR_IDX_ON()
Definition: instructions.cc:4114
gem5::VegaISA::Inst_DS__DS_ORDERED_COUNT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38017
gem5::VegaISA::Inst_DS__DS_XOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36435
gem5::VegaISA::Inst_VOP3__V_MAX3_F32::Inst_VOP3__V_MAX3_F32
Inst_VOP3__V_MAX3_F32(InFmt_VOP3A *)
Definition: instructions.cc:31041
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F32::~Inst_VOP3__V_CMPX_EQ_F32
~Inst_VOP3__V_CMPX_EQ_F32()
Definition: instructions.cc:18935
gem5::VegaISA::Inst_VINTRP__V_INTERP_MOV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17048
gem5::VegaISA::Inst_VOP3__V_TRUNC_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28412
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2()
Definition: instructions.cc:41278
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:42153
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23632
gem5::VegaISA::Inst_VOP3__V_CMPX_T_I64::~Inst_VOP3__V_CMPX_T_I64
~Inst_VOP3__V_CMPX_T_I64()
Definition: instructions.cc:24787
gem5::VegaISA::Inst_DS__DS_GWS_INIT::Inst_DS__DS_GWS_INIT
Inst_DS__DS_GWS_INIT(InFmt_DS *)
Definition: instructions.cc:37810
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE3::~Inst_VOP1__V_CVT_F32_UBYTE3
~Inst_VOP1__V_CVT_F32_UBYTE3()
Definition: instructions.cc:8803
gem5::VegaISA::Inst_DS__DS_WRITE2_B64::~Inst_DS__DS_WRITE2_B64
~Inst_DS__DS_WRITE2_B64()
Definition: instructions.cc:36533
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_U64::Inst_SOPC__S_CMP_EQ_U64
Inst_SOPC__S_CMP_EQ_U64(InFmt_SOPC *)
Definition: instructions.cc:4136
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22558
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_CL_O::~Inst_MIMG__IMAGE_GATHER4_C_CL_O
~Inst_MIMG__IMAGE_GATHER4_C_CL_O()
Definition: instructions.cc:43570
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22224
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F64::Inst_VOP3__V_CMPX_LT_F64
Inst_VOP3__V_CMPX_LT_F64(InFmt_VOP3A *)
Definition: instructions.cc:20336
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44241
gem5::VegaISA::Inst_VOP2__V_MADAK_F16::~Inst_VOP2__V_MADAK_F16
~Inst_VOP2__V_MADAK_F16()
Definition: instructions.cc:7536
gem5::VegaISA::Inst_VOP3__V_EXP_F32::Inst_VOP3__V_EXP_F32
Inst_VOP3__V_EXP_F32(InFmt_VOP3A *)
Definition: instructions.cc:28763
gem5::VegaISA::Inst_VOP2__V_MUL_HI_I32_I24::~Inst_VOP2__V_MUL_HI_I32_I24
~Inst_VOP2__V_MUL_HI_I32_I24()
Definition: instructions.cc:6340
gem5::VegaISA::Inst_SOP2__S_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:525
gem5::VegaISA::VecOperand::write
void write() override
write to the vrf.
Definition: operand.hh:198
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::~Inst_SMEM__S_BUFFER_LOAD_DWORDX4
~Inst_SMEM__S_BUFFER_LOAD_DWORDX4()
Definition: instructions.cc:5440
gem5::VegaISA::Inst_SOPP__S_SENDMSG::~Inst_SOPP__S_SENDMSG
~Inst_SOPP__S_SENDMSG()
Definition: instructions.cc:4754
gem5::VegaISA::Inst_VOP3__V_MAX3_U32::~Inst_VOP3__V_MAX3_U32
~Inst_VOP3__V_MAX3_U32()
Definition: instructions.cc:31154
gem5::VegaISA::Inst_VOP1__V_COS_F16::Inst_VOP1__V_COS_F16
Inst_VOP1__V_COS_F16(InFmt_VOP1 *)
Definition: instructions.cc:10345
gem5::VegaISA::Inst_VOP1__V_NOP::~Inst_VOP1__V_NOP
~Inst_VOP1__V_NOP()
Definition: instructions.cc:8137
gem5::VegaISA::Inst_SMEM__S_ATC_PROBE_BUFFER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6013
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_U64::~Inst_VOPC__V_CMP_EQ_U64
~Inst_VOPC__V_CMP_EQ_U64()
Definition: instructions.cc:16252
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F16::Inst_VOP3__V_CMP_EQ_F16
Inst_VOP3__V_CMP_EQ_F16(InFmt_VOP3A *)
Definition: instructions.cc:17633
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38899
gem5::VegaISA::Inst_DS__DS_OR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36992
gem5::VegaISA::Inst_DS__DS_XOR_B64::~Inst_DS__DS_XOR_B64
~Inst_DS__DS_XOR_B64()
Definition: instructions.cc:36425
gem5::VegaISA::Inst_VOP3__V_AND_OR_B32::~Inst_VOP3__V_AND_OR_B32
~Inst_VOP3__V_AND_OR_B32()
Definition: instructions.cc:32462
gem5::VegaISA::Inst_VOP3__V_CMP_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17856
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F16::~Inst_VOPC__V_CMP_LE_F16
~Inst_VOPC__V_CMP_LE_F16()
Definition: instructions.cc:11024
gem5::VegaISA::Inst_VOP1__V_CVT_U32_F32::Inst_VOP1__V_CVT_U32_F32
Inst_VOP1__V_CVT_U32_F32(InFmt_VOP1 *)
Definition: instructions.cc:8391
gem5::VegaISA::Inst_SOP2__S_BFE_U32::~Inst_SOP2__S_BFE_U32
~Inst_SOP2__S_BFE_U32()
Definition: instructions.cc:1247
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43657
gem5::VegaISA::Inst_SMEM__S_STORE_DWORD::Inst_SMEM__S_STORE_DWORD
Inst_SMEM__S_STORE_DWORD(InFmt_SMEM *)
Definition: instructions.cc:5600
gem5::VegaISA::Inst_DS__DS_READ_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37252
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS::Inst_SOPP__S_CBRANCH_CDBGSYS
Inst_SOPP__S_CBRANCH_CDBGSYS(InFmt_SOPP *)
Definition: instructions.cc:4889
gem5::VegaISA::Inst_VOP2__V_MUL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7474
gem5::VegaISA::Inst_SOP2__S_MIN_I32::Inst_SOP2__S_MIN_I32
Inst_SOP2__S_MIN_I32(InFmt_SOP2 *)
Definition: instructions.cc:259
gem5::VegaISA::Inst_DS__DS_WRITE_B16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34953
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41289
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::~Inst_FLAT__FLAT_ATOMIC_XOR_X2
~Inst_FLAT__FLAT_ATOMIC_XOR_X2()
Definition: instructions.cc:45706
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I32::Inst_VOP3__V_CMPX_F_I32
Inst_VOP3__V_CMPX_F_I32(InFmt_VOP3A *)
Definition: instructions.cc:23156
gem5::VegaISA::Inst_VOP2__V_LSHRREV_B32::~Inst_VOP2__V_LSHRREV_B32
~Inst_VOP2__V_LSHRREV_B32()
Definition: instructions.cc:6642
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41322
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I32::Inst_VOP3__V_CMP_EQ_I32
Inst_VOP3__V_CMP_EQ_I32(InFmt_VOP3A *)
Definition: instructions.cc:22588
gem5::VegaISA::Inst_DS__DS_READ2ST64_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35608
gem5::VegaISA::Inst_VOP1__V_CVT_F16_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9982
gem5::VegaISA::Inst_DS__DS_READ2ST64_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37373
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U64::~Inst_VOP3__V_CMPX_LT_U64
~Inst_VOP3__V_CMPX_LT_U64()
Definition: instructions.cc:24849
gem5::VegaISA::InFmt_VOP_SDWA::SRC1_NEG
unsigned int SRC1_NEG
Definition: gpu_decoder.hh:1869
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45542
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U16::~Inst_VOP3__V_CMP_LE_U16
~Inst_VOP3__V_CMP_LE_U16()
Definition: instructions.cc:21643
gem5::VegaISA::Inst_SOPK__S_CMPK_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1631
gem5::VegaISA::Inst_VOP1__V_FFBH_U32::~Inst_VOP1__V_FFBH_U32
~Inst_VOP1__V_FFBH_U32()
Definition: instructions.cc:9664
gem5::VegaISA::Inst_DS__DS_RSUB_U64::~Inst_DS__DS_RSUB_U64
~Inst_DS__DS_RSUB_U64()
Definition: instructions.cc:36234
gem5::VegaISA::Inst_VOP2__V_MAX_U32::~Inst_VOP2__V_MAX_U32
~Inst_VOP2__V_MAX_U32()
Definition: instructions.cc:6609
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::Inst_MUBUF__BUFFER_ATOMIC_SWAP
Inst_MUBUF__BUFFER_ATOMIC_SWAP(InFmt_MUBUF *)
Definition: instructions.cc:40512
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F16::~Inst_VOPC__V_CMP_NLT_F16
~Inst_VOPC__V_CMP_NLT_F16()
Definition: instructions.cc:11244
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5090
gem5::VegaISA::Inst_SOPP__S_TRAP::Inst_SOPP__S_TRAP
Inst_SOPP__S_TRAP(InFmt_SOPP *)
Definition: instructions.cc:4787
gem5::VegaISA::Inst_VOP1__V_CVT_F16_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10003
gem5::VegaISA::Inst_DS__DS_SUB_RTN_U64::~Inst_DS__DS_SUB_RTN_U64
~Inst_DS__DS_SUB_RTN_U64()
Definition: instructions.cc:36791
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40377
gem5::VegaISA::Inst_VOP2__V_LSHLREV_B16::Inst_VOP2__V_LSHLREV_B16
Inst_VOP2__V_LSHLREV_B16(InFmt_VOP2 *)
Definition: instructions.cc:7690
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15845
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U32::Inst_VOP3__V_CMPX_LT_U32
Inst_VOP3__V_CMPX_LT_U32(InFmt_VOP3A *)
Definition: instructions.cc:23525
gem5::VegaISA::Inst_DS__DS_OR_RTN_B64::Inst_DS__DS_OR_RTN_B64
Inst_DS__DS_OR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:36977
gem5::VegaISA::Inst_VOP1__V_RNDNE_F16::~Inst_VOP1__V_RNDNE_F16
~Inst_VOP1__V_RNDNE_F16()
Definition: instructions.cc:10290
gem5::VegaISA::Inst_VOP1__V_SIN_F32::~Inst_VOP1__V_SIN_F32
~Inst_VOP1__V_SIN_F32()
Definition: instructions.cc:9521
gem5::VegaISA::Inst_VOP3__V_MUL_LO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33320
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F64::Inst_VOP3__V_CMP_LE_F64
Inst_VOP3__V_CMP_LE_F64(InFmt_VOP3A *)
Definition: instructions.cc:19588
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8714
gem5::VegaISA::Inst_DS__DS_XOR_SRC2_B32::Inst_DS__DS_XOR_SRC2_B32
Inst_DS__DS_XOR_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:37663
gem5::VegaISA::Inst_VOP3__V_CMP_U_F64::Inst_VOP3__V_CMP_U_F64
Inst_VOP3__V_CMP_U_F64(InFmt_VOP3A *)
Definition: instructions.cc:19874
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ()
Definition: instructions.cc:41637
gem5::VegaISA::Inst_SOPP__S_SENDMSG::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4763
gem5::VegaISA::Inst_DS__DS_ADD_F32::initiateAcc
void initiateAcc(GPUDynInstPtr gpuDynInst) override
Definition: instructions.cc:34757
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I64::~Inst_VOP3__V_CMP_NE_I64
~Inst_VOP3__V_CMP_NE_I64()
Definition: instructions.cc:24043
gem5::VegaISA::Inst_DS__DS_OR_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37657
gem5::VegaISA::Inst_VOP3__V_CMPX_NEQ_F16::~Inst_VOP3__V_CMPX_NEQ_F16
~Inst_VOP3__V_CMPX_NEQ_F16()
Definition: instructions.cc:18240
gem5::VegaISA::Inst_VOPC__V_CMP_T_I64::~Inst_VOPC__V_CMP_T_I64
~Inst_VOPC__V_CMP_T_I64()
Definition: instructions.cc:16163
gem5::VegaISA::Inst_VOP2__V_MUL_U32_U24::Inst_VOP2__V_MUL_U32_U24
Inst_VOP2__V_MUL_U32_U24(InFmt_VOP2 *)
Definition: instructions.cc:6372
gem5::VegaISA::Inst_SOP1__S_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3607
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I16::~Inst_VOPC__V_CMP_GE_I16
~Inst_VOPC__V_CMP_GE_I16()
Definition: instructions.cc:14034
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F64::Inst_VOP3__V_FREXP_MANT_F64
Inst_VOP3__V_FREXP_MANT_F64(InFmt_VOP3A *)
Definition: instructions.cc:29482
gem5::VegaISA::Inst_VOP3__V_CMP_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21505
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20588
gem5::VegaISA::Inst_SOP1__S_BCNT1_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2535
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_USHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39354
gem5::VegaISA::VecOperand::negModifier
void negModifier()
Definition: operand.hh:249
gem5::VegaISA::Inst_VOP3__V_CVT_F16_U16::Inst_VOP3__V_CVT_F16_U16
Inst_VOP3__V_CVT_F16_U16(InFmt_VOP3A *)
Definition: instructions.cc:29683
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I64::~Inst_VOPC__V_CMP_LT_I64
~Inst_VOPC__V_CMP_LT_I64()
Definition: instructions.cc:15965
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F32::Inst_VOPC__V_CMPX_CLASS_F32
Inst_VOPC__V_CMPX_CLASS_F32(InFmt_VOPC *)
Definition: instructions.cc:10543
gem5::VegaISA::Inst_VOP3__V_ADDC_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26576
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13248
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_I64::~Inst_VOP3__V_CMP_EQ_I64
~Inst_VOP3__V_CMP_EQ_I64()
Definition: instructions.cc:23911
gem5::VegaISA::Inst_VOP2__V_MAX_U32::Inst_VOP2__V_MAX_U32
Inst_VOP2__V_MAX_U32(InFmt_VOP2 *)
Definition: instructions.cc:6603
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42694
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38355
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F64::~Inst_VOP3__V_CMP_NLT_F64
~Inst_VOP3__V_CMP_NLT_F64()
Definition: instructions.cc:20225
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U32::~Inst_VOP3__V_CMPX_GE_U32
~Inst_VOP3__V_CMPX_GE_U32()
Definition: instructions.cc:23763
gem5::VegaISA::Inst_SOP1__S_SEXT_I32_I8::~Inst_SOP1__S_SEXT_I32_I8
~Inst_SOP1__S_SEXT_I32_I8()
Definition: instructions.cc:2813
gem5::VegaISA::Inst_VOP2__V_AND_B32::~Inst_VOP2__V_AND_B32
~Inst_VOP2__V_AND_B32()
Definition: instructions.cc:6787
gem5::VegaISA::Inst_VOP1__V_FFBH_U32::Inst_VOP1__V_FFBH_U32
Inst_VOP1__V_FFBH_U32(InFmt_VOP1 *)
Definition: instructions.cc:9658
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5307
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I16::~Inst_VOP3__V_ASHRREV_I16
~Inst_VOP3__V_ASHRREV_I16()
Definition: instructions.cc:27106
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23540
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28276
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41478
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41982
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_F64::Inst_VOP3__V_CMPX_LE_F64
Inst_VOP3__V_CMPX_LE_F64(InFmt_VOP3A *)
Definition: instructions.cc:20454
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39432
gem5::VegaISA::Inst_DS__DS_XOR_SRC2_B64::~Inst_DS__DS_XOR_SRC2_B64
~Inst_DS__DS_XOR_SRC2_B64()
Definition: instructions.cc:38271
gem5::Wavefront::WavefrontStats::readsPerWrite
statistics::Distribution readsPerWrite
Definition: wavefront.hh:376
gem5::VegaISA::Inst_DS__DS_READ_B96::Inst_DS__DS_READ_B96
Inst_DS__DS_READ_B96(InFmt_DS *)
Definition: instructions.cc:38493
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40506
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::~Inst_FLAT__FLAT_ATOMIC_INC_X2
~Inst_FLAT__FLAT_ATOMIC_INC_X2()
Definition: instructions.cc:45735
gem5::VegaISA::Inst_VOPC__V_CMP_GE_F32::~Inst_VOPC__V_CMP_GE_F32
~Inst_VOPC__V_CMP_GE_F32()
Definition: instructions.cc:11822
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F32::Inst_VOPC__V_CMPX_NGT_F32
Inst_VOPC__V_CMPX_NGT_F32(InFmt_VOPC *)
Definition: instructions.cc:12550
gem5::VegaISA::Inst_VOPC__V_CMP_F_F64::Inst_VOPC__V_CMP_F_F64
Inst_VOPC__V_CMP_F_F64(InFmt_VOPC *)
Definition: instructions.cc:12725
gem5::VegaISA::Inst_SOP2__S_ADDC_U32::~Inst_SOP2__S_ADDC_U32
~Inst_SOP2__S_ADDC_U32()
Definition: instructions.cc:197
gem5::VegaISA::Inst_DS__DS_INC_U64::~Inst_DS__DS_INC_U64
~Inst_DS__DS_INC_U64()
Definition: instructions.cc:36256
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20829
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL::~Inst_MIMG__IMAGE_GATHER4_C_B_CL
~Inst_MIMG__IMAGE_GATHER4_C_B_CL()
Definition: instructions.cc:43391
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I32::~Inst_VOP3__V_CMPX_GT_I32
~Inst_VOP3__V_CMPX_GT_I32()
Definition: instructions.cc:23333
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I32::~Inst_VOP3__V_CMP_LE_I32
~Inst_VOP3__V_CMP_LE_I32()
Definition: instructions.cc:22639
gem5::VegaISA::Inst_VOP1__V_CVT_U32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8407
gem5::VegaISA::Inst_VOPC__V_CMP_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15376
gem5::VegaISA::Inst_VOPC__V_CMPX_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11440
gem5::Wavefront::instructionBuffer
std::deque< GPUDynInstPtr > instructionBuffer
Definition: wavefront.hh:109
gem5::VegaISA::Inst_SOPC__S_BITCMP1_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4066
gem5::VegaISA::Inst_VOP3__V_MIN_U16::Inst_VOP3__V_MIN_U16
Inst_VOP3__V_MIN_U16(InFmt_VOP3A *)
Definition: instructions.cc:27287
gem5::VegaISA::Inst_VOPC__V_CMP_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11111
gem5::VegaISA::Inst_SMEM__S_DCACHE_INV::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5882
gem5::VegaISA::Inst_VOP3__V_RCP_F64::~Inst_VOP3__V_RCP_F64
~Inst_VOP3__V_RCP_F64()
Definition: instructions.cc:28980
gem5::VegaISA::Inst_VOP3__V_CUBETC_F32::~Inst_VOP3__V_CUBETC_F32
~Inst_VOP3__V_CUBETC_F32()
Definition: instructions.cc:30426
gem5::VegaISA::Inst_SOP2__S_NAND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:781
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F64::~Inst_VOPC__V_CMPX_GT_F64
~Inst_VOPC__V_CMPX_GT_F64()
Definition: instructions.cc:13410
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F32::Inst_VOP3__V_CMPX_F_F32
Inst_VOP3__V_CMPX_F_F32(InFmt_VOP3A *)
Definition: instructions.cc:18857
gem5::VegaISA::Inst_VOP1__V_CVT_F32_I32::Inst_VOP1__V_CVT_F32_I32
Inst_VOP1__V_CVT_F32_I32(InFmt_VOP1 *)
Definition: instructions.cc:8327
gem5::VegaISA::Inst_SOP1__S_SWAPPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3029
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14008
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35338
gem5::VegaISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::Inst_SOP1__S_XNOR_SAVEEXEC_B64
Inst_SOP1__S_XNOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:3318
gem5::VegaISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37093
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_OR_X2::~Inst_FLAT__FLAT_ATOMIC_OR_X2
~Inst_FLAT__FLAT_ATOMIC_OR_X2()
Definition: instructions.cc:45677
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::Inst_FLAT__FLAT_ATOMIC_SMAX_X2
Inst_FLAT__FLAT_ATOMIC_SMAX_X2(InFmt_FLAT *)
Definition: instructions.cc:45577
gem5::VegaISA::Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4972
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44628
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F16::~Inst_VOP3__V_CMPX_LT_F16
~Inst_VOP3__V_CMPX_LT_F16()
Definition: instructions.cc:17974
gem5::VegaISA::Inst_SOP2__S_AND_B32::~Inst_SOP2__S_AND_B32
~Inst_SOP2__S_AND_B32()
Definition: instructions.cc:453
gem5::VegaISA::Inst_VOP2__V_LSHRREV_B32::Inst_VOP2__V_LSHRREV_B32
Inst_VOP2__V_LSHRREV_B32(InFmt_VOP2 *)
Definition: instructions.cc:6636
gem5::VegaISA::Inst_SOP1__S_MOVRELS_B32::Inst_SOP1__S_MOVRELS_B32
Inst_SOP1__S_MOVRELS_B32(InFmt_SOP1 *)
Definition: instructions.cc:3416
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE0::Inst_VOP3__V_CVT_F32_UBYTE0
Inst_VOP3__V_CVT_F32_UBYTE0(InFmt_VOP3A *)
Definition: instructions.cc:28142
gem5::VegaISA::Inst_DS__DS_MAX_F32::~Inst_DS__DS_MAX_F32
~Inst_DS__DS_MAX_F32()
Definition: instructions.cc:34667
gem5::VegaISA::Inst_SOP1__S_CBRANCH_JOIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3554
gem5::VegaISA::Inst_DS__DS_CONDXCHG32_RTN_B64::Inst_DS__DS_CONDXCHG32_RTN_B64
Inst_DS__DS_CONDXCHG32_RTN_B64(InFmt_DS *)
Definition: instructions.cc:37401
gem5::VegaISA::Inst_VOP3__V_DIV_FMAS_F64::Inst_VOP3__V_DIV_FMAS_F64
Inst_VOP3__V_DIV_FMAS_F64(InFmt_VOP3A *)
Definition: instructions.cc:31981
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40398
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37146
gem5::VegaISA::Inst_DS__DS_DEC_SRC2_U64::~Inst_DS__DS_DEC_SRC2_U64
~Inst_DS__DS_DEC_SRC2_U64()
Definition: instructions.cc:38116
gem5::VegaISA::Inst_MUBUF::oobMask
VectorMask oobMask
Definition: op_encodings.hh:847
gem5::VegaISA::Inst_VOP3__V_ADD_F32::Inst_VOP3__V_ADD_F32
Inst_VOP3__V_ADD_F32(InFmt_VOP3A *)
Definition: instructions.cc:25206
gem5::VegaISA::Inst_VOP3__V_NOT_B32::Inst_VOP3__V_NOT_B32
Inst_VOP3__V_NOT_B32(InFmt_VOP3A *)
Definition: instructions.cc:29243
gem5::Wavefront::dispatchId
uint32_t dispatchId
Definition: wavefront.hh:169
gem5::VegaISA::Inst_SOPC__S_BITCMP1_B64::Inst_SOPC__S_BITCMP1_B64
Inst_SOPC__S_BITCMP1_B64(InFmt_SOPC *)
Definition: instructions.cc:4053
gem5::VegaISA::Inst_VOP2__V_SUBREV_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7233
gem5::VegaISA::Inst_VOP3__V_CVT_PKRTZ_F16_F32::~Inst_VOP3__V_CVT_PKRTZ_F16_F32
~Inst_VOP3__V_CVT_PKRTZ_F16_F32()
Definition: instructions.cc:33969
gem5::VegaISA::Inst_VOPC__V_CMPX_F_I32::Inst_VOPC__V_CMPX_F_I32
Inst_VOPC__V_CMPX_F_I32(InFmt_VOPC *)
Definition: instructions.cc:15391
gem5::VegaISA::ScalarRegU32
uint32_t ScalarRegU32
Definition: gpu_registers.hh:153
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORD::~Inst_SMEM__S_LOAD_DWORD
~Inst_SMEM__S_LOAD_DWORD()
Definition: instructions.cc:5053
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42109
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_L_O::~Inst_MIMG__IMAGE_GATHER4_C_L_O
~Inst_MIMG__IMAGE_GATHER4_C_L_O()
Definition: instructions.cc:43590
gem5::VegaISA::Inst_EXP__EXP::Inst_EXP__EXP
Inst_EXP__EXP(InFmt_EXP *)
Definition: instructions.cc:43846
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_SHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39928
gem5::VegaISA::Inst_DS__DS_AND_RTN_B32::~Inst_DS__DS_AND_RTN_B32
~Inst_DS__DS_AND_RTN_B32()
Definition: instructions.cc:35153
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F32::Inst_VOP3__V_DIV_FIXUP_F32
Inst_VOP3__V_DIV_FIXUP_F32(InFmt_VOP3A *)
Definition: instructions.cc:31603
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_F32::Inst_DS__DS_MAX_SRC2_F32
Inst_DS__DS_MAX_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:37734
gem5::VegaISA::Inst_VOP3__V_CVT_F64_I32::~Inst_VOP3__V_CVT_F64_I32
~Inst_VOP3__V_CVT_F64_I32()
Definition: instructions.cc:27646
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38979
gem5::VegaISA::Inst_VOP2__V_ASHRREV_I16::~Inst_VOP2__V_ASHRREV_I16
~Inst_VOP2__V_ASHRREV_I16()
Definition: instructions.cc:7765
gem5::VegaISA::Inst_VOP3__V_BFM_B32::Inst_VOP3__V_BFM_B32
Inst_VOP3__V_BFM_B32(InFmt_VOP3A *)
Definition: instructions.cc:33874
gem5::VegaISA::Inst_VOPC__V_CMP_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14102
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_XOR::Inst_MIMG__IMAGE_ATOMIC_XOR
Inst_MIMG__IMAGE_ATOMIC_XOR(InFmt_MIMG *)
Definition: instructions.cc:42478
gem5::Wavefront::stats
gem5::Wavefront::WavefrontStats stats
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::Inst_MUBUF__BUFFER_LOAD_DWORDX4
Inst_MUBUF__BUFFER_LOAD_DWORDX4(InFmt_MUBUF *)
Definition: instructions.cc:39710
gem5::VegaISA::Inst_DS__DS_MAX_U32::~Inst_DS__DS_MAX_U32
~Inst_DS__DS_MAX_U32()
Definition: instructions.cc:34240
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9925
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16623
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::Inst_SMEM__S_BUFFER_LOAD_DWORDX4
Inst_SMEM__S_BUFFER_LOAD_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:5432
gem5::VegaISA::Inst_DS__DS_OR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36414
gem5::MipsISA::k
Bitfield< 23 > k
Definition: dt_constants.hh:81
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F16::~Inst_VOP3__V_CMPX_NLE_F16
~Inst_VOP3__V_CMPX_NLE_F16()
Definition: instructions.cc:18218
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9769
gem5::VegaISA::Inst_SOPC__S_CMP_GT_I32::~Inst_SOPC__S_CMP_GT_I32
~Inst_SOPC__S_CMP_GT_I32()
Definition: instructions.cc:3695
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44634
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I32_F32::Inst_VOP1__V_FREXP_EXP_I32_F32
Inst_VOP1__V_FREXP_EXP_I32_F32(InFmt_VOP1 *)
Definition: instructions.cc:9863
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16226
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29903
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_ADD::Inst_MIMG__IMAGE_ATOMIC_ADD
Inst_MIMG__IMAGE_ATOMIC_ADD(InFmt_MIMG *)
Definition: instructions.cc:42242
gem5::VegaISA::Inst_DS__DS_WRITE_B96::~Inst_DS__DS_WRITE_B96
~Inst_DS__DS_WRITE_B96()
Definition: instructions.cc:38368
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U16::~Inst_VOPC__V_CMP_NE_U16
~Inst_VOPC__V_CMP_NE_U16()
Definition: instructions.cc:14255
gem5::VegaISA::Inst_SOPC__S_SETVSKIP::Inst_SOPC__S_SETVSKIP
Inst_SOPC__S_SETVSKIP(InFmt_SOPC *)
Definition: instructions.cc:4081
gem5::VegaISA::Inst_VOPC__V_CMP_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16391
gem5::VegaISA::Inst_VOP3__V_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27461
gem5::VegaISA::Inst_VOP3__V_ADDC_CO_U32::Inst_VOP3__V_ADDC_CO_U32
Inst_VOP3__V_ADDC_CO_U32(InFmt_VOP3B *)
Definition: instructions.cc:26557
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38967
gem5::VegaISA::Inst_DS__DS_RSUB_SRC2_U64::Inst_DS__DS_RSUB_SRC2_U64
Inst_DS__DS_RSUB_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:38067
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22500
gem5::VegaISA::Inst_VOP3__V_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25969
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45029
gem5::VegaISA::Inst_VOP3__V_CMP_T_I32::~Inst_VOP3__V_CMP_T_I32
~Inst_VOP3__V_CMP_T_I32()
Definition: instructions.cc:22814
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F16::~Inst_VOPC__V_CMP_EQ_F16
~Inst_VOPC__V_CMP_EQ_F16()
Definition: instructions.cc:11004
gem5::VegaISA::Inst_VOP3__V_INTERP_P2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32822
gem5::VegaISA::Inst_VOPC__V_CMP_T_I64::Inst_VOPC__V_CMP_T_I64
Inst_VOPC__V_CMP_T_I64(InFmt_VOPC *)
Definition: instructions.cc:16157
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I16::~Inst_VOP3__V_CMP_NE_I16
~Inst_VOP3__V_CMP_NE_I16()
Definition: instructions.cc:21411
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX2::~Inst_SMEM__S_STORE_DWORDX2
~Inst_SMEM__S_STORE_DWORDX2()
Definition: instructions.cc:5667
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::~Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
~Inst_MUBUF__BUFFER_ATOMIC_ADD_X2()
Definition: instructions.cc:40980
gem5::VegaISA::InFmt_VOP1
Definition: gpu_decoder.hh:1795
gem5::VegaISA::Inst_FLAT__FLAT_STORE_DWORDX2::Inst_FLAT__FLAT_STORE_DWORDX2
Inst_FLAT__FLAT_STORE_DWORDX2(InFmt_FLAT *)
Definition: instructions.cc:44445
gem5::VegaISA::Inst_VOP3__V_CVT_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27916
gem5::VegaISA::Inst_VOP1__V_SQRT_F16::Inst_VOP1__V_SQRT_F16
Inst_VOP1__V_SQRT_F16(InFmt_VOP1 *)
Definition: instructions.cc:10074
gem5::VegaISA::Inst_VOPC__V_CMP_F_U16::~Inst_VOPC__V_CMP_F_U16
~Inst_VOPC__V_CMP_F_U16()
Definition: instructions.cc:14095
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U16::~Inst_VOP3__V_CMPX_NE_U16
~Inst_VOP3__V_CMPX_NE_U16()
Definition: instructions.cc:22401
gem5::VegaISA::Inst_SOP2__S_ASHR_I32::~Inst_SOP2__S_ASHR_I32
~Inst_SOP2__S_ASHR_I32()
Definition: instructions.cc:1095
gem5::VegaISA::Inst_VOP3__V_CMP_GT_U64::Inst_VOP3__V_CMP_GT_U64
Inst_VOP3__V_CMP_GT_U64(InFmt_VOP3A *)
Definition: instructions.cc:24312
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_U32::~Inst_DS__DS_MAX_SRC2_U32
~Inst_DS__DS_MAX_SRC2_U32()
Definition: instructions.cc:37602
gem5::VegaISA::Inst_DS__DS_MIN_RTN_U32::Inst_DS__DS_MIN_RTN_U32
Inst_DS__DS_MIN_RTN_U32(InFmt_DS *)
Definition: instructions.cc:35106
gem5::VegaISA::Inst_VOP3__V_SIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29171
gem5::VegaISA::Inst_VOP3__V_READLANE_B32::~Inst_VOP3__V_READLANE_B32
~Inst_VOP3__V_READLANE_B32()
Definition: instructions.cc:33493
gem5::VegaISA::Inst_VOP3__V_BFE_U32::Inst_VOP3__V_BFE_U32
Inst_VOP3__V_BFE_U32(InFmt_VOP3A *)
Definition: instructions.cc:30461
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I64::~Inst_VOP3__V_CMPX_GT_I64
~Inst_VOP3__V_CMPX_GT_I64()
Definition: instructions.cc:24649
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_U64::~Inst_VOPC__V_CMPX_EQ_U64
~Inst_VOPC__V_CMPX_EQ_U64()
Definition: instructions.cc:16781
gem5::VegaISA::InFmt_VOP_SDWA::SRC1_SEL
unsigned int SRC1_SEL
Definition: gpu_decoder.hh:1867
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_V::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37857
gem5::VegaISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35285
gem5::VegaISA::Inst_DS__DS_READ2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35518
gem5::VegaISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3264
gem5::VegaISA::Inst_SOP1__S_NOT_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2331
gem5::VegaISA::Inst_VOP3__V_RNDNE_F64::~Inst_VOP3__V_RNDNE_F64
~Inst_VOP3__V_RNDNE_F64()
Definition: instructions.cc:28486
gem5::VegaISA::Inst_VOP1__V_LOG_F32::Inst_VOP1__V_LOG_F32
Inst_VOP1__V_LOG_F32(InFmt_VOP1 *)
Definition: instructions.cc:9233
gem5::VegaISA::Inst_VOP3__V_MAX_F64::~Inst_VOP3__V_MAX_F64
~Inst_VOP3__V_MAX_F64()
Definition: instructions.cc:33197
gem5::VegaISA::Inst_VOP3__V_CMP_LT_F16::Inst_VOP3__V_CMP_LT_F16
Inst_VOP3__V_CMP_LT_F16(InFmt_VOP3A *)
Definition: instructions.cc:17612
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
Inst_MIMG__IMAGE_SAMPLE_C_CD_CL(InFmt_MIMG *)
Definition: instructions.cc:43743
gem5::VegaISA::Inst_VOP3__V_CVT_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27833
gem5::VegaISA::Inst_VOP3__V_CUBEID_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30392
gem5::VegaISA::Inst_VOPC__V_CMPX_CLASS_F16::~Inst_VOPC__V_CMPX_CLASS_F16
~Inst_VOPC__V_CMPX_CLASS_F16()
Definition: instructions.cc:10931
gem5::VegaISA::Inst_VOP3__V_CMPX_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24487
gem5::VegaISA::Inst_VOPC__V_CMPX_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13602
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_O::~Inst_MIMG__IMAGE_SAMPLE_D_O
~Inst_MIMG__IMAGE_SAMPLE_D_O()
Definition: instructions.cc:42920
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12307
gem5::VegaISA::Inst_VOP1__V_RCP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9279
gem5::VegaISA::Inst_SOP1__S_QUADMASK_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3400
gem5::VegaISA::Inst_VOP3__V_EXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29876
gem5::VegaISA::Inst_VOP3__V_LOG_LEGACY_F32::Inst_VOP3__V_LOG_LEGACY_F32
Inst_VOP3__V_LOG_LEGACY_F32(InFmt_VOP3A *)
Definition: instructions.cc:30129
gem5::VegaISA::Inst_VOPC__V_CMP_F_F16::Inst_VOPC__V_CMP_F_F16
Inst_VOPC__V_CMP_F_F16(InFmt_VOPC *)
Definition: instructions.cc:10957
gem5::VegaISA::Inst_SOP1__S_MOVRELD_B32::Inst_SOP1__S_MOVRELD_B32
Inst_SOP1__S_MOVRELD_B32(InFmt_SOP1 *)
Definition: instructions.cc:3473
gem5::VegaISA::Inst_VOP3__V_CUBETC_F32::Inst_VOP3__V_CUBETC_F32
Inst_VOP3__V_CUBETC_F32(InFmt_VOP3A *)
Definition: instructions.cc:30419
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26102
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_U64::~Inst_DS__DS_MAX_SRC2_U64
~Inst_DS__DS_MAX_SRC2_U64()
Definition: instructions.cc:38205
gem5::VegaISA::Inst_SOP1__S_AND_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3084
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39481
gem5::VegaISA::Inst_VOP3__V_CVT_I16_F16::~Inst_VOP3__V_CVT_I16_F16
~Inst_VOP3__V_CVT_I16_F16()
Definition: instructions.cc:29753
gem5::VegaISA::Inst_VOP1__V_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8501
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_SBYTE::Inst_FLAT__FLAT_LOAD_SBYTE
Inst_FLAT__FLAT_LOAD_SBYTE(InFmt_FLAT *)
Definition: instructions.cc:43918
gem5::VegaISA::Inst_VOP3__V_MUL_I32_I24::~Inst_VOP3__V_MUL_I32_I24
~Inst_VOP3__V_MUL_I32_I24()
Definition: instructions.cc:25584
gem5::VegaISA::Inst_VOP3__V_LERP_U8::Inst_VOP3__V_LERP_U8
Inst_VOP3__V_LERP_U8(InFmt_VOP3A *)
Definition: instructions.cc:30730
gem5::VegaISA::Inst_VOP3__V_MIN_F32::Inst_VOP3__V_MIN_F32
Inst_VOP3__V_MIN_F32(InFmt_VOP3A *)
Definition: instructions.cc:25758
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2(InFmt_FLAT *)
Definition: instructions.cc:45329
gem5::VegaISA::Inst_DS__DS_XOR_RTN_B32::~Inst_DS__DS_XOR_RTN_B32
~Inst_DS__DS_XOR_RTN_B32()
Definition: instructions.cc:35195
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I16::Inst_VOP3__V_CMPX_GE_I16
Inst_VOP3__V_CMPX_GE_I16(InFmt_VOP3A *)
Definition: instructions.cc:22101
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_CL_O::~Inst_MIMG__IMAGE_GATHER4_B_CL_O
~Inst_MIMG__IMAGE_GATHER4_B_CL_O()
Definition: instructions.cc:43510
gem5::VegaISA::InFmt_FLAT_1::SADDR
unsigned int SADDR
Definition: gpu_decoder.hh:1657
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45600
gem5::VegaISA::Inst_VOP3__V_LSHLREV_B16::~Inst_VOP3__V_LSHLREV_B16
~Inst_VOP3__V_LSHLREV_B16()
Definition: instructions.cc:27011
gem5::VegaISA::Inst_VOP1__V_LOG_LEGACY_F32::Inst_VOP1__V_LOG_LEGACY_F32
Inst_VOP1__V_LOG_LEGACY_F32(InFmt_VOP1 *)
Definition: instructions.cc:10397
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::Inst_MIMG__IMAGE_GATHER4_LZ_O
Inst_MIMG__IMAGE_GATHER4_LZ_O(InFmt_MIMG *)
Definition: instructions.cc:43523
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F64::Inst_VOP3__V_CMPX_O_F64
Inst_VOP3__V_CMPX_O_F64(InFmt_VOP3A *)
Definition: instructions.cc:20691
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U64::Inst_VOPC__V_CMPX_T_U64
Inst_VOPC__V_CMPX_T_U64(InFmt_VOPC *)
Definition: instructions.cc:16949
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I64::~Inst_VOPC__V_CMP_GE_I64
~Inst_VOPC__V_CMP_GE_I64()
Definition: instructions.cc:16130
gem5::VegaISA::Inst_VOP1__V_RCP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10068
gem5::VegaISA::Inst_DS__DS_WRITE_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36521
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F16::Inst_VOP3__V_CMPX_O_F16
Inst_VOP3__V_CMPX_O_F16(InFmt_VOP3A *)
Definition: instructions.cc:18097
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F32::~Inst_VOP3__V_CMP_NLT_F32
~Inst_VOP3__V_CMP_NLT_F32()
Definition: instructions.cc:18800
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12455
gem5::VegaISA::Inst_DS__DS_READ_I8::Inst_DS__DS_READ_I8
Inst_DS__DS_READ_I8(InFmt_DS *)
Definition: instructions.cc:35636
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_F64::Inst_VOPC__V_CMPX_LE_F64
Inst_VOPC__V_CMPX_LE_F64(InFmt_VOPC *)
Definition: instructions.cc:13366
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U64::~Inst_VOP3__V_CMP_LE_U64
~Inst_VOP3__V_CMP_LE_U64()
Definition: instructions.cc:24275
gem5::VegaISA::Inst_VOP3__V_CMP_O_F64::~Inst_VOP3__V_CMP_O_F64
~Inst_VOP3__V_CMP_O_F64()
Definition: instructions.cc:19824
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43537
gem5::VegaISA::Inst_VOPC__V_CMP_NLG_F32::Inst_VOPC__V_CMP_NLG_F32
Inst_VOPC__V_CMP_NLG_F32(InFmt_VOPC *)
Definition: instructions.cc:11953
gem5::VegaISA::VecElemI16
int16_t VecElemI16
Definition: gpu_registers.hh:164
gem5::VegaISA::Inst_SOPC__S_BITCMP0_B64::Inst_SOPC__S_BITCMP0_B64
Inst_SOPC__S_BITCMP0_B64(InFmt_SOPC *)
Definition: instructions.cc:4025
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_U32::Inst_DS__DS_ADD_SRC2_U32
Inst_DS__DS_ADD_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:37420
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_I64::~Inst_VOPC__V_CMPX_LE_I64
~Inst_VOPC__V_CMPX_LE_I64()
Definition: instructions.cc:16546
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23202
gem5::VegaISA::Inst_VOP1__V_TRUNC_F32::~Inst_VOP1__V_TRUNC_F32
~Inst_VOP1__V_TRUNC_F32()
Definition: instructions.cc:9078
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I32::Inst_VOP3__V_CMP_NE_I32
Inst_VOP3__V_CMP_NE_I32(InFmt_VOP3A *)
Definition: instructions.cc:22720
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ(InFmt_MUBUF *)
Definition: instructions.cc:38951
gem5::VegaISA::Inst_VOP3__V_CMP_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24094
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_XOR::Inst_FLAT__FLAT_ATOMIC_XOR
Inst_FLAT__FLAT_ATOMIC_XOR(InFmt_FLAT *)
Definition: instructions.cc:45216
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_O::~Inst_MIMG__IMAGE_SAMPLE_O
~Inst_MIMG__IMAGE_SAMPLE_O()
Definition: instructions.cc:42881
gem5::VegaISA::Inst_VOP3__V_CMP_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24137
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38673
gem5::VegaISA::Inst_DS__DS_RSUB_U32::~Inst_DS__DS_RSUB_U32
~Inst_DS__DS_RSUB_U32()
Definition: instructions.cc:34113
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10187
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39152
gem5::VegaISA::Inst_VOP3__V_FLOOR_F64::~Inst_VOP3__V_FLOOR_F64
~Inst_VOP3__V_FLOOR_F64()
Definition: instructions.cc:28526
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19091
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I64::Inst_VOPC__V_CMP_GT_I64
Inst_VOPC__V_CMP_GT_I64(InFmt_VOPC *)
Definition: instructions.cc:16058
gem5::VegaISA::Inst_FLAT__FLAT_STORE_BYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44320
gem5::VegaISA::Inst_VOP1__V_RSQ_F32::~Inst_VOP1__V_RSQ_F32
~Inst_VOP1__V_RSQ_F32()
Definition: instructions.cc:9338
gem5::VegaISA::Inst_SOP2__S_XNOR_B32::~Inst_SOP2__S_XNOR_B32
~Inst_SOP2__S_XNOR_B32()
Definition: instructions.cc:901
gem5::VegaISA::Inst_VOP3__V_CMPX_T_U64::~Inst_VOP3__V_CMPX_T_U64
~Inst_VOP3__V_CMPX_T_U64()
Definition: instructions.cc:25125
gem5::VegaISA::Inst_VOP3__V_MAD_I64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32196
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43184
gem5::VegaISA::InFmt_SOP1::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1754
gem5::VegaISA::Inst_VOP2__V_MUL_HI_U32_U24::~Inst_VOP2__V_MUL_HI_U32_U24
~Inst_VOP2__V_MUL_HI_U32_U24()
Definition: instructions.cc:6407
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_F32::Inst_VOPC__V_CMPX_GT_F32
Inst_VOPC__V_CMPX_GT_F32(InFmt_VOPC *)
Definition: instructions.cc:12292
gem5::VegaISA::Inst_VOP3__V_CMP_T_U64::Inst_VOP3__V_CMP_T_U64
Inst_VOP3__V_CMP_T_U64(InFmt_VOP3A *)
Definition: instructions.cc:24444
gem5::VegaISA::Inst_SOPK__S_GETREG_B32::~Inst_SOPK__S_GETREG_B32
~Inst_SOPK__S_GETREG_B32()
Definition: instructions.cc:2047
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_U32::~Inst_DS__DS_MIN_SRC2_U32
~Inst_DS__DS_MIN_SRC2_U32()
Definition: instructions.cc:37580
gem5::VegaISA::Inst_DS__DS_MAX_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36330
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11794
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE1::~Inst_VOP1__V_CVT_F32_UBYTE1
~Inst_VOP1__V_CVT_F32_UBYTE1()
Definition: instructions.cc:8739
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41785
gem5::VegaISA::Inst_VOP3__V_TRUNC_F16::~Inst_VOP3__V_TRUNC_F16
~Inst_VOP3__V_TRUNC_F16()
Definition: instructions.cc:29985
gem5::VegaISA::Inst_SOPC__S_CMP_LG_I32::Inst_SOPC__S_CMP_LG_I32
Inst_SOPC__S_CMP_LG_I32(InFmt_SOPC *)
Definition: instructions.cc:3661
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::Inst_MIMG__IMAGE_SAMPLE_CL_O
Inst_MIMG__IMAGE_SAMPLE_CL_O(InFmt_MIMG *)
Definition: instructions.cc:42894
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38775
gem5::VegaISA::InFmt_SOP1
Definition: gpu_decoder.hh:1751
gem5::VegaISA::Inst_VOPC__V_CMP_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11933
gem5::VegaISA::Inst_VOP1__V_LOG_F16::~Inst_VOP1__V_LOG_F16
~Inst_VOP1__V_LOG_F16()
Definition: instructions.cc:10127
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
Inst_MUBUF__BUFFER_ATOMIC_DEC_X2(InFmt_MUBUF *)
Definition: instructions.cc:41265
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41258
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38944
gem5::VegaISA::Inst_DS__DS_MAX_U64::Inst_DS__DS_MAX_U64
Inst_DS__DS_MAX_U64(InFmt_DS *)
Definition: instructions.cc:36357
gem5::VegaISA::Inst_SMEM__S_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5618
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2708
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U64::~Inst_VOP3__V_CMP_GE_U64
~Inst_VOP3__V_CMP_GE_U64()
Definition: instructions.cc:24407
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U16::Inst_VOPC__V_CMPX_NE_U16
Inst_VOPC__V_CMPX_NE_U16(InFmt_VOPC *)
Definition: instructions.cc:14783
gem5::LdsState::decreaseRefCounter
int decreaseRefCounter(const uint32_t dispatchId, const uint32_t wgId)
decrease the reference count after making sure it is in the list give back this chunk if the ref coun...
Definition: lds_state.hh:329
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX3::Inst_FLAT__FLAT_LOAD_DWORDX3
Inst_FLAT__FLAT_LOAD_DWORDX3(InFmt_FLAT *)
Definition: instructions.cc:44142
gem5::VegaISA::Inst_DS__DS_DEC_RTN_U32::Inst_DS__DS_DEC_RTN_U32
Inst_DS__DS_DEC_RTN_U32(InFmt_DS *)
Definition: instructions.cc:35043
gem5::VegaISA::Inst_SMEM__S_DCACHE_WB::Inst_SMEM__S_DCACHE_WB
Inst_SMEM__S_DCACHE_WB(InFmt_SMEM *)
Definition: instructions.cc:5888
gem5::VegaISA::InFmt_VOP1::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1796
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43280
gem5::VegaISA::Inst_VOPC__V_CMP_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11071
gem5::VegaISA::VecElemF32
float VecElemF32
Definition: gpu_registers.hh:167
gem5::VegaISA::Inst_VOP1__V_FLOOR_F32::~Inst_VOP1__V_FLOOR_F32
~Inst_VOP1__V_FLOOR_F32()
Definition: instructions.cc:9175
gem5::VegaISA::InFmt_SOPK::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1775
gem5::VegaISA::Inst_VOPC__V_CMPX_NLE_F16::Inst_VOPC__V_CMPX_NLE_F16
Inst_VOPC__V_CMPX_NLE_F16(InFmt_VOPC *)
Definition: instructions.cc:11531
gem5::VegaISA::Inst_VOP1__V_CEIL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8955
gem5::VegaISA::Inst_VOP3__V_TRUNC_F64::~Inst_VOP3__V_TRUNC_F64
~Inst_VOP3__V_TRUNC_F64()
Definition: instructions.cc:28405
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_I64::Inst_VOPC__V_CMPX_GE_I64
Inst_VOPC__V_CMPX_GE_I64(InFmt_VOPC *)
Definition: instructions.cc:16644
gem5::VegaISA::Inst_VOPC__V_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14924
gem5::VegaISA::Inst_DS__DS_MIN_RTN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35079
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22270
gem5::VegaISA::Inst_VOP3__V_LSHRREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26057
gem5::VegaISA::InFmt_VOPC
Definition: gpu_decoder.hh:1835
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::Inst_MUBUF__BUFFER_ATOMIC_AND_X2
Inst_MUBUF__BUFFER_ATOMIC_AND_X2(InFmt_MUBUF *)
Definition: instructions.cc:41147
gem5::VegaISA::Inst_VOPC__V_CMPX_T_U32::Inst_VOPC__V_CMPX_T_U32
Inst_VOPC__V_CMPX_T_U32(InFmt_VOPC *)
Definition: instructions.cc:15901
gem5::VegaISA::Inst_VOP3__V_RNDNE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30015
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5418
gem5::VegaISA::Inst_SOPC__S_SETVSKIP::~Inst_SOPC__S_SETVSKIP
~Inst_SOPC__S_SETVSKIP()
Definition: instructions.cc:4086
gem5::VegaISA::Inst_VOP3__V_CMP_F_U32::Inst_VOP3__V_CMP_F_U32
Inst_VOP3__V_CMP_F_U32(InFmt_VOP3A *)
Definition: instructions.cc:22836
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F64::~Inst_VOP3__V_CMPX_GE_F64
~Inst_VOP3__V_CMPX_GE_F64()
Definition: instructions.cc:20641
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::~Inst_MUBUF__BUFFER_ATOMIC_SMIN
~Inst_MUBUF__BUFFER_ATOMIC_SMIN()
Definition: instructions.cc:40647
gem5::VegaISA::Inst_DS__DS_AND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36393
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_F32::Inst_DS__DS_ADD_SRC2_F32
Inst_DS__DS_ADD_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:37758
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22454
gem5::VegaISA::Inst_VOP3__V_CMP_LT_U32::Inst_VOP3__V_CMP_LT_U32
Inst_VOP3__V_CMP_LT_U32(InFmt_VOP3A *)
Definition: instructions.cc:22864
gem5::VegaISA::Inst_DS__DS_MSKOR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35227
gem5::VegaISA::Inst_VOP3__V_LDEXP_F64::Inst_VOP3__V_LDEXP_F64
Inst_VOP3__V_LDEXP_F64(InFmt_VOP3A *)
Definition: instructions.cc:33246
gem5::VegaISA::Inst_VOP3__V_TRUNC_F32::Inst_VOP3__V_TRUNC_F32
Inst_VOP3__V_TRUNC_F32(InFmt_VOP3A *)
Definition: instructions.cc:28601
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16483
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F64::Inst_VOPC__V_CMPX_NEQ_F64
Inst_VOPC__V_CMPX_NEQ_F64(InFmt_VOPC *)
Definition: instructions.cc:13732
gem5::VegaISA::Inst_DS__DS_WRITE_B96::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38410
gem5::VegaISA::Inst_VOP3__V_CVT_F16_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29719
gem5::VegaISA::Inst_SOPK__S_ADDK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1956
gem5::Wavefront::getStatus
status_e getStatus()
Definition: wavefront.hh:137
gem5::VegaISA::Inst_SOP1__S_BITSET0_B32::~Inst_SOP1__S_BITSET0_B32
~Inst_SOP1__S_BITSET0_B32()
Definition: instructions.cc:2867
gem5::VegaISA::Inst_DS__DS_WRXCHG_RTN_B32::~Inst_DS__DS_WRXCHG_RTN_B32
~Inst_DS__DS_WRXCHG_RTN_B32()
Definition: instructions.cc:35238
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_PCK::~Inst_MIMG__IMAGE_STORE_PCK
~Inst_MIMG__IMAGE_STORE_PCK()
Definition: instructions.cc:42102
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::Inst_MUBUF__BUFFER_ATOMIC_ADD
Inst_MUBUF__BUFFER_ATOMIC_ADD(InFmt_MUBUF *)
Definition: instructions.cc:40574
gem5::VegaISA::Inst_DS__DS_BPERMUTE_B32::Inst_DS__DS_BPERMUTE_B32
Inst_DS__DS_BPERMUTE_B32(InFmt_DS *)
Definition: instructions.cc:36060
gem5::VegaISA::Inst_VOP3__V_CMP_NGT_F32::Inst_VOP3__V_CMP_NGT_F32
Inst_VOP3__V_CMP_NGT_F32(InFmt_VOP3A *)
Definition: instructions.cc:18687
gem5::VegaISA::Inst_VOPC__V_CMP_T_I16::Inst_VOPC__V_CMP_T_I16
Inst_VOPC__V_CMP_T_I16(InFmt_VOPC *)
Definition: instructions.cc:14061
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40452
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I16::Inst_VOP3__V_CMPX_LE_I16
Inst_VOP3__V_CMPX_LE_I16(InFmt_VOP3A *)
Definition: instructions.cc:21963
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_I32::Inst_VOP3__V_CMPX_NE_I32
Inst_VOP3__V_CMPX_NE_I32(InFmt_VOP3A *)
Definition: instructions.cc:23371
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42947
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_I64::~Inst_VOPC__V_CMPX_LT_I64
~Inst_VOPC__V_CMPX_LT_I64()
Definition: instructions.cc:16476
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17949
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21886
gem5::VegaISA::Inst_VOP3__V_INTERP_P1_F32::Inst_VOP3__V_INTERP_P1_F32
Inst_VOP3__V_INTERP_P1_F32(InFmt_VOP3A *)
Definition: instructions.cc:32776
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_O::Inst_MIMG__IMAGE_SAMPLE_C_CD_O
Inst_MIMG__IMAGE_SAMPLE_C_CD_O(InFmt_MIMG *)
Definition: instructions.cc:43805
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_P::~Inst_DS__DS_GWS_SEMA_P
~Inst_DS__DS_GWS_SEMA_P()
Definition: instructions.cc:37898
gem5::VegaISA::Inst_SMEM__S_DCACHE_WB_VOL::~Inst_SMEM__S_DCACHE_WB_VOL
~Inst_SMEM__S_DCACHE_WB_VOL()
Definition: instructions.cc:5929
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F32::~Inst_VOPC__V_CMPX_NEQ_F32
~Inst_VOPC__V_CMPX_NEQ_F32()
Definition: instructions.cc:12630
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22024
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18047
gem5::VegaISA::Inst_VOP3__V_FREXP_EXP_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29450
gem5::VegaISA::InFmt_DS_1::ADDR
unsigned int ADDR
Definition: gpu_decoder.hh:1620
gem5::VegaISA::Inst_VOP1__V_CVT_F32_U32::~Inst_VOP1__V_CVT_F32_U32
~Inst_VOP1__V_CVT_F32_U32()
Definition: instructions.cc:8366
gem5::VegaISA::Inst_SOPK__S_CMPK_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1847
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44852
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F32::Inst_VOPC__V_CMPX_F_F32
Inst_VOPC__V_CMPX_F_F32(InFmt_VOPC *)
Definition: instructions.cc:12153
gem5::VegaISA::Inst_DS__DS_INC_RTN_U64::Inst_DS__DS_INC_RTN_U64
Inst_DS__DS_INC_RTN_U64(InFmt_DS *)
Definition: instructions.cc:36829
gem5::VegaISA::Inst_DS__DS_READ_U8::~Inst_DS__DS_READ_U8
~Inst_DS__DS_READ_U8()
Definition: instructions.cc:35706
gem5::VegaISA::Inst_VOP3__V_SAD_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31360
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U32::~Inst_VOPC__V_CMP_LT_U32
~Inst_VOPC__V_CMP_LT_U32()
Definition: instructions.cc:15171
gem5::VegaISA::Inst_VOP1__V_RNDNE_F16::Inst_VOP1__V_RNDNE_F16
Inst_VOP1__V_RNDNE_F16(InFmt_VOP1 *)
Definition: instructions.cc:10283
gem5::VegaISA::Inst_VOP3__V_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27548
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2(InFmt_MUBUF *)
Definition: instructions.cc:40904
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5706
gem5::VegaISA::Inst_SOP2__S_AND_B64::~Inst_SOP2__S_AND_B64
~Inst_SOP2__S_AND_B64()
Definition: instructions.cc:485
gem5::VegaISA::Inst_SOP2__S_LSHR_B32::~Inst_SOP2__S_LSHR_B32
~Inst_SOP2__S_LSHR_B32()
Definition: instructions.cc:1029
gem5::VegaISA::Inst_VOP1::instData
InFmt_VOP1 instData
Definition: op_encodings.hh:385
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21242
gem5::VegaISA::Inst_VOPC__V_CMPX_TRU_F16::Inst_VOPC__V_CMPX_TRU_F16
Inst_VOPC__V_CMPX_TRU_F16(InFmt_VOPC *)
Definition: instructions.cc:11594
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_F64::Inst_VOP3__V_CMPX_GT_F64
Inst_VOP3__V_CMPX_GT_F64(InFmt_VOP3A *)
Definition: instructions.cc:20513
gem5::VegaISA::Inst_VOP3__V_MIN3_F32::~Inst_VOP3__V_MIN3_F32
~Inst_VOP3__V_MIN3_F32()
Definition: instructions.cc:30895
gem5::VegaISA::Inst_VOP3__V_CUBEMA_F32::~Inst_VOP3__V_CUBEMA_F32
~Inst_VOP3__V_CUBEMA_F32()
Definition: instructions.cc:30447
gem5::VegaISA::Inst_DS__DS_CMPST_B32::~Inst_DS__DS_CMPST_B32
~Inst_DS__DS_CMPST_B32()
Definition: instructions.cc:34587
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41550
gem5::VegaISA::InFmt_VOP3_1::SRC1
unsigned int SRC1
Definition: gpu_decoder.hh:1821
gem5::VegaISA::Inst_VOP1__V_FREXP_MANT_F64::~Inst_VOP1__V_FREXP_MANT_F64
~Inst_VOP1__V_FREXP_MANT_F64()
Definition: instructions.cc:9800
gem5::VegaISA::Inst_VOP3__V_CMP_GE_F32::~Inst_VOP3__V_CMP_GE_F32
~Inst_VOP3__V_CMP_GE_F32()
Definition: instructions.cc:18519
gem5::VegaISA::InFmt_FLAT_1::DATA
unsigned int DATA
Definition: gpu_decoder.hh:1656
gem5::VegaISA::Inst_SOP2__S_ASHR_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1137
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_BYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39838
gem5::VegaISA::Inst_VOP3__V_CMP_GT_F16::~Inst_VOP3__V_CMP_GT_F16
~Inst_VOP3__V_CMP_GT_F16()
Definition: instructions.cc:17683
gem5::VegaISA::Inst_VOPC__V_CMP_TRU_F32::Inst_VOPC__V_CMP_TRU_F32
Inst_VOPC__V_CMP_TRU_F32(InFmt_VOPC *)
Definition: instructions.cc:12124
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U64::Inst_VOP3__V_CMPX_NE_U64
Inst_VOP3__V_CMPX_NE_U64(InFmt_VOP3A *)
Definition: instructions.cc:25025
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::~Inst_MIMG__IMAGE_SAMPLE_D_CL
~Inst_MIMG__IMAGE_SAMPLE_D_CL()
Definition: instructions.cc:42628
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I64::~Inst_VOPC__V_CMP_EQ_I64
~Inst_VOPC__V_CMP_EQ_I64()
Definition: instructions.cc:15998
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F16::~Inst_VOPC__V_CMPX_LG_F16
~Inst_VOPC__V_CMPX_LG_F16()
Definition: instructions.cc:11390
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18291
gem5::VegaISA::Inst_VOP3__V_CVT_F64_F32::Inst_VOP3__V_CVT_F64_F32
Inst_VOP3__V_CVT_F64_F32(InFmt_VOP3A *)
Definition: instructions.cc:28094
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE2::~Inst_VOP3__V_CVT_F32_UBYTE2
~Inst_VOP3__V_CVT_F32_UBYTE2()
Definition: instructions.cc:28229
gem5::VegaISA::Inst_VOP3__V_FMA_F32::~Inst_VOP3__V_FMA_F32
~Inst_VOP3__V_FMA_F32()
Definition: instructions.cc:30616
gem5::VegaISA::Inst_SOPC__S_CMP_LT_I32::~Inst_SOPC__S_CMP_LT_I32
~Inst_SOPC__S_CMP_LT_I32()
Definition: instructions.cc:3751
gem5::VegaISA::Inst_VOP3__V_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27567
gem5::VegaISA::Inst_SOPK__S_CMPK_GT_U32::Inst_SOPK__S_CMPK_GT_U32
Inst_SOPK__S_CMPK_GT_U32(InFmt_SOPK *)
Definition: instructions.cc:1834
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X()
Definition: instructions.cc:38892
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U16::~Inst_VOPC__V_CMP_LE_U16
~Inst_VOPC__V_CMP_LE_U16()
Definition: instructions.cc:14189
gem5::GPUDispatcher::scheduleDispatch
void scheduleDispatch()
Definition: dispatcher.cc:347
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::VegaISA::Inst_VOP1__V_RCP_IFLAG_F32::Inst_VOP1__V_RCP_IFLAG_F32
Inst_VOP1__V_RCP_IFLAG_F32(InFmt_VOP1 *)
Definition: instructions.cc:9297
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::Inst_MIMG__IMAGE_SAMPLE_CD_CL
Inst_MIMG__IMAGE_SAMPLE_CD_CL(InFmt_MIMG *)
Definition: instructions.cc:43702
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43696
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40535
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U64::~Inst_VOPC__V_CMPX_LE_U64
~Inst_VOPC__V_CMPX_LE_U64()
Definition: instructions.cc:16816
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U16::~Inst_VOPC__V_CMP_LT_U16
~Inst_VOPC__V_CMP_LT_U16()
Definition: instructions.cc:14123
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41891
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37119
gem5::VegaISA::Inst_VOPC__V_CMP_LT_F16::Inst_VOPC__V_CMP_LT_F16
Inst_VOPC__V_CMP_LT_F16(InFmt_VOPC *)
Definition: instructions.cc:10977
gem5::VegaISA::InFmt_DS::OFFSET1
unsigned int OFFSET1
Definition: gpu_decoder.hh:1612
gem5::VegaISA::Inst_DS__DS_WRITE_SRC2_B32::Inst_DS__DS_WRITE_SRC2_B32
Inst_DS__DS_WRITE_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:37685
gem5::VegaISA::Inst_VOP1__V_CVT_FLR_I32_F32::Inst_VOP1__V_CVT_FLR_I32_F32
Inst_VOP1__V_CVT_FLR_I32_F32(InFmt_VOP1 *)
Definition: instructions.cc:8582
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE2::Inst_VOP3__V_CVT_F32_UBYTE2
Inst_VOP3__V_CVT_F32_UBYTE2(InFmt_VOP3A *)
Definition: instructions.cc:28222
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F16::Inst_VOPC__V_CMPX_LG_F16
Inst_VOPC__V_CMPX_LG_F16(InFmt_VOPC *)
Definition: instructions.cc:11382
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::~Inst_MUBUF__BUFFER_ATOMIC_AND_X2
~Inst_MUBUF__BUFFER_ATOMIC_AND_X2()
Definition: instructions.cc:41160
gem5::VegaISA::Inst_DS__DS_OR_RTN_B64::~Inst_DS__DS_OR_RTN_B64
~Inst_DS__DS_OR_RTN_B64()
Definition: instructions.cc:36982
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:42026
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5281
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41349
gem5::VegaISA::Inst_VOP1__V_SIN_F32::Inst_VOP1__V_SIN_F32
Inst_VOP1__V_SIN_F32(InFmt_VOP1 *)
Definition: instructions.cc:9514
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5424
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22966
gem5::VegaISA::Inst_SOP2__S_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:337
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::~Inst_FLAT__FLAT_ATOMIC_ADD_X2
~Inst_FLAT__FLAT_ATOMIC_ADD_X2()
Definition: instructions.cc:45425
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE3::Inst_VOP1__V_CVT_F32_UBYTE3
Inst_VOP1__V_CVT_F32_UBYTE3(InFmt_VOP1 *)
Definition: instructions.cc:8796
gem5::VegaISA::Inst_SOPC__S_BITCMP0_B32::~Inst_SOPC__S_BITCMP0_B32
~Inst_SOPC__S_BITCMP0_B32()
Definition: instructions.cc:3975
gem5::VegaISA::Inst_MIMG__IMAGE_STORE_MIP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:42084
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21418
gem5::VegaISA::Inst_SOP1__S_NOT_B32::Inst_SOP1__S_NOT_B32
Inst_SOP1__S_NOT_B32(InFmt_SOP1 *)
Definition: instructions.cc:2284
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ()
Definition: instructions.cc:39098
gem5::VegaISA::Inst_VOP2__V_MUL_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6201
gem5::VegaISA::InFmt_SOPC
Definition: gpu_decoder.hh:1766
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40927
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE2::~Inst_VOP1__V_CVT_F32_UBYTE2
~Inst_VOP1__V_CVT_F32_UBYTE2()
Definition: instructions.cc:8771
gem5::VegaISA::Inst_VOP3__V_CMPX_TRU_F16::Inst_VOP3__V_CMPX_TRU_F16
Inst_VOP3__V_CMPX_TRU_F16(InFmt_VOP3A *)
Definition: instructions.cc:18275
gem5::VegaISA::Inst_SOPP__S_BRANCH::~Inst_SOPP__S_BRANCH
~Inst_SOPP__S_BRANCH()
Definition: instructions.cc:4368
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38872
gem5::VegaISA::Inst_DS__DS_APPEND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37997
gem5::VegaISA::Inst_VOP3__V_MED3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31267
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_DEC::~Inst_FLAT__FLAT_ATOMIC_DEC
~Inst_FLAT__FLAT_ATOMIC_DEC()
Definition: instructions.cc:45284
gem5::VegaISA::Inst_VOP1__V_LOG_LEGACY_F32::~Inst_VOP1__V_LOG_LEGACY_F32
~Inst_VOP1__V_LOG_LEGACY_F32()
Definition: instructions.cc:10404
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CL::Inst_MIMG__IMAGE_SAMPLE_CL
Inst_MIMG__IMAGE_SAMPLE_CL(InFmt_MIMG *)
Definition: instructions.cc:42583
gem5::VegaISA::Inst_VOP3__V_CMPX_U_F32::~Inst_VOP3__V_CMPX_U_F32
~Inst_VOP3__V_CMPX_U_F32()
Definition: instructions.cc:19160
gem5::VegaISA::Inst_FLAT__FLAT_STORE_SHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:44383
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2()
Definition: instructions.cc:41218
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F32::~Inst_VOPC__V_CMP_NEQ_F32
~Inst_VOPC__V_CMP_NEQ_F32()
Definition: instructions.cc:12063
gem5::VegaISA::Inst_DS__DS_MSKOR_B64::~Inst_DS__DS_MSKOR_B64
~Inst_DS__DS_MSKOR_B64()
Definition: instructions.cc:36446
gem5::VegaISA::Inst_VOP3__V_LDEXP_F64::~Inst_VOP3__V_LDEXP_F64
~Inst_VOP3__V_LDEXP_F64()
Definition: instructions.cc:33253
gem5::VegaISA::Inst_DS__DS_INC_U64::Inst_DS__DS_INC_U64
Inst_DS__DS_INC_U64(InFmt_DS *)
Definition: instructions.cc:36251
gem5::VegaISA::Inst_VOPC__V_CMP_LE_F64::~Inst_VOPC__V_CMP_LE_F64
~Inst_VOPC__V_CMP_LE_F64()
Definition: instructions.cc:12829
gem5::VegaISA::Inst_SOPC__S_SET_GPR_IDX_ON::Inst_SOPC__S_SET_GPR_IDX_ON
Inst_SOPC__S_SET_GPR_IDX_ON(InFmt_SOPC *)
Definition: instructions.cc:4109
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F32::Inst_VOPC__V_CMP_EQ_F32
Inst_VOPC__V_CMP_EQ_F32(InFmt_VOPC *)
Definition: instructions.cc:11678
gem5::VegaISA::Inst_VOP3__V_INTERP_P1LL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32871
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U64::~Inst_VOPC__V_CMPX_NE_U64
~Inst_VOPC__V_CMPX_NE_U64()
Definition: instructions.cc:16886
gem5::VegaISA::Inst_SOPP__S_SET_GPR_IDX_OFF::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5017
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I64::~Inst_VOP3__V_CMPX_EQ_I64
~Inst_VOP3__V_CMPX_EQ_I64()
Definition: instructions.cc:24557
gem5::VegaISA::Inst_VOPC__V_CMPX_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11504
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::Inst_MUBUF__BUFFER_ATOMIC_OR_X2
Inst_MUBUF__BUFFER_ATOMIC_OR_X2(InFmt_MUBUF *)
Definition: instructions.cc:41177
gem5::VegaISA::Inst_VOP3__V_CMPX_F_U32::~Inst_VOP3__V_CMPX_F_U32
~Inst_VOP3__V_CMPX_F_U32()
Definition: instructions.cc:23502
gem5::VegaISA::Inst_VOP3__V_MIN_F64::~Inst_VOP3__V_MIN_F64
~Inst_VOP3__V_MIN_F64()
Definition: instructions.cc:33141
gem5::VegaISA::Inst_VOP3__V_SQRT_F64::~Inst_VOP3__V_SQRT_F64
~Inst_VOP3__V_SQRT_F64()
Definition: instructions.cc:29122
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42655
gem5::VegaISA::Inst_VOP3__V_WRITELANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33545
gem5::VegaISA::Inst_VOP2__V_ADD_F32::~Inst_VOP2__V_ADD_F32
~Inst_VOP2__V_ADD_F32()
Definition: instructions.cc:6064
gem5::VegaISA::Inst_VOP1__V_RNDNE_F64::Inst_VOP1__V_RNDNE_F64
Inst_VOP1__V_RNDNE_F64(InFmt_VOP1 *)
Definition: instructions.cc:8973
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28156
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41916
gem5::VegaISA::Inst_VOP3__V_SUBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27504
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_U16::~Inst_VOP3__V_CMPX_GE_U16
~Inst_VOP3__V_CMPX_GE_U16()
Definition: instructions.cc:22447
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SMIN::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44956
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O::~Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O
~Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O()
Definition: instructions.cc:43157
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::Inst_MUBUF__BUFFER_ATOMIC_SMAX
Inst_MUBUF__BUFFER_ATOMIC_SMAX(InFmt_MUBUF *)
Definition: instructions.cc:40694
gem5::VegaISA::Inst_DS::instData
InFmt_DS instData
Definition: op_encodings.hh:634
gem5::VegaISA::Inst_VOP3__V_FMA_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30684
gem5::VegaISA::Inst_VOPC__V_CMP_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13848
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41750
gem5::VegaISA::Inst_VOP3__V_INTERP_P2_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32928
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5712
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ(InFmt_MTBUF *)
Definition: instructions.cc:41360
gem5::VegaISA::Inst_SOP1__S_BITSET1_B32::Inst_SOP1__S_BITSET1_B32
Inst_SOP1__S_BITSET1_B32(InFmt_SOP1 *)
Definition: instructions.cc:2913
gem5::VegaISA::Inst_VOP3__V_CMP_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17772
gem5::VegaISA::Inst_VOP2__V_MIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7832
gem5::VegaISA::InFmt_VOPC::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1836
gem5::VegaISA::Inst_VOP3__V_COS_F32::~Inst_VOP3__V_COS_F32
~Inst_VOP3__V_COS_F32()
Definition: instructions.cc:29206
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::Inst_MUBUF__BUFFER_STORE_DWORDX4
Inst_MUBUF__BUFFER_STORE_DWORDX4(InFmt_MUBUF *)
Definition: instructions.cc:40281
gem5::VegaISA::Inst_DS__DS_MAX_RTN_U32::~Inst_DS__DS_MAX_RTN_U32
~Inst_DS__DS_MAX_RTN_U32()
Definition: instructions.cc:35132
gem5::VegaISA::Inst_VOP3__V_XAD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32241
gem5::VegaISA::Inst_DS__DS_CMPST_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34629
gem5::VegaISA::Inst_SOPP__S_CBRANCH_VCCNZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4525
gem5::VegaISA::Inst_VOPC__V_CMP_U_F16::~Inst_VOPC__V_CMP_U_F16
~Inst_VOPC__V_CMP_U_F16()
Definition: instructions.cc:11124
gem5::VegaISA::Inst_VOP3__V_EXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28777
gem5::VegaISA::Inst_DS__DS_MAX_I64::Inst_DS__DS_MAX_I64
Inst_DS__DS_MAX_I64(InFmt_DS *)
Definition: instructions.cc:36315
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42384
gem5::VegaISA::Inst_VOP3__V_MAX3_F32::~Inst_VOP3__V_MAX3_F32
~Inst_VOP3__V_MAX3_F32()
Definition: instructions.cc:31048
gem5::VegaISA::Inst_VOP2__V_LSHLREV_B32::Inst_VOP2__V_LSHLREV_B32
Inst_VOP2__V_LSHLREV_B32(InFmt_VOP2 *)
Definition: instructions.cc:6706
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41797
gem5::VegaISA::Inst_DS__DS_DEC_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36288
gem5::VegaISA::Inst_VOP3__V_AND_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32470
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORD::Inst_MUBUF__BUFFER_LOAD_DWORD
Inst_MUBUF__BUFFER_LOAD_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:39413
gem5::VegaISA::Inst_VOP3__V_INTERP_P2_F16::~Inst_VOP3__V_INTERP_P2_F16
~Inst_VOP3__V_INTERP_P2_F16()
Definition: instructions.cc:32914
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11051
gem5::VegaISA::Inst_VOP1__V_FFBL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9704
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39076
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX4::~Inst_SMEM__S_STORE_DWORDX4
~Inst_SMEM__S_STORE_DWORDX4()
Definition: instructions.cc:5724
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37613
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Read 1 dword from scalar data cache.
Definition: instructions.cc:5064
gem5::VegaISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5448
gem5::VegaISA::Inst_VOP3__V_ALIGNBYTE_B32::~Inst_VOP3__V_ALIGNBYTE_B32
~Inst_VOP3__V_ALIGNBYTE_B32()
Definition: instructions.cc:30845
gem5::VegaISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::~Inst_DS__DS_WRXCHG2ST64_RTN_B32
~Inst_DS__DS_WRXCHG2ST64_RTN_B32()
Definition: instructions.cc:35278
gem5::VegaISA::Inst_SOPC__S_CMP_LG_U64::~Inst_SOPC__S_CMP_LG_U64
~Inst_SOPC__S_CMP_LG_U64()
Definition: instructions.cc:4170
gem5::VegaISA::Inst_DS__DS_ADD_SRC2_U64::~Inst_DS__DS_ADD_SRC2_U64
~Inst_DS__DS_ADD_SRC2_U64()
Definition: instructions.cc:38028
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5854
gem5::VegaISA::Inst_VOP3__V_CMP_NLG_F64::~Inst_VOP3__V_CMP_NLG_F64
~Inst_VOP3__V_CMP_NLG_F64()
Definition: instructions.cc:19996
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20411
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41505
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
Inst_MIMG__IMAGE_ATOMIC_CMPSWAP(InFmt_MIMG *)
Definition: instructions.cc:42210
gem5::VegaISA::Inst_VOP3__V_RNDNE_F32::~Inst_VOP3__V_RNDNE_F32
~Inst_VOP3__V_RNDNE_F32()
Definition: instructions.cc:28689
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F32::~Inst_VOPC__V_CMPX_LT_F32
~Inst_VOPC__V_CMPX_LT_F32()
Definition: instructions.cc:12192
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::Inst_MIMG__IMAGE_ATOMIC_SMIN
Inst_MIMG__IMAGE_ATOMIC_SMIN(InFmt_MIMG *)
Definition: instructions.cc:42300
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F16::~Inst_VOP3__V_CMPX_F_F16
~Inst_VOP3__V_CMPX_F_F16()
Definition: instructions.cc:17942
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:44177
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_U16::Inst_VOP3__V_CMPX_EQ_U16
Inst_VOP3__V_CMPX_EQ_U16(InFmt_VOP3A *)
Definition: instructions.cc:22255
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5145
gem5::VegaISA::Inst_VOP3__V_MAD_U32_U24::Inst_VOP3__V_MAD_U32_U24
Inst_VOP3__V_MAD_U32_U24(InFmt_VOP3A *)
Definition: instructions.cc:30330
gem5::VegaISA::Inst_VOP2__V_LSHRREV_B16::Inst_VOP2__V_LSHRREV_B16
Inst_VOP2__V_LSHRREV_B16(InFmt_VOP2 *)
Definition: instructions.cc:7724
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U16::Inst_VOP3__V_CMP_NE_U16
Inst_VOP3__V_CMP_NE_U16(InFmt_VOP3A *)
Definition: instructions.cc:21724
gem5::VegaISA::Inst_VOP3__V_CVT_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27601
gem5::VegaISA::Inst_VOP3__V_CMP_F_U64::~Inst_VOP3__V_CMP_F_U64
~Inst_VOP3__V_CMP_F_U64()
Definition: instructions.cc:24158
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_F64::Inst_VOP3__V_CMP_EQ_F64
Inst_VOP3__V_CMP_EQ_F64(InFmt_VOP3A *)
Definition: instructions.cc:19531
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_SUB::Inst_MIMG__IMAGE_ATOMIC_SUB
Inst_MIMG__IMAGE_ATOMIC_SUB(InFmt_MIMG *)
Definition: instructions.cc:42271
gem5::VegaISA::Inst_VOP3__V_CMPX_NLT_F32::~Inst_VOP3__V_CMPX_NLT_F32
~Inst_VOP3__V_CMPX_NLT_F32()
Definition: instructions.cc:19385
gem5::HW_REG_MODE
@ HW_REG_MODE
Definition: hwreg_defines.hh:51
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::~Inst_MUBUF__BUFFER_ATOMIC_DEC
~Inst_MUBUF__BUFFER_ATOMIC_DEC()
Definition: instructions.cc:40887
gem5::VegaISA::Inst_VOP3__V_CMP_O_F64::Inst_VOP3__V_CMP_O_F64
Inst_VOP3__V_CMP_O_F64(InFmt_VOP3A *)
Definition: instructions.cc:19817
gem5::VegaISA::Inst_VOP3__V_CEIL_F64::~Inst_VOP3__V_CEIL_F64
~Inst_VOP3__V_CEIL_F64()
Definition: instructions.cc:28445
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_LZ::Inst_MIMG__IMAGE_SAMPLE_LZ
Inst_MIMG__IMAGE_SAMPLE_LZ(InFmt_MIMG *)
Definition: instructions.cc:42700
gem5::VegaISA::Inst_SOPK__S_CMPK_GE_U32::~Inst_SOPK__S_CMPK_GE_U32
~Inst_SOPK__S_CMPK_GE_U32()
Definition: instructions.cc:1867
gem5::VegaISA::Inst_VOP3__V_DIV_FIXUP_F16::~Inst_VOP3__V_DIV_FIXUP_F16
~Inst_VOP3__V_DIV_FIXUP_F16()
Definition: instructions.cc:32710
gem5::VegaISA::Inst_VOP3__V_SUB_U32::~Inst_VOP3__V_SUB_U32
~Inst_VOP3__V_SUB_U32()
Definition: instructions.cc:27454
gem5::Wavefront::lastInstExec
uint64_t lastInstExec
Definition: wavefront.hh:229
gem5::VegaISA::Inst_SOPK__S_CMPK_LG_I32::~Inst_SOPK__S_CMPK_LG_I32
~Inst_SOPK__S_CMPK_LG_I32()
Definition: instructions.cc:1651
gem5::VegaISA::Inst_VOP3__V_MAC_F32::Inst_VOP3__V_MAC_F32
Inst_VOP3__V_MAC_F32(InFmt_VOP3A *)
Definition: instructions.cc:26354
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F64::Inst_VOPC__V_CMP_EQ_F64
Inst_VOPC__V_CMP_EQ_F64(InFmt_VOPC *)
Definition: instructions.cc:12788
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41614
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39140
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U16::~Inst_VOP3__V_CMPX_GT_U16
~Inst_VOP3__V_CMPX_GT_U16()
Definition: instructions.cc:22355
gem5::VegaISA::Inst_VOP3__V_FMA_F64::~Inst_VOP3__V_FMA_F64
~Inst_VOP3__V_FMA_F64()
Definition: instructions.cc:30677
gem5::VegaISA::Inst_VOP3__V_MUL_HI_U32::Inst_VOP3__V_MUL_HI_U32
Inst_VOP3__V_MUL_HI_U32(InFmt_VOP3A *)
Definition: instructions.cc:33352
gem5::VegaISA::Inst_DS__DS_WRITE_B32::Inst_DS__DS_WRITE_B32
Inst_DS__DS_WRITE_B32(InFmt_DS *)
Definition: instructions.cc:34385
gem5::VegaISA::Inst_VOP3__V_CMP_T_I64::~Inst_VOP3__V_CMP_T_I64
~Inst_VOP3__V_CMP_T_I64()
Definition: instructions.cc:24130
gem5::VegaISA::Inst_MUBUF::extData
InFmt_MUBUF_1 extData
Definition: op_encodings.hh:843
gem5::VegaISA::Inst_VOP3__V_CVT_F32_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27735
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::Inst_FLAT__FLAT_ATOMIC_AND_X2
Inst_FLAT__FLAT_ATOMIC_AND_X2(InFmt_FLAT *)
Definition: instructions.cc:45635
gem5::VegaISA::Inst_VOP1__V_CVT_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8455
gem5::VegaISA::Inst_SOPP__S_CBRANCH_EXECNZ::~Inst_SOPP__S_CBRANCH_EXECNZ
~Inst_SOPP__S_CBRANCH_EXECNZ()
Definition: instructions.cc:4576
gem5::VegaISA::Inst_VOP3__V_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26324
gem5::VegaISA::Inst_VOPC__V_CMPX_U_F16::Inst_VOPC__V_CMPX_U_F16
Inst_VOPC__V_CMPX_U_F16(InFmt_VOPC *)
Definition: instructions.cc:11446
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_USHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:43982
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_I64::Inst_VOP3__V_CMPX_GE_I64
Inst_VOP3__V_CMPX_GE_I64(InFmt_VOP3A *)
Definition: instructions.cc:24733
gem5::VegaISA::Inst_VOPC__V_CMP_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12973
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY(InFmt_MUBUF *)
Definition: instructions.cc:39054
gem5::VegaISA::Inst_VOPC__V_CMPX_NEQ_F16::~Inst_VOPC__V_CMPX_NEQ_F16
~Inst_VOPC__V_CMPX_NEQ_F16()
Definition: instructions.cc:11560
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O::~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O
~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O()
Definition: instructions.cc:43832
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I32_F64::~Inst_VOP1__V_FREXP_EXP_I32_F64
~Inst_VOP1__V_FREXP_EXP_I32_F64()
Definition: instructions.cc:9762
gem5::VegaISA::Inst_VOPC__V_CMP_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11191
gem5::VegaISA::Inst_DS__DS_WRITE_B128::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38488
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39575
gem5::VegaISA::Inst_VOP3__V_MAX3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31055
gem5::VegaISA::Inst_SOPK__S_CMPK_LT_I32::Inst_SOPK__S_CMPK_LT_I32
Inst_SOPK__S_CMPK_LT_I32(InFmt_SOPK *)
Definition: instructions.cc:1726
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I16_F16::Inst_VOP1__V_FREXP_EXP_I16_F16
Inst_VOP1__V_FREXP_EXP_I16_F16(InFmt_VOP1 *)
Definition: instructions.cc:10193
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42472
gem5::VegaISA::Inst_MIMG__IMAGE_STORE::Inst_MIMG__IMAGE_STORE
Inst_MIMG__IMAGE_STORE(InFmt_MIMG *)
Definition: instructions.cc:42031
gem5::VegaISA::Inst_VOPC__V_CMP_LE_I64::Inst_VOPC__V_CMP_LE_I64
Inst_VOPC__V_CMP_LE_I64(InFmt_VOPC *)
Definition: instructions.cc:16025
gem5::VegaISA::Inst_SMEM__S_BUFFER_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5796
gem5::VegaISA::Inst_VOP3__V_CMPX_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20888
gem5::VegaISA::Inst_VOP3__V_CMPX_LG_F32::~Inst_VOP3__V_CMPX_LG_F32
~Inst_VOP3__V_CMPX_LG_F32()
Definition: instructions.cc:19046
gem5::VegaISA::Inst_VOP1__V_CVT_F64_U32::~Inst_VOP1__V_CVT_F64_U32
~Inst_VOP1__V_CVT_F64_U32()
Definition: instructions.cc:8883
gem5::VegaISA::Inst_VOP3__V_LSHL_OR_B32::Inst_VOP3__V_LSHL_OR_B32
Inst_VOP3__V_LSHL_OR_B32(InFmt_VOP3A *)
Definition: instructions.cc:32410
gem5::VegaISA::Inst_VOP2__V_MIN_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7917
gem5::VegaISA::Inst_VOP2__V_MUL_F32::Inst_VOP2__V_MUL_F32
Inst_VOP2__V_MUL_F32(InFmt_VOP2 *)
Definition: instructions.cc:6221
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F16::Inst_VOPC__V_CMP_CLASS_F16
Inst_VOPC__V_CMP_CLASS_F16(InFmt_VOPC *)
Definition: instructions.cc:10891
gem5::VegaISA::Inst_VOP2__V_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6517
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:45472
gem5::VegaISA::Inst_VOP3__V_CMP_LT_I64::~Inst_VOP3__V_CMP_LT_I64
~Inst_VOP3__V_CMP_LT_I64()
Definition: instructions.cc:23867
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39674
gem5::VegaISA::Inst_VOP3__V_CMPX_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24564
gem5::VegaISA::Inst_DS__DS_ADD_RTN_U64::Inst_DS__DS_ADD_RTN_U64
Inst_DS__DS_ADD_RTN_U64(InFmt_DS *)
Definition: instructions.cc:36765
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F32::Inst_VOPC__V_CMP_NEQ_F32
Inst_VOPC__V_CMP_NEQ_F32(InFmt_VOPC *)
Definition: instructions.cc:12056
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::Inst_MUBUF__BUFFER_STORE_DWORDX2
Inst_MUBUF__BUFFER_STORE_DWORDX2(InFmt_MUBUF *)
Definition: instructions.cc:40089
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F64::~Inst_VOP3__V_CMPX_NLE_F64
~Inst_VOP3__V_CMPX_NLE_F64()
Definition: instructions.cc:21000
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_U32::Inst_DS__DS_MIN_SRC2_U32
Inst_DS__DS_MIN_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:37575
gem5::VegaISA::Inst_SOP1__S_BITSET1_B32::~Inst_SOP1__S_BITSET1_B32
~Inst_SOP1__S_BITSET1_B32()
Definition: instructions.cc:2919
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_I16::Inst_VOPC__V_CMP_EQ_I16
Inst_VOPC__V_CMP_EQ_I16(InFmt_VOPC *)
Definition: instructions.cc:13896
gem5::VegaISA::Inst_VOP3__V_FRACT_F16::~Inst_VOP3__V_FRACT_F16
~Inst_VOP3__V_FRACT_F16()
Definition: instructions.cc:30028
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42869
gem5::VegaISA::Inst_DS__DS_MAX_RTN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36908
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U16::~Inst_VOPC__V_CMPX_GE_U16
~Inst_VOPC__V_CMPX_GE_U16()
Definition: instructions.cc:14825
gem5::VegaISA::Inst_VOP1__V_CVT_F32_UBYTE1::Inst_VOP1__V_CVT_F32_UBYTE1
Inst_VOP1__V_CVT_F32_UBYTE1(InFmt_VOP1 *)
Definition: instructions.cc:8732
gem5::VegaISA::Inst_SOP2__S_BFE_U64::Inst_SOP2__S_BFE_U64
Inst_SOP2__S_BFE_U64(InFmt_SOP2 *)
Definition: instructions.cc:1327
gem5::VegaISA::Inst_VOP1__V_CVT_F32_F64::Inst_VOP1__V_CVT_F32_F64
Inst_VOP1__V_CVT_F32_F64(InFmt_VOP1 *)
Definition: instructions.cc:8636
gem5::VegaISA::Inst_VOP2__V_LSHRREV_B16::~Inst_VOP2__V_LSHRREV_B16
~Inst_VOP2__V_LSHRREV_B16()
Definition: instructions.cc:7730
gem5::VegaISA::Inst_VOP3__V_MUL_LO_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26975
gem5::VegaISA::Inst_SOP2__S_ADD_U32::Inst_SOP2__S_ADD_U32
Inst_SOP2__S_ADD_U32(InFmt_SOP2 *)
Definition: instructions.cc:49
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2()
Definition: instructions.cc:41100
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_I32::Inst_VOPC__V_CMPX_GT_I32
Inst_VOPC__V_CMPX_GT_I32(InFmt_VOPC *)
Definition: instructions.cc:15526
gem5::VegaISA::Inst_VOP3__V_CMP_LE_I64::Inst_VOP3__V_CMP_LE_I64
Inst_VOP3__V_CMP_LE_I64(InFmt_VOP3A *)
Definition: instructions.cc:23948
gem5::VegaISA::Inst_VOP1__V_COS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9570
gem5::VegaISA::Inst_VOP3B
Definition: op_encodings.hh:461
gem5::VegaISA::Inst_VOP3__V_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25828
gem5::VegaISA::Inst_VOP3__V_CVT_OFF_F32_I4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28039
gem5::VegaISA::Inst_SOP2__S_NAND_B32::Inst_SOP2__S_NAND_B32
Inst_SOP2__S_NAND_B32(InFmt_SOP2 *)
Definition: instructions.cc:767
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:43717
gem5::VegaISA::Inst_VOP3__V_SUB_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25277
gem5::VegaISA::Inst_DS__DS_INC_SRC2_U64::~Inst_DS__DS_INC_SRC2_U64
~Inst_DS__DS_INC_SRC2_U64()
Definition: instructions.cc:38094
gem5::VegaISA::Inst_SOP2__S_MUL_HI_U32::Inst_SOP2__S_MUL_HI_U32
Inst_SOP2__S_MUL_HI_U32(InFmt_SOP2 *)
Definition: instructions.cc:1502
gem5::VegaISA::Inst_VOP3__V_CMP_LE_F16::~Inst_VOP3__V_CMP_LE_F16
~Inst_VOP3__V_CMP_LE_F16()
Definition: instructions.cc:17662
gem5::VegaISA::InFmt_VOP_SDWA::DST_SEL
unsigned int DST_SEL
Definition: gpu_decoder.hh:1857
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_B_CL::~Inst_MIMG__IMAGE_GATHER4_B_CL
~Inst_MIMG__IMAGE_GATHER4_B_CL()
Definition: instructions.cc:43273
gem5::VegaISA::Inst_VOP3__V_MAD_U32_U24::~Inst_VOP3__V_MAD_U32_U24
~Inst_VOP3__V_MAD_U32_U24()
Definition: instructions.cc:30337
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U64::Inst_VOPC__V_CMP_LT_U64
Inst_VOPC__V_CMP_LT_U64(InFmt_VOPC *)
Definition: instructions.cc:16213
gem5::VegaISA::Inst_VOPC__V_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15178
gem5::VegaISA::Inst_VOPC::instData
InFmt_VOPC instData
Definition: op_encodings.hh:407
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37569
gem5::VegaISA::Inst_DS__DS_WRXCHG_RTN_B32::Inst_DS__DS_WRXCHG_RTN_B32
Inst_DS__DS_WRXCHG_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35233
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18807
gem5::VegaISA::Inst_VOP3__V_MAD_U64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32147
gem5::VegaISA::Inst_VOP2__V_SUBREV_F16::~Inst_VOP2__V_SUBREV_F16
~Inst_VOP2__V_SUBREV_F16()
Definition: instructions.cc:7444
gem5::VegaISA::Inst_DS__DS_OR_SRC2_B32::~Inst_DS__DS_OR_SRC2_B32
~Inst_DS__DS_OR_SRC2_B32()
Definition: instructions.cc:37646
gem5::VegaISA::Inst_VOP3__V_CMPX_NE_U16::Inst_VOP3__V_CMPX_NE_U16
Inst_VOP3__V_CMPX_NE_U16(InFmt_VOP3A *)
Definition: instructions.cc:22393
gem5::VegaISA::Inst_VOP3__V_CMPX_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17586
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_I16::~Inst_VOP3__V_CMPX_LE_I16
~Inst_VOP3__V_CMPX_LE_I16()
Definition: instructions.cc:21971
gem5::VegaISA::Inst_DS__DS_READ_I16::Inst_DS__DS_READ_I16
Inst_DS__DS_READ_I16(InFmt_DS *)
Definition: instructions.cc:35762
gem5::VegaISA::Inst_SOPC__S_CMP_LG_U64::Inst_SOPC__S_CMP_LG_U64
Inst_SOPC__S_CMP_LG_U64(InFmt_SOPC *)
Definition: instructions.cc:4164
gem5::VegaISA::Inst_VOP3__V_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26234
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17711
gem5::VegaISA::Inst_VOPC__V_CMP_CLASS_F32::Inst_VOPC__V_CMP_CLASS_F32
Inst_VOPC__V_CMP_CLASS_F32(InFmt_VOPC *)
Definition: instructions.cc:10429
gem5::VegaISA::Inst_SOP2__S_ADDC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:206
gem5::VegaISA::Inst_DS__DS_MIN_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37172
gem5::VegaISA::Inst_SOPC__S_CMP_EQ_I32::Inst_SOPC__S_CMP_EQ_I32
Inst_SOPC__S_CMP_EQ_I32(InFmt_SOPC *)
Definition: instructions.cc:3633
gem5::VegaISA::Inst_VOP3__V_ASHRREV_I32::Inst_VOP3__V_ASHRREV_I32
Inst_VOP3__V_ASHRREV_I32(InFmt_VOP3A *)
Definition: instructions.cc:26087
gem5::VegaISA::Inst_VOP3__V_FLOOR_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29951
gem5::VegaISA::Inst_DS__DS_APPEND::Inst_DS__DS_APPEND
Inst_DS__DS_APPEND(InFmt_DS *)
Definition: instructions.cc:37984
gem5::VegaISA::Inst_DS__DS_READ_I8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35674
gem5::VegaISA::Inst_VOP3__V_CMPX_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20320
gem5::VegaISA::Inst_VOP3__V_MQSAD_PK_U16_U8::~Inst_VOP3__V_MQSAD_PK_U16_U8
~Inst_VOP3__V_MQSAD_PK_U16_U8()
Definition: instructions.cc:32097
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32::Inst_SOP1__S_FLBIT_I32
Inst_SOP1__S_FLBIT_I32(InFmt_SOP1 *)
Definition: instructions.cc:2749
gem5::VegaISA::Inst_VOP1__V_BFREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9640
gem5::VegaISA::Inst_VOP3__V_MBCNT_LO_U32_B32::Inst_VOP3__V_MBCNT_LO_U32_B32
Inst_VOP3__V_MBCNT_LO_U32_B32(InFmt_VOP3A *)
Definition: instructions.cc:33614
gem5::VegaISA::Inst_VOP3__V_RSQ_F32::Inst_VOP3__V_RSQ_F32
Inst_VOP3__V_RSQ_F32(InFmt_VOP3A *)
Definition: instructions.cc:28933
gem5::VegaISA::Inst_VOP1__V_RCP_F16::~Inst_VOP1__V_RCP_F16
~Inst_VOP1__V_RCP_F16()
Definition: instructions.cc:10058
gem5::VegaISA::Inst_SOP2__S_BFM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1168
gem5::VegaISA::Inst_VOP3__V_SQRT_F16::Inst_VOP3__V_SQRT_F16
Inst_VOP3__V_SQRT_F16(InFmt_VOP3A *)
Definition: instructions.cc:29790
gem5::VegaISA::Inst_VOPC__V_CMP_GE_I16::Inst_VOPC__V_CMP_GE_I16
Inst_VOPC__V_CMP_GE_I16(InFmt_VOPC *)
Definition: instructions.cc:14028
gem5::VegaISA::Inst_VOP3__V_CMP_TRU_F16::Inst_VOP3__V_CMP_TRU_F16
Inst_VOP3__V_CMP_TRU_F16(InFmt_VOP3A *)
Definition: instructions.cc:17904
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_B_O::~Inst_MIMG__IMAGE_SAMPLE_B_O
~Inst_MIMG__IMAGE_SAMPLE_B_O()
Definition: instructions.cc:42978
gem5::VegaISA::Inst_VOP3__V_TRIG_PREOP_F64::~Inst_VOP3__V_TRIG_PREOP_F64
~Inst_VOP3__V_TRIG_PREOP_F64()
Definition: instructions.cc:33856
gem5::VegaISA::Inst_VOPC__V_CMPX_LE_U16::Inst_VOPC__V_CMPX_LE_U16
Inst_VOPC__V_CMPX_LE_U16(InFmt_VOPC *)
Definition: instructions.cc:14713
gem5::VegaISA::Inst_SOP1__S_BCNT0_I32_B32::Inst_SOP1__S_BCNT0_I32_B32
Inst_SOP1__S_BCNT0_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2461
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::Inst_MUBUF__BUFFER_ATOMIC_UMIN
Inst_MUBUF__BUFFER_ATOMIC_UMIN(InFmt_MUBUF *)
Definition: instructions.cc:40664
gem5::VegaISA::Inst_VOPC__V_CMPX_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12168
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F16::Inst_VOP3__V_CMPX_NGE_F16
Inst_VOP3__V_CMPX_NGE_F16(InFmt_VOP3A *)
Definition: instructions.cc:18143
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_I64::~Inst_VOPC__V_CMPX_EQ_I64
~Inst_VOPC__V_CMPX_EQ_I64()
Definition: instructions.cc:16511
gem5::VegaISA::Inst_SMEM__S_LOAD_DWORDX16::Inst_SMEM__S_LOAD_DWORDX16
Inst_SMEM__S_LOAD_DWORDX16(InFmt_SMEM *)
Definition: instructions.cc:5266
gem5::VegaISA::Inst_DS__DS_INC_SRC2_U32::~Inst_DS__DS_INC_SRC2_U32
~Inst_DS__DS_INC_SRC2_U32()
Definition: instructions.cc:37491
gem5::VegaISA::Inst_VOPC__V_CMP_NLT_F32::~Inst_VOPC__V_CMP_NLT_F32
~Inst_VOPC__V_CMP_NLT_F32()
Definition: instructions.cc:12097
gem5::VegaISA::Inst_SOPP__S_ENDPGM_SAVED::Inst_SOPP__S_ENDPGM_SAVED
Inst_SOPP__S_ENDPGM_SAVED(InFmt_SOPP *)
Definition: instructions.cc:4978
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38647
gem5::VegaISA::Inst_VOP3__V_CMP_GE_U32::Inst_VOP3__V_CMP_GE_U32
Inst_VOP3__V_CMP_GE_U32(InFmt_VOP3A *)
Definition: instructions.cc:23084
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40275
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X(InFmt_MTBUF *)
Definition: instructions.cc:41557
gem5::VegaISA::Inst_VOP2__V_LDEXP_F16::~Inst_VOP2__V_LDEXP_F16
~Inst_VOP2__V_LDEXP_F16()
Definition: instructions.cc:7977
gem5::VegaISA::Inst_SOP2__S_NOR_B32::Inst_SOP2__S_NOR_B32
Inst_SOP2__S_NOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:831
gem5::VegaISA::Inst_VOP3__V_DIV_FMAS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31998
gem5::VegaISA::Inst_DS__DS_AND_B64::Inst_DS__DS_AND_B64
Inst_DS__DS_AND_B64(InFmt_DS *)
Definition: instructions.cc:36378
gem5::VegaISA::Inst_DS__DS_ADD_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35433
gem5::VegaISA::Inst_VOP3__V_MIN_I32::~Inst_VOP3__V_MIN_I32
~Inst_VOP3__V_MIN_I32()
Definition: instructions.cc:25876
gem5::VegaISA::Inst_SOP2__S_ASHR_I32::Inst_SOP2__S_ASHR_I32
Inst_SOP2__S_ASHR_I32(InFmt_SOP2 *)
Definition: instructions.cc:1089
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13783
gem5::VegaISA::Inst_SOPC__S_CMP_LE_U32::Inst_SOPC__S_CMP_LE_U32
Inst_SOPC__S_CMP_LE_U32(InFmt_SOPC *)
Definition: instructions.cc:3941
gem5::VegaISA::Inst_VOP3__V_CMPX_LT_F64::~Inst_VOP3__V_CMPX_LT_F64
~Inst_VOP3__V_CMPX_LT_F64()
Definition: instructions.cc:20345
gem5::VegaISA::Inst_MIMG__IMAGE_GET_RESINFO::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:42174
gem5::VegaISA::Inst_VOP2__V_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6071
gem5::VegaISA::Inst_VOP1__V_EXP_F32::Inst_VOP1__V_EXP_F32
Inst_VOP1__V_EXP_F32(InFmt_VOP1 *)
Definition: instructions.cc:9201
gem5::VegaISA::Inst_VOP1__V_RCP_IFLAG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9313
gem5::VegaISA::Inst_SOP2__S_ANDN2_B32::Inst_SOP2__S_ANDN2_B32
Inst_SOP2__S_ANDN2_B32(InFmt_SOP2 *)
Definition: instructions.cc:639
gem5::VegaISA::Inst_VOP3__V_CMP_CLASS_F16::~Inst_VOP3__V_CMP_CLASS_F16
~Inst_VOP3__V_CMP_CLASS_F16()
Definition: instructions.cc:17532
gem5::VegaISA::InFmt_VOP_SDWA::SRC1_SEXT
unsigned int SRC1_SEXT
Definition: gpu_decoder.hh:1868
gem5::VegaISA::Inst_SOP2__S_XOR_B32::Inst_SOP2__S_XOR_B32
Inst_SOP2__S_XOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:575
gem5::VegaISA::Inst_VOP1__V_CVT_FLR_I32_F32::~Inst_VOP1__V_CVT_FLR_I32_F32
~Inst_VOP1__V_CVT_FLR_I32_F32()
Definition: instructions.cc:8590
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41516
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40837
gem5::VegaISA::Inst_VOP3__V_CMPX_NGT_F32::Inst_VOP3__V_CMPX_NGT_F32
Inst_VOP3__V_CMPX_NGT_F32(InFmt_VOP3A *)
Definition: instructions.cc:19265
gem5::VegaISA::Inst_VOP3__V_MAX_F32::Inst_VOP3__V_MAX_F32
Inst_VOP3__V_MAX_F32(InFmt_VOP3A *)
Definition: instructions.cc:25814
gem5::VegaISA::Inst_VOPC__V_CMPX_NE_U32::~Inst_VOPC__V_CMPX_NE_U32
~Inst_VOPC__V_CMPX_NE_U32()
Definition: instructions.cc:15838
gem5::VegaISA::InFmt_FLAT
Definition: gpu_decoder.hh:1643
gem5::VegaISA::Inst_DS__DS_MAX_U32::Inst_DS__DS_MAX_U32
Inst_DS__DS_MAX_U32(InFmt_DS *)
Definition: instructions.cc:34235
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:38743
gem5::VegaISA::Inst_VOP3__V_CMP_F_F16::~Inst_VOP3__V_CMP_F_F16
~Inst_VOP3__V_CMP_F_F16()
Definition: instructions.cc:17599
gem5::VegaISA::Inst_SMEM__S_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5649
gem5::VegaISA::Inst_SOPK__S_CMOVK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1603
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW(InFmt_MUBUF *)
Definition: instructions.cc:39124
gem5::VegaISA::Inst_VOP3__V_CVT_F32_F16::Inst_VOP3__V_CVT_F32_F16
Inst_VOP3__V_CVT_F32_F16(InFmt_VOP3A *)
Definition: instructions.cc:27922
gem5::VegaISA::processSDWA_dst
void processSDWA_dst(InFmt_VOP_SDWA sdwaInst, T &dst, T &origDst)
processSDWA_dst is a helper function for implementing sub d-word addressing instructions for the dst ...
Definition: inst_util.hh:890
gem5::VegaISA::Inst_DS__DS_MIN_RTN_U32::~Inst_DS__DS_MIN_RTN_U32
~Inst_DS__DS_MIN_RTN_U32()
Definition: instructions.cc:35111
gem5::VegaISA::Inst_VOP3__V_CMPX_LE_U32::~Inst_VOP3__V_CMPX_LE_U32
~Inst_VOP3__V_CMPX_LE_U32()
Definition: instructions.cc:23625
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::~Inst_FLAT__FLAT_ATOMIC_SWAP_X2
~Inst_FLAT__FLAT_ATOMIC_SWAP_X2()
Definition: instructions.cc:45313
gem5::VegaISA::Inst_VOP2__V_SUBREV_F16::Inst_VOP2__V_SUBREV_F16
Inst_VOP2__V_SUBREV_F16(InFmt_VOP2 *)
Definition: instructions.cc:7437
gem5::VegaISA::InFmt_VOP2::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1803
gem5::VegaISA::Inst_VOP3__V_MUL_HI_I32_I24::~Inst_VOP3__V_MUL_HI_I32_I24
~Inst_VOP3__V_MUL_HI_I32_I24()
Definition: instructions.cc:25628
gem5::VegaISA::Inst_VOP2__V_SUB_F16::~Inst_VOP2__V_SUB_F16
~Inst_VOP2__V_SUB_F16()
Definition: instructions.cc:7422
gem5::VegaISA::Inst_VOP3__V_CMP_LG_F16::Inst_VOP3__V_CMP_LG_F16
Inst_VOP3__V_CMP_LG_F16(InFmt_VOP3A *)
Definition: instructions.cc:17696
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:45745
gem5::VegaISA::Inst_VOP3__V_CVT_F32_UBYTE3::~Inst_VOP3__V_CVT_F32_UBYTE3
~Inst_VOP3__V_CVT_F32_UBYTE3()
Definition: instructions.cc:28269
gem5::VegaISA::Inst_VOP3__V_DIV_FMAS_F64::~Inst_VOP3__V_DIV_FMAS_F64
~Inst_VOP3__V_DIV_FMAS_F64()
Definition: instructions.cc:31990
gem5::VegaISA::Inst_VOPC__V_CMP_F_I32::Inst_VOPC__V_CMP_F_I32
Inst_VOPC__V_CMP_F_I32(InFmt_VOPC *)
Definition: instructions.cc:14883
gem5::VegaISA::Inst_VOP3__V_CMPX_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20648
gem5::VegaISA::Inst_VOP3__V_CMPX_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18225
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::~Inst_MIMG__IMAGE_GATHER4_C_LZ
~Inst_MIMG__IMAGE_GATHER4_C_LZ()
Definition: instructions.cc:43411
gem5::Wavefront::dropFetch
bool dropFetch
Definition: wavefront.hh:112
gem5::VegaISA::Inst_VOP3__V_MAD_I16::Inst_VOP3__V_MAD_I16
Inst_VOP3__V_MAD_I16(InFmt_VOP3A *)
Definition: instructions.cc:32571
gem5::VegaISA::Inst_VOP3__V_CMP_NE_U16::~Inst_VOP3__V_CMP_NE_U16
~Inst_VOP3__V_CMP_NE_U16()
Definition: instructions.cc:21731
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_U32::Inst_DS__DS_MAX_SRC2_U32
Inst_DS__DS_MAX_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:37597
gem5::VegaISA::Inst_SOPP__S_CBRANCH_VCCNZ::~Inst_SOPP__S_CBRANCH_VCCNZ
~Inst_SOPP__S_CBRANCH_VCCNZ()
Definition: instructions.cc:4517
gem5::VegaISA::Inst_MIMG__IMAGE_ATOMIC_DEC::Inst_MIMG__IMAGE_ATOMIC_DEC
Inst_MIMG__IMAGE_ATOMIC_DEC(InFmt_MIMG *)
Definition: instructions.cc:42536
gem5::VegaISA::Inst_DS__DS_DEC_U32::~Inst_DS__DS_DEC_U32
~Inst_DS__DS_DEC_U32()
Definition: instructions.cc:34156
gem5::VegaISA::Inst_SOP1__S_MOVRELD_B32::~Inst_SOP1__S_MOVRELD_B32
~Inst_SOP1__S_MOVRELD_B32()
Definition: instructions.cc:3479
gem5::VegaISA::Inst_VOP3__V_CMP_NLT_F64::Inst_VOP3__V_CMP_NLT_F64
Inst_VOP3__V_CMP_NLT_F64(InFmt_VOP3A *)
Definition: instructions.cc:20217
gem5::VegaISA::Inst_VOP3__V_CMPX_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24994
gem5::VegaISA::Inst_VOPC__V_CMPX_NLT_F64::~Inst_VOPC__V_CMPX_NLT_F64
~Inst_VOPC__V_CMPX_NLT_F64()
Definition: instructions.cc:13776
gem5::VegaISA::Inst_VOP1__V_FFBH_I32::Inst_VOP1__V_FFBH_I32
Inst_VOP1__V_FFBH_I32(InFmt_VOP1 *)
Definition: instructions.cc:9722
gem5::VegaISA::Inst_SOP1__S_MOV_B32::~Inst_SOP1__S_MOV_B32
~Inst_SOP1__S_MOV_B32()
Definition: instructions.cc:2176
gem5::VegaISA::Inst_VOP3__V_CVT_F16_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29698
gem5::VegaISA::Inst_VOP1__V_EXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10160
gem5::VegaISA::Inst_VOP1__V_FREXP_EXP_I32_F64::Inst_VOP1__V_FREXP_EXP_I32_F64
Inst_VOP1__V_FREXP_EXP_I32_F64(InFmt_VOP1 *)
Definition: instructions.cc:9754
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:38652
gem5::Shader::impl_kern_end_rel
int impl_kern_end_rel
Definition: shader.hh:227
gem5::VegaISA::Inst_DS__DS_MIN_F32::~Inst_DS__DS_MIN_F32
~Inst_DS__DS_MIN_F32()
Definition: instructions.cc:34641
gem5::VegaISA::Inst_VOP3__V_PERM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32644
gem5::VegaISA::Inst_FLAT__FLAT_ATOMIC_SWAP::Inst_FLAT__FLAT_ATOMIC_SWAP
Inst_FLAT__FLAT_ATOMIC_SWAP(InFmt_FLAT *)
Definition: instructions.cc:44639
gem5::VegaISA::Inst_VOP3__V_CVT_U32_F32::~Inst_VOP3__V_CVT_U32_F32
~Inst_VOP3__V_CVT_U32_F32()
Definition: instructions.cc:27768
gem5::GPUStaticInst::setFlag
void setFlag(Flags flag)
Definition: gpu_static_inst.hh:244
gem5::VegaISA::Inst_DS__DS_CMPST_F32::~Inst_DS__DS_CMPST_F32
~Inst_DS__DS_CMPST_F32()
Definition: instructions.cc:34614
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F32::Inst_VOPC__V_CMPX_LG_F32
Inst_VOPC__V_CMPX_LG_F32(InFmt_VOPC *)
Definition: instructions.cc:12328
gem5::VegaISA::Inst_SMEM::instData
InFmt_SMEM instData
Definition: op_encodings.hh:252
gem5::VegaISA::Inst_VOP3__V_CMPX_NGE_F64::~Inst_VOP3__V_CMPX_NGE_F64
~Inst_VOP3__V_CMPX_NGE_F64()
Definition: instructions.cc:20822
gem5::VegaISA::Inst_VOP3__V_FRACT_F64::Inst_VOP3__V_FRACT_F64
Inst_VOP3__V_FRACT_F64(InFmt_VOP3A *)
Definition: instructions.cc:29523
gem5::VegaISA::Inst_VOP3__V_CMP_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24050
gem5::VegaISA::Inst_SOP1__S_SET_GPR_IDX_IDX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3627
gem5::VegaISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW(InFmt_MTBUF *)
Definition: instructions.cc:41663
gem5::VegaISA::Inst_DS__DS_OR_B64::~Inst_DS__DS_OR_B64
~Inst_DS__DS_OR_B64()
Definition: instructions.cc:36404
gem5::VegaISA::Inst_VOP3__V_LOG_F16::Inst_VOP3__V_LOG_F16
Inst_VOP3__V_LOG_F16(InFmt_VOP3A *)
Definition: instructions.cc:29836
gem5::VegaISA::Inst_VOP1__V_CEIL_F64::Inst_VOP1__V_CEIL_F64
Inst_VOP1__V_CEIL_F64(InFmt_VOP1 *)
Definition: instructions.cc:8940
gem5::VegaISA::Inst_VOPC__V_CMP_GT_I16::~Inst_VOPC__V_CMP_GT_I16
~Inst_VOPC__V_CMP_GT_I16()
Definition: instructions.cc:13968
gem5::VegaISA::Inst_VOPC__V_CMPX_NGT_F64::Inst_VOPC__V_CMPX_NGT_F64
Inst_VOPC__V_CMPX_NGT_F64(InFmt_VOPC *)
Definition: instructions.cc:13660
gem5::VegaISA::Inst_MIMG__IMAGE_GATHER4_LZ::Inst_MIMG__IMAGE_GATHER4_LZ
Inst_MIMG__IMAGE_GATHER4_LZ(InFmt_MIMG *)
Definition: instructions.cc:43286
gem5::VegaISA::Inst_VOP3__V_CMP_EQ_U64::Inst_VOP3__V_CMP_EQ_U64
Inst_VOP3__V_CMP_EQ_U64(InFmt_VOP3A *)
Definition: instructions.cc:24224
gem5::VegaISA::Inst_VOPC__V_CMPX_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11334
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_O::~Inst_MIMG__IMAGE_SAMPLE_C_D_O
~Inst_MIMG__IMAGE_SAMPLE_C_D_O()
Definition: instructions.cc:43077
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ()
Definition: instructions.cc:38826
gem5::VegaISA::Inst_VOP3__V_SUBB_CO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26631
gem5::VegaISA::Inst_VOP3__V_CMP_NGE_F64::Inst_VOP3__V_CMP_NGE_F64
Inst_VOP3__V_CMP_NGE_F64(InFmt_VOP3A *)
Definition: instructions.cc:19931
gem5::VegaISA::Inst_VOP3__V_CVT_PKNORM_U16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33955
gem5::VegaISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL::~Inst_MIMG__IMAGE_SAMPLE_C_D_CL
~Inst_MIMG__IMAGE_SAMPLE_C_D_CL()
Definition: instructions.cc:42784
gem5::VegaISA::Inst_SMEM__S_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5675
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::Inst_MUBUF__BUFFER_LOAD_SBYTE
Inst_MUBUF__BUFFER_LOAD_SBYTE(InFmt_MUBUF *)
Definition: instructions.cc:39254
gem5::X86ISA::addr
Bitfield< 3 > addr
Definition: types.hh:84
gem5::VegaISA::Inst_VOPC__V_CMP_T_U32::~Inst_VOPC__V_CMP_T_U32
~Inst_VOPC__V_CMP_T_U32()
Definition: instructions.cc:15369
gem5::VegaISA::Inst_VOP3__V_MAD_U16::~Inst_VOP3__V_MAD_U16
~Inst_VOP3__V_MAD_U16()
Definition: instructions.cc:32531
gem5::VegaISA::Inst_VOP3__V_CMP_LE_U16::Inst_VOP3__V_CMP_LE_U16
Inst_VOP3__V_CMP_LE_U16(InFmt_VOP3A *)
Definition: instructions.cc:21636
gem5::VegaISA::Inst_VOP3__V_CMPX_O_F32::~Inst_VOP3__V_CMPX_O_F32
~Inst_VOP3__V_CMPX_O_F32()
Definition: instructions.cc:19121
gem5::VegaISA::Inst_VOP3__V_DIV_SCALE_F64::~Inst_VOP3__V_DIV_SCALE_F64
~Inst_VOP3__V_DIV_SCALE_F64()
Definition: instructions.cc:31838
gem5::VegaISA::Inst_VOP3__V_EXP_LEGACY_F32::~Inst_VOP3__V_EXP_LEGACY_F32
~Inst_VOP3__V_EXP_LEGACY_F32()
Definition: instructions.cc:30088
gem5::VegaISA::InFmt_VOP3B
Definition: gpu_decoder.hh:1827
gem5::VegaISA::Inst_VOPC__V_CMP_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11692
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW()
Definition: instructions.cc:38730
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38932
gem5::VegaISA::Inst_DS__DS_MAX_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38216
gem5::VegaISA::Inst_DS__DS_CMPST_RTN_F32::Inst_DS__DS_CMPST_RTN_F32
Inst_DS__DS_CMPST_RTN_F32(InFmt_DS *)
Definition: instructions.cc:35317
gem5::VegaISA::Inst_VOPC__V_CMPX_LT_F16::~Inst_VOPC__V_CMPX_LT_F16
~Inst_VOPC__V_CMPX_LT_F16()
Definition: instructions.cc:11306
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39729
gem5::VegaISA::Inst_VOP3__V_ADD_F64::Inst_VOP3__V_ADD_F64
Inst_VOP3__V_ADD_F64(InFmt_VOP3A *)
Definition: instructions.cc:32934
gem5::VegaISA::Inst_MIMG__IMAGE_LOAD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41860
gem5::VegaISA::Inst_MTBUF
Definition: op_encodings.hh:850
gem5::VegaISA::Inst_VOPC__V_CMP_NE_I32::~Inst_VOPC__V_CMP_NE_I32
~Inst_VOPC__V_CMP_NE_I32()
Definition: instructions.cc:15049
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11231
gem5::VegaISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY()
Definition: instructions.cc:41743
gem5::VegaISA::InFmt_VOP_DPP::BC
unsigned int BC
Definition: gpu_decoder.hh:1846
gem5::VegaISA::InFmt_VOP_DPP::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1843
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY()
Definition: instructions.cc:38925
gem5::VegaISA::Inst_VOP3__V_ADD_CO_U32::~Inst_VOP3__V_ADD_CO_U32
~Inst_VOP3__V_ADD_CO_U32()
Definition: instructions.cc:26420
gem5::VegaISA::Inst_VOPC__V_CMP_NEQ_F64::~Inst_VOPC__V_CMP_NEQ_F64
~Inst_VOPC__V_CMP_NEQ_F64()
Definition: instructions.cc:13173
gem5::VegaISA::findFirstOne
ScalarRegI32 findFirstOne(T val)
Definition: inst_util.hh:141
gem5::VegaISA::Inst_VOP3__V_MED3_U32::Inst_VOP3__V_MED3_U32
Inst_VOP3__V_MED3_U32(InFmt_VOP3A *)
Definition: instructions.cc:31299
gem5::VegaISA::processSDWA_src
void processSDWA_src(InFmt_VOP_SDWA sdwaInst, T &src0, T &origSrc0)
processSDWA_src is a helper function for implementing sub d-word addressing instructions for the src ...
Definition: inst_util.hh:834
gem5::VegaISA::Inst_SOP2__S_MUL_HI_I32::Inst_SOP2__S_MUL_HI_I32
Inst_SOP2__S_MUL_HI_I32(InFmt_SOP2 *)
Definition: instructions.cc:1532
gem5::VegaISA::Inst_VOP2__V_OR_B32::Inst_VOP2__V_OR_B32
Inst_VOP2__V_OR_B32(InFmt_VOP2 *)
Definition: instructions.cc:6841
gem5::VegaISA::Inst_DS__DS_MIN_F64::Inst_DS__DS_MIN_F64
Inst_DS__DS_MIN_F64(InFmt_DS *)
Definition: instructions.cc:36713
gem5::VegaISA::Inst_VOP3__V_CVT_PKACCUM_U8_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32770
gem5::VegaISA::Inst_VOP3__V_FREXP_MANT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29496
gem5::Wavefront::simdId
const int simdId
Definition: wavefront.hh:99
gem5::VegaISA::Inst_VOPC__V_CMP_LE_U32::~Inst_VOPC__V_CMP_LE_U32
~Inst_VOPC__V_CMP_LE_U32()
Definition: instructions.cc:15237
gem5::VegaISA::Inst_VOPC__V_CMPX_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15675
gem5::VegaISA::Inst_DS__DS_WRXCHG_RTN_B64::Inst_DS__DS_WRXCHG_RTN_B64
Inst_DS__DS_WRXCHG_RTN_B64(InFmt_DS *)
Definition: instructions.cc:37041
gem5::VegaISA::Inst_VOPC__V_CMPX_GE_U32::~Inst_VOPC__V_CMPX_GE_U32
~Inst_VOPC__V_CMPX_GE_U32()
Definition: instructions.cc:15873
gem5::VegaISA::Inst_VOP3__V_CMP_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21533
gem5::VegaISA::Inst_DS__DS_MIN_U32::Inst_DS__DS_MIN_U32
Inst_DS__DS_MIN_U32(InFmt_DS *)
Definition: instructions.cc:34214
gem5::VegaISA::Inst_VOPC__V_CMPX_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11397
gem5::VegaISA::Inst_VOP2__V_SUBREV_U16::Inst_VOP2__V_SUBREV_U16
Inst_VOP2__V_SUBREV_U16(InFmt_VOP2 *)
Definition: instructions.cc:7621
gem5::VegaISA::Inst_MUBUF__BUFFER_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40018
gem5::VegaISA::Inst_DS__DS_MIN_SRC2_U64::~Inst_DS__DS_MIN_SRC2_U64
~Inst_DS__DS_MIN_SRC2_U64()
Definition: instructions.cc:38183
gem5::VegaISA::Inst_VOP1__V_CEIL_F32::~Inst_VOP1__V_CEIL_F32
~Inst_VOP1__V_CEIL_F32()
Definition: instructions.cc:9110
gem5::VegaISA::Inst_VOP2__V_MAX_I16::Inst_VOP2__V_MAX_I16
Inst_VOP2__V_MAX_I16(InFmt_VOP2 *)
Definition: instructions.cc:7871
gem5::VegaISA::Inst_VOPC__V_CMPX_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16858
gem5::VegaISA::Inst_VOPC__V_CMP_NE_U32::Inst_VOPC__V_CMP_NE_U32
Inst_VOPC__V_CMP_NE_U32(InFmt_VOPC *)
Definition: instructions.cc:15297
gem5::VegaISA::Inst_SOPC__S_SET_GPR_IDX_ON::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4130
gem5::VegaISA::Inst_SOP2__S_ADD_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:133
gem5::VegaISA::Inst_FLAT__FLAT_LOAD_DWORDX3::~Inst_FLAT__FLAT_LOAD_DWORDX3
~Inst_FLAT__FLAT_LOAD_DWORDX3()
Definition: instructions.cc:44150
gem5::VegaISA::Inst_SOP1__S_FLBIT_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2736
gem5::VegaISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39008
gem5::VegaISA::Inst_DS__DS_RSUB_SRC2_U32::~Inst_DS__DS_RSUB_SRC2_U32
~Inst_DS__DS_RSUB_SRC2_U32()
Definition: instructions.cc:37469
gem5::VegaISA::Inst_DS__DS_GWS_SEMA_V::~Inst_DS__DS_GWS_SEMA_V
~Inst_DS__DS_GWS_SEMA_V()
Definition: instructions.cc:37842
gem5::VegaISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2(InFmt_MUBUF *)
Definition: instructions.cc:41027
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::Inst_MUBUF__BUFFER_WBINVL1_VOL
Inst_MUBUF__BUFFER_WBINVL1_VOL(InFmt_MUBUF *)
Definition: instructions.cc:40458
gem5::VegaISA::Inst_VOPC__V_CMP_GT_F64::~Inst_VOPC__V_CMP_GT_F64
~Inst_VOPC__V_CMP_GT_F64()
Definition: instructions.cc:12863
gem5::VegaISA::Inst_SOP1__S_SEXT_I32_I16::Inst_SOP1__S_SEXT_I32_I16
Inst_SOP1__S_SEXT_I32_I16(InFmt_SOP1 *)
Definition: instructions.cc:2834
gem5::VegaISA::Inst_VOP3__V_READLANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33502
gem5::VegaISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40480
gem5::VegaISA::Inst_SOP2__S_NOR_B32::~Inst_SOP2__S_NOR_B32
~Inst_SOP2__S_NOR_B32()
Definition: instructions.cc:837
gem5::VegaISA::Inst_DS__DS_OR_RTN_B32::Inst_DS__DS_OR_RTN_B32
Inst_DS__DS_OR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:35169
gem5::VegaISA::Inst_VOP3__V_LDEXP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33260
gem5::VegaISA::Inst_SOP1__S_BITSET1_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2926
gem5::VegaISA::Inst_SMEM__S_ATC_PROBE::~Inst_SMEM__S_ATC_PROBE
~Inst_SMEM__S_ATC_PROBE()
Definition: instructions.cc:5987

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