gem5  v20.1.0.0
instructions.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2017 Advanced Micro Devices, Inc.
3  * All rights reserved.
4  *
5  * For use for simulation and test purposes only
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice,
11  * this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright notice,
14  * this list of conditions and the following disclaimer in the documentation
15  * and/or other materials provided with the distribution.
16  *
17  * 3. Neither the name of the copyright holder nor the names of its
18  * contributors may be used to endorse or promote products derived from this
19  * software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  *
33  * Authors: Anthony Gutierrez
34  */
35 
37 
38 #include <cmath>
39 
41 #include "debug/GCN3.hh"
42 #include "debug/GPUSync.hh"
43 #include "gpu-compute/shader.hh"
44 
45 namespace Gcn3ISA
46 {
47 
49  : Inst_SOP2(iFmt, "s_add_u32")
50  {
51  setFlag(ALU);
52  } // Inst_SOP2__S_ADD_U32
53 
55  {
56  } // ~Inst_SOP2__S_ADD_U32
57 
58  // D.u = S0.u + S1.u;
59  // SCC = (S0.u + S1.u >= 0x100000000ULL ? 1 : 0) is an unsigned
60  // overflow/carry-out.
61  void
63  {
64  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
65  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
66  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
67  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
68 
69  src0.read();
70  src1.read();
71 
72  sdst = src0.rawData() + src1.rawData();
73  scc = ((ScalarRegU64)src0.rawData() + (ScalarRegU64)src1.rawData())
74  >= 0x100000000ULL ? 1 : 0;
75 
76  sdst.write();
77  scc.write();
78  }
79 
81  : Inst_SOP2(iFmt, "s_sub_u32")
82  {
83  setFlag(ALU);
84  } // Inst_SOP2__S_SUB_U32
85 
87  {
88  } // ~Inst_SOP2__S_SUB_U32
89 
90  // D.u = S0.u - S1.u;
91  // SCC = (S1.u > S0.u ? 1 : 0) is an unsigned overflow or carry-out.
92  void
94  {
95  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
96  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
97  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
98  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
99 
100  src0.read();
101  src1.read();
102 
103  sdst = src0.rawData() - src1.rawData();
104  scc = (src1.rawData() > src0.rawData()) ? 1 : 0;
105 
106  sdst.write();
107  scc.write();
108  }
109 
111  : Inst_SOP2(iFmt, "s_add_i32")
112  {
113  setFlag(ALU);
114  } // Inst_SOP2__S_ADD_I32
115 
117  {
118  } // ~Inst_SOP2__S_ADD_I32
119 
120  // D.i = S0.i + S1.i;
121  // SCC = (S0.u[31] == S1.u[31] && S0.u[31] != D.u[31]) is a signed
122  // overflow.
123  void
125  {
126  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
127  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
128  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
129  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
130 
131  src0.read();
132  src1.read();
133 
134  sdst = src0.rawData() + src1.rawData();
135  scc = (bits(src0.rawData(), 31) == bits(src1.rawData(), 31)
136  && bits(src0.rawData(), 31) != bits(sdst.rawData(), 31))
137  ? 1 : 0;
138 
139  sdst.write();
140  scc.write();
141  }
142 
144  : Inst_SOP2(iFmt, "s_sub_i32")
145  {
146  setFlag(ALU);
147  } // Inst_SOP2__S_SUB_I32
148 
150  {
151  } // ~Inst_SOP2__S_SUB_I32
152 
153  // D.i = S0.i - S1.i;
154  // SCC = (S0.u[31] != S1.u[31] && S0.u[31] != D.u[31]) is a signed
155  // overflow.
156  void
158  {
159  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
160  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
161  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
162  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
163 
164  src0.read();
165  src1.read();
166 
167  sdst = src0.rawData() - src1.rawData();
168  scc = (bits(src0.rawData(), 31) != bits(src1.rawData(), 31)
169  && bits(src0.rawData(), 31) != bits(sdst.rawData(), 31)) ? 1 : 0;
170 
171  sdst.write();
172  scc.write();
173  }
174 
176  : Inst_SOP2(iFmt, "s_addc_u32")
177  {
178  setFlag(ALU);
179  } // Inst_SOP2__S_ADDC_U32
180 
182  {
183  } // ~Inst_SOP2__S_ADDC_U32
184 
185  // D.u = S0.u + S1.u + SCC;
186  // SCC = (S0.u + S1.u + SCC >= 0x100000000ULL ? 1 : 0) is an unsigned
187  // overflow.
188  void
190  {
191  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
192  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
193  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
194  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
195 
196  src0.read();
197  src1.read();
198  scc.read();
199 
200  sdst = src0.rawData() + src1.rawData() + scc.rawData();
201  scc = ((ScalarRegU64)src0.rawData() + (ScalarRegU64)src1.rawData()
202  + (ScalarRegU64)scc.rawData()) >= 0x100000000ULL ? 1 : 0;
203 
204  sdst.write();
205  scc.write();
206  }
207 
209  : Inst_SOP2(iFmt, "s_subb_u32")
210  {
211  setFlag(ALU);
212  } // Inst_SOP2__S_SUBB_U32
213 
215  {
216  } // ~Inst_SOP2__S_SUBB_U32
217 
218  // D.u = S0.u - S1.u - SCC;
219  // SCC = (S1.u + SCC > S0.u ? 1 : 0) is an unsigned overflow.
220  void
222  {
223  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
224  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
225  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
226  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
227 
228  src0.read();
229  src1.read();
230  scc.read();
231 
232  sdst = src0.rawData() - src1.rawData() - scc.rawData();
233  scc = (src1.rawData() + scc.rawData()) > src0.rawData() ? 1 : 0;
234 
235  sdst.write();
236  scc.write();
237  }
238 
240  : Inst_SOP2(iFmt, "s_min_i32")
241  {
242  setFlag(ALU);
243  } // Inst_SOP2__S_MIN_I32
244 
246  {
247  } // ~Inst_SOP2__S_MIN_I32
248 
249  // D.i = (S0.i < S1.i) ? S0.i : S1.i;
250  // SCC = 1 if S0 is chosen as the minimum value.
251  void
253  {
254  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
255  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
256  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
257  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
258 
259  src0.read();
260  src1.read();
261 
262  sdst = std::min(src0.rawData(), src1.rawData());
263  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
264 
265  sdst.write();
266  scc.write();
267  }
268 
270  : Inst_SOP2(iFmt, "s_min_u32")
271  {
272  setFlag(ALU);
273  } // Inst_SOP2__S_MIN_U32
274 
276  {
277  } // ~Inst_SOP2__S_MIN_U32
278 
279  // D.u = (S0.u < S1.u) ? S0.u : S1.u;
280  // SCC = 1 if S0 is chosen as the minimum value.
281  void
283  {
284  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
285  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
286  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
287  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
288 
289  src0.read();
290  src1.read();
291 
292  sdst = std::min(src0.rawData(), src1.rawData());
293  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
294 
295  sdst.write();
296  scc.write();
297  }
298 
300  : Inst_SOP2(iFmt, "s_max_i32")
301  {
302  setFlag(ALU);
303  } // Inst_SOP2__S_MAX_I32
304 
306  {
307  } // ~Inst_SOP2__S_MAX_I32
308 
309  // D.i = (S0.i > S1.i) ? S0.i : S1.i;
310  // SCC = 1 if S0 is chosen as the maximum value.
311  void
313  {
314  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
315  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
316  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
317  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
318 
319  src0.read();
320  src1.read();
321 
322  sdst = std::max(src0.rawData(), src1.rawData());
323  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
324 
325  sdst.write();
326  scc.write();
327  }
328 
330  : Inst_SOP2(iFmt, "s_max_u32")
331  {
332  setFlag(ALU);
333  } // Inst_SOP2__S_MAX_U32
334 
336  {
337  } // ~Inst_SOP2__S_MAX_U32
338 
339  // D.u = (S0.u > S1.u) ? S0.u : S1.u;
340  // SCC = 1 if S0 is chosen as the maximum value.
341  void
343  {
344  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
345  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
346  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
347  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
348 
349  src0.read();
350  src1.read();
351 
352  sdst = std::max(src0.rawData(), src1.rawData());
353  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
354 
355  sdst.write();
356  scc.write();
357  }
358 
360  : Inst_SOP2(iFmt, "s_cselect_b32")
361  {
362  setFlag(ALU);
363  } // Inst_SOP2__S_CSELECT_B32
364 
366  {
367  } // ~Inst_SOP2__S_CSELECT_B32
368 
369  // D.u = SCC ? S0.u : S1.u (conditional select).
370  void
372  {
373  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
374  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
375  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
376  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
377 
378  src0.read();
379  src1.read();
380  scc.read();
381 
382  sdst = scc.rawData() ? src0.rawData() : src1.rawData();
383 
384  sdst.write();
385  }
386 
388  : Inst_SOP2(iFmt, "s_cselect_b64")
389  {
390  setFlag(ALU);
391  } // Inst_SOP2__S_CSELECT_B64
392 
394  {
395  } // ~Inst_SOP2__S_CSELECT_B64
396 
397  // D.u64 = SCC ? S0.u64 : S1.u64 (conditional select).
398  void
400  {
401  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
402  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
403  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
404  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
405 
406  src0.read();
407  src1.read();
408  scc.read();
409 
410  sdst = scc.rawData() ? src0.rawData() : src1.rawData();
411 
412  sdst.write();
413  }
414 
416  : Inst_SOP2(iFmt, "s_and_b32")
417  {
418  setFlag(ALU);
419  } // Inst_SOP2__S_AND_B32
420 
422  {
423  } // ~Inst_SOP2__S_AND_B32
424 
425  // D.u = S0.u & S1.u;
426  // SCC = 1 if result is non-zero.
427  void
429  {
430  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
431  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
432  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
433  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
434 
435  src0.read();
436  src1.read();
437 
438  sdst = src0.rawData() & src1.rawData();
439  scc = sdst.rawData() ? 1 : 0;
440 
441  sdst.write();
442  scc.write();
443  }
444 
446  : Inst_SOP2(iFmt, "s_and_b64")
447  {
448  setFlag(ALU);
449  } // Inst_SOP2__S_AND_B64
450 
452  {
453  } // ~Inst_SOP2__S_AND_B64
454 
455  // D.u64 = S0.u64 & S1.u64;
456  // SCC = 1 if result is non-zero.
457  void
459  {
460  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
461  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
462  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
463  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
464 
465  src0.read();
466  src1.read();
467 
468  sdst = src0.rawData() & src1.rawData();
469  scc = sdst.rawData() ? 1 : 0;
470 
471  sdst.write();
472  scc.write();
473  }
474 
476  : Inst_SOP2(iFmt, "s_or_b32")
477  {
478  setFlag(ALU);
479  } // Inst_SOP2__S_OR_B32
480 
482  {
483  } // ~Inst_SOP2__S_OR_B32
484 
485  // D.u = S0.u | S1.u;
486  // SCC = 1 if result is non-zero.
487  void
489  {
490  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
491  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
492  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
493  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
494 
495  src0.read();
496  src1.read();
497 
498  sdst = src0.rawData() | src1.rawData();
499  scc = sdst.rawData() ? 1 : 0;
500 
501  sdst.write();
502  scc.write();
503  }
504 
506  : Inst_SOP2(iFmt, "s_or_b64")
507  {
508  setFlag(ALU);
509  } // Inst_SOP2__S_OR_B64
510 
512  {
513  } // ~Inst_SOP2__S_OR_B64
514 
515  // D.u64 = S0.u64 | S1.u64;
516  // SCC = 1 if result is non-zero.
517  void
519  {
520  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
521  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
522  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
523  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
524 
525  src0.read();
526  src1.read();
527 
528  sdst = src0.rawData() | src1.rawData();
529  scc = sdst.rawData() ? 1 : 0;
530 
531  sdst.write();
532  scc.write();
533  }
534 
536  : Inst_SOP2(iFmt, "s_xor_b32")
537  {
538  setFlag(ALU);
539  } // Inst_SOP2__S_XOR_B32
540 
542  {
543  } // ~Inst_SOP2__S_XOR_B32
544 
545  // D.u = S0.u ^ S1.u;
546  // SCC = 1 if result is non-zero.
547  void
549  {
550  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
551  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
552  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
553  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
554 
555  src0.read();
556  src1.read();
557 
558  sdst = src0.rawData() ^ src1.rawData();
559  scc = sdst.rawData() ? 1 : 0;
560 
561  sdst.write();
562  scc.write();
563  }
564 
566  : Inst_SOP2(iFmt, "s_xor_b64")
567  {
568  setFlag(ALU);
569  } // Inst_SOP2__S_XOR_B64
570 
572  {
573  } // ~Inst_SOP2__S_XOR_B64
574 
575  // D.u64 = S0.u64 ^ S1.u64;
576  // SCC = 1 if result is non-zero.
577  void
579  {
580  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
581  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
582  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
583  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
584 
585  src0.read();
586  src1.read();
587 
588  sdst = src0.rawData() ^ src1.rawData();
589  scc = sdst.rawData() ? 1 : 0;
590 
591  sdst.write();
592  scc.write();
593  }
594 
596  : Inst_SOP2(iFmt, "s_andn2_b32")
597  {
598  setFlag(ALU);
599  } // Inst_SOP2__S_ANDN2_B32
600 
602  {
603  } // ~Inst_SOP2__S_ANDN2_B32
604 
605  // D.u = S0.u & ~S1.u;
606  // SCC = 1 if result is non-zero.
607  void
609  {
610  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
611  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
612  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
613  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
614 
615  src0.read();
616  src1.read();
617 
618  sdst = src0.rawData() &~ src1.rawData();
619  scc = sdst.rawData() ? 1 : 0;
620 
621  sdst.write();
622  scc.write();
623  }
624 
626  : Inst_SOP2(iFmt, "s_andn2_b64")
627  {
628  setFlag(ALU);
629  } // Inst_SOP2__S_ANDN2_B64
630 
632  {
633  } // ~Inst_SOP2__S_ANDN2_B64
634 
635  // D.u64 = S0.u64 & ~S1.u64;
636  // SCC = 1 if result is non-zero.
637  void
639  {
640  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
641  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
642  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
643  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
644 
645  src0.read();
646  src1.read();
647 
648  sdst = src0.rawData() &~ src1.rawData();
649  scc = sdst.rawData() ? 1 : 0;
650 
651  sdst.write();
652  scc.write();
653  }
654 
656  : Inst_SOP2(iFmt, "s_orn2_b32")
657  {
658  setFlag(ALU);
659  } // Inst_SOP2__S_ORN2_B32
660 
662  {
663  } // ~Inst_SOP2__S_ORN2_B32
664 
665  // D.u = S0.u | ~S1.u;
666  // SCC = 1 if result is non-zero.
667  void
669  {
670  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
671  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
672  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
673  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
674 
675  src0.read();
676  src1.read();
677 
678  sdst = src0.rawData() |~ src1.rawData();
679  scc = sdst.rawData() ? 1 : 0;
680 
681  sdst.write();
682  scc.write();
683  }
684 
686  : Inst_SOP2(iFmt, "s_orn2_b64")
687  {
688  setFlag(ALU);
689  } // Inst_SOP2__S_ORN2_B64
690 
692  {
693  } // ~Inst_SOP2__S_ORN2_B64
694 
695  // D.u64 = S0.u64 | ~S1.u64;
696  // SCC = 1 if result is non-zero.
697  void
699  {
700  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
701  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
702  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
703  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
704 
705  src0.read();
706  src1.read();
707 
708  sdst = src0.rawData() |~ src1.rawData();
709  scc = sdst.rawData() ? 1 : 0;
710 
711  sdst.write();
712  scc.write();
713  }
714 
716  : Inst_SOP2(iFmt, "s_nand_b32")
717  {
718  setFlag(ALU);
719  } // Inst_SOP2__S_NAND_B32
720 
722  {
723  } // ~Inst_SOP2__S_NAND_B32
724 
725  // D.u = ~(S0.u & S1.u);
726  // SCC = 1 if result is non-zero.
727  void
729  {
730  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
731  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
732  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
733  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
734 
735  src0.read();
736  src1.read();
737 
738  sdst = ~(src0.rawData() & src1.rawData());
739  scc = sdst.rawData() ? 1 : 0;
740 
741  sdst.write();
742  scc.write();
743  }
744 
746  : Inst_SOP2(iFmt, "s_nand_b64")
747  {
748  setFlag(ALU);
749  } // Inst_SOP2__S_NAND_B64
750 
752  {
753  } // ~Inst_SOP2__S_NAND_B64
754 
755  // D.u64 = ~(S0.u64 & S1.u64);
756  // SCC = 1 if result is non-zero.
757  void
759  {
760  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
761  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
762  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
763  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
764 
765  src0.read();
766  src1.read();
767 
768  sdst = ~(src0.rawData() & src1.rawData());
769  scc = sdst.rawData() ? 1 : 0;
770 
771  sdst.write();
772  scc.write();
773  }
774 
776  : Inst_SOP2(iFmt, "s_nor_b32")
777  {
778  setFlag(ALU);
779  } // Inst_SOP2__S_NOR_B32
780 
782  {
783  } // ~Inst_SOP2__S_NOR_B32
784 
785  // D.u = ~(S0.u | S1.u);
786  // SCC = 1 if result is non-zero.
787  void
789  {
790  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
791  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
792  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
793  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
794 
795  src0.read();
796  src1.read();
797 
798  sdst = ~(src0.rawData() | src1.rawData());
799  scc = sdst.rawData() ? 1 : 0;
800 
801  sdst.write();
802  scc.write();
803  }
804 
806  : Inst_SOP2(iFmt, "s_nor_b64")
807  {
808  setFlag(ALU);
809  } // Inst_SOP2__S_NOR_B64
810 
812  {
813  } // ~Inst_SOP2__S_NOR_B64
814 
815  // D.u64 = ~(S0.u64 | S1.u64);
816  // SCC = 1 if result is non-zero.
817  void
819  {
820  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
821  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
822  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
823  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
824 
825  src0.read();
826  src1.read();
827 
828  sdst = ~(src0.rawData() | src1.rawData());
829  scc = sdst.rawData() ? 1 : 0;
830 
831  sdst.write();
832  scc.write();
833  }
834 
836  : Inst_SOP2(iFmt, "s_xnor_b32")
837  {
838  setFlag(ALU);
839  } // Inst_SOP2__S_XNOR_B32
840 
842  {
843  } // ~Inst_SOP2__S_XNOR_B32
844 
845  // D.u = ~(S0.u ^ S1.u);
846  // SCC = 1 if result is non-zero.
847  void
849  {
850  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
851  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
852  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
853  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
854 
855  src0.read();
856  src1.read();
857 
858  sdst = ~(src0.rawData() ^ src1.rawData());
859  scc = sdst.rawData() ? 1 : 0;
860 
861  sdst.write();
862  scc.write();
863  }
864 
866  : Inst_SOP2(iFmt, "s_xnor_b64")
867  {
868  setFlag(ALU);
869  } // Inst_SOP2__S_XNOR_B64
870 
872  {
873  } // ~Inst_SOP2__S_XNOR_B64
874 
875  // D.u64 = ~(S0.u64 ^ S1.u64);
876  // SCC = 1 if result is non-zero.
877  void
879  {
880  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
881  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
882  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
883  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
884 
885  src0.read();
886  src1.read();
887 
888  sdst = ~(src0.rawData() ^ src1.rawData());
889  scc = sdst.rawData() ? 1 : 0;
890 
891  sdst.write();
892  scc.write();
893  }
894 
896  : Inst_SOP2(iFmt, "s_lshl_b32")
897  {
898  setFlag(ALU);
899  } // Inst_SOP2__S_LSHL_B32
900 
902  {
903  } // ~Inst_SOP2__S_LSHL_B32
904 
905  // D.u = S0.u << S1.u[4:0];
906  // SCC = 1 if result is non-zero.
907  void
909  {
910  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
911  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
912  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
913  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
914 
915  src0.read();
916  src1.read();
917 
918  sdst = (src0.rawData() << bits(src1.rawData(), 4, 0));
919  scc = sdst.rawData() ? 1 : 0;
920 
921  sdst.write();
922  scc.write();
923  }
924 
926  : Inst_SOP2(iFmt, "s_lshl_b64")
927  {
928  setFlag(ALU);
929  } // Inst_SOP2__S_LSHL_B64
930 
932  {
933  } // ~Inst_SOP2__S_LSHL_B64
934 
935  // D.u64 = S0.u64 << S1.u[5:0];
936  // SCC = 1 if result is non-zero.
937  void
939  {
940  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
941  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
942  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
943  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
944 
945  src0.read();
946  src1.read();
947 
948  sdst = (src0.rawData() << bits(src1.rawData(), 5, 0));
949  scc = sdst.rawData() ? 1 : 0;
950 
951  sdst.write();
952  scc.write();
953  }
954 
956  : Inst_SOP2(iFmt, "s_lshr_b32")
957  {
958  setFlag(ALU);
959  } // Inst_SOP2__S_LSHR_B32
960 
962  {
963  } // ~Inst_SOP2__S_LSHR_B32
964 
965  // D.u = S0.u >> S1.u[4:0];
966  // SCC = 1 if result is non-zero.
967  // The vacated bits are set to zero.
968  void
970  {
971  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
972  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
973  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
974  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
975 
976  src0.read();
977  src1.read();
978 
979  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0));
980  scc = sdst.rawData() ? 1 : 0;
981 
982  sdst.write();
983  scc.write();
984  }
985 
987  : Inst_SOP2(iFmt, "s_lshr_b64")
988  {
989  setFlag(ALU);
990  } // Inst_SOP2__S_LSHR_B64
991 
993  {
994  } // ~Inst_SOP2__S_LSHR_B64
995 
996  // D.u64 = S0.u64 >> S1.u[5:0];
997  // SCC = 1 if result is non-zero.
998  // The vacated bits are set to zero.
999  void
1001  {
1002  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
1003  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1004  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1005  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1006 
1007  src0.read();
1008  src1.read();
1009 
1010  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0));
1011  scc = sdst.rawData() ? 1 : 0;
1012 
1013  sdst.write();
1014  scc.write();
1015  }
1016 
1018  : Inst_SOP2(iFmt, "s_ashr_i32")
1019  {
1020  setFlag(ALU);
1021  } // Inst_SOP2__S_ASHR_I32
1022 
1024  {
1025  } // ~Inst_SOP2__S_ASHR_I32
1026 
1027  // D.i = signext(S0.i) >> S1.u[4:0];
1028  // SCC = 1 if result is non-zero.
1029  // The vacated bits are set to the sign bit of the input value.
1030  void
1032  {
1033  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1034  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1035  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1036  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1037 
1038  src0.read();
1039  src1.read();
1040 
1041  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0));
1042  scc = sdst.rawData() ? 1 : 0;
1043 
1044  sdst.write();
1045  scc.write();
1046  }
1047 
1049  : Inst_SOP2(iFmt, "s_ashr_i64")
1050  {
1051  setFlag(ALU);
1052  } // Inst_SOP2__S_ASHR_I64
1053 
1055  {
1056  } // ~Inst_SOP2__S_ASHR_I64
1057 
1058  // D.i64 = signext(S0.i64) >> S1.u[5:0];
1059  // SCC = 1 if result is non-zero.
1060  // The vacated bits are set to the sign bit of the input value.
1061  void
1063  {
1064  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
1065  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1066  ScalarOperandI64 sdst(gpuDynInst, instData.SDST);
1067  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1068 
1069  src0.read();
1070  src1.read();
1071 
1072  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0));
1073  scc = sdst.rawData() ? 1 : 0;
1074 
1075  sdst.write();
1076  scc.write();
1077  }
1078 
1080  : Inst_SOP2(iFmt, "s_bfm_b32")
1081  {
1082  setFlag(ALU);
1083  } // Inst_SOP2__S_BFM_B32
1084 
1086  {
1087  } // ~Inst_SOP2__S_BFM_B32
1088 
1089  // D.u = ((1 << S0.u[4:0]) - 1) << S1.u[4:0] (bitfield mask).
1090  void
1092  {
1093  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1094  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1095  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1096 
1097  src0.read();
1098  src1.read();
1099 
1100  sdst = ((1 << bits(src0.rawData(), 4, 0)) - 1)
1101  << bits(src1.rawData(), 4, 0);
1102 
1103  sdst.write();
1104  }
1105 
1107  : Inst_SOP2(iFmt, "s_bfm_b64")
1108  {
1109  setFlag(ALU);
1110  } // Inst_SOP2__S_BFM_B64
1111 
1113  {
1114  } // ~Inst_SOP2__S_BFM_B64
1115 
1116  // D.u64 = ((1ULL << S0.u[5:0]) - 1) << S1.u[5:0] (bitfield mask).
1117  void
1119  {
1120  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1121  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1122  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1123 
1124  src0.read();
1125  src1.read();
1126 
1127  sdst = ((1ULL << bits(src0.rawData(), 5, 0)) - 1)
1128  << bits(src1.rawData(), 5, 0);
1129 
1130  sdst.write();
1131  }
1132 
1134  : Inst_SOP2(iFmt, "s_mul_i32")
1135  {
1136  setFlag(ALU);
1137  } // Inst_SOP2__S_MUL_I32
1138 
1140  {
1141  } // ~Inst_SOP2__S_MUL_I32
1142 
1143  // D.i = S0.i * S1.i.
1144  void
1146  {
1147  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1148  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
1149  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1150 
1151  src0.read();
1152  src1.read();
1153 
1154  sdst = src0.rawData() * src1.rawData();
1155 
1156  sdst.write();
1157  }
1158 
1160  : Inst_SOP2(iFmt, "s_bfe_u32")
1161  {
1162  setFlag(ALU);
1163  } // Inst_SOP2__S_BFE_U32
1164 
1166  {
1167  } // ~Inst_SOP2__S_BFE_U32
1168 
1169  // Bit field extract. S0 is Data, S1[4:0] is field offset, S1[22:16] is
1170  // field width.
1171  // D.u = (S0.u >> S1.u[4:0]) & ((1 << S1.u[22:16]) - 1);
1172  // SCC = 1 if result is non-zero.
1173  void
1175  {
1176  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1177  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1178  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1179  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1180 
1181  src0.read();
1182  src1.read();
1183 
1184  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0))
1185  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1186  scc = sdst.rawData() ? 1 : 0;
1187 
1188  sdst.write();
1189  scc.write();
1190  }
1191 
1193  : Inst_SOP2(iFmt, "s_bfe_i32")
1194  {
1195  setFlag(ALU);
1196  } // Inst_SOP2__S_BFE_I32
1197 
1199  {
1200  } // ~Inst_SOP2__S_BFE_I32
1201 
1202  // Bit field extract. S0 is Data, S1[4:0] is field offset, S1[22:16] is
1203  // field width.
1204  // D.i = (S0.i >> S1.u[4:0]) & ((1 << S1.u[22:16]) - 1);
1205  // Sign-extend the result;
1206  // SCC = 1 if result is non-zero.
1207  void
1209  {
1210  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1211  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1212  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1213  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1214 
1215  src0.read();
1216  src1.read();
1217 
1218  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0))
1219  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1220  scc = sdst.rawData() ? 1 : 0;
1221 
1222  sdst.write();
1223  scc.write();
1224  }
1225 
1227  : Inst_SOP2(iFmt, "s_bfe_u64")
1228  {
1229  setFlag(ALU);
1230  } // Inst_SOP2__S_BFE_U64
1231 
1233  {
1234  } // ~Inst_SOP2__S_BFE_U64
1235 
1236  // Bit field extract. S0 is Data, S1[5:0] is field offset, S1[22:16] is
1237  // field width.
1238  // D.u64 = (S0.u64 >> S1.u[5:0]) & ((1 << S1.u[22:16]) - 1);
1239  // SCC = 1 if result is non-zero.
1240  void
1242  {
1243  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
1244  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1245  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1246  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1247 
1248  src0.read();
1249  src1.read();
1250 
1251  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0))
1252  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1253  scc = sdst.rawData() ? 1 : 0;
1254 
1255  sdst.write();
1256  scc.write();
1257  }
1258 
1260  : Inst_SOP2(iFmt, "s_bfe_i64")
1261  {
1262  setFlag(ALU);
1263  } // Inst_SOP2__S_BFE_I64
1264 
1266  {
1267  } // ~Inst_SOP2__S_BFE_I64
1268 
1269  // Bit field extract. S0 is Data, S1[5:0] is field offset, S1[22:16] is
1270  // field width.
1271  // D.i64 = (S0.i64 >> S1.u[5:0]) & ((1 << S1.u[22:16]) - 1);
1272  // Sign-extend result;
1273  // SCC = 1 if result is non-zero.
1274  void
1276  {
1277  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
1278  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1279  ScalarOperandI64 sdst(gpuDynInst, instData.SDST);
1280  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1281 
1282  src0.read();
1283  src1.read();
1284 
1285  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0))
1286  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1287  scc = sdst.rawData() ? 1 : 0;
1288 
1289  sdst.write();
1290  scc.write();
1291  }
1292 
1294  : Inst_SOP2(iFmt, "s_cbranch_g_fork")
1295  {
1296  setFlag(Branch);
1297  } // Inst_SOP2__S_CBRANCH_G_FORK
1298 
1300  {
1301  } // ~Inst_SOP2__S_CBRANCH_G_FORK
1302 
1303  // Conditional branch using branch-stack.
1304  // S0 = compare mask(vcc or any sgpr) and
1305  // S1 = 64-bit byte address of target instruction.
1306  void
1308  {
1310  }
1311 
1313  : Inst_SOP2(iFmt, "s_absdiff_i32")
1314  {
1315  setFlag(ALU);
1316  } // Inst_SOP2__S_ABSDIFF_I32
1317 
1319  {
1320  } // ~Inst_SOP2__S_ABSDIFF_I32
1321 
1322  // D.i = S0.i - S1.i;
1323  // if (D.i < 0) then D.i = -D.i;
1324  // SCC = 1 if result is non-zero.
1325  // Compute the absolute value of difference between two values.
1326  void
1328  {
1329  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1330  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
1331  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1332  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1333 
1334  sdst = std::abs(src0.rawData() - src1.rawData());
1335  scc = sdst.rawData() ? 1 : 0;
1336 
1337  sdst.write();
1338  scc.write();
1339  }
1340 
1342  InFmt_SOP2 *iFmt)
1343  : Inst_SOP2(iFmt, "s_rfe_restore_b64")
1344  {
1345  } // Inst_SOP2__S_RFE_RESTORE_B64
1346 
1348  {
1349  } // ~Inst_SOP2__S_RFE_RESTORE_B64
1350 
1351  // Return from exception handler and continue.
1352  void
1354  {
1356  }
1357 
1359  : Inst_SOPK(iFmt, "s_movk_i32")
1360  {
1361  setFlag(ALU);
1362  } // Inst_SOPK__S_MOVK_I32
1363 
1365  {
1366  } // ~Inst_SOPK__S_MOVK_I32
1367 
1368  // D.i = signext(SIMM16) (sign extension).
1369  void
1371  {
1373  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1374 
1375  sdst = simm16;
1376 
1377  sdst.write();
1378  }
1379 
1381  : Inst_SOPK(iFmt, "s_cmovk_i32")
1382  {
1383  setFlag(ALU);
1384  } // Inst_SOPK__S_CMOVK_I32
1385 
1387  {
1388  } // ~Inst_SOPK__S_CMOVK_I32
1389 
1390  // if (SCC) then D.i = signext(SIMM16);
1391  // else NOP.
1392  // Conditional move with sign extension.
1393  void
1395  {
1397  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1398  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
1399 
1400  scc.read();
1401 
1402  if (scc.rawData()) {
1403  sdst = simm16;
1404  sdst.write();
1405  }
1406  }
1407 
1409  : Inst_SOPK(iFmt, "s_cmpk_eq_i32")
1410  {
1411  setFlag(ALU);
1412  } // Inst_SOPK__S_CMPK_EQ_I32
1413 
1415  {
1416  } // ~Inst_SOPK__S_CMPK_EQ_I32
1417 
1418  // SCC = (S0.i == signext(SIMM16)).
1419  void
1421  {
1423  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1424  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1425 
1426  src.read();
1427 
1428  scc = (src.rawData() == simm16) ? 1 : 0;
1429 
1430  scc.write();
1431  }
1432 
1434  : Inst_SOPK(iFmt, "s_cmpk_lg_i32")
1435  {
1436  setFlag(ALU);
1437  } // Inst_SOPK__S_CMPK_LG_I32
1438 
1440  {
1441  } // ~Inst_SOPK__S_CMPK_LG_I32
1442 
1443  // SCC = (S0.i != signext(SIMM16)).
1444  void
1446  {
1448  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1449  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1450 
1451  src.read();
1452 
1453  scc = (src.rawData() != simm16) ? 1 : 0;
1454 
1455  scc.write();
1456  }
1457 
1459  : Inst_SOPK(iFmt, "s_cmpk_gt_i32")
1460  {
1461  setFlag(ALU);
1462  } // Inst_SOPK__S_CMPK_GT_I32
1463 
1465  {
1466  } // ~Inst_SOPK__S_CMPK_GT_I32
1467 
1468  // SCC = (S0.i > signext(SIMM16)).
1469  void
1471  {
1473  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1474  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1475 
1476  src.read();
1477 
1478  scc = (src.rawData() > simm16) ? 1 : 0;
1479 
1480  scc.write();
1481  }
1482 
1484  : Inst_SOPK(iFmt, "s_cmpk_ge_i32")
1485  {
1486  setFlag(ALU);
1487  } // Inst_SOPK__S_CMPK_GE_I32
1488 
1490  {
1491  } // ~Inst_SOPK__S_CMPK_GE_I32
1492 
1493  // SCC = (S0.i >= signext(SIMM16)).
1494  void
1496  {
1498  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1499  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1500 
1501  src.read();
1502 
1503  scc = (src.rawData() >= simm16) ? 1 : 0;
1504 
1505  scc.write();
1506  }
1507 
1509  : Inst_SOPK(iFmt, "s_cmpk_lt_i32")
1510  {
1511  setFlag(ALU);
1512  } // Inst_SOPK__S_CMPK_LT_I32
1513 
1515  {
1516  } // ~Inst_SOPK__S_CMPK_LT_I32
1517 
1518  // SCC = (S0.i < signext(SIMM16)).
1519  void
1521  {
1523  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1524  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1525 
1526  src.read();
1527 
1528  scc = (src.rawData() < simm16) ? 1 : 0;
1529 
1530  scc.write();
1531  }
1532 
1534  : Inst_SOPK(iFmt, "s_cmpk_le_i32")
1535  {
1536  setFlag(ALU);
1537  } // Inst_SOPK__S_CMPK_LE_I32
1538 
1540  {
1541  } // ~Inst_SOPK__S_CMPK_LE_I32
1542 
1543  // SCC = (S0.i <= signext(SIMM16)).
1544  void
1546  {
1548  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1549  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1550 
1551  src.read();
1552 
1553  scc = (src.rawData() <= simm16) ? 1 : 0;
1554 
1555  scc.write();
1556  }
1557 
1559  : Inst_SOPK(iFmt, "s_cmpk_eq_u32")
1560  {
1561  setFlag(ALU);
1562  } // Inst_SOPK__S_CMPK_EQ_U32
1563 
1565  {
1566  } // ~Inst_SOPK__S_CMPK_EQ_U32
1567 
1568  // SCC = (S0.u == SIMM16).
1569  void
1571  {
1573  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1574  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1575 
1576  src.read();
1577 
1578  scc = (src.rawData() == simm16) ? 1 : 0;
1579 
1580  scc.write();
1581  }
1582 
1584  : Inst_SOPK(iFmt, "s_cmpk_lg_u32")
1585  {
1586  setFlag(ALU);
1587  } // Inst_SOPK__S_CMPK_LG_U32
1588 
1590  {
1591  } // ~Inst_SOPK__S_CMPK_LG_U32
1592 
1593  // SCC = (S0.u != SIMM16).
1594  void
1596  {
1598  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1599  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1600 
1601  src.read();
1602 
1603  scc = (src.rawData() != simm16) ? 1 : 0;
1604 
1605  scc.write();
1606  }
1607 
1609  : Inst_SOPK(iFmt, "s_cmpk_gt_u32")
1610  {
1611  setFlag(ALU);
1612  } // Inst_SOPK__S_CMPK_GT_U32
1613 
1615  {
1616  } // ~Inst_SOPK__S_CMPK_GT_U32
1617 
1618  // SCC = (S0.u > SIMM16).
1619  void
1621  {
1623  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1624  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1625 
1626  src.read();
1627 
1628  scc = (src.rawData() > simm16) ? 1 : 0;
1629 
1630  scc.write();
1631  }
1632 
1634  : Inst_SOPK(iFmt, "s_cmpk_ge_u32")
1635  {
1636  setFlag(ALU);
1637  } // Inst_SOPK__S_CMPK_GE_U32
1638 
1640  {
1641  } // ~Inst_SOPK__S_CMPK_GE_U32
1642 
1643  // SCC = (S0.u >= SIMM16).
1644  void
1646  {
1648  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1649  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1650 
1651  src.read();
1652 
1653  scc = (src.rawData() >= simm16) ? 1 : 0;
1654 
1655  scc.write();
1656  }
1657 
1659  : Inst_SOPK(iFmt, "s_cmpk_lt_u32")
1660  {
1661  setFlag(ALU);
1662  } // Inst_SOPK__S_CMPK_LT_U32
1663 
1665  {
1666  } // ~Inst_SOPK__S_CMPK_LT_U32
1667 
1668  // SCC = (S0.u < SIMM16).
1669  void
1671  {
1673  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1674  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1675 
1676  src.read();
1677 
1678  scc = (src.rawData() < simm16) ? 1 : 0;
1679 
1680  scc.write();
1681  }
1682 
1684  : Inst_SOPK(iFmt, "s_cmpk_le_u32")
1685  {
1686  setFlag(ALU);
1687  } // Inst_SOPK__S_CMPK_LE_U32
1688 
1690  {
1691  } // ~Inst_SOPK__S_CMPK_LE_U32
1692 
1693  // SCC = (S0.u <= SIMM16).
1694  void
1696  {
1698  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1699  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1700 
1701  src.read();
1702 
1703  scc = (src.rawData() <= simm16) ? 1 : 0;
1704 
1705  scc.write();
1706  }
1707 
1709  : Inst_SOPK(iFmt, "s_addk_i32")
1710  {
1711  setFlag(ALU);
1712  } // Inst_SOPK__S_ADDK_I32
1713 
1715  {
1716  } // ~Inst_SOPK__S_ADDK_I32
1717 
1718  // D.i = D.i + signext(SIMM16);
1719  // SCC = overflow.
1720  void
1722  {
1723  ScalarRegI16 simm16 = instData.SIMM16;
1724  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1725  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1726  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1727 
1728  src.read();
1729 
1730  sdst = src.rawData() + (ScalarRegI32)simm16;
1731  scc = (bits(src.rawData(), 31) == bits(simm16, 15)
1732  && bits(src.rawData(), 31) != bits(sdst.rawData(), 31)) ? 1 : 0;
1733 
1734  sdst.write();
1735  scc.write();
1736  }
1737 
1739  : Inst_SOPK(iFmt, "s_mulk_i32")
1740  {
1741  setFlag(ALU);
1742  } // Inst_SOPK__S_MULK_I32
1743 
1745  {
1746  } // ~Inst_SOPK__S_MULK_I32
1747 
1748  // D.i = D.i * signext(SIMM16).
1749  void
1751  {
1752  ScalarRegI16 simm16 = instData.SIMM16;
1753  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1754 
1755  sdst.read();
1756 
1757  sdst = sdst.rawData() * (ScalarRegI32)simm16;
1758 
1759  sdst.write();
1760  }
1761 
1763  : Inst_SOPK(iFmt, "s_cbranch_i_fork")
1764  {
1765  setFlag(Branch);
1766  } // Inst_SOPK__S_CBRANCH_I_FORK
1767 
1769  {
1770  } // ~Inst_SOPK__S_CBRANCH_I_FORK
1771 
1772  // Conditional branch using branch-stack.
1773  // S0 = compare mask(vcc or any sgpr), and
1774  // SIMM16 = signed DWORD branch offset relative to next instruction.
1775  void
1777  {
1779  }
1780 
1782  : Inst_SOPK(iFmt, "s_getreg_b32")
1783  {
1784  } // Inst_SOPK__S_GETREG_B32
1785 
1787  {
1788  } // ~Inst_SOPK__S_GETREG_B32
1789 
1790  // D.u = hardware-reg. Read some or all of a hardware register into the
1791  // LSBs of D.
1792  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
1793  // is 1..32.
1794  void
1796  {
1798  }
1799 
1801  : Inst_SOPK(iFmt, "s_setreg_b32")
1802  {
1803  setFlag(ALU);
1804  } // Inst_SOPK__S_SETREG_B32
1805 
1807  {
1808  } // ~Inst_SOPK__S_SETREG_B32
1809 
1810  // hardware-reg = S0.u. Write some or all of the LSBs of D into a hardware
1811  // register.
1812  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
1813  // is 1..32.
1814  void
1816  {
1817  ScalarRegI16 simm16 = instData.SIMM16;
1818  ScalarRegU32 hwregId = simm16 & 0x3f;
1819  ScalarRegU32 offset = (simm16 >> 6) & 31;
1820  ScalarRegU32 size = ((simm16 >> 11) & 31) + 1;
1821 
1822  ScalarOperandU32 hwreg(gpuDynInst, hwregId);
1823  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1824  hwreg.read();
1825  sdst.read();
1826 
1827  // Store value from SDST to part of the hardware register.
1828  ScalarRegU32 mask = (((1U << size) - 1U) << offset);
1829  hwreg = ((hwreg.rawData() & ~mask)
1830  | ((sdst.rawData() << offset) & mask));
1831  hwreg.write();
1832 
1833  // set MODE register to control the behavior of single precision
1834  // floating-point numbers: denormal mode or round mode
1835  if (hwregId==1 && size==2
1836  && (offset==4 || offset==0)) {
1837  warn_once("Be cautious that s_setreg_b32 has no real effect "
1838  "on FP modes: %s\n", gpuDynInst->disassemble());
1839  return;
1840  }
1841 
1842  // panic if not changing MODE of floating-point numbers
1844  }
1845 
1847  InFmt_SOPK *iFmt)
1848  : Inst_SOPK(iFmt, "s_setreg_imm32_b32")
1849  {
1850  } // Inst_SOPK__S_SETREG_IMM32_B32
1851 
1853  {
1854  } // ~Inst_SOPK__S_SETREG_IMM32_B32
1855 
1856  // Write some or all of the LSBs of IMM32 into a hardware register; this
1857  // instruction requires a 32-bit literal constant.
1858  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
1859  // is 1..32.
1860  void
1862  {
1864  }
1865 
1867  : Inst_SOP1(iFmt, "s_mov_b32")
1868  {
1869  setFlag(ALU);
1870  } // Inst_SOP1__S_MOV_B32
1871 
1873  {
1874  } // ~Inst_SOP1__S_MOV_B32
1875 
1876  // D.u = S0.u.
1877  void
1879  {
1880  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
1881  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1882 
1883  src.read();
1884 
1885  sdst = src.rawData();
1886 
1887  sdst.write();
1888  }
1889 
1891  : Inst_SOP1(iFmt, "s_mov_b64")
1892  {
1893  setFlag(ALU);
1894  } // Inst_SOP1__S_MOV_B64
1895 
1897  {
1898  } // ~Inst_SOP1__S_MOV_B64
1899 
1900  // D.u64 = S0.u64.
1901  void
1903  {
1904  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
1905  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1906 
1907  src.read();
1908 
1909  sdst = src.rawData();
1910 
1911  sdst.write();
1912  }
1913 
1915  : Inst_SOP1(iFmt, "s_cmov_b32")
1916  {
1917  setFlag(ALU);
1918  } // Inst_SOP1__S_CMOV_B32
1919 
1921  {
1922  } // ~Inst_SOP1__S_CMOV_B32
1923 
1924  // if (SCC) then D.u = S0.u;
1925  // else NOP.
1926  // Conditional move.
1927  void
1929  {
1930  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
1931  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1932  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1933 
1934  src.read();
1935  scc.read();
1936 
1937  if (scc.rawData()) {
1938  sdst = src.rawData();
1939  sdst.write();
1940  }
1941  }
1942 
1944  : Inst_SOP1(iFmt, "s_cmov_b64")
1945  {
1946  setFlag(ALU);
1947  } // Inst_SOP1__S_CMOV_B64
1948 
1950  {
1951  } // ~Inst_SOP1__S_CMOV_B64
1952 
1953  // if (SCC) then D.u64 = S0.u64;
1954  // else NOP.
1955  // Conditional move.
1956  void
1958  {
1959  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
1960  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1961  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1962 
1963  src.read();
1964  scc.read();
1965 
1966  if (scc.rawData()) {
1967  sdst = src.rawData();
1968  sdst.write();
1969  }
1970  }
1971 
1973  : Inst_SOP1(iFmt, "s_not_b32")
1974  {
1975  setFlag(ALU);
1976  } // Inst_SOP1__S_NOT_B32
1977 
1979  {
1980  } // ~Inst_SOP1__S_NOT_B32
1981 
1982  // D.u = ~S0.u;
1983  // SCC = 1 if result is non-zero.
1984  // Bitwise negation.
1985  void
1987  {
1988  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
1989  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1990  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1991 
1992  src.read();
1993 
1994  sdst = ~src.rawData();
1995 
1996  scc = sdst.rawData() ? 1 : 0;
1997 
1998  sdst.write();
1999  scc.write();
2000  }
2001 
2003  : Inst_SOP1(iFmt, "s_not_b64")
2004  {
2005  setFlag(ALU);
2006  } // Inst_SOP1__S_NOT_B64
2007 
2009  {
2010  } // ~Inst_SOP1__S_NOT_B64
2011 
2012  // D.u64 = ~S0.u64;
2013  // SCC = 1 if result is non-zero.
2014  // Bitwise negation.
2015  void
2017  {
2018  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2019  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2020  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2021 
2022  src.read();
2023 
2024  sdst = ~src.rawData();
2025  scc = sdst.rawData() ? 1 : 0;
2026 
2027  sdst.write();
2028  scc.write();
2029  }
2030 
2032  : Inst_SOP1(iFmt, "s_wqm_b32")
2033  {
2034  setFlag(ALU);
2035  } // Inst_SOP1__S_WQM_B32
2036 
2038  {
2039  } // ~Inst_SOP1__S_WQM_B32
2040 
2041  // Computes whole quad mode for an active/valid mask.
2042  // SCC = 1 if result is non-zero.
2043  void
2045  {
2046  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2047  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2048  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2049 
2050  src.read();
2051 
2052  sdst = wholeQuadMode(src.rawData());
2053  scc = sdst.rawData() ? 1 : 0;
2054 
2055  sdst.write();
2056  scc.write();
2057  }
2058 
2060  : Inst_SOP1(iFmt, "s_wqm_b64")
2061  {
2062  setFlag(ALU);
2063  } // Inst_SOP1__S_WQM_B64
2064 
2066  {
2067  } // ~Inst_SOP1__S_WQM_B64
2068 
2069  // Computes whole quad mode for an active/valid mask.
2070  // SCC = 1 if result is non-zero.
2071  void
2073  {
2074  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2075  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2076  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2077 
2078  src.read();
2079 
2080  sdst = wholeQuadMode(src.rawData());
2081  scc = sdst.rawData() ? 1 : 0;
2082 
2083  sdst.write();
2084  scc.write();
2085  }
2086 
2088  : Inst_SOP1(iFmt, "s_brev_b32")
2089  {
2090  setFlag(ALU);
2091  } // Inst_SOP1__S_BREV_B32
2092 
2094  {
2095  } // ~Inst_SOP1__S_BREV_B32
2096 
2097  // D.u[31:0] = S0.u[0:31] (reverse bits).
2098  void
2100  {
2101  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2102  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2103 
2104  src.read();
2105 
2106  sdst = reverseBits(src.rawData());
2107 
2108  sdst.write();
2109  }
2110 
2112  : Inst_SOP1(iFmt, "s_brev_b64")
2113  {
2114  setFlag(ALU);
2115  } // Inst_SOP1__S_BREV_B64
2116 
2118  {
2119  } // ~Inst_SOP1__S_BREV_B64
2120 
2121  // D.u64[63:0] = S0.u64[0:63] (reverse bits).
2122  void
2124  {
2125  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2126  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2127 
2128  src.read();
2129 
2130  sdst = reverseBits(src.rawData());
2131 
2132  sdst.write();
2133  }
2134 
2136  : Inst_SOP1(iFmt, "s_bcnt0_i32_b32")
2137  {
2138  setFlag(ALU);
2139  } // Inst_SOP1__S_BCNT0_I32_B32
2140 
2142  {
2143  } // ~Inst_SOP1__S_BCNT0_I32_B32
2144 
2145  // D.i = CountZeroBits(S0.u);
2146  // SCC = 1 if result is non-zero.
2147  void
2149  {
2150  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2151  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2152  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2153 
2154  src.read();
2155 
2156  sdst = countZeroBits(src.rawData());
2157  scc = sdst.rawData() ? 1 : 0;
2158 
2159  sdst.write();
2160  scc.write();
2161  }
2162 
2164  : Inst_SOP1(iFmt, "s_bcnt0_i32_b64")
2165  {
2166  setFlag(ALU);
2167  } // Inst_SOP1__S_BCNT0_I32_B64
2168 
2170  {
2171  } // ~Inst_SOP1__S_BCNT0_I32_B64
2172 
2173  // D.i = CountZeroBits(S0.u64);
2174  // SCC = 1 if result is non-zero.
2175  void
2177  {
2178  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2179  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2180  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2181 
2182  src.read();
2183 
2184  sdst = countZeroBits(src.rawData());
2185  scc = sdst.rawData() ? 1 : 0;
2186 
2187  sdst.write();
2188  scc.write();
2189  }
2190 
2192  : Inst_SOP1(iFmt, "s_bcnt1_i32_b32")
2193  {
2194  setFlag(ALU);
2195  } // Inst_SOP1__S_BCNT1_I32_B32
2196 
2198  {
2199  } // ~Inst_SOP1__S_BCNT1_I32_B32
2200 
2201  // D.i = CountOneBits(S0.u);
2202  // SCC = 1 if result is non-zero.
2203  void
2205  {
2206  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2207  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2208  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2209 
2210  src.read();
2211 
2212  sdst = popCount(src.rawData());
2213  scc = sdst.rawData() ? 1 : 0;
2214 
2215  sdst.write();
2216  scc.write();
2217  }
2218 
2220  : Inst_SOP1(iFmt, "s_bcnt1_i32_b64")
2221  {
2222  setFlag(ALU);
2223  } // Inst_SOP1__S_BCNT1_I32_B64
2224 
2226  {
2227  } // ~Inst_SOP1__S_BCNT1_I32_B64
2228 
2229  // D.i = CountOneBits(S0.u64);
2230  // SCC = 1 if result is non-zero.
2231  void
2233  {
2234  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2235  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2236  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2237 
2238  src.read();
2239 
2240  sdst = popCount(src.rawData());
2241  scc = sdst.rawData() ? 1 : 0;
2242 
2243  sdst.write();
2244  scc.write();
2245  }
2246 
2248  : Inst_SOP1(iFmt, "s_ff0_i32_b32")
2249  {
2250  setFlag(ALU);
2251  } // Inst_SOP1__S_FF0_I32_B32
2252 
2254  {
2255  } // ~Inst_SOP1__S_FF0_I32_B32
2256 
2257  // D.i = FindFirstZero(S0.u);
2258  // If no zeros are found, return -1.
2259  // Returns the bit position of the first zero from the LSB.
2260  void
2262  {
2263  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2264  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2265 
2266  src.read();
2267 
2268  sdst = findFirstZero(src.rawData());
2269 
2270  sdst.write();
2271  }
2272 
2274  : Inst_SOP1(iFmt, "s_ff0_i32_b64")
2275  {
2276  setFlag(ALU);
2277  } // Inst_SOP1__S_FF0_I32_B64
2278 
2280  {
2281  } // ~Inst_SOP1__S_FF0_I32_B64
2282 
2283  // D.i = FindFirstZero(S0.u64);
2284  // If no zeros are found, return -1.
2285  // Returns the bit position of the first zero from the LSB.
2286  void
2288  {
2289  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2290  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2291 
2292  src.read();
2293 
2294  sdst = findFirstZero(src.rawData());
2295 
2296  sdst.write();
2297  }
2298 
2300  : Inst_SOP1(iFmt, "s_ff1_i32_b32")
2301  {
2302  setFlag(ALU);
2303  } // Inst_SOP1__S_FF1_I32_B32
2304 
2306  {
2307  } // ~Inst_SOP1__S_FF1_I32_B32
2308 
2309  // D.i = FindFirstOne(S0.u);
2310  // If no ones are found, return -1.
2311  // Returns the bit position of the first one from the LSB.
2312  void
2314  {
2315  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2316  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2317 
2318  src.read();
2319 
2320  sdst = findFirstOne(src.rawData());
2321 
2322  sdst.write();
2323  }
2324 
2326  : Inst_SOP1(iFmt, "s_ff1_i32_b64")
2327  {
2328  setFlag(ALU);
2329  } // Inst_SOP1__S_FF1_I32_B64
2330 
2332  {
2333  } // ~Inst_SOP1__S_FF1_I32_B64
2334 
2335  // D.i = FindFirstOne(S0.u64);
2336  // If no ones are found, return -1.
2337  // Returns the bit position of the first one from the LSB.
2338  void
2340  {
2341  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2342  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2343 
2344  src.read();
2345 
2346  sdst = findFirstOne(src.rawData());
2347 
2348  sdst.write();
2349  }
2350 
2352  : Inst_SOP1(iFmt, "s_flbit_i32_b32")
2353  {
2354  setFlag(ALU);
2355  } // Inst_SOP1__S_FLBIT_I32_B32
2356 
2358  {
2359  } // ~Inst_SOP1__S_FLBIT_I32_B32
2360 
2361  // D.i = FindFirstOne(S0.u);
2362  // If no ones are found, return -1.
2363  // Counts how many zeros before the first one starting from the MSB.
2364  void
2366  {
2367  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2368  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2369 
2370  src.read();
2371 
2372  sdst = countZeroBitsMsb(src.rawData());
2373 
2374  sdst.write();
2375  }
2376 
2378  : Inst_SOP1(iFmt, "s_flbit_i32_b64")
2379  {
2380  setFlag(ALU);
2381  } // Inst_SOP1__S_FLBIT_I32_B64
2382 
2384  {
2385  } // ~Inst_SOP1__S_FLBIT_I32_B64
2386 
2387  // D.i = FindFirstOne(S0.u64);
2388  // If no ones are found, return -1.
2389  // Counts how many zeros before the first one starting from the MSB.
2390  void
2392  {
2393  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2394  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2395 
2396  src.read();
2397 
2398  sdst = countZeroBitsMsb(src.rawData());
2399 
2400  sdst.write();
2401  }
2402 
2404  : Inst_SOP1(iFmt, "s_flbit_i32")
2405  {
2406  setFlag(ALU);
2407  } // Inst_SOP1__S_FLBIT_I32
2408 
2410  {
2411  } // ~Inst_SOP1__S_FLBIT_I32
2412 
2413  // D.i = FirstOppositeSignBit(S0.i);
2414  // If S0.i == 0 or S0.i == -1 (all bits are the same), return -1.
2415  // Counts how many bits in a row (from MSB to LSB) are the same as the
2416  // sign bit.
2417  void
2419  {
2420  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2421  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2422 
2423  src.read();
2424 
2425  sdst = firstOppositeSignBit(src.rawData());
2426 
2427  sdst.write();
2428  }
2429 
2431  : Inst_SOP1(iFmt, "s_flbit_i32_i64")
2432  {
2433  setFlag(ALU);
2434  } // Inst_SOP1__S_FLBIT_I32_I64
2435 
2437  {
2438  } // ~Inst_SOP1__S_FLBIT_I32_I64
2439 
2440  // D.i = FirstOppositeSignBit(S0.i64);
2441  // If S0.i == 0 or S0.i == -1 (all bits are the same), return -1.
2442  // Counts how many bits in a row (from MSB to LSB) are the same as the
2443  // sign bit.
2444  void
2446  {
2447  ConstScalarOperandI64 src(gpuDynInst, instData.SSRC0);
2448  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2449 
2450  src.read();
2451 
2452  sdst = firstOppositeSignBit(src.rawData());
2453 
2454  sdst.write();
2455  }
2456 
2458  : Inst_SOP1(iFmt, "s_sext_i32_i8")
2459  {
2460  setFlag(ALU);
2461  } // Inst_SOP1__S_SEXT_I32_I8
2462 
2464  {
2465  } // ~Inst_SOP1__S_SEXT_I32_I8
2466 
2467  // D.i = signext(S0.i[7:0]) (sign extension).
2468  void
2470  {
2471  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2472  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2473 
2474  src.read();
2475 
2476  sdst = sext<std::numeric_limits<ScalarRegI8>::digits>(
2477  bits(src.rawData(), 7, 0));
2478 
2479  sdst.write();
2480  }
2481 
2483  : Inst_SOP1(iFmt, "s_sext_i32_i16")
2484  {
2485  setFlag(ALU);
2486  } // Inst_SOP1__S_SEXT_I32_I16
2487 
2489  {
2490  } // ~Inst_SOP1__S_SEXT_I32_I16
2491 
2492  // D.i = signext(S0.i[15:0]) (sign extension).
2493  void
2495  {
2496  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2497  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2498 
2499  src.read();
2500 
2501  sdst = sext<std::numeric_limits<ScalarRegI16>::digits>(
2502  bits(src.rawData(), 15, 0));
2503 
2504  sdst.write();
2505  }
2506 
2508  : Inst_SOP1(iFmt, "s_bitset0_b32")
2509  {
2510  setFlag(ALU);
2511  } // Inst_SOP1__S_BITSET0_B32
2512 
2514  {
2515  } // ~Inst_SOP1__S_BITSET0_B32
2516 
2517  // D.u[S0.u[4:0]] = 0.
2518  void
2520  {
2521  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2522  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2523 
2524  src.read();
2525 
2526  sdst.setBit(bits(src.rawData(), 4, 0), 0);
2527 
2528  sdst.write();
2529  }
2530 
2532  : Inst_SOP1(iFmt, "s_bitset0_b64")
2533  {
2534  setFlag(ALU);
2535  } // Inst_SOP1__S_BITSET0_B64
2536 
2538  {
2539  } // ~Inst_SOP1__S_BITSET0_B64
2540 
2541  // D.u64[S0.u[5:0]] = 0.
2542  void
2544  {
2545  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2546  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2547 
2548  src.read();
2549 
2550  sdst.setBit(bits(src.rawData(), 5, 0), 0);
2551 
2552  sdst.write();
2553  }
2554 
2556  : Inst_SOP1(iFmt, "s_bitset1_b32")
2557  {
2558  setFlag(ALU);
2559  } // Inst_SOP1__S_BITSET1_B32
2560 
2562  {
2563  } // ~Inst_SOP1__S_BITSET1_B32
2564 
2565  // D.u[S0.u[4:0]] = 1.
2566  void
2568  {
2569  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2570  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2571 
2572  src.read();
2573 
2574  sdst.setBit(bits(src.rawData(), 4, 0), 1);
2575 
2576  sdst.write();
2577  }
2578 
2580  : Inst_SOP1(iFmt, "s_bitset1_b64")
2581  {
2582  setFlag(ALU);
2583  } // Inst_SOP1__S_BITSET1_B64
2584 
2586  {
2587  } // ~Inst_SOP1__S_BITSET1_B64
2588 
2589  // D.u64[S0.u[5:0]] = 1.
2590  void
2592  {
2593  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2594  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2595 
2596  src.read();
2597 
2598  sdst.setBit(bits(src.rawData(), 5, 0), 1);
2599 
2600  sdst.write();
2601  }
2602 
2604  : Inst_SOP1(iFmt, "s_getpc_b64")
2605  {
2606  setFlag(ALU);
2607  } // Inst_SOP1__S_GETPC_B64
2608 
2610  {
2611  } // ~Inst_SOP1__S_GETPC_B64
2612 
2613  // D.u64 = PC + 4.
2614  // Destination receives the byte address of the next instruction.
2615  void
2617  {
2618  Wavefront *wf = gpuDynInst->wavefront();
2619  Addr pc = wf->pc();
2620  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2621 
2622  sdst = pc + 4;
2623 
2624  sdst.write();
2625  }
2626 
2628  : Inst_SOP1(iFmt, "s_setpc_b64")
2629  {
2630  setFlag(ALU);
2631  } // Inst_SOP1__S_SETPC_B64
2632 
2634  {
2635  } // ~Inst_SOP1__S_SETPC_B64
2636 
2637  // PC = S0.u64.
2638  // S0.u64 is a byte address of the instruction to jump to.
2639  void
2641  {
2642  Wavefront *wf = gpuDynInst->wavefront();
2643  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2644 
2645  src.read();
2646 
2647  wf->pc(src.rawData());
2648  }
2649 
2651  : Inst_SOP1(iFmt, "s_swappc_b64")
2652  {
2653  setFlag(ALU);
2654  } // Inst_SOP1__S_SWAPPC_B64
2655 
2657  {
2658  } // ~Inst_SOP1__S_SWAPPC_B64
2659 
2660  // D.u64 = PC + 4; PC = S0.u64.
2661  // S0.u64 is a byte address of the instruction to jump to.
2662  void
2664  {
2665  Wavefront *wf = gpuDynInst->wavefront();
2666  Addr pc = wf->pc();
2667  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2668  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2669 
2670  src.read();
2671 
2672  sdst = pc + 4;
2673 
2674  wf->pc(src.rawData());
2675  sdst.write();
2676  }
2677 
2679  : Inst_SOP1(iFmt, "s_rfe_b64")
2680  {
2681  } // Inst_SOP1__S_RFE_B64
2682 
2684  {
2685  } // ~Inst_SOP1__S_RFE_B64
2686 
2687  // Return from exception handler and continue.
2688  void
2690  {
2692  }
2693 
2695  InFmt_SOP1 *iFmt)
2696  : Inst_SOP1(iFmt, "s_and_saveexec_b64")
2697  {
2698  setFlag(ALU);
2699  } // Inst_SOP1__S_AND_SAVEEXEC_B64
2700 
2702  {
2703  } // ~Inst_SOP1__S_AND_SAVEEXEC_B64
2704 
2705  // D.u64 = EXEC;
2706  // EXEC = S0.u64 & EXEC;
2707  // SCC = 1 if the new value of EXEC is non-zero.
2708  void
2710  {
2711  Wavefront *wf = gpuDynInst->wavefront();
2712  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2713  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2714  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2715 
2716  src.read();
2717 
2718  sdst = wf->execMask().to_ullong();
2719  wf->execMask() = src.rawData() & wf->execMask().to_ullong();
2720  scc = wf->execMask().any() ? 1 : 0;
2721 
2722  sdst.write();
2723  scc.write();
2724  }
2725 
2727  InFmt_SOP1 *iFmt)
2728  : Inst_SOP1(iFmt, "s_or_saveexec_b64")
2729  {
2730  setFlag(ALU);
2731  } // Inst_SOP1__S_OR_SAVEEXEC_B64
2732 
2734  {
2735  } // ~Inst_SOP1__S_OR_SAVEEXEC_B64
2736 
2737  // D.u64 = EXEC;
2738  // EXEC = S0.u64 | EXEC;
2739  // SCC = 1 if the new value of EXEC is non-zero.
2740  void
2742  {
2743  Wavefront *wf = gpuDynInst->wavefront();
2744  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2745  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2746  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2747 
2748  src.read();
2749 
2750  sdst = wf->execMask().to_ullong();
2751  wf->execMask() = src.rawData() | wf->execMask().to_ullong();
2752  scc = wf->execMask().any() ? 1 : 0;
2753 
2754  sdst.write();
2755  scc.write();
2756  }
2757 
2759  InFmt_SOP1 *iFmt)
2760  : Inst_SOP1(iFmt, "s_xor_saveexec_b64")
2761  {
2762  setFlag(ALU);
2763  } // Inst_SOP1__S_XOR_SAVEEXEC_B64
2764 
2766  {
2767  } // ~Inst_SOP1__S_XOR_SAVEEXEC_B64
2768 
2769  // D.u64 = EXEC;
2770  // EXEC = S0.u64 ^ EXEC;
2771  // SCC = 1 if the new value of EXEC is non-zero.
2772  void
2774  {
2775  Wavefront *wf = gpuDynInst->wavefront();
2776  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2777  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2778  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2779 
2780  src.read();
2781 
2782  sdst = wf->execMask().to_ullong();
2783  wf->execMask() = src.rawData() ^ wf->execMask().to_ullong();
2784  scc = wf->execMask().any() ? 1 : 0;
2785 
2786  sdst.write();
2787  scc.write();
2788  }
2789 
2791  InFmt_SOP1 *iFmt)
2792  : Inst_SOP1(iFmt, "s_andn2_saveexec_b64")
2793  {
2794  setFlag(ALU);
2795  } // Inst_SOP1__S_ANDN2_SAVEEXEC_B64
2796 
2798  {
2799  } // ~Inst_SOP1__S_ANDN2_SAVEEXEC_B64
2800 
2801  // D.u64 = EXEC;
2802  // EXEC = S0.u64 & ~EXEC;
2803  // SCC = 1 if the new value of EXEC is non-zero.
2804  void
2806  {
2807  Wavefront *wf = gpuDynInst->wavefront();
2808  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2809  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2810  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2811 
2812  src.read();
2813 
2814  sdst = wf->execMask().to_ullong();
2815  wf->execMask() = src.rawData() &~ wf->execMask().to_ullong();
2816  scc = wf->execMask().any() ? 1 : 0;
2817 
2818  sdst.write();
2819  scc.write();
2820  }
2821 
2823  InFmt_SOP1 *iFmt)
2824  : Inst_SOP1(iFmt, "s_orn2_saveexec_b64")
2825  {
2826  setFlag(ALU);
2827  } // Inst_SOP1__S_ORN2_SAVEEXEC_B64
2828 
2830  {
2831  } // ~Inst_SOP1__S_ORN2_SAVEEXEC_B64
2832 
2833  // D.u64 = EXEC;
2834  // EXEC = S0.u64 | ~EXEC;
2835  // SCC = 1 if the new value of EXEC is non-zero.
2836  void
2838  {
2839  Wavefront *wf = gpuDynInst->wavefront();
2840  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2841  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2842  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2843 
2844  src.read();
2845 
2846  sdst = wf->execMask().to_ullong();
2847  wf->execMask() = src.rawData() |~ wf->execMask().to_ullong();
2848  scc = wf->execMask().any() ? 1 : 0;
2849 
2850  sdst.write();
2851  scc.write();
2852  }
2853 
2855  InFmt_SOP1 *iFmt)
2856  : Inst_SOP1(iFmt, "s_nand_saveexec_b64")
2857  {
2858  setFlag(ALU);
2859  } // Inst_SOP1__S_NAND_SAVEEXEC_B64
2860 
2862  {
2863  } // ~Inst_SOP1__S_NAND_SAVEEXEC_B64
2864 
2865  // D.u64 = EXEC;
2866  // EXEC = ~(S0.u64 & EXEC);
2867  // SCC = 1 if the new value of EXEC is non-zero.
2868  void
2870  {
2871  Wavefront *wf = gpuDynInst->wavefront();
2872  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2873  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2874  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2875 
2876  src.read();
2877 
2878  sdst = wf->execMask().to_ullong();
2879  wf->execMask() = ~(src.rawData() & wf->execMask().to_ullong());
2880  scc = wf->execMask().any() ? 1 : 0;
2881 
2882  sdst.write();
2883  scc.write();
2884  }
2885 
2887  InFmt_SOP1 *iFmt)
2888  : Inst_SOP1(iFmt, "s_nor_saveexec_b64")
2889  {
2890  setFlag(ALU);
2891  } // Inst_SOP1__S_NOR_SAVEEXEC_B64
2892 
2894  {
2895  } // ~Inst_SOP1__S_NOR_SAVEEXEC_B64
2896 
2897  // D.u64 = EXEC;
2898  // EXEC = ~(S0.u64 | EXEC);
2899  // SCC = 1 if the new value of EXEC is non-zero.
2900  void
2902  {
2903  Wavefront *wf = gpuDynInst->wavefront();
2904  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2905  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2906  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2907 
2908  src.read();
2909 
2910  sdst = wf->execMask().to_ullong();
2911  wf->execMask() = ~(src.rawData() | wf->execMask().to_ullong());
2912  scc = wf->execMask().any() ? 1 : 0;
2913 
2914  sdst.write();
2915  scc.write();
2916  }
2917 
2919  InFmt_SOP1 *iFmt)
2920  : Inst_SOP1(iFmt, "s_xnor_saveexec_b64")
2921  {
2922  setFlag(ALU);
2923  } // Inst_SOP1__S_XNOR_SAVEEXEC_B64
2924 
2926  {
2927  } // ~Inst_SOP1__S_XNOR_SAVEEXEC_B64
2928 
2929  // D.u64 = EXEC;
2930  // EXEC = ~(S0.u64 ^ EXEC);
2931  // SCC = 1 if the new value of EXEC is non-zero.
2932  void
2934  {
2935  Wavefront *wf = gpuDynInst->wavefront();
2936  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2937  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2938  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2939 
2940  src.read();
2941 
2942  sdst = wf->execMask().to_ullong();
2943  wf->execMask() = ~(src.rawData() ^ wf->execMask().to_ullong());
2944  scc = wf->execMask().any() ? 1 : 0;
2945 
2946  sdst.write();
2947  scc.write();
2948  }
2949 
2951  : Inst_SOP1(iFmt, "s_quadmask_b32")
2952  {
2953  setFlag(ALU);
2954  } // Inst_SOP1__S_QUADMASK_B32
2955 
2957  {
2958  } // ~Inst_SOP1__S_QUADMASK_B32
2959 
2960  // D.u = QuadMask(S0.u):
2961  // D[0] = OR(S0[3:0]), D[1] = OR(S0[7:4]) ... D[31:8] = 0;
2962  // SCC = 1 if result is non-zero.
2963  void
2965  {
2966  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2967  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2968  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2969 
2970  src.read();
2971 
2972  sdst = quadMask(src.rawData());
2973  scc = sdst.rawData() ? 1 : 0;
2974 
2975  sdst.write();
2976  scc.write();
2977  }
2978 
2980  : Inst_SOP1(iFmt, "s_quadmask_b64")
2981  {
2982  setFlag(ALU);
2983  } // Inst_SOP1__S_QUADMASK_B64
2984 
2986  {
2987  } // ~Inst_SOP1__S_QUADMASK_B64
2988 
2989  // D.u64 = QuadMask(S0.u64):
2990  // D[0] = OR(S0[3:0]), D[1] = OR(S0[7:4]) ... D[63:16] = 0;
2991  // SCC = 1 if result is non-zero.
2992  void
2994  {
2995  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2996  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2997  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2998 
2999  src.read();
3000 
3001  sdst = quadMask(src.rawData());
3002  scc = sdst.rawData() ? 1 : 0;
3003 
3004  sdst.write();
3005  scc.write();
3006  }
3007 
3009  : Inst_SOP1(iFmt, "s_movrels_b32")
3010  {
3011  setFlag(ALU);
3012  } // Inst_SOP1__S_MOVRELS_B32
3013 
3015  {
3016  } // ~Inst_SOP1__S_MOVRELS_B32
3017 
3018  // D.u = SGPR[S0.u + M0.u].u (move from relative source).
3019  void
3021  {
3022  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3023  m0.read();
3024  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0 + m0.rawData());
3025  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
3026 
3027  src.read();
3028 
3029  sdst = src.rawData();
3030 
3031  sdst.write();
3032  }
3033 
3035  : Inst_SOP1(iFmt, "s_movrels_b64")
3036  {
3037  setFlag(ALU);
3038  } // Inst_SOP1__S_MOVRELS_B64
3039 
3041  {
3042  } // ~Inst_SOP1__S_MOVRELS_B64
3043 
3044  // D.u64 = SGPR[S0.u + M0.u].u64 (move from relative source).
3045  // The index in M0.u must be even for this operation.
3046  void
3048  {
3049  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3050  m0.read();
3051  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0 + m0.rawData());
3052  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3053 
3054  src.read();
3055 
3056  sdst = src.rawData();
3057 
3058  sdst.write();
3059  }
3060 
3062  : Inst_SOP1(iFmt, "s_movreld_b32")
3063  {
3064  setFlag(ALU);
3065  } // Inst_SOP1__S_MOVRELD_B32
3066 
3068  {
3069  } // ~Inst_SOP1__S_MOVRELD_B32
3070 
3071  // SGPR[D.u + M0.u].u = S0.u (move to relative destination).
3072  void
3074  {
3075  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3076  m0.read();
3077  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
3078  ScalarOperandU32 sdst(gpuDynInst, instData.SDST + m0.rawData());
3079 
3080  src.read();
3081 
3082  sdst = src.rawData();
3083 
3084  sdst.write();
3085  }
3086 
3088  : Inst_SOP1(iFmt, "s_movreld_b64")
3089  {
3090  setFlag(ALU);
3091  } // Inst_SOP1__S_MOVRELD_B64
3092 
3094  {
3095  } // ~Inst_SOP1__S_MOVRELD_B64
3096 
3097  // SGPR[D.u + M0.u].u64 = S0.u64 (move to relative destination).
3098  // The index in M0.u must be even for this operation.
3099  void
3101  {
3102  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3103  m0.read();
3104  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3105  ScalarOperandU64 sdst(gpuDynInst, instData.SDST + m0.rawData());
3106 
3107  src.read();
3108 
3109  sdst = src.rawData();
3110 
3111  sdst.write();
3112  }
3113 
3115  : Inst_SOP1(iFmt, "s_cbranch_join")
3116  {
3117  setFlag(Branch);
3118  } // Inst_SOP1__S_CBRANCH_JOIN
3119 
3121  {
3122  } // ~Inst_SOP1__S_CBRANCH_JOIN
3123 
3124  // Conditional branch join point (end of conditional branch block).
3125  void
3127  {
3129  }
3130 
3132  : Inst_SOP1(iFmt, "s_abs_i32")
3133  {
3134  setFlag(ALU);
3135  } // Inst_SOP1__S_ABS_I32
3136 
3138  {
3139  } // ~Inst_SOP1__S_ABS_I32
3140 
3141  // if (S.i < 0) then D.i = -S.i;
3142  // else D.i = S.i;
3143  // SCC = 1 if result is non-zero.
3144  // Integer absolute value.
3145  void
3147  {
3148  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
3149  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
3150  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3151 
3152  src.read();
3153 
3154  sdst = std::abs(src.rawData());
3155 
3156  scc = sdst.rawData() ? 1 : 0;
3157 
3158  sdst.write();
3159  scc.write();
3160  }
3161 
3163  : Inst_SOP1(iFmt, "s_mov_fed_b32")
3164  {
3165  setFlag(ALU);
3166  } // Inst_SOP1__S_MOV_FED_B32
3167 
3169  {
3170  } // ~Inst_SOP1__S_MOV_FED_B32
3171 
3172  // D.u = S0.u.
3173  void
3175  {
3177  }
3178 
3180  InFmt_SOP1 *iFmt)
3181  : Inst_SOP1(iFmt, "s_set_gpr_idx_idx")
3182  {
3183  } // Inst_SOP1__S_SET_GPR_IDX_IDX
3184 
3186  {
3187  } // ~Inst_SOP1__S_SET_GPR_IDX_IDX
3188 
3189  // M0[7:0] = S0.u[7:0].
3190  // Modify the index used in vector GPR indexing.
3191  void
3193  {
3195  }
3196 
3198  : Inst_SOPC(iFmt, "s_cmp_eq_i32")
3199  {
3200  setFlag(ALU);
3201  } // Inst_SOPC__S_CMP_EQ_I32
3202 
3204  {
3205  } // ~Inst_SOPC__S_CMP_EQ_I32
3206 
3207  // SCC = (S0.i == S1.i).
3208  void
3210  {
3211  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3212  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3213  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3214 
3215  src0.read();
3216  src1.read();
3217 
3218  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
3219 
3220  scc.write();
3221  }
3222 
3224  : Inst_SOPC(iFmt, "s_cmp_lg_i32")
3225  {
3226  setFlag(ALU);
3227  } // Inst_SOPC__S_CMP_LG_I32
3228 
3230  {
3231  } // ~Inst_SOPC__S_CMP_LG_I32
3232 
3233  // SCC = (S0.i != S1.i).
3234  void
3236  {
3237  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3238  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3239  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3240 
3241  src0.read();
3242  src1.read();
3243 
3244  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
3245 
3246  scc.write();
3247  }
3248 
3250  : Inst_SOPC(iFmt, "s_cmp_gt_i32")
3251  {
3252  setFlag(ALU);
3253  } // Inst_SOPC__S_CMP_GT_I32
3254 
3256  {
3257  } // ~Inst_SOPC__S_CMP_GT_I32
3258 
3259  // SCC = (S0.i > S1.i).
3260  void
3262  {
3263  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3264  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3265  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3266 
3267  src0.read();
3268  src1.read();
3269 
3270  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
3271 
3272  scc.write();
3273  }
3274 
3276  : Inst_SOPC(iFmt, "s_cmp_ge_i32")
3277  {
3278  setFlag(ALU);
3279  } // Inst_SOPC__S_CMP_GE_I32
3280 
3282  {
3283  } // ~Inst_SOPC__S_CMP_GE_I32
3284 
3285  // SCC = (S0.i >= S1.i).
3286  void
3288  {
3289  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3290  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3291  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3292 
3293  src0.read();
3294  src1.read();
3295 
3296  scc = (src0.rawData() >= src1.rawData()) ? 1 : 0;
3297 
3298  scc.write();
3299  }
3300 
3302  : Inst_SOPC(iFmt, "s_cmp_lt_i32")
3303  {
3304  setFlag(ALU);
3305  } // Inst_SOPC__S_CMP_LT_I32
3306 
3308  {
3309  } // ~Inst_SOPC__S_CMP_LT_I32
3310 
3311  // SCC = (S0.i < S1.i).
3312  void
3314  {
3315  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3316  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3317  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3318 
3319  src0.read();
3320  src1.read();
3321 
3322  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
3323 
3324  scc.write();
3325  }
3326 
3328  : Inst_SOPC(iFmt, "s_cmp_le_i32")
3329  {
3330  setFlag(ALU);
3331  } // Inst_SOPC__S_CMP_LE_I32
3332 
3334  {
3335  } // ~Inst_SOPC__S_CMP_LE_I32
3336 
3337  // SCC = (S0.i <= S1.i).
3338  void
3340  {
3341  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3342  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3343  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3344 
3345  src0.read();
3346  src1.read();
3347 
3348  scc = (src0.rawData() <= src1.rawData()) ? 1 : 0;
3349 
3350  scc.write();
3351  }
3352 
3354  : Inst_SOPC(iFmt, "s_cmp_eq_u32")
3355  {
3356  setFlag(ALU);
3357  } // Inst_SOPC__S_CMP_EQ_U32
3358 
3360  {
3361  } // ~Inst_SOPC__S_CMP_EQ_U32
3362 
3363  // SCC = (S0.u == S1.u).
3364  void
3366  {
3367  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3368  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3369  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3370 
3371  src0.read();
3372  src1.read();
3373 
3374  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
3375 
3376  scc.write();
3377  }
3378 
3380  : Inst_SOPC(iFmt, "s_cmp_lg_u32")
3381  {
3382  setFlag(ALU);
3383  } // Inst_SOPC__S_CMP_LG_U32
3384 
3386  {
3387  } // ~Inst_SOPC__S_CMP_LG_U32
3388 
3389  // SCC = (S0.u != S1.u).
3390  void
3392  {
3393  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3394  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3395  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3396 
3397  src0.read();
3398  src1.read();
3399 
3400  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
3401 
3402  scc.write();
3403  }
3404 
3406  : Inst_SOPC(iFmt, "s_cmp_gt_u32")
3407  {
3408  setFlag(ALU);
3409  } // Inst_SOPC__S_CMP_GT_U32
3410 
3412  {
3413  } // ~Inst_SOPC__S_CMP_GT_U32
3414 
3415  // SCC = (S0.u > S1.u).
3416  void
3418  {
3419  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3420  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3421  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3422 
3423  src0.read();
3424  src1.read();
3425 
3426  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
3427 
3428  scc.write();
3429  }
3430 
3432  : Inst_SOPC(iFmt, "s_cmp_ge_u32")
3433  {
3434  setFlag(ALU);
3435  } // Inst_SOPC__S_CMP_GE_U32
3436 
3438  {
3439  } // ~Inst_SOPC__S_CMP_GE_U32
3440 
3441  // SCC = (S0.u >= S1.u).
3442  void
3444  {
3445  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3446  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3447  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3448 
3449  src0.read();
3450  src1.read();
3451 
3452  scc = (src0.rawData() >= src1.rawData()) ? 1 : 0;
3453 
3454  scc.write();
3455  }
3456 
3458  : Inst_SOPC(iFmt, "s_cmp_lt_u32")
3459  {
3460  setFlag(ALU);
3461  } // Inst_SOPC__S_CMP_LT_U32
3462 
3464  {
3465  } // ~Inst_SOPC__S_CMP_LT_U32
3466 
3467  // SCC = (S0.u < S1.u).
3468  void
3470  {
3471  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3472  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3473  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3474 
3475  src0.read();
3476  src1.read();
3477 
3478  scc = (src0.rawData() <= src1.rawData()) ? 1 : 0;
3479 
3480  scc.write();
3481  }
3482 
3484  : Inst_SOPC(iFmt, "s_cmp_le_u32")
3485  {
3486  setFlag(ALU);
3487  } // Inst_SOPC__S_CMP_LE_U32
3488 
3490  {
3491  } // ~Inst_SOPC__S_CMP_LE_U32
3492 
3493  // SCC = (S0.u <= S1.u).
3494  void
3496  {
3497  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3498  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3499  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3500 
3501  src0.read();
3502  src1.read();
3503 
3504  scc = (src0.rawData() <= src1.rawData()) ? 1 : 0;
3505 
3506  scc.write();
3507  }
3508 
3510  : Inst_SOPC(iFmt, "s_bitcmp0_b32")
3511  {
3512  setFlag(ALU);
3513  } // Inst_SOPC__S_BITCMP0_B32
3514 
3516  {
3517  } // ~Inst_SOPC__S_BITCMP0_B32
3518 
3519  // SCC = (S0.u[S1.u[4:0]] == 0).
3520  void
3522  {
3523  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3524  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3525  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3526 
3527  src0.read();
3528  src1.read();
3529 
3530  scc = !bits(src0.rawData(), bits(src1.rawData(), 4, 0)) ? 1 : 0;
3531 
3532  scc.write();
3533  }
3534 
3536  : Inst_SOPC(iFmt, "s_bitcmp1_b32")
3537  {
3538  setFlag(ALU);
3539  } // Inst_SOPC__S_BITCMP1_B32
3540 
3542  {
3543  } // ~Inst_SOPC__S_BITCMP1_B32
3544 
3545  // SCC = (S0.u[S1.u[4:0]] == 1).
3546  void
3548  {
3549  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3550  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3551  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3552 
3553  src0.read();
3554  src1.read();
3555 
3556  scc = bits(src0.rawData(), bits(src1.rawData(), 4, 0)) ? 1 : 0;
3557 
3558  scc.write();
3559  }
3560 
3562  : Inst_SOPC(iFmt, "s_bitcmp0_b64")
3563  {
3564  setFlag(ALU);
3565  } // Inst_SOPC__S_BITCMP0_B64
3566 
3568  {
3569  } // ~Inst_SOPC__S_BITCMP0_B64
3570 
3571  // SCC = (S0.u64[S1.u[5:0]] == 0).
3572  void
3574  {
3575  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
3576  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3577  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3578 
3579  src0.read();
3580  src1.read();
3581 
3582  scc = !bits(src0.rawData(), bits(src1.rawData(), 5, 0)) ? 1 : 0;
3583 
3584  scc.write();
3585  }
3586 
3588  : Inst_SOPC(iFmt, "s_bitcmp1_b64")
3589  {
3590  setFlag(ALU);
3591  } // Inst_SOPC__S_BITCMP1_B64
3592 
3594  {
3595  } // ~Inst_SOPC__S_BITCMP1_B64
3596 
3597  // SCC = (S0.u64[S1.u[5:0]] == 1).
3598  void
3600  {
3601  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
3602  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3603  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3604 
3605  src0.read();
3606  src1.read();
3607 
3608  scc = bits(src0.rawData(), bits(src1.rawData(), 5, 0)) ? 1 : 0;
3609 
3610  scc.write();
3611  }
3612 
3614  : Inst_SOPC(iFmt, "s_setvskip")
3615  {
3616  setFlag(UnconditionalJump);
3617  } // Inst_SOPC__S_SETVSKIP
3618 
3620  {
3621  } // ~Inst_SOPC__S_SETVSKIP
3622 
3623  // VSKIP = S0.u[S1.u[4:0]].
3624  // Enables and disables VSKIP mode.
3625  // When VSKIP is enabled, no VOP*/M*BUF/MIMG/DS/FLAT/EXP instuctions are
3626  // issued.
3627  void
3629  {
3631  }
3632 
3634  : Inst_SOPC(iFmt, "s_set_gpr_idx_on")
3635  {
3636  } // Inst_SOPC__S_SET_GPR_IDX_ON
3637 
3639  {
3640  } // ~Inst_SOPC__S_SET_GPR_IDX_ON
3641 
3642  // MODE.gpr_idx_en = 1;
3643  // M0[7:0] = S0.u[7:0];
3644  // M0[15:12] = SIMM4 (direct contents of S1 field);
3645  // Remaining bits of M0 are unmodified.
3646  // Enable GPR indexing mode. Vector operations after this will perform
3647  // relative GPR addressing based on the contents of M0.
3648  // The raw contents of the S1 field are read and used to set the enable
3649  // bits. S1[0] = VSRC0_REL, S1[1] = VSRC1_REL, S1[2] = VSRC2_REL and
3650  // S1[3] = VDST_REL.
3651  void
3653  {
3655  }
3656 
3658  : Inst_SOPC(iFmt, "s_cmp_eq_u64")
3659  {
3660  setFlag(ALU);
3661  } // Inst_SOPC__S_CMP_EQ_U64
3662 
3664  {
3665  } // ~Inst_SOPC__S_CMP_EQ_U64
3666 
3667  // SCC = (S0.i64 == S1.i64).
3668  void
3670  {
3671  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
3672  ConstScalarOperandI64 src1(gpuDynInst, instData.SSRC1);
3673  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3674 
3675  src0.read();
3676  src1.read();
3677 
3678  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
3679 
3680  scc.write();
3681  }
3682 
3684  : Inst_SOPC(iFmt, "s_cmp_lg_u64")
3685  {
3686  setFlag(ALU);
3687  } // Inst_SOPC__S_CMP_LG_U64
3688 
3690  {
3691  } // ~Inst_SOPC__S_CMP_LG_U64
3692 
3693  // SCC = (S0.i64 != S1.i64).
3694  void
3696  {
3697  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
3698  ConstScalarOperandI64 src1(gpuDynInst, instData.SSRC1);
3699  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3700 
3701  src0.read();
3702  src1.read();
3703 
3704  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
3705 
3706  scc.write();
3707  }
3708 
3710  : Inst_SOPP(iFmt, "s_nop")
3711  {
3712  setFlag(Nop);
3713  } // Inst_SOPP__S_NOP
3714 
3716  {
3717  } // ~Inst_SOPP__S_NOP
3718 
3719  // Do nothing.
3720  void
3722  {
3723  }
3724 
3726  : Inst_SOPP(iFmt, "s_endpgm")
3727  {
3728  setFlag(EndOfKernel);
3729  } // Inst_SOPP__S_ENDPGM
3730 
3732  {
3733  } // ~Inst_SOPP__S_ENDPGM
3734 
3735  // End of program; terminate wavefront.
3736  void
3738  {
3739  Wavefront *wf = gpuDynInst->wavefront();
3740  ComputeUnit *cu = gpuDynInst->computeUnit();
3741 
3742  // delete extra instructions fetched for completed work-items
3743  wf->instructionBuffer.erase(wf->instructionBuffer.begin() + 1,
3744  wf->instructionBuffer.end());
3745 
3746  if (wf->pendingFetch) {
3747  wf->dropFetch = true;
3748  }
3749 
3751  .flushBuf(wf->wfSlotId);
3753 
3754  int refCount = wf->computeUnit->getLds()
3755  .decreaseRefCounter(wf->dispatchId, wf->wgId);
3756 
3762  int bar_id = WFBarrier::InvalidID;
3763  if (wf->hasBarrier()) {
3764  assert(wf->getStatus() != Wavefront::S_BARRIER);
3765  bar_id = wf->barrierId();
3766  assert(bar_id != WFBarrier::InvalidID);
3767  wf->releaseBarrier();
3768  cu->decMaxBarrierCnt(bar_id);
3769  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - Exiting the "
3770  "program and decrementing max barrier count for "
3771  "barrier Id%d. New max count: %d.\n", cu->cu_id,
3772  wf->simdId, wf->wfSlotId, wf->wfDynId, bar_id,
3773  cu->maxBarrierCnt(bar_id));
3774  }
3775 
3776  DPRINTF(GPUExec, "CU%d: decrease ref ctr WG[%d] to [%d]\n",
3777  wf->computeUnit->cu_id, wf->wgId, refCount);
3778 
3780  wf->computeUnit->completedWfs++;
3781  wf->computeUnit->activeWaves--;
3782 
3783  panic_if(wf->computeUnit->activeWaves < 0, "CU[%d] Active waves less "
3784  "than zero\n", wf->computeUnit->cu_id);
3785 
3786  DPRINTF(GPUExec, "Doing return for CU%d: WF[%d][%d][%d]\n",
3787  wf->computeUnit->cu_id, wf->simdId, wf->wfSlotId, wf->wfDynId);
3788 
3789  for (int i = 0; i < wf->vecReads.size(); i++) {
3790  if (wf->rawDist.find(i) != wf->rawDist.end()) {
3791  wf->readsPerWrite.sample(wf->vecReads.at(i));
3792  }
3793  }
3794  wf->vecReads.clear();
3795  wf->rawDist.clear();
3796  wf->lastInstExec = 0;
3797 
3798  if (!refCount) {
3805  if (bar_id != WFBarrier::InvalidID) {
3806  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - All waves are "
3807  "now complete. Releasing barrier Id%d.\n", cu->cu_id,
3808  wf->simdId, wf->wfSlotId, wf->wfDynId,
3809  wf->barrierId());
3810  cu->releaseBarrier(bar_id);
3811  }
3812 
3820  // check whether the workgroup is indicating the kernel end (i.e.,
3821  // the last workgroup in the kernel).
3822  bool kernelEnd =
3824  // further check whether 'release @ kernel end' is needed
3825  bool relNeeded =
3827 
3828  // if not a kernel end or no release needed, retire the workgroup
3829  // directly
3830  if (!kernelEnd || !relNeeded) {
3833  wf->computeUnit->completedWGs++;
3834 
3835  return;
3836  }
3837 
3842  setFlag(MemSync);
3843  setFlag(GlobalSegment);
3844  // Notify Memory System of Kernel Completion
3846  gpuDynInst->simdId = wf->simdId;
3847  gpuDynInst->wfSlotId = wf->wfSlotId;
3848  gpuDynInst->wfDynId = wf->wfDynId;
3849 
3850  DPRINTF(GPUExec, "inject global memory fence for CU%d: "
3851  "WF[%d][%d][%d]\n", wf->computeUnit->cu_id,
3852  wf->simdId, wf->wfSlotId, wf->wfDynId);
3853 
3854  // call shader to prepare the flush operations
3855  wf->computeUnit->shader->prepareFlush(gpuDynInst);
3856 
3857  wf->computeUnit->completedWGs++;
3858  } else {
3860  }
3861  }
3862 
3863 
3865  : Inst_SOPP(iFmt, "s_branch")
3866  {
3867  setFlag(Branch);
3868  } // Inst_SOPP__S_BRANCH
3869 
3871  {
3872  } // ~Inst_SOPP__S_BRANCH
3873 
3874  // PC = PC + signext(SIMM16 * 4) + 4 (short jump).
3875  void
3877  {
3878  Wavefront *wf = gpuDynInst->wavefront();
3879  Addr pc = wf->pc();
3880  ScalarRegI16 simm16 = instData.SIMM16;
3881 
3882  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
3883 
3884  wf->pc(pc);
3885  }
3886 
3888  : Inst_SOPP(iFmt, "s_wakeup")
3889  {
3890  } // Inst_SOPP__S_WAKEUP
3891 
3893  {
3894  } // ~Inst_SOPP__S_WAKEUP
3895 
3896  // Allow a wave to wakeup all the other waves in its workgroup to force
3897  // them to wake up immediately from an S_SLEEP instruction. The wakeup is
3898  // ignored if the waves are not sleeping.
3899  void
3901  {
3903  }
3904 
3906  : Inst_SOPP(iFmt, "s_cbranch_scc0")
3907  {
3908  setFlag(Branch);
3909  } // Inst_SOPP__S_CBRANCH_SCC0
3910 
3912  {
3913  } // ~Inst_SOPP__S_CBRANCH_SCC0
3914 
3915  // if (SCC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
3916  // else NOP.
3917  void
3919  {
3920  Wavefront *wf = gpuDynInst->wavefront();
3921  Addr pc = wf->pc();
3922  ScalarRegI16 simm16 = instData.SIMM16;
3923  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
3924 
3925  scc.read();
3926 
3927  if (!scc.rawData()) {
3928  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
3929  }
3930 
3931  wf->pc(pc);
3932  }
3933 
3935  : Inst_SOPP(iFmt, "s_cbranch_scc1")
3936  {
3937  setFlag(Branch);
3938  } // Inst_SOPP__S_CBRANCH_SCC1
3939 
3941  {
3942  } // ~Inst_SOPP__S_CBRANCH_SCC1
3943 
3944  // if (SCC == 1) then PC = PC + signext(SIMM16 * 4) + 4;
3945  // else NOP.
3946  void
3948  {
3949  Wavefront *wf = gpuDynInst->wavefront();
3950  Addr pc = wf->pc();
3951  ScalarRegI16 simm16 = instData.SIMM16;
3952  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
3953 
3954  scc.read();
3955 
3956  if (scc.rawData()) {
3957  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
3958  }
3959 
3960  wf->pc(pc);
3961  }
3962 
3964  : Inst_SOPP(iFmt, "s_cbranch_vccz")
3965  {
3966  setFlag(Branch);
3967  setFlag(ReadsVCC);
3968  } // Inst_SOPP__S_CBRANCH_VCCZ
3969 
3971  {
3972  } // ~Inst_SOPP__S_CBRANCH_VCCZ
3973 
3974  // if (VCC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
3975  // else NOP.
3976  void
3978  {
3979  Wavefront *wf = gpuDynInst->wavefront();
3980  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
3981  Addr pc = wf->pc();
3982  ScalarRegI16 simm16 = instData.SIMM16;
3983 
3984  vcc.read();
3985 
3986  if (!vcc.rawData()) {
3987  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
3988  }
3989 
3990  wf->pc(pc);
3991  }
3992 
3994  : Inst_SOPP(iFmt, "s_cbranch_vccnz")
3995  {
3996  setFlag(Branch);
3997  setFlag(ReadsVCC);
3998  } // Inst_SOPP__S_CBRANCH_VCCNZ
3999 
4001  {
4002  } // ~Inst_SOPP__S_CBRANCH_VCCNZ
4003 
4004  // if (VCC != 0) then PC = PC + signext(SIMM16 * 4) + 4;
4005  // else NOP.
4006  void
4008  {
4009  Wavefront *wf = gpuDynInst->wavefront();
4010  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
4011 
4012  vcc.read();
4013 
4014  if (vcc.rawData()) {
4015  Addr pc = wf->pc();
4016  ScalarRegI16 simm16 = instData.SIMM16;
4017  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4018  wf->pc(pc);
4019  }
4020  }
4021 
4023  : Inst_SOPP(iFmt, "s_cbranch_execz")
4024  {
4025  setFlag(Branch);
4026  } // Inst_SOPP__S_CBRANCH_EXECZ
4027 
4029  {
4030  } // ~Inst_SOPP__S_CBRANCH_EXECZ
4031 
4032  // if (EXEC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
4033  // else NOP.
4034  void
4036  {
4037  Wavefront *wf = gpuDynInst->wavefront();
4038 
4039  if (wf->execMask().none()) {
4040  Addr pc = wf->pc();
4041  ScalarRegI16 simm16 = instData.SIMM16;
4042  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4043  wf->pc(pc);
4044  }
4045  }
4046 
4048  : Inst_SOPP(iFmt, "s_cbranch_execnz")
4049  {
4050  setFlag(Branch);
4051  } // Inst_SOPP__S_CBRANCH_EXECNZ
4052 
4054  {
4055  } // ~Inst_SOPP__S_CBRANCH_EXECNZ
4056 
4057  // if (EXEC != 0) then PC = PC + signext(SIMM16 * 4) + 4;
4058  // else NOP.
4059  void
4061  {
4062  Wavefront *wf = gpuDynInst->wavefront();
4063 
4064  if (wf->execMask().any()) {
4065  Addr pc = wf->pc();
4066  ScalarRegI16 simm16 = instData.SIMM16;
4067  pc = pc + ((ScalarRegI64)simm16 * 4LL) + 4LL;
4068  wf->pc(pc);
4069  }
4070  }
4071 
4073  : Inst_SOPP(iFmt, "s_barrier")
4074  {
4075  setFlag(MemBarrier);
4076  } // Inst_SOPP__S_BARRIER
4077 
4079  {
4080  } // ~Inst_SOPP__S_BARRIER
4081 
4088  void
4090  {
4091  Wavefront *wf = gpuDynInst->wavefront();
4092  ComputeUnit *cu = gpuDynInst->computeUnit();
4093 
4094  if (wf->hasBarrier()) {
4095  int bar_id = wf->barrierId();
4096  assert(wf->getStatus() != Wavefront::S_BARRIER);
4098  cu->incNumAtBarrier(bar_id);
4099  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - Stalling at "
4100  "barrier Id%d. %d waves now at barrier, %d waves "
4101  "remain.\n", cu->cu_id, wf->simdId, wf->wfSlotId,
4102  wf->wfDynId, bar_id, cu->numAtBarrier(bar_id),
4103  cu->numYetToReachBarrier(bar_id));
4104  }
4105  } // execute
4106  // --- Inst_SOPP__S_SETKILL class methods ---
4107 
4109  : Inst_SOPP(iFmt, "s_setkill")
4110  {
4111  } // Inst_SOPP__S_SETKILL
4112 
4114  {
4115  } // ~Inst_SOPP__S_SETKILL
4116 
4117  void
4119  {
4121  }
4122 
4124  : Inst_SOPP(iFmt, "s_waitcnt")
4125  {
4126  setFlag(ALU);
4127  setFlag(Waitcnt);
4128  } // Inst_SOPP__S_WAITCNT
4129 
4131  {
4132  } // ~Inst_SOPP__S_WAITCNT
4133 
4134  // Wait for the counts of outstanding lds, vector-memory and
4135  // export/vmem-write-data to be at or below the specified levels.
4136  // SIMM16[3:0] = vmcount (vector memory operations),
4137  // SIMM16[6:4] = export/mem-write-data count,
4138  // SIMM16[12:8] = LGKM_cnt (scalar-mem/GDS/LDS count).
4139  void
4141  {
4142  ScalarRegI32 vm_cnt = 0;
4143  ScalarRegI32 exp_cnt = 0;
4144  ScalarRegI32 lgkm_cnt = 0;
4145  vm_cnt = bits<ScalarRegI16>(instData.SIMM16, 3, 0);
4146  exp_cnt = bits<ScalarRegI16>(instData.SIMM16, 6, 4);
4147  lgkm_cnt = bits<ScalarRegI16>(instData.SIMM16, 12, 8);
4148  gpuDynInst->wavefront()->setWaitCnts(vm_cnt, exp_cnt, lgkm_cnt);
4149  }
4150 
4152  : Inst_SOPP(iFmt, "s_sethalt")
4153  {
4154  } // Inst_SOPP__S_SETHALT
4155 
4157  {
4158  } // ~Inst_SOPP__S_SETHALT
4159 
4160  void
4162  {
4164  }
4165 
4167  : Inst_SOPP(iFmt, "s_sleep")
4168  {
4169  } // Inst_SOPP__S_SLEEP
4170 
4172  {
4173  } // ~Inst_SOPP__S_SLEEP
4174 
4175  // Cause a wave to sleep for (64 * SIMM16[2:0] + 1..64) clocks.
4176  void
4178  {
4180  }
4181 
4183  : Inst_SOPP(iFmt, "s_setprio")
4184  {
4185  } // Inst_SOPP__S_SETPRIO
4186 
4188  {
4189  } // ~Inst_SOPP__S_SETPRIO
4190 
4191  // User settable wave priority is set to SIMM16[1:0]. 0 = lowest,
4192  // 3 = highest.
4193  void
4195  {
4197  }
4198 
4200  : Inst_SOPP(iFmt, "s_sendmsg")
4201  {
4202  } // Inst_SOPP__S_SENDMSG
4203 
4205  {
4206  } // ~Inst_SOPP__S_SENDMSG
4207 
4208  void
4210  {
4212  }
4213 
4215  : Inst_SOPP(iFmt, "s_sendmsghalt")
4216  {
4217  } // Inst_SOPP__S_SENDMSGHALT
4218 
4220  {
4221  } // ~Inst_SOPP__S_SENDMSGHALT
4222 
4223  void
4225  {
4227  }
4228 
4230  : Inst_SOPP(iFmt, "s_trap")
4231  {
4232  } // Inst_SOPP__S_TRAP
4233 
4235  {
4236  } // ~Inst_SOPP__S_TRAP
4237 
4238  // Enter the trap handler.
4239  void
4241  {
4243  }
4244 
4246  : Inst_SOPP(iFmt, "s_icache_inv")
4247  {
4248  } // Inst_SOPP__S_ICACHE_INV
4249 
4251  {
4252  } // ~Inst_SOPP__S_ICACHE_INV
4253 
4254  // Invalidate entire L1 instruction cache.
4255  void
4257  {
4259  }
4260 
4262  : Inst_SOPP(iFmt, "s_incperflevel")
4263  {
4264  } // Inst_SOPP__S_INCPERFLEVEL
4265 
4267  {
4268  } // ~Inst_SOPP__S_INCPERFLEVEL
4269 
4270  void
4272  {
4274  }
4275 
4277  : Inst_SOPP(iFmt, "s_decperflevel")
4278  {
4279  } // Inst_SOPP__S_DECPERFLEVEL
4280 
4282  {
4283  } // ~Inst_SOPP__S_DECPERFLEVEL
4284 
4285  void
4287  {
4289  }
4290 
4292  : Inst_SOPP(iFmt, "s_ttracedata")
4293  {
4294  } // Inst_SOPP__S_TTRACEDATA
4295 
4297  {
4298  } // ~Inst_SOPP__S_TTRACEDATA
4299 
4300  void
4302  {
4304  }
4305 
4307  InFmt_SOPP *iFmt)
4308  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys")
4309  {
4310  setFlag(Branch);
4311  } // Inst_SOPP__S_CBRANCH_CDBGSYS
4312 
4314  {
4315  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS
4316 
4317  void
4319  {
4321  }
4322 
4324  InFmt_SOPP *iFmt)
4325  : Inst_SOPP(iFmt, "s_cbranch_cdbguser")
4326  {
4327  setFlag(Branch);
4328  } // Inst_SOPP__S_CBRANCH_CDBGUSER
4329 
4331  {
4332  } // ~Inst_SOPP__S_CBRANCH_CDBGUSER
4333 
4334  void
4336  {
4338  }
4339 
4341  InFmt_SOPP *iFmt)
4342  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys_or_user")
4343  {
4344  setFlag(Branch);
4345  } // Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
4346 
4349  {
4350  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
4351 
4352  void
4354  {
4356  }
4357 
4360  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys_and_user")
4361  {
4362  setFlag(Branch);
4363  } // Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
4364 
4367  {
4368  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
4369 
4370  void
4372  {
4374  }
4375 
4377  : Inst_SOPP(iFmt, "s_endpgm_saved")
4378  {
4379  } // Inst_SOPP__S_ENDPGM_SAVED
4380 
4382  {
4383  } // ~Inst_SOPP__S_ENDPGM_SAVED
4384 
4385  // End of program.
4386  void
4388  {
4390  }
4391 
4393  InFmt_SOPP *iFmt)
4394  : Inst_SOPP(iFmt, "s_set_gpr_idx_off")
4395  {
4396  } // Inst_SOPP__S_SET_GPR_IDX_OFF
4397 
4399  {
4400  } // ~Inst_SOPP__S_SET_GPR_IDX_OFF
4401 
4402  // MODE.gpr_idx_en = 0.
4403  // Clear GPR indexing mode. Vector operations after this will not perform
4404  // relative GPR addressing regardless of the contents of M0.
4405  void
4407  {
4409  }
4410 
4412  InFmt_SOPP *iFmt)
4413  : Inst_SOPP(iFmt, "s_set_gpr_idx_mode")
4414  {
4415  } // Inst_SOPP__S_SET_GPR_IDX_MODE
4416 
4418  {
4419  } // ~Inst_SOPP__S_SET_GPR_IDX_MODE
4420 
4421  // M0[15:12] = SIMM4.
4422  // Modify the mode used for vector GPR indexing.
4423  // The raw contents of the source field are read and used to set the enable
4424  // bits. SIMM4[0] = VSRC0_REL, SIMM4[1] = VSRC1_REL, SIMM4[2] = VSRC2_REL
4425  // and SIMM4[3] = VDST_REL.
4426  void
4428  {
4430  }
4431 
4433  : Inst_SMEM(iFmt, "s_load_dword")
4434  {
4435  setFlag(MemoryRef);
4436  setFlag(Load);
4437  } // Inst_SMEM__S_LOAD_DWORD
4438 
4440  {
4441  } // ~Inst_SMEM__S_LOAD_DWORD
4442 
4449  void
4451  {
4452  Wavefront *wf = gpuDynInst->wavefront();
4453  gpuDynInst->execUnitId = wf->execUnitId;
4454  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4455  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4456  ScalarRegU32 offset(0);
4457  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4458 
4459  addr.read();
4460 
4461  if (instData.IMM) {
4462  offset = extData.OFFSET;
4463  } else {
4464  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4465  off_sgpr.read();
4466  offset = off_sgpr.rawData();
4467  }
4468 
4469  calcAddr(gpuDynInst, addr, offset);
4470 
4471  gpuDynInst->computeUnit()->scalarMemoryPipe
4472  .getGMReqFIFO().push(gpuDynInst);
4473 
4474  wf->scalarRdGmReqsInPipe--;
4476  gpuDynInst->wavefront()->outstandingReqs++;
4477  gpuDynInst->wavefront()->validateRequestCounters();
4478  }
4479 
4480  void
4482  {
4483  initMemRead<1>(gpuDynInst);
4484  } // initiateAcc
4485 
4486  void
4488  {
4489  ScalarOperandU32 sdst(gpuDynInst, instData.SDATA);
4490  sdst.write();
4491  } // completeAcc
4492 
4494  : Inst_SMEM(iFmt, "s_load_dwordx2")
4495  {
4496  setFlag(MemoryRef);
4497  setFlag(Load);
4498  } // Inst_SMEM__S_LOAD_DWORDX2
4499 
4501  {
4502  } // ~Inst_SMEM__S_LOAD_DWORDX2
4503 
4508  void
4510  {
4511  Wavefront *wf = gpuDynInst->wavefront();
4512  gpuDynInst->execUnitId = wf->execUnitId;
4513  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4514  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4515  ScalarRegU32 offset(0);
4516  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4517 
4518  addr.read();
4519 
4520  if (instData.IMM) {
4521  offset = extData.OFFSET;
4522  } else {
4523  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4524  off_sgpr.read();
4525  offset = off_sgpr.rawData();
4526  }
4527 
4528  calcAddr(gpuDynInst, addr, offset);
4529 
4530  gpuDynInst->computeUnit()->scalarMemoryPipe.
4531  getGMReqFIFO().push(gpuDynInst);
4532 
4533  wf->scalarRdGmReqsInPipe--;
4535  gpuDynInst->wavefront()->outstandingReqs++;
4536  gpuDynInst->wavefront()->validateRequestCounters();
4537  }
4538 
4539  void
4541  {
4542  initMemRead<2>(gpuDynInst);
4543  } // initiateAcc
4544 
4545  void
4547  {
4548  ScalarOperandU64 sdst(gpuDynInst, instData.SDATA);
4549  sdst.write();
4550  } // completeAcc
4551 
4553  : Inst_SMEM(iFmt, "s_load_dwordx4")
4554  {
4555  setFlag(MemoryRef);
4556  setFlag(Load);
4557  } // Inst_SMEM__S_LOAD_DWORDX4
4558 
4560  {
4561  } // ~Inst_SMEM__S_LOAD_DWORDX4
4562 
4563  // Read 4 dwords from scalar data cache. See S_LOAD_DWORD for details on
4564  // the offset input.
4565  void
4567  {
4568  Wavefront *wf = gpuDynInst->wavefront();
4569  gpuDynInst->execUnitId = wf->execUnitId;
4570  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4571  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4572  ScalarRegU32 offset(0);
4573  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4574 
4575  addr.read();
4576 
4577  if (instData.IMM) {
4578  offset = extData.OFFSET;
4579  } else {
4580  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4581  off_sgpr.read();
4582  offset = off_sgpr.rawData();
4583  }
4584 
4585  calcAddr(gpuDynInst, addr, offset);
4586 
4587  gpuDynInst->computeUnit()->scalarMemoryPipe.
4588  getGMReqFIFO().push(gpuDynInst);
4589 
4590  wf->scalarRdGmReqsInPipe--;
4592  gpuDynInst->wavefront()->outstandingReqs++;
4593  gpuDynInst->wavefront()->validateRequestCounters();
4594  }
4595 
4596  void
4598  {
4599  initMemRead<4>(gpuDynInst);
4600  } // initiateAcc
4601 
4602  void
4604  {
4605  ScalarOperandU128 sdst(gpuDynInst, instData.SDATA);
4606  sdst.write();
4607  } // completeAcc
4608 
4610  : Inst_SMEM(iFmt, "s_load_dwordx8")
4611  {
4612  setFlag(MemoryRef);
4613  setFlag(Load);
4614  } // Inst_SMEM__S_LOAD_DWORDX8
4615 
4617  {
4618  } // ~Inst_SMEM__S_LOAD_DWORDX8
4619 
4620  // Read 8 dwords from scalar data cache. See S_LOAD_DWORD for details on
4621  // the offset input.
4622  void
4624  {
4625  Wavefront *wf = gpuDynInst->wavefront();
4626  gpuDynInst->execUnitId = wf->execUnitId;
4627  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4628  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4629  ScalarRegU32 offset(0);
4630  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4631 
4632  addr.read();
4633 
4634  if (instData.IMM) {
4635  offset = extData.OFFSET;
4636  } else {
4637  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4638  off_sgpr.read();
4639  offset = off_sgpr.rawData();
4640  }
4641 
4642  calcAddr(gpuDynInst, addr, offset);
4643 
4644  gpuDynInst->computeUnit()->scalarMemoryPipe.
4645  getGMReqFIFO().push(gpuDynInst);
4646 
4647  wf->scalarRdGmReqsInPipe--;
4649  gpuDynInst->wavefront()->outstandingReqs++;
4650  gpuDynInst->wavefront()->validateRequestCounters();
4651  }
4652 
4653  void
4655  {
4656  initMemRead<8>(gpuDynInst);
4657  } // initiateAcc
4658 
4659  void
4661  {
4662  ScalarOperandU256 sdst(gpuDynInst, instData.SDATA);
4663  sdst.write();
4664  } // completeAcc
4665 
4667  : Inst_SMEM(iFmt, "s_load_dwordx16")
4668  {
4669  setFlag(MemoryRef);
4670  setFlag(Load);
4671  } // Inst_SMEM__S_LOAD_DWORDX16
4672 
4674  {
4675  } // ~Inst_SMEM__S_LOAD_DWORDX16
4676 
4677  // Read 16 dwords from scalar data cache. See S_LOAD_DWORD for details on
4678  // the offset input.
4679  void
4681  {
4682  Wavefront *wf = gpuDynInst->wavefront();
4683  gpuDynInst->execUnitId = wf->execUnitId;
4684  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4685  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4686  ScalarRegU32 offset(0);
4687  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4688 
4689  addr.read();
4690 
4691  if (instData.IMM) {
4692  offset = extData.OFFSET;
4693  } else {
4694  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4695  off_sgpr.read();
4696  offset = off_sgpr.rawData();
4697  }
4698 
4699  calcAddr(gpuDynInst, addr, offset);
4700 
4701  gpuDynInst->computeUnit()->scalarMemoryPipe.
4702  getGMReqFIFO().push(gpuDynInst);
4703 
4704  wf->scalarRdGmReqsInPipe--;
4706  gpuDynInst->wavefront()->outstandingReqs++;
4707  gpuDynInst->wavefront()->validateRequestCounters();
4708  }
4709 
4710  void
4712  {
4713  initMemRead<16>(gpuDynInst);
4714  } // initiateAcc
4715 
4716  void
4718  {
4719  ScalarOperandU512 sdst(gpuDynInst, instData.SDATA);
4720  sdst.write();
4721  } // completeAcc
4722 
4724  InFmt_SMEM *iFmt)
4725  : Inst_SMEM(iFmt, "s_buffer_load_dword")
4726  {
4727  setFlag(MemoryRef);
4728  setFlag(Load);
4729  } // Inst_SMEM__S_BUFFER_LOAD_DWORD
4730 
4732  {
4733  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORD
4734 
4735  // Read 1 dword from scalar data cache. See S_LOAD_DWORD for details on the
4736  // offset input.
4737  void
4739  {
4740  Wavefront *wf = gpuDynInst->wavefront();
4741  gpuDynInst->execUnitId = wf->execUnitId;
4742  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4743  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4744  ScalarRegU32 offset(0);
4745  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4746 
4747  rsrcDesc.read();
4748 
4749  if (instData.IMM) {
4750  offset = extData.OFFSET;
4751  } else {
4752  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4753  off_sgpr.read();
4754  offset = off_sgpr.rawData();
4755  }
4756 
4757  calcAddr(gpuDynInst, rsrcDesc, offset);
4758 
4759  gpuDynInst->computeUnit()->scalarMemoryPipe
4760  .getGMReqFIFO().push(gpuDynInst);
4761 
4762  wf->scalarRdGmReqsInPipe--;
4764  gpuDynInst->wavefront()->outstandingReqs++;
4765  gpuDynInst->wavefront()->validateRequestCounters();
4766  } // execute
4767 
4768  void
4770  {
4771  initMemRead<1>(gpuDynInst);
4772  } // initiateAcc
4773 
4774  void
4776  {
4777  // 1 request, size 32
4778  ScalarOperandU32 sdst(gpuDynInst, instData.SDATA);
4779  sdst.write();
4780  } // completeAcc
4781 
4783  InFmt_SMEM *iFmt)
4784  : Inst_SMEM(iFmt, "s_buffer_load_dwordx2")
4785  {
4786  setFlag(MemoryRef);
4787  setFlag(Load);
4788  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX2
4789 
4791  {
4792  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX2
4793 
4794  // Read 2 dwords from scalar data cache. See S_LOAD_DWORD for details on
4795  // the offset input.
4796  void
4798  {
4799  Wavefront *wf = gpuDynInst->wavefront();
4800  gpuDynInst->execUnitId = wf->execUnitId;
4801  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4802  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4803  ScalarRegU32 offset(0);
4804  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4805 
4806  rsrcDesc.read();
4807 
4808  if (instData.IMM) {
4809  offset = extData.OFFSET;
4810  } else {
4811  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4812  off_sgpr.read();
4813  offset = off_sgpr.rawData();
4814  }
4815 
4816  calcAddr(gpuDynInst, rsrcDesc, offset);
4817 
4818  gpuDynInst->computeUnit()->scalarMemoryPipe
4819  .getGMReqFIFO().push(gpuDynInst);
4820 
4821  wf->scalarRdGmReqsInPipe--;
4823  gpuDynInst->wavefront()->outstandingReqs++;
4824  gpuDynInst->wavefront()->validateRequestCounters();
4825  } // execute
4826 
4827  void
4829  {
4830  initMemRead<2>(gpuDynInst);
4831  } // initiateAcc
4832 
4833  void
4835  {
4836  // use U64 because 2 requests, each size 32
4837  ScalarOperandU64 sdst(gpuDynInst, instData.SDATA);
4838  sdst.write();
4839  } // completeAcc
4840 
4842  InFmt_SMEM *iFmt)
4843  : Inst_SMEM(iFmt, "s_buffer_load_dwordx4")
4844  {
4845  setFlag(MemoryRef);
4846  setFlag(Load);
4847  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX4
4848 
4850  {
4851  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX4
4852 
4853  // Read 4 dwords from scalar data cache. See S_LOAD_DWORD for details on
4854  // the offset input.
4855  void
4857  {
4858  Wavefront *wf = gpuDynInst->wavefront();
4859  gpuDynInst->execUnitId = wf->execUnitId;
4860  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4861  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4862  ScalarRegU32 offset(0);
4863  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4864 
4865  rsrcDesc.read();
4866 
4867  if (instData.IMM) {
4868  offset = extData.OFFSET;
4869  } else {
4870  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4871  off_sgpr.read();
4872  offset = off_sgpr.rawData();
4873  }
4874 
4875  calcAddr(gpuDynInst, rsrcDesc, offset);
4876 
4877  gpuDynInst->computeUnit()->scalarMemoryPipe
4878  .getGMReqFIFO().push(gpuDynInst);
4879 
4880  wf->scalarRdGmReqsInPipe--;
4882  gpuDynInst->wavefront()->outstandingReqs++;
4883  gpuDynInst->wavefront()->validateRequestCounters();
4884  } // execute
4885 
4886  void
4888  {
4889  initMemRead<4>(gpuDynInst);
4890  } // initiateAcc
4891 
4892  void
4894  {
4895  // 4 requests, each size 32
4896  ScalarOperandU128 sdst(gpuDynInst, instData.SDATA);
4897  sdst.write();
4898  } // completeAcc
4899 
4901  InFmt_SMEM *iFmt)
4902  : Inst_SMEM(iFmt, "s_buffer_load_dwordx8")
4903  {
4904  setFlag(MemoryRef);
4905  setFlag(Load);
4906  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX8
4907 
4909  {
4910  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX8
4911 
4912  // Read 8 dwords from scalar data cache. See S_LOAD_DWORD for details on
4913  // the offset input.
4914  void
4916  {
4917  Wavefront *wf = gpuDynInst->wavefront();
4918  gpuDynInst->execUnitId = wf->execUnitId;
4919  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4920  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4921  ScalarRegU32 offset(0);
4922  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4923 
4924  rsrcDesc.read();
4925 
4926  if (instData.IMM) {
4927  offset = extData.OFFSET;
4928  } else {
4929  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4930  off_sgpr.read();
4931  offset = off_sgpr.rawData();
4932  }
4933 
4934  calcAddr(gpuDynInst, rsrcDesc, offset);
4935 
4936  gpuDynInst->computeUnit()->scalarMemoryPipe
4937  .getGMReqFIFO().push(gpuDynInst);
4938 
4939  wf->scalarRdGmReqsInPipe--;
4941  gpuDynInst->wavefront()->outstandingReqs++;
4942  gpuDynInst->wavefront()->validateRequestCounters();
4943  } // execute
4944 
4945  void
4947  {
4948  initMemRead<8>(gpuDynInst);
4949  } // initiateAcc
4950 
4951  void
4953  {
4954  // 8 requests, each size 32
4955  ScalarOperandU256 sdst(gpuDynInst, instData.SDATA);
4956  sdst.write();
4957  } // completeAcc
4958 
4960  InFmt_SMEM *iFmt)
4961  : Inst_SMEM(iFmt, "s_buffer_load_dwordx16")
4962  {
4963  setFlag(MemoryRef);
4964  setFlag(Load);
4965  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX16
4966 
4968  {
4969  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX16
4970 
4971  // Read 16 dwords from scalar data cache. See S_LOAD_DWORD for details on
4972  // the offset input.
4973  void
4975  {
4976  Wavefront *wf = gpuDynInst->wavefront();
4977  gpuDynInst->execUnitId = wf->execUnitId;
4978  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4979  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4980  ScalarRegU32 offset(0);
4981  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4982 
4983  rsrcDesc.read();
4984 
4985  if (instData.IMM) {
4986  offset = extData.OFFSET;
4987  } else {
4988  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4989  off_sgpr.read();
4990  offset = off_sgpr.rawData();
4991  }
4992 
4993  calcAddr(gpuDynInst, rsrcDesc, offset);
4994 
4995  gpuDynInst->computeUnit()->scalarMemoryPipe
4996  .getGMReqFIFO().push(gpuDynInst);
4997 
4998  wf->scalarRdGmReqsInPipe--;
5000  gpuDynInst->wavefront()->outstandingReqs++;
5001  gpuDynInst->wavefront()->validateRequestCounters();
5002  } // execute
5003 
5004  void
5006  {
5007  initMemRead<16>(gpuDynInst);
5008  } // initiateAcc
5009 
5010  void
5012  {
5013  // 16 requests, each size 32
5014  ScalarOperandU512 sdst(gpuDynInst, instData.SDATA);
5015  sdst.write();
5016  } // completeAcc
5017 
5019  : Inst_SMEM(iFmt, "s_store_dword")
5020  {
5021  setFlag(MemoryRef);
5022  setFlag(Store);
5023  } // Inst_SMEM__S_STORE_DWORD
5024 
5026  {
5027  } // ~Inst_SMEM__S_STORE_DWORD
5028 
5029  // Write 1 dword to scalar data cache.
5030  // If the offset is specified as an SGPR, the SGPR contains an unsigned
5031  // BYTE offset (the 2 LSBs are ignored).
5032  // If the offset is specified as an immediate 20-bit constant, the
5033  // constant is an unsigned BYTE offset.
5034  void
5036  {
5037  Wavefront *wf = gpuDynInst->wavefront();
5038  gpuDynInst->execUnitId = wf->execUnitId;
5039  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5040  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5041  ScalarRegU32 offset(0);
5042  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5043 
5044  addr.read();
5045 
5046  if (instData.IMM) {
5047  offset = extData.OFFSET;
5048  } else {
5049  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5050  off_sgpr.read();
5051  offset = off_sgpr.rawData();
5052  }
5053 
5054  calcAddr(gpuDynInst, addr, offset);
5055 
5056  gpuDynInst->computeUnit()->scalarMemoryPipe.
5057  getGMReqFIFO().push(gpuDynInst);
5058 
5059  wf->scalarWrGmReqsInPipe--;
5061  gpuDynInst->wavefront()->outstandingReqs++;
5062  gpuDynInst->wavefront()->validateRequestCounters();
5063  }
5064 
5065  void
5067  {
5068  ConstScalarOperandU32 sdata(gpuDynInst, instData.SDATA);
5069  sdata.read();
5070  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5071  sizeof(ScalarRegU32));
5072  initMemWrite<1>(gpuDynInst);
5073  } // initiateAcc
5074 
5075  void
5077  {
5078  } // completeAcc
5079 
5081  : Inst_SMEM(iFmt, "s_store_dwordx2")
5082  {
5083  setFlag(MemoryRef);
5084  setFlag(Store);
5085  } // Inst_SMEM__S_STORE_DWORDX2
5086 
5088  {
5089  } // ~Inst_SMEM__S_STORE_DWORDX2
5090 
5091  // Write 2 dwords to scalar data cache. See S_STORE_DWORD for details on
5092  // the offset input.
5093  void
5095  {
5096  Wavefront *wf = gpuDynInst->wavefront();
5097  gpuDynInst->execUnitId = wf->execUnitId;
5098  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5099  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5100  ScalarRegU32 offset(0);
5101  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5102 
5103  addr.read();
5104 
5105  if (instData.IMM) {
5106  offset = extData.OFFSET;
5107  } else {
5108  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5109  off_sgpr.read();
5110  offset = off_sgpr.rawData();
5111  }
5112 
5113  calcAddr(gpuDynInst, addr, offset);
5114 
5115  gpuDynInst->computeUnit()->scalarMemoryPipe.
5116  getGMReqFIFO().push(gpuDynInst);
5117 
5118  wf->scalarWrGmReqsInPipe--;
5120  gpuDynInst->wavefront()->outstandingReqs++;
5121  gpuDynInst->wavefront()->validateRequestCounters();
5122  }
5123 
5124  void
5126  {
5127  ConstScalarOperandU64 sdata(gpuDynInst, instData.SDATA);
5128  sdata.read();
5129  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5130  sizeof(ScalarRegU64));
5131  initMemWrite<2>(gpuDynInst);
5132  } // initiateAcc
5133 
5134  void
5136  {
5137  } // completeAcc
5138 
5140  : Inst_SMEM(iFmt, "s_store_dwordx4")
5141  {
5142  setFlag(MemoryRef);
5143  setFlag(Store);
5144  } // Inst_SMEM__S_STORE_DWORDX4
5145 
5147  {
5148  } // ~Inst_SMEM__S_STORE_DWORDX4
5149 
5150  // Write 4 dwords to scalar data cache. See S_STORE_DWORD for details on
5151  // the offset input.
5152  void
5154  {
5155  Wavefront *wf = gpuDynInst->wavefront();
5156  gpuDynInst->execUnitId = wf->execUnitId;
5157  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5158  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5159  ScalarRegU32 offset(0);
5160  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5161 
5162  addr.read();
5163 
5164  if (instData.IMM) {
5165  offset = extData.OFFSET;
5166  } else {
5167  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5168  off_sgpr.read();
5169  offset = off_sgpr.rawData();
5170  }
5171 
5172  calcAddr(gpuDynInst, addr, offset);
5173 
5174  gpuDynInst->computeUnit()->scalarMemoryPipe.
5175  getGMReqFIFO().push(gpuDynInst);
5176 
5177  wf->scalarWrGmReqsInPipe--;
5179  gpuDynInst->wavefront()->outstandingReqs++;
5180  gpuDynInst->wavefront()->validateRequestCounters();
5181  }
5182 
5183  void
5185  {
5186  ConstScalarOperandU128 sdata(gpuDynInst, instData.SDATA);
5187  sdata.read();
5188  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5189  4 * sizeof(ScalarRegU32));
5190  initMemWrite<4>(gpuDynInst);
5191  } // initiateAcc
5192 
5193  void
5195  {
5196  } // completeAcc
5197 
5199  InFmt_SMEM *iFmt)
5200  : Inst_SMEM(iFmt, "s_buffer_store_dword")
5201  {
5202  setFlag(MemoryRef);
5203  setFlag(Store);
5204  } // Inst_SMEM__S_BUFFER_STORE_DWORD
5205 
5207  {
5208  } // ~Inst_SMEM__S_BUFFER_STORE_DWORD
5209 
5210  // Write 1 dword to scalar data cache. See S_STORE_DWORD for details on the
5211  // offset input.
5212  void
5214  {
5216  }
5217 
5218  void
5220  {
5221  } // initiateAcc
5222 
5223  void
5225  {
5226  } // completeAcc
5227 
5229  InFmt_SMEM *iFmt)
5230  : Inst_SMEM(iFmt, "s_buffer_store_dwordx2")
5231  {
5232  setFlag(MemoryRef);
5233  setFlag(Store);
5234  } // Inst_SMEM__S_BUFFER_STORE_DWORDX2
5235 
5237  {
5238  } // ~Inst_SMEM__S_BUFFER_STORE_DWORDX2
5239 
5240  // Write 2 dwords to scalar data cache. See S_STORE_DWORD for details on
5241  // the offset input.
5242  void
5244  {
5246  }
5247 
5248  void
5250  {
5251  } // initiateAcc
5252 
5253  void
5255  {
5256  } // completeAcc
5257 
5259  InFmt_SMEM *iFmt)
5260  : Inst_SMEM(iFmt, "s_buffer_store_dwordx4")
5261  {
5262  setFlag(MemoryRef);
5263  setFlag(Store);
5264  } // Inst_SMEM__S_BUFFER_STORE_DWORDX4
5265 
5267  {
5268  } // ~Inst_SMEM__S_BUFFER_STORE_DWORDX4
5269 
5270  // Write 4 dwords to scalar data cache. See S_STORE_DWORD for details on
5271  // the offset input.
5272  void
5274  {
5276  }
5277 
5278  void
5280  {
5281  } // initiateAcc
5282 
5283  void
5285  {
5286  } // completeAcc
5287 
5289  : Inst_SMEM(iFmt, "s_dcache_inv")
5290  {
5291  } // Inst_SMEM__S_DCACHE_INV
5292 
5294  {
5295  } // ~Inst_SMEM__S_DCACHE_INV
5296 
5297  // Invalidate the scalar data cache.
5298  void
5300  {
5302  }
5303 
5305  : Inst_SMEM(iFmt, "s_dcache_wb")
5306  {
5307  } // Inst_SMEM__S_DCACHE_WB
5308 
5310  {
5311  } // ~Inst_SMEM__S_DCACHE_WB
5312 
5313  // Write back dirty data in the scalar data cache.
5314  void
5316  {
5318  }
5319 
5321  : Inst_SMEM(iFmt, "s_dcache_inv_vol")
5322  {
5323  } // Inst_SMEM__S_DCACHE_INV_VOL
5324 
5326  {
5327  } // ~Inst_SMEM__S_DCACHE_INV_VOL
5328 
5329  // Invalidate the scalar data cache volatile lines.
5330  void
5332  {
5334  }
5335 
5337  : Inst_SMEM(iFmt, "s_dcache_wb_vol")
5338  {
5339  } // Inst_SMEM__S_DCACHE_WB_VOL
5340 
5342  {
5343  } // ~Inst_SMEM__S_DCACHE_WB_VOL
5344 
5345  // Write back dirty data in the scalar data cache volatile lines.
5346  void
5348  {
5350  }
5351 
5353  : Inst_SMEM(iFmt, "s_memtime")
5354  {
5355  } // Inst_SMEM__S_MEMTIME
5356 
5358  {
5359  } // ~Inst_SMEM__S_MEMTIME
5360 
5361  // Return current 64-bit timestamp.
5362  void
5364  {
5366  }
5367 
5369  : Inst_SMEM(iFmt, "s_memrealtime")
5370  {
5371  } // Inst_SMEM__S_MEMREALTIME
5372 
5374  {
5375  } // ~Inst_SMEM__S_MEMREALTIME
5376 
5377  // Return current 64-bit RTC.
5378  void
5380  {
5382  }
5383 
5385  : Inst_SMEM(iFmt, "s_atc_probe")
5386  {
5387  } // Inst_SMEM__S_ATC_PROBE
5388 
5390  {
5391  } // ~Inst_SMEM__S_ATC_PROBE
5392 
5393  void
5395  {
5397  }
5398 
5400  InFmt_SMEM *iFmt)
5401  : Inst_SMEM(iFmt, "s_atc_probe_buffer")
5402  {
5403  } // Inst_SMEM__S_ATC_PROBE_BUFFER
5404 
5406  {
5407  } // ~Inst_SMEM__S_ATC_PROBE_BUFFER
5408 
5409  void
5411  {
5413  }
5414 
5416  : Inst_VOP2(iFmt, "v_cndmask_b32")
5417  {
5418  setFlag(ALU);
5419  setFlag(ReadsVCC);
5420  } // Inst_VOP2__V_CNDMASK_B32
5421 
5423  {
5424  } // ~Inst_VOP2__V_CNDMASK_B32
5425 
5426  // D.u = (VCC[i] ? S1.u : S0.u) (i = threadID in wave); VOP3: specify VCC
5427  // as a scalar GPR in S2.
5428  void
5430  {
5431  Wavefront *wf = gpuDynInst->wavefront();
5432  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
5433  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
5434  VecOperandU32 vdst(gpuDynInst, instData.VDST);
5435  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
5436 
5437  src0.readSrc();
5438  src1.read();
5439  vcc.read();
5440 
5441  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5442  if (wf->execMask(lane)) {
5443  vdst[lane]
5444  = bits(vcc.rawData(), lane) ? src1[lane] : src0[lane];
5445  }
5446  }
5447 
5448  vdst.write();
5449  }
5450 
5452  : Inst_VOP2(iFmt, "v_add_f32")
5453  {
5454  setFlag(ALU);
5455  setFlag(F32);
5456  } // Inst_VOP2__V_ADD_F32
5457 
5459  {
5460  } // ~Inst_VOP2__V_ADD_F32
5461 
5462  // D.f = S0.f + S1.f.
5463  void
5465  {
5466  Wavefront *wf = gpuDynInst->wavefront();
5467  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5468  VecOperandF32 src1(gpuDynInst, instData.VSRC1);
5469  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5470 
5471  src0.readSrc();
5472  src1.read();
5473 
5474  if (isDPPInst()) {
5475  VecOperandF32 src0_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
5476  src0_dpp.read();
5477 
5478  DPRINTF(GCN3, "Handling V_ADD_F32 SRC DPP. SRC0: register v[%d], "
5479  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
5480  "SRC1_ABS: %d, SRC1_NEG: %d, BOUND_CTRL: %d, "
5481  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
5490 
5491  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src0_dpp, src1);
5492 
5493  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5494  if (wf->execMask(lane)) {
5495  vdst[lane] = src0_dpp[lane] + src1[lane];
5496  }
5497  }
5498  } else {
5499  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5500  if (wf->execMask(lane)) {
5501  vdst[lane] = src0[lane] + src1[lane];
5502  }
5503  }
5504  }
5505 
5506  vdst.write();
5507  }
5508 
5510  : Inst_VOP2(iFmt, "v_sub_f32")
5511  {
5512  setFlag(ALU);
5513  setFlag(F32);
5514  } // Inst_VOP2__V_SUB_F32
5515 
5517  {
5518  } // ~Inst_VOP2__V_SUB_F32
5519 
5520  // D.f = S0.f - S1.f.
5521  void
5523  {
5524  Wavefront *wf = gpuDynInst->wavefront();
5525  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5526  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5527  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5528 
5529  src0.readSrc();
5530  src1.read();
5531 
5532  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5533  if (wf->execMask(lane)) {
5534  vdst[lane] = src0[lane] - src1[lane];
5535  }
5536  }
5537 
5538  vdst.write();
5539  }
5540 
5542  : Inst_VOP2(iFmt, "v_subrev_f32")
5543  {
5544  setFlag(ALU);
5545  setFlag(F32);
5546  } // Inst_VOP2__V_SUBREV_F32
5547 
5549  {
5550  } // ~Inst_VOP2__V_SUBREV_F32
5551 
5552  // D.f = S1.f - S0.f.
5553  void
5555  {
5556  Wavefront *wf = gpuDynInst->wavefront();
5557  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5558  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5559  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5560 
5561  src0.readSrc();
5562  src1.read();
5563 
5564  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5565  if (wf->execMask(lane)) {
5566  vdst[lane] = src1[lane] - src0[lane];
5567  }
5568  }
5569 
5570  vdst.write();
5571  }
5572 
5574  : Inst_VOP2(iFmt, "v_mul_legacy_f32")
5575  {
5576  setFlag(ALU);
5577  setFlag(F32);
5578  } // Inst_VOP2__V_MUL_LEGACY_F32
5579 
5581  {
5582  } // ~Inst_VOP2__V_MUL_LEGACY_F32
5583 
5584  // D.f = S0.f * S1.f
5585  void
5587  {
5588  Wavefront *wf = gpuDynInst->wavefront();
5589  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5590  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5591  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5592 
5593  src0.readSrc();
5594  src1.read();
5595 
5596  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5597  if (wf->execMask(lane)) {
5598  vdst[lane] = src0[lane] * src1[lane];
5599  }
5600  }
5601 
5602  vdst.write();
5603  }
5604 
5606  : Inst_VOP2(iFmt, "v_mul_f32")
5607  {
5608  setFlag(ALU);
5609  setFlag(F32);
5610  } // Inst_VOP2__V_MUL_F32
5611 
5613  {
5614  } // ~Inst_VOP2__V_MUL_F32
5615 
5616  // D.f = S0.f * S1.f.
5617  void
5619  {
5620  Wavefront *wf = gpuDynInst->wavefront();
5621  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5622  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5623  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5624 
5625  src0.readSrc();
5626  src1.read();
5627 
5628  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5629  if (wf->execMask(lane)) {
5630  if (std::isnan(src0[lane]) ||
5631  std::isnan(src1[lane])) {
5632  vdst[lane] = NAN;
5633  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
5634  std::fpclassify(src0[lane]) == FP_ZERO) &&
5635  !std::signbit(src0[lane])) {
5636  if (std::isinf(src1[lane])) {
5637  vdst[lane] = NAN;
5638  } else if (!std::signbit(src1[lane])) {
5639  vdst[lane] = +0.0;
5640  } else {
5641  vdst[lane] = -0.0;
5642  }
5643  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
5644  std::fpclassify(src0[lane]) == FP_ZERO) &&
5645  std::signbit(src0[lane])) {
5646  if (std::isinf(src1[lane])) {
5647  vdst[lane] = NAN;
5648  } else if (std::signbit(src1[lane])) {
5649  vdst[lane] = +0.0;
5650  } else {
5651  vdst[lane] = -0.0;
5652  }
5653  } else if (std::isinf(src0[lane]) &&
5654  !std::signbit(src0[lane])) {
5655  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
5656  std::fpclassify(src1[lane]) == FP_ZERO) {
5657  vdst[lane] = NAN;
5658  } else if (!std::signbit(src1[lane])) {
5659  vdst[lane] = +INFINITY;
5660  } else {
5661  vdst[lane] = -INFINITY;
5662  }
5663  } else if (std::isinf(src0[lane]) &&
5664  std::signbit(src0[lane])) {
5665  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
5666  std::fpclassify(src1[lane]) == FP_ZERO) {
5667  vdst[lane] = NAN;
5668  } else if (std::signbit(src1[lane])) {
5669  vdst[lane] = +INFINITY;
5670  } else {
5671  vdst[lane] = -INFINITY;
5672  }
5673  } else {
5674  vdst[lane] = src0[lane] * src1[lane];
5675  }
5676  }
5677  }
5678 
5679  vdst.write();
5680  }
5681 
5683  : Inst_VOP2(iFmt, "v_mul_i32_i24")
5684  {
5685  setFlag(ALU);
5686  } // Inst_VOP2__V_MUL_I32_I24
5687 
5689  {
5690  } // ~Inst_VOP2__V_MUL_I32_I24
5691 
5692  // D.i = S0.i[23:0] * S1.i[23:0].
5693  void
5695  {
5696  Wavefront *wf = gpuDynInst->wavefront();
5697  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
5698  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
5699  VecOperandI32 vdst(gpuDynInst, instData.VDST);
5700 
5701  src0.readSrc();
5702  src1.read();
5703 
5704  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5705  if (wf->execMask(lane)) {
5706  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
5707  * sext<24>(bits(src1[lane], 23, 0));
5708  }
5709  }
5710 
5711  vdst.write();
5712  }
5713 
5715  : Inst_VOP2(iFmt, "v_mul_hi_i32_i24")
5716  {
5717  setFlag(ALU);
5718  } // Inst_VOP2__V_MUL_HI_I32_I24
5719 
5721  {
5722  } // ~Inst_VOP2__V_MUL_HI_I32_I24
5723 
5724  // D.i = (S0.i[23:0] * S1.i[23:0]) >> 32.
5725  void
5727  {
5728  Wavefront *wf = gpuDynInst->wavefront();
5729  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
5730  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
5731  VecOperandI32 vdst(gpuDynInst, instData.VDST);
5732 
5733  src0.readSrc();
5734  src1.read();
5735 
5736  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5737  if (wf->execMask(lane)) {
5738  VecElemI64 tmp_src0
5739  = (VecElemI64)sext<24>(bits(src0[lane], 23, 0));
5740  VecElemI64 tmp_src1
5741  = (VecElemI64)sext<24>(bits(src1[lane], 23, 0));
5742 
5743  vdst[lane] = (VecElemI32)((tmp_src0 * tmp_src1) >> 32);
5744  }
5745  }
5746 
5747  vdst.write();
5748  }
5749 
5751  : Inst_VOP2(iFmt, "v_mul_u32_u24")
5752  {
5753  setFlag(ALU);
5754  } // Inst_VOP2__V_MUL_U32_U24
5755 
5757  {
5758  } // ~Inst_VOP2__V_MUL_U32_U24
5759 
5760  // D.u = S0.u[23:0] * S1.u[23:0].
5761  void
5763  {
5764  Wavefront *wf = gpuDynInst->wavefront();
5765  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
5766  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
5767  VecOperandU32 vdst(gpuDynInst, instData.VDST);
5768 
5769  src0.readSrc();
5770  src1.read();
5771 
5772  if (isSDWAInst()) {
5773  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
5774  // use copies of original src0, src1, and dest during selecting
5775  VecOperandU32 origSrc0_sdwa(gpuDynInst,
5777  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
5778  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
5779 
5780  src0_sdwa.read();
5781  origSrc0_sdwa.read();
5782  origSrc1.read();
5783 
5784  DPRINTF(GCN3, "Handling V_MUL_U32_U24 SRC SDWA. SRC0: register "
5785  "v[%d], DST_SEL: %d, DST_UNUSED: %d, CLAMP: %d, SRC0_SEL: "
5786  "%d, SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: "
5787  "%d, SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
5799 
5800  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
5801  src1, origSrc1);
5802 
5803  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5804  if (wf->execMask(lane)) {
5805  vdst[lane] = bits(src0_sdwa[lane], 23, 0) *
5806  bits(src1[lane], 23, 0);
5807  origVdst[lane] = vdst[lane]; // keep copy consistent
5808  }
5809  }
5810 
5811  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
5812  } else {
5813  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5814  if (wf->execMask(lane)) {
5815  vdst[lane] = bits(src0[lane], 23, 0) *
5816  bits(src1[lane], 23, 0);
5817  }
5818  }
5819  }
5820 
5821 
5822  vdst.write();
5823  }
5824 
5826  : Inst_VOP2(iFmt, "v_mul_hi_u32_u24")
5827  {
5828  setFlag(ALU);
5829  } // Inst_VOP2__V_MUL_HI_U32_U24
5830 
5832  {
5833  } // ~Inst_VOP2__V_MUL_HI_U32_U24
5834 
5835  // D.i = (S0.u[23:0] * S1.u[23:0]) >> 32.
5836  void
5838  {
5839  Wavefront *wf = gpuDynInst->wavefront();
5840  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
5841  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
5842  VecOperandU32 vdst(gpuDynInst, instData.VDST);
5843 
5844  src0.readSrc();
5845  src1.read();
5846 
5847  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5848  if (wf->execMask(lane)) {
5849  VecElemU64 tmp_src0 = (VecElemU64)bits(src0[lane], 23, 0);
5850  VecElemU64 tmp_src1 = (VecElemU64)bits(src1[lane], 23, 0);
5851  vdst[lane] = (VecElemU32)((tmp_src0 * tmp_src1) >> 32);
5852  }
5853  }
5854 
5855  vdst.write();
5856  }
5857 
5859  : Inst_VOP2(iFmt, "v_min_f32")
5860  {
5861  setFlag(ALU);
5862  setFlag(F32);
5863  } // Inst_VOP2__V_MIN_F32
5864 
5866  {
5867  } // ~Inst_VOP2__V_MIN_F32
5868 
5869  // D.f = (S0.f < S1.f ? S0.f : S1.f).
5870  void
5872  {
5873  Wavefront *wf = gpuDynInst->wavefront();
5874  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5875  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5876  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5877 
5878  src0.readSrc();
5879  src1.read();
5880 
5881  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5882  if (wf->execMask(lane)) {
5883  vdst[lane] = std::fmin(src0[lane], src1[lane]);
5884  }
5885  }
5886 
5887  vdst.write();
5888  }
5889 
5891  : Inst_VOP2(iFmt, "v_max_f32")
5892  {
5893  setFlag(ALU);
5894  setFlag(F32);
5895  } // Inst_VOP2__V_MAX_F32
5896 
5898  {
5899  } // ~Inst_VOP2__V_MAX_F32
5900 
5901  // D.f = (S0.f >= S1.f ? S0.f : S1.f).
5902  void
5904  {
5905  Wavefront *wf = gpuDynInst->wavefront();
5906  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5907  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5908  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5909 
5910  src0.readSrc();
5911  src1.read();
5912 
5913  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5914  if (wf->execMask(lane)) {
5915  vdst[lane] = std::fmax(src0[lane], src1[lane]);
5916  }
5917  }
5918 
5919  vdst.write();
5920  }
5921 
5923  : Inst_VOP2(iFmt, "v_min_i32")
5924  {
5925  setFlag(ALU);
5926  } // Inst_VOP2__V_MIN_I32
5927 
5929  {
5930  } // ~Inst_VOP2__V_MIN_I32
5931 
5932  // D.i = min(S0.i, S1.i).
5933  void
5935  {
5936  Wavefront *wf = gpuDynInst->wavefront();
5937  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
5938  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
5939  VecOperandI32 vdst(gpuDynInst, instData.VDST);
5940 
5941  src0.readSrc();
5942  src1.read();
5943 
5944  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5945  if (wf->execMask(lane)) {
5946  vdst[lane] = std::min(src0[lane], src1[lane]);
5947  }
5948  }
5949 
5950  vdst.write();
5951  }
5952 
5954  : Inst_VOP2(iFmt, "v_max_i32")
5955  {
5956  setFlag(ALU);
5957  } // Inst_VOP2__V_MAX_I32
5958 
5960  {
5961  } // ~Inst_VOP2__V_MAX_I32
5962 
5963  // D.i = max(S0.i, S1.i).
5964  void
5966  {
5967  Wavefront *wf = gpuDynInst->wavefront();
5968  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
5969  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
5970  VecOperandI32 vdst(gpuDynInst, instData.VDST);
5971 
5972  src0.readSrc();
5973  src1.read();
5974 
5975  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5976  if (wf->execMask(lane)) {
5977  vdst[lane] = std::max(src0[lane], src1[lane]);
5978  }
5979  }
5980 
5981  vdst.write();
5982  }
5983 
5985  : Inst_VOP2(iFmt, "v_min_u32")
5986  {
5987  setFlag(ALU);
5988  } // Inst_VOP2__V_MIN_U32
5989 
5991  {
5992  } // ~Inst_VOP2__V_MIN_U32
5993 
5994  // D.u = min(S0.u, S1.u).
5995  void
5997  {
5998  Wavefront *wf = gpuDynInst->wavefront();
5999  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6000  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6001  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6002 
6003  src0.readSrc();
6004  src1.read();
6005 
6006  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6007  if (wf->execMask(lane)) {
6008  vdst[lane] = std::min(src0[lane], src1[lane]);
6009  }
6010  }
6011 
6012  vdst.write();
6013  }
6014 
6016  : Inst_VOP2(iFmt, "v_max_u32")
6017  {
6018  setFlag(ALU);
6019  } // Inst_VOP2__V_MAX_U32
6020 
6022  {
6023  } // ~Inst_VOP2__V_MAX_U32
6024 
6025  // D.u = max(S0.u, S1.u).
6026  void
6028  {
6029  Wavefront *wf = gpuDynInst->wavefront();
6030  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6031  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6032  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6033 
6034  src0.readSrc();
6035  src1.read();
6036 
6037  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6038  if (wf->execMask(lane)) {
6039  vdst[lane] = std::max(src0[lane], src1[lane]);
6040  }
6041  }
6042 
6043  vdst.write();
6044  }
6045 
6047  : Inst_VOP2(iFmt, "v_lshrrev_b32")
6048  {
6049  setFlag(ALU);
6050  } // Inst_VOP2__V_LSHRREV_B32
6051 
6053  {
6054  } // ~Inst_VOP2__V_LSHRREV_B32
6055 
6056  // D.u = S1.u >> S0.u[4:0].
6057  // The vacated bits are set to zero.
6058  void
6060  {
6061  Wavefront *wf = gpuDynInst->wavefront();
6062  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6063  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6064  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6065 
6066  src0.readSrc();
6067  src1.read();
6068 
6069  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6070  if (wf->execMask(lane)) {
6071  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
6072  }
6073  }
6074 
6075  vdst.write();
6076  }
6077 
6079  : Inst_VOP2(iFmt, "v_ashrrev_i32")
6080  {
6081  setFlag(ALU);
6082  } // Inst_VOP2__V_ASHRREV_I32
6083 
6085  {
6086  } // ~Inst_VOP2__V_ASHRREV_I32
6087 
6088  // D.i = signext(S1.i) >> S0.i[4:0].
6089  // The vacated bits are set to the sign bit of the input value.
6090  void
6092  {
6093  Wavefront *wf = gpuDynInst->wavefront();
6094  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6095  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
6096  VecOperandI32 vdst(gpuDynInst, instData.VDST);
6097 
6098  src0.readSrc();
6099  src1.read();
6100 
6101  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6102  if (wf->execMask(lane)) {
6103  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
6104  }
6105  }
6106 
6107  vdst.write();
6108  }
6109 
6111  : Inst_VOP2(iFmt, "v_lshlrev_b32")
6112  {
6113  setFlag(ALU);
6114  } // Inst_VOP2__V_LSHLREV_B32
6115 
6117  {
6118  } // ~Inst_VOP2__V_LSHLREV_B32
6119 
6120  // D.u = S1.u << S0.u[4:0].
6121  void
6123  {
6124  Wavefront *wf = gpuDynInst->wavefront();
6125  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6126  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6127  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6128 
6129  src0.readSrc();
6130  src1.read();
6131 
6132  if (isSDWAInst()) {
6133  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
6134  // use copies of original src0, src1, and vdst during selecting
6135  VecOperandU32 origSrc0_sdwa(gpuDynInst,
6137  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
6138  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
6139 
6140  src0_sdwa.read();
6141  origSrc0_sdwa.read();
6142  origSrc1.read();
6143 
6144  DPRINTF(GCN3, "Handling V_LSHLREV_B32 SRC SDWA. SRC0: register "
6145  "v[%d], DST_SEL: %d, DST_UNUSED: %d, CLAMP: %d, SRC0_SEL: "
6146  "%d, SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: "
6147  "%d, SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
6159 
6160  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
6161  src1, origSrc1);
6162 
6163  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6164  if (wf->execMask(lane)) {
6165  vdst[lane] = src1[lane] << bits(src0_sdwa[lane], 4, 0);
6166  origVdst[lane] = vdst[lane]; // keep copy consistent
6167  }
6168  }
6169 
6170  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
6171  } else {
6172  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6173  if (wf->execMask(lane)) {
6174  vdst[lane] = src1[lane] << bits(src0[lane], 4, 0);
6175  }
6176  }
6177  }
6178 
6179  vdst.write();
6180  }
6181 
6183  : Inst_VOP2(iFmt, "v_and_b32")
6184  {
6185  setFlag(ALU);
6186  } // Inst_VOP2__V_AND_B32
6187 
6189  {
6190  } // ~Inst_VOP2__V_AND_B32
6191 
6192  // D.u = S0.u & S1.u.
6193  // Input and output modifiers not supported.
6194  void
6196  {
6197  Wavefront *wf = gpuDynInst->wavefront();
6198  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6199  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6200  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6201 
6202  src0.readSrc();
6203  src1.read();
6204 
6205  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6206  if (wf->execMask(lane)) {
6207  vdst[lane] = src0[lane] & src1[lane];
6208  }
6209  }
6210 
6211  vdst.write();
6212  }
6213 
6215  : Inst_VOP2(iFmt, "v_or_b32")
6216  {
6217  setFlag(ALU);
6218  } // Inst_VOP2__V_OR_B32
6219 
6221  {
6222  } // ~Inst_VOP2__V_OR_B32
6223 
6224  // D.u = S0.u | S1.u.
6225  // Input and output modifiers not supported.
6226  void
6228  {
6229  Wavefront *wf = gpuDynInst->wavefront();
6230  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6231  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6232  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6233 
6234  src0.readSrc();
6235  src1.read();
6236 
6237  if (isSDWAInst()) {
6238  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
6239  // use copies of original src0, src1, and dest during selecting
6240  VecOperandU32 origSrc0_sdwa(gpuDynInst,
6242  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
6243  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
6244 
6245  src0_sdwa.read();
6246  origSrc0_sdwa.read();
6247  origSrc1.read();
6248 
6249  DPRINTF(GCN3, "Handling V_OR_B32 SRC SDWA. SRC0: register v[%d], "
6250  "DST_SEL: %d, DST_UNUSED: %d, CLAMP: %d, SRC0_SEL: %d, "
6251  "SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: %d, "
6252  "SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
6264 
6265  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
6266  src1, origSrc1);
6267 
6268  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6269  if (wf->execMask(lane)) {
6270  vdst[lane] = src0_sdwa[lane] | src1[lane];
6271  origVdst[lane] = vdst[lane]; // keep copy consistent
6272  }
6273  }
6274 
6275  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
6276  } else {
6277  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6278  if (wf->execMask(lane)) {
6279  vdst[lane] = src0[lane] | src1[lane];
6280  }
6281  }
6282  }
6283 
6284  vdst.write();
6285  }
6286 
6288  : Inst_VOP2(iFmt, "v_xor_b32")
6289  {
6290  setFlag(ALU);
6291  } // Inst_VOP2__V_XOR_B32
6292 
6294  {
6295  } // ~Inst_VOP2__V_XOR_B32
6296 
6297  // D.u = S0.u ^ S1.u.
6298  // Input and output modifiers not supported.
6299  void
6301  {
6302  Wavefront *wf = gpuDynInst->wavefront();
6303  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6304  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6305  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6306 
6307  src0.readSrc();
6308  src1.read();
6309 
6310  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6311  if (wf->execMask(lane)) {
6312  vdst[lane] = src0[lane] ^ src1[lane];
6313  }
6314  }
6315 
6316  vdst.write();
6317  }
6318 
6320  : Inst_VOP2(iFmt, "v_mac_f32")
6321  {
6322  setFlag(ALU);
6323  setFlag(F32);
6324  setFlag(MAC);
6325  } // Inst_VOP2__V_MAC_F32
6326 
6328  {
6329  } // ~Inst_VOP2__V_MAC_F32
6330 
6331  // D.f = S0.f * S1.f + D.f.
6332  void
6334  {
6335  Wavefront *wf = gpuDynInst->wavefront();
6336  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6337  VecOperandF32 src1(gpuDynInst, instData.VSRC1);
6338  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6339 
6340  src0.readSrc();
6341  src1.read();
6342  vdst.read();
6343 
6344  if (isDPPInst()) {
6345  VecOperandF32 src0_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
6346  src0_dpp.read();
6347 
6348  DPRINTF(GCN3, "Handling V_MAC_F32 SRC DPP. SRC0: register v[%d], "
6349  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
6350  "SRC1_ABS: %d, SRC1_NEG: %d, BOUND_CTRL: %d, "
6351  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
6360 
6361  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src0_dpp, src1);
6362 
6363  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6364  if (wf->execMask(lane)) {
6365  vdst[lane] = std::fma(src0_dpp[lane], src1[lane],
6366  vdst[lane]);
6367  }
6368  }
6369  } else {
6370  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6371  if (wf->execMask(lane)) {
6372  vdst[lane] = std::fma(src0[lane], src1[lane], vdst[lane]);
6373  }
6374  }
6375  }
6376 
6377  vdst.write();
6378  }
6379 
6381  : Inst_VOP2(iFmt, "v_madmk_f32")
6382  {
6383  setFlag(ALU);
6384  setFlag(F32);
6385  setFlag(MAD);
6386  } // Inst_VOP2__V_MADMK_F32
6387 
6389  {
6390  } // ~Inst_VOP2__V_MADMK_F32
6391 
6392  // D.f = S0.f * K + S1.f; K is a 32-bit inline constant.
6393  // This opcode cannot use the input/output modifiers.
6394  void
6396  {
6397  Wavefront *wf = gpuDynInst->wavefront();
6398  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6399  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6400  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6402 
6403  src0.readSrc();
6404  src1.read();
6405 
6406  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6407  if (wf->execMask(lane)) {
6408  vdst[lane] = std::fma(src0[lane], k, src1[lane]);
6409  }
6410  }
6411 
6412  vdst.write();
6413  }
6414 
6416  : Inst_VOP2(iFmt, "v_madak_f32")
6417  {
6418  setFlag(ALU);
6419  setFlag(F32);
6420  setFlag(MAD);
6421  } // Inst_VOP2__V_MADAK_F32
6422 
6424  {
6425  } // ~Inst_VOP2__V_MADAK_F32
6426 
6427  // D.f = S0.f * S1.f + K; K is a 32-bit inline constant.
6428  // This opcode cannot use input/output modifiers.
6429  void
6431  {
6432  Wavefront *wf = gpuDynInst->wavefront();
6433  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6434  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6435  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6437 
6438  src0.readSrc();
6439  src1.read();
6440 
6441  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6442  if (wf->execMask(lane)) {
6443  vdst[lane] = std::fma(src0[lane], src1[lane], k);
6444  }
6445  }
6446 
6447  vdst.write();
6448  }
6449 
6451  : Inst_VOP2(iFmt, "v_add_u32")
6452  {
6453  setFlag(ALU);
6454  setFlag(WritesVCC);
6455  } // Inst_VOP2__V_ADD_U32
6456 
6458  {
6459  } // ~Inst_VOP2__V_ADD_U32
6460 
6461  // D.u = S0.u + S1.u;
6462  // VCC[threadId] = (S0.u + S1.u >= 0x100000000ULL ? 1 : 0) is an UNSIGNED
6463  // overflow or carry-out.
6464  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
6465  void
6467  {
6468  Wavefront *wf = gpuDynInst->wavefront();
6469  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6470  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6471  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6472  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6473 
6474  src0.readSrc();
6475  src1.read();
6476 
6477  if (isSDWAInst()) {
6478  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
6479  // use copies of original src0, src1, and dest during selecting
6480  VecOperandU32 origSrc0_sdwa(gpuDynInst,
6482  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
6483  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
6484 
6485  src0_sdwa.read();
6486  origSrc0_sdwa.read();
6487  origSrc1.read();
6488 
6489  DPRINTF(GCN3, "Handling V_ADD_U32 SRC SDWA. SRC0: register v[%d], "
6490  "DST_SEL: %d, DST_UNUSED: %d, CLAMP: %d, SRC0_SEL: %d, "
6491  "SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: %d, "
6492  "SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
6504 
6505  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
6506  src1, origSrc1);
6507 
6508  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6509  if (wf->execMask(lane)) {
6510  vdst[lane] = src0_sdwa[lane] + src1[lane];
6511  origVdst[lane] = vdst[lane]; // keep copy consistent
6512  vcc.setBit(lane, ((VecElemU64)src0_sdwa[lane]
6513  + (VecElemU64)src1[lane] >= 0x100000000ULL) ? 1 : 0);
6514  }
6515  }
6516 
6517  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
6518  } else {
6519  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6520  if (wf->execMask(lane)) {
6521  vdst[lane] = src0[lane] + src1[lane];
6522  vcc.setBit(lane, ((VecElemU64)src0[lane]
6523  + (VecElemU64)src1[lane] >= 0x100000000ULL) ? 1 : 0);
6524  }
6525  }
6526  }
6527 
6528  vcc.write();
6529  vdst.write();
6530  }
6531 
6533  : Inst_VOP2(iFmt, "v_sub_u32")
6534  {
6535  setFlag(ALU);
6536  setFlag(WritesVCC);
6537  } // Inst_VOP2__V_SUB_U32
6538 
6540  {
6541  } // ~Inst_VOP2__V_SUB_U32
6542 
6543  // D.u = S0.u - S1.u;
6544  // VCC[threadId] = (S1.u > S0.u ? 1 : 0) is an UNSIGNED overflow or
6545  // carry-out.
6546  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
6547  void
6549  {
6550  Wavefront *wf = gpuDynInst->wavefront();
6551  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6552  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6553  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6554  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6555 
6556  src0.readSrc();
6557  src1.read();
6558 
6559  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6560  if (wf->execMask(lane)) {
6561  vdst[lane] = src0[lane] - src1[lane];
6562  vcc.setBit(lane, src1[lane] > src0[lane] ? 1 : 0);
6563  }
6564  }
6565 
6566  vdst.write();
6567  vcc.write();
6568  }
6569 
6571  : Inst_VOP2(iFmt, "v_subrev_u32")
6572  {
6573  setFlag(ALU);
6574  setFlag(WritesVCC);
6575  } // Inst_VOP2__V_SUBREV_U32
6576 
6578  {
6579  } // ~Inst_VOP2__V_SUBREV_U32
6580 
6581  // D.u = S1.u - S0.u;
6582  // VCC[threadId] = (S0.u > S1.u ? 1 : 0) is an UNSIGNED overflow or
6583  // carry-out.
6584  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
6585  void
6587  {
6588  Wavefront *wf = gpuDynInst->wavefront();
6589  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6590  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6591  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6592  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6593 
6594  src0.readSrc();
6595  src1.read();
6596 
6597  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6598  if (wf->execMask(lane)) {
6599  vdst[lane] = src1[lane] - src0[lane];
6600  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
6601  }
6602  }
6603 
6604  vdst.write();
6605  vcc.write();
6606  }
6607 
6609  : Inst_VOP2(iFmt, "v_addc_u32")
6610  {
6611  setFlag(ALU);
6612  setFlag(WritesVCC);
6613  setFlag(ReadsVCC);
6614  } // Inst_VOP2__V_ADDC_U32
6615 
6617  {
6618  } // ~Inst_VOP2__V_ADDC_U32
6619 
6620  // D.u = S0.u + S1.u + VCC[threadId];
6621  // VCC[threadId] = (S0.u + S1.u + VCC[threadId] >= 0x100000000ULL ? 1 : 0)
6622  // is an UNSIGNED overflow.
6623  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
6624  // source comes from the SGPR-pair at S2.u.
6625  void
6627  {
6628  Wavefront *wf = gpuDynInst->wavefront();
6629  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6630  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6631  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6632  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6633 
6634  src0.readSrc();
6635  src1.read();
6636  vcc.read();
6637 
6638  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6639  if (wf->execMask(lane)) {
6640  vdst[lane] = src0[lane] + src1[lane]
6641  + bits(vcc.rawData(), lane);
6642  vcc.setBit(lane, ((VecElemU64)src0[lane]
6643  + (VecElemU64)src1[lane]
6644  + (VecElemU64)bits(vcc.rawData(), lane, lane))
6645  >= 0x100000000 ? 1 : 0);
6646  }
6647  }
6648 
6649  vdst.write();
6650  vcc.write();
6651  }
6652 
6654  : Inst_VOP2(iFmt, "v_subb_u32")
6655  {
6656  setFlag(ALU);
6657  setFlag(WritesVCC);
6658  setFlag(ReadsVCC);
6659  } // Inst_VOP2__V_SUBB_U32
6660 
6662  {
6663  } // ~Inst_VOP2__V_SUBB_U32
6664 
6665  // D.u = S0.u - S1.u - VCC[threadId];
6666  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
6667  // overflow.
6668  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
6669  // source comes from the SGPR-pair at S2.u.
6670  void
6672  {
6673  Wavefront *wf = gpuDynInst->wavefront();
6674  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6675  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6676  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6677  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6678 
6679  src0.readSrc();
6680  src1.read();
6681  vcc.read();
6682 
6683  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6684  if (wf->execMask(lane)) {
6685  vdst[lane]
6686  = src0[lane] - src1[lane] - bits(vcc.rawData(), lane);
6687  vcc.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
6688  > src0[lane] ? 1 : 0);
6689  }
6690  }
6691 
6692  vdst.write();
6693  vcc.write();
6694  }
6695 
6697  : Inst_VOP2(iFmt, "v_subbrev_u32")
6698  {
6699  setFlag(ALU);
6700  setFlag(WritesVCC);
6701  setFlag(ReadsVCC);
6702  } // Inst_VOP2__V_SUBBREV_U32
6703 
6705  {
6706  } // ~Inst_VOP2__V_SUBBREV_U32
6707 
6708  // D.u = S1.u - S0.u - VCC[threadId];
6709  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
6710  // overflow.
6711  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
6712  // source comes from the SGPR-pair at S2.u.
6713  void
6715  {
6716  Wavefront *wf = gpuDynInst->wavefront();
6717  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6718  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6719  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6720  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6721 
6722  src0.readSrc();
6723  src1.read();
6724  vcc.read();
6725 
6726  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6727  if (wf->execMask(lane)) {
6728  vdst[lane]
6729  = src1[lane] - src0[lane] - bits(vcc.rawData(), lane);
6730  vcc.setBit(lane, (src0[lane] + bits(vcc.rawData(), lane))
6731  > src1[lane] ? 1 : 0);
6732  }
6733  }
6734 
6735  vdst.write();
6736  vcc.write();
6737  }
6738 
6740  : Inst_VOP2(iFmt, "v_add_f16")
6741  {
6742  setFlag(ALU);
6743  setFlag(F16);
6744  } // Inst_VOP2__V_ADD_F16
6745 
6747  {
6748  } // ~Inst_VOP2__V_ADD_F16
6749 
6750  // D.f16 = S0.f16 + S1.f16.
6751  void
6753  {
6755  }
6756 
6758  : Inst_VOP2(iFmt, "v_sub_f16")
6759  {
6760  setFlag(ALU);
6761  setFlag(F16);
6762  } // Inst_VOP2__V_SUB_F16
6763 
6765  {
6766  } // ~Inst_VOP2__V_SUB_F16
6767 
6768  // D.f16 = S0.f16 - S1.f16.
6769  void
6771  {
6773  }
6774 
6776  : Inst_VOP2(iFmt, "v_subrev_f16")
6777  {
6778  setFlag(ALU);
6779  setFlag(F16);
6780  } // Inst_VOP2__V_SUBREV_F16
6781 
6783  {
6784  } // ~Inst_VOP2__V_SUBREV_F16
6785 
6786  // D.f16 = S1.f16 - S0.f16.
6787  void
6789  {
6791  }
6792 
6794  : Inst_VOP2(iFmt, "v_mul_f16")
6795  {
6796  setFlag(ALU);
6797  setFlag(F16);
6798  } // Inst_VOP2__V_MUL_F16
6799 
6801  {
6802  } // ~Inst_VOP2__V_MUL_F16
6803 
6804  // D.f16 = S0.f16 * S1.f16.
6805  void
6807  {
6809  }
6810 
6812  : Inst_VOP2(iFmt, "v_mac_f16")
6813  {
6814  setFlag(ALU);
6815  setFlag(F16);
6816  setFlag(MAC);
6817  } // Inst_VOP2__V_MAC_F16
6818 
6820  {
6821  } // ~Inst_VOP2__V_MAC_F16
6822 
6823  // D.f16 = S0.f16 * S1.f16 + D.f16.
6824  void
6826  {
6828  }
6829 
6831  : Inst_VOP2(iFmt, "v_madmk_f16")
6832  {
6833  setFlag(ALU);
6834  setFlag(F16);
6835  setFlag(MAD);
6836  } // Inst_VOP2__V_MADMK_F16
6837 
6839  {
6840  } // ~Inst_VOP2__V_MADMK_F16
6841 
6842  // D.f16 = S0.f16 * K.f16 + S1.f16; K is a 16-bit inline constant stored
6843  // in the following literal DWORD.
6844  // This opcode cannot use the VOP3 encoding and cannot use input/output
6845  // modifiers.
6846  void
6848  {
6850  }
6851 
6853  : Inst_VOP2(iFmt, "v_madak_f16")
6854  {
6855  setFlag(ALU);
6856  setFlag(F16);
6857  setFlag(MAD);
6858  } // Inst_VOP2__V_MADAK_F16
6859 
6861  {
6862  } // ~Inst_VOP2__V_MADAK_F16
6863 
6864  // D.f16 = S0.f16 * S1.f16 + K.f16; K is a 16-bit inline constant stored
6865  // in the following literal DWORD.
6866  // This opcode cannot use the VOP3 encoding and cannot use input/output
6867  // modifiers.
6868  void
6870  {
6872  }
6873 
6875  : Inst_VOP2(iFmt, "v_add_u16")
6876  {
6877  setFlag(ALU);
6878  } // Inst_VOP2__V_ADD_U16
6879 
6881  {
6882  } // ~Inst_VOP2__V_ADD_U16
6883 
6884  // D.u16 = S0.u16 + S1.u16.
6885  void
6887  {
6888  Wavefront *wf = gpuDynInst->wavefront();
6889  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
6890  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
6891  VecOperandU16 vdst(gpuDynInst, instData.VDST);
6892 
6893  src0.readSrc();
6894  src1.read();
6895 
6896  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6897  if (wf->execMask(lane)) {
6898  vdst[lane] = src0[lane] + src1[lane];
6899  }
6900  }
6901 
6902  vdst.write();
6903  }
6904 
6906  : Inst_VOP2(iFmt, "v_sub_u16")
6907  {
6908  setFlag(ALU);
6909  } // Inst_VOP2__V_SUB_U16
6910 
6912  {
6913  } // ~Inst_VOP2__V_SUB_U16
6914 
6915  // D.u16 = S0.u16 - S1.u16.
6916  void
6918  {
6919  Wavefront *wf = gpuDynInst->wavefront();
6920  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
6921  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
6922  VecOperandU16 vdst(gpuDynInst, instData.VDST);
6923 
6924  src0.readSrc();
6925  src1.read();
6926 
6927  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6928  if (wf->execMask(lane)) {
6929  vdst[lane] = src0[lane] - src1[lane];
6930  }
6931  }
6932 
6933  vdst.write();
6934  }
6935 
6937  : Inst_VOP2(iFmt, "v_subrev_u16")
6938  {
6939  setFlag(ALU);
6940  } // Inst_VOP2__V_SUBREV_U16
6941 
6943  {
6944  } // ~Inst_VOP2__V_SUBREV_U16
6945 
6946  // D.u16 = S1.u16 - S0.u16.
6947  void
6949  {
6950  Wavefront *wf = gpuDynInst->wavefront();
6951  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
6952  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
6953  VecOperandU16 vdst(gpuDynInst, instData.VDST);
6954 
6955  src0.readSrc();
6956  src1.read();
6957 
6958  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6959  if (wf->execMask(lane)) {
6960  vdst[lane] = src1[lane] - src0[lane];
6961  }
6962  }
6963 
6964  vdst.write();
6965  }
6966 
6968  : Inst_VOP2(iFmt, "v_mul_lo_u16")
6969  {
6970  setFlag(ALU);
6971  } // Inst_VOP2__V_MUL_LO_U16
6972 
6974  {
6975  } // ~Inst_VOP2__V_MUL_LO_U16
6976 
6977  // D.u16 = S0.u16 * S1.u16.
6978  void
6980  {
6981  Wavefront *wf = gpuDynInst->wavefront();
6982  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
6983  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
6984  VecOperandU16 vdst(gpuDynInst, instData.VDST);
6985 
6986  src0.readSrc();
6987  src1.read();
6988 
6989  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6990  if (wf->execMask(lane)) {
6991  vdst[lane] = src0[lane] * src1[lane];
6992  }
6993  }
6994 
6995  vdst.write();
6996  }
6997 
6999  : Inst_VOP2(iFmt, "v_lshlrev_b16")
7000  {
7001  setFlag(ALU);
7002  } // Inst_VOP2__V_LSHLREV_B16
7003 
7005  {
7006  } // ~Inst_VOP2__V_LSHLREV_B16
7007 
7008  // D.u[15:0] = S1.u[15:0] << S0.u[3:0].
7009  void
7011  {
7012  Wavefront *wf = gpuDynInst->wavefront();
7013  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7014  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7015  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7016 
7017  src0.readSrc();
7018  src1.read();
7019 
7020  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7021  if (wf->execMask(lane)) {
7022  vdst[lane] = src1[lane] << bits(src0[lane], 3, 0);
7023  }
7024  }
7025 
7026  vdst.write();
7027  }
7028 
7030  : Inst_VOP2(iFmt, "v_lshrrev_b16")
7031  {
7032  setFlag(ALU);
7033  } // Inst_VOP2__V_LSHRREV_B16
7034 
7036  {
7037  } // ~Inst_VOP2__V_LSHRREV_B16
7038 
7039  // D.u[15:0] = S1.u[15:0] >> S0.u[3:0].
7040  // The vacated bits are set to zero.
7041  void
7043  {
7044  Wavefront *wf = gpuDynInst->wavefront();
7045  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7046  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7047  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7048 
7049  src0.readSrc();
7050  src1.read();
7051 
7052  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7053  if (wf->execMask(lane)) {
7054  vdst[lane] = src1[lane] >> src0[lane];
7055  }
7056  }
7057 
7058  vdst.write();
7059  }
7060 
7062  : Inst_VOP2(iFmt, "v_ashrrev_i16")
7063  {
7064  setFlag(ALU);
7065  } // Inst_VOP2__V_ASHRREV_I16
7066 
7068  {
7069  } // ~Inst_VOP2__V_ASHRREV_I16
7070 
7071  // D.i[15:0] = signext(S1.i[15:0]) >> S0.i[3:0].
7072  // The vacated bits are set to the sign bit of the input value.
7073  void
7075  {
7076  Wavefront *wf = gpuDynInst->wavefront();
7077  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7078  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7079  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7080 
7081  src0.readSrc();
7082  src1.read();
7083 
7084  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7085  if (wf->execMask(lane)) {
7086  vdst[lane] = src1[lane] >> src0[lane];
7087  }
7088  }
7089 
7090  vdst.write();
7091  }
7092 
7094  : Inst_VOP2(iFmt, "v_max_f16")
7095  {
7096  setFlag(ALU);
7097  setFlag(F16);
7098  } // Inst_VOP2__V_MAX_F16
7099 
7101  {
7102  } // ~Inst_VOP2__V_MAX_F16
7103 
7104  // D.f16 = max(S0.f16, S1.f16).
7105  void
7107  {
7109  }
7110 
7112  : Inst_VOP2(iFmt, "v_min_f16")
7113  {
7114  setFlag(ALU);
7115  setFlag(F16);
7116  } // Inst_VOP2__V_MIN_F16
7117 
7119  {
7120  } // ~Inst_VOP2__V_MIN_F16
7121 
7122  // D.f16 = min(S0.f16, S1.f16).
7123  void
7125  {
7127  }
7128 
7130  : Inst_VOP2(iFmt, "v_max_u16")
7131  {
7132  setFlag(ALU);
7133  } // Inst_VOP2__V_MAX_U16
7134 
7136  {
7137  } // ~Inst_VOP2__V_MAX_U16
7138 
7139  // D.u[15:0] = max(S0.u[15:0], S1.u[15:0]).
7140  void
7142  {
7143  Wavefront *wf = gpuDynInst->wavefront();
7144  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7145  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7146  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7147 
7148  src0.readSrc();
7149  src1.read();
7150 
7151  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7152  if (wf->execMask(lane)) {
7153  vdst[lane] = std::max(src0[lane], src1[lane]);
7154  }
7155  }
7156 
7157  vdst.write();
7158  }
7159 
7161  : Inst_VOP2(iFmt, "v_max_i16")
7162  {
7163  setFlag(ALU);
7164  } // Inst_VOP2__V_MAX_I16
7165 
7167  {
7168  } // ~Inst_VOP2__V_MAX_I16
7169 
7170  // D.i[15:0] = max(S0.i[15:0], S1.i[15:0]).
7171  void
7173  {
7174  Wavefront *wf = gpuDynInst->wavefront();
7175  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
7176  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7177  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7178 
7179  src0.readSrc();
7180  src1.read();
7181 
7182  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7183  if (wf->execMask(lane)) {
7184  vdst[lane] = std::max(src0[lane], src1[lane]);
7185  }
7186  }
7187 
7188  vdst.write();
7189  }
7190 
7192  : Inst_VOP2(iFmt, "v_min_u16")
7193  {
7194  setFlag(ALU);
7195  } // Inst_VOP2__V_MIN_U16
7196 
7198  {
7199  } // ~Inst_VOP2__V_MIN_U16
7200 
7201  // D.u[15:0] = min(S0.u[15:0], S1.u[15:0]).
7202  void
7204  {
7205  Wavefront *wf = gpuDynInst->wavefront();
7206  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7207  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7208  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7209 
7210  src0.readSrc();
7211  src1.read();
7212 
7213  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7214  if (wf->execMask(lane)) {
7215  vdst[lane] = std::min(src0[lane], src1[lane]);
7216  }
7217  }
7218 
7219  vdst.write();
7220  }
7221 
7223  : Inst_VOP2(iFmt, "v_min_i16")
7224  {
7225  setFlag(ALU);
7226  } // Inst_VOP2__V_MIN_I16
7227 
7229  {
7230  } // ~Inst_VOP2__V_MIN_I16
7231 
7232  // D.i[15:0] = min(S0.i[15:0], S1.i[15:0]).
7233  void
7235  {
7236  Wavefront *wf = gpuDynInst->wavefront();
7237  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
7238  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7239  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7240 
7241  src0.readSrc();
7242  src1.read();
7243 
7244  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7245  if (wf->execMask(lane)) {
7246  vdst[lane] = std::min(src0[lane], src1[lane]);
7247  }
7248  }
7249 
7250  vdst.write();
7251  }
7252 
7254  : Inst_VOP2(iFmt, "v_ldexp_f16")
7255  {
7256  setFlag(ALU);
7257  setFlag(F16);
7258  } // Inst_VOP2__V_LDEXP_F16
7259 
7261  {
7262  } // ~Inst_VOP2__V_LDEXP_F16
7263 
7264  // D.f16 = S0.f16 * (2 ** S1.i16).
7265  void
7267  {
7269  }
7270 
7272  : Inst_VOP1(iFmt, "v_nop")
7273  {
7274  setFlag(Nop);
7275  setFlag(ALU);
7276  } // Inst_VOP1__V_NOP
7277 
7279  {
7280  } // ~Inst_VOP1__V_NOP
7281 
7282  // Do nothing.
7283  void
7285  {
7286  }
7287 
7289  : Inst_VOP1(iFmt, "v_mov_b32")
7290  {
7291  setFlag(ALU);
7292  } // Inst_VOP1__V_MOV_B32
7293 
7295  {
7296  } // ~Inst_VOP1__V_MOV_B32
7297 
7298  // D.u = S0.u.
7299  // Input and output modifiers not supported; this is an untyped operation.
7300  void
7302  {
7303  Wavefront *wf = gpuDynInst->wavefront();
7304  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7305  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7306 
7307  src.readSrc();
7308 
7309  if (isDPPInst()) {
7310  VecOperandU32 src_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
7311  src_dpp.read();
7312 
7313  DPRINTF(GCN3, "Handling V_MOV_B32 SRC DPP. SRC0: register v[%d], "
7314  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
7315  "SRC1_ABS: %d, SRC1_NEG: %d, BOUND_CTRL: %d, "
7316  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
7325 
7326  // NOTE: For VOP1, there is no SRC1, so make sure we're not trying
7327  // to negate it or take the absolute value of it
7328  assert(!extData.iFmt_VOP_DPP.SRC1_ABS);
7329  assert(!extData.iFmt_VOP_DPP.SRC1_NEG);
7330  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src_dpp);
7331 
7332  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7333  if (wf->execMask(lane)) {
7334  vdst[lane] = src_dpp[lane];
7335  }
7336  }
7337  } else {
7338  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7339  if (wf->execMask(lane)) {
7340  vdst[lane] = src[lane];
7341  }
7342  }
7343  }
7344 
7345  vdst.write();
7346  }
7347 
7349  InFmt_VOP1 *iFmt)
7350  : Inst_VOP1(iFmt, "v_readfirstlane_b32")
7351  {
7352  setFlag(ALU);
7353  } // Inst_VOP1__V_READFIRSTLANE_B32
7354 
7356  {
7357  } // ~Inst_VOP1__V_READFIRSTLANE_B32
7358 
7359  // Copy one VGPR value to one SGPR. D = SGPR destination, S0 = source data
7360  // (VGPR# or M0 for lds direct access), Lane# = FindFirst1fromLSB(exec)
7361  // (Lane# = 0 if exec is zero). Ignores exec mask for the access.
7362  // Input and output modifiers not supported; this is an untyped operation.
7363  void
7365  {
7366  Wavefront *wf = gpuDynInst->wavefront();
7367  ScalarRegI32 src_lane(0);
7368  ScalarRegU64 exec_mask = wf->execMask().to_ullong();
7369  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7370  ScalarOperandU32 sdst(gpuDynInst, instData.VDST);
7371 
7372  src.readSrc();
7373 
7374  if (exec_mask) {
7375  src_lane = findLsbSet(exec_mask);
7376  }
7377 
7378  sdst = src[src_lane];
7379 
7380  sdst.write();
7381  }
7382 
7384  : Inst_VOP1(iFmt, "v_cvt_i32_f64")
7385  {
7386  setFlag(ALU);
7387  setFlag(F64);
7388  } // Inst_VOP1__V_CVT_I32_F64
7389 
7391  {
7392  } // ~Inst_VOP1__V_CVT_I32_F64
7393 
7394  // D.i = (int)S0.d.
7395  // Out-of-range floating point values (including infinity) saturate. NaN
7396  // is converted to 0.
7397  void
7399  {
7400  Wavefront *wf = gpuDynInst->wavefront();
7401  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
7402  VecOperandI32 vdst(gpuDynInst, instData.VDST);
7403 
7404  src.readSrc();
7405 
7406  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7407  if (wf->execMask(lane)) {
7408  int exp;
7409  std::frexp(src[lane],&exp);
7410  if (std::isnan(src[lane])) {
7411  vdst[lane] = 0;
7412  } else if (std::isinf(src[lane]) || exp > 30) {
7413  if (std::signbit(src[lane])) {
7414  vdst[lane] = INT_MIN;
7415  } else {
7416  vdst[lane] = INT_MAX;
7417  }
7418  } else {
7419  vdst[lane] = (VecElemI32)src[lane];
7420  }
7421  }
7422  }
7423 
7424  vdst.write();
7425  }
7426 
7428  : Inst_VOP1(iFmt, "v_cvt_f64_i32")
7429  {
7430  setFlag(ALU);
7431  setFlag(F64);
7432  } // Inst_VOP1__V_CVT_F64_I32
7433 
7435  {
7436  } // ~Inst_VOP1__V_CVT_F64_I32
7437 
7438  // D.d = (double)S0.i.
7439  void
7441  {
7442  Wavefront *wf = gpuDynInst->wavefront();
7443  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
7444  VecOperandF64 vdst(gpuDynInst, instData.VDST);
7445 
7446  src.readSrc();
7447 
7448  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7449  if (wf->execMask(lane)) {
7450  vdst[lane] = (VecElemF64)src[lane];
7451  }
7452  }
7453 
7454  vdst.write();
7455  }
7456 
7458  : Inst_VOP1(iFmt, "v_cvt_f32_i32")
7459  {
7460  setFlag(ALU);
7461  setFlag(F32);
7462  } // Inst_VOP1__V_CVT_F32_I32
7463 
7465  {
7466  } // ~Inst_VOP1__V_CVT_F32_I32
7467 
7468  // D.f = (float)S0.i.
7469  void
7471  {
7472  Wavefront *wf = gpuDynInst->wavefront();
7473  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
7474  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7475 
7476  src.readSrc();
7477 
7478  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7479  if (wf->execMask(lane)) {
7480  vdst[lane] = (VecElemF32)src[lane];
7481  }
7482  }
7483 
7484  vdst.write();
7485  }
7486 
7488  : Inst_VOP1(iFmt, "v_cvt_f32_u32")
7489  {
7490  setFlag(ALU);
7491  setFlag(F32);
7492  } // Inst_VOP1__V_CVT_F32_U32
7493 
7495  {
7496  } // ~Inst_VOP1__V_CVT_F32_U32
7497 
7498  // D.f = (float)S0.u.
7499  void
7501  {
7502  Wavefront *wf = gpuDynInst->wavefront();
7503  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7504  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7505 
7506  src.readSrc();
7507 
7508  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7509  if (wf->execMask(lane)) {
7510  vdst[lane] = (VecElemF32)src[lane];
7511  }
7512  }
7513 
7514  vdst.write();
7515  }
7516 
7518  : Inst_VOP1(iFmt, "v_cvt_u32_f32")
7519  {
7520  setFlag(ALU);
7521  setFlag(F32);
7522  } // Inst_VOP1__V_CVT_U32_F32
7523 
7525  {
7526  } // ~Inst_VOP1__V_CVT_U32_F32
7527 
7528  // D.u = (unsigned)S0.f.
7529  // Out-of-range floating point values (including infinity) saturate. NaN
7530  // is converted to 0.
7531  void
7533  {
7534  Wavefront *wf = gpuDynInst->wavefront();
7535  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7536  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7537 
7538  src.readSrc();
7539 
7540  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7541  if (wf->execMask(lane)) {
7542  int exp;
7543  std::frexp(src[lane],&exp);
7544  if (std::isnan(src[lane])) {
7545  vdst[lane] = 0;
7546  } else if (std::isinf(src[lane])) {
7547  if (std::signbit(src[lane])) {
7548  vdst[lane] = 0;
7549  } else {
7550  vdst[lane] = UINT_MAX;
7551  }
7552  } else if (exp > 31) {
7553  vdst[lane] = UINT_MAX;
7554  } else {
7555  vdst[lane] = (VecElemU32)src[lane];
7556  }
7557  }
7558  }
7559 
7560  vdst.write();
7561  }
7562 
7564  : Inst_VOP1(iFmt, "v_cvt_i32_f32")
7565  {
7566  setFlag(ALU);
7567  setFlag(F32);
7568  } // Inst_VOP1__V_CVT_I32_F32
7569 
7571  {
7572  } // ~Inst_VOP1__V_CVT_I32_F32
7573 
7574  // D.i = (int)S0.f.
7575  // Out-of-range floating point values (including infinity) saturate. NaN
7576  // is converted to 0.
7577  void
7579  {
7580  Wavefront *wf = gpuDynInst->wavefront();
7581  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7582  VecOperandI32 vdst(gpuDynInst, instData.VDST);
7583 
7584  src.readSrc();
7585 
7586  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7587  if (wf->execMask(lane)) {
7588  int exp;
7589  std::frexp(src[lane],&exp);
7590  if (std::isnan(src[lane])) {
7591  vdst[lane] = 0;
7592  } else if (std::isinf(src[lane]) || exp > 30) {
7593  if (std::signbit(src[lane])) {
7594  vdst[lane] = INT_MIN;
7595  } else {
7596  vdst[lane] = INT_MAX;
7597  }
7598  } else {
7599  vdst[lane] = (VecElemI32)src[lane];
7600  }
7601  }
7602  }
7603 
7604  vdst.write();
7605  }
7606 
7608  : Inst_VOP1(iFmt, "v_mov_fed_b32")
7609  {
7610  setFlag(ALU);
7611  } // Inst_VOP1__V_MOV_FED_B32
7612 
7614  {
7615  } // ~Inst_VOP1__V_MOV_FED_B32
7616 
7617  // D.u = S0.u;
7618  // Input and output modifiers not supported; this is an untyped operation.
7619  void
7621  {
7623  }
7624 
7626  : Inst_VOP1(iFmt, "v_cvt_f16_f32")
7627  {
7628  setFlag(ALU);
7629  setFlag(F32);
7630  } // Inst_VOP1__V_CVT_F16_F32
7631 
7633  {
7634  } // ~Inst_VOP1__V_CVT_F16_F32
7635 
7636  // D.f16 = flt32_to_flt16(S0.f).
7637  void
7639  {
7641  }
7642 
7644  : Inst_VOP1(iFmt, "v_cvt_f32_f16")
7645  {
7646  setFlag(ALU);
7647  setFlag(F32);
7648  } // Inst_VOP1__V_CVT_F32_F16
7649 
7651  {
7652  } // ~Inst_VOP1__V_CVT_F32_F16
7653 
7654  // D.f = flt16_to_flt32(S0.f16).
7655  void
7657  {
7659  }
7660 
7662  InFmt_VOP1 *iFmt)
7663  : Inst_VOP1(iFmt, "v_cvt_rpi_i32_f32")
7664  {
7665  setFlag(ALU);
7666  setFlag(F32);
7667  } // Inst_VOP1__V_CVT_RPI_I32_F32
7668 
7670  {
7671  } // ~Inst_VOP1__V_CVT_RPI_I32_F32
7672 
7673  // D.i = (int)floor(S0.f + 0.5).
7674  void
7676  {
7677  Wavefront *wf = gpuDynInst->wavefront();
7678  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7679  VecOperandI32 vdst(gpuDynInst, instData.VDST);
7680 
7681  src.readSrc();
7682 
7683  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7684  if (wf->execMask(lane)) {
7685  vdst[lane] = (VecElemI32)std::floor(src[lane] + 0.5);
7686  }
7687  }
7688 
7689  vdst.write();
7690  }
7691 
7693  InFmt_VOP1 *iFmt)
7694  : Inst_VOP1(iFmt, "v_cvt_flr_i32_f32")
7695  {
7696  setFlag(ALU);
7697  setFlag(F32);
7698  } // Inst_VOP1__V_CVT_FLR_I32_F32
7699 
7701  {
7702  } // ~Inst_VOP1__V_CVT_FLR_I32_F32
7703 
7704  // D.i = (int)floor(S0.f).
7705  void
7707  {
7708  Wavefront *wf = gpuDynInst->wavefront();
7709  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7710  VecOperandI32 vdst(gpuDynInst, instData.VDST);
7711 
7712  src.readSrc();
7713 
7714  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7715  if (wf->execMask(lane)) {
7716  vdst[lane] = (VecElemI32)std::floor(src[lane]);
7717  }
7718  }
7719 
7720  vdst.write();
7721  }
7722 
7724  : Inst_VOP1(iFmt, "v_cvt_off_f32_i4")
7725  {
7726  setFlag(ALU);
7727  setFlag(F32);
7728  } // Inst_VOP1__V_CVT_OFF_F32_I4
7729 
7731  {
7732  } // ~Inst_VOP1__V_CVT_OFF_F32_I4
7733 
7734  // 4-bit signed int to 32-bit float.
7735  void
7737  {
7739  }
7740 
7742  : Inst_VOP1(iFmt, "v_cvt_f32_f64")
7743  {
7744  setFlag(ALU);
7745  setFlag(F64);
7746  } // Inst_VOP1__V_CVT_F32_F64
7747 
7749  {
7750  } // ~Inst_VOP1__V_CVT_F32_F64
7751 
7752  // D.f = (float)S0.d.
7753  void
7755  {
7756  Wavefront *wf = gpuDynInst->wavefront();
7757  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
7758  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7759 
7760  src.readSrc();
7761 
7762  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7763  if (wf->execMask(lane)) {
7764  vdst[lane] = (VecElemF32)src[lane];
7765  }
7766  }
7767 
7768  vdst.write();
7769  }
7770 
7772  : Inst_VOP1(iFmt, "v_cvt_f64_f32")
7773  {
7774  setFlag(ALU);
7775  setFlag(F64);
7776  } // Inst_VOP1__V_CVT_F64_F32
7777 
7779  {
7780  } // ~Inst_VOP1__V_CVT_F64_F32
7781 
7782  // D.d = (double)S0.f.
7783  void
7785  {
7786  Wavefront *wf = gpuDynInst->wavefront();
7787  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7788  VecOperandF64 vdst(gpuDynInst, instData.VDST);
7789 
7790  src.readSrc();
7791 
7792  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7793  if (wf->execMask(lane)) {
7794  vdst[lane] = (VecElemF64)src[lane];
7795  }
7796  }
7797 
7798  vdst.write();
7799  }
7800 
7802  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte0")
7803  {
7804  setFlag(ALU);
7805  setFlag(F32);
7806  } // Inst_VOP1__V_CVT_F32_UBYTE0
7807 
7809  {
7810  } // ~Inst_VOP1__V_CVT_F32_UBYTE0
7811 
7812  // D.f = (float)(S0.u[7:0]).
7813  void
7815  {
7816  Wavefront *wf = gpuDynInst->wavefront();
7817  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7818  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7819 
7820  src.readSrc();
7821 
7822  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7823  if (wf->execMask(lane)) {
7824  vdst[lane] = (VecElemF32)(bits(src[lane], 7, 0));
7825  }
7826  }
7827 
7828  vdst.write();
7829  }
7830 
7832  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte1")
7833  {
7834  setFlag(ALU);
7835  setFlag(F32);
7836  } // Inst_VOP1__V_CVT_F32_UBYTE1
7837 
7839  {
7840  } // ~Inst_VOP1__V_CVT_F32_UBYTE1
7841 
7842  // D.f = (float)(S0.u[15:8]).
7843  void
7845  {
7846  Wavefront *wf = gpuDynInst->wavefront();
7847  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7848  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7849 
7850  src.readSrc();
7851 
7852  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7853  if (wf->execMask(lane)) {
7854  vdst[lane] = (VecElemF32)(bits(src[lane], 15, 8));
7855  }
7856  }
7857 
7858  vdst.write();
7859  }
7860 
7862  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte2")
7863  {
7864  setFlag(ALU);
7865  setFlag(F32);
7866  } // Inst_VOP1__V_CVT_F32_UBYTE2
7867 
7869  {
7870  } // ~Inst_VOP1__V_CVT_F32_UBYTE2
7871 
7872  // D.f = (float)(S0.u[23:16]).
7873  void
7875  {
7876  Wavefront *wf = gpuDynInst->wavefront();
7877  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7878  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7879 
7880  src.readSrc();
7881 
7882  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7883  if (wf->execMask(lane)) {
7884  vdst[lane] = (VecElemF32)(bits(src[lane], 23, 16));
7885  }
7886  }
7887 
7888  vdst.write();
7889  }
7890 
7892  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte3")
7893  {
7894  setFlag(ALU);
7895  setFlag(F32);
7896  } // Inst_VOP1__V_CVT_F32_UBYTE3
7897 
7899  {
7900  } // ~Inst_VOP1__V_CVT_F32_UBYTE3
7901 
7902  // D.f = (float)(S0.u[31:24]).
7903  void
7905  {
7906  Wavefront *wf = gpuDynInst->wavefront();
7907  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7908  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7909 
7910  src.readSrc();
7911 
7912  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7913  if (wf->execMask(lane)) {
7914  vdst[lane] = (VecElemF32)(bits(src[lane], 31, 24));
7915  }
7916  }
7917 
7918  vdst.write();
7919  }
7920 
7922  : Inst_VOP1(iFmt, "v_cvt_u32_f64")
7923  {
7924  setFlag(ALU);
7925  setFlag(F64);
7926  } // Inst_VOP1__V_CVT_U32_F64
7927 
7929  {
7930  } // ~Inst_VOP1__V_CVT_U32_F64
7931 
7932  // D.u = (unsigned)S0.d.
7933  // Out-of-range floating point values (including infinity) saturate. NaN
7934  // is converted to 0.
7935  void
7937  {
7938  Wavefront *wf = gpuDynInst->wavefront();
7939  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
7940  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7941 
7942  src.readSrc();
7943 
7944  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7945  if (wf->execMask(lane)) {
7946  int exp;
7947  std::frexp(src[lane],&exp);
7948  if (std::isnan(src[lane])) {
7949  vdst[lane] = 0;
7950  } else if (std::isinf(src[lane])) {
7951  if (std::signbit(src[lane])) {
7952  vdst[lane] = 0;
7953  } else {
7954  vdst[lane] = UINT_MAX;
7955  }
7956  } else if (exp > 31) {
7957  vdst[lane] = UINT_MAX;
7958  } else {
7959  vdst[lane] = (VecElemU32)src[lane];
7960  }
7961  }
7962  }
7963 
7964  vdst.write();
7965  }
7966 
7968  : Inst_VOP1(iFmt, "v_cvt_f64_u32")
7969  {
7970  setFlag(ALU);
7971  setFlag(F64);
7972  } // Inst_VOP1__V_CVT_F64_U32
7973 
7975  {
7976  } // ~Inst_VOP1__V_CVT_F64_U32
7977 
7978  // D.d = (double)S0.u.
7979  void
7981  {
7982  Wavefront *wf = gpuDynInst->wavefront();
7983  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7984  VecOperandF64 vdst(gpuDynInst, instData.VDST);
7985 
7986  src.readSrc();
7987 
7988  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7989  if (wf->execMask(lane)) {
7990  vdst[lane] = (VecElemF64)src[lane];
7991  }
7992  }
7993 
7994  vdst.write();
7995  }
7996 
7998  : Inst_VOP1(iFmt, "v_trunc_f64")
7999  {
8000  setFlag(ALU);
8001  setFlag(F64);
8002  } // Inst_VOP1__V_TRUNC_F64
8003 
8005  {
8006  } // ~Inst_VOP1__V_TRUNC_F64
8007 
8008  // D.d = trunc(S0.d), return integer part of S0.d.
8009  void
8011  {
8012  Wavefront *wf = gpuDynInst->wavefront();
8013  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8014  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8015 
8016  src.readSrc();
8017 
8018  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8019  if (wf->execMask(lane)) {
8020  vdst[lane] = std::trunc(src[lane]);
8021  }
8022  }
8023 
8024  vdst.write();
8025  }
8026 
8028  : Inst_VOP1(iFmt, "v_ceil_f64")
8029  {
8030  setFlag(ALU);
8031  setFlag(F64);
8032  } // Inst_VOP1__V_CEIL_F64
8033 
8035  {
8036  } // ~Inst_VOP1__V_CEIL_F64
8037 
8038  // D.d = ceil(S0.d);
8039  void
8041  {
8042  Wavefront *wf = gpuDynInst->wavefront();
8043  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8044  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8045 
8046  src.readSrc();
8047 
8048  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8049  if (wf->execMask(lane)) {
8050  vdst[lane] = std::ceil(src[lane]);
8051  }
8052  }
8053 
8054  vdst.write();
8055  }
8056 
8058  : Inst_VOP1(iFmt, "v_rndne_f64")
8059  {
8060  setFlag(ALU);
8061  setFlag(F64);
8062  } // Inst_VOP1__V_RNDNE_F64
8063 
8065  {
8066  } // ~Inst_VOP1__V_RNDNE_F64
8067 
8068  // D.d = round_nearest_even(S0.d).
8069  void
8071  {
8072  Wavefront *wf = gpuDynInst->wavefront();
8073  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8074  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8075 
8076  src.readSrc();
8077 
8078  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8079  if (wf->execMask(lane)) {
8080  vdst[lane] = roundNearestEven(src[lane]);
8081  }
8082  }
8083 
8084  vdst.write();
8085  }
8086 
8088  : Inst_VOP1(iFmt, "v_floor_f64")
8089  {
8090  setFlag(ALU);
8091  setFlag(F64);
8092  } // Inst_VOP1__V_FLOOR_F64
8093 
8095  {
8096  } // ~Inst_VOP1__V_FLOOR_F64
8097 
8098  // D.d = floor(S0.d);
8099  void
8101  {
8102  Wavefront *wf = gpuDynInst->wavefront();
8103  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8104  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8105 
8106  src.readSrc();
8107 
8108  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8109  if (wf->execMask(lane)) {
8110  vdst[lane] = std::floor(src[lane]);
8111  }
8112  }
8113 
8114  vdst.write();
8115  }
8116 
8118  : Inst_VOP1(iFmt, "v_fract_f32")
8119  {
8120  setFlag(ALU);
8121  setFlag(F32);
8122  } // Inst_VOP1__V_FRACT_F32
8123 
8125  {
8126  } // ~Inst_VOP1__V_FRACT_F32
8127 
8128  // D.f = modf(S0.f).
8129  void
8131  {
8132  Wavefront *wf = gpuDynInst->wavefront();
8133  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8134  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8135 
8136  src.readSrc();
8137 
8138  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8139  if (wf->execMask(lane)) {
8140  VecElemF32 int_part(0.0);
8141  vdst[lane] = std::modf(src[lane], &int_part);
8142  }
8143  }
8144 
8145  vdst.write();
8146  }
8147 
8149  : Inst_VOP1(iFmt, "v_trunc_f32")
8150  {
8151  setFlag(ALU);
8152  setFlag(F32);
8153  } // Inst_VOP1__V_TRUNC_F32
8154 
8156  {
8157  } // ~Inst_VOP1__V_TRUNC_F32
8158 
8159  // D.f = trunc(S0.f), return integer part of S0.f.
8160  void
8162  {
8163  Wavefront *wf = gpuDynInst->wavefront();
8164  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8165  VecOperandF32 vdst (gpuDynInst, instData.VDST);
8166 
8167  src.readSrc();
8168 
8169  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8170  if (wf->execMask(lane)) {
8171  vdst[lane] = std::trunc(src[lane]);
8172  }
8173  }
8174 
8175  vdst.write();
8176  }
8177 
8179  : Inst_VOP1(iFmt, "v_ceil_f32")
8180  {
8181  setFlag(ALU);
8182  setFlag(F32);
8183  } // Inst_VOP1__V_CEIL_F32
8184 
8186  {
8187  } // ~Inst_VOP1__V_CEIL_F32
8188 
8189  // D.f = ceil(S0.f);
8190  void
8192  {
8193  Wavefront *wf = gpuDynInst->wavefront();
8194  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8195  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8196 
8197  src.readSrc();
8198 
8199  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8200  if (wf->execMask(lane)) {
8201  vdst[lane] = std::ceil(src[lane]);
8202  }
8203  }
8204 
8205  vdst.write();
8206  }
8207 
8209  : Inst_VOP1(iFmt, "v_rndne_f32")
8210  {
8211  setFlag(ALU);
8212  setFlag(F32);
8213  } // Inst_VOP1__V_RNDNE_F32
8214 
8216  {
8217  } // ~Inst_VOP1__V_RNDNE_F32
8218 
8219  // D.f = round_nearest_even(S0.f).
8220  void
8222  {
8223  Wavefront *wf = gpuDynInst->wavefront();
8224  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8225  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8226 
8227  src.readSrc();
8228 
8229  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8230  if (wf->execMask(lane)) {
8231  vdst[lane] = roundNearestEven(src[lane]);
8232  }
8233  }
8234 
8235  vdst.write();
8236  }
8237 
8239  : Inst_VOP1(iFmt, "v_floor_f32")
8240  {
8241  setFlag(ALU);
8242  setFlag(F32);
8243  } // Inst_VOP1__V_FLOOR_F32
8244 
8246  {
8247  } // ~Inst_VOP1__V_FLOOR_F32
8248 
8249  // D.f = floor(S0.f);
8250  void
8252  {
8253  Wavefront *wf = gpuDynInst->wavefront();
8254  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8255  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8256 
8257  src.readSrc();
8258 
8259  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8260  if (wf->execMask(lane)) {
8261  vdst[lane] = std::floor(src[lane]);
8262  }
8263  }
8264 
8265  vdst.write();
8266  }
8267 
8269  : Inst_VOP1(iFmt, "v_exp_f32")
8270  {
8271  setFlag(ALU);
8272  setFlag(F32);
8273  } // Inst_VOP1__V_EXP_F32
8274 
8276  {
8277  } // ~Inst_VOP1__V_EXP_F32
8278 
8279  // D.f = pow(2.0, S0.f).
8280  void
8282  {
8283  Wavefront *wf = gpuDynInst->wavefront();
8284  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8285  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8286 
8287  src.readSrc();
8288 
8289  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8290  if (wf->execMask(lane)) {
8291  vdst[lane] = std::pow(2.0, src[lane]);
8292  }
8293  }
8294 
8295  vdst.write();
8296  }
8297 
8299  : Inst_VOP1(iFmt, "v_log_f32")
8300  {
8301  setFlag(ALU);
8302  setFlag(F32);
8303  } // Inst_VOP1__V_LOG_F32
8304 
8306  {
8307  } // ~Inst_VOP1__V_LOG_F32
8308 
8309  // D.f = log2(S0.f).
8310  void
8312  {
8313  Wavefront *wf = gpuDynInst->wavefront();
8314  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8315  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8316 
8317  src.readSrc();
8318 
8319  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8320  if (wf->execMask(lane)) {
8321  vdst[lane] = std::log2(src[lane]);
8322  }
8323  }
8324 
8325  vdst.write();
8326  }
8327 
8329  : Inst_VOP1(iFmt, "v_rcp_f32")
8330  {
8331  setFlag(ALU);
8332  setFlag(F32);
8333  } // Inst_VOP1__V_RCP_F32
8334 
8336  {
8337  } // ~Inst_VOP1__V_RCP_F32
8338 
8339  // D.f = 1.0 / S0.f.
8340  void
8342  {
8343  Wavefront *wf = gpuDynInst->wavefront();
8344  ConstVecOperandF32 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] = 1.0 / src[lane];
8352  }
8353  }
8354 
8355  vdst.write();
8356  }
8357 
8359  : Inst_VOP1(iFmt, "v_rcp_iflag_f32")
8360  {
8361  setFlag(ALU);
8362  setFlag(F32);
8363  } // Inst_VOP1__V_RCP_IFLAG_F32
8364 
8366  {
8367  } // ~Inst_VOP1__V_RCP_IFLAG_F32
8368 
8369  // D.f = 1.0 / S0.f.
8370  void
8372  {
8373  Wavefront *wf = gpuDynInst->wavefront();
8374  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8375  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8376 
8377  src.readSrc();
8378 
8379  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8380  if (wf->execMask(lane)) {
8381  vdst[lane] = 1.0 / src[lane];
8382  }
8383  }
8384 
8385  vdst.write();
8386  }
8387 
8389  : Inst_VOP1(iFmt, "v_rsq_f32")
8390  {
8391  setFlag(ALU);
8392  setFlag(F32);
8393  } // Inst_VOP1__V_RSQ_F32
8394 
8396  {
8397  } // ~Inst_VOP1__V_RSQ_F32
8398 
8399  // D.f = 1.0 / sqrt(S0.f).
8400  void
8402  {
8403  Wavefront *wf = gpuDynInst->wavefront();
8404  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8405  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8406 
8407  src.readSrc();
8408 
8409  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8410  if (wf->execMask(lane)) {
8411  vdst[lane] = 1.0 / std::sqrt(src[lane]);
8412  }
8413  }
8414 
8415  vdst.write();
8416  }
8417 
8419  : Inst_VOP1(iFmt, "v_rcp_f64")
8420  {
8421  setFlag(ALU);
8422  setFlag(F64);
8423  } // Inst_VOP1__V_RCP_F64
8424 
8426  {
8427  } // ~Inst_VOP1__V_RCP_F64
8428 
8429  // D.d = 1.0 / S0.d.
8430  void
8432  {
8433  Wavefront *wf = gpuDynInst->wavefront();
8434  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8435  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8436 
8437  src.readSrc();
8438 
8439  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8440  if (wf->execMask(lane)) {
8441  if (std::fpclassify(src[lane]) == FP_ZERO) {
8442  vdst[lane] = +INFINITY;
8443  } else if (std::isnan(src[lane])) {
8444  vdst[lane] = NAN;
8445  } else if (std::isinf(src[lane])) {
8446  if (std::signbit(src[lane])) {
8447  vdst[lane] = -0.0;
8448  } else {
8449  vdst[lane] = 0.0;
8450  }
8451  } else {
8452  vdst[lane] = 1.0 / src[lane];
8453  }
8454  }
8455  }
8456 
8457  vdst.write();
8458  }
8459 
8461  : Inst_VOP1(iFmt, "v_rsq_f64")
8462  {
8463  setFlag(ALU);
8464  setFlag(F64);
8465  } // Inst_VOP1__V_RSQ_F64
8466 
8468  {
8469  } // ~Inst_VOP1__V_RSQ_F64
8470 
8471  // D.d = 1.0 / sqrt(S0.d).
8472  void
8474  {
8475  Wavefront *wf = gpuDynInst->wavefront();
8476  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8477  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8478 
8479  src.readSrc();
8480 
8481  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8482  if (wf->execMask(lane)) {
8483  if (std::fpclassify(src[lane]) == FP_ZERO) {
8484  vdst[lane] = +INFINITY;
8485  } else if (std::isnan(src[lane])) {
8486  vdst[lane] = NAN;
8487  } else if (std::isinf(src[lane])
8488  && !std::signbit(src[lane])) {
8489  vdst[lane] = 0.0;
8490  } else if (std::signbit(src[lane])) {
8491  vdst[lane] = NAN;
8492  } else {
8493  vdst[lane] = 1.0 / std::sqrt(src[lane]);
8494  }
8495  }
8496  }
8497 
8498  vdst.write();
8499  }
8500 
8502  : Inst_VOP1(iFmt, "v_sqrt_f32")
8503  {
8504  setFlag(ALU);
8505  setFlag(F32);
8506  } // Inst_VOP1__V_SQRT_F32
8507 
8509  {
8510  } // ~Inst_VOP1__V_SQRT_F32
8511 
8512  // D.f = sqrt(S0.f).
8513  void
8515  {
8516  Wavefront *wf = gpuDynInst->wavefront();
8517  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8518  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8519 
8520  src.readSrc();
8521 
8522  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8523  if (wf->execMask(lane)) {
8524  vdst[lane] = std::sqrt(src[lane]);
8525  }
8526  }
8527 
8528  vdst.write();
8529  }
8530 
8532  : Inst_VOP1(iFmt, "v_sqrt_f64")
8533  {
8534  setFlag(ALU);
8535  setFlag(F64);
8536  } // Inst_VOP1__V_SQRT_F64
8537 
8539  {
8540  } // ~Inst_VOP1__V_SQRT_F64
8541 
8542  // D.d = sqrt(S0.d).
8543  void
8545  {
8546  Wavefront *wf = gpuDynInst->wavefront();
8547  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8548  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8549 
8550  src.readSrc();
8551 
8552  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8553  if (wf->execMask(lane)) {
8554  vdst[lane] = std::sqrt(src[lane]);
8555  }
8556  }
8557 
8558  vdst.write();
8559  }
8560 
8562  : Inst_VOP1(iFmt, "v_sin_f32")
8563  {
8564  setFlag(ALU);
8565  setFlag(F32);
8566  } // Inst_VOP1__V_SIN_F32
8567 
8569  {
8570  } // ~Inst_VOP1__V_SIN_F32
8571 
8572  // D.f = sin(S0.f * 2 * PI).
8573  void
8575  {
8576  Wavefront *wf = gpuDynInst->wavefront();
8577  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8578  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
8579  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8580 
8581  src.readSrc();
8582  pi.read();
8583 
8584  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8585  if (wf->execMask(lane)) {
8586  if (src[lane] < -256.0 || src[lane] > 256.0) {
8587  vdst[lane] = 0.0;
8588  } else {
8589  vdst[lane] = std::sin(src[lane] * 2.0 * pi.rawData());
8590  }
8591  }
8592  }
8593 
8594  vdst.write();
8595  }
8596 
8598  : Inst_VOP1(iFmt, "v_cos_f32")
8599  {
8600  setFlag(ALU);
8601  setFlag(F32);
8602  } // Inst_VOP1__V_COS_F32
8603 
8605  {
8606  } // ~Inst_VOP1__V_COS_F32
8607 
8608  // D.f = cos(S0.f * 2 * PI).
8609  void
8611  {
8612  Wavefront *wf = gpuDynInst->wavefront();
8613  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8614  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
8615  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8616 
8617  src.readSrc();
8618  pi.read();
8619 
8620  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8621  if (wf->execMask(lane)) {
8622  if (src[lane] < -256.0 || src[lane] > 256.0) {
8623  vdst[lane] = 0.0;
8624  } else {
8625  vdst[lane] = std::cos(src[lane] * 2.0 * pi.rawData());
8626  }
8627  }
8628  }
8629 
8630  vdst.write();
8631  }
8632 
8634  : Inst_VOP1(iFmt, "v_not_b32")
8635  {
8636  setFlag(ALU);
8637  } // Inst_VOP1__V_NOT_B32
8638 
8640  {
8641  } // ~Inst_VOP1__V_NOT_B32
8642 
8643  // D.u = ~S0.u.
8644  // Input and output modifiers not supported.
8645  void
8647  {
8648  Wavefront *wf = gpuDynInst->wavefront();
8649  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8650  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8651 
8652  src.readSrc();
8653 
8654  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8655  if (wf->execMask(lane)) {
8656  vdst[lane] = ~src[lane];
8657  }
8658  }
8659 
8660  vdst.write();
8661  }
8662 
8664  : Inst_VOP1(iFmt, "v_bfrev_b32")
8665  {
8666  setFlag(ALU);
8667  } // Inst_VOP1__V_BFREV_B32
8668 
8670  {
8671  } // ~Inst_VOP1__V_BFREV_B32
8672 
8673  // D.u[31:0] = S0.u[0:31], bitfield reverse.
8674  // Input and output modifiers not supported.
8675  void
8677  {
8678  Wavefront *wf = gpuDynInst->wavefront();
8679  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8680  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8681 
8682  src.readSrc();
8683 
8684  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8685  if (wf->execMask(lane)) {
8686  vdst[lane] = reverseBits(src[lane]);
8687  }
8688  }
8689 
8690  vdst.write();
8691  }
8692 
8694  : Inst_VOP1(iFmt, "v_ffbh_u32")
8695  {
8696  setFlag(ALU);
8697  } // Inst_VOP1__V_FFBH_U32
8698 
8700  {
8701  } // ~Inst_VOP1__V_FFBH_U32
8702 
8703  // D.u = position of first 1 in S0.u from MSB;
8704  // D.u = 0xffffffff if S0.u == 0.
8705  void
8707  {
8708  Wavefront *wf = gpuDynInst->wavefront();
8709  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8710  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8711 
8712  src.readSrc();
8713 
8714  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8715  if (wf->execMask(lane)) {
8716  vdst[lane] = findFirstOneMsb(src[lane]);
8717  }
8718  }
8719 
8720  vdst.write();
8721  }
8722 
8724  : Inst_VOP1(iFmt, "v_ffbl_b32")
8725  {
8726  setFlag(ALU);
8727  } // Inst_VOP1__V_FFBL_B32
8728 
8730  {
8731  } // ~Inst_VOP1__V_FFBL_B32
8732 
8733  // D.u = position of first 1 in S0.u from LSB;
8734  // D.u = 0xffffffff if S0.u == 0.
8735  void
8737  {
8738  Wavefront *wf = gpuDynInst->wavefront();
8739  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8740  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8741 
8742  src.readSrc();
8743 
8744  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8745  if (wf->execMask(lane)) {
8746  vdst[lane] = findFirstOne(src[lane]);
8747  }
8748  }
8749 
8750  vdst.write();
8751  }
8752 
8754  : Inst_VOP1(iFmt, "v_ffbh_i32")
8755  {
8756  setFlag(ALU);
8757  } // Inst_VOP1__V_FFBH_I32
8758 
8760  {
8761  } // ~Inst_VOP1__V_FFBH_I32
8762 
8763  // D.u = position of first bit different from sign bit in S0.i from MSB;
8764  // D.u = 0xffffffff if S0.i == 0 or S0.i == 0xffffffff.
8765  void
8767  {
8768  Wavefront *wf = gpuDynInst->wavefront();
8769  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
8770  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8771 
8772  src.readSrc();
8773 
8774  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8775  if (wf->execMask(lane)) {
8776  vdst[lane] = firstOppositeSignBit(src[lane]);
8777  }
8778  }
8779 
8780  vdst.write();
8781  }
8782 
8784  InFmt_VOP1 *iFmt)
8785  : Inst_VOP1(iFmt, "v_frexp_exp_i32_f64")
8786  {
8787  setFlag(ALU);
8788  setFlag(F64);
8789  } // Inst_VOP1__V_FREXP_EXP_I32_F64
8790 
8792  {
8793  } // ~Inst_VOP1__V_FREXP_EXP_I32_F64
8794 
8795  void
8797  {
8798  Wavefront *wf = gpuDynInst->wavefront();
8799  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8800  VecOperandI32 vdst(gpuDynInst, instData.VDST);
8801 
8802  src.readSrc();
8803 
8804  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8805  if (wf->execMask(lane)) {
8806  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
8807  vdst[lane] = 0;
8808  } else {
8809  VecElemI32 exp = 0;
8810  std::frexp(src[lane], &exp);
8811  vdst[lane] = exp;
8812  }
8813  }
8814  }
8815 
8816  vdst.write();
8817  }
8818 
8820  : Inst_VOP1(iFmt, "v_frexp_mant_f64")
8821  {
8822  setFlag(ALU);
8823  setFlag(F64);
8824  } // Inst_VOP1__V_FREXP_MANT_F64
8825 
8827  {
8828  } // ~Inst_VOP1__V_FREXP_MANT_F64
8829 
8830  void
8832  {
8833  Wavefront *wf = gpuDynInst->wavefront();
8834  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8835  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8836 
8837  src.readSrc();
8838 
8839  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8840  if (wf->execMask(lane)) {
8841  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
8842  vdst[lane] = src[lane];
8843  } else {
8844  VecElemI32 exp(0);
8845  vdst[lane] = std::frexp(src[lane], &exp);
8846  }
8847  }
8848  }
8849 
8850  vdst.write();
8851  }
8852 
8854  : Inst_VOP1(iFmt, "v_fract_f64")
8855  {
8856  setFlag(ALU);
8857  setFlag(F64);
8858  } // Inst_VOP1__V_FRACT_F64
8859 
8861  {
8862  } // ~Inst_VOP1__V_FRACT_F64
8863 
8864  void
8866  {
8867  Wavefront *wf = gpuDynInst->wavefront();
8868  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8869  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8870 
8871  src.readSrc();
8872 
8873  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8874  if (wf->execMask(lane)) {
8875  VecElemF64 int_part(0.0);
8876  vdst[lane] = std::modf(src[lane], &int_part);
8877  }
8878  }
8879 
8880  vdst.write();
8881  }
8882 
8884  InFmt_VOP1 *iFmt)
8885  : Inst_VOP1(iFmt, "v_frexp_exp_i32_f32")
8886  {
8887  setFlag(ALU);
8888  setFlag(F32);
8889  } // Inst_VOP1__V_FREXP_EXP_I32_F32
8890 
8892  {
8893  } // ~Inst_VOP1__V_FREXP_EXP_I32_F32
8894 
8895  // frexp(S0.f, Exponent(S0.f))
8896  // if (S0.f == INF || S0.f == NAN) then D.i = 0;
8897  // else D.i = Exponent(S0.f);
8898  void
8900  {
8901  Wavefront *wf = gpuDynInst->wavefront();
8902  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8903  VecOperandI32 vdst(gpuDynInst, instData.VDST);
8904 
8905  src.readSrc();
8906 
8907  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8908  if (wf->execMask(lane)) {
8909  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
8910  vdst[lane] = 0;
8911  } else {
8912  VecElemI32 exp(0);
8913  std::frexp(src[lane], &exp);
8914  vdst[lane] = exp;
8915  }
8916  }
8917  }
8918 
8919  vdst.write();
8920  }
8921 
8923  : Inst_VOP1(iFmt, "v_frexp_mant_f32")
8924  {
8925  setFlag(ALU);
8926  setFlag(F32);
8927  } // Inst_VOP1__V_FREXP_MANT_F32
8928 
8930  {
8931  } // ~Inst_VOP1__V_FREXP_MANT_F32
8932 
8933  // if (S0.f == INF || S0.f == NAN) then D.f = S0.f;
8934  // else D.f = frexp(S0.f, Exponent(S0.f)).
8935  void
8937  {
8938  Wavefront *wf = gpuDynInst->wavefront();
8939  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8940  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8941 
8942  src.readSrc();
8943 
8944  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8945  if (wf->execMask(lane)) {
8946  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
8947  vdst[lane] = src[lane];
8948  } else {
8949  VecElemI32 exp(0);
8950  vdst[lane] = std::frexp(src[lane], &exp);
8951  }
8952  }
8953  }
8954 
8955  vdst.write();
8956  }
8957 
8959  : Inst_VOP1(iFmt, "v_clrexcp")
8960  {
8961  setFlag(ALU);
8962  } // Inst_VOP1__V_CLREXCP
8963 
8965  {
8966  } // ~Inst_VOP1__V_CLREXCP
8967 
8968  void
8970  {
8972  }
8973 
8975  : Inst_VOP1(iFmt, "v_cvt_f16_u16")
8976  {
8977  setFlag(ALU);
8978  setFlag(F16);
8979  } // Inst_VOP1__V_CVT_F16_U16
8980 
8982  {
8983  } // ~Inst_VOP1__V_CVT_F16_U16
8984 
8985  // D.f16 = uint16_to_flt16(S.u16).
8986  void
8988  {
8990  }
8991 
8993  : Inst_VOP1(iFmt, "v_cvt_f16_i16")
8994  {
8995  setFlag(ALU);
8996  setFlag(F16);
8997  } // Inst_VOP1__V_CVT_F16_I16
8998 
9000  {
9001  } // ~Inst_VOP1__V_CVT_F16_I16
9002 
9003  // D.f16 = int16_to_flt16(S.i16).
9004  void
9006  {
9008  }
9009 
9011  : Inst_VOP1(iFmt, "v_cvt_u16_f16")
9012  {
9013  setFlag(ALU);
9014  setFlag(F16);
9015  } // Inst_VOP1__V_CVT_U16_F16
9016 
9018  {
9019  } // ~Inst_VOP1__V_CVT_U16_F16
9020 
9021  // D.u16 = flt16_to_uint16(S.f16).
9022  void
9024  {
9026  }
9027 
9029  : Inst_VOP1(iFmt, "v_cvt_i16_f16")
9030  {
9031  setFlag(ALU);
9032  setFlag(F16);
9033  } // Inst_VOP1__V_CVT_I16_F16
9034 
9036  {
9037  } // ~Inst_VOP1__V_CVT_I16_F16
9038 
9039  // D.i16 = flt16_to_int16(S.f16).
9040  void
9042  {
9044  }
9045 
9047  : Inst_VOP1(iFmt, "v_rcp_f16")
9048  {
9049  setFlag(ALU);
9050  setFlag(F16);
9051  } // Inst_VOP1__V_RCP_F16
9052 
9054  {
9055  } // ~Inst_VOP1__V_RCP_F16
9056 
9057  // if (S0.f16 == 1.0f)
9058  // D.f16 = 1.0f;
9059  // else
9060  // D.f16 = 1 / S0.f16;
9061  void
9063  {
9065  }
9066 
9068  : Inst_VOP1(iFmt, "v_sqrt_f16")
9069  {
9070  setFlag(ALU);
9071  setFlag(F16);
9072  } // Inst_VOP1__V_SQRT_F16
9073 
9075  {
9076  } // ~Inst_VOP1__V_SQRT_F16
9077 
9078  // if (S0.f16 == 1.0f)
9079  // D.f16 = 1.0f;
9080  // else
9081  // D.f16 = sqrt(S0.f16);
9082  void
9084  {
9086  }
9087 
9089  : Inst_VOP1(iFmt, "v_rsq_f16")
9090  {
9091  setFlag(ALU);
9092  setFlag(F16);
9093  } // Inst_VOP1__V_RSQ_F16
9094 
9096  {
9097  } // ~Inst_VOP1__V_RSQ_F16
9098 
9099  // if (S0.f16 == 1.0f)
9100  // D.f16 = 1.0f;
9101  // else
9102  // D.f16 = 1 / sqrt(S0.f16);
9103  void
9105  {
9107  }
9108 
9110  : Inst_VOP1(iFmt, "v_log_f16")
9111  {
9112  setFlag(ALU);
9113  setFlag(F16);
9114  } // Inst_VOP1__V_LOG_F16
9115 
9117  {
9118  } // ~Inst_VOP1__V_LOG_F16
9119 
9120  // if (S0.f16 == 1.0f)
9121  // D.f16 = 0.0f;
9122  // else
9123  // D.f16 = log2(S0.f16);
9124  void
9126  {
9128  }
9129 
9131  : Inst_VOP1(iFmt, "v_exp_f16")
9132  {
9133  setFlag(ALU);
9134  setFlag(F16);
9135  } // Inst_VOP1__V_EXP_F16
9136 
9138  {
9139  } // ~Inst_VOP1__V_EXP_F16
9140 
9141  // if (S0.f16 == 0.0f)
9142  // D.f16 = 1.0f;
9143  // else
9144  // D.f16 = pow(2.0, S0.f16).
9145  void
9147  {
9149  }
9150 
9152  : Inst_VOP1(iFmt, "v_frexp_mant_f16")
9153  {
9154  setFlag(ALU);
9155  setFlag(F16);
9156  } // Inst_VOP1__V_FREXP_MANT_F16
9157 
9159  {
9160  } // ~Inst_VOP1__V_FREXP_MANT_F16
9161 
9162  // if (S0.f16 == +-INF || S0.f16 == NAN)
9163  // D.f16 = S0.f16;
9164  // else
9165  // D.f16 = mantissa(S0.f16).
9166  void
9168  {
9170  }
9171 
9173  InFmt_VOP1 *iFmt)
9174  : Inst_VOP1(iFmt, "v_frexp_exp_i16_f16")
9175  {
9176  setFlag(ALU);
9177  setFlag(F16);
9178  } // Inst_VOP1__V_FREXP_EXP_I16_F16
9179 
9181  {
9182  } // ~Inst_VOP1__V_FREXP_EXP_I16_F16
9183 
9184  // frexp(S0.f16, Exponent(S0.f16))
9185  // if (S0.f16 == +-INF || S0.f16 == NAN)
9186  // D.i16 = 0;
9187  // else
9188  // D.i16 = Exponent(S0.f16);
9189  void
9191  {
9193  }
9194 
9196  : Inst_VOP1(iFmt, "v_floor_f16")
9197  {
9198  setFlag(ALU);
9199  setFlag(F16);
9200  } // Inst_VOP1__V_FLOOR_F16
9201 
9203  {
9204  } // ~Inst_VOP1__V_FLOOR_F16
9205 
9206  // D.f16 = floor(S0.f16);
9207  void
9209  {
9211  }
9212 
9214  : Inst_VOP1(iFmt, "v_ceil_f16")
9215  {
9216  setFlag(ALU);
9217  setFlag(F16);
9218  } // Inst_VOP1__V_CEIL_F16
9219 
9221  {
9222  } // ~Inst_VOP1__V_CEIL_F16
9223 
9224  // D.f16 = ceil(S0.f16);
9225  void
9227  {
9229  }
9230 
9232  : Inst_VOP1(iFmt, "v_trunc_f16")
9233  {
9234  setFlag(ALU);
9235  setFlag(F16);
9236  } // Inst_VOP1__V_TRUNC_F16
9237 
9239  {
9240  } // ~Inst_VOP1__V_TRUNC_F16
9241 
9242  // D.f16 = trunc(S0.f16).
9243  void
9245  {
9247  }
9248 
9250  : Inst_VOP1(iFmt, "v_rndne_f16")
9251  {
9252  setFlag(ALU);
9253  setFlag(F16);
9254  } // Inst_VOP1__V_RNDNE_F16
9255 
9257  {
9258  } // ~Inst_VOP1__V_RNDNE_F16
9259 
9260  // D.f16 = roundNearestEven(S0.f16);
9261  void
9263  {
9265  }
9266 
9268  : Inst_VOP1(iFmt, "v_fract_f16")
9269  {
9270  setFlag(ALU);
9271  setFlag(F16);
9272  } // Inst_VOP1__V_FRACT_F16
9273 
9275  {
9276  } // ~Inst_VOP1__V_FRACT_F16
9277 
9278  // D.f16 = S0.f16 + -floor(S0.f16).
9279  void
9281  {
9283  }
9284 
9286  : Inst_VOP1(iFmt, "v_sin_f16")
9287  {
9288  setFlag(ALU);
9289  setFlag(F16);
9290  } // Inst_VOP1__V_SIN_F16
9291 
9293  {
9294  } // ~Inst_VOP1__V_SIN_F16
9295 
9296  // D.f16 = sin(S0.f16 * 2 * PI).
9297  void
9299  {
9301  }
9302 
9304  : Inst_VOP1(iFmt, "v_cos_f16")
9305  {
9306  setFlag(ALU);
9307  setFlag(F16);
9308  } // Inst_VOP1__V_COS_F16
9309 
9311  {
9312  } // ~Inst_VOP1__V_COS_F16
9313 
9314  // D.f16 = cos(S0.f16 * 2 * PI).
9315  void
9317  {
9319  }
9320 
9322  : Inst_VOP1(iFmt, "v_exp_legacy_f32")
9323  {
9324  setFlag(ALU);
9325  setFlag(F32);
9326  } // Inst_VOP1__V_EXP_LEGACY_F32
9327 
9329  {
9330  } // ~Inst_VOP1__V_EXP_LEGACY_F32
9331 
9332  // D.f = pow(2.0, S0.f)
9333  void
9335  {
9336  Wavefront *wf = gpuDynInst->wavefront();
9337  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9338  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9339 
9340  src.readSrc();
9341 
9342  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9343  if (wf->execMask(lane)) {
9344  vdst[lane] = std::pow(2.0, src[lane]);
9345  }
9346  }
9347 
9348  vdst.write();
9349  }
9350 
9352  : Inst_VOP1(iFmt, "v_log_legacy_f32")
9353  {
9354  setFlag(ALU);
9355  setFlag(F32);
9356  } // Inst_VOP1__V_LOG_LEGACY_F32
9357 
9359  {
9360  } // ~Inst_VOP1__V_LOG_LEGACY_F32
9361 
9362  // D.f = log2(S0.f).
9363  void
9365  {
9366  Wavefront *wf = gpuDynInst->wavefront();
9367  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9368  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9369 
9370  src.readSrc();
9371 
9372  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9373  if (wf->execMask(lane)) {
9374  vdst[lane] = std::log2(src[lane]);
9375  }
9376  }
9377 
9378  vdst.write();
9379  }
9380 
9382  : Inst_VOPC(iFmt, "v_cmp_class_f32")
9383  {
9384  setFlag(ALU);
9385  setFlag(F32);
9386  } // Inst_VOPC__V_CMP_CLASS_F32
9387 
9389  {
9390  } // ~Inst_VOPC__V_CMP_CLASS_F32
9391 
9392  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f
9393  // The function reports true if the floating point value is any of the
9394  // numeric types selected in S1.u according to the following list:
9395  // S1.u[0] -- value is a signaling NaN.
9396  // S1.u[1] -- value is a quiet NaN.
9397  // S1.u[2] -- value is negative infinity.
9398  // S1.u[3] -- value is a negative normal value.
9399  // S1.u[4] -- value is a negative denormal value.
9400  // S1.u[5] -- value is negative zero.
9401  // S1.u[6] -- value is positive zero.
9402  // S1.u[7] -- value is a positive denormal value.
9403  // S1.u[8] -- value is a positive normal value.
9404  // S1.u[9] -- value is positive infinity.
9405  void
9407  {
9408  Wavefront *wf = gpuDynInst->wavefront();
9409  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
9410  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
9411  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
9412 
9413  src0.readSrc();
9414  src1.read();
9415 
9416  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9417  if (wf->execMask(lane)) {
9418  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
9419  // is NaN
9420  if (std::isnan(src0[lane])) {
9421  vcc.setBit(lane, 1);
9422  continue;
9423  }
9424  }
9425  if (bits(src1[lane], 2)) {
9426  // is -infinity
9427  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
9428  vcc.setBit(lane, 1);
9429  continue;
9430  }
9431  }
9432  if (bits(src1[lane], 3)) {
9433  // is -normal
9434  if (std::isnormal(src0[lane])
9435  && std::signbit(src0[lane])) {
9436  vcc.setBit(lane, 1);
9437  continue;
9438  }
9439  }
9440  if (bits(src1[lane], 4)) {
9441  // is -denormal
9442  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9443  && std::signbit(src0[lane])) {
9444  vcc.setBit(lane, 1);
9445  continue;
9446  }
9447  }
9448  if (bits(src1[lane], 5)) {
9449  // is -zero
9450  if (std::fpclassify(src0[lane]) == FP_ZERO
9451  && std::signbit(src0[lane])) {
9452  vcc.setBit(lane, 1);
9453  continue;
9454  }
9455  }
9456  if (bits(src1[lane], 6)) {
9457  // is +zero
9458  if (std::fpclassify(src0[lane]) == FP_ZERO
9459  && !std::signbit(src0[lane])) {
9460  vcc.setBit(lane, 1);
9461  continue;
9462  }
9463  }
9464  if (bits(src1[lane], 7)) {
9465  // is +denormal
9466  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9467  && !std::signbit(src0[lane])) {
9468  vcc.setBit(lane, 1);
9469  continue;
9470  }
9471  }
9472  if (bits(src1[lane], 8)) {
9473  // is +normal
9474  if (std::isnormal(src0[lane])
9475  && !std::signbit(src0[lane])) {
9476  vcc.setBit(lane, 1);
9477  continue;
9478  }
9479  }
9480  if (bits(src1[lane], 9)) {
9481  // is +infinity
9482  if (std::isinf(src0[lane]) && !std::signbit(src0[lane])) {
9483  vcc.setBit(lane, 1);
9484  continue;
9485  }
9486  }
9487  }
9488  }
9489 
9490  vcc.write();
9491  }
9492 
9494  : Inst_VOPC(iFmt, "v_cmpx_class_f32")
9495  {
9496  setFlag(ALU);
9497  setFlag(F32);
9498  } // Inst_VOPC__V_CMPX_CLASS_F32
9499 
9501  {
9502  } // ~Inst_VOPC__V_CMPX_CLASS_F32
9503 
9504  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
9505  // S0.f The function reports true if the floating point value is any of
9506  // the numeric types selected in S1.u according to the following list:
9507  // S1.u[0] -- value is a signaling NaN.
9508  // S1.u[1] -- value is a quiet NaN.
9509  // S1.u[2] -- value is negative infinity.
9510  // S1.u[3] -- value is a negative normal value.
9511  // S1.u[4] -- value is a negative denormal value.
9512  // S1.u[5] -- value is negative zero.
9513  // S1.u[6] -- value is positive zero.
9514  // S1.u[7] -- value is a positive denormal value.
9515  // S1.u[8] -- value is a positive normal value.
9516  // S1.u[9] -- value is positive infinity.
9517  void
9519  {
9520  Wavefront *wf = gpuDynInst->wavefront();
9521  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
9522  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
9523  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
9524 
9525  src0.readSrc();
9526  src1.read();
9527 
9528  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9529  if (wf->execMask(lane)) {
9530  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
9531  // is NaN
9532  if (std::isnan(src0[lane])) {
9533  vcc.setBit(lane, 1);
9534  continue;
9535  }
9536  }
9537  if (bits(src1[lane], 2)) {
9538  // is -infinity
9539  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
9540  vcc.setBit(lane, 1);
9541  continue;
9542  }
9543  }
9544  if (bits(src1[lane], 3)) {
9545  // is -normal
9546  if (std::isnormal(src0[lane])
9547  && std::signbit(src0[lane])) {
9548  vcc.setBit(lane, 1);
9549  continue;
9550  }
9551  }
9552  if (bits(src1[lane], 4)) {
9553  // is -denormal
9554  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9555  && std::signbit(src0[lane])) {
9556  vcc.setBit(lane, 1);
9557  continue;
9558  }
9559  }
9560  if (bits(src1[lane], 5)) {
9561  // is -zero
9562  if (std::fpclassify(src0[lane]) == FP_ZERO
9563  && std::signbit(src0[lane])) {
9564  vcc.setBit(lane, 1);
9565  continue;
9566  }
9567  }
9568  if (bits(src1[lane], 6)) {
9569  // is +zero
9570  if (std::fpclassify(src0[lane]) == FP_ZERO
9571  && !std::signbit(src0[lane])) {
9572  vcc.setBit(lane, 1);
9573  continue;
9574  }
9575  }
9576  if (bits(src1[lane], 7)) {
9577  // is +denormal
9578  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9579  && !std::signbit(src0[lane])) {
9580  vcc.setBit(lane, 1);
9581  continue;
9582  }
9583  }
9584  if (bits(src1[lane], 8)) {
9585  // is +normal
9586  if (std::isnormal(src0[lane])
9587  && !std::signbit(src0[lane])) {
9588  vcc.setBit(lane, 1);
9589  continue;
9590  }
9591  }
9592  if (bits(src1[lane], 9)) {
9593  // is +infinity
9594  if (std::isinf(src0[lane]) && !std::signbit(src0[lane])) {
9595  vcc.setBit(lane, 1);
9596  continue;
9597  }
9598  }
9599  }
9600  }
9601 
9602  vcc.write();
9603  wf->execMask() = vcc.rawData();
9604  }
9605 
9607  : Inst_VOPC(iFmt, "v_cmp_class_f64")
9608  {
9609  setFlag(ALU);
9610  setFlag(F64);
9611  } // Inst_VOPC__V_CMP_CLASS_F64
9612 
9614  {
9615  } // ~Inst_VOPC__V_CMP_CLASS_F64
9616 
9617  // VCC = IEEE numeric class function specified in S1.u, performed on S0.d
9618  // The function reports true if the floating point value is any of the
9619  // numeric types selected in S1.u according to the following list:
9620  // S1.u[0] -- value is a signaling NaN.
9621  // S1.u[1] -- value is a quiet NaN.
9622  // S1.u[2] -- value is negative infinity.
9623  // S1.u[3] -- value is a negative normal value.
9624  // S1.u[4] -- value is a negative denormal value.
9625  // S1.u[5] -- value is negative zero.
9626  // S1.u[6] -- value is positive zero.
9627  // S1.u[7] -- value is a positive denormal value.
9628  // S1.u[8] -- value is a positive normal value.
9629  // S1.u[9] -- value is positive infinity.
9630  void
9632  {
9633  Wavefront *wf = gpuDynInst->wavefront();
9634  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
9635  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
9636  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
9637 
9638  src0.readSrc();
9639  src1.read();
9640 
9641  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9642  if (wf->execMask(lane)) {
9643  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
9644  // is NaN
9645  if (std::isnan(src0[lane])) {
9646  vcc.setBit(lane, 1);
9647  continue;
9648  }
9649  }
9650  if (bits(src1[lane], 2)) {
9651  // is -infinity
9652  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
9653  vcc.setBit(lane, 1);
9654  continue;
9655  }
9656  }
9657  if (bits(src1[lane], 3)) {
9658  // is -normal
9659  if (std::isnormal(src0[lane])
9660  && std::signbit(src0[lane])) {
9661  vcc.setBit(lane, 1);
9662  continue;
9663  }
9664  }
9665  if (bits(src1[lane], 4)) {
9666  // is -denormal
9667  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9668  && std::signbit(src0[lane])) {
9669  vcc.setBit(lane, 1);
9670  continue;
9671  }
9672  }
9673  if (bits(src1[lane], 5)) {
9674  // is -zero
9675  if (std::fpclassify(src0[lane]) == FP_ZERO
9676  && std::signbit(src0[lane])) {
9677  vcc.setBit(lane, 1);
9678  continue;
9679  }
9680  }
9681  if (bits(src1[lane], 6)) {
9682  // is +zero
9683  if (std::fpclassify(src0[lane]) == FP_ZERO
9684  && !std::signbit(src0[lane])) {
9685  vcc.setBit(lane, 1);
9686  continue;
9687  }
9688  }
9689  if (bits(src1[lane], 7)) {
9690  // is +denormal
9691  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9692  && !std::signbit(src0[lane])) {
9693  vcc.setBit(lane, 1);
9694  continue;
9695  }
9696  }
9697  if (bits(src1[lane], 8)) {
9698  // is +normal
9699  if (std::isnormal(src0[lane])
9700  && !std::signbit(src0[lane])) {
9701  vcc.setBit(lane, 1);
9702  continue;
9703  }
9704  }
9705  if (bits(src1[lane], 9)) {
9706  // is +infinity
9707  if (std::isinf(src0[lane])
9708  && !std::signbit(src0[lane])) {
9709  vcc.setBit(lane, 1);
9710  continue;
9711  }
9712  }
9713  }
9714  }
9715 
9716  vcc.write();
9717  }
9718 
9720  : Inst_VOPC(iFmt, "v_cmpx_class_f64")
9721  {
9722  setFlag(ALU);
9723  setFlag(F64);
9724  } // Inst_VOPC__V_CMPX_CLASS_F64
9725 
9727  {
9728  } // ~Inst_VOPC__V_CMPX_CLASS_F64
9729 
9730  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
9731  // S0.d The function reports true if the floating point value is any of
9732  // the numeric types selected in S1.u according to the following list:
9733  // S1.u[0] -- value is a signaling NaN.
9734  // S1.u[1] -- value is a quiet NaN.
9735  // S1.u[2] -- value is negative infinity.
9736  // S1.u[3] -- value is a negative normal value.
9737  // S1.u[4] -- value is a negative denormal value.
9738  // S1.u[5] -- value is negative zero.
9739  // S1.u[6] -- value is positive zero.
9740  // S1.u[7] -- value is a positive denormal value.
9741  // S1.u[8] -- value is a positive normal value.
9742  // S1.u[9] -- value is positive infinity.
9743  void
9745  {
9746  Wavefront *wf = gpuDynInst->wavefront();
9747  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
9748  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
9749  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
9750 
9751  src0.readSrc();
9752  src1.read();
9753 
9754  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9755  if (wf->execMask(lane)) {
9756  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
9757  // is NaN
9758  if (std::isnan(src0[lane])) {
9759  vcc.setBit(lane, 1);
9760  continue;
9761  }
9762  }
9763  if (bits(src1[lane], 2)) {
9764  // is -infinity
9765  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
9766  vcc.setBit(lane, 1);
9767  continue;
9768  }
9769  }
9770  if (bits(src1[lane], 3)) {
9771  // is -normal
9772  if (std::isnormal(src0[lane])
9773  && std::signbit(src0[lane])) {
9774  vcc.setBit(lane, 1);
9775  continue;
9776  }
9777  }
9778  if (bits(src1[lane], 4)) {
9779  // is -denormal
9780  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9781  && std::signbit(src0[lane])) {
9782  vcc.setBit(lane, 1);
9783  continue;
9784  }
9785  }
9786  if (bits(src1[lane], 5)) {
9787  // is -zero
9788  if (std::fpclassify(src0[lane]) == FP_ZERO
9789  && std::signbit(src0[lane])) {
9790  vcc.setBit(lane, 1);
9791  continue;
9792  }
9793  }
9794  if (bits(src1[lane], 6)) {
9795  // is +zero
9796  if (std::fpclassify(src0[lane]) == FP_ZERO
9797  && !std::signbit(src0[lane])) {
9798  vcc.setBit(lane, 1);
9799  continue;
9800  }
9801  }
9802  if (bits(src1[lane], 7)) {
9803  // is +denormal
9804  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9805  && !std::signbit(src0[lane])) {
9806  vcc.setBit(lane, 1);
9807  continue;
9808  }
9809  }
9810  if (bits(src1[lane], 8)) {
9811  // is +normal
9812  if (std::isnormal(src0[lane])
9813  && !std::signbit(src0[lane])) {
9814  vcc.setBit(lane, 1);
9815  continue;
9816  }
9817  }
9818  if (bits(src1[lane], 9)) {
9819  // is +infinity
9820  if (std::isinf(src0[lane])
9821  && !std::signbit(src0[lane])) {
9822  vcc.setBit(lane, 1);
9823  continue;
9824  }
9825  }
9826  }
9827  }
9828 
9829  vcc.write();
9830  wf->execMask() = vcc.rawData();
9831  }
9832 
9834  : Inst_VOPC(iFmt, "v_cmp_class_f16")
9835  {
9836  setFlag(ALU);
9837  setFlag(F16);
9838  } // Inst_VOPC__V_CMP_CLASS_F16
9839 
9841  {
9842  } // ~Inst_VOPC__V_CMP_CLASS_F16
9843 
9844  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f16
9845  // The function reports true if the floating point value is any of the
9846  // numeric types selected in S1.u according to the following list:
9847  // S1.u[0] -- value is a signaling NaN.
9848  // S1.u[1] -- value is a quiet NaN.
9849  // S1.u[2] -- value is negative infinity.
9850  // S1.u[3] -- value is a negative normal value.
9851  // S1.u[4] -- value is a negative denormal value.
9852  // S1.u[5] -- value is negative zero.
9853  // S1.u[6] -- value is positive zero.
9854  // S1.u[7] -- value is a positive denormal value.
9855  // S1.u[8] -- value is a positive normal value.
9856  // S1.u[9] -- value is positive infinity.
9857  void
9859  {
9861  }
9862 
9864  : Inst_VOPC(iFmt, "v_cmpx_class_f16")
9865  {
9866  setFlag(ALU);
9867  setFlag(F16);
9868  } // Inst_VOPC__V_CMPX_CLASS_F16
9869 
9871  {
9872  } // ~Inst_VOPC__V_CMPX_CLASS_F16
9873 
9874  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
9875  // S0.f16
9876  // The function reports true if the floating point value is any of the
9877  // numeric types selected in S1.u according to the following list:
9878  // S1.u[0] -- value is a signaling NaN.
9879  // S1.u[1] -- value is a quiet NaN.
9880  // S1.u[2] -- value is negative infinity.
9881  // S1.u[3] -- value is a negative normal value.
9882  // S1.u[4] -- value is a negative denormal value.
9883  // S1.u[5] -- value is negative zero.
9884  // S1.u[6] -- value is positive zero.
9885  // S1.u[7] -- value is a positive denormal value.
9886  // S1.u[8] -- value is a positive normal value.
9887  // S1.u[9] -- value is positive infinity.
9888  void
9890  {
9892  }
9893 
9895  : Inst_VOPC(iFmt, "v_cmp_f_f16")
9896  {
9897  setFlag(ALU);
9898  setFlag(F16);
9899  } // Inst_VOPC__V_CMP_F_F16
9900 
9902  {
9903  } // ~Inst_VOPC__V_CMP_F_F16
9904 
9905  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
9906  void
9908  {
9910  }
9911 
9913  : Inst_VOPC(iFmt, "v_cmp_lt_f16")
9914  {
9915  setFlag(ALU);
9916  setFlag(F16);
9917  } // Inst_VOPC__V_CMP_LT_F16
9918 
9920  {
9921  } // ~Inst_VOPC__V_CMP_LT_F16
9922 
9923  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
9924  void
9926  {
9928  }
9929 
9931  : Inst_VOPC(iFmt, "v_cmp_eq_f16")
9932  {
9933  setFlag(ALU);
9934  setFlag(F16);
9935  } // Inst_VOPC__V_CMP_EQ_F16
9936 
9938  {
9939  } // ~Inst_VOPC__V_CMP_EQ_F16
9940 
9941  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
9942  void
9944  {
9946  }
9947 
9949  : Inst_VOPC(iFmt, "v_cmp_le_f16")
9950  {
9951  setFlag(ALU);
9952  setFlag(F16);
9953  } // Inst_VOPC__V_CMP_LE_F16
9954 
9956  {
9957  } // ~Inst_VOPC__V_CMP_LE_F16
9958 
9959  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
9960  void
9962  {
9964  }
9965 
9967  : Inst_VOPC(iFmt, "v_cmp_gt_f16")
9968  {
9969  setFlag(ALU);
9970  setFlag(F16);
9971  } // Inst_VOPC__V_CMP_GT_F16
9972 
9974  {
9975  } // ~Inst_VOPC__V_CMP_GT_F16
9976 
9977  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
9978  void
9980  {
9982  }
9983 
9985  : Inst_VOPC(iFmt, "v_cmp_lg_f16")
9986  {
9987  setFlag(ALU);
9988  setFlag(F16);
9989  } // Inst_VOPC__V_CMP_LG_F16
9990 
9992  {
9993  } // ~Inst_VOPC__V_CMP_LG_F16
9994 
9995  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
9996  void
9998  {
10000  }
10001 
10003  : Inst_VOPC(iFmt, "v_cmp_ge_f16")
10004  {
10005  setFlag(ALU);
10006  setFlag(F16);
10007  } // Inst_VOPC__V_CMP_GE_F16
10008 
10010  {
10011  } // ~Inst_VOPC__V_CMP_GE_F16
10012 
10013  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
10014  void
10016  {
10018  }
10019 
10021  : Inst_VOPC(iFmt, "v_cmp_o_f16")
10022  {
10023  setFlag(ALU);
10024  setFlag(F16);
10025  } // Inst_VOPC__V_CMP_O_F16
10026 
10028  {
10029  } // ~Inst_VOPC__V_CMP_O_F16
10030 
10031  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
10032  void
10034  {
10036  }
10037 
10039  : Inst_VOPC(iFmt, "v_cmp_u_f16")
10040  {
10041  setFlag(ALU);
10042  setFlag(F16);
10043  } // Inst_VOPC__V_CMP_U_F16
10044 
10046  {
10047  } // ~Inst_VOPC__V_CMP_U_F16
10048 
10049  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
10050  void
10052  {
10054  }
10055 
10057  : Inst_VOPC(iFmt, "v_cmp_nge_f16")
10058  {
10059  setFlag(ALU);
10060  setFlag(F16);
10061  } // Inst_VOPC__V_CMP_NGE_F16
10062 
10064  {
10065  } // ~Inst_VOPC__V_CMP_NGE_F16
10066 
10067  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
10068  void
10070  {
10072  }
10073 
10075  : Inst_VOPC(iFmt, "v_cmp_nlg_f16")
10076  {
10077  setFlag(ALU);
10078  setFlag(F16);
10079  } // Inst_VOPC__V_CMP_NLG_F16
10080 
10082  {
10083  } // ~Inst_VOPC__V_CMP_NLG_F16
10084 
10085  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
10086  void
10088  {
10090  }
10091 
10093  : Inst_VOPC(iFmt, "v_cmp_ngt_f16")
10094  {
10095  setFlag(ALU);
10096  setFlag(F16);
10097  } // Inst_VOPC__V_CMP_NGT_F16
10098 
10100  {
10101  } // ~Inst_VOPC__V_CMP_NGT_F16
10102 
10103  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
10104  void
10106  {
10108  }
10109 
10111  : Inst_VOPC(iFmt, "v_cmp_nle_f16")
10112  {
10113  setFlag(ALU);
10114  setFlag(F16);
10115  } // Inst_VOPC__V_CMP_NLE_F16
10116 
10118  {
10119  } // ~Inst_VOPC__V_CMP_NLE_F16
10120 
10121  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
10122  void
10124  {
10126  }
10127 
10129  : Inst_VOPC(iFmt, "v_cmp_neq_f16")
10130  {
10131  setFlag(ALU);
10132  setFlag(F16);
10133  } // Inst_VOPC__V_CMP_NEQ_F16
10134 
10136  {
10137  } // ~Inst_VOPC__V_CMP_NEQ_F16
10138 
10139  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
10140  void
10142  {
10144  }
10145 
10147  : Inst_VOPC(iFmt, "v_cmp_nlt_f16")
10148  {
10149  setFlag(ALU);
10150  setFlag(F16);
10151  } // Inst_VOPC__V_CMP_NLT_F16
10152 
10154  {
10155  } // ~Inst_VOPC__V_CMP_NLT_F16
10156 
10157  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
10158  void
10160  {
10162  }
10163 
10165  : Inst_VOPC(iFmt, "v_cmp_tru_f16")
10166  {
10167  setFlag(ALU);
10168  setFlag(F16);
10169  } // Inst_VOPC__V_CMP_TRU_F16
10170 
10172  {
10173  } // ~Inst_VOPC__V_CMP_TRU_F16
10174 
10175  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
10176  void
10178  {
10180  }
10181 
10183  : Inst_VOPC(iFmt, "v_cmpx_f_f16")
10184  {
10185  setFlag(ALU);
10186  setFlag(F16);
10187  } // Inst_VOPC__V_CMPX_F_F16
10188 
10190  {
10191  } // ~Inst_VOPC__V_CMPX_F_F16
10192 
10193  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
10194  void
10196  {
10198  }
10199 
10201  : Inst_VOPC(iFmt, "v_cmpx_lt_f16")
10202  {
10203  setFlag(ALU);
10204  setFlag(F16);
10205  } // Inst_VOPC__V_CMPX_LT_F16
10206 
10208  {
10209  } // ~Inst_VOPC__V_CMPX_LT_F16
10210 
10211  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
10212  void
10214  {
10216  }
10217 
10219  : Inst_VOPC(iFmt, "v_cmpx_eq_f16")
10220  {
10221  setFlag(ALU);
10222  setFlag(F16);
10223  } // Inst_VOPC__V_CMPX_EQ_F16
10224 
10226  {
10227  } // ~Inst_VOPC__V_CMPX_EQ_F16
10228 
10229  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
10230  void
10232  {
10234  }
10235 
10237  : Inst_VOPC(iFmt, "v_cmpx_le_f16")
10238  {
10239  setFlag(ALU);
10240  setFlag(F16);
10241  } // Inst_VOPC__V_CMPX_LE_F16
10242 
10244  {
10245  } // ~Inst_VOPC__V_CMPX_LE_F16
10246 
10247  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
10248  void
10250  {
10252  }
10253 
10255  : Inst_VOPC(iFmt, "v_cmpx_gt_f16")
10256  {
10257  setFlag(ALU);
10258  setFlag(F16);
10259  } // Inst_VOPC__V_CMPX_GT_F16
10260 
10262  {
10263  } // ~Inst_VOPC__V_CMPX_GT_F16
10264 
10265  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
10266  void
10268  {
10270  }
10271 
10273  : Inst_VOPC(iFmt, "v_cmpx_lg_f16")
10274  {
10275  setFlag(ALU);
10276  setFlag(F16);
10277  } // Inst_VOPC__V_CMPX_LG_F16
10278 
10280  {
10281  } // ~Inst_VOPC__V_CMPX_LG_F16
10282 
10283  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
10284  void
10286  {
10288  }
10289 
10291  : Inst_VOPC(iFmt, "v_cmpx_ge_f16")
10292  {
10293  setFlag(ALU);
10294  setFlag(F16);
10295  } // Inst_VOPC__V_CMPX_GE_F16
10296 
10298  {
10299  } // ~Inst_VOPC__V_CMPX_GE_F16
10300 
10301  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
10302  void
10304  {
10306  }
10307 
10309  : Inst_VOPC(iFmt, "v_cmpx_o_f16")
10310  {
10311  setFlag(ALU);
10312  setFlag(F16);
10313  } // Inst_VOPC__V_CMPX_O_F16
10314 
10316  {
10317  } // ~Inst_VOPC__V_CMPX_O_F16
10318 
10319  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
10320  // encoding.
10321  void
10323  {
10325  }
10326 
10328  : Inst_VOPC(iFmt, "v_cmpx_u_f16")
10329  {
10330  setFlag(ALU);
10331  setFlag(F16);
10332  } // Inst_VOPC__V_CMPX_U_F16
10333 
10335  {
10336  } // ~Inst_VOPC__V_CMPX_U_F16
10337 
10338  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
10339  // encoding.
10340  void
10342  {
10344  }
10345 
10347  : Inst_VOPC(iFmt, "v_cmpx_nge_f16")
10348  {
10349  setFlag(ALU);
10350  setFlag(F16);
10351  } // Inst_VOPC__V_CMPX_NGE_F16
10352 
10354  {
10355  } // ~Inst_VOPC__V_CMPX_NGE_F16
10356 
10357  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
10358  void
10360  {
10362  }
10363 
10365  : Inst_VOPC(iFmt, "v_cmpx_nlg_f16")
10366  {
10367  setFlag(ALU);
10368  setFlag(F16);
10369  } // Inst_VOPC__V_CMPX_NLG_F16
10370 
10372  {
10373  } // ~Inst_VOPC__V_CMPX_NLG_F16
10374 
10375  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
10376  void
10378  {
10380  }
10381 
10383  : Inst_VOPC(iFmt, "v_cmpx_ngt_f16")
10384  {
10385  setFlag(ALU);
10386  setFlag(F16);
10387  } // Inst_VOPC__V_CMPX_NGT_F16
10388 
10390  {
10391  } // ~Inst_VOPC__V_CMPX_NGT_F16
10392 
10393  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
10394  void
10396  {
10398  }
10399 
10401  : Inst_VOPC(iFmt, "v_cmpx_nle_f16")
10402  {
10403  setFlag(ALU);
10404  setFlag(F16);
10405  } // Inst_VOPC__V_CMPX_NLE_F16
10406 
10408  {
10409  } // ~Inst_VOPC__V_CMPX_NLE_F16
10410 
10411  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
10412  void
10414  {
10416  }
10417 
10419  : Inst_VOPC(iFmt, "v_cmpx_neq_f16")
10420  {
10421  setFlag(ALU);
10422  setFlag(F16);
10423  } // Inst_VOPC__V_CMPX_NEQ_F16
10424 
10426  {
10427  } // ~Inst_VOPC__V_CMPX_NEQ_F16
10428 
10429  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
10430  void
10432  {
10434  }
10435 
10437  : Inst_VOPC(iFmt, "v_cmpx_nlt_f16")
10438  {
10439  setFlag(ALU);
10440  setFlag(F16);
10441  } // Inst_VOPC__V_CMPX_NLT_F16
10442 
10444  {
10445  } // ~Inst_VOPC__V_CMPX_NLT_F16
10446 
10447  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
10448  void
10450  {
10452  }
10453 
10455  : Inst_VOPC(iFmt, "v_cmpx_tru_f16")
10456  {
10457  setFlag(ALU);
10458  setFlag(F16);
10459  } // Inst_VOPC__V_CMPX_TRU_F16
10460 
10462  {
10463  } // ~Inst_VOPC__V_CMPX_TRU_F16
10464 
10465  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
10466  void
10468  {
10470  }
10471 
10473  : Inst_VOPC(iFmt, "v_cmp_f_f32")
10474  {
10475  setFlag(ALU);
10476  setFlag(F32);
10477  } // Inst_VOPC__V_CMP_F_F32
10478 
10480  {
10481  } // ~Inst_VOPC__V_CMP_F_F32
10482 
10483  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
10484  void
10486  {
10487  Wavefront *wf = gpuDynInst->wavefront();
10488  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10489 
10490  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10491  if (wf->execMask(lane)) {
10492  vcc.setBit(lane, 0);
10493  }
10494  }
10495 
10496  vcc.write();
10497  }
10498 
10500  : Inst_VOPC(iFmt, "v_cmp_lt_f32")
10501  {
10502  setFlag(ALU);
10503  setFlag(F32);
10504  } // Inst_VOPC__V_CMP_LT_F32
10505 
10507  {
10508  } // ~Inst_VOPC__V_CMP_LT_F32
10509 
10510  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
10511  void
10513  {
10514  Wavefront *wf = gpuDynInst->wavefront();
10515  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10516  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10517  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10518 
10519  src0.readSrc();
10520  src1.read();
10521 
10522  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10523  if (wf->execMask(lane)) {
10524  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
10525  }
10526  }
10527 
10528  vcc.write();
10529  }
10530 
10532  : Inst_VOPC(iFmt, "v_cmp_eq_f32")
10533  {
10534  setFlag(ALU);
10535  setFlag(F32);
10536  } // Inst_VOPC__V_CMP_EQ_F32
10537 
10539  {
10540  } // ~Inst_VOPC__V_CMP_EQ_F32
10541 
10542  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
10543  void
10545  {
10546  Wavefront *wf = gpuDynInst->wavefront();
10547  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10548  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10549  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10550 
10551  src0.readSrc();
10552  src1.read();
10553 
10554  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10555  if (wf->execMask(lane)) {
10556  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
10557  }
10558  }
10559 
10560  vcc.write();
10561  }
10562 
10564  : Inst_VOPC(iFmt, "v_cmp_le_f32")
10565  {
10566  setFlag(ALU);
10567  setFlag(F32);
10568  } // Inst_VOPC__V_CMP_LE_F32
10569 
10571  {
10572  } // ~Inst_VOPC__V_CMP_LE_F32
10573 
10574  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
10575  void
10577  {
10578  Wavefront *wf = gpuDynInst->wavefront();
10579  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10580  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10581  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10582 
10583  src0.readSrc();
10584  src1.read();
10585 
10586  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10587  if (wf->execMask(lane)) {
10588  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
10589  }
10590  }
10591 
10592  vcc.write();
10593  }
10594 
10596  : Inst_VOPC(iFmt, "v_cmp_gt_f32")
10597  {
10598  setFlag(ALU);
10599  setFlag(F32);
10600  } // Inst_VOPC__V_CMP_GT_F32
10601 
10603  {
10604  } // ~Inst_VOPC__V_CMP_GT_F32
10605 
10606  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
10607  void
10609  {
10610  Wavefront *wf = gpuDynInst->wavefront();
10611  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10612  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10613  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10614 
10615  src0.readSrc();
10616  src1.read();
10617 
10618  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10619  if (wf->execMask(lane)) {
10620  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
10621  }
10622  }
10623 
10624  vcc.write();
10625  }
10626 
10628  : Inst_VOPC(iFmt, "v_cmp_lg_f32")
10629  {
10630  setFlag(ALU);
10631  setFlag(F32);
10632  } // Inst_VOPC__V_CMP_LG_F32
10633 
10635  {
10636  } // ~Inst_VOPC__V_CMP_LG_F32
10637 
10638  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
10639  void
10641  {
10642  Wavefront *wf = gpuDynInst->wavefront();
10643  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10644  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10645  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10646 
10647  src0.readSrc();
10648  src1.read();
10649 
10650  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10651  if (wf->execMask(lane)) {
10652  vcc.setBit(lane, (src0[lane] < src1[lane]
10653  || src0[lane] > src1[lane]) ? 1 : 0);
10654  }
10655  }
10656 
10657  vcc.write();
10658  }
10659 
10661  : Inst_VOPC(iFmt, "v_cmp_ge_f32")
10662  {
10663  setFlag(ALU);
10664  setFlag(F32);
10665  } // Inst_VOPC__V_CMP_GE_F32
10666 
10668  {
10669  } // ~Inst_VOPC__V_CMP_GE_F32
10670 
10671  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
10672  void
10674  {
10675  Wavefront *wf = gpuDynInst->wavefront();
10676  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10677  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10678  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10679 
10680  src0.readSrc();
10681  src1.read();
10682 
10683  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10684  if (wf->execMask(lane)) {
10685  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
10686  }
10687  }
10688 
10689  vcc.write();
10690  }
10691 
10693  : Inst_VOPC(iFmt, "v_cmp_o_f32")
10694  {
10695  setFlag(ALU);
10696  setFlag(F32);
10697  } // Inst_VOPC__V_CMP_O_F32
10698 
10700  {
10701  } // ~Inst_VOPC__V_CMP_O_F32
10702 
10703  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
10704  void
10706  {
10707  Wavefront *wf = gpuDynInst->wavefront();
10708  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10709  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10710  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10711 
10712  src0.readSrc();
10713  src1.read();
10714 
10715  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10716  if (wf->execMask(lane)) {
10717  vcc.setBit(lane, (!std::isnan(src0[lane])
10718  && !std::isnan(src1[lane])) ? 1 : 0);
10719  }
10720  }
10721 
10722  vcc.write();
10723  }
10724 
10726  : Inst_VOPC(iFmt, "v_cmp_u_f32")
10727  {
10728  setFlag(ALU);
10729  setFlag(F32);
10730  } // Inst_VOPC__V_CMP_U_F32
10731 
10733  {
10734  } // ~Inst_VOPC__V_CMP_U_F32
10735 
10736  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
10737  void
10739  {
10740  Wavefront *wf = gpuDynInst->wavefront();
10741  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10742  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10743  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10744 
10745  src0.readSrc();
10746  src1.read();
10747 
10748  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10749  if (wf->execMask(lane)) {
10750  vcc.setBit(lane, (std::isnan(src0[lane])
10751  || std::isnan(src1[lane])) ? 1 : 0);
10752  }
10753  }
10754 
10755  vcc.write();
10756  }
10757 
10759  : Inst_VOPC(iFmt, "v_cmp_nge_f32")
10760  {
10761  setFlag(ALU);
10762  setFlag(F32);
10763  } // Inst_VOPC__V_CMP_NGE_F32
10764 
10766  {
10767  } // ~Inst_VOPC__V_CMP_NGE_F32
10768 
10769  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
10770  void
10772  {
10773  Wavefront *wf = gpuDynInst->wavefront();
10774  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10775  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10776  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10777 
10778  src0.readSrc();
10779  src1.read();
10780 
10781  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10782  if (wf->execMask(lane)) {
10783  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
10784  }
10785  }
10786 
10787  vcc.write();
10788  }
10789 
10791  : Inst_VOPC(iFmt, "v_cmp_nlg_f32")
10792  {
10793  setFlag(ALU);
10794  setFlag(F32);
10795  } // Inst_VOPC__V_CMP_NLG_F32
10796 
10798  {
10799  } // ~Inst_VOPC__V_CMP_NLG_F32
10800 
10801  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
10802  void
10804  {
10805  Wavefront *wf = gpuDynInst->wavefront();
10806  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10807  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10808  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10809 
10810  src0.readSrc();
10811  src1.read();
10812 
10813  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10814  if (wf->execMask(lane)) {
10815  vcc.setBit(lane, !(src0[lane] < src1[lane]
10816  || src0[lane] > src1[lane]) ? 1 : 0);
10817  }
10818  }
10819 
10820  vcc.write();
10821  }
10822 
10824  : Inst_VOPC(iFmt, "v_cmp_ngt_f32")
10825  {
10826  setFlag(ALU);
10827  setFlag(F32);
10828  } // Inst_VOPC__V_CMP_NGT_F32
10829 
10831  {
10832  } // ~Inst_VOPC__V_CMP_NGT_F32
10833 
10834  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
10835  void
10837  {
10838  Wavefront *wf = gpuDynInst->wavefront();
10839  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10840  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10841  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10842 
10843  src0.readSrc();
10844  src1.read();
10845 
10846  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10847  if (wf->execMask(lane)) {
10848  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
10849  }
10850  }
10851 
10852  vcc.write();
10853  }
10854 
10856  : Inst_VOPC(iFmt, "v_cmp_nle_f32")
10857  {
10858  setFlag(ALU);
10859  setFlag(F32);
10860  } // Inst_VOPC__V_CMP_NLE_F32
10861 
10863  {
10864  } // ~Inst_VOPC__V_CMP_NLE_F32
10865 
10866  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
10867  void
10869  {
10870  Wavefront *wf = gpuDynInst->wavefront();
10871  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10872  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10873  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10874 
10875  src0.readSrc();
10876  src1.read();
10877 
10878  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10879  if (wf->execMask(lane)) {
10880  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
10881  }
10882  }
10883 
10884  vcc.write();
10885  }
10886 
10888  : Inst_VOPC(iFmt, "v_cmp_neq_f32")
10889  {
10890  setFlag(ALU);
10891  setFlag(F32);
10892  } // Inst_VOPC__V_CMP_NEQ_F32
10893 
10895  {
10896  } // ~Inst_VOPC__V_CMP_NEQ_F32
10897 
10898  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
10899  void
10901  {
10902  Wavefront *wf = gpuDynInst->wavefront();
10903  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10904  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10905  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10906 
10907  src0.readSrc();
10908  src1.read();
10909 
10910  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10911  if (wf->execMask(lane)) {
10912  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
10913  }
10914  }
10915 
10916  vcc.write();
10917  }
10918 
10920  : Inst_VOPC(iFmt, "v_cmp_nlt_f32")
10921  {
10922  setFlag(ALU);
10923  setFlag(F32);
10924  } // Inst_VOPC__V_CMP_NLT_F32
10925 
10927  {
10928  } // ~Inst_VOPC__V_CMP_NLT_F32
10929 
10930  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
10931  void
10933  {
10934  Wavefront *wf = gpuDynInst->wavefront();
10935  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10936  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10937  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10938 
10939  src0.readSrc();
10940  src1.read();
10941 
10942  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10943  if (wf->execMask(lane)) {
10944  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
10945  }
10946  }
10947 
10948  vcc.write();
10949  }
10950 
10952  : Inst_VOPC(iFmt, "v_cmp_tru_f32")
10953  {
10954  setFlag(ALU);
10955  setFlag(F32);
10956  } // Inst_VOPC__V_CMP_TRU_F32
10957 
10959  {
10960  } // ~Inst_VOPC__V_CMP_TRU_F32
10961 
10962  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
10963  void
10965  {
10966  Wavefront *wf = gpuDynInst->wavefront();
10967  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10968 
10969  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10970  if (wf->execMask(lane)) {
10971  vcc.setBit(lane, 1);
10972  }
10973  }
10974 
10975  vcc.write();
10976  }
10977 
10979  : Inst_VOPC(iFmt, "v_cmpx_f_f32")
10980  {
10981  setFlag(ALU);
10982  setFlag(F32);
10983  } // Inst_VOPC__V_CMPX_F_F32
10984 
10986  {
10987  } // ~Inst_VOPC__V_CMPX_F_F32
10988 
10989  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
10990  void
10992  {
10993  Wavefront *wf = gpuDynInst->wavefront();
10994  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10995 
10996  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10997  if (wf->execMask(lane)) {
10998  vcc.setBit(lane, 0);
10999  }
11000  }
11001 
11002  vcc.write();
11003  wf->execMask() = vcc.rawData();
11004  }
11005 
11007  : Inst_VOPC(iFmt, "v_cmpx_lt_f32")
11008  {
11009  setFlag(ALU);
11010  setFlag(F32);
11011  } // Inst_VOPC__V_CMPX_LT_F32
11012 
11014  {
11015  } // ~Inst_VOPC__V_CMPX_LT_F32
11016 
11017  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
11018  void
11020  {
11021  Wavefront *wf = gpuDynInst->wavefront();
11022  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11023  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11024  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11025 
11026  src0.readSrc();
11027  src1.read();
11028 
11029  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11030  if (wf->execMask(lane)) {
11031  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
11032  }
11033  }
11034 
11035  vcc.write();
11036  wf->execMask() = vcc.rawData();
11037  }
11038 
11040  : Inst_VOPC(iFmt, "v_cmpx_eq_f32")
11041  {
11042  setFlag(ALU);
11043  setFlag(F32);
11044  } // Inst_VOPC__V_CMPX_EQ_F32
11045 
11047  {
11048  } // ~Inst_VOPC__V_CMPX_EQ_F32
11049 
11050  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
11051  void
11053  {
11054  Wavefront *wf = gpuDynInst->wavefront();
11055  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11056  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11057  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11058 
11059  src0.readSrc();
11060  src1.read();
11061 
11062  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11063  if (wf->execMask(lane)) {
11064  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
11065  }
11066  }
11067 
11068  vcc.write();
11069  wf->execMask() = vcc.rawData();
11070  }
11071 
11073  : Inst_VOPC(iFmt, "v_cmpx_le_f32")
11074  {
11075  setFlag(ALU);
11076  setFlag(F32);
11077  } // Inst_VOPC__V_CMPX_LE_F32
11078 
11080  {
11081  } // ~Inst_VOPC__V_CMPX_LE_F32
11082 
11083  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
11084  void
11086  {
11087  Wavefront *wf = gpuDynInst->wavefront();
11088  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11089  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11090  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11091 
11092  src0.readSrc();
11093  src1.read();
11094 
11095  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11096  if (wf->execMask(lane)) {
11097  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
11098  }
11099  }
11100 
11101  vcc.write();
11102  wf->execMask() = vcc.rawData();
11103  }
11104 
11106  : Inst_VOPC(iFmt, "v_cmpx_gt_f32")
11107  {
11108  setFlag(ALU);
11109  setFlag(F32);
11110  } // Inst_VOPC__V_CMPX_GT_F32
11111 
11113  {
11114  } // ~Inst_VOPC__V_CMPX_GT_F32
11115 
11116  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
11117  void
11119  {
11120  Wavefront *wf = gpuDynInst->wavefront();
11121  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11122  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11123  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11124 
11125  src0.readSrc();
11126  src1.read();
11127 
11128  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11129  if (wf->execMask(lane)) {
11130  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
11131  }
11132  }
11133 
11134  vcc.write();
11135  wf->execMask() = vcc.rawData();
11136  }
11137 
11139  : Inst_VOPC(iFmt, "v_cmpx_lg_f32")
11140  {
11141  setFlag(ALU);
11142  setFlag(F32);
11143  } // Inst_VOPC__V_CMPX_LG_F32
11144 
11146  {
11147  } // ~Inst_VOPC__V_CMPX_LG_F32
11148 
11149  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
11150  void
11152  {
11153  Wavefront *wf = gpuDynInst->wavefront();
11154  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11155  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11156  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11157 
11158  src0.readSrc();
11159  src1.read();
11160 
11161  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11162  if (wf->execMask(lane)) {
11163  vcc.setBit(lane, (src0[lane] < src1[lane]
11164  || src0[lane] > src1[lane]) ? 1 : 0);
11165  }
11166  }
11167 
11168  vcc.write();
11169  wf->execMask() = vcc.rawData();
11170  }
11171 
11173  : Inst_VOPC(iFmt, "v_cmpx_ge_f32")
11174  {
11175  setFlag(ALU);
11176  setFlag(F32);
11177  } // Inst_VOPC__V_CMPX_GE_F32
11178 
11180  {
11181  } // ~Inst_VOPC__V_CMPX_GE_F32
11182 
11183  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
11184  void
11186  {
11187  Wavefront *wf = gpuDynInst->wavefront();
11188  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11189  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11190  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11191 
11192  src0.readSrc();
11193  src1.read();
11194 
11195  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11196  if (wf->execMask(lane)) {
11197  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
11198  }
11199  }
11200 
11201  vcc.write();
11202  wf->execMask() = vcc.rawData();
11203  }
11204 
11206  : Inst_VOPC(iFmt, "v_cmpx_o_f32")
11207  {
11208  setFlag(ALU);
11209  setFlag(F32);
11210  } // Inst_VOPC__V_CMPX_O_F32
11211 
11213  {
11214  } // ~Inst_VOPC__V_CMPX_O_F32
11215 
11216  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
11217  // encoding.
11218  void
11220  {
11221  Wavefront *wf = gpuDynInst->wavefront();
11222  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11223  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11224  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11225 
11226  src0.readSrc();
11227  src1.read();
11228 
11229  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11230  if (wf->execMask(lane)) {
11231  vcc.setBit(lane, (!std::isnan(src0[lane])
11232  && !std::isnan(src1[lane])) ? 1 : 0);
11233  }
11234  }
11235 
11236  vcc.write();
11237  wf->execMask() = vcc.rawData();
11238  }
11239 
11241  : Inst_VOPC(iFmt, "v_cmpx_u_f32")
11242  {
11243  setFlag(ALU);
11244  setFlag(F32);
11245  } // Inst_VOPC__V_CMPX_U_F32
11246 
11248  {
11249  } // ~Inst_VOPC__V_CMPX_U_F32
11250 
11251  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
11252  // encoding.
11253  void
11255  {
11256  Wavefront *wf = gpuDynInst->wavefront();
11257  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11258  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11259  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11260 
11261  src0.readSrc();
11262  src1.read();
11263 
11264  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11265  if (wf->execMask(lane)) {
11266  vcc.setBit(lane, (std::isnan(src0[lane])
11267  || std::isnan(src1[lane])) ? 1 : 0);
11268  }
11269  }
11270 
11271  vcc.write();
11272  wf->execMask() = vcc.rawData();
11273  }
11274 
11276  : Inst_VOPC(iFmt, "v_cmpx_nge_f32")
11277  {
11278  setFlag(ALU);
11279  setFlag(F32);
11280  } // Inst_VOPC__V_CMPX_NGE_F32
11281 
11283  {
11284  } // ~Inst_VOPC__V_CMPX_NGE_F32
11285 
11286  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
11287  void
11289  {
11290  Wavefront *wf = gpuDynInst->wavefront();
11291  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11292  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11293  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11294 
11295  src0.readSrc();
11296  src1.read();
11297 
11298  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11299  if (wf->execMask(lane)) {
11300  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
11301  }
11302  }
11303 
11304  vcc.write();
11305  wf->execMask() = vcc.rawData();
11306  }
11307 
11309  : Inst_VOPC(iFmt, "v_cmpx_nlg_f32")
11310  {
11311  setFlag(ALU);
11312  setFlag(F32);
11313  } // Inst_VOPC__V_CMPX_NLG_F32
11314 
11316  {
11317  } // ~Inst_VOPC__V_CMPX_NLG_F32
11318 
11319  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
11320  void
11322  {
11323  Wavefront *wf = gpuDynInst->wavefront();
11324  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11325  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11326  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11327 
11328  src0.readSrc();
11329  src1.read();
11330 
11331  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11332  if (wf->execMask(lane)) {
11333  vcc.setBit(lane, !(src0[lane] < src1[lane]
11334  || src0[lane] > src1[lane]) ? 1 : 0);
11335  }
11336  }
11337 
11338  vcc.write();
11339  wf->execMask() = vcc.rawData();
11340  }
11341 
11343  : Inst_VOPC(iFmt, "v_cmpx_ngt_f32")
11344  {
11345  setFlag(ALU);
11346  setFlag(F32);
11347  } // Inst_VOPC__V_CMPX_NGT_F32
11348 
11350  {
11351  } // ~Inst_VOPC__V_CMPX_NGT_F32
11352 
11353  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
11354  void
11356  {
11357  Wavefront *wf = gpuDynInst->wavefront();
11358  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11359  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11360  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11361 
11362  src0.readSrc();
11363  src1.read();
11364 
11365  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11366  if (wf->execMask(lane)) {
11367  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
11368  }
11369  }
11370 
11371  vcc.write();
11372  wf->execMask() = vcc.rawData();
11373  }
11374 
11376  : Inst_VOPC(iFmt, "v_cmpx_nle_f32")
11377  {
11378  setFlag(ALU);
11379  setFlag(F32);
11380  } // Inst_VOPC__V_CMPX_NLE_F32
11381 
11383  {
11384  } // ~Inst_VOPC__V_CMPX_NLE_F32
11385 
11386  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
11387  void
11389  {
11390  Wavefront *wf = gpuDynInst->wavefront();
11391  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11392  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11393  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11394 
11395  src0.readSrc();
11396  src1.read();
11397 
11398  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11399  if (wf->execMask(lane)) {
11400  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
11401  }
11402  }
11403 
11404  vcc.write();
11405  wf->execMask() = vcc.rawData();
11406  }
11407 
11409  : Inst_VOPC(iFmt, "v_cmpx_neq_f32")
11410  {
11411  setFlag(ALU);
11412  setFlag(F32);
11413  } // Inst_VOPC__V_CMPX_NEQ_F32
11414 
11416  {
11417  } // ~Inst_VOPC__V_CMPX_NEQ_F32
11418 
11419  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
11420  void
11422  {
11423  Wavefront *wf = gpuDynInst->wavefront();
11424  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11425  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11426  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11427 
11428  src0.readSrc();
11429  src1.read();
11430 
11431  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11432  if (wf->execMask(lane)) {
11433  vcc.setBit(lane, !(src0[lane] == src1[lane]) ? 1 : 0);
11434  }
11435  }
11436 
11437  vcc.write();
11438  }
11439 
11441  : Inst_VOPC(iFmt, "v_cmpx_nlt_f32")
11442  {
11443  setFlag(ALU);
11444  setFlag(F32);
11445  } // Inst_VOPC__V_CMPX_NLT_F32
11446 
11448  {
11449  } // ~Inst_VOPC__V_CMPX_NLT_F32
11450 
11451  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
11452  void
11454  {
11455  Wavefront *wf = gpuDynInst->wavefront();
11456  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11457  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11458  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11459 
11460  src0.readSrc();
11461  src1.read();
11462 
11463  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11464  if (wf->execMask(lane)) {
11465  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
11466  }
11467  }
11468 
11469  vcc.write();
11470  wf->execMask() = vcc.rawData();
11471  }
11472 
11474  : Inst_VOPC(iFmt, "v_cmpx_tru_f32")
11475  {
11476  setFlag(ALU);
11477  setFlag(F32);
11478  } // Inst_VOPC__V_CMPX_TRU_F32
11479 
11481  {
11482  } // ~Inst_VOPC__V_CMPX_TRU_F32
11483 
11484  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
11485  void
11487  {
11488  Wavefront *wf = gpuDynInst->wavefront();
11489  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11490 
11491  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11492  if (wf->execMask(lane)) {
11493  vcc.setBit(lane, 1);
11494  }
11495  }
11496 
11497  vcc.write();
11498  wf->execMask() = vcc.rawData();
11499  }
11500 
11502  : Inst_VOPC(iFmt, "v_cmp_f_f64")
11503  {
11504  setFlag(ALU);
11505  setFlag(F64);
11506  } // Inst_VOPC__V_CMP_F_F64
11507 
11509  {
11510  } // ~Inst_VOPC__V_CMP_F_F64
11511 
11512  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
11513  void
11515  {
11516  Wavefront *wf = gpuDynInst->wavefront();
11517  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11518 
11519  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11520  if (wf->execMask(lane)) {
11521  vcc.setBit(lane, 0);
11522  }
11523  }
11524 
11525  vcc.write();
11526  }
11527 
11529  : Inst_VOPC(iFmt, "v_cmp_lt_f64")
11530  {
11531  setFlag(ALU);
11532  setFlag(F64);
11533  } // Inst_VOPC__V_CMP_LT_F64
11534 
11536  {
11537  } // ~Inst_VOPC__V_CMP_LT_F64
11538 
11539  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
11540  void
11542  {
11543  Wavefront *wf = gpuDynInst->wavefront();
11544  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11545  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11546  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11547 
11548  src0.readSrc();
11549  src1.read();
11550 
11551  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11552  if (wf->execMask(lane)) {
11553  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
11554  }
11555  }
11556 
11557  vcc.write();
11558  }
11559 
11561  : Inst_VOPC(iFmt, "v_cmp_eq_f64")
11562  {
11563  setFlag(ALU);
11564  setFlag(F64);
11565  } // Inst_VOPC__V_CMP_EQ_F64
11566 
11568  {
11569  } // ~Inst_VOPC__V_CMP_EQ_F64
11570 
11571  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
11572  void
11574  {
11575  Wavefront *wf = gpuDynInst->wavefront();
11576  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11577  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11578  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11579 
11580  src0.readSrc();
11581  src1.read();
11582 
11583  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11584  if (wf->execMask(lane)) {
11585  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
11586  }
11587  }
11588 
11589  vcc.write();
11590  }
11591 
11593  : Inst_VOPC(iFmt, "v_cmp_le_f64")
11594  {
11595  setFlag(ALU);
11596  setFlag(F64);
11597  } // Inst_VOPC__V_CMP_LE_F64
11598 
11600  {
11601  } // ~Inst_VOPC__V_CMP_LE_F64
11602 
11603  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
11604  void
11606  {
11607  Wavefront *wf = gpuDynInst->wavefront();
11608  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11609  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11610  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11611 
11612  src0.readSrc();
11613  src1.read();
11614 
11615  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11616  if (wf->execMask(lane)) {
11617  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
11618  }
11619  }
11620 
11621  vcc.write();
11622  }
11623 
11625  : Inst_VOPC(iFmt, "v_cmp_gt_f64")
11626  {
11627  setFlag(ALU);
11628  setFlag(F64);
11629  } // Inst_VOPC__V_CMP_GT_F64
11630 
11632  {
11633  } // ~Inst_VOPC__V_CMP_GT_F64
11634 
11635  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
11636  void
11638  {
11639  Wavefront *wf = gpuDynInst->wavefront();
11640  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11641  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11642  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11643 
11644  src0.readSrc();
11645  src1.read();
11646 
11647  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11648  if (wf->execMask(lane)) {
11649  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
11650  }
11651  }
11652 
11653  vcc.write();
11654  }
11655 
11657  : Inst_VOPC(iFmt, "v_cmp_lg_f64")
11658  {
11659  setFlag(ALU);
11660  setFlag(F64);
11661  } // Inst_VOPC__V_CMP_LG_F64
11662 
11664  {
11665  } // ~Inst_VOPC__V_CMP_LG_F64
11666 
11667  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
11668  void
11670  {
11671  Wavefront *wf = gpuDynInst->wavefront();
11672  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11673  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11674  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11675 
11676  src0.readSrc();
11677  src1.read();
11678 
11679  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11680  if (wf->execMask(lane)) {
11681  vcc.setBit(lane, (src0[lane] < src1[lane]
11682  || src0[lane] > src1[lane]) ? 1 : 0);
11683  }
11684  }
11685 
11686  vcc.write();
11687  }
11688 
11690  : Inst_VOPC(iFmt, "v_cmp_ge_f64")
11691  {
11692  setFlag(ALU);
11693  setFlag(F64);
11694  } // Inst_VOPC__V_CMP_GE_F64
11695 
11697  {
11698  } // ~Inst_VOPC__V_CMP_GE_F64
11699 
11700  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
11701  void
11703  {
11704  Wavefront *wf = gpuDynInst->wavefront();
11705  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11706  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11707  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11708 
11709  src0.readSrc();
11710  src1.read();
11711 
11712  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11713  if (wf->execMask(lane)) {
11714  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
11715  }
11716  }
11717 
11718  vcc.write();
11719  }
11720 
11722  : Inst_VOPC(iFmt, "v_cmp_o_f64")
11723  {
11724  setFlag(ALU);
11725  setFlag(F64);
11726  } // Inst_VOPC__V_CMP_O_F64
11727 
11729  {
11730  } // ~Inst_VOPC__V_CMP_O_F64
11731 
11732  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
11733  void
11735  {
11736  Wavefront *wf = gpuDynInst->wavefront();
11737  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11738  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11739  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11740 
11741  src0.readSrc();
11742  src1.read();
11743 
11744  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11745  if (wf->execMask(lane)) {
11746  vcc.setBit(lane, (!std::isnan(src0[lane])
11747  && !std::isnan(src1[lane])) ? 1 : 0);
11748  }
11749  }
11750 
11751  vcc.write();
11752  }
11753 
11755  : Inst_VOPC(iFmt, "v_cmp_u_f64")
11756  {
11757  setFlag(ALU);
11758  setFlag(F64);
11759  } // Inst_VOPC__V_CMP_U_F64
11760 
11762  {
11763  } // ~Inst_VOPC__V_CMP_U_F64
11764 
11765  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
11766  void
11768  {
11769  Wavefront *wf = gpuDynInst->wavefront();
11770  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11771  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11772  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11773 
11774  src0.readSrc();
11775  src1.read();
11776 
11777  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11778  if (wf->execMask(lane)) {
11779  vcc.setBit(lane, (std::isnan(src0[lane])
11780  || std::isnan(src1[lane])) ? 1 : 0);
11781  }
11782  }
11783 
11784  vcc.write();
11785  }
11786 
11788  : Inst_VOPC(iFmt, "v_cmp_nge_f64")
11789  {
11790  setFlag(ALU);
11791  setFlag(F64);
11792  } // Inst_VOPC__V_CMP_NGE_F64
11793 
11795  {
11796  } // ~Inst_VOPC__V_CMP_NGE_F64
11797 
11798  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
11799  void
11801  {
11802  Wavefront *wf = gpuDynInst->wavefront();
11803  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11804  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11805  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11806 
11807  src0.readSrc();
11808  src1.read();
11809 
11810  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11811  if (wf->execMask(lane)) {
11812  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
11813  }
11814  }
11815 
11816  vcc.write();
11817  }
11818 
11820  : Inst_VOPC(iFmt, "v_cmp_nlg_f64")
11821  {
11822  setFlag(ALU);
11823  setFlag(F64);
11824  } // Inst_VOPC__V_CMP_NLG_F64
11825 
11827  {
11828  } // ~Inst_VOPC__V_CMP_NLG_F64
11829 
11830  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
11831  void
11833  {
11834  Wavefront *wf = gpuDynInst->wavefront();
11835  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11836  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11837  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11838 
11839  src0.readSrc();
11840  src1.read();
11841 
11842  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11843  if (wf->execMask(lane)) {
11844  vcc.setBit(lane, !(src0[lane] < src1[lane]
11845  || src0[lane] > src1[lane]) ? 1 : 0);
11846  }
11847  }
11848 
11849  vcc.write();
11850  }
11851 
11853  : Inst_VOPC(iFmt, "v_cmp_ngt_f64")
11854  {
11855  setFlag(ALU);
11856  setFlag(F64);
11857  } // Inst_VOPC__V_CMP_NGT_F64
11858 
11860  {
11861  } // ~Inst_VOPC__V_CMP_NGT_F64
11862 
11863  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
11864  void
11866  {
11867  Wavefront *wf = gpuDynInst->wavefront();
11868  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11869  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11870  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11871 
11872  src0.readSrc();
11873  src1.read();
11874 
11875  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11876  if (wf->execMask(lane)) {
11877  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
11878  }
11879  }
11880 
11881  vcc.write();
11882  }
11883 
11885  : Inst_VOPC(iFmt, "v_cmp_nle_f64")
11886  {
11887  setFlag(ALU);
11888  setFlag(F64);
11889  } // Inst_VOPC__V_CMP_NLE_F64
11890 
11892  {
11893  } // ~Inst_VOPC__V_CMP_NLE_F64
11894 
11895  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
11896  void
11898  {
11899  Wavefront *wf = gpuDynInst->wavefront();
11900  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11901  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11902  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11903 
11904  src0.readSrc();
11905  src1.read();
11906 
11907  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11908  if (wf->execMask(lane)) {
11909  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
11910  }
11911  }
11912 
11913  vcc.write();
11914  }
11915 
11917  : Inst_VOPC(iFmt, "v_cmp_neq_f64")
11918  {
11919  setFlag(ALU);
11920  setFlag(F64);
11921  } // Inst_VOPC__V_CMP_NEQ_F64
11922 
11924  {
11925  } // ~Inst_VOPC__V_CMP_NEQ_F64
11926 
11927  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
11928  void
11930  {
11931  Wavefront *wf = gpuDynInst->wavefront();
11932  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11933  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11934  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11935 
11936  src0.readSrc();
11937  src1.read();
11938 
11939  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11940  if (wf->execMask(lane)) {
11941  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
11942  }
11943  }
11944 
11945  vcc.write();
11946  }
11947 
11949  : Inst_VOPC(iFmt, "v_cmp_nlt_f64")
11950  {
11951  setFlag(ALU);
11952  setFlag(F64);
11953  } // Inst_VOPC__V_CMP_NLT_F64
11954 
11956  {
11957  } // ~Inst_VOPC__V_CMP_NLT_F64
11958 
11959  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
11960  void
11962  {
11963  Wavefront *wf = gpuDynInst->wavefront();
11964  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11965  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11966  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11967 
11968  src0.readSrc();
11969  src1.read();
11970 
11971  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11972  if (wf->execMask(lane)) {
11973  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
11974  }
11975  }
11976 
11977  vcc.write();
11978  }
11979 
11981  : Inst_VOPC(iFmt, "v_cmp_tru_f64")
11982  {
11983  setFlag(ALU);
11984  setFlag(F64);
11985  } // Inst_VOPC__V_CMP_TRU_F64
11986 
11988  {
11989  } // ~Inst_VOPC__V_CMP_TRU_F64
11990 
11991  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
11992  void
11994  {
11995  Wavefront *wf = gpuDynInst->wavefront();
11996  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11997 
11998  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11999  if (wf->execMask(lane)) {
12000  vcc.setBit(lane, 1);
12001  }
12002  }
12003 
12004  vcc.write();
12005  }
12006 
12008  : Inst_VOPC(iFmt, "v_cmpx_f_f64")
12009  {
12010  setFlag(ALU);
12011  setFlag(F64);
12012  } // Inst_VOPC__V_CMPX_F_F64
12013 
12015  {
12016  } // ~Inst_VOPC__V_CMPX_F_F64
12017 
12018  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
12019  void
12021  {
12022  Wavefront *wf = gpuDynInst->wavefront();
12023  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12024 
12025  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12026  if (wf->execMask(lane)) {
12027  vcc.setBit(lane, 0);
12028  }
12029  }
12030 
12031  vcc.write();
12032  wf->execMask() = vcc.rawData();
12033  }
12034 
12036  : Inst_VOPC(iFmt, "v_cmpx_lt_f64")
12037  {
12038  setFlag(ALU);
12039  setFlag(F64);
12040  } // Inst_VOPC__V_CMPX_LT_F64
12041 
12043  {
12044  } // ~Inst_VOPC__V_CMPX_LT_F64
12045 
12046  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
12047  void
12049  {
12050  Wavefront *wf = gpuDynInst->wavefront();
12051  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12052  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12053  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12054 
12055  src0.readSrc();
12056  src1.read();
12057 
12058  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12059  if (wf->execMask(lane)) {
12060  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
12061  }
12062  }
12063 
12064  vcc.write();
12065  wf->execMask() = vcc.rawData();
12066  }
12067 
12069  : Inst_VOPC(iFmt, "v_cmpx_eq_f64")
12070  {
12071  setFlag(ALU);
12072  setFlag(F64);
12073  } // Inst_VOPC__V_CMPX_EQ_F64
12074 
12076  {
12077  } // ~Inst_VOPC__V_CMPX_EQ_F64
12078 
12079  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
12080  void
12082  {
12083  Wavefront *wf = gpuDynInst->wavefront();
12084  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12085  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12086  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12087 
12088  src0.readSrc();
12089  src1.read();
12090 
12091  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12092  if (wf->execMask(lane)) {
12093  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
12094  }
12095  }
12096 
12097  vcc.write();
12098  wf->execMask() = vcc.rawData();
12099  }
12100 
12102  : Inst_VOPC(iFmt, "v_cmpx_le_f64")
12103  {
12104  setFlag(ALU);
12105  setFlag(F64);
12106  } // Inst_VOPC__V_CMPX_LE_F64
12107 
12109  {
12110  } // ~Inst_VOPC__V_CMPX_LE_F64
12111 
12112  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
12113  void
12115  {
12116  Wavefront *wf = gpuDynInst->wavefront();
12117  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12118  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12119  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12120 
12121  src0.readSrc();
12122  src1.read();
12123 
12124  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12125  if (wf->execMask(lane)) {
12126  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
12127  }
12128  }
12129 
12130  wf->execMask() = vcc.rawData();
12131  vcc.write();
12132  }
12133 
12135  : Inst_VOPC(iFmt, "v_cmpx_gt_f64")
12136  {
12137  setFlag(ALU);
12138  setFlag(F64);
12139  } // Inst_VOPC__V_CMPX_GT_F64
12140 
12142  {
12143  } // ~Inst_VOPC__V_CMPX_GT_F64
12144 
12145  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
12146  void
12148  {
12149  Wavefront *wf = gpuDynInst->wavefront();
12150  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12151  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12152  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12153 
12154  src0.readSrc();
12155  src1.read();
12156 
12157  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12158  if (wf->execMask(lane)) {
12159  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
12160  }
12161  }
12162 
12163  wf->execMask() = vcc.rawData();
12164  vcc.write();
12165  }
12166 
12168  : Inst_VOPC(iFmt, "v_cmpx_lg_f64")
12169  {
12170  setFlag(ALU);
12171  setFlag(F64);
12172  } // Inst_VOPC__V_CMPX_LG_F64
12173 
12175  {
12176  } // ~Inst_VOPC__V_CMPX_LG_F64
12177 
12178  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
12179  void
12181  {
12182  Wavefront *wf = gpuDynInst->wavefront();
12183  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12184  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12185  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12186 
12187  src0.readSrc();
12188  src1.read();
12189 
12190  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12191  if (wf->execMask(lane)) {
12192  vcc.setBit(lane, (src0[lane] < src1[lane]
12193  || src0[lane] > src1[lane]) ? 1 : 0);
12194  }
12195  }
12196 
12197  wf->execMask() = vcc.rawData();
12198  vcc.write();
12199  }
12200 
12202  : Inst_VOPC(iFmt, "v_cmpx_ge_f64")
12203  {
12204  setFlag(ALU);
12205  setFlag(F64);
12206  } // Inst_VOPC__V_CMPX_GE_F64
12207 
12209  {
12210  } // ~Inst_VOPC__V_CMPX_GE_F64
12211 
12212  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
12213  void
12215  {
12216  Wavefront *wf = gpuDynInst->wavefront();
12217  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12218  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12219  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12220 
12221  src0.readSrc();
12222  src1.read();
12223 
12224  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12225  if (wf->execMask(lane)) {
12226  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
12227  }
12228  }
12229 
12230  wf->execMask() = vcc.rawData();
12231  vcc.write();
12232  }
12233 
12235  : Inst_VOPC(iFmt, "v_cmpx_o_f64")
12236  {
12237  setFlag(ALU);
12238  setFlag(F64);
12239  } // Inst_VOPC__V_CMPX_O_F64
12240 
12242  {
12243  } // ~Inst_VOPC__V_CMPX_O_F64
12244 
12245  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
12246  // encoding.
12247  void
12249  {
12250  Wavefront *wf = gpuDynInst->wavefront();
12251  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12252  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12253  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12254 
12255  src0.readSrc();
12256  src1.read();
12257 
12258  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12259  if (wf->execMask(lane)) {
12260  vcc.setBit(lane, (!std::isnan(src0[lane])
12261  && !std::isnan(src1[lane])) ? 1 : 0);
12262  }
12263  }
12264 
12265  wf->execMask() = vcc.rawData();
12266  vcc.write();
12267  }
12268 
12270  : Inst_VOPC(iFmt, "v_cmpx_u_f64")
12271  {
12272  setFlag(ALU);
12273  setFlag(F64);
12274  } // Inst_VOPC__V_CMPX_U_F64
12275 
12277  {
12278  } // ~Inst_VOPC__V_CMPX_U_F64
12279 
12280  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
12281  // encoding.
12282  void
12284  {
12285  Wavefront *wf = gpuDynInst->wavefront();
12286  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12287  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12288  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12289 
12290  src0.readSrc();
12291  src1.read();
12292 
12293  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12294  if (wf->execMask(lane)) {
12295  vcc.setBit(lane, (std::isnan(src0[lane])
12296  || std::isnan(src1[lane])) ? 1 : 0);
12297  }
12298  }
12299 
12300  wf->execMask() = vcc.rawData();
12301  vcc.write();
12302  }
12303 
12305  : Inst_VOPC(iFmt, "v_cmpx_nge_f64")
12306  {
12307  setFlag(ALU);
12308  setFlag(F64);
12309  } // Inst_VOPC__V_CMPX_NGE_F64
12310 
12312  {
12313  } // ~Inst_VOPC__V_CMPX_NGE_F64
12314 
12315  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
12316  void
12318  {
12319  Wavefront *wf = gpuDynInst->wavefront();
12320  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12321  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12322  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12323 
12324  src0.readSrc();
12325  src1.read();
12326 
12327  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12328  if (wf->execMask(lane)) {
12329  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
12330  }
12331  }
12332 
12333  wf->execMask() = vcc.rawData();
12334  vcc.write();
12335  }
12336 
12338  : Inst_VOPC(iFmt, "v_cmpx_nlg_f64")
12339  {
12340  setFlag(ALU);
12341  setFlag(F64);
12342  } // Inst_VOPC__V_CMPX_NLG_F64
12343 
12345  {
12346  } // ~Inst_VOPC__V_CMPX_NLG_F64
12347 
12348  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
12349  void
12351  {
12352  Wavefront *wf = gpuDynInst->wavefront();
12353  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12354  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12355  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12356 
12357  src0.readSrc();
12358  src1.read();
12359 
12360  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12361  if (wf->execMask(lane)) {
12362  vcc.setBit(lane, !(src0[lane] < src1[lane]
12363  || src0[lane] > src1[lane]) ? 1 : 0);
12364  }
12365  }
12366 
12367  wf->execMask() = vcc.rawData();
12368  vcc.write();
12369  }
12370 
12372  : Inst_VOPC(iFmt, "v_cmpx_ngt_f64")
12373  {
12374  setFlag(ALU);
12375  setFlag(F64);
12376  } // Inst_VOPC__V_CMPX_NGT_F64
12377 
12379  {
12380  } // ~Inst_VOPC__V_CMPX_NGT_F64
12381 
12382  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
12383  void
12385  {
12386  Wavefront *wf = gpuDynInst->wavefront();
12387  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12388  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12389  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12390 
12391  src0.readSrc();
12392  src1.read();
12393 
12394  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12395  if (wf->execMask(lane)) {
12396  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
12397  }
12398  }
12399 
12400  wf->execMask() = vcc.rawData();
12401  vcc.write();
12402  }
12403 
12405  : Inst_VOPC(iFmt, "v_cmpx_nle_f64")
12406  {
12407  setFlag(ALU);
12408  setFlag(F64);
12409  } // Inst_VOPC__V_CMPX_NLE_F64
12410 
12412  {
12413  } // ~Inst_VOPC__V_CMPX_NLE_F64
12414 
12415  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
12416  void
12418  {
12419  Wavefront *wf = gpuDynInst->wavefront();
12420  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12421  ConstVecOperandF64 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, !(src0[lane] <= src1[lane]) ? 1 : 0);
12430  }
12431  }
12432 
12433  wf->execMask() = vcc.rawData();
12434  vcc.write();
12435  }
12436 
12438  : Inst_VOPC(iFmt, "v_cmpx_neq_f64")
12439  {
12440  setFlag(ALU);
12441  setFlag(F64);
12442  } // Inst_VOPC__V_CMPX_NEQ_F64
12443 
12445  {
12446  } // ~Inst_VOPC__V_CMPX_NEQ_F64
12447 
12448  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
12449  void
12451  {
12452  Wavefront *wf = gpuDynInst->wavefront();
12453  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12454  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12455  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12456 
12457  src0.readSrc();
12458  src1.read();
12459 
12460  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12461  if (wf->execMask(lane)) {
12462  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
12463  }
12464  }
12465 
12466  wf->execMask() = vcc.rawData();
12467  vcc.write();
12468  }
12469 
12471  : Inst_VOPC(iFmt, "v_cmpx_nlt_f64")
12472  {
12473  setFlag(ALU);
12474  setFlag(F64);
12475  } // Inst_VOPC__V_CMPX_NLT_F64
12476 
12478  {
12479  } // ~Inst_VOPC__V_CMPX_NLT_F64
12480 
12481  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
12482  void
12484  {
12485  Wavefront *wf = gpuDynInst->wavefront();
12486  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12487  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12488  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12489 
12490  src0.readSrc();
12491  src1.read();
12492 
12493  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12494  if (wf->execMask(lane)) {
12495  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
12496  }
12497  }
12498 
12499  wf->execMask() = vcc.rawData();
12500  vcc.write();
12501  }
12502 
12504  : Inst_VOPC(iFmt, "v_cmpx_tru_f64")
12505  {
12506  setFlag(ALU);
12507  setFlag(F64);
12508  } // Inst_VOPC__V_CMPX_TRU_F64
12509 
12511  {
12512  } // ~Inst_VOPC__V_CMPX_TRU_F64
12513 
12514  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
12515  void
12517  {
12518  Wavefront *wf = gpuDynInst->wavefront();
12519  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12520 
12521  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12522  if (wf->execMask(lane)) {
12523  vcc.setBit(lane, 1);
12524  }
12525  }
12526 
12527  wf->execMask() = vcc.rawData();
12528  vcc.write();
12529  }
12530 
12532  : Inst_VOPC(iFmt, "v_cmp_f_i16")
12533  {
12534  setFlag(ALU);
12535  } // Inst_VOPC__V_CMP_F_I16
12536 
12538  {
12539  } // ~Inst_VOPC__V_CMP_F_I16
12540 
12541  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
12542  void
12544  {
12545  Wavefront *wf = gpuDynInst->wavefront();
12546  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12547 
12548  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12549  if (wf->execMask(lane)) {
12550  vcc.setBit(lane, 0);
12551  }
12552  }
12553 
12554  vcc.write();
12555  }
12556 
12558  : Inst_VOPC(iFmt, "v_cmp_lt_i16")
12559  {
12560  setFlag(ALU);
12561  } // Inst_VOPC__V_CMP_LT_I16
12562 
12564  {
12565  } // ~Inst_VOPC__V_CMP_LT_I16
12566 
12567  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
12568  void
12570  {
12571  Wavefront *wf = gpuDynInst->wavefront();
12572  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12573  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12574  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12575 
12576  src0.readSrc();
12577  src1.read();
12578 
12579  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12580  if (wf->execMask(lane)) {
12581  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
12582  }
12583  }
12584 
12585  vcc.write();
12586  }
12587 
12589  : Inst_VOPC(iFmt, "v_cmp_eq_i16")
12590  {
12591  setFlag(ALU);
12592  } // Inst_VOPC__V_CMP_EQ_I16
12593 
12595  {
12596  } // ~Inst_VOPC__V_CMP_EQ_I16
12597 
12598  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
12599  void
12601  {
12602  Wavefront *wf = gpuDynInst->wavefront();
12603  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12604  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12605  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12606 
12607  src0.readSrc();
12608  src1.read();
12609 
12610  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12611  if (wf->execMask(lane)) {
12612  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
12613  }
12614  }
12615 
12616  vcc.write();
12617  }
12618 
12620  : Inst_VOPC(iFmt, "v_cmp_le_i16")
12621  {
12622  setFlag(ALU);
12623  } // Inst_VOPC__V_CMP_LE_I16
12624 
12626  {
12627  } // ~Inst_VOPC__V_CMP_LE_I16
12628 
12629  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
12630  void
12632  {
12633  Wavefront *wf = gpuDynInst->wavefront();
12634  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12635  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12636  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12637 
12638  src0.readSrc();
12639  src1.read();
12640 
12641  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12642  if (wf->execMask(lane)) {
12643  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
12644  }
12645  }
12646 
12647  vcc.write();
12648  }
12649 
12651  : Inst_VOPC(iFmt, "v_cmp_gt_i16")
12652  {
12653  setFlag(ALU);
12654  } // Inst_VOPC__V_CMP_GT_I16
12655 
12657  {
12658  } // ~Inst_VOPC__V_CMP_GT_I16
12659 
12660  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
12661  void
12663  {
12664  Wavefront *wf = gpuDynInst->wavefront();
12665  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12666  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12667  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12668 
12669  src0.readSrc();
12670  src1.read();
12671 
12672  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12673  if (wf->execMask(lane)) {
12674  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
12675  }
12676  }
12677 
12678  vcc.write();
12679  }
12680 
12682  : Inst_VOPC(iFmt, "v_cmp_ne_i16")
12683  {
12684  setFlag(ALU);
12685  } // Inst_VOPC__V_CMP_NE_I16
12686 
12688  {
12689  } // ~Inst_VOPC__V_CMP_NE_I16
12690 
12691  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
12692  void
12694  {
12695  Wavefront *wf = gpuDynInst->wavefront();
12696  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12697  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12698  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12699 
12700  src0.readSrc();
12701  src1.read();
12702 
12703  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12704  if (wf->execMask(lane)) {
12705  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
12706  }
12707  }
12708 
12709  vcc.write();
12710  }
12711 
12713  : Inst_VOPC(iFmt, "v_cmp_ge_i16")
12714  {
12715  setFlag(ALU);
12716  } // Inst_VOPC__V_CMP_GE_I16
12717 
12719  {
12720  } // ~Inst_VOPC__V_CMP_GE_I16
12721 
12722  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
12723  void
12725  {
12726  Wavefront *wf = gpuDynInst->wavefront();
12727  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12728  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12729  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12730 
12731  src0.readSrc();
12732  src1.read();
12733 
12734  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12735  if (wf->execMask(lane)) {
12736  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
12737  }
12738  }
12739 
12740  vcc.write();
12741  }
12742 
12744  : Inst_VOPC(iFmt, "v_cmp_t_i16")
12745  {
12746  setFlag(ALU);
12747  } // Inst_VOPC__V_CMP_T_I16
12748 
12750  {
12751  } // ~Inst_VOPC__V_CMP_T_I16
12752 
12753  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
12754  void
12756  {
12757  Wavefront *wf = gpuDynInst->wavefront();
12758  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12759 
12760  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12761  if (wf->execMask(lane)) {
12762  vcc.setBit(lane, 1);
12763  }
12764  }
12765 
12766  vcc.write();
12767  }
12768 
12770  : Inst_VOPC(iFmt, "v_cmp_f_u16")
12771  {
12772  setFlag(ALU);
12773  } // Inst_VOPC__V_CMP_F_U16
12774 
12776  {
12777  } // ~Inst_VOPC__V_CMP_F_U16
12778 
12779  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
12780  void
12782  {
12783  Wavefront *wf = gpuDynInst->wavefront();
12784  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12785 
12786  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12787  if (wf->execMask(lane)) {
12788  vcc.setBit(lane, 0);
12789  }
12790  }
12791 
12792  vcc.write();
12793  }
12794 
12796  : Inst_VOPC(iFmt, "v_cmp_lt_u16")
12797  {
12798  setFlag(ALU);
12799  } // Inst_VOPC__V_CMP_LT_U16
12800 
12802  {
12803  } // ~Inst_VOPC__V_CMP_LT_U16
12804 
12805  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
12806  void
12808  {
12809  Wavefront *wf = gpuDynInst->wavefront();
12810  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12811  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12812  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12813 
12814  src0.readSrc();
12815  src1.read();
12816 
12817  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12818  if (wf->execMask(lane)) {
12819  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
12820  }
12821  }
12822 
12823  vcc.write();
12824  }
12825 
12827  : Inst_VOPC(iFmt, "v_cmp_eq_u16")
12828  {
12829  setFlag(ALU);
12830  } // Inst_VOPC__V_CMP_EQ_U16
12831 
12833  {
12834  } // ~Inst_VOPC__V_CMP_EQ_U16
12835 
12836  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
12837  void
12839  {
12840  Wavefront *wf = gpuDynInst->wavefront();
12841  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12842  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12843  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12844 
12845  src0.readSrc();
12846  src1.read();
12847 
12848  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12849  if (wf->execMask(lane)) {
12850  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
12851  }
12852  }
12853 
12854  vcc.write();
12855  }
12856 
12858  : Inst_VOPC(iFmt, "v_cmp_le_u16")
12859  {
12860  setFlag(ALU);
12861  } // Inst_VOPC__V_CMP_LE_U16
12862 
12864  {
12865  } // ~Inst_VOPC__V_CMP_LE_U16
12866 
12867  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
12868  void
12870  {
12871  Wavefront *wf = gpuDynInst->wavefront();
12872  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12873  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12874  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12875 
12876  src0.readSrc();
12877  src1.read();
12878 
12879  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12880  if (wf->execMask(lane)) {
12881  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
12882  }
12883  }
12884 
12885  vcc.write();
12886  }
12887 
12889  : Inst_VOPC(iFmt, "v_cmp_gt_u16")
12890  {
12891  setFlag(ALU);
12892  } // Inst_VOPC__V_CMP_GT_U16
12893 
12895  {
12896  } // ~Inst_VOPC__V_CMP_GT_U16
12897 
12898  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
12899  void
12901  {
12902  Wavefront *wf = gpuDynInst->wavefront();
12903  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12904  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12905  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12906 
12907  src0.readSrc();
12908  src1.read();
12909 
12910  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12911  if (wf->execMask(lane)) {
12912  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
12913  }
12914  }
12915 
12916  vcc.write();
12917  }
12918 
12920  : Inst_VOPC(iFmt, "v_cmp_ne_u16")
12921  {
12922  setFlag(ALU);
12923  } // Inst_VOPC__V_CMP_NE_U16
12924 
12926  {
12927  } // ~Inst_VOPC__V_CMP_NE_U16
12928 
12929  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
12930  void
12932  {
12933  Wavefront *wf = gpuDynInst->wavefront();
12934  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12935  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12936  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12937 
12938  src0.readSrc();
12939  src1.read();
12940 
12941  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12942  if (wf->execMask(lane)) {
12943  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
12944  }
12945  }
12946 
12947  vcc.write();
12948  }
12949 
12951  : Inst_VOPC(iFmt, "v_cmp_ge_u16")
12952  {
12953  setFlag(ALU);
12954  } // Inst_VOPC__V_CMP_GE_U16
12955 
12957  {
12958  } // ~Inst_VOPC__V_CMP_GE_U16
12959 
12960  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
12961  void
12963  {
12964  Wavefront *wf = gpuDynInst->wavefront();
12965  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12966  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12967  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12968 
12969  src0.readSrc();
12970  src1.read();
12971 
12972  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12973  if (wf->execMask(lane)) {
12974  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
12975  }
12976  }
12977 
12978  vcc.write();
12979  }
12980 
12982  : Inst_VOPC(iFmt, "v_cmp_t_u16")
12983  {
12984  setFlag(ALU);
12985  } // Inst_VOPC__V_CMP_T_U16
12986 
12988  {
12989  } // ~Inst_VOPC__V_CMP_T_U16
12990 
12991  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
12992  void
12994  {
12995  Wavefront *wf = gpuDynInst->wavefront();
12996  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12997 
12998  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12999  if (wf->execMask(lane)) {
13000  vcc.setBit(lane, 1);
13001  }
13002  }
13003 
13004  vcc.write();
13005  }
13006 
13008  : Inst_VOPC(iFmt, "v_cmpx_f_i16")
13009  {
13010  setFlag(ALU);
13011  } // Inst_VOPC__V_CMPX_F_I16
13012 
13014  {
13015  } // ~Inst_VOPC__V_CMPX_F_I16
13016 
13017  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
13018  void
13020  {
13021  Wavefront *wf = gpuDynInst->wavefront();
13022  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13023 
13024  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13025  if (wf->execMask(lane)) {
13026  vcc.setBit(lane, 0);
13027  }
13028  }
13029 
13030  wf->execMask() = vcc.rawData();
13031  vcc.write();
13032  }
13033 
13035  : Inst_VOPC(iFmt, "v_cmpx_lt_i16")
13036  {
13037  setFlag(ALU);
13038  } // Inst_VOPC__V_CMPX_LT_I16
13039 
13041  {
13042  } // ~Inst_VOPC__V_CMPX_LT_I16
13043 
13044  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13045  void
13047  {
13048  Wavefront *wf = gpuDynInst->wavefront();
13049  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13050  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13051  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13052 
13053  src0.readSrc();
13054  src1.read();
13055 
13056  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13057  if (wf->execMask(lane)) {
13058  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13059  }
13060  }
13061 
13062  wf->execMask() = vcc.rawData();
13063  vcc.write();
13064  }
13065 
13067  : Inst_VOPC(iFmt, "v_cmpx_eq_i16")
13068  {
13069  setFlag(ALU);
13070  } // Inst_VOPC__V_CMPX_EQ_I16
13071 
13073  {
13074  } // ~Inst_VOPC__V_CMPX_EQ_I16
13075 
13076  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13077  void
13079  {
13080  Wavefront *wf = gpuDynInst->wavefront();
13081  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13082  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13083  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13084 
13085  src0.readSrc();
13086  src1.read();
13087 
13088  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13089  if (wf->execMask(lane)) {
13090  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13091  }
13092  }
13093 
13094  wf->execMask() = vcc.rawData();
13095  vcc.write();
13096  }
13097 
13099  : Inst_VOPC(iFmt, "v_cmpx_le_i16")
13100  {
13101  setFlag(ALU);
13102  } // Inst_VOPC__V_CMPX_LE_I16
13103 
13105  {
13106  } // ~Inst_VOPC__V_CMPX_LE_I16
13107 
13108  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13109  void
13111  {
13112  Wavefront *wf = gpuDynInst->wavefront();
13113  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13114  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13115  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13116 
13117  src0.readSrc();
13118  src1.read();
13119 
13120  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13121  if (wf->execMask(lane)) {
13122  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13123  }
13124  }
13125 
13126  wf->execMask() = vcc.rawData();
13127  vcc.write();
13128  }
13129 
13131  : Inst_VOPC(iFmt, "v_cmpx_gt_i16")
13132  {
13133  setFlag(ALU);
13134  } // Inst_VOPC__V_CMPX_GT_I16
13135 
13137  {
13138  } // ~Inst_VOPC__V_CMPX_GT_I16
13139 
13140  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13141  void
13143  {
13144  Wavefront *wf = gpuDynInst->wavefront();
13145  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13146  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13147  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13148 
13149  src0.readSrc();
13150  src1.read();
13151 
13152  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13153  if (wf->execMask(lane)) {
13154  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13155  }
13156  }
13157 
13158  wf->execMask() = vcc.rawData();
13159  vcc.write();
13160  }
13161 
13163  : Inst_VOPC(iFmt, "v_cmpx_ne_i16")
13164  {
13165  setFlag(ALU);
13166  } // Inst_VOPC__V_CMPX_NE_I16
13167 
13169  {
13170  } // ~Inst_VOPC__V_CMPX_NE_I16
13171 
13172  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13173  void
13175  {
13176  Wavefront *wf = gpuDynInst->wavefront();
13177  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13178  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13179  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13180 
13181  src0.readSrc();
13182  src1.read();
13183 
13184  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13185  if (wf->execMask(lane)) {
13186  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13187  }
13188  }
13189 
13190  wf->execMask() = vcc.rawData();
13191  vcc.write();
13192  }
13193 
13195  : Inst_VOPC(iFmt, "v_cmpx_ge_i16")
13196  {
13197  setFlag(ALU);
13198  } // Inst_VOPC__V_CMPX_GE_I16
13199 
13201  {
13202  } // ~Inst_VOPC__V_CMPX_GE_I16
13203 
13204  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13205  void
13207  {
13208  Wavefront *wf = gpuDynInst->wavefront();
13209  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13210  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13211  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13212 
13213  src0.readSrc();
13214  src1.read();
13215 
13216  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13217  if (wf->execMask(lane)) {
13218  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13219  }
13220  }
13221 
13222  wf->execMask() = vcc.rawData();
13223  vcc.write();
13224  }
13225 
13227  : Inst_VOPC(iFmt, "v_cmpx_t_i16")
13228  {
13229  setFlag(ALU);
13230  } // Inst_VOPC__V_CMPX_T_I16
13231 
13233  {
13234  } // ~Inst_VOPC__V_CMPX_T_I16
13235 
13236  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
13237  void
13239  {
13240  Wavefront *wf = gpuDynInst->wavefront();
13241  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13242 
13243  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13244  if (wf->execMask(lane)) {
13245  vcc.setBit(lane, 1);
13246  }
13247  }
13248 
13249  wf->execMask() = vcc.rawData();
13250  vcc.write();
13251  }
13252 
13254  : Inst_VOPC(iFmt, "v_cmpx_f_u16")
13255  {
13256  setFlag(ALU);
13257  } // Inst_VOPC__V_CMPX_F_U16
13258 
13260  {
13261  } // ~Inst_VOPC__V_CMPX_F_U16
13262 
13263  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
13264  void
13266  {
13267  Wavefront *wf = gpuDynInst->wavefront();
13268  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13269 
13270  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13271  if (wf->execMask(lane)) {
13272  vcc.setBit(lane, 0);
13273  }
13274  }
13275 
13276  wf->execMask() = vcc.rawData();
13277  vcc.write();
13278  }
13279 
13281  : Inst_VOPC(iFmt, "v_cmpx_lt_u16")
13282  {
13283  setFlag(ALU);
13284  } // Inst_VOPC__V_CMPX_LT_U16
13285 
13287  {
13288  } // ~Inst_VOPC__V_CMPX_LT_U16
13289 
13290  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13291  void
13293  {
13294  Wavefront *wf = gpuDynInst->wavefront();
13295  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13296  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13297  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13298 
13299  src0.readSrc();
13300  src1.read();
13301 
13302  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13303  if (wf->execMask(lane)) {
13304  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13305  }
13306  }
13307 
13308  wf->execMask() = vcc.rawData();
13309  vcc.write();
13310  }
13311 
13313  : Inst_VOPC(iFmt, "v_cmpx_eq_u16")
13314  {
13315  setFlag(ALU);
13316  } // Inst_VOPC__V_CMPX_EQ_U16
13317 
13319  {
13320  } // ~Inst_VOPC__V_CMPX_EQ_U16
13321 
13322  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13323  void
13325  {
13326  Wavefront *wf = gpuDynInst->wavefront();
13327  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13328  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13329  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13330 
13331  src0.readSrc();
13332  src1.read();
13333 
13334  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13335  if (wf->execMask(lane)) {
13336  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13337  }
13338  }
13339 
13340  wf->execMask() = vcc.rawData();
13341  vcc.write();
13342  }
13343 
13345  : Inst_VOPC(iFmt, "v_cmpx_le_u16")
13346  {
13347  setFlag(ALU);
13348  } // Inst_VOPC__V_CMPX_LE_U16
13349 
13351  {
13352  } // ~Inst_VOPC__V_CMPX_LE_U16
13353 
13354  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13355  void
13357  {
13358  Wavefront *wf = gpuDynInst->wavefront();
13359  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13360  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13361  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13362 
13363  src0.readSrc();
13364  src1.read();
13365 
13366  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13367  if (wf->execMask(lane)) {
13368  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13369  }
13370  }
13371 
13372  wf->execMask() = vcc.rawData();
13373  vcc.write();
13374  }
13375 
13377  : Inst_VOPC(iFmt, "v_cmpx_gt_u16")
13378  {
13379  setFlag(ALU);
13380  } // Inst_VOPC__V_CMPX_GT_U16
13381 
13383  {
13384  } // ~Inst_VOPC__V_CMPX_GT_U16
13385 
13386  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13387  void
13389  {
13390  Wavefront *wf = gpuDynInst->wavefront();
13391  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13392  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13393  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13394 
13395  src0.readSrc();
13396  src1.read();
13397 
13398  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13399  if (wf->execMask(lane)) {
13400  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13401  }
13402  }
13403 
13404  wf->execMask() = vcc.rawData();
13405  vcc.write();
13406  }
13407 
13409  : Inst_VOPC(iFmt, "v_cmpx_ne_u16")
13410  {
13411  setFlag(ALU);
13412  } // Inst_VOPC__V_CMPX_NE_U16
13413 
13415  {
13416  } // ~Inst_VOPC__V_CMPX_NE_U16
13417 
13418  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13419  void
13421  {
13422  Wavefront *wf = gpuDynInst->wavefront();
13423  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13424  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13425  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13426 
13427  src0.readSrc();
13428  src1.read();
13429 
13430  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13431  if (wf->execMask(lane)) {
13432  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13433  }
13434  }
13435 
13436  wf->execMask() = vcc.rawData();
13437  vcc.write();
13438  }
13439 
13441  : Inst_VOPC(iFmt, "v_cmpx_ge_u16")
13442  {
13443  setFlag(ALU);
13444  } // Inst_VOPC__V_CMPX_GE_U16
13445 
13447  {
13448  } // ~Inst_VOPC__V_CMPX_GE_U16
13449 
13450  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13451  void
13453  {
13454  Wavefront *wf = gpuDynInst->wavefront();
13455  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13456  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13457  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13458 
13459  src0.readSrc();
13460  src1.read();
13461 
13462  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13463  if (wf->execMask(lane)) {
13464  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13465  }
13466  }
13467 
13468  wf->execMask() = vcc.rawData();
13469  vcc.write();
13470  }
13471 
13473  : Inst_VOPC(iFmt, "v_cmpx_t_u16")
13474  {
13475  setFlag(ALU);
13476  } // Inst_VOPC__V_CMPX_T_U16
13477 
13479  {
13480  } // ~Inst_VOPC__V_CMPX_T_U16
13481 
13482  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
13483  void
13485  {
13486  Wavefront *wf = gpuDynInst->wavefront();
13487  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13488 
13489  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13490  if (wf->execMask(lane)) {
13491  vcc.setBit(lane, 1);
13492  }
13493  }
13494 
13495  wf->execMask() = vcc.rawData();
13496  vcc.write();
13497  }
13498 
13500  : Inst_VOPC(iFmt, "v_cmp_f_i32")
13501  {
13502  setFlag(ALU);
13503  } // Inst_VOPC__V_CMP_F_I32
13504 
13506  {
13507  } // ~Inst_VOPC__V_CMP_F_I32
13508 
13509  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
13510  void
13512  {
13513  Wavefront *wf = gpuDynInst->wavefront();
13514  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13515 
13516  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13517  if (wf->execMask(lane)) {
13518  vcc.setBit(lane, 0);
13519  }
13520  }
13521 
13522  vcc.write();
13523  }
13524 
13526  : Inst_VOPC(iFmt, "v_cmp_lt_i32")
13527  {
13528  setFlag(ALU);
13529  } // Inst_VOPC__V_CMP_LT_I32
13530 
13532  {
13533  } // ~Inst_VOPC__V_CMP_LT_I32
13534 
13535  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13536  void
13538  {
13539  Wavefront *wf = gpuDynInst->wavefront();
13540  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13541  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13542  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13543 
13544  src0.readSrc();
13545  src1.read();
13546 
13547  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13548  if (wf->execMask(lane)) {
13549  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13550  }
13551  }
13552 
13553  vcc.write();
13554  }
13555 
13557  : Inst_VOPC(iFmt, "v_cmp_eq_i32")
13558  {
13559  setFlag(ALU);
13560  } // Inst_VOPC__V_CMP_EQ_I32
13561 
13563  {
13564  } // ~Inst_VOPC__V_CMP_EQ_I32
13565 
13566  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13567  void
13569  {
13570  Wavefront *wf = gpuDynInst->wavefront();
13571  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13572  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13573  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13574 
13575  src0.readSrc();
13576  src1.read();
13577 
13578  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13579  if (wf->execMask(lane)) {
13580  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13581  }
13582  }
13583 
13584  vcc.write();
13585  }
13586 
13588  : Inst_VOPC(iFmt, "v_cmp_le_i32")
13589  {
13590  setFlag(ALU);
13591  } // Inst_VOPC__V_CMP_LE_I32
13592 
13594  {
13595  } // ~Inst_VOPC__V_CMP_LE_I32
13596 
13597  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13598  void
13600  {
13601  Wavefront *wf = gpuDynInst->wavefront();
13602  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13603  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13604  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13605 
13606  src0.readSrc();
13607  src1.read();
13608 
13609  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13610  if (wf->execMask(lane)) {
13611  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13612  }
13613  }
13614 
13615  vcc.write();
13616  }
13617 
13619  : Inst_VOPC(iFmt, "v_cmp_gt_i32")
13620  {
13621  setFlag(ALU);
13622  } // Inst_VOPC__V_CMP_GT_I32
13623 
13625  {
13626  } // ~Inst_VOPC__V_CMP_GT_I32
13627 
13628  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13629  void
13631  {
13632  Wavefront *wf = gpuDynInst->wavefront();
13633  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13634  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13635  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13636 
13637  src0.readSrc();
13638  src1.read();
13639 
13640  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13641  if (wf->execMask(lane)) {
13642  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13643  }
13644  }
13645 
13646  vcc.write();
13647  }
13648 
13650  : Inst_VOPC(iFmt, "v_cmp_ne_i32")
13651  {
13652  setFlag(ALU);
13653  } // Inst_VOPC__V_CMP_NE_I32
13654 
13656  {
13657  } // ~Inst_VOPC__V_CMP_NE_I32
13658 
13659  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13660  void
13662  {
13663  Wavefront *wf = gpuDynInst->wavefront();
13664  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13665  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13666  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13667 
13668  src0.readSrc();
13669  src1.read();
13670 
13671  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13672  if (wf->execMask(lane)) {
13673  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13674  }
13675  }
13676 
13677  vcc.write();
13678  }
13679 
13681  : Inst_VOPC(iFmt, "v_cmp_ge_i32")
13682  {
13683  setFlag(ALU);
13684  } // Inst_VOPC__V_CMP_GE_I32
13685 
13687  {
13688  } // ~Inst_VOPC__V_CMP_GE_I32
13689 
13690  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13691  void
13693  {
13694  Wavefront *wf = gpuDynInst->wavefront();
13695  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13696  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13697  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13698 
13699  src0.readSrc();
13700  src1.read();
13701 
13702  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13703  if (wf->execMask(lane)) {
13704  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13705  }
13706  }
13707 
13708  vcc.write();
13709  }
13710 
13712  : Inst_VOPC(iFmt, "v_cmp_t_i32")
13713  {
13714  setFlag(ALU);
13715  } // Inst_VOPC__V_CMP_T_I32
13716 
13718  {
13719  } // ~Inst_VOPC__V_CMP_T_I32
13720 
13721  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
13722  void
13724  {
13725  Wavefront *wf = gpuDynInst->wavefront();
13726  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13727 
13728  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13729  if (wf->execMask(lane)) {
13730  vcc.setBit(lane, 1);
13731  }
13732  }
13733 
13734  vcc.write();
13735  }
13736 
13738  : Inst_VOPC(iFmt, "v_cmp_f_u32")
13739  {
13740  setFlag(ALU);
13741  } // Inst_VOPC__V_CMP_F_U32
13742 
13744  {
13745  } // ~Inst_VOPC__V_CMP_F_U32
13746 
13747  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
13748  void
13750  {
13751  Wavefront *wf = gpuDynInst->wavefront();
13752  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13753 
13754  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13755  if (wf->execMask(lane)) {
13756  vcc.setBit(lane, 0);
13757  }
13758  }
13759 
13760  vcc.write();
13761  }
13762 
13764  : Inst_VOPC(iFmt, "v_cmp_lt_u32")
13765  {
13766  setFlag(ALU);
13767  } // Inst_VOPC__V_CMP_LT_U32
13768 
13770  {
13771  } // ~Inst_VOPC__V_CMP_LT_U32
13772 
13773  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13774  void
13776  {
13777  Wavefront *wf = gpuDynInst->wavefront();
13778  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13779  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13780  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13781 
13782  src0.readSrc();
13783  src1.read();
13784 
13785  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13786  if (wf->execMask(lane)) {
13787  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13788  }
13789  }
13790 
13791  vcc.write();
13792  }
13793 
13795  : Inst_VOPC(iFmt, "v_cmp_eq_u32")
13796  {
13797  setFlag(ALU);
13798  } // Inst_VOPC__V_CMP_EQ_U32
13799 
13801  {
13802  } // ~Inst_VOPC__V_CMP_EQ_U32
13803 
13804  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13805  void
13807  {
13808  Wavefront *wf = gpuDynInst->wavefront();
13809  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13810  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13811  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13812 
13813  src0.readSrc();
13814  src1.read();
13815 
13816  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13817  if (wf->execMask(lane)) {
13818  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13819  }
13820  }
13821 
13822  vcc.write();
13823  }
13824 
13826  : Inst_VOPC(iFmt, "v_cmp_le_u32")
13827  {
13828  setFlag(ALU);
13829  } // Inst_VOPC__V_CMP_LE_U32
13830 
13832  {
13833  } // ~Inst_VOPC__V_CMP_LE_U32
13834 
13835  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13836  void
13838  {
13839  Wavefront *wf = gpuDynInst->wavefront();
13840  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13841  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13842  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13843 
13844  src0.readSrc();
13845  src1.read();
13846 
13847  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13848  if (wf->execMask(lane)) {
13849  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13850  }
13851  }
13852 
13853  vcc.write();
13854  }
13855 
13857  : Inst_VOPC(iFmt, "v_cmp_gt_u32")
13858  {
13859  setFlag(ALU);
13860  } // Inst_VOPC__V_CMP_GT_U32
13861 
13863  {
13864  } // ~Inst_VOPC__V_CMP_GT_U32
13865 
13866  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13867  void
13869  {
13870  Wavefront *wf = gpuDynInst->wavefront();
13871  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13872  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13873  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13874 
13875  src0.readSrc();
13876  src1.read();
13877 
13878  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13879  if (wf->execMask(lane)) {
13880  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13881  }
13882  }
13883 
13884  vcc.write();
13885  }
13886 
13888  : Inst_VOPC(iFmt, "v_cmp_ne_u32")
13889  {
13890  setFlag(ALU);
13891  } // Inst_VOPC__V_CMP_NE_U32
13892 
13894  {
13895  } // ~Inst_VOPC__V_CMP_NE_U32
13896 
13897  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13898  void
13900  {
13901  Wavefront *wf = gpuDynInst->wavefront();
13902  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13903  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13904  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13905 
13906  src0.readSrc();
13907  src1.read();
13908 
13909  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13910  if (wf->execMask(lane)) {
13911  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13912  }
13913  }
13914 
13915  vcc.write();
13916  }
13917 
13919  : Inst_VOPC(iFmt, "v_cmp_ge_u32")
13920  {
13921  setFlag(ALU);
13922  } // Inst_VOPC__V_CMP_GE_U32
13923 
13925  {
13926  } // ~Inst_VOPC__V_CMP_GE_U32
13927 
13928  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13929  void
13931  {
13932  Wavefront *wf = gpuDynInst->wavefront();
13933  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13934  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13935  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13936 
13937  src0.readSrc();
13938  src1.read();
13939 
13940  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13941  if (wf->execMask(lane)) {
13942  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13943  }
13944  }
13945 
13946  vcc.write();
13947  }
13948 
13950  : Inst_VOPC(iFmt, "v_cmp_t_u32")
13951  {
13952  setFlag(ALU);
13953  } // Inst_VOPC__V_CMP_T_U32
13954 
13956  {
13957  } // ~Inst_VOPC__V_CMP_T_U32
13958 
13959  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
13960  void
13962  {
13963  Wavefront *wf = gpuDynInst->wavefront();
13964  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13965 
13966  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13967  if (wf->execMask(lane)) {
13968  vcc.setBit(lane, 1);
13969  }
13970  }
13971 
13972  vcc.write();
13973  }
13974 
13976  : Inst_VOPC(iFmt, "v_cmpx_f_i32")
13977  {
13978  setFlag(ALU);
13979  } // Inst_VOPC__V_CMPX_F_I32
13980 
13982  {
13983  } // ~Inst_VOPC__V_CMPX_F_I32
13984 
13985  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
13986  void
13988  {
13989  Wavefront *wf = gpuDynInst->wavefront();
13990  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13991 
13992  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13993  if (wf->execMask(lane)) {
13994  vcc.setBit(lane, 0);
13995  }
13996  }
13997 
13998  wf->execMask() = vcc.rawData();
13999  vcc.write();
14000  }
14001 
14003  : Inst_VOPC(iFmt, "v_cmpx_lt_i32")
14004  {
14005  setFlag(ALU);
14006  } // Inst_VOPC__V_CMPX_LT_I32
14007 
14009  {
14010  } // ~Inst_VOPC__V_CMPX_LT_I32
14011 
14012  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14013  void
14015  {
14016  Wavefront *wf = gpuDynInst->wavefront();
14017  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14018  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14019  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14020 
14021  src0.readSrc();
14022  src1.read();
14023 
14024  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14025  if (wf->execMask(lane)) {
14026  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14027  }
14028  }
14029 
14030  wf->execMask() = vcc.rawData();
14031  vcc.write();
14032  }
14033 
14035  : Inst_VOPC(iFmt, "v_cmpx_eq_i32")
14036  {
14037  setFlag(ALU);
14038  } // Inst_VOPC__V_CMPX_EQ_I32
14039 
14041  {
14042  } // ~Inst_VOPC__V_CMPX_EQ_I32
14043 
14044  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14045  void
14047  {
14048  Wavefront *wf = gpuDynInst->wavefront();
14049  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14050  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14051  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14052 
14053  src0.readSrc();
14054  src1.read();
14055 
14056  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14057  if (wf->execMask(lane)) {
14058  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14059  }
14060  }
14061 
14062  wf->execMask() = vcc.rawData();
14063  vcc.write();
14064  }
14065 
14067  : Inst_VOPC(iFmt, "v_cmpx_le_i32")
14068  {
14069  setFlag(ALU);
14070  } // Inst_VOPC__V_CMPX_LE_I32
14071 
14073  {
14074  } // ~Inst_VOPC__V_CMPX_LE_I32
14075 
14076  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14077  void
14079  {
14080  Wavefront *wf = gpuDynInst->wavefront();
14081  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14082  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14083  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14084 
14085  src0.readSrc();
14086  src1.read();
14087 
14088  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14089  if (wf->execMask(lane)) {
14090  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14091  }
14092  }
14093 
14094  wf->execMask() = vcc.rawData();
14095  vcc.write();
14096  }
14097 
14099  : Inst_VOPC(iFmt, "v_cmpx_gt_i32")
14100  {
14101  setFlag(ALU);
14102  } // Inst_VOPC__V_CMPX_GT_I32
14103 
14105  {
14106  } // ~Inst_VOPC__V_CMPX_GT_I32
14107 
14108  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14109  void
14111  {
14112  Wavefront *wf = gpuDynInst->wavefront();
14113  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14114  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14115  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14116 
14117  src0.readSrc();
14118  src1.read();
14119 
14120  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14121  if (wf->execMask(lane)) {
14122  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14123  }
14124  }
14125 
14126  wf->execMask() = vcc.rawData();
14127  vcc.write();
14128  }
14129 
14131  : Inst_VOPC(iFmt, "v_cmpx_ne_i32")
14132  {
14133  setFlag(ALU);
14134  } // Inst_VOPC__V_CMPX_NE_I32
14135 
14137  {
14138  } // ~Inst_VOPC__V_CMPX_NE_I32
14139 
14140  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14141  void
14143  {
14144  Wavefront *wf = gpuDynInst->wavefront();
14145  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14146  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14147  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14148 
14149  src0.readSrc();
14150  src1.read();
14151 
14152  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14153  if (wf->execMask(lane)) {
14154  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14155  }
14156  }
14157 
14158  wf->execMask() = vcc.rawData();
14159  vcc.write();
14160  }
14161 
14163  : Inst_VOPC(iFmt, "v_cmpx_ge_i32")
14164  {
14165  setFlag(ALU);
14166  } // Inst_VOPC__V_CMPX_GE_I32
14167 
14169  {
14170  } // ~Inst_VOPC__V_CMPX_GE_I32
14171 
14172  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14173  void
14175  {
14176  Wavefront *wf = gpuDynInst->wavefront();
14177  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14178  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14179  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14180 
14181  src0.readSrc();
14182  src1.read();
14183 
14184  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14185  if (wf->execMask(lane)) {
14186  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14187  }
14188  }
14189 
14190  wf->execMask() = vcc.rawData();
14191  vcc.write();
14192  }
14193 
14195  : Inst_VOPC(iFmt, "v_cmpx_t_i32")
14196  {
14197  setFlag(ALU);
14198  } // Inst_VOPC__V_CMPX_T_I32
14199 
14201  {
14202  } // ~Inst_VOPC__V_CMPX_T_I32
14203 
14204  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
14205  void
14207  {
14208  Wavefront *wf = gpuDynInst->wavefront();
14209  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14210 
14211  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14212  if (wf->execMask(lane)) {
14213  vcc.setBit(lane, 1);
14214  }
14215  }
14216 
14217  wf->execMask() = vcc.rawData();
14218  vcc.write();
14219  }
14220 
14222  : Inst_VOPC(iFmt, "v_cmpx_f_u32")
14223  {
14224  setFlag(ALU);
14225  } // Inst_VOPC__V_CMPX_F_U32
14226 
14228  {
14229  } // ~Inst_VOPC__V_CMPX_F_U32
14230 
14231  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
14232  void
14234  {
14235  Wavefront *wf = gpuDynInst->wavefront();
14236  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14237 
14238  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14239  if (wf->execMask(lane)) {
14240  vcc.setBit(lane, 0);
14241  }
14242  }
14243 
14244  wf->execMask() = vcc.rawData();
14245  vcc.write();
14246  }
14247 
14249  : Inst_VOPC(iFmt, "v_cmpx_lt_u32")
14250  {
14251  setFlag(ALU);
14252  } // Inst_VOPC__V_CMPX_LT_U32
14253 
14255  {
14256  } // ~Inst_VOPC__V_CMPX_LT_U32
14257 
14258  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14259  void
14261  {
14262  Wavefront *wf = gpuDynInst->wavefront();
14263  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14264  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14265  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14266 
14267  src0.readSrc();
14268  src1.read();
14269 
14270  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14271  if (wf->execMask(lane)) {
14272  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14273  }
14274  }
14275 
14276  wf->execMask() = vcc.rawData();
14277  vcc.write();
14278  }
14279 
14281  : Inst_VOPC(iFmt, "v_cmpx_eq_u32")
14282  {
14283  setFlag(ALU);
14284  } // Inst_VOPC__V_CMPX_EQ_U32
14285 
14287  {
14288  } // ~Inst_VOPC__V_CMPX_EQ_U32
14289 
14290  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14291  void
14293  {
14294  Wavefront *wf = gpuDynInst->wavefront();
14295  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14296  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14297  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14298 
14299  src0.readSrc();
14300  src1.read();
14301 
14302  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14303  if (wf->execMask(lane)) {
14304  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14305  }
14306  }
14307 
14308  wf->execMask() = vcc.rawData();
14309  vcc.write();
14310  }
14311 
14313  : Inst_VOPC(iFmt, "v_cmpx_le_u32")
14314  {
14315  setFlag(ALU);
14316  } // Inst_VOPC__V_CMPX_LE_U32
14317 
14319  {
14320  } // ~Inst_VOPC__V_CMPX_LE_U32
14321 
14322  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14323  void
14325  {
14326  Wavefront *wf = gpuDynInst->wavefront();
14327  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14328  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14329  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14330 
14331  src0.readSrc();
14332  src1.read();
14333 
14334  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14335  if (wf->execMask(lane)) {
14336  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14337  }
14338  }
14339 
14340  wf->execMask() = vcc.rawData();
14341  vcc.write();
14342  }
14343 
14345  : Inst_VOPC(iFmt, "v_cmpx_gt_u32")
14346  {
14347  setFlag(ALU);
14348  } // Inst_VOPC__V_CMPX_GT_U32
14349 
14351  {
14352  } // ~Inst_VOPC__V_CMPX_GT_U32
14353 
14354  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14355  void
14357  {
14358  Wavefront *wf = gpuDynInst->wavefront();
14359  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14360  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14361  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14362 
14363  src0.readSrc();
14364  src1.read();
14365 
14366  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14367  if (wf->execMask(lane)) {
14368  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14369  }
14370  }
14371 
14372  wf->execMask() = vcc.rawData();
14373  vcc.write();
14374  }
14375 
14377  : Inst_VOPC(iFmt, "v_cmpx_ne_u32")
14378  {
14379  setFlag(ALU);
14380  } // Inst_VOPC__V_CMPX_NE_U32
14381 
14383  {
14384  } // ~Inst_VOPC__V_CMPX_NE_U32
14385 
14386  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14387  void
14389  {
14390  Wavefront *wf = gpuDynInst->wavefront();
14391  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14392  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14393  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14394 
14395  src0.readSrc();
14396  src1.read();
14397 
14398  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14399  if (wf->execMask(lane)) {
14400  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14401  }
14402  }
14403 
14404  wf->execMask() = vcc.rawData();
14405  vcc.write();
14406  }
14407 
14409  : Inst_VOPC(iFmt, "v_cmpx_ge_u32")
14410  {
14411  setFlag(ALU);
14412  } // Inst_VOPC__V_CMPX_GE_U32
14413 
14415  {
14416  } // ~Inst_VOPC__V_CMPX_GE_U32
14417 
14418  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14419  void
14421  {
14422  Wavefront *wf = gpuDynInst->wavefront();
14423  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14424  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14425  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14426 
14427  src0.readSrc();
14428  src1.read();
14429 
14430  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14431  if (wf->execMask(lane)) {
14432  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14433  }
14434  }
14435 
14436  wf->execMask() = vcc.rawData();
14437  vcc.write();
14438  }
14439 
14441  : Inst_VOPC(iFmt, "v_cmpx_t_u32")
14442  {
14443  setFlag(ALU);
14444  } // Inst_VOPC__V_CMPX_T_U32
14445 
14447  {
14448  } // ~Inst_VOPC__V_CMPX_T_U32
14449 
14450  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
14451  void
14453  {
14454  Wavefront *wf = gpuDynInst->wavefront();
14455  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14456 
14457  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14458  if (wf->execMask(lane)) {
14459  vcc.setBit(lane, 1);
14460  }
14461  }
14462 
14463  wf->execMask() = vcc.rawData();
14464  vcc.write();
14465  }
14466 
14468  : Inst_VOPC(iFmt, "v_cmp_f_i64")
14469  {
14470  setFlag(ALU);
14471  } // Inst_VOPC__V_CMP_F_I64
14472 
14474  {
14475  } // ~Inst_VOPC__V_CMP_F_I64
14476 
14477  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
14478  void
14480  {
14481  Wavefront *wf = gpuDynInst->wavefront();
14482  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14483 
14484  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14485  if (wf->execMask(lane)) {
14486  vcc.setBit(lane, 0);
14487  }
14488  }
14489 
14490  vcc.write();
14491  }
14492 
14494  : Inst_VOPC(iFmt, "v_cmp_lt_i64")
14495  {
14496  setFlag(ALU);
14497  } // Inst_VOPC__V_CMP_LT_I64
14498 
14500  {
14501  } // ~Inst_VOPC__V_CMP_LT_I64
14502 
14503  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14504  void
14506  {
14507  Wavefront *wf = gpuDynInst->wavefront();
14508  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14509  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14510  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14511 
14512  src0.readSrc();
14513  src1.read();
14514 
14515  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14516  if (wf->execMask(lane)) {
14517  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14518  }
14519  }
14520 
14521  vcc.write();
14522  }
14523 
14525  : Inst_VOPC(iFmt, "v_cmp_eq_i64")
14526  {
14527  setFlag(ALU);
14528  } // Inst_VOPC__V_CMP_EQ_I64
14529 
14531  {
14532  } // ~Inst_VOPC__V_CMP_EQ_I64
14533 
14534  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14535  void
14537  {
14538  Wavefront *wf = gpuDynInst->wavefront();
14539  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14540  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14541  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14542 
14543  src0.readSrc();
14544  src1.read();
14545 
14546  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14547  if (wf->execMask(lane)) {
14548  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14549  }
14550  }
14551 
14552  vcc.write();
14553  }
14554 
14556  : Inst_VOPC(iFmt, "v_cmp_le_i64")
14557  {
14558  setFlag(ALU);
14559  } // Inst_VOPC__V_CMP_LE_I64
14560 
14562  {
14563  } // ~Inst_VOPC__V_CMP_LE_I64
14564 
14565  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14566  void
14568  {
14569  Wavefront *wf = gpuDynInst->wavefront();
14570  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14571  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14572  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14573 
14574  src0.readSrc();
14575  src1.read();
14576 
14577  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14578  if (wf->execMask(lane)) {
14579  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14580  }
14581  }
14582 
14583  vcc.write();
14584  }
14585 
14587  : Inst_VOPC(iFmt, "v_cmp_gt_i64")
14588  {
14589  setFlag(ALU);
14590  } // Inst_VOPC__V_CMP_GT_I64
14591 
14593  {
14594  } // ~Inst_VOPC__V_CMP_GT_I64
14595 
14596  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14597  void
14599  {
14600  Wavefront *wf = gpuDynInst->wavefront();
14601  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14602  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14603  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14604 
14605  src0.readSrc();
14606  src1.read();
14607 
14608  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14609  if (wf->execMask(lane)) {
14610  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14611  }
14612  }
14613 
14614  vcc.write();
14615  }
14616 
14618  : Inst_VOPC(iFmt, "v_cmp_ne_i64")
14619  {
14620  setFlag(ALU);
14621  } // Inst_VOPC__V_CMP_NE_I64
14622 
14624  {
14625  } // ~Inst_VOPC__V_CMP_NE_I64
14626 
14627  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14628  void
14630  {
14631  Wavefront *wf = gpuDynInst->wavefront();
14632  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14633  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14634  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14635 
14636  src0.readSrc();
14637  src1.read();
14638 
14639  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14640  if (wf->execMask(lane)) {
14641  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14642  }
14643  }
14644 
14645  vcc.write();
14646  }
14647 
14649  : Inst_VOPC(iFmt, "v_cmp_ge_i64")
14650  {
14651  setFlag(ALU);
14652  } // Inst_VOPC__V_CMP_GE_I64
14653 
14655  {
14656  } // ~Inst_VOPC__V_CMP_GE_I64
14657 
14658  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14659  void
14661  {
14662  Wavefront *wf = gpuDynInst->wavefront();
14663  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14664  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14665  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14666 
14667  src0.readSrc();
14668  src1.read();
14669 
14670  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14671  if (wf->execMask(lane)) {
14672  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14673  }
14674  }
14675 
14676  vcc.write();
14677  }
14678 
14680  : Inst_VOPC(iFmt, "v_cmp_t_i64")
14681  {
14682  setFlag(ALU);
14683  } // Inst_VOPC__V_CMP_T_I64
14684 
14686  {
14687  } // ~Inst_VOPC__V_CMP_T_I64
14688 
14689  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
14690  void
14692  {
14693  Wavefront *wf = gpuDynInst->wavefront();
14694  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14695 
14696  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14697  if (wf->execMask(lane)) {
14698  vcc.setBit(lane, 1);
14699  }
14700  }
14701 
14702  vcc.write();
14703  }
14704 
14706  : Inst_VOPC(iFmt, "v_cmp_f_u64")
14707  {
14708  setFlag(ALU);
14709  } // Inst_VOPC__V_CMP_F_U64
14710 
14712  {
14713  } // ~Inst_VOPC__V_CMP_F_U64
14714 
14715  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
14716  void
14718  {
14719  Wavefront *wf = gpuDynInst->wavefront();
14720  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14721 
14722  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14723  if (wf->execMask(lane)) {
14724  vcc.setBit(lane, 0);
14725  }
14726  }
14727 
14728  vcc.write();
14729  }
14730 
14732  : Inst_VOPC(iFmt, "v_cmp_lt_u64")
14733  {
14734  setFlag(ALU);
14735  } // Inst_VOPC__V_CMP_LT_U64
14736 
14738  {
14739  } // ~Inst_VOPC__V_CMP_LT_U64
14740 
14741  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14742  void
14744  {
14745  Wavefront *wf = gpuDynInst->wavefront();
14746  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14747  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14748  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14749 
14750  src0.readSrc();
14751  src1.read();
14752 
14753  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14754  if (wf->execMask(lane)) {
14755  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14756  }
14757  }
14758 
14759  vcc.write();
14760  }
14761 
14763  : Inst_VOPC(iFmt, "v_cmp_eq_u64")
14764  {
14765  setFlag(ALU);
14766  } // Inst_VOPC__V_CMP_EQ_U64
14767 
14769  {
14770  } // ~Inst_VOPC__V_CMP_EQ_U64
14771 
14772  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14773  void
14775  {
14776  Wavefront *wf = gpuDynInst->wavefront();
14777  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14778  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14779  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14780 
14781  src0.readSrc();
14782  src1.read();
14783 
14784  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14785  if (wf->execMask(lane)) {
14786  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14787  }
14788  }
14789 
14790  vcc.write();
14791  }
14792 
14794  : Inst_VOPC(iFmt, "v_cmp_le_u64")
14795  {
14796  setFlag(ALU);
14797  } // Inst_VOPC__V_CMP_LE_U64
14798 
14800  {
14801  } // ~Inst_VOPC__V_CMP_LE_U64
14802 
14803  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14804  void
14806  {
14807  Wavefront *wf = gpuDynInst->wavefront();
14808  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14809  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14810  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14811 
14812  src0.readSrc();
14813  src1.read();
14814 
14815  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14816  if (wf->execMask(lane)) {
14817  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14818  }
14819  }
14820 
14821  vcc.write();
14822  }
14823 
14825  : Inst_VOPC(iFmt, "v_cmp_gt_u64")
14826  {
14827  setFlag(ALU);
14828  } // Inst_VOPC__V_CMP_GT_U64
14829 
14831  {
14832  } // ~Inst_VOPC__V_CMP_GT_U64
14833 
14834  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14835  void
14837  {
14838  Wavefront *wf = gpuDynInst->wavefront();
14839  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14840  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14841  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14842 
14843  src0.readSrc();
14844  src1.read();
14845 
14846  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14847  if (wf->execMask(lane)) {
14848  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14849  }
14850  }
14851 
14852  vcc.write();
14853  }
14854 
14856  : Inst_VOPC(iFmt, "v_cmp_ne_u64")
14857  {
14858  setFlag(ALU);
14859  } // Inst_VOPC__V_CMP_NE_U64
14860 
14862  {
14863  } // ~Inst_VOPC__V_CMP_NE_U64
14864 
14865  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14866  void
14868  {
14869  Wavefront *wf = gpuDynInst->wavefront();
14870  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14871  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14872  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14873 
14874  src0.readSrc();
14875  src1.read();
14876 
14877  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14878  if (wf->execMask(lane)) {
14879  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14880  }
14881  }
14882 
14883  vcc.write();
14884  }
14885 
14887  : Inst_VOPC(iFmt, "v_cmp_ge_u64")
14888  {
14889  setFlag(ALU);
14890  } // Inst_VOPC__V_CMP_GE_U64
14891 
14893  {
14894  } // ~Inst_VOPC__V_CMP_GE_U64
14895 
14896  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14897  void
14899  {
14900  Wavefront *wf = gpuDynInst->wavefront();
14901  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14902  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14903  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14904 
14905  src0.readSrc();
14906  src1.read();
14907 
14908  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14909  if (wf->execMask(lane)) {
14910  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14911  }
14912  }
14913 
14914  vcc.write();
14915  }
14916 
14918  : Inst_VOPC(iFmt, "v_cmp_t_u64")
14919  {
14920  setFlag(ALU);
14921  } // Inst_VOPC__V_CMP_T_U64
14922 
14924  {
14925  } // ~Inst_VOPC__V_CMP_T_U64
14926 
14927  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
14928  void
14930  {
14931  Wavefront *wf = gpuDynInst->wavefront();
14932  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14933 
14934  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14935  if (wf->execMask(lane)) {
14936  vcc.setBit(lane, 1);
14937  }
14938  }
14939 
14940  vcc.write();
14941  }
14942 
14944  : Inst_VOPC(iFmt, "v_cmpx_f_i64")
14945  {
14946  setFlag(ALU);
14947  } // Inst_VOPC__V_CMPX_F_I64
14948 
14950  {
14951  } // ~Inst_VOPC__V_CMPX_F_I64
14952 
14953  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
14954  void
14956  {
14957  Wavefront *wf = gpuDynInst->wavefront();
14958  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14959 
14960  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14961  if (wf->execMask(lane)) {
14962  vcc.setBit(lane, 0);
14963  }
14964  }
14965 
14966  wf->execMask() = vcc.rawData();
14967  vcc.write();
14968  }
14969 
14971  : Inst_VOPC(iFmt, "v_cmpx_lt_i64")
14972  {
14973  setFlag(ALU);
14974  } // Inst_VOPC__V_CMPX_LT_I64
14975 
14977  {
14978  } // ~Inst_VOPC__V_CMPX_LT_I64
14979 
14980  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14981  void
14983  {
14984  Wavefront *wf = gpuDynInst->wavefront();
14985  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14986  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14987  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14988 
14989  src0.readSrc();
14990  src1.read();
14991 
14992  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14993  if (wf->execMask(lane)) {
14994  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14995  }
14996  }
14997 
14998  wf->execMask() = vcc.rawData();
14999  vcc.write();
15000  }
15001 
15003  : Inst_VOPC(iFmt, "v_cmpx_eq_i64")
15004  {
15005  setFlag(ALU);
15006  } // Inst_VOPC__V_CMPX_EQ_I64
15007 
15009  {
15010  } // ~Inst_VOPC__V_CMPX_EQ_I64
15011 
15012  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
15013  void
15015  {
15016  Wavefront *wf = gpuDynInst->wavefront();
15017  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15018  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15019  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15020 
15021  src0.readSrc();
15022  src1.read();
15023 
15024  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15025  if (wf->execMask(lane)) {
15026  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
15027  }
15028  }
15029 
15030  wf->execMask() = vcc.rawData();
15031  vcc.write();
15032  }
15033 
15035  : Inst_VOPC(iFmt, "v_cmpx_le_i64")
15036  {
15037  setFlag(ALU);
15038  } // Inst_VOPC__V_CMPX_LE_I64
15039 
15041  {
15042  } // ~Inst_VOPC__V_CMPX_LE_I64
15043 
15044  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
15045  void
15047  {
15048  Wavefront *wf = gpuDynInst->wavefront();
15049  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15050  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15051  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15052 
15053  src0.readSrc();
15054  src1.read();
15055 
15056  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15057  if (wf->execMask(lane)) {
15058  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
15059  }
15060  }
15061 
15062  wf->execMask() = vcc.rawData();
15063  vcc.write();
15064  }
15065 
15067  : Inst_VOPC(iFmt, "v_cmpx_gt_i64")
15068  {
15069  setFlag(ALU);
15070  } // Inst_VOPC__V_CMPX_GT_I64
15071 
15073  {
15074  } // ~Inst_VOPC__V_CMPX_GT_I64
15075 
15076  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
15077  void
15079  {
15080  Wavefront *wf = gpuDynInst->wavefront();
15081  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15082  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15083  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15084 
15085  src0.readSrc();
15086  src1.read();
15087 
15088  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15089  if (wf->execMask(lane)) {
15090  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
15091  }
15092  }
15093 
15094  wf->execMask() = vcc.rawData();
15095  vcc.write();
15096  }
15097 
15099  : Inst_VOPC(iFmt, "v_cmpx_ne_i64")
15100  {
15101  setFlag(ALU);
15102  } // Inst_VOPC__V_CMPX_NE_I64
15103 
15105  {
15106  } // ~Inst_VOPC__V_CMPX_NE_I64
15107 
15108  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
15109  void
15111  {
15112  Wavefront *wf = gpuDynInst->wavefront();
15113  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15114  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15115  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15116 
15117  src0.readSrc();
15118  src1.read();
15119 
15120  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15121  if (wf->execMask(lane)) {
15122  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
15123  }
15124  }
15125 
15126  wf->execMask() = vcc.rawData();
15127  vcc.write();
15128  }
15129 
15131  : Inst_VOPC(iFmt, "v_cmpx_ge_i64")
15132  {
15133  setFlag(ALU);
15134  } // Inst_VOPC__V_CMPX_GE_I64
15135 
15137  {
15138  } // ~Inst_VOPC__V_CMPX_GE_I64
15139 
15140  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
15141  void
15143  {
15144  Wavefront *wf = gpuDynInst->wavefront();
15145  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15146  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15147  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15148 
15149  src0.readSrc();
15150  src1.read();
15151 
15152  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15153  if (wf->execMask(lane)) {
15154  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
15155  }
15156  }
15157 
15158  wf->execMask() = vcc.rawData();
15159  vcc.write();
15160  }
15161 
15163  : Inst_VOPC(iFmt, "v_cmpx_t_i64")
15164  {
15165  setFlag(ALU);
15166  } // Inst_VOPC__V_CMPX_T_I64
15167 
15169  {
15170  } // ~Inst_VOPC__V_CMPX_T_I64
15171 
15172  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
15173  void
15175  {
15176  Wavefront *wf = gpuDynInst->wavefront();
15177  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15178 
15179  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15180  if (wf->execMask(lane)) {
15181  vcc.setBit(lane, 1);
15182  }
15183  }
15184 
15185  wf->execMask() = vcc.rawData();
15186  vcc.write();
15187  }
15188 
15190  : Inst_VOPC(iFmt, "v_cmpx_f_u64")
15191  {
15192  setFlag(ALU);
15193  } // Inst_VOPC__V_CMPX_F_U64
15194 
15196  {
15197  } // ~Inst_VOPC__V_CMPX_F_U64
15198 
15199  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
15200  void
15202  {
15203  Wavefront *wf = gpuDynInst->wavefront();
15204  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15205 
15206  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15207  if (wf->execMask(lane)) {
15208  vcc.setBit(lane, 0);
15209  }
15210  }
15211 
15212  wf->execMask() = vcc.rawData();
15213  vcc.write();
15214  }
15215 
15217  : Inst_VOPC(iFmt, "v_cmpx_lt_u64")
15218  {
15219  setFlag(ALU);
15220  } // Inst_VOPC__V_CMPX_LT_U64
15221 
15223  {
15224  } // ~Inst_VOPC__V_CMPX_LT_U64
15225 
15226  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
15227  void
15229  {
15230  Wavefront *wf = gpuDynInst->wavefront();
15231  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15232  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15233  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15234 
15235  src0.readSrc();
15236  src1.read();
15237 
15238  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15239  if (wf->execMask(lane)) {
15240  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
15241  }
15242  }
15243 
15244  wf->execMask() = vcc.rawData();
15245  vcc.write();
15246  }
15247 
15249  : Inst_VOPC(iFmt, "v_cmpx_eq_u64")
15250  {
15251  setFlag(ALU);
15252  } // Inst_VOPC__V_CMPX_EQ_U64
15253 
15255  {
15256  } // ~Inst_VOPC__V_CMPX_EQ_U64
15257 
15258  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
15259  void
15261  {
15262  Wavefront *wf = gpuDynInst->wavefront();
15263  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15264  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15265  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15266 
15267  src0.readSrc();
15268  src1.read();
15269 
15270  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15271  if (wf->execMask(lane)) {
15272  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
15273  }
15274  }
15275 
15276  wf->execMask() = vcc.rawData();
15277  vcc.write();
15278  }
15279 
15281  : Inst_VOPC(iFmt, "v_cmpx_le_u64")
15282  {
15283  setFlag(ALU);
15284  } // Inst_VOPC__V_CMPX_LE_U64
15285 
15287  {
15288  } // ~Inst_VOPC__V_CMPX_LE_U64
15289 
15290  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
15291  void
15293  {
15294  Wavefront *wf = gpuDynInst->wavefront();
15295  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15296  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15297  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15298 
15299  src0.readSrc();
15300  src1.read();
15301 
15302  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15303  if (wf->execMask(lane)) {
15304  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
15305  }
15306  }
15307 
15308  wf->execMask() = vcc.rawData();
15309  vcc.write();
15310  }
15311 
15313  : Inst_VOPC(iFmt, "v_cmpx_gt_u64")
15314  {
15315  setFlag(ALU);
15316  } // Inst_VOPC__V_CMPX_GT_U64
15317 
15319  {
15320  } // ~Inst_VOPC__V_CMPX_GT_U64
15321 
15322  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
15323  void
15325  {
15326  Wavefront *wf = gpuDynInst->wavefront();
15327  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15328  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15329  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15330 
15331  src0.readSrc();
15332  src1.read();
15333 
15334  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15335  if (wf->execMask(lane)) {
15336  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
15337  }
15338  }
15339 
15340  wf->execMask() = vcc.rawData();
15341  vcc.write();
15342  }
15343 
15345  : Inst_VOPC(iFmt, "v_cmpx_ne_u64")
15346  {
15347  setFlag(ALU);
15348  } // Inst_VOPC__V_CMPX_NE_U64
15349 
15351  {
15352  } // ~Inst_VOPC__V_CMPX_NE_U64
15353 
15354  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
15355  void
15357  {
15358  Wavefront *wf = gpuDynInst->wavefront();
15359  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15360  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15361  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15362 
15363  src0.readSrc();
15364  src1.read();
15365 
15366  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15367  if (wf->execMask(lane)) {
15368  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
15369  }
15370  }
15371 
15372  wf->execMask() = vcc.rawData();
15373  vcc.write();
15374  }
15375 
15377  : Inst_VOPC(iFmt, "v_cmpx_ge_u64")
15378  {
15379  setFlag(ALU);
15380  } // Inst_VOPC__V_CMPX_GE_U64
15381 
15383  {
15384  } // ~Inst_VOPC__V_CMPX_GE_U64
15385 
15386  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
15387  void
15389  {
15390  Wavefront *wf = gpuDynInst->wavefront();
15391  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15392  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15393  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15394 
15395  src0.readSrc();
15396  src1.read();
15397 
15398  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15399  if (wf->execMask(lane)) {
15400  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
15401  }
15402  }
15403 
15404  wf->execMask() = vcc.rawData();
15405  vcc.write();
15406  }
15407 
15409  : Inst_VOPC(iFmt, "v_cmpx_t_u64")
15410  {
15411  setFlag(ALU);
15412  } // Inst_VOPC__V_CMPX_T_U64
15413 
15415  {
15416  } // ~Inst_VOPC__V_CMPX_T_U64
15417 
15418  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
15419  void
15421  {
15422  Wavefront *wf = gpuDynInst->wavefront();
15423  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15424 
15425  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15426  if (wf->execMask(lane)) {
15427  vcc.setBit(lane, 1);
15428  }
15429  }
15430 
15431  wf->execMask() = vcc.rawData();
15432  vcc.write();
15433  }
15434 
15436  InFmt_VINTRP *iFmt)
15437  : Inst_VINTRP(iFmt, "v_interp_p1_f32")
15438  {
15439  setFlag(ALU);
15440  setFlag(F32);
15441  } // Inst_VINTRP__V_INTERP_P1_F32
15442 
15444  {
15445  } // ~Inst_VINTRP__V_INTERP_P1_F32
15446 
15447  // D.f = P10 * S.f + P0; parameter interpolation
15448  void
15450  {
15452  }
15453 
15455  InFmt_VINTRP *iFmt)
15456  : Inst_VINTRP(iFmt, "v_interp_p2_f32")
15457  {
15458  setFlag(ALU);
15459  setFlag(F32);
15460  } // Inst_VINTRP__V_INTERP_P2_F32
15461 
15463  {
15464  } // ~Inst_VINTRP__V_INTERP_P2_F32
15465 
15466  // D.f = P20 * S.f + D.f; parameter interpolation
15467  void
15469  {
15471  }
15472 
15474  InFmt_VINTRP *iFmt)
15475  : Inst_VINTRP(iFmt, "v_interp_mov_f32")
15476  {
15477  setFlag(ALU);
15478  setFlag(F32);
15479  } // Inst_VINTRP__V_INTERP_MOV_F32
15480 
15482  {
15483  } // ~Inst_VINTRP__V_INTERP_MOV_F32
15484 
15485  void
15487  {
15489  }
15490 
15492  InFmt_VOP3 *iFmt)
15493  : Inst_VOP3(iFmt, "v_cmp_class_f32", true)
15494  {
15495  setFlag(ALU);
15496  setFlag(F32);
15497  } // Inst_VOP3__V_CMP_CLASS_F32
15498 
15500  {
15501  } // ~Inst_VOP3__V_CMP_CLASS_F32
15502 
15503  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f
15504  // The function reports true if the floating point value is any of the
15505  // numeric types selected in S1.u according to the following list:
15506  // S1.u[0] -- value is a signaling NaN.
15507  // S1.u[1] -- value is a quiet NaN.
15508  // S1.u[2] -- value is negative infinity.
15509  // S1.u[3] -- value is a negative normal value.
15510  // S1.u[4] -- value is a negative denormal value.
15511  // S1.u[5] -- value is negative zero.
15512  // S1.u[6] -- value is positive zero.
15513  // S1.u[7] -- value is a positive denormal value.
15514  // S1.u[8] -- value is a positive normal value.
15515  // S1.u[9] -- value is positive infinity.
15516  void
15518  {
15519  Wavefront *wf = gpuDynInst->wavefront();
15520  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
15521  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
15522  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
15523 
15524  src0.readSrc();
15525  src1.readSrc();
15526 
15527  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15528  if (wf->execMask(lane)) {
15529  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
15530  // is NaN
15531  if (std::isnan(src0[lane])) {
15532  sdst.setBit(lane, 1);
15533  continue;
15534  }
15535  }
15536  if (bits(src1[lane], 2)) {
15537  // is -infinity
15538  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
15539  sdst.setBit(lane, 1);
15540  continue;
15541  }
15542  }
15543  if (bits(src1[lane], 3)) {
15544  // is -normal
15545  if (std::isnormal(src0[lane])
15546  && std::signbit(src0[lane])) {
15547  sdst.setBit(lane, 1);
15548  continue;
15549  }
15550  }
15551  if (bits(src1[lane], 4)) {
15552  // is -denormal
15553  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15554  && std::signbit(src0[lane])) {
15555  sdst.setBit(lane, 1);
15556  continue;
15557  }
15558  }
15559  if (bits(src1[lane], 5)) {
15560  // is -zero
15561  if (std::fpclassify(src0[lane]) == FP_ZERO
15562  && std::signbit(src0[lane])) {
15563  sdst.setBit(lane, 1);
15564  continue;
15565  }
15566  }
15567  if (bits(src1[lane], 6)) {
15568  // is +zero
15569  if (std::fpclassify(src0[lane]) == FP_ZERO
15570  && !std::signbit(src0[lane])) {
15571  sdst.setBit(lane, 1);
15572  continue;
15573  }
15574  }
15575  if (bits(src1[lane], 7)) {
15576  // is +denormal
15577  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15578  && !std::signbit(src0[lane])) {
15579  sdst.setBit(lane, 1);
15580  continue;
15581  }
15582  }
15583  if (bits(src1[lane], 8)) {
15584  // is +normal
15585  if (std::isnormal(src0[lane])
15586  && !std::signbit(src0[lane])) {
15587  sdst.setBit(lane, 1);
15588  continue;
15589  }
15590  }
15591  if (bits(src1[lane], 9)) {
15592  // is +infinity
15593  if (std::isinf(src0[lane])
15594  && !std::signbit(src0[lane])) {
15595  sdst.setBit(lane, 1);
15596  continue;
15597  }
15598  }
15599  }
15600  }
15601 
15602  sdst.write();
15603  }
15604 
15606  InFmt_VOP3 *iFmt)
15607  : Inst_VOP3(iFmt, "v_cmpx_class_f32", true)
15608  {
15609  setFlag(ALU);
15610  setFlag(F32);
15611  } // Inst_VOP3__V_CMPX_CLASS_F32
15612 
15614  {
15615  } // ~Inst_VOP3__V_CMPX_CLASS_F32
15616 
15617  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
15618  // S0.f
15619  // The function reports true if the floating point value is any of the
15620  // numeric types selected in S1.u according to the following list:
15621  // S1.u[0] -- value is a signaling NaN.
15622  // S1.u[1] -- value is a quiet NaN.
15623  // S1.u[2] -- value is negative infinity.
15624  // S1.u[3] -- value is a negative normal value.
15625  // S1.u[4] -- value is a negative denormal value.
15626  // S1.u[5] -- value is negative zero.
15627  // S1.u[6] -- value is positive zero.
15628  // S1.u[7] -- value is a positive denormal value.
15629  // S1.u[8] -- value is a positive normal value.
15630  // S1.u[9] -- value is positive infinity.
15631  void
15633  {
15634  Wavefront *wf = gpuDynInst->wavefront();
15635  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
15636  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
15637  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
15638 
15639  src0.readSrc();
15640  src1.readSrc();
15641 
15642  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15643  if (wf->execMask(lane)) {
15644  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
15645  // is NaN
15646  if (std::isnan(src0[lane])) {
15647  sdst.setBit(lane, 1);
15648  continue;
15649  }
15650  }
15651  if (bits(src1[lane], 2)) {
15652  // is -infinity
15653  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
15654  sdst.setBit(lane, 1);
15655  continue;
15656  }
15657  }
15658  if (bits(src1[lane], 3)) {
15659  // is -normal
15660  if (std::isnormal(src0[lane])
15661  && std::signbit(src0[lane])) {
15662  sdst.setBit(lane, 1);
15663  continue;
15664  }
15665  }
15666  if (bits(src1[lane], 4)) {
15667  // is -denormal
15668  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15669  && std::signbit(src0[lane])) {
15670  sdst.setBit(lane, 1);
15671  continue;
15672  }
15673  }
15674  if (bits(src1[lane], 5)) {
15675  // is -zero
15676  if (std::fpclassify(src0[lane]) == FP_ZERO
15677  && std::signbit(src0[lane])) {
15678  sdst.setBit(lane, 1);
15679  continue;
15680  }
15681  }
15682  if (bits(src1[lane], 6)) {
15683  // is +zero
15684  if (std::fpclassify(src0[lane]) == FP_ZERO
15685  && !std::signbit(src0[lane])) {
15686  sdst.setBit(lane, 1);
15687  continue;
15688  }
15689  }
15690  if (bits(src1[lane], 7)) {
15691  // is +denormal
15692  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15693  && !std::signbit(src0[lane])) {
15694  sdst.setBit(lane, 1);
15695  continue;
15696  }
15697  }
15698  if (bits(src1[lane], 8)) {
15699  // is +normal
15700  if (std::isnormal(src0[lane])
15701  && !std::signbit(src0[lane])) {
15702  sdst.setBit(lane, 1);
15703  continue;
15704  }
15705  }
15706  if (bits(src1[lane], 9)) {
15707  // is +infinity
15708  if (std::isinf(src0[lane])
15709  && !std::signbit(src0[lane])) {
15710  sdst.setBit(lane, 1);
15711  continue;
15712  }
15713  }
15714  }
15715  }
15716 
15717  wf->execMask() = sdst.rawData();
15718  sdst.write();
15719  }
15720 
15722  InFmt_VOP3 *iFmt)
15723  : Inst_VOP3(iFmt, "v_cmp_class_f64", true)
15724  {
15725  setFlag(ALU);
15726  setFlag(F64);
15727  } // Inst_VOP3__V_CMP_CLASS_F64
15728 
15730  {
15731  } // ~Inst_VOP3__V_CMP_CLASS_F64
15732 
15733  // VCC = IEEE numeric class function specified in S1.u, performed on S0.d
15734  // The function reports true if the floating point value is any of the
15735  // numeric types selected in S1.u according to the following list:
15736  // S1.u[0] -- value is a signaling NaN.
15737  // S1.u[1] -- value is a quiet NaN.
15738  // S1.u[2] -- value is negative infinity.
15739  // S1.u[3] -- value is a negative normal value.
15740  // S1.u[4] -- value is a negative denormal value.
15741  // S1.u[5] -- value is negative zero.
15742  // S1.u[6] -- value is positive zero.
15743  // S1.u[7] -- value is a positive denormal value.
15744  // S1.u[8] -- value is a positive normal value.
15745  // S1.u[9] -- value is positive infinity.
15746  void
15748  {
15749  Wavefront *wf = gpuDynInst->wavefront();
15750  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
15751  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
15752  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
15753 
15754  src0.readSrc();
15755  src1.readSrc();
15756 
15757  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15758  if (wf->execMask(lane)) {
15759  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
15760  // is NaN
15761  if (std::isnan(src0[lane])) {
15762  sdst.setBit(lane, 1);
15763  continue;
15764  }
15765  }
15766  if (bits(src1[lane], 2)) {
15767  // is -infinity
15768  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
15769  sdst.setBit(lane, 1);
15770  continue;
15771  }
15772  }
15773  if (bits(src1[lane], 3)) {
15774  // is -normal
15775  if (std::isnormal(src0[lane])
15776  && std::signbit(src0[lane])) {
15777  sdst.setBit(lane, 1);
15778  continue;
15779  }
15780  }
15781  if (bits(src1[lane], 4)) {
15782  // is -denormal
15783  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15784  && std::signbit(src0[lane])) {
15785  sdst.setBit(lane, 1);
15786  continue;
15787  }
15788  }
15789  if (bits(src1[lane], 5)) {
15790  // is -zero
15791  if (std::fpclassify(src0[lane]) == FP_ZERO
15792  && std::signbit(src0[lane])) {
15793  sdst.setBit(lane, 1);
15794  continue;
15795  }
15796  }
15797  if (bits(src1[lane], 6)) {
15798  // is +zero
15799  if (std::fpclassify(src0[lane]) == FP_ZERO
15800  && !std::signbit(src0[lane])) {
15801  sdst.setBit(lane, 1);
15802  continue;
15803  }
15804  }
15805  if (bits(src1[lane], 7)) {
15806  // is +denormal
15807  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15808  && !std::signbit(src0[lane])) {
15809  sdst.setBit(lane, 1);
15810  continue;
15811  }
15812  }
15813  if (bits(src1[lane], 8)) {
15814  // is +normal
15815  if (std::isnormal(src0[lane])
15816  && !std::signbit(src0[lane])) {
15817  sdst.setBit(lane, 1);
15818  continue;
15819  }
15820  }
15821  if (bits(src1[lane], 9)) {
15822  // is +infinity
15823  if (std::isinf(src0[lane])
15824  && !std::signbit(src0[lane])) {
15825  sdst.setBit(lane, 1);
15826  continue;
15827  }
15828  }
15829  }
15830  }
15831 
15832  sdst.write();
15833  }
15834 
15836  InFmt_VOP3 *iFmt)
15837  : Inst_VOP3(iFmt, "v_cmpx_class_f64", true)
15838  {
15839  setFlag(ALU);
15840  setFlag(F64);
15841  } // Inst_VOP3__V_CMPX_CLASS_F64
15842 
15844  {
15845  } // ~Inst_VOP3__V_CMPX_CLASS_F64
15846 
15847  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
15848  // S0.d
15849  // The function reports true if the floating point value is any of the
15850  // numeric types selected in S1.u according to the following list:
15851  // S1.u[0] -- value is a signaling NaN.
15852  // S1.u[1] -- value is a quiet NaN.
15853  // S1.u[2] -- value is negative infinity.
15854  // S1.u[3] -- value is a negative normal value.
15855  // S1.u[4] -- value is a negative denormal value.
15856  // S1.u[5] -- value is negative zero.
15857  // S1.u[6] -- value is positive zero.
15858  // S1.u[7] -- value is a positive denormal value.
15859  // S1.u[8] -- value is a positive normal value.
15860  // S1.u[9] -- value is positive infinity.
15861  void
15863  {
15864  Wavefront *wf = gpuDynInst->wavefront();
15865  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
15866  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
15867  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
15868 
15869  src0.readSrc();
15870  src1.readSrc();
15871 
15872  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15873  if (wf->execMask(lane)) {
15874  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
15875  // is NaN
15876  if (std::isnan(src0[lane])) {
15877  sdst.setBit(lane, 1);
15878  continue;
15879  }
15880  }
15881  if (bits(src1[lane], 2)) {
15882  // is -infinity
15883  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
15884  sdst.setBit(lane, 1);
15885  continue;
15886  }
15887  }
15888  if (bits(src1[lane], 3)) {
15889  // is -normal
15890  if (std::isnormal(src0[lane])
15891  && std::signbit(src0[lane])) {
15892  sdst.setBit(lane, 1);
15893  continue;
15894  }
15895  }
15896  if (bits(src1[lane], 4)) {
15897  // is -denormal
15898  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15899  && std::signbit(src0[lane])) {
15900  sdst.setBit(lane, 1);
15901  continue;
15902  }
15903  }
15904  if (bits(src1[lane], 5)) {
15905  // is -zero
15906  if (std::fpclassify(src0[lane]) == FP_ZERO
15907  && std::signbit(src0[lane])) {
15908  sdst.setBit(lane, 1);
15909  continue;
15910  }
15911  }
15912  if (bits(src1[lane], 6)) {
15913  // is +zero
15914  if (std::fpclassify(src0[lane]) == FP_ZERO
15915  && !std::signbit(src0[lane])) {
15916  sdst.setBit(lane, 1);
15917  continue;
15918  }
15919  }
15920  if (bits(src1[lane], 7)) {
15921  // is +denormal
15922  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15923  && !std::signbit(src0[lane])) {
15924  sdst.setBit(lane, 1);
15925  continue;
15926  }
15927  }
15928  if (bits(src1[lane], 8)) {
15929  // is +normal
15930  if (std::isnormal(src0[lane])
15931  && !std::signbit(src0[lane])) {
15932  sdst.setBit(lane, 1);
15933  continue;
15934  }
15935  }
15936  if (bits(src1[lane], 9)) {
15937  // is +infinity
15938  if (std::isinf(src0[lane])
15939  && !std::signbit(src0[lane])) {
15940  sdst.setBit(lane, 1);
15941  continue;
15942  }
15943  }
15944  }
15945  }
15946 
15947  wf->execMask() = sdst.rawData();
15948  sdst.write();
15949  }
15950 
15952  InFmt_VOP3 *iFmt)
15953  : Inst_VOP3(iFmt, "v_cmp_class_f16", true)
15954  {
15955  setFlag(ALU);
15956  setFlag(F16);
15957  } // Inst_VOP3__V_CMP_CLASS_F16
15958 
15960  {
15961  } // ~Inst_VOP3__V_CMP_CLASS_F16
15962 
15963  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f16
15964  // The function reports true if the floating point value is any of the
15965  // numeric types selected in S1.u according to the following list:
15966  // S1.u[0] -- value is a signaling NaN.
15967  // S1.u[1] -- value is a quiet NaN.
15968  // S1.u[2] -- value is negative infinity.
15969  // S1.u[3] -- value is a negative normal value.
15970  // S1.u[4] -- value is a negative denormal value.
15971  // S1.u[5] -- value is negative zero.
15972  // S1.u[6] -- value is positive zero.
15973  // S1.u[7] -- value is a positive denormal value.
15974  // S1.u[8] -- value is a positive normal value.
15975  // S1.u[9] -- value is positive infinity.
15976  void
15978  {
15980  }
15981 
15983  InFmt_VOP3 *iFmt)
15984  : Inst_VOP3(iFmt, "v_cmpx_class_f16", true)
15985  {
15986  setFlag(ALU);
15987  setFlag(F16);
15988  } // Inst_VOP3__V_CMPX_CLASS_F16
15989 
15991  {
15992  } // ~Inst_VOP3__V_CMPX_CLASS_F16
15993 
15994  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
15995  // S0.f16
15996  // The function reports true if the floating point value is any of the
15997  // numeric types selected in S1.u according to the following list:
15998  // S1.u[0] -- value is a signaling NaN.
15999  // S1.u[1] -- value is a quiet NaN.
16000  // S1.u[2] -- value is negative infinity.
16001  // S1.u[3] -- value is a negative normal value.
16002  // S1.u[4] -- value is a negative denormal value.
16003  // S1.u[5] -- value is negative zero.
16004  // S1.u[6] -- value is positive zero.
16005  // S1.u[7] -- value is a positive denormal value.
16006  // S1.u[8] -- value is a positive normal value.
16007  // S1.u[9] -- value is positive infinity.
16008  void
16010  {
16012  }
16013 
16015  : Inst_VOP3(iFmt, "v_cmp_f_f16", true)
16016  {
16017  setFlag(ALU);
16018  setFlag(F16);
16019  } // Inst_VOP3__V_CMP_F_F16
16020 
16022  {
16023  } // ~Inst_VOP3__V_CMP_F_F16
16024 
16025  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
16026  void
16028  {
16030  }
16031 
16033  InFmt_VOP3 *iFmt)
16034  : Inst_VOP3(iFmt, "v_cmp_lt_f16", true)
16035  {
16036  setFlag(ALU);
16037  setFlag(F16);
16038  } // Inst_VOP3__V_CMP_LT_F16
16039 
16041  {
16042  } // ~Inst_VOP3__V_CMP_LT_F16
16043 
16044  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16045  void
16047  {
16049  }
16050 
16052  InFmt_VOP3 *iFmt)
16053  : Inst_VOP3(iFmt, "v_cmp_eq_f16", true)
16054  {
16055  setFlag(ALU);
16056  setFlag(F16);
16057  } // Inst_VOP3__V_CMP_EQ_F16
16058 
16060  {
16061  } // ~Inst_VOP3__V_CMP_EQ_F16
16062 
16063  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16064  void
16066  {
16068  }
16069 
16071  InFmt_VOP3 *iFmt)
16072  : Inst_VOP3(iFmt, "v_cmp_le_f16", true)
16073  {
16074  setFlag(ALU);
16075  setFlag(F16);
16076  } // Inst_VOP3__V_CMP_LE_F16
16077 
16079  {
16080  } // ~Inst_VOP3__V_CMP_LE_F16
16081 
16082  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16083  void
16085  {
16087  }
16088 
16090  InFmt_VOP3 *iFmt)
16091  : Inst_VOP3(iFmt, "v_cmp_gt_f16", true)
16092  {
16093  setFlag(ALU);
16094  setFlag(F16);
16095  } // Inst_VOP3__V_CMP_GT_F16
16096 
16098  {
16099  } // ~Inst_VOP3__V_CMP_GT_F16
16100 
16101  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16102  void
16104  {
16106  }
16107 
16109  InFmt_VOP3 *iFmt)
16110  : Inst_VOP3(iFmt, "v_cmp_lg_f16", true)
16111  {
16112  setFlag(ALU);
16113  setFlag(F16);
16114  } // Inst_VOP3__V_CMP_LG_F16
16115 
16117  {
16118  } // ~Inst_VOP3__V_CMP_LG_F16
16119 
16120  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16121  void
16123  {
16125  }
16126 
16128  InFmt_VOP3 *iFmt)
16129  : Inst_VOP3(iFmt, "v_cmp_ge_f16", true)
16130  {
16131  setFlag(ALU);
16132  setFlag(F16);
16133  } // Inst_VOP3__V_CMP_GE_F16
16134 
16136  {
16137  } // ~Inst_VOP3__V_CMP_GE_F16
16138 
16139  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16140  void
16142  {
16144  }
16145 
16147  : Inst_VOP3(iFmt, "v_cmp_o_f16", true)
16148  {
16149  setFlag(ALU);
16150  setFlag(F16);
16151  } // Inst_VOP3__V_CMP_O_F16
16152 
16154  {
16155  } // ~Inst_VOP3__V_CMP_O_F16
16156 
16157  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
16158  void
16160  {
16162  }
16163 
16165  : Inst_VOP3(iFmt, "v_cmp_u_f16", true)
16166  {
16167  setFlag(ALU);
16168  setFlag(F16);
16169  } // Inst_VOP3__V_CMP_U_F16
16170 
16172  {
16173  } // ~Inst_VOP3__V_CMP_U_F16
16174 
16175  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
16176  void
16178  {
16180  }
16181 
16183  InFmt_VOP3 *iFmt)
16184  : Inst_VOP3(iFmt, "v_cmp_nge_f16", true)
16185  {
16186  setFlag(ALU);
16187  setFlag(F16);
16188  } // Inst_VOP3__V_CMP_NGE_F16
16189 
16191  {
16192  } // ~Inst_VOP3__V_CMP_NGE_F16
16193 
16194  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
16195  void
16197  {
16199  }
16200 
16202  InFmt_VOP3 *iFmt)
16203  : Inst_VOP3(iFmt, "v_cmp_nlg_f16", true)
16204  {
16205  setFlag(ALU);
16206  setFlag(F16);
16207  } // Inst_VOP3__V_CMP_NLG_F16
16208 
16210  {
16211  } // ~Inst_VOP3__V_CMP_NLG_F16
16212 
16213  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
16214  void
16216  {
16218  }
16219 
16221  InFmt_VOP3 *iFmt)
16222  : Inst_VOP3(iFmt, "v_cmp_ngt_f16", true)
16223  {
16224  setFlag(ALU);
16225  setFlag(F16);
16226  } // Inst_VOP3__V_CMP_NGT_F16
16227 
16229  {
16230  } // ~Inst_VOP3__V_CMP_NGT_F16
16231 
16232  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
16233  void
16235  {
16237  }
16238 
16240  InFmt_VOP3 *iFmt)
16241  : Inst_VOP3(iFmt, "v_cmp_nle_f16", true)
16242  {
16243  setFlag(ALU);
16244  setFlag(F16);
16245  } // Inst_VOP3__V_CMP_NLE_F16
16246 
16248  {
16249  } // ~Inst_VOP3__V_CMP_NLE_F16
16250 
16251  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
16252  void
16254  {
16256  }
16257 
16259  InFmt_VOP3 *iFmt)
16260  : Inst_VOP3(iFmt, "v_cmp_neq_f16", true)
16261  {
16262  setFlag(ALU);
16263  setFlag(F16);
16264  } // Inst_VOP3__V_CMP_NEQ_F16
16265 
16267  {
16268  } // ~Inst_VOP3__V_CMP_NEQ_F16
16269 
16270  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
16271  void
16273  {
16275  }
16276 
16278  InFmt_VOP3 *iFmt)
16279  : Inst_VOP3(iFmt, "v_cmp_nlt_f16", true)
16280  {
16281  setFlag(ALU);
16282  setFlag(F16);
16283  } // Inst_VOP3__V_CMP_NLT_F16
16284 
16286  {
16287  } // ~Inst_VOP3__V_CMP_NLT_F16
16288 
16289  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
16290  void
16292  {
16294  }
16295 
16297  InFmt_VOP3 *iFmt)
16298  : Inst_VOP3(iFmt, "v_cmp_tru_f16", true)
16299  {
16300  setFlag(ALU);
16301  setFlag(F16);
16302  } // Inst_VOP3__V_CMP_TRU_F16
16303 
16305  {
16306  } // ~Inst_VOP3__V_CMP_TRU_F16
16307 
16308  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
16309  void
16311  {
16312  Wavefront *wf = gpuDynInst->wavefront();
16313  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16314 
16315  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16316  if (wf->execMask(lane)) {
16317  sdst.setBit(lane, 1);
16318  }
16319  }
16320 
16321  sdst.write();
16322  }
16323 
16325  InFmt_VOP3 *iFmt)
16326  : Inst_VOP3(iFmt, "v_cmpx_f_f16", true)
16327  {
16328  setFlag(ALU);
16329  } // Inst_VOP3__V_CMPX_F_F16
16330 
16332  {
16333  } // ~Inst_VOP3__V_CMPX_F_F16
16334 
16335  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
16336  void
16338  {
16339  Wavefront *wf = gpuDynInst->wavefront();
16340  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16341 
16342  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16343  if (wf->execMask(lane)) {
16344  sdst.setBit(lane, 0);
16345  }
16346  }
16347 
16348  wf->execMask() = sdst.rawData();
16349  sdst.write();
16350  }
16351 
16353  InFmt_VOP3 *iFmt)
16354  : Inst_VOP3(iFmt, "v_cmpx_lt_f16", true)
16355  {
16356  setFlag(ALU);
16357  setFlag(F16);
16358  } // Inst_VOP3__V_CMPX_LT_F16
16359 
16361  {
16362  } // ~Inst_VOP3__V_CMPX_LT_F16
16363 
16364  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16365  void
16367  {
16369  }
16370 
16372  InFmt_VOP3 *iFmt)
16373  : Inst_VOP3(iFmt, "v_cmpx_eq_f16", true)
16374  {
16375  setFlag(ALU);
16376  setFlag(F16);
16377  } // Inst_VOP3__V_CMPX_EQ_F16
16378 
16380  {
16381  } // ~Inst_VOP3__V_CMPX_EQ_F16
16382 
16383  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16384  void
16386  {
16388  }
16389 
16391  InFmt_VOP3 *iFmt)
16392  : Inst_VOP3(iFmt, "v_cmpx_le_f16", true)
16393  {
16394  setFlag(ALU);
16395  setFlag(F16);
16396  } // Inst_VOP3__V_CMPX_LE_F16
16397 
16399  {
16400  } // ~Inst_VOP3__V_CMPX_LE_F16
16401 
16402  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16403  void
16405  {
16407  }
16408 
16410  InFmt_VOP3 *iFmt)
16411  : Inst_VOP3(iFmt, "v_cmpx_gt_f16", true)
16412  {
16413  setFlag(ALU);
16414  setFlag(F16);
16415  } // Inst_VOP3__V_CMPX_GT_F16
16416 
16418  {
16419  } // ~Inst_VOP3__V_CMPX_GT_F16
16420 
16421  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16422  void
16424  {
16426  }
16427 
16429  InFmt_VOP3 *iFmt)
16430  : Inst_VOP3(iFmt, "v_cmpx_lg_f16", true)
16431  {
16432  setFlag(ALU);
16433  setFlag(F16);
16434  } // Inst_VOP3__V_CMPX_LG_F16
16435 
16437  {
16438  } // ~Inst_VOP3__V_CMPX_LG_F16
16439 
16440  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16441  void
16443  {
16445  }
16446 
16448  InFmt_VOP3 *iFmt)
16449  : Inst_VOP3(iFmt, "v_cmpx_ge_f16", true)
16450  {
16451  setFlag(ALU);
16452  setFlag(F16);
16453  } // Inst_VOP3__V_CMPX_GE_F16
16454 
16456  {
16457  } // ~Inst_VOP3__V_CMPX_GE_F16
16458 
16459  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16460  void
16462  {
16464  }
16465 
16467  InFmt_VOP3 *iFmt)
16468  : Inst_VOP3(iFmt, "v_cmpx_o_f16", true)
16469  {
16470  setFlag(ALU);
16471  setFlag(F16);
16472  } // Inst_VOP3__V_CMPX_O_F16
16473 
16475  {
16476  } // ~Inst_VOP3__V_CMPX_O_F16
16477 
16478  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
16479  // encoding.
16480  void
16482  {
16484  }
16485 
16487  InFmt_VOP3 *iFmt)
16488  : Inst_VOP3(iFmt, "v_cmpx_u_f16", true)
16489  {
16490  setFlag(ALU);
16491  setFlag(F16);
16492  } // Inst_VOP3__V_CMPX_U_F16
16493 
16495  {
16496  } // ~Inst_VOP3__V_CMPX_U_F16
16497 
16498  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
16499  // encoding.
16500  void
16502  {
16504  }
16505 
16507  InFmt_VOP3 *iFmt)
16508  : Inst_VOP3(iFmt, "v_cmpx_nge_f16", true)
16509  {
16510  setFlag(ALU);
16511  setFlag(F16);
16512  } // Inst_VOP3__V_CMPX_NGE_F16
16513 
16515  {
16516  } // ~Inst_VOP3__V_CMPX_NGE_F16
16517 
16518  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
16519  void
16521  {
16523  }
16524 
16526  InFmt_VOP3 *iFmt)
16527  : Inst_VOP3(iFmt, "v_cmpx_nlg_f16", true)
16528  {
16529  setFlag(ALU);
16530  setFlag(F16);
16531  } // Inst_VOP3__V_CMPX_NLG_F16
16532 
16534  {
16535  } // ~Inst_VOP3__V_CMPX_NLG_F16
16536 
16537  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
16538  void
16540  {
16542  }
16543 
16545  InFmt_VOP3 *iFmt)
16546  : Inst_VOP3(iFmt, "v_cmpx_ngt_f16", true)
16547  {
16548  setFlag(ALU);
16549  setFlag(F16);
16550  } // Inst_VOP3__V_CMPX_NGT_F16
16551 
16553  {
16554  } // ~Inst_VOP3__V_CMPX_NGT_F16
16555 
16556  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
16557  void
16559  {
16561  }
16562 
16564  InFmt_VOP3 *iFmt)
16565  : Inst_VOP3(iFmt, "v_cmpx_nle_f16", true)
16566  {
16567  setFlag(ALU);
16568  setFlag(F16);
16569  } // Inst_VOP3__V_CMPX_NLE_F16
16570 
16572  {
16573  } // ~Inst_VOP3__V_CMPX_NLE_F16
16574 
16575  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
16576  void
16578  {
16580  }
16581 
16583  InFmt_VOP3 *iFmt)
16584  : Inst_VOP3(iFmt, "v_cmpx_neq_f16", true)
16585  {
16586  setFlag(ALU);
16587  setFlag(F16);
16588  } // Inst_VOP3__V_CMPX_NEQ_F16
16589 
16591  {
16592  } // ~Inst_VOP3__V_CMPX_NEQ_F16
16593 
16594  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
16595  void
16597  {
16599  }
16600 
16602  InFmt_VOP3 *iFmt)
16603  : Inst_VOP3(iFmt, "v_cmpx_nlt_f16", true)
16604  {
16605  setFlag(ALU);
16606  setFlag(F16);
16607  } // Inst_VOP3__V_CMPX_NLT_F16
16608 
16610  {
16611  } // ~Inst_VOP3__V_CMPX_NLT_F16
16612 
16613  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
16614  void
16616  {
16618  }
16619 
16621  InFmt_VOP3 *iFmt)
16622  : Inst_VOP3(iFmt, "v_cmpx_tru_f16", true)
16623  {
16624  setFlag(ALU);
16625  setFlag(F16);
16626  } // Inst_VOP3__V_CMPX_TRU_F16
16627 
16629  {
16630  } // ~Inst_VOP3__V_CMPX_TRU_F16
16631 
16632  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
16633  void
16635  {
16636  Wavefront *wf = gpuDynInst->wavefront();
16637  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16638 
16639  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16640  if (wf->execMask(lane)) {
16641  sdst.setBit(lane, 1);
16642  }
16643  }
16644 
16645  wf->execMask() = sdst.rawData();
16646  sdst.write();
16647  }
16648 
16650  : Inst_VOP3(iFmt, "v_cmp_f_f32", true)
16651  {
16652  setFlag(ALU);
16653  setFlag(F32);
16654  } // Inst_VOP3__V_CMP_F_F32
16655 
16657  {
16658  } // ~Inst_VOP3__V_CMP_F_F32
16659 
16660  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
16661  void
16663  {
16664  Wavefront *wf = gpuDynInst->wavefront();
16665  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16666 
16667  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16668  if (wf->execMask(lane)) {
16669  sdst.setBit(lane, 0);
16670  }
16671  }
16672 
16673  sdst.write();
16674  }
16675 
16677  InFmt_VOP3 *iFmt)
16678  : Inst_VOP3(iFmt, "v_cmp_lt_f32", true)
16679  {
16680  setFlag(ALU);
16681  setFlag(F32);
16682  } // Inst_VOP3__V_CMP_LT_F32
16683 
16685  {
16686  } // ~Inst_VOP3__V_CMP_LT_F32
16687 
16688  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16689  void
16691  {
16692  Wavefront *wf = gpuDynInst->wavefront();
16693  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16694  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16695  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16696 
16697  src0.readSrc();
16698  src1.readSrc();
16699 
16700  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16701  if (wf->execMask(lane)) {
16702  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
16703  }
16704  }
16705 
16706  sdst.write();
16707  }
16708 
16710  InFmt_VOP3 *iFmt)
16711  : Inst_VOP3(iFmt, "v_cmp_eq_f32", true)
16712  {
16713  setFlag(ALU);
16714  setFlag(F32);
16715  } // Inst_VOP3__V_CMP_EQ_F32
16716 
16718  {
16719  } // ~Inst_VOP3__V_CMP_EQ_F32
16720 
16721  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16722  void
16724  {
16725  Wavefront *wf = gpuDynInst->wavefront();
16726  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16727  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16728  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16729 
16730  src0.readSrc();
16731  src1.readSrc();
16732 
16733  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16734  if (wf->execMask(lane)) {
16735  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
16736  }
16737  }
16738 
16739  sdst.write();
16740  }
16741 
16743  InFmt_VOP3 *iFmt)
16744  : Inst_VOP3(iFmt, "v_cmp_le_f32", true)
16745  {
16746  setFlag(ALU);
16747  setFlag(F32);
16748  } // Inst_VOP3__V_CMP_LE_F32
16749 
16751  {
16752  } // ~Inst_VOP3__V_CMP_LE_F32
16753 
16754  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16755  void
16757  {
16758  Wavefront *wf = gpuDynInst->wavefront();
16759  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16760  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16761  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16762 
16763  src0.readSrc();
16764  src1.readSrc();
16765 
16766  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16767  if (wf->execMask(lane)) {
16768  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
16769  }
16770  }
16771 
16772  sdst.write();
16773  }
16774 
16776  InFmt_VOP3 *iFmt)
16777  : Inst_VOP3(iFmt, "v_cmp_gt_f32", true)
16778  {
16779  setFlag(ALU);
16780  setFlag(F32);
16781  } // Inst_VOP3__V_CMP_GT_F32
16782 
16784  {
16785  } // ~Inst_VOP3__V_CMP_GT_F32
16786 
16787  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16788  void
16790  {
16791  Wavefront *wf = gpuDynInst->wavefront();
16792  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16793  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16794  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16795 
16796  src0.readSrc();
16797  src1.readSrc();
16798 
16799  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16800  if (wf->execMask(lane)) {
16801  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
16802  }
16803  }
16804 
16805  sdst.write();
16806  }
16807 
16809  InFmt_VOP3 *iFmt)
16810  : Inst_VOP3(iFmt, "v_cmp_lg_f32", true)
16811  {
16812  setFlag(ALU);
16813  setFlag(F32);
16814  } // Inst_VOP3__V_CMP_LG_F32
16815 
16817  {
16818  } // ~Inst_VOP3__V_CMP_LG_F32
16819 
16820  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16821  void
16823  {
16824  Wavefront *wf = gpuDynInst->wavefront();
16825  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16826  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16827  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16828 
16829  src0.readSrc();
16830  src1.readSrc();
16831 
16832  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16833  if (wf->execMask(lane)) {
16834  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
16835  }
16836  }
16837 
16838  sdst.write();
16839  }
16840 
16842  InFmt_VOP3 *iFmt)
16843  : Inst_VOP3(iFmt, "v_cmp_ge_f32", true)
16844  {
16845  setFlag(ALU);
16846  setFlag(F32);
16847  } // Inst_VOP3__V_CMP_GE_F32
16848 
16850  {
16851  } // ~Inst_VOP3__V_CMP_GE_F32
16852 
16853  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16854  void
16856  {
16857  Wavefront *wf = gpuDynInst->wavefront();
16858  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16859  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16860  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16861 
16862  src0.readSrc();
16863  src1.readSrc();
16864 
16865  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16866  if (wf->execMask(lane)) {
16867  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
16868  }
16869  }
16870 
16871  sdst.write();
16872  }
16873 
16875  : Inst_VOP3(iFmt, "v_cmp_o_f32", true)
16876  {
16877  setFlag(ALU);
16878  setFlag(F32);
16879  } // Inst_VOP3__V_CMP_O_F32
16880 
16882  {
16883  } // ~Inst_VOP3__V_CMP_O_F32
16884 
16885  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
16886  void
16888  {
16889  Wavefront *wf = gpuDynInst->wavefront();
16890  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16891  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16892  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16893 
16894  src0.readSrc();
16895  src1.readSrc();
16896 
16897  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16898  if (wf->execMask(lane)) {
16899  sdst.setBit(lane, (!std::isnan(src0[lane])
16900  && !std::isnan(src1[lane])) ? 1 : 0);
16901  }
16902  }
16903 
16904  sdst.write();
16905  }
16906 
16908  : Inst_VOP3(iFmt, "v_cmp_u_f32", true)
16909  {
16910  setFlag(ALU);
16911  setFlag(F32);
16912  } // Inst_VOP3__V_CMP_U_F32
16913 
16915  {
16916  } // ~Inst_VOP3__V_CMP_U_F32
16917 
16918  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
16919  void
16921  {
16922  Wavefront *wf = gpuDynInst->wavefront();
16923  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16924  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16925  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16926 
16927  src0.readSrc();
16928  src1.readSrc();
16929 
16930  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16931  if (wf->execMask(lane)) {
16932  sdst.setBit(lane, (std::isnan(src0[lane])
16933  || std::isnan(src1[lane])) ? 1 : 0);
16934  }
16935  }
16936 
16937  sdst.write();
16938  }
16939 
16941  InFmt_VOP3 *iFmt)
16942  : Inst_VOP3(iFmt, "v_cmp_nge_f32", true)
16943  {
16944  setFlag(ALU);
16945  setFlag(F32);
16946  } // Inst_VOP3__V_CMP_NGE_F32
16947 
16949  {
16950  } // ~Inst_VOP3__V_CMP_NGE_F32
16951 
16952  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
16953  void
16955  {
16956  Wavefront *wf = gpuDynInst->wavefront();
16957  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16958  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16959  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16960 
16961  src0.readSrc();
16962  src1.readSrc();
16963 
16964  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16965  if (wf->execMask(lane)) {
16966  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
16967  }
16968  }
16969 
16970  sdst.write();
16971  }
16972 
16974  InFmt_VOP3 *iFmt)
16975  : Inst_VOP3(iFmt, "v_cmp_nlg_f32", true)
16976  {
16977  setFlag(ALU);
16978  setFlag(F32);
16979  } // Inst_VOP3__V_CMP_NLG_F32
16980 
16982  {
16983  } // ~Inst_VOP3__V_CMP_NLG_F32
16984 
16985  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
16986  void
16988  {
16989  Wavefront *wf = gpuDynInst->wavefront();
16990  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16991  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16992  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16993 
16994  src0.readSrc();
16995  src1.readSrc();
16996 
16997  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16998  if (wf->execMask(lane)) {
16999  sdst.setBit(lane, !(src0[lane] < src1[lane]
17000  || src0[lane] > src1[lane]) ? 1 : 0);
17001  }
17002  }
17003 
17004  sdst.write();
17005  }
17006 
17008  InFmt_VOP3 *iFmt)
17009  : Inst_VOP3(iFmt, "v_cmp_ngt_f32", true)
17010  {
17011  setFlag(ALU);
17012  setFlag(F32);
17013  } // Inst_VOP3__V_CMP_NGT_F32
17014 
17016  {
17017  } // ~Inst_VOP3__V_CMP_NGT_F32
17018 
17019  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
17020  void
17022  {
17023  Wavefront *wf = gpuDynInst->wavefront();
17024  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17025  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17026  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17027 
17028  src0.readSrc();
17029  src1.readSrc();
17030 
17031  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17032  if (wf->execMask(lane)) {
17033  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
17034  }
17035  }
17036 
17037  sdst.write();
17038  }
17039 
17041  InFmt_VOP3 *iFmt)
17042  : Inst_VOP3(iFmt, "v_cmp_nle_f32", true)
17043  {
17044  setFlag(ALU);
17045  setFlag(F32);
17046  } // Inst_VOP3__V_CMP_NLE_F32
17047 
17049  {
17050  } // ~Inst_VOP3__V_CMP_NLE_F32
17051 
17052  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
17053  void
17055  {
17056  Wavefront *wf = gpuDynInst->wavefront();
17057  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17058  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17059  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17060 
17061  src0.readSrc();
17062  src1.readSrc();
17063 
17064  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17065  if (wf->execMask(lane)) {
17066  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
17067  }
17068  }
17069 
17070  sdst.write();
17071  }
17072 
17074  InFmt_VOP3 *iFmt)
17075  : Inst_VOP3(iFmt, "v_cmp_neq_f32", true)
17076  {
17077  setFlag(ALU);
17078  setFlag(F32);
17079  } // Inst_VOP3__V_CMP_NEQ_F32
17080 
17082  {
17083  } // ~Inst_VOP3__V_CMP_NEQ_F32
17084 
17085  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
17086  void
17088  {
17089  Wavefront *wf = gpuDynInst->wavefront();
17090  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17091  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17092  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17093 
17094  src0.readSrc();
17095  src1.readSrc();
17096 
17097  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17098  if (wf->execMask(lane)) {
17099  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
17100  }
17101  }
17102 
17103  sdst.write();
17104  }
17105 
17107  InFmt_VOP3 *iFmt)
17108  : Inst_VOP3(iFmt, "v_cmp_nlt_f32", true)
17109  {
17110  setFlag(ALU);
17111  setFlag(F32);
17112  } // Inst_VOP3__V_CMP_NLT_F32
17113 
17115  {
17116  } // ~Inst_VOP3__V_CMP_NLT_F32
17117 
17118  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
17119  void
17121  {
17122  Wavefront *wf = gpuDynInst->wavefront();
17123  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17124  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17125  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17126 
17127  src0.readSrc();
17128  src1.readSrc();
17129 
17130  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17131  if (wf->execMask(lane)) {
17132  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
17133  }
17134  }
17135 
17136  sdst.write();
17137  }
17138 
17140  InFmt_VOP3 *iFmt)
17141  : Inst_VOP3(iFmt, "v_cmp_tru_f32", true)
17142  {
17143  setFlag(ALU);
17144  setFlag(F32);
17145  } // Inst_VOP3__V_CMP_TRU_F32
17146 
17148  {
17149  } // ~Inst_VOP3__V_CMP_TRU_F32
17150 
17151  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
17152  void
17154  {
17155  Wavefront *wf = gpuDynInst->wavefront();
17156  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17157 
17158  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17159  if (wf->execMask(lane)) {
17160  sdst.setBit(lane, 1);
17161  }
17162  }
17163 
17164  sdst.write();
17165  }
17166 
17168  InFmt_VOP3 *iFmt)
17169  : Inst_VOP3(iFmt, "v_cmpx_f_f32", true)
17170  {
17171  setFlag(ALU);
17172  setFlag(F32);
17173  } // Inst_VOP3__V_CMPX_F_F32
17174 
17176  {
17177  } // ~Inst_VOP3__V_CMPX_F_F32
17178 
17179  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
17180  void
17182  {
17183  Wavefront *wf = gpuDynInst->wavefront();
17184  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17185 
17186  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17187  if (wf->execMask(lane)) {
17188  sdst.setBit(lane, 0);
17189  }
17190  }
17191 
17192  wf->execMask() = sdst.rawData();
17193  sdst.write();
17194  }
17195 
17197  InFmt_VOP3 *iFmt)
17198  : Inst_VOP3(iFmt, "v_cmpx_lt_f32", true)
17199  {
17200  setFlag(ALU);
17201  setFlag(F32);
17202  } // Inst_VOP3__V_CMPX_LT_F32
17203 
17205  {
17206  } // ~Inst_VOP3__V_CMPX_LT_F32
17207 
17208  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
17209  void
17211  {
17212  Wavefront *wf = gpuDynInst->wavefront();
17213  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17214  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17215  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17216 
17217  src0.readSrc();
17218  src1.readSrc();
17219 
17220  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17221  if (wf->execMask(lane)) {
17222  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
17223  }
17224  }
17225 
17226  wf->execMask() = sdst.rawData();
17227  sdst.write();
17228  }
17229 
17231  InFmt_VOP3 *iFmt)
17232  : Inst_VOP3(iFmt, "v_cmpx_eq_f32", true)
17233  {
17234  setFlag(ALU);
17235  setFlag(F32);
17236  } // Inst_VOP3__V_CMPX_EQ_F32
17237 
17239  {
17240  } // ~Inst_VOP3__V_CMPX_EQ_F32
17241 
17242  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
17243  void
17245  {
17246  Wavefront *wf = gpuDynInst->wavefront();
17247  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17248  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17249  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17250 
17251  src0.readSrc();
17252  src1.readSrc();
17253 
17254  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17255  if (wf->execMask(lane)) {
17256  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
17257  }
17258  }
17259 
17260  wf->execMask() = sdst.rawData();
17261  sdst.write();
17262  }
17263 
17265  InFmt_VOP3 *iFmt)
17266  : Inst_VOP3(iFmt, "v_cmpx_le_f32", true)
17267  {
17268  setFlag(ALU);
17269  setFlag(F32);
17270  } // Inst_VOP3__V_CMPX_LE_F32
17271 
17273  {
17274  } // ~Inst_VOP3__V_CMPX_LE_F32
17275 
17276  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
17277  void
17279  {
17280  Wavefront *wf = gpuDynInst->wavefront();
17281  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17282  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17283  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17284 
17285  src0.readSrc();
17286  src1.readSrc();
17287 
17288  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17289  if (wf->execMask(lane)) {
17290  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
17291  }
17292  }
17293 
17294  wf->execMask() = sdst.rawData();
17295  sdst.write();
17296  }
17297 
17299  InFmt_VOP3 *iFmt)
17300  : Inst_VOP3(iFmt, "v_cmpx_gt_f32", true)
17301  {
17302  setFlag(ALU);
17303  setFlag(F32);
17304  } // Inst_VOP3__V_CMPX_GT_F32
17305 
17307  {
17308  } // ~Inst_VOP3__V_CMPX_GT_F32
17309 
17310  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
17311  void
17313  {
17314  Wavefront *wf = gpuDynInst->wavefront();
17315  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17316  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17317  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17318 
17319  src0.readSrc();
17320  src1.readSrc();
17321 
17322  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17323  if (wf->execMask(lane)) {
17324  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
17325  }
17326  }
17327 
17328  wf->execMask() = sdst.rawData();
17329  sdst.write();
17330  }
17331 
17333  InFmt_VOP3 *iFmt)
17334  : Inst_VOP3(iFmt, "v_cmpx_lg_f32", true)
17335  {
17336  setFlag(ALU);
17337  setFlag(F32);
17338  } // Inst_VOP3__V_CMPX_LG_F32
17339 
17341  {
17342  } // ~Inst_VOP3__V_CMPX_LG_F32
17343 
17344  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
17345  void
17347  {
17348  Wavefront *wf = gpuDynInst->wavefront();
17349  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17350  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17351  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17352 
17353  src0.readSrc();
17354  src1.readSrc();
17355 
17356  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17357  if (wf->execMask(lane)) {
17358  sdst.setBit(lane, (src0[lane] < src1[lane]
17359  || src0[lane] > src1[lane]) ? 1 : 0);
17360  }
17361  }
17362 
17363  wf->execMask() = sdst.rawData();
17364  sdst.write();
17365  }
17366 
17368  InFmt_VOP3 *iFmt)
17369  : Inst_VOP3(iFmt, "v_cmpx_ge_f32", true)
17370  {
17371  setFlag(ALU);
17372  setFlag(F32);
17373  } // Inst_VOP3__V_CMPX_GE_F32
17374 
17376  {
17377  } // ~Inst_VOP3__V_CMPX_GE_F32
17378 
17379  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
17380  void
17382  {
17383  Wavefront *wf = gpuDynInst->wavefront();
17384  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17385  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17386  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17387 
17388  src0.readSrc();
17389  src1.readSrc();
17390 
17391  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17392  if (wf->execMask(lane)) {
17393  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
17394  }
17395  }
17396 
17397  wf->execMask() = sdst.rawData();
17398  sdst.write();
17399  }
17400 
17402  InFmt_VOP3 *iFmt)
17403  : Inst_VOP3(iFmt, "v_cmpx_o_f32", true)
17404  {
17405  setFlag(ALU);
17406  setFlag(F32);
17407  } // Inst_VOP3__V_CMPX_O_F32
17408 
17410  {
17411  } // ~Inst_VOP3__V_CMPX_O_F32
17412 
17413  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
17414  // encoding.
17415  void
17417  {
17418  Wavefront *wf = gpuDynInst->wavefront();
17419  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17420  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17421  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17422 
17423  src0.readSrc();
17424  src1.readSrc();
17425 
17426  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17427  if (wf->execMask(lane)) {
17428  sdst.setBit(lane, (!std::isnan(src0[lane])
17429  && !std::isnan(src1[lane])) ? 1 : 0);
17430  }
17431  }
17432 
17433  wf->execMask() = sdst.rawData();
17434  sdst.write();
17435  }
17436 
17438  InFmt_VOP3 *iFmt)
17439  : Inst_VOP3(iFmt, "v_cmpx_u_f32", true)
17440  {
17441  setFlag(ALU);
17442  setFlag(F32);
17443  } // Inst_VOP3__V_CMPX_U_F32
17444 
17446  {
17447  } // ~Inst_VOP3__V_CMPX_U_F32
17448 
17449  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
17450  // encoding.
17451  void
17453  {
17454  Wavefront *wf = gpuDynInst->wavefront();
17455  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17456  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17457  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17458 
17459  src0.readSrc();
17460  src1.readSrc();
17461 
17462  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17463  if (wf->execMask(lane)) {
17464  sdst.setBit(lane, (std::isnan(src0[lane])
17465  || std::isnan(src1[lane])) ? 1 : 0);
17466  }
17467  }
17468 
17469  wf->execMask() = sdst.rawData();
17470  sdst.write();
17471  }
17472 
17474  InFmt_VOP3 *iFmt)
17475  : Inst_VOP3(iFmt, "v_cmpx_nge_f32", true)
17476  {
17477  setFlag(ALU);
17478  setFlag(F32);
17479  } // Inst_VOP3__V_CMPX_NGE_F32
17480 
17482  {
17483  } // ~Inst_VOP3__V_CMPX_NGE_F32
17484 
17485  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
17486  void
17488  {
17489  Wavefront *wf = gpuDynInst->wavefront();
17490  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17491  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17492  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17493 
17494  src0.readSrc();
17495  src1.readSrc();
17496 
17497  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17498  if (wf->execMask(lane)) {
17499  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
17500  }
17501  }
17502 
17503  wf->execMask() = sdst.rawData();
17504  sdst.write();
17505  }
17506 
17508  InFmt_VOP3 *iFmt)
17509  : Inst_VOP3(iFmt, "v_cmpx_nlg_f32", true)
17510  {
17511  setFlag(ALU);
17512  setFlag(F32);
17513  } // Inst_VOP3__V_CMPX_NLG_F32
17514 
17516  {
17517  } // ~Inst_VOP3__V_CMPX_NLG_F32
17518 
17519  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
17520  void
17522  {
17523  Wavefront *wf = gpuDynInst->wavefront();
17524  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17525  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17526  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17527 
17528  src0.readSrc();
17529  src1.readSrc();
17530 
17531  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17532  if (wf->execMask(lane)) {
17533  sdst.setBit(lane, !(src0[lane] < src1[lane]
17534  || src0[lane] > src1[lane]) ? 1 : 0);
17535  }
17536  }
17537 
17538  wf->execMask() = sdst.rawData();
17539  sdst.write();
17540  }
17541 
17543  InFmt_VOP3 *iFmt)
17544  : Inst_VOP3(iFmt, "v_cmpx_ngt_f32", true)
17545  {
17546  setFlag(ALU);
17547  setFlag(F32);
17548  } // Inst_VOP3__V_CMPX_NGT_F32
17549 
17551  {
17552  } // ~Inst_VOP3__V_CMPX_NGT_F32
17553 
17554  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
17555  void
17557  {
17558  Wavefront *wf = gpuDynInst->wavefront();
17559  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17560  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17561  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17562 
17563  src0.readSrc();
17564  src1.readSrc();
17565 
17566  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17567  if (wf->execMask(lane)) {
17568  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
17569  }
17570  }
17571 
17572  wf->execMask() = sdst.rawData();
17573  sdst.write();
17574  }
17575 
17577  InFmt_VOP3 *iFmt)
17578  : Inst_VOP3(iFmt, "v_cmpx_nle_f32", true)
17579  {
17580  setFlag(ALU);
17581  setFlag(F32);
17582  } // Inst_VOP3__V_CMPX_NLE_F32
17583 
17585  {
17586  } // ~Inst_VOP3__V_CMPX_NLE_F32
17587 
17588  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
17589  void
17591  {
17592  Wavefront *wf = gpuDynInst->wavefront();
17593  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17594  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17595  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17596 
17597  src0.readSrc();
17598  src1.readSrc();
17599 
17600  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17601  if (wf->execMask(lane)) {
17602  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
17603  }
17604  }
17605 
17606  wf->execMask() = sdst.rawData();
17607  sdst.write();
17608  }
17609 
17611  InFmt_VOP3 *iFmt)
17612  : Inst_VOP3(iFmt, "v_cmpx_neq_f32", true)
17613  {
17614  setFlag(ALU);
17615  setFlag(F32);
17616  } // Inst_VOP3__V_CMPX_NEQ_F32
17617 
17619  {
17620  } // ~Inst_VOP3__V_CMPX_NEQ_F32
17621 
17622  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
17623  void
17625  {
17626  Wavefront *wf = gpuDynInst->wavefront();
17627  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17628  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17629  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17630 
17631  src0.readSrc();
17632  src1.readSrc();
17633 
17634  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17635  if (wf->execMask(lane)) {
17636  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
17637  }
17638  }
17639 
17640  wf->execMask() = sdst.rawData();
17641  sdst.write();
17642  }
17643 
17645  InFmt_VOP3 *iFmt)
17646  : Inst_VOP3(iFmt, "v_cmpx_nlt_f32", true)
17647  {
17648  setFlag(ALU);
17649  setFlag(F32);
17650  } // Inst_VOP3__V_CMPX_NLT_F32
17651 
17653  {
17654  } // ~Inst_VOP3__V_CMPX_NLT_F32
17655 
17656  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
17657  void
17659  {
17660  Wavefront *wf = gpuDynInst->wavefront();
17661  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17662  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17663  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17664 
17665  src0.readSrc();
17666  src1.readSrc();
17667 
17668  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17669  if (wf->execMask(lane)) {
17670  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
17671  }
17672  }
17673 
17674  wf->execMask() = sdst.rawData();
17675  sdst.write();
17676  }
17677 
17679  InFmt_VOP3 *iFmt)
17680  : Inst_VOP3(iFmt, "v_cmpx_tru_f32", true)
17681  {
17682  setFlag(ALU);
17683  setFlag(F32);
17684  } // Inst_VOP3__V_CMPX_TRU_F32
17685 
17687  {
17688  } // ~Inst_VOP3__V_CMPX_TRU_F32
17689 
17690  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
17691  void
17693  {
17694  Wavefront *wf = gpuDynInst->wavefront();
17695  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17696 
17697  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17698  if (wf->execMask(lane)) {
17699  sdst.setBit(lane, 1);
17700  }
17701  }
17702 
17703  wf->execMask() = sdst.rawData();
17704  sdst.write();
17705  }
17706 
17708  : Inst_VOP3(iFmt, "v_cmp_f_f64", true)
17709  {
17710  setFlag(ALU);
17711  setFlag(F64);
17712  } // Inst_VOP3__V_CMP_F_F64
17713 
17715  {
17716  } // ~Inst_VOP3__V_CMP_F_F64
17717 
17718  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
17719  void
17721  {
17722  Wavefront *wf = gpuDynInst->wavefront();
17723  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17724 
17725  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17726  if (wf->execMask(lane)) {
17727  sdst.setBit(lane, 0);
17728  }
17729  }
17730 
17731  sdst.write();
17732  }
17733 
17735  InFmt_VOP3 *iFmt)
17736  : Inst_VOP3(iFmt, "v_cmp_lt_f64", true)
17737  {
17738  setFlag(ALU);
17739  setFlag(F64);
17740  } // Inst_VOP3__V_CMP_LT_F64
17741 
17743  {
17744  } // ~Inst_VOP3__V_CMP_LT_F64
17745 
17746  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
17747  void
17749  {
17750  Wavefront *wf = gpuDynInst->wavefront();
17751  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17752  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17753  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17754 
17755  src0.readSrc();
17756  src1.readSrc();
17757 
17758  if (instData.ABS & 0x1) {
17759  src0.absModifier();
17760  }
17761 
17762  if (instData.ABS & 0x2) {
17763  src1.absModifier();
17764  }
17765 
17766  if (extData.NEG & 0x1) {
17767  src0.negModifier();
17768  }
17769 
17770  if (extData.NEG & 0x2) {
17771  src1.negModifier();
17772  }
17773 
17777  assert(!(instData.ABS & 0x4));
17778  assert(!(extData.NEG & 0x4));
17779 
17780  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17781  if (wf->execMask(lane)) {
17782  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
17783  }
17784  }
17785 
17786  sdst.write();
17787  }
17788 
17790  InFmt_VOP3 *iFmt)
17791  : Inst_VOP3(iFmt, "v_cmp_eq_f64", true)
17792  {
17793  setFlag(ALU);
17794  setFlag(F64);
17795  } // Inst_VOP3__V_CMP_EQ_F64
17796 
17798  {
17799  } // ~Inst_VOP3__V_CMP_EQ_F64
17800 
17801  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
17802  void
17804  {
17805  Wavefront *wf = gpuDynInst->wavefront();
17806  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17807  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17808  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17809 
17810  src0.readSrc();
17811  src1.readSrc();
17812 
17813  if (instData.ABS & 0x1) {
17814  src0.absModifier();
17815  }
17816 
17817  if (instData.ABS & 0x2) {
17818  src1.absModifier();
17819  }
17820 
17821  if (extData.NEG & 0x1) {
17822  src0.negModifier();
17823  }
17824 
17825  if (extData.NEG & 0x2) {
17826  src1.negModifier();
17827  }
17828 
17832  assert(!(instData.ABS & 0x4));
17833  assert(!(extData.NEG & 0x4));
17834 
17835  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17836  if (wf->execMask(lane)) {
17837  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
17838  }
17839  }
17840 
17841  sdst.write();
17842  }
17843 
17845  InFmt_VOP3 *iFmt)
17846  : Inst_VOP3(iFmt, "v_cmp_le_f64", true)
17847  {
17848  setFlag(ALU);
17849  setFlag(F64);
17850  } // Inst_VOP3__V_CMP_LE_F64
17851 
17853  {
17854  } // ~Inst_VOP3__V_CMP_LE_F64
17855 
17856  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
17857  void
17859  {
17860  Wavefront *wf = gpuDynInst->wavefront();
17861  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17862  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17863  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17864 
17865  src0.readSrc();
17866  src1.readSrc();
17867 
17868  if (instData.ABS & 0x1) {
17869  src0.absModifier();
17870  }
17871 
17872  if (instData.ABS & 0x2) {
17873  src1.absModifier();
17874  }
17875 
17876  if (extData.NEG & 0x1) {
17877  src0.negModifier();
17878  }
17879 
17880  if (extData.NEG & 0x2) {
17881  src1.negModifier();
17882  }
17883 
17887  assert(!(instData.ABS & 0x4));
17888  assert(!(extData.NEG & 0x4));
17889 
17890  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17891  if (wf->execMask(lane)) {
17892  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
17893  }
17894  }
17895 
17896  sdst.write();
17897  }
17898 
17900  InFmt_VOP3 *iFmt)
17901  : Inst_VOP3(iFmt, "v_cmp_gt_f64", true)
17902  {
17903  setFlag(ALU);
17904  setFlag(F64);
17905  } // Inst_VOP3__V_CMP_GT_F64
17906 
17908  {
17909  } // ~Inst_VOP3__V_CMP_GT_F64
17910 
17911  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
17912  void
17914  {
17915  Wavefront *wf = gpuDynInst->wavefront();
17916  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17917  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17918  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17919 
17920  src0.readSrc();
17921  src1.readSrc();
17922 
17923  if (instData.ABS & 0x1) {
17924  src0.absModifier();
17925  }
17926 
17927  if (instData.ABS & 0x2) {
17928  src1.absModifier();
17929  }
17930 
17931  if (extData.NEG & 0x1) {
17932  src0.negModifier();
17933  }
17934 
17935  if (extData.NEG & 0x2) {
17936  src1.negModifier();
17937  }
17938 
17942  assert(!(instData.ABS & 0x4));
17943  assert(!(extData.NEG & 0x4));
17944 
17945  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17946  if (wf->execMask(lane)) {
17947  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
17948  }
17949  }
17950 
17951  sdst.write();
17952  }
17953 
17955  InFmt_VOP3 *iFmt)
17956  : Inst_VOP3(iFmt, "v_cmp_lg_f64", true)
17957  {
17958  setFlag(ALU);
17959  setFlag(F64);
17960  } // Inst_VOP3__V_CMP_LG_F64
17961 
17963  {
17964  } // ~Inst_VOP3__V_CMP_LG_F64
17965 
17966  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
17967  void
17969  {
17970  Wavefront *wf = gpuDynInst->wavefront();
17971  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17972  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17973  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17974 
17975  src0.readSrc();
17976  src1.readSrc();
17977 
17978  if (instData.ABS & 0x1) {
17979  src0.absModifier();
17980  }
17981 
17982  if (instData.ABS & 0x2) {
17983  src1.absModifier();
17984  }
17985 
17986  if (extData.NEG & 0x1) {
17987  src0.negModifier();
17988  }
17989 
17990  if (extData.NEG & 0x2) {
17991  src1.negModifier();
17992  }
17993 
17997  assert(!(instData.ABS & 0x4));
17998  assert(!(extData.NEG & 0x4));
17999 
18000  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18001  if (wf->execMask(lane)) {
18002  sdst.setBit(lane, (src0[lane] < src1[lane]
18003  || src0[lane] > src1[lane]) ? 1 : 0);
18004  }
18005  }
18006 
18007  sdst.write();
18008  }
18009 
18011  InFmt_VOP3 *iFmt)
18012  : Inst_VOP3(iFmt, "v_cmp_ge_f64", true)
18013  {
18014  setFlag(ALU);
18015  setFlag(F64);
18016  } // Inst_VOP3__V_CMP_GE_F64
18017 
18019  {
18020  } // ~Inst_VOP3__V_CMP_GE_F64
18021 
18022  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
18023  void
18025  {
18026  Wavefront *wf = gpuDynInst->wavefront();
18027  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18028  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18029  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18030 
18031  src0.readSrc();
18032  src1.readSrc();
18033 
18034  if (instData.ABS & 0x1) {
18035  src0.absModifier();
18036  }
18037 
18038  if (instData.ABS & 0x2) {
18039  src1.absModifier();
18040  }
18041 
18042  if (extData.NEG & 0x1) {
18043  src0.negModifier();
18044  }
18045 
18046  if (extData.NEG & 0x2) {
18047  src1.negModifier();
18048  }
18049 
18053  assert(!(instData.ABS & 0x4));
18054  assert(!(extData.NEG & 0x4));
18055 
18056  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18057  if (wf->execMask(lane)) {
18058  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
18059  }
18060  }
18061 
18062  sdst.write();
18063  }
18064 
18066  : Inst_VOP3(iFmt, "v_cmp_o_f64", true)
18067  {
18068  setFlag(ALU);
18069  setFlag(F64);
18070  } // Inst_VOP3__V_CMP_O_F64
18071 
18073  {
18074  } // ~Inst_VOP3__V_CMP_O_F64
18075 
18076  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
18077  void
18079  {
18080  Wavefront *wf = gpuDynInst->wavefront();
18081  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18082  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18083  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18084 
18085  src0.readSrc();
18086  src1.readSrc();
18087 
18088  if (instData.ABS & 0x1) {
18089  src0.absModifier();
18090  }
18091 
18092  if (instData.ABS & 0x2) {
18093  src1.absModifier();
18094  }
18095 
18096  if (extData.NEG & 0x1) {
18097  src0.negModifier();
18098  }
18099 
18100  if (extData.NEG & 0x2) {
18101  src1.negModifier();
18102  }
18103 
18107  assert(!(instData.ABS & 0x4));
18108  assert(!(extData.NEG & 0x4));
18109 
18110  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18111  if (wf->execMask(lane)) {
18112  sdst.setBit(lane, (!std::isnan(src0[lane])
18113  && !std::isnan(src1[lane])) ? 1 : 0);
18114  }
18115  }
18116 
18117  sdst.write();
18118  }
18119 
18121  : Inst_VOP3(iFmt, "v_cmp_u_f64", true)
18122  {
18123  setFlag(ALU);
18124  setFlag(F64);
18125  } // Inst_VOP3__V_CMP_U_F64
18126 
18128  {
18129  } // ~Inst_VOP3__V_CMP_U_F64
18130 
18131  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
18132  void
18134  {
18135  Wavefront *wf = gpuDynInst->wavefront();
18136  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18137  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18138  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18139 
18140  src0.readSrc();
18141  src1.readSrc();
18142 
18143  if (instData.ABS & 0x1) {
18144  src0.absModifier();
18145  }
18146 
18147  if (instData.ABS & 0x2) {
18148  src1.absModifier();
18149  }
18150 
18151  if (extData.NEG & 0x1) {
18152  src0.negModifier();
18153  }
18154 
18155  if (extData.NEG & 0x2) {
18156  src1.negModifier();
18157  }
18158 
18162  assert(!(instData.ABS & 0x4));
18163  assert(!(extData.NEG & 0x4));
18164 
18165  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18166  if (wf->execMask(lane)) {
18167  sdst.setBit(lane, (std::isnan(src0[lane])
18168  || std::isnan(src1[lane])) ? 1 : 0);
18169  }
18170  }
18171 
18172  sdst.write();
18173  }
18174 
18176  InFmt_VOP3 *iFmt)
18177  : Inst_VOP3(iFmt, "v_cmp_nge_f64", true)
18178  {
18179  setFlag(ALU);
18180  setFlag(F64);
18181  } // Inst_VOP3__V_CMP_NGE_F64
18182 
18184  {
18185  } // ~Inst_VOP3__V_CMP_NGE_F64
18186 
18187  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
18188  void
18190  {
18191  Wavefront *wf = gpuDynInst->wavefront();
18192  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18193  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18194  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18195 
18196  src0.readSrc();
18197  src1.readSrc();
18198 
18199  if (instData.ABS & 0x1) {
18200  src0.absModifier();
18201  }
18202 
18203  if (instData.ABS & 0x2) {
18204  src1.absModifier();
18205  }
18206 
18207  if (extData.NEG & 0x1) {
18208  src0.negModifier();
18209  }
18210 
18211  if (extData.NEG & 0x2) {
18212  src1.negModifier();
18213  }
18214 
18218  assert(!(instData.ABS & 0x4));
18219  assert(!(extData.NEG & 0x4));
18220 
18221  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18222  if (wf->execMask(lane)) {
18223  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
18224  }
18225  }
18226 
18227  sdst.write();
18228  }
18229 
18231  InFmt_VOP3 *iFmt)
18232  : Inst_VOP3(iFmt, "v_cmp_nlg_f64", true)
18233  {
18234  setFlag(ALU);
18235  setFlag(F64);
18236  } // Inst_VOP3__V_CMP_NLG_F64
18237 
18239  {
18240  } // ~Inst_VOP3__V_CMP_NLG_F64
18241 
18242  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
18243  void
18245  {
18246  Wavefront *wf = gpuDynInst->wavefront();
18247  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18248  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18249  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18250 
18251  src0.readSrc();
18252  src1.readSrc();
18253 
18254  if (instData.ABS & 0x1) {
18255  src0.absModifier();
18256  }
18257 
18258  if (instData.ABS & 0x2) {
18259  src1.absModifier();
18260  }
18261 
18262  if (extData.NEG & 0x1) {
18263  src0.negModifier();
18264  }
18265 
18266  if (extData.NEG & 0x2) {
18267  src1.negModifier();
18268  }
18269 
18273  assert(!(instData.ABS & 0x4));
18274  assert(!(extData.NEG & 0x4));
18275 
18276  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18277  if (wf->execMask(lane)) {
18278  sdst.setBit(lane, !(src0[lane] < src1[lane]
18279  || src0[lane] > src1[lane]) ? 1 : 0);
18280  }
18281  }
18282 
18283  sdst.write();
18284  }
18285 
18287  InFmt_VOP3 *iFmt)
18288  : Inst_VOP3(iFmt, "v_cmp_ngt_f64", true)
18289  {
18290  setFlag(ALU);
18291  setFlag(F64);
18292  } // Inst_VOP3__V_CMP_NGT_F64
18293 
18295  {
18296  } // ~Inst_VOP3__V_CMP_NGT_F64
18297 
18298  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
18299  void
18301  {
18302  Wavefront *wf = gpuDynInst->wavefront();
18303  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18304  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18305  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18306 
18307  src0.readSrc();
18308  src1.readSrc();
18309 
18310  if (instData.ABS & 0x1) {
18311  src0.absModifier();
18312  }
18313 
18314  if (instData.ABS & 0x2) {
18315  src1.absModifier();
18316  }
18317 
18318  if (extData.NEG & 0x1) {
18319  src0.negModifier();
18320  }
18321 
18322  if (extData.NEG & 0x2) {
18323  src1.negModifier();
18324  }
18325 
18329  assert(!(instData.ABS & 0x4));
18330  assert(!(extData.NEG & 0x4));
18331 
18332  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18333  if (wf->execMask(lane)) {
18334  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
18335  }
18336  }
18337 
18338  sdst.write();
18339  }
18340 
18342  InFmt_VOP3 *iFmt)
18343  : Inst_VOP3(iFmt, "v_cmp_nle_f64", true)
18344  {
18345  setFlag(ALU);
18346  setFlag(F64);
18347  } // Inst_VOP3__V_CMP_NLE_F64
18348 
18350  {
18351  } // ~Inst_VOP3__V_CMP_NLE_F64
18352 
18353  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
18354  void
18356  {
18357  Wavefront *wf = gpuDynInst->wavefront();
18358  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18359  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18360  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18361 
18362  src0.readSrc();
18363  src1.readSrc();
18364 
18365  if (instData.ABS & 0x1) {
18366  src0.absModifier();
18367  }
18368 
18369  if (instData.ABS & 0x2) {
18370  src1.absModifier();
18371  }
18372 
18373  if (extData.NEG & 0x1) {
18374  src0.negModifier();
18375  }
18376 
18377  if (extData.NEG & 0x2) {
18378  src1.negModifier();
18379  }
18380 
18384  assert(!(instData.ABS & 0x4));
18385  assert(!(extData.NEG & 0x4));
18386 
18387  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18388  if (wf->execMask(lane)) {
18389  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
18390  }
18391  }
18392 
18393  sdst.write();
18394  }
18395 
18397  InFmt_VOP3 *iFmt)
18398  : Inst_VOP3(iFmt, "v_cmp_neq_f64", true)
18399  {
18400  setFlag(ALU);
18401  setFlag(F64);
18402  } // Inst_VOP3__V_CMP_NEQ_F64
18403 
18405  {
18406  } // ~Inst_VOP3__V_CMP_NEQ_F64
18407 
18408  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
18409  void
18411  {
18412  Wavefront *wf = gpuDynInst->wavefront();
18413  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18414  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18415  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18416 
18417  src0.readSrc();
18418  src1.readSrc();
18419 
18420  if (instData.ABS & 0x1) {
18421  src0.absModifier();
18422  }
18423 
18424  if (instData.ABS & 0x2) {
18425  src1.absModifier();
18426  }
18427 
18428  if (extData.NEG & 0x1) {
18429  src0.negModifier();
18430  }
18431 
18432  if (extData.NEG & 0x2) {
18433  src1.negModifier();
18434  }
18435 
18439  assert(!(instData.ABS & 0x4));
18440  assert(!(extData.NEG & 0x4));
18441 
18442  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18443  if (wf->execMask(lane)) {
18444  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
18445  }
18446  }
18447 
18448  sdst.write();
18449  }
18450 
18452  InFmt_VOP3 *iFmt)
18453  : Inst_VOP3(iFmt, "v_cmp_nlt_f64", true)
18454  {
18455  setFlag(ALU);
18456  setFlag(F64);
18457  } // Inst_VOP3__V_CMP_NLT_F64
18458 
18460  {
18461  } // ~Inst_VOP3__V_CMP_NLT_F64
18462 
18463  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
18464  void
18466  {
18467  Wavefront *wf = gpuDynInst->wavefront();
18468  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18469  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18470  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18471 
18472  src0.readSrc();
18473  src1.readSrc();
18474 
18475  if (instData.ABS & 0x1) {
18476  src0.absModifier();
18477  }
18478 
18479  if (instData.ABS & 0x2) {
18480  src1.absModifier();
18481  }
18482 
18483  if (extData.NEG & 0x1) {
18484  src0.negModifier();
18485  }
18486 
18487  if (extData.NEG & 0x2) {
18488  src1.negModifier();
18489  }
18490 
18494  assert(!(instData.ABS & 0x4));
18495  assert(!(extData.NEG & 0x4));
18496 
18497  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18498  if (wf->execMask(lane)) {
18499  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
18500  }
18501  }
18502 
18503  sdst.write();
18504  }
18505 
18507  InFmt_VOP3 *iFmt)
18508  : Inst_VOP3(iFmt, "v_cmp_tru_f64", true)
18509  {
18510  setFlag(ALU);
18511  setFlag(F64);
18512  } // Inst_VOP3__V_CMP_TRU_F64
18513 
18515  {
18516  } // ~Inst_VOP3__V_CMP_TRU_F64
18517 
18518  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
18519  void
18521  {
18522  Wavefront *wf = gpuDynInst->wavefront();
18523  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18524 
18525  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18526  if (wf->execMask(lane)) {
18527  sdst.setBit(lane, 1);
18528  }
18529  }
18530 
18531  sdst.write();
18532  }
18533 
18535  InFmt_VOP3 *iFmt)
18536  : Inst_VOP3(iFmt, "v_cmpx_f_f64", true)
18537  {
18538  setFlag(ALU);
18539  setFlag(F64);
18540  } // Inst_VOP3__V_CMPX_F_F64
18541 
18543  {
18544  } // ~Inst_VOP3__V_CMPX_F_F64
18545 
18546  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
18547  void
18549  {
18550  Wavefront *wf = gpuDynInst->wavefront();
18551  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18552 
18553  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18554  if (wf->execMask(lane)) {
18555  sdst.setBit(lane, 0);
18556  }
18557  }
18558 
18559  wf->execMask() = sdst.rawData();
18560  sdst.write();
18561  }
18562 
18564  InFmt_VOP3 *iFmt)
18565  : Inst_VOP3(iFmt, "v_cmpx_lt_f64", true)
18566  {
18567  setFlag(ALU);
18568  setFlag(F64);
18569  } // Inst_VOP3__V_CMPX_LT_F64
18570 
18572  {
18573  } // ~Inst_VOP3__V_CMPX_LT_F64
18574 
18575  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
18576  void
18578  {
18579  Wavefront *wf = gpuDynInst->wavefront();
18580  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18581  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18582  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18583 
18584  src0.readSrc();
18585  src1.readSrc();
18586 
18587  if (instData.ABS & 0x1) {
18588  src0.absModifier();
18589  }
18590 
18591  if (instData.ABS & 0x2) {
18592  src1.absModifier();
18593  }
18594 
18595  if (extData.NEG & 0x1) {
18596  src0.negModifier();
18597  }
18598 
18599  if (extData.NEG & 0x2) {
18600  src1.negModifier();
18601  }
18602 
18606  assert(!(instData.ABS & 0x4));
18607  assert(!(extData.NEG & 0x4));
18608 
18609  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18610  if (wf->execMask(lane)) {
18611  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
18612  }
18613  }
18614 
18615  wf->execMask() = sdst.rawData();
18616  sdst.write();
18617  }
18618 
18620  InFmt_VOP3 *iFmt)
18621  : Inst_VOP3(iFmt, "v_cmpx_eq_f64", true)
18622  {
18623  setFlag(ALU);
18624  setFlag(F64);
18625  } // Inst_VOP3__V_CMPX_EQ_F64
18626 
18628  {
18629  } // ~Inst_VOP3__V_CMPX_EQ_F64
18630 
18631  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
18632  void
18634  {
18635  Wavefront *wf = gpuDynInst->wavefront();
18636  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18637  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18638  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18639 
18640  src0.readSrc();
18641  src1.readSrc();
18642 
18643  if (instData.ABS & 0x1) {
18644  src0.absModifier();
18645  }
18646 
18647  if (instData.ABS & 0x2) {
18648  src1.absModifier();
18649  }
18650 
18651  if (extData.NEG & 0x1) {
18652  src0.negModifier();
18653  }
18654 
18655  if (extData.NEG & 0x2) {
18656  src1.negModifier();
18657  }
18658 
18662  assert(!(instData.ABS & 0x4));
18663  assert(!(extData.NEG & 0x4));
18664 
18665  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18666  if (wf->execMask(lane)) {
18667  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
18668  }
18669  }
18670 
18671  wf->execMask() = sdst.rawData();
18672  sdst.write();
18673  }
18674 
18676  InFmt_VOP3 *iFmt)
18677  : Inst_VOP3(iFmt, "v_cmpx_le_f64", true)
18678  {
18679  setFlag(ALU);
18680  setFlag(F64);
18681  } // Inst_VOP3__V_CMPX_LE_F64
18682 
18684  {
18685  } // ~Inst_VOP3__V_CMPX_LE_F64
18686 
18687  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
18688  void
18690  {
18691  Wavefront *wf = gpuDynInst->wavefront();
18692  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18693  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18694  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18695 
18696  src0.readSrc();
18697  src1.readSrc();
18698 
18699  if (instData.ABS & 0x1) {
18700  src0.absModifier();
18701  }
18702 
18703  if (instData.ABS & 0x2) {
18704  src1.absModifier();
18705  }
18706 
18707  if (extData.NEG & 0x1) {
18708  src0.negModifier();
18709  }
18710 
18711  if (extData.NEG & 0x2) {
18712  src1.negModifier();
18713  }
18714 
18718  assert(!(instData.ABS & 0x4));
18719  assert(!(extData.NEG & 0x4));
18720 
18721  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18722  if (wf->execMask(lane)) {
18723  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
18724  }
18725  }
18726 
18727  wf->execMask() = sdst.rawData();
18728  sdst.write();
18729  }
18730 
18732  InFmt_VOP3 *iFmt)
18733  : Inst_VOP3(iFmt, "v_cmpx_gt_f64", true)
18734  {
18735  setFlag(ALU);
18736  setFlag(F64);
18737  } // Inst_VOP3__V_CMPX_GT_F64
18738 
18740  {
18741  } // ~Inst_VOP3__V_CMPX_GT_F64
18742 
18743  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
18744  void
18746  {
18747  Wavefront *wf = gpuDynInst->wavefront();
18748  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18749  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18750  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18751 
18752  src0.readSrc();
18753  src1.readSrc();
18754 
18755  if (instData.ABS & 0x1) {
18756  src0.absModifier();
18757  }
18758 
18759  if (instData.ABS & 0x2) {
18760  src1.absModifier();
18761  }
18762 
18763  if (extData.NEG & 0x1) {
18764  src0.negModifier();
18765  }
18766 
18767  if (extData.NEG & 0x2) {
18768  src1.negModifier();
18769  }
18770 
18774  assert(!(instData.ABS & 0x4));
18775  assert(!(extData.NEG & 0x4));
18776 
18777  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18778  if (wf->execMask(lane)) {
18779  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
18780  }
18781  }
18782 
18783  wf->execMask() = sdst.rawData();
18784  sdst.write();
18785  }
18786 
18788  InFmt_VOP3 *iFmt)
18789  : Inst_VOP3(iFmt, "v_cmpx_lg_f64", true)
18790  {
18791  setFlag(ALU);
18792  setFlag(F64);
18793  } // Inst_VOP3__V_CMPX_LG_F64
18794 
18796  {
18797  } // ~Inst_VOP3__V_CMPX_LG_F64
18798 
18799  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
18800  void
18802  {
18803  Wavefront *wf = gpuDynInst->wavefront();
18804  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18805  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18806  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18807 
18808  src0.readSrc();
18809  src1.readSrc();
18810 
18811  if (instData.ABS & 0x1) {
18812  src0.absModifier();
18813  }
18814 
18815  if (instData.ABS & 0x2) {
18816  src1.absModifier();
18817  }
18818 
18819  if (extData.NEG & 0x1) {
18820  src0.negModifier();
18821  }
18822 
18823  if (extData.NEG & 0x2) {
18824  src1.negModifier();
18825  }
18826 
18830  assert(!(instData.ABS & 0x4));
18831  assert(!(extData.NEG & 0x4));
18832 
18833  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18834  if (wf->execMask(lane)) {
18835  sdst.setBit(lane, (src0[lane] < src1[lane]
18836  || src0[lane] > src1[lane]) ? 1 : 0);
18837  }
18838  }
18839 
18840  wf->execMask() = sdst.rawData();
18841  sdst.write();
18842  }
18843 
18845  InFmt_VOP3 *iFmt)
18846  : Inst_VOP3(iFmt, "v_cmpx_ge_f64", true)
18847  {
18848  setFlag(ALU);
18849  setFlag(F64);
18850  } // Inst_VOP3__V_CMPX_GE_F64
18851 
18853  {
18854  } // ~Inst_VOP3__V_CMPX_GE_F64
18855 
18856  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
18857  void
18859  {
18860  Wavefront *wf = gpuDynInst->wavefront();
18861  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18862  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18863  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18864 
18865  src0.readSrc();
18866  src1.readSrc();
18867 
18868  if (instData.ABS & 0x1) {
18869  src0.absModifier();
18870  }
18871 
18872  if (instData.ABS & 0x2) {
18873  src1.absModifier();
18874  }
18875 
18876  if (extData.NEG & 0x1) {
18877  src0.negModifier();
18878  }
18879 
18880  if (extData.NEG & 0x2) {
18881  src1.negModifier();
18882  }
18883 
18887  assert(!(instData.ABS & 0x4));
18888  assert(!(extData.NEG & 0x4));
18889 
18890  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18891  if (wf->execMask(lane)) {
18892  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
18893  }
18894  }
18895 
18896  wf->execMask() = sdst.rawData();
18897  sdst.write();
18898  }
18899 
18901  InFmt_VOP3 *iFmt)
18902  : Inst_VOP3(iFmt, "v_cmpx_o_f64", true)
18903  {
18904  setFlag(ALU);
18905  setFlag(F64);
18906  } // Inst_VOP3__V_CMPX_O_F64
18907 
18909  {
18910  } // ~Inst_VOP3__V_CMPX_O_F64
18911 
18912  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
18913  // encoding.
18914  void
18916  {
18917  Wavefront *wf = gpuDynInst->wavefront();
18918  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18919  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18920  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18921 
18922  src0.readSrc();
18923  src1.readSrc();
18924 
18925  if (instData.ABS & 0x1) {
18926  src0.absModifier();
18927  }
18928 
18929  if (instData.ABS & 0x2) {
18930  src1.absModifier();
18931  }
18932 
18933  if (extData.NEG & 0x1) {
18934  src0.negModifier();
18935  }
18936 
18937  if (extData.NEG & 0x2) {
18938  src1.negModifier();
18939  }
18940 
18944  assert(!(instData.ABS & 0x4));
18945  assert(!(extData.NEG & 0x4));
18946 
18947  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18948  if (wf->execMask(lane)) {
18949  sdst.setBit(lane, (!std::isnan(src0[lane])
18950  && !std::isnan(src1[lane])) ? 1 : 0);
18951  }
18952  }
18953 
18954  wf->execMask() = sdst.rawData();
18955  sdst.write();
18956  }
18957 
18959  InFmt_VOP3 *iFmt)
18960  : Inst_VOP3(iFmt, "v_cmpx_u_f64", true)
18961  {
18962  setFlag(ALU);
18963  setFlag(F64);
18964  } // Inst_VOP3__V_CMPX_U_F64
18965 
18967  {
18968  } // ~Inst_VOP3__V_CMPX_U_F64
18969 
18970  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
18971  // encoding.
18972  void
18974  {
18975  Wavefront *wf = gpuDynInst->wavefront();
18976  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18977  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18978  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18979 
18980  src0.readSrc();
18981  src1.readSrc();
18982 
18983  if (instData.ABS & 0x1) {
18984  src0.absModifier();
18985  }
18986 
18987  if (instData.ABS & 0x2) {
18988  src1.absModifier();
18989  }
18990 
18991  if (extData.NEG & 0x1) {
18992  src0.negModifier();
18993  }
18994 
18995  if (extData.NEG & 0x2) {
18996  src1.negModifier();
18997  }
18998 
19002  assert(!(instData.ABS & 0x4));
19003  assert(!(extData.NEG & 0x4));
19004 
19005  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19006  if (wf->execMask(lane)) {
19007  sdst.setBit(lane, (std::isnan(src0[lane])
19008  || std::isnan(src1[lane])) ? 1 : 0);
19009  }
19010  }
19011 
19012  wf->execMask() = sdst.rawData();
19013  sdst.write();
19014  }
19015 
19017  InFmt_VOP3 *iFmt)
19018  : Inst_VOP3(iFmt, "v_cmpx_nge_f64", true)
19019  {
19020  setFlag(ALU);
19021  setFlag(F64);
19022  } // Inst_VOP3__V_CMPX_NGE_F64
19023 
19025  {
19026  } // ~Inst_VOP3__V_CMPX_NGE_F64
19027 
19028  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
19029  void
19031  {
19032  Wavefront *wf = gpuDynInst->wavefront();
19033  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19034  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19035  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19036 
19037  src0.readSrc();
19038  src1.readSrc();
19039 
19040  if (instData.ABS & 0x1) {
19041  src0.absModifier();
19042  }
19043 
19044  if (instData.ABS & 0x2) {
19045  src1.absModifier();
19046  }
19047 
19048  if (extData.NEG & 0x1) {
19049  src0.negModifier();
19050  }
19051 
19052  if (extData.NEG & 0x2) {
19053  src1.negModifier();
19054  }
19055 
19059  assert(!(instData.ABS & 0x4));
19060  assert(!(extData.NEG & 0x4));
19061 
19062  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19063  if (wf->execMask(lane)) {
19064  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
19065  }
19066  }
19067 
19068  wf->execMask() = sdst.rawData();
19069  sdst.write();
19070  }
19071 
19073  InFmt_VOP3 *iFmt)
19074  : Inst_VOP3(iFmt, "v_cmpx_nlg_f64", true)
19075  {
19076  setFlag(ALU);
19077  setFlag(F64);
19078  } // Inst_VOP3__V_CMPX_NLG_F64
19079 
19081  {
19082  } // ~Inst_VOP3__V_CMPX_NLG_F64
19083 
19084  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
19085  void
19087  {
19088  Wavefront *wf = gpuDynInst->wavefront();
19089  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19090  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19091  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19092 
19093  src0.readSrc();
19094  src1.readSrc();
19095 
19096  if (instData.ABS & 0x1) {
19097  src0.absModifier();
19098  }
19099 
19100  if (instData.ABS & 0x2) {
19101  src1.absModifier();
19102  }
19103 
19104  if (extData.NEG & 0x1) {
19105  src0.negModifier();
19106  }
19107 
19108  if (extData.NEG & 0x2) {
19109  src1.negModifier();
19110  }
19111 
19115  assert(!(instData.ABS & 0x4));
19116  assert(!(extData.NEG & 0x4));
19117 
19118  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19119  if (wf->execMask(lane)) {
19120  sdst.setBit(lane, !(src0[lane] < src1[lane]
19121  || src0[lane] > src1[lane]) ? 1 : 0);
19122  }
19123  }
19124 
19125  wf->execMask() = sdst.rawData();
19126  sdst.write();
19127  }
19128 
19130  InFmt_VOP3 *iFmt)
19131  : Inst_VOP3(iFmt, "v_cmpx_ngt_f64", true)
19132  {
19133  setFlag(ALU);
19134  setFlag(F64);
19135  } // Inst_VOP3__V_CMPX_NGT_F64
19136 
19138  {
19139  } // ~Inst_VOP3__V_CMPX_NGT_F64
19140 
19141  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
19142  void
19144  {
19145  Wavefront *wf = gpuDynInst->wavefront();
19146  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19147  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19148  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19149 
19150  src0.readSrc();
19151  src1.readSrc();
19152 
19153  if (instData.ABS & 0x1) {
19154  src0.absModifier();
19155  }
19156 
19157  if (instData.ABS & 0x2) {
19158  src1.absModifier();
19159  }
19160 
19161  if (extData.NEG & 0x1) {
19162  src0.negModifier();
19163  }
19164 
19165  if (extData.NEG & 0x2) {
19166  src1.negModifier();
19167  }
19168 
19172  assert(!(instData.ABS & 0x4));
19173  assert(!(extData.NEG & 0x4));
19174 
19175  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19176  if (wf->execMask(lane)) {
19177  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
19178  }
19179  }
19180 
19181  wf->execMask() = sdst.rawData();
19182  sdst.write();
19183  }
19184 
19186  InFmt_VOP3 *iFmt)
19187  : Inst_VOP3(iFmt, "v_cmpx_nle_f64", true)
19188  {
19189  setFlag(ALU);
19190  setFlag(F64);
19191  } // Inst_VOP3__V_CMPX_NLE_F64
19192 
19194  {
19195  } // ~Inst_VOP3__V_CMPX_NLE_F64
19196 
19197  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
19198  void
19200  {
19201  Wavefront *wf = gpuDynInst->wavefront();
19202  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19203  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19204  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19205 
19206  src0.readSrc();
19207  src1.readSrc();
19208 
19209  if (instData.ABS & 0x1) {
19210  src0.absModifier();
19211  }
19212 
19213  if (instData.ABS & 0x2) {
19214  src1.absModifier();
19215  }
19216 
19217  if (extData.NEG & 0x1) {
19218  src0.negModifier();
19219  }
19220 
19221  if (extData.NEG & 0x2) {
19222  src1.negModifier();
19223  }
19224 
19228  assert(!(instData.ABS & 0x4));
19229  assert(!(extData.NEG & 0x4));
19230 
19231  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19232  if (wf->execMask(lane)) {
19233  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
19234  }
19235  }
19236 
19237  wf->execMask() = sdst.rawData();
19238  sdst.write();
19239  }
19240 
19242  InFmt_VOP3 *iFmt)
19243  : Inst_VOP3(iFmt, "v_cmpx_neq_f64", true)
19244  {
19245  setFlag(ALU);
19246  setFlag(F64);
19247  } // Inst_VOP3__V_CMPX_NEQ_F64
19248 
19250  {
19251  } // ~Inst_VOP3__V_CMPX_NEQ_F64
19252 
19253  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
19254  void
19256  {
19257  Wavefront *wf = gpuDynInst->wavefront();
19258  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19259  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19260  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19261 
19262  src0.readSrc();
19263  src1.readSrc();
19264 
19265  if (instData.ABS & 0x1) {
19266  src0.absModifier();
19267  }
19268 
19269  if (instData.ABS & 0x2) {
19270  src1.absModifier();
19271  }
19272 
19273  if (extData.NEG & 0x1) {
19274  src0.negModifier();
19275  }
19276 
19277  if (extData.NEG & 0x2) {
19278  src1.negModifier();
19279  }
19280 
19284  assert(!(instData.ABS & 0x4));
19285  assert(!(extData.NEG & 0x4));
19286 
19287  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19288  if (wf->execMask(lane)) {
19289  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
19290  }
19291  }
19292 
19293  wf->execMask() = sdst.rawData();
19294  sdst.write();
19295  }
19296 
19298  InFmt_VOP3 *iFmt)
19299  : Inst_VOP3(iFmt, "v_cmpx_nlt_f64", true)
19300  {
19301  setFlag(ALU);
19302  setFlag(F64);
19303  } // Inst_VOP3__V_CMPX_NLT_F64
19304 
19306  {
19307  } // ~Inst_VOP3__V_CMPX_NLT_F64
19308 
19309  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
19310  void
19312  {
19313  Wavefront *wf = gpuDynInst->wavefront();
19314  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19315  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19316  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19317 
19318  src0.readSrc();
19319  src1.readSrc();
19320 
19321  if (instData.ABS & 0x1) {
19322  src0.absModifier();
19323  }
19324 
19325  if (instData.ABS & 0x2) {
19326  src1.absModifier();
19327  }
19328 
19329  if (extData.NEG & 0x1) {
19330  src0.negModifier();
19331  }
19332 
19333  if (extData.NEG & 0x2) {
19334  src1.negModifier();
19335  }
19336 
19340  assert(!(instData.ABS & 0x4));
19341  assert(!(extData.NEG & 0x4));
19342 
19343  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19344  if (wf->execMask(lane)) {
19345  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
19346  }
19347  }
19348 
19349  wf->execMask() = sdst.rawData();
19350  sdst.write();
19351  }
19352 
19354  InFmt_VOP3 *iFmt)
19355  : Inst_VOP3(iFmt, "v_cmpx_tru_f64", true)
19356  {
19357  setFlag(ALU);
19358  setFlag(F64);
19359  } // Inst_VOP3__V_CMPX_TRU_F64
19360 
19362  {
19363  } // ~Inst_VOP3__V_CMPX_TRU_F64
19364 
19365  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
19366  void
19368  {
19369  Wavefront *wf = gpuDynInst->wavefront();
19370  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19371 
19372  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19373  if (wf->execMask(lane)) {
19374  sdst.setBit(lane, 1);
19375  }
19376  }
19377 
19378  wf->execMask() = sdst.rawData();
19379  sdst.write();
19380  }
19381 
19383  : Inst_VOP3(iFmt, "v_cmp_f_i16", true)
19384  {
19385  setFlag(ALU);
19386  } // Inst_VOP3__V_CMP_F_I16
19387 
19389  {
19390  } // ~Inst_VOP3__V_CMP_F_I16
19391 
19392  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
19393  void
19395  {
19396  Wavefront *wf = gpuDynInst->wavefront();
19397  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19398 
19399  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19400  if (wf->execMask(lane)) {
19401  sdst.setBit(lane, 0);
19402  }
19403  }
19404 
19405  sdst.write();
19406  }
19407 
19409  InFmt_VOP3 *iFmt)
19410  : Inst_VOP3(iFmt, "v_cmp_lt_i16", true)
19411  {
19412  setFlag(ALU);
19413  } // Inst_VOP3__V_CMP_LT_I16
19414 
19416  {
19417  } // ~Inst_VOP3__V_CMP_LT_I16
19418 
19419  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
19420  void
19422  {
19423  Wavefront *wf = gpuDynInst->wavefront();
19424  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19425  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19426  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19427 
19428  src0.readSrc();
19429  src1.readSrc();
19430 
19434  assert(!(instData.ABS & 0x1));
19435  assert(!(instData.ABS & 0x2));
19436  assert(!(instData.ABS & 0x4));
19437  assert(!(extData.NEG & 0x1));
19438  assert(!(extData.NEG & 0x2));
19439  assert(!(extData.NEG & 0x4));
19440 
19441  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19442  if (wf->execMask(lane)) {
19443  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
19444  }
19445  }
19446 
19447  sdst.write();
19448  }
19449 
19451  InFmt_VOP3 *iFmt)
19452  : Inst_VOP3(iFmt, "v_cmp_eq_i16", true)
19453  {
19454  setFlag(ALU);
19455  } // Inst_VOP3__V_CMP_EQ_I16
19456 
19458  {
19459  } // ~Inst_VOP3__V_CMP_EQ_I16
19460 
19461  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
19462  void
19464  {
19465  Wavefront *wf = gpuDynInst->wavefront();
19466  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19467  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19468  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19469 
19470  src0.readSrc();
19471  src1.readSrc();
19472 
19476  assert(!(instData.ABS & 0x1));
19477  assert(!(instData.ABS & 0x2));
19478  assert(!(instData.ABS & 0x4));
19479  assert(!(extData.NEG & 0x1));
19480  assert(!(extData.NEG & 0x2));
19481  assert(!(extData.NEG & 0x4));
19482 
19483  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19484  if (wf->execMask(lane)) {
19485  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
19486  }
19487  }
19488 
19489  sdst.write();
19490  }
19491 
19493  InFmt_VOP3 *iFmt)
19494  : Inst_VOP3(iFmt, "v_cmp_le_i16", true)
19495  {
19496  setFlag(ALU);
19497  } // Inst_VOP3__V_CMP_LE_I16
19498 
19500  {
19501  } // ~Inst_VOP3__V_CMP_LE_I16
19502 
19503  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
19504  void
19506  {
19507  Wavefront *wf = gpuDynInst->wavefront();
19508  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19509  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19510  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19511 
19512  src0.readSrc();
19513  src1.readSrc();
19514 
19518  assert(!(instData.ABS & 0x1));
19519  assert(!(instData.ABS & 0x2));
19520  assert(!(instData.ABS & 0x4));
19521  assert(!(extData.NEG & 0x1));
19522  assert(!(extData.NEG & 0x2));
19523  assert(!(extData.NEG & 0x4));
19524 
19525  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19526  if (wf->execMask(lane)) {
19527  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
19528  }
19529  }
19530 
19531  sdst.write();
19532  }
19533 
19535  InFmt_VOP3 *iFmt)
19536  : Inst_VOP3(iFmt, "v_cmp_gt_i16", true)
19537  {
19538  setFlag(ALU);
19539  } // Inst_VOP3__V_CMP_GT_I16
19540 
19542  {
19543  } // ~Inst_VOP3__V_CMP_GT_I16
19544 
19545  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
19546  void
19548  {
19549  Wavefront *wf = gpuDynInst->wavefront();
19550  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19551  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19552  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19553 
19554  src0.readSrc();
19555  src1.readSrc();
19556 
19560  assert(!(instData.ABS & 0x1));
19561  assert(!(instData.ABS & 0x2));
19562  assert(!(instData.ABS & 0x4));
19563  assert(!(extData.NEG & 0x1));
19564  assert(!(extData.NEG & 0x2));
19565  assert(!(extData.NEG & 0x4));
19566 
19567  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19568  if (wf->execMask(lane)) {
19569  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
19570  }
19571  }
19572 
19573  sdst.write();
19574  }
19575 
19577  InFmt_VOP3 *iFmt)
19578  : Inst_VOP3(iFmt, "v_cmp_ne_i16", true)
19579  {
19580  setFlag(ALU);
19581  } // Inst_VOP3__V_CMP_NE_I16
19582 
19584  {
19585  } // ~Inst_VOP3__V_CMP_NE_I16
19586 
19587  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
19588  void
19590  {
19591  Wavefront *wf = gpuDynInst->wavefront();
19592  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19593  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19594  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19595 
19596  src0.readSrc();
19597  src1.readSrc();
19598 
19602  assert(!(instData.ABS & 0x1));
19603  assert(!(instData.ABS & 0x2));
19604  assert(!(instData.ABS & 0x4));
19605  assert(!(extData.NEG & 0x1));
19606  assert(!(extData.NEG & 0x2));
19607  assert(!(extData.NEG & 0x4));
19608 
19609  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19610  if (wf->execMask(lane)) {
19611  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
19612  }
19613  }
19614 
19615  sdst.write();
19616  }
19617 
19619  InFmt_VOP3 *iFmt)
19620  : Inst_VOP3(iFmt, "v_cmp_ge_i16", true)
19621  {
19622  setFlag(ALU);
19623  } // Inst_VOP3__V_CMP_GE_I16
19624 
19626  {
19627  } // ~Inst_VOP3__V_CMP_GE_I16
19628 
19629  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
19630  void
19632  {
19633  Wavefront *wf = gpuDynInst->wavefront();
19634  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19635  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19636  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19637 
19638  src0.readSrc();
19639  src1.readSrc();
19640 
19644  assert(!(instData.ABS & 0x1));
19645  assert(!(instData.ABS & 0x2));
19646  assert(!(instData.ABS & 0x4));
19647  assert(!(extData.NEG & 0x1));
19648  assert(!(extData.NEG & 0x2));
19649  assert(!(extData.NEG & 0x4));
19650 
19651  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19652  if (wf->execMask(lane)) {
19653  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
19654  }
19655  }
19656 
19657  sdst.write();
19658  }
19659 
19661  : Inst_VOP3(iFmt, "v_cmp_t_i16", true)
19662  {
19663  setFlag(ALU);
19664  } // Inst_VOP3__V_CMP_T_I16
19665 
19667  {
19668  } // ~Inst_VOP3__V_CMP_T_I16
19669 
19670  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
19671  void
19673  {
19674  Wavefront *wf = gpuDynInst->wavefront();
19675  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19676 
19677  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19678  if (wf->execMask(lane)) {
19679  sdst.setBit(lane, 1);
19680  }
19681  }
19682 
19683  sdst.write();
19684  }
19685 
19687  : Inst_VOP3(iFmt, "v_cmp_f_u16", true)
19688  {
19689  setFlag(ALU);
19690  } // Inst_VOP3__V_CMP_F_U16
19691 
19693  {
19694  } // ~Inst_VOP3__V_CMP_F_U16
19695 
19696  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
19697  void
19699  {
19700  Wavefront *wf = gpuDynInst->wavefront();
19701  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19702 
19703  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19704  if (wf->execMask(lane)) {
19705  sdst.setBit(lane, 0);
19706  }
19707  }
19708 
19709  sdst.write();
19710  }
19711 
19713  InFmt_VOP3 *iFmt)
19714  : Inst_VOP3(iFmt, "v_cmp_lt_u16", true)
19715  {
19716  setFlag(ALU);
19717  } // Inst_VOP3__V_CMP_LT_U16
19718 
19720  {
19721  } // ~Inst_VOP3__V_CMP_LT_U16
19722 
19723  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
19724  void
19726  {
19727  Wavefront *wf = gpuDynInst->wavefront();
19728  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19729  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19730  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19731 
19732  src0.readSrc();
19733  src1.readSrc();
19734 
19738  assert(!(instData.ABS & 0x1));
19739  assert(!(instData.ABS & 0x2));
19740  assert(!(instData.ABS & 0x4));
19741  assert(!(extData.NEG & 0x1));
19742  assert(!(extData.NEG & 0x2));
19743  assert(!(extData.NEG & 0x4));
19744 
19745  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19746  if (wf->execMask(lane)) {
19747  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
19748  }
19749  }
19750 
19751  sdst.write();
19752  }
19753 
19755  InFmt_VOP3 *iFmt)
19756  : Inst_VOP3(iFmt, "v_cmp_eq_u16", true)
19757  {
19758  setFlag(ALU);
19759  } // Inst_VOP3__V_CMP_EQ_U16
19760 
19762  {
19763  } // ~Inst_VOP3__V_CMP_EQ_U16
19764 
19765  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
19766  void
19768  {
19769  Wavefront *wf = gpuDynInst->wavefront();
19770  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19771  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19772  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19773 
19774  src0.readSrc();
19775  src1.readSrc();
19776 
19780  assert(!(instData.ABS & 0x1));
19781  assert(!(instData.ABS & 0x2));
19782  assert(!(instData.ABS & 0x4));
19783  assert(!(extData.NEG & 0x1));
19784  assert(!(extData.NEG & 0x2));
19785  assert(!(extData.NEG & 0x4));
19786 
19787  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19788  if (wf->execMask(lane)) {
19789  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
19790  }
19791  }
19792 
19793  sdst.write();
19794  }
19795 
19797  InFmt_VOP3 *iFmt)
19798  : Inst_VOP3(iFmt, "v_cmp_le_u16", true)
19799  {
19800  setFlag(ALU);
19801  } // Inst_VOP3__V_CMP_LE_U16
19802 
19804  {
19805  } // ~Inst_VOP3__V_CMP_LE_U16
19806 
19807  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
19808  void
19810  {
19811  Wavefront *wf = gpuDynInst->wavefront();
19812  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19813  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19814  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19815 
19816  src0.readSrc();
19817  src1.readSrc();
19818 
19822  assert(!(instData.ABS & 0x1));
19823  assert(!(instData.ABS & 0x2));
19824  assert(!(instData.ABS & 0x4));
19825  assert(!(extData.NEG & 0x1));
19826  assert(!(extData.NEG & 0x2));
19827  assert(!(extData.NEG & 0x4));
19828 
19829  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19830  if (wf->execMask(lane)) {
19831  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
19832  }
19833  }
19834 
19835  sdst.write();
19836  }
19837 
19839  InFmt_VOP3 *iFmt)
19840  : Inst_VOP3(iFmt, "v_cmp_gt_u16", true)
19841  {
19842  setFlag(ALU);
19843  } // Inst_VOP3__V_CMP_GT_U16
19844 
19846  {
19847  } // ~Inst_VOP3__V_CMP_GT_U16
19848 
19849  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
19850  void
19852  {
19853  Wavefront *wf = gpuDynInst->wavefront();
19854  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19855  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19856  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19857 
19858  src0.readSrc();
19859  src1.readSrc();
19860 
19864  assert(!(instData.ABS & 0x1));
19865  assert(!(instData.ABS & 0x2));
19866  assert(!(instData.ABS & 0x4));
19867  assert(!(extData.NEG & 0x1));
19868  assert(!(extData.NEG & 0x2));
19869  assert(!(extData.NEG & 0x4));
19870 
19871  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19872  if (wf->execMask(lane)) {
19873  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
19874  }
19875  }
19876 
19877  sdst.write();
19878  }
19879 
19881  InFmt_VOP3 *iFmt)
19882  : Inst_VOP3(iFmt, "v_cmp_ne_u16", true)
19883  {
19884  setFlag(ALU);
19885  } // Inst_VOP3__V_CMP_NE_U16
19886 
19888  {
19889  } // ~Inst_VOP3__V_CMP_NE_U16
19890 
19891  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
19892  void
19894  {
19895  Wavefront *wf = gpuDynInst->wavefront();
19896  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19897  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19898  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19899 
19900  src0.readSrc();
19901  src1.readSrc();
19902 
19906  assert(!(instData.ABS & 0x1));
19907  assert(!(instData.ABS & 0x2));
19908  assert(!(instData.ABS & 0x4));
19909  assert(!(extData.NEG & 0x1));
19910  assert(!(extData.NEG & 0x2));
19911  assert(!(extData.NEG & 0x4));
19912 
19913  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19914  if (wf->execMask(lane)) {
19915  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
19916  }
19917  }
19918 
19919  sdst.write();
19920  }
19921 
19923  InFmt_VOP3 *iFmt)
19924  : Inst_VOP3(iFmt, "v_cmp_ge_u16", true)
19925  {
19926  setFlag(ALU);
19927  } // Inst_VOP3__V_CMP_GE_U16
19928 
19930  {
19931  } // ~Inst_VOP3__V_CMP_GE_U16
19932 
19933  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
19934  void
19936  {
19937  Wavefront *wf = gpuDynInst->wavefront();
19938  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19939  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19940  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19941 
19942  src0.readSrc();
19943  src1.readSrc();
19944 
19948  assert(!(instData.ABS & 0x1));
19949  assert(!(instData.ABS & 0x2));
19950  assert(!(instData.ABS & 0x4));
19951  assert(!(extData.NEG & 0x1));
19952  assert(!(extData.NEG & 0x2));
19953  assert(!(extData.NEG & 0x4));
19954 
19955  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19956  if (wf->execMask(lane)) {
19957  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
19958  }
19959  }
19960 
19961  sdst.write();
19962  }
19963 
19965  : Inst_VOP3(iFmt, "v_cmp_t_u16", true)
19966  {
19967  setFlag(ALU);
19968  } // Inst_VOP3__V_CMP_T_U16
19969 
19971  {
19972  } // ~Inst_VOP3__V_CMP_T_U16
19973 
19974  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
19975  void
19977  {
19978  Wavefront *wf = gpuDynInst->wavefront();
19979  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19980 
19981  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19982  if (wf->execMask(lane)) {
19983  sdst.setBit(lane, 1);
19984  }
19985  }
19986 
19987  sdst.write();
19988  }
19989 
19991  InFmt_VOP3 *iFmt)
19992  : Inst_VOP3(iFmt, "v_cmpx_f_i16", true)
19993  {
19994  setFlag(ALU);
19995  } // Inst_VOP3__V_CMPX_F_I16
19996 
19998  {
19999  } // ~Inst_VOP3__V_CMPX_F_I16
20000 
20001  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
20002  void
20004  {
20005  Wavefront *wf = gpuDynInst->wavefront();
20006  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20007 
20008  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20009  if (wf->execMask(lane)) {
20010  sdst.setBit(lane, 0);
20011  }
20012  }
20013 
20014  wf->execMask() = sdst.rawData();
20015  sdst.write();
20016  }
20017 
20019  InFmt_VOP3 *iFmt)
20020  : Inst_VOP3(iFmt, "v_cmpx_lt_i16", true)
20021  {
20022  setFlag(ALU);
20023  } // Inst_VOP3__V_CMPX_LT_I16
20024 
20026  {
20027  } // ~Inst_VOP3__V_CMPX_LT_I16
20028 
20029  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20030  void
20032  {
20033  Wavefront *wf = gpuDynInst->wavefront();
20034  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20035  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20036  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20037 
20038  src0.readSrc();
20039  src1.readSrc();
20040 
20044  assert(!(instData.ABS & 0x1));
20045  assert(!(instData.ABS & 0x2));
20046  assert(!(instData.ABS & 0x4));
20047  assert(!(extData.NEG & 0x1));
20048  assert(!(extData.NEG & 0x2));
20049  assert(!(extData.NEG & 0x4));
20050 
20051  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20052  if (wf->execMask(lane)) {
20053  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
20054  }
20055  }
20056 
20057  wf->execMask() = sdst.rawData();
20058  sdst.write();
20059  }
20060 
20062  InFmt_VOP3 *iFmt)
20063  : Inst_VOP3(iFmt, "v_cmpx_eq_i16", true)
20064  {
20065  setFlag(ALU);
20066  } // Inst_VOP3__V_CMPX_EQ_I16
20067 
20069  {
20070  } // ~Inst_VOP3__V_CMPX_EQ_I16
20071 
20072  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
20073  void
20075  {
20076  Wavefront *wf = gpuDynInst->wavefront();
20077  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20078  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20079  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20080 
20081  src0.readSrc();
20082  src1.readSrc();
20083 
20087  assert(!(instData.ABS & 0x1));
20088  assert(!(instData.ABS & 0x2));
20089  assert(!(instData.ABS & 0x4));
20090  assert(!(extData.NEG & 0x1));
20091  assert(!(extData.NEG & 0x2));
20092  assert(!(extData.NEG & 0x4));
20093 
20094  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20095  if (wf->execMask(lane)) {
20096  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
20097  }
20098  }
20099 
20100  wf->execMask() = sdst.rawData();
20101  sdst.write();
20102  }
20103 
20105  InFmt_VOP3 *iFmt)
20106  : Inst_VOP3(iFmt, "v_cmpx_le_i16", true)
20107  {
20108  setFlag(ALU);
20109  } // Inst_VOP3__V_CMPX_LE_I16
20110 
20112  {
20113  } // ~Inst_VOP3__V_CMPX_LE_I16
20114 
20115  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
20116  void
20118  {
20119  Wavefront *wf = gpuDynInst->wavefront();
20120  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20121  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20122  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20123 
20124  src0.readSrc();
20125  src1.readSrc();
20126 
20130  assert(!(instData.ABS & 0x1));
20131  assert(!(instData.ABS & 0x2));
20132  assert(!(instData.ABS & 0x4));
20133  assert(!(extData.NEG & 0x1));
20134  assert(!(extData.NEG & 0x2));
20135  assert(!(extData.NEG & 0x4));
20136 
20137  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20138  if (wf->execMask(lane)) {
20139  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
20140  }
20141  }
20142 
20143  wf->execMask() = sdst.rawData();
20144  sdst.write();
20145  }
20146 
20148  InFmt_VOP3 *iFmt)
20149  : Inst_VOP3(iFmt, "v_cmpx_gt_i16", true)
20150  {
20151  setFlag(ALU);
20152  } // Inst_VOP3__V_CMPX_GT_I16
20153 
20155  {
20156  } // ~Inst_VOP3__V_CMPX_GT_I16
20157 
20158  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
20159  void
20161  {
20162  Wavefront *wf = gpuDynInst->wavefront();
20163  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20164  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20165  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20166 
20167  src0.readSrc();
20168  src1.readSrc();
20169 
20173  assert(!(instData.ABS & 0x1));
20174  assert(!(instData.ABS & 0x2));
20175  assert(!(instData.ABS & 0x4));
20176  assert(!(extData.NEG & 0x1));
20177  assert(!(extData.NEG & 0x2));
20178  assert(!(extData.NEG & 0x4));
20179 
20180  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20181  if (wf->execMask(lane)) {
20182  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
20183  }
20184  }
20185 
20186  wf->execMask() = sdst.rawData();
20187  sdst.write();
20188  }
20189 
20191  InFmt_VOP3 *iFmt)
20192  : Inst_VOP3(iFmt, "v_cmpx_ne_i16", true)
20193  {
20194  setFlag(ALU);
20195  } // Inst_VOP3__V_CMPX_NE_I16
20196 
20198  {
20199  } // ~Inst_VOP3__V_CMPX_NE_I16
20200 
20201  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
20202  void
20204  {
20205  Wavefront *wf = gpuDynInst->wavefront();
20206  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20207  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20208  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20209 
20210  src0.readSrc();
20211  src1.readSrc();
20212 
20216  assert(!(instData.ABS & 0x1));
20217  assert(!(instData.ABS & 0x2));
20218  assert(!(instData.ABS & 0x4));
20219  assert(!(extData.NEG & 0x1));
20220  assert(!(extData.NEG & 0x2));
20221  assert(!(extData.NEG & 0x4));
20222 
20223  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20224  if (wf->execMask(lane)) {
20225  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
20226  }
20227  }
20228 
20229  wf->execMask() = sdst.rawData();
20230  sdst.write();
20231  }
20232 
20234  InFmt_VOP3 *iFmt)
20235  : Inst_VOP3(iFmt, "v_cmpx_ge_i16", true)
20236  {
20237  setFlag(ALU);
20238  } // Inst_VOP3__V_CMPX_GE_I16
20239 
20241  {
20242  } // ~Inst_VOP3__V_CMPX_GE_I16
20243 
20244  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
20245  void
20247  {
20248  Wavefront *wf = gpuDynInst->wavefront();
20249  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20250  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20251  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20252 
20253  src0.readSrc();
20254  src1.readSrc();
20255 
20259  assert(!(instData.ABS & 0x1));
20260  assert(!(instData.ABS & 0x2));
20261  assert(!(instData.ABS & 0x4));
20262  assert(!(extData.NEG & 0x1));
20263  assert(!(extData.NEG & 0x2));
20264  assert(!(extData.NEG & 0x4));
20265 
20266  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20267  if (wf->execMask(lane)) {
20268  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
20269  }
20270  }
20271 
20272  wf->execMask() = sdst.rawData();
20273  sdst.write();
20274  }
20275 
20277  InFmt_VOP3 *iFmt)
20278  : Inst_VOP3(iFmt, "v_cmpx_t_i16", true)
20279  {
20280  setFlag(ALU);
20281  } // Inst_VOP3__V_CMPX_T_I16
20282 
20284  {
20285  } // ~Inst_VOP3__V_CMPX_T_I16
20286 
20287  // EXEC,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  wf->execMask() = sdst.rawData();
20301  sdst.write();
20302  }
20303 
20305  InFmt_VOP3 *iFmt)
20306  : Inst_VOP3(iFmt, "v_cmpx_f_u16", true)
20307  {
20308  setFlag(ALU);
20309  } // Inst_VOP3__V_CMPX_F_U16
20310 
20312  {
20313  } // ~Inst_VOP3__V_CMPX_F_U16
20314 
20315  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
20316  void
20318  {
20319  Wavefront *wf = gpuDynInst->wavefront();
20320  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20321 
20322  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20323  if (wf->execMask(lane)) {
20324  sdst.setBit(lane, 0);
20325  }
20326  }
20327 
20328  wf->execMask() = sdst.rawData();
20329  sdst.write();
20330  }
20331 
20333  InFmt_VOP3 *iFmt)
20334  : Inst_VOP3(iFmt, "v_cmpx_lt_u16", true)
20335  {
20336  setFlag(ALU);
20337  } // Inst_VOP3__V_CMPX_LT_U16
20338 
20340  {
20341  } // ~Inst_VOP3__V_CMPX_LT_U16
20342 
20343  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20344  void
20346  {
20347  Wavefront *wf = gpuDynInst->wavefront();
20348  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
20349  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
20350  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20351 
20352  src0.readSrc();
20353  src1.readSrc();
20354 
20358  assert(!(instData.ABS & 0x1));
20359  assert(!(instData.ABS & 0x2));
20360  assert(!(instData.ABS & 0x4));
20361  assert(!(extData.NEG & 0x1));
20362  assert(!(extData.NEG & 0x2));
20363  assert(!(extData.NEG & 0x4));
20364 
20365  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20366  if (wf->execMask(lane)) {
20367  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
20368  }
20369  }
20370 
20371  wf->execMask() = sdst.rawData();
20372  sdst.write();
20373  }
20374 
20376  InFmt_VOP3 *iFmt)
20377  : Inst_VOP3(iFmt, "v_cmpx_eq_u16", true)
20378  {
20379  setFlag(ALU);
20380  } // Inst_VOP3__V_CMPX_EQ_U16
20381 
20383  {
20384  } // ~Inst_VOP3__V_CMPX_EQ_U16
20385 
20386  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
20387  void
20389  {
20390  Wavefront *wf = gpuDynInst->wavefront();
20391  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20392  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20393  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20394 
20395  src0.readSrc();
20396  src1.readSrc();
20397 
20401  assert(!(instData.ABS & 0x1));
20402  assert(!(instData.ABS & 0x2));
20403  assert(!(instData.ABS & 0x4));
20404  assert(!(extData.NEG & 0x1));
20405  assert(!(extData.NEG & 0x2));
20406  assert(!(extData.NEG & 0x4));
20407 
20408  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20409  if (wf->execMask(lane)) {
20410  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
20411  }
20412  }
20413 
20414  wf->execMask() = sdst.rawData();
20415  sdst.write();
20416  }
20417 
20419  InFmt_VOP3 *iFmt)
20420  : Inst_VOP3(iFmt, "v_cmpx_le_u16", true)
20421  {
20422  setFlag(ALU);
20423  } // Inst_VOP3__V_CMPX_LE_U16
20424 
20426  {
20427  } // ~Inst_VOP3__V_CMPX_LE_U16
20428 
20429  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
20430  void
20432  {
20433  Wavefront *wf = gpuDynInst->wavefront();
20434  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20435  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20436  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20437 
20438  src0.readSrc();
20439  src1.readSrc();
20440 
20444  assert(!(instData.ABS & 0x1));
20445  assert(!(instData.ABS & 0x2));
20446  assert(!(instData.ABS & 0x4));
20447  assert(!(extData.NEG & 0x1));
20448  assert(!(extData.NEG & 0x2));
20449  assert(!(extData.NEG & 0x4));
20450 
20451  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20452  if (wf->execMask(lane)) {
20453  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
20454  }
20455  }
20456 
20457  wf->execMask() = sdst.rawData();
20458  sdst.write();
20459  }
20460 
20462  InFmt_VOP3 *iFmt)
20463  : Inst_VOP3(iFmt, "v_cmpx_gt_u16", true)
20464  {
20465  setFlag(ALU);
20466  } // Inst_VOP3__V_CMPX_GT_U16
20467 
20469  {
20470  } // ~Inst_VOP3__V_CMPX_GT_U16
20471 
20472  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
20473  void
20475  {
20476  Wavefront *wf = gpuDynInst->wavefront();
20477  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20478  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20479  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20480 
20481  src0.readSrc();
20482  src1.readSrc();
20483 
20487  assert(!(instData.ABS & 0x1));
20488  assert(!(instData.ABS & 0x2));
20489  assert(!(instData.ABS & 0x4));
20490  assert(!(extData.NEG & 0x1));
20491  assert(!(extData.NEG & 0x2));
20492  assert(!(extData.NEG & 0x4));
20493 
20494  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20495  if (wf->execMask(lane)) {
20496  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
20497  }
20498  }
20499 
20500  wf->execMask() = sdst.rawData();
20501  sdst.write();
20502  }
20503 
20505  InFmt_VOP3 *iFmt)
20506  : Inst_VOP3(iFmt, "v_cmpx_ne_u16", true)
20507  {
20508  setFlag(ALU);
20509  } // Inst_VOP3__V_CMPX_NE_U16
20510 
20512  {
20513  } // ~Inst_VOP3__V_CMPX_NE_U16
20514 
20515  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
20516  void
20518  {
20519  Wavefront *wf = gpuDynInst->wavefront();
20520  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20521  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20522  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20523 
20524  src0.readSrc();
20525  src1.readSrc();
20526 
20530  assert(!(instData.ABS & 0x1));
20531  assert(!(instData.ABS & 0x2));
20532  assert(!(instData.ABS & 0x4));
20533  assert(!(extData.NEG & 0x1));
20534  assert(!(extData.NEG & 0x2));
20535  assert(!(extData.NEG & 0x4));
20536 
20537  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20538  if (wf->execMask(lane)) {
20539  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
20540  }
20541  }
20542 
20543  wf->execMask() = sdst.rawData();
20544  sdst.write();
20545  }
20546 
20548  InFmt_VOP3 *iFmt)
20549  : Inst_VOP3(iFmt, "v_cmpx_ge_u16", true)
20550  {
20551  setFlag(ALU);
20552  } // Inst_VOP3__V_CMPX_GE_U16
20553 
20555  {
20556  } // ~Inst_VOP3__V_CMPX_GE_U16
20557 
20558  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
20559  void
20561  {
20562  Wavefront *wf = gpuDynInst->wavefront();
20563  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20564  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20565  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20566 
20567  src0.readSrc();
20568  src1.readSrc();
20569 
20573  assert(!(instData.ABS & 0x1));
20574  assert(!(instData.ABS & 0x2));
20575  assert(!(instData.ABS & 0x4));
20576  assert(!(extData.NEG & 0x1));
20577  assert(!(extData.NEG & 0x2));
20578  assert(!(extData.NEG & 0x4));
20579 
20580  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20581  if (wf->execMask(lane)) {
20582  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
20583  }
20584  }
20585 
20586  wf->execMask() = sdst.rawData();
20587  sdst.write();
20588  }
20589 
20591  InFmt_VOP3 *iFmt)
20592  : Inst_VOP3(iFmt, "v_cmpx_t_u16", true)
20593  {
20594  setFlag(ALU);
20595  } // Inst_VOP3__V_CMPX_T_U16
20596 
20598  {
20599  } // ~Inst_VOP3__V_CMPX_T_U16
20600 
20601  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
20602  void
20604  {
20605  Wavefront *wf = gpuDynInst->wavefront();
20606  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20607 
20608  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20609  if (wf->execMask(lane)) {
20610  sdst.setBit(lane, 1);
20611  }
20612  }
20613 
20614  wf->execMask() = sdst.rawData();
20615  sdst.write();
20616  }
20617 
20619  : Inst_VOP3(iFmt, "v_cmp_f_i32", true)
20620  {
20621  setFlag(ALU);
20622  } // Inst_VOP3__V_CMP_F_I32
20623 
20625  {
20626  } // ~Inst_VOP3__V_CMP_F_I32
20627 
20628  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
20629  void
20631  {
20632  Wavefront *wf = gpuDynInst->wavefront();
20633  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20634 
20635  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20636  if (wf->execMask(lane)) {
20637  sdst.setBit(lane, 0);
20638  }
20639  }
20640 
20641  wf->execMask() = sdst.rawData();
20642  sdst.write();
20643  }
20644 
20646  InFmt_VOP3 *iFmt)
20647  : Inst_VOP3(iFmt, "v_cmp_lt_i32", true)
20648  {
20649  setFlag(ALU);
20650  } // Inst_VOP3__V_CMP_LT_I32
20651 
20653  {
20654  } // ~Inst_VOP3__V_CMP_LT_I32
20655 
20656  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20657  void
20659  {
20660  Wavefront *wf = gpuDynInst->wavefront();
20661  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20662  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20663  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20664 
20665  src0.readSrc();
20666  src1.readSrc();
20667 
20671  assert(!(instData.ABS & 0x1));
20672  assert(!(instData.ABS & 0x2));
20673  assert(!(instData.ABS & 0x4));
20674  assert(!(extData.NEG & 0x1));
20675  assert(!(extData.NEG & 0x2));
20676  assert(!(extData.NEG & 0x4));
20677 
20678  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20679  if (wf->execMask(lane)) {
20680  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
20681  }
20682  }
20683 
20684  sdst.write();
20685  }
20686 
20688  InFmt_VOP3 *iFmt)
20689  : Inst_VOP3(iFmt, "v_cmp_eq_i32", true)
20690  {
20691  setFlag(ALU);
20692  } // Inst_VOP3__V_CMP_EQ_I32
20693 
20695  {
20696  } // ~Inst_VOP3__V_CMP_EQ_I32
20697 
20698  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
20699  void
20701  {
20702  Wavefront *wf = gpuDynInst->wavefront();
20703  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20704  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20705  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20706 
20707  src0.readSrc();
20708  src1.readSrc();
20709 
20713  assert(!(instData.ABS & 0x1));
20714  assert(!(instData.ABS & 0x2));
20715  assert(!(instData.ABS & 0x4));
20716  assert(!(extData.NEG & 0x1));
20717  assert(!(extData.NEG & 0x2));
20718  assert(!(extData.NEG & 0x4));
20719 
20720  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20721  if (wf->execMask(lane)) {
20722  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
20723  }
20724  }
20725 
20726  sdst.write();
20727  }
20728 
20730  InFmt_VOP3 *iFmt)
20731  : Inst_VOP3(iFmt, "v_cmp_le_i32", true)
20732  {
20733  setFlag(ALU);
20734  } // Inst_VOP3__V_CMP_LE_I32
20735 
20737  {
20738  } // ~Inst_VOP3__V_CMP_LE_I32
20739 
20740  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
20741  void
20743  {
20744  Wavefront *wf = gpuDynInst->wavefront();
20745  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20746  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20747  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20748 
20749  src0.readSrc();
20750  src1.readSrc();
20751 
20755  assert(!(instData.ABS & 0x1));
20756  assert(!(instData.ABS & 0x2));
20757  assert(!(instData.ABS & 0x4));
20758  assert(!(extData.NEG & 0x1));
20759  assert(!(extData.NEG & 0x2));
20760  assert(!(extData.NEG & 0x4));
20761 
20762  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20763  if (wf->execMask(lane)) {
20764  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
20765  }
20766  }
20767 
20768  sdst.write();
20769  }
20770 
20772  InFmt_VOP3 *iFmt)
20773  : Inst_VOP3(iFmt, "v_cmp_gt_i32", true)
20774  {
20775  setFlag(ALU);
20776  } // Inst_VOP3__V_CMP_GT_I32
20777 
20779  {
20780  } // ~Inst_VOP3__V_CMP_GT_I32
20781 
20782  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
20783  void
20785  {
20786  Wavefront *wf = gpuDynInst->wavefront();
20787  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20788  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20789  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20790 
20791  src0.readSrc();
20792  src1.readSrc();
20793 
20797  assert(!(instData.ABS & 0x1));
20798  assert(!(instData.ABS & 0x2));
20799  assert(!(instData.ABS & 0x4));
20800  assert(!(extData.NEG & 0x1));
20801  assert(!(extData.NEG & 0x2));
20802  assert(!(extData.NEG & 0x4));
20803 
20804  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20805  if (wf->execMask(lane)) {
20806  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
20807  }
20808  }
20809 
20810  sdst.write();
20811  }
20812 
20814  InFmt_VOP3 *iFmt)
20815  : Inst_VOP3(iFmt, "v_cmp_ne_i32", true)
20816  {
20817  setFlag(ALU);
20818  } // Inst_VOP3__V_CMP_NE_I32
20819 
20821  {
20822  } // ~Inst_VOP3__V_CMP_NE_I32
20823 
20824  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
20825  void
20827  {
20828  Wavefront *wf = gpuDynInst->wavefront();
20829  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20830  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20831  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20832 
20833  src0.readSrc();
20834  src1.readSrc();
20835 
20839  assert(!(instData.ABS & 0x1));
20840  assert(!(instData.ABS & 0x2));
20841  assert(!(instData.ABS & 0x4));
20842  assert(!(extData.NEG & 0x1));
20843  assert(!(extData.NEG & 0x2));
20844  assert(!(extData.NEG & 0x4));
20845 
20846  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20847  if (wf->execMask(lane)) {
20848  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
20849  }
20850  }
20851 
20852  sdst.write();
20853  }
20854 
20856  InFmt_VOP3 *iFmt)
20857  : Inst_VOP3(iFmt, "v_cmp_ge_i32", true)
20858  {
20859  setFlag(ALU);
20860  } // Inst_VOP3__V_CMP_GE_I32
20861 
20863  {
20864  } // ~Inst_VOP3__V_CMP_GE_I32
20865 
20866  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
20867  void
20869  {
20870  Wavefront *wf = gpuDynInst->wavefront();
20871  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20872  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20873  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20874 
20875  src0.readSrc();
20876  src1.readSrc();
20877 
20881  assert(!(instData.ABS & 0x1));
20882  assert(!(instData.ABS & 0x2));
20883  assert(!(instData.ABS & 0x4));
20884  assert(!(extData.NEG & 0x1));
20885  assert(!(extData.NEG & 0x2));
20886  assert(!(extData.NEG & 0x4));
20887 
20888  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20889  if (wf->execMask(lane)) {
20890  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
20891  }
20892  }
20893 
20894  sdst.write();
20895  }
20896 
20898  : Inst_VOP3(iFmt, "v_cmp_t_i32", true)
20899  {
20900  setFlag(ALU);
20901  } // Inst_VOP3__V_CMP_T_I32
20902 
20904  {
20905  } // ~Inst_VOP3__V_CMP_T_I32
20906 
20907  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
20908  void
20910  {
20911  Wavefront *wf = gpuDynInst->wavefront();
20912  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20913 
20914  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20915  if (wf->execMask(lane)) {
20916  sdst.setBit(lane, 1);
20917  }
20918  }
20919 
20920  sdst.write();
20921  }
20922 
20924  : Inst_VOP3(iFmt, "v_cmp_f_u32", true)
20925  {
20926  setFlag(ALU);
20927  } // Inst_VOP3__V_CMP_F_U32
20928 
20930  {
20931  } // ~Inst_VOP3__V_CMP_F_U32
20932 
20933  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
20934  void
20936  {
20937  Wavefront *wf = gpuDynInst->wavefront();
20938  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20939 
20940  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20941  if (wf->execMask(lane)) {
20942  sdst.setBit(lane, 0);
20943  }
20944  }
20945 
20946  sdst.write();
20947  }
20948 
20950  InFmt_VOP3 *iFmt)
20951  : Inst_VOP3(iFmt, "v_cmp_lt_u32", true)
20952  {
20953  setFlag(ALU);
20954  } // Inst_VOP3__V_CMP_LT_U32
20955 
20957  {
20958  } // ~Inst_VOP3__V_CMP_LT_U32
20959 
20960  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20961  void
20963  {
20964  Wavefront *wf = gpuDynInst->wavefront();
20965  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
20966  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
20967  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20968 
20969  src0.readSrc();
20970  src1.readSrc();
20971 
20975  assert(!(instData.ABS & 0x1));
20976  assert(!(instData.ABS & 0x2));
20977  assert(!(instData.ABS & 0x4));
20978  assert(!(extData.NEG & 0x1));
20979  assert(!(extData.NEG & 0x2));
20980  assert(!(extData.NEG & 0x4));
20981 
20982  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20983  if (wf->execMask(lane)) {
20984  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
20985  }
20986  }
20987 
20988  sdst.write();
20989  }
20990 
20992  InFmt_VOP3 *iFmt)
20993  : Inst_VOP3(iFmt, "v_cmp_eq_u32", true)
20994  {
20995  setFlag(ALU);
20996  } // Inst_VOP3__V_CMP_EQ_U32
20997 
20999  {
21000  } // ~Inst_VOP3__V_CMP_EQ_U32
21001 
21002  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21003  void
21005  {
21006  Wavefront *wf = gpuDynInst->wavefront();
21007  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21008  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21009  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21010 
21011  src0.readSrc();
21012  src1.readSrc();
21013 
21017  assert(!(instData.ABS & 0x1));
21018  assert(!(instData.ABS & 0x2));
21019  assert(!(instData.ABS & 0x4));
21020  assert(!(extData.NEG & 0x1));
21021  assert(!(extData.NEG & 0x2));
21022  assert(!(extData.NEG & 0x4));
21023 
21024  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21025  if (wf->execMask(lane)) {
21026  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21027  }
21028  }
21029 
21030  sdst.write();
21031  }
21032 
21034  InFmt_VOP3 *iFmt)
21035  : Inst_VOP3(iFmt, "v_cmp_le_u32", true)
21036  {
21037  setFlag(ALU);
21038  } // Inst_VOP3__V_CMP_LE_U32
21039 
21041  {
21042  } // ~Inst_VOP3__V_CMP_LE_U32
21043 
21044  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21045  void
21047  {
21048  Wavefront *wf = gpuDynInst->wavefront();
21049  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21050  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21051  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21052 
21053  src0.readSrc();
21054  src1.readSrc();
21055 
21059  assert(!(instData.ABS & 0x1));
21060  assert(!(instData.ABS & 0x2));
21061  assert(!(instData.ABS & 0x4));
21062  assert(!(extData.NEG & 0x1));
21063  assert(!(extData.NEG & 0x2));
21064  assert(!(extData.NEG & 0x4));
21065 
21066  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21067  if (wf->execMask(lane)) {
21068  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
21069  }
21070  }
21071 
21072  sdst.write();
21073  }
21074 
21076  InFmt_VOP3 *iFmt)
21077  : Inst_VOP3(iFmt, "v_cmp_gt_u32", true)
21078  {
21079  setFlag(ALU);
21080  } // Inst_VOP3__V_CMP_GT_U32
21081 
21083  {
21084  } // ~Inst_VOP3__V_CMP_GT_U32
21085 
21086  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
21087  void
21089  {
21090  Wavefront *wf = gpuDynInst->wavefront();
21091  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21092  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21093  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21094 
21095  src0.readSrc();
21096  src1.readSrc();
21097 
21101  assert(!(instData.ABS & 0x1));
21102  assert(!(instData.ABS & 0x2));
21103  assert(!(instData.ABS & 0x4));
21104  assert(!(extData.NEG & 0x1));
21105  assert(!(extData.NEG & 0x2));
21106  assert(!(extData.NEG & 0x4));
21107 
21108  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21109  if (wf->execMask(lane)) {
21110  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
21111  }
21112  }
21113 
21114  sdst.write();
21115  }
21116 
21118  InFmt_VOP3 *iFmt)
21119  : Inst_VOP3(iFmt, "v_cmp_ne_u32", true)
21120  {
21121  setFlag(ALU);
21122  } // Inst_VOP3__V_CMP_NE_U32
21123 
21125  {
21126  } // ~Inst_VOP3__V_CMP_NE_U32
21127 
21128  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
21129  void
21131  {
21132  Wavefront *wf = gpuDynInst->wavefront();
21133  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21134  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21135  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21136 
21137  src0.readSrc();
21138  src1.readSrc();
21139 
21143  assert(!(instData.ABS & 0x1));
21144  assert(!(instData.ABS & 0x2));
21145  assert(!(instData.ABS & 0x4));
21146  assert(!(extData.NEG & 0x1));
21147  assert(!(extData.NEG & 0x2));
21148  assert(!(extData.NEG & 0x4));
21149 
21150  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21151  if (wf->execMask(lane)) {
21152  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21153  }
21154  }
21155 
21156  sdst.write();
21157  }
21158 
21160  InFmt_VOP3 *iFmt)
21161  : Inst_VOP3(iFmt, "v_cmp_ge_u32", true)
21162  {
21163  setFlag(ALU);
21164  } // Inst_VOP3__V_CMP_GE_U32
21165 
21167  {
21168  } // ~Inst_VOP3__V_CMP_GE_U32
21169 
21170  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
21171  void
21173  {
21174  Wavefront *wf = gpuDynInst->wavefront();
21175  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21176  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21177  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21178 
21179  src0.readSrc();
21180  src1.readSrc();
21181 
21185  assert(!(instData.ABS & 0x1));
21186  assert(!(instData.ABS & 0x2));
21187  assert(!(instData.ABS & 0x4));
21188  assert(!(extData.NEG & 0x1));
21189  assert(!(extData.NEG & 0x2));
21190  assert(!(extData.NEG & 0x4));
21191 
21192  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21193  if (wf->execMask(lane)) {
21194  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
21195  }
21196  }
21197 
21198  sdst.write();
21199  }
21200 
21202  : Inst_VOP3(iFmt, "v_cmp_t_u32", true)
21203  {
21204  setFlag(ALU);
21205  } // Inst_VOP3__V_CMP_T_U32
21206 
21208  {
21209  } // ~Inst_VOP3__V_CMP_T_U32
21210 
21211  // D.u64[threadID] = 1; 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, 1);
21221  }
21222  }
21223 
21224  sdst.write();
21225  }
21226 
21228  InFmt_VOP3 *iFmt)
21229  : Inst_VOP3(iFmt, "v_cmpx_f_i32", true)
21230  {
21231  setFlag(ALU);
21232  } // Inst_VOP3__V_CMPX_F_I32
21233 
21235  {
21236  } // ~Inst_VOP3__V_CMPX_F_I32
21237 
21238  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
21239  void
21241  {
21242  Wavefront *wf = gpuDynInst->wavefront();
21243  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21244 
21245  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21246  if (wf->execMask(lane)) {
21247  sdst.setBit(lane, 0);
21248  }
21249  }
21250 
21251  wf->execMask() = sdst.rawData();
21252  sdst.write();
21253  }
21254 
21256  InFmt_VOP3 *iFmt)
21257  : Inst_VOP3(iFmt, "v_cmpx_lt_i32", true)
21258  {
21259  setFlag(ALU);
21260  } // Inst_VOP3__V_CMPX_LT_I32
21261 
21263  {
21264  } // ~Inst_VOP3__V_CMPX_LT_I32
21265 
21266  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21267  void
21269  {
21270  Wavefront *wf = gpuDynInst->wavefront();
21271  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21272  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21273  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21274 
21275  src0.readSrc();
21276  src1.readSrc();
21277 
21281  assert(!(instData.ABS & 0x1));
21282  assert(!(instData.ABS & 0x2));
21283  assert(!(instData.ABS & 0x4));
21284  assert(!(extData.NEG & 0x1));
21285  assert(!(extData.NEG & 0x2));
21286  assert(!(extData.NEG & 0x4));
21287 
21288  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21289  if (wf->execMask(lane)) {
21290  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21291  }
21292  }
21293 
21294  wf->execMask() = sdst.rawData();
21295  sdst.write();
21296  }
21297 
21299  InFmt_VOP3 *iFmt)
21300  : Inst_VOP3(iFmt, "v_cmpx_eq_i32", true)
21301  {
21302  setFlag(ALU);
21303  } // Inst_VOP3__V_CMPX_EQ_I32
21304 
21306  {
21307  } // ~Inst_VOP3__V_CMPX_EQ_I32
21308 
21309  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21310  void
21312  {
21313  Wavefront *wf = gpuDynInst->wavefront();
21314  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21315  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21316  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21317 
21318  src0.readSrc();
21319  src1.readSrc();
21320 
21324  assert(!(instData.ABS & 0x1));
21325  assert(!(instData.ABS & 0x2));
21326  assert(!(instData.ABS & 0x4));
21327  assert(!(extData.NEG & 0x1));
21328  assert(!(extData.NEG & 0x2));
21329  assert(!(extData.NEG & 0x4));
21330 
21331  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21332  if (wf->execMask(lane)) {
21333  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21334  }
21335  }
21336 
21337  wf->execMask() = sdst.rawData();
21338  sdst.write();
21339  }
21340 
21342  InFmt_VOP3 *iFmt)
21343  : Inst_VOP3(iFmt, "v_cmpx_le_i32", true)
21344  {
21345  setFlag(ALU);
21346  } // Inst_VOP3__V_CMPX_LE_I32
21347 
21349  {
21350  } // ~Inst_VOP3__V_CMPX_LE_I32
21351 
21352  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21353  void
21355  {
21356  Wavefront *wf = gpuDynInst->wavefront();
21357  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21358  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21359  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21360 
21361  src0.readSrc();
21362  src1.readSrc();
21363 
21367  assert(!(instData.ABS & 0x1));
21368  assert(!(instData.ABS & 0x2));
21369  assert(!(instData.ABS & 0x4));
21370  assert(!(extData.NEG & 0x1));
21371  assert(!(extData.NEG & 0x2));
21372  assert(!(extData.NEG & 0x4));
21373 
21374  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21375  if (wf->execMask(lane)) {
21376  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
21377  }
21378  }
21379 
21380  wf->execMask() = sdst.rawData();
21381  sdst.write();
21382  }
21383 
21385  InFmt_VOP3 *iFmt)
21386  : Inst_VOP3(iFmt, "v_cmpx_gt_i32", true)
21387  {
21388  setFlag(ALU);
21389  } // Inst_VOP3__V_CMPX_GT_I32
21390 
21392  {
21393  } // ~Inst_VOP3__V_CMPX_GT_I32
21394 
21395  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
21396  void
21398  {
21399  Wavefront *wf = gpuDynInst->wavefront();
21400  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21401  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21402  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21403 
21404  src0.readSrc();
21405  src1.readSrc();
21406 
21410  assert(!(instData.ABS & 0x1));
21411  assert(!(instData.ABS & 0x2));
21412  assert(!(instData.ABS & 0x4));
21413  assert(!(extData.NEG & 0x1));
21414  assert(!(extData.NEG & 0x2));
21415  assert(!(extData.NEG & 0x4));
21416 
21417  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21418  if (wf->execMask(lane)) {
21419  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
21420  }
21421  }
21422 
21423  wf->execMask() = sdst.rawData();
21424  sdst.write();
21425  }
21426 
21428  InFmt_VOP3 *iFmt)
21429  : Inst_VOP3(iFmt, "v_cmpx_ne_i32", true)
21430  {
21431  setFlag(ALU);
21432  } // Inst_VOP3__V_CMPX_NE_I32
21433 
21435  {
21436  } // ~Inst_VOP3__V_CMPX_NE_I32
21437 
21438  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
21439  void
21441  {
21442  Wavefront *wf = gpuDynInst->wavefront();
21443  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21444  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21445  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21446 
21447  src0.readSrc();
21448  src1.readSrc();
21449 
21453  assert(!(instData.ABS & 0x1));
21454  assert(!(instData.ABS & 0x2));
21455  assert(!(instData.ABS & 0x4));
21456  assert(!(extData.NEG & 0x1));
21457  assert(!(extData.NEG & 0x2));
21458  assert(!(extData.NEG & 0x4));
21459 
21460  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21461  if (wf->execMask(lane)) {
21462  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21463  }
21464  }
21465 
21466  wf->execMask() = sdst.rawData();
21467  sdst.write();
21468  }
21469 
21471  InFmt_VOP3 *iFmt)
21472  : Inst_VOP3(iFmt, "v_cmpx_ge_i32", true)
21473  {
21474  setFlag(ALU);
21475  } // Inst_VOP3__V_CMPX_GE_I32
21476 
21478  {
21479  } // ~Inst_VOP3__V_CMPX_GE_I32
21480 
21481  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
21482  void
21484  {
21485  Wavefront *wf = gpuDynInst->wavefront();
21486  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21487  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21488  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21489 
21490  src0.readSrc();
21491  src1.readSrc();
21492 
21496  assert(!(instData.ABS & 0x1));
21497  assert(!(instData.ABS & 0x2));
21498  assert(!(instData.ABS & 0x4));
21499  assert(!(extData.NEG & 0x1));
21500  assert(!(extData.NEG & 0x2));
21501  assert(!(extData.NEG & 0x4));
21502 
21503  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21504  if (wf->execMask(lane)) {
21505  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
21506  }
21507  }
21508 
21509  wf->execMask() = sdst.rawData();
21510  sdst.write();
21511  }
21512 
21514  InFmt_VOP3 *iFmt)
21515  : Inst_VOP3(iFmt, "v_cmpx_t_i32", true)
21516  {
21517  setFlag(ALU);
21518  } // Inst_VOP3__V_CMPX_T_I32
21519 
21521  {
21522  } // ~Inst_VOP3__V_CMPX_T_I32
21523 
21524  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
21525  void
21527  {
21528  Wavefront *wf = gpuDynInst->wavefront();
21529  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21530 
21531  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21532  if (wf->execMask(lane)) {
21533  sdst.setBit(lane, 1);
21534  }
21535  }
21536 
21537  wf->execMask() = sdst.rawData();
21538  sdst.write();
21539  }
21540 
21542  InFmt_VOP3 *iFmt)
21543  : Inst_VOP3(iFmt, "v_cmpx_f_u32", true)
21544  {
21545  setFlag(ALU);
21546  } // Inst_VOP3__V_CMPX_F_U32
21547 
21549  {
21550  } // ~Inst_VOP3__V_CMPX_F_U32
21551 
21552  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
21553  void
21555  {
21556  Wavefront *wf = gpuDynInst->wavefront();
21557  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21558 
21559  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21560  if (wf->execMask(lane)) {
21561  sdst.setBit(lane, 0);
21562  }
21563  }
21564 
21565  wf->execMask() = sdst.rawData();
21566  sdst.write();
21567  }
21568 
21570  InFmt_VOP3 *iFmt)
21571  : Inst_VOP3(iFmt, "v_cmpx_lt_u32", true)
21572  {
21573  setFlag(ALU);
21574  } // Inst_VOP3__V_CMPX_LT_U32
21575 
21577  {
21578  } // ~Inst_VOP3__V_CMPX_LT_U32
21579 
21580  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21581  void
21583  {
21584  Wavefront *wf = gpuDynInst->wavefront();
21585  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21586  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21587  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21588 
21589  src0.readSrc();
21590  src1.readSrc();
21591 
21595  assert(!(instData.ABS & 0x1));
21596  assert(!(instData.ABS & 0x2));
21597  assert(!(instData.ABS & 0x4));
21598  assert(!(extData.NEG & 0x1));
21599  assert(!(extData.NEG & 0x2));
21600  assert(!(extData.NEG & 0x4));
21601 
21602  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21603  if (wf->execMask(lane)) {
21604  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21605  }
21606  }
21607 
21608  wf->execMask() = sdst.rawData();
21609  sdst.write();
21610  }
21611 
21613  InFmt_VOP3 *iFmt)
21614  : Inst_VOP3(iFmt, "v_cmpx_eq_u32", true)
21615  {
21616  setFlag(ALU);
21617  } // Inst_VOP3__V_CMPX_EQ_U32
21618 
21620  {
21621  } // ~Inst_VOP3__V_CMPX_EQ_U32
21622 
21623  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21624  void
21626  {
21627  Wavefront *wf = gpuDynInst->wavefront();
21628  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21629  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21630  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21631 
21632  src0.readSrc();
21633  src1.readSrc();
21634 
21638  assert(!(instData.ABS & 0x1));
21639  assert(!(instData.ABS & 0x2));
21640  assert(!(instData.ABS & 0x4));
21641  assert(!(extData.NEG & 0x1));
21642  assert(!(extData.NEG & 0x2));
21643  assert(!(extData.NEG & 0x4));
21644 
21645  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21646  if (wf->execMask(lane)) {
21647  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21648  }
21649  }
21650 
21651  wf->execMask() = sdst.rawData();
21652  sdst.write();
21653  }
21654 
21656  InFmt_VOP3 *iFmt)
21657  : Inst_VOP3(iFmt, "v_cmpx_le_u32", true)
21658  {
21659  setFlag(ALU);
21660  } // Inst_VOP3__V_CMPX_LE_U32
21661 
21663  {
21664  } // ~Inst_VOP3__V_CMPX_LE_U32
21665 
21666  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21667  void
21669  {
21670  Wavefront *wf = gpuDynInst->wavefront();
21671  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21672  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21673  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21674 
21675  src0.readSrc();
21676  src1.readSrc();
21677 
21681  assert(!(instData.ABS & 0x1));
21682  assert(!(instData.ABS & 0x2));
21683  assert(!(instData.ABS & 0x4));
21684  assert(!(extData.NEG & 0x1));
21685  assert(!(extData.NEG & 0x2));
21686  assert(!(extData.NEG & 0x4));
21687 
21688  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21689  if (wf->execMask(lane)) {
21690  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
21691  }
21692  }
21693 
21694  wf->execMask() = sdst.rawData();
21695  sdst.write();
21696  }
21697 
21699  InFmt_VOP3 *iFmt)
21700  : Inst_VOP3(iFmt, "v_cmpx_gt_u32", true)
21701  {
21702  setFlag(ALU);
21703  } // Inst_VOP3__V_CMPX_GT_U32
21704 
21706  {
21707  } // ~Inst_VOP3__V_CMPX_GT_U32
21708 
21709  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
21710  void
21712  {
21713  Wavefront *wf = gpuDynInst->wavefront();
21714  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21715  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21716  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21717 
21718  src0.readSrc();
21719  src1.readSrc();
21720 
21724  assert(!(instData.ABS & 0x1));
21725  assert(!(instData.ABS & 0x2));
21726  assert(!(instData.ABS & 0x4));
21727  assert(!(extData.NEG & 0x1));
21728  assert(!(extData.NEG & 0x2));
21729  assert(!(extData.NEG & 0x4));
21730 
21731  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21732  if (wf->execMask(lane)) {
21733  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
21734  }
21735  }
21736 
21737  wf->execMask() = sdst.rawData();
21738  sdst.write();
21739  }
21740 
21742  InFmt_VOP3 *iFmt)
21743  : Inst_VOP3(iFmt, "v_cmpx_ne_u32", true)
21744  {
21745  setFlag(ALU);
21746  } // Inst_VOP3__V_CMPX_NE_U32
21747 
21749  {
21750  } // ~Inst_VOP3__V_CMPX_NE_U32
21751 
21752  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
21753  void
21755  {
21756  Wavefront *wf = gpuDynInst->wavefront();
21757  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21758  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21759  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21760 
21761  src0.readSrc();
21762  src1.readSrc();
21763 
21767  assert(!(instData.ABS & 0x1));
21768  assert(!(instData.ABS & 0x2));
21769  assert(!(instData.ABS & 0x4));
21770  assert(!(extData.NEG & 0x1));
21771  assert(!(extData.NEG & 0x2));
21772  assert(!(extData.NEG & 0x4));
21773 
21774  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21775  if (wf->execMask(lane)) {
21776  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21777  }
21778  }
21779 
21780  wf->execMask() = sdst.rawData();
21781  sdst.write();
21782  }
21783 
21785  InFmt_VOP3 *iFmt)
21786  : Inst_VOP3(iFmt, "v_cmpx_ge_u32", true)
21787  {
21788  setFlag(ALU);
21789  } // Inst_VOP3__V_CMPX_GE_U32
21790 
21792  {
21793  } // ~Inst_VOP3__V_CMPX_GE_U32
21794 
21795  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
21796  void
21798  {
21799  Wavefront *wf = gpuDynInst->wavefront();
21800  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21801  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21802  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21803 
21804  src0.readSrc();
21805  src1.readSrc();
21806 
21810  assert(!(instData.ABS & 0x1));
21811  assert(!(instData.ABS & 0x2));
21812  assert(!(instData.ABS & 0x4));
21813  assert(!(extData.NEG & 0x1));
21814  assert(!(extData.NEG & 0x2));
21815  assert(!(extData.NEG & 0x4));
21816 
21817  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21818  if (wf->execMask(lane)) {
21819  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
21820  }
21821  }
21822 
21823  wf->execMask() = sdst.rawData();
21824  sdst.write();
21825  }
21826 
21828  InFmt_VOP3 *iFmt)
21829  : Inst_VOP3(iFmt, "v_cmpx_t_u32", true)
21830  {
21831  setFlag(ALU);
21832  } // Inst_VOP3__V_CMPX_T_U32
21833 
21835  {
21836  } // ~Inst_VOP3__V_CMPX_T_U32
21837 
21838  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
21839  void
21841  {
21842  Wavefront *wf = gpuDynInst->wavefront();
21843  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21844 
21845  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21846  if (wf->execMask(lane)) {
21847  sdst.setBit(lane, 1);
21848  }
21849  }
21850 
21851  wf->execMask() = sdst.rawData();
21852  sdst.write();
21853  }
21854 
21856  : Inst_VOP3(iFmt, "v_cmp_f_i64", true)
21857  {
21858  setFlag(ALU);
21859  } // Inst_VOP3__V_CMP_F_I64
21860 
21862  {
21863  } // ~Inst_VOP3__V_CMP_F_I64
21864 
21865  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
21866  void
21868  {
21869  Wavefront *wf = gpuDynInst->wavefront();
21870  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21871 
21872  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21873  if (wf->execMask(lane)) {
21874  sdst.setBit(lane, 0);
21875  }
21876  }
21877 
21878  sdst.write();
21879  }
21880 
21882  InFmt_VOP3 *iFmt)
21883  : Inst_VOP3(iFmt, "v_cmp_lt_i64", true)
21884  {
21885  setFlag(ALU);
21886  } // Inst_VOP3__V_CMP_LT_I64
21887 
21889  {
21890  } // ~Inst_VOP3__V_CMP_LT_I64
21891 
21892  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21893  void
21895  {
21896  Wavefront *wf = gpuDynInst->wavefront();
21897  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
21898  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
21899  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21900 
21901  src0.readSrc();
21902  src1.readSrc();
21903 
21907  assert(!(instData.ABS & 0x1));
21908  assert(!(instData.ABS & 0x2));
21909  assert(!(instData.ABS & 0x4));
21910  assert(!(extData.NEG & 0x1));
21911  assert(!(extData.NEG & 0x2));
21912  assert(!(extData.NEG & 0x4));
21913 
21914  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21915  if (wf->execMask(lane)) {
21916  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21917  }
21918  }
21919 
21920  sdst.write();
21921  }
21922 
21924  InFmt_VOP3 *iFmt)
21925  : Inst_VOP3(iFmt, "v_cmp_eq_i64", true)
21926  {
21927  setFlag(ALU);
21928  } // Inst_VOP3__V_CMP_EQ_I64
21929 
21931  {
21932  } // ~Inst_VOP3__V_CMP_EQ_I64
21933 
21934  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21935  void
21937  {
21938  Wavefront *wf = gpuDynInst->wavefront();
21939  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
21940  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
21941  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21942 
21943  src0.readSrc();
21944  src1.readSrc();
21945 
21949  assert(!(instData.ABS & 0x1));
21950  assert(!(instData.ABS & 0x2));
21951  assert(!(instData.ABS & 0x4));
21952  assert(!(extData.NEG & 0x1));
21953  assert(!(extData.NEG & 0x2));
21954  assert(!(extData.NEG & 0x4));
21955 
21956  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21957  if (wf->execMask(lane)) {
21958  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21959  }
21960  }
21961 
21962  sdst.write();
21963  }
21964 
21966  InFmt_VOP3 *iFmt)
21967  : Inst_VOP3(iFmt, "v_cmp_le_i64", true)
21968  {
21969  setFlag(ALU);
21970  } // Inst_VOP3__V_CMP_LE_I64
21971 
21973  {
21974  } // ~Inst_VOP3__V_CMP_LE_I64
21975 
21976  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21977  void
21979  {
21980  Wavefront *wf = gpuDynInst->wavefront();
21981  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
21982  ConstVecOperandI64 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  sdst.write();
22005  }
22006 
22008  InFmt_VOP3 *iFmt)
22009  : Inst_VOP3(iFmt, "v_cmp_gt_i64", true)
22010  {
22011  setFlag(ALU);
22012  } // Inst_VOP3__V_CMP_GT_I64
22013 
22015  {
22016  } // ~Inst_VOP3__V_CMP_GT_I64
22017 
22018  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22019  void
22021  {
22022  Wavefront *wf = gpuDynInst->wavefront();
22023  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22024  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22025  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22026 
22027  src0.readSrc();
22028  src1.readSrc();
22029 
22033  assert(!(instData.ABS & 0x1));
22034  assert(!(instData.ABS & 0x2));
22035  assert(!(instData.ABS & 0x4));
22036  assert(!(extData.NEG & 0x1));
22037  assert(!(extData.NEG & 0x2));
22038  assert(!(extData.NEG & 0x4));
22039 
22040  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22041  if (wf->execMask(lane)) {
22042  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22043  }
22044  }
22045 
22046  sdst.write();
22047  }
22048 
22050  InFmt_VOP3 *iFmt)
22051  : Inst_VOP3(iFmt, "v_cmp_ne_i64", true)
22052  {
22053  setFlag(ALU);
22054  } // Inst_VOP3__V_CMP_NE_I64
22055 
22057  {
22058  } // ~Inst_VOP3__V_CMP_NE_I64
22059 
22060  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22061  void
22063  {
22064  Wavefront *wf = gpuDynInst->wavefront();
22065  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22066  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22067  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22068 
22069  src0.readSrc();
22070  src1.readSrc();
22071 
22075  assert(!(instData.ABS & 0x1));
22076  assert(!(instData.ABS & 0x2));
22077  assert(!(instData.ABS & 0x4));
22078  assert(!(extData.NEG & 0x1));
22079  assert(!(extData.NEG & 0x2));
22080  assert(!(extData.NEG & 0x4));
22081 
22082  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22083  if (wf->execMask(lane)) {
22084  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22085  }
22086  }
22087 
22088  sdst.write();
22089  }
22090 
22092  InFmt_VOP3 *iFmt)
22093  : Inst_VOP3(iFmt, "v_cmp_ge_i64", true)
22094  {
22095  setFlag(ALU);
22096  } // Inst_VOP3__V_CMP_GE_I64
22097 
22099  {
22100  } // ~Inst_VOP3__V_CMP_GE_I64
22101 
22102  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22103  void
22105  {
22106  Wavefront *wf = gpuDynInst->wavefront();
22107  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22108  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22109  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22110 
22111  src0.readSrc();
22112  src1.readSrc();
22113 
22117  assert(!(instData.ABS & 0x1));
22118  assert(!(instData.ABS & 0x2));
22119  assert(!(instData.ABS & 0x4));
22120  assert(!(extData.NEG & 0x1));
22121  assert(!(extData.NEG & 0x2));
22122  assert(!(extData.NEG & 0x4));
22123 
22124  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22125  if (wf->execMask(lane)) {
22126  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
22127  }
22128  }
22129 
22130  sdst.write();
22131  }
22132 
22134  : Inst_VOP3(iFmt, "v_cmp_t_i64", true)
22135  {
22136  setFlag(ALU);
22137  } // Inst_VOP3__V_CMP_T_I64
22138 
22140  {
22141  } // ~Inst_VOP3__V_CMP_T_I64
22142 
22143  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
22144  void
22146  {
22147  Wavefront *wf = gpuDynInst->wavefront();
22148  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22149 
22150  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22151  if (wf->execMask(lane)) {
22152  sdst.setBit(lane, 1);
22153  }
22154  }
22155 
22156  sdst.write();
22157  }
22158 
22160  : Inst_VOP3(iFmt, "v_cmp_f_u64", true)
22161  {
22162  setFlag(ALU);
22163  } // Inst_VOP3__V_CMP_F_U64
22164 
22166  {
22167  } // ~Inst_VOP3__V_CMP_F_U64
22168 
22169  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
22170  void
22172  {
22173  Wavefront *wf = gpuDynInst->wavefront();
22174  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22175 
22176  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22177  if (wf->execMask(lane)) {
22178  sdst.setBit(lane, 0);
22179  }
22180  }
22181 
22182  sdst.write();
22183  }
22184 
22186  InFmt_VOP3 *iFmt)
22187  : Inst_VOP3(iFmt, "v_cmp_lt_u64", true)
22188  {
22189  setFlag(ALU);
22190  } // Inst_VOP3__V_CMP_LT_U64
22191 
22193  {
22194  } // ~Inst_VOP3__V_CMP_LT_U64
22195 
22196  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22197  void
22199  {
22200  Wavefront *wf = gpuDynInst->wavefront();
22201  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22202  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22203  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22204 
22205  src0.readSrc();
22206  src1.readSrc();
22207 
22211  assert(!(instData.ABS & 0x1));
22212  assert(!(instData.ABS & 0x2));
22213  assert(!(instData.ABS & 0x4));
22214  assert(!(extData.NEG & 0x1));
22215  assert(!(extData.NEG & 0x2));
22216  assert(!(extData.NEG & 0x4));
22217 
22218  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22219  if (wf->execMask(lane)) {
22220  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22221  }
22222  }
22223 
22224  sdst.write();
22225  }
22226 
22228  InFmt_VOP3 *iFmt)
22229  : Inst_VOP3(iFmt, "v_cmp_eq_u64", true)
22230  {
22231  setFlag(ALU);
22232  } // Inst_VOP3__V_CMP_EQ_U64
22233 
22235  {
22236  } // ~Inst_VOP3__V_CMP_EQ_U64
22237 
22238  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22239  void
22241  {
22242  Wavefront *wf = gpuDynInst->wavefront();
22243  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22244  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22245  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22246 
22247  src0.readSrc();
22248  src1.readSrc();
22249 
22253  assert(!(instData.ABS & 0x1));
22254  assert(!(instData.ABS & 0x2));
22255  assert(!(instData.ABS & 0x4));
22256  assert(!(extData.NEG & 0x1));
22257  assert(!(extData.NEG & 0x2));
22258  assert(!(extData.NEG & 0x4));
22259 
22260  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22261  if (wf->execMask(lane)) {
22262  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22263  }
22264  }
22265 
22266  sdst.write();
22267  }
22268 
22270  InFmt_VOP3 *iFmt)
22271  : Inst_VOP3(iFmt, "v_cmp_le_u64", true)
22272  {
22273  setFlag(ALU);
22274  } // Inst_VOP3__V_CMP_LE_U64
22275 
22277  {
22278  } // ~Inst_VOP3__V_CMP_LE_U64
22279 
22280  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22281  void
22283  {
22284  Wavefront *wf = gpuDynInst->wavefront();
22285  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22286  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22287  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22288 
22289  src0.readSrc();
22290  src1.readSrc();
22291 
22295  assert(!(instData.ABS & 0x1));
22296  assert(!(instData.ABS & 0x2));
22297  assert(!(instData.ABS & 0x4));
22298  assert(!(extData.NEG & 0x1));
22299  assert(!(extData.NEG & 0x2));
22300  assert(!(extData.NEG & 0x4));
22301 
22302  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22303  if (wf->execMask(lane)) {
22304  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22305  }
22306  }
22307 
22308  sdst.write();
22309  }
22310 
22312  InFmt_VOP3 *iFmt)
22313  : Inst_VOP3(iFmt, "v_cmp_gt_u64", true)
22314  {
22315  setFlag(ALU);
22316  } // Inst_VOP3__V_CMP_GT_U64
22317 
22319  {
22320  } // ~Inst_VOP3__V_CMP_GT_U64
22321 
22322  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22323  void
22325  {
22326  Wavefront *wf = gpuDynInst->wavefront();
22327  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22328  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22329  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22330 
22331  src0.readSrc();
22332  src1.readSrc();
22333 
22337  assert(!(instData.ABS & 0x1));
22338  assert(!(instData.ABS & 0x2));
22339  assert(!(instData.ABS & 0x4));
22340  assert(!(extData.NEG & 0x1));
22341  assert(!(extData.NEG & 0x2));
22342  assert(!(extData.NEG & 0x4));
22343 
22344  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22345  if (wf->execMask(lane)) {
22346  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22347  }
22348  }
22349 
22350  sdst.write();
22351  }
22352 
22354  InFmt_VOP3 *iFmt)
22355  : Inst_VOP3(iFmt, "v_cmp_ne_u64", true)
22356  {
22357  setFlag(ALU);
22358  } // Inst_VOP3__V_CMP_NE_U64
22359 
22361  {
22362  } // ~Inst_VOP3__V_CMP_NE_U64
22363 
22364  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22365  void
22367  {
22368  Wavefront *wf = gpuDynInst->wavefront();
22369  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22370  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22371  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22372 
22373  src0.readSrc();
22374  src1.readSrc();
22375 
22379  assert(!(instData.ABS & 0x1));
22380  assert(!(instData.ABS & 0x2));
22381  assert(!(instData.ABS & 0x4));
22382  assert(!(extData.NEG & 0x1));
22383  assert(!(extData.NEG & 0x2));
22384  assert(!(extData.NEG & 0x4));
22385 
22386  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22387  if (wf->execMask(lane)) {
22388  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22389  }
22390  }
22391 
22392  sdst.write();
22393  }
22394 
22396  InFmt_VOP3 *iFmt)
22397  : Inst_VOP3(iFmt, "v_cmp_ge_u64", true)
22398  {
22399  setFlag(ALU);
22400  } // Inst_VOP3__V_CMP_GE_U64
22401 
22403  {
22404  } // ~Inst_VOP3__V_CMP_GE_U64
22405 
22406  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22407  void
22409  {
22410  Wavefront *wf = gpuDynInst->wavefront();
22411  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22412  ConstVecOperandU64 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  sdst.write();
22435  }
22436 
22438  : Inst_VOP3(iFmt, "v_cmp_t_u64", true)
22439  {
22440  setFlag(ALU);
22441  } // Inst_VOP3__V_CMP_T_U64
22442 
22444  {
22445  } // ~Inst_VOP3__V_CMP_T_U64
22446 
22447  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
22448  void
22450  {
22451  Wavefront *wf = gpuDynInst->wavefront();
22452  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22453 
22454  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22455  if (wf->execMask(lane)) {
22456  sdst.setBit(lane, 1);
22457  }
22458  }
22459 
22460  sdst.write();
22461  }
22462 
22464  InFmt_VOP3 *iFmt)
22465  : Inst_VOP3(iFmt, "v_cmpx_f_i64", true)
22466  {
22467  setFlag(ALU);
22468  } // Inst_VOP3__V_CMPX_F_I64
22469 
22471  {
22472  } // ~Inst_VOP3__V_CMPX_F_I64
22473 
22474  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
22475  void
22477  {
22478  Wavefront *wf = gpuDynInst->wavefront();
22479  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22480 
22481  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22482  if (wf->execMask(lane)) {
22483  sdst.setBit(lane, 0);
22484  }
22485  }
22486 
22487  wf->execMask() = sdst.rawData();
22488  sdst.write();
22489  }
22490 
22492  InFmt_VOP3 *iFmt)
22493  : Inst_VOP3(iFmt, "v_cmpx_lt_i64", true)
22494  {
22495  setFlag(ALU);
22496  } // Inst_VOP3__V_CMPX_LT_I64
22497 
22499  {
22500  } // ~Inst_VOP3__V_CMPX_LT_I64
22501 
22502  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22503  void
22505  {
22506  Wavefront *wf = gpuDynInst->wavefront();
22507  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22508  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22509  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22510 
22511  src0.readSrc();
22512  src1.readSrc();
22513 
22517  assert(!(instData.ABS & 0x1));
22518  assert(!(instData.ABS & 0x2));
22519  assert(!(instData.ABS & 0x4));
22520  assert(!(extData.NEG & 0x1));
22521  assert(!(extData.NEG & 0x2));
22522  assert(!(extData.NEG & 0x4));
22523 
22524  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22525  if (wf->execMask(lane)) {
22526  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22527  }
22528  }
22529 
22530  wf->execMask() = sdst.rawData();
22531  sdst.write();
22532  }
22533 
22535  InFmt_VOP3 *iFmt)
22536  : Inst_VOP3(iFmt, "v_cmpx_eq_i64", true)
22537  {
22538  setFlag(ALU);
22539  } // Inst_VOP3__V_CMPX_EQ_I64
22540 
22542  {
22543  } // ~Inst_VOP3__V_CMPX_EQ_I64
22544 
22545  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22546  void
22548  {
22549  Wavefront *wf = gpuDynInst->wavefront();
22550  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22551  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22552  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22553 
22554  src0.readSrc();
22555  src1.readSrc();
22556 
22560  assert(!(instData.ABS & 0x1));
22561  assert(!(instData.ABS & 0x2));
22562  assert(!(instData.ABS & 0x4));
22563  assert(!(extData.NEG & 0x1));
22564  assert(!(extData.NEG & 0x2));
22565  assert(!(extData.NEG & 0x4));
22566 
22567  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22568  if (wf->execMask(lane)) {
22569  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22570  }
22571  }
22572 
22573  wf->execMask() = sdst.rawData();
22574  sdst.write();
22575  }
22576 
22578  InFmt_VOP3 *iFmt)
22579  : Inst_VOP3(iFmt, "v_cmpx_le_i64", true)
22580  {
22581  setFlag(ALU);
22582  } // Inst_VOP3__V_CMPX_LE_I64
22583 
22585  {
22586  } // ~Inst_VOP3__V_CMPX_LE_I64
22587 
22588  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22589  void
22591  {
22592  Wavefront *wf = gpuDynInst->wavefront();
22593  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22594  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22595  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22596 
22597  src0.readSrc();
22598  src1.readSrc();
22599 
22603  assert(!(instData.ABS & 0x1));
22604  assert(!(instData.ABS & 0x2));
22605  assert(!(instData.ABS & 0x4));
22606  assert(!(extData.NEG & 0x1));
22607  assert(!(extData.NEG & 0x2));
22608  assert(!(extData.NEG & 0x4));
22609 
22610  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22611  if (wf->execMask(lane)) {
22612  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22613  }
22614  }
22615 
22616  wf->execMask() = sdst.rawData();
22617  sdst.write();
22618  }
22619 
22621  InFmt_VOP3 *iFmt)
22622  : Inst_VOP3(iFmt, "v_cmpx_gt_i64", true)
22623  {
22624  setFlag(ALU);
22625  } // Inst_VOP3__V_CMPX_GT_I64
22626 
22628  {
22629  } // ~Inst_VOP3__V_CMPX_GT_I64
22630 
22631  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22632  void
22634  {
22635  Wavefront *wf = gpuDynInst->wavefront();
22636  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22637  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22638  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22639 
22640  src0.readSrc();
22641  src1.readSrc();
22642 
22646  assert(!(instData.ABS & 0x1));
22647  assert(!(instData.ABS & 0x2));
22648  assert(!(instData.ABS & 0x4));
22649  assert(!(extData.NEG & 0x1));
22650  assert(!(extData.NEG & 0x2));
22651  assert(!(extData.NEG & 0x4));
22652 
22653  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22654  if (wf->execMask(lane)) {
22655  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22656  }
22657  }
22658 
22659  wf->execMask() = sdst.rawData();
22660  sdst.write();
22661  }
22662 
22664  InFmt_VOP3 *iFmt)
22665  : Inst_VOP3(iFmt, "v_cmpx_ne_i64", true)
22666  {
22667  setFlag(ALU);
22668  } // Inst_VOP3__V_CMPX_NE_I64
22669 
22671  {
22672  } // ~Inst_VOP3__V_CMPX_NE_I64
22673 
22674  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22675  void
22677  {
22678  Wavefront *wf = gpuDynInst->wavefront();
22679  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22680  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22681  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22682 
22683  src0.readSrc();
22684  src1.readSrc();
22685 
22689  assert(!(instData.ABS & 0x1));
22690  assert(!(instData.ABS & 0x2));
22691  assert(!(instData.ABS & 0x4));
22692  assert(!(extData.NEG & 0x1));
22693  assert(!(extData.NEG & 0x2));
22694  assert(!(extData.NEG & 0x4));
22695 
22696  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22697  if (wf->execMask(lane)) {
22698  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22699  }
22700  }
22701 
22702  wf->execMask() = sdst.rawData();
22703  sdst.write();
22704  }
22705 
22707  InFmt_VOP3 *iFmt)
22708  : Inst_VOP3(iFmt, "v_cmpx_ge_i64", true)
22709  {
22710  setFlag(ALU);
22711  } // Inst_VOP3__V_CMPX_GE_I64
22712 
22714  {
22715  } // ~Inst_VOP3__V_CMPX_GE_I64
22716 
22717  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22718  void
22720  {
22721  Wavefront *wf = gpuDynInst->wavefront();
22722  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22723  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22724  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22725 
22726  src0.readSrc();
22727  src1.readSrc();
22728 
22732  assert(!(instData.ABS & 0x1));
22733  assert(!(instData.ABS & 0x2));
22734  assert(!(instData.ABS & 0x4));
22735  assert(!(extData.NEG & 0x1));
22736  assert(!(extData.NEG & 0x2));
22737  assert(!(extData.NEG & 0x4));
22738 
22739  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22740  if (wf->execMask(lane)) {
22741  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
22742  }
22743  }
22744 
22745  wf->execMask() = sdst.rawData();
22746  sdst.write();
22747  }
22748 
22750  InFmt_VOP3 *iFmt)
22751  : Inst_VOP3(iFmt, "v_cmpx_t_i64", true)
22752  {
22753  setFlag(ALU);
22754  } // Inst_VOP3__V_CMPX_T_I64
22755 
22757  {
22758  } // ~Inst_VOP3__V_CMPX_T_I64
22759 
22760  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
22761  void
22763  {
22764  Wavefront *wf = gpuDynInst->wavefront();
22765  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22766 
22767  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22768  if (wf->execMask(lane)) {
22769  sdst.setBit(lane, 1);
22770  }
22771  }
22772 
22773  wf->execMask() = sdst.rawData();
22774  sdst.write();
22775  }
22776 
22778  InFmt_VOP3 *iFmt)
22779  : Inst_VOP3(iFmt, "v_cmpx_f_u64", true)
22780  {
22781  setFlag(ALU);
22782  } // Inst_VOP3__V_CMPX_F_U64
22783 
22785  {
22786  } // ~Inst_VOP3__V_CMPX_F_U64
22787 
22788  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
22789  void
22791  {
22792  Wavefront *wf = gpuDynInst->wavefront();
22793  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22794 
22795  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22796  if (wf->execMask(lane)) {
22797  sdst.setBit(lane, 0);
22798  }
22799  }
22800 
22801  wf->execMask() = sdst.rawData();
22802  sdst.write();
22803  }
22804 
22806  InFmt_VOP3 *iFmt)
22807  : Inst_VOP3(iFmt, "v_cmpx_lt_u64", true)
22808  {
22809  setFlag(ALU);
22810  } // Inst_VOP3__V_CMPX_LT_U64
22811 
22813  {
22814  } // ~Inst_VOP3__V_CMPX_LT_U64
22815 
22816  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22817  void
22819  {
22820  Wavefront *wf = gpuDynInst->wavefront();
22821  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22822  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22823  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22824 
22825  src0.readSrc();
22826  src1.readSrc();
22827 
22831  assert(!(instData.ABS & 0x1));
22832  assert(!(instData.ABS & 0x2));
22833  assert(!(instData.ABS & 0x4));
22834  assert(!(extData.NEG & 0x1));
22835  assert(!(extData.NEG & 0x2));
22836  assert(!(extData.NEG & 0x4));
22837 
22838  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22839  if (wf->execMask(lane)) {
22840  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22841  }
22842  }
22843 
22844  wf->execMask() = sdst.rawData();
22845  sdst.write();
22846  }
22847 
22849  InFmt_VOP3 *iFmt)
22850  : Inst_VOP3(iFmt, "v_cmpx_eq_u64", true)
22851  {
22852  setFlag(ALU);
22853  } // Inst_VOP3__V_CMPX_EQ_U64
22854 
22856  {
22857  } // ~Inst_VOP3__V_CMPX_EQ_U64
22858 
22859  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22860  void
22862  {
22863  Wavefront *wf = gpuDynInst->wavefront();
22864  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22865  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22866  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22867 
22868  src0.readSrc();
22869  src1.readSrc();
22870 
22874  assert(!(instData.ABS & 0x1));
22875  assert(!(instData.ABS & 0x2));
22876  assert(!(instData.ABS & 0x4));
22877  assert(!(extData.NEG & 0x1));
22878  assert(!(extData.NEG & 0x2));
22879  assert(!(extData.NEG & 0x4));
22880 
22881  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22882  if (wf->execMask(lane)) {
22883  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22884  }
22885  }
22886 
22887  wf->execMask() = sdst.rawData();
22888  sdst.write();
22889  }
22890 
22892  InFmt_VOP3 *iFmt)
22893  : Inst_VOP3(iFmt, "v_cmpx_le_u64", true)
22894  {
22895  setFlag(ALU);
22896  } // Inst_VOP3__V_CMPX_LE_U64
22897 
22899  {
22900  } // ~Inst_VOP3__V_CMPX_LE_U64
22901 
22902  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22903  void
22905  {
22906  Wavefront *wf = gpuDynInst->wavefront();
22907  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22908  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22909  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22910 
22911  src0.readSrc();
22912  src1.readSrc();
22913 
22917  assert(!(instData.ABS & 0x1));
22918  assert(!(instData.ABS & 0x2));
22919  assert(!(instData.ABS & 0x4));
22920  assert(!(extData.NEG & 0x1));
22921  assert(!(extData.NEG & 0x2));
22922  assert(!(extData.NEG & 0x4));
22923 
22924  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22925  if (wf->execMask(lane)) {
22926  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22927  }
22928  }
22929 
22930  wf->execMask() = sdst.rawData();
22931  sdst.write();
22932  }
22933 
22935  InFmt_VOP3 *iFmt)
22936  : Inst_VOP3(iFmt, "v_cmpx_gt_u64", true)
22937  {
22938  setFlag(ALU);
22939  } // Inst_VOP3__V_CMPX_GT_U64
22940 
22942  {
22943  } // ~Inst_VOP3__V_CMPX_GT_U64
22944 
22945  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22946  void
22948  {
22949  Wavefront *wf = gpuDynInst->wavefront();
22950  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22951  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22952  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22953 
22954  src0.readSrc();
22955  src1.readSrc();
22956 
22960  assert(!(instData.ABS & 0x1));
22961  assert(!(instData.ABS & 0x2));
22962  assert(!(instData.ABS & 0x4));
22963  assert(!(extData.NEG & 0x1));
22964  assert(!(extData.NEG & 0x2));
22965  assert(!(extData.NEG & 0x4));
22966 
22967  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22968  if (wf->execMask(lane)) {
22969  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22970  }
22971  }
22972 
22973  wf->execMask() = sdst.rawData();
22974  sdst.write();
22975  }
22976 
22978  InFmt_VOP3 *iFmt)
22979  : Inst_VOP3(iFmt, "v_cmpx_ne_u64", true)
22980  {
22981  setFlag(ALU);
22982  } // Inst_VOP3__V_CMPX_NE_U64
22983 
22985  {
22986  } // ~Inst_VOP3__V_CMPX_NE_U64
22987 
22988  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22989  void
22991  {
22992  Wavefront *wf = gpuDynInst->wavefront();
22993  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22994  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22995  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22996 
22997  src0.readSrc();
22998  src1.readSrc();
22999 
23003  assert(!(instData.ABS & 0x1));
23004  assert(!(instData.ABS & 0x2));
23005  assert(!(instData.ABS & 0x4));
23006  assert(!(extData.NEG & 0x1));
23007  assert(!(extData.NEG & 0x2));
23008  assert(!(extData.NEG & 0x4));
23009 
23010  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23011  if (wf->execMask(lane)) {
23012  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
23013  }
23014  }
23015 
23016  wf->execMask() = sdst.rawData();
23017  sdst.write();
23018  }
23019 
23021  InFmt_VOP3 *iFmt)
23022  : Inst_VOP3(iFmt, "v_cmpx_ge_u64", true)
23023  {
23024  setFlag(ALU);
23025  } // Inst_VOP3__V_CMPX_GE_U64
23026 
23028  {
23029  } // ~Inst_VOP3__V_CMPX_GE_U64
23030 
23031  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
23032  void
23034  {
23035  Wavefront *wf = gpuDynInst->wavefront();
23036  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
23037  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
23038  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23039 
23040  src0.readSrc();
23041  src1.readSrc();
23042 
23046  assert(!(instData.ABS & 0x1));
23047  assert(!(instData.ABS & 0x2));
23048  assert(!(instData.ABS & 0x4));
23049  assert(!(extData.NEG & 0x1));
23050  assert(!(extData.NEG & 0x2));
23051  assert(!(extData.NEG & 0x4));
23052 
23053  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23054  if (wf->execMask(lane)) {
23055  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
23056  }
23057  }
23058 
23059  wf->execMask() = sdst.rawData();
23060  sdst.write();
23061  }
23062 
23064  InFmt_VOP3 *iFmt)
23065  : Inst_VOP3(iFmt, "v_cmpx_t_u64", true)
23066  {
23067  setFlag(ALU);
23068  } // Inst_VOP3__V_CMPX_T_U64
23069 
23071  {
23072  } // ~Inst_VOP3__V_CMPX_T_U64
23073 
23074  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
23075  void
23077  {
23078  Wavefront *wf = gpuDynInst->wavefront();
23079  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23080 
23084  assert(!(instData.ABS & 0x1));
23085  assert(!(instData.ABS & 0x2));
23086  assert(!(instData.ABS & 0x4));
23087  assert(!(extData.NEG & 0x1));
23088  assert(!(extData.NEG & 0x2));
23089  assert(!(extData.NEG & 0x4));
23090 
23091  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23092  if (wf->execMask(lane)) {
23093  sdst.setBit(lane, 1);
23094  }
23095  }
23096 
23097  wf->execMask() = sdst.rawData();
23098  sdst.write();
23099  }
23100 
23102  : Inst_VOP3(iFmt, "v_cndmask_b32", false)
23103  {
23104  setFlag(ALU);
23105  setFlag(ReadsVCC);
23106  } // Inst_VOP3__V_CNDMASK_B32
23107 
23109  {
23110  } // ~Inst_VOP3__V_CNDMASK_B32
23111 
23112  // D.u = (VCC[i] ? S1.u : S0.u) (i = threadID in wave); VOP3: specify VCC
23113  // as a scalar GPR in S2.
23114  void
23116  {
23117  Wavefront *wf = gpuDynInst->wavefront();
23118  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23119  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23120  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
23121  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23122 
23123  src0.readSrc();
23124  src1.readSrc();
23125  vcc.read();
23126 
23130  assert(!(instData.ABS & 0x1));
23131  assert(!(instData.ABS & 0x2));
23132  assert(!(instData.ABS & 0x4));
23133  assert(!(extData.NEG & 0x1));
23134  assert(!(extData.NEG & 0x2));
23135  assert(!(extData.NEG & 0x4));
23136 
23137  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23138  if (wf->execMask(lane)) {
23139  vdst[lane] = bits(vcc.rawData(), lane)
23140  ? src1[lane] : src0[lane];
23141  }
23142  }
23143 
23144  vdst.write();
23145  }
23146 
23148  : Inst_VOP3(iFmt, "v_add_f32", false)
23149  {
23150  setFlag(ALU);
23151  setFlag(F32);
23152  } // Inst_VOP3__V_ADD_F32
23153 
23155  {
23156  } // ~Inst_VOP3__V_ADD_F32
23157 
23158  // D.f = S0.f + S1.f.
23159  void
23161  {
23162  Wavefront *wf = gpuDynInst->wavefront();
23163  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23164  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23165  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23166 
23167  src0.readSrc();
23168  src1.readSrc();
23169 
23170  if (instData.ABS & 0x1) {
23171  src0.absModifier();
23172  }
23173 
23174  if (instData.ABS & 0x2) {
23175  src1.absModifier();
23176  }
23177 
23178  if (extData.NEG & 0x1) {
23179  src0.negModifier();
23180  }
23181 
23182  if (extData.NEG & 0x2) {
23183  src1.negModifier();
23184  }
23185 
23189  assert(!(instData.ABS & 0x4));
23190  assert(!(extData.NEG & 0x4));
23191 
23192  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23193  if (wf->execMask(lane)) {
23194  vdst[lane] = src0[lane] + src1[lane];
23195  }
23196  }
23197 
23198  vdst.write();
23199  }
23200 
23202  : Inst_VOP3(iFmt, "v_sub_f32", false)
23203  {
23204  setFlag(ALU);
23205  setFlag(F32);
23206  } // Inst_VOP3__V_SUB_F32
23207 
23209  {
23210  } // ~Inst_VOP3__V_SUB_F32
23211 
23212  // D.f = S0.f - S1.f.
23213  void
23215  {
23216  Wavefront *wf = gpuDynInst->wavefront();
23217  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23218  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23219  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23220 
23221  src0.readSrc();
23222  src1.readSrc();
23223 
23224  if (instData.ABS & 0x1) {
23225  src0.absModifier();
23226  }
23227 
23228  if (instData.ABS & 0x2) {
23229  src1.absModifier();
23230  }
23231 
23232  if (extData.NEG & 0x1) {
23233  src0.negModifier();
23234  }
23235 
23236  if (extData.NEG & 0x2) {
23237  src1.negModifier();
23238  }
23239 
23243  assert(!(instData.ABS & 0x4));
23244  assert(!(extData.NEG & 0x4));
23245 
23246  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23247  if (wf->execMask(lane)) {
23248  vdst[lane] = src0[lane] - src1[lane];
23249  }
23250  }
23251 
23252  vdst.write();
23253  }
23254 
23256  : Inst_VOP3(iFmt, "v_subrev_f32", false)
23257  {
23258  setFlag(ALU);
23259  setFlag(F32);
23260  } // Inst_VOP3__V_SUBREV_F32
23261 
23263  {
23264  } // ~Inst_VOP3__V_SUBREV_F32
23265 
23266  // D.f = S1.f - S0.f.
23267  void
23269  {
23270  Wavefront *wf = gpuDynInst->wavefront();
23271  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23272  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23273  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23274 
23275  src0.readSrc();
23276  src1.readSrc();
23277 
23278  if (instData.ABS & 0x1) {
23279  src0.absModifier();
23280  }
23281 
23282  if (instData.ABS & 0x2) {
23283  src1.absModifier();
23284  }
23285 
23286  if (extData.NEG & 0x1) {
23287  src0.negModifier();
23288  }
23289 
23290  if (extData.NEG & 0x2) {
23291  src1.negModifier();
23292  }
23293 
23297  assert(!(instData.ABS & 0x4));
23298  assert(!(extData.NEG & 0x4));
23299 
23300  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23301  if (wf->execMask(lane)) {
23302  vdst[lane] = src1[lane] - src0[lane];
23303  }
23304  }
23305 
23306  vdst.write();
23307  }
23308 
23310  : Inst_VOP3(iFmt, "v_mul_legacy_f32", false)
23311  {
23312  setFlag(ALU);
23313  setFlag(F32);
23314  } // Inst_VOP3__V_MUL_LEGACY_F32
23315 
23317  {
23318  } // ~Inst_VOP3__V_MUL_LEGACY_F32
23319 
23320  // D.f = S0.f * S1.f
23321  void
23323  {
23324  Wavefront *wf = gpuDynInst->wavefront();
23325  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23326  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23327  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23328 
23329  src0.readSrc();
23330  src1.readSrc();
23331 
23332  if (instData.ABS & 0x1) {
23333  src0.absModifier();
23334  }
23335 
23336  if (instData.ABS & 0x2) {
23337  src1.absModifier();
23338  }
23339 
23340  if (extData.NEG & 0x1) {
23341  src0.negModifier();
23342  }
23343 
23344  if (extData.NEG & 0x2) {
23345  src1.negModifier();
23346  }
23347 
23351  assert(!(instData.ABS & 0x4));
23352  assert(!(extData.NEG & 0x4));
23353 
23354  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23355  if (wf->execMask(lane)) {
23356  if (std::isnan(src0[lane]) ||
23357  std::isnan(src1[lane])) {
23358  vdst[lane] = NAN;
23359  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
23360  std::fpclassify(src0[lane]) == FP_ZERO) &&
23361  !std::signbit(src0[lane])) {
23362  if (std::isinf(src1[lane])) {
23363  vdst[lane] = NAN;
23364  } else if (!std::signbit(src1[lane])) {
23365  vdst[lane] = +0.0;
23366  } else {
23367  vdst[lane] = -0.0;
23368  }
23369  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
23370  std::fpclassify(src0[lane]) == FP_ZERO) &&
23371  std::signbit(src0[lane])) {
23372  if (std::isinf(src1[lane])) {
23373  vdst[lane] = NAN;
23374  } else if (std::signbit(src1[lane])) {
23375  vdst[lane] = +0.0;
23376  } else {
23377  vdst[lane] = -0.0;
23378  }
23379  } else if (std::isinf(src0[lane]) &&
23380  !std::signbit(src0[lane])) {
23381  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
23382  std::fpclassify(src1[lane]) == FP_ZERO) {
23383  vdst[lane] = NAN;
23384  } else if (!std::signbit(src1[lane])) {
23385  vdst[lane] = +INFINITY;
23386  } else {
23387  vdst[lane] = -INFINITY;
23388  }
23389  } else if (std::isinf(src0[lane]) &&
23390  std::signbit(src0[lane])) {
23391  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
23392  std::fpclassify(src1[lane]) == FP_ZERO) {
23393  vdst[lane] = NAN;
23394  } else if (std::signbit(src1[lane])) {
23395  vdst[lane] = +INFINITY;
23396  } else {
23397  vdst[lane] = -INFINITY;
23398  }
23399  } else {
23400  vdst[lane] = src0[lane] * src1[lane];
23401  }
23402  }
23403  }
23404 
23405  vdst.write();
23406  }
23407 
23409  : Inst_VOP3(iFmt, "v_mul_f32", false)
23410  {
23411  setFlag(ALU);
23412  setFlag(F32);
23413  } // Inst_VOP3__V_MUL_F32
23414 
23416  {
23417  } // ~Inst_VOP3__V_MUL_F32
23418 
23419  // D.f = S0.f * S1.f.
23420  void
23422  {
23423  Wavefront *wf = gpuDynInst->wavefront();
23424  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23425  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23426  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23427 
23428  src0.readSrc();
23429  src1.readSrc();
23430 
23431  if (instData.ABS & 0x1) {
23432  src0.absModifier();
23433  }
23434 
23435  if (instData.ABS & 0x2) {
23436  src1.absModifier();
23437  }
23438 
23439  if (extData.NEG & 0x1) {
23440  src0.negModifier();
23441  }
23442 
23443  if (extData.NEG & 0x2) {
23444  src1.negModifier();
23445  }
23446 
23450  assert(!(instData.ABS & 0x4));
23451  assert(!(extData.NEG & 0x4));
23452 
23453  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23454  if (wf->execMask(lane)) {
23455  if (std::isnan(src0[lane]) ||
23456  std::isnan(src1[lane])) {
23457  vdst[lane] = NAN;
23458  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
23459  std::fpclassify(src0[lane]) == FP_ZERO) &&
23460  !std::signbit(src0[lane])) {
23461  if (std::isinf(src1[lane])) {
23462  vdst[lane] = NAN;
23463  } else if (!std::signbit(src1[lane])) {
23464  vdst[lane] = +0.0;
23465  } else {
23466  vdst[lane] = -0.0;
23467  }
23468  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
23469  std::fpclassify(src0[lane]) == FP_ZERO) &&
23470  std::signbit(src0[lane])) {
23471  if (std::isinf(src1[lane])) {
23472  vdst[lane] = NAN;
23473  } else if (std::signbit(src1[lane])) {
23474  vdst[lane] = +0.0;
23475  } else {
23476  vdst[lane] = -0.0;
23477  }
23478  } else if (std::isinf(src0[lane]) &&
23479  !std::signbit(src0[lane])) {
23480  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
23481  std::fpclassify(src1[lane]) == FP_ZERO) {
23482  vdst[lane] = NAN;
23483  } else if (!std::signbit(src1[lane])) {
23484  vdst[lane] = +INFINITY;
23485  } else {
23486  vdst[lane] = -INFINITY;
23487  }
23488  } else if (std::isinf(src0[lane]) &&
23489  std::signbit(src0[lane])) {
23490  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
23491  std::fpclassify(src1[lane]) == FP_ZERO) {
23492  vdst[lane] = NAN;
23493  } else if (std::signbit(src1[lane])) {
23494  vdst[lane] = +INFINITY;
23495  } else {
23496  vdst[lane] = -INFINITY;
23497  }
23498  } else {
23499  vdst[lane] = src0[lane] * src1[lane];
23500  }
23501  }
23502  }
23503 
23504  vdst.write();
23505  }
23506 
23508  : Inst_VOP3(iFmt, "v_mul_i32_i24", false)
23509  {
23510  setFlag(ALU);
23511  } // Inst_VOP3__V_MUL_I32_I24
23512 
23514  {
23515  } // ~Inst_VOP3__V_MUL_I32_I24
23516 
23517  // D.i = S0.i[23:0] * S1.i[23:0].
23518  void
23520  {
23521  Wavefront *wf = gpuDynInst->wavefront();
23522  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23523  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23524  VecOperandI32 vdst(gpuDynInst, instData.VDST);
23525 
23526  src0.readSrc();
23527  src1.read();
23528 
23532  assert(!(instData.ABS & 0x1));
23533  assert(!(instData.ABS & 0x2));
23534  assert(!(instData.ABS & 0x4));
23535  assert(!(extData.NEG & 0x1));
23536  assert(!(extData.NEG & 0x2));
23537  assert(!(extData.NEG & 0x4));
23538 
23539  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23540  if (wf->execMask(lane)) {
23541  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
23542  * sext<24>(bits(src1[lane], 23, 0));
23543  }
23544  }
23545 
23546  vdst.write();
23547  }
23548 
23550  : Inst_VOP3(iFmt, "v_mul_hi_i32_i24", false)
23551  {
23552  setFlag(ALU);
23553  } // Inst_VOP3__V_MUL_HI_I32_I24
23554 
23556  {
23557  } // ~Inst_VOP3__V_MUL_HI_I32_I24
23558 
23559  // D.i = (S0.i[23:0] * S1.i[23:0]) >> 32.
23560  void
23562  {
23563  Wavefront *wf = gpuDynInst->wavefront();
23564  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23565  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23566  VecOperandI32 vdst(gpuDynInst, instData.VDST);
23567 
23568  src0.readSrc();
23569  src1.readSrc();
23570 
23574  assert(!(instData.ABS & 0x1));
23575  assert(!(instData.ABS & 0x2));
23576  assert(!(instData.ABS & 0x4));
23577  assert(!(extData.NEG & 0x1));
23578  assert(!(extData.NEG & 0x2));
23579  assert(!(extData.NEG & 0x4));
23580 
23581  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23582  if (wf->execMask(lane)) {
23583  VecElemI64 tmp_src0
23584  = (VecElemI64)sext<24>(bits(src0[lane], 23, 0));
23585  VecElemI64 tmp_src1
23586  = (VecElemI64)sext<24>(bits(src1[lane], 23, 0));
23587 
23588  vdst[lane] = (VecElemI32)((tmp_src0 * tmp_src1) >> 32);
23589  }
23590  }
23591 
23592  vdst.write();
23593  }
23594 
23596  : Inst_VOP3(iFmt, "v_mul_u32_u24", false)
23597  {
23598  setFlag(ALU);
23599  } // Inst_VOP3__V_MUL_U32_U24
23600 
23602  {
23603  } // ~Inst_VOP3__V_MUL_U32_U24
23604 
23605  // D.u = S0.u[23:0] * S1.u[23:0].
23606  void
23608  {
23609  Wavefront *wf = gpuDynInst->wavefront();
23610  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23611  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23612  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23613 
23614  src0.readSrc();
23615  src1.readSrc();
23616 
23620  assert(!(instData.ABS & 0x1));
23621  assert(!(instData.ABS & 0x2));
23622  assert(!(instData.ABS & 0x4));
23623  assert(!(extData.NEG & 0x1));
23624  assert(!(extData.NEG & 0x2));
23625  assert(!(extData.NEG & 0x4));
23626 
23627  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23628  if (wf->execMask(lane)) {
23629  vdst[lane] = bits(src0[lane], 23, 0) * bits(src1[lane], 23, 0);
23630  }
23631  }
23632 
23633  vdst.write();
23634  }
23635 
23637  : Inst_VOP3(iFmt, "v_mul_hi_u32_u24", false)
23638  {
23639  setFlag(ALU);
23640  } // Inst_VOP3__V_MUL_HI_U32_U24
23641 
23643  {
23644  } // ~Inst_VOP3__V_MUL_HI_U32_U24
23645 
23646  // D.i = (S0.u[23:0] * S1.u[23:0]) >> 32.
23647  void
23649  {
23650  Wavefront *wf = gpuDynInst->wavefront();
23651  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23652  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23653  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23654 
23655  src0.readSrc();
23656  src1.readSrc();
23657 
23661  assert(!(instData.ABS & 0x1));
23662  assert(!(instData.ABS & 0x2));
23663  assert(!(instData.ABS & 0x4));
23664  assert(!(extData.NEG & 0x1));
23665  assert(!(extData.NEG & 0x2));
23666  assert(!(extData.NEG & 0x4));
23667 
23668  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23669  if (wf->execMask(lane)) {
23670  VecElemU64 tmp_src0 = (VecElemU64)bits(src0[lane], 23, 0);
23671  VecElemU64 tmp_src1 = (VecElemU64)bits(src1[lane], 23, 0);
23672  vdst[lane] = (VecElemU32)((tmp_src0 * tmp_src1) >> 32);
23673  }
23674  }
23675 
23676  vdst.write();
23677  }
23678 
23680  : Inst_VOP3(iFmt, "v_min_f32", false)
23681  {
23682  setFlag(ALU);
23683  setFlag(F32);
23684  } // Inst_VOP3__V_MIN_F32
23685 
23687  {
23688  } // ~Inst_VOP3__V_MIN_F32
23689 
23690  // D.f = (S0.f < S1.f ? S0.f : S1.f).
23691  void
23693  {
23694  Wavefront *wf = gpuDynInst->wavefront();
23695  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23696  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23697  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23698 
23699  src0.readSrc();
23700  src1.readSrc();
23701 
23702  if (instData.ABS & 0x1) {
23703  src0.absModifier();
23704  }
23705 
23706  if (instData.ABS & 0x2) {
23707  src1.absModifier();
23708  }
23709 
23710  if (extData.NEG & 0x1) {
23711  src0.negModifier();
23712  }
23713 
23714  if (extData.NEG & 0x2) {
23715  src1.negModifier();
23716  }
23717 
23721  assert(!(instData.ABS & 0x4));
23722  assert(!(extData.NEG & 0x4));
23723 
23724  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23725  if (wf->execMask(lane)) {
23726  vdst[lane] = std::fmin(src0[lane], src1[lane]);
23727  }
23728  }
23729 
23730  vdst.write();
23731  }
23732 
23734  : Inst_VOP3(iFmt, "v_max_f32", false)
23735  {
23736  setFlag(ALU);
23737  setFlag(F32);
23738  } // Inst_VOP3__V_MAX_F32
23739 
23741  {
23742  } // ~Inst_VOP3__V_MAX_F32
23743 
23744  // D.f = (S0.f >= S1.f ? S0.f : S1.f).
23745  void
23747  {
23748  Wavefront *wf = gpuDynInst->wavefront();
23749  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23750  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23751  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23752 
23753  src0.readSrc();
23754  src1.readSrc();
23755 
23756  if (instData.ABS & 0x1) {
23757  src0.absModifier();
23758  }
23759 
23760  if (instData.ABS & 0x2) {
23761  src1.absModifier();
23762  }
23763 
23764  if (extData.NEG & 0x1) {
23765  src0.negModifier();
23766  }
23767 
23768  if (extData.NEG & 0x2) {
23769  src1.negModifier();
23770  }
23771 
23775  assert(!(instData.ABS & 0x4));
23776  assert(!(extData.NEG & 0x4));
23777 
23778  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23779  if (wf->execMask(lane)) {
23780  vdst[lane] = std::fmax(src0[lane], src1[lane]);
23781  }
23782  }
23783 
23784  vdst.write();
23785  }
23786 
23788  : Inst_VOP3(iFmt, "v_min_i32", false)
23789  {
23790  setFlag(ALU);
23791  } // Inst_VOP3__V_MIN_I32
23792 
23794  {
23795  } // ~Inst_VOP3__V_MIN_I32
23796 
23797  // D.i = min(S0.i, S1.i).
23798  void
23800  {
23801  Wavefront *wf = gpuDynInst->wavefront();
23802  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23803  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23804  VecOperandI32 vdst(gpuDynInst, instData.VDST);
23805 
23806  src0.readSrc();
23807  src1.readSrc();
23808 
23812  assert(!(instData.ABS & 0x1));
23813  assert(!(instData.ABS & 0x2));
23814  assert(!(instData.ABS & 0x4));
23815  assert(!(extData.NEG & 0x1));
23816  assert(!(extData.NEG & 0x2));
23817  assert(!(extData.NEG & 0x4));
23818 
23819  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23820  if (wf->execMask(lane)) {
23821  vdst[lane] = std::min(src0[lane], src1[lane]);
23822  }
23823  }
23824 
23825  vdst.write();
23826  }
23827 
23829  : Inst_VOP3(iFmt, "v_max_i32", false)
23830  {
23831  setFlag(ALU);
23832  } // Inst_VOP3__V_MAX_I32
23833 
23835  {
23836  } // ~Inst_VOP3__V_MAX_I32
23837 
23838  // D.i = max(S0.i, S1.i).
23839  void
23841  {
23842  Wavefront *wf = gpuDynInst->wavefront();
23843  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23844  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23845  VecOperandI32 vdst(gpuDynInst, instData.VDST);
23846 
23847  src0.readSrc();
23848  src1.readSrc();
23849 
23853  assert(!(instData.ABS & 0x1));
23854  assert(!(instData.ABS & 0x2));
23855  assert(!(instData.ABS & 0x4));
23856  assert(!(extData.NEG & 0x1));
23857  assert(!(extData.NEG & 0x2));
23858  assert(!(extData.NEG & 0x4));
23859 
23860  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23861  if (wf->execMask(lane)) {
23862  vdst[lane] = std::max(src0[lane], src1[lane]);
23863  }
23864  }
23865 
23866  vdst.write();
23867  }
23868 
23870  : Inst_VOP3(iFmt, "v_min_u32", false)
23871  {
23872  setFlag(ALU);
23873  } // Inst_VOP3__V_MIN_U32
23874 
23876  {
23877  } // ~Inst_VOP3__V_MIN_U32
23878 
23879  // D.u = min(S0.u, S1.u).
23880  void
23882  {
23883  Wavefront *wf = gpuDynInst->wavefront();
23884  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23885  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23886  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23887 
23888  src0.readSrc();
23889  src1.readSrc();
23890 
23894  assert(!(instData.ABS & 0x1));
23895  assert(!(instData.ABS & 0x2));
23896  assert(!(instData.ABS & 0x4));
23897  assert(!(extData.NEG & 0x1));
23898  assert(!(extData.NEG & 0x2));
23899  assert(!(extData.NEG & 0x4));
23900 
23901  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23902  if (wf->execMask(lane)) {
23903  vdst[lane] = std::min(src0[lane], src1[lane]);
23904  }
23905  }
23906 
23907  vdst.write();
23908  }
23909 
23911  : Inst_VOP3(iFmt, "v_max_u32", false)
23912  {
23913  setFlag(ALU);
23914  } // Inst_VOP3__V_MAX_U32
23915 
23917  {
23918  } // ~Inst_VOP3__V_MAX_U32
23919 
23920  // D.u = max(S0.u, S1.u).
23921  void
23923  {
23924  Wavefront *wf = gpuDynInst->wavefront();
23925  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23926  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23927  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23928 
23929  src0.readSrc();
23930  src1.readSrc();
23931 
23935  assert(!(instData.ABS & 0x1));
23936  assert(!(instData.ABS & 0x2));
23937  assert(!(instData.ABS & 0x4));
23938  assert(!(extData.NEG & 0x1));
23939  assert(!(extData.NEG & 0x2));
23940  assert(!(extData.NEG & 0x4));
23941 
23942  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23943  if (wf->execMask(lane)) {
23944  vdst[lane] = std::max(src0[lane], src1[lane]);
23945  }
23946  }
23947 
23948  vdst.write();
23949  }
23950 
23952  : Inst_VOP3(iFmt, "v_lshrrev_b32", false)
23953  {
23954  setFlag(ALU);
23955  } // Inst_VOP3__V_LSHRREV_B32
23956 
23958  {
23959  } // ~Inst_VOP3__V_LSHRREV_B32
23960 
23961  // D.u = S1.u >> S0.u[4:0].
23962  // The vacated bits are set to zero.
23963  void
23965  {
23966  Wavefront *wf = gpuDynInst->wavefront();
23967  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23968  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23969  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23970 
23971  src0.readSrc();
23972  src1.readSrc();
23973 
23977  assert(!(instData.ABS & 0x1));
23978  assert(!(instData.ABS & 0x2));
23979  assert(!(instData.ABS & 0x4));
23980  assert(!(extData.NEG & 0x1));
23981  assert(!(extData.NEG & 0x2));
23982  assert(!(extData.NEG & 0x4));
23983 
23984  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23985  if (wf->execMask(lane)) {
23986  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
23987  }
23988  }
23989 
23990  vdst.write();
23991  }
23992 
23994  : Inst_VOP3(iFmt, "v_ashrrev_i32", false)
23995  {
23996  setFlag(ALU);
23997  } // Inst_VOP3__V_ASHRREV_I32
23998 
24000  {
24001  } // ~Inst_VOP3__V_ASHRREV_I32
24002 
24003  // D.i = signext(S1.i) >> S0.i[4:0].
24004  // The vacated bits are set to the sign bit of the input value.
24005  void
24007  {
24008  Wavefront *wf = gpuDynInst->wavefront();
24009  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24010  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
24011  VecOperandI32 vdst(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  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
24029  }
24030  }
24031 
24032  vdst.write();
24033  }
24034 
24036  : Inst_VOP3(iFmt, "v_lshlrev_b32", false)
24037  {
24038  setFlag(ALU);
24039  } // Inst_VOP3__V_LSHLREV_B32
24040 
24042  {
24043  } // ~Inst_VOP3__V_LSHLREV_B32
24044 
24045  // D.u = S1.u << S0.u[4:0].
24046  void
24048  {
24049  Wavefront *wf = gpuDynInst->wavefront();
24050  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24051  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24052  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24053 
24054  src0.readSrc();
24055  src1.readSrc();
24056 
24060  assert(!(instData.ABS & 0x1));
24061  assert(!(instData.ABS & 0x2));
24062  assert(!(instData.ABS & 0x4));
24063  assert(!(extData.NEG & 0x1));
24064  assert(!(extData.NEG & 0x2));
24065  assert(!(extData.NEG & 0x4));
24066 
24067  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24068  if (wf->execMask(lane)) {
24069  vdst[lane] = src1[lane] << bits(src0[lane], 4, 0);
24070  }
24071  }
24072 
24073  vdst.write();
24074  }
24075 
24077  : Inst_VOP3(iFmt, "v_and_b32", false)
24078  {
24079  setFlag(ALU);
24080  } // Inst_VOP3__V_AND_B32
24081 
24083  {
24084  } // ~Inst_VOP3__V_AND_B32
24085 
24086  // D.u = S0.u & S1.u.
24087  // Input and output modifiers not supported.
24088  void
24090  {
24091  Wavefront *wf = gpuDynInst->wavefront();
24092  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24093  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24094  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24095 
24096  src0.readSrc();
24097  src1.readSrc();
24098 
24102  assert(!(instData.ABS & 0x1));
24103  assert(!(instData.ABS & 0x2));
24104  assert(!(instData.ABS & 0x4));
24105  assert(!(extData.NEG & 0x1));
24106  assert(!(extData.NEG & 0x2));
24107  assert(!(extData.NEG & 0x4));
24108 
24109  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24110  if (wf->execMask(lane)) {
24111  vdst[lane] = src0[lane] & src1[lane];
24112  }
24113  }
24114 
24115  vdst.write();
24116  }
24117 
24119  : Inst_VOP3(iFmt, "v_or_b32", false)
24120  {
24121  setFlag(ALU);
24122  } // Inst_VOP3__V_OR_B32
24123 
24125  {
24126  } // ~Inst_VOP3__V_OR_B32
24127 
24128  // D.u = S0.u | S1.u.
24129  // Input and output modifiers not supported.
24130  void
24132  {
24133  Wavefront *wf = gpuDynInst->wavefront();
24134  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24135  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24136  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24137 
24138  src0.readSrc();
24139  src1.readSrc();
24140 
24144  assert(!(instData.ABS & 0x1));
24145  assert(!(instData.ABS & 0x2));
24146  assert(!(instData.ABS & 0x4));
24147  assert(!(extData.NEG & 0x1));
24148  assert(!(extData.NEG & 0x2));
24149  assert(!(extData.NEG & 0x4));
24150 
24151  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24152  if (wf->execMask(lane)) {
24153  vdst[lane] = src0[lane] | src1[lane];
24154  }
24155  }
24156 
24157  vdst.write();
24158  }
24159 
24161  : Inst_VOP3(iFmt, "v_xor_b32", false)
24162  {
24163  setFlag(ALU);
24164  } // Inst_VOP3__V_XOR_B32
24165 
24167  {
24168  } // ~Inst_VOP3__V_XOR_B32
24169 
24170  // D.u = S0.u ^ S1.u.
24171  // Input and output modifiers not supported.
24172  void
24174  {
24175  Wavefront *wf = gpuDynInst->wavefront();
24176  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24177  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24178  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24179 
24180  src0.readSrc();
24181  src1.readSrc();
24182 
24186  assert(!(instData.ABS & 0x1));
24187  assert(!(instData.ABS & 0x2));
24188  assert(!(instData.ABS & 0x4));
24189  assert(!(extData.NEG & 0x1));
24190  assert(!(extData.NEG & 0x2));
24191  assert(!(extData.NEG & 0x4));
24192 
24193  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24194  if (wf->execMask(lane)) {
24195  vdst[lane] = src0[lane] ^ src1[lane];
24196  }
24197  }
24198 
24199  vdst.write();
24200  }
24201 
24203  : Inst_VOP3(iFmt, "v_mac_f32", false)
24204  {
24205  setFlag(ALU);
24206  setFlag(F32);
24207  setFlag(MAC);
24208  } // Inst_VOP3__V_MAC_F32
24209 
24211  {
24212  } // ~Inst_VOP3__V_MAC_F32
24213 
24214  // D.f = S0.f * S1.f + D.f.
24215  void
24217  {
24218  Wavefront *wf = gpuDynInst->wavefront();
24219  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
24220  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
24221  VecOperandF32 vdst(gpuDynInst, instData.VDST);
24222 
24223  src0.readSrc();
24224  src1.readSrc();
24225  vdst.read();
24226 
24227  if (instData.ABS & 0x1) {
24228  src0.absModifier();
24229  }
24230 
24231  if (instData.ABS & 0x2) {
24232  src1.absModifier();
24233  }
24234 
24235  if (extData.NEG & 0x1) {
24236  src0.negModifier();
24237  }
24238 
24239  if (extData.NEG & 0x2) {
24240  src1.negModifier();
24241  }
24242 
24246  assert(!(instData.ABS & 0x4));
24247  assert(!(extData.NEG & 0x4));
24248 
24249  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24250  if (wf->execMask(lane)) {
24251  vdst[lane] = std::fma(src0[lane], src1[lane], vdst[lane]);
24252  }
24253  }
24254 
24255  vdst.write();
24256  }
24257 
24259  : Inst_VOP3_SDST_ENC(iFmt, "v_add_u32")
24260  {
24261  setFlag(ALU);
24262  setFlag(WritesVCC);
24263  } // Inst_VOP3__V_ADD_U32
24264 
24266  {
24267  } // ~Inst_VOP3__V_ADD_U32
24268 
24269  // D.u = S0.u + S1.u;
24270  // VCC[threadId] = (S0.u + S1.u >= 0x800000000ULL ? 1 : 0) is an UNSIGNED
24271  // overflow or carry-out.
24272  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
24273  void
24275  {
24276  Wavefront *wf = gpuDynInst->wavefront();
24277  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24278  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24279  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24280  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
24281 
24282  src0.readSrc();
24283  src1.readSrc();
24284 
24288  assert(!(extData.NEG & 0x1));
24289  assert(!(extData.NEG & 0x2));
24290  assert(!(extData.NEG & 0x4));
24291 
24292  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24293  if (wf->execMask(lane)) {
24294  vdst[lane] = src0[lane] + src1[lane];
24295  vcc.setBit(lane, ((VecElemU64)src0[lane]
24296  + (VecElemU64)src1[lane]) >= 0x100000000ULL ? 1 : 0);
24297  }
24298  }
24299 
24300  vdst.write();
24301  vcc.write();
24302  }
24303 
24305  : Inst_VOP3_SDST_ENC(iFmt, "v_sub_u32")
24306  {
24307  setFlag(ALU);
24308  setFlag(WritesVCC);
24309  } // Inst_VOP3__V_SUB_U32
24310 
24312  {
24313  } // ~Inst_VOP3__V_SUB_U32
24314 
24315  // D.u = S0.u - S1.u;
24316  // VCC[threadId] = (S1.u > S0.u ? 1 : 0) is an UNSIGNED overflow or
24317  // carry-out.
24318  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
24319  void
24321  {
24322  Wavefront *wf = gpuDynInst->wavefront();
24323  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24324  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24325  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24326  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
24327 
24328  src0.readSrc();
24329  src1.readSrc();
24330 
24334  assert(!(extData.NEG & 0x1));
24335  assert(!(extData.NEG & 0x2));
24336  assert(!(extData.NEG & 0x4));
24337 
24338  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24339  if (wf->execMask(lane)) {
24340  vdst[lane] = src0[lane] - src1[lane];
24341  vcc.setBit(lane, src1[lane] > src0[lane] ? 1 : 0);
24342  }
24343  }
24344 
24345  vdst.write();
24346  vcc.write();
24347  }
24348 
24350  InFmt_VOP3_SDST_ENC *iFmt)
24351  : Inst_VOP3_SDST_ENC(iFmt, "v_subrev_u32")
24352  {
24353  setFlag(ALU);
24354  setFlag(WritesVCC);
24355  } // Inst_VOP3__V_SUBREV_U32
24356 
24358  {
24359  } // ~Inst_VOP3__V_SUBREV_U32
24360 
24361  // D.u = S1.u - S0.u;
24362  // VCC[threadId] = (S0.u > S1.u ? 1 : 0) is an UNSIGNED overflow or
24363  // carry-out.
24364  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
24365  void
24367  {
24368  Wavefront *wf = gpuDynInst->wavefront();
24369  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24370  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24371  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24372  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
24373 
24374  src0.readSrc();
24375  src1.readSrc();
24376 
24380  assert(!(extData.NEG & 0x1));
24381  assert(!(extData.NEG & 0x2));
24382  assert(!(extData.NEG & 0x4));
24383 
24384  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24385  if (wf->execMask(lane)) {
24386  vdst[lane] = src1[lane] - src0[lane];
24387  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
24388  }
24389  }
24390 
24391  vdst.write();
24392  vcc.write();
24393  }
24394 
24396  : Inst_VOP3_SDST_ENC(iFmt, "v_addc_u32")
24397  {
24398  setFlag(ALU);
24399  setFlag(WritesVCC);
24400  setFlag(ReadsVCC);
24401  } // Inst_VOP3__V_ADDC_U32
24402 
24404  {
24405  } // ~Inst_VOP3__V_ADDC_U32
24406 
24407  // D.u = S0.u + S1.u + VCC[threadId];
24408  // VCC[threadId] = (S0.u + S1.u + VCC[threadId] >= 0x100000000ULL ? 1 : 0)
24409  // is an UNSIGNED overflow.
24410  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
24411  // source comes from the SGPR-pair at S2.u.
24412  void
24414  {
24415  Wavefront *wf = gpuDynInst->wavefront();
24416  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24417  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24418  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
24419  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24420  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
24421 
24422  src0.readSrc();
24423  src1.readSrc();
24424  vcc.read();
24425 
24429  assert(!(extData.NEG & 0x1));
24430  assert(!(extData.NEG & 0x2));
24431  assert(!(extData.NEG & 0x4));
24432 
24433  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24434  if (wf->execMask(lane)) {
24435  vdst[lane] = src0[lane] + src1[lane]
24436  + bits(vcc.rawData(), lane);
24437  sdst.setBit(lane, ((VecElemU64)src0[lane]
24438  + (VecElemU64)src1[lane]
24439  + (VecElemU64)bits(vcc.rawData(), lane))
24440  >= 0x100000000 ? 1 : 0);
24441  }
24442  }
24443 
24444  vdst.write();
24445  sdst.write();
24446  }
24447 
24449  : Inst_VOP3_SDST_ENC(iFmt, "v_subb_u32")
24450  {
24451  setFlag(ALU);
24452  setFlag(WritesVCC);
24453  setFlag(ReadsVCC);
24454  } // Inst_VOP3__V_SUBB_U32
24455 
24457  {
24458  } // ~Inst_VOP3__V_SUBB_U32
24459 
24460  // D.u = S0.u - S1.u - VCC[threadId];
24461  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
24462  // overflow.
24463  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
24464  // source comes from the SGPR-pair at S2.u.
24465  void
24467  {
24468  Wavefront *wf = gpuDynInst->wavefront();
24469  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24470  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24471  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
24472  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
24473  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24474 
24475  src0.readSrc();
24476  src1.readSrc();
24477  vcc.read();
24478 
24482  assert(!(extData.NEG & 0x1));
24483  assert(!(extData.NEG & 0x2));
24484  assert(!(extData.NEG & 0x4));
24485 
24486  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24487  if (wf->execMask(lane)) {
24488  vdst[lane] = src0[lane] - src1[lane]
24489  - bits(vcc.rawData(), lane);
24490  sdst.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
24491  > src0[lane] ? 1 : 0);
24492  }
24493  }
24494 
24495  vdst.write();
24496  sdst.write();
24497  }
24498 
24500  InFmt_VOP3_SDST_ENC *iFmt)
24501  : Inst_VOP3_SDST_ENC(iFmt, "v_subbrev_u32")
24502  {
24503  setFlag(ALU);
24504  setFlag(WritesVCC);
24505  setFlag(ReadsVCC);
24506  } // Inst_VOP3__V_SUBBREV_U32
24507 
24509  {
24510  } // ~Inst_VOP3__V_SUBBREV_U32
24511 
24512  // D.u = S1.u - S0.u - VCC[threadId];
24513  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
24514  // overflow.
24515  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
24516  // source comes from the SGPR-pair at S2.u.
24517  void
24519  {
24520  Wavefront *wf = gpuDynInst->wavefront();
24521  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24522  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24523  ConstScalarOperandU64 sdst(gpuDynInst, instData.SDST);
24524  ScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
24525  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24526 
24527  src0.readSrc();
24528  src1.readSrc();
24529  vcc.read();
24530 
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  vdst[lane] = src1[lane] - src0[lane]
24541  - bits(vcc.rawData(), lane);
24542  sdst.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
24543  > src0[lane] ? 1 : 0);
24544  }
24545  }
24546 
24547  vdst.write();
24548  sdst.write();
24549  }
24550 
24552  : Inst_VOP3(iFmt, "v_add_f16", false)
24553  {
24554  setFlag(ALU);
24555  setFlag(F16);
24556  } // Inst_VOP3__V_ADD_F16
24557 
24559  {
24560  } // ~Inst_VOP3__V_ADD_F16
24561 
24562  // D.f16 = S0.f16 + S1.f16.
24563  void
24565  {
24567  }
24568 
24570  : Inst_VOP3(iFmt, "v_sub_f16", false)
24571  {
24572  setFlag(ALU);
24573  setFlag(F16);
24574  } // Inst_VOP3__V_SUB_F16
24575 
24577  {
24578  } // ~Inst_VOP3__V_SUB_F16
24579 
24580  // D.f16 = S0.f16 - S1.f16.
24581  void
24583  {
24585  }
24586 
24588  : Inst_VOP3(iFmt, "v_subrev_f16", false)
24589  {
24590  setFlag(ALU);
24591  setFlag(F16);
24592  } // Inst_VOP3__V_SUBREV_F16
24593 
24595  {
24596  } // ~Inst_VOP3__V_SUBREV_F16
24597 
24598  // D.f16 = S1.f16 - S0.f16.
24599  void
24601  {
24603  }
24604 
24606  : Inst_VOP3(iFmt, "v_mul_f16", false)
24607  {
24608  setFlag(ALU);
24609  setFlag(F16);
24610  } // Inst_VOP3__V_MUL_F16
24611 
24613  {
24614  } // ~Inst_VOP3__V_MUL_F16
24615 
24616  // D.f16 = S0.f16 * S1.f16.
24617  void
24619  {
24621  }
24622 
24624  : Inst_VOP3(iFmt, "v_mac_f16", false)
24625  {
24626  setFlag(ALU);
24627  setFlag(F16);
24628  setFlag(MAC);
24629  } // Inst_VOP3__V_MAC_F16
24630 
24632  {
24633  } // ~Inst_VOP3__V_MAC_F16
24634 
24635  // D.f16 = S0.f16 * S1.f16 + D.f16.
24636  void
24638  {
24640  }
24641 
24643  : Inst_VOP3(iFmt, "v_add_u16", false)
24644  {
24645  setFlag(ALU);
24646  } // Inst_VOP3__V_ADD_U16
24647 
24649  {
24650  } // ~Inst_VOP3__V_ADD_U16
24651 
24652  // D.u16 = S0.u16 + S1.u16.
24653  void
24655  {
24656  Wavefront *wf = gpuDynInst->wavefront();
24657  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24658  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24659  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24660 
24661  src0.readSrc();
24662  src1.readSrc();
24663 
24667  assert(!(instData.ABS & 0x1));
24668  assert(!(instData.ABS & 0x2));
24669  assert(!(instData.ABS & 0x4));
24670  assert(!(extData.NEG & 0x1));
24671  assert(!(extData.NEG & 0x2));
24672  assert(!(extData.NEG & 0x4));
24673 
24674  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24675  if (wf->execMask(lane)) {
24676  vdst[lane] = src0[lane] + src1[lane];
24677  }
24678  }
24679 
24680  vdst.write();
24681  }
24682 
24684  : Inst_VOP3(iFmt, "v_sub_u16", false)
24685  {
24686  setFlag(ALU);
24687  } // Inst_VOP3__V_SUB_U16
24688 
24690  {
24691  } // ~Inst_VOP3__V_SUB_U16
24692 
24693  // D.u16 = S0.u16 - S1.u16.
24694  void
24696  {
24697  Wavefront *wf = gpuDynInst->wavefront();
24698  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24699  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24700  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24701 
24702  src0.readSrc();
24703  src1.readSrc();
24704 
24708  assert(!(instData.ABS & 0x1));
24709  assert(!(instData.ABS & 0x2));
24710  assert(!(instData.ABS & 0x4));
24711  assert(!(extData.NEG & 0x1));
24712  assert(!(extData.NEG & 0x2));
24713  assert(!(extData.NEG & 0x4));
24714 
24715  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24716  if (wf->execMask(lane)) {
24717  vdst[lane] = src0[lane] - src1[lane];
24718  }
24719  }
24720 
24721  vdst.write();
24722  }
24723 
24725  : Inst_VOP3(iFmt, "v_subrev_u16", false)
24726  {
24727  setFlag(ALU);
24728  } // Inst_VOP3__V_SUBREV_U16
24729 
24731  {
24732  } // ~Inst_VOP3__V_SUBREV_U16
24733 
24734  // D.u16 = S1.u16 - S0.u16.
24735  void
24737  {
24738  Wavefront *wf = gpuDynInst->wavefront();
24739  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24740  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24741  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24742 
24743  src0.readSrc();
24744  src1.readSrc();
24745 
24749  assert(!(instData.ABS & 0x1));
24750  assert(!(instData.ABS & 0x2));
24751  assert(!(instData.ABS & 0x4));
24752  assert(!(extData.NEG & 0x1));
24753  assert(!(extData.NEG & 0x2));
24754  assert(!(extData.NEG & 0x4));
24755 
24756  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24757  if (wf->execMask(lane)) {
24758  vdst[lane] = src1[lane] - src0[lane];
24759  }
24760  }
24761 
24762  vdst.write();
24763  }
24764 
24766  : Inst_VOP3(iFmt, "v_mul_lo_u16", false)
24767  {
24768  setFlag(ALU);
24769  } // Inst_VOP3__V_MUL_LO_U16
24770 
24772  {
24773  } // ~Inst_VOP3__V_MUL_LO_U16
24774 
24775  // D.u16 = S0.u16 * S1.u16.
24776  void
24778  {
24779  Wavefront *wf = gpuDynInst->wavefront();
24780  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24781  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24782  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24783 
24784  src0.readSrc();
24785  src1.readSrc();
24786 
24790  assert(!(instData.ABS & 0x1));
24791  assert(!(instData.ABS & 0x2));
24792  assert(!(instData.ABS & 0x4));
24793  assert(!(extData.NEG & 0x1));
24794  assert(!(extData.NEG & 0x2));
24795  assert(!(extData.NEG & 0x4));
24796 
24797  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24798  if (wf->execMask(lane)) {
24799  vdst[lane] = src0[lane] * src1[lane];
24800  }
24801  }
24802 
24803  vdst.write();
24804  }
24805 
24807  : Inst_VOP3(iFmt, "v_lshlrev_b16", false)
24808  {
24809  setFlag(ALU);
24810  } // Inst_VOP3__V_LSHLREV_B16
24811 
24813  {
24814  } // ~Inst_VOP3__V_LSHLREV_B16
24815 
24816  // D.u[15:0] = S1.u[15:0] << S0.u[3:0].
24817  void
24819  {
24820  Wavefront *wf = gpuDynInst->wavefront();
24821  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24822  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24823  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24824 
24825  src0.readSrc();
24826  src1.readSrc();
24827 
24831  assert(!(instData.ABS & 0x1));
24832  assert(!(instData.ABS & 0x2));
24833  assert(!(instData.ABS & 0x4));
24834  assert(!(extData.NEG & 0x1));
24835  assert(!(extData.NEG & 0x2));
24836  assert(!(extData.NEG & 0x4));
24837 
24838  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24839  if (wf->execMask(lane)) {
24840  vdst[lane] = src1[lane] << bits(src0[lane], 3, 0);
24841  }
24842  }
24843 
24844  vdst.write();
24845  }
24846 
24848  : Inst_VOP3(iFmt, "v_lshrrev_b16", false)
24849  {
24850  setFlag(ALU);
24851  } // Inst_VOP3__V_LSHRREV_B16
24852 
24854  {
24855  } // ~Inst_VOP3__V_LSHRREV_B16
24856 
24857  // D.u[15:0] = S1.u[15:0] >> S0.u[3:0].
24858  // The vacated bits are set to zero.
24859  void
24861  {
24862  Wavefront *wf = gpuDynInst->wavefront();
24863  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24864  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24865  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24866 
24867  src0.readSrc();
24868  src1.readSrc();
24869 
24870  if (instData.ABS & 0x1) {
24871  src0.absModifier();
24872  }
24873 
24874  if (instData.ABS & 0x2) {
24875  src1.absModifier();
24876  }
24877 
24878  if (extData.NEG & 0x1) {
24879  src0.negModifier();
24880  }
24881 
24882  if (extData.NEG & 0x2) {
24883  src1.negModifier();
24884  }
24885 
24886  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24887  if (wf->execMask(lane)) {
24888  vdst[lane] = src1[lane] >> bits(src0[lane], 3, 0);
24889  }
24890  }
24891 
24892  vdst.write();
24893  }
24894 
24896  : Inst_VOP3(iFmt, "v_ashrrev_i16", false)
24897  {
24898  setFlag(ALU);
24899  } // Inst_VOP3__V_ASHRREV_I16
24900 
24902  {
24903  } // ~Inst_VOP3__V_ASHRREV_I16
24904 
24905  // D.i[15:0] = signext(S1.i[15:0]) >> S0.i[3:0].
24906  // The vacated bits are set to the sign bit of the input value.
24907  void
24909  {
24910  Wavefront *wf = gpuDynInst->wavefront();
24911  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24912  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
24913  VecOperandI16 vdst(gpuDynInst, instData.VDST);
24914 
24915  src0.readSrc();
24916  src1.readSrc();
24917 
24921  assert(!(instData.ABS & 0x1));
24922  assert(!(instData.ABS & 0x2));
24923  assert(!(instData.ABS & 0x4));
24924  assert(!(extData.NEG & 0x1));
24925  assert(!(extData.NEG & 0x2));
24926  assert(!(extData.NEG & 0x4));
24927 
24928  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24929  if (wf->execMask(lane)) {
24930  vdst[lane] = src1[lane] >> bits(src0[lane], 3, 0);
24931  }
24932  }
24933 
24934  vdst.write();
24935  }
24936 
24938  : Inst_VOP3(iFmt, "v_max_f16", false)
24939  {
24940  setFlag(ALU);
24941  setFlag(F16);
24942  } // Inst_VOP3__V_MAX_F16
24943 
24945  {
24946  } // ~Inst_VOP3__V_MAX_F16
24947 
24948  // D.f16 = max(S0.f16, S1.f16).
24949  void
24951  {
24953  }
24954 
24956  : Inst_VOP3(iFmt, "v_min_f16", false)
24957  {
24958  setFlag(ALU);
24959  setFlag(F16);
24960  } // Inst_VOP3__V_MIN_F16
24961 
24963  {
24964  } // ~Inst_VOP3__V_MIN_F16
24965 
24966  // D.f16 = min(S0.f16, S1.f16).
24967  void
24969  {
24971  }
24972 
24974  : Inst_VOP3(iFmt, "v_max_u16", false)
24975  {
24976  setFlag(ALU);
24977  } // Inst_VOP3__V_MAX_U16
24978 
24980  {
24981  } // ~Inst_VOP3__V_MAX_U16
24982 
24983  // D.u[15:0] = max(S0.u[15:0], S1.u[15:0]).
24984  void
24986  {
24987  Wavefront *wf = gpuDynInst->wavefront();
24988  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24989  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24990  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24991 
24992  src0.readSrc();
24993  src1.readSrc();
24994 
24995  if (instData.ABS & 0x1) {
24996  src0.absModifier();
24997  }
24998 
24999  if (instData.ABS & 0x2) {
25000  src1.absModifier();
25001  }
25002 
25003  if (extData.NEG & 0x1) {
25004  src0.negModifier();
25005  }
25006 
25007  if (extData.NEG & 0x2) {
25008  src1.negModifier();
25009  }
25010 
25011  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25012  if (wf->execMask(lane)) {
25013  vdst[lane] = std::max(src0[lane], src1[lane]);
25014  }
25015  }
25016 
25017  vdst.write();
25018  }
25019 
25021  : Inst_VOP3(iFmt, "v_max_i16", false)
25022  {
25023  setFlag(ALU);
25024  } // Inst_VOP3__V_MAX_I16
25025 
25027  {
25028  } // ~Inst_VOP3__V_MAX_I16
25029 
25030  // D.i[15:0] = max(S0.i[15:0], S1.i[15:0]).
25031  void
25033  {
25034  Wavefront *wf = gpuDynInst->wavefront();
25035  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
25036  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
25037  VecOperandI16 vdst(gpuDynInst, instData.VDST);
25038 
25039  src0.readSrc();
25040  src1.readSrc();
25041 
25042  if (instData.ABS & 0x1) {
25043  src0.absModifier();
25044  }
25045 
25046  if (instData.ABS & 0x2) {
25047  src1.absModifier();
25048  }
25049 
25050  if (extData.NEG & 0x1) {
25051  src0.negModifier();
25052  }
25053 
25054  if (extData.NEG & 0x2) {
25055  src1.negModifier();
25056  }
25057 
25058  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25059  if (wf->execMask(lane)) {
25060  vdst[lane] = std::max(src0[lane], src1[lane]);
25061  }
25062  }
25063 
25064  vdst.write();
25065  }
25066 
25068  : Inst_VOP3(iFmt, "v_min_u16", false)
25069  {
25070  setFlag(ALU);
25071  } // Inst_VOP3__V_MIN_U16
25072 
25074  {
25075  } // ~Inst_VOP3__V_MIN_U16
25076 
25077  // D.u[15:0] = min(S0.u[15:0], S1.u[15:0]).
25078  void
25080  {
25081  Wavefront *wf = gpuDynInst->wavefront();
25082  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
25083  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
25084  VecOperandU16 vdst(gpuDynInst, instData.VDST);
25085 
25086  src0.readSrc();
25087  src1.readSrc();
25088 
25089  if (instData.ABS & 0x1) {
25090  src0.absModifier();
25091  }
25092 
25093  if (instData.ABS & 0x2) {
25094  src1.absModifier();
25095  }
25096 
25097  if (extData.NEG & 0x1) {
25098  src0.negModifier();
25099  }
25100 
25101  if (extData.NEG & 0x2) {
25102  src1.negModifier();
25103  }
25104 
25105  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25106  if (wf->execMask(lane)) {
25107  vdst[lane] = std::min(src0[lane], src1[lane]);
25108  }
25109  }
25110 
25111  vdst.write();
25112  }
25113 
25115  : Inst_VOP3(iFmt, "v_min_i16", false)
25116  {
25117  setFlag(ALU);
25118  } // Inst_VOP3__V_MIN_I16
25119 
25121  {
25122  } // ~Inst_VOP3__V_MIN_I16
25123 
25124  // D.i[15:0] = min(S0.i[15:0], S1.i[15:0]).
25125  void
25127  {
25128  Wavefront *wf = gpuDynInst->wavefront();
25129  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
25130  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
25131  VecOperandI16 vdst(gpuDynInst, instData.VDST);
25132 
25133  src0.readSrc();
25134  src1.readSrc();
25135 
25136  if (instData.ABS & 0x1) {
25137  src0.absModifier();
25138  }
25139 
25140  if (instData.ABS & 0x2) {
25141  src1.absModifier();
25142  }
25143 
25144  if (extData.NEG & 0x1) {
25145  src0.negModifier();
25146  }
25147 
25148  if (extData.NEG & 0x2) {
25149  src1.negModifier();
25150  }
25151 
25152  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25153  if (wf->execMask(lane)) {
25154  vdst[lane] = std::min(src0[lane], src1[lane]);
25155  }
25156  }
25157 
25158  vdst.write();
25159  }
25160 
25162  : Inst_VOP3(iFmt, "v_ldexp_f16", false)
25163  {
25164  setFlag(ALU);
25165  setFlag(F16);
25166  } // Inst_VOP3__V_LDEXP_F16
25167 
25169  {
25170  } // ~Inst_VOP3__V_LDEXP_F16
25171 
25172  // D.f16 = S0.f16 * (2 ** S1.i16).
25173  void
25175  {
25177  }
25178 
25180  : Inst_VOP3(iFmt, "v_nop", false)
25181  {
25182  setFlag(Nop);
25183  setFlag(ALU);
25184  } // Inst_VOP3__V_NOP
25185 
25187  {
25188  } // ~Inst_VOP3__V_NOP
25189 
25190  // Do nothing.
25191  void
25193  {
25194  }
25195 
25197  : Inst_VOP3(iFmt, "v_mov_b32", false)
25198  {
25199  setFlag(ALU);
25200  } // Inst_VOP3__V_MOV_B32
25201 
25203  {
25204  } // ~Inst_VOP3__V_MOV_B32
25205 
25206  // D.u = S0.u.
25207  // Input and output modifiers not supported; this is an untyped operation.
25208  void
25210  {
25211  Wavefront *wf = gpuDynInst->wavefront();
25212  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25213  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25214 
25215  src.readSrc();
25216 
25217  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25218  if (wf->execMask(lane)) {
25219  vdst[lane] = src[lane];
25220  }
25221  }
25222 
25223  vdst.write();
25224  }
25225 
25227  : Inst_VOP3(iFmt, "v_cvt_i32_f64", false)
25228  {
25229  setFlag(ALU);
25230  setFlag(F64);
25231  } // Inst_VOP3__V_CVT_I32_F64
25232 
25234  {
25235  } // ~Inst_VOP3__V_CVT_I32_F64
25236 
25237  // D.i = (int)S0.d.
25238  // Out-of-range floating point values (including infinity) saturate. NaN
25239  // is converted to 0.
25240  void
25242  {
25243  Wavefront *wf = gpuDynInst->wavefront();
25244  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
25245  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25246 
25247  src.readSrc();
25248 
25249  if (instData.ABS & 0x1) {
25250  src.absModifier();
25251  }
25252 
25253  if (extData.NEG & 0x1) {
25254  src.negModifier();
25255  }
25256 
25257  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25258  if (wf->execMask(lane)) {
25259  int exp;
25260  std::frexp(src[lane],&exp);
25261  if (std::isnan(src[lane])) {
25262  vdst[lane] = 0;
25263  } else if (std::isinf(src[lane]) || exp > 30) {
25264  if (std::signbit(src[lane])) {
25265  vdst[lane] = INT_MIN;
25266  } else {
25267  vdst[lane] = INT_MAX;
25268  }
25269  } else {
25270  vdst[lane] = (VecElemI32)src[lane];
25271  }
25272  }
25273  }
25274 
25275  vdst.write();
25276  }
25277 
25279  : Inst_VOP3(iFmt, "v_cvt_f64_i32", false)
25280  {
25281  setFlag(ALU);
25282  setFlag(F64);
25283  } // Inst_VOP3__V_CVT_F64_I32
25284 
25286  {
25287  } // ~Inst_VOP3__V_CVT_F64_I32
25288 
25289  // D.d = (double)S0.i.
25290  void
25292  {
25293  Wavefront *wf = gpuDynInst->wavefront();
25294  ConstVecOperandI32 src(gpuDynInst, extData.SRC0);
25295  VecOperandF64 vdst(gpuDynInst, instData.VDST);
25296 
25297  src.readSrc();
25298 
25299  if (instData.ABS & 0x1) {
25300  src.absModifier();
25301  }
25302 
25303  if (extData.NEG & 0x1) {
25304  src.negModifier();
25305  }
25306 
25307  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25308  if (wf->execMask(lane)) {
25309  vdst[lane] = (VecElemF64)src[lane];
25310  }
25311  }
25312 
25313  vdst.write();
25314  }
25315 
25317  : Inst_VOP3(iFmt, "v_cvt_f32_i32", false)
25318  {
25319  setFlag(ALU);
25320  setFlag(F32);
25321  } // Inst_VOP3__V_CVT_F32_I32
25322 
25324  {
25325  } // ~Inst_VOP3__V_CVT_F32_I32
25326 
25327  // D.f = (float)S0.i.
25328  void
25330  {
25331  Wavefront *wf = gpuDynInst->wavefront();
25332  VecOperandI32 src(gpuDynInst, extData.SRC0);
25333  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25334 
25335  src.readSrc();
25336 
25340  assert(!(instData.ABS & 0x1));
25341  assert(!(instData.ABS & 0x2));
25342  assert(!(instData.ABS & 0x4));
25343  assert(!(extData.NEG & 0x1));
25344  assert(!(extData.NEG & 0x2));
25345  assert(!(extData.NEG & 0x4));
25346 
25347  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25348  if (wf->execMask(lane)) {
25349  vdst[lane] = (VecElemF32)src[lane];
25350  }
25351  }
25352 
25353  vdst.write();
25354  }
25355 
25357  : Inst_VOP3(iFmt, "v_cvt_f32_u32", false)
25358  {
25359  setFlag(ALU);
25360  setFlag(F32);
25361  } // Inst_VOP3__V_CVT_F32_U32
25362 
25364  {
25365  } // ~Inst_VOP3__V_CVT_F32_U32
25366 
25367  // D.f = (float)S0.u.
25368  void
25370  {
25371  Wavefront *wf = gpuDynInst->wavefront();
25372  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25373  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25374 
25375  src.readSrc();
25376 
25377  if (instData.ABS & 0x1) {
25378  src.absModifier();
25379  }
25380 
25381  if (extData.NEG & 0x1) {
25382  src.negModifier();
25383  }
25384 
25385  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25386  if (wf->execMask(lane)) {
25387  vdst[lane] = (VecElemF32)src[lane];
25388  }
25389  }
25390 
25391  vdst.write();
25392  }
25393 
25395  : Inst_VOP3(iFmt, "v_cvt_u32_f32", false)
25396  {
25397  setFlag(ALU);
25398  setFlag(F32);
25399  } // Inst_VOP3__V_CVT_U32_F32
25400 
25402  {
25403  } // ~Inst_VOP3__V_CVT_U32_F32
25404 
25405  // D.u = (unsigned)S0.f.
25406  // Out-of-range floating point values (including infinity) saturate. NaN
25407  // is converted to 0.
25408  void
25410  {
25411  Wavefront *wf = gpuDynInst->wavefront();
25412  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25413  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25414 
25415  src.readSrc();
25416 
25417  if (instData.ABS & 0x1) {
25418  src.absModifier();
25419  }
25420 
25421  if (extData.NEG & 0x1) {
25422  src.negModifier();
25423  }
25424 
25425  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25426  if (wf->execMask(lane)) {
25427  int exp;
25428  std::frexp(src[lane],&exp);
25429  if (std::isnan(src[lane])) {
25430  vdst[lane] = 0;
25431  } else if (std::isinf(src[lane])) {
25432  if (std::signbit(src[lane])) {
25433  vdst[lane] = 0;
25434  } else {
25435  vdst[lane] = UINT_MAX;
25436  }
25437  } else if (exp > 31) {
25438  vdst[lane] = UINT_MAX;
25439  } else {
25440  vdst[lane] = (VecElemU32)src[lane];
25441  }
25442  }
25443  }
25444 
25445  vdst.write();
25446  }
25447 
25449  : Inst_VOP3(iFmt, "v_cvt_i32_f32", false)
25450  {
25451  setFlag(ALU);
25452  setFlag(F32);
25453  } // Inst_VOP3__V_CVT_I32_F32
25454 
25456  {
25457  } // ~Inst_VOP3__V_CVT_I32_F32
25458 
25459  // D.i = (int)S0.f.
25460  // Out-of-range floating point values (including infinity) saturate. NaN
25461  // is converted to 0.
25462  void
25464  {
25465  Wavefront *wf = gpuDynInst->wavefront();
25466  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25467  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25468 
25469  src.readSrc();
25470 
25471  if (instData.ABS & 0x1) {
25472  src.absModifier();
25473  }
25474 
25475  if (extData.NEG & 0x1) {
25476  src.negModifier();
25477  }
25478 
25482  assert(!(instData.ABS & 0x2));
25483  assert(!(instData.ABS & 0x4));
25484  assert(!(extData.NEG & 0x2));
25485  assert(!(extData.NEG & 0x4));
25486 
25487  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25488  if (wf->execMask(lane)) {
25489  int exp;
25490  std::frexp(src[lane],&exp);
25491  if (std::isnan(src[lane])) {
25492  vdst[lane] = 0;
25493  } else if (std::isinf(src[lane]) || exp > 30) {
25494  if (std::signbit(src[lane])) {
25495  vdst[lane] = INT_MIN;
25496  } else {
25497  vdst[lane] = INT_MAX;
25498  }
25499  } else {
25500  vdst[lane] = (VecElemI32)src[lane];
25501  }
25502  }
25503  }
25504 
25505  vdst.write();
25506  }
25507 
25509  : Inst_VOP3(iFmt, "v_mov_fed_b32", false)
25510  {
25511  setFlag(ALU);
25512  } // Inst_VOP3__V_MOV_FED_B32
25513 
25515  {
25516  } // ~Inst_VOP3__V_MOV_FED_B32
25517 
25518  // D.u = S0.u;
25519  // Input and output modifiers not supported; this is an untyped operation.
25520  void
25522  {
25524  }
25525 
25527  : Inst_VOP3(iFmt, "v_cvt_f16_f32", false)
25528  {
25529  setFlag(ALU);
25530  setFlag(F32);
25531  } // Inst_VOP3__V_CVT_F16_F32
25532 
25534  {
25535  } // ~Inst_VOP3__V_CVT_F16_F32
25536 
25537  // D.f16 = flt32_to_flt16(S0.f).
25538  void
25540  {
25542  }
25543 
25545  : Inst_VOP3(iFmt, "v_cvt_f32_f16", false)
25546  {
25547  setFlag(ALU);
25548  setFlag(F32);
25549  } // Inst_VOP3__V_CVT_F32_F16
25550 
25552  {
25553  } // ~Inst_VOP3__V_CVT_F32_F16
25554 
25555  // D.f = flt16_to_flt32(S0.f16).
25556  void
25558  {
25560  }
25561 
25563  InFmt_VOP3 *iFmt)
25564  : Inst_VOP3(iFmt, "v_cvt_rpi_i32_f32", false)
25565  {
25566  setFlag(ALU);
25567  setFlag(F32);
25568  } // Inst_VOP3__V_CVT_RPI_I32_F32
25569 
25571  {
25572  } // ~Inst_VOP3__V_CVT_RPI_I32_F32
25573 
25574  // D.i = (int)floor(S0.f + 0.5).
25575  void
25577  {
25578  Wavefront *wf = gpuDynInst->wavefront();
25579  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25580  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25581 
25582  src.readSrc();
25583 
25584  if (instData.ABS & 0x1) {
25585  src.absModifier();
25586  }
25587 
25588  if (extData.NEG & 0x1) {
25589  src.negModifier();
25590  }
25591 
25592  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25593  if (wf->execMask(lane)) {
25594  vdst[lane] = (VecElemI32)std::floor(src[lane] + 0.5);
25595  }
25596  }
25597 
25598  vdst.write();
25599  }
25600 
25602  InFmt_VOP3 *iFmt)
25603  : Inst_VOP3(iFmt, "v_cvt_flr_i32_f32", false)
25604  {
25605  setFlag(ALU);
25606  setFlag(F32);
25607  } // Inst_VOP3__V_CVT_FLR_I32_F32
25608 
25610  {
25611  } // ~Inst_VOP3__V_CVT_FLR_I32_F32
25612 
25613  // D.i = (int)floor(S0.f).
25614  void
25616  {
25617  Wavefront *wf = gpuDynInst->wavefront();
25618  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25619  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25620 
25621  src.readSrc();
25622 
25623  if (instData.ABS & 0x1) {
25624  src.absModifier();
25625  }
25626 
25627  if (extData.NEG & 0x1) {
25628  src.negModifier();
25629  }
25630 
25631  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25632  if (wf->execMask(lane)) {
25633  vdst[lane] = (VecElemI32)std::floor(src[lane]);
25634  }
25635  }
25636 
25637  vdst.write();
25638  }
25639 
25641  : Inst_VOP3(iFmt, "v_cvt_off_f32_i4", false)
25642  {
25643  setFlag(ALU);
25644  setFlag(F32);
25645  } // Inst_VOP3__V_CVT_OFF_F32_I4
25646 
25648  {
25649  } // ~Inst_VOP3__V_CVT_OFF_F32_I4
25650 
25651  // 4-bit signed int to 32-bit float.
25652  void
25654  {
25656  }
25657 
25659  : Inst_VOP3(iFmt, "v_cvt_f32_f64", false)
25660  {
25661  setFlag(ALU);
25662  setFlag(F64);
25663  } // Inst_VOP3__V_CVT_F32_F64
25664 
25666  {
25667  } // ~Inst_VOP3__V_CVT_F32_F64
25668 
25669  // D.f = (float)S0.d.
25670  void
25672  {
25673  Wavefront *wf = gpuDynInst->wavefront();
25674  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
25675  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25676 
25677  src.readSrc();
25678 
25679  if (instData.ABS & 0x1) {
25680  src.absModifier();
25681  }
25682 
25683  if (extData.NEG & 0x1) {
25684  src.negModifier();
25685  }
25686 
25690  assert(!(instData.ABS & 0x2));
25691  assert(!(instData.ABS & 0x4));
25692  assert(!(extData.NEG & 0x2));
25693  assert(!(extData.NEG & 0x4));
25694 
25695  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25696  if (wf->execMask(lane)) {
25697  vdst[lane] = (VecElemF32)src[lane];
25698  }
25699  }
25700 
25701  vdst.write();
25702  }
25703 
25705  : Inst_VOP3(iFmt, "v_cvt_f64_f32", false)
25706  {
25707  setFlag(ALU);
25708  setFlag(F64);
25709  } // Inst_VOP3__V_CVT_F64_F32
25710 
25712  {
25713  } // ~Inst_VOP3__V_CVT_F64_F32
25714 
25715  // D.d = (double)S0.f.
25716  void
25718  {
25719  Wavefront *wf = gpuDynInst->wavefront();
25720  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25721  VecOperandF64 vdst(gpuDynInst, instData.VDST);
25722 
25723  src.readSrc();
25724 
25725  if (instData.ABS & 0x1) {
25726  src.absModifier();
25727  }
25728 
25729  if (extData.NEG & 0x1) {
25730  src.negModifier();
25731  }
25732 
25736  assert(!(instData.ABS & 0x2));
25737  assert(!(instData.ABS & 0x4));
25738  assert(!(extData.NEG & 0x2));
25739  assert(!(extData.NEG & 0x4));
25740 
25741  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25742  if (wf->execMask(lane)) {
25743  vdst[lane] = (VecElemF64)src[lane];
25744  }
25745  }
25746 
25747  vdst.write();
25748  }
25749 
25751  : Inst_VOP3(iFmt, "v_cvt_f32_ubyte0", false)
25752  {
25753  setFlag(ALU);
25754  setFlag(F32);
25755  } // Inst_VOP3__V_CVT_F32_UBYTE0
25756 
25758  {
25759  } // ~Inst_VOP3__V_CVT_F32_UBYTE0
25760 
25761  // D.f = (float)(S0.u[7:0]).
25762  void
25764  {
25765  Wavefront *wf = gpuDynInst->wavefront();
25766  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25767  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25768 
25769  src.readSrc();
25770 
25771  if (instData.ABS & 0x1) {
25772  src.absModifier();
25773  }
25774 
25775  if (extData.NEG & 0x1) {
25776  src.negModifier();
25777  }
25778 
25779  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25780  if (wf->execMask(lane)) {
25781  vdst[lane] = (VecElemF32)bits(src[lane], 7, 0);
25782  }
25783  }
25784 
25785  vdst.write();
25786  }
25787 
25789  : Inst_VOP3(iFmt, "v_cvt_f32_ubyte1", false)
25790  {
25791  setFlag(ALU);
25792  setFlag(F32);
25793  } // Inst_VOP3__V_CVT_F32_UBYTE1
25794 
25796  {
25797  } // ~Inst_VOP3__V_CVT_F32_UBYTE1
25798 
25799  // D.f = (float)(S0.u[15:8]).
25800  void
25802  {
25803  Wavefront *wf = gpuDynInst->wavefront();
25804  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25805  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25806 
25807  src.readSrc();
25808 
25809  if (instData.ABS & 0x1) {
25810  src.absModifier();
25811  }
25812 
25813  if (extData.NEG & 0x1) {
25814  src.negModifier();
25815  }
25816 
25817  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25818  if (wf->execMask(lane)) {
25819  vdst[lane] = (VecElemF32)bits(src[lane], 15, 8);
25820  }
25821  }
25822 
25823  vdst.write();
25824  }
25825 
25827  : Inst_VOP3(iFmt, "v_cvt_f32_ubyte2", false)
25828  {
25829  setFlag(ALU);
25830  setFlag(F32);
25831  } // Inst_VOP3__V_CVT_F32_UBYTE2
25832 
25834  {
25835  } // ~Inst_VOP3__V_CVT_F32_UBYTE2
25836 
25837  // D.f = (float)(S0.u[23:16]).
25838  void
25840  {
25841  Wavefront *wf = gpuDynInst->wavefront();
25842  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25843  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25844 
25845  src.readSrc();
25846 
25847  if (instData.ABS & 0x1) {
25848  src.absModifier();
25849  }
25850 
25851  if (extData.NEG & 0x1) {
25852  src.negModifier();
25853  }
25854 
25855  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25856  if (wf->execMask(lane)) {
25857  vdst[lane] = (VecElemF32)bits(src[lane], 23, 16);
25858  }
25859  }
25860 
25861  vdst.write();
25862  }
25863 
25865  : Inst_VOP3(iFmt, "v_cvt_f32_ubyte3", false)
25866  {
25867  setFlag(ALU);
25868  setFlag(F32);
25869  } // Inst_VOP3__V_CVT_F32_UBYTE3
25870 
25872  {
25873  } // ~Inst_VOP3__V_CVT_F32_UBYTE3
25874 
25875  // D.f = (float)(S0.u[31:24]).
25876  void
25878  {
25879  Wavefront *wf = gpuDynInst->wavefront();
25880  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25881  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25882 
25883  src.readSrc();
25884 
25885  if (instData.ABS & 0x1) {
25886  src.absModifier();
25887  }
25888 
25889  if (extData.NEG & 0x1) {
25890  src.negModifier();
25891  }
25892 
25893  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25894  if (wf->execMask(lane)) {
25895  vdst[lane] = (VecElemF32)bits(src[lane], 31, 24);
25896  }
25897  }
25898 
25899  vdst.write();
25900  }
25901 
25903  : Inst_VOP3(iFmt, "v_cvt_u32_f64", false)
25904  {
25905  setFlag(ALU);
25906  setFlag(F64);
25907  } // Inst_VOP3__V_CVT_U32_F64
25908 
25910  {
25911  } // ~Inst_VOP3__V_CVT_U32_F64
25912 
25913  // D.u = (unsigned)S0.d.
25914  // Out-of-range floating point values (including infinity) saturate. NaN
25915  // is converted to 0.
25916  void
25918  {
25919  Wavefront *wf = gpuDynInst->wavefront();
25920  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
25921  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25922 
25923  src.readSrc();
25924 
25925  if (instData.ABS & 0x1) {
25926  src.absModifier();
25927  }
25928 
25929  if (extData.NEG & 0x1) {
25930  src.negModifier();
25931  }
25932 
25933  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25934  if (wf->execMask(lane)) {
25935  int exp;
25936  std::frexp(src[lane],&exp);
25937  if (std::isnan(src[lane])) {
25938  vdst[lane] = 0;
25939  } else if (std::isinf(src[lane])) {
25940  if (std::signbit(src[lane])) {
25941  vdst[lane] = 0;
25942  } else {
25943  vdst[lane] = UINT_MAX;
25944  }
25945  } else if (exp > 31) {
25946  vdst[lane] = UINT_MAX;
25947  } else {
25948  vdst[lane] = (VecElemU32)src[lane];
25949  }
25950  }
25951  }
25952 
25953  vdst.write();
25954  }
25955 
25957  : Inst_VOP3(iFmt, "v_cvt_f64_u32", false)
25958  {
25959  setFlag(ALU);
25960  setFlag(F64);
25961  } // Inst_VOP3__V_CVT_F64_U32
25962 
25964  {
25965  } // ~Inst_VOP3__V_CVT_F64_U32
25966 
25967  // D.d = (double)S0.u.
25968  void
25970  {
25971  Wavefront *wf = gpuDynInst->wavefront();
25972  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25973  VecOperandF64 vdst(gpuDynInst, instData.VDST);
25974 
25975  src.readSrc();
25976 
25977  if (instData.ABS & 0x1) {
25978  src.absModifier();
25979  }
25980 
25981  if (extData.NEG & 0x1) {
25982  src.negModifier();
25983  }
25984 
25985  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25986  if (wf->execMask(lane)) {
25987  vdst[lane] = (VecElemF64)src[lane];
25988  }
25989  }
25990 
25991  vdst.write();
25992  }
25993 
25995  : Inst_VOP3(iFmt, "v_trunc_f64", false)
25996  {
25997  setFlag(ALU);
25998  setFlag(F64);
25999  } // Inst_VOP3__V_TRUNC_F64
26000 
26002  {
26003  } // ~Inst_VOP3__V_TRUNC_F64
26004 
26005  // D.d = trunc(S0.d), return integer part of S0.d.
26006  void
26008  {
26009  Wavefront *wf = gpuDynInst->wavefront();
26010  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26011  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26012 
26013  src.readSrc();
26014 
26015  if (instData.ABS & 0x1) {
26016  src.absModifier();
26017  }
26018 
26019  if (extData.NEG & 0x1) {
26020  src.negModifier();
26021  }
26022 
26023  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26024  if (wf->execMask(lane)) {
26025  vdst[lane] = std::trunc(src[lane]);
26026  }
26027  }
26028 
26029  vdst.write();
26030  }
26031 
26033  : Inst_VOP3(iFmt, "v_ceil_f64", false)
26034  {
26035  setFlag(ALU);
26036  setFlag(F64);
26037  } // Inst_VOP3__V_CEIL_F64
26038 
26040  {
26041  } // ~Inst_VOP3__V_CEIL_F64
26042 
26043  // D.d = ceil(S0.d);
26044  void
26046  {
26047  Wavefront *wf = gpuDynInst->wavefront();
26048  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26049  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26050 
26051  src.readSrc();
26052 
26053  if (instData.ABS & 0x1) {
26054  src.absModifier();
26055  }
26056 
26057  if (extData.NEG & 0x1) {
26058  src.negModifier();
26059  }
26060 
26061  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26062  if (wf->execMask(lane)) {
26063  vdst[lane] = std::ceil(src[lane]);
26064  }
26065  }
26066 
26067  vdst.write();
26068  }
26069 
26071  : Inst_VOP3(iFmt, "v_rndne_f64", false)
26072  {
26073  setFlag(ALU);
26074  setFlag(F64);
26075  } // Inst_VOP3__V_RNDNE_F64
26076 
26078  {
26079  } // ~Inst_VOP3__V_RNDNE_F64
26080 
26081  // D.d = round_nearest_even(S0.d).
26082  void
26084  {
26085  Wavefront *wf = gpuDynInst->wavefront();
26086  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26087  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26088 
26089  src.readSrc();
26090 
26091  if (instData.ABS & 0x1) {
26092  src.absModifier();
26093  }
26094 
26095  if (extData.NEG & 0x1) {
26096  src.negModifier();
26097  }
26098 
26099  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26100  if (wf->execMask(lane)) {
26101  vdst[lane] = roundNearestEven(src[lane]);
26102  }
26103  }
26104 
26105  vdst.write();
26106  }
26107 
26109  : Inst_VOP3(iFmt, "v_floor_f64", false)
26110  {
26111  setFlag(ALU);
26112  setFlag(F64);
26113  } // Inst_VOP3__V_FLOOR_F64
26114 
26116  {
26117  } // ~Inst_VOP3__V_FLOOR_F64
26118 
26119  // D.d = floor(S0.d);
26120  void
26122  {
26123  Wavefront *wf = gpuDynInst->wavefront();
26124  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26125  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26126 
26127  src.readSrc();
26128 
26129  if (instData.ABS & 0x1) {
26130  src.absModifier();
26131  }
26132 
26133  if (extData.NEG & 0x1) {
26134  src.negModifier();
26135  }
26136 
26137  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26138  if (wf->execMask(lane)) {
26139  vdst[lane] = std::floor(src[lane]);
26140  }
26141  }
26142 
26143  vdst.write();
26144  }
26145 
26147  : Inst_VOP3(iFmt, "v_fract_f32", false)
26148  {
26149  setFlag(ALU);
26150  setFlag(F32);
26151  } // Inst_VOP3__V_FRACT_F32
26152 
26154  {
26155  } // ~Inst_VOP3__V_FRACT_F32
26156 
26157  // D.f = modf(S0.f).
26158  void
26160  {
26161  Wavefront *wf = gpuDynInst->wavefront();
26162  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26163  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26164 
26165  src.readSrc();
26166 
26167  if (instData.ABS & 0x1) {
26168  src.absModifier();
26169  }
26170 
26171  if (extData.NEG & 0x1) {
26172  src.negModifier();
26173  }
26174 
26175  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26176  if (wf->execMask(lane)) {
26177  VecElemF32 int_part(0.0);
26178  vdst[lane] = std::modf(src[lane], &int_part);
26179  }
26180  }
26181 
26182  vdst.write();
26183  }
26184 
26186  : Inst_VOP3(iFmt, "v_trunc_f32", false)
26187  {
26188  setFlag(ALU);
26189  setFlag(F32);
26190  } // Inst_VOP3__V_TRUNC_F32
26191 
26193  {
26194  } // ~Inst_VOP3__V_TRUNC_F32
26195 
26196  // D.f = trunc(S0.f), return integer part of S0.f.
26197  void
26199  {
26200  Wavefront *wf = gpuDynInst->wavefront();
26201  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26202  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26203 
26204  src.readSrc();
26205 
26206  if (instData.ABS & 0x1) {
26207  src.absModifier();
26208  }
26209 
26210  if (extData.NEG & 0x1) {
26211  src.negModifier();
26212  }
26213 
26214  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26215  if (wf->execMask(lane)) {
26216  vdst[lane] = std::trunc(src[lane]);
26217  }
26218  }
26219 
26220  vdst.write();
26221  }
26222 
26224  : Inst_VOP3(iFmt, "v_ceil_f32", false)
26225  {
26226  setFlag(ALU);
26227  setFlag(F32);
26228  } // Inst_VOP3__V_CEIL_F32
26229 
26231  {
26232  } // ~Inst_VOP3__V_CEIL_F32
26233 
26234  // D.f = ceil(S0.f);
26235  void
26237  {
26238  Wavefront *wf = gpuDynInst->wavefront();
26239  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26240  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26241 
26242  src.readSrc();
26243 
26244  if (instData.ABS & 0x1) {
26245  src.absModifier();
26246  }
26247 
26248  if (extData.NEG & 0x1) {
26249  src.negModifier();
26250  }
26251 
26252  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26253  if (wf->execMask(lane)) {
26254  vdst[lane] = std::ceil(src[lane]);
26255  }
26256  }
26257 
26258  vdst.write();
26259  }
26260 
26262  : Inst_VOP3(iFmt, "v_rndne_f32", false)
26263  {
26264  setFlag(ALU);
26265  setFlag(F32);
26266  } // Inst_VOP3__V_RNDNE_F32
26267 
26269  {
26270  } // ~Inst_VOP3__V_RNDNE_F32
26271 
26272  // D.f = round_nearest_even(S0.f).
26273  void
26275  {
26276  Wavefront *wf = gpuDynInst->wavefront();
26277  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26278  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26279 
26280  src.readSrc();
26281 
26282  if (instData.ABS & 0x1) {
26283  src.absModifier();
26284  }
26285 
26286  if (extData.NEG & 0x1) {
26287  src.negModifier();
26288  }
26289 
26290  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26291  if (wf->execMask(lane)) {
26292  vdst[lane] = roundNearestEven(src[lane]);
26293  }
26294  }
26295 
26296  vdst.write();
26297  }
26298 
26300  : Inst_VOP3(iFmt, "v_floor_f32", false)
26301  {
26302  setFlag(ALU);
26303  setFlag(F32);
26304  } // Inst_VOP3__V_FLOOR_F32
26305 
26307  {
26308  } // ~Inst_VOP3__V_FLOOR_F32
26309 
26310  // D.f = floor(S0.f);
26311  void
26313  {
26314  Wavefront *wf = gpuDynInst->wavefront();
26315  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26316  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26317 
26318  src.readSrc();
26319 
26320  if (instData.ABS & 0x1) {
26321  src.absModifier();
26322  }
26323 
26324  if (extData.NEG & 0x1) {
26325  src.negModifier();
26326  }
26327 
26328  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26329  if (wf->execMask(lane)) {
26330  vdst[lane] = std::floor(src[lane]);
26331  }
26332  }
26333 
26334  vdst.write();
26335  }
26336 
26338  : Inst_VOP3(iFmt, "v_exp_f32", false)
26339  {
26340  setFlag(ALU);
26341  setFlag(F32);
26342  } // Inst_VOP3__V_EXP_F32
26343 
26345  {
26346  } // ~Inst_VOP3__V_EXP_F32
26347 
26348  // D.f = pow(2.0, S0.f).
26349  void
26351  {
26352  Wavefront *wf = gpuDynInst->wavefront();
26353  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26354  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26355 
26356  src.readSrc();
26357 
26358  if (instData.ABS & 0x1) {
26359  src.absModifier();
26360  }
26361 
26362  if (extData.NEG & 0x1) {
26363  src.negModifier();
26364  }
26365 
26366  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26367  if (wf->execMask(lane)) {
26368  vdst[lane] = std::pow(2.0, src[lane]);
26369  }
26370  }
26371 
26372  vdst.write();
26373  }
26374 
26376  : Inst_VOP3(iFmt, "v_log_f32", false)
26377  {
26378  setFlag(ALU);
26379  setFlag(F32);
26380  } // Inst_VOP3__V_LOG_F32
26381 
26383  {
26384  } // ~Inst_VOP3__V_LOG_F32
26385 
26386  // D.f = log2(S0.f).
26387  void
26389  {
26390  Wavefront *wf = gpuDynInst->wavefront();
26391  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26392  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26393 
26394  src.readSrc();
26395 
26396  if (instData.ABS & 0x1) {
26397  src.absModifier();
26398  }
26399 
26400  if (extData.NEG & 0x1) {
26401  src.negModifier();
26402  }
26403 
26407  assert(!(instData.ABS & 0x2));
26408  assert(!(instData.ABS & 0x4));
26409  assert(!(extData.NEG & 0x2));
26410  assert(!(extData.NEG & 0x4));
26411 
26412  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26413  if (wf->execMask(lane)) {
26414  vdst[lane] = std::log2(src[lane]);
26415  }
26416  }
26417 
26418  vdst.write();
26419  }
26420 
26422  : Inst_VOP3(iFmt, "v_rcp_f32", false)
26423  {
26424  setFlag(ALU);
26425  setFlag(F32);
26426  } // Inst_VOP3__V_RCP_F32
26427 
26429  {
26430  } // ~Inst_VOP3__V_RCP_F32
26431 
26432  // D.f = 1.0 / S0.f.
26433  void
26435  {
26436  Wavefront *wf = gpuDynInst->wavefront();
26437  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26438  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26439 
26440  src.readSrc();
26441 
26442  if (instData.ABS & 0x1) {
26443  src.absModifier();
26444  }
26445 
26446  if (extData.NEG & 0x1) {
26447  src.negModifier();
26448  }
26449 
26450  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26451  if (wf->execMask(lane)) {
26452  vdst[lane] = 1.0 / src[lane];
26453  }
26454  }
26455 
26456  vdst.write();
26457  }
26458 
26460  : Inst_VOP3(iFmt, "v_rcp_iflag_f32", false)
26461  {
26462  setFlag(ALU);
26463  setFlag(F32);
26464  } // Inst_VOP3__V_RCP_IFLAG_F32
26465 
26467  {
26468  } // ~Inst_VOP3__V_RCP_IFLAG_F32
26469 
26470  // D.f = 1.0 / S0.f.
26471  void
26473  {
26474  Wavefront *wf = gpuDynInst->wavefront();
26475  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26476  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26477 
26478  src.readSrc();
26479 
26480  if (instData.ABS & 0x1) {
26481  src.absModifier();
26482  }
26483 
26484  if (extData.NEG & 0x1) {
26485  src.negModifier();
26486  }
26487 
26488  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26489  if (wf->execMask(lane)) {
26490  vdst[lane] = 1.0 / src[lane];
26491  }
26492  }
26493 
26494  vdst.write();
26495  }
26496 
26498  : Inst_VOP3(iFmt, "v_rsq_f32", false)
26499  {
26500  setFlag(ALU);
26501  setFlag(F32);
26502  } // Inst_VOP3__V_RSQ_F32
26503 
26505  {
26506  } // ~Inst_VOP3__V_RSQ_F32
26507 
26508  // D.f = 1.0 / sqrt(S0.f).
26509  void
26511  {
26512  Wavefront *wf = gpuDynInst->wavefront();
26513  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26514  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26515 
26516  src.readSrc();
26517 
26518  if (instData.ABS & 0x1) {
26519  src.absModifier();
26520  }
26521 
26522  if (extData.NEG & 0x1) {
26523  src.negModifier();
26524  }
26525 
26526  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26527  if (wf->execMask(lane)) {
26528  vdst[lane] = 1.0 / std::sqrt(src[lane]);
26529  }
26530  }
26531 
26532  vdst.write();
26533  }
26534 
26536  : Inst_VOP3(iFmt, "v_rcp_f64", false)
26537  {
26538  setFlag(ALU);
26539  setFlag(F64);
26540  } // Inst_VOP3__V_RCP_F64
26541 
26543  {
26544  } // ~Inst_VOP3__V_RCP_F64
26545 
26546  // D.d = 1.0 / S0.d.
26547  void
26549  {
26550  Wavefront *wf = gpuDynInst->wavefront();
26551  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26552  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26553 
26554  src.readSrc();
26555 
26556  if (instData.ABS & 0x1) {
26557  src.absModifier();
26558  }
26559 
26560  if (extData.NEG & 0x1) {
26561  src.negModifier();
26562  }
26563 
26564  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26565  if (wf->execMask(lane)) {
26566  if (std::fpclassify(src[lane]) == FP_ZERO) {
26567  vdst[lane] = +INFINITY;
26568  } else if (std::isnan(src[lane])) {
26569  vdst[lane] = NAN;
26570  } else if (std::isinf(src[lane])) {
26571  if (std::signbit(src[lane])) {
26572  vdst[lane] = -0.0;
26573  } else {
26574  vdst[lane] = 0.0;
26575  }
26576  } else {
26577  vdst[lane] = 1.0 / src[lane];
26578  }
26579  }
26580  }
26581 
26582  vdst.write();
26583  }
26584 
26586  : Inst_VOP3(iFmt, "v_rsq_f64", false)
26587  {
26588  setFlag(ALU);
26589  setFlag(F64);
26590  } // Inst_VOP3__V_RSQ_F64
26591 
26593  {
26594  } // ~Inst_VOP3__V_RSQ_F64
26595 
26596  // D.d = 1.0 / sqrt(S0.d).
26597  void
26599  {
26600  Wavefront *wf = gpuDynInst->wavefront();
26601  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26602  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26603 
26604  src.readSrc();
26605 
26606  if (instData.ABS & 0x1) {
26607  src.absModifier();
26608  }
26609 
26610  if (extData.NEG & 0x1) {
26611  src.negModifier();
26612  }
26613 
26614  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26615  if (wf->execMask(lane)) {
26616  if (std::fpclassify(src[lane]) == FP_ZERO) {
26617  vdst[lane] = +INFINITY;
26618  } else if (std::isnan(src[lane])) {
26619  vdst[lane] = NAN;
26620  } else if (std::isinf(src[lane]) && !std::signbit(src[lane])) {
26621  vdst[lane] = 0.0;
26622  } else if (std::signbit(src[lane])) {
26623  vdst[lane] = NAN;
26624  } else {
26625  vdst[lane] = 1.0 / std::sqrt(src[lane]);
26626  }
26627  }
26628  }
26629 
26630  vdst.write();
26631  }
26632 
26634  : Inst_VOP3(iFmt, "v_sqrt_f32", false)
26635  {
26636  setFlag(ALU);
26637  setFlag(F32);
26638  } // Inst_VOP3__V_SQRT_F32
26639 
26641  {
26642  } // ~Inst_VOP3__V_SQRT_F32
26643 
26644  // D.f = sqrt(S0.f).
26645  void
26647  {
26648  Wavefront *wf = gpuDynInst->wavefront();
26649  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26650  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26651 
26652  src.readSrc();
26653 
26654  if (instData.ABS & 0x1) {
26655  src.absModifier();
26656  }
26657 
26658  if (extData.NEG & 0x1) {
26659  src.negModifier();
26660  }
26661 
26662  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26663  if (wf->execMask(lane)) {
26664  vdst[lane] = std::sqrt(src[lane]);
26665  }
26666  }
26667 
26668  vdst.write();
26669  }
26670 
26672  : Inst_VOP3(iFmt, "v_sqrt_f64", false)
26673  {
26674  setFlag(ALU);
26675  setFlag(F64);
26676  } // Inst_VOP3__V_SQRT_F64
26677 
26679  {
26680  } // ~Inst_VOP3__V_SQRT_F64
26681 
26682  // D.d = sqrt(S0.d).
26683  void
26685  {
26686  Wavefront *wf = gpuDynInst->wavefront();
26687  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26688  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26689 
26690  src.readSrc();
26691 
26692  if (instData.ABS & 0x1) {
26693  src.absModifier();
26694  }
26695 
26696  if (extData.NEG & 0x1) {
26697  src.negModifier();
26698  }
26699 
26700  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26701  if (wf->execMask(lane)) {
26702  vdst[lane] = std::sqrt(src[lane]);
26703  }
26704  }
26705 
26706  vdst.write();
26707  }
26708 
26710  : Inst_VOP3(iFmt, "v_sin_f32", false)
26711  {
26712  setFlag(ALU);
26713  setFlag(F32);
26714  } // Inst_VOP3__V_SIN_F32
26715 
26717  {
26718  } // ~Inst_VOP3__V_SIN_F32
26719 
26720  // D.f = sin(S0.f * 2 * PI).
26721  void
26723  {
26724  Wavefront *wf = gpuDynInst->wavefront();
26725  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26726  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
26727  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26728 
26729  src.readSrc();
26730  pi.read();
26731 
26732  if (instData.ABS & 0x1) {
26733  src.absModifier();
26734  }
26735 
26736  if (extData.NEG & 0x1) {
26737  src.negModifier();
26738  }
26739 
26740  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26741  if (wf->execMask(lane)) {
26742  vdst[lane] = std::sin(src[lane] * 2 * pi.rawData());
26743  }
26744  }
26745 
26746  vdst.write();
26747  }
26748 
26750  : Inst_VOP3(iFmt, "v_cos_f32", false)
26751  {
26752  setFlag(ALU);
26753  setFlag(F32);
26754  } // Inst_VOP3__V_COS_F32
26755 
26757  {
26758  } // ~Inst_VOP3__V_COS_F32
26759 
26760  // D.f = cos(S0.f * 2 * PI).
26761  void
26763  {
26764  Wavefront *wf = gpuDynInst->wavefront();
26765  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26766  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
26767  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26768 
26769  src.readSrc();
26770  pi.read();
26771 
26772  if (instData.ABS & 0x1) {
26773  src.absModifier();
26774  }
26775 
26776  if (extData.NEG & 0x1) {
26777  src.negModifier();
26778  }
26779 
26780  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26781  if (wf->execMask(lane)) {
26782  vdst[lane] = std::cos(src[lane] * 2 * pi.rawData());
26783  }
26784  }
26785 
26786  vdst.write();
26787  }
26788 
26790  : Inst_VOP3(iFmt, "v_not_b32", false)
26791  {
26792  setFlag(ALU);
26793  } // Inst_VOP3__V_NOT_B32
26794 
26796  {
26797  } // ~Inst_VOP3__V_NOT_B32
26798 
26799  // D.u = ~S0.u.
26800  // Input and output modifiers not supported.
26801  void
26803  {
26804  Wavefront *wf = gpuDynInst->wavefront();
26805  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
26806  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26807 
26808  src.readSrc();
26809 
26810  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26811  if (wf->execMask(lane)) {
26812  vdst[lane] = ~src[lane];
26813  }
26814  }
26815 
26816  vdst.write();
26817  }
26818 
26820  : Inst_VOP3(iFmt, "v_bfrev_b32", false)
26821  {
26822  setFlag(ALU);
26823  } // Inst_VOP3__V_BFREV_B32
26824 
26826  {
26827  } // ~Inst_VOP3__V_BFREV_B32
26828 
26829  // D.u[31:0] = S0.u[0:31], bitfield reverse.
26830  // Input and output modifiers not supported.
26831  void
26833  {
26834  Wavefront *wf = gpuDynInst->wavefront();
26835  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
26836  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26837 
26838  src.readSrc();
26839 
26840  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26841  if (wf->execMask(lane)) {
26842  vdst[lane] = reverseBits(src[lane]);
26843  }
26844  }
26845 
26846  vdst.write();
26847  }
26848 
26850  : Inst_VOP3(iFmt, "v_ffbh_u32", false)
26851  {
26852  setFlag(ALU);
26853  } // Inst_VOP3__V_FFBH_U32
26854 
26856  {
26857  } // ~Inst_VOP3__V_FFBH_U32
26858 
26859  // D.u = position of first 1 in S0.u from MSB;
26860  // D.u = 0xffffffff if S0.u == 0.
26861  void
26863  {
26864  Wavefront *wf = gpuDynInst->wavefront();
26865  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
26866  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26867 
26868  src.readSrc();
26869 
26870  if (instData.ABS & 0x1) {
26871  src.absModifier();
26872  }
26873 
26874  if (extData.NEG & 0x1) {
26875  src.negModifier();
26876  }
26877 
26878  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26879  if (wf->execMask(lane)) {
26880  vdst[lane] = findFirstOneMsb(src[lane]);
26881  }
26882  }
26883 
26884  vdst.write();
26885  }
26886 
26888  : Inst_VOP3(iFmt, "v_ffbl_b32", false)
26889  {
26890  setFlag(ALU);
26891  } // Inst_VOP3__V_FFBL_B32
26892 
26894  {
26895  } // ~Inst_VOP3__V_FFBL_B32
26896 
26897  // D.u = position of first 1 in S0.u from LSB;
26898  // D.u = 0xffffffff if S0.u == 0.
26899  void
26901  {
26902  Wavefront *wf = gpuDynInst->wavefront();
26903  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
26904  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26905 
26906  src.readSrc();
26907 
26908  if (instData.ABS & 0x1) {
26909  src.absModifier();
26910  }
26911 
26912  if (extData.NEG & 0x1) {
26913  src.negModifier();
26914  }
26915 
26916  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26917  if (wf->execMask(lane)) {
26918  vdst[lane] = findFirstOne(src[lane]);
26919  }
26920  }
26921 
26922  vdst.write();
26923  }
26924 
26926  : Inst_VOP3(iFmt, "v_ffbh_i32", false)
26927  {
26928  setFlag(ALU);
26929  } // Inst_VOP3__V_FFBH_I32
26930 
26932  {
26933  } // ~Inst_VOP3__V_FFBH_I32
26934 
26935  // D.u = position of first bit different from sign bit in S0.i from MSB;
26936  // D.u = 0xffffffff if S0.i == 0 or S0.i == 0xffffffff.
26937  void
26939  {
26940  Wavefront *wf = gpuDynInst->wavefront();
26941  ConstVecOperandI32 src(gpuDynInst, extData.SRC0);
26942  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26943 
26944  src.readSrc();
26945 
26946  if (instData.ABS & 0x1) {
26947  src.absModifier();
26948  }
26949 
26950  if (extData.NEG & 0x1) {
26951  src.negModifier();
26952  }
26953 
26954  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26955  if (wf->execMask(lane)) {
26956  vdst[lane] = firstOppositeSignBit(src[lane]);
26957  }
26958  }
26959 
26960  vdst.write();
26961  }
26962 
26964  InFmt_VOP3 *iFmt)
26965  : Inst_VOP3(iFmt, "v_frexp_exp_i32_f64", false)
26966  {
26967  setFlag(ALU);
26968  setFlag(F64);
26969  } // Inst_VOP3__V_FREXP_EXP_I32_F64
26970 
26972  {
26973  } // ~Inst_VOP3__V_FREXP_EXP_I32_F64
26974 
26975  // See V_FREXP_EXP_I32_F32.
26976  void
26978  {
26979  Wavefront *wf = gpuDynInst->wavefront();
26980  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26981  VecOperandI32 vdst(gpuDynInst, instData.VDST);
26982 
26983  src.readSrc();
26984 
26985  if (instData.ABS & 0x1) {
26986  src.absModifier();
26987  }
26988 
26989  if (extData.NEG & 0x1) {
26990  src.negModifier();
26991  }
26992 
26993  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26994  if (wf->execMask(lane)) {
26995  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
26996  vdst[lane] = 0;
26997  } else {
26998  VecElemI32 exp(0);
26999  std::frexp(src[lane], &exp);
27000  vdst[lane] = exp;
27001  }
27002  }
27003  }
27004 
27005  vdst.write();
27006  }
27007 
27009  : Inst_VOP3(iFmt, "v_frexp_mant_f64", false)
27010  {
27011  setFlag(ALU);
27012  setFlag(F64);
27013  } // Inst_VOP3__V_FREXP_MANT_F64
27014 
27016  {
27017  } // ~Inst_VOP3__V_FREXP_MANT_F64
27018 
27019  void
27021  {
27022  Wavefront *wf = gpuDynInst->wavefront();
27023  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
27024  VecOperandF64 vdst(gpuDynInst, instData.VDST);
27025 
27026  src.readSrc();
27027 
27028  if (instData.ABS & 0x1) {
27029  src.absModifier();
27030  }
27031 
27032  if (extData.NEG & 0x1) {
27033  src.negModifier();
27034  }
27035 
27036  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27037  if (wf->execMask(lane)) {
27038  VecElemI32 exp(0);
27039  vdst[lane] = std::frexp(src[lane], &exp);
27040  }
27041  }
27042 
27043  vdst.write();
27044  }
27045 
27047  : Inst_VOP3(iFmt, "v_fract_f64", false)
27048  {
27049  setFlag(ALU);
27050  setFlag(F64);
27051  } // Inst_VOP3__V_FRACT_F64
27052 
27054  {
27055  } // ~Inst_VOP3__V_FRACT_F64
27056 
27057  void
27059  {
27060  Wavefront *wf = gpuDynInst->wavefront();
27061  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
27062  VecOperandF64 vdst(gpuDynInst, instData.VDST);
27063 
27064  src.readSrc();
27065 
27066  if (instData.ABS & 0x1) {
27067  src.absModifier();
27068  }
27069 
27070  if (extData.NEG & 0x1) {
27071  src.negModifier();
27072  }
27073 
27074  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27075  if (wf->execMask(lane)) {
27076  VecElemF32 int_part(0.0);
27077  vdst[lane] = std::modf(src[lane], &int_part);
27078  }
27079  }
27080 
27081  vdst.write();
27082  }
27083 
27085  InFmt_VOP3 *iFmt)
27086  : Inst_VOP3(iFmt, "v_frexp_exp_i32_f32", false)
27087  {
27088  setFlag(ALU);
27089  setFlag(F32);
27090  } // Inst_VOP3__V_FREXP_EXP_I32_F32
27091 
27093  {
27094  } // ~Inst_VOP3__V_FREXP_EXP_I32_F32
27095 
27096  // frexp(S0.f, Exponenti(S0.f))
27097  // if (S0.f == INF || S0.f == NAN) then D.i = 0;
27098  // else D.i = Exponent(S0.f)
27099  void
27101  {
27102  Wavefront *wf = gpuDynInst->wavefront();
27103  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27104  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27105 
27106  src.readSrc();
27107 
27108  if (instData.ABS & 0x1) {
27109  src.absModifier();
27110  }
27111 
27112  if (extData.NEG & 0x1) {
27113  src.negModifier();
27114  }
27115 
27116  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27117  if (wf->execMask(lane)) {
27118  if (std::isinf(src[lane])|| std::isnan(src[lane])) {
27119  vdst[lane] = 0;
27120  } else {
27121  VecElemI32 exp(0);
27122  std::frexp(src[lane], &exp);
27123  vdst[lane] = exp;
27124  }
27125  }
27126  }
27127 
27128  vdst.write();
27129  }
27130 
27132  : Inst_VOP3(iFmt, "v_frexp_mant_f32", false)
27133  {
27134  setFlag(ALU);
27135  setFlag(F32);
27136  } // Inst_VOP3__V_FREXP_MANT_F32
27137 
27139  {
27140  } // ~Inst_VOP3__V_FREXP_MANT_F32
27141 
27142  // if (S0.f == INF || S0.f == NAN) then D.f = S0.f;
27143  // else D.f = Mantissa(S0.f).
27144  void
27146  {
27147  Wavefront *wf = gpuDynInst->wavefront();
27148  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27149  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27150 
27151  src.readSrc();
27152 
27153  if (instData.ABS & 0x1) {
27154  src.absModifier();
27155  }
27156 
27157  if (extData.NEG & 0x1) {
27158  src.negModifier();
27159  }
27160 
27161  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27162  if (wf->execMask(lane)) {
27163  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
27164  vdst[lane] = src[lane];
27165  } else {
27166  VecElemI32 exp(0);
27167  vdst[lane] = std::frexp(src[lane], &exp);
27168  }
27169  }
27170  }
27171 
27172  vdst.write();
27173  }
27174 
27176  : Inst_VOP3(iFmt, "v_clrexcp", false)
27177  {
27178  } // Inst_VOP3__V_CLREXCP
27179 
27181  {
27182  } // ~Inst_VOP3__V_CLREXCP
27183 
27184  void
27186  {
27188  }
27189 
27191  : Inst_VOP3(iFmt, "v_cvt_f16_u16", false)
27192  {
27193  setFlag(ALU);
27194  setFlag(F16);
27195  } // Inst_VOP3__V_CVT_F16_U16
27196 
27198  {
27199  } // ~Inst_VOP3__V_CVT_F16_U16
27200 
27201  // D.f16 = uint16_to_flt16(S.u16).
27202  void
27204  {
27206  }
27207 
27209  : Inst_VOP3(iFmt, "v_cvt_f16_i16", false)
27210  {
27211  setFlag(ALU);
27212  setFlag(F16);
27213  } // Inst_VOP3__V_CVT_F16_I16
27214 
27216  {
27217  } // ~Inst_VOP3__V_CVT_F16_I16
27218 
27219  // D.f16 = int16_to_flt16(S.i16).
27220  void
27222  {
27224  }
27225 
27227  : Inst_VOP3(iFmt, "v_cvt_u16_f16", false)
27228  {
27229  setFlag(ALU);
27230  setFlag(F16);
27231  } // Inst_VOP3__V_CVT_U16_F16
27232 
27234  {
27235  } // ~Inst_VOP3__V_CVT_U16_F16
27236 
27237  // D.u16 = flt16_to_uint16(S.f16).
27238  void
27240  {
27242  }
27243 
27245  : Inst_VOP3(iFmt, "v_cvt_i16_f16", false)
27246  {
27247  setFlag(ALU);
27248  setFlag(F16);
27249  } // Inst_VOP3__V_CVT_I16_F16
27250 
27252  {
27253  } // ~Inst_VOP3__V_CVT_I16_F16
27254 
27255  // D.i16 = flt16_to_int16(S.f16).
27256  void
27258  {
27260  }
27261 
27263  : Inst_VOP3(iFmt, "v_rcp_f16", false)
27264  {
27265  setFlag(ALU);
27266  setFlag(F16);
27267  } // Inst_VOP3__V_RCP_F16
27268 
27270  {
27271  } // ~Inst_VOP3__V_RCP_F16
27272 
27273  // if (S0.f16 == 1.0f)
27274  // D.f16 = 1.0f;
27275  // else
27276  // D.f16 = 1 / S0.f16.
27277  void
27279  {
27281  }
27282 
27284  : Inst_VOP3(iFmt, "v_sqrt_f16", false)
27285  {
27286  setFlag(ALU);
27287  setFlag(F16);
27288  } // Inst_VOP3__V_SQRT_F16
27289 
27291  {
27292  } // ~Inst_VOP3__V_SQRT_F16
27293 
27294  // if (S0.f16 == 1.0f)
27295  // D.f16 = 1.0f;
27296  // else
27297  // D.f16 = sqrt(S0.f16).
27298  void
27300  {
27302  }
27303 
27305  : Inst_VOP3(iFmt, "v_rsq_f16", false)
27306  {
27307  setFlag(ALU);
27308  setFlag(F16);
27309  } // Inst_VOP3__V_RSQ_F16
27310 
27312  {
27313  } // ~Inst_VOP3__V_RSQ_F16
27314 
27315  // if (S0.f16 == 1.0f)
27316  // D.f16 = 1.0f;
27317  // else
27318  // D.f16 = 1 / sqrt(S0.f16).
27319  void
27321  {
27323  }
27324 
27326  : Inst_VOP3(iFmt, "v_log_f16", false)
27327  {
27328  setFlag(ALU);
27329  setFlag(F16);
27330  } // Inst_VOP3__V_LOG_F16
27331 
27333  {
27334  } // ~Inst_VOP3__V_LOG_F16
27335 
27336  // if (S0.f16 == 1.0f)
27337  // D.f16 = 0.0f;
27338  // else
27339  // D.f16 = log2(S0.f16).
27340  void
27342  {
27344  }
27345 
27347  : Inst_VOP3(iFmt, "v_exp_f16", false)
27348  {
27349  setFlag(ALU);
27350  setFlag(F16);
27351  } // Inst_VOP3__V_EXP_F16
27352 
27354  {
27355  } // ~Inst_VOP3__V_EXP_F16
27356 
27357  // if (S0.f16 == 0.0f)
27358  // D.f16 = 1.0f;
27359  // else
27360  // D.f16 = pow(2.0, S0.f16).
27361  void
27363  {
27365  }
27366 
27368  : Inst_VOP3(iFmt, "v_frexp_mant_f16", false)
27369  {
27370  setFlag(ALU);
27371  setFlag(F16);
27372  } // Inst_VOP3__V_FREXP_MANT_F16
27373 
27375  {
27376  } // ~Inst_VOP3__V_FREXP_MANT_F16
27377 
27378  // if (S0.f16 == +-INF || S0.f16 == NAN)
27379  // D.f16 = S0.f16;
27380  // else
27381  // D.f16 = mantissa(S0.f16).
27382  void
27384  {
27386  }
27387 
27389  InFmt_VOP3 *iFmt)
27390  : Inst_VOP3(iFmt, "v_frexp_exp_i16_f16", false)
27391  {
27392  setFlag(ALU);
27393  setFlag(F16);
27394  } // Inst_VOP3__V_FREXP_EXP_I16_F16
27395 
27397  {
27398  } // ~Inst_VOP3__V_FREXP_EXP_I16_F16
27399 
27400  void
27402  {
27404  }
27405 
27407  : Inst_VOP3(iFmt, "v_floor_f16", false)
27408  {
27409  setFlag(ALU);
27410  setFlag(F16);
27411  } // Inst_VOP3__V_FLOOR_F16
27412 
27414  {
27415  } // ~Inst_VOP3__V_FLOOR_F16
27416 
27417  // D.f16 = floor(S0.f16);
27418  void
27420  {
27422  }
27423 
27425  : Inst_VOP3(iFmt, "v_ceil_f16", false)
27426  {
27427  setFlag(ALU);
27428  setFlag(F16);
27429  } // Inst_VOP3__V_CEIL_F16
27430 
27432  {
27433  } // ~Inst_VOP3__V_CEIL_F16
27434 
27435  // D.f16 = ceil(S0.f16);
27436  void
27438  {
27440  }
27441 
27443  : Inst_VOP3(iFmt, "v_trunc_f16", false)
27444  {
27445  setFlag(ALU);
27446  setFlag(F16);
27447  } // Inst_VOP3__V_TRUNC_F16
27448 
27450  {
27451  } // ~Inst_VOP3__V_TRUNC_F16
27452 
27453  // D.f16 = trunc(S0.f16).
27454  void
27456  {
27458  }
27459 
27461  : Inst_VOP3(iFmt, "v_rndne_f16", false)
27462  {
27463  setFlag(ALU);
27464  setFlag(F16);
27465  } // Inst_VOP3__V_RNDNE_F16
27466 
27468  {
27469  } // ~Inst_VOP3__V_RNDNE_F16
27470 
27471  // D.f16 = roundNearestEven(S0.f16);
27472  void
27474  {
27476  }
27477 
27479  : Inst_VOP3(iFmt, "v_fract_f16", false)
27480  {
27481  setFlag(ALU);
27482  setFlag(F16);
27483  } // Inst_VOP3__V_FRACT_F16
27484 
27486  {
27487  } // ~Inst_VOP3__V_FRACT_F16
27488 
27489  // D.f16 = S0.f16 + -floor(S0.f16).
27490  void
27492  {
27494  }
27495 
27497  : Inst_VOP3(iFmt, "v_sin_f16", false)
27498  {
27499  setFlag(ALU);
27500  setFlag(F16);
27501  } // Inst_VOP3__V_SIN_F16
27502 
27504  {
27505  } // ~Inst_VOP3__V_SIN_F16
27506 
27507  // D.f16 = sin(S0.f16 * 2 * PI).
27508  void
27510  {
27512  }
27513 
27515  : Inst_VOP3(iFmt, "v_cos_f16", false)
27516  {
27517  setFlag(ALU);
27518  setFlag(F16);
27519  } // Inst_VOP3__V_COS_F16
27520 
27522  {
27523  } // ~Inst_VOP3__V_COS_F16
27524 
27525  // D.f16 = cos(S0.f16 * 2 * PI).
27526  void
27528  {
27530  }
27531 
27533  : Inst_VOP3(iFmt, "v_exp_legacy_f32", false)
27534  {
27535  setFlag(ALU);
27536  setFlag(F32);
27537  } // Inst_VOP3__V_EXP_LEGACY_F32
27538 
27540  {
27541  } // ~Inst_VOP3__V_EXP_LEGACY_F32
27542 
27543  // D.f = pow(2.0, S0.f)
27544  void
27546  {
27547  Wavefront *wf = gpuDynInst->wavefront();
27548  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27549  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27550 
27551  src.readSrc();
27552 
27553  if (instData.ABS & 0x1) {
27554  src.absModifier();
27555  }
27556 
27557  if (extData.NEG & 0x1) {
27558  src.negModifier();
27559  }
27560 
27564  assert(!(instData.ABS & 0x2));
27565  assert(!(instData.ABS & 0x4));
27566  assert(!(extData.NEG & 0x2));
27567  assert(!(extData.NEG & 0x4));
27568 
27569  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27570  if (wf->execMask(lane)) {
27571  vdst[lane] = std::pow(2.0, src[lane]);
27572  }
27573  }
27574 
27575  vdst.write();
27576  }
27577 
27579  : Inst_VOP3(iFmt, "v_log_legacy_f32", false)
27580  {
27581  setFlag(ALU);
27582  setFlag(F32);
27583  } // Inst_VOP3__V_LOG_LEGACY_F32
27584 
27586  {
27587  } // ~Inst_VOP3__V_LOG_LEGACY_F32
27588 
27589  // D.f = log2(S0.f).
27590  void
27592  {
27593  Wavefront *wf = gpuDynInst->wavefront();
27594  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27595  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27596 
27597  src.readSrc();
27598 
27599  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27600  if (wf->execMask(lane)) {
27601  vdst[lane] = std::log2(src[lane]);
27602  }
27603  }
27604 
27605  vdst.write();
27606  }
27607 
27609  : Inst_VOP3(iFmt, "v_mad_legacy_f32", false)
27610  {
27611  setFlag(ALU);
27612  setFlag(F32);
27613  setFlag(MAD);
27614  } // Inst_VOP3__V_MAD_LEGACY_F32
27615 
27617  {
27618  } // ~Inst_VOP3__V_MAD_LEGACY_F32
27619 
27620  // D.f = S0.f * S1.f + S2.f
27621  void
27623  {
27624  Wavefront *wf = gpuDynInst->wavefront();
27625  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
27626  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
27627  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
27628  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27629 
27630  src0.readSrc();
27631  src1.readSrc();
27632  src2.readSrc();
27633 
27634  if (instData.ABS & 0x1) {
27635  src0.absModifier();
27636  }
27637 
27638  if (instData.ABS & 0x2) {
27639  src1.absModifier();
27640  }
27641 
27642  if (instData.ABS & 0x4) {
27643  src2.absModifier();
27644  }
27645 
27646  if (extData.NEG & 0x1) {
27647  src0.negModifier();
27648  }
27649 
27650  if (extData.NEG & 0x2) {
27651  src1.negModifier();
27652  }
27653 
27654  if (extData.NEG & 0x4) {
27655  src2.negModifier();
27656  }
27657 
27658  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27659  if (wf->execMask(lane)) {
27660  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
27661  }
27662  }
27663 
27664  vdst.write();
27665  }
27666 
27668  : Inst_VOP3(iFmt, "v_mad_f32", false)
27669  {
27670  setFlag(ALU);
27671  setFlag(F32);
27672  setFlag(MAD);
27673  } // Inst_VOP3__V_MAD_F32
27674 
27676  {
27677  } // ~Inst_VOP3__V_MAD_F32
27678 
27679  // D.f = S0.f * S1.f + S2.f.
27680  void
27682  {
27683  Wavefront *wf = gpuDynInst->wavefront();
27684  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
27685  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
27686  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
27687  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27688 
27689  src0.readSrc();
27690  src1.readSrc();
27691  src2.readSrc();
27692 
27693  if (instData.ABS & 0x1) {
27694  src0.absModifier();
27695  }
27696 
27697  if (instData.ABS & 0x2) {
27698  src1.absModifier();
27699  }
27700 
27701  if (instData.ABS & 0x4) {
27702  src2.absModifier();
27703  }
27704 
27705  if (extData.NEG & 0x1) {
27706  src0.negModifier();
27707  }
27708 
27709  if (extData.NEG & 0x2) {
27710  src1.negModifier();
27711  }
27712 
27713  if (extData.NEG & 0x4) {
27714  src2.negModifier();
27715  }
27716 
27717  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27718  if (wf->execMask(lane)) {
27719  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
27720  }
27721  }
27722 
27723  vdst.write();
27724  }
27725 
27727  : Inst_VOP3(iFmt, "v_mad_i32_i24", false)
27728  {
27729  setFlag(ALU);
27730  setFlag(MAD);
27731  } // Inst_VOP3__V_MAD_I32_I24
27732 
27734  {
27735  } // ~Inst_VOP3__V_MAD_I32_I24
27736 
27737  // D.i = S0.i[23:0] * S1.i[23:0] + S2.i.
27738  void
27740  {
27741  Wavefront *wf = gpuDynInst->wavefront();
27742  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
27743  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
27744  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
27745  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27746 
27747  src0.readSrc();
27748  src1.readSrc();
27749  src2.readSrc();
27750 
27754  assert(!(instData.ABS & 0x1));
27755  assert(!(instData.ABS & 0x2));
27756  assert(!(instData.ABS & 0x4));
27757  assert(!(extData.NEG & 0x1));
27758  assert(!(extData.NEG & 0x2));
27759  assert(!(extData.NEG & 0x4));
27760 
27761  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27762  if (wf->execMask(lane)) {
27763  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
27764  * sext<24>(bits(src1[lane], 23, 0)) + src2[lane];
27765  }
27766  }
27767 
27768  vdst.write();
27769  }
27770 
27772  : Inst_VOP3(iFmt, "v_mad_u32_u24", false)
27773  {
27774  setFlag(ALU);
27775  setFlag(MAD);
27776  } // Inst_VOP3__V_MAD_U32_U24
27777 
27779  {
27780  } // ~Inst_VOP3__V_MAD_U32_U24
27781 
27782  // D.u = S0.u[23:0] * S1.u[23:0] + S2.u.
27783  void
27785  {
27786  Wavefront *wf = gpuDynInst->wavefront();
27787  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
27788  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27789  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
27790  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27791 
27792  src0.readSrc();
27793  src1.readSrc();
27794  src2.readSrc();
27795 
27799  assert(!(instData.ABS & 0x1));
27800  assert(!(instData.ABS & 0x2));
27801  assert(!(instData.ABS & 0x4));
27802  assert(!(extData.NEG & 0x1));
27803  assert(!(extData.NEG & 0x2));
27804  assert(!(extData.NEG & 0x4));
27805 
27806  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27807  if (wf->execMask(lane)) {
27808  vdst[lane] = bits(src0[lane], 23, 0) * bits(src1[lane], 23, 0)
27809  + src2[lane];
27810  }
27811  }
27812 
27813  vdst.write();
27814  }
27815 
27817  : Inst_VOP3(iFmt, "v_cubeid_f32", false)
27818  {
27819  setFlag(ALU);
27820  setFlag(F32);
27821  } // Inst_VOP3__V_CUBEID_F32
27822 
27824  {
27825  } // ~Inst_VOP3__V_CUBEID_F32
27826 
27827  void
27829  {
27831  }
27832 
27834  : Inst_VOP3(iFmt, "v_cubesc_f32", false)
27835  {
27836  setFlag(ALU);
27837  setFlag(F32);
27838  } // Inst_VOP3__V_CUBESC_F32
27839 
27841  {
27842  } // ~Inst_VOP3__V_CUBESC_F32
27843 
27844  void
27846  {
27848  }
27849 
27851  : Inst_VOP3(iFmt, "v_cubetc_f32", false)
27852  {
27853  setFlag(ALU);
27854  setFlag(F32);
27855  } // Inst_VOP3__V_CUBETC_F32
27856 
27858  {
27859  } // ~Inst_VOP3__V_CUBETC_F32
27860 
27861  void
27863  {
27865  }
27866 
27868  : Inst_VOP3(iFmt, "v_cubema_f32", false)
27869  {
27870  setFlag(ALU);
27871  setFlag(F32);
27872  } // Inst_VOP3__V_CUBEMA_F32
27873 
27875  {
27876  } // ~Inst_VOP3__V_CUBEMA_F32
27877 
27878  void
27880  {
27882  }
27883 
27885  : Inst_VOP3(iFmt, "v_bfe_u32", false)
27886  {
27887  setFlag(ALU);
27888  } // Inst_VOP3__V_BFE_U32
27889 
27891  {
27892  } // ~Inst_VOP3__V_BFE_U32
27893 
27894  // D.u = (S0.u >> S1.u[4:0]) & ((1 << S2.u[4:0]) - 1).
27895  // Bitfield extract with S0 = data, S1 = field_offset, S2 = field_width.
27896  void
27898  {
27899  Wavefront *wf = gpuDynInst->wavefront();
27900  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
27901  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27902  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
27903  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27904 
27905  src0.readSrc();
27906  src1.readSrc();
27907  src2.readSrc();
27908 
27912  assert(!(instData.ABS & 0x1));
27913  assert(!(instData.ABS & 0x2));
27914  assert(!(instData.ABS & 0x4));
27915  assert(!(extData.NEG & 0x1));
27916  assert(!(extData.NEG & 0x2));
27917  assert(!(extData.NEG & 0x4));
27918 
27919  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27920  if (wf->execMask(lane)) {
27921  vdst[lane] = (src0[lane] >> bits(src1[lane], 4, 0))
27922  & ((1 << bits(src2[lane], 4, 0)) - 1);
27923  }
27924  }
27925 
27926  vdst.write();
27927  }
27928 
27930  : Inst_VOP3(iFmt, "v_bfe_i32", false)
27931  {
27932  setFlag(ALU);
27933  } // Inst_VOP3__V_BFE_I32
27934 
27936  {
27937  } // ~Inst_VOP3__V_BFE_I32
27938 
27939  // D.i = (S0.i >> S1.u[4:0]) & ((1 << S2.u[4:0]) - 1).
27940  // Bitfield extract with S0 = data, S1 = field_offset, S2 = field_width.
27941  void
27943  {
27944  Wavefront *wf = gpuDynInst->wavefront();
27945  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
27946  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27947  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
27948  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27949 
27950  src0.readSrc();
27951  src1.readSrc();
27952  src2.readSrc();
27953 
27957  assert(!(instData.ABS & 0x1));
27958  assert(!(instData.ABS & 0x2));
27959  assert(!(instData.ABS & 0x4));
27960  assert(!(extData.NEG & 0x1));
27961  assert(!(extData.NEG & 0x2));
27962  assert(!(extData.NEG & 0x4));
27963 
27964  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27965  if (wf->execMask(lane)) {
27966  vdst[lane] = (src0[lane] >> bits(src1[lane], 4, 0))
27967  & ((1 << bits(src2[lane], 4, 0)) - 1);
27968  }
27969  }
27970 
27971  vdst.write();
27972  }
27973 
27975  : Inst_VOP3(iFmt, "v_bfi_b32", false)
27976  {
27977  setFlag(ALU);
27978  } // Inst_VOP3__V_BFI_B32
27979 
27981  {
27982  } // ~Inst_VOP3__V_BFI_B32
27983 
27984  // D.u = (S0.u & S1.u) | (~S0.u & S2.u); bitfield insert.
27985  void
27987  {
27988  Wavefront *wf = gpuDynInst->wavefront();
27989  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
27990  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27991  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
27992  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27993 
27994  src0.readSrc();
27995  src1.readSrc();
27996  src2.readSrc();
27997 
28001  assert(!(instData.ABS & 0x1));
28002  assert(!(instData.ABS & 0x2));
28003  assert(!(instData.ABS & 0x4));
28004  assert(!(extData.NEG & 0x1));
28005  assert(!(extData.NEG & 0x2));
28006  assert(!(extData.NEG & 0x4));
28007 
28008  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28009  if (wf->execMask(lane)) {
28010  vdst[lane] = (src0[lane] & src1[lane]) | (~src0[lane]
28011  & src2[lane]);
28012  }
28013  }
28014 
28015  vdst.write();
28016  }
28017 
28019  : Inst_VOP3(iFmt, "v_fma_f32", false)
28020  {
28021  setFlag(ALU);
28022  setFlag(F32);
28023  setFlag(FMA);
28024  } // Inst_VOP3__V_FMA_F32
28025 
28027  {
28028  } // ~Inst_VOP3__V_FMA_F32
28029 
28030  // D.f = S0.f * S1.f + S2.f.
28031  void
28033  {
28034  Wavefront *wf = gpuDynInst->wavefront();
28035  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28036  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28037  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28038  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28039 
28040  src0.readSrc();
28041  src1.readSrc();
28042  src2.readSrc();
28043 
28044  if (instData.ABS & 0x1) {
28045  src0.absModifier();
28046  }
28047 
28048  if (instData.ABS & 0x2) {
28049  src1.absModifier();
28050  }
28051 
28052  if (instData.ABS & 0x4) {
28053  src2.absModifier();
28054  }
28055 
28056  if (extData.NEG & 0x1) {
28057  src0.negModifier();
28058  }
28059 
28060  if (extData.NEG & 0x2) {
28061  src1.negModifier();
28062  }
28063 
28064  if (extData.NEG & 0x4) {
28065  src2.negModifier();
28066  }
28067 
28068  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28069  if (wf->execMask(lane)) {
28070  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
28071  }
28072  }
28073 
28074  vdst.write();
28075  }
28076 
28078  : Inst_VOP3(iFmt, "v_fma_f64", false)
28079  {
28080  setFlag(ALU);
28081  setFlag(F64);
28082  setFlag(FMA);
28083  } // Inst_VOP3__V_FMA_F64
28084 
28086  {
28087  } // ~Inst_VOP3__V_FMA_F64
28088 
28089  // D.d = S0.d * S1.d + S2.d.
28090  void
28092  {
28093  Wavefront *wf = gpuDynInst->wavefront();
28094  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
28095  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
28096  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
28097  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28098 
28099  src0.readSrc();
28100  src1.readSrc();
28101  src2.readSrc();
28102 
28103  if (instData.ABS & 0x1) {
28104  src0.absModifier();
28105  }
28106 
28107  if (instData.ABS & 0x2) {
28108  src1.absModifier();
28109  }
28110 
28111  if (instData.ABS & 0x4) {
28112  src2.absModifier();
28113  }
28114 
28115  if (extData.NEG & 0x1) {
28116  src0.negModifier();
28117  }
28118 
28119  if (extData.NEG & 0x2) {
28120  src1.negModifier();
28121  }
28122 
28123  if (extData.NEG & 0x4) {
28124  src2.negModifier();
28125  }
28126 
28127  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28128  if (wf->execMask(lane)) {
28129  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
28130  }
28131  }
28132 
28133  vdst.write();
28134  }
28135 
28137  : Inst_VOP3(iFmt, "v_lerp_u8", false)
28138  {
28139  setFlag(ALU);
28140  } // Inst_VOP3__V_LERP_U8
28141 
28143  {
28144  } // ~Inst_VOP3__V_LERP_U8
28145 
28146  // D.u = ((S0.u[31:24] + S1.u[31:24] + S2.u[24]) >> 1) << 24
28147  // D.u += ((S0.u[23:16] + S1.u[23:16] + S2.u[16]) >> 1) << 16;
28148  // D.u += ((S0.u[15:8] + S1.u[15:8] + S2.u[8]) >> 1) << 8;
28149  // D.u += ((S0.u[7:0] + S1.u[7:0] + S2.u[0]) >> 1).
28150  void
28152  {
28153  Wavefront *wf = gpuDynInst->wavefront();
28154  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28155  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28156  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28157  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28158 
28159  src0.readSrc();
28160  src1.readSrc();
28161  src2.readSrc();
28162 
28166  assert(!(instData.ABS & 0x1));
28167  assert(!(instData.ABS & 0x2));
28168  assert(!(instData.ABS & 0x4));
28169  assert(!(extData.NEG & 0x1));
28170  assert(!(extData.NEG & 0x2));
28171  assert(!(extData.NEG & 0x4));
28172 
28173  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28174  if (wf->execMask(lane)) {
28175  vdst[lane] = ((bits(src0[lane], 31, 24)
28176  + bits(src1[lane], 31, 24) + bits(src2[lane], 24)) >> 1)
28177  << 24;
28178  vdst[lane] += ((bits(src0[lane], 23, 16)
28179  + bits(src1[lane], 23, 16) + bits(src2[lane], 16)) >> 1)
28180  << 16;
28181  vdst[lane] += ((bits(src0[lane], 15, 8)
28182  + bits(src1[lane], 15, 8) + bits(src2[lane], 8)) >> 1)
28183  << 8;
28184  vdst[lane] += ((bits(src0[lane], 7, 0) + bits(src1[lane], 7, 0)
28185  + bits(src2[lane], 0)) >> 1);
28186  }
28187  }
28188 
28189  vdst.write();
28190  }
28191 
28193  : Inst_VOP3(iFmt, "v_alignbit_b32", false)
28194  {
28195  setFlag(ALU);
28196  } // Inst_VOP3__V_ALIGNBIT_B32
28197 
28199  {
28200  } // ~Inst_VOP3__V_ALIGNBIT_B32
28201 
28202  // D.u = ({S0, S1} >> S2.u[4:0]) & 0xffffffff.
28203  void
28205  {
28206  Wavefront *wf = gpuDynInst->wavefront();
28207  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28208  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28209  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28210  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28211 
28212  src0.readSrc();
28213  src1.readSrc();
28214  src2.readSrc();
28215 
28219  assert(!(instData.ABS & 0x1));
28220  assert(!(instData.ABS & 0x2));
28221  assert(!(instData.ABS & 0x4));
28222  assert(!(extData.NEG & 0x1));
28223  assert(!(extData.NEG & 0x2));
28224  assert(!(extData.NEG & 0x4));
28225 
28226  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28227  if (wf->execMask(lane)) {
28228  VecElemU64 src_0_1 = (((VecElemU64)src0[lane] << 32)
28229  | (VecElemU64)src1[lane]);
28230  vdst[lane] = (VecElemU32)((src_0_1
28231  >> (VecElemU64)bits(src2[lane], 4, 0)) & 0xffffffff);
28232  }
28233  }
28234 
28235  vdst.write();
28236  }
28237 
28239  : Inst_VOP3(iFmt, "v_alignbyte_b32", false)
28240  {
28241  setFlag(ALU);
28242  } // Inst_VOP3__V_ALIGNBYTE_B32
28243 
28245  {
28246  } // ~Inst_VOP3__V_ALIGNBYTE_B32
28247 
28248  // D.u = ({S0, S1} >> (8 * S2.u[4:0])) & 0xffffffff.
28249  void
28251  {
28252  Wavefront *wf = gpuDynInst->wavefront();
28253  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28254  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28255  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28256  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28257 
28258  src0.readSrc();
28259  src1.readSrc();
28260  src2.readSrc();
28261 
28265  assert(!(instData.ABS & 0x1));
28266  assert(!(instData.ABS & 0x2));
28267  assert(!(instData.ABS & 0x4));
28268  assert(!(extData.NEG & 0x1));
28269  assert(!(extData.NEG & 0x2));
28270  assert(!(extData.NEG & 0x4));
28271 
28272  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28273  if (wf->execMask(lane)) {
28274  VecElemU64 src_0_1 = (((VecElemU64)src0[lane] << 32)
28275  | (VecElemU64)src1[lane]);
28276  vdst[lane] = (VecElemU32)((src_0_1
28277  >> (8ULL * (VecElemU64)bits(src2[lane], 4, 0)))
28278  & 0xffffffff);
28279  }
28280  }
28281 
28282  vdst.write();
28283  }
28284 
28286  : Inst_VOP3(iFmt, "v_min3_f32", false)
28287  {
28288  setFlag(ALU);
28289  setFlag(F32);
28290  } // Inst_VOP3__V_MIN3_F32
28291 
28293  {
28294  } // ~Inst_VOP3__V_MIN3_F32
28295 
28296  // D.f = min(S0.f, S1.f, S2.f).
28297  void
28299  {
28300  Wavefront *wf = gpuDynInst->wavefront();
28301  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28302  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28303  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28304  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28305 
28306  src0.readSrc();
28307  src1.readSrc();
28308  src2.readSrc();
28309 
28310  if (instData.ABS & 0x1) {
28311  src0.absModifier();
28312  }
28313 
28314  if (instData.ABS & 0x2) {
28315  src1.absModifier();
28316  }
28317 
28318  if (instData.ABS & 0x4) {
28319  src2.absModifier();
28320  }
28321 
28322  if (extData.NEG & 0x1) {
28323  src0.negModifier();
28324  }
28325 
28326  if (extData.NEG & 0x2) {
28327  src1.negModifier();
28328  }
28329 
28330  if (extData.NEG & 0x4) {
28331  src2.negModifier();
28332  }
28333 
28334  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28335  if (wf->execMask(lane)) {
28336  VecElemF32 min_0_1 = std::fmin(src0[lane], src1[lane]);
28337  vdst[lane] = std::fmin(min_0_1, src2[lane]);
28338  }
28339  }
28340 
28341  vdst.write();
28342  }
28343 
28345  : Inst_VOP3(iFmt, "v_min3_i32", false)
28346  {
28347  setFlag(ALU);
28348  } // Inst_VOP3__V_MIN3_I32
28349 
28351  {
28352  } // ~Inst_VOP3__V_MIN3_I32
28353 
28354  // D.i = min(S0.i, S1.i, S2.i).
28355  void
28357  {
28358  Wavefront *wf = gpuDynInst->wavefront();
28359  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28360  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28361  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
28362  VecOperandI32 vdst(gpuDynInst, instData.VDST);
28363 
28364  src0.readSrc();
28365  src1.readSrc();
28366  src2.readSrc();
28367 
28371  assert(!(instData.ABS & 0x1));
28372  assert(!(instData.ABS & 0x2));
28373  assert(!(instData.ABS & 0x4));
28374  assert(!(extData.NEG & 0x1));
28375  assert(!(extData.NEG & 0x2));
28376  assert(!(extData.NEG & 0x4));
28377 
28378  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28379  if (wf->execMask(lane)) {
28380  VecElemI32 min_0_1 = std::min(src0[lane], src1[lane]);
28381  vdst[lane] = std::min(min_0_1, src2[lane]);
28382  }
28383  }
28384 
28385  vdst.write();
28386  }
28387 
28389  : Inst_VOP3(iFmt, "v_min3_u32", false)
28390  {
28391  setFlag(ALU);
28392  } // Inst_VOP3__V_MIN3_U32
28393 
28395  {
28396  } // ~Inst_VOP3__V_MIN3_U32
28397 
28398  // D.u = min(S0.u, S1.u, S2.u).
28399  void
28401  {
28402  Wavefront *wf = gpuDynInst->wavefront();
28403  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28404  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28405  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28406  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28407 
28408  src0.readSrc();
28409  src1.readSrc();
28410  src2.readSrc();
28411 
28415  assert(!(instData.ABS & 0x1));
28416  assert(!(instData.ABS & 0x2));
28417  assert(!(instData.ABS & 0x4));
28418  assert(!(extData.NEG & 0x1));
28419  assert(!(extData.NEG & 0x2));
28420  assert(!(extData.NEG & 0x4));
28421 
28422  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28423  if (wf->execMask(lane)) {
28424  VecElemU32 min_0_1 = std::min(src0[lane], src1[lane]);
28425  vdst[lane] = std::min(min_0_1, src2[lane]);
28426  }
28427  }
28428 
28429  vdst.write();
28430  }
28431 
28433  : Inst_VOP3(iFmt, "v_max3_f32", false)
28434  {
28435  setFlag(ALU);
28436  setFlag(F32);
28437  } // Inst_VOP3__V_MAX3_F32
28438 
28440  {
28441  } // ~Inst_VOP3__V_MAX3_F32
28442 
28443  // D.f = max(S0.f, S1.f, S2.f).
28444  void
28446  {
28447  Wavefront *wf = gpuDynInst->wavefront();
28448  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28449  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28450  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28451  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28452 
28453  src0.readSrc();
28454  src1.readSrc();
28455  src2.readSrc();
28456 
28457  if (instData.ABS & 0x1) {
28458  src0.absModifier();
28459  }
28460 
28461  if (instData.ABS & 0x2) {
28462  src1.absModifier();
28463  }
28464 
28465  if (instData.ABS & 0x4) {
28466  src2.absModifier();
28467  }
28468 
28469  if (extData.NEG & 0x1) {
28470  src0.negModifier();
28471  }
28472 
28473  if (extData.NEG & 0x2) {
28474  src1.negModifier();
28475  }
28476 
28477  if (extData.NEG & 0x4) {
28478  src2.negModifier();
28479  }
28480 
28481  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28482  if (wf->execMask(lane)) {
28483  VecElemF32 max_0_1 = std::fmax(src0[lane], src1[lane]);
28484  vdst[lane] = std::fmax(max_0_1, src2[lane]);
28485  }
28486  }
28487 
28488  vdst.write();
28489  }
28490 
28492  : Inst_VOP3(iFmt, "v_max3_i32", false)
28493  {
28494  setFlag(ALU);
28495  } // Inst_VOP3__V_MAX3_I32
28496 
28498  {
28499  } // ~Inst_VOP3__V_MAX3_I32
28500 
28501  // D.i = max(S0.i, S1.i, S2.i).
28502  void
28504  {
28505  Wavefront *wf = gpuDynInst->wavefront();
28506  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28507  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28508  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
28509  VecOperandI32 vdst(gpuDynInst, instData.VDST);
28510 
28511  src0.readSrc();
28512  src1.readSrc();
28513  src2.readSrc();
28514 
28518  assert(!(instData.ABS & 0x1));
28519  assert(!(instData.ABS & 0x2));
28520  assert(!(instData.ABS & 0x4));
28521  assert(!(extData.NEG & 0x1));
28522  assert(!(extData.NEG & 0x2));
28523  assert(!(extData.NEG & 0x4));
28524 
28525  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28526  if (wf->execMask(lane)) {
28527  VecElemI32 max_0_1 = std::max(src0[lane], src1[lane]);
28528  vdst[lane] = std::max(max_0_1, src2[lane]);
28529  }
28530  }
28531 
28532  vdst.write();
28533  }
28534 
28536  : Inst_VOP3(iFmt, "v_max3_u32", false)
28537  {
28538  setFlag(ALU);
28539  } // Inst_VOP3__V_MAX3_U32
28540 
28542  {
28543  } // ~Inst_VOP3__V_MAX3_U32
28544 
28545  // D.u = max(S0.u, S1.u, S2.u).
28546  void
28548  {
28549  Wavefront *wf = gpuDynInst->wavefront();
28550  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28551  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28552  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28553  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28554 
28555  src0.readSrc();
28556  src1.readSrc();
28557  src2.readSrc();
28558 
28562  assert(!(instData.ABS & 0x1));
28563  assert(!(instData.ABS & 0x2));
28564  assert(!(instData.ABS & 0x4));
28565  assert(!(extData.NEG & 0x1));
28566  assert(!(extData.NEG & 0x2));
28567  assert(!(extData.NEG & 0x4));
28568 
28569  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28570  if (wf->execMask(lane)) {
28571  VecElemU32 max_0_1 = std::max(src0[lane], src1[lane]);
28572  vdst[lane] = std::max(max_0_1, src2[lane]);
28573  }
28574  }
28575 
28576  vdst.write();
28577  }
28578 
28580  : Inst_VOP3(iFmt, "v_med3_f32", false)
28581  {
28582  setFlag(ALU);
28583  setFlag(F32);
28584  } // Inst_VOP3__V_MED3_F32
28585 
28587  {
28588  } // ~Inst_VOP3__V_MED3_F32
28589 
28590  // D.f = median(S0.f, S1.f, S2.f).
28591  void
28593  {
28594  Wavefront *wf = gpuDynInst->wavefront();
28595  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28596  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28597  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28598  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28599 
28600  src0.readSrc();
28601  src1.readSrc();
28602  src2.readSrc();
28603 
28604  if (instData.ABS & 0x1) {
28605  src0.absModifier();
28606  }
28607 
28608  if (instData.ABS & 0x2) {
28609  src1.absModifier();
28610  }
28611 
28612  if (instData.ABS & 0x4) {
28613  src2.absModifier();
28614  }
28615 
28616  if (extData.NEG & 0x1) {
28617  src0.negModifier();
28618  }
28619 
28620  if (extData.NEG & 0x2) {
28621  src1.negModifier();
28622  }
28623 
28624  if (extData.NEG & 0x4) {
28625  src2.negModifier();
28626  }
28627 
28628  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28629  if (wf->execMask(lane)) {
28630  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
28631  }
28632  }
28633 
28634  vdst.write();
28635  }
28636 
28638  : Inst_VOP3(iFmt, "v_med3_i32", false)
28639  {
28640  setFlag(ALU);
28641  } // Inst_VOP3__V_MED3_I32
28642 
28644  {
28645  } // ~Inst_VOP3__V_MED3_I32
28646 
28647  // D.i = median(S0.i, S1.i, S2.i).
28648  void
28650  {
28651  Wavefront *wf = gpuDynInst->wavefront();
28652  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28653  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28654  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
28655  VecOperandI32 vdst(gpuDynInst, instData.VDST);
28656 
28657  src0.readSrc();
28658  src1.readSrc();
28659  src2.readSrc();
28660 
28664  assert(!(instData.ABS & 0x1));
28665  assert(!(instData.ABS & 0x2));
28666  assert(!(instData.ABS & 0x4));
28667  assert(!(extData.NEG & 0x1));
28668  assert(!(extData.NEG & 0x2));
28669  assert(!(extData.NEG & 0x4));
28670 
28671  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28672  if (wf->execMask(lane)) {
28673  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
28674  }
28675  }
28676 
28677  vdst.write();
28678  }
28679 
28681  : Inst_VOP3(iFmt, "v_med3_u32", false)
28682  {
28683  setFlag(ALU);
28684  } // Inst_VOP3__V_MED3_U32
28685 
28687  {
28688  } // ~Inst_VOP3__V_MED3_U32
28689 
28690  // D.u = median(S0.u, S1.u, S2.u).
28691  void
28693  {
28694  Wavefront *wf = gpuDynInst->wavefront();
28695  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28696  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28697  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28698  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28699 
28700  src0.readSrc();
28701  src1.readSrc();
28702  src2.readSrc();
28703 
28707  assert(!(instData.ABS & 0x1));
28708  assert(!(instData.ABS & 0x2));
28709  assert(!(instData.ABS & 0x4));
28710  assert(!(extData.NEG & 0x1));
28711  assert(!(extData.NEG & 0x2));
28712  assert(!(extData.NEG & 0x4));
28713 
28714  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28715  if (wf->execMask(lane)) {
28716  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
28717  }
28718  }
28719 
28720  vdst.write();
28721  }
28722 
28724  : Inst_VOP3(iFmt, "v_sad_u8", false)
28725  {
28726  setFlag(ALU);
28727  } // Inst_VOP3__V_SAD_U8
28728 
28730  {
28731  } // ~Inst_VOP3__V_SAD_U8
28732 
28733  // D.u = abs(S0.i[31:24] - S1.i[31:24]) + abs(S0.i[23:16] - S1.i[23:16]) +
28734  // abs(S0.i[15:8] - S1.i[15:8]) + abs(S0.i[7:0] - S1.i[7:0]) + S2.u.
28735  // Sum of absolute differences with accumulation, overflow into upper bits
28736  // is allowed.
28737  void
28739  {
28740  Wavefront *wf = gpuDynInst->wavefront();
28741  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28742  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28743  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28744  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28745 
28746  src0.readSrc();
28747  src1.readSrc();
28748  src2.readSrc();
28749 
28753  assert(!(instData.ABS & 0x1));
28754  assert(!(instData.ABS & 0x2));
28755  assert(!(instData.ABS & 0x4));
28756  assert(!(extData.NEG & 0x1));
28757  assert(!(extData.NEG & 0x2));
28758  assert(!(extData.NEG & 0x4));
28759 
28760  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28761  if (wf->execMask(lane)) {
28762  vdst[lane] = std::abs(bits(src0[lane], 31, 24)
28763  - bits(src1[lane], 31, 24))
28764  + std::abs(bits(src0[lane], 23, 16)
28765  - bits(src1[lane], 23, 16))
28766  + std::abs(bits(src0[lane], 15, 8)
28767  - bits(src1[lane], 15, 8))
28768  + std::abs(bits(src0[lane], 7, 0)
28769  - bits(src1[lane], 7, 0)) + src2[lane];
28770  }
28771  }
28772 
28773  vdst.write();
28774  }
28775 
28777  : Inst_VOP3(iFmt, "v_sad_hi_u8", false)
28778  {
28779  setFlag(ALU);
28780  } // Inst_VOP3__V_SAD_HI_U8
28781 
28783  {
28784  } // ~Inst_VOP3__V_SAD_HI_U8
28785 
28786  // D.u = (SAD_U8(S0, S1, 0) << 16) + S2.u.
28787  // Sum of absolute differences with accumulation, overflow is lost.
28788  void
28790  {
28791  Wavefront *wf = gpuDynInst->wavefront();
28792  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28793  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28794  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28795  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28796 
28797  src0.readSrc();
28798  src1.readSrc();
28799  src2.readSrc();
28800 
28804  assert(!(instData.ABS & 0x1));
28805  assert(!(instData.ABS & 0x2));
28806  assert(!(instData.ABS & 0x4));
28807  assert(!(extData.NEG & 0x1));
28808  assert(!(extData.NEG & 0x2));
28809  assert(!(extData.NEG & 0x4));
28810 
28811  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28812  if (wf->execMask(lane)) {
28813  vdst[lane] = (((bits(src0[lane], 31, 24)
28814  - bits(src1[lane], 31, 24)) + (bits(src0[lane], 23, 16)
28815  - bits(src1[lane], 23, 16)) + (bits(src0[lane], 15, 8)
28816  - bits(src1[lane], 15, 8)) + (bits(src0[lane], 7, 0)
28817  - bits(src1[lane], 7, 0))) << 16) + src2[lane];
28818  }
28819  }
28820 
28821  vdst.write();
28822  }
28823 
28825  : Inst_VOP3(iFmt, "v_sad_u16", false)
28826  {
28827  setFlag(ALU);
28828  } // Inst_VOP3__V_SAD_U16
28829 
28831  {
28832  } // ~Inst_VOP3__V_SAD_U16
28833 
28834  // D.u = abs(S0.i[31:16] - S1.i[31:16]) + abs(S0.i[15:0] - S1.i[15:0])
28835  // + S2.u.
28836  // Word SAD with accumulation.
28837  void
28839  {
28840  Wavefront *wf = gpuDynInst->wavefront();
28841  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28842  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28843  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28844  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28845 
28846  src0.readSrc();
28847  src1.readSrc();
28848  src2.readSrc();
28849 
28853  assert(!(instData.ABS & 0x1));
28854  assert(!(instData.ABS & 0x2));
28855  assert(!(instData.ABS & 0x4));
28856  assert(!(extData.NEG & 0x1));
28857  assert(!(extData.NEG & 0x2));
28858  assert(!(extData.NEG & 0x4));
28859 
28860  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28861  if (wf->execMask(lane)) {
28862  vdst[lane] = std::abs(bits(src0[lane], 31, 16)
28863  - bits(src1[lane], 31, 16))
28864  + std::abs(bits(src0[lane], 15, 0)
28865  - bits(src1[lane], 15, 0)) + src2[lane];
28866  }
28867  }
28868 
28869  vdst.write();
28870  }
28871 
28873  : Inst_VOP3(iFmt, "v_sad_u32", false)
28874  {
28875  setFlag(ALU);
28876  } // Inst_VOP3__V_SAD_U32
28877 
28879  {
28880  } // ~Inst_VOP3__V_SAD_U32
28881 
28882  // D.u = abs(S0.i - S1.i) + S2.u.
28883  // Dword SAD with accumulation.
28884  void
28886  {
28887  Wavefront *wf = gpuDynInst->wavefront();
28888  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28889  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28890  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28891  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28892 
28893  src0.readSrc();
28894  src1.readSrc();
28895  src2.readSrc();
28896 
28900  assert(!(instData.ABS & 0x1));
28901  assert(!(instData.ABS & 0x2));
28902  assert(!(instData.ABS & 0x4));
28903  assert(!(extData.NEG & 0x1));
28904  assert(!(extData.NEG & 0x2));
28905  assert(!(extData.NEG & 0x4));
28906 
28907  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28908  if (wf->execMask(lane)) {
28909  vdst[lane] = std::abs(src0[lane] - src1[lane]) + src2[lane];
28910  }
28911  }
28912 
28913  vdst.write();
28914  }
28915 
28917  : Inst_VOP3(iFmt, "v_cvt_pk_u8_f32", false)
28918  {
28919  setFlag(ALU);
28920  setFlag(F32);
28921  } // Inst_VOP3__V_CVT_PK_U8_F32
28922 
28924  {
28925  } // ~Inst_VOP3__V_CVT_PK_U8_F32
28926 
28927  // D.u = ((flt32_to_uint8(S0.f) & 0xff) << (8 * S1.u[1:0]))
28928  // | (S2.u & ~(0xff << (8 * S1.u[1:0]))).
28929  // Convert floating point value S0 to 8-bit unsigned integer and pack the
28930  // result into byte S1 of dword S2.
28931  void
28933  {
28934  Wavefront *wf = gpuDynInst->wavefront();
28935  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28936  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28937  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28938  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28939 
28940  src0.readSrc();
28941  src1.readSrc();
28942  src2.readSrc();
28943 
28944  if (instData.ABS & 0x1) {
28945  src0.absModifier();
28946  }
28947 
28948 
28949  if (extData.NEG & 0x1) {
28950  src0.negModifier();
28951  }
28952 
28956  assert(!(instData.ABS & 0x2));
28957  assert(!(instData.ABS & 0x4));
28958  assert(!(extData.NEG & 0x2));
28959  assert(!(extData.NEG & 0x4));
28960 
28961  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28962  if (wf->execMask(lane)) {
28963  vdst[lane] = (((VecElemU8)src0[lane] & 0xff)
28964  << (8 * bits(src1[lane], 1, 0)))
28965  | (src2[lane] & ~(0xff << (8 * bits(src1[lane], 1, 0))));
28966  }
28967  }
28968 
28969  vdst.write();
28970  }
28971 
28973  : Inst_VOP3(iFmt, "v_div_fixup_f32", false)
28974  {
28975  setFlag(ALU);
28976  setFlag(F32);
28977  } // Inst_VOP3__V_DIV_FIXUP_F32
28978 
28980  {
28981  } // ~Inst_VOP3__V_DIV_FIXUP_F32
28982 
28983  // D.f = Divide fixup and flags -- s0.f = Quotient, s1.f = Denominator,
28984  // s2.f = Numerator.
28985  void
28987  {
28988  Wavefront *wf = gpuDynInst->wavefront();
28989  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28990  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28991  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28992  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28993 
28994  src0.readSrc();
28995  src1.readSrc();
28996  src2.readSrc();
28997 
28998  if (instData.ABS & 0x1) {
28999  src0.absModifier();
29000  }
29001 
29002  if (instData.ABS & 0x2) {
29003  src1.absModifier();
29004  }
29005 
29006  if (instData.ABS & 0x4) {
29007  src2.absModifier();
29008  }
29009 
29010  if (extData.NEG & 0x1) {
29011  src0.negModifier();
29012  }
29013 
29014  if (extData.NEG & 0x2) {
29015  src1.negModifier();
29016  }
29017 
29018  if (extData.NEG & 0x4) {
29019  src2.negModifier();
29020  }
29021 
29022  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29023  if (wf->execMask(lane)) {
29024  if (std::fpclassify(src1[lane]) == FP_ZERO) {
29025  if (std::signbit(src1[lane])) {
29026  vdst[lane] = -INFINITY;
29027  } else {
29028  vdst[lane] = +INFINITY;
29029  }
29030  } else if (std::isnan(src2[lane]) || std::isnan(src1[lane])) {
29031  vdst[lane] = NAN;
29032  } else if (std::isinf(src1[lane])) {
29033  if (std::signbit(src1[lane])) {
29034  vdst[lane] = -INFINITY;
29035  } else {
29036  vdst[lane] = +INFINITY;
29037  }
29038  } else {
29039  vdst[lane] = src2[lane] / src1[lane];
29040  }
29041  }
29042  }
29043 
29044  vdst.write();
29045  } // execute
29046  // --- Inst_VOP3__V_DIV_FIXUP_F64 class methods ---
29047 
29049  : Inst_VOP3(iFmt, "v_div_fixup_f64", false)
29050  {
29051  setFlag(ALU);
29052  setFlag(F64);
29053  } // Inst_VOP3__V_DIV_FIXUP_F64
29054 
29056  {
29057  } // ~Inst_VOP3__V_DIV_FIXUP_F64
29058 
29059  // D.d = Divide fixup and flags -- s0.d = Quotient, s1.d = Denominator,
29060  // s2.d = Numerator.
29061  void
29063  {
29064  Wavefront *wf = gpuDynInst->wavefront();
29065  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
29066  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
29067  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
29068  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29069 
29070  src0.readSrc();
29071  src1.readSrc();
29072  src2.readSrc();
29073 
29074  if (instData.ABS & 0x1) {
29075  src0.absModifier();
29076  }
29077 
29078  if (instData.ABS & 0x2) {
29079  src1.absModifier();
29080  }
29081 
29082  if (instData.ABS & 0x4) {
29083  src2.absModifier();
29084  }
29085 
29086  if (extData.NEG & 0x1) {
29087  src0.negModifier();
29088  }
29089 
29090  if (extData.NEG & 0x2) {
29091  src1.negModifier();
29092  }
29093 
29094  if (extData.NEG & 0x4) {
29095  src2.negModifier();
29096  }
29097 
29098  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29099  if (wf->execMask(lane)) {
29100  int sign_out = std::signbit(src1[lane])
29101  ^ std::signbit(src2[lane]);
29102  int exp1(0);
29103  int exp2(0);
29104  std::frexp(src1[lane], &exp1);
29105  std::frexp(src2[lane], &exp2);
29106 
29107  if (std::isnan(src1[lane]) || std::isnan(src2[lane])) {
29108  vdst[lane] = std::numeric_limits<VecElemF64>::quiet_NaN();
29109  } else if (std::fpclassify(src1[lane]) == FP_ZERO
29110  && std::fpclassify(src2[lane]) == FP_ZERO) {
29111  vdst[lane]
29112  = std::numeric_limits<VecElemF64>::signaling_NaN();
29113  } else if (std::isinf(src1[lane]) && std::isinf(src2[lane])) {
29114  vdst[lane]
29115  = std::numeric_limits<VecElemF64>::signaling_NaN();
29116  } else if (std::fpclassify(src1[lane]) == FP_ZERO
29117  || std::isinf(src2[lane])) {
29118  vdst[lane] = sign_out ? -INFINITY : +INFINITY;
29119  } else if (std::isinf(src1[lane])
29120  || std::fpclassify(src2[lane]) == FP_ZERO) {
29121  vdst[lane] = sign_out ? -0.0 : +0.0;
29122  } else if (exp2 - exp1 < -1075) {
29123  vdst[lane] = src0[lane];
29124  } else if (exp1 == 2047) {
29125  vdst[lane] = src0[lane];
29126  } else {
29127  vdst[lane] = sign_out ? -std::fabs(src0[lane])
29128  : std::fabs(src0[lane]);
29129  }
29130  }
29131  }
29132 
29133  vdst.write();
29134  }
29135 
29137  InFmt_VOP3_SDST_ENC *iFmt)
29138  : Inst_VOP3_SDST_ENC(iFmt, "v_div_scale_f32")
29139  {
29140  setFlag(ALU);
29141  setFlag(WritesVCC);
29142  setFlag(F32);
29143  } // Inst_VOP3__V_DIV_SCALE_F32
29144 
29146  {
29147  } // ~Inst_VOP3__V_DIV_SCALE_F32
29148 
29149  // {vcc,D.f} = Divide preop and flags -- s0.f = Quotient, s1.f =
29150  // Denominator, s2.f = Numerator -- s0 must equal s1 or s2. Given a
29151  // numerator and denominator, this opcode will appropriately scale inputs
29152  // for division to avoid subnormal terms during Newton-Raphson correction
29153  // algorithm. This opcode producses a VCC flag for post-scale of quotient.
29154  void
29156  {
29157  Wavefront *wf = gpuDynInst->wavefront();
29158  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
29159  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
29160  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
29161  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
29162  VecOperandF32 vdst(gpuDynInst, instData.VDST);
29163 
29164  src0.readSrc();
29165  src1.readSrc();
29166  src2.readSrc();
29167 
29168  if (extData.NEG & 0x1) {
29169  src0.negModifier();
29170  }
29171 
29172  if (extData.NEG & 0x2) {
29173  src1.negModifier();
29174  }
29175 
29176  if (extData.NEG & 0x4) {
29177  src2.negModifier();
29178  }
29179 
29180  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29181  if (wf->execMask(lane)) {
29182  vdst[lane] = src0[lane];
29183  vcc.setBit(lane, 0);
29184  }
29185  }
29186 
29187  vcc.write();
29188  vdst.write();
29189  } // execute
29190  // --- Inst_VOP3__V_DIV_SCALE_F64 class methods ---
29191 
29193  InFmt_VOP3_SDST_ENC *iFmt)
29194  : Inst_VOP3_SDST_ENC(iFmt, "v_div_scale_f64")
29195  {
29196  setFlag(ALU);
29197  setFlag(WritesVCC);
29198  setFlag(F64);
29199  } // Inst_VOP3__V_DIV_SCALE_F64
29200 
29202  {
29203  } // ~Inst_VOP3__V_DIV_SCALE_F64
29204 
29205  // {vcc,D.d} = Divide preop and flags -- s0.d = Quotient, s1.d =
29206  // Denominator, s2.d = Numerator -- s0 must equal s1 or s2. Given a
29207  // numerator and denominator, this opcode will appropriately scale inputs
29208  // for division to avoid subnormal terms during Newton-Raphson correction
29209  // algorithm. This opcode producses a VCC flag for post-scale of quotient.
29210  void
29212  {
29213  Wavefront *wf = gpuDynInst->wavefront();
29214  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
29215  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
29216  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
29217  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
29218  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29219 
29220  src0.readSrc();
29221  src1.readSrc();
29222  src2.readSrc();
29223 
29224  if (extData.NEG & 0x1) {
29225  src0.negModifier();
29226  }
29227 
29228  if (extData.NEG & 0x2) {
29229  src1.negModifier();
29230  }
29231 
29232  if (extData.NEG & 0x4) {
29233  src2.negModifier();
29234  }
29235 
29236  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29237  if (wf->execMask(lane)) {
29238  int exp1(0);
29239  int exp2(0);
29240  std::frexp(src1[lane], &exp1);
29241  std::frexp(src2[lane], &exp2);
29242  vcc.setBit(lane, 0);
29243 
29244  if (std::fpclassify(src1[lane]) == FP_ZERO
29245  || std::fpclassify(src2[lane]) == FP_ZERO) {
29246  vdst[lane] = NAN;
29247  } else if (exp2 - exp1 >= 768) {
29248  vcc.setBit(lane, 1);
29249  if (src0[lane] == src1[lane]) {
29250  vdst[lane] = std::ldexp(src0[lane], 128);
29251  }
29252  } else if (std::fpclassify(src1[lane]) == FP_SUBNORMAL) {
29253  vdst[lane] = std::ldexp(src0[lane], 128);
29254  } else if (std::fpclassify(1.0 / src1[lane]) == FP_SUBNORMAL
29255  && std::fpclassify(src2[lane] / src1[lane])
29256  == FP_SUBNORMAL) {
29257  vcc.setBit(lane, 1);
29258  if (src0[lane] == src1[lane]) {
29259  vdst[lane] = std::ldexp(src0[lane], 128);
29260  }
29261  } else if (std::fpclassify(1.0 / src1[lane]) == FP_SUBNORMAL) {
29262  vdst[lane] = std::ldexp(src0[lane], -128);
29263  } else if (std::fpclassify(src2[lane] / src1[lane])
29264  == FP_SUBNORMAL) {
29265  vcc.setBit(lane, 1);
29266  if (src0[lane] == src2[lane]) {
29267  vdst[lane] = std::ldexp(src0[lane], 128);
29268  }
29269  } else if (exp2 <= 53) {
29270  vdst[lane] = std::ldexp(src0[lane], 128);
29271  }
29272  }
29273  }
29274 
29275  vcc.write();
29276  vdst.write();
29277  }
29278 
29280  : Inst_VOP3(iFmt, "v_div_fmas_f32", false)
29281  {
29282  setFlag(ALU);
29283  setFlag(ReadsVCC);
29284  setFlag(F32);
29285  setFlag(FMA);
29286  } // Inst_VOP3__V_DIV_FMAS_F32
29287 
29289  {
29290  } // ~Inst_VOP3__V_DIV_FMAS_F32
29291 
29292  // D.f = Special case divide FMA with scale and flags(s0.f = Quotient,
29293  // s1.f = Denominator, s2.f = Numerator)
29294  void
29296  {
29297  Wavefront *wf = gpuDynInst->wavefront();
29298  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
29299  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
29300  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
29301  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29302 
29303  src0.readSrc();
29304  src1.readSrc();
29305  src2.readSrc();
29306 
29307  if (instData.ABS & 0x1) {
29308  src0.absModifier();
29309  }
29310 
29311  if (instData.ABS & 0x2) {
29312  src1.absModifier();
29313  }
29314 
29315  if (instData.ABS & 0x4) {
29316  src2.absModifier();
29317  }
29318 
29319  if (extData.NEG & 0x1) {
29320  src0.negModifier();
29321  }
29322 
29323  if (extData.NEG & 0x2) {
29324  src1.negModifier();
29325  }
29326 
29327  if (extData.NEG & 0x4) {
29328  src2.negModifier();
29329  }
29330 
29331  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29332  if (wf->execMask(lane)) {
29333  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
29334  }
29335  }
29336 
29337  //vdst.write();
29338  } // execute
29339  // --- Inst_VOP3__V_DIV_FMAS_F64 class methods ---
29340 
29342  : Inst_VOP3(iFmt, "v_div_fmas_f64", false)
29343  {
29344  setFlag(ALU);
29345  setFlag(ReadsVCC);
29346  setFlag(F64);
29347  setFlag(FMA);
29348  } // Inst_VOP3__V_DIV_FMAS_F64
29349 
29351  {
29352  } // ~Inst_VOP3__V_DIV_FMAS_F64
29353 
29354  // D.d = Special case divide FMA with scale and flags(s0.d = Quotient,
29355  // s1.d = Denominator, s2.d = Numerator)
29356  void
29358  {
29359  Wavefront *wf = gpuDynInst->wavefront();
29360  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
29361  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
29362  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
29363  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29364  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
29365 
29366  src0.readSrc();
29367  src1.readSrc();
29368  src2.readSrc();
29369  vcc.read();
29370 
29371  if (instData.ABS & 0x1) {
29372  src0.absModifier();
29373  }
29374 
29375  if (instData.ABS & 0x2) {
29376  src1.absModifier();
29377  }
29378 
29379  if (instData.ABS & 0x4) {
29380  src2.absModifier();
29381  }
29382 
29383  if (extData.NEG & 0x1) {
29384  src0.negModifier();
29385  }
29386 
29387  if (extData.NEG & 0x2) {
29388  src1.negModifier();
29389  }
29390 
29391  if (extData.NEG & 0x4) {
29392  src2.negModifier();
29393  }
29394 
29395  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29396  if (wf->execMask(lane)) {
29397  if (bits(vcc.rawData(), lane)) {
29398  vdst[lane] = std::pow(2, 64)
29399  * std::fma(src0[lane], src1[lane], src2[lane]);
29400  } else {
29401  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
29402  }
29403  }
29404  }
29405 
29406  vdst.write();
29407  }
29408 
29410  : Inst_VOP3(iFmt, "v_msad_u8", false)
29411  {
29412  setFlag(ALU);
29413  } // Inst_VOP3__V_MSAD_U8
29414 
29416  {
29417  } // ~Inst_VOP3__V_MSAD_U8
29418 
29419  // D.u = Masked Byte SAD with accum_lo(S0.u, S1.u, S2.u).
29420  void
29422  {
29424  }
29425 
29427  : Inst_VOP3(iFmt, "v_qsad_pk_u16_u8", false)
29428  {
29429  setFlag(ALU);
29430  } // Inst_VOP3__V_QSAD_PK_U16_U8
29431 
29433  {
29434  } // ~Inst_VOP3__V_QSAD_PK_U16_U8
29435 
29436  // D.u = Quad-Byte SAD with 16-bit packed accum_lo/hi(S0.u[63:0],
29437  // S1.u[31:0], S2.u[63:0])
29438  void
29440  {
29442  }
29443 
29445  InFmt_VOP3 *iFmt)
29446  : Inst_VOP3(iFmt, "v_mqsad_pk_u16_u8", false)
29447  {
29448  setFlag(ALU);
29449  } // Inst_VOP3__V_MQSAD_PK_U16_U8
29450 
29452  {
29453  } // ~Inst_VOP3__V_MQSAD_PK_U16_U8
29454 
29455  // D.u = Masked Quad-Byte SAD with 16-bit packed accum_lo/hi(S0.u[63:0],
29456  // S1.u[31:0], S2.u[63:0])
29457  void
29459  {
29461  }
29462 
29464  : Inst_VOP3(iFmt, "v_mqsad_u32_u8", false)
29465  {
29466  setFlag(ALU);
29467  } // Inst_VOP3__V_MQSAD_U32_U8
29468 
29470  {
29471  } // ~Inst_VOP3__V_MQSAD_U32_U8
29472 
29473  // D.u128 = Masked Quad-Byte SAD with 32-bit accum_lo/hi(S0.u[63:0],
29474  // S1.u[31:0], S2.u[127:0])
29475  void
29477  {
29479  }
29480 
29482  InFmt_VOP3_SDST_ENC *iFmt)
29483  : Inst_VOP3_SDST_ENC(iFmt, "v_mad_u64_u32")
29484  {
29485  setFlag(ALU);
29486  setFlag(WritesVCC);
29487  setFlag(MAD);
29488  } // Inst_VOP3__V_MAD_U64_U32
29489 
29491  {
29492  } // ~Inst_VOP3__V_MAD_U64_U32
29493 
29494  // {vcc_out, D.u64} = S0.u32 * S1.u32 + S2.u64.
29495  void
29497  {
29498  Wavefront *wf = gpuDynInst->wavefront();
29499  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
29500  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
29501  ConstVecOperandU64 src2(gpuDynInst, extData.SRC2);
29502  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
29503  VecOperandU64 vdst(gpuDynInst, instData.VDST);
29504 
29505  src0.readSrc();
29506  src1.readSrc();
29507  src2.readSrc();
29508  vdst.read();
29509 
29513  assert(!(extData.NEG & 0x1));
29514  assert(!(extData.NEG & 0x2));
29515  assert(!(extData.NEG & 0x4));
29516 
29517  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29518  if (wf->execMask(lane)) {
29519  vcc.setBit(lane, muladd(vdst[lane], src0[lane], src1[lane],
29520  src2[lane]));
29521  }
29522  }
29523 
29524  vcc.write();
29525  vdst.write();
29526  }
29527 
29529  InFmt_VOP3_SDST_ENC *iFmt)
29530  : Inst_VOP3_SDST_ENC(iFmt, "v_mad_i64_i32")
29531  {
29532  setFlag(ALU);
29533  setFlag(WritesVCC);
29534  setFlag(MAD);
29535  } // Inst_VOP3__V_MAD_I64_I32
29536 
29538  {
29539  } // ~Inst_VOP3__V_MAD_I64_I32
29540 
29541  // {vcc_out,D.i64} = S0.i32 * S1.i32 + S2.i64.
29542  void
29544  {
29545  Wavefront *wf = gpuDynInst->wavefront();
29546  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
29547  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
29548  ConstVecOperandI64 src2(gpuDynInst, extData.SRC2);
29549  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
29550  VecOperandI64 vdst(gpuDynInst, instData.VDST);
29551 
29552  src0.readSrc();
29553  src1.readSrc();
29554  src2.readSrc();
29555 
29559  assert(!(extData.NEG & 0x1));
29560  assert(!(extData.NEG & 0x2));
29561  assert(!(extData.NEG & 0x4));
29562 
29563  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29564  if (wf->execMask(lane)) {
29565  vcc.setBit(lane, muladd(vdst[lane], src0[lane], src1[lane],
29566  src2[lane]));
29567  }
29568  }
29569 
29570  vcc.write();
29571  vdst.write();
29572  }
29573 
29575  : Inst_VOP3(iFmt, "v_mad_f16", false)
29576  {
29577  setFlag(ALU);
29578  setFlag(F16);
29579  setFlag(MAD);
29580  } // Inst_VOP3__V_MAD_F16
29581 
29583  {
29584  } // ~Inst_VOP3__V_MAD_F16
29585 
29586  // D.f16 = S0.f16 * S1.f16 + S2.f16.
29587  // Supports round mode, exception flags, saturation.
29588  void
29590  {
29592  }
29593 
29595  : Inst_VOP3(iFmt, "v_mad_u16", false)
29596  {
29597  setFlag(ALU);
29598  setFlag(MAD);
29599  } // Inst_VOP3__V_MAD_U16
29600 
29602  {
29603  } // ~Inst_VOP3__V_MAD_U16
29604 
29605  // D.u16 = S0.u16 * S1.u16 + S2.u16.
29606  // Supports saturation (unsigned 16-bit integer domain).
29607  void
29609  {
29610  Wavefront *wf = gpuDynInst->wavefront();
29611  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
29612  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
29613  ConstVecOperandU16 src2(gpuDynInst, extData.SRC2);
29614  VecOperandU16 vdst(gpuDynInst, instData.VDST);
29615 
29616  src0.readSrc();
29617  src1.readSrc();
29618  src2.readSrc();
29619 
29623  assert(!(instData.ABS & 0x1));
29624  assert(!(instData.ABS & 0x2));
29625  assert(!(instData.ABS & 0x4));
29626  assert(!(extData.NEG & 0x1));
29627  assert(!(extData.NEG & 0x2));
29628  assert(!(extData.NEG & 0x4));
29629 
29630  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29631  if (wf->execMask(lane)) {
29632  vdst[lane] = src0[lane] * src1[lane] + src2[lane];
29633  }
29634  }
29635 
29636  vdst.write();
29637  }
29638 
29640  : Inst_VOP3(iFmt, "v_mad_i16", false)
29641  {
29642  setFlag(ALU);
29643  setFlag(MAD);
29644  } // Inst_VOP3__V_MAD_I16
29645 
29647  {
29648  } // ~Inst_VOP3__V_MAD_I16
29649 
29650  // D.i16 = S0.i16 * S1.i16 + S2.i16.
29651  // Supports saturation (signed 16-bit integer domain).
29652  void
29654  {
29655  Wavefront *wf = gpuDynInst->wavefront();
29656  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
29657  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
29658  ConstVecOperandI16 src2(gpuDynInst, extData.SRC2);
29659  VecOperandI16 vdst(gpuDynInst, instData.VDST);
29660 
29661  src0.readSrc();
29662  src1.readSrc();
29663  src2.readSrc();
29664 
29668  assert(!(instData.ABS & 0x1));
29669  assert(!(instData.ABS & 0x2));
29670  assert(!(instData.ABS & 0x4));
29671  assert(!(extData.NEG & 0x1));
29672  assert(!(extData.NEG & 0x2));
29673  assert(!(extData.NEG & 0x4));
29674 
29675  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29676  if (wf->execMask(lane)) {
29677  vdst[lane] = src0[lane] * src1[lane] + src2[lane];
29678  }
29679  }
29680 
29681  vdst.write();
29682  }
29683 
29685  : Inst_VOP3(iFmt, "v_perm_b32", false)
29686  {
29687  setFlag(ALU);
29688  } // Inst_VOP3__V_PERM_B32
29689 
29691  {
29692  } // ~Inst_VOP3__V_PERM_B32
29693 
29694  // D.u[31:24] = permute({S0.u, S1.u}, S2.u[31:24]);
29695  // D.u[23:16] = permute({S0.u, S1.u}, S2.u[23:16]);
29696  // D.u[15:8] = permute({S0.u, S1.u}, S2.u[15:8]);
29697  // D.u[7:0] = permute({S0.u, S1.u}, S2.u[7:0]);
29698  // byte permute(byte in[8], byte sel) {
29699  // if(sel>=13) then return 0xff;
29700  // elsif(sel==12) then return 0x00;
29701  // elsif(sel==11) then return in[7][7] * 0xff;
29702  // elsif(sel==10) then return in[5][7] * 0xff;
29703  // elsif(sel==9) then return in[3][7] * 0xff;
29704  // elsif(sel==8) then return in[1][7] * 0xff;
29705  // else return in[sel];
29706  // }
29707  void
29709  {
29710  Wavefront *wf = gpuDynInst->wavefront();
29711  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
29712  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
29713  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
29714  VecOperandU32 vdst(gpuDynInst, instData.VDST);
29715 
29716  src0.readSrc();
29717  src1.readSrc();
29718  src2.readSrc();
29719 
29720  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29721  if (wf->execMask(lane)) {
29722  VecElemU64 selector = (VecElemU64)src0[lane];
29723  selector = (selector << 32) | (VecElemU64)src1[lane];
29724  vdst[lane] = 0;
29725 
29726  DPRINTF(GCN3, "Executing v_perm_b32 src_0 0x%08x, src_1 "
29727  "0x%08x, src_2 0x%08x, vdst 0x%08x\n", src0[lane],
29728  src1[lane], src2[lane], vdst[lane]);
29729  DPRINTF(GCN3, "Selector: 0x%08x \n", selector);
29730 
29731  for (int i = 0; i < 4 ; ++i) {
29732  VecElemU32 permuted_val = permute(selector, 0xFF
29733  & ((VecElemU32)src2[lane] >> (8 * i)));
29734  vdst[lane] |= (permuted_val << i);
29735  }
29736 
29737  DPRINTF(GCN3, "v_perm result: 0x%08x\n", vdst[lane]);
29738  }
29739  }
29740 
29741  vdst.write();
29742  }
29743 
29745  : Inst_VOP3(iFmt, "v_fma_f16", false)
29746  {
29747  setFlag(ALU);
29748  setFlag(F16);
29749  setFlag(FMA);
29750  } // Inst_VOP3__V_FMA_F16
29751 
29753  {
29754  } // ~Inst_VOP3__V_FMA_F16
29755 
29756  // D.f16 = S0.f16 * S1.f16 + S2.f16.
29757  // Fused half precision multiply add.
29758  void
29760  {
29762  }
29763 
29765  : Inst_VOP3(iFmt, "v_div_fixup_f16", false)
29766  {
29767  setFlag(ALU);
29768  setFlag(F16);
29769  } // Inst_VOP3__V_DIV_FIXUP_F16
29770 
29772  {
29773  } // ~Inst_VOP3__V_DIV_FIXUP_F16
29774 
29775  // sign_out = sign(S1.f16)^sign(S2.f16);
29776  // if (S2.f16 == NAN)
29777  // D.f16 = Quiet(S2.f16);
29778  // else if (S1.f16 == NAN)
29779  // D.f16 = Quiet(S1.f16);
29780  // else if (S1.f16 == S2.f16 == 0)
29781  // # 0/0
29782  // D.f16 = pele_nan(0xfe00);
29783  // else if (abs(S1.f16) == abs(S2.f16) == +-INF)
29784  // # inf/inf
29785  // D.f16 = pele_nan(0xfe00);
29786  // else if (S1.f16 ==0 || abs(S2.f16) == +-INF)
29787  // # x/0, or inf/y
29788  // D.f16 = sign_out ? -INF : INF;
29789  // else if (abs(S1.f16) == +-INF || S2.f16 == 0)
29790  // # x/inf, 0/y
29791  // D.f16 = sign_out ? -0 : 0;
29792  // else if ((exp(S2.f16) - exp(S1.f16)) < -150)
29793  // D.f16 = sign_out ? -underflow : underflow;
29794  // else if (exp(S1.f16) == 255)
29795  // D.f16 = sign_out ? -overflow : overflow;
29796  // else
29797  // D.f16 = sign_out ? -abs(S0.f16) : abs(S0.f16).
29798  // Half precision division fixup.
29799  // S0 = Quotient, S1 = Denominator, S3 = Numerator.
29800  // Given a numerator, denominator, and quotient from a divide, this opcode
29801  // will detect and apply special case numerics, touching up the quotient if
29802  // necessary. This opcode also generates invalid, denorm and divide by
29803  // zero exceptions caused by the division.
29804  void
29806  {
29808  }
29809 
29811  InFmt_VOP3 *iFmt)
29812  : Inst_VOP3(iFmt, "v_cvt_pkaccum_u8_f32", false)
29813  {
29814  setFlag(ALU);
29815  setFlag(F32);
29816  } // Inst_VOP3__V_CVT_PKACCUM_U8_F32
29817 
29819  {
29820  } // ~Inst_VOP3__V_CVT_PKACCUM_U8_F32
29821 
29822  // byte = S1.u[1:0]; bit = byte * 8;
29823  // D.u[bit + 7:bit] = flt32_to_uint8(S0.f);
29824  // Pack converted value of S0.f into byte S1 of the destination.
29825  // SQ translates to V_CVT_PK_U8_F32.
29826  // Note: this opcode uses src_c to pass destination in as a source.
29827  void
29829  {
29831  }
29832 
29834  : Inst_VOP3(iFmt, "v_interp_p1_f32", false)
29835  {
29836  setFlag(ALU);
29837  setFlag(F32);
29838  } // Inst_VOP3__V_INTERP_P1_F32
29839 
29841  {
29842  } // ~Inst_VOP3__V_INTERP_P1_F32
29843 
29844  // D.f = P10 * S.f + P0;
29845  void
29847  {
29849  }
29850 
29852  : Inst_VOP3(iFmt, "v_interp_p2_f32", false)
29853  {
29854  setFlag(ALU);
29855  setFlag(F32);
29856  } // Inst_VOP3__V_INTERP_P2_F32
29857 
29859  {
29860  } // ~Inst_VOP3__V_INTERP_P2_F32
29861 
29862  // D.f = P20 * S.f + D.f;
29863  void
29865  {
29867  }
29868 
29870  : Inst_VOP3(iFmt, "v_interp_mov_f32", false)
29871  {
29872  setFlag(ALU);
29873  setFlag(F32);
29874  } // Inst_VOP3__V_INTERP_MOV_F32
29875 
29877  {
29878  } // ~Inst_VOP3__V_INTERP_MOV_F32
29879 
29880  // D.f = {P10,P20,P0}[S.u]; parameter load.
29881  void
29883  {
29885  }
29886 
29888  InFmt_VOP3 *iFmt)
29889  : Inst_VOP3(iFmt, "v_interp_p1ll_f16", false)
29890  {
29891  setFlag(ALU);
29892  setFlag(F16);
29893  } // Inst_VOP3__V_INTERP_P1LL_F16
29894 
29896  {
29897  } // ~Inst_VOP3__V_INTERP_P1LL_F16
29898 
29899  // D.f32 = P10.f16 * S0.f32 + P0.f16.
29900  void
29902  {
29904  }
29905 
29907  InFmt_VOP3 *iFmt)
29908  : Inst_VOP3(iFmt, "v_interp_p1lv_f16", false)
29909  {
29910  setFlag(ALU);
29911  setFlag(F16);
29912  } // Inst_VOP3__V_INTERP_P1LV_F16
29913 
29915  {
29916  } // ~Inst_VOP3__V_INTERP_P1LV_F16
29917 
29918  void
29920  {
29922  }
29923 
29925  : Inst_VOP3(iFmt, "v_interp_p2_f16", false)
29926  {
29927  setFlag(ALU);
29928  setFlag(F16);
29929  } // Inst_VOP3__V_INTERP_P2_F16
29930 
29932  {
29933  } // ~Inst_VOP3__V_INTERP_P2_F16
29934 
29935  // D.f16 = P20.f16 * S0.f32 + S2.f32.
29936  void
29938  {
29940  }
29941 
29943  : Inst_VOP3(iFmt, "v_add_f64", false)
29944  {
29945  setFlag(ALU);
29946  setFlag(F64);
29947  } // Inst_VOP3__V_ADD_F64
29948 
29950  {
29951  } // ~Inst_VOP3__V_ADD_F64
29952 
29953  // D.d = S0.d + S1.d.
29954  void
29956  {
29957  Wavefront *wf = gpuDynInst->wavefront();
29958  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
29959  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
29960  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29961 
29962  src0.readSrc();
29963  src1.readSrc();
29964 
29965  if (instData.ABS & 0x1) {
29966  src0.absModifier();
29967  }
29968 
29969  if (instData.ABS & 0x2) {
29970  src1.absModifier();
29971  }
29972 
29973  if (extData.NEG & 0x1) {
29974  src0.negModifier();
29975  }
29976 
29977  if (extData.NEG & 0x2) {
29978  src1.negModifier();
29979  }
29980 
29984  assert(!(instData.ABS & 0x4));
29985  assert(!(extData.NEG & 0x4));
29986 
29987  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29988  if (wf->execMask(lane)) {
29989  if (std::isnan(src0[lane]) ||
29990  std::isnan(src1[lane]) ) {
29991  vdst[lane] = NAN;
29992  } else if (std::isinf(src0[lane]) &&
29993  std::isinf(src1[lane])) {
29994  if (std::signbit(src0[lane]) !=
29995  std::signbit(src1[lane])) {
29996  vdst[lane] = NAN;
29997  } else {
29998  vdst[lane] = src0[lane];
29999  }
30000  } else if (std::isinf(src0[lane])) {
30001  vdst[lane] = src0[lane];
30002  } else if (std::isinf(src1[lane])) {
30003  vdst[lane] = src1[lane];
30004  } else if (std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
30005  std::fpclassify(src0[lane]) == FP_ZERO) {
30006  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
30007  std::fpclassify(src1[lane]) == FP_ZERO) {
30008  if (std::signbit(src0[lane]) &&
30009  std::signbit(src1[lane])) {
30010  vdst[lane] = -0.0;
30011  } else {
30012  vdst[lane] = 0.0;
30013  }
30014  } else {
30015  vdst[lane] = src1[lane];
30016  }
30017  } else if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
30018  std::fpclassify(src1[lane]) == FP_ZERO) {
30019  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
30020  std::fpclassify(src0[lane]) == FP_ZERO) {
30021  if (std::signbit(src0[lane]) &&
30022  std::signbit(src1[lane])) {
30023  vdst[lane] = -0.0;
30024  } else {
30025  vdst[lane] = 0.0;
30026  }
30027  } else {
30028  vdst[lane] = src0[lane];
30029  }
30030  } else {
30031  vdst[lane] = src0[lane] + src1[lane];
30032  }
30033  }
30034  }
30035 
30036  vdst.write();
30037  }
30038 
30040  : Inst_VOP3(iFmt, "v_mul_f64", false)
30041  {
30042  setFlag(ALU);
30043  setFlag(F64);
30044  } // Inst_VOP3__V_MUL_F64
30045 
30047  {
30048  } // ~Inst_VOP3__V_MUL_F64
30049 
30050  // D.d = S0.d * S1.d.
30051  void
30053  {
30054  Wavefront *wf = gpuDynInst->wavefront();
30055  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30056  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
30057  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30058 
30059  src0.readSrc();
30060  src1.readSrc();
30061 
30062  if (instData.ABS & 0x1) {
30063  src0.absModifier();
30064  }
30065 
30066  if (instData.ABS & 0x2) {
30067  src1.absModifier();
30068  }
30069 
30070  if (extData.NEG & 0x1) {
30071  src0.negModifier();
30072  }
30073 
30074  if (extData.NEG & 0x2) {
30075  src1.negModifier();
30076  }
30077 
30081  assert(!(instData.ABS & 0x4));
30082  assert(!(extData.NEG & 0x4));
30083 
30084  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30085  if (wf->execMask(lane)) {
30086  if (std::isnan(src0[lane]) ||
30087  std::isnan(src1[lane])) {
30088  vdst[lane] = NAN;
30089  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
30090  std::fpclassify(src0[lane]) == FP_ZERO) &&
30091  !std::signbit(src0[lane])) {
30092  if (std::isinf(src1[lane])) {
30093  vdst[lane] = NAN;
30094  } else if (!std::signbit(src1[lane])) {
30095  vdst[lane] = +0.0;
30096  } else {
30097  vdst[lane] = -0.0;
30098  }
30099  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
30100  std::fpclassify(src0[lane]) == FP_ZERO) &&
30101  std::signbit(src0[lane])) {
30102  if (std::isinf(src1[lane])) {
30103  vdst[lane] = NAN;
30104  } else if (std::signbit(src1[lane])) {
30105  vdst[lane] = +0.0;
30106  } else {
30107  vdst[lane] = -0.0;
30108  }
30109  } else if (std::isinf(src0[lane]) &&
30110  !std::signbit(src0[lane])) {
30111  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
30112  std::fpclassify(src1[lane]) == FP_ZERO) {
30113  vdst[lane] = NAN;
30114  } else if (!std::signbit(src1[lane])) {
30115  vdst[lane] = +INFINITY;
30116  } else {
30117  vdst[lane] = -INFINITY;
30118  }
30119  } else if (std::isinf(src0[lane]) &&
30120  std::signbit(src0[lane])) {
30121  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
30122  std::fpclassify(src1[lane]) == FP_ZERO) {
30123  vdst[lane] = NAN;
30124  } else if (std::signbit(src1[lane])) {
30125  vdst[lane] = +INFINITY;
30126  } else {
30127  vdst[lane] = -INFINITY;
30128  }
30129  } else {
30130  vdst[lane] = src0[lane] * src1[lane];
30131  }
30132  }
30133  }
30134 
30135  vdst.write();
30136  }
30137 
30139  : Inst_VOP3(iFmt, "v_min_f64", false)
30140  {
30141  setFlag(ALU);
30142  setFlag(F64);
30143  } // Inst_VOP3__V_MIN_F64
30144 
30146  {
30147  } // ~Inst_VOP3__V_MIN_F64
30148 
30149  // D.d = min(S0.d, S1.d).
30150  void
30152  {
30153  Wavefront *wf = gpuDynInst->wavefront();
30154  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30155  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
30156  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30157 
30158  src0.readSrc();
30159  src1.readSrc();
30160 
30161  if (instData.ABS & 0x1) {
30162  src0.absModifier();
30163  }
30164 
30165  if (instData.ABS & 0x2) {
30166  src1.absModifier();
30167  }
30168 
30169  if (extData.NEG & 0x1) {
30170  src0.negModifier();
30171  }
30172 
30173  if (extData.NEG & 0x2) {
30174  src1.negModifier();
30175  }
30176 
30180  assert(!(instData.ABS & 0x4));
30181  assert(!(extData.NEG & 0x4));
30182 
30183  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30184  if (wf->execMask(lane)) {
30185  vdst[lane] = std::fmin(src0[lane], src1[lane]);
30186  }
30187  }
30188 
30189  vdst.write();
30190  }
30191 
30193  : Inst_VOP3(iFmt, "v_max_f64", false)
30194  {
30195  setFlag(ALU);
30196  setFlag(F64);
30197  } // Inst_VOP3__V_MAX_F64
30198 
30200  {
30201  } // ~Inst_VOP3__V_MAX_F64
30202 
30203  // D.d = max(S0.d, S1.d).
30204  void
30206  {
30207  Wavefront *wf = gpuDynInst->wavefront();
30208  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30209  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
30210  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30211 
30212  src0.readSrc();
30213  src1.readSrc();
30214 
30215  if (instData.ABS & 0x1) {
30216  src0.absModifier();
30217  }
30218 
30219  if (instData.ABS & 0x2) {
30220  src1.absModifier();
30221  }
30222 
30223  if (extData.NEG & 0x1) {
30224  src0.negModifier();
30225  }
30226 
30227  if (extData.NEG & 0x2) {
30228  src1.negModifier();
30229  }
30230 
30234  assert(!(instData.ABS & 0x4));
30235  assert(!(extData.NEG & 0x4));
30236 
30237  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30238  if (wf->execMask(lane)) {
30239  vdst[lane] = std::fmax(src0[lane], src1[lane]);
30240  }
30241  }
30242 
30243  vdst.write();
30244  }
30245 
30247  : Inst_VOP3(iFmt, "v_ldexp_f64", false)
30248  {
30249  setFlag(ALU);
30250  setFlag(F64);
30251  } // Inst_VOP3__V_LDEXP_F64
30252 
30254  {
30255  } // ~Inst_VOP3__V_LDEXP_F64
30256 
30257  // D.d = pow(S0.d, S1.i[31:0]).
30258  void
30260  {
30261  Wavefront *wf = gpuDynInst->wavefront();
30262  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30263  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30264  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30265 
30266  src0.readSrc();
30267  src1.readSrc();
30268 
30269  if (instData.ABS & 0x1) {
30270  src0.absModifier();
30271  }
30272 
30273  if (extData.NEG & 0x1) {
30274  src0.negModifier();
30275  }
30276 
30280  assert(!(instData.ABS & 0x2));
30281  assert(!(instData.ABS & 0x4));
30282  assert(!(extData.NEG & 0x2));
30283  assert(!(extData.NEG & 0x4));
30284 
30285  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30286  if (wf->execMask(lane)) {
30287  if (std::isnan(src0[lane]) || std::isinf(src0[lane])) {
30288  vdst[lane] = src0[lane];
30289  } else if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
30290  || std::fpclassify(src0[lane]) == FP_ZERO) {
30291  if (std::signbit(src0[lane])) {
30292  vdst[lane] = -0.0;
30293  } else {
30294  vdst[lane] = +0.0;
30295  }
30296  } else {
30297  vdst[lane] = std::ldexp(src0[lane], src1[lane]);
30298  }
30299  }
30300  }
30301 
30302  vdst.write();
30303  }
30304 
30306  : Inst_VOP3(iFmt, "v_mul_lo_u32", false)
30307  {
30308  setFlag(ALU);
30309  } // Inst_VOP3__V_MUL_LO_U32
30310 
30312  {
30313  } // ~Inst_VOP3__V_MUL_LO_U32
30314 
30315  // D.u = S0.u * S1.u.
30316  void
30318  {
30319  Wavefront *wf = gpuDynInst->wavefront();
30320  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30321  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30322  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30323 
30324  src0.readSrc();
30325  src1.readSrc();
30326 
30330  assert(!(instData.ABS & 0x1));
30331  assert(!(instData.ABS & 0x2));
30332  assert(!(instData.ABS & 0x4));
30333  assert(!(extData.NEG & 0x1));
30334  assert(!(extData.NEG & 0x2));
30335  assert(!(extData.NEG & 0x4));
30336 
30337  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30338  if (wf->execMask(lane)) {
30339  VecElemI64 s0 = (VecElemI64)src0[lane];
30340  VecElemI64 s1 = (VecElemI64)src1[lane];
30341  vdst[lane] = (VecElemU32)((s0 * s1) & 0xffffffffLL);
30342  }
30343  }
30344 
30345  vdst.write();
30346  }
30347 
30349  : Inst_VOP3(iFmt, "v_mul_hi_u32", false)
30350  {
30351  setFlag(ALU);
30352  } // Inst_VOP3__V_MUL_HI_U32
30353 
30355  {
30356  } // ~Inst_VOP3__V_MUL_HI_U32
30357 
30358  // D.u = (S0.u * S1.u) >> 32.
30359  void
30361  {
30362  Wavefront *wf = gpuDynInst->wavefront();
30363  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30364  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30365  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30366 
30367  src0.readSrc();
30368  src1.readSrc();
30369 
30373  assert(!(instData.ABS & 0x1));
30374  assert(!(instData.ABS & 0x2));
30375  assert(!(instData.ABS & 0x4));
30376  assert(!(extData.NEG & 0x1));
30377  assert(!(extData.NEG & 0x2));
30378  assert(!(extData.NEG & 0x4));
30379 
30380  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30381  if (wf->execMask(lane)) {
30382  VecElemI64 s0 = (VecElemI64)src0[lane];
30383  VecElemI64 s1 = (VecElemI64)src1[lane];
30384  vdst[lane]
30385  = (VecElemU32)(((s0 * s1) >> 32) & 0xffffffffLL);
30386  }
30387  }
30388 
30389  vdst.write();
30390  }
30391 
30393  : Inst_VOP3(iFmt, "v_mul_hi_i32", false)
30394  {
30395  setFlag(ALU);
30396  } // Inst_VOP3__V_MUL_HI_I32
30397 
30399  {
30400  } // ~Inst_VOP3__V_MUL_HI_I32
30401 
30402  // D.i = (S0.i * S1.i) >> 32.
30403  void
30405  {
30406  Wavefront *wf = gpuDynInst->wavefront();
30407  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
30408  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
30409  VecOperandI32 vdst(gpuDynInst, instData.VDST);
30410 
30411  src0.readSrc();
30412  src1.readSrc();
30413 
30417  assert(!(instData.ABS & 0x1));
30418  assert(!(instData.ABS & 0x2));
30419  assert(!(instData.ABS & 0x4));
30420  assert(!(extData.NEG & 0x1));
30421  assert(!(extData.NEG & 0x2));
30422  assert(!(extData.NEG & 0x4));
30423 
30424  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30425  if (wf->execMask(lane)) {
30426  VecElemI64 s0 = (VecElemI64)src0[lane];
30427  VecElemI64 s1 = (VecElemI64)src1[lane];
30428  vdst[lane]
30429  = (VecElemI32)(((s0 * s1) >> 32LL) & 0xffffffffLL);
30430  }
30431  }
30432 
30433  vdst.write();
30434  }
30435 
30437  : Inst_VOP3(iFmt, "v_ldexp_f32", false)
30438  {
30439  setFlag(ALU);
30440  setFlag(F32);
30441  } // Inst_VOP3__V_LDEXP_F32
30442 
30444  {
30445  } // ~Inst_VOP3__V_LDEXP_F32
30446 
30447  // D.f = pow(S0.f, S1.i)
30448  void
30450  {
30451  Wavefront *wf = gpuDynInst->wavefront();
30452  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
30453  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
30454  VecOperandF32 vdst(gpuDynInst, instData.VDST);
30455 
30456  src0.readSrc();
30457  src1.readSrc();
30458 
30462  assert(!(instData.ABS & 0x2));
30463  assert(!(instData.ABS & 0x4));
30464  assert(!(extData.NEG & 0x2));
30465  assert(!(extData.NEG & 0x4));
30466 
30467  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30468  if (wf->execMask(lane)) {
30469  vdst[lane] = std::ldexp(src0[lane], src1[lane]);
30470  }
30471  }
30472 
30473  vdst.write();
30474  }
30475 
30477  : Inst_VOP3(iFmt, "v_readlane_b32", true)
30478  {
30479  setFlag(ALU);
30480  setFlag(IgnoreExec);
30481  } // Inst_VOP3__V_READLANE_B32
30482 
30484  {
30485  } // ~Inst_VOP3__V_READLANE_B32
30486 
30487  // Copy one VGPR value to one SGPR. D = SGPR-dest, S0 = Source Data (VGPR#
30488  // or M0(lds-direct)), S1 = Lane Select (SGPR or M0). Ignores exec mask.
30489  // Input and output modifiers not supported; this is an untyped operation.
30490  void
30492  {
30493  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30494  ConstScalarOperandU32 src1(gpuDynInst, extData.SRC1);
30495  ScalarOperandU32 sdst(gpuDynInst, instData.VDST);
30496 
30497  src0.readSrc();
30498  src1.read();
30499 
30503  assert(!(instData.ABS & 0x1));
30504  assert(!(instData.ABS & 0x2));
30505  assert(!(instData.ABS & 0x4));
30506  assert(!(extData.NEG & 0x1));
30507  assert(!(extData.NEG & 0x2));
30508  assert(!(extData.NEG & 0x4));
30509 
30510  sdst = src0[src1.rawData() & 0x3f];
30511 
30512  sdst.write();
30513  }
30514 
30516  : Inst_VOP3(iFmt, "v_writelane_b32", false)
30517  {
30518  setFlag(ALU);
30519  setFlag(IgnoreExec);
30520  } // Inst_VOP3__V_WRITELANE_B32
30521 
30523  {
30524  } // ~Inst_VOP3__V_WRITELANE_B32
30525 
30526  // Write value into one VGPR in one lane. D = VGPR-dest, S0 = Source Data
30527  // (sgpr, m0, exec or constants), S1 = Lane Select (SGPR or M0). Ignores
30528  // exec mask. Input and output modifiers not supported; this is an untyped
30529  // operation.
30530  void
30532  {
30533  ConstScalarOperandU32 src0(gpuDynInst, extData.SRC0);
30534  ConstScalarOperandU32 src1(gpuDynInst, extData.SRC1);
30535  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30536 
30537  src0.read();
30538  src1.read();
30539  vdst.read();
30540 
30544  assert(!(instData.ABS & 0x1));
30545  assert(!(instData.ABS & 0x2));
30546  assert(!(instData.ABS & 0x4));
30547  assert(!(extData.NEG & 0x1));
30548  assert(!(extData.NEG & 0x2));
30549  assert(!(extData.NEG & 0x4));
30550 
30551  vdst[src1.rawData() & 0x3f] = src0.rawData();
30552 
30553  vdst.write();
30554  }
30555 
30557  : Inst_VOP3(iFmt, "v_bcnt_u32_b32", false)
30558  {
30559  setFlag(ALU);
30560  } // Inst_VOP3__V_BCNT_U32_B32
30561 
30563  {
30564  } // ~Inst_VOP3__V_BCNT_U32_B32
30565 
30566  // D.u = CountOneBits(S0.u) + S1.u. Bit count.
30567  void
30569  {
30570  Wavefront *wf = gpuDynInst->wavefront();
30571  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30572  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30573  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30574 
30575  src0.readSrc();
30576  src1.readSrc();
30577 
30581  assert(!(instData.ABS & 0x1));
30582  assert(!(instData.ABS & 0x2));
30583  assert(!(instData.ABS & 0x4));
30584  assert(!(extData.NEG & 0x1));
30585  assert(!(extData.NEG & 0x2));
30586  assert(!(extData.NEG & 0x4));
30587 
30588  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30589  if (wf->execMask(lane)) {
30590  vdst[lane] = popCount(src0[lane]) + src1[lane];
30591  }
30592  }
30593 
30594  vdst.write();
30595  }
30596 
30598  InFmt_VOP3 *iFmt)
30599  : Inst_VOP3(iFmt, "v_mbcnt_lo_u32_b32", false)
30600  {
30601  setFlag(ALU);
30602  } // Inst_VOP3__V_MBCNT_LO_U32_B32
30603 
30605  {
30606  } // ~Inst_VOP3__V_MBCNT_LO_U32_B32
30607 
30608  // Masked bit count, ThreadPosition is the position of this thread in the
30609  // wavefront (in 0..63).
30610  void
30612  {
30613  Wavefront *wf = gpuDynInst->wavefront();
30614  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30615  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30616  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30617  uint64_t threadMask = 0;
30618 
30619  src0.readSrc();
30620  src1.readSrc();
30621 
30625  assert(!(instData.ABS & 0x1));
30626  assert(!(instData.ABS & 0x2));
30627  assert(!(instData.ABS & 0x4));
30628  assert(!(extData.NEG & 0x1));
30629  assert(!(extData.NEG & 0x2));
30630  assert(!(extData.NEG & 0x4));
30631 
30632  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30633  if (wf->execMask(lane)) {
30634  threadMask = ((1LL << lane) - 1LL);
30635  vdst[lane] = popCount(src0[lane] & bits(threadMask, 31, 0)) +
30636  src1[lane];
30637  }
30638  }
30639 
30640  vdst.write();
30641  } // execute
30642  // --- Inst_VOP3__V_MBCNT_HI_U32_B32 class methods ---
30643 
30645  InFmt_VOP3 *iFmt)
30646  : Inst_VOP3(iFmt, "v_mbcnt_hi_u32_b32", false)
30647  {
30648  setFlag(ALU);
30649  } // Inst_VOP3__V_MBCNT_HI_U32_B32
30650 
30652  {
30653  } // ~Inst_VOP3__V_MBCNT_HI_U32_B32
30654 
30655  // ThreadMask = (1 << ThreadPosition) - 1;
30656  // D.u = CountOneBits(S0.u & ThreadMask[63:32]) + S1.u.
30657  // Masked bit count, ThreadPosition is the position of this thread in the
30658  // wavefront (in 0..63).
30659  void
30661  {
30662  Wavefront *wf = gpuDynInst->wavefront();
30663  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30664  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30665  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30666  uint64_t threadMask = 0;
30667 
30668  src0.readSrc();
30669  src1.readSrc();
30670 
30674  assert(!(instData.ABS & 0x1));
30675  assert(!(instData.ABS & 0x2));
30676  assert(!(instData.ABS & 0x4));
30677  assert(!(extData.NEG & 0x1));
30678  assert(!(extData.NEG & 0x2));
30679  assert(!(extData.NEG & 0x4));
30680 
30681  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30682  if (wf->execMask(lane)) {
30683  threadMask = ((1LL << lane) - 1LL);
30684  vdst[lane] = popCount(src0[lane] & bits(threadMask, 63, 32)) +
30685  src1[lane];
30686  }
30687  }
30688 
30689  vdst.write();
30690  } // execute
30691  // --- Inst_VOP3__V_LSHLREV_B64 class methods ---
30692 
30694  : Inst_VOP3(iFmt, "v_lshlrev_b64", false)
30695  {
30696  setFlag(ALU);
30697  } // Inst_VOP3__V_LSHLREV_B64
30698 
30700  {
30701  } // ~Inst_VOP3__V_LSHLREV_B64
30702 
30703  // D.u64 = S1.u64 << S0.u[5:0].
30704  void
30706  {
30707  Wavefront *wf = gpuDynInst->wavefront();
30708  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30709  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
30710  VecOperandU64 vdst(gpuDynInst, instData.VDST);
30711 
30712  src0.readSrc();
30713  src1.readSrc();
30714 
30718  assert(!(instData.ABS & 0x1));
30719  assert(!(instData.ABS & 0x2));
30720  assert(!(instData.ABS & 0x4));
30721  assert(!(extData.NEG & 0x1));
30722  assert(!(extData.NEG & 0x2));
30723  assert(!(extData.NEG & 0x4));
30724 
30725  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30726  if (wf->execMask(lane)) {
30727  vdst[lane] = src1[lane] << bits(src0[lane], 5, 0);
30728  }
30729  }
30730 
30731  vdst.write();
30732  }
30733 
30735  : Inst_VOP3(iFmt, "v_lshrrev_b64", false)
30736  {
30737  setFlag(ALU);
30738  } // Inst_VOP3__V_LSHRREV_B64
30739 
30741  {
30742  } // ~Inst_VOP3__V_LSHRREV_B64
30743 
30744  // D.u64 = S1.u64 >> S0.u[5:0].
30745  // The vacated bits are set to zero.
30746  void
30748  {
30749  Wavefront *wf = gpuDynInst->wavefront();
30750  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30751  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
30752  VecOperandU64 vdst(gpuDynInst, instData.VDST);
30753 
30754  src0.readSrc();
30755  src1.readSrc();
30756 
30760  assert(!(instData.ABS & 0x1));
30761  assert(!(instData.ABS & 0x2));
30762  assert(!(instData.ABS & 0x4));
30763  assert(!(extData.NEG & 0x1));
30764  assert(!(extData.NEG & 0x2));
30765  assert(!(extData.NEG & 0x4));
30766 
30767  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30768  if (wf->execMask(lane)) {
30769  vdst[lane] = src1[lane] >> bits(src0[lane], 5, 0);
30770  }
30771  }
30772 
30773  vdst.write();
30774  }
30775 
30777  : Inst_VOP3(iFmt, "v_ashrrev_i64", false)
30778  {
30779  setFlag(ALU);
30780  } // Inst_VOP3__V_ASHRREV_I64
30781 
30783  {
30784  } // ~Inst_VOP3__V_ASHRREV_I64
30785 
30786  // D.u64 = signext(S1.u64) >> S0.u[5:0].
30787  // The vacated bits are set to the sign bit of the input value.
30788  void
30790  {
30791  Wavefront *wf = gpuDynInst->wavefront();
30792  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30793  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
30794  VecOperandU64 vdst(gpuDynInst, instData.VDST);
30795 
30796  src0.readSrc();
30797  src1.readSrc();
30798 
30802  assert(!(instData.ABS & 0x1));
30803  assert(!(instData.ABS & 0x2));
30804  assert(!(instData.ABS & 0x4));
30805  assert(!(extData.NEG & 0x1));
30806  assert(!(extData.NEG & 0x2));
30807  assert(!(extData.NEG & 0x4));
30808 
30809  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30810  if (wf->execMask(lane)) {
30811  vdst[lane]
30812  = src1[lane] >> bits(src0[lane], 5, 0);
30813  }
30814  }
30815 
30816  vdst.write();
30817  }
30818 
30820  : Inst_VOP3(iFmt, "v_trig_preop_f64", false)
30821  {
30822  setFlag(ALU);
30823  setFlag(F64);
30824  } // Inst_VOP3__V_TRIG_PREOP_F64
30825 
30827  {
30828  } // ~Inst_VOP3__V_TRIG_PREOP_F64
30829 
30830  void
30832  {
30834  }
30835 
30837  : Inst_VOP3(iFmt, "v_bfm_b32", false)
30838  {
30839  setFlag(ALU);
30840  } // Inst_VOP3__V_BFM_B32
30841 
30843  {
30844  } // ~Inst_VOP3__V_BFM_B32
30845 
30846  // D.u = ((1 << S0.u[4:0]) - 1) << S1.u[4:0];
30847  void
30849  {
30850  Wavefront *wf = gpuDynInst->wavefront();
30851  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30852  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30853  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30854 
30855  src0.readSrc();
30856  src1.readSrc();
30857 
30861  assert(!(instData.ABS & 0x1));
30862  assert(!(instData.ABS & 0x2));
30863  assert(!(instData.ABS & 0x4));
30864  assert(!(extData.NEG & 0x1));
30865  assert(!(extData.NEG & 0x2));
30866  assert(!(extData.NEG & 0x4));
30867 
30868  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30869  if (wf->execMask(lane)) {
30870  vdst[lane] = ((1 << bits(src0[lane], 4, 0)) - 1)
30871  << bits(src1[lane], 4, 0);
30872  }
30873  }
30874 
30875  vdst.write();
30876  }
30877 
30879  InFmt_VOP3 *iFmt)
30880  : Inst_VOP3(iFmt, "v_cvt_pknorm_i16_f32", false)
30881  {
30882  setFlag(ALU);
30883  setFlag(F32);
30884  } // Inst_VOP3__V_CVT_PKNORM_I16_F32
30885 
30887  {
30888  } // ~Inst_VOP3__V_CVT_PKNORM_I16_F32
30889 
30890  // D = {(snorm)S1.f, (snorm)S0.f}.
30891  void
30893  {
30895  }
30896 
30898  InFmt_VOP3 *iFmt)
30899  : Inst_VOP3(iFmt, "v_cvt_pknorm_u16_f32", false)
30900  {
30901  setFlag(ALU);
30902  setFlag(F32);
30903  } // Inst_VOP3__V_CVT_PKNORM_U16_F32
30904 
30906  {
30907  } // ~Inst_VOP3__V_CVT_PKNORM_U16_F32
30908 
30909  // D = {(unorm)S1.f, (unorm)S0.f}.
30910  void
30912  {
30914  }
30915 
30917  InFmt_VOP3 *iFmt)
30918  : Inst_VOP3(iFmt, "v_cvt_pkrtz_f16_f32", false)
30919  {
30920  setFlag(ALU);
30921  setFlag(F32);
30922  } // Inst_VOP3__V_CVT_PKRTZ_F16_F32
30923 
30925  {
30926  } // ~Inst_VOP3__V_CVT_PKRTZ_F16_F32
30927 
30928  void
30930  {
30932  }
30933 
30935  : Inst_VOP3(iFmt, "v_cvt_pk_u16_u32", false)
30936  {
30937  setFlag(ALU);
30938  } // Inst_VOP3__V_CVT_PK_U16_U32
30939 
30941  {
30942  } // ~Inst_VOP3__V_CVT_PK_U16_U32
30943 
30944  // D = {uint32_to_uint16(S1.u), uint32_to_uint16(S0.u)}.
30945  void
30947  {
30949  }
30950 
30952  : Inst_VOP3(iFmt, "v_cvt_pk_i16_i32", false)
30953  {
30954  setFlag(ALU);
30955  } // Inst_VOP3__V_CVT_PK_I16_I32
30956 
30958  {
30959  } // ~Inst_VOP3__V_CVT_PK_I16_I32
30960 
30961  // D = {int32_to_int16(S1.i), int32_to_int16(S0.i)}.
30962  void
30964  {
30966  }
30967 
30969  : Inst_DS(iFmt, "ds_add_u32")
30970  {
30971  } // Inst_DS__DS_ADD_U32
30972 
30974  {
30975  } // ~Inst_DS__DS_ADD_U32
30976 
30977  // tmp = MEM[ADDR];
30978  // MEM[ADDR] += DATA;
30979  // RETURN_DATA = tmp.
30980  void
30982  {
30984  }
30985 
30987  : Inst_DS(iFmt, "ds_sub_u32")
30988  {
30989  } // Inst_DS__DS_SUB_U32
30990 
30992  {
30993  } // ~Inst_DS__DS_SUB_U32
30994 
30995  // tmp = MEM[ADDR];
30996  // MEM[ADDR] -= DATA;
30997  // RETURN_DATA = tmp.
30998  void
31000  {
31002  }
31003 
31005  : Inst_DS(iFmt, "ds_rsub_u32")
31006  {
31007  } // Inst_DS__DS_RSUB_U32
31008 
31010  {
31011  } // ~Inst_DS__DS_RSUB_U32
31012 
31013  // tmp = MEM[ADDR];
31014  // MEM[ADDR] = DATA - MEM[ADDR];
31015  // RETURN_DATA = tmp.
31016  // Subtraction with reversed operands.
31017  void
31019  {
31021  }
31022 
31024  : Inst_DS(iFmt, "ds_inc_u32")
31025  {
31026  } // Inst_DS__DS_INC_U32
31027 
31029  {
31030  } // ~Inst_DS__DS_INC_U32
31031 
31032  // tmp = MEM[ADDR];
31033  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
31034  // RETURN_DATA = tmp.
31035  void
31037  {
31039  }
31040 
31042  : Inst_DS(iFmt, "ds_dec_u32")
31043  {
31044  } // Inst_DS__DS_DEC_U32
31045 
31047  {
31048  } // ~Inst_DS__DS_DEC_U32
31049 
31050  // tmp = MEM[ADDR];
31051  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
31052  // (unsigned compare); RETURN_DATA = tmp.
31053  void
31055  {
31057  }
31058 
31060  : Inst_DS(iFmt, "ds_min_i32")
31061  {
31062  } // Inst_DS__DS_MIN_I32
31063 
31065  {
31066  } // ~Inst_DS__DS_MIN_I32
31067 
31068  // tmp = MEM[ADDR];
31069  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
31070  // RETURN_DATA = tmp.
31071  void
31073  {
31075  }
31076 
31078  : Inst_DS(iFmt, "ds_max_i32")
31079  {
31080  } // Inst_DS__DS_MAX_I32
31081 
31083  {
31084  } // ~Inst_DS__DS_MAX_I32
31085 
31086  // tmp = MEM[ADDR];
31087  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
31088  // RETURN_DATA = tmp.
31089  void
31091  {
31093  }
31094 
31096  : Inst_DS(iFmt, "ds_min_u32")
31097  {
31098  } // Inst_DS__DS_MIN_U32
31099 
31101  {
31102  } // ~Inst_DS__DS_MIN_U32
31103 
31104  // tmp = MEM[ADDR];
31105  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
31106  // RETURN_DATA = tmp.
31107  void
31109  {
31111  }
31112 
31114  : Inst_DS(iFmt, "ds_max_u32")
31115  {
31116  } // Inst_DS__DS_MAX_U32
31117 
31119  {
31120  } // ~Inst_DS__DS_MAX_U32
31121 
31122  // tmp = MEM[ADDR];
31123  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
31124  // RETURN_DATA = tmp.
31125  void
31127  {
31129  }
31130 
31132  : Inst_DS(iFmt, "ds_and_b32")
31133  {
31134  } // Inst_DS__DS_AND_B32
31135 
31137  {
31138  } // ~Inst_DS__DS_AND_B32
31139 
31140  // tmp = MEM[ADDR];
31141  // MEM[ADDR] &= DATA;
31142  // RETURN_DATA = tmp.
31143  void
31145  {
31147  }
31148 
31150  : Inst_DS(iFmt, "ds_or_b32")
31151  {
31152  } // Inst_DS__DS_OR_B32
31153 
31155  {
31156  } // ~Inst_DS__DS_OR_B32
31157 
31158  // tmp = MEM[ADDR];
31159  // MEM[ADDR] |= DATA;
31160  // RETURN_DATA = tmp.
31161  void
31163  {
31165  }
31166 
31168  : Inst_DS(iFmt, "ds_xor_b32")
31169  {
31170  } // Inst_DS__DS_XOR_B32
31171 
31173  {
31174  } // ~Inst_DS__DS_XOR_B32
31175 
31176  // tmp = MEM[ADDR];
31177  // MEM[ADDR] ^= DATA;
31178  // RETURN_DATA = tmp.
31179  void
31181  {
31183  }
31184 
31186  : Inst_DS(iFmt, "ds_mskor_b32")
31187  {
31188  } // Inst_DS__DS_MSKOR_B32
31189 
31191  {
31192  } // ~Inst_DS__DS_MSKOR_B32
31193 
31194  // tmp = MEM[ADDR];
31195  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
31196  // RETURN_DATA = tmp.
31197  void
31199  {
31201  }
31202 
31204  : Inst_DS(iFmt, "ds_write_b32")
31205  {
31206  setFlag(MemoryRef);
31207  setFlag(Store);
31208  } // Inst_DS__DS_WRITE_B32
31209 
31211  {
31212  } // ~Inst_DS__DS_WRITE_B32
31213 
31214  // MEM[ADDR] = DATA.
31215  // Write dword.
31216  void
31218  {
31219  Wavefront *wf = gpuDynInst->wavefront();
31220  gpuDynInst->execUnitId = wf->execUnitId;
31221  gpuDynInst->exec_mask = wf->execMask();
31222  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31223  gpuDynInst->latency.set(
31224  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31225  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31226  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
31227 
31228  addr.read();
31229  data.read();
31230 
31231  calcAddr(gpuDynInst, addr);
31232 
31233  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31234  if (wf->execMask(lane)) {
31235  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane]
31236  = data[lane];
31237  }
31238  }
31239 
31240  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31241 
31242  wf->wrLmReqsInPipe--;
31243  wf->outstandingReqsWrLm++;
31244  wf->outstandingReqs++;
31246  }
31247 
31248  void
31250  {
31251  Addr offset0 = instData.OFFSET0;
31252  Addr offset1 = instData.OFFSET1;
31253  Addr offset = (offset1 << 8) | offset0;
31254 
31255  initMemWrite<VecElemU32>(gpuDynInst, offset);
31256  } // initiateAcc
31257 
31258  void
31260  {
31261  } // completeAcc
31262 
31264  : Inst_DS(iFmt, "ds_write2_b32")
31265  {
31266  setFlag(MemoryRef);
31267  setFlag(Store);
31268  } // Inst_DS__DS_WRITE2_B32
31269 
31271  {
31272  } // ~Inst_DS__DS_WRITE2_B32
31273 
31274  // MEM[ADDR_BASE + OFFSET0 * 4] = DATA;
31275  // MEM[ADDR_BASE + OFFSET1 * 4] = DATA2.
31276  // Write 2 dwords.
31277  void
31279  {
31280  Wavefront *wf = gpuDynInst->wavefront();
31281  gpuDynInst->execUnitId = wf->execUnitId;
31282  gpuDynInst->exec_mask = wf->execMask();
31283  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31284  gpuDynInst->latency.set(
31285  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31286  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31287  ConstVecOperandU32 data0(gpuDynInst, extData.DATA0);
31288  ConstVecOperandU32 data1(gpuDynInst, extData.DATA1);
31289 
31290  addr.read();
31291  data0.read();
31292  data1.read();
31293 
31294  calcAddr(gpuDynInst, addr);
31295 
31296  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31297  if (wf->execMask(lane)) {
31298  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 2]
31299  = data0[lane];
31300  (reinterpret_cast<VecElemU32*>(
31301  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
31302  }
31303  }
31304 
31305  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31306 
31307  wf->wrLmReqsInPipe--;
31308  wf->outstandingReqsWrLm++;
31309  wf->outstandingReqs++;
31311  }
31312 
31313  void
31315  {
31316  Addr offset0 = instData.OFFSET0 * 4;
31317  Addr offset1 = instData.OFFSET1 * 4;
31318 
31319  initDualMemWrite<VecElemU32>(gpuDynInst, offset0, offset1);
31320  }
31321 
31322  void
31324  {
31325  }
31326 
31328  : Inst_DS(iFmt, "ds_write2st64_b32")
31329  {
31330  setFlag(MemoryRef);
31331  setFlag(Store);
31332  } // Inst_DS__DS_WRITE2ST64_B32
31333 
31335  {
31336  } // ~Inst_DS__DS_WRITE2ST64_B32
31337 
31338  // MEM[ADDR_BASE + OFFSET0 * 4 * 64] = DATA;
31339  // MEM[ADDR_BASE + OFFSET1 * 4 * 64] = DATA2;
31340  // Write 2 dwords.
31341  void
31343  {
31344  Wavefront *wf = gpuDynInst->wavefront();
31345  gpuDynInst->execUnitId = wf->execUnitId;
31346  gpuDynInst->exec_mask = wf->execMask();
31347  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31348  gpuDynInst->latency.set(
31349  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31350  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31351  ConstVecOperandU32 data0(gpuDynInst, extData.DATA0);
31352  ConstVecOperandU32 data1(gpuDynInst, extData.DATA1);
31353 
31354  addr.read();
31355  data0.read();
31356  data1.read();
31357 
31358  calcAddr(gpuDynInst, addr);
31359 
31360  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31361  if (wf->execMask(lane)) {
31362  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 2]
31363  = data0[lane];
31364  (reinterpret_cast<VecElemU32*>(
31365  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
31366  }
31367  }
31368 
31369  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31370 
31371  wf->wrLmReqsInPipe--;
31372  wf->outstandingReqsWrLm++;
31373  wf->outstandingReqs++;
31375  } // execute
31376 
31377  void
31379  {
31380  Addr offset0 = instData.OFFSET0 * 4 * 64;
31381  Addr offset1 = instData.OFFSET1 * 4 * 64;
31382 
31383  initDualMemWrite<VecElemU32>(gpuDynInst, offset0, offset1);
31384  }
31385 
31386  void
31388  {
31389  }
31390  // --- Inst_DS__DS_CMPST_B32 class methods ---
31391 
31393  : Inst_DS(iFmt, "ds_cmpst_b32")
31394  {
31395  } // Inst_DS__DS_CMPST_B32
31396 
31398  {
31399  } // ~Inst_DS__DS_CMPST_B32
31400 
31401  // tmp = MEM[ADDR];
31402  // src = DATA2;
31403  // cmp = DATA;
31404  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
31405  // RETURN_DATA[0] = tmp.
31406  // Compare and store.
31407  void
31409  {
31411  }
31412 
31414  : Inst_DS(iFmt, "ds_cmpst_f32")
31415  {
31416  setFlag(F32);
31417  } // Inst_DS__DS_CMPST_F32
31418 
31420  {
31421  } // ~Inst_DS__DS_CMPST_F32
31422 
31423  // tmp = MEM[ADDR];
31424  // src = DATA2;
31425  // cmp = DATA;
31426  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
31427  // RETURN_DATA[0] = tmp.
31428  void
31430  {
31432  }
31433 
31435  : Inst_DS(iFmt, "ds_min_f32")
31436  {
31437  setFlag(F32);
31438  } // Inst_DS__DS_MIN_F32
31439 
31441  {
31442  } // ~Inst_DS__DS_MIN_F32
31443 
31444  // tmp = MEM[ADDR];
31445  // src = DATA;
31446  // cmp = DATA2;
31447  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
31448  void
31450  {
31452  }
31453 
31455  : Inst_DS(iFmt, "ds_max_f32")
31456  {
31457  setFlag(F32);
31458  } // Inst_DS__DS_MAX_F32
31459 
31461  {
31462  } // ~Inst_DS__DS_MAX_F32
31463 
31464  // tmp = MEM[ADDR];
31465  // src = DATA;
31466  // cmp = DATA2;
31467  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
31468  void
31470  {
31472  }
31473 
31475  : Inst_DS(iFmt, "ds_nop")
31476  {
31477  setFlag(Nop);
31478  } // Inst_DS__DS_NOP
31479 
31481  {
31482  } // ~Inst_DS__DS_NOP
31483 
31484  // Do nothing.
31485  void
31487  {
31488  }
31489 
31491  : Inst_DS(iFmt, "ds_add_f32")
31492  {
31493  setFlag(F32);
31494  } // Inst_DS__DS_ADD_F32
31495 
31497  {
31498  } // ~Inst_DS__DS_ADD_F32
31499 
31500  // tmp = MEM[ADDR];
31501  // MEM[ADDR] += DATA;
31502  // RETURN_DATA = tmp.
31503  void
31505  {
31507  }
31508 
31510  : Inst_DS(iFmt, "ds_write_b8")
31511  {
31512  setFlag(MemoryRef);
31513  setFlag(Store);
31514  } // Inst_DS__DS_WRITE_B8
31515 
31517  {
31518  } // ~Inst_DS__DS_WRITE_B8
31519 
31520  // MEM[ADDR] = DATA[7:0].
31521  void
31523  {
31524  Wavefront *wf = gpuDynInst->wavefront();
31525  gpuDynInst->execUnitId = wf->execUnitId;
31526  gpuDynInst->exec_mask = wf->execMask();
31527  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31528  gpuDynInst->latency.set(
31529  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31530  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31531  ConstVecOperandU8 data(gpuDynInst, extData.DATA0);
31532 
31533  addr.read();
31534  data.read();
31535 
31536  calcAddr(gpuDynInst, addr);
31537 
31538  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31539  if (wf->execMask(lane)) {
31540  (reinterpret_cast<VecElemU8*>(gpuDynInst->d_data))[lane]
31541  = data[lane];
31542  }
31543  }
31544 
31545  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31546 
31547  wf->wrLmReqsInPipe--;
31548  wf->outstandingReqsWrLm++;
31549  wf->outstandingReqs++;
31551  } // execute
31552 
31553  void
31555  {
31556  Addr offset0 = instData.OFFSET0;
31557  Addr offset1 = instData.OFFSET1;
31558  Addr offset = (offset1 << 8) | offset0;
31559 
31560  initMemWrite<VecElemU8>(gpuDynInst, offset);
31561  } // initiateAcc
31562 
31563  void
31565  {
31566  } // completeAcc
31567  // --- Inst_DS__DS_WRITE_B16 class methods ---
31568 
31570  : Inst_DS(iFmt, "ds_write_b16")
31571  {
31572  setFlag(MemoryRef);
31573  setFlag(Store);
31574  } // Inst_DS__DS_WRITE_B16
31575 
31577  {
31578  } // ~Inst_DS__DS_WRITE_B16
31579 
31580  // MEM[ADDR] = DATA[15:0]
31581  void
31583  {
31584  Wavefront *wf = gpuDynInst->wavefront();
31585  gpuDynInst->execUnitId = wf->execUnitId;
31586  gpuDynInst->exec_mask = wf->execMask();
31587  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31588  gpuDynInst->latency.set(
31589  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31590  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31591  ConstVecOperandU16 data(gpuDynInst, extData.DATA0);
31592 
31593  addr.read();
31594  data.read();
31595 
31596  calcAddr(gpuDynInst, addr);
31597 
31598  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31599  if (wf->execMask(lane)) {
31600  (reinterpret_cast<VecElemU16*>(gpuDynInst->d_data))[lane]
31601  = data[lane];
31602  }
31603  }
31604 
31605  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31606 
31607  wf->wrLmReqsInPipe--;
31608  wf->outstandingReqsWrLm++;
31609  wf->outstandingReqs++;
31611  } // execute
31612 
31613  void
31615  {
31616  Addr offset0 = instData.OFFSET0;
31617  Addr offset1 = instData.OFFSET1;
31618  Addr offset = (offset1 << 8) | offset0;
31619 
31620  initMemWrite<VecElemU16>(gpuDynInst, offset);
31621  } // initiateAcc
31622 
31623  void
31625  {
31626  } // completeAcc
31627  // --- Inst_DS__DS_ADD_RTN_U32 class methods ---
31628 
31630  : Inst_DS(iFmt, "ds_add_rtn_u32")
31631  {
31632  } // Inst_DS__DS_ADD_RTN_U32
31633 
31635  {
31636  } // ~Inst_DS__DS_ADD_RTN_U32
31637 
31638  // tmp = MEM[ADDR];
31639  // MEM[ADDR] += DATA;
31640  // RETURN_DATA = tmp.
31641  void
31643  {
31645  }
31646 
31648  : Inst_DS(iFmt, "ds_sub_rtn_u32")
31649  {
31650  } // Inst_DS__DS_SUB_RTN_U32
31651 
31653  {
31654  } // ~Inst_DS__DS_SUB_RTN_U32
31655 
31656  // tmp = MEM[ADDR];
31657  // MEM[ADDR] -= DATA;
31658  // RETURN_DATA = tmp.
31659  void
31661  {
31663  }
31664 
31666  : Inst_DS(iFmt, "ds_rsub_rtn_u32")
31667  {
31668  } // Inst_DS__DS_RSUB_RTN_U32
31669 
31671  {
31672  } // ~Inst_DS__DS_RSUB_RTN_U32
31673 
31674  // tmp = MEM[ADDR];
31675  // MEM[ADDR] = DATA - MEM[ADDR];
31676  // RETURN_DATA = tmp.
31677  void
31679  {
31681  }
31682 
31684  : Inst_DS(iFmt, "ds_inc_rtn_u32")
31685  {
31686  } // Inst_DS__DS_INC_RTN_U32
31687 
31689  {
31690  } // ~Inst_DS__DS_INC_RTN_U32
31691 
31692  // tmp = MEM[ADDR];
31693  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
31694  // RETURN_DATA = tmp.
31695  void
31697  {
31699  }
31700 
31702  : Inst_DS(iFmt, "ds_dec_rtn_u32")
31703  {
31704  } // Inst_DS__DS_DEC_RTN_U32
31705 
31707  {
31708  } // ~Inst_DS__DS_DEC_RTN_U32
31709 
31710  // tmp = MEM[ADDR];
31711  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
31712  // (unsigned compare); RETURN_DATA = tmp.
31713  void
31715  {
31717  }
31718 
31720  : Inst_DS(iFmt, "ds_min_rtn_i32")
31721  {
31722  } // Inst_DS__DS_MIN_RTN_I32
31723 
31725  {
31726  } // ~Inst_DS__DS_MIN_RTN_I32
31727 
31728  // tmp = MEM[ADDR];
31729  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
31730  // RETURN_DATA = tmp.
31731  void
31733  {
31735  }
31736 
31738  : Inst_DS(iFmt, "ds_max_rtn_i32")
31739  {
31740  } // Inst_DS__DS_MAX_RTN_I32
31741 
31743  {
31744  } // ~Inst_DS__DS_MAX_RTN_I32
31745 
31746  // tmp = MEM[ADDR];
31747  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
31748  // RETURN_DATA = tmp.
31749  void
31751  {
31753  }
31754 
31756  : Inst_DS(iFmt, "ds_min_rtn_u32")
31757  {
31758  } // Inst_DS__DS_MIN_RTN_U32
31759 
31761  {
31762  } // ~Inst_DS__DS_MIN_RTN_U32
31763 
31764  // tmp = MEM[ADDR];
31765  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
31766  // RETURN_DATA = tmp.
31767  void
31769  {
31771  }
31772 
31774  : Inst_DS(iFmt, "ds_max_rtn_u32")
31775  {
31776  } // Inst_DS__DS_MAX_RTN_U32
31777 
31779  {
31780  } // ~Inst_DS__DS_MAX_RTN_U32
31781 
31782  // tmp = MEM[ADDR];
31783  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
31784  // RETURN_DATA = tmp.
31785  void
31787  {
31789  }
31790 
31792  : Inst_DS(iFmt, "ds_and_rtn_b32")
31793  {
31794  } // Inst_DS__DS_AND_RTN_B32
31795 
31797  {
31798  } // ~Inst_DS__DS_AND_RTN_B32
31799 
31800  // tmp = MEM[ADDR];
31801  // MEM[ADDR] &= DATA;
31802  // RETURN_DATA = tmp.
31803  void
31805  {
31807  }
31808 
31810  : Inst_DS(iFmt, "ds_or_rtn_b32")
31811  {
31812  } // Inst_DS__DS_OR_RTN_B32
31813 
31815  {
31816  } // ~Inst_DS__DS_OR_RTN_B32
31817 
31818  // tmp = MEM[ADDR];
31819  // MEM[ADDR] |= DATA;
31820  // RETURN_DATA = tmp.
31821  void
31823  {
31825  }
31826 
31828  : Inst_DS(iFmt, "ds_xor_rtn_b32")
31829  {
31830  } // Inst_DS__DS_XOR_RTN_B32
31831 
31833  {
31834  } // ~Inst_DS__DS_XOR_RTN_B32
31835 
31836  // tmp = MEM[ADDR];
31837  // MEM[ADDR] ^= DATA;
31838  // RETURN_DATA = tmp.
31839  void
31841  {
31843  }
31844 
31846  : Inst_DS(iFmt, "ds_mskor_rtn_b32")
31847  {
31848  } // Inst_DS__DS_MSKOR_RTN_B32
31849 
31851  {
31852  } // ~Inst_DS__DS_MSKOR_RTN_B32
31853 
31854  // tmp = MEM[ADDR];
31855  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
31856  // RETURN_DATA = tmp.
31857  void
31859  {
31861  }
31862 
31864  : Inst_DS(iFmt, "ds_wrxchg_rtn_b32")
31865  {
31866  } // Inst_DS__DS_WRXCHG_RTN_B32
31867 
31869  {
31870  } // ~Inst_DS__DS_WRXCHG_RTN_B32
31871 
31872  // tmp = MEM[ADDR];
31873  // MEM[ADDR] = DATA;
31874  // RETURN_DATA = tmp.
31875  // Write-exchange operation.
31876  void
31878  {
31880  }
31881 
31883  : Inst_DS(iFmt, "ds_wrxchg2_rtn_b32")
31884  {
31885  } // Inst_DS__DS_WRXCHG2_RTN_B32
31886 
31888  {
31889  } // ~Inst_DS__DS_WRXCHG2_RTN_B32
31890 
31891  // Write-exchange 2 separate dwords.
31892  void
31894  {
31896  }
31897 
31899  InFmt_DS *iFmt)
31900  : Inst_DS(iFmt, "ds_wrxchg2st64_rtn_b32")
31901  {
31902  } // Inst_DS__DS_WRXCHG2ST64_RTN_B32
31903 
31905  {
31906  } // ~Inst_DS__DS_WRXCHG2ST64_RTN_B32
31907 
31908  // Write-exchange 2 separate dwords with a stride of 64 dwords.
31909  void
31911  {
31913  }
31914 
31916  : Inst_DS(iFmt, "ds_cmpst_rtn_b32")
31917  {
31918  } // Inst_DS__DS_CMPST_RTN_B32
31919 
31921  {
31922  } // ~Inst_DS__DS_CMPST_RTN_B32
31923 
31924  // tmp = MEM[ADDR];
31925  // src = DATA2;
31926  // cmp = DATA;
31927  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
31928  // RETURN_DATA[0] = tmp.
31929  // Compare and store.
31930  void
31932  {
31934  }
31935 
31937  : Inst_DS(iFmt, "ds_cmpst_rtn_f32")
31938  {
31939  setFlag(F32);
31940  } // Inst_DS__DS_CMPST_RTN_F32
31941 
31943  {
31944  } // ~Inst_DS__DS_CMPST_RTN_F32
31945 
31946  // tmp = MEM[ADDR];
31947  // src = DATA2;
31948  // cmp = DATA;
31949  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
31950  // RETURN_DATA[0] = tmp.
31951  void
31953  {
31955  }
31956 
31958  : Inst_DS(iFmt, "ds_min_rtn_f32")
31959  {
31960  setFlag(F32);
31961  } // Inst_DS__DS_MIN_RTN_F32
31962 
31964  {
31965  } // ~Inst_DS__DS_MIN_RTN_F32
31966 
31967  // tmp = MEM[ADDR];
31968  // src = DATA;
31969  // cmp = DATA2;
31970  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
31971  void
31973  {
31975  }
31976 
31978  : Inst_DS(iFmt, "ds_max_rtn_f32")
31979  {
31980  setFlag(F32);
31981  } // Inst_DS__DS_MAX_RTN_F32
31982 
31984  {
31985  } // ~Inst_DS__DS_MAX_RTN_F32
31986 
31987  // tmp = MEM[ADDR];
31988  // src = DATA;
31989  // cmp = DATA2;
31990  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
31991  void
31993  {
31995  }
31996 
31998  : Inst_DS(iFmt, "ds_wrap_rtn_b32")
31999  {
32000  } // Inst_DS__DS_WRAP_RTN_B32
32001 
32003  {
32004  } // ~Inst_DS__DS_WRAP_RTN_B32
32005 
32006  // tmp = MEM[ADDR];
32007  // MEM[ADDR] = (tmp >= DATA) ? tmp - DATA : tmp + DATA2;
32008  // RETURN_DATA = tmp.
32009  void
32011  {
32013  }
32014 
32016  : Inst_DS(iFmt, "ds_add_rtn_f32")
32017  {
32018  setFlag(F32);
32019  } // Inst_DS__DS_ADD_RTN_F32
32020 
32022  {
32023  } // ~Inst_DS__DS_ADD_RTN_F32
32024 
32025  // tmp = MEM[ADDR];
32026  // MEM[ADDR] += DATA;
32027  // RETURN_DATA = tmp.
32028  void
32030  {
32031  }
32032 
32034  : Inst_DS(iFmt, "ds_read_b32")
32035  {
32036  setFlag(MemoryRef);
32037  setFlag(Load);
32038  } // Inst_DS__DS_READ_B32
32039 
32041  {
32042  } // ~Inst_DS__DS_READ_B32
32043 
32044  // RETURN_DATA = MEM[ADDR].
32045  // Dword read.
32046  void
32048  {
32049  Wavefront *wf = gpuDynInst->wavefront();
32050  gpuDynInst->execUnitId = wf->execUnitId;
32051  gpuDynInst->exec_mask = wf->execMask();
32052  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32053  gpuDynInst->latency.set(
32054  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32055  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32056 
32057  addr.read();
32058 
32059  calcAddr(gpuDynInst, addr);
32060 
32061  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32062 
32063  wf->rdLmReqsInPipe--;
32064  wf->outstandingReqsRdLm++;
32065  wf->outstandingReqs++;
32067  }
32068 
32069  void
32071  {
32072  Addr offset0 = instData.OFFSET0;
32073  Addr offset1 = instData.OFFSET1;
32074  Addr offset = (offset1 << 8) | offset0;
32075 
32076  initMemRead<VecElemU32>(gpuDynInst, offset);
32077  } // initiateAcc
32078 
32079  void
32081  {
32082  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32083 
32084  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32085  if (gpuDynInst->exec_mask[lane]) {
32086  vdst[lane] = (reinterpret_cast<VecElemU32*>(
32087  gpuDynInst->d_data))[lane];
32088  }
32089  }
32090 
32091  vdst.write();
32092  } // completeAcc
32093 
32095  : Inst_DS(iFmt, "ds_read2_b32")
32096  {
32097  setFlag(MemoryRef);
32098  setFlag(Load);
32099  } // Inst_DS__DS_READ2_B32
32100 
32102  {
32103  } // ~Inst_DS__DS_READ2_B32
32104 
32105  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 4];
32106  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 4].
32107  // Read 2 dwords.
32108  void
32110  {
32111  Wavefront *wf = gpuDynInst->wavefront();
32112  gpuDynInst->execUnitId = wf->execUnitId;
32113  gpuDynInst->exec_mask = wf->execMask();
32114  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32115  gpuDynInst->latency.set(
32116  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32117  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32118 
32119  addr.read();
32120 
32121  calcAddr(gpuDynInst, addr);
32122 
32123  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32124 
32125  wf->rdLmReqsInPipe--;
32126  wf->outstandingReqsRdLm++;
32127  wf->outstandingReqs++;
32129  }
32130 
32131  void
32133  {
32134  Addr offset0 = instData.OFFSET0 * 4;
32135  Addr offset1 = instData.OFFSET1 * 4;
32136 
32137  initDualMemRead<VecElemU32>(gpuDynInst, offset0, offset1);
32138  } // initiateAcc
32139 
32140  void
32142  {
32143  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
32144  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
32145 
32146  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32147  if (gpuDynInst->exec_mask[lane]) {
32148  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
32149  gpuDynInst->d_data))[lane * 2];
32150  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
32151  gpuDynInst->d_data))[lane * 2 + 1];
32152  }
32153  }
32154 
32155  vdst0.write();
32156  vdst1.write();
32157  } // completeAcc
32158 
32160  : Inst_DS(iFmt, "ds_read2st64_b32")
32161  {
32162  setFlag(MemoryRef);
32163  setFlag(Load);
32164  } // Inst_DS__DS_READ2ST64_B32
32165 
32167  {
32168  } // ~Inst_DS__DS_READ2ST64_B32
32169 
32170  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 4 * 64];
32171  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 4 * 64].
32172  // Read 2 dwords.
32173  void
32175  {
32176  Wavefront *wf = gpuDynInst->wavefront();
32177  gpuDynInst->execUnitId = wf->execUnitId;
32178  gpuDynInst->exec_mask = wf->execMask();
32179  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32180  gpuDynInst->latency.set(
32181  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32182  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32183 
32184  addr.read();
32185 
32186  calcAddr(gpuDynInst, addr);
32187 
32188  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32189 
32190  wf->rdLmReqsInPipe--;
32191  wf->outstandingReqsRdLm++;
32192  wf->outstandingReqs++;
32194  } // execute
32195 
32196  void
32198  {
32199  Addr offset0 = (instData.OFFSET0 * 4 * 64);
32200  Addr offset1 = (instData.OFFSET1 * 4 * 64);
32201 
32202  initDualMemRead<VecElemU32>(gpuDynInst, offset0, offset1);
32203  }
32204 
32205  void
32207  {
32208  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
32209  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
32210 
32211  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32212  if (gpuDynInst->exec_mask[lane]) {
32213  vdst0[lane] = (reinterpret_cast<VecElemU64*>(
32214  gpuDynInst->d_data))[lane * 2];
32215  vdst1[lane] = (reinterpret_cast<VecElemU64*>(
32216  gpuDynInst->d_data))[lane * 2 + 1];
32217  }
32218  }
32219 
32220  vdst0.write();
32221  vdst1.write();
32222  }
32223  // --- Inst_DS__DS_READ_I8 class methods ---
32224 
32226  : Inst_DS(iFmt, "ds_read_i8")
32227  {
32228  setFlag(MemoryRef);
32229  setFlag(Load);
32230  } // Inst_DS__DS_READ_I8
32231 
32233  {
32234  } // ~Inst_DS__DS_READ_I8
32235 
32236  // RETURN_DATA = signext(MEM[ADDR][7:0]).
32237  // Signed byte read.
32238  void
32240  {
32242  }
32243 
32245  : Inst_DS(iFmt, "ds_read_u8")
32246  {
32247  setFlag(MemoryRef);
32248  setFlag(Load);
32249  } // Inst_DS__DS_READ_U8
32250 
32252  {
32253  } // ~Inst_DS__DS_READ_U8
32254 
32255  // RETURN_DATA = {24'h0,MEM[ADDR][7:0]}.
32256  // Unsigned byte read.
32257  void
32259  {
32260  Wavefront *wf = gpuDynInst->wavefront();
32261  gpuDynInst->execUnitId = wf->execUnitId;
32262  gpuDynInst->exec_mask = wf->execMask();
32263  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32264  gpuDynInst->latency.set(
32265  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32266  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32267 
32268  addr.read();
32269 
32270  calcAddr(gpuDynInst, addr);
32271 
32272  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32273 
32274  wf->rdLmReqsInPipe--;
32275  wf->outstandingReqsRdLm++;
32276  wf->outstandingReqs++;
32278  } // execute
32279 
32280  void
32282  {
32283  Addr offset0 = instData.OFFSET0;
32284  Addr offset1 = instData.OFFSET1;
32285  Addr offset = (offset1 << 8) | offset0;
32286 
32287  initMemRead<VecElemU8>(gpuDynInst, offset);
32288  } // initiateAcc
32289 
32290  void
32292  {
32293  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32294 
32295  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32296  if (gpuDynInst->exec_mask[lane]) {
32297  vdst[lane] = (VecElemU32)(reinterpret_cast<VecElemU8*>(
32298  gpuDynInst->d_data))[lane];
32299  }
32300  }
32301 
32302  vdst.write();
32303  } // completeAcc
32304  // --- Inst_DS__DS_READ_I16 class methods ---
32305 
32307  : Inst_DS(iFmt, "ds_read_i16")
32308  {
32309  setFlag(MemoryRef);
32310  setFlag(Load);
32311  } // Inst_DS__DS_READ_I16
32312 
32314  {
32315  } // ~Inst_DS__DS_READ_I16
32316 
32317  // RETURN_DATA = signext(MEM[ADDR][15:0]).
32318  // Signed short read.
32319  void
32321  {
32323  }
32324 
32326  : Inst_DS(iFmt, "ds_read_u16")
32327  {
32328  setFlag(MemoryRef);
32329  setFlag(Load);
32330  } // Inst_DS__DS_READ_U16
32331 
32333  {
32334  } // ~Inst_DS__DS_READ_U16
32335 
32336  // RETURN_DATA = {16'h0,MEM[ADDR][15:0]}.
32337  // Unsigned short read.
32338  void
32340  {
32341  Wavefront *wf = gpuDynInst->wavefront();
32342  gpuDynInst->execUnitId = wf->execUnitId;
32343  gpuDynInst->exec_mask = wf->execMask();
32344  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32345  gpuDynInst->latency.set(
32346  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32347  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32348 
32349  addr.read();
32350 
32351  calcAddr(gpuDynInst, addr);
32352 
32353  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32354 
32355  wf->rdLmReqsInPipe--;
32356  wf->outstandingReqsRdLm++;
32357  wf->outstandingReqs++;
32359  } // execute
32360  void
32362  {
32363  Addr offset0 = instData.OFFSET0;
32364  Addr offset1 = instData.OFFSET1;
32365  Addr offset = (offset1 << 8) | offset0;
32366 
32367  initMemRead<VecElemU16>(gpuDynInst, offset);
32368  } // initiateAcc
32369 
32370  void
32372  {
32373  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32374 
32375  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32376  if (gpuDynInst->exec_mask[lane]) {
32377  vdst[lane] = (VecElemU32)(reinterpret_cast<VecElemU16*>(
32378  gpuDynInst->d_data))[lane];
32379  }
32380  }
32381 
32382  vdst.write();
32383  } // completeAcc
32384  // --- Inst_DS__DS_SWIZZLE_B32 class methods ---
32385 
32387  : Inst_DS(iFmt, "ds_swizzle_b32")
32388  {
32389  setFlag(Load);
32390  } // Inst_DS__DS_SWIZZLE_B32
32391 
32393  {
32394  } // ~Inst_DS__DS_SWIZZLE_B32
32395 
32396  // RETURN_DATA = swizzle(vgpr_data, offset1:offset0).
32397  // Dword swizzle, no data is written to LDS memory;
32398  void
32400  {
32401  Wavefront *wf = gpuDynInst->wavefront();
32402  wf->rdLmReqsInPipe--;
32404 
32405  if (gpuDynInst->exec_mask.none()) {
32406  return;
32407  }
32408 
32409  gpuDynInst->execUnitId = wf->execUnitId;
32410  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32411  gpuDynInst->latency.set(gpuDynInst->computeUnit()
32412  ->cyclesToTicks(Cycles(24)));
32413 
32414  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
32415  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32433  VecElemU16 ds_pattern = ((instData.OFFSET1 << 8) | instData.OFFSET0);
32434 
32435  data.read();
32436 
32437  if (bits(ds_pattern, 15)) {
32438  // QDMode
32439  for (int lane = 0; lane < NumVecElemPerVecReg; lane += 4) {
32445  if (gpuDynInst->exec_mask[lane]) {
32446  int index0 = lane + bits(ds_pattern, 1, 0);
32447  panic_if(index0 >= NumVecElemPerVecReg, "%s: index0 (%d) "
32448  "is out of bounds.\n", gpuDynInst->disassemble(),
32449  index0);
32450  vdst[lane]
32451  = gpuDynInst->exec_mask[index0] ? data[index0]: 0;
32452  }
32453  if (gpuDynInst->exec_mask[lane + 1]) {
32454  int index1 = lane + bits(ds_pattern, 3, 2);
32455  panic_if(index1 >= NumVecElemPerVecReg, "%s: index1 (%d) "
32456  "is out of bounds.\n", gpuDynInst->disassemble(),
32457  index1);
32458  vdst[lane + 1]
32459  = gpuDynInst->exec_mask[index1] ? data[index1]: 0;
32460  }
32461  if (gpuDynInst->exec_mask[lane + 2]) {
32462  int index2 = lane + bits(ds_pattern, 5, 4);
32463  panic_if(index2 >= NumVecElemPerVecReg, "%s: index2 (%d) "
32464  "is out of bounds.\n", gpuDynInst->disassemble(),
32465  index2);
32466  vdst[lane + 2]
32467  = gpuDynInst->exec_mask[index2] ? data[index2]: 0;
32468  }
32469  if (gpuDynInst->exec_mask[lane + 3]) {
32470  int index3 = lane + bits(ds_pattern, 7, 6);
32471  panic_if(index3 >= NumVecElemPerVecReg, "%s: index3 (%d) "
32472  "is out of bounds.\n", gpuDynInst->disassemble(),
32473  index3);
32474  vdst[lane + 3]
32475  = gpuDynInst->exec_mask[index3] ? data[index3]: 0;
32476  }
32477  }
32478  } else {
32479  // Bit Mode
32480  int and_mask = bits(ds_pattern, 4, 0);
32481  int or_mask = bits(ds_pattern, 9, 5);
32482  int xor_mask = bits(ds_pattern, 14, 10);
32483  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32484  if (gpuDynInst->exec_mask[lane]) {
32485  int index = (((lane & and_mask) | or_mask) ^ xor_mask);
32486  // Adjust for the next 32 lanes.
32487  if (lane > 31) {
32488  index += 32;
32489  }
32490  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is "
32491  "out of bounds.\n", gpuDynInst->disassemble(),
32492  index);
32493  vdst[lane]
32494  = gpuDynInst->exec_mask[index] ? data[index] : 0;
32495  }
32496  }
32497  }
32498 
32499  vdst.write();
32500  } // execute
32501  // --- Inst_DS__DS_PERMUTE_B32 class methods ---
32502 
32504  : Inst_DS(iFmt, "ds_permute_b32")
32505  {
32506  setFlag(MemoryRef);
32512  setFlag(Load);
32513  } // Inst_DS__DS_PERMUTE_B32
32514 
32516  {
32517  } // ~Inst_DS__DS_PERMUTE_B32
32518 
32519  // Forward permute.
32520  void
32522  {
32523  Wavefront *wf = gpuDynInst->wavefront();
32524  gpuDynInst->execUnitId = wf->execUnitId;
32525  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32526  gpuDynInst->latency.set(gpuDynInst->computeUnit()
32527  ->cyclesToTicks(Cycles(24)));
32528  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32529  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
32530  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32531 
32532  addr.read();
32533  data.read();
32534 
32535  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32536  if (wf->execMask(lane)) {
32543  assert(!instData.OFFSET1);
32550  int index = bits(addr[lane] + instData.OFFSET0, 7, 2);
32551  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is out "
32552  "of bounds.\n", gpuDynInst->disassemble(), index);
32558  if (wf->execMask(index)) {
32559  vdst[index] = data[lane];
32560  } else {
32561  vdst[index] = 0;
32562  }
32563  }
32564  }
32565 
32566  vdst.write();
32567 
32568  wf->decLGKMInstsIssued();
32569  wf->rdLmReqsInPipe--;
32571  } // execute
32572  // --- Inst_DS__DS_BPERMUTE_B32 class methods ---
32573 
32575  : Inst_DS(iFmt, "ds_bpermute_b32")
32576  {
32577  setFlag(MemoryRef);
32583  setFlag(Load);
32584  } // Inst_DS__DS_BPERMUTE_B32
32585 
32587  {
32588  } // ~Inst_DS__DS_BPERMUTE_B32
32589 
32590  // Backward permute.
32591  void
32593  {
32594  Wavefront *wf = gpuDynInst->wavefront();
32595  gpuDynInst->execUnitId = wf->execUnitId;
32596  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32597  gpuDynInst->latency.set(gpuDynInst->computeUnit()
32598  ->cyclesToTicks(Cycles(24)));
32599  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32600  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
32601  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32602 
32603  addr.read();
32604  data.read();
32605 
32606  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32607  if (wf->execMask(lane)) {
32614  assert(!instData.OFFSET1);
32621  int index = bits(addr[lane] + instData.OFFSET0, 7, 2);
32622  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is out "
32623  "of bounds.\n", gpuDynInst->disassemble(), index);
32629  if (wf->execMask(index)) {
32630  vdst[lane] = data[index];
32631  } else {
32632  vdst[lane] = 0;
32633  }
32634  }
32635  }
32636 
32637  vdst.write();
32638 
32639  wf->decLGKMInstsIssued();
32640  wf->rdLmReqsInPipe--;
32642  } // execute
32643 
32644  // --- Inst_DS__DS_ADD_U64 class methods ---
32645 
32647  : Inst_DS(iFmt, "ds_add_u64")
32648  {
32649  } // Inst_DS__DS_ADD_U64
32650 
32652  {
32653  } // ~Inst_DS__DS_ADD_U64
32654 
32655  // tmp = MEM[ADDR];
32656  // MEM[ADDR] += DATA[0:1];
32657  // RETURN_DATA[0:1] = tmp.
32658  void
32660  {
32662  }
32663 
32665  : Inst_DS(iFmt, "ds_sub_u64")
32666  {
32667  } // Inst_DS__DS_SUB_U64
32668 
32670  {
32671  } // ~Inst_DS__DS_SUB_U64
32672 
32673  // tmp = MEM[ADDR];
32674  // MEM[ADDR] -= DATA[0:1];
32675  // RETURN_DATA[0:1] = tmp.
32676  void
32678  {
32680  }
32681 
32683  : Inst_DS(iFmt, "ds_rsub_u64")
32684  {
32685  } // Inst_DS__DS_RSUB_U64
32686 
32688  {
32689  } // ~Inst_DS__DS_RSUB_U64
32690 
32691  // tmp = MEM[ADDR];
32692  // MEM[ADDR] = DATA - MEM[ADDR];
32693  // RETURN_DATA = tmp.
32694  // Subtraction with reversed operands.
32695  void
32697  {
32699  }
32700 
32702  : Inst_DS(iFmt, "ds_inc_u64")
32703  {
32704  } // Inst_DS__DS_INC_U64
32705 
32707  {
32708  } // ~Inst_DS__DS_INC_U64
32709 
32710  // tmp = MEM[ADDR];
32711  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
32712  // RETURN_DATA[0:1] = tmp.
32713  void
32715  {
32717  }
32718 
32720  : Inst_DS(iFmt, "ds_dec_u64")
32721  {
32722  } // Inst_DS__DS_DEC_U64
32723 
32725  {
32726  } // ~Inst_DS__DS_DEC_U64
32727 
32728  // tmp = MEM[ADDR];
32729  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
32730  // (unsigned compare);
32731  // RETURN_DATA[0:1] = tmp.
32732  void
32734  {
32736  }
32737 
32739  : Inst_DS(iFmt, "ds_min_i64")
32740  {
32741  } // Inst_DS__DS_MIN_I64
32742 
32744  {
32745  } // ~Inst_DS__DS_MIN_I64
32746 
32747  // tmp = MEM[ADDR];
32748  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
32749  // RETURN_DATA[0:1] = tmp.
32750  void
32752  {
32754  }
32755 
32757  : Inst_DS(iFmt, "ds_max_i64")
32758  {
32759  } // Inst_DS__DS_MAX_I64
32760 
32762  {
32763  } // ~Inst_DS__DS_MAX_I64
32764 
32765  // tmp = MEM[ADDR];
32766  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
32767  // RETURN_DATA[0:1] = tmp.
32768  void
32770  {
32772  }
32773 
32775  : Inst_DS(iFmt, "ds_min_u64")
32776  {
32777  } // Inst_DS__DS_MIN_U64
32778 
32780  {
32781  } // ~Inst_DS__DS_MIN_U64
32782 
32783  // tmp = MEM[ADDR];
32784  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
32785  // RETURN_DATA[0:1] = tmp.
32786  void
32788  {
32790  }
32791 
32793  : Inst_DS(iFmt, "ds_max_u64")
32794  {
32795  } // Inst_DS__DS_MAX_U64
32796 
32798  {
32799  } // ~Inst_DS__DS_MAX_U64
32800 
32801  // tmp = MEM[ADDR];
32802  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
32803  // RETURN_DATA[0:1] = tmp.
32804  void
32806  {
32808  }
32809 
32811  : Inst_DS(iFmt, "ds_and_b64")
32812  {
32813  } // Inst_DS__DS_AND_B64
32814 
32816  {
32817  } // ~Inst_DS__DS_AND_B64
32818 
32819  // tmp = MEM[ADDR];
32820  // MEM[ADDR] &= DATA[0:1];
32821  // RETURN_DATA[0:1] = tmp.
32822  void
32824  {
32826  }
32827 
32829  : Inst_DS(iFmt, "ds_or_b64")
32830  {
32831  } // Inst_DS__DS_OR_B64
32832 
32834  {
32835  } // ~Inst_DS__DS_OR_B64
32836 
32837  // tmp = MEM[ADDR];
32838  // MEM[ADDR] |= DATA[0:1];
32839  // RETURN_DATA[0:1] = tmp.
32840  void
32842  {
32844  }
32845 
32847  : Inst_DS(iFmt, "ds_xor_b64")
32848  {
32849  } // Inst_DS__DS_XOR_B64
32850 
32852  {
32853  } // ~Inst_DS__DS_XOR_B64
32854 
32855  // tmp = MEM[ADDR];
32856  // MEM[ADDR] ^= DATA[0:1];
32857  // RETURN_DATA[0:1] = tmp.
32858  void
32860  {
32862  }
32863 
32865  : Inst_DS(iFmt, "ds_mskor_b64")
32866  {
32867  } // Inst_DS__DS_MSKOR_B64
32868 
32870  {
32871  } // ~Inst_DS__DS_MSKOR_B64
32872 
32873  // tmp = MEM[ADDR];
32874  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
32875  // RETURN_DATA = tmp.
32876  void
32878  {
32880  }
32881 
32883  : Inst_DS(iFmt, "ds_write_b64")
32884  {
32885  setFlag(MemoryRef);
32886  setFlag(Store);
32887  } // Inst_DS__DS_WRITE_B64
32888 
32890  {
32891  } // ~Inst_DS__DS_WRITE_B64
32892 
32893  // MEM[ADDR] = DATA.
32894  // Write qword.
32895  void
32897  {
32898  Wavefront *wf = gpuDynInst->wavefront();
32899  gpuDynInst->execUnitId = wf->execUnitId;
32900  gpuDynInst->exec_mask = wf->execMask();
32901  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32902  gpuDynInst->latency.set(
32903  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32904  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32905  ConstVecOperandU64 data(gpuDynInst, extData.DATA0);
32906 
32907  addr.read();
32908  data.read();
32909 
32910  calcAddr(gpuDynInst, addr);
32911 
32912  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32913  if (wf->execMask(lane)) {
32914  (reinterpret_cast<VecElemU64*>(gpuDynInst->d_data))[lane]
32915  = data[lane];
32916  }
32917  }
32918 
32919  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32920 
32921  wf->wrLmReqsInPipe--;
32922  wf->outstandingReqsWrLm++;
32923  wf->outstandingReqs++;
32925  }
32926 
32927  void
32929  {
32930  Addr offset0 = instData.OFFSET0;
32931  Addr offset1 = instData.OFFSET1;
32932  Addr offset = (offset1 << 8) | offset0;
32933 
32934  initMemWrite<VecElemU64>(gpuDynInst, offset);
32935  } // initiateAcc
32936 
32937  void
32939  {
32940  } // completeAcc
32941 
32943  : Inst_DS(iFmt, "ds_write2_b64")
32944  {
32945  setFlag(MemoryRef);
32946  setFlag(Store);
32947  } // Inst_DS__DS_WRITE2_B64
32948 
32950  {
32951  } // ~Inst_DS__DS_WRITE2_B64
32952 
32953  // MEM[ADDR_BASE + OFFSET0 * 8] = DATA;
32954  // MEM[ADDR_BASE + OFFSET1 * 8] = DATA2.
32955  // Write 2 qwords.
32956  void
32958  {
32959  Wavefront *wf = gpuDynInst->wavefront();
32960  gpuDynInst->execUnitId = wf->execUnitId;
32961  gpuDynInst->exec_mask = wf->execMask();
32962  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32963  gpuDynInst->latency.set(
32964  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32965  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32966  ConstVecOperandU64 data0(gpuDynInst, extData.DATA0);
32967  ConstVecOperandU64 data1(gpuDynInst, extData.DATA1);
32968 
32969  addr.read();
32970  data0.read();
32971  data1.read();
32972 
32973  calcAddr(gpuDynInst, addr);
32974 
32975  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32976  if (wf->execMask(lane)) {
32977  (reinterpret_cast<VecElemU64*>(
32978  gpuDynInst->d_data))[lane * 2] = data0[lane];
32979  (reinterpret_cast<VecElemU64*>(
32980  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
32981  }
32982  }
32983 
32984  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32985 
32986  wf->wrLmReqsInPipe--;
32987  wf->outstandingReqsWrLm++;
32988  wf->outstandingReqs++;
32990  }
32991 
32992  void
32994  {
32995  Addr offset0 = instData.OFFSET0 * 8;
32996  Addr offset1 = instData.OFFSET1 * 8;
32997 
32998  initDualMemWrite<VecElemU64>(gpuDynInst, offset0, offset1);
32999  }
33000 
33001  void
33003  {
33004  }
33005 
33007  : Inst_DS(iFmt, "ds_write2st64_b64")
33008  {
33009  setFlag(MemoryRef);
33010  setFlag(Store);
33011  } // Inst_DS__DS_WRITE2ST64_B64
33012 
33014  {
33015  } // ~Inst_DS__DS_WRITE2ST64_B64
33016 
33017  // MEM[ADDR_BASE + OFFSET0 * 8 * 64] = DATA;
33018  // MEM[ADDR_BASE + OFFSET1 * 8 * 64] = DATA2;
33019  // Write 2 qwords.
33020  void
33022  {
33024  }
33025 
33027  : Inst_DS(iFmt, "ds_cmpst_b64")
33028  {
33029  } // Inst_DS__DS_CMPST_B64
33030 
33032  {
33033  } // ~Inst_DS__DS_CMPST_B64
33034 
33035  // tmp = MEM[ADDR];
33036  // src = DATA2;
33037  // cmp = DATA;
33038  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
33039  // RETURN_DATA[0] = tmp.
33040  // Compare and store.
33041  void
33043  {
33045  }
33046 
33048  : Inst_DS(iFmt, "ds_cmpst_f64")
33049  {
33050  setFlag(F64);
33051  } // Inst_DS__DS_CMPST_F64
33052 
33054  {
33055  } // ~Inst_DS__DS_CMPST_F64
33056 
33057  // tmp = MEM[ADDR];
33058  // src = DATA2;
33059  // cmp = DATA;
33060  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
33061  // RETURN_DATA[0] = tmp.
33062  void
33064  {
33066  }
33067 
33069  : Inst_DS(iFmt, "ds_min_f64")
33070  {
33071  setFlag(F64);
33072  } // Inst_DS__DS_MIN_F64
33073 
33075  {
33076  } // ~Inst_DS__DS_MIN_F64
33077 
33078  // tmp = MEM[ADDR];
33079  // src = DATA;
33080  // cmp = DATA2;
33081  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
33082  void
33084  {
33086  }
33087 
33089  : Inst_DS(iFmt, "ds_max_f64")
33090  {
33091  setFlag(F64);
33092  } // Inst_DS__DS_MAX_F64
33093 
33095  {
33096  } // ~Inst_DS__DS_MAX_F64
33097 
33098  // tmp = MEM[ADDR];
33099  // src = DATA;
33100  // cmp = DATA2;
33101  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
33102  void
33104  {
33106  }
33107 
33109  : Inst_DS(iFmt, "ds_add_rtn_u64")
33110  {
33111  } // Inst_DS__DS_ADD_RTN_U64
33112 
33114  {
33115  } // ~Inst_DS__DS_ADD_RTN_U64
33116 
33117  // tmp = MEM[ADDR];
33118  // MEM[ADDR] += DATA[0:1];
33119  // RETURN_DATA[0:1] = tmp.
33120  void
33122  {
33124  }
33125 
33127  : Inst_DS(iFmt, "ds_sub_rtn_u64")
33128  {
33129  } // Inst_DS__DS_SUB_RTN_U64
33130 
33132  {
33133  } // ~Inst_DS__DS_SUB_RTN_U64
33134 
33135  // tmp = MEM[ADDR];
33136  // MEM[ADDR] -= DATA[0:1];
33137  // RETURN_DATA[0:1] = tmp.
33138  void
33140  {
33142  }
33143 
33145  : Inst_DS(iFmt, "ds_rsub_rtn_u64")
33146  {
33147  } // Inst_DS__DS_RSUB_RTN_U64
33148 
33150  {
33151  } // ~Inst_DS__DS_RSUB_RTN_U64
33152 
33153  // tmp = MEM[ADDR];
33154  // MEM[ADDR] = DATA - MEM[ADDR];
33155  // RETURN_DATA = tmp.
33156  // Subtraction with reversed operands.
33157  void
33159  {
33161  }
33162 
33164  : Inst_DS(iFmt, "ds_inc_rtn_u64")
33165  {
33166  } // Inst_DS__DS_INC_RTN_U64
33167 
33169  {
33170  } // ~Inst_DS__DS_INC_RTN_U64
33171 
33172  // tmp = MEM[ADDR];
33173  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
33174  // RETURN_DATA[0:1] = tmp.
33175  void
33177  {
33179  }
33180 
33182  : Inst_DS(iFmt, "ds_dec_rtn_u64")
33183  {
33184  } // Inst_DS__DS_DEC_RTN_U64
33185 
33187  {
33188  } // ~Inst_DS__DS_DEC_RTN_U64
33189 
33190  // tmp = MEM[ADDR];
33191  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
33192  // (unsigned compare);
33193  // RETURN_DATA[0:1] = tmp.
33194  void
33196  {
33198  }
33199 
33201  : Inst_DS(iFmt, "ds_min_rtn_i64")
33202  {
33203  } // Inst_DS__DS_MIN_RTN_I64
33204 
33206  {
33207  } // ~Inst_DS__DS_MIN_RTN_I64
33208 
33209  // tmp = MEM[ADDR];
33210  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
33211  // RETURN_DATA[0:1] = tmp.
33212  void
33214  {
33216  }
33217 
33219  : Inst_DS(iFmt, "ds_max_rtn_i64")
33220  {
33221  } // Inst_DS__DS_MAX_RTN_I64
33222 
33224  {
33225  } // ~Inst_DS__DS_MAX_RTN_I64
33226 
33227  // tmp = MEM[ADDR];
33228  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
33229  // RETURN_DATA[0:1] = tmp.
33230  void
33232  {
33234  }
33235 
33237  : Inst_DS(iFmt, "ds_min_rtn_u64")
33238  {
33239  } // Inst_DS__DS_MIN_RTN_U64
33240 
33242  {
33243  } // ~Inst_DS__DS_MIN_RTN_U64
33244 
33245  // tmp = MEM[ADDR];
33246  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
33247  // RETURN_DATA[0:1] = tmp.
33248  void
33250  {
33252  }
33253 
33255  : Inst_DS(iFmt, "ds_max_rtn_u64")
33256  {
33257  } // Inst_DS__DS_MAX_RTN_U64
33258 
33260  {
33261  } // ~Inst_DS__DS_MAX_RTN_U64
33262 
33263  // tmp = MEM[ADDR];
33264  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
33265  // RETURN_DATA[0:1] = tmp.
33266  void
33268  {
33270  }
33271 
33273  : Inst_DS(iFmt, "ds_and_rtn_b64")
33274  {
33275  } // Inst_DS__DS_AND_RTN_B64
33276 
33278  {
33279  } // ~Inst_DS__DS_AND_RTN_B64
33280 
33281  // tmp = MEM[ADDR];
33282  // MEM[ADDR] &= DATA[0:1];
33283  // RETURN_DATA[0:1] = tmp.
33284  void
33286  {
33288  }
33289 
33291  : Inst_DS(iFmt, "ds_or_rtn_b64")
33292  {
33293  } // Inst_DS__DS_OR_RTN_B64
33294 
33296  {
33297  } // ~Inst_DS__DS_OR_RTN_B64
33298 
33299  // tmp = MEM[ADDR];
33300  // MEM[ADDR] |= DATA[0:1];
33301  // RETURN_DATA[0:1] = tmp.
33302  void
33304  {
33306  }
33307 
33309  : Inst_DS(iFmt, "ds_xor_rtn_b64")
33310  {
33311  } // Inst_DS__DS_XOR_RTN_B64
33312 
33314  {
33315  } // ~Inst_DS__DS_XOR_RTN_B64
33316 
33317  // tmp = MEM[ADDR];
33318  // MEM[ADDR] ^= DATA[0:1];
33319  // RETURN_DATA[0:1] = tmp.
33320  void
33322  {
33324  }
33325 
33327  : Inst_DS(iFmt, "ds_mskor_rtn_b64")
33328  {
33329  } // Inst_DS__DS_MSKOR_RTN_B64
33330 
33332  {
33333  } // ~Inst_DS__DS_MSKOR_RTN_B64
33334 
33335  // tmp = MEM[ADDR];
33336  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
33337  // RETURN_DATA = tmp.
33338  // Masked dword OR, D0 contains the mask and D1 contains the new value.
33339  void
33341  {
33343  }
33344 
33346  : Inst_DS(iFmt, "ds_wrxchg_rtn_b64")
33347  {
33348  } // Inst_DS__DS_WRXCHG_RTN_B64
33349 
33351  {
33352  } // ~Inst_DS__DS_WRXCHG_RTN_B64
33353 
33354  // tmp = MEM[ADDR];
33355  // MEM[ADDR] = DATA;
33356  // RETURN_DATA = tmp.
33357  // Write-exchange operation.
33358  void
33360  {
33362  }
33363 
33365  : Inst_DS(iFmt, "ds_wrxchg2_rtn_b64")
33366  {
33367  } // Inst_DS__DS_WRXCHG2_RTN_B64
33368 
33370  {
33371  } // ~Inst_DS__DS_WRXCHG2_RTN_B64
33372 
33373  // Write-exchange 2 separate qwords.
33374  void
33376  {
33378  }
33379 
33381  InFmt_DS *iFmt)
33382  : Inst_DS(iFmt, "ds_wrxchg2st64_rtn_b64")
33383  {
33384  } // Inst_DS__DS_WRXCHG2ST64_RTN_B64
33385 
33387  {
33388  } // ~Inst_DS__DS_WRXCHG2ST64_RTN_B64
33389 
33390  // Write-exchange 2 qwords with a stride of 64 qwords.
33391  void
33393  {
33395  }
33396 
33398  : Inst_DS(iFmt, "ds_cmpst_rtn_b64")
33399  {
33400  } // Inst_DS__DS_CMPST_RTN_B64
33401 
33403  {
33404  } // ~Inst_DS__DS_CMPST_RTN_B64
33405 
33406  // tmp = MEM[ADDR];
33407  // src = DATA2;
33408  // cmp = DATA;
33409  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
33410  // RETURN_DATA[0] = tmp.
33411  // Compare and store.
33412  void
33414  {
33416  }
33417 
33419  : Inst_DS(iFmt, "ds_cmpst_rtn_f64")
33420  {
33421  setFlag(F64);
33422  } // Inst_DS__DS_CMPST_RTN_F64
33423 
33425  {
33426  } // ~Inst_DS__DS_CMPST_RTN_F64
33427 
33428  // tmp = MEM[ADDR];
33429  // src = DATA2;
33430  // cmp = DATA;
33431  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
33432  // RETURN_DATA[0] = tmp.
33433  void
33435  {
33437  }
33438 
33440  : Inst_DS(iFmt, "ds_min_rtn_f64")
33441  {
33442  setFlag(F64);
33443  } // Inst_DS__DS_MIN_RTN_F64
33444 
33446  {
33447  } // ~Inst_DS__DS_MIN_RTN_F64
33448 
33449  // tmp = MEM[ADDR];
33450  // src = DATA;
33451  // cmp = DATA2;
33452  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
33453  void
33455  {
33457  }
33458 
33460  : Inst_DS(iFmt, "ds_max_rtn_f64")
33461  {
33462  setFlag(F64);
33463  } // Inst_DS__DS_MAX_RTN_F64
33464 
33466  {
33467  } // ~Inst_DS__DS_MAX_RTN_F64
33468 
33469  // tmp = MEM[ADDR];
33470  // src = DATA;
33471  // cmp = DATA2;
33472  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
33473  void
33475  {
33477  }
33478 
33480  : Inst_DS(iFmt, "ds_read_b64")
33481  {
33482  setFlag(MemoryRef);
33483  setFlag(Load);
33484  } // Inst_DS__DS_READ_B64
33485 
33487  {
33488  } // ~Inst_DS__DS_READ_B64
33489 
33490  // RETURN_DATA = MEM[ADDR].
33491  // Read 1 qword.
33492  void
33494  {
33495  Wavefront *wf = gpuDynInst->wavefront();
33496  gpuDynInst->execUnitId = wf->execUnitId;
33497  gpuDynInst->exec_mask = wf->execMask();
33498  gpuDynInst->latency.init(gpuDynInst->computeUnit());
33499  gpuDynInst->latency.set(
33500  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
33501  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
33502 
33503  addr.read();
33504 
33505  calcAddr(gpuDynInst, addr);
33506 
33507  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
33508 
33509  wf->rdLmReqsInPipe--;
33510  wf->outstandingReqsRdLm++;
33511  wf->outstandingReqs++;
33513  }
33514 
33515  void
33517  {
33518  Addr offset0 = instData.OFFSET0;
33519  Addr offset1 = instData.OFFSET1;
33520  Addr offset = (offset1 << 8) | offset0;
33521 
33522  initMemRead<VecElemU64>(gpuDynInst, offset);
33523  } // initiateAcc
33524 
33525  void
33527  {
33528  VecOperandU64 vdst(gpuDynInst, extData.VDST);
33529 
33530  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33531  if (gpuDynInst->exec_mask[lane]) {
33532  vdst[lane] = (reinterpret_cast<VecElemU64*>(
33533  gpuDynInst->d_data))[lane];
33534  }
33535  }
33536 
33537  vdst.write();
33538  } // completeAcc
33539 
33541  : Inst_DS(iFmt, "ds_read2_b64")
33542  {
33543  setFlag(MemoryRef);
33544  setFlag(Load);
33545  } // Inst_DS__DS_READ2_B64
33546 
33548  {
33549  } // ~Inst_DS__DS_READ2_B64
33550 
33551  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 8];
33552  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 8].
33553  // Read 2 qwords.
33554  void
33556  {
33557  Wavefront *wf = gpuDynInst->wavefront();
33558  gpuDynInst->execUnitId = wf->execUnitId;
33559  gpuDynInst->exec_mask = wf->execMask();
33560  gpuDynInst->latency.init(gpuDynInst->computeUnit());
33561  gpuDynInst->latency.set(
33562  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
33563  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
33564 
33565  addr.read();
33566 
33567  calcAddr(gpuDynInst, addr);
33568 
33569  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
33570 
33571  wf->rdLmReqsInPipe--;
33572  wf->outstandingReqsRdLm++;
33573  wf->outstandingReqs++;
33575  }
33576 
33577  void
33579  {
33580  Addr offset0 = instData.OFFSET0 * 8;
33581  Addr offset1 = instData.OFFSET1 * 8;
33582 
33583  initDualMemRead<VecElemU64>(gpuDynInst, offset0, offset1);
33584  } // initiateAcc
33585 
33586  void
33588  {
33589  VecOperandU64 vdst0(gpuDynInst, extData.VDST);
33590  VecOperandU64 vdst1(gpuDynInst, extData.VDST + 2);
33591 
33592  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33593  if (gpuDynInst->exec_mask[lane]) {
33594  vdst0[lane] = (reinterpret_cast<VecElemU64*>(
33595  gpuDynInst->d_data))[lane * 2];
33596  vdst1[lane] = (reinterpret_cast<VecElemU64*>(
33597  gpuDynInst->d_data))[lane * 2 + 1];
33598  }
33599  }
33600 
33601  vdst0.write();
33602  vdst1.write();
33603  } // completeAcc
33604 
33606  : Inst_DS(iFmt, "ds_read2st64_b64")
33607  {
33608  setFlag(MemoryRef);
33609  setFlag(Load);
33610  } // Inst_DS__DS_READ2ST64_B64
33611 
33613  {
33614  } // ~Inst_DS__DS_READ2ST64_B64
33615 
33616  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 8 * 64];
33617  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 8 * 64].
33618  // Read 2 qwords.
33619  void
33621  {
33622  Wavefront *wf = gpuDynInst->wavefront();
33623  gpuDynInst->execUnitId = wf->execUnitId;
33624  gpuDynInst->exec_mask = wf->execMask();
33625  gpuDynInst->latency.init(gpuDynInst->computeUnit());
33626  gpuDynInst->latency.set(
33627  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
33628  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
33629 
33630  addr.read();
33631 
33632  calcAddr(gpuDynInst, addr);
33633 
33634  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
33635 
33636  wf->rdLmReqsInPipe--;
33637  wf->outstandingReqsRdLm++;
33638  wf->outstandingReqs++;
33640  }
33641 
33642  void
33644  {
33645  Addr offset0 = (instData.OFFSET0 * 8 * 64);
33646  Addr offset1 = (instData.OFFSET1 * 8 * 64);
33647 
33648  initDualMemRead<VecElemU64>(gpuDynInst, offset0, offset1);
33649  }
33650 
33651  void
33653  {
33654  VecOperandU64 vdst0(gpuDynInst, extData.VDST);
33655  VecOperandU64 vdst1(gpuDynInst, extData.VDST + 2);
33656 
33657  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33658  if (gpuDynInst->exec_mask[lane]) {
33659  vdst0[lane] = (reinterpret_cast<VecElemU64*>(
33660  gpuDynInst->d_data))[lane * 2];
33661  vdst1[lane] = (reinterpret_cast<VecElemU64*>(
33662  gpuDynInst->d_data))[lane * 2 + 1];
33663  }
33664  }
33665 
33666  vdst0.write();
33667  vdst1.write();
33668  }
33669 
33671  InFmt_DS *iFmt)
33672  : Inst_DS(iFmt, "ds_condxchg32_rtn_b64")
33673  {
33674  } // Inst_DS__DS_CONDXCHG32_RTN_B64
33675 
33677  {
33678  } // ~Inst_DS__DS_CONDXCHG32_RTN_B64
33679 
33680  // Conditional write exchange.
33681  void
33683  {
33685  }
33686 
33688  : Inst_DS(iFmt, "ds_add_src2_u32")
33689  {
33690  } // Inst_DS__DS_ADD_SRC2_U32
33691 
33693  {
33694  } // ~Inst_DS__DS_ADD_SRC2_U32
33695 
33696  // A = ADDR_BASE;
33697  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33698  // {offset1[6],offset1[6:0],offset0});
33699  // MEM[A] = MEM[A] + MEM[B].
33700  void
33702  {
33704  }
33705 
33707  : Inst_DS(iFmt, "ds_sub_src2_u32")
33708  {
33709  } // Inst_DS__DS_SUB_SRC2_U32
33710 
33712  {
33713  } // ~Inst_DS__DS_SUB_SRC2_U32
33714 
33715  // A = ADDR_BASE;
33716  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33717  // {offset1[6],offset1[6:0],offset0});
33718  // MEM[A] = MEM[A] - MEM[B].
33719  void
33721  {
33723  }
33724 
33726  : Inst_DS(iFmt, "ds_rsub_src2_u32")
33727  {
33728  } // Inst_DS__DS_RSUB_SRC2_U32
33729 
33731  {
33732  } // ~Inst_DS__DS_RSUB_SRC2_U32
33733 
33734  // A = ADDR_BASE;
33735  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33736  // {offset1[6],offset1[6:0],offset0});
33737  // MEM[A] = MEM[B] - MEM[A].
33738  void
33740  {
33742  }
33743 
33745  : Inst_DS(iFmt, "ds_inc_src2_u32")
33746  {
33747  } // Inst_DS__DS_INC_SRC2_U32
33748 
33750  {
33751  } // ~Inst_DS__DS_INC_SRC2_U32
33752 
33753  // A = ADDR_BASE;
33754  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33755  // {offset1[6],offset1[6:0],offset0});
33756  // MEM[A] = (MEM[A] >= MEM[B] ? 0 : MEM[A] + 1).
33757  void
33759  {
33761  }
33762 
33764  : Inst_DS(iFmt, "ds_dec_src2_u32")
33765  {
33766  } // Inst_DS__DS_DEC_SRC2_U32
33767 
33769  {
33770  } // ~Inst_DS__DS_DEC_SRC2_U32
33771 
33772  // A = ADDR_BASE;
33773  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33774  // {offset1[6],offset1[6:0],offset0});
33775  // MEM[A] = (MEM[A] == 0 || MEM[A] > MEM[B] ? MEM[B] : MEM[A] - 1).
33776  // Uint decrement.
33777  void
33779  {
33781  }
33782 
33784  : Inst_DS(iFmt, "ds_min_src2_i32")
33785  {
33786  } // Inst_DS__DS_MIN_SRC2_I32
33787 
33789  {
33790  } // ~Inst_DS__DS_MIN_SRC2_I32
33791 
33792  // A = ADDR_BASE;
33793  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33794  // {offset1[6],offset1[6:0],offset0});
33795  // MEM[A] = min(MEM[A], MEM[B]).
33796  void
33798  {
33800  }
33801 
33803  : Inst_DS(iFmt, "ds_max_src2_i32")
33804  {
33805  } // Inst_DS__DS_MAX_SRC2_I32
33806 
33808  {
33809  } // ~Inst_DS__DS_MAX_SRC2_I32
33810 
33811  // A = ADDR_BASE;
33812  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33813  // {offset1[6],offset1[6:0],offset0});
33814  // MEM[A] = max(MEM[A], MEM[B]).
33815  void
33817  {
33819  }
33820 
33822  : Inst_DS(iFmt, "ds_min_src2_u32")
33823  {
33824  } // Inst_DS__DS_MIN_SRC2_U32
33825 
33827  {
33828  } // ~Inst_DS__DS_MIN_SRC2_U32
33829 
33830  // A = ADDR_BASE;
33831  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33832  // {offset1[6],offset1[6:0],offset0});
33833  // MEM[A] = min(MEM[A], MEM[B]).
33834  void
33836  {
33838  }
33839 
33841  : Inst_DS(iFmt, "ds_max_src2_u32")
33842  {
33843  } // Inst_DS__DS_MAX_SRC2_U32
33844 
33846  {
33847  } // ~Inst_DS__DS_MAX_SRC2_U32
33848 
33849  // A = ADDR_BASE;
33850  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33851  // {offset1[6],offset1[6:0],offset0});
33852  // MEM[A] = max(MEM[A], MEM[B]).
33853  void
33855  {
33857  }
33858 
33860  : Inst_DS(iFmt, "ds_and_src2_b32")
33861  {
33862  } // Inst_DS__DS_AND_SRC2_B32
33863 
33865  {
33866  } // ~Inst_DS__DS_AND_SRC2_B32
33867 
33868  // A = ADDR_BASE;
33869  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33870  // {offset1[6],offset1[6:0],offset0});
33871  // MEM[A] = MEM[A] & MEM[B].
33872  void
33874  {
33876  }
33877 
33879  : Inst_DS(iFmt, "ds_or_src2_b32")
33880  {
33881  } // Inst_DS__DS_OR_SRC2_B32
33882 
33884  {
33885  } // ~Inst_DS__DS_OR_SRC2_B32
33886 
33887  // A = ADDR_BASE;
33888  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33889  // {offset1[6],offset1[6:0],offset0});
33890  // MEM[A] = MEM[A] | MEM[B].
33891  void
33893  {
33895  }
33896 
33898  : Inst_DS(iFmt, "ds_xor_src2_b32")
33899  {
33900  } // Inst_DS__DS_XOR_SRC2_B32
33901 
33903  {
33904  } // ~Inst_DS__DS_XOR_SRC2_B32
33905 
33906  // A = ADDR_BASE;
33907  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33908  // {offset1[6],offset1[6:0],offset0});
33909  // MEM[A] = MEM[A] ^ MEM[B].
33910  void
33912  {
33914  }
33915 
33917  : Inst_DS(iFmt, "ds_write_src2_b32")
33918  {
33919  setFlag(MemoryRef);
33920  setFlag(Store);
33921  } // Inst_DS__DS_WRITE_SRC2_B32
33922 
33924  {
33925  } // ~Inst_DS__DS_WRITE_SRC2_B32
33926 
33927  // A = ADDR_BASE;
33928  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33929  // {offset1[6],offset1[6:0],offset0});
33930  // MEM[A] = MEM[B].
33931  // Write dword.
33932  void
33934  {
33936  }
33937 
33939  : Inst_DS(iFmt, "ds_min_src2_f32")
33940  {
33941  setFlag(F32);
33942  } // Inst_DS__DS_MIN_SRC2_F32
33943 
33945  {
33946  } // ~Inst_DS__DS_MIN_SRC2_F32
33947 
33948  // A = ADDR_BASE;
33949  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33950  // {offset1[6],offset1[6:0],offset0});
33951  // MEM[A] = (MEM[B] < MEM[A]) ? MEM[B] : MEM[A].
33952  void
33954  {
33956  }
33957 
33959  : Inst_DS(iFmt, "ds_max_src2_f32")
33960  {
33961  setFlag(F32);
33962  } // Inst_DS__DS_MAX_SRC2_F32
33963 
33965  {
33966  } // ~Inst_DS__DS_MAX_SRC2_F32
33967 
33968  // A = ADDR_BASE;
33969  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33970  // {offset1[6],offset1[6:0],offset0});
33971  // MEM[A] = (MEM[B] > MEM[A]) ? MEM[B] : MEM[A].
33972  void
33974  {
33976  }
33977 
33979  : Inst_DS(iFmt, "ds_add_src2_f32")
33980  {
33981  setFlag(F32);
33982  } // Inst_DS__DS_ADD_SRC2_F32
33983 
33985  {
33986  } // ~Inst_DS__DS_ADD_SRC2_F32
33987 
33988  // A = ADDR_BASE;
33989  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33990  // {offset1[6],offset1[6:0],offset0});
33991  // MEM[A] = MEM[B] + MEM[A].
33992  void
33994  {
33996  }
33997 
33999  InFmt_DS *iFmt)
34000  : Inst_DS(iFmt, "ds_gws_sema_release_all")
34001  {
34002  } // Inst_DS__DS_GWS_SEMA_RELEASE_ALL
34003 
34005  {
34006  } // ~Inst_DS__DS_GWS_SEMA_RELEASE_ALL
34007 
34008  void
34010  {
34012  }
34013 
34015  : Inst_DS(iFmt, "ds_gws_init")
34016  {
34017  } // Inst_DS__DS_GWS_INIT
34018 
34020  {
34021  } // ~Inst_DS__DS_GWS_INIT
34022 
34023  void
34025  {
34027  }
34028 
34030  : Inst_DS(iFmt, "ds_gws_sema_v")
34031  {
34032  } // Inst_DS__DS_GWS_SEMA_V
34033 
34035  {
34036  } // ~Inst_DS__DS_GWS_SEMA_V
34037 
34038  void
34040  {
34042  }
34043 
34045  : Inst_DS(iFmt, "ds_gws_sema_br")
34046  {
34047  } // Inst_DS__DS_GWS_SEMA_BR
34048 
34050  {
34051  } // ~Inst_DS__DS_GWS_SEMA_BR
34052 
34053  void
34055  {
34057  }
34058 
34060  : Inst_DS(iFmt, "ds_gws_sema_p")
34061  {
34062  } // Inst_DS__DS_GWS_SEMA_P
34063 
34065  {
34066  } // ~Inst_DS__DS_GWS_SEMA_P
34067 
34068  void
34070  {
34072  }
34073 
34075  : Inst_DS(iFmt, "ds_gws_barrier")
34076  {
34077  } // Inst_DS__DS_GWS_BARRIER
34078 
34080  {
34081  } // ~Inst_DS__DS_GWS_BARRIER
34082 
34083  void
34085  {
34087  }
34088 
34090  : Inst_DS(iFmt, "ds_consume")
34091  {
34092  } // Inst_DS__DS_CONSUME
34093 
34095  {
34096  } // ~Inst_DS__DS_CONSUME
34097 
34098  void
34100  {
34102  }
34103 
34105  : Inst_DS(iFmt, "ds_append")
34106  {
34107  } // Inst_DS__DS_APPEND
34108 
34110  {
34111  } // ~Inst_DS__DS_APPEND
34112 
34113  void
34115  {
34117  }
34118 
34120  : Inst_DS(iFmt, "ds_ordered_count")
34121  {
34122  } // Inst_DS__DS_ORDERED_COUNT
34123 
34125  {
34126  } // ~Inst_DS__DS_ORDERED_COUNT
34127 
34128  void
34130  {
34132  }
34133 
34135  : Inst_DS(iFmt, "ds_add_src2_u64")
34136  {
34137  } // Inst_DS__DS_ADD_SRC2_U64
34138 
34140  {
34141  } // ~Inst_DS__DS_ADD_SRC2_U64
34142 
34143  // A = ADDR_BASE;
34144  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34145  // {offset1[6],offset1[6:0],offset0});
34146  // MEM[A] = MEM[A] + MEM[B].
34147  void
34149  {
34151  }
34152 
34154  : Inst_DS(iFmt, "ds_sub_src2_u64")
34155  {
34156  } // Inst_DS__DS_SUB_SRC2_U64
34157 
34159  {
34160  } // ~Inst_DS__DS_SUB_SRC2_U64
34161 
34162  // A = ADDR_BASE;
34163  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34164  // {offset1[6],offset1[6:0],offset0});
34165  // MEM[A] = MEM[A] - MEM[B].
34166  void
34168  {
34170  }
34171 
34173  : Inst_DS(iFmt, "ds_rsub_src2_u64")
34174  {
34175  } // Inst_DS__DS_RSUB_SRC2_U64
34176 
34178  {
34179  } // ~Inst_DS__DS_RSUB_SRC2_U64
34180 
34181  // A = ADDR_BASE;
34182  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34183  // {offset1[6],offset1[6:0],offset0});
34184  // MEM[A] = MEM[B] - MEM[A].
34185  void
34187  {
34189  }
34190 
34192  : Inst_DS(iFmt, "ds_inc_src2_u64")
34193  {
34194  } // Inst_DS__DS_INC_SRC2_U64
34195 
34197  {
34198  } // ~Inst_DS__DS_INC_SRC2_U64
34199 
34200  // A = ADDR_BASE;
34201  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34202  // {offset1[6],offset1[6:0],offset0});
34203  // MEM[A] = (MEM[A] >= MEM[B] ? 0 : MEM[A] + 1).
34204  void
34206  {
34208  }
34209 
34211  : Inst_DS(iFmt, "ds_dec_src2_u64")
34212  {
34213  } // Inst_DS__DS_DEC_SRC2_U64
34214 
34216  {
34217  } // ~Inst_DS__DS_DEC_SRC2_U64
34218 
34219  // A = ADDR_BASE;
34220  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34221  // {offset1[6],offset1[6:0],offset0});
34222  // MEM[A] = (MEM[A] == 0 || MEM[A] > MEM[B] ? MEM[B] : MEM[A] - 1).
34223  // Uint decrement.
34224  void
34226  {
34228  }
34229 
34231  : Inst_DS(iFmt, "ds_min_src2_i64")
34232  {
34233  } // Inst_DS__DS_MIN_SRC2_I64
34234 
34236  {
34237  } // ~Inst_DS__DS_MIN_SRC2_I64
34238 
34239  // A = ADDR_BASE;
34240  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34241  // {offset1[6],offset1[6:0],offset0});
34242  // MEM[A] = min(MEM[A], MEM[B]).
34243  void
34245  {
34247  }
34248 
34250  : Inst_DS(iFmt, "ds_max_src2_i64")
34251  {
34252  } // Inst_DS__DS_MAX_SRC2_I64
34253 
34255  {
34256  } // ~Inst_DS__DS_MAX_SRC2_I64
34257 
34258  // A = ADDR_BASE;
34259  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34260  // {offset1[6],offset1[6:0],offset0});
34261  // MEM[A] = max(MEM[A], MEM[B]).
34262  void
34264  {
34266  }
34267 
34269  : Inst_DS(iFmt, "ds_min_src2_u64")
34270  {
34271  } // Inst_DS__DS_MIN_SRC2_U64
34272 
34274  {
34275  } // ~Inst_DS__DS_MIN_SRC2_U64
34276 
34277  // A = ADDR_BASE;
34278  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34279  // {offset1[6],offset1[6:0],offset0});
34280  // MEM[A] = min(MEM[A], MEM[B]).
34281  void
34283  {
34285  }
34286 
34288  : Inst_DS(iFmt, "ds_max_src2_u64")
34289  {
34290  } // Inst_DS__DS_MAX_SRC2_U64
34291 
34293  {
34294  } // ~Inst_DS__DS_MAX_SRC2_U64
34295 
34296  // A = ADDR_BASE;
34297  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34298  // {offset1[6],offset1[6:0],offset0});
34299  // MEM[A] = max(MEM[A], MEM[B]).
34300  void
34302  {
34304  }
34305 
34307  : Inst_DS(iFmt, "ds_and_src2_b64")
34308  {
34309  } // Inst_DS__DS_AND_SRC2_B64
34310 
34312  {
34313  } // ~Inst_DS__DS_AND_SRC2_B64
34314 
34315  // A = ADDR_BASE;
34316  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34317  // {offset1[6],offset1[6:0],offset0});
34318  // MEM[A] = MEM[A] & MEM[B].
34319  void
34321  {
34323  }
34324 
34326  : Inst_DS(iFmt, "ds_or_src2_b64")
34327  {
34328  } // Inst_DS__DS_OR_SRC2_B64
34329 
34331  {
34332  } // ~Inst_DS__DS_OR_SRC2_B64
34333 
34334  // A = ADDR_BASE;
34335  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34336  // {offset1[6],offset1[6:0],offset0});
34337  // MEM[A] = MEM[A] | MEM[B].
34338  void
34340  {
34342  }
34343 
34345  : Inst_DS(iFmt, "ds_xor_src2_b64")
34346  {
34347  } // Inst_DS__DS_XOR_SRC2_B64
34348 
34350  {
34351  } // ~Inst_DS__DS_XOR_SRC2_B64
34352 
34353  // A = ADDR_BASE;
34354  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34355  // {offset1[6],offset1[6:0],offset0});
34356  // MEM[A] = MEM[A] ^ MEM[B].
34357  void
34359  {
34361  }
34362 
34364  : Inst_DS(iFmt, "ds_write_src2_b64")
34365  {
34366  setFlag(MemoryRef);
34367  setFlag(Store);
34368  } // Inst_DS__DS_WRITE_SRC2_B64
34369 
34371  {
34372  } // ~Inst_DS__DS_WRITE_SRC2_B64
34373 
34374  // A = ADDR_BASE;
34375  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34376  // {offset1[6],offset1[6:0],offset0});
34377  // MEM[A] = MEM[B].
34378  // Write qword.
34379  void
34381  {
34383  }
34384 
34386  : Inst_DS(iFmt, "ds_min_src2_f64")
34387  {
34388  setFlag(F64);
34389  } // Inst_DS__DS_MIN_SRC2_F64
34390 
34392  {
34393  } // ~Inst_DS__DS_MIN_SRC2_F64
34394 
34395  // A = ADDR_BASE;
34396  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34397  // {offset1[6],offset1[6:0],offset0});
34398  // MEM[A] = (MEM[B] < MEM[A]) ? MEM[B] : MEM[A].
34399  void
34401  {
34403  }
34404 
34406  : Inst_DS(iFmt, "ds_max_src2_f64")
34407  {
34408  setFlag(F64);
34409  } // Inst_DS__DS_MAX_SRC2_F64
34410 
34412  {
34413  } // ~Inst_DS__DS_MAX_SRC2_F64
34414 
34415  // A = ADDR_BASE;
34416  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34417  // {offset1[6],offset1[6:0],offset0});
34418  // MEM[A] = (MEM[B] > MEM[A]) ? MEM[B] : MEM[A].
34419  void
34421  {
34423  }
34424 
34426  : Inst_DS(iFmt, "ds_write_b96")
34427  {
34428  setFlag(MemoryRef);
34429  setFlag(Store);
34430  } // Inst_DS__DS_WRITE_B96
34431 
34433  {
34434  } // ~Inst_DS__DS_WRITE_B96
34435 
34436  // {MEM[ADDR + 8], MEM[ADDR + 4], MEM[ADDR]} = DATA[95:0].
34437  // Tri-dword write.
34438  void
34440  {
34442  }
34443 
34445  : Inst_DS(iFmt, "ds_write_b128")
34446  {
34447  setFlag(MemoryRef);
34448  setFlag(Store);
34449  } // Inst_DS__DS_WRITE_B128
34450 
34452  {
34453  } // ~Inst_DS__DS_WRITE_B128
34454 
34455  // {MEM[ADDR + 12], MEM[ADDR + 8], MEM[ADDR + 4], MEM[ADDR]} = DATA[127:0].
34456  // Qword write.
34457  void
34459  {
34461  }
34462 
34464  : Inst_DS(iFmt, "ds_read_b96")
34465  {
34466  setFlag(MemoryRef);
34467  setFlag(Load);
34468  } // Inst_DS__DS_READ_B96
34469 
34471  {
34472  } // ~Inst_DS__DS_READ_B96
34473 
34474  // Tri-dword read.
34475  void
34477  {
34479  }
34480 
34482  : Inst_DS(iFmt, "ds_read_b128")
34483  {
34484  setFlag(MemoryRef);
34485  setFlag(Load);
34486  } // Inst_DS__DS_READ_B128
34487 
34489  {
34490  } // ~Inst_DS__DS_READ_B128
34491 
34492  // Qword read.
34493  void
34495  {
34497  }
34498 
34501  : Inst_MUBUF(iFmt, "buffer_load_format_x")
34502  {
34503  setFlag(MemoryRef);
34504  setFlag(Load);
34505  setFlag(GlobalSegment);
34506  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_X
34507 
34509  {
34510  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_X
34511 
34512  // Untyped buffer load 1 dword with format conversion.
34513  void
34515  {
34517  }
34518 
34519  void
34521  {
34522  } // initiateAcc
34523 
34524  void
34526  {
34527  }
34528 
34531  : Inst_MUBUF(iFmt, "buffer_load_format_xy")
34532  {
34533  setFlag(MemoryRef);
34534  setFlag(Load);
34535  setFlag(GlobalSegment);
34536  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
34537 
34539  {
34540  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
34541 
34542  // Untyped buffer load 2 dwords with format conversion.
34543  void
34545  {
34547  }
34548 
34549  void
34551  {
34552  } // initiateAcc
34553 
34554  void
34556  {
34557  }
34558 
34561  : Inst_MUBUF(iFmt, "buffer_load_format_xyz")
34562  {
34563  setFlag(MemoryRef);
34564  setFlag(Load);
34565  setFlag(GlobalSegment);
34566  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
34567 
34569  {
34570  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
34571 
34572  // Untyped buffer load 3 dwords with format conversion.
34573  void
34575  {
34577  }
34578 
34579  void
34581  {
34582  } // initiateAcc
34583 
34584  void
34586  {
34587  }
34588 
34591  : Inst_MUBUF(iFmt, "buffer_load_format_xyzw")
34592  {
34593  setFlag(MemoryRef);
34594  setFlag(Load);
34595  setFlag(GlobalSegment);
34596  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
34597 
34599  {
34600  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
34601 
34602  // Untyped buffer load 4 dwords with format conversion.
34603  void
34605  {
34607  }
34608 
34609  void
34611  {
34612  } // initiateAcc
34613 
34614  void
34616  {
34617  }
34618 
34621  : Inst_MUBUF(iFmt, "buffer_store_format_x")
34622  {
34623  setFlag(MemoryRef);
34624  setFlag(Store);
34625  setFlag(GlobalSegment);
34626  } // Inst_MUBUF__BUFFER_STORE_FORMAT_X
34627 
34629  {
34630  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_X
34631 
34632  // Untyped buffer store 1 dword with format conversion.
34633  void
34635  {
34637  }
34638 
34639  void
34641  {
34642  } // initiateAcc
34643 
34644  void
34646  {
34647  }
34648 
34651  : Inst_MUBUF(iFmt, "buffer_store_format_xy")
34652  {
34653  setFlag(MemoryRef);
34654  setFlag(Store);
34655  setFlag(GlobalSegment);
34656  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XY
34657 
34659  {
34660  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XY
34661 
34662  // Untyped buffer store 2 dwords with format conversion.
34663  void
34665  {
34667  }
34668 
34669  void
34671  {
34672  } // initiateAcc
34673 
34674  void
34676  {
34677  }
34678 
34681  : Inst_MUBUF(iFmt, "buffer_store_format_xyz")
34682  {
34683  setFlag(MemoryRef);
34684  setFlag(Store);
34685  setFlag(GlobalSegment);
34686  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
34687 
34689  {
34690  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
34691 
34692  // Untyped buffer store 3 dwords with format conversion.
34693  void
34695  {
34697  }
34698 
34699  void
34701  {
34702  } // initiateAcc
34703 
34704  void
34706  {
34707  }
34708 
34711  : Inst_MUBUF(iFmt, "buffer_store_format_xyzw")
34712  {
34713  setFlag(MemoryRef);
34714  setFlag(Store);
34715  setFlag(GlobalSegment);
34716  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
34717 
34720  {
34721  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
34722 
34723  // Untyped buffer store 4 dwords with format conversion.
34724  void
34726  {
34728  }
34729 
34730  void
34732  {
34733  } // initiateAcc
34734 
34735  void
34737  {
34738  }
34739 
34742  : Inst_MUBUF(iFmt, "buffer_load_format_d16_x")
34743  {
34744  setFlag(MemoryRef);
34745  setFlag(Load);
34746  setFlag(GlobalSegment);
34747  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
34748 
34751  {
34752  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
34753 
34754  // Untyped buffer load 1 dword with format conversion.
34755  void
34757  {
34759  }
34760 
34761  void
34763  {
34764  } // initiateAcc
34765 
34766  void
34768  {
34769  }
34770 
34773  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xy")
34774  {
34775  setFlag(MemoryRef);
34776  setFlag(Load);
34777  setFlag(GlobalSegment);
34778  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
34779 
34782  {
34783  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
34784 
34785  // Untyped buffer load 2 dwords with format conversion.
34786  void
34788  {
34790  }
34791 
34792  void
34794  GPUDynInstPtr gpuDynInst)
34795  {
34796  } // initiateAcc
34797 
34798  void
34800  GPUDynInstPtr gpuDynInst)
34801  {
34802  }
34803 
34806  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xyz")
34807  {
34808  setFlag(MemoryRef);
34809  setFlag(Load);
34810  setFlag(GlobalSegment);
34811  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
34812 
34815  {
34816  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
34817 
34818  // Untyped buffer load 3 dwords with format conversion.
34819  void
34821  {
34823  }
34824 
34825  void
34827  GPUDynInstPtr gpuDynInst)
34828  {
34829  } // initiateAcc
34830 
34831  void
34833  GPUDynInstPtr gpuDynInst)
34834  {
34835  }
34836 
34839  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xyzw")
34840  {
34841  setFlag(MemoryRef);
34842  setFlag(Load);
34843  setFlag(GlobalSegment);
34844  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
34845 
34848  {
34849  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
34850 
34851  // Untyped buffer load 4 dwords with format conversion.
34852  void
34854  {
34856  }
34857 
34858  void
34860  GPUDynInstPtr gpuDynInst)
34861  {
34862  } // initiateAcc
34863 
34864  void
34866  GPUDynInstPtr gpuDynInst)
34867  {
34868  }
34869 
34872  : Inst_MUBUF(iFmt, "buffer_store_format_d16_x")
34873  {
34874  setFlag(MemoryRef);
34875  setFlag(Store);
34876  setFlag(GlobalSegment);
34877  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
34878 
34881  {
34882  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
34883 
34884  // Untyped buffer store 1 dword with format conversion.
34885  void
34887  {
34889  }
34890 
34891  void
34893  GPUDynInstPtr gpuDynInst)
34894  {
34895  } // initiateAcc
34896 
34897  void
34899  GPUDynInstPtr gpuDynInst)
34900  {
34901  }
34902 
34905  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xy")
34906  {
34907  setFlag(MemoryRef);
34908  setFlag(Store);
34909  setFlag(GlobalSegment);
34910  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
34911 
34914  {
34915  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
34916 
34917  // Untyped buffer store 2 dwords with format conversion.
34918  void
34920  {
34922  }
34923 
34924  void
34926  GPUDynInstPtr gpuDynInst)
34927  {
34928  } // initiateAcc
34929 
34930  void
34932  GPUDynInstPtr gpuDynInst)
34933  {
34934  }
34935 
34938  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xyz")
34939  {
34940  setFlag(MemoryRef);
34941  setFlag(Store);
34942  setFlag(GlobalSegment);
34943  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
34944 
34947  {
34948  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
34949 
34950  // Untyped buffer store 3 dwords with format conversion.
34951  void
34953  {
34955  }
34956 
34957  void
34959  GPUDynInstPtr gpuDynInst)
34960  {
34961  } // initiateAcc
34962 
34963  void
34965  GPUDynInstPtr gpuDynInst)
34966  {
34967  }
34968 
34971  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xyzw")
34972  {
34973  setFlag(MemoryRef);
34974  setFlag(Store);
34975  setFlag(GlobalSegment);
34976  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
34977 
34980  {
34981  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
34982 
34983  // Untyped buffer store 4 dwords with format conversion.
34984  void
34986  {
34988  }
34989 
34990  void
34992  GPUDynInstPtr gpuDynInst)
34993  {
34994  } // initiateAcc
34995 
34996  void
34998  GPUDynInstPtr gpuDynInst)
34999  {
35000  }
35001 
35004  : Inst_MUBUF(iFmt, "buffer_load_ubyte")
35005  {
35006  setFlag(MemoryRef);
35007  setFlag(Load);
35008  if (instData.LDS) {
35009  setFlag(GroupSegment);
35010  } else {
35011  setFlag(GlobalSegment);
35012  }
35013  } // Inst_MUBUF__BUFFER_LOAD_UBYTE
35014 
35016  {
35017  } // ~Inst_MUBUF__BUFFER_LOAD_UBYTE
35018 
35019  // Untyped buffer load unsigned byte (zero extend to VGPR destination).
35020  void
35022  {
35023  Wavefront *wf = gpuDynInst->wavefront();
35024  gpuDynInst->execUnitId = wf->execUnitId;
35025  gpuDynInst->exec_mask = wf->execMask();
35026  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35027  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35028 
35029  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35030  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35031  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35033 
35034  rsrcDesc.read();
35035  offset.read();
35036 
35037  int inst_offset = instData.OFFSET;
35038 
35039  if (!instData.IDXEN && !instData.OFFEN) {
35042  addr0, addr1, rsrcDesc, offset, inst_offset);
35043  } else if (!instData.IDXEN && instData.OFFEN) {
35044  addr0.read();
35047  addr0, addr1, rsrcDesc, offset, inst_offset);
35048  } else if (instData.IDXEN && !instData.OFFEN) {
35049  addr0.read();
35052  addr1, addr0, rsrcDesc, offset, inst_offset);
35053  } else {
35054  addr0.read();
35055  addr1.read();
35058  addr1, addr0, rsrcDesc, offset, inst_offset);
35059  }
35060 
35061  if (isLocalMem()) {
35062  gpuDynInst->computeUnit()->localMemoryPipe.
35063  issueRequest(gpuDynInst);
35064  wf->rdLmReqsInPipe--;
35065  wf->outstandingReqsRdLm++;
35066  } else {
35067  gpuDynInst->computeUnit()->globalMemoryPipe.
35068  issueRequest(gpuDynInst);
35069  wf->rdGmReqsInPipe--;
35070  wf->outstandingReqsRdGm++;
35071  }
35072 
35073  wf->outstandingReqs++;
35075  }
35076 
35077  void
35079  {
35080  initMemRead<VecElemU8>(gpuDynInst);
35081  } // initiateAcc
35082 
35083  void
35085  {
35086  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
35087 
35088  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35089  if (gpuDynInst->exec_mask[lane]) {
35090  if (!oobMask[lane]) {
35091  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU8*>(
35092  gpuDynInst->d_data))[lane]);
35093  } else {
35094  vdst[lane] = 0;
35095  }
35096  }
35097  }
35098 
35099  vdst.write();
35100  }
35101 
35102 
35105  : Inst_MUBUF(iFmt, "buffer_load_sbyte")
35106  {
35107  setFlag(MemoryRef);
35108  setFlag(Load);
35109  setFlag(GlobalSegment);
35110  } // Inst_MUBUF__BUFFER_LOAD_SBYTE
35111 
35113  {
35114  } // ~Inst_MUBUF__BUFFER_LOAD_SBYTE
35115 
35116  // Untyped buffer load signed byte (sign extend to VGPR destination).
35117  void
35119  {
35121  }
35122 
35123  void
35125  {
35126  } // initiateAcc
35127 
35128  void
35130  {
35131  }
35132 
35135  : Inst_MUBUF(iFmt, "buffer_load_ushort")
35136  {
35137  setFlag(MemoryRef);
35138  setFlag(Load);
35139  if (instData.LDS) {
35140  setFlag(GroupSegment);
35141  } else {
35142  setFlag(GlobalSegment);
35143  }
35144  } // Inst_MUBUF__BUFFER_LOAD_USHORT
35145 
35147  {
35148  } // ~Inst_MUBUF__BUFFER_LOAD_USHORT
35149 
35150  // Untyped buffer load unsigned short (zero extend to VGPR destination).
35151  void
35153  {
35154  Wavefront *wf = gpuDynInst->wavefront();
35155  gpuDynInst->execUnitId = wf->execUnitId;
35156  gpuDynInst->exec_mask = wf->execMask();
35157  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35158  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35159 
35160  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35161  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35162  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35164 
35165  rsrcDesc.read();
35166  offset.read();
35167 
35168  int inst_offset = instData.OFFSET;
35169 
35170  if (!instData.IDXEN && !instData.OFFEN) {
35173  addr0, addr1, rsrcDesc, offset, inst_offset);
35174  } else if (!instData.IDXEN && instData.OFFEN) {
35175  addr0.read();
35178  addr0, addr1, rsrcDesc, offset, inst_offset);
35179  } else if (instData.IDXEN && !instData.OFFEN) {
35180  addr0.read();
35183  addr1, addr0, rsrcDesc, offset, inst_offset);
35184  } else {
35185  addr0.read();
35186  addr1.read();
35189  addr1, addr0, rsrcDesc, offset, inst_offset);
35190  }
35191 
35192  if (isLocalMem()) {
35193  gpuDynInst->computeUnit()->localMemoryPipe
35194  .issueRequest(gpuDynInst);
35195  wf->rdLmReqsInPipe--;
35196  wf->outstandingReqsRdLm++;
35197  } else {
35198  gpuDynInst->computeUnit()->globalMemoryPipe
35199  .issueRequest(gpuDynInst);
35200  wf->rdGmReqsInPipe--;
35201  wf->outstandingReqsRdGm++;
35202  }
35203 
35204  wf->outstandingReqs++;
35206  }
35207 
35208  void
35210  {
35211  initMemRead<VecElemU16>(gpuDynInst);
35212  } // initiateAcc
35213 
35214  void
35216  {
35217  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
35218 
35219  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35220  if (gpuDynInst->exec_mask[lane]) {
35221  if (!oobMask[lane]) {
35222  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU16*>(
35223  gpuDynInst->d_data))[lane]);
35224  } else {
35225  vdst[lane] = 0;
35226  }
35227  }
35228  }
35229 
35230  vdst.write();
35231  }
35232 
35233 
35236  : Inst_MUBUF(iFmt, "buffer_load_sshort")
35237  {
35238  setFlag(MemoryRef);
35239  setFlag(Load);
35240  setFlag(GlobalSegment);
35241  } // Inst_MUBUF__BUFFER_LOAD_SSHORT
35242 
35244  {
35245  } // ~Inst_MUBUF__BUFFER_LOAD_SSHORT
35246 
35247  // Untyped buffer load signed short (sign extend to VGPR destination).
35248  void
35250  {
35252  }
35253 
35254  void
35256  {
35257  } // initiateAcc
35258 
35259  void
35261  {
35262  }
35263 
35266  : Inst_MUBUF(iFmt, "buffer_load_dword")
35267  {
35268  setFlag(MemoryRef);
35269  setFlag(Load);
35270  if (instData.LDS) {
35271  setFlag(GroupSegment);
35272  } else {
35273  setFlag(GlobalSegment);
35274  }
35275  } // Inst_MUBUF__BUFFER_LOAD_DWORD
35276 
35278  {
35279  } // ~Inst_MUBUF__BUFFER_LOAD_DWORD
35280 
35281  // Untyped buffer load dword.
35282  void
35284  {
35285  Wavefront *wf = gpuDynInst->wavefront();
35286  gpuDynInst->execUnitId = wf->execUnitId;
35287  gpuDynInst->exec_mask = wf->execMask();
35288  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35289  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35290 
35291  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35292  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35293  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35295 
35296  rsrcDesc.read();
35297  offset.read();
35298 
35299  int inst_offset = instData.OFFSET;
35300 
35301  if (!instData.IDXEN && !instData.OFFEN) {
35304  addr0, addr1, rsrcDesc, offset, inst_offset);
35305  } else if (!instData.IDXEN && instData.OFFEN) {
35306  addr0.read();
35309  addr0, addr1, rsrcDesc, offset, inst_offset);
35310  } else if (instData.IDXEN && !instData.OFFEN) {
35311  addr0.read();
35314  addr1, addr0, rsrcDesc, offset, inst_offset);
35315  } else {
35316  addr0.read();
35317  addr1.read();
35320  addr1, addr0, rsrcDesc, offset, inst_offset);
35321  }
35322 
35323  if (isLocalMem()) {
35324  gpuDynInst->computeUnit()->localMemoryPipe
35325  .issueRequest(gpuDynInst);
35326  wf->rdLmReqsInPipe--;
35327  wf->outstandingReqsRdLm++;
35328  } else {
35329  gpuDynInst->computeUnit()->globalMemoryPipe
35330  .issueRequest(gpuDynInst);
35331  wf->rdGmReqsInPipe--;
35332  wf->outstandingReqsRdGm++;
35333  }
35334 
35335  wf->outstandingReqs++;
35337  }
35338 
35339  void
35341  {
35342  initMemRead<VecElemU32>(gpuDynInst);
35343  } // initiateAcc
35344 
35345  void
35347  {
35348  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
35349 
35350  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35351  if (gpuDynInst->exec_mask[lane]) {
35352  if (!oobMask[lane]) {
35353  vdst[lane] = (reinterpret_cast<VecElemU32*>(
35354  gpuDynInst->d_data))[lane];
35355  } else {
35356  vdst[lane] = 0;
35357  }
35358  }
35359  }
35360 
35361  vdst.write();
35362  } // completeAcc
35363 
35366  : Inst_MUBUF(iFmt, "buffer_load_dwordx2")
35367  {
35368  setFlag(MemoryRef);
35369  setFlag(Load);
35370  if (instData.LDS) {
35371  setFlag(GroupSegment);
35372  } else {
35373  setFlag(GlobalSegment);
35374  }
35375  } // Inst_MUBUF__BUFFER_LOAD_DWORDX2
35376 
35378  {
35379  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX2
35380 
35381  // Untyped buffer load 2 dwords.
35382  void
35384  {
35385  Wavefront *wf = gpuDynInst->wavefront();
35386  gpuDynInst->execUnitId = wf->execUnitId;
35387  gpuDynInst->exec_mask = wf->execMask();
35388  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35389  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35390 
35391  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35392  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35393  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35395 
35396  rsrcDesc.read();
35397  offset.read();
35398 
35399  int inst_offset = instData.OFFSET;
35400 
35401  if (!instData.IDXEN && !instData.OFFEN) {
35404  addr0, addr1, rsrcDesc, offset, inst_offset);
35405  } else if (!instData.IDXEN && instData.OFFEN) {
35406  addr0.read();
35409  addr0, addr1, rsrcDesc, offset, inst_offset);
35410  } else if (instData.IDXEN && !instData.OFFEN) {
35411  addr0.read();
35414  addr1, addr0, rsrcDesc, offset, inst_offset);
35415  } else {
35416  addr0.read();
35417  addr1.read();
35420  addr1, addr0, rsrcDesc, offset, inst_offset);
35421  }
35422 
35423  if (isLocalMem()) {
35424  gpuDynInst->computeUnit()->localMemoryPipe
35425  .issueRequest(gpuDynInst);
35426  wf->rdLmReqsInPipe--;
35427  wf->outstandingReqsRdLm++;
35428  } else {
35429  gpuDynInst->computeUnit()->globalMemoryPipe
35430  .issueRequest(gpuDynInst);
35431  wf->rdGmReqsInPipe--;
35432  wf->outstandingReqsRdGm++;
35433  }
35434 
35435  wf->outstandingReqs++;
35437  } // execute
35438 
35439  void
35441  {
35442  initMemRead<2>(gpuDynInst);
35443  } // initiateAcc
35444 
35445  void
35447  {
35448  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
35449  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
35450 
35451  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35452  if (gpuDynInst->exec_mask[lane]) {
35453  if (!oobMask[lane]) {
35454  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
35455  gpuDynInst->d_data))[lane * 2];
35456  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
35457  gpuDynInst->d_data))[lane * 2 + 1];
35458  } else {
35459  vdst0[lane] = 0;
35460  vdst1[lane] = 0;
35461  }
35462  }
35463  }
35464 
35465  vdst0.write();
35466  vdst1.write();
35467  } // completeAcc
35468 
35471  : Inst_MUBUF(iFmt, "buffer_load_dwordx3")
35472  {
35473  setFlag(MemoryRef);
35474  setFlag(Load);
35475  if (instData.LDS) {
35476  setFlag(GroupSegment);
35477  } else {
35478  setFlag(GlobalSegment);
35479  }
35480  } // Inst_MUBUF__BUFFER_LOAD_DWORDX3
35481 
35483  {
35484  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX3
35485 
35486  // Untyped buffer load 3 dwords.
35487  void
35489  {
35490  Wavefront *wf = gpuDynInst->wavefront();
35491  gpuDynInst->execUnitId = wf->execUnitId;
35492  gpuDynInst->exec_mask = wf->execMask();
35493  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35494  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35495 
35496  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35497  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35498  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35500 
35501  rsrcDesc.read();
35502  offset.read();
35503 
35504  int inst_offset = instData.OFFSET;
35505 
35506  if (!instData.IDXEN && !instData.OFFEN) {
35509  addr0, addr1, rsrcDesc, offset, inst_offset);
35510  } else if (!instData.IDXEN && instData.OFFEN) {
35511  addr0.read();
35514  addr0, addr1, rsrcDesc, offset, inst_offset);
35515  } else if (instData.IDXEN && !instData.OFFEN) {
35516  addr0.read();
35519  addr1, addr0, rsrcDesc, offset, inst_offset);
35520  } else {
35521  addr0.read();
35522  addr1.read();
35525  addr1, addr0, rsrcDesc, offset, inst_offset);
35526  }
35527 
35528  if (isLocalMem()) {
35529  gpuDynInst->computeUnit()->localMemoryPipe
35530  .issueRequest(gpuDynInst);
35531  wf->rdLmReqsInPipe--;
35532  wf->outstandingReqsRdLm++;
35533  } else {
35534  gpuDynInst->computeUnit()->globalMemoryPipe
35535  .issueRequest(gpuDynInst);
35536  wf->rdGmReqsInPipe--;
35537  wf->outstandingReqsRdGm++;
35538  }
35539 
35540  wf->outstandingReqs++;
35542  } // execute
35543 
35544  void
35546  {
35547  initMemRead<3>(gpuDynInst);
35548  } // initiateAcc
35549 
35550  void
35552  {
35553  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
35554  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
35555  VecOperandU32 vdst2(gpuDynInst, extData.VDATA + 2);
35556 
35557  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35558  if (gpuDynInst->exec_mask[lane]) {
35559  if (!oobMask[lane]) {
35560  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
35561  gpuDynInst->d_data))[lane * 3];
35562  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
35563  gpuDynInst->d_data))[lane * 3 + 1];
35564  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
35565  gpuDynInst->d_data))[lane * 3 + 2];
35566  } else {
35567  vdst0[lane] = 0;
35568  vdst1[lane] = 0;
35569  vdst2[lane] = 0;
35570  }
35571  }
35572  }
35573 
35574  vdst0.write();
35575  vdst1.write();
35576  vdst2.write();
35577  } // completeAcc
35578 
35581  : Inst_MUBUF(iFmt, "buffer_load_dwordx4")
35582  {
35583  setFlag(MemoryRef);
35584  setFlag(Load);
35585  if (instData.LDS) {
35586  setFlag(GroupSegment);
35587  } else {
35588  setFlag(GlobalSegment);
35589  }
35590  } // Inst_MUBUF__BUFFER_LOAD_DWORDX4
35591 
35593  {
35594  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX4
35595 
35596  // Untyped buffer load 4 dwords.
35597  void
35599  {
35600  Wavefront *wf = gpuDynInst->wavefront();
35601  gpuDynInst->execUnitId = wf->execUnitId;
35602  gpuDynInst->exec_mask = wf->execMask();
35603  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35604  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35605 
35606  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35607  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35608  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35610 
35611  rsrcDesc.read();
35612  offset.read();
35613 
35614  int inst_offset = instData.OFFSET;
35615 
35616  if (!instData.IDXEN && !instData.OFFEN) {
35619  addr0, addr1, rsrcDesc, offset, inst_offset);
35620  } else if (!instData.IDXEN && instData.OFFEN) {
35621  addr0.read();
35624  addr0, addr1, rsrcDesc, offset, inst_offset);
35625  } else if (instData.IDXEN && !instData.OFFEN) {
35626  addr0.read();
35629  addr1, addr0, rsrcDesc, offset, inst_offset);
35630  } else {
35631  addr0.read();
35632  addr1.read();
35635  addr1, addr0, rsrcDesc, offset, inst_offset);
35636  }
35637 
35638  if (isLocalMem()) {
35639  gpuDynInst->computeUnit()->localMemoryPipe
35640  .issueRequest(gpuDynInst);
35641  wf->rdLmReqsInPipe--;
35642  wf->outstandingReqsRdLm++;
35643  } else {
35644  gpuDynInst->computeUnit()->globalMemoryPipe
35645  .issueRequest(gpuDynInst);
35646  wf->rdGmReqsInPipe--;
35647  wf->outstandingReqsRdGm++;
35648  }
35649 
35650  wf->outstandingReqs++;
35652  } // execute
35653 
35654  void
35656  {
35657  initMemRead<4>(gpuDynInst);
35658  } // initiateAcc
35659 
35660  void
35662  {
35663  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
35664  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
35665  VecOperandU32 vdst2(gpuDynInst, extData.VDATA + 2);
35666  VecOperandU32 vdst3(gpuDynInst, extData.VDATA + 3);
35667 
35668  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35669  if (gpuDynInst->exec_mask[lane]) {
35670  if (!oobMask[lane]) {
35671  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
35672  gpuDynInst->d_data))[lane * 4];
35673  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
35674  gpuDynInst->d_data))[lane * 4 + 1];
35675  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
35676  gpuDynInst->d_data))[lane * 4 + 2];
35677  vdst3[lane] = (reinterpret_cast<VecElemU32*>(
35678  gpuDynInst->d_data))[lane * 4 + 3];
35679  } else {
35680  vdst0[lane] = 0;
35681  vdst1[lane] = 0;
35682  vdst2[lane] = 0;
35683  vdst3[lane] = 0;
35684  }
35685  }
35686  }
35687 
35688  vdst0.write();
35689  vdst1.write();
35690  vdst2.write();
35691  vdst3.write();
35692  } // completeAcc
35693 
35696  : Inst_MUBUF(iFmt, "buffer_store_byte")
35697  {
35698  setFlag(MemoryRef);
35699  setFlag(Store);
35700  if (instData.LDS) {
35701  setFlag(GroupSegment);
35702  } else {
35703  setFlag(GlobalSegment);
35704  }
35705  } // Inst_MUBUF__BUFFER_STORE_BYTE
35706 
35708  {
35709  } // ~Inst_MUBUF__BUFFER_STORE_BYTE
35710 
35711  // Untyped buffer store byte.
35712  void
35714  {
35715  Wavefront *wf = gpuDynInst->wavefront();
35716  gpuDynInst->execUnitId = wf->execUnitId;
35717  gpuDynInst->exec_mask = wf->execMask();
35718  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35719  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35720 
35721  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35722  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35723  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35725 
35726  rsrcDesc.read();
35727  offset.read();
35728 
35729  int inst_offset = instData.OFFSET;
35730 
35731  if (!instData.IDXEN && !instData.OFFEN) {
35734  addr0, addr1, rsrcDesc, offset, inst_offset);
35735  } else if (!instData.IDXEN && instData.OFFEN) {
35736  addr0.read();
35739  addr0, addr1, rsrcDesc, offset, inst_offset);
35740  } else if (instData.IDXEN && !instData.OFFEN) {
35741  addr0.read();
35744  addr1, addr0, rsrcDesc, offset, inst_offset);
35745  } else {
35746  addr0.read();
35747  addr1.read();
35750  addr1, addr0, rsrcDesc, offset, inst_offset);
35751  }
35752 
35753  if (isLocalMem()) {
35754  gpuDynInst->computeUnit()->localMemoryPipe
35755  .issueRequest(gpuDynInst);
35756  wf->wrLmReqsInPipe--;
35757  wf->outstandingReqsWrLm++;
35758  } else {
35759  gpuDynInst->computeUnit()->globalMemoryPipe
35760  .issueRequest(gpuDynInst);
35761  wf->wrGmReqsInPipe--;
35762  wf->outstandingReqsWrGm++;
35763  }
35764 
35765  wf->outstandingReqs++;
35767  }
35768 
35769  void
35771  {
35772  ConstVecOperandI8 data(gpuDynInst, extData.VDATA);
35773  data.read();
35774 
35775  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35776  if (gpuDynInst->exec_mask[lane]) {
35777  (reinterpret_cast<VecElemI8*>(gpuDynInst->d_data))[lane]
35778  = data[lane];
35779  }
35780  }
35781 
35782  initMemWrite<VecElemI8>(gpuDynInst);
35783  } // initiateAcc
35784 
35785  void
35787  {
35788  }
35789 
35792  : Inst_MUBUF(iFmt, "buffer_store_short")
35793  {
35794  setFlag(MemoryRef);
35795  setFlag(Store);
35796  if (instData.LDS) {
35797  setFlag(GroupSegment);
35798  } else {
35799  setFlag(GlobalSegment);
35800  }
35801  } // Inst_MUBUF__BUFFER_STORE_SHORT
35802 
35804  {
35805  } // ~Inst_MUBUF__BUFFER_STORE_SHORT
35806 
35807  // Untyped buffer store short.
35808  void
35810  {
35811  Wavefront *wf = gpuDynInst->wavefront();
35812  gpuDynInst->execUnitId = wf->execUnitId;
35813  gpuDynInst->exec_mask = wf->execMask();
35814  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35815  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35816 
35817  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35818  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35819  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35821 
35822  rsrcDesc.read();
35823  offset.read();
35824 
35825  int inst_offset = instData.OFFSET;
35826 
35827  if (!instData.IDXEN && !instData.OFFEN) {
35830  addr0, addr1, rsrcDesc, offset, inst_offset);
35831  } else if (!instData.IDXEN && instData.OFFEN) {
35832  addr0.read();
35835  addr0, addr1, rsrcDesc, offset, inst_offset);
35836  } else if (instData.IDXEN && !instData.OFFEN) {
35837  addr0.read();
35840  addr1, addr0, rsrcDesc, offset, inst_offset);
35841  } else {
35842  addr0.read();
35843  addr1.read();
35846  addr1, addr0, rsrcDesc, offset, inst_offset);
35847  }
35848 
35849  if (isLocalMem()) {
35850  gpuDynInst->computeUnit()->localMemoryPipe
35851  .issueRequest(gpuDynInst);
35852  wf->wrLmReqsInPipe--;
35853  wf->outstandingReqsWrLm++;
35854  } else {
35855  gpuDynInst->computeUnit()->globalMemoryPipe
35856  .issueRequest(gpuDynInst);
35857  wf->wrGmReqsInPipe--;
35858  wf->outstandingReqsWrGm++;
35859  }
35860 
35861  wf->outstandingReqs++;
35863  }
35864 
35865  void
35867  {
35868  ConstVecOperandI16 data(gpuDynInst, extData.VDATA);
35869  data.read();
35870 
35871  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35872  if (gpuDynInst->exec_mask[lane]) {
35873  (reinterpret_cast<VecElemI16*>(gpuDynInst->d_data))[lane]
35874  = data[lane];
35875  }
35876  }
35877 
35878  initMemWrite<VecElemI16>(gpuDynInst);
35879  } // initiateAcc
35880 
35881  void
35883  {
35884  }
35885 
35888  : Inst_MUBUF(iFmt, "buffer_store_dword")
35889  {
35890  setFlag(MemoryRef);
35891  setFlag(Store);
35892  if (instData.LDS) {
35893  setFlag(GroupSegment);
35894  } else {
35895  setFlag(GlobalSegment);
35896  }
35897  } // Inst_MUBUF__BUFFER_STORE_DWORD
35898 
35900  {
35901  } // ~Inst_MUBUF__BUFFER_STORE_DWORD
35902 
35903  // Untyped buffer store dword.
35904  void
35906  {
35907  Wavefront *wf = gpuDynInst->wavefront();
35908  gpuDynInst->execUnitId = wf->execUnitId;
35909  gpuDynInst->exec_mask = wf->execMask();
35910  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35911  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35912 
35913  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35914  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35915  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35917 
35918  rsrcDesc.read();
35919  offset.read();
35920 
35921  int inst_offset = instData.OFFSET;
35922 
35923  if (!instData.IDXEN && !instData.OFFEN) {
35926  addr0, addr1, rsrcDesc, offset, inst_offset);
35927  } else if (!instData.IDXEN && instData.OFFEN) {
35928  addr0.read();
35931  addr0, addr1, rsrcDesc, offset, inst_offset);
35932  } else if (instData.IDXEN && !instData.OFFEN) {
35933  addr0.read();
35936  addr1, addr0, rsrcDesc, offset, inst_offset);
35937  } else {
35938  addr0.read();
35939  addr1.read();
35942  addr1, addr0, rsrcDesc, offset, inst_offset);
35943  }
35944 
35945  if (isLocalMem()) {
35946  gpuDynInst->computeUnit()->localMemoryPipe
35947  .issueRequest(gpuDynInst);
35948  wf->wrLmReqsInPipe--;
35949  wf->outstandingReqsWrLm++;
35950  } else {
35951  gpuDynInst->computeUnit()->globalMemoryPipe
35952  .issueRequest(gpuDynInst);
35953  wf->wrGmReqsInPipe--;
35954  wf->outstandingReqsWrGm++;
35955  }
35956 
35957  wf->outstandingReqs++;
35959  }
35960 
35961  void
35963  {
35964  ConstVecOperandU32 data(gpuDynInst, extData.VDATA);
35965  data.read();
35966 
35967  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35968  if (gpuDynInst->exec_mask[lane]) {
35969  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane]
35970  = data[lane];
35971  }
35972  }
35973 
35974  initMemWrite<VecElemU32>(gpuDynInst);
35975  } // initiateAcc
35976 
35977  void
35979  {
35980  } // completeAcc
35981 
35984  : Inst_MUBUF(iFmt, "buffer_store_dwordx2")
35985  {
35986  setFlag(MemoryRef);
35987  setFlag(Store);
35988  if (instData.LDS) {
35989  setFlag(GroupSegment);
35990  } else {
35991  setFlag(GlobalSegment);
35992  }
35993  } // Inst_MUBUF__BUFFER_STORE_DWORDX2
35994 
35996  {
35997  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX2
35998 
35999  // Untyped buffer store 2 dwords.
36000  void
36002  {
36003  Wavefront *wf = gpuDynInst->wavefront();
36004  gpuDynInst->execUnitId = wf->execUnitId;
36005  gpuDynInst->exec_mask = wf->execMask();
36006  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36007  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36008 
36009  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
36010  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
36011  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
36013  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
36014  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
36015 
36016  rsrcDesc.read();
36017  offset.read();
36018  data0.read();
36019  data1.read();
36020 
36021  int inst_offset = instData.OFFSET;
36022 
36023  if (!instData.IDXEN && !instData.OFFEN) {
36026  addr0, addr1, rsrcDesc, offset, inst_offset);
36027  } else if (!instData.IDXEN && instData.OFFEN) {
36028  addr0.read();
36031  addr0, addr1, rsrcDesc, offset, inst_offset);
36032  } else if (instData.IDXEN && !instData.OFFEN) {
36033  addr0.read();
36036  addr1, addr0, rsrcDesc, offset, inst_offset);
36037  } else {
36038  addr0.read();
36039  addr1.read();
36042  addr1, addr0, rsrcDesc, offset, inst_offset);
36043  }
36044 
36045  if (isLocalMem()) {
36046  gpuDynInst->computeUnit()->localMemoryPipe
36047  .issueRequest(gpuDynInst);
36048  wf->wrLmReqsInPipe--;
36049  wf->outstandingReqsWrLm++;
36050  } else {
36051  gpuDynInst->computeUnit()->globalMemoryPipe
36052  .issueRequest(gpuDynInst);
36053  wf->wrGmReqsInPipe--;
36054  wf->outstandingReqsWrGm++;
36055  }
36056 
36057  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36058  if (gpuDynInst->exec_mask[lane]) {
36059  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
36060  = data0[lane];
36061  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
36062  = data1[lane];
36063  }
36064  }
36065 
36066  wf->outstandingReqs++;
36068  } // execute
36069 
36070  void
36072  {
36073  initMemWrite<2>(gpuDynInst);
36074  } // initiateAcc
36075 
36076  void
36078  {
36079  } // completeAcc
36080 
36083  : Inst_MUBUF(iFmt, "buffer_store_dwordx3")
36084  {
36085  setFlag(MemoryRef);
36086  setFlag(Store);
36087  if (instData.LDS) {
36088  setFlag(GroupSegment);
36089  } else {
36090  setFlag(GlobalSegment);
36091  }
36092  } // Inst_MUBUF__BUFFER_STORE_DWORDX3
36093 
36095  {
36096  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX3
36097 
36098  // Untyped buffer store 3 dwords.
36099  void
36101  {
36102  Wavefront *wf = gpuDynInst->wavefront();
36103  gpuDynInst->execUnitId = wf->execUnitId;
36104  gpuDynInst->exec_mask = wf->execMask();
36105  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36106  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36107 
36108  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
36109  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
36110  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
36112  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
36113  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
36114  ConstVecOperandU32 data2(gpuDynInst, extData.VDATA + 2);
36115 
36116  rsrcDesc.read();
36117  offset.read();
36118  data0.read();
36119  data1.read();
36120  data2.read();
36121 
36122  int inst_offset = instData.OFFSET;
36123 
36124  if (!instData.IDXEN && !instData.OFFEN) {
36127  addr0, addr1, rsrcDesc, offset, inst_offset);
36128  } else if (!instData.IDXEN && instData.OFFEN) {
36129  addr0.read();
36132  addr0, addr1, rsrcDesc, offset, inst_offset);
36133  } else if (instData.IDXEN && !instData.OFFEN) {
36134  addr0.read();
36137  addr1, addr0, rsrcDesc, offset, inst_offset);
36138  } else {
36139  addr0.read();
36140  addr1.read();
36143  addr1, addr0, rsrcDesc, offset, inst_offset);
36144  }
36145 
36146  if (isLocalMem()) {
36147  gpuDynInst->computeUnit()->localMemoryPipe
36148  .issueRequest(gpuDynInst);
36149  wf->wrLmReqsInPipe--;
36150  wf->outstandingReqsWrLm++;
36151  } else {
36152  gpuDynInst->computeUnit()->globalMemoryPipe
36153  .issueRequest(gpuDynInst);
36154  wf->wrGmReqsInPipe--;
36155  wf->outstandingReqsWrGm++;
36156  }
36157 
36158  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36159  if (gpuDynInst->exec_mask[lane]) {
36160  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
36161  = data0[lane];
36162  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
36163  = data1[lane];
36164  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 2]
36165  = data2[lane];
36166  }
36167  }
36168 
36169  wf->outstandingReqs++;
36171  } // execute
36172 
36173  void
36175  {
36176  initMemWrite<3>(gpuDynInst);
36177  } // initiateAcc
36178 
36179  void
36181  {
36182  } // completeAcc
36183 
36186  : Inst_MUBUF(iFmt, "buffer_store_dwordx4")
36187  {
36188  setFlag(MemoryRef);
36189  setFlag(Store);
36190  if (instData.LDS) {
36191  setFlag(GroupSegment);
36192  } else {
36193  setFlag(GlobalSegment);
36194  }
36195  } // Inst_MUBUF__BUFFER_STORE_DWORDX4
36196 
36198  {
36199  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX4
36200 
36201  // Untyped buffer store 4 dwords.
36202  void
36204  {
36205  Wavefront *wf = gpuDynInst->wavefront();
36206  gpuDynInst->execUnitId = wf->execUnitId;
36207  gpuDynInst->exec_mask = wf->execMask();
36208  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36209  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36210 
36211  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
36212  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
36213  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
36215  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
36216  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
36217  ConstVecOperandU32 data2(gpuDynInst, extData.VDATA + 2);
36218  ConstVecOperandU32 data3(gpuDynInst, extData.VDATA + 3);
36219 
36220  rsrcDesc.read();
36221  offset.read();
36222  data0.read();
36223  data1.read();
36224  data2.read();
36225  data3.read();
36226 
36227  int inst_offset = instData.OFFSET;
36228 
36229  if (!instData.IDXEN && !instData.OFFEN) {
36232  addr0, addr1, rsrcDesc, offset, inst_offset);
36233  } else if (!instData.IDXEN && instData.OFFEN) {
36234  addr0.read();
36237  addr0, addr1, rsrcDesc, offset, inst_offset);
36238  } else if (instData.IDXEN && !instData.OFFEN) {
36239  addr0.read();
36242  addr1, addr0, rsrcDesc, offset, inst_offset);
36243  } else {
36244  addr0.read();
36245  addr1.read();
36248  addr1, addr0, rsrcDesc, offset, inst_offset);
36249  }
36250 
36251  if (isLocalMem()) {
36252  gpuDynInst->computeUnit()->localMemoryPipe
36253  .issueRequest(gpuDynInst);
36254  wf->wrLmReqsInPipe--;
36255  wf->outstandingReqsWrLm++;
36256  } else {
36257  gpuDynInst->computeUnit()->globalMemoryPipe
36258  .issueRequest(gpuDynInst);
36259  wf->wrGmReqsInPipe--;
36260  wf->outstandingReqsWrGm++;
36261  }
36262 
36263  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36264  if (gpuDynInst->exec_mask[lane]) {
36265  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
36266  = data0[lane];
36267  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
36268  = data1[lane];
36269  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 2]
36270  = data2[lane];
36271  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 3]
36272  = data3[lane];
36273  }
36274  }
36275 
36276  wf->outstandingReqs++;
36278  } // execute
36279 
36280  void
36282  {
36283  initMemWrite<4>(gpuDynInst);
36284  } // initiateAcc
36285 
36286  void
36288  {
36289  } // completeAcc
36290 
36293  : Inst_MUBUF(iFmt, "buffer_store_lds_dword")
36294  {
36295  setFlag(GlobalSegment);
36296  } // Inst_MUBUF__BUFFER_STORE_LDS_DWORD
36297 
36299  {
36300  } // ~Inst_MUBUF__BUFFER_STORE_LDS_DWORD
36301 
36302  // Store one DWORD from LDS memory to system memory without utilizing
36303  // VGPRs.
36304  void
36306  {
36308  }
36309 
36311  : Inst_MUBUF(iFmt, "buffer_wbinvl1")
36312  {
36313  setFlag(MemoryRef);
36314  setFlag(GPUStaticInst::MemSync);
36315  setFlag(GlobalSegment);
36316  setFlag(MemSync);
36317  } // Inst_MUBUF__BUFFER_WBINVL1
36318 
36320  {
36321  } // ~Inst_MUBUF__BUFFER_WBINVL1
36322 
36323  // Write back and invalidate the shader L1.
36324  // Always returns ACK to shader.
36325  void
36327  {
36328  Wavefront *wf = gpuDynInst->wavefront();
36329  gpuDynInst->execUnitId = wf->execUnitId;
36330  gpuDynInst->exec_mask = wf->execMask();
36331  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36332  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36333 
36334  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
36335  gpuDynInst->computeUnit()->globalMemoryPipe.
36336  issueRequest(gpuDynInst);
36337  wf->wrGmReqsInPipe--;
36338  wf->rdGmReqsInPipe--;
36339 
36340  wf->outstandingReqsWrGm++;
36341  wf->outstandingReqsRdGm++;
36342  } else {
36343  fatal("Non global flat instructions not implemented yet.\n");
36344  }
36345 
36346  wf->outstandingReqs++;
36348  }
36349 
36350  void
36352  {
36353  injectGlobalMemFence(gpuDynInst);
36354  } // initiateAcc
36355 
36356  void
36358  {
36359  } // completeAcc
36360 
36363  : Inst_MUBUF(iFmt, "buffer_wbinvl1_vol") {
36371  setFlag(MemoryRef);
36372  setFlag(GPUStaticInst::MemSync);
36373  setFlag(GlobalSegment);
36374  setFlag(MemSync);
36375  } // Inst_MUBUF__BUFFER_WBINVL1_VOL
36376 
36378  {
36379  } // ~Inst_MUBUF__BUFFER_WBINVL1_VOL
36380 
36381  // Write back and invalidate the shader L1 only for lines that are marked
36382  // volatile. Always returns ACK to shader.
36383  void
36385  {
36386  Wavefront *wf = gpuDynInst->wavefront();
36387  gpuDynInst->execUnitId = wf->execUnitId;
36388  gpuDynInst->exec_mask = wf->execMask();
36389  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36390  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36391 
36392  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
36393  gpuDynInst->computeUnit()->globalMemoryPipe.
36394  issueRequest(gpuDynInst);
36395  wf->wrGmReqsInPipe--;
36396  wf->rdGmReqsInPipe--;
36397 
36398  wf->outstandingReqsWrGm++;
36399  wf->outstandingReqsRdGm++;
36400  } else {
36401  fatal("Non global flat instructions not implemented yet.\n");
36402  }
36403 
36404  wf->outstandingReqs++;
36406  }
36407  void
36409  {
36410  injectGlobalMemFence(gpuDynInst);
36411  } // initiateAcc
36412  void
36414  {
36415  } // completeAcc
36416 
36419  : Inst_MUBUF(iFmt, "buffer_atomic_swap")
36420  {
36421  setFlag(AtomicExch);
36422  if (instData.GLC) {
36423  setFlag(AtomicReturn);
36424  } else {
36425  setFlag(AtomicNoReturn);
36426  } // if
36427  setFlag(MemoryRef);
36428  setFlag(GlobalSegment);
36429  } // Inst_MUBUF__BUFFER_ATOMIC_SWAP
36430 
36432  {
36433  } // ~Inst_MUBUF__BUFFER_ATOMIC_SWAP
36434 
36435  // tmp = MEM[ADDR];
36436  // MEM[ADDR] = DATA;
36437  // RETURN_DATA = tmp.
36438  void
36440  {
36442  }
36443 
36446  : Inst_MUBUF(iFmt, "buffer_atomic_cmpswap")
36447  {
36448  setFlag(AtomicCAS);
36449  if (instData.GLC) {
36450  setFlag(AtomicReturn);
36451  } else {
36452  setFlag(AtomicNoReturn);
36453  }
36454  setFlag(MemoryRef);
36455  setFlag(GlobalSegment);
36456  } // Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
36457 
36459  {
36460  } // ~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
36461 
36462  // tmp = MEM[ADDR];
36463  // src = DATA[0];
36464  // cmp = DATA[1];
36465  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
36466  // RETURN_DATA[0] = tmp.
36467  void
36469  {
36471  }
36472 
36475  : Inst_MUBUF(iFmt, "buffer_atomic_add")
36476  {
36477  setFlag(AtomicAdd);
36478  if (instData.GLC) {
36479  setFlag(AtomicReturn);
36480  } else {
36481  setFlag(AtomicNoReturn);
36482  } // if
36483  setFlag(MemoryRef);
36484  setFlag(GlobalSegment);
36485  } // Inst_MUBUF__BUFFER_ATOMIC_ADD
36486 
36488  {
36489  } // ~Inst_MUBUF__BUFFER_ATOMIC_ADD
36490 
36491  // tmp = MEM[ADDR];
36492  // MEM[ADDR] += DATA;
36493  // RETURN_DATA = tmp.
36494  void
36496  {
36498  }
36499 
36502  : Inst_MUBUF(iFmt, "buffer_atomic_sub")
36503  {
36504  setFlag(AtomicSub);
36505  if (instData.GLC) {
36506  setFlag(AtomicReturn);
36507  } else {
36508  setFlag(AtomicNoReturn);
36509  }
36510  setFlag(MemoryRef);
36511  setFlag(GlobalSegment);
36512  } // Inst_MUBUF__BUFFER_ATOMIC_SUB
36513 
36515  {
36516  } // ~Inst_MUBUF__BUFFER_ATOMIC_SUB
36517 
36518  // tmp = MEM[ADDR];
36519  // MEM[ADDR] -= DATA;
36520  // RETURN_DATA = tmp.
36521  void
36523  {
36525  }
36526 
36529  : Inst_MUBUF(iFmt, "buffer_atomic_smin")
36530  {
36531  setFlag(AtomicMin);
36532  if (instData.GLC) {
36533  setFlag(AtomicReturn);
36534  } else {
36535  setFlag(AtomicNoReturn);
36536  }
36537  setFlag(MemoryRef);
36538  setFlag(GlobalSegment);
36539  } // Inst_MUBUF__BUFFER_ATOMIC_SMIN
36540 
36542  {
36543  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMIN
36544 
36545  // tmp = MEM[ADDR];
36546  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
36547  // RETURN_DATA = tmp.
36548  void
36550  {
36552  }
36553 
36556  : Inst_MUBUF(iFmt, "buffer_atomic_umin")
36557  {
36558  setFlag(AtomicMin);
36559  if (instData.GLC) {
36560  setFlag(AtomicReturn);
36561  } else {
36562  setFlag(AtomicNoReturn);
36563  }
36564  setFlag(MemoryRef);
36565  setFlag(GlobalSegment);
36566  } // Inst_MUBUF__BUFFER_ATOMIC_UMIN
36567 
36569  {
36570  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMIN
36571 
36572  // tmp = MEM[ADDR];
36573  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
36574  // RETURN_DATA = tmp.
36575  void
36577  {
36579  }
36580 
36583  : Inst_MUBUF(iFmt, "buffer_atomic_smax")
36584  {
36585  setFlag(AtomicMax);
36586  if (instData.GLC) {
36587  setFlag(AtomicReturn);
36588  } else {
36589  setFlag(AtomicNoReturn);
36590  }
36591  setFlag(MemoryRef);
36592  setFlag(GlobalSegment);
36593  } // Inst_MUBUF__BUFFER_ATOMIC_SMAX
36594 
36596  {
36597  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMAX
36598 
36599  // tmp = MEM[ADDR];
36600  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
36601  // RETURN_DATA = tmp.
36602  void
36604  {
36606  }
36607 
36610  : Inst_MUBUF(iFmt, "buffer_atomic_umax")
36611  {
36612  setFlag(AtomicMax);
36613  if (instData.GLC) {
36614  setFlag(AtomicReturn);
36615  } else {
36616  setFlag(AtomicNoReturn);
36617  } // if
36618  setFlag(MemoryRef);
36619  setFlag(GlobalSegment);
36620  } // Inst_MUBUF__BUFFER_ATOMIC_UMAX
36621 
36623  {
36624  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMAX
36625 
36626  // tmp = MEM[ADDR];
36627  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
36628  // RETURN_DATA = tmp.
36629  void
36631  {
36633  }
36634 
36637  : Inst_MUBUF(iFmt, "buffer_atomic_and")
36638  {
36639  setFlag(AtomicAnd);
36640  if (instData.GLC) {
36641  setFlag(AtomicReturn);
36642  } else {
36643  setFlag(AtomicNoReturn);
36644  }
36645  setFlag(MemoryRef);
36646  setFlag(GlobalSegment);
36647  } // Inst_MUBUF__BUFFER_ATOMIC_AND
36648 
36650  {
36651  } // ~Inst_MUBUF__BUFFER_ATOMIC_AND
36652 
36653  // tmp = MEM[ADDR];
36654  // MEM[ADDR] &= DATA;
36655  // RETURN_DATA = tmp.
36656  void
36658  {
36660  }
36661 
36664  : Inst_MUBUF(iFmt, "buffer_atomic_or")
36665  {
36666  setFlag(AtomicOr);
36667  if (instData.GLC) {
36668  setFlag(AtomicReturn);
36669  } else {
36670  setFlag(AtomicNoReturn);
36671  }
36672  setFlag(MemoryRef);
36673  setFlag(GlobalSegment);
36674  } // Inst_MUBUF__BUFFER_ATOMIC_OR
36675 
36677  {
36678  } // ~Inst_MUBUF__BUFFER_ATOMIC_OR
36679 
36680  // tmp = MEM[ADDR];
36681  // MEM[ADDR] |= DATA;
36682  // RETURN_DATA = tmp.
36683  void
36685  {
36687  }
36688 
36691  : Inst_MUBUF(iFmt, "buffer_atomic_xor")
36692  {
36693  setFlag(AtomicXor);
36694  if (instData.GLC) {
36695  setFlag(AtomicReturn);
36696  } else {
36697  setFlag(AtomicNoReturn);
36698  }
36699  setFlag(MemoryRef);
36700  setFlag(GlobalSegment);
36701  } // Inst_MUBUF__BUFFER_ATOMIC_XOR
36702 
36704  {
36705  } // ~Inst_MUBUF__BUFFER_ATOMIC_XOR
36706 
36707  // tmp = MEM[ADDR];
36708  // MEM[ADDR] ^= DATA;
36709  // RETURN_DATA = tmp.
36710  void
36712  {
36714  }
36715 
36718  : Inst_MUBUF(iFmt, "buffer_atomic_inc")
36719  {
36720  setFlag(AtomicInc);
36721  if (instData.GLC) {
36722  setFlag(AtomicReturn);
36723  } else {
36724  setFlag(AtomicNoReturn);
36725  }
36726  setFlag(MemoryRef);
36727  setFlag(GlobalSegment);
36728  } // Inst_MUBUF__BUFFER_ATOMIC_INC
36729 
36731  {
36732  } // ~Inst_MUBUF__BUFFER_ATOMIC_INC
36733 
36734  // tmp = MEM[ADDR];
36735  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
36736  // RETURN_DATA = tmp.
36737  void
36739  {
36741  }
36742 
36745  : Inst_MUBUF(iFmt, "buffer_atomic_dec")
36746  {
36747  setFlag(AtomicDec);
36748  if (instData.GLC) {
36749  setFlag(AtomicReturn);
36750  } else {
36751  setFlag(AtomicNoReturn);
36752  }
36753  setFlag(MemoryRef);
36754  setFlag(GlobalSegment);
36755  } // Inst_MUBUF__BUFFER_ATOMIC_DEC
36756 
36758  {
36759  } // ~Inst_MUBUF__BUFFER_ATOMIC_DEC
36760 
36761  // tmp = MEM[ADDR];
36762  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
36763  // (unsigned compare); RETURN_DATA = tmp.
36764  void
36766  {
36768  }
36769 
36772  : Inst_MUBUF(iFmt, "buffer_atomic_swap_x2")
36773  {
36774  setFlag(AtomicExch);
36775  if (instData.GLC) {
36776  setFlag(AtomicReturn);
36777  } else {
36778  setFlag(AtomicNoReturn);
36779  }
36780  setFlag(MemoryRef);
36781  setFlag(GlobalSegment);
36782  } // Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
36783 
36785  {
36786  } // ~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
36787 
36788  // tmp = MEM[ADDR];
36789  // MEM[ADDR] = DATA[0:1];
36790  // RETURN_DATA[0:1] = tmp.
36791  void
36793  {
36795  }
36796 
36799  : Inst_MUBUF(iFmt, "buffer_atomic_cmpswap_x2")
36800  {
36801  setFlag(AtomicCAS);
36802  if (instData.GLC) {
36803  setFlag(AtomicReturn);
36804  } else {
36805  setFlag(AtomicNoReturn);
36806  }
36807  setFlag(MemoryRef);
36808  setFlag(GlobalSegment);
36809  } // Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
36810 
36813  {
36814  } // ~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
36815 
36816  // tmp = MEM[ADDR];
36817  // src = DATA[0:1];
36818  // cmp = DATA[2:3];
36819  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
36820  // RETURN_DATA[0:1] = tmp.
36821  void
36823  {
36825  }
36826 
36829  : Inst_MUBUF(iFmt, "buffer_atomic_add_x2")
36830  {
36831  setFlag(AtomicAdd);
36832  if (instData.GLC) {
36833  setFlag(AtomicReturn);
36834  } else {
36835  setFlag(AtomicNoReturn);
36836  }
36837  setFlag(MemoryRef);
36838  setFlag(GlobalSegment);
36839  } // Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
36840 
36842  {
36843  } // ~Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
36844 
36845  // tmp = MEM[ADDR];
36846  // MEM[ADDR] += DATA[0:1];
36847  // RETURN_DATA[0:1] = tmp.
36848  void
36850  {
36852  }
36853 
36856  : Inst_MUBUF(iFmt, "buffer_atomic_sub_x2")
36857  {
36858  setFlag(AtomicSub);
36859  if (instData.GLC) {
36860  setFlag(AtomicReturn);
36861  } else {
36862  setFlag(AtomicNoReturn);
36863  }
36864  setFlag(MemoryRef);
36865  setFlag(GlobalSegment);
36866  } // Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
36867 
36869  {
36870  } // ~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
36871 
36872  // tmp = MEM[ADDR];
36873  // MEM[ADDR] -= DATA[0:1];
36874  // RETURN_DATA[0:1] = tmp.
36875  void
36877  {
36879  }
36880 
36883  : Inst_MUBUF(iFmt, "buffer_atomic_smin_x2")
36884  {
36885  setFlag(AtomicMin);
36886  if (instData.GLC) {
36887  setFlag(AtomicReturn);
36888  } else {
36889  setFlag(AtomicNoReturn);
36890  }
36891  setFlag(MemoryRef);
36892  setFlag(GlobalSegment);
36893  } // Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
36894 
36896  {
36897  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
36898 
36899  // tmp = MEM[ADDR];
36900  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
36901  // RETURN_DATA[0:1] = tmp.
36902  void
36904  {
36906  }
36907 
36910  : Inst_MUBUF(iFmt, "buffer_atomic_umin_x2")
36911  {
36912  setFlag(AtomicMin);
36913  if (instData.GLC) {
36914  setFlag(AtomicReturn);
36915  } else {
36916  setFlag(AtomicNoReturn);
36917  }
36918  setFlag(MemoryRef);
36919  setFlag(GlobalSegment);
36920  } // Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
36921 
36923  {
36924  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
36925 
36926  // tmp = MEM[ADDR];
36927  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
36928  // RETURN_DATA[0:1] = tmp.
36929  void
36931  {
36933  }
36934 
36937  : Inst_MUBUF(iFmt, "buffer_atomic_smax_x2")
36938  {
36939  setFlag(AtomicMax);
36940  if (instData.GLC) {
36941  setFlag(AtomicReturn);
36942  } else {
36943  setFlag(AtomicNoReturn);
36944  }
36945  setFlag(MemoryRef);
36946  setFlag(GlobalSegment);
36947  } // Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
36948 
36950  {
36951  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
36952 
36953  // tmp = MEM[ADDR];
36954  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
36955  // RETURN_DATA[0:1] = tmp.
36956  void
36958  {
36960  }
36961 
36964  : Inst_MUBUF(iFmt, "buffer_atomic_umax_x2")
36965  {
36966  setFlag(AtomicMax);
36967  if (instData.GLC) {
36968  setFlag(AtomicReturn);
36969  } else {
36970  setFlag(AtomicNoReturn);
36971  }
36972  setFlag(MemoryRef);
36973  setFlag(GlobalSegment);
36974  } // Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
36975 
36977  {
36978  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
36979 
36980  // tmp = MEM[ADDR];
36981  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
36982  // RETURN_DATA[0:1] = tmp.
36983  void
36985  {
36987  }
36988 
36991  : Inst_MUBUF(iFmt, "buffer_atomic_and_x2")
36992  {
36993  setFlag(AtomicAnd);
36994  if (instData.GLC) {
36995  setFlag(AtomicReturn);
36996  } else {
36997  setFlag(AtomicNoReturn);
36998  }
36999  setFlag(MemoryRef);
37000  setFlag(GlobalSegment);
37001  } // Inst_MUBUF__BUFFER_ATOMIC_AND_X2
37002 
37004  {
37005  } // ~Inst_MUBUF__BUFFER_ATOMIC_AND_X2
37006 
37007  // tmp = MEM[ADDR];
37008  // MEM[ADDR] &= DATA[0:1];
37009  // RETURN_DATA[0:1] = tmp.
37010  void
37012  {
37014  }
37015 
37018  : Inst_MUBUF(iFmt, "buffer_atomic_or_x2")
37019  {
37020  setFlag(AtomicOr);
37021  if (instData.GLC) {
37022  setFlag(AtomicReturn);
37023  } else {
37024  setFlag(AtomicNoReturn);
37025  }
37026  setFlag(MemoryRef);
37027  setFlag(GlobalSegment);
37028  } // Inst_MUBUF__BUFFER_ATOMIC_OR_X2
37029 
37031  {
37032  } // ~Inst_MUBUF__BUFFER_ATOMIC_OR_X2
37033 
37034  // tmp = MEM[ADDR];
37035  // MEM[ADDR] |= DATA[0:1];
37036  // RETURN_DATA[0:1] = tmp.
37037  void
37039  {
37041  }
37042 
37045  : Inst_MUBUF(iFmt, "buffer_atomic_xor_x2")
37046  {
37047  setFlag(AtomicXor);
37048  if (instData.GLC) {
37049  setFlag(AtomicReturn);
37050  } else {
37051  setFlag(AtomicNoReturn);
37052  }
37053  setFlag(MemoryRef);
37054  setFlag(GlobalSegment);
37055  } // Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
37056 
37058  {
37059  } // ~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
37060 
37061  // tmp = MEM[ADDR];
37062  // MEM[ADDR] ^= DATA[0:1];
37063  // RETURN_DATA[0:1] = tmp.
37064  void
37066  {
37068  }
37069 
37072  : Inst_MUBUF(iFmt, "buffer_atomic_inc_x2")
37073  {
37074  setFlag(AtomicInc);
37075  if (instData.GLC) {
37076  setFlag(AtomicReturn);
37077  } else {
37078  setFlag(AtomicNoReturn);
37079  }
37080  setFlag(MemoryRef);
37081  setFlag(GlobalSegment);
37082  } // Inst_MUBUF__BUFFER_ATOMIC_INC_X2
37083 
37085  {
37086  } // ~Inst_MUBUF__BUFFER_ATOMIC_INC_X2
37087 
37088  // tmp = MEM[ADDR];
37089  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
37090  // RETURN_DATA[0:1] = tmp.
37091  void
37093  {
37095  }
37096 
37099  : Inst_MUBUF(iFmt, "buffer_atomic_dec_x2")
37100  {
37101  setFlag(AtomicDec);
37102  if (instData.GLC) {
37103  setFlag(AtomicReturn);
37104  } else {
37105  setFlag(AtomicNoReturn);
37106  }
37107  setFlag(MemoryRef);
37108  setFlag(GlobalSegment);
37109  } // Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
37110 
37112  {
37113  } // ~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
37114 
37115  // tmp = MEM[ADDR];
37116  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
37117  // (unsigned compare);
37118  // RETURN_DATA[0:1] = tmp.
37119  void
37121  {
37123  }
37124 
37127  : Inst_MTBUF(iFmt, "tbuffer_load_format_x")
37128  {
37129  setFlag(MemoryRef);
37130  setFlag(Load);
37131  setFlag(GlobalSegment);
37132  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
37133 
37135  {
37136  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
37137 
37138  // Typed buffer load 1 dword with format conversion.
37139  void
37141  {
37143  }
37144 
37145  void
37147  {
37148  } // initiateAcc
37149 
37150  void
37152  {
37153  }
37154 
37157  : Inst_MTBUF(iFmt, "tbuffer_load_format_xy")
37158  {
37159  setFlag(MemoryRef);
37160  setFlag(Load);
37161  setFlag(GlobalSegment);
37162  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
37163 
37165  {
37166  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
37167 
37168  // Typed buffer load 2 dwords with format conversion.
37169  void
37171  {
37173  }
37174 
37175  void
37177  {
37178  } // initiateAcc
37179 
37180  void
37182  {
37183  }
37184 
37187  : Inst_MTBUF(iFmt, "tbuffer_load_format_xyz")
37188  {
37189  setFlag(MemoryRef);
37190  setFlag(Load);
37191  setFlag(GlobalSegment);
37192  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
37193 
37195  {
37196  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
37197 
37198  // Typed buffer load 3 dwords with format conversion.
37199  void
37201  {
37203  }
37204 
37205  void
37207  {
37208  } // initiateAcc
37209 
37210  void
37212  {
37213  }
37214 
37217  : Inst_MTBUF(iFmt, "tbuffer_load_format_xyzw")
37218  {
37219  setFlag(MemoryRef);
37220  setFlag(Load);
37221  setFlag(GlobalSegment);
37222  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
37223 
37226  {
37227  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
37228 
37229  // Typed buffer load 4 dwords with format conversion.
37230  void
37232  {
37234  }
37235 
37236  void
37238  {
37239  } // initiateAcc
37240 
37241  void
37243  {
37244  }
37245 
37248  : Inst_MTBUF(iFmt, "tbuffer_store_format_x")
37249  {
37250  setFlag(MemoryRef);
37251  setFlag(Store);
37252  setFlag(GlobalSegment);
37253  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_X
37254 
37256  {
37257  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_X
37258 
37259  // Typed buffer store 1 dword with format conversion.
37260  void
37262  {
37264  }
37265 
37266  void
37268  {
37269  } // initiateAcc
37270 
37271  void
37273  {
37274  }
37275 
37278  : Inst_MTBUF(iFmt, "tbuffer_store_format_xy")
37279  {
37280  setFlag(MemoryRef);
37281  setFlag(Store);
37282  setFlag(GlobalSegment);
37283  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
37284 
37286  {
37287  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
37288 
37289  // Typed buffer store 2 dwords with format conversion.
37290  void
37292  {
37294  }
37295 
37296  void
37298  {
37299  } // initiateAcc
37300 
37301  void
37303  {
37304  }
37305 
37308  : Inst_MTBUF(iFmt, "tbuffer_store_format_xyz")
37309  {
37310  setFlag(MemoryRef);
37311  setFlag(Store);
37312  setFlag(GlobalSegment);
37313  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
37314 
37317  {
37318  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
37319 
37320  // Typed buffer store 3 dwords with format conversion.
37321  void
37323  {
37325  }
37326 
37327  void
37329  {
37330  } // initiateAcc
37331 
37332  void
37334  {
37335  }
37336 
37339  : Inst_MTBUF(iFmt, "tbuffer_store_format_xyzw")
37340  {
37341  setFlag(MemoryRef);
37342  setFlag(Store);
37343  setFlag(GlobalSegment);
37344  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
37345 
37348  {
37349  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
37350 
37351  // Typed buffer store 4 dwords with format conversion.
37352  void
37354  {
37356  }
37357 
37358  void
37360  GPUDynInstPtr gpuDynInst)
37361  {
37362  } // initiateAcc
37363 
37364  void
37366  GPUDynInstPtr gpuDynInst)
37367  {
37368  }
37369 
37372  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_x")
37373  {
37374  setFlag(MemoryRef);
37375  setFlag(Load);
37376  setFlag(GlobalSegment);
37377  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
37378 
37381  {
37382  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
37383 
37384  // Typed buffer load 1 dword with format conversion.
37385  void
37387  {
37389  }
37390 
37391  void
37393  GPUDynInstPtr gpuDynInst)
37394  {
37395  } // initiateAcc
37396 
37397  void
37399  GPUDynInstPtr gpuDynInst)
37400  {
37401  }
37402 
37405  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xy")
37406  {
37407  setFlag(MemoryRef);
37408  setFlag(Load);
37409  setFlag(GlobalSegment);
37410  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
37411 
37414  {
37415  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
37416 
37417  // Typed buffer load 2 dwords with format conversion.
37418  void
37420  {
37422  }
37423 
37424  void
37426  GPUDynInstPtr gpuDynInst)
37427  {
37428  } // initiateAcc
37429 
37430  void
37432  GPUDynInstPtr gpuDynInst)
37433  {
37434  }
37435 
37438  InFmt_MTBUF *iFmt)
37439  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xyz")
37440  {
37441  setFlag(MemoryRef);
37442  setFlag(Load);
37443  setFlag(GlobalSegment);
37444  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
37445 
37448  {
37449  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
37450 
37451  // Typed buffer load 3 dwords with format conversion.
37452  void
37454  {
37456  }
37457 
37458  void
37460  GPUDynInstPtr gpuDynInst)
37461  {
37462  } // initiateAcc
37463 
37464  void
37466  GPUDynInstPtr gpuDynInst)
37467  {
37468  }
37469 
37472  InFmt_MTBUF *iFmt)
37473  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xyzw")
37474  {
37475  setFlag(MemoryRef);
37476  setFlag(Load);
37477  setFlag(GlobalSegment);
37478  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
37479 
37482  {
37483  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
37484 
37485  // Typed buffer load 4 dwords with format conversion.
37486  void
37488  {
37490  }
37491 
37492  void
37494  GPUDynInstPtr gpuDynInst)
37495  {
37496  } // initiateAcc
37497 
37498  void
37500  GPUDynInstPtr gpuDynInst)
37501  {
37502  }
37503 
37506  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_x")
37507  {
37508  setFlag(MemoryRef);
37509  setFlag(Store);
37510  setFlag(GlobalSegment);
37511  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
37512 
37515  {
37516  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
37517 
37518  // Typed buffer store 1 dword with format conversion.
37519  void
37521  {
37523  }
37524 
37525  void
37527  GPUDynInstPtr gpuDynInst)
37528  {
37529  } // initiateAcc
37530 
37531  void
37533  GPUDynInstPtr gpuDynInst)
37534  {
37535  }
37536 
37539  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xy")
37540  {
37541  setFlag(MemoryRef);
37542  setFlag(Store);
37543  setFlag(GlobalSegment);
37544  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
37545 
37548  {
37549  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
37550 
37551  // Typed buffer store 2 dwords with format conversion.
37552  void
37554  {
37556  }
37557 
37558  void
37560  GPUDynInstPtr gpuDynInst)
37561  {
37562  } // initiateAcc
37563 
37564  void
37566  GPUDynInstPtr gpuDynInst)
37567  {
37568  }
37569 
37572  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xyz")
37573  {
37574  setFlag(MemoryRef);
37575  setFlag(Store);
37576  setFlag(GlobalSegment);
37577  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
37578 
37581  {
37582  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
37583 
37584  // Typed buffer store 3 dwords with format conversion.
37585  void
37587  {
37589  }
37590 
37591  void
37593  GPUDynInstPtr gpuDynInst)
37594  {
37595  } // initiateAcc
37596 
37597  void
37599  GPUDynInstPtr gpuDynInst)
37600  {
37601  }
37602 
37605  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xyzw")
37606  {
37607  setFlag(MemoryRef);
37608  setFlag(Store);
37609  setFlag(GlobalSegment);
37610  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
37611 
37614  {
37615  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
37616 
37617  // Typed buffer store 4 dwords with format conversion.
37618  void
37620  GPUDynInstPtr gpuDynInst)
37621  {
37623  }
37624 
37625  void
37627  GPUDynInstPtr gpuDynInst)
37628  {
37629  } // initiateAcc
37630 
37631  void
37633  GPUDynInstPtr gpuDynInst)
37634  {
37635  }
37636 
37638  : Inst_MIMG(iFmt, "image_load")
37639  {
37640  setFlag(MemoryRef);
37641  setFlag(Load);
37642  setFlag(GlobalSegment);
37643  } // Inst_MIMG__IMAGE_LOAD
37644 
37646  {
37647  } // ~Inst_MIMG__IMAGE_LOAD
37648 
37649  // Image memory load with format conversion specified
37650  void
37652  {
37654  }
37655 
37656  void
37658  {
37659  } // initiateAcc
37660 
37661  void
37663  {
37664  }
37665 
37667  : Inst_MIMG(iFmt, "image_load_mip")
37668  {
37669  setFlag(MemoryRef);
37670  setFlag(Load);
37671  setFlag(GlobalSegment);
37672  } // Inst_MIMG__IMAGE_LOAD_MIP
37673 
37675  {
37676  } // ~Inst_MIMG__IMAGE_LOAD_MIP
37677 
37678  void
37680  {
37682  }
37683 
37684  void
37686  {
37687  } // initiateAcc
37688 
37689  void
37691  {
37692  }
37693 
37695  : Inst_MIMG(iFmt, "image_load_pck")
37696  {
37697  setFlag(MemoryRef);
37698  setFlag(Load);
37699  setFlag(GlobalSegment);
37700  } // Inst_MIMG__IMAGE_LOAD_PCK
37701 
37703  {
37704  } // ~Inst_MIMG__IMAGE_LOAD_PCK
37705 
37706  void
37708  {
37710  }
37711 
37712  void
37714  {
37715  } // initiateAcc
37716 
37717  void
37719  {
37720  }
37721 
37723  InFmt_MIMG *iFmt)
37724  : Inst_MIMG(iFmt, "image_load_pck_sgn")
37725  {
37726  setFlag(MemoryRef);
37727  setFlag(Load);
37728  setFlag(GlobalSegment);
37729  } // Inst_MIMG__IMAGE_LOAD_PCK_SGN
37730 
37732  {
37733  } // ~Inst_MIMG__IMAGE_LOAD_PCK_SGN
37734 
37735  // Image memory load with with no format conversion and sign extension
37736  void
37738  {
37740  }
37741 
37742  void
37744  {
37745  } // initiateAcc
37746 
37747  void
37749  {
37750  }
37751 
37753  InFmt_MIMG *iFmt)
37754  : Inst_MIMG(iFmt, "image_load_mip_pck")
37755  {
37756  setFlag(MemoryRef);
37757  setFlag(Load);
37758  setFlag(GlobalSegment);
37759  } // Inst_MIMG__IMAGE_LOAD_MIP_PCK
37760 
37762  {
37763  } // ~Inst_MIMG__IMAGE_LOAD_MIP_PCK
37764 
37765  // Image memory load with user-supplied mip level, no format conversion
37766  void
37768  {
37770  }
37771 
37772  void
37774  {
37775  } // initiateAcc
37776 
37777  void
37779  {
37780  }
37781 
37783  InFmt_MIMG *iFmt)
37784  : Inst_MIMG(iFmt, "image_load_mip_pck_sgn")
37785  {
37786  setFlag(MemoryRef);
37787  setFlag(Load);
37788  setFlag(GlobalSegment);
37789  } // Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
37790 
37792  {
37793  } // ~Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
37794 
37795  // Image memory load with user-supplied mip level, no format conversion.
37796  void
37798  {
37800  }
37801 
37802  void
37804  {
37805  } // initiateAcc
37806 
37807  void
37809  {
37810  }
37811 
37813  : Inst_MIMG(iFmt, "image_store")
37814  {
37815  setFlag(MemoryRef);
37816  setFlag(Store);
37817  setFlag(GlobalSegment);
37818  } // Inst_MIMG__IMAGE_STORE
37819 
37821  {
37822  } // ~Inst_MIMG__IMAGE_STORE
37823 
37824  // Image memory store with format conversion specified
37825  void
37827  {
37829  }
37830 
37831  void
37833  {
37834  } // initiateAcc
37835 
37836  void
37838  {
37839  }
37840 
37842  : Inst_MIMG(iFmt, "image_store_mip")
37843  {
37844  setFlag(MemoryRef);
37845  setFlag(Store);
37846  setFlag(GlobalSegment);
37847  } // Inst_MIMG__IMAGE_STORE_MIP
37848 
37850  {
37851  } // ~Inst_MIMG__IMAGE_STORE_MIP
37852 
37853  void
37855  {
37857  }
37858 
37859  void
37861  {
37862  } // initiateAcc
37863 
37864  void
37866  {
37867  }
37868 
37870  : Inst_MIMG(iFmt, "image_store_pck")
37871  {
37872  setFlag(MemoryRef);
37873  setFlag(Store);
37874  setFlag(GlobalSegment);
37875  } // Inst_MIMG__IMAGE_STORE_PCK
37876 
37878  {
37879  } // ~Inst_MIMG__IMAGE_STORE_PCK
37880 
37881  // Image memory store of packed data without format conversion.
37882  void
37884  {
37886  }
37887 
37888  void
37890  {
37891  } // initiateAcc
37892 
37893  void
37895  {
37896  }
37897 
37899  InFmt_MIMG *iFmt)
37900  : Inst_MIMG(iFmt, "image_store_mip_pck")
37901  {
37902  setFlag(MemoryRef);
37903  setFlag(Store);
37904  setFlag(GlobalSegment);
37905  } // Inst_MIMG__IMAGE_STORE_MIP_PCK
37906 
37908  {
37909  } // ~Inst_MIMG__IMAGE_STORE_MIP_PCK
37910 
37911  // Image memory store of packed data without format conversion
37912  void
37914  {
37916  }
37917 
37918  void
37920  {
37921  } // initiateAcc
37922 
37923  void
37925  {
37926  }
37927 
37929  InFmt_MIMG *iFmt)
37930  : Inst_MIMG(iFmt, "image_get_resinfo")
37931  {
37932  setFlag(GlobalSegment);
37933  } // Inst_MIMG__IMAGE_GET_RESINFO
37934 
37936  {
37937  } // ~Inst_MIMG__IMAGE_GET_RESINFO
37938 
37939  void
37941  {
37943  }
37944 
37946  InFmt_MIMG *iFmt)
37947  : Inst_MIMG(iFmt, "image_atomic_swap")
37948  {
37949  setFlag(AtomicExch);
37950  if (instData.GLC) {
37951  setFlag(AtomicReturn);
37952  } else {
37953  setFlag(AtomicNoReturn);
37954  }
37955  setFlag(MemoryRef);
37956  setFlag(GlobalSegment);
37957  } // Inst_MIMG__IMAGE_ATOMIC_SWAP
37958 
37960  {
37961  } // ~Inst_MIMG__IMAGE_ATOMIC_SWAP
37962 
37963  // tmp = MEM[ADDR];
37964  // MEM[ADDR] = DATA;
37965  // RETURN_DATA = tmp.
37966  void
37968  {
37970  }
37971 
37973  InFmt_MIMG *iFmt)
37974  : Inst_MIMG(iFmt, "image_atomic_cmpswap")
37975  {
37976  setFlag(AtomicCAS);
37977  if (instData.GLC) {
37978  setFlag(AtomicReturn);
37979  } else {
37980  setFlag(AtomicNoReturn);
37981  }
37982  setFlag(MemoryRef);
37983  setFlag(GlobalSegment);
37984  } // Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
37985 
37987  {
37988  } // ~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
37989 
37990  // tmp = MEM[ADDR];
37991  // src = DATA[0];
37992  // cmp = DATA[1];
37993  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
37994  // RETURN_DATA[0] = tmp.
37995  void
37997  {
37999  }
38000 
38002  : Inst_MIMG(iFmt, "image_atomic_add")
38003  {
38004  setFlag(AtomicAdd);
38005  if (instData.GLC) {
38006  setFlag(AtomicReturn);
38007  } else {
38008  setFlag(AtomicNoReturn);
38009  }
38010  setFlag(MemoryRef);
38011  setFlag(GlobalSegment);
38012  } // Inst_MIMG__IMAGE_ATOMIC_ADD
38013 
38015  {
38016  } // ~Inst_MIMG__IMAGE_ATOMIC_ADD
38017 
38018  // tmp = MEM[ADDR];
38019  // MEM[ADDR] += DATA;
38020  // RETURN_DATA = tmp.
38021  void
38023  {
38025  }
38026 
38028  : Inst_MIMG(iFmt, "image_atomic_sub")
38029  {
38030  setFlag(AtomicSub);
38031  if (instData.GLC) {
38032  setFlag(AtomicReturn);
38033  } else {
38034  setFlag(AtomicNoReturn);
38035  }
38036  setFlag(MemoryRef);
38037  setFlag(GlobalSegment);
38038  } // Inst_MIMG__IMAGE_ATOMIC_SUB
38039 
38041  {
38042  } // ~Inst_MIMG__IMAGE_ATOMIC_SUB
38043 
38044  // tmp = MEM[ADDR];
38045  // MEM[ADDR] -= DATA;
38046  // RETURN_DATA = tmp.
38047  void
38049  {
38051  }
38052 
38054  InFmt_MIMG *iFmt)
38055  : Inst_MIMG(iFmt, "image_atomic_smin")
38056  {
38057  setFlag(AtomicMin);
38058  if (instData.GLC) {
38059  setFlag(AtomicReturn);
38060  } else {
38061  setFlag(AtomicNoReturn);
38062  }
38063  setFlag(MemoryRef);
38064  setFlag(GlobalSegment);
38065  } // Inst_MIMG__IMAGE_ATOMIC_SMIN
38066 
38068  {
38069  } // ~Inst_MIMG__IMAGE_ATOMIC_SMIN
38070 
38071  // tmp = MEM[ADDR];
38072  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
38073  // RETURN_DATA = tmp.
38074  void
38076  {
38078  }
38079 
38081  InFmt_MIMG *iFmt)
38082  : Inst_MIMG(iFmt, "image_atomic_umin")
38083  {
38084  setFlag(AtomicMin);
38085  if (instData.GLC) {
38086  setFlag(AtomicReturn);
38087  } else {
38088  setFlag(AtomicNoReturn);
38089  }
38090  setFlag(MemoryRef);
38091  setFlag(GlobalSegment);
38092  } // Inst_MIMG__IMAGE_ATOMIC_UMIN
38093 
38095  {
38096  } // ~Inst_MIMG__IMAGE_ATOMIC_UMIN
38097 
38098  // tmp = MEM[ADDR];
38099  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
38100  // RETURN_DATA = tmp.
38101  void
38103  {
38105  }
38106 
38108  InFmt_MIMG *iFmt)
38109  : Inst_MIMG(iFmt, "image_atomic_smax")
38110  {
38111  setFlag(AtomicMax);
38112  if (instData.GLC) {
38113  setFlag(AtomicReturn);
38114  } else {
38115  setFlag(AtomicNoReturn);
38116  }
38117  setFlag(MemoryRef);
38118  setFlag(GlobalSegment);
38119  } // Inst_MIMG__IMAGE_ATOMIC_SMAX
38120 
38122  {
38123  } // ~Inst_MIMG__IMAGE_ATOMIC_SMAX
38124 
38125  // tmp = MEM[ADDR];
38126  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
38127  // RETURN_DATA = tmp.
38128  void
38130  {
38132  }
38133 
38135  InFmt_MIMG *iFmt)
38136  : Inst_MIMG(iFmt, "image_atomic_umax")
38137  {
38138  setFlag(AtomicMax);
38139  if (instData.GLC) {
38140  setFlag(AtomicReturn);
38141  } else {
38142  setFlag(AtomicNoReturn);
38143  }
38144  setFlag(MemoryRef);
38145  setFlag(GlobalSegment);
38146  } // Inst_MIMG__IMAGE_ATOMIC_UMAX
38147 
38149  {
38150  } // ~Inst_MIMG__IMAGE_ATOMIC_UMAX
38151 
38152  // tmp = MEM[ADDR];
38153  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
38154  // RETURN_DATA = tmp.
38155  void
38157  {
38159  }
38160 
38162  : Inst_MIMG(iFmt, "image_atomic_and")
38163  {
38164  setFlag(AtomicAnd);
38165  if (instData.GLC) {
38166  setFlag(AtomicReturn);
38167  } else {
38168  setFlag(AtomicNoReturn);
38169  }
38170  setFlag(MemoryRef);
38171  setFlag(GlobalSegment);
38172  } // Inst_MIMG__IMAGE_ATOMIC_AND
38173 
38175  {
38176  } // ~Inst_MIMG__IMAGE_ATOMIC_AND
38177 
38178  // tmp = MEM[ADDR];
38179  // MEM[ADDR] &= DATA;
38180  // RETURN_DATA = tmp.
38181  void
38183  {
38185  }
38186 
38188  : Inst_MIMG(iFmt, "image_atomic_or")
38189  {
38190  setFlag(AtomicOr);
38191  if (instData.GLC) {
38192  setFlag(AtomicReturn);
38193  } else {
38194  setFlag(AtomicNoReturn);
38195  }
38196  setFlag(MemoryRef);
38197  setFlag(GlobalSegment);
38198  } // Inst_MIMG__IMAGE_ATOMIC_OR
38199 
38201  {
38202  } // ~Inst_MIMG__IMAGE_ATOMIC_OR
38203 
38204  // tmp = MEM[ADDR];
38205  // MEM[ADDR] |= DATA;
38206  // RETURN_DATA = tmp.
38207  void
38209  {
38211  }
38212 
38214  : Inst_MIMG(iFmt, "image_atomic_xor")
38215  {
38216  setFlag(AtomicXor);
38217  if (instData.GLC) {
38218  setFlag(AtomicReturn);
38219  } else {
38220  setFlag(AtomicNoReturn);
38221  }
38222  setFlag(MemoryRef);
38223  setFlag(GlobalSegment);
38224  } // Inst_MIMG__IMAGE_ATOMIC_XOR
38225 
38227  {
38228  } // ~Inst_MIMG__IMAGE_ATOMIC_XOR
38229 
38230  // tmp = MEM[ADDR];
38231  // MEM[ADDR] ^= DATA;
38232  // RETURN_DATA = tmp.
38233  void
38235  {
38237  }
38238 
38240  : Inst_MIMG(iFmt, "image_atomic_inc")
38241  {
38242  setFlag(AtomicInc);
38243  if (instData.GLC) {
38244  setFlag(AtomicReturn);
38245  } else {
38246  setFlag(AtomicNoReturn);
38247  }
38248  setFlag(MemoryRef);
38249  setFlag(GlobalSegment);
38250  } // Inst_MIMG__IMAGE_ATOMIC_INC
38251 
38253  {
38254  } // ~Inst_MIMG__IMAGE_ATOMIC_INC
38255 
38256  // tmp = MEM[ADDR];
38257  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
38258  // RETURN_DATA = tmp.
38259  void
38261  {
38263  }
38264 
38266  : Inst_MIMG(iFmt, "image_atomic_dec")
38267  {
38268  setFlag(AtomicDec);
38269  if (instData.GLC) {
38270  setFlag(AtomicReturn);
38271  } else {
38272  setFlag(AtomicNoReturn);
38273  }
38274  setFlag(MemoryRef);
38275  setFlag(GlobalSegment);
38276  } // Inst_MIMG__IMAGE_ATOMIC_DEC
38277 
38279  {
38280  } // ~Inst_MIMG__IMAGE_ATOMIC_DEC
38281 
38282  // tmp = MEM[ADDR];
38283  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
38284  // (unsigned compare); RETURN_DATA = tmp.
38285  void
38287  {
38289  }
38290 
38292  : Inst_MIMG(iFmt, "image_sample")
38293  {
38294  setFlag(GlobalSegment);
38295  } // Inst_MIMG__IMAGE_SAMPLE
38296 
38298  {
38299  } // ~Inst_MIMG__IMAGE_SAMPLE
38300 
38301  void
38303  {
38305  }
38306 
38308  : Inst_MIMG(iFmt, "image_sample_cl")
38309  {
38310  setFlag(GlobalSegment);
38311  } // Inst_MIMG__IMAGE_SAMPLE_CL
38312 
38314  {
38315  } // ~Inst_MIMG__IMAGE_SAMPLE_CL
38316 
38317  void
38319  {
38321  }
38322 
38324  : Inst_MIMG(iFmt, "image_sample_d")
38325  {
38326  setFlag(GlobalSegment);
38327  } // Inst_MIMG__IMAGE_SAMPLE_D
38328 
38330  {
38331  } // ~Inst_MIMG__IMAGE_SAMPLE_D
38332 
38333  void
38335  {
38337  }
38338 
38340  InFmt_MIMG *iFmt)
38341  : Inst_MIMG(iFmt, "image_sample_d_cl")
38342  {
38343  setFlag(GlobalSegment);
38344  } // Inst_MIMG__IMAGE_SAMPLE_D_CL
38345 
38347  {
38348  } // ~Inst_MIMG__IMAGE_SAMPLE_D_CL
38349 
38350  void
38352  {
38354  }
38355 
38357  : Inst_MIMG(iFmt, "image_sample_l")
38358  {
38359  setFlag(GlobalSegment);
38360  } // Inst_MIMG__IMAGE_SAMPLE_L
38361 
38363  {
38364  } // ~Inst_MIMG__IMAGE_SAMPLE_L
38365 
38366  void
38368  {
38370  }
38371 
38373  : Inst_MIMG(iFmt, "image_sample_b")
38374  {
38375  setFlag(GlobalSegment);
38376  } // Inst_MIMG__IMAGE_SAMPLE_B
38377 
38379  {
38380  } // ~Inst_MIMG__IMAGE_SAMPLE_B
38381 
38382  void
38384  {
38386  }
38387 
38389  InFmt_MIMG *iFmt)
38390  : Inst_MIMG(iFmt, "image_sample_b_cl")
38391  {
38392  setFlag(GlobalSegment);
38393  } // Inst_MIMG__IMAGE_SAMPLE_B_CL
38394 
38396  {
38397  } // ~Inst_MIMG__IMAGE_SAMPLE_B_CL
38398 
38399  void
38401  {
38403  }
38404 
38406  : Inst_MIMG(iFmt, "image_sample_lz")
38407  {
38408  setFlag(GlobalSegment);
38409  } // Inst_MIMG__IMAGE_SAMPLE_LZ
38410 
38412  {
38413  } // ~Inst_MIMG__IMAGE_SAMPLE_LZ
38414 
38415  void
38417  {
38419  }
38420 
38422  : Inst_MIMG(iFmt, "image_sample_c")
38423  {
38424  setFlag(GlobalSegment);
38425  } // Inst_MIMG__IMAGE_SAMPLE_C
38426 
38428  {
38429  } // ~Inst_MIMG__IMAGE_SAMPLE_C
38430 
38431  void
38433  {
38435  }
38436 
38438  InFmt_MIMG *iFmt)
38439  : Inst_MIMG(iFmt, "image_sample_c_cl")
38440  {
38441  setFlag(GlobalSegment);
38442  } // Inst_MIMG__IMAGE_SAMPLE_C_CL
38443 
38445  {
38446  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CL
38447 
38448  void
38450  {
38452  }
38453 
38455  : Inst_MIMG(iFmt, "image_sample_c_d")
38456  {
38457  setFlag(GlobalSegment);
38458  } // Inst_MIMG__IMAGE_SAMPLE_C_D
38459 
38461  {
38462  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D
38463 
38464  void
38466  {
38468  }
38469 
38471  InFmt_MIMG *iFmt)
38472  : Inst_MIMG(iFmt, "image_sample_c_d_cl")
38473  {
38474  setFlag(GlobalSegment);
38475  } // Inst_MIMG__IMAGE_SAMPLE_C_D_CL
38476 
38478  {
38479  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_CL
38480 
38481  void
38483  {
38485  }
38486 
38488  : Inst_MIMG(iFmt, "image_sample_c_l")
38489  {
38490  setFlag(GlobalSegment);
38491  } // Inst_MIMG__IMAGE_SAMPLE_C_L
38492 
38494  {
38495  } // ~Inst_MIMG__IMAGE_SAMPLE_C_L
38496 
38497  void
38499  {
38501  }
38502 
38504  : Inst_MIMG(iFmt, "image_sample_c_b")
38505  {
38506  setFlag(GlobalSegment);
38507  } // Inst_MIMG__IMAGE_SAMPLE_C_B
38508 
38510  {
38511  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B
38512 
38513  void
38515  {
38517  }
38518 
38520  InFmt_MIMG *iFmt)
38521  : Inst_MIMG(iFmt, "image_sample_c_b_cl")
38522  {
38523  setFlag(GlobalSegment);
38524  } // Inst_MIMG__IMAGE_SAMPLE_C_B_CL
38525 
38527  {
38528  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_CL
38529 
38530  void
38532  {
38534  }
38535 
38537  InFmt_MIMG *iFmt)
38538  : Inst_MIMG(iFmt, "image_sample_c_lz")
38539  {
38540  setFlag(GlobalSegment);
38541  } // Inst_MIMG__IMAGE_SAMPLE_C_LZ
38542 
38544  {
38545  } // ~Inst_MIMG__IMAGE_SAMPLE_C_LZ
38546 
38547  void
38549  {
38551  }
38552 
38554  : Inst_MIMG(iFmt, "image_sample_o")
38555  {
38556  setFlag(GlobalSegment);
38557  } // Inst_MIMG__IMAGE_SAMPLE_O
38558 
38560  {
38561  } // ~Inst_MIMG__IMAGE_SAMPLE_O
38562 
38563  void
38565  {
38567  }
38568 
38570  InFmt_MIMG *iFmt)
38571  : Inst_MIMG(iFmt, "image_sample_cl_o")
38572  {
38573  setFlag(GlobalSegment);
38574  } // Inst_MIMG__IMAGE_SAMPLE_CL_O
38575 
38577  {
38578  } // ~Inst_MIMG__IMAGE_SAMPLE_CL_O
38579 
38580  void
38582  {
38584  }
38585 
38587  : Inst_MIMG(iFmt, "image_sample_d_o")
38588  {
38589  setFlag(GlobalSegment);
38590  } // Inst_MIMG__IMAGE_SAMPLE_D_O
38591 
38593  {
38594  } // ~Inst_MIMG__IMAGE_SAMPLE_D_O
38595 
38596  void
38598  {
38600  }
38601 
38603  InFmt_MIMG *iFmt)
38604  : Inst_MIMG(iFmt, "image_sample_d_cl_o")
38605  {
38606  setFlag(GlobalSegment);
38607  } // Inst_MIMG__IMAGE_SAMPLE_D_CL_O
38608 
38610  {
38611  } // ~Inst_MIMG__IMAGE_SAMPLE_D_CL_O
38612 
38613  void
38615  {
38617  }
38618 
38620  : Inst_MIMG(iFmt, "image_sample_l_o")
38621  {
38622  setFlag(GlobalSegment);
38623  } // Inst_MIMG__IMAGE_SAMPLE_L_O
38624 
38626  {
38627  } // ~Inst_MIMG__IMAGE_SAMPLE_L_O
38628 
38629  void
38631  {
38633  }
38634 
38636  : Inst_MIMG(iFmt, "image_sample_b_o")
38637  {
38638  setFlag(GlobalSegment);
38639  } // Inst_MIMG__IMAGE_SAMPLE_B_O
38640 
38642  {
38643  } // ~Inst_MIMG__IMAGE_SAMPLE_B_O
38644 
38645  void
38647  {
38649  }
38650 
38652  InFmt_MIMG *iFmt)
38653  : Inst_MIMG(iFmt, "image_sample_b_cl_o")
38654  {
38655  setFlag(GlobalSegment);
38656  } // Inst_MIMG__IMAGE_SAMPLE_B_CL_O
38657 
38659  {
38660  } // ~Inst_MIMG__IMAGE_SAMPLE_B_CL_O
38661 
38662  void
38664  {
38666  }
38667 
38669  InFmt_MIMG *iFmt)
38670  : Inst_MIMG(iFmt, "image_sample_lz_o")
38671  {
38672  setFlag(GlobalSegment);
38673  } // Inst_MIMG__IMAGE_SAMPLE_LZ_O
38674 
38676  {
38677  } // ~Inst_MIMG__IMAGE_SAMPLE_LZ_O
38678 
38679  void
38681  {
38683  }
38684 
38686  : Inst_MIMG(iFmt, "image_sample_c_o")
38687  {
38688  setFlag(GlobalSegment);
38689  } // Inst_MIMG__IMAGE_SAMPLE_C_O
38690 
38692  {
38693  } // ~Inst_MIMG__IMAGE_SAMPLE_C_O
38694 
38695  void
38697  {
38699  }
38700 
38702  InFmt_MIMG *iFmt)
38703  : Inst_MIMG(iFmt, "image_sample_c_cl_o")
38704  {
38705  setFlag(GlobalSegment);
38706  } // Inst_MIMG__IMAGE_SAMPLE_C_CL_O
38707 
38709  {
38710  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CL_O
38711 
38712  void
38714  {
38716  }
38717 
38719  InFmt_MIMG *iFmt)
38720  : Inst_MIMG(iFmt, "image_sample_c_d_o")
38721  {
38722  setFlag(GlobalSegment);
38723  } // Inst_MIMG__IMAGE_SAMPLE_C_D_O
38724 
38726  {
38727  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_O
38728 
38729  void
38731  {
38733  }
38734 
38736  InFmt_MIMG *iFmt)
38737  : Inst_MIMG(iFmt, "image_sample_c_d_cl_o")
38738  {
38739  setFlag(GlobalSegment);
38740  } // Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O
38741 
38743  {
38744  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O
38745 
38746  void
38748  {
38750  }
38751 
38753  InFmt_MIMG *iFmt)
38754  : Inst_MIMG(iFmt, "image_sample_c_l_o")
38755  {
38756  setFlag(GlobalSegment);
38757  } // Inst_MIMG__IMAGE_SAMPLE_C_L_O
38758 
38760  {
38761  } // ~Inst_MIMG__IMAGE_SAMPLE_C_L_O
38762 
38763  void
38765  {
38767  }
38768 
38770  InFmt_MIMG *iFmt)
38771  : Inst_MIMG(iFmt, "image_sample_c_b_o")
38772  {
38773  setFlag(GlobalSegment);
38774  } // Inst_MIMG__IMAGE_SAMPLE_C_B_O
38775 
38777  {
38778  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_O
38779 
38780  void
38782  {
38784  }
38785 
38787  InFmt_MIMG *iFmt)
38788  : Inst_MIMG(iFmt, "image_sample_c_b_cl_o")
38789  {
38790  setFlag(GlobalSegment);
38791  } // Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O
38792 
38794  {
38795  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O
38796 
38797  void
38799  {
38801  }
38802 
38804  InFmt_MIMG *iFmt)
38805  : Inst_MIMG(iFmt, "image_sample_c_lz_o")
38806  {
38807  setFlag(GlobalSegment);
38808  } // Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
38809 
38811  {
38812  } // ~Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
38813 
38814  void
38816  {
38818  }
38819 
38821  : Inst_MIMG(iFmt, "image_gather4")
38822  {
38823  setFlag(GlobalSegment);
38824  } // Inst_MIMG__IMAGE_GATHER4
38825 
38827  {
38828  } // ~Inst_MIMG__IMAGE_GATHER4
38829 
38830  void
38832  {
38834  }
38835 
38837  : Inst_MIMG(iFmt, "image_gather4_cl")
38838  {
38839  setFlag(GlobalSegment);
38840  } // Inst_MIMG__IMAGE_GATHER4_CL
38841 
38843  {
38844  } // ~Inst_MIMG__IMAGE_GATHER4_CL
38845 
38846  void
38848  {
38850  }
38851 
38853  : Inst_MIMG(iFmt, "image_gather4_l")
38854  {
38855  setFlag(GlobalSegment);
38856  } // Inst_MIMG__IMAGE_GATHER4_L
38857 
38859  {
38860  } // ~Inst_MIMG__IMAGE_GATHER4_L
38861 
38862  void
38864  {
38866  }
38867 
38869  : Inst_MIMG(iFmt, "image_gather4_b")
38870  {
38871  setFlag(GlobalSegment);
38872  } // Inst_MIMG__IMAGE_GATHER4_B
38873 
38875  {
38876  } // ~Inst_MIMG__IMAGE_GATHER4_B
38877 
38878  void
38880  {
38882  }
38883 
38885  InFmt_MIMG *iFmt)
38886  : Inst_MIMG(iFmt, "image_gather4_b_cl")
38887  {
38888  setFlag(GlobalSegment);
38889  } // Inst_MIMG__IMAGE_GATHER4_B_CL
38890 
38892  {
38893  } // ~Inst_MIMG__IMAGE_GATHER4_B_CL
38894 
38895  void
38897  {
38899  }
38900 
38902  : Inst_MIMG(iFmt, "image_gather4_lz")
38903  {
38904  setFlag(GlobalSegment);
38905  } // Inst_MIMG__IMAGE_GATHER4_LZ
38906 
38908  {
38909  } // ~Inst_MIMG__IMAGE_GATHER4_LZ
38910 
38911  void
38913  {
38915  }
38916 
38918  : Inst_MIMG(iFmt, "image_gather4_c")
38919  {
38920  setFlag(GlobalSegment);
38921  } // Inst_MIMG__IMAGE_GATHER4_C
38922 
38924  {
38925  } // ~Inst_MIMG__IMAGE_GATHER4_C
38926 
38927  void
38929  {
38931  }
38932 
38934  InFmt_MIMG *iFmt)
38935  : Inst_MIMG(iFmt, "image_gather4_c_cl")
38936  {
38937  setFlag(GlobalSegment);
38938  } // Inst_MIMG__IMAGE_GATHER4_C_CL
38939 
38941  {
38942  } // ~Inst_MIMG__IMAGE_GATHER4_C_CL
38943 
38944  void
38946  {
38948  }
38949 
38951  InFmt_MIMG *iFmt)
38952  : Inst_MIMG(iFmt, "image_gather4_c_l")
38953  {
38954  setFlag(GlobalSegment);
38955  } // Inst_MIMG__IMAGE_GATHER4_C_L
38956 
38958  {
38959  } // ~Inst_MIMG__IMAGE_GATHER4_C_L
38960 
38961  void
38963  {
38965  }
38966 
38968  InFmt_MIMG *iFmt)
38969  : Inst_MIMG(iFmt, "image_gather4_c_b")
38970  {
38971  setFlag(GlobalSegment);
38972  } // Inst_MIMG__IMAGE_GATHER4_C_B
38973 
38975  {
38976  } // ~Inst_MIMG__IMAGE_GATHER4_C_B
38977 
38978  void
38980  {
38982  }
38983 
38985  InFmt_MIMG *iFmt)
38986  : Inst_MIMG(iFmt, "image_gather4_c_b_cl")
38987  {
38988  setFlag(GlobalSegment);
38989  } // Inst_MIMG__IMAGE_GATHER4_C_B_CL
38990 
38992  {
38993  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_CL
38994 
38995  void
38997  {
38999  }
39000 
39002  InFmt_MIMG *iFmt)
39003  : Inst_MIMG(iFmt, "image_gather4_c_lz")
39004  {
39005  setFlag(GlobalSegment);
39006  } // Inst_MIMG__IMAGE_GATHER4_C_LZ
39007 
39009  {
39010  } // ~Inst_MIMG__IMAGE_GATHER4_C_LZ
39011 
39012  void
39014  {
39016  }
39017 
39019  : Inst_MIMG(iFmt, "image_gather4_o")
39020  {
39021  setFlag(GlobalSegment);
39022  } // Inst_MIMG__IMAGE_GATHER4_O
39023 
39025  {
39026  } // ~Inst_MIMG__IMAGE_GATHER4_O
39027 
39028  void
39030  {
39032  }
39033 
39035  InFmt_MIMG *iFmt)
39036  : Inst_MIMG(iFmt, "image_gather4_cl_o")
39037  {
39038  setFlag(GlobalSegment);
39039  } // Inst_MIMG__IMAGE_GATHER4_CL_O
39040 
39042  {
39043  } // ~Inst_MIMG__IMAGE_GATHER4_CL_O
39044 
39045  void
39047  {
39049  }
39050 
39052  InFmt_MIMG *iFmt)
39053  : Inst_MIMG(iFmt, "image_gather4_l_o")
39054  {
39055  setFlag(GlobalSegment);
39056  } // Inst_MIMG__IMAGE_GATHER4_L_O
39057 
39059  {
39060  } // ~Inst_MIMG__IMAGE_GATHER4_L_O
39061 
39062  void
39064  {
39066  }
39067 
39069  InFmt_MIMG *iFmt)
39070  : Inst_MIMG(iFmt, "image_gather4_b_o")
39071  {
39072  setFlag(GlobalSegment);
39073  } // Inst_MIMG__IMAGE_GATHER4_B_O
39074 
39076  {
39077  } // ~Inst_MIMG__IMAGE_GATHER4_B_O
39078 
39079  void
39081  {
39083  }
39084 
39086  InFmt_MIMG *iFmt)
39087  : Inst_MIMG(iFmt, "image_gather4_b_cl_o")
39088  {
39089  setFlag(GlobalSegment);
39090  } // Inst_MIMG__IMAGE_GATHER4_B_CL_O
39091 
39093  {
39094  } // ~Inst_MIMG__IMAGE_GATHER4_B_CL_O
39095 
39096  void
39098  {
39100  }
39101 
39103  InFmt_MIMG *iFmt)
39104  : Inst_MIMG(iFmt, "image_gather4_lz_o")
39105  {
39106  setFlag(GlobalSegment);
39107  } // Inst_MIMG__IMAGE_GATHER4_LZ_O
39108 
39110  {
39111  } // ~Inst_MIMG__IMAGE_GATHER4_LZ_O
39112 
39113  void
39115  {
39117  }
39118 
39120  InFmt_MIMG *iFmt)
39121  : Inst_MIMG(iFmt, "image_gather4_c_o")
39122  {
39123  setFlag(GlobalSegment);
39124  } // Inst_MIMG__IMAGE_GATHER4_C_O
39125 
39127  {
39128  } // ~Inst_MIMG__IMAGE_GATHER4_C_O
39129 
39130  void
39132  {
39134  }
39135 
39137  InFmt_MIMG *iFmt)
39138  : Inst_MIMG(iFmt, "image_gather4_c_cl_o")
39139  {
39140  setFlag(GlobalSegment);
39141  } // Inst_MIMG__IMAGE_GATHER4_C_CL_O
39142 
39144  {
39145  } // ~Inst_MIMG__IMAGE_GATHER4_C_CL_O
39146 
39147  void
39149  {
39151  }
39152 
39154  InFmt_MIMG *iFmt)
39155  : Inst_MIMG(iFmt, "image_gather4_c_l_o")
39156  {
39157  setFlag(GlobalSegment);
39158  } // Inst_MIMG__IMAGE_GATHER4_C_L_O
39159 
39161  {
39162  } // ~Inst_MIMG__IMAGE_GATHER4_C_L_O
39163 
39164  void
39166  {
39168  }
39169 
39171  InFmt_MIMG *iFmt)
39172  : Inst_MIMG(iFmt, "image_gather4_c_b_o")
39173  {
39174  setFlag(GlobalSegment);
39175  } // Inst_MIMG__IMAGE_GATHER4_C_B_O
39176 
39178  {
39179  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_O
39180 
39181  void
39183  {
39185  }
39186 
39188  InFmt_MIMG *iFmt)
39189  : Inst_MIMG(iFmt, "image_gather4_c_b_cl_o")
39190  {
39191  setFlag(GlobalSegment);
39192  } // Inst_MIMG__IMAGE_GATHER4_C_B_CL_O
39193 
39195  {
39196  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_CL_O
39197 
39198  void
39200  {
39202  }
39203 
39205  InFmt_MIMG *iFmt)
39206  : Inst_MIMG(iFmt, "image_gather4_c_lz_o")
39207  {
39208  setFlag(GlobalSegment);
39209  } // Inst_MIMG__IMAGE_GATHER4_C_LZ_O
39210 
39212  {
39213  } // ~Inst_MIMG__IMAGE_GATHER4_C_LZ_O
39214 
39215  void
39217  {
39219  }
39220 
39222  : Inst_MIMG(iFmt, "image_get_lod")
39223  {
39224  setFlag(GlobalSegment);
39225  } // Inst_MIMG__IMAGE_GET_LOD
39226 
39228  {
39229  } // ~Inst_MIMG__IMAGE_GET_LOD
39230 
39231  void
39233  {
39235  }
39236 
39238  : Inst_MIMG(iFmt, "image_sample_cd")
39239  {
39240  setFlag(GlobalSegment);
39241  } // Inst_MIMG__IMAGE_SAMPLE_CD
39242 
39244  {
39245  } // ~Inst_MIMG__IMAGE_SAMPLE_CD
39246 
39247  void
39249  {
39251  }
39252 
39254  InFmt_MIMG *iFmt)
39255  : Inst_MIMG(iFmt, "image_sample_cd_cl")
39256  {
39257  setFlag(GlobalSegment);
39258  } // Inst_MIMG__IMAGE_SAMPLE_CD_CL
39259 
39261  {
39262  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_CL
39263 
39264  void
39266  {
39268  }
39269 
39271  InFmt_MIMG *iFmt)
39272  : Inst_MIMG(iFmt, "image_sample_c_cd")
39273  {
39274  setFlag(GlobalSegment);
39275  } // Inst_MIMG__IMAGE_SAMPLE_C_CD
39276 
39278  {
39279  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD
39280 
39281  void
39283  {
39285  }
39286 
39288  InFmt_MIMG *iFmt)
39289  : Inst_MIMG(iFmt, "image_sample_c_cd_cl")
39290  {
39291  setFlag(GlobalSegment);
39292  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
39293 
39295  {
39296  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
39297 
39298  void
39300  {
39302  }
39303 
39305  InFmt_MIMG *iFmt)
39306  : Inst_MIMG(iFmt, "image_sample_cd_o")
39307  {
39308  setFlag(GlobalSegment);
39309  } // Inst_MIMG__IMAGE_SAMPLE_CD_O
39310 
39312  {
39313  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_O
39314 
39315  void
39317  {
39319  }
39320 
39322  InFmt_MIMG *iFmt)
39323  : Inst_MIMG(iFmt, "image_sample_cd_cl_o")
39324  {
39325  setFlag(GlobalSegment);
39326  } // Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
39327 
39329  {
39330  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
39331 
39332  void
39334  {
39336  }
39337 
39339  InFmt_MIMG *iFmt)
39340  : Inst_MIMG(iFmt, "image_sample_c_cd_o")
39341  {
39342  setFlag(GlobalSegment);
39343  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_O
39344 
39346  {
39347  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_O
39348 
39349  void
39351  {
39353  }
39354 
39356  InFmt_MIMG *iFmt)
39357  : Inst_MIMG(iFmt, "image_sample_c_cd_cl_o")
39358  {
39359  setFlag(GlobalSegment);
39360  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O
39361 
39363  {
39364  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O
39365 
39366  void
39368  {
39370  }
39371 
39373  : Inst_EXP(iFmt, "exp")
39374  {
39375  } // Inst_EXP__EXP
39376 
39378  {
39379  } // ~Inst_EXP__EXP
39380 
39381  void
39383  {
39385  }
39386 
39388  : Inst_FLAT(iFmt, "flat_load_ubyte")
39389  {
39390  setFlag(MemoryRef);
39391  setFlag(Load);
39392  } // Inst_FLAT__FLAT_LOAD_UBYTE
39393 
39395  {
39396  } // ~Inst_FLAT__FLAT_LOAD_UBYTE
39397 
39398  // Untyped buffer load unsigned byte (zero extend to VGPR destination).
39399  void
39401  {
39402  Wavefront *wf = gpuDynInst->wavefront();
39403 
39404  if (wf->execMask().none()) {
39405  wf->decVMemInstsIssued();
39406  wf->decLGKMInstsIssued();
39407  wf->rdGmReqsInPipe--;
39408  wf->rdLmReqsInPipe--;
39409  gpuDynInst->exec_mask = wf->execMask();
39410  wf->computeUnit->vrf[wf->simdId]->
39411  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39412  return;
39413  }
39414 
39415  gpuDynInst->execUnitId = wf->execUnitId;
39416  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39417  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39418  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39419 
39420  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39421 
39422  addr.read();
39423 
39424  calcAddr(gpuDynInst, addr);
39425 
39426  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39427  gpuDynInst->computeUnit()->globalMemoryPipe
39428  .issueRequest(gpuDynInst);
39429  wf->rdGmReqsInPipe--;
39430  wf->outstandingReqsRdGm++;
39431  } else {
39432  fatal("Non global flat instructions not implemented yet.\n");
39433  }
39434 
39435  gpuDynInst->wavefront()->outstandingReqs++;
39436  gpuDynInst->wavefront()->validateRequestCounters();
39437  } // execute
39438 
39439  void
39441  {
39442  initMemRead<VecElemU8>(gpuDynInst);
39443  } // initiateAcc
39444 
39445  void
39447  {
39448  VecOperandU32 vdst(gpuDynInst, extData.VDST);
39449 
39450  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39451  if (gpuDynInst->exec_mask[lane]) {
39452  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU8*>(
39453  gpuDynInst->d_data))[lane]);
39454  }
39455  }
39456  vdst.write();
39457  } // execute
39458  // --- Inst_FLAT__FLAT_LOAD_SBYTE class methods ---
39459 
39461  : Inst_FLAT(iFmt, "flat_load_sbyte")
39462  {
39463  setFlag(MemoryRef);
39464  setFlag(Load);
39465  } // Inst_FLAT__FLAT_LOAD_SBYTE
39466 
39468  {
39469  } // ~Inst_FLAT__FLAT_LOAD_SBYTE
39470 
39471  // Untyped buffer load signed byte (sign extend to VGPR destination).
39472  void
39474  {
39476  }
39477 
39478  void
39480  {
39481  } // initiateAcc
39482 
39483  void
39485  {
39486  }
39487 
39489  : Inst_FLAT(iFmt, "flat_load_ushort")
39490  {
39491  setFlag(MemoryRef);
39492  setFlag(Load);
39493  } // Inst_FLAT__FLAT_LOAD_USHORT
39494 
39496  {
39497  } // ~Inst_FLAT__FLAT_LOAD_USHORT
39498 
39499  // Untyped buffer load unsigned short (zero extend to VGPR destination).
39500  void
39502  {
39503  Wavefront *wf = gpuDynInst->wavefront();
39504 
39505  if (wf->execMask().none()) {
39506  wf->decVMemInstsIssued();
39507  wf->decLGKMInstsIssued();
39508  wf->rdGmReqsInPipe--;
39509  wf->rdLmReqsInPipe--;
39510  gpuDynInst->exec_mask = wf->execMask();
39511  wf->computeUnit->vrf[wf->simdId]->
39512  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39513  return;
39514  }
39515 
39516  gpuDynInst->execUnitId = wf->execUnitId;
39517  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39518  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39519  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39520 
39521  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39522 
39523  addr.read();
39524 
39525  calcAddr(gpuDynInst, addr);
39526 
39527  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39528  gpuDynInst->computeUnit()->globalMemoryPipe
39529  .issueRequest(gpuDynInst);
39530  wf->rdGmReqsInPipe--;
39531  wf->outstandingReqsRdGm++;
39532  } else {
39533  fatal("Non global flat instructions not implemented yet.\n");
39534  }
39535 
39536  gpuDynInst->wavefront()->outstandingReqs++;
39537  gpuDynInst->wavefront()->validateRequestCounters();
39538  }
39539 
39540  void
39542  {
39543  initMemRead<VecElemU16>(gpuDynInst);
39544  } // initiateAcc
39545 
39546  void
39548  {
39549  VecOperandU32 vdst(gpuDynInst, extData.VDST);
39550 
39551  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39552  if (gpuDynInst->exec_mask[lane]) {
39553  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU16*>(
39554  gpuDynInst->d_data))[lane]);
39555  }
39556  }
39557  vdst.write();
39558  }
39559 
39560 
39562  : Inst_FLAT(iFmt, "flat_load_sshort")
39563  {
39564  setFlag(MemoryRef);
39565  setFlag(Load);
39566  } // Inst_FLAT__FLAT_LOAD_SSHORT
39567 
39569  {
39570  } // ~Inst_FLAT__FLAT_LOAD_SSHORT
39571 
39572  // Untyped buffer load signed short (sign extend to VGPR destination).
39573  void
39575  {
39577  }
39578 
39579  void
39581  {
39582  } // initiateAcc
39583 
39584  void
39586  {
39587  }
39588 
39590  : Inst_FLAT(iFmt, "flat_load_dword")
39591  {
39592  setFlag(MemoryRef);
39593  setFlag(Load);
39594  } // Inst_FLAT__FLAT_LOAD_DWORD
39595 
39597  {
39598  } // ~Inst_FLAT__FLAT_LOAD_DWORD
39599 
39600  // Untyped buffer load dword.
39601  void
39603  {
39604  Wavefront *wf = gpuDynInst->wavefront();
39605 
39606  if (wf->execMask().none()) {
39607  wf->decVMemInstsIssued();
39608  wf->decLGKMInstsIssued();
39609  wf->rdGmReqsInPipe--;
39610  wf->rdLmReqsInPipe--;
39611  gpuDynInst->exec_mask = wf->execMask();
39612  wf->computeUnit->vrf[wf->simdId]->
39613  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39614  return;
39615  }
39616 
39617  gpuDynInst->execUnitId = wf->execUnitId;
39618  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39619  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39620  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39621 
39622  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39623 
39624  addr.read();
39625 
39626  calcAddr(gpuDynInst, addr);
39627 
39628  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39629  gpuDynInst->computeUnit()->globalMemoryPipe
39630  .issueRequest(gpuDynInst);
39631  wf->rdGmReqsInPipe--;
39632  wf->outstandingReqsRdGm++;
39633  } else {
39634  fatal("Non global flat instructions not implemented yet.\n");
39635  }
39636 
39637  gpuDynInst->wavefront()->outstandingReqs++;
39638  gpuDynInst->wavefront()->validateRequestCounters();
39639  }
39640 
39641  void
39643  {
39644  initMemRead<VecElemU32>(gpuDynInst);
39645  } // initiateAcc
39646 
39647  void
39649  {
39650  VecOperandU32 vdst(gpuDynInst, extData.VDST);
39651 
39652  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39653  if (gpuDynInst->exec_mask[lane]) {
39654  vdst[lane] = (reinterpret_cast<VecElemU32*>(
39655  gpuDynInst->d_data))[lane];
39656  }
39657  }
39658  vdst.write();
39659  } // completeAcc
39660 
39662  InFmt_FLAT *iFmt)
39663  : Inst_FLAT(iFmt, "flat_load_dwordx2")
39664  {
39665  setFlag(MemoryRef);
39666  setFlag(Load);
39667  } // Inst_FLAT__FLAT_LOAD_DWORDX2
39668 
39670  {
39671  } // ~Inst_FLAT__FLAT_LOAD_DWORDX2
39672 
39673  // Untyped buffer load 2 dwords.
39674  void
39676  {
39677  Wavefront *wf = gpuDynInst->wavefront();
39678 
39679  if (wf->execMask().none()) {
39680  wf->decVMemInstsIssued();
39681  wf->decLGKMInstsIssued();
39682  wf->rdGmReqsInPipe--;
39683  wf->rdLmReqsInPipe--;
39684  gpuDynInst->exec_mask = wf->execMask();
39685  wf->computeUnit->vrf[wf->simdId]->
39686  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39687  return;
39688  }
39689 
39690  gpuDynInst->execUnitId = wf->execUnitId;
39691  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39692  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39693  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39694 
39695  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39696 
39697  addr.read();
39698 
39699  calcAddr(gpuDynInst, addr);
39700 
39701  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39702  gpuDynInst->computeUnit()->globalMemoryPipe
39703  .issueRequest(gpuDynInst);
39704  wf->rdGmReqsInPipe--;
39705  wf->outstandingReqsRdGm++;
39706  } else {
39707  fatal("Non global flat instructions not implemented yet.\n");
39708  }
39709 
39710  gpuDynInst->wavefront()->outstandingReqs++;
39711  gpuDynInst->wavefront()->validateRequestCounters();
39712  }
39713 
39714  void
39716  {
39717  initMemRead<VecElemU64>(gpuDynInst);
39718  } // initiateAcc
39719 
39720  void
39722  {
39723  VecOperandU64 vdst(gpuDynInst, extData.VDST);
39724 
39725  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39726  if (gpuDynInst->exec_mask[lane]) {
39727  vdst[lane] = (reinterpret_cast<VecElemU64*>(
39728  gpuDynInst->d_data))[lane];
39729  }
39730  }
39731  vdst.write();
39732  } // completeAcc
39733 
39735  InFmt_FLAT *iFmt)
39736  : Inst_FLAT(iFmt, "flat_load_dwordx3")
39737  {
39738  setFlag(MemoryRef);
39739  setFlag(Load);
39740  } // Inst_FLAT__FLAT_LOAD_DWORDX3
39741 
39743  {
39744  } // ~Inst_FLAT__FLAT_LOAD_DWORDX3
39745 
39746  // Untyped buffer load 3 dwords.
39747  void
39749  {
39750  Wavefront *wf = gpuDynInst->wavefront();
39751 
39752  if (wf->execMask().none()) {
39753  wf->decVMemInstsIssued();
39754  wf->decLGKMInstsIssued();
39755  wf->rdGmReqsInPipe--;
39756  wf->rdLmReqsInPipe--;
39757  gpuDynInst->exec_mask = wf->execMask();
39758  wf->computeUnit->vrf[wf->simdId]->
39759  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39760  return;
39761  }
39762 
39763  gpuDynInst->execUnitId = wf->execUnitId;
39764  gpuDynInst->exec_mask = wf->execMask();
39765  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39766  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39767 
39768  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39769 
39770  addr.read();
39771 
39772  calcAddr(gpuDynInst, addr);
39773 
39774  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39775  gpuDynInst->computeUnit()->globalMemoryPipe
39776  .issueRequest(gpuDynInst);
39777  wf->rdGmReqsInPipe--;
39778  wf->outstandingReqsRdGm++;
39779  } else {
39780  fatal("Non global flat instructions not implemented yet.\n");
39781  }
39782 
39783  gpuDynInst->wavefront()->outstandingReqs++;
39784  gpuDynInst->wavefront()->validateRequestCounters();
39785  }
39786 
39787  void
39789  {
39790  initMemRead<3>(gpuDynInst);
39791  } // initiateAcc
39792 
39793  void
39795  {
39796  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
39797  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
39798  VecOperandU32 vdst2(gpuDynInst, extData.VDST + 2);
39799 
39800  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39801  if (gpuDynInst->exec_mask[lane]) {
39802  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
39803  gpuDynInst->d_data))[lane * 3];
39804  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
39805  gpuDynInst->d_data))[lane * 3 + 1];
39806  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
39807  gpuDynInst->d_data))[lane * 3 + 2];
39808  }
39809  }
39810 
39811  vdst0.write();
39812  vdst1.write();
39813  vdst2.write();
39814  } // completeAcc
39815 
39817  InFmt_FLAT *iFmt)
39818  : Inst_FLAT(iFmt, "flat_load_dwordx4")
39819  {
39820  setFlag(MemoryRef);
39821  setFlag(Load);
39822  } // Inst_FLAT__FLAT_LOAD_DWORDX4
39823 
39825  {
39826  } // ~Inst_FLAT__FLAT_LOAD_DWORDX4
39827 
39828  // Untyped buffer load 4 dwords.
39829  void
39831  {
39832  Wavefront *wf = gpuDynInst->wavefront();
39833 
39834  if (wf->execMask().none()) {
39835  wf->decVMemInstsIssued();
39836  wf->decLGKMInstsIssued();
39837  wf->rdGmReqsInPipe--;
39838  wf->rdLmReqsInPipe--;
39839  gpuDynInst->exec_mask = wf->execMask();
39840  wf->computeUnit->vrf[wf->simdId]->
39841  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39842  return;
39843  }
39844 
39845  gpuDynInst->execUnitId = wf->execUnitId;
39846  gpuDynInst->exec_mask = wf->execMask();
39847  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39848  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39849 
39850  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39851 
39852  addr.read();
39853 
39854  calcAddr(gpuDynInst, addr);
39855 
39856  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39857  gpuDynInst->computeUnit()->globalMemoryPipe
39858  .issueRequest(gpuDynInst);
39859  wf->rdGmReqsInPipe--;
39860  wf->outstandingReqsRdGm++;
39861  } else {
39862  fatal("Non global flat instructions not implemented yet.\n");
39863  }
39864 
39865  gpuDynInst->wavefront()->outstandingReqs++;
39866  gpuDynInst->wavefront()->validateRequestCounters();
39867  }
39868 
39869  void
39871  {
39872  initMemRead<4>(gpuDynInst);
39873  } // initiateAcc
39874 
39875  void
39877  {
39878  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
39879  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
39880  VecOperandU32 vdst2(gpuDynInst, extData.VDST + 2);
39881  VecOperandU32 vdst3(gpuDynInst, extData.VDST + 3);
39882 
39883  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39884  if (gpuDynInst->exec_mask[lane]) {
39885  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
39886  gpuDynInst->d_data))[lane * 4];
39887  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
39888  gpuDynInst->d_data))[lane * 4 + 1];
39889  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
39890  gpuDynInst->d_data))[lane * 4 + 2];
39891  vdst3[lane] = (reinterpret_cast<VecElemU32*>(
39892  gpuDynInst->d_data))[lane * 4 + 3];
39893  }
39894  }
39895 
39896  vdst0.write();
39897  vdst1.write();
39898  vdst2.write();
39899  vdst3.write();
39900  } // completeAcc
39901 
39903  : Inst_FLAT(iFmt, "flat_store_byte")
39904  {
39905  setFlag(MemoryRef);
39906  setFlag(Store);
39907  } // Inst_FLAT__FLAT_STORE_BYTE
39908 
39910  {
39911  } // ~Inst_FLAT__FLAT_STORE_BYTE
39912 
39913  // Untyped buffer store byte.
39914  void
39916  {
39917  Wavefront *wf = gpuDynInst->wavefront();
39918 
39919  if (wf->execMask().none()) {
39920  wf->decVMemInstsIssued();
39921  wf->decLGKMInstsIssued();
39922  wf->wrGmReqsInPipe--;
39923  wf->wrLmReqsInPipe--;
39924  return;
39925  }
39926 
39927  gpuDynInst->execUnitId = wf->execUnitId;
39928  gpuDynInst->exec_mask = wf->execMask();
39929  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39930  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39931 
39932  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39933 
39934  addr.read();
39935 
39936  calcAddr(gpuDynInst, addr);
39937 
39938  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39939  gpuDynInst->computeUnit()->globalMemoryPipe
39940  .issueRequest(gpuDynInst);
39941  wf->wrGmReqsInPipe--;
39942  wf->outstandingReqsWrGm++;
39943  } else {
39944  fatal("Non global flat instructions not implemented yet.\n");
39945  }
39946 
39947  gpuDynInst->wavefront()->outstandingReqs++;
39948  gpuDynInst->wavefront()->validateRequestCounters();
39949  } // execute
39950 
39951  void
39953  {
39954  ConstVecOperandU8 data(gpuDynInst, extData.DATA);
39955  data.read();
39956 
39957  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39958  if (gpuDynInst->exec_mask[lane]) {
39959  (reinterpret_cast<VecElemU8*>(gpuDynInst->d_data))[lane]
39960  = data[lane];
39961  }
39962  }
39963 
39964  initMemWrite<VecElemU8>(gpuDynInst);
39965  } // initiateAcc
39966 
39967  void
39969  {
39970  }
39971 
39973  : Inst_FLAT(iFmt, "flat_store_short")
39974  {
39975  setFlag(MemoryRef);
39976  setFlag(Store);
39977  } // Inst_FLAT__FLAT_STORE_SHORT
39978 
39980  {
39981  } // ~Inst_FLAT__FLAT_STORE_SHORT
39982 
39983  // Untyped buffer store short.
39984  void
39986  {
39987  Wavefront *wf = gpuDynInst->wavefront();
39988 
39989  if (wf->execMask().none()) {
39990  wf->decVMemInstsIssued();
39991  wf->decLGKMInstsIssued();
39992  wf->wrGmReqsInPipe--;
39993  wf->wrLmReqsInPipe--;
39994  return;
39995  }
39996 
39997  gpuDynInst->execUnitId = wf->execUnitId;
39998  gpuDynInst->exec_mask = wf->execMask();
39999  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40000  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40001 
40002  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40003 
40004  addr.read();
40005 
40006  calcAddr(gpuDynInst, addr);
40007 
40008  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40009  gpuDynInst->computeUnit()->globalMemoryPipe
40010  .issueRequest(gpuDynInst);
40011  wf->wrGmReqsInPipe--;
40012  wf->outstandingReqsWrGm++;
40013  } else {
40014  fatal("Non global flat instructions not implemented yet.\n");
40015  }
40016 
40017  gpuDynInst->wavefront()->outstandingReqs++;
40018  gpuDynInst->wavefront()->validateRequestCounters();
40019  }
40020 
40021  void
40023  {
40024  ConstVecOperandU16 data(gpuDynInst, extData.DATA);
40025 
40026  data.read();
40027 
40028  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40029  if (gpuDynInst->exec_mask[lane]) {
40030  (reinterpret_cast<VecElemU16*>(gpuDynInst->d_data))[lane]
40031  = data[lane];
40032  }
40033  }
40034 
40035  initMemWrite<VecElemU16>(gpuDynInst);
40036  } // initiateAcc
40037 
40038  void
40040  {
40041  } // completeAcc
40042 
40044  : Inst_FLAT(iFmt, "flat_store_dword")
40045  {
40046  setFlag(MemoryRef);
40047  setFlag(Store);
40048  } // Inst_FLAT__FLAT_STORE_DWORD
40049 
40051  {
40052  } // ~Inst_FLAT__FLAT_STORE_DWORD
40053 
40054  // Untyped buffer store dword.
40055  void
40057  {
40058  Wavefront *wf = gpuDynInst->wavefront();
40059 
40060  if (wf->execMask().none()) {
40061  wf->decVMemInstsIssued();
40062  wf->decLGKMInstsIssued();
40063  wf->wrGmReqsInPipe--;
40064  wf->wrLmReqsInPipe--;
40065  return;
40066  }
40067 
40068  gpuDynInst->execUnitId = wf->execUnitId;
40069  gpuDynInst->exec_mask = wf->execMask();
40070  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40071  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40072 
40073  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40074 
40075  addr.read();
40076 
40077  calcAddr(gpuDynInst, addr);
40078 
40079  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40080  gpuDynInst->computeUnit()->globalMemoryPipe
40081  .issueRequest(gpuDynInst);
40082  wf->wrGmReqsInPipe--;
40083  wf->outstandingReqsWrGm++;
40084  } else {
40085  fatal("Non global flat instructions not implemented yet.\n");
40086  }
40087 
40088  gpuDynInst->wavefront()->outstandingReqs++;
40089  gpuDynInst->wavefront()->validateRequestCounters();
40090  }
40091 
40092  void
40094  {
40095  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40096  data.read();
40097 
40098  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40099  if (gpuDynInst->exec_mask[lane]) {
40100  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane]
40101  = data[lane];
40102  }
40103  }
40104 
40105  initMemWrite<VecElemU32>(gpuDynInst);
40106  } // initiateAcc
40107 
40108  void
40110  {
40111  } // completeAcc
40112 
40114  InFmt_FLAT *iFmt)
40115  : Inst_FLAT(iFmt, "flat_store_dwordx2")
40116  {
40117  setFlag(MemoryRef);
40118  setFlag(Store);
40119  } // Inst_FLAT__FLAT_STORE_DWORDX2
40120 
40122  {
40123  } // ~Inst_FLAT__FLAT_STORE_DWORDX2
40124 
40125  // Untyped buffer store 2 dwords.
40126  void
40128  {
40129  Wavefront *wf = gpuDynInst->wavefront();
40130 
40131  if (wf->execMask().none()) {
40132  wf->decVMemInstsIssued();
40133  wf->decLGKMInstsIssued();
40134  wf->wrGmReqsInPipe--;
40135  wf->wrLmReqsInPipe--;
40136  return;
40137  }
40138 
40139  gpuDynInst->execUnitId = wf->execUnitId;
40140  gpuDynInst->exec_mask = wf->execMask();
40141  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40142  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40143 
40144  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40145 
40146  addr.read();
40147 
40148  calcAddr(gpuDynInst, addr);
40149 
40150  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40151  gpuDynInst->computeUnit()->globalMemoryPipe
40152  .issueRequest(gpuDynInst);
40153  wf->wrGmReqsInPipe--;
40154  wf->outstandingReqsWrGm++;
40155  } else {
40156  fatal("Non global flat instructions not implemented yet.\n");
40157  }
40158 
40159  wf->outstandingReqs++;
40161  }
40162 
40163  void
40165  {
40166  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
40167  data.read();
40168 
40169  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40170  if (gpuDynInst->exec_mask[lane]) {
40171  (reinterpret_cast<VecElemU64*>(gpuDynInst->d_data))[lane]
40172  = data[lane];
40173  }
40174  }
40175 
40176  initMemWrite<VecElemU64>(gpuDynInst);
40177  } // initiateAcc
40178 
40179  void
40181  {
40182  } // completeAcc
40183 
40185  InFmt_FLAT *iFmt)
40186  : Inst_FLAT(iFmt, "flat_store_dwordx3")
40187  {
40188  setFlag(MemoryRef);
40189  setFlag(Store);
40190  } // Inst_FLAT__FLAT_STORE_DWORDX3
40191 
40193  {
40194  } // ~Inst_FLAT__FLAT_STORE_DWORDX3
40195 
40196  // Untyped buffer store 3 dwords.
40197  void
40199  {
40200  Wavefront *wf = gpuDynInst->wavefront();
40201 
40202  if (wf->execMask().none()) {
40203  wf->decVMemInstsIssued();
40204  wf->decLGKMInstsIssued();
40205  wf->wrGmReqsInPipe--;
40206  wf->wrLmReqsInPipe--;
40207  return;
40208  }
40209 
40210  gpuDynInst->execUnitId = wf->execUnitId;
40211  gpuDynInst->exec_mask = wf->execMask();
40212  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40213  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40214 
40215  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40216 
40217  addr.read();
40218 
40219  calcAddr(gpuDynInst, addr);
40220 
40221  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40222  gpuDynInst->computeUnit()->globalMemoryPipe
40223  .issueRequest(gpuDynInst);
40224  wf->wrGmReqsInPipe--;
40225  wf->outstandingReqsWrGm++;
40226  } else {
40227  fatal("Non global flat instructions not implemented yet.\n");
40228  }
40229 
40230  gpuDynInst->wavefront()->outstandingReqs++;
40231  gpuDynInst->wavefront()->validateRequestCounters();
40232  }
40233 
40234  void
40236  {
40237  ConstVecOperandU32 data0(gpuDynInst, extData.DATA);
40238  ConstVecOperandU32 data1(gpuDynInst, extData.DATA + 1);
40239  ConstVecOperandU32 data2(gpuDynInst, extData.DATA + 2);
40240 
40241  data0.read();
40242  data1.read();
40243  data2.read();
40244 
40245  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40246  if (gpuDynInst->exec_mask[lane]) {
40247  (reinterpret_cast<VecElemU32*>(
40248  gpuDynInst->d_data))[lane * 3] = data0[lane];
40249  (reinterpret_cast<VecElemU32*>(
40250  gpuDynInst->d_data))[lane * 3 + 1] = data1[lane];
40251  (reinterpret_cast<VecElemU32*>(
40252  gpuDynInst->d_data))[lane * 3 + 2] = data2[lane];
40253  }
40254  }
40255 
40256  initMemWrite<3>(gpuDynInst);
40257  } // initiateAcc
40258 
40259  void
40261  {
40262  } // completeAcc
40263 
40265  InFmt_FLAT *iFmt)
40266  : Inst_FLAT(iFmt, "flat_store_dwordx4")
40267  {
40268  setFlag(MemoryRef);
40269  setFlag(Store);
40270  } // Inst_FLAT__FLAT_STORE_DWORDX4
40271 
40273  {
40274  } // ~Inst_FLAT__FLAT_STORE_DWORDX4
40275 
40276  // Untyped buffer store 4 dwords.
40277  void
40279  {
40280  Wavefront *wf = gpuDynInst->wavefront();
40281 
40282  if (wf->execMask().none()) {
40283  wf->decVMemInstsIssued();
40284  wf->decLGKMInstsIssued();
40285  wf->wrGmReqsInPipe--;
40286  wf->wrLmReqsInPipe--;
40287  return;
40288  }
40289 
40290  gpuDynInst->execUnitId = wf->execUnitId;
40291  gpuDynInst->exec_mask = wf->execMask();
40292  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40293  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40294 
40295  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40296 
40297  addr.read();
40298 
40299  calcAddr(gpuDynInst, addr);
40300 
40301  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40302  gpuDynInst->computeUnit()->globalMemoryPipe
40303  .issueRequest(gpuDynInst);
40304  wf->wrGmReqsInPipe--;
40305  wf->outstandingReqsWrGm++;
40306  } else {
40307  fatal("Non global flat instructions not implemented yet.\n");
40308  }
40309 
40310  gpuDynInst->wavefront()->outstandingReqs++;
40311  gpuDynInst->wavefront()->validateRequestCounters();
40312  }
40313 
40314  void
40316  {
40317  ConstVecOperandU32 data0(gpuDynInst, extData.DATA);
40318  ConstVecOperandU32 data1(gpuDynInst, extData.DATA + 1);
40319  ConstVecOperandU32 data2(gpuDynInst, extData.DATA + 2);
40320  ConstVecOperandU32 data3(gpuDynInst, extData.DATA + 3);
40321 
40322  data0.read();
40323  data1.read();
40324  data2.read();
40325  data3.read();
40326 
40327  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40328  if (gpuDynInst->exec_mask[lane]) {
40329  (reinterpret_cast<VecElemU32*>(
40330  gpuDynInst->d_data))[lane * 4] = data0[lane];
40331  (reinterpret_cast<VecElemU32*>(
40332  gpuDynInst->d_data))[lane * 4 + 1] = data1[lane];
40333  (reinterpret_cast<VecElemU32*>(
40334  gpuDynInst->d_data))[lane * 4 + 2] = data2[lane];
40335  (reinterpret_cast<VecElemU32*>(
40336  gpuDynInst->d_data))[lane * 4 + 3] = data3[lane];
40337  }
40338  }
40339 
40340  initMemWrite<4>(gpuDynInst);
40341  } // initiateAcc
40342 
40343  void
40345  {
40346  } // completeAcc
40347 
40349  : Inst_FLAT(iFmt, "flat_atomic_swap")
40350  {
40351  setFlag(AtomicExch);
40352  if (instData.GLC) {
40353  setFlag(AtomicReturn);
40354  } else {
40355  setFlag(AtomicNoReturn);
40356  } // if
40357  setFlag(MemoryRef);
40358  } // Inst_FLAT__FLAT_ATOMIC_SWAP
40359 
40361  {
40362  } // ~Inst_FLAT__FLAT_ATOMIC_SWAP
40363 
40364  // tmp = MEM[ADDR];
40365  // MEM[ADDR] = DATA;
40366  // RETURN_DATA = tmp.
40367  void
40369  {
40370  Wavefront *wf = gpuDynInst->wavefront();
40371 
40372  if (wf->execMask().none()) {
40373  wf->decVMemInstsIssued();
40374  wf->decLGKMInstsIssued();
40375  wf->wrGmReqsInPipe--;
40376  wf->rdGmReqsInPipe--;
40377  wf->wrLmReqsInPipe--;
40378  wf->rdLmReqsInPipe--;
40379  if (instData.GLC) {
40380  gpuDynInst->exec_mask = wf->execMask();
40381  wf->computeUnit->vrf[wf->simdId]->
40382  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40383  }
40384  return;
40385  }
40386 
40387  gpuDynInst->execUnitId = wf->execUnitId;
40388  gpuDynInst->exec_mask = wf->execMask();
40389  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40390  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40391 
40392  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40393 
40394  addr.read();
40395 
40396  calcAddr(gpuDynInst, addr);
40397 
40398  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL ||
40399  gpuDynInst->executedAs() == Enums::SC_PRIVATE) {
40400  // TODO: additional address computation required for scratch
40401  panic_if(gpuDynInst->executedAs() == Enums::SC_PRIVATE,
40402  "Flats to private aperture not tested yet\n");
40403  gpuDynInst->computeUnit()->globalMemoryPipe.
40404  issueRequest(gpuDynInst);
40405  wf->wrGmReqsInPipe--;
40406  wf->outstandingReqsWrGm++;
40407  wf->rdGmReqsInPipe--;
40408  wf->outstandingReqsRdGm++;
40409  } else {
40410  fatal("Non global flat instructions not implemented yet.\n");
40411  }
40412 
40413  gpuDynInst->wavefront()->outstandingReqs++;
40414  gpuDynInst->wavefront()->validateRequestCounters();
40415 
40416  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40417 
40418  data.read();
40419 
40420  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40421  if (gpuDynInst->exec_mask[lane]) {
40422  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40423  = data[lane];
40424  }
40425  }
40426 
40427  } // execute
40428 
40429  void
40431  {
40432  initAtomicAccess<VecElemU32>(gpuDynInst);
40433  } // initiateAcc
40434 
40435  void
40437  {
40438  if (isAtomicRet()) {
40439  VecOperandU32 vdst(gpuDynInst, extData.VDST);
40440 
40441  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40442  if (gpuDynInst->exec_mask[lane]) {
40443  vdst[lane] = (reinterpret_cast<VecElemU32*>(
40444  gpuDynInst->d_data))[lane];
40445  }
40446  }
40447 
40448  vdst.write();
40449  }
40450  } // completeAcc
40451 
40452  // --- Inst_FLAT__FLAT_ATOMIC_CMPSWAP class methods ---
40453 
40456  : Inst_FLAT(iFmt, "flat_atomic_cmpswap")
40457  {
40458  setFlag(AtomicCAS);
40459  if (instData.GLC) {
40460  setFlag(AtomicReturn);
40461  } else {
40462  setFlag(AtomicNoReturn);
40463  } // if
40464  setFlag(MemoryRef);
40465  } // Inst_FLAT__FLAT_ATOMIC_CMPSWAP
40466 
40468  {
40469  } // ~Inst_FLAT__FLAT_ATOMIC_CMPSWAP
40470 
40471  // tmp = MEM[ADDR];
40472  // src = DATA[0];
40473  // cmp = DATA[1];
40474  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
40475  // RETURN_DATA[0] = tmp.
40476  void
40478  {
40479  Wavefront *wf = gpuDynInst->wavefront();
40480 
40481  if (wf->execMask().none()) {
40482  wf->decVMemInstsIssued();
40483  wf->decLGKMInstsIssued();
40484  wf->wrGmReqsInPipe--;
40485  wf->rdGmReqsInPipe--;
40486  wf->wrLmReqsInPipe--;
40487  wf->rdLmReqsInPipe--;
40488  if (instData.GLC) {
40489  gpuDynInst->exec_mask = wf->execMask();
40490  wf->computeUnit->vrf[wf->simdId]->
40491  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40492  }
40493  return;
40494  }
40495 
40496  gpuDynInst->execUnitId = wf->execUnitId;
40497  gpuDynInst->exec_mask = wf->execMask();
40498  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40499  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40500 
40501  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40502  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40503  ConstVecOperandU32 cmp(gpuDynInst, extData.DATA + 1);
40504 
40505  addr.read();
40506  data.read();
40507  cmp.read();
40508 
40509  calcAddr(gpuDynInst, addr);
40510 
40511  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40512  if (gpuDynInst->exec_mask[lane]) {
40513  (reinterpret_cast<VecElemU32*>(gpuDynInst->x_data))[lane]
40514  = data[lane];
40515  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40516  = cmp[lane];
40517  }
40518  }
40519 
40520  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL ||
40521  gpuDynInst->executedAs() == Enums::SC_PRIVATE) {
40528  panic_if(gpuDynInst->executedAs() == Enums::SC_PRIVATE,
40529  "Flats to private aperture not tested yet\n");
40530  gpuDynInst->computeUnit()->globalMemoryPipe.
40531  issueRequest(gpuDynInst);
40532  wf->wrGmReqsInPipe--;
40533  wf->outstandingReqsWrGm++;
40534  wf->rdGmReqsInPipe--;
40535  wf->outstandingReqsRdGm++;
40536  } else {
40537  fatal("Non global flat instructions not implemented yet.\n");
40538  }
40539 
40540  gpuDynInst->wavefront()->outstandingReqs++;
40541  gpuDynInst->wavefront()->validateRequestCounters();
40542  }
40543 
40544  void
40546  {
40547  initAtomicAccess<VecElemU32>(gpuDynInst);
40548  } // initiateAcc
40549 
40550  void
40552  {
40553  if (isAtomicRet()) {
40554  VecOperandU32 vdst(gpuDynInst, extData.VDST);
40555 
40556  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40557  if (gpuDynInst->exec_mask[lane]) {
40558  vdst[lane] = (reinterpret_cast<VecElemU32*>(
40559  gpuDynInst->d_data))[lane];
40560  }
40561  }
40562 
40563  vdst.write();
40564  }
40565  } // completeAcc
40566 
40568  : Inst_FLAT(iFmt, "flat_atomic_add")
40569  {
40570  setFlag(AtomicAdd);
40571  if (instData.GLC) {
40572  setFlag(AtomicReturn);
40573  } else {
40574  setFlag(AtomicNoReturn);
40575  } // if
40576  setFlag(MemoryRef);
40577  } // Inst_FLAT__FLAT_ATOMIC_ADD
40578 
40580  {
40581  } // ~Inst_FLAT__FLAT_ATOMIC_ADD
40582 
40583  // tmp = MEM[ADDR];
40584  // MEM[ADDR] += DATA;
40585  // RETURN_DATA = tmp.
40586  void
40588  {
40589  Wavefront *wf = gpuDynInst->wavefront();
40590 
40591  if (wf->execMask().none()) {
40592  wf->decVMemInstsIssued();
40593  wf->decLGKMInstsIssued();
40594  wf->wrGmReqsInPipe--;
40595  wf->rdGmReqsInPipe--;
40596  wf->wrLmReqsInPipe--;
40597  wf->rdLmReqsInPipe--;
40598  if (instData.GLC) {
40599  gpuDynInst->exec_mask = wf->execMask();
40600  wf->computeUnit->vrf[wf->simdId]->
40601  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40602  }
40603  return;
40604  }
40605 
40606  gpuDynInst->execUnitId = wf->execUnitId;
40607  gpuDynInst->exec_mask = wf->execMask();
40608  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40609  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40610 
40611  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40612  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40613 
40614  addr.read();
40615  data.read();
40616 
40617  calcAddr(gpuDynInst, addr);
40618 
40619  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40620  if (gpuDynInst->exec_mask[lane]) {
40621  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40622  = data[lane];
40623  }
40624  }
40625 
40626  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40627  gpuDynInst->computeUnit()->globalMemoryPipe.
40628  issueRequest(gpuDynInst);
40629  wf->wrGmReqsInPipe--;
40630  wf->outstandingReqsWrGm++;
40631  wf->rdGmReqsInPipe--;
40632  wf->outstandingReqsRdGm++;
40633  } else {
40634  fatal("Non global flat instructions not implemented yet.\n");
40635  }
40636 
40637  gpuDynInst->wavefront()->outstandingReqs++;
40638  gpuDynInst->wavefront()->validateRequestCounters();
40639  }
40640 
40641  void
40643  {
40644  initAtomicAccess<VecElemU32>(gpuDynInst);
40645  } // initiateAcc
40646 
40647  void
40649  {
40650  if (isAtomicRet()) {
40651  VecOperandU32 vdst(gpuDynInst, extData.VDST);
40652 
40653  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40654  if (gpuDynInst->exec_mask[lane]) {
40655  vdst[lane] = (reinterpret_cast<VecElemU32*>(
40656  gpuDynInst->d_data))[lane];
40657  }
40658  }
40659 
40660  vdst.write();
40661  }
40662  } // completeAcc
40663 
40665  : Inst_FLAT(iFmt, "flat_atomic_sub")
40666  {
40667  setFlag(AtomicSub);
40668  if (instData.GLC) {
40669  setFlag(AtomicReturn);
40670  } else {
40671  setFlag(AtomicNoReturn);
40672  } // if
40673  setFlag(MemoryRef);
40674  } // Inst_FLAT__FLAT_ATOMIC_SUB
40675 
40677  {
40678  } // ~Inst_FLAT__FLAT_ATOMIC_SUB
40679 
40680  // tmp = MEM[ADDR];
40681  // MEM[ADDR] -= DATA;
40682  // RETURN_DATA = tmp.
40683  void
40685  {
40686  Wavefront *wf = gpuDynInst->wavefront();
40687 
40688  if (wf->execMask().none()) {
40689  wf->decVMemInstsIssued();
40690  wf->decLGKMInstsIssued();
40691  wf->wrGmReqsInPipe--;
40692  wf->rdGmReqsInPipe--;
40693  wf->wrLmReqsInPipe--;
40694  wf->rdLmReqsInPipe--;
40695  if (instData.GLC) {
40696  gpuDynInst->exec_mask = wf->execMask();
40697  wf->computeUnit->vrf[wf->simdId]->
40698  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40699  }
40700  return;
40701  }
40702 
40703  gpuDynInst->execUnitId = wf->execUnitId;
40704  gpuDynInst->exec_mask = wf->execMask();
40705  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40706  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40707 
40708  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40709  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40710 
40711  addr.read();
40712  data.read();
40713 
40714  calcAddr(gpuDynInst, addr);
40715 
40716  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40717  if (gpuDynInst->exec_mask[lane]) {
40718  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40719  = data[lane];
40720  }
40721  }
40722 
40723  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40724  gpuDynInst->computeUnit()->globalMemoryPipe.
40725  issueRequest(gpuDynInst);
40726  wf->wrGmReqsInPipe--;
40727  wf->outstandingReqsWrGm++;
40728  wf->rdGmReqsInPipe--;
40729  wf->outstandingReqsRdGm++;
40730  } else {
40731  fatal("Non global flat instructions not implemented yet.\n");
40732  }
40733 
40734  gpuDynInst->wavefront()->outstandingReqs++;
40735  gpuDynInst->wavefront()->validateRequestCounters();
40736  }
40737  void
40739  {
40740  initAtomicAccess<VecElemU32>(gpuDynInst);
40741  } // initiateAcc
40742 
40743  void
40745  {
40746  if (isAtomicRet()) {
40747  VecOperandU32 vdst(gpuDynInst, extData.VDST);
40748 
40749  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40750  if (gpuDynInst->exec_mask[lane]) {
40751  vdst[lane] = (reinterpret_cast<VecElemU32*>(
40752  gpuDynInst->d_data))[lane];
40753  }
40754  }
40755 
40756  vdst.write();
40757  }
40758  } // completeAcc
40759 
40761  : Inst_FLAT(iFmt, "flat_atomic_smin")
40762  {
40763  setFlag(AtomicMin);
40764  if (instData.GLC) {
40765  setFlag(AtomicReturn);
40766  } else {
40767  setFlag(AtomicNoReturn);
40768  }
40769  setFlag(MemoryRef);
40770  } // Inst_FLAT__FLAT_ATOMIC_SMIN
40771 
40773  {
40774  } // ~Inst_FLAT__FLAT_ATOMIC_SMIN
40775 
40776  // tmp = MEM[ADDR];
40777  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
40778  // RETURN_DATA = tmp.
40779  void
40781  {
40783  }
40784 
40786  : Inst_FLAT(iFmt, "flat_atomic_umin")
40787  {
40788  setFlag(AtomicMin);
40789  if (instData.GLC) {
40790  setFlag(AtomicReturn);
40791  } else {
40792  setFlag(AtomicNoReturn);
40793  }
40794  setFlag(MemoryRef);
40795  } // Inst_FLAT__FLAT_ATOMIC_UMIN
40796 
40798  {
40799  } // ~Inst_FLAT__FLAT_ATOMIC_UMIN
40800 
40801  // tmp = MEM[ADDR];
40802  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
40803  // RETURN_DATA = tmp.
40804  void
40806  {
40808  }
40809 
40811  : Inst_FLAT(iFmt, "flat_atomic_smax")
40812  {
40813  setFlag(AtomicMax);
40814  if (instData.GLC) {
40815  setFlag(AtomicReturn);
40816  } else {
40817  setFlag(AtomicNoReturn);
40818  }
40819  setFlag(MemoryRef);
40820  } // Inst_FLAT__FLAT_ATOMIC_SMAX
40821 
40823  {
40824  } // ~Inst_FLAT__FLAT_ATOMIC_SMAX
40825 
40826  // tmp = MEM[ADDR];
40827  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
40828  // RETURN_DATA = tmp.
40829  void
40831  {
40833  }
40834 
40836  : Inst_FLAT(iFmt, "flat_atomic_umax")
40837  {
40838  setFlag(AtomicMax);
40839  if (instData.GLC) {
40840  setFlag(AtomicReturn);
40841  } else {
40842  setFlag(AtomicNoReturn);
40843  }
40844  setFlag(MemoryRef);
40845  } // Inst_FLAT__FLAT_ATOMIC_UMAX
40846 
40848  {
40849  } // ~Inst_FLAT__FLAT_ATOMIC_UMAX
40850 
40851  // tmp = MEM[ADDR];
40852  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
40853  // RETURN_DATA = tmp.
40854  void
40856  {
40858  }
40859 
40861  : Inst_FLAT(iFmt, "flat_atomic_and")
40862  {
40863  setFlag(AtomicAnd);
40864  if (instData.GLC) {
40865  setFlag(AtomicReturn);
40866  } else {
40867  setFlag(AtomicNoReturn);
40868  }
40869  setFlag(MemoryRef);
40870  } // Inst_FLAT__FLAT_ATOMIC_AND
40871 
40873  {
40874  } // ~Inst_FLAT__FLAT_ATOMIC_AND
40875 
40876  // tmp = MEM[ADDR];
40877  // MEM[ADDR] &= DATA;
40878  // RETURN_DATA = tmp.
40879  void
40881  {
40883  }
40884 
40886  : Inst_FLAT(iFmt, "flat_atomic_or")
40887  {
40888  setFlag(AtomicOr);
40889  if (instData.GLC) {
40890  setFlag(AtomicReturn);
40891  } else {
40892  setFlag(AtomicNoReturn);
40893  }
40894  setFlag(MemoryRef);
40895  } // Inst_FLAT__FLAT_ATOMIC_OR
40896 
40898  {
40899  } // ~Inst_FLAT__FLAT_ATOMIC_OR
40900 
40901  // tmp = MEM[ADDR];
40902  // MEM[ADDR] |= DATA;
40903  // RETURN_DATA = tmp.
40904  void
40906  {
40908  }
40909 
40911  : Inst_FLAT(iFmt, "flat_atomic_xor")
40912  {
40913  setFlag(AtomicXor);
40914  if (instData.GLC) {
40915  setFlag(AtomicReturn);
40916  } else {
40917  setFlag(AtomicNoReturn);
40918  }
40919  setFlag(MemoryRef);
40920  } // Inst_FLAT__FLAT_ATOMIC_XOR
40921 
40923  {
40924  } // ~Inst_FLAT__FLAT_ATOMIC_XOR
40925 
40926  // tmp = MEM[ADDR];
40927  // MEM[ADDR] ^= DATA;
40928  // RETURN_DATA = tmp.
40929  void
40931  {
40933  }
40934 
40936  : Inst_FLAT(iFmt, "flat_atomic_inc")
40937  {
40938  setFlag(AtomicInc);
40939  if (instData.GLC) {
40940  setFlag(AtomicReturn);
40941  } else {
40942  setFlag(AtomicNoReturn);
40943  }
40944  setFlag(MemoryRef);
40945  } // Inst_FLAT__FLAT_ATOMIC_INC
40946 
40948  {
40949  } // ~Inst_FLAT__FLAT_ATOMIC_INC
40950 
40951  // tmp = MEM[ADDR];
40952  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
40953  // RETURN_DATA = tmp.
40954  void
40956  {
40957  Wavefront *wf = gpuDynInst->wavefront();
40958 
40959  if (wf->execMask().none()) {
40960  wf->decVMemInstsIssued();
40961  wf->decLGKMInstsIssued();
40962  wf->wrGmReqsInPipe--;
40963  wf->rdGmReqsInPipe--;
40964  wf->wrLmReqsInPipe--;
40965  wf->rdLmReqsInPipe--;
40966  if (instData.GLC) {
40967  gpuDynInst->exec_mask = wf->execMask();
40968  wf->computeUnit->vrf[wf->simdId]->
40969  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40970  }
40971  return;
40972  }
40973 
40974  gpuDynInst->execUnitId = wf->execUnitId;
40975  gpuDynInst->exec_mask = wf->execMask();
40976  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40977  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40978 
40979  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40980  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40981 
40982  addr.read();
40983  data.read();
40984 
40985  calcAddr(gpuDynInst, addr);
40986 
40987  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40988  if (gpuDynInst->exec_mask[lane]) {
40989  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40990  = data[lane];
40991  }
40992  }
40993 
40994  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40995  gpuDynInst->computeUnit()->globalMemoryPipe.
40996  issueRequest(gpuDynInst);
40997  wf->wrGmReqsInPipe--;
40998  wf->outstandingReqsWrGm++;
40999  wf->rdGmReqsInPipe--;
41000  wf->outstandingReqsRdGm++;
41001  } else {
41002  fatal("Non global flat instructions not implemented yet.\n");
41003  }
41004 
41005  gpuDynInst->wavefront()->outstandingReqs++;
41006  gpuDynInst->wavefront()->validateRequestCounters();
41007  }
41008 
41009  void
41011  {
41012  initAtomicAccess<VecElemU32>(gpuDynInst);
41013  } // initiateAcc
41014 
41015  void
41017  {
41018  if (isAtomicRet()) {
41019  VecOperandU32 vdst(gpuDynInst, extData.VDST);
41020 
41021  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41022  if (gpuDynInst->exec_mask[lane]) {
41023  vdst[lane] = (reinterpret_cast<VecElemU32*>(
41024  gpuDynInst->d_data))[lane];
41025  }
41026  }
41027 
41028  vdst.write();
41029  }
41030  } // completeAcc
41031 
41033  : Inst_FLAT(iFmt, "flat_atomic_dec")
41034  {
41035  setFlag(AtomicDec);
41036  if (instData.GLC) {
41037  setFlag(AtomicReturn);
41038  } else {
41039  setFlag(AtomicNoReturn);
41040  }
41041  setFlag(MemoryRef);
41042  } // Inst_FLAT__FLAT_ATOMIC_DEC
41043 
41045  {
41046  } // ~Inst_FLAT__FLAT_ATOMIC_DEC
41047 
41048  // tmp = MEM[ADDR];
41049  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
41050  // (unsigned compare); RETURN_DATA = tmp.
41051  void
41053  {
41054  Wavefront *wf = gpuDynInst->wavefront();
41055 
41056  if (wf->execMask().none()) {
41057  wf->decVMemInstsIssued();
41058  wf->decLGKMInstsIssued();
41059  wf->wrGmReqsInPipe--;
41060  wf->rdGmReqsInPipe--;
41061  wf->wrLmReqsInPipe--;
41062  wf->rdLmReqsInPipe--;
41063  if (instData.GLC) {
41064  gpuDynInst->exec_mask = wf->execMask();
41065  wf->computeUnit->vrf[wf->simdId]->
41066  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41067  }
41068  return;
41069  }
41070 
41071  gpuDynInst->execUnitId = wf->execUnitId;
41072  gpuDynInst->exec_mask = wf->execMask();
41073  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41074  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41075 
41076  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41077  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
41078 
41079  addr.read();
41080  data.read();
41081 
41082  calcAddr(gpuDynInst, addr);
41083 
41084  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41085  if (gpuDynInst->exec_mask[lane]) {
41086  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
41087  = data[lane];
41088  }
41089  }
41090 
41091  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41092  gpuDynInst->computeUnit()->globalMemoryPipe.
41093  issueRequest(gpuDynInst);
41094  wf->wrGmReqsInPipe--;
41095  wf->outstandingReqsWrGm++;
41096  wf->rdGmReqsInPipe--;
41097  wf->outstandingReqsRdGm++;
41098  } else {
41099  fatal("Non global flat instructions not implemented yet.\n");
41100  }
41101 
41102  gpuDynInst->wavefront()->outstandingReqs++;
41103  gpuDynInst->wavefront()->validateRequestCounters();
41104  }
41105 
41106  void
41108  {
41109  initAtomicAccess<VecElemU32>(gpuDynInst);
41110  } // initiateAcc
41111 
41112  void
41114  {
41115  if (isAtomicRet()) {
41116  VecOperandU32 vdst(gpuDynInst, extData.VDST);
41117 
41118  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41119  if (gpuDynInst->exec_mask[lane]) {
41120  vdst[lane] = (reinterpret_cast<VecElemU32*>(
41121  gpuDynInst->d_data))[lane];
41122  }
41123  }
41124 
41125  vdst.write();
41126  }
41127  } // completeAcc
41128 
41130  InFmt_FLAT *iFmt)
41131  : Inst_FLAT(iFmt, "flat_atomic_swap_x2")
41132  {
41133  setFlag(AtomicExch);
41134  if (instData.GLC) {
41135  setFlag(AtomicReturn);
41136  } else {
41137  setFlag(AtomicNoReturn);
41138  }
41139  setFlag(MemoryRef);
41140  } // Inst_FLAT__FLAT_ATOMIC_SWAP_X2
41141 
41143  {
41144  } // ~Inst_FLAT__FLAT_ATOMIC_SWAP_X2
41145 
41146  // tmp = MEM[ADDR];
41147  // MEM[ADDR] = DATA[0:1];
41148  // RETURN_DATA[0:1] = tmp.
41149  void
41151  {
41153  }
41154 
41156  InFmt_FLAT *iFmt)
41157  : Inst_FLAT(iFmt, "flat_atomic_cmpswap_x2")
41158  {
41159  setFlag(AtomicCAS);
41160  if (instData.GLC) {
41161  setFlag(AtomicReturn);
41162  } else {
41163  setFlag(AtomicNoReturn);
41164  }
41165  setFlag(MemoryRef);
41166  } // Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
41167 
41169  {
41170  } // ~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
41171 
41172  // tmp = MEM[ADDR];
41173  // src = DATA[0:1];
41174  // cmp = DATA[2:3];
41175  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
41176  // RETURN_DATA[0:1] = tmp.
41177  void
41179  {
41180  Wavefront *wf = gpuDynInst->wavefront();
41181 
41182  if (wf->execMask().none()) {
41183  wf->decVMemInstsIssued();
41184  wf->decLGKMInstsIssued();
41185  wf->wrGmReqsInPipe--;
41186  wf->rdGmReqsInPipe--;
41187  wf->wrLmReqsInPipe--;
41188  wf->rdLmReqsInPipe--;
41189  if (instData.GLC) {
41190  gpuDynInst->exec_mask = wf->execMask();
41191  wf->computeUnit->vrf[wf->simdId]->
41192  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41193  }
41194  return;
41195  }
41196 
41197  gpuDynInst->execUnitId = wf->execUnitId;
41198  gpuDynInst->exec_mask = wf->execMask();
41199  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41200  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41201 
41202  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41203  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41204  ConstVecOperandU64 cmp(gpuDynInst, extData.DATA + 2);
41205 
41206  addr.read();
41207  data.read();
41208  cmp.read();
41209 
41210  calcAddr(gpuDynInst, addr);
41211 
41212  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41213  if (gpuDynInst->exec_mask[lane]) {
41214  (reinterpret_cast<VecElemU64*>(gpuDynInst->x_data))[lane]
41215  = data[lane];
41216  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41217  = cmp[lane];
41218  }
41219  }
41220 
41221  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL ||
41222  gpuDynInst->executedAs() == Enums::SC_PRIVATE) {
41229  panic_if(gpuDynInst->executedAs() == Enums::SC_PRIVATE,
41230  "Flats to private aperture not tested yet\n");
41231  gpuDynInst->computeUnit()->globalMemoryPipe.
41232  issueRequest(gpuDynInst);
41233  wf->wrGmReqsInPipe--;
41234  wf->outstandingReqsWrGm++;
41235  wf->rdGmReqsInPipe--;
41236  wf->outstandingReqsRdGm++;
41237  } else {
41238  fatal("Non global flat instructions not implemented yet.\n");
41239  }
41240 
41241  gpuDynInst->wavefront()->outstandingReqs++;
41242  gpuDynInst->wavefront()->validateRequestCounters();
41243  }
41244 
41245  void
41247  {
41248  initAtomicAccess<VecElemU64>(gpuDynInst);
41249  } // initiateAcc
41250 
41251  void
41253  {
41254  if (isAtomicRet()) {
41255  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41256 
41257  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41258  if (gpuDynInst->exec_mask[lane]) {
41259  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41260  gpuDynInst->d_data))[lane];
41261  }
41262  }
41263 
41264  vdst.write();
41265  }
41266  } // completeAcc
41267 
41269  InFmt_FLAT *iFmt)
41270  : Inst_FLAT(iFmt, "flat_atomic_add_x2")
41271  {
41272  setFlag(AtomicAdd);
41273  if (instData.GLC) {
41274  setFlag(AtomicReturn);
41275  } else {
41276  setFlag(AtomicNoReturn);
41277  }
41278  setFlag(MemoryRef);
41279  } // Inst_FLAT__FLAT_ATOMIC_ADD_X2
41280 
41282  {
41283  } // ~Inst_FLAT__FLAT_ATOMIC_ADD_X2
41284 
41285  // tmp = MEM[ADDR];
41286  // MEM[ADDR] += DATA[0:1];
41287  // RETURN_DATA[0:1] = tmp.
41288  void
41290  {
41291  Wavefront *wf = gpuDynInst->wavefront();
41292 
41293  if (wf->execMask().none()) {
41294  wf->decVMemInstsIssued();
41295  wf->decLGKMInstsIssued();
41296  wf->wrGmReqsInPipe--;
41297  wf->rdGmReqsInPipe--;
41298  wf->wrLmReqsInPipe--;
41299  wf->rdLmReqsInPipe--;
41300  if (instData.GLC) {
41301  gpuDynInst->exec_mask = wf->execMask();
41302  wf->computeUnit->vrf[wf->simdId]->
41303  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41304  }
41305  return;
41306  }
41307 
41308  gpuDynInst->execUnitId = wf->execUnitId;
41309  gpuDynInst->exec_mask = wf->execMask();
41310  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41311  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41312 
41313  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41314  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41315 
41316  addr.read();
41317  data.read();
41318 
41319  calcAddr(gpuDynInst, addr);
41320 
41321  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41322  if (gpuDynInst->exec_mask[lane]) {
41323  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41324  = data[lane];
41325  }
41326  }
41327 
41328  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41329  gpuDynInst->computeUnit()->globalMemoryPipe.
41330  issueRequest(gpuDynInst);
41331  wf->wrGmReqsInPipe--;
41332  wf->outstandingReqsWrGm++;
41333  wf->rdGmReqsInPipe--;
41334  wf->outstandingReqsRdGm++;
41335  } else {
41336  fatal("Non global flat instructions not implemented yet.\n");
41337  }
41338 
41339  gpuDynInst->wavefront()->outstandingReqs++;
41340  gpuDynInst->wavefront()->validateRequestCounters();
41341  }
41342 
41343  void
41345  {
41346  initAtomicAccess<VecElemU64>(gpuDynInst);
41347  } // initiateAcc
41348 
41349  void
41351  {
41352  if (isAtomicRet()) {
41353  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41354 
41355 
41356  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41357  if (gpuDynInst->exec_mask[lane]) {
41358  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41359  gpuDynInst->d_data))[lane];
41360  }
41361  }
41362 
41363  vdst.write();
41364  }
41365  } // completeAcc
41366 
41368  InFmt_FLAT *iFmt)
41369  : Inst_FLAT(iFmt, "flat_atomic_sub_x2")
41370  {
41371  setFlag(AtomicSub);
41372  if (instData.GLC) {
41373  setFlag(AtomicReturn);
41374  } else {
41375  setFlag(AtomicNoReturn);
41376  }
41377  setFlag(MemoryRef);
41378  } // Inst_FLAT__FLAT_ATOMIC_SUB_X2
41379 
41381  {
41382  } // ~Inst_FLAT__FLAT_ATOMIC_SUB_X2
41383 
41384  // tmp = MEM[ADDR];
41385  // MEM[ADDR] -= DATA[0:1];
41386  // RETURN_DATA[0:1] = tmp.
41387  void
41389  {
41390  Wavefront *wf = gpuDynInst->wavefront();
41391 
41392  if (wf->execMask().none()) {
41393  wf->decVMemInstsIssued();
41394  wf->decLGKMInstsIssued();
41395  wf->wrGmReqsInPipe--;
41396  wf->rdGmReqsInPipe--;
41397  wf->wrLmReqsInPipe--;
41398  wf->rdLmReqsInPipe--;
41399  if (instData.GLC) {
41400  gpuDynInst->exec_mask = wf->execMask();
41401  wf->computeUnit->vrf[wf->simdId]->
41402  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41403  }
41404  return;
41405  }
41406 
41407  gpuDynInst->execUnitId = wf->execUnitId;
41408  gpuDynInst->exec_mask = wf->execMask();
41409  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41410  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41411 
41412  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41413  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41414 
41415  addr.read();
41416  data.read();
41417 
41418  calcAddr(gpuDynInst, addr);
41419 
41420  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41421  if (gpuDynInst->exec_mask[lane]) {
41422  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41423  = data[lane];
41424  }
41425  }
41426 
41427  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41428  gpuDynInst->computeUnit()->globalMemoryPipe.
41429  issueRequest(gpuDynInst);
41430  wf->wrGmReqsInPipe--;
41431  wf->outstandingReqsWrGm++;
41432  wf->rdGmReqsInPipe--;
41433  wf->outstandingReqsRdGm++;
41434  } else {
41435  fatal("Non global flat instructions not implemented yet.\n");
41436  }
41437 
41438  gpuDynInst->wavefront()->outstandingReqs++;
41439  gpuDynInst->wavefront()->validateRequestCounters();
41440  }
41441 
41442  void
41444  {
41445  initAtomicAccess<VecElemU64>(gpuDynInst);
41446  } // initiateAcc
41447 
41448  void
41450  {
41451  if (isAtomicRet()) {
41452  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41453 
41454 
41455  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41456  if (gpuDynInst->exec_mask[lane]) {
41457  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41458  gpuDynInst->d_data))[lane];
41459  }
41460  }
41461 
41462  vdst.write();
41463  }
41464  } // completeAcc
41465 
41467  InFmt_FLAT *iFmt)
41468  : Inst_FLAT(iFmt, "flat_atomic_smin_x2")
41469  {
41470  setFlag(AtomicMin);
41471  if (instData.GLC) {
41472  setFlag(AtomicReturn);
41473  } else {
41474  setFlag(AtomicNoReturn);
41475  }
41476  setFlag(MemoryRef);
41477  } // Inst_FLAT__FLAT_ATOMIC_SMIN_X2
41478 
41480  {
41481  } // ~Inst_FLAT__FLAT_ATOMIC_SMIN_X2
41482 
41483  // tmp = MEM[ADDR];
41484  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
41485  // RETURN_DATA[0:1] = tmp.
41486  void
41488  {
41490  }
41491 
41493  InFmt_FLAT *iFmt)
41494  : Inst_FLAT(iFmt, "flat_atomic_umin_x2")
41495  {
41496  setFlag(AtomicMin);
41497  if (instData.GLC) {
41498  setFlag(AtomicReturn);
41499  } else {
41500  setFlag(AtomicNoReturn);
41501  }
41502  setFlag(MemoryRef);
41503  } // Inst_FLAT__FLAT_ATOMIC_UMIN_X2
41504 
41506  {
41507  } // ~Inst_FLAT__FLAT_ATOMIC_UMIN_X2
41508 
41509  // tmp = MEM[ADDR];
41510  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
41511  // RETURN_DATA[0:1] = tmp.
41512  void
41514  {
41516  }
41517 
41519  InFmt_FLAT *iFmt)
41520  : Inst_FLAT(iFmt, "flat_atomic_smax_x2")
41521  {
41522  setFlag(AtomicMax);
41523  if (instData.GLC) {
41524  setFlag(AtomicReturn);
41525  } else {
41526  setFlag(AtomicNoReturn);
41527  }
41528  setFlag(MemoryRef);
41529  } // Inst_FLAT__FLAT_ATOMIC_SMAX_X2
41530 
41532  {
41533  } // ~Inst_FLAT__FLAT_ATOMIC_SMAX_X2
41534 
41535  // tmp = MEM[ADDR];
41536  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
41537  // RETURN_DATA[0:1] = tmp.
41538  void
41540  {
41542  }
41543 
41545  InFmt_FLAT *iFmt)
41546  : Inst_FLAT(iFmt, "flat_atomic_umax_x2")
41547  {
41548  setFlag(AtomicMax);
41549  if (instData.GLC) {
41550  setFlag(AtomicReturn);
41551  } else {
41552  setFlag(AtomicNoReturn);
41553  }
41554  setFlag(MemoryRef);
41555  } // Inst_FLAT__FLAT_ATOMIC_UMAX_X2
41556 
41558  {
41559  } // ~Inst_FLAT__FLAT_ATOMIC_UMAX_X2
41560 
41561  // tmp = MEM[ADDR];
41562  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
41563  // RETURN_DATA[0:1] = tmp.
41564  void
41566  {
41568  }
41569 
41571  InFmt_FLAT *iFmt)
41572  : Inst_FLAT(iFmt, "flat_atomic_and_x2")
41573  {
41574  setFlag(AtomicAnd);
41575  if (instData.GLC) {
41576  setFlag(AtomicReturn);
41577  } else {
41578  setFlag(AtomicNoReturn);
41579  }
41580  setFlag(MemoryRef);
41581  } // Inst_FLAT__FLAT_ATOMIC_AND_X2
41582 
41584  {
41585  } // ~Inst_FLAT__FLAT_ATOMIC_AND_X2
41586 
41587  // tmp = MEM[ADDR];
41588  // MEM[ADDR] &= DATA[0:1];
41589  // RETURN_DATA[0:1] = tmp.
41590  void
41592  {
41594  }
41595 
41597  InFmt_FLAT *iFmt)
41598  : Inst_FLAT(iFmt, "flat_atomic_or_x2")
41599  {
41600  setFlag(AtomicOr);
41601  if (instData.GLC) {
41602  setFlag(AtomicReturn);
41603  } else {
41604  setFlag(AtomicNoReturn);
41605  }
41606  setFlag(MemoryRef);
41607  } // Inst_FLAT__FLAT_ATOMIC_OR_X2
41608 
41610  {
41611  } // ~Inst_FLAT__FLAT_ATOMIC_OR_X2
41612 
41613  // tmp = MEM[ADDR];
41614  // MEM[ADDR] |= DATA[0:1];
41615  // RETURN_DATA[0:1] = tmp.
41616  void
41618  {
41620  }
41621 
41623  InFmt_FLAT *iFmt)
41624  : Inst_FLAT(iFmt, "flat_atomic_xor_x2")
41625  {
41626  setFlag(AtomicXor);
41627  if (instData.GLC) {
41628  setFlag(AtomicReturn);
41629  } else {
41630  setFlag(AtomicNoReturn);
41631  }
41632  setFlag(MemoryRef);
41633  } // Inst_FLAT__FLAT_ATOMIC_XOR_X2
41634 
41636  {
41637  } // ~Inst_FLAT__FLAT_ATOMIC_XOR_X2
41638 
41639  // tmp = MEM[ADDR];
41640  // MEM[ADDR] ^= DATA[0:1];
41641  // RETURN_DATA[0:1] = tmp.
41642  void
41644  {
41646  }
41647 
41649  InFmt_FLAT *iFmt)
41650  : Inst_FLAT(iFmt, "flat_atomic_inc_x2")
41651  {
41652  setFlag(AtomicInc);
41653  if (instData.GLC) {
41654  setFlag(AtomicReturn);
41655  } else {
41656  setFlag(AtomicNoReturn);
41657  }
41658  setFlag(MemoryRef);
41659  } // Inst_FLAT__FLAT_ATOMIC_INC_X2
41660 
41662  {
41663  } // ~Inst_FLAT__FLAT_ATOMIC_INC_X2
41664 
41665  // tmp = MEM[ADDR];
41666  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
41667  // RETURN_DATA[0:1] = tmp.
41668  void
41670  {
41671  Wavefront *wf = gpuDynInst->wavefront();
41672 
41673  if (wf->execMask().none()) {
41674  wf->decVMemInstsIssued();
41675  wf->decLGKMInstsIssued();
41676  wf->wrGmReqsInPipe--;
41677  wf->rdGmReqsInPipe--;
41678  wf->wrLmReqsInPipe--;
41679  wf->rdLmReqsInPipe--;
41680  if (instData.GLC) {
41681  gpuDynInst->exec_mask = wf->execMask();
41682  wf->computeUnit->vrf[wf->simdId]->
41683  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41684  }
41685  return;
41686  }
41687 
41688  gpuDynInst->execUnitId = wf->execUnitId;
41689  gpuDynInst->exec_mask = wf->execMask();
41690  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41691  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41692 
41693  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41694  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41695 
41696  addr.read();
41697  data.read();
41698 
41699  calcAddr(gpuDynInst, addr);
41700 
41701  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41702  if (gpuDynInst->exec_mask[lane]) {
41703  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41704  = data[lane];
41705  }
41706  }
41707 
41708  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41709  gpuDynInst->computeUnit()->globalMemoryPipe.
41710  issueRequest(gpuDynInst);
41711  wf->wrGmReqsInPipe--;
41712  wf->outstandingReqsWrGm++;
41713  wf->rdGmReqsInPipe--;
41714  wf->outstandingReqsRdGm++;
41715  } else {
41716  fatal("Non global flat instructions not implemented yet.\n");
41717  }
41718 
41719  gpuDynInst->wavefront()->outstandingReqs++;
41720  gpuDynInst->wavefront()->validateRequestCounters();
41721  }
41722 
41723  void
41725  {
41726  initAtomicAccess<VecElemU64>(gpuDynInst);
41727  } // initiateAcc
41728 
41729  void
41731  {
41732  if (isAtomicRet()) {
41733  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41734 
41735 
41736  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41737  if (gpuDynInst->exec_mask[lane]) {
41738  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41739  gpuDynInst->d_data))[lane];
41740  }
41741  }
41742 
41743  vdst.write();
41744  }
41745  } // completeAcc
41746 
41748  InFmt_FLAT *iFmt)
41749  : Inst_FLAT(iFmt, "flat_atomic_dec_x2")
41750  {
41751  setFlag(AtomicDec);
41752  if (instData.GLC) {
41753  setFlag(AtomicReturn);
41754  } else {
41755  setFlag(AtomicNoReturn);
41756  }
41757  setFlag(MemoryRef);
41758  } // Inst_FLAT__FLAT_ATOMIC_DEC_X2
41759 
41761  {
41762  } // ~Inst_FLAT__FLAT_ATOMIC_DEC_X2
41763 
41764  // tmp = MEM[ADDR];
41765  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
41766  // (unsigned compare);
41767  // RETURN_DATA[0:1] = tmp.
41768  void
41770  {
41771  Wavefront *wf = gpuDynInst->wavefront();
41772 
41773  if (wf->execMask().none()) {
41774  wf->decVMemInstsIssued();
41775  wf->decLGKMInstsIssued();
41776  wf->wrGmReqsInPipe--;
41777  wf->rdGmReqsInPipe--;
41778  wf->wrLmReqsInPipe--;
41779  wf->rdLmReqsInPipe--;
41780  if (instData.GLC) {
41781  gpuDynInst->exec_mask = wf->execMask();
41782  wf->computeUnit->vrf[wf->simdId]->
41783  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41784  }
41785  return;
41786  }
41787 
41788  gpuDynInst->execUnitId = wf->execUnitId;
41789  gpuDynInst->exec_mask = wf->execMask();
41790  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41791  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41792 
41793  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41794  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41795 
41796  addr.read();
41797  data.read();
41798 
41799  calcAddr(gpuDynInst, addr);
41800 
41801  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41802  if (gpuDynInst->exec_mask[lane]) {
41803  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41804  = data[lane];
41805  }
41806  }
41807 
41808  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41809  gpuDynInst->computeUnit()->globalMemoryPipe.
41810  issueRequest(gpuDynInst);
41811  wf->wrGmReqsInPipe--;
41812  wf->outstandingReqsWrGm++;
41813  wf->rdGmReqsInPipe--;
41814  wf->outstandingReqsRdGm++;
41815  } else {
41816  fatal("Non global flat instructions not implemented yet.\n");
41817  }
41818 
41819  gpuDynInst->wavefront()->outstandingReqs++;
41820  gpuDynInst->wavefront()->validateRequestCounters();
41821  }
41822 
41823  void
41825  {
41826  initAtomicAccess<VecElemU64>(gpuDynInst);
41827  } // initiateAcc
41828 
41829  void
41831  {
41832  if (isAtomicRet()) {
41833  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41834 
41835 
41836  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41837  if (gpuDynInst->exec_mask[lane]) {
41838  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41839  gpuDynInst->d_data))[lane];
41840  }
41841  }
41842 
41843  vdst.write();
41844  }
41845  } // completeAcc
41846 } // namespace Gcn3ISA
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::~Inst_MIMG__IMAGE_SAMPLE_CD_CL
~Inst_MIMG__IMAGE_SAMPLE_CD_CL()
Definition: instructions.cc:39260
Gcn3ISA::Inst_VOP3__V_RCP_F32::Inst_VOP3__V_RCP_F32
Inst_VOP3__V_RCP_F32(InFmt_VOP3 *)
Definition: instructions.cc:26421
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F32::~Inst_VOP3__V_CMP_NGT_F32
~Inst_VOP3__V_CMP_NGT_F32()
Definition: instructions.cc:17015
Gcn3ISA::Inst_VOPC__V_CMP_LT_U16::Inst_VOPC__V_CMP_LT_U16
Inst_VOPC__V_CMP_LT_U16(InFmt_VOPC *)
Definition: instructions.cc:12795
Gcn3ISA::InFmt_FLAT::GLC
unsigned int GLC
Definition: gpu_decoder.hh:1392
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS::Inst_SOPP__S_CBRANCH_CDBGSYS
Inst_SOPP__S_CBRANCH_CDBGSYS(InFmt_SOPP *)
Definition: instructions.cc:4306
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW()
Definition: instructions.cc:37225
Gcn3ISA::Inst_DS__DS_OR_SRC2_B64::Inst_DS__DS_OR_SRC2_B64
Inst_DS__DS_OR_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:34325
Gcn3ISA::Inst_VOPC__V_CMP_LG_F32::Inst_VOPC__V_CMP_LG_F32
Inst_VOPC__V_CMP_LG_F32(InFmt_VOPC *)
Definition: instructions.cc:10627
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37011
Gcn3ISA::Inst_SOPK__S_CMPK_GE_I32::~Inst_SOPK__S_CMPK_GE_I32
~Inst_SOPK__S_CMPK_GE_I32()
Definition: instructions.cc:1489
Gcn3ISA::Inst_DS__DS_XOR_RTN_B32::Inst_DS__DS_XOR_RTN_B32
Inst_DS__DS_XOR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31827
Gcn3ISA::Inst_DS__DS_MIN_F64::Inst_DS__DS_MIN_F64
Inst_DS__DS_MIN_F64(InFmt_DS *)
Definition: instructions.cc:33068
Gcn3ISA::Inst_VOP3__V_CMP_O_F32::~Inst_VOP3__V_CMP_O_F32
~Inst_VOP3__V_CMP_O_F32()
Definition: instructions.cc:16881
Gcn3ISA::Inst_VOP3__V_CMPX_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23076
Gcn3ISA::Inst_SOP1__S_MOV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1902
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34358
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10932
Gcn3ISA::Inst_VOP1__V_RNDNE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8070
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38863
Gcn3ISA::Inst_VOP3__V_CMP_F_F32::~Inst_VOP3__V_CMP_F_F32
~Inst_VOP3__V_CMP_F_F32()
Definition: instructions.cc:16656
Gcn3ISA::Inst_VOP3__V_CMP_GE_U32::~Inst_VOP3__V_CMP_GE_U32
~Inst_VOP3__V_CMP_GE_U32()
Definition: instructions.cc:21166
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_O::~Inst_MIMG__IMAGE_GATHER4_O
~Inst_MIMG__IMAGE_GATHER4_O()
Definition: instructions.cc:39024
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38334
Gcn3ISA::Inst_DS__DS_WRITE_B128::Inst_DS__DS_WRITE_B128
Inst_DS__DS_WRITE_B128(InFmt_DS *)
Definition: instructions.cc:34444
Gcn3ISA::Inst_DS__DS_WRITE2_B32::~Inst_DS__DS_WRITE2_B32
~Inst_DS__DS_WRITE2_B32()
Definition: instructions.cc:31270
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::Inst_FLAT__FLAT_ATOMIC_ADD_X2
Inst_FLAT__FLAT_ATOMIC_ADD_X2(InFmt_FLAT *)
Definition: instructions.cc:41268
Gcn3ISA::Inst_VOP2__V_MIN_F32::Inst_VOP2__V_MIN_F32
Inst_VOP2__V_MIN_F32(InFmt_VOP2 *)
Definition: instructions.cc:5858
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4974
Gcn3ISA::Inst_MIMG__IMAGE_STORE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37832
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U32::Inst_VOP3__V_CMPX_LT_U32
Inst_VOP3__V_CMPX_LT_U32(InFmt_VOP3 *)
Definition: instructions.cc:21569
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22633
Gcn3ISA::Inst_DS__DS_AND_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31804
Gcn3ISA::Inst_DS__DS_MAX_RTN_I64::Inst_DS__DS_MAX_RTN_I64
Inst_DS__DS_MAX_RTN_I64(InFmt_DS *)
Definition: instructions.cc:33218
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F16::~Inst_VOPC__V_CMP_EQ_F16
~Inst_VOPC__V_CMP_EQ_F16()
Definition: instructions.cc:9937
Gcn3ISA::Inst_VOP3__V_RCP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26548
Gcn3ISA::Inst_SMEM::instData
InFmt_SMEM instData
Definition: op_encodings.hh:265
Gcn3ISA::Inst_VOP3__V_MUL_F32::Inst_VOP3__V_MUL_F32
Inst_VOP3__V_MUL_F32(InFmt_VOP3 *)
Definition: instructions.cc:23408
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37231
Gcn3ISA::Inst_VOP2__V_ADD_U32::Inst_VOP2__V_ADD_U32
Inst_VOP2__V_ADD_U32(InFmt_VOP2 *)
Definition: instructions.cc:6450
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34555
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29937
Gcn3ISA::Inst_VOPC__V_CMP_GE_I32::~Inst_VOPC__V_CMP_GE_I32
~Inst_VOPC__V_CMP_GE_I32()
Definition: instructions.cc:13686
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10413
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I64::Inst_DS__DS_MIN_SRC2_I64
Inst_DS__DS_MIN_SRC2_I64(InFmt_DS *)
Definition: instructions.cc:34230
Gcn3ISA::Inst_VOP3__V_RCP_IFLAG_F32::~Inst_VOP3__V_RCP_IFLAG_F32
~Inst_VOP3__V_RCP_IFLAG_F32()
Definition: instructions.cc:26466
Gcn3ISA::InFmt_VOP3_1::SRC1
unsigned int SRC1
Definition: gpu_decoder.hh:1561
fatal
#define fatal(...)
This implements a cprintf based fatal() function.
Definition: logging.hh:183
Gcn3ISA::Inst_VOPC__V_CMPX_F_F16::~Inst_VOPC__V_CMPX_F_F16
~Inst_VOPC__V_CMPX_F_F16()
Definition: instructions.cc:10189
Gcn3ISA::Inst_VOP3__V_CVT_F32_F16::Inst_VOP3__V_CVT_F32_F16
Inst_VOP3__V_CVT_F32_F16(InFmt_VOP3 *)
Definition: instructions.cc:25544
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37924
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4035
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40744
Gcn3ISA::Inst_VOP3__V_CMPX_F_I32::Inst_VOP3__V_CMPX_F_I32
Inst_VOP3__V_CMPX_F_I32(InFmt_VOP3 *)
Definition: instructions.cc:21227
Gcn3ISA::Inst_VOP3__V_SUBREV_F16::Inst_VOP3__V_SUBREV_F16
Inst_VOP3__V_SUBREV_F16(InFmt_VOP3 *)
Definition: instructions.cc:24587
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11865
Gcn3ISA::InFmt_SMEM_1::OFFSET
unsigned int OFFSET
Definition: gpu_decoder.hh:1488
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21711
Gcn3ISA::Inst_VOPC__V_CMPX_F_U64::Inst_VOPC__V_CMPX_F_U64
Inst_VOPC__V_CMPX_F_U64(InFmt_VOPC *)
Definition: instructions.cc:15189
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4603
Gcn3ISA::Inst_VOP3__V_CMP_LT_I16::Inst_VOP3__V_CMP_LT_I16
Inst_VOP3__V_CMP_LT_I16(InFmt_VOP3 *)
Definition: instructions.cc:19408
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37913
Gcn3ISA::Inst_VOP2__V_MADMK_F32::~Inst_VOP2__V_MADMK_F32
~Inst_VOP2__V_MADMK_F32()
Definition: instructions.cc:6388
Gcn3ISA::Inst_VOP3__V_TRUNC_F16::Inst_VOP3__V_TRUNC_F16
Inst_VOP3__V_TRUNC_F16(InFmt_VOP3 *)
Definition: instructions.cc:27442
Gcn3ISA::Inst_VOP3__V_SAD_U8::~Inst_VOP3__V_SAD_U8
~Inst_VOP3__V_SAD_U8()
Definition: instructions.cc:28729
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10771
Gcn3ISA::Inst_DS__DS_READ_B128::Inst_DS__DS_READ_B128
Inst_DS__DS_READ_B128(InFmt_DS *)
Definition: instructions.cc:34481
Gcn3ISA::Inst_VOP3__V_ALIGNBYTE_B32::Inst_VOP3__V_ALIGNBYTE_B32
Inst_VOP3__V_ALIGNBYTE_B32(InFmt_VOP3 *)
Definition: instructions.cc:28238
Gcn3ISA::Inst_VOP1__V_FLOOR_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8251
Gcn3ISA::Inst_SOP2__S_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:548
Gcn3ISA::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:34772
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F16::Inst_VOP3__V_CMPX_GE_F16
Inst_VOP3__V_CMPX_GE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16447
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F64::~Inst_VOP3__V_DIV_FIXUP_F64
~Inst_VOP3__V_DIV_FIXUP_F64()
Definition: instructions.cc:29055
Gcn3ISA::Inst_VINTRP__V_INTERP_P1_F32::~Inst_VINTRP__V_INTERP_P1_F32
~Inst_VINTRP__V_INTERP_P1_F32()
Definition: instructions.cc:15443
Gcn3ISA::Inst_VOP3__V_CVT_PK_U16_U32::~Inst_VOP3__V_CVT_PK_U16_U32
~Inst_VOP3__V_CVT_PK_U16_U32()
Definition: instructions.cc:30940
Gcn3ISA::Inst_VOPC__V_CMP_F_U16::Inst_VOPC__V_CMP_F_U16
Inst_VOPC__V_CMP_F_U16(InFmt_VOPC *)
Definition: instructions.cc:12769
Gcn3ISA::Inst_VOP2__V_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6466
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34645
Gcn3ISA::Inst_VOP3__V_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20742
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I32_F64::~Inst_VOP3__V_FREXP_EXP_I32_F64
~Inst_VOP3__V_FREXP_EXP_I32_F64()
Definition: instructions.cc:26971
Gcn3ISA::Inst_DS__DS_SWIZZLE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32399
Gcn3ISA::Inst_VOP3__V_MUL_LO_U32::Inst_VOP3__V_MUL_LO_U32
Inst_VOP3__V_MUL_LO_U32(InFmt_VOP3 *)
Definition: instructions.cc:30305
Gcn3ISA::Inst_VOP3__V_MAD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29608
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::~Inst_FLAT__FLAT_LOAD_DWORDX3
~Inst_FLAT__FLAT_LOAD_DWORDX3()
Definition: instructions.cc:39742
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19199
Gcn3ISA::Inst_VOP1::extData
InstFormat extData
Definition: op_encodings.hh:311
Gcn3ISA::Inst_SMEM::calcAddr
void calcAddr(GPUDynInstPtr gpu_dyn_inst, ConstScalarOperandU64 &addr, ScalarRegU32 offset)
For normal s_load_dword/s_store_dword instruction addresses.
Definition: op_encodings.hh:227
Gcn3ISA::Inst_VOP3__V_CMP_F_U16::Inst_VOP3__V_CMP_F_U16
Inst_VOP3__V_CMP_F_U16(InFmt_VOP3 *)
Definition: instructions.cc:19686
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12048
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2232
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL_O::~Inst_MIMG__IMAGE_SAMPLE_B_CL_O
~Inst_MIMG__IMAGE_SAMPLE_B_CL_O()
Definition: instructions.cc:38658
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38465
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35882
Gcn3ISA::Inst_VOP2__V_MIN_U32::Inst_VOP2__V_MIN_U32
Inst_VOP2__V_MIN_U32(InFmt_VOP2 *)
Definition: instructions.cc:5984
Gcn3ISA::Inst_DS__DS_AND_RTN_B64::Inst_DS__DS_AND_RTN_B64
Inst_DS__DS_AND_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33272
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31910
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14174
Gcn3ISA::Inst_VOP3__V_CMP_GT_U32::Inst_VOP3__V_CMP_GT_U32
Inst_VOP3__V_CMP_GT_U32(InFmt_VOP3 *)
Definition: instructions.cc:21075
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F16::Inst_VOPC__V_CMP_NLE_F16
Inst_VOPC__V_CMP_NLE_F16(InFmt_VOPC *)
Definition: instructions.cc:10110
Gcn3ISA::Inst_SOPK__S_CMPK_LT_U32::~Inst_SOPK__S_CMPK_LT_U32
~Inst_SOPK__S_CMPK_LT_U32()
Definition: instructions.cc:1664
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34793
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F32::Inst_VOPC__V_CMP_NLE_F32
Inst_VOPC__V_CMP_NLE_F32(InFmt_VOPC *)
Definition: instructions.cc:10855
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33021
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F16::Inst_VOP3__V_CMPX_LE_F16
Inst_VOP3__V_CMPX_LE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16390
Gcn3ISA::Inst_VOPC__V_CMP_LG_F16::~Inst_VOPC__V_CMP_LG_F16
~Inst_VOPC__V_CMP_LG_F16()
Definition: instructions.cc:9991
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL::Inst_MIMG__IMAGE_SAMPLE_CL
Inst_MIMG__IMAGE_SAMPLE_CL(InFmt_MIMG *)
Definition: instructions.cc:38307
Gcn3ISA::Inst_VOP1__V_FLOOR_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9208
Gcn3ISA::VecElemU16
uint16_t VecElemU16
Definition: registers.hh:164
Gcn3ISA::Inst_VOP3__V_CMP_T_U16::Inst_VOP3__V_CMP_T_U16
Inst_VOP3__V_CMP_T_U16(InFmt_VOP3 *)
Definition: instructions.cc:19964
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37690
Wavefront::wrGmReqsInPipe
int wrGmReqsInPipe
Definition: wavefront.hh:179
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21797
Gcn3ISA::Inst_SOP2__S_XNOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:848
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40198
Gcn3ISA::Inst_DS__DS_MAX_F32::~Inst_DS__DS_MAX_F32
~Inst_DS__DS_MAX_F32()
Definition: instructions.cc:31460
Gcn3ISA::Inst_VOP2__V_ADD_F16::Inst_VOP2__V_ADD_F16
Inst_VOP2__V_ADD_F16(InFmt_VOP2 *)
Definition: instructions.cc:6739
Gcn3ISA::Inst_EXP__EXP::Inst_EXP__EXP
Inst_EXP__EXP(InFmt_EXP *)
Definition: instructions.cc:39372
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11421
Gcn3ISA::Inst_DS__DS_XOR_RTN_B64::~Inst_DS__DS_XOR_RTN_B64
~Inst_DS__DS_XOR_RTN_B64()
Definition: instructions.cc:33313
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::~Inst_SMEM__S_STORE_DWORDX2
~Inst_SMEM__S_STORE_DWORDX2()
Definition: instructions.cc:5087
Gcn3ISA::Inst_DS__DS_DEC_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32733
Gcn3ISA::Inst_SOP1__S_BITSET1_B32::Inst_SOP1__S_BITSET1_B32
Inst_SOP1__S_BITSET1_B32(InFmt_SOP1 *)
Definition: instructions.cc:2555
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I16::~Inst_VOPC__V_CMPX_GE_I16
~Inst_VOPC__V_CMPX_GE_I16()
Definition: instructions.cc:13200
Gcn3ISA::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:3179
Gcn3ISA::Inst_SOP2__S_MIN_U32::Inst_SOP2__S_MIN_U32
Inst_SOP2__S_MIN_U32(InFmt_SOP2 *)
Definition: instructions.cc:269
Gcn3ISA::NumVecElemPerVecReg
const int NumVecElemPerVecReg(64)
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17803
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL_O::~Inst_MIMG__IMAGE_GATHER4_C_CL_O
~Inst_MIMG__IMAGE_GATHER4_C_CL_O()
Definition: instructions.cc:39143
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14078
Gcn3ISA::ConstScalarOperandU128
ScalarOperand< ScalarRegU32, true, 4 > ConstScalarOperandU128
Definition: operand.hh:717
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F16::Inst_VOP3__V_CMPX_NLE_F16
Inst_VOP3__V_CMPX_NLE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16563
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39063
Gcn3ISA::Inst_VOP3__V_SUB_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24695
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U16::~Inst_VOPC__V_CMPX_NE_U16
~Inst_VOPC__V_CMPX_NE_U16()
Definition: instructions.cc:13414
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I32::Inst_VOP3__V_CMPX_GT_I32
Inst_VOP3__V_CMPX_GT_I32(InFmt_VOP3 *)
Definition: instructions.cc:21384
Gcn3ISA::Inst_VOP3__V_WRITELANE_B32::Inst_VOP3__V_WRITELANE_B32
Inst_VOP3__V_WRITELANE_B32(InFmt_VOP3 *)
Definition: instructions.cc:30515
Gcn3ISA::Inst_VOP1__V_SIN_F16::Inst_VOP1__V_SIN_F16
Inst_VOP1__V_SIN_F16(InFmt_VOP1 *)
Definition: instructions.cc:9285
Gcn3ISA::Inst_VOPC__V_CMP_LE_F16::Inst_VOPC__V_CMP_LE_F16
Inst_VOPC__V_CMP_LE_F16(InFmt_VOPC *)
Definition: instructions.cc:9948
Gcn3ISA::Inst_DS__DS_MIN_I32::Inst_DS__DS_MIN_I32
Inst_DS__DS_MIN_I32(InFmt_DS *)
Definition: instructions.cc:31059
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE::Inst_MIMG__IMAGE_SAMPLE
Inst_MIMG__IMAGE_SAMPLE(InFmt_MIMG *)
Definition: instructions.cc:38291
Gcn3ISA::Inst_SOP2__S_ANDN2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:608
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39216
Gcn3ISA::Inst_SOP2__S_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:488
Gcn3ISA::InFmt_VOP3_1::NEG
unsigned int NEG
Definition: gpu_decoder.hh:1564
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35770
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F32::Inst_VOP3__V_CMPX_NEQ_F32
Inst_VOP3__V_CMPX_NEQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:17610
Gcn3ISA::Inst_VOP3__V_MIN3_U32::~Inst_VOP3__V_MIN3_U32
~Inst_VOP3__V_MIN3_U32()
Definition: instructions.cc:28394
Gcn3ISA::Inst_VOP2__V_LDEXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7266
Gcn3ISA::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:396
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33797
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F32::Inst_VOPC__V_CMP_TRU_F32
Inst_VOPC__V_CMP_TRU_F32(InFmt_VOPC *)
Definition: instructions.cc:10951
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR_X2::~Inst_FLAT__FLAT_ATOMIC_OR_X2
~Inst_FLAT__FLAT_ATOMIC_OR_X2()
Definition: instructions.cc:41609
Gcn3ISA::Inst_VOP3__V_CVT_U32_F32::Inst_VOP3__V_CVT_U32_F32
Inst_VOP3__V_CVT_U32_F32(InFmt_VOP3 *)
Definition: instructions.cc:25394
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U32::~Inst_VOPC__V_CMPX_LE_U32
~Inst_VOPC__V_CMPX_LE_U32()
Definition: instructions.cc:14318
Gcn3ISA::Inst_VOPC__V_CMP_F_F32::Inst_VOPC__V_CMP_F_F32
Inst_VOPC__V_CMP_F_F32(InFmt_VOPC *)
Definition: instructions.cc:10472
Gcn3ISA::Inst_VOP3__V_MUL_LO_U16::Inst_VOP3__V_MUL_LO_U16
Inst_VOP3__V_MUL_LO_U16(InFmt_VOP3 *)
Definition: instructions.cc:24765
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I16::Inst_VOP3__V_CMPX_NE_I16
Inst_VOP3__V_CMPX_NE_I16(InFmt_VOP3 *)
Definition: instructions.cc:20190
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14536
Gcn3ISA::InFmt_VOP_SDWA::DST_SEL
unsigned int DST_SEL
Definition: gpu_decoder.hh:1597
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::~Inst_FLAT__FLAT_ATOMIC_DEC_X2
~Inst_FLAT__FLAT_ATOMIC_DEC_X2()
Definition: instructions.cc:41760
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37592
Gcn3ISA::Inst_DS__DS_WRITE_B16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31614
Gcn3ISA::Inst_VOP3__V_CUBETC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27862
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F32::Inst_VOPC__V_CMPX_LG_F32
Inst_VOPC__V_CMPX_LG_F32(InFmt_VOPC *)
Definition: instructions.cc:11138
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3918
Gcn3ISA::Inst_VOP3__V_CVT_PKNORM_I16_F32::~Inst_VOP3__V_CVT_PKNORM_I16_F32
~Inst_VOP3__V_CVT_PKNORM_I16_F32()
Definition: instructions.cc:30886
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_O::Inst_MIMG__IMAGE_GATHER4_O
Inst_MIMG__IMAGE_GATHER4_O(InFmt_MIMG *)
Definition: instructions.cc:39018
Gcn3ISA::Inst_VOPC__V_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13775
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39547
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17244
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2(InFmt_FLAT *)
Definition: instructions.cc:41155
Gcn3ISA::Inst_VOP1__V_FLOOR_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8100
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F64::Inst_VOPC__V_CMP_NGE_F64
Inst_VOPC__V_CMP_NGE_F64(InFmt_VOPC *)
Definition: instructions.cc:11787
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN::Inst_FLAT__FLAT_ATOMIC_UMIN
Inst_FLAT__FLAT_ATOMIC_UMIN(InFmt_FLAT *)
Definition: instructions.cc:40785
Gcn3ISA::Inst_VOPC__V_CMP_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11514
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::~Inst_SMEM__S_LOAD_DWORDX4
~Inst_SMEM__S_LOAD_DWORDX4()
Definition: instructions.cc:4559
Gcn3ISA::Inst_VOPC__V_CMPX_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13987
Gcn3ISA::Inst_VOP3__V_CMPX_T_I16::~Inst_VOP3__V_CMPX_T_I16
~Inst_VOP3__V_CMPX_T_I16()
Definition: instructions.cc:20283
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13206
Gcn3ISA::Inst_DS__DS_ADD_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31642
Gcn3ISA::Inst_VOP3__V_SUB_F32::~Inst_VOP3__V_SUB_F32
~Inst_VOP3__V_SUB_F32()
Definition: instructions.cc:23208
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21268
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U64::Inst_DS__DS_RSUB_SRC2_U64
Inst_DS__DS_RSUB_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34172
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37211
Gcn3ISA::Inst_VOP3__V_CMP_GT_U32::~Inst_VOP3__V_CMP_GT_U32
~Inst_VOP3__V_CMP_GT_U32()
Definition: instructions.cc:21082
Gcn3ISA::Inst_VOP1__V_FFBL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8736
Gcn3ISA::Inst_VOP1__V_CVT_F64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7440
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4546
Gcn3ISA::Inst_SOP2__S_LSHL_B32::~Inst_SOP2__S_LSHL_B32
~Inst_SOP2__S_LSHL_B32()
Definition: instructions.cc:901
Gcn3ISA::Inst_VOP3__V_ASHRREV_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30789
Gcn3ISA::Inst_VOP3__V_MAX_F64::~Inst_VOP3__V_MAX_F64
~Inst_VOP3__V_MAX_F64()
Definition: instructions.cc:30199
Gcn3ISA::Inst_VOP3__V_RSQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26510
Gcn3ISA::Inst_VOP2__V_MAX_I16::~Inst_VOP2__V_MAX_I16
~Inst_VOP2__V_MAX_I16()
Definition: instructions.cc:7166
Gcn3ISA::Inst_DS__DS_READ2_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32132
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ_O::~Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
~Inst_MIMG__IMAGE_SAMPLE_C_LZ_O()
Definition: instructions.cc:38810
Gcn3ISA::Inst_DS__DS_INC_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32714
Gcn3ISA::Inst_DS__DS_READ2_B32::~Inst_DS__DS_READ2_B32
~Inst_DS__DS_READ2_B32()
Definition: instructions.cc:32101
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F64::Inst_VOPC__V_CMP_EQ_F64
Inst_VOPC__V_CMP_EQ_F64(InFmt_VOPC *)
Definition: instructions.cc:11560
Gcn3ISA::Inst_VOP3__V_CMP_GT_F64::Inst_VOP3__V_CMP_GT_F64
Inst_VOP3__V_CMP_GT_F64(InFmt_VOP3 *)
Definition: instructions.cc:17899
Gcn3ISA::Inst_VOP3__V_LOG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26388
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38962
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F16::Inst_VOP3__V_CMP_NGE_F16
Inst_VOP3__V_CMP_NGE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16182
Gcn3ISA::Inst_VOP1__V_RCP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9062
Gcn3ISA::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:4359
Gcn3ISA::Inst_VOP3__V_BFREV_B32::~Inst_VOP3__V_BFREV_B32
~Inst_VOP3__V_BFREV_B32()
Definition: instructions.cc:26825
Gcn3ISA::Inst_VOP3__V_CMP_O_F32::Inst_VOP3__V_CMP_O_F32
Inst_VOP3__V_CMP_O_F32(InFmt_VOP3 *)
Definition: instructions.cc:16874
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F32::~Inst_VOP3__V_CMPX_NLT_F32
~Inst_VOP3__V_CMPX_NLT_F32()
Definition: instructions.cc:17652
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::Inst_FLAT__FLAT_ATOMIC_UMAX_X2
Inst_FLAT__FLAT_ATOMIC_UMAX_X2(InFmt_FLAT *)
Definition: instructions.cc:41544
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40260
Gcn3ISA::Inst_VOPC__V_CMP_GT_F32::Inst_VOPC__V_CMP_GT_F32
Inst_VOPC__V_CMP_GT_F32(InFmt_VOPC *)
Definition: instructions.cc:10595
Gcn3ISA::Inst_SOPP__S_SENDMSGHALT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4224
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37359
Gcn3ISA::Inst_SOP2__S_CSELECT_B64::Inst_SOP2__S_CSELECT_B64
Inst_SOP2__S_CSELECT_B64(InFmt_SOP2 *)
Definition: instructions.cc:387
Gcn3ISA::Inst_VOPC__V_CMP_LT_I64::~Inst_VOPC__V_CMP_LT_I64
~Inst_VOPC__V_CMP_LT_I64()
Definition: instructions.cc:14499
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::~Inst_MIMG__IMAGE_ATOMIC_SMIN
~Inst_MIMG__IMAGE_ATOMIC_SMIN()
Definition: instructions.cc:38067
Gcn3ISA::Inst_VOP3__V_CMP_LG_F64::~Inst_VOP3__V_CMP_LG_F64
~Inst_VOP3__V_CMP_LG_F64()
Definition: instructions.cc:17962
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U16::Inst_VOPC__V_CMP_EQ_U16
Inst_VOPC__V_CMP_EQ_U16(InFmt_VOPC *)
Definition: instructions.cc:12826
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16404
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I16::Inst_VOPC__V_CMPX_GT_I16
Inst_VOPC__V_CMPX_GT_I16(InFmt_VOPC *)
Definition: instructions.cc:13130
Gcn3ISA::Inst_VOP3__V_RCP_F16::Inst_VOP3__V_RCP_F16
Inst_VOP3__V_RCP_F16(InFmt_VOP3 *)
Definition: instructions.cc:27262
Gcn3ISA::GCN3GPUStaticInst::panicUnimplemented
void panicUnimplemented() const
Definition: gpu_static_inst.cc:55
Gcn3ISA::Inst_SOP2__S_LSHR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:969
Gcn3ISA::Inst_VOP3__V_NOT_B32::Inst_VOP3__V_NOT_B32
Inst_VOP3__V_NOT_B32(InFmt_VOP3 *)
Definition: instructions.cc:26789
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ_O::~Inst_MIMG__IMAGE_GATHER4_C_LZ_O
~Inst_MIMG__IMAGE_GATHER4_C_LZ_O()
Definition: instructions.cc:39211
Gcn3ISA::Inst_VOPC__V_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13599
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10836
Gcn3ISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2805
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2()
Definition: instructions.cc:36895
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR::Inst_MUBUF__BUFFER_ATOMIC_OR
Inst_MUBUF__BUFFER_ATOMIC_OR(InFmt_MUBUF *)
Definition: instructions.cc:36663
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18577
Gcn3ISA::Inst_VOP3__V_CMP_NE_I64::Inst_VOP3__V_CMP_NE_I64
Inst_VOP3__V_CMP_NE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22049
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I64::~Inst_VOPC__V_CMPX_GT_I64
~Inst_VOPC__V_CMPX_GT_I64()
Definition: instructions.cc:15072
Gcn3ISA::Inst_VOP3__V_BCNT_U32_B32::~Inst_VOP3__V_BCNT_U32_B32
~Inst_VOP3__V_BCNT_U32_B32()
Definition: instructions.cc:30562
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39350
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39870
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F16::Inst_VOP3__V_CMPX_NGT_F16
Inst_VOP3__V_CMPX_NGT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16544
Gcn3ISA::Inst_VOP1__V_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7284
Gcn3ISA::InFmt_FLAT_1::ADDR
unsigned int ADDR
Definition: gpu_decoder.hh:1400
Gcn3ISA::Inst_DS__DS_MIN_F32::Inst_DS__DS_MIN_F32
Inst_DS__DS_MIN_F32(InFmt_DS *)
Definition: instructions.cc:31434
Gcn3ISA::Inst_VOP1__V_CVT_U32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7936
LL
#define LL(N)
int64_t constant
Definition: types.hh:52
Shader::impl_kern_end_rel
int impl_kern_end_rel
Definition: shader.hh:220
Gcn3ISA::Inst_VOP1__V_RNDNE_F64::~Inst_VOP1__V_RNDNE_F64
~Inst_VOP1__V_RNDNE_F64()
Definition: instructions.cc:8064
Gcn3ISA::Inst_SOP1__S_BITSET0_B64::~Inst_SOP1__S_BITSET0_B64
~Inst_SOP1__S_BITSET0_B64()
Definition: instructions.cc:2537
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I64::Inst_VOPC__V_CMPX_GT_I64
Inst_VOPC__V_CMPX_GT_I64(InFmt_VOPC *)
Definition: instructions.cc:15066
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34892
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37261
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37883
Gcn3ISA::Inst_VOP3__V_CMP_T_U64::~Inst_VOP3__V_CMP_T_U64
~Inst_VOP3__V_CMP_T_U64()
Definition: instructions.cc:22443
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12180
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCNZ::Inst_SOPP__S_CBRANCH_VCCNZ
Inst_SOPP__S_CBRANCH_VCCNZ(InFmt_SOPP *)
Definition: instructions.cc:3993
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39367
Gcn3ISA::Inst_VOP1__V_CVT_F32_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7470
Gcn3ISA::Inst_VOP3__V_CMP_F_I64::~Inst_VOP3__V_CMP_F_I64
~Inst_VOP3__V_CMP_F_I64()
Definition: instructions.cc:21861
Gcn3ISA::Inst_VINTRP__V_INTERP_MOV_F32::Inst_VINTRP__V_INTERP_MOV_F32
Inst_VINTRP__V_INTERP_MOV_F32(InFmt_VINTRP *)
Definition: instructions.cc:15473
Gcn3ISA::Inst_VOP2__V_MADMK_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6395
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I8::~Inst_SOP1__S_SEXT_I32_I8
~Inst_SOP1__S_SEXT_I32_I8()
Definition: instructions.cc:2463
Gcn3ISA::Inst_DS__DS_MAX_RTN_F32::~Inst_DS__DS_MAX_RTN_F32
~Inst_DS__DS_MAX_RTN_F32()
Definition: instructions.cc:31983
Gcn3ISA::Inst_VOP1__V_CEIL_F32::~Inst_VOP1__V_CEIL_F32
~Inst_VOP1__V_CEIL_F32()
Definition: instructions.cc:8185
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U32::Inst_VOPC__V_CMPX_GE_U32
Inst_VOPC__V_CMPX_GE_U32(InFmt_VOPC *)
Definition: instructions.cc:14408
Gcn3ISA::Inst_VOP1__V_CVT_F64_U32::Inst_VOP1__V_CVT_F64_U32
Inst_VOP1__V_CVT_F64_U32(InFmt_VOP1 *)
Definition: instructions.cc:7967
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37657
Gcn3ISA::Inst_SOP2__S_NAND_B64::~Inst_SOP2__S_NAND_B64
~Inst_SOP2__S_NAND_B64()
Definition: instructions.cc:751
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:33652
Gcn3ISA::Inst_DS__DS_SUB_RTN_U64::~Inst_DS__DS_SUB_RTN_U64
~Inst_DS__DS_SUB_RTN_U64()
Definition: instructions.cc:33131
Gcn3ISA::Inst_VOP2__V_MIN_I32::Inst_VOP2__V_MIN_I32
Inst_VOP2__V_MIN_I32(InFmt_VOP2 *)
Definition: instructions.cc:5922
Gcn3ISA::Inst_SOPC__S_BITCMP0_B64::Inst_SOPC__S_BITCMP0_B64
Inst_SOPC__S_BITCMP0_B64(InFmt_SOPC *)
Definition: instructions.cc:3561
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F16::~Inst_VOPC__V_CMPX_NLT_F16
~Inst_VOPC__V_CMPX_NLT_F16()
Definition: instructions.cc:10443
Gcn3ISA::Inst_SOPC__S_CMP_LE_I32::~Inst_SOPC__S_CMP_LE_I32
~Inst_SOPC__S_CMP_LE_I32()
Definition: instructions.cc:3333
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F64::~Inst_VOP3__V_DIV_SCALE_F64
~Inst_VOP3__V_DIV_SCALE_F64()
Definition: instructions.cc:29201
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::Inst_MUBUF__BUFFER_STORE_SHORT
Inst_MUBUF__BUFFER_STORE_SHORT(InFmt_MUBUF *)
Definition: instructions.cc:35791
Gcn3ISA::Inst_VOP3__V_CLREXCP::~Inst_VOP3__V_CLREXCP
~Inst_VOP3__V_CLREXCP()
Definition: instructions.cc:27180
Gcn3ISA::Inst_VOP3__V_ASHRREV_I32::~Inst_VOP3__V_ASHRREV_I32
~Inst_VOP3__V_ASHRREV_I32()
Definition: instructions.cc:23999
Gcn3ISA::Inst_VOP3__V_CMP_LE_U16::~Inst_VOP3__V_CMP_LE_U16
~Inst_VOP3__V_CMP_LE_U16()
Definition: instructions.cc:19803
Gcn3ISA::Inst_VOP3__V_MOV_B32::~Inst_VOP3__V_MOV_B32
~Inst_VOP3__V_MOV_B32()
Definition: instructions.cc:25202
Gcn3ISA::Inst_SOPK__S_CMPK_GE_I32::Inst_SOPK__S_CMPK_GE_I32
Inst_SOPK__S_CMPK_GE_I32(InFmt_SOPK *)
Definition: instructions.cc:1483
Gcn3ISA::Inst_VOP1__V_SIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9298
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B32::~Inst_SOP1__S_BCNT0_I32_B32
~Inst_SOP1__S_BCNT0_I32_B32()
Definition: instructions.cc:2141
Gcn3ISA::Inst_VOP2__V_SUBB_U32::Inst_VOP2__V_SUBB_U32
Inst_VOP2__V_SUBB_U32(InFmt_VOP2 *)
Definition: instructions.cc:6653
Gcn3ISA::Inst_DS__DS_DEC_U64::~Inst_DS__DS_DEC_U64
~Inst_DS__DS_DEC_U64()
Definition: instructions.cc:32724
Gcn3ISA::Inst_MIMG__IMAGE_GET_RESINFO::~Inst_MIMG__IMAGE_GET_RESINFO
~Inst_MIMG__IMAGE_GET_RESINFO()
Definition: instructions.cc:37935
Gcn3ISA::Inst_SOP1__S_CMOV_B32::~Inst_SOP1__S_CMOV_B32
~Inst_SOP1__S_CMOV_B32()
Definition: instructions.cc:1920
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37140
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN::~Inst_FLAT__FLAT_ATOMIC_UMIN
~Inst_FLAT__FLAT_ATOMIC_UMIN()
Definition: instructions.cc:40797
Gcn3ISA::Inst_SOP2__S_SUB_I32::Inst_SOP2__S_SUB_I32
Inst_SOP2__S_SUB_I32(InFmt_SOP2 *)
Definition: instructions.cc:143
Gcn3ISA::Inst_VOP1__V_CVT_F32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7754
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37353
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::~Inst_MIMG__IMAGE_SAMPLE_C_CL
~Inst_MIMG__IMAGE_SAMPLE_C_CL()
Definition: instructions.cc:38444
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::Inst_SMEM__S_BUFFER_STORE_DWORDX2
Inst_SMEM__S_BUFFER_STORE_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:5228
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35078
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC::~Inst_MUBUF__BUFFER_ATOMIC_INC
~Inst_MUBUF__BUFFER_ATOMIC_INC()
Definition: instructions.cc:36730
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34952
Gcn3ISA::Inst_VOP3__V_CMP_LE_U64::Inst_VOP3__V_CMP_LE_U64
Inst_VOP3__V_CMP_LE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22269
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5153
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41150
Gcn3ISA::Inst_VOP3__V_CVT_F16_U16::Inst_VOP3__V_CVT_F16_U16
Inst_VOP3__V_CVT_F16_U16(InFmt_VOP3 *)
Definition: instructions.cc:27190
Gcn3ISA::Inst_DS::instData
InFmt_DS instData
Definition: op_encodings.hh:507
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F16::Inst_VOP3__V_CMP_NLG_F16
Inst_VOP3__V_CMP_NLG_F16(InFmt_VOP3 *)
Definition: instructions.cc:16201
Gcn3ISA::Inst_VOP3__V_SUBREV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24600
Gcn3ISA::Inst_VOP3__V_CMPX_T_I64::Inst_VOP3__V_CMPX_T_I64
Inst_VOP3__V_CMPX_T_I64(InFmt_VOP3 *)
Definition: instructions.cc:22749
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2445
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34700
Gcn3ISA::Inst_VOPC__V_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13630
Gcn3ISA::Inst_VOP3__V_CVT_F64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25291
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F32::Inst_VOP3__V_INTERP_P2_F32
Inst_VOP3__V_INTERP_P2_F32(InFmt_VOP3 *)
Definition: instructions.cc:29851
Gcn3ISA::Inst_VOP3__V_MAX3_F32::~Inst_VOP3__V_MAX3_F32
~Inst_VOP3__V_MAX3_F32()
Definition: instructions.cc:28439
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11929
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20517
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34725
Gcn3ISA::Inst_VOP3__V_MAD_U64_U32::Inst_VOP3__V_MAD_U64_U32
Inst_VOP3__V_MAD_U64_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:29481
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35545
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35215
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4487
Gcn3ISA::Inst_DS__DS_MAX_RTN_U64::Inst_DS__DS_MAX_RTN_U64
Inst_DS__DS_MAX_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33254
Gcn3ISA::Inst_VOP2__V_MIN_I16::Inst_VOP2__V_MIN_I16
Inst_VOP2__V_MIN_I16(InFmt_VOP2 *)
Definition: instructions.cc:7222
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U16::Inst_VOP3__V_CMPX_LT_U16
Inst_VOP3__V_CMPX_LT_U16(InFmt_VOP3 *)
Definition: instructions.cc:20332
Gcn3ISA::Inst_VOP3__V_MAD_I64_I32::Inst_VOP3__V_MAD_I64_I32
Inst_VOP3__V_MAD_I64_I32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:29528
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F16::Inst_VOP3__V_CMPX_CLASS_F16
Inst_VOP3__V_CMPX_CLASS_F16(InFmt_VOP3 *)
Definition: instructions.cc:15982
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F32::Inst_VOP3__V_CMPX_LG_F32
Inst_VOP3__V_CMPX_LG_F32(InFmt_VOP3 *)
Definition: instructions.cc:17332
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::Inst_MIMG__IMAGE_SAMPLE_C_CL
Inst_MIMG__IMAGE_SAMPLE_C_CL(InFmt_MIMG *)
Definition: instructions.cc:38437
Gcn3ISA::Inst_VOPC__V_CMP_GE_F32::~Inst_VOPC__V_CMP_GE_F32
~Inst_VOPC__V_CMP_GE_F32()
Definition: instructions.cc:10667
Gcn3ISA::Inst_SOP1__S_SWAPPC_B64::Inst_SOP1__S_SWAPPC_B64
Inst_SOP1__S_SWAPPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2650
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U64::Inst_VOPC__V_CMPX_NE_U64
Inst_VOPC__V_CMPX_NE_U64(InFmt_VOPC *)
Definition: instructions.cc:15344
Gcn3ISA::Inst_VOP2__V_SUB_F32::~Inst_VOP2__V_SUB_F32
~Inst_VOP2__V_SUB_F32()
Definition: instructions.cc:5516
Gcn3ISA::Inst_SOP2__S_MIN_I32::Inst_SOP2__S_MIN_I32
Inst_SOP2__S_MIN_I32(InFmt_SOP2 *)
Definition: instructions.cc:239
Gcn3ISA::Inst_VOPC__V_CMP_GE_U64::~Inst_VOPC__V_CMP_GE_U64
~Inst_VOPC__V_CMP_GE_U64()
Definition: instructions.cc:14892
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16558
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36603
Gcn3ISA::Inst_VOP3__V_ASHRREV_I64::~Inst_VOP3__V_ASHRREV_I64
~Inst_VOP3__V_ASHRREV_I64()
Definition: instructions.cc:30782
Gcn3ISA::Inst_VOP3__V_CMP_LT_I32::~Inst_VOP3__V_CMP_LT_I32
~Inst_VOP3__V_CMP_LT_I32()
Definition: instructions.cc:20652
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18355
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17658
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::~Inst_SMEM__S_LOAD_DWORDX2
~Inst_SMEM__S_LOAD_DWORDX2()
Definition: instructions.cc:4500
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10159
Gcn3ISA::Inst_VOP3__V_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21172
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F64::Inst_VOP3__V_CMPX_LT_F64
Inst_VOP3__V_CMPX_LT_F64(InFmt_VOP3 *)
Definition: instructions.cc:18563
Gcn3ISA::Inst_DS__DS_DEC_RTN_U64::~Inst_DS__DS_DEC_RTN_U64
~Inst_DS__DS_DEC_RTN_U64()
Definition: instructions.cc:33186
Gcn3ISA::Inst_DS__DS_MIN_RTN_F32::~Inst_DS__DS_MIN_RTN_F32
~Inst_DS__DS_MIN_RTN_F32()
Definition: instructions.cc:31963
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U64::~Inst_VOPC__V_CMPX_LT_U64
~Inst_VOPC__V_CMPX_LT_U64()
Definition: instructions.cc:15222
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U32::Inst_DS__DS_RSUB_RTN_U32
Inst_DS__DS_RSUB_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31665
Gcn3ISA::Inst_VOPC__V_CMP_GT_I32::~Inst_VOPC__V_CMP_GT_I32
~Inst_VOPC__V_CMP_GT_I32()
Definition: instructions.cc:13624
Gcn3ISA::Inst_DS__DS_READ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32339
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13292
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::Inst_FLAT__FLAT_LOAD_DWORDX4
Inst_FLAT__FLAT_LOAD_DWORDX4(InFmt_FLAT *)
Definition: instructions.cc:39816
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F16::Inst_VOP3__V_CMPX_TRU_F16
Inst_VOP3__V_CMPX_TRU_F16(InFmt_VOP3 *)
Definition: instructions.cc:16620
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39788
Gcn3ISA::Inst_VOPC__V_CMP_LT_U32::Inst_VOPC__V_CMP_LT_U32
Inst_VOPC__V_CMP_LT_U32(InFmt_VOPC *)
Definition: instructions.cc:13763
Gcn3ISA::Inst_VOPC__V_CMP_GE_U16::~Inst_VOPC__V_CMP_GE_U16
~Inst_VOPC__V_CMP_GE_U16()
Definition: instructions.cc:12956
Gcn3ISA::Inst_VOPC__V_CMP_F_F32::~Inst_VOPC__V_CMP_F_F32
~Inst_VOPC__V_CMP_F_F32()
Definition: instructions.cc:10479
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40164
Gcn3ISA::Inst_VOP3__V_CMPX_F_I32::~Inst_VOP3__V_CMPX_F_I32
~Inst_VOP3__V_CMPX_F_I32()
Definition: instructions.cc:21234
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13420
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F32::~Inst_VOPC__V_CMPX_LG_F32
~Inst_VOPC__V_CMPX_LG_F32()
Definition: instructions.cc:11145
Gcn3ISA::Inst_DS__DS_MIN_U32::Inst_DS__DS_MIN_U32
Inst_DS__DS_MIN_U32(InFmt_DS *)
Definition: instructions.cc:31095
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::~Inst_MUBUF__BUFFER_ATOMIC_SMAX
~Inst_MUBUF__BUFFER_ATOMIC_SMAX()
Definition: instructions.cc:36595
Gcn3ISA::Inst_VOPC__V_CMP_LE_I32::~Inst_VOPC__V_CMP_LE_I32
~Inst_VOPC__V_CMP_LE_I32()
Definition: instructions.cc:13593
Gcn3ISA::Inst_SOP1__S_WQM_B32::Inst_SOP1__S_WQM_B32
Inst_SOP1__S_WQM_B32(InFmt_SOP1 *)
Definition: instructions.cc:2031
Gcn3ISA::Inst_VOP3__V_LSHLREV_B32::Inst_VOP3__V_LSHLREV_B32
Inst_VOP3__V_LSHLREV_B32(InFmt_VOP3 *)
Definition: instructions.cc:24035
Gcn3ISA::Inst_DS__DS_MSKOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32877
Gcn3ISA::Inst_SOP1__S_GETPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2616
Gcn3ISA::Inst_VOP3__V_LDEXP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30259
Gcn3ISA::Inst_SOP2__S_SUB_I32::~Inst_SOP2__S_SUB_I32
~Inst_SOP2__S_SUB_I32()
Definition: instructions.cc:149
Gcn3ISA::Inst_SOPK__S_CMPK_LE_I32::~Inst_SOPK__S_CMPK_LE_I32
~Inst_SOPK__S_CMPK_LE_I32()
Definition: instructions.cc:1539
Gcn3ISA::Inst_SOPK__S_MULK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1750
Gcn3ISA::InFmt_EXP
Definition: gpu_decoder.hh:1373
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::Inst_MIMG__IMAGE_SAMPLE_CD_O
Inst_MIMG__IMAGE_SAMPLE_CD_O(InFmt_MIMG *)
Definition: instructions.cc:39304
data
const char data[]
Definition: circlebuf.test.cc:42
Gcn3ISA::Inst_MIMG__IMAGE_GET_RESINFO::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37940
shader.hh
Gcn3ISA::Inst_VOP2__V_MADMK_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6847
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U16::Inst_VOP3__V_CMPX_GE_U16
Inst_VOP3__V_CMPX_GE_U16(InFmt_VOP3 *)
Definition: instructions.cc:20547
Gcn3ISA::Inst_VOPC::instData
InFmt_VOPC instData
Definition: op_encodings.hh:333
Gcn3ISA::Inst_DS__DS_GWS_SEMA_V::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34039
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F64::Inst_VOPC__V_CMPX_CLASS_F64
Inst_VOPC__V_CMPX_CLASS_F64(InFmt_VOPC *)
Definition: instructions.cc:9719
Gcn3ISA::Inst_DS__DS_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31144
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40545
Gcn3ISA::Inst_DS__DS_DEC_U32::~Inst_DS__DS_DEC_U32
~Inst_DS__DS_DEC_U32()
Definition: instructions.cc:31046
Gcn3ISA::Inst_VOP3__V_CVT_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25241
Gcn3ISA::Inst_DS__DS_CONDXCHG32_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33682
Gcn3ISA::Inst_VOP2__V_SUB_U16::Inst_VOP2__V_SUB_U16
Inst_VOP2__V_SUB_U16(InFmt_VOP2 *)
Definition: instructions.cc:6905
Gcn3ISA::Inst_VOP3__V_CMP_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21978
Gcn3ISA::Inst_SOP2__S_LSHR_B64::~Inst_SOP2__S_LSHR_B64
~Inst_SOP2__S_LSHR_B64()
Definition: instructions.cc:992
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F64::Inst_VOP3__V_CMP_TRU_F64
Inst_VOP3__V_CMP_TRU_F64(InFmt_VOP3 *)
Definition: instructions.cc:18506
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::~Inst_MUBUF__BUFFER_STORE_DWORDX3
~Inst_MUBUF__BUFFER_STORE_DWORDX3()
Definition: instructions.cc:36094
Gcn3ISA::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:37371
Gcn3ISA::Inst_VOP3__V_MAX_F16::Inst_VOP3__V_MAX_F16
Inst_VOP3__V_MAX_F16(InFmt_VOP3 *)
Definition: instructions.cc:24937
Gcn3ISA::Inst_VOP1__V_FRACT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8130
Gcn3ISA::Inst_VOP3__V_CMP_GT_U64::~Inst_VOP3__V_CMP_GT_U64
~Inst_VOP3__V_CMP_GT_U64()
Definition: instructions.cc:22318
Gcn3ISA::Inst_SOP1__S_MOVRELS_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3047
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::~Inst_MIMG__IMAGE_SAMPLE_C_LZ
~Inst_MIMG__IMAGE_SAMPLE_C_LZ()
Definition: instructions.cc:38543
Gcn3ISA::Inst_VOP3__V_MIN_U32::~Inst_VOP3__V_MIN_U32
~Inst_VOP3__V_MIN_U32()
Definition: instructions.cc:23875
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34263
Gcn3ISA::Inst_VOP3__V_MIN_I32::~Inst_VOP3__V_MIN_I32
~Inst_VOP3__V_MIN_I32()
Definition: instructions.cc:23793
Gcn3ISA::Inst_DS__DS_XOR_RTN_B64::Inst_DS__DS_XOR_RTN_B64
Inst_DS__DS_XOR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33308
MipsISA::index
Bitfield< 30, 0 > index
Definition: pra_constants.hh:44
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21582
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36351
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F64::~Inst_VOPC__V_CMPX_NLG_F64
~Inst_VOPC__V_CMPX_NLG_F64()
Definition: instructions.cc:12344
Gcn3ISA::Inst_SOP2__S_LSHR_B64::Inst_SOP2__S_LSHR_B64
Inst_SOP2__S_LSHR_B64(InFmt_SOP2 *)
Definition: instructions.cc:986
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35260
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I16::~Inst_VOP3__V_CMPX_EQ_I16
~Inst_VOP3__V_CMPX_EQ_I16()
Definition: instructions.cc:20068
Gcn3ISA::Inst_VOP3__V_BFM_B32::~Inst_VOP3__V_BFM_B32
~Inst_VOP3__V_BFM_B32()
Definition: instructions.cc:30842
Gcn3ISA::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:34937
Gcn3ISA::Inst_VOP3__V_INTERP_P1_F32::Inst_VOP3__V_INTERP_P1_F32
Inst_VOP3__V_INTERP_P1_F32(InFmt_VOP3 *)
Definition: instructions.cc:29833
Gcn3ISA::Inst_SOP2__S_LSHL_B32::Inst_SOP2__S_LSHL_B32
Inst_SOP2__S_LSHL_B32(InFmt_SOP2 *)
Definition: instructions.cc:895
Gcn3ISA::Inst_DS__DS_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31162
Gcn3ISA::Inst_SOP2__S_XOR_B32::Inst_SOP2__S_XOR_B32
Inst_SOP2__S_XOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:535
Gcn3ISA::Inst_VOP3__V_ADD_U16::Inst_VOP3__V_ADD_U16
Inst_VOP3__V_ADD_U16(InFmt_VOP3 *)
Definition: instructions.cc:24642
Gcn3ISA::Inst_VOP1__V_CVT_F64_F32::~Inst_VOP1__V_CVT_F64_F32
~Inst_VOP1__V_CVT_F64_F32()
Definition: instructions.cc:7778
Gcn3ISA::InFmt_VOP_SDWA::CLAMP
unsigned int CLAMP
Definition: gpu_decoder.hh:1599
Gcn3ISA::Inst_VOP2__V_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5934
Gcn3ISA::Inst_VOP3__V_CMP_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19725
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL_O::~Inst_MIMG__IMAGE_GATHER4_CL_O
~Inst_MIMG__IMAGE_GATHER4_CL_O()
Definition: instructions.cc:39041
Gcn3ISA::Inst_VOP3__V_CMP_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16887
Gcn3ISA::Inst_SOP1__S_RFE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2689
Gcn3ISA::Inst_SOP1__S_MOVRELD_B64::Inst_SOP1__S_MOVRELD_B64
Inst_SOP1__S_MOVRELD_B64(InFmt_SOP1 *)
Definition: instructions.cc:3087
Gcn3ISA::Inst_SOP1__S_QUADMASK_B64::Inst_SOP1__S_QUADMASK_B64
Inst_SOP1__S_QUADMASK_B64(InFmt_SOP1 *)
Definition: instructions.cc:2979
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39985
Gcn3ISA::Inst_VOP3__V_MIN3_F32::~Inst_VOP3__V_MIN3_F32
~Inst_VOP3__V_MIN3_F32()
Definition: instructions.cc:28292
Gcn3ISA::Inst_SOPC__S_BITCMP0_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3521
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4887
Gcn3ISA::Inst_VOP3__V_CMP_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22198
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F64::~Inst_VOPC__V_CMPX_LE_F64
~Inst_VOPC__V_CMPX_LE_F64()
Definition: instructions.cc:12108
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37685
Gcn3ISA::Inst_SOPC__S_BITCMP1_B32::~Inst_SOPC__S_BITCMP1_B32
~Inst_SOPC__S_BITCMP1_B32()
Definition: instructions.cc:3541
Gcn3ISA::Inst_VOP1__V_CVT_F64_I32::~Inst_VOP1__V_CVT_F64_I32
~Inst_VOP1__V_CVT_F64_I32()
Definition: instructions.cc:7434
Gcn3ISA::ScalarOperand::rawDataPtr
void * rawDataPtr()
Definition: operand.hh:407
Gcn3ISA::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:38519
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37559
Gcn3ISA::Inst_VOP3__V_MUL_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23322
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::Inst_MIMG__IMAGE_ATOMIC_UMIN
Inst_MIMG__IMAGE_ATOMIC_UMIN(InFmt_MIMG *)
Definition: instructions.cc:38080
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10964
Gcn3ISA::Inst_VOP2__V_CNDMASK_B32::Inst_VOP2__V_CNDMASK_B32
Inst_VOP2__V_CNDMASK_B32(InFmt_VOP2 *)
Definition: instructions.cc:5415
Gcn3ISA::Inst_VOP3__V_CMPX_F_U64::~Inst_VOP3__V_CMPX_F_U64
~Inst_VOP3__V_CMPX_F_U64()
Definition: instructions.cc:22784
Gcn3ISA::Inst_VOP1__V_CVT_F16_U16::Inst_VOP1__V_CVT_F16_U16
Inst_VOP1__V_CVT_F16_U16(InFmt_VOP1 *)
Definition: instructions.cc:8974
Gcn3ISA::VecOperand::absModifier
void absModifier()
Definition: operand.hh:256
Gcn3ISA::Inst_DS__DS_MAX_I64::Inst_DS__DS_MAX_I64
Inst_DS__DS_MAX_I64(InFmt_DS *)
Definition: instructions.cc:32756
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::~Inst_MUBUF__BUFFER_STORE_FORMAT_XY
~Inst_MUBUF__BUFFER_STORE_FORMAT_XY()
Definition: instructions.cc:34658
Gcn3ISA::median
T median(T val_0, T val_1, T val_2)
Definition: inst_util.hh:247
Gcn3ISA::Inst_SOPC__S_BITCMP1_B64::Inst_SOPC__S_BITCMP1_B64
Inst_SOPC__S_BITCMP1_B64(InFmt_SOPC *)
Definition: instructions.cc:3587
Gcn3ISA::Inst_VOP3__V_MAX_I32::Inst_VOP3__V_MAX_I32
Inst_VOP3__V_MAX_I32(InFmt_VOP3 *)
Definition: instructions.cc:23828
Gcn3ISA::Inst_DS__DS_INC_SRC2_U64::Inst_DS__DS_INC_SRC2_U64
Inst_DS__DS_INC_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34191
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F64::Inst_VOPC__V_CMP_NLG_F64
Inst_VOPC__V_CMP_NLG_F64(InFmt_VOPC *)
Definition: instructions.cc:11819
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F32::~Inst_VOP3__V_CMPX_LT_F32
~Inst_VOP3__V_CMPX_LT_F32()
Definition: instructions.cc:17204
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F16::Inst_VOPC__V_CMPX_GT_F16
Inst_VOPC__V_CMPX_GT_F16(InFmt_VOPC *)
Definition: instructions.cc:10254
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33835
Gcn3ISA::Inst_VOP2__V_SUB_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5522
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25839
Gcn3ISA::Inst_VOP3__V_CMP_GE_F16::~Inst_VOP3__V_CMP_GE_F16
~Inst_VOP3__V_CMP_GE_F16()
Definition: instructions.cc:16135
Gcn3ISA::Inst_VOP3__V_INTERP_P1LV_F16::Inst_VOP3__V_INTERP_P1LV_F16
Inst_VOP3__V_INTERP_P1LV_F16(InFmt_VOP3 *)
Definition: instructions.cc:29906
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38548
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I32_F32::~Inst_VOP3__V_FREXP_EXP_I32_F32
~Inst_VOP3__V_FREXP_EXP_I32_F32()
Definition: instructions.cc:27092
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:33643
Gcn3ISA::Inst_SOP1__S_MOVRELD_B32::~Inst_SOP1__S_MOVRELD_B32
~Inst_SOP1__S_MOVRELD_B32()
Definition: instructions.cc:3067
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16539
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34820
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10087
Gcn3ISA::Inst_VOPC__V_CMPX_F_U32::Inst_VOPC__V_CMPX_F_U32
Inst_VOPC__V_CMPX_F_U32(InFmt_VOPC *)
Definition: instructions.cc:14221
Gcn3ISA::Inst_VOPC__V_CMP_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14805
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F64::~Inst_VOP3__V_DIV_FMAS_F64
~Inst_VOP3__V_DIV_FMAS_F64()
Definition: instructions.cc:29350
Gcn3ISA::InFmt_DS_1::ADDR
unsigned int ADDR
Definition: gpu_decoder.hh:1367
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX::~Inst_FLAT__FLAT_ATOMIC_SMAX
~Inst_FLAT__FLAT_ATOMIC_SMAX()
Definition: instructions.cc:40822
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34991
Gcn3ISA::Inst_VOP3__V_FFBH_I32::~Inst_VOP3__V_FFBH_I32
~Inst_VOP3__V_FFBH_I32()
Definition: instructions.cc:26931
Gcn3ISA::Inst_VOP2__V_MUL_LEGACY_F32::Inst_VOP2__V_MUL_LEGACY_F32
Inst_VOP2__V_MUL_LEGACY_F32(InFmt_VOP2 *)
Definition: instructions.cc:5573
Gcn3ISA::InFmt_SOPP
Definition: gpu_decoder.hh:1520
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I16::~Inst_VOP3__V_CMPX_GE_I16
~Inst_VOP3__V_CMPX_GE_I16()
Definition: instructions.cc:20240
Gcn3ISA::Inst_DS__DS_RSUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31018
Gcn3ISA::Inst_VOP3__V_ADD_U16::~Inst_VOP3__V_ADD_U16
~Inst_VOP3__V_ADD_U16()
Definition: instructions.cc:24648
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40551
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20117
Gcn3ISA::Inst_SOP1__S_MOV_FED_B32::~Inst_SOP1__S_MOV_FED_B32
~Inst_SOP1__S_MOV_FED_B32()
Definition: instructions.cc:3168
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12214
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37778
Wavefront::vecReads
std::vector< int > vecReads
Definition: wavefront.hh:268
Gcn3ISA::InFmt_VOP3_1::SRC2
unsigned int SRC2
Definition: gpu_decoder.hh:1562
Gcn3ISA::Inst_VOP1__V_FFBL_B32::~Inst_VOP1__V_FFBL_B32
~Inst_VOP1__V_FFBL_B32()
Definition: instructions.cc:8729
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37865
Gcn3ISA::Inst_VOP3__V_BFE_U32::Inst_VOP3__V_BFE_U32
Inst_VOP3__V_BFE_U32(InFmt_VOP3 *)
Definition: instructions.cc:27884
Gcn3ISA::Inst_DS__DS_READ_U8::Inst_DS__DS_READ_U8
Inst_DS__DS_READ_U8(InFmt_DS *)
Definition: instructions.cc:32244
Gcn3ISA::Inst_VOP3__V_CMPX_T_U16::~Inst_VOP3__V_CMPX_T_U16
~Inst_VOP3__V_CMPX_T_U16()
Definition: instructions.cc:20597
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::~Inst_FLAT__FLAT_LOAD_USHORT
~Inst_FLAT__FLAT_LOAD_USHORT()
Definition: instructions.cc:39495
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33375
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16196
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U32::~Inst_VOPC__V_CMPX_EQ_U32
~Inst_VOPC__V_CMPX_EQ_U32()
Definition: instructions.cc:14286
Gcn3ISA::Inst_DS__DS_ORDERED_COUNT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34129
Gcn3ISA::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:4411
Gcn3ISA::Inst_DS__DS_SUB_U32::Inst_DS__DS_SUB_U32
Inst_DS__DS_SUB_U32(InFmt_DS *)
Definition: instructions.cc:30986
Gcn3ISA::Inst_VOP2__V_MAC_F16::~Inst_VOP2__V_MAC_F16
~Inst_VOP2__V_MAC_F16()
Definition: instructions.cc:6819
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F16::Inst_VOP3__V_CMP_TRU_F16
Inst_VOP3__V_CMP_TRU_F16(InFmt_VOP3 *)
Definition: instructions.cc:16296
Gcn3ISA::Inst_VOPC__V_CMP_LE_U16::Inst_VOPC__V_CMP_LE_U16
Inst_VOPC__V_CMP_LE_U16(InFmt_VOPC *)
Definition: instructions.cc:12857
Gcn3ISA::Inst_SOP2__S_NAND_B32::Inst_SOP2__S_NAND_B32
Inst_SOP2__S_NAND_B32(InFmt_SOP2 *)
Definition: instructions.cc:715
Gcn3ISA::Inst_SOPP__S_SENDMSG::~Inst_SOPP__S_SENDMSG
~Inst_SOPP__S_SENDMSG()
Definition: instructions.cc:4204
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ()
Definition: instructions.cc:34688
Gcn3ISA::Inst_VOP2__V_ADD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6886
Gcn3ISA::Inst_SOPC__S_BITCMP1_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3599
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B_O::~Inst_MIMG__IMAGE_SAMPLE_C_B_O
~Inst_MIMG__IMAGE_SAMPLE_C_B_O()
Definition: instructions.cc:38776
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34985
Gcn3ISA::Inst_VOP2__V_SUB_U32::~Inst_VOP2__V_SUB_U32
~Inst_VOP2__V_SUB_U32()
Definition: instructions.cc:6539
Gcn3ISA::Inst_VOP3__V_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20784
Gcn3ISA::Inst_SOPC__S_CMP_GE_I32::Inst_SOPC__S_CMP_GE_I32
Inst_SOPC__S_CMP_GE_I32(InFmt_SOPC *)
Definition: instructions.cc:3275
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F16::~Inst_VOPC__V_CMPX_CLASS_F16
~Inst_VOPC__V_CMPX_CLASS_F16()
Definition: instructions.cc:9870
Gcn3ISA::ScalarRegI64
int64_t ScalarRegI64
Definition: registers.hh:158
Gcn3ISA::Inst_DS__DS_CMPST_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31429
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34675
Gcn3ISA::Inst_SOP2__S_ORN2_B64::~Inst_SOP2__S_ORN2_B64
~Inst_SOP2__S_ORN2_B64()
Definition: instructions.cc:691
Gcn3ISA::Inst_VOP3__V_LOG_F32::~Inst_VOP3__V_LOG_F32
~Inst_VOP3__V_LOG_F32()
Definition: instructions.cc:26382
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I64::~Inst_VOPC__V_CMP_EQ_I64
~Inst_VOPC__V_CMP_EQ_I64()
Definition: instructions.cc:14530
Gcn3ISA::Inst_VOP3__V_BFREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26832
Gcn3ISA::Inst_VOP3__V_SAD_HI_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28789
Gcn3ISA::Inst_VOP3__V_CMP_T_I16::~Inst_VOP3__V_CMP_T_I16
~Inst_VOP3__V_CMP_T_I16()
Definition: instructions.cc:19666
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F32::Inst_VOPC__V_CMPX_TRU_F32
Inst_VOPC__V_CMPX_TRU_F32(InFmt_VOPC *)
Definition: instructions.cc:11473
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I16::Inst_VOP3__V_CMPX_LT_I16
Inst_VOP3__V_CMPX_LT_I16(InFmt_VOP3 *)
Definition: instructions.cc:20018
Gcn3ISA::Inst_DS__DS_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31090
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F32::~Inst_VOPC__V_CMPX_NLG_F32
~Inst_VOPC__V_CMPX_NLG_F32()
Definition: instructions.cc:11315
Gcn3ISA::Inst_VOP2__V_SUB_F32::Inst_VOP2__V_SUB_F32
Inst_VOP2__V_SUB_F32(InFmt_VOP2 *)
Definition: instructions.cc:5509
Gcn3ISA::Inst_VOP2__V_MADMK_F16::~Inst_VOP2__V_MADMK_F16
~Inst_VOP2__V_MADMK_F16()
Definition: instructions.cc:6838
Gcn3ISA::Inst_VOPC__V_CMP_LE_F64::Inst_VOPC__V_CMP_LE_F64
Inst_VOPC__V_CMP_LE_F64(InFmt_VOPC *)
Definition: instructions.cc:11592
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B64::Inst_SOP1__S_BCNT0_I32_B64
Inst_SOP1__S_BCNT0_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2163
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U32::~Inst_VOP3__V_CMPX_LT_U32
~Inst_VOP3__V_CMPX_LT_U32()
Definition: instructions.cc:21576
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::~Inst_MIMG__IMAGE_SAMPLE_D_CL
~Inst_MIMG__IMAGE_SAMPLE_D_CL()
Definition: instructions.cc:38346
Gcn3ISA::InFmt_MUBUF::OFFEN
unsigned int OFFEN
Definition: gpu_decoder.hh:1457
Gcn3ISA::Inst_VOP3__V_INTERP_P1LL_F16::~Inst_VOP3__V_INTERP_P1LL_F16
~Inst_VOP3__V_INTERP_P1LL_F16()
Definition: instructions.cc:29895
Gcn3ISA::Inst_VOP3__V_SUBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24366
Gcn3ISA::Inst_VOPC__V_CMP_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12931
Gcn3ISA::Inst_VOP3__V_CMP_GT_I16::~Inst_VOP3__V_CMP_GT_I16
~Inst_VOP3__V_CMP_GT_I16()
Definition: instructions.cc:19541
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F32::Inst_VOPC__V_CMP_NGE_F32
Inst_VOPC__V_CMP_NGE_F32(InFmt_VOPC *)
Definition: instructions.cc:10758
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::Inst_MUBUF__BUFFER_ATOMIC_ADD
Inst_MUBUF__BUFFER_ATOMIC_ADD(InFmt_MUBUF *)
Definition: instructions.cc:36474
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F32::~Inst_VOP3__V_CMPX_NEQ_F32
~Inst_VOP3__V_CMPX_NEQ_F32()
Definition: instructions.cc:17618
Gcn3ISA::Inst_VOP1__V_CVT_F16_U16::~Inst_VOP1__V_CVT_F16_U16
~Inst_VOP1__V_CVT_F16_U16()
Definition: instructions.cc:8981
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F32::~Inst_VOP3__V_INTERP_P2_F32
~Inst_VOP3__V_INTERP_P2_F32()
Definition: instructions.cc:29858
Gcn3ISA::Inst_VOP1__V_CVT_F16_F32::~Inst_VOP1__V_CVT_F16_F32
~Inst_VOP1__V_CVT_F16_F32()
Definition: instructions.cc:7632
Gcn3ISA::Inst_VOP3__V_CMP_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21130
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U64::Inst_DS__DS_ADD_SRC2_U64
Inst_DS__DS_ADD_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34134
Gcn3ISA::Inst_VOPC__V_CMP_GE_I16::Inst_VOPC__V_CMP_GE_I16
Inst_VOPC__V_CMP_GE_I16(InFmt_VOPC *)
Definition: instructions.cc:12712
Gcn3ISA::Inst_DS__DS_WRITE2_B64::Inst_DS__DS_WRITE2_B64
Inst_DS__DS_WRITE2_B64(InFmt_DS *)
Definition: instructions.cc:32942
Gcn3ISA::Inst_VOP3__V_CVT_F16_F32::~Inst_VOP3__V_CVT_F16_F32
~Inst_VOP3__V_CVT_F16_F32()
Definition: instructions.cc:25533
Gcn3ISA::InFmt_MUBUF_1::SRSRC
unsigned int SRSRC
Definition: gpu_decoder.hh:1471
warn_once
#define warn_once(...)
Definition: logging.hh:243
Gcn3ISA::Inst_VOP3__V_CVT_F32_I32::~Inst_VOP3__V_CVT_F32_I32
~Inst_VOP3__V_CVT_F32_I32()
Definition: instructions.cc:25323
ComputeUnit::completedWGs
Stats::Scalar completedWGs
Definition: compute_unit.hh:605
Gcn3ISA::Inst_VOPC__V_CMP_U_F16::~Inst_VOPC__V_CMP_U_F16
~Inst_VOPC__V_CMP_U_F16()
Definition: instructions.cc:10045
ArmISA::i
Bitfield< 7 > i
Definition: miscregs_types.hh:63
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F16::~Inst_VOPC__V_CMP_NLE_F16
~Inst_VOPC__V_CMP_NLE_F16()
Definition: instructions.cc:10117
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::~Inst_MUBUF__BUFFER_WBINVL1_VOL
~Inst_MUBUF__BUFFER_WBINVL1_VOL()
Definition: instructions.cc:36377
Gcn3ISA::Inst_VOP2__V_MUL_F32::~Inst_VOP2__V_MUL_F32
~Inst_VOP2__V_MUL_F32()
Definition: instructions.cc:5612
Gcn3ISA::Inst_DS__DS_OR_B32::~Inst_DS__DS_OR_B32
~Inst_DS__DS_OR_B32()
Definition: instructions.cc:31154
Gcn3ISA::Inst_VOP3__V_CVT_I16_F16::Inst_VOP3__V_CVT_I16_F16
Inst_VOP3__V_CVT_I16_F16(InFmt_VOP3 *)
Definition: instructions.cc:27244
Gcn3ISA::Inst_VOP2__V_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6027
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40648
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38730
Gcn3ISA::Inst_VOP1__V_CVT_F32_I32::Inst_VOP1__V_CVT_F32_I32
Inst_VOP1__V_CVT_F32_I32(InFmt_VOP1 *)
Definition: instructions.cc:7457
Gcn3ISA::Inst_VOP2__V_MUL_LO_U16::~Inst_VOP2__V_MUL_LO_U16
~Inst_VOP2__V_MUL_LO_U16()
Definition: instructions.cc:6973
Gcn3ISA::Inst_SOPP__S_TRAP::~Inst_SOPP__S_TRAP
~Inst_SOPP__S_TRAP()
Definition: instructions.cc:4234
Gcn3ISA::Inst_VOP3__V_MAX_F32::~Inst_VOP3__V_MAX_F32
~Inst_VOP3__V_MAX_F32()
Definition: instructions.cc:23740
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F32::~Inst_VOPC__V_CMPX_NGE_F32
~Inst_VOPC__V_CMPX_NGE_F32()
Definition: instructions.cc:11282
Gcn3ISA::Inst_VOP2__V_SUBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6586
Gcn3ISA::Inst_VOP3__V_CMP_NE_U16::~Inst_VOP3__V_CMP_NE_U16
~Inst_VOP3__V_CMP_NE_U16()
Definition: instructions.cc:19887
Gcn3ISA::Inst_VOP3__V_FLOOR_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27419
Gcn3ISA::Inst_SOPP__S_BRANCH::~Inst_SOPP__S_BRANCH
~Inst_SOPP__S_BRANCH()
Definition: instructions.cc:3870
Gcn3ISA::Inst_VOP3__V_MAX_I16::Inst_VOP3__V_MAX_I16
Inst_VOP3__V_MAX_I16(InFmt_VOP3 *)
Definition: instructions.cc:25020
Gcn3ISA::Inst_SOP1__S_WQM_B64::Inst_SOP1__S_WQM_B64
Inst_SOP1__S_WQM_B64(InFmt_SOP1 *)
Definition: instructions.cc:2059
Gcn3ISA::Inst_DS__DS_SUB_RTN_U32::Inst_DS__DS_SUB_RTN_U32
Inst_DS__DS_SUB_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31647
Gcn3ISA::Inst_DS__DS_INC_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33176
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U32::Inst_VOP3__V_CMPX_LE_U32
Inst_VOP3__V_CMPX_LE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21655
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F64::~Inst_VOP3__V_CMPX_LG_F64
~Inst_VOP3__V_CMPX_LG_F64()
Definition: instructions.cc:18795
Gcn3ISA::Inst_VOP2__V_SUBB_U32::~Inst_VOP2__V_SUBB_U32
~Inst_VOP2__V_SUBB_U32()
Definition: instructions.cc:6661
Gcn3ISA::Inst_SOP1__S_FF0_I32_B64::~Inst_SOP1__S_FF0_I32_B64
~Inst_SOP1__S_FF0_I32_B64()
Definition: instructions.cc:2279
Gcn3ISA::Inst_VOP3__V_LOG_F16::~Inst_VOP3__V_LOG_F16
~Inst_VOP3__V_LOG_F16()
Definition: instructions.cc:27332
Gcn3ISA::Inst_SOPC__S_CMP_LE_I32::Inst_SOPC__S_CMP_LE_I32
Inst_SOPC__S_CMP_LE_I32(InFmt_SOPC *)
Definition: instructions.cc:3327
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33434
Gcn3ISA::Inst_VOP3__V_CMP_T_U32::~Inst_VOP3__V_CMP_T_U32
~Inst_VOP3__V_CMP_T_U32()
Definition: instructions.cc:21207
Gcn3ISA::Inst_VOP2__V_ASHRREV_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6091
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F32::~Inst_VOPC__V_CMPX_NLT_F32
~Inst_VOPC__V_CMPX_NLT_F32()
Definition: instructions.cc:11447
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16615
Gcn3ISA::Inst_SOPP__S_SETPRIO::Inst_SOPP__S_SETPRIO
Inst_SOPP__S_SETPRIO(InFmt_SOPP *)
Definition: instructions.cc:4182
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34762
Gcn3ISA::Inst_VOPC__V_CMP_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14691
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22590
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_OR::Inst_MIMG__IMAGE_ATOMIC_OR
Inst_MIMG__IMAGE_ATOMIC_OR(InFmt_MIMG *)
Definition: instructions.cc:38187
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F32::Inst_VOPC__V_CMP_EQ_F32
Inst_VOPC__V_CMP_EQ_F32(InFmt_VOPC *)
Definition: instructions.cc:10531
Gcn3ISA::Inst_SOPK__S_GETREG_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1795
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I64::Inst_VOP3__V_CMPX_GE_I64
Inst_VOP3__V_CMPX_GE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22706
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39299
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37333
Gcn3ISA::Inst_VOP3__V_MIN_F16::~Inst_VOP3__V_MIN_F16
~Inst_VOP3__V_MIN_F16()
Definition: instructions.cc:24962
Gcn3ISA::Inst_SOP2__S_SUB_U32::~Inst_SOP2__S_SUB_U32
~Inst_SOP2__S_SUB_U32()
Definition: instructions.cc:86
Gcn3ISA::Inst_DS__DS_READ_B96::Inst_DS__DS_READ_B96
Inst_DS__DS_READ_B96(InFmt_DS *)
Definition: instructions.cc:34463
Gcn3ISA::Inst_VOP2__V_MUL_HI_U32_U24::~Inst_VOP2__V_MUL_HI_U32_U24
~Inst_VOP2__V_MUL_HI_U32_U24()
Definition: instructions.cc:5831
Gcn3ISA::Inst_VOP3__V_CMP_GE_F64::~Inst_VOP3__V_CMP_GE_F64
~Inst_VOP3__V_CMP_GE_F64()
Definition: instructions.cc:18018
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I32::Inst_VOP3__V_CMPX_NE_I32
Inst_VOP3__V_CMPX_NE_I32(InFmt_VOP3 *)
Definition: instructions.cc:21427
Gcn3ISA::Inst_VOP1__V_CVT_I32_F64::~Inst_VOP1__V_CVT_I32_F64
~Inst_VOP1__V_CVT_I32_F64()
Definition: instructions.cc:7390
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
Inst_MUBUF__BUFFER_ATOMIC_DEC_X2(InFmt_MUBUF *)
Definition: instructions.cc:37098
ComputeUnit::incNumAtBarrier
void incNumAtBarrier(int bar_id)
Definition: compute_unit.cc:645
Gcn3ISA::Inst_VOPC__V_CMP_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11669
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B32::Inst_DS__DS_XOR_SRC2_B32
Inst_DS__DS_XOR_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:33897
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I64::Inst_VOPC__V_CMPX_GE_I64
Inst_VOPC__V_CMPX_GE_I64(InFmt_VOPC *)
Definition: instructions.cc:15130
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5035
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_O::Inst_MIMG__IMAGE_GATHER4_C_O
Inst_MIMG__IMAGE_GATHER4_C_O(InFmt_MIMG *)
Definition: instructions.cc:39119
Gcn3ISA::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:37505
Gcn3ISA::Inst_DS__DS_DEC_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33195
Gcn3ISA::Inst_SOP2__S_AND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:458
Gcn3ISA::Inst_DS__DS_CMPST_B32::Inst_DS__DS_CMPST_B32
Inst_DS__DS_CMPST_B32(InFmt_DS *)
Definition: instructions.cc:31392
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U16::~Inst_VOPC__V_CMP_EQ_U16
~Inst_VOPC__V_CMP_EQ_U16()
Definition: instructions.cc:12832
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::Inst_FLAT__FLAT_ATOMIC_INC
Inst_FLAT__FLAT_ATOMIC_INC(InFmt_FLAT *)
Definition: instructions.cc:40935
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16634
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U32::Inst_DS__DS_DEC_SRC2_U32
Inst_DS__DS_DEC_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33763
Gcn3ISA::Inst_DS__DS_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31072
Gcn3ISA::Inst_DS__DS_WRITE_B8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31554
Gcn3ISA::Inst_VOP3__V_CMP_LE_I64::Inst_VOP3__V_CMP_LE_I64
Inst_VOP3__V_CMP_LE_I64(InFmt_VOP3 *)
Definition: instructions.cc:21965
Gcn3ISA::Inst_VOP2__V_SUB_U16::~Inst_VOP2__V_SUB_U16
~Inst_VOP2__V_SUB_U16()
Definition: instructions.cc:6911
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15228
Gcn3ISA::Inst_VOPC__V_CMP_LG_F64::~Inst_VOPC__V_CMP_LG_F64
~Inst_VOPC__V_CMP_LG_F64()
Definition: instructions.cc:11663
Gcn3ISA::Inst_VOP2__V_MIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7124
Gcn3ISA::Inst_SOP1__S_FF1_I32_B32::Inst_SOP1__S_FF1_I32_B32
Inst_SOP1__S_FF1_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2299
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F32::~Inst_VOP3__V_CMPX_NLE_F32
~Inst_VOP3__V_CMPX_NLE_F32()
Definition: instructions.cc:17584
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND::Inst_MUBUF__BUFFER_ATOMIC_AND
Inst_MUBUF__BUFFER_ATOMIC_AND(InFmt_MUBUF *)
Definition: instructions.cc:36636
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::Inst_FLAT__FLAT_STORE_DWORDX4
Inst_FLAT__FLAT_STORE_DWORDX4(InFmt_FLAT *)
Definition: instructions.cc:40264
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F64::~Inst_DS__DS_MIN_SRC2_F64
~Inst_DS__DS_MIN_SRC2_F64()
Definition: instructions.cc:34391
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14774
Gcn3ISA::Inst_VOP3__V_ASHRREV_I32::Inst_VOP3__V_ASHRREV_I32
Inst_VOP3__V_ASHRREV_I32(InFmt_VOP3 *)
Definition: instructions.cc:23993
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::Inst_MUBUF__BUFFER_LOAD_FORMAT_X
Inst_MUBUF__BUFFER_LOAD_FORMAT_X(InFmt_MUBUF *)
Definition: instructions.cc:34500
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F32::Inst_VOP3__V_CMP_NEQ_F32
Inst_VOP3__V_CMP_NEQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:17073
Gcn3ISA::Inst_VOP1__V_LOG_LEGACY_F32::~Inst_VOP1__V_LOG_LEGACY_F32
~Inst_VOP1__V_LOG_LEGACY_F32()
Definition: instructions.cc:9358
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN::~Inst_FLAT__FLAT_ATOMIC_SMIN
~Inst_FLAT__FLAT_ATOMIC_SMIN()
Definition: instructions.cc:40772
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37465
Gcn3ISA::Inst_VOP3__V_CVT_U32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25409
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U32::~Inst_VOPC__V_CMPX_GT_U32
~Inst_VOPC__V_CMPX_GT_U32()
Definition: instructions.cc:14350
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10868
Gcn3ISA::InstFormat::imm_f32
float imm_f32
Definition: gpu_decoder.hh:1643
Gcn3ISA::Inst_VOP3__V_TRUNC_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26007
Gcn3ISA::InFmt_VOP3_SDST_ENC::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1569
Gcn3ISA::Inst_VOP3__V_CVT_PK_U8_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28932
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11453
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::~Inst_MUBUF__BUFFER_LOAD_DWORD
~Inst_MUBUF__BUFFER_LOAD_DWORD()
Definition: instructions.cc:35277
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32::~Inst_VOP3__V_MUL_HI_I32
~Inst_VOP3__V_MUL_HI_I32()
Definition: instructions.cc:30398
Gcn3ISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::Inst_SOP1__S_ORN2_SAVEEXEC_B64
Inst_SOP1__S_ORN2_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2822
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35129
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX::Inst_FLAT__FLAT_ATOMIC_UMAX
Inst_FLAT__FLAT_ATOMIC_UMAX(InFmt_FLAT *)
Definition: instructions.cc:40835
Gcn3ISA::Inst_VOPC__V_CMP_U_F16::Inst_VOPC__V_CMP_U_F16
Inst_VOPC__V_CMP_U_F16(InFmt_VOPC *)
Definition: instructions.cc:10038
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B::Inst_MIMG__IMAGE_GATHER4_C_B
Inst_MIMG__IMAGE_GATHER4_C_B(InFmt_MIMG *)
Definition: instructions.cc:38967
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10069
Gcn3ISA::Inst_VOP3__V_CUBEID_F32::~Inst_VOP3__V_CUBEID_F32
~Inst_VOP3__V_CUBEID_F32()
Definition: instructions.cc:27823
Gcn3ISA::Inst_VOP3__V_MUL_U32_U24::Inst_VOP3__V_MUL_U32_U24
Inst_VOP3__V_MUL_U32_U24(InFmt_VOP3 *)
Definition: instructions.cc:23595
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35905
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40180
Gcn3ISA::Inst_VOP3__V_SUBREV_U32::Inst_VOP3__V_SUBREV_U32
Inst_VOP3__V_SUBREV_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24349
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I64::Inst_VOP3__V_CMPX_LT_I64
Inst_VOP3__V_CMPX_LT_I64(InFmt_VOP3 *)
Definition: instructions.cc:22491
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::Inst_MIMG__IMAGE_STORE_MIP
Inst_MIMG__IMAGE_STORE_MIP(InFmt_MIMG *)
Definition: instructions.cc:37841
Gcn3ISA::Inst_VOPC__V_CMP_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10485
Gcn3ISA::Inst_VOP2__V_SUBREV_F32::~Inst_VOP2__V_SUBREV_F32
~Inst_VOP2__V_SUBREV_F32()
Definition: instructions.cc:5548
Gcn3ISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::~Inst_SOP1__S_NOR_SAVEEXEC_B64
~Inst_SOP1__S_NOR_SAVEEXEC_B64()
Definition: instructions.cc:2893
Gcn3ISA::Inst_SOP1__S_FF1_I32_B64::~Inst_SOP1__S_FF1_I32_B64
~Inst_SOP1__S_FF1_I32_B64()
Definition: instructions.cc:2331
Gcn3ISA::Inst_DS__DS_MAX_U32::Inst_DS__DS_MAX_U32
Inst_DS__DS_MAX_U32(InFmt_DS *)
Definition: instructions.cc:31113
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B64::~Inst_DS__DS_WRXCHG_RTN_B64
~Inst_DS__DS_WRXCHG_RTN_B64()
Definition: instructions.cc:33350
Gcn3ISA::Inst_VOP3__V_LSHRREV_B16::Inst_VOP3__V_LSHRREV_B16
Inst_VOP3__V_LSHRREV_B16(InFmt_VOP3 *)
Definition: instructions.cc:24847
Gcn3ISA::Inst_VOP3__V_EXP_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27545
Gcn3ISA::Inst_VOP3__V_CVT_U16_F16::Inst_VOP3__V_CVT_U16_F16
Inst_VOP3__V_CVT_U16_F16(InFmt_VOP3 *)
Definition: instructions.cc:27226
Gcn3ISA::Inst_VOP3__V_CMP_LT_U64::Inst_VOP3__V_CMP_LT_U64
Inst_VOP3__V_CMP_LT_U64(InFmt_VOP3 *)
Definition: instructions.cc:22185
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::Inst_MUBUF__BUFFER_LOAD_DWORDX2
Inst_MUBUF__BUFFER_LOAD_DWORDX2(InFmt_MUBUF *)
Definition: instructions.cc:35365
Gcn3ISA::Inst_SOPK__S_CMPK_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1470
Gcn3ISA::Inst_VOP3__V_CMP_LT_F16::~Inst_VOP3__V_CMP_LT_F16
~Inst_VOP3__V_CMP_LT_F16()
Definition: instructions.cc:16040
Gcn3ISA::Inst_VOP3__V_CMP_LE_U64::~Inst_VOP3__V_CMP_LE_U64
~Inst_VOP3__V_CMP_LE_U64()
Definition: instructions.cc:22276
Gcn3ISA::Inst_VOPC__V_CMP_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14867
Gcn3ISA::Inst_VOP3__V_CMP_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19935
Gcn3ISA::Inst_VOPC__V_CMP_GE_F16::~Inst_VOPC__V_CMP_GE_F16
~Inst_VOPC__V_CMP_GE_F16()
Definition: instructions.cc:10009
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U16::~Inst_VOPC__V_CMPX_LT_U16
~Inst_VOPC__V_CMPX_LT_U16()
Definition: instructions.cc:13286
Gcn3ISA::Inst_DS__DS_READ_I8::Inst_DS__DS_READ_I8
Inst_DS__DS_READ_I8(InFmt_DS *)
Definition: instructions.cc:32225
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41513
Gcn3ISA::Inst_DS__DS_XOR_RTN_B32::~Inst_DS__DS_XOR_RTN_B32
~Inst_DS__DS_XOR_RTN_B32()
Definition: instructions.cc:31832
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15292
Gcn3ISA::Inst_VOPC__V_CMPX_O_F64::Inst_VOPC__V_CMPX_O_F64
Inst_VOPC__V_CMPX_O_F64(InFmt_VOPC *)
Definition: instructions.cc:12234
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38879
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14292
Gcn3ISA::Inst_SOP1__S_BITSET1_B32::~Inst_SOP1__S_BITSET1_B32
~Inst_SOP1__S_BITSET1_B32()
Definition: instructions.cc:2561
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4654
Gcn3ISA::Inst_VOP3__V_SUBBREV_U32::Inst_VOP3__V_SUBBREV_U32
Inst_VOP3__V_SUBBREV_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24499
Gcn3ISA::Inst_VOP3__V_SUBB_U32::~Inst_VOP3__V_SUBB_U32
~Inst_VOP3__V_SUBB_U32()
Definition: instructions.cc:24456
Gcn3ISA::Inst_VOP3__V_CVT_PKACCUM_U8_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29828
Gcn3ISA::Inst_SOP2__S_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:252
Gcn3ISA::Inst_DS__DS_MIN_RTN_F64::Inst_DS__DS_MIN_RTN_F64
Inst_DS__DS_MIN_RTN_F64(InFmt_DS *)
Definition: instructions.cc:33439
Gcn3ISA::Inst_VOP3__V_CLREXCP::Inst_VOP3__V_CLREXCP
Inst_VOP3__V_CLREXCP(InFmt_VOP3 *)
Definition: instructions.cc:27175
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14982
Gcn3ISA::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:39362
Gcn3ISA::Inst_VOPC__V_CMP_GT_F64::Inst_VOPC__V_CMP_GT_F64
Inst_VOPC__V_CMP_GT_F64(InFmt_VOPC *)
Definition: instructions.cc:11624
Gcn3ISA::InFmt_VOP2::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1545
Gcn3ISA::Inst_VOP3__V_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25209
Gcn3ISA::Inst_SOPP__S_ENDPGM_SAVED::~Inst_SOPP__S_ENDPGM_SAVED
~Inst_SOPP__S_ENDPGM_SAVED()
Definition: instructions.cc:4381
Gcn3ISA::Inst_DS__DS_WRITE_B8::~Inst_DS__DS_WRITE_B8
~Inst_DS__DS_WRITE_B8()
Definition: instructions.cc:31516
Gcn3ISA::Inst_SOP1__S_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1986
Gcn3ISA::Inst_SOP2__S_BFE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1275
Gcn3ISA::Inst_DS__DS_RSUB_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32696
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9167
Gcn3ISA::InFmt_VOP3_1::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1560
Gcn3ISA::Inst_SOP1__S_FLBIT_I32::~Inst_SOP1__S_FLBIT_I32
~Inst_SOP1__S_FLBIT_I32()
Definition: instructions.cc:2409
Gcn3ISA::Inst_VOP3__V_FRACT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27058
Gcn3ISA::Inst_VOPC__V_CMPX_F_U64::~Inst_VOPC__V_CMPX_F_U64
~Inst_VOPC__V_CMPX_F_U64()
Definition: instructions.cc:15195
Gcn3ISA::Inst_SOP2__S_CSELECT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:371
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::~Inst_MUBUF__BUFFER_STORE_DWORD
~Inst_MUBUF__BUFFER_STORE_DWORD()
Definition: instructions.cc:35899
Gcn3ISA::Inst_DS__DS_AND_RTN_B32::Inst_DS__DS_AND_RTN_B32
Inst_DS__DS_AND_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31791
Gcn3ISA::Inst_DS__DS_READ_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32258
Gcn3ISA::Inst_SOPP__S_ENDPGM_SAVED::Inst_SOPP__S_ENDPGM_SAVED
Inst_SOPP__S_ENDPGM_SAVED(InFmt_SOPP *)
Definition: instructions.cc:4376
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16596
Gcn3ISA::Inst_VOPC__V_CMP_GT_I32::Inst_VOPC__V_CMP_GT_I32
Inst_VOPC__V_CMP_GT_I32(InFmt_VOPC *)
Definition: instructions.cc:13618
Gcn3ISA::Inst_DS__DS_READ_U16::Inst_DS__DS_READ_U16
Inst_DS__DS_READ_U16(InFmt_DS *)
Definition: instructions.cc:32325
Gcn3ISA::Inst_VOPC__V_CMP_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14567
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F64::~Inst_VOPC__V_CMP_EQ_F64
~Inst_VOPC__V_CMP_EQ_F64()
Definition: instructions.cc:11567
Gcn3ISA::Inst_VOP3__V_CMPX_O_F32::~Inst_VOP3__V_CMPX_O_F32
~Inst_VOP3__V_CMPX_O_F32()
Definition: instructions.cc:17409
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F32::Inst_VOP3__V_CMPX_LE_F32
Inst_VOP3__V_CMPX_LE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17264
Gcn3ISA::InFmt_VOP3::ABS
unsigned int ABS
Definition: gpu_decoder.hh:1552
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::~Inst_MTBUF__TBUFFER_STORE_FORMAT_X
~Inst_MTBUF__TBUFFER_STORE_FORMAT_X()
Definition: instructions.cc:37255
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ(InFmt_MTBUF *)
Definition: instructions.cc:37186
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL::~Inst_MIMG__IMAGE_GATHER4_C_B_CL
~Inst_MIMG__IMAGE_GATHER4_C_B_CL()
Definition: instructions.cc:38991
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1570
Gcn3ISA::Inst_DS__DS_MIN_I32::~Inst_DS__DS_MIN_I32
~Inst_DS__DS_MIN_I32()
Definition: instructions.cc:31064
Gcn3ISA::Inst_VOP2__V_MADMK_F32::Inst_VOP2__V_MADMK_F32
Inst_VOP2__V_MADMK_F32(InFmt_VOP2 *)
Definition: instructions.cc:6380
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::~Inst_FLAT__FLAT_ATOMIC_AND_X2
~Inst_FLAT__FLAT_ATOMIC_AND_X2()
Definition: instructions.cc:41583
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2(InFmt_MUBUF *)
Definition: instructions.cc:36798
Gcn3ISA::Inst_SOP1__S_QUADMASK_B32::~Inst_SOP1__S_QUADMASK_B32
~Inst_SOP1__S_QUADMASK_B32()
Definition: instructions.cc:2956
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34898
Gcn3ISA::Inst_SOP2__S_ASHR_I64::~Inst_SOP2__S_ASHR_I64
~Inst_SOP2__S_ASHR_I64()
Definition: instructions.cc:1054
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33778
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4::~Inst_MIMG__IMAGE_GATHER4
~Inst_MIMG__IMAGE_GATHER4()
Definition: instructions.cc:38826
Gcn3ISA::Inst_VOP2__V_MAX_I16::Inst_VOP2__V_MAX_I16
Inst_VOP2__V_MAX_I16(InFmt_VOP2 *)
Definition: instructions.cc:7160
Gcn3ISA::Inst_VOP3__V_CMPX_O_F16::~Inst_VOP3__V_CMPX_O_F16
~Inst_VOP3__V_CMPX_O_F16()
Definition: instructions.cc:16474
Gcn3ISA::Inst_VOP3__V_CMP_GT_F64::~Inst_VOP3__V_CMP_GT_F64
~Inst_VOP3__V_CMP_GT_F64()
Definition: instructions.cc:17907
Gcn3ISA::Inst_VOP3__V_SQRT_F64::Inst_VOP3__V_SQRT_F64
Inst_VOP3__V_SQRT_F64(InFmt_VOP3 *)
Definition: instructions.cc:26671
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F32::~Inst_VOP3__V_CMPX_LG_F32
~Inst_VOP3__V_CMPX_LG_F32()
Definition: instructions.cc:17340
Gcn3ISA::Inst_VOP3__V_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23881
Gcn3ISA::Inst_VOP2__V_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6227
Gcn3ISA::Inst_VOP2__V_LSHRREV_B16::Inst_VOP2__V_LSHRREV_B16
Inst_VOP2__V_LSHRREV_B16(InFmt_VOP2 *)
Definition: instructions.cc:7029
Gcn3ISA::Inst_VOPC__V_CMP_LE_I16::~Inst_VOPC__V_CMP_LE_I16
~Inst_VOPC__V_CMP_LE_I16()
Definition: instructions.cc:12625
Gcn3ISA::countZeroBits
ScalarRegI32 countZeroBits(T val)
Definition: inst_util.hh:121
Gcn3ISA::Inst_SOP2__S_LSHR_B32::~Inst_SOP2__S_LSHR_B32
~Inst_SOP2__S_LSHR_B32()
Definition: instructions.cc:961
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ()
Definition: instructions.cc:34568
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F16::Inst_VOP3__V_CMP_CLASS_F16
Inst_VOP3__V_CMP_CLASS_F16(InFmt_VOP3 *)
Definition: instructions.cc:15951
Gcn3ISA::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:38769
Gcn3ISA::Inst_VOP3__V_CVT_U16_F16::~Inst_VOP3__V_CVT_U16_F16
~Inst_VOP3__V_CVT_U16_F16()
Definition: instructions.cc:27233
Gcn3ISA::Inst_VOP3__V_CVT_F16_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27203
Gcn3ISA::Inst_VOP2__V_MAX_F32::~Inst_VOP2__V_MAX_F32
~Inst_VOP2__V_MAX_F32()
Definition: instructions.cc:5897
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I16::~Inst_VOP3__V_CMP_EQ_I16
~Inst_VOP3__V_CMP_EQ_I16()
Definition: instructions.cc:19457
Gcn3ISA::Inst_VOPC__V_CMPX_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12248
Gcn3ISA::Inst_VOP1__V_CEIL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9226
Gcn3ISA::Inst_SOPC__S_CMP_GT_I32::~Inst_SOPC__S_CMP_GT_I32
~Inst_SOPC__S_CMP_GT_I32()
Definition: instructions.cc:3255
Gcn3ISA::Inst_VOPC__V_CMP_T_I16::Inst_VOPC__V_CMP_T_I16
Inst_VOPC__V_CMP_T_I16(InFmt_VOPC *)
Definition: instructions.cc:12743
ComputeUnit::numYetToReachBarrier
int numYetToReachBarrier(int bar_id)
Definition: compute_unit.cc:631
Gcn3ISA::Inst_VOP3__V_CUBETC_F32::~Inst_VOP3__V_CUBETC_F32
~Inst_VOP3__V_CUBETC_F32()
Definition: instructions.cc:27857
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U32::~Inst_VOPC__V_CMP_EQ_U32
~Inst_VOPC__V_CMP_EQ_U32()
Definition: instructions.cc:13800
Gcn3ISA::Inst_VOP3__V_CMP_NE_I64::~Inst_VOP3__V_CMP_NE_I64
~Inst_VOP3__V_CMP_NE_I64()
Definition: instructions.cc:22056
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10105
Gcn3ISA::Inst_VOP3__V_SIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26722
Gcn3ISA::Inst_VOP3__V_CMPX_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18973
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F16::~Inst_VOP3__V_CMPX_TRU_F16
~Inst_VOP3__V_CMPX_TRU_F16()
Definition: instructions.cc:16628
Gcn3ISA::Inst_VOPC__V_CMP_LT_F64::Inst_VOPC__V_CMP_LT_F64
Inst_VOPC__V_CMP_LT_F64(InFmt_VOPC *)
Definition: instructions.cc:11528
Gcn3ISA::Inst_VOPC__V_CMPX_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13238
Gcn3ISA::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:8883
Gcn3ISA::Inst_VOP1__V_TRUNC_F32::~Inst_VOP1__V_TRUNC_F32
~Inst_VOP1__V_TRUNC_F32()
Definition: instructions.cc:8155
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F64::~Inst_VOPC__V_CMPX_LG_F64
~Inst_VOPC__V_CMPX_LG_F64()
Definition: instructions.cc:12174
Gcn3ISA::Inst_SOP1__S_FLBIT_I32::Inst_SOP1__S_FLBIT_I32
Inst_SOP1__S_FLBIT_I32(InFmt_SOP1 *)
Definition: instructions.cc:2403
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F16::Inst_VOPC__V_CMPX_NGT_F16
Inst_VOPC__V_CMPX_NGT_F16(InFmt_VOPC *)
Definition: instructions.cc:10382
Gcn3ISA::Inst_SMEM__S_ATC_PROBE::~Inst_SMEM__S_ATC_PROBE
~Inst_SMEM__S_ATC_PROBE()
Definition: instructions.cc:5389
Gcn3ISA::Inst_VOP3__V_CMP_LE_I64::~Inst_VOP3__V_CMP_LE_I64
~Inst_VOP3__V_CMP_LE_I64()
Definition: instructions.cc:21972
Gcn3ISA::InFmt_DS_1::DATA1
unsigned int DATA1
Definition: gpu_decoder.hh:1369
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34225
Shader::prepareFlush
void prepareFlush(GPUDynInstPtr gpuDynInst)
dispatcher/shader arranges flush requests to the CUs
Definition: shader.cc:222
Gcn3ISA::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:9172
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F64::Inst_VOP3__V_CMP_NGT_F64
Inst_VOP3__V_CMP_NGT_F64(InFmt_VOP3 *)
Definition: instructions.cc:18286
Gcn3ISA::Inst_SOPC__S_BITCMP1_B32::Inst_SOPC__S_BITCMP1_B32
Inst_SOPC__S_BITCMP1_B32(InFmt_SOPC *)
Definition: instructions.cc:3535
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18244
Gcn3ISA::Inst_VOP1__V_SIN_F16::~Inst_VOP1__V_SIN_F16
~Inst_VOP1__V_SIN_F16()
Definition: instructions.cc:9292
Gcn3ISA::Inst_VOP1__V_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7620
Gcn3ISA::Inst_VOP1__V_FLOOR_F32::~Inst_VOP1__V_FLOOR_F32
~Inst_VOP1__V_FLOOR_F32()
Definition: instructions.cc:8245
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::Inst_MIMG__IMAGE_ATOMIC_SMIN
Inst_MIMG__IMAGE_ATOMIC_SMIN(InFmt_MIMG *)
Definition: instructions.cc:38053
Gcn3ISA::Inst_VINTRP__V_INTERP_P1_F32::Inst_VINTRP__V_INTERP_P1_F32
Inst_VINTRP__V_INTERP_P1_F32(InFmt_VINTRP *)
Definition: instructions.cc:15435
Gcn3ISA::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:38793
Gcn3ISA::Inst_VOP3__V_CMP_F_U32::~Inst_VOP3__V_CMP_F_U32
~Inst_VOP3__V_CMP_F_U32()
Definition: instructions.cc:20929
Gcn3ISA::Inst_VOP1__V_RSQ_F32::Inst_VOP1__V_RSQ_F32
Inst_VOP1__V_RSQ_F32(InFmt_VOP1 *)
Definition: instructions.cc:8388
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B::Inst_MIMG__IMAGE_SAMPLE_B
Inst_MIMG__IMAGE_SAMPLE_B(InFmt_MIMG *)
Definition: instructions.cc:38372
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F64::Inst_VOP3__V_CMP_NEQ_F64
Inst_VOP3__V_CMP_NEQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:18396
Gcn3ISA::Inst_SOP1__S_BITSET0_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2519
Gcn3ISA::Inst_DS__DS_ADD_SRC2_F32::Inst_DS__DS_ADD_SRC2_F32
Inst_DS__DS_ADD_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:33978
Gcn3ISA::Inst_VOP3__V_BFI_B32::Inst_VOP3__V_BFI_B32
Inst_VOP3__V_BFI_B32(InFmt_VOP3 *)
Definition: instructions.cc:27974
Gcn3ISA::Inst_VOP3__V_PERM_B32::Inst_VOP3__V_PERM_B32
Inst_VOP3__V_PERM_B32(InFmt_VOP3 *)
Definition: instructions.cc:29684
Gcn3ISA::Inst_VOP3__V_CMP_T_I64::Inst_VOP3__V_CMP_T_I64
Inst_VOP3__V_CMP_T_I64(InFmt_VOP3 *)
Definition: instructions.cc:22133
Gcn3ISA::Inst_VOP1__V_NOT_B32::~Inst_VOP1__V_NOT_B32
~Inst_VOP1__V_NOT_B32()
Definition: instructions.cc:8639
Gcn3ISA::Inst_SOPK__S_CMPK_GT_I32::Inst_SOPK__S_CMPK_GT_I32
Inst_SOPK__S_CMPK_GT_I32(InFmt_SOPK *)
Definition: instructions.cc:1458
Gcn3ISA::Inst_VOP3__V_CMPX_U_F16::~Inst_VOP3__V_CMPX_U_F16
~Inst_VOP3__V_CMPX_U_F16()
Definition: instructions.cc:16494
Gcn3ISA::Inst_VOP2__V_MAX_U16::~Inst_VOP2__V_MAX_U16
~Inst_VOP2__V_MAX_U16()
Definition: instructions.cc:7135
Gcn3ISA::Inst_VOP3__V_CVT_F32_F64::~Inst_VOP3__V_CVT_F32_F64
~Inst_VOP3__V_CVT_F32_F64()
Definition: instructions.cc:25665
Gcn3ISA::Inst_DS__DS_CONDXCHG32_RTN_B64::Inst_DS__DS_CONDXCHG32_RTN_B64
Inst_DS__DS_CONDXCHG32_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33670
Gcn3ISA::Inst_VOP3__V_SQRT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27299
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F16::~Inst_VOPC__V_CMPX_NGT_F16
~Inst_VOPC__V_CMPX_NGT_F16()
Definition: instructions.cc:10389
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12317
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F16::~Inst_VOP3__V_CMP_NEQ_F16
~Inst_VOP3__V_CMP_NEQ_F16()
Definition: instructions.cc:16266
Gcn3ISA::Inst_VOPC__V_CMP_GE_U32::~Inst_VOPC__V_CMP_GE_U32
~Inst_VOPC__V_CMP_GE_U32()
Definition: instructions.cc:13924
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I16::Inst_VOP3__V_CMPX_EQ_I16
Inst_VOP3__V_CMPX_EQ_I16(InFmt_VOP3 *)
Definition: instructions.cc:20061
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41178
Gcn3ISA::Inst_SMEM__S_DCACHE_INV_VOL::~Inst_SMEM__S_DCACHE_INV_VOL
~Inst_SMEM__S_DCACHE_INV_VOL()
Definition: instructions.cc:5325
Gcn3ISA::Inst_SOP1__S_SET_GPR_IDX_IDX::~Inst_SOP1__S_SET_GPR_IDX_IDX
~Inst_SOP1__S_SET_GPR_IDX_IDX()
Definition: instructions.cc:3185
Gcn3ISA::Inst_VOP3__V_QSAD_PK_U16_U8::Inst_VOP3__V_QSAD_PK_U16_U8
Inst_VOP3__V_QSAD_PK_U16_U8(InFmt_VOP3 *)
Definition: instructions.cc:29426
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36384
Gcn3ISA::Inst_VOP3__V_CMPX_T_I16::Inst_VOP3__V_CMPX_T_I16
Inst_VOP3__V_CMPX_T_I16(InFmt_VOP3 *)
Definition: instructions.cc:20276
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U16::Inst_VOPC__V_CMPX_NE_U16
Inst_VOPC__V_CMPX_NE_U16(InFmt_VOPC *)
Definition: instructions.cc:13408
Gcn3ISA::Inst_VOP3__V_MUL_LO_U16::~Inst_VOP3__V_MUL_LO_U16
~Inst_VOP3__V_MUL_LO_U16()
Definition: instructions.cc:24771
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4856
Gcn3ISA::Inst_DS__DS_MIN_U64::Inst_DS__DS_MIN_U64
Inst_DS__DS_MIN_U64(InFmt_DS *)
Definition: instructions.cc:32774
Gcn3ISA::Inst_VOP3__V_CVT_F16_U16::~Inst_VOP3__V_CVT_F16_U16
~Inst_VOP3__V_CVT_F16_U16()
Definition: instructions.cc:27197
Gcn3ISA::Inst_VOPC__V_CMP_GE_I64::Inst_VOPC__V_CMP_GE_I64
Inst_VOPC__V_CMP_GE_I64(InFmt_VOPC *)
Definition: instructions.cc:14648
Gcn3ISA::Inst_VOP3__V_SIN_F32::~Inst_VOP3__V_SIN_F32
~Inst_VOP3__V_SIN_F32()
Definition: instructions.cc:26716
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11486
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38531
Gcn3ISA::Inst_VOP3__V_FRACT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26159
Gcn3ISA::Inst_VOP3__V_CMP_GE_U16::~Inst_VOP3__V_CMP_GE_U16
~Inst_VOP3__V_CMP_GE_U16()
Definition: instructions.cc:19929
Gcn3ISA::Inst_VOP1__V_BFREV_B32::~Inst_VOP1__V_BFREV_B32
~Inst_VOP1__V_BFREV_B32()
Definition: instructions.cc:8669
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I16::~Inst_VOPC__V_CMPX_EQ_I16
~Inst_VOPC__V_CMPX_EQ_I16()
Definition: instructions.cc:13072
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ()
Definition: instructions.cc:37194
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::~Inst_FLAT__FLAT_LOAD_UBYTE
~Inst_FLAT__FLAT_LOAD_UBYTE()
Definition: instructions.cc:39394
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37459
Gcn3ISA::Inst_VOP3__V_CMPX_F_F16::~Inst_VOP3__V_CMPX_F_F16
~Inst_VOP3__V_CMPX_F_F16()
Definition: instructions.cc:16331
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
Inst_MUBUF__BUFFER_ATOMIC_XOR_X2(InFmt_MUBUF *)
Definition: instructions.cc:37044
Gcn3ISA::Inst_VOP2__V_MUL_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5694
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39265
Gcn3ISA::Inst_VOP1__V_READFIRSTLANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7364
Gcn3ISA::Inst_DS__DS_CONSUME::~Inst_DS__DS_CONSUME
~Inst_DS__DS_CONSUME()
Definition: instructions.cc:34094
Gcn3ISA::Inst_VOP2__V_MUL_LO_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6979
Gcn3ISA::Inst_DS__DS_AND_B64::Inst_DS__DS_AND_B64
Inst_DS__DS_AND_B64(InFmt_DS *)
Definition: instructions.cc:32810
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::Inst_SMEM__S_STORE_DWORD
Inst_SMEM__S_STORE_DWORD(InFmt_SMEM *)
Definition: instructions.cc:5018
Gcn3ISA::Inst_VOP3__V_SAD_U16::~Inst_VOP3__V_SAD_U16
~Inst_VOP3__V_SAD_U16()
Definition: instructions.cc:28830
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9858
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGUSER::Inst_SOPP__S_CBRANCH_CDBGUSER
Inst_SOPP__S_CBRANCH_CDBGUSER(InFmt_SOPP *)
Definition: instructions.cc:4323
Gcn3ISA::Inst_VOPC__V_CMPX_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11254
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ()
Definition: instructions.cc:34946
Gcn3ISA::Inst_VOP3__V_CMP_GT_U16::~Inst_VOP3__V_CMP_GT_U16
~Inst_VOP3__V_CMP_GT_U16()
Definition: instructions.cc:19845
Gcn3ISA::Inst_DS__DS_CMPST_F32::Inst_DS__DS_CMPST_F32
Inst_DS__DS_CMPST_F32(InFmt_DS *)
Definition: instructions.cc:31413
Gcn3ISA::Inst_SOP2__S_RFE_RESTORE_B64::Inst_SOP2__S_RFE_RESTORE_B64
Inst_SOP2__S_RFE_RESTORE_B64(InFmt_SOP2 *)
Definition: instructions.cc:1341
Gcn3ISA::Inst_VOPC__V_CMP_GT_U32::~Inst_VOPC__V_CMP_GT_U32
~Inst_VOPC__V_CMP_GT_U32()
Definition: instructions.cc:13862
Gcn3ISA::Inst_MIMG__IMAGE_GET_LOD::~Inst_MIMG__IMAGE_GET_LOD
~Inst_MIMG__IMAGE_GET_LOD()
Definition: instructions.cc:39227
Gcn3ISA::Inst_VOP3__V_CMP_GE_U16::Inst_VOP3__V_CMP_GE_U16
Inst_VOP3__V_CMP_GE_U16(InFmt_VOP3 *)
Definition: instructions.cc:19922
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I32::~Inst_VOPC__V_CMPX_EQ_I32
~Inst_VOPC__V_CMPX_EQ_I32()
Definition: instructions.cc:14040
Gcn3ISA::Inst_SOPK__S_CBRANCH_I_FORK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1776
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F16::~Inst_VOP3__V_CMPX_EQ_F16
~Inst_VOP3__V_CMPX_EQ_F16()
Definition: instructions.cc:16379
Gcn3ISA::Inst_SMEM__S_DCACHE_WB_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5347
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32::~Inst_VOP3__V_MUL_HI_U32
~Inst_VOP3__V_MUL_HI_U32()
Definition: instructions.cc:30354
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::~Inst_FLAT__FLAT_ATOMIC_SWAP_X2
~Inst_FLAT__FLAT_ATOMIC_SWAP_X2()
Definition: instructions.cc:41142
Gcn3ISA::Inst_VOP3__V_CMP_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16046
Gcn3ISA::Inst_VOP3__V_SQRT_F32::~Inst_VOP3__V_SQRT_F32
~Inst_VOP3__V_SQRT_F32()
Definition: instructions.cc:26640
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I32::Inst_VOPC__V_CMPX_EQ_I32
Inst_VOPC__V_CMPX_EQ_I32(InFmt_VOPC *)
Definition: instructions.cc:14034
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F64::Inst_VOP3__V_CMPX_TRU_F64
Inst_VOP3__V_CMPX_TRU_F64(InFmt_VOP3 *)
Definition: instructions.cc:19353
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34705
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F32::Inst_VOPC__V_CMPX_NLE_F32
Inst_VOPC__V_CMPX_NLE_F32(InFmt_VOPC *)
Definition: instructions.cc:11375
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10544
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F64::Inst_VOP3__V_CMP_NLG_F64
Inst_VOP3__V_CMP_NLG_F64(InFmt_VOP3 *)
Definition: instructions.cc:18230
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13174
Gcn3ISA::Inst_VOP3__V_CLREXCP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27185
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I64::Inst_VOPC__V_CMPX_LE_I64
Inst_VOPC__V_CMPX_LE_I64(InFmt_VOPC *)
Definition: instructions.cc:15034
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F64::~Inst_VOP3__V_CMPX_TRU_F64
~Inst_VOP3__V_CMPX_TRU_F64()
Definition: instructions.cc:19361
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34997
Gcn3ISA::Inst_VOP3__V_CMP_LE_U32::~Inst_VOP3__V_CMP_LE_U32
~Inst_VOP3__V_CMP_LE_U32()
Definition: instructions.cc:21040
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5066
Wavefront::scalarRdGmReqsInPipe
int scalarRdGmReqsInPipe
Definition: wavefront.hh:180
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I32::~Inst_VOP3__V_CMPX_NE_I32
~Inst_VOP3__V_CMPX_NE_I32()
Definition: instructions.cc:21434
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::~Inst_MUBUF__BUFFER_LOAD_DWORDX4
~Inst_MUBUF__BUFFER_LOAD_DWORDX4()
Definition: instructions.cc:35592
Gcn3ISA::Inst_VOP3__V_CMP_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16920
Gcn3ISA::Inst_VOPC__V_CMP_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10512
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36100
Wavefront::decVMemInstsIssued
void decVMemInstsIssued()
Definition: wavefront.cc:1368
Gcn3ISA::Inst_SMEM__S_DCACHE_INV::~Inst_SMEM__S_DCACHE_INV
~Inst_SMEM__S_DCACHE_INV()
Definition: instructions.cc:5293
Gcn3ISA::Inst_SOP1__S_BREV_B32::Inst_SOP1__S_BREV_B32
Inst_SOP1__S_BREV_B32(InFmt_SOP1 *)
Definition: instructions.cc:2087
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::~Inst_FLAT__FLAT_ATOMIC_UMIN_X2
~Inst_FLAT__FLAT_ATOMIC_UMIN_X2()
Definition: instructions.cc:41505
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27401
Gcn3ISA::Inst_DS__DS_WRAP_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32010
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D::~Inst_MIMG__IMAGE_SAMPLE_D
~Inst_MIMG__IMAGE_SAMPLE_D()
Definition: instructions.cc:38329
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16215
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37398
Gcn3ISA::Inst_SOP1__S_OR_SAVEEXEC_B64::Inst_SOP1__S_OR_SAVEEXEC_B64
Inst_SOP1__S_OR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2726
Gcn3ISA::Inst_DS__DS_AND_B32::Inst_DS__DS_AND_B32
Inst_DS__DS_AND_B32(InFmt_DS *)
Definition: instructions.cc:31131
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40587
Gcn3ISA::Inst_DS__DS_MIN_RTN_I64::Inst_DS__DS_MIN_RTN_I64
Inst_DS__DS_MIN_RTN_I64(InFmt_DS *)
Definition: instructions.cc:33200
Gcn3ISA::Inst_VOP3__V_MAD_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27784
Gcn3ISA::Inst_VOP3__V_CMPX_T_I32::Inst_VOP3__V_CMPX_T_I32
Inst_VOP3__V_CMPX_T_I32(InFmt_VOP3 *)
Definition: instructions.cc:21513
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X()
Definition: instructions.cc:37380
Gcn3ISA::Inst_VOP3__V_SQRT_F16::~Inst_VOP3__V_SQRT_F16
~Inst_VOP3__V_SQRT_F16()
Definition: instructions.cc:27290
Wavefront::barrierId
void barrierId(int bar_id)
Definition: wavefront.cc:1437
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41350
Gcn3ISA::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:38803
Gcn3ISA::Inst_VOP1__V_TRUNC_F64::Inst_VOP1__V_TRUNC_F64
Inst_VOP1__V_TRUNC_F64(InFmt_VOP1 *)
Definition: instructions.cc:7997
Gcn3ISA::Inst_SOPP__S_INCPERFLEVEL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4271
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17153
Gcn3ISA::Inst_VOP1__V_CVT_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7398
Gcn3ISA::Inst_VOP3__V_RSQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26598
Gcn3ISA::Inst_DS__DS_GWS_SEMA_BR::Inst_DS__DS_GWS_SEMA_BR
Inst_DS__DS_GWS_SEMA_BR(InFmt_DS *)
Definition: instructions.cc:34044
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::Inst_MIMG__IMAGE_ATOMIC_SWAP
Inst_MIMG__IMAGE_ATOMIC_SWAP(InFmt_MIMG *)
Definition: instructions.cc:37945
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::Inst_MUBUF__BUFFER_LOAD_DWORDX4
Inst_MUBUF__BUFFER_LOAD_DWORDX4(InFmt_MUBUF *)
Definition: instructions.cc:35580
Gcn3ISA::Inst_VOP1__V_SIN_F32::Inst_VOP1__V_SIN_F32
Inst_VOP1__V_SIN_F32(InFmt_VOP1 *)
Definition: instructions.cc:8561
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38234
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B64::Inst_DS__DS_MSKOR_RTN_B64
Inst_DS__DS_MSKOR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33326
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10123
Gcn3ISA::Inst_VINTRP__V_INTERP_MOV_F32::~Inst_VINTRP__V_INTERP_MOV_F32
~Inst_VINTRP__V_INTERP_MOV_F32()
Definition: instructions.cc:15481
Gcn3ISA::Inst_VOP3__V_CMP_LE_I32::~Inst_VOP3__V_CMP_LE_I32
~Inst_VOP3__V_CMP_LE_I32()
Definition: instructions.cc:20736
Gcn3ISA::Inst_SOPK__S_CMPK_LE_I32::Inst_SOPK__S_CMPK_LE_I32
Inst_SOPK__S_CMPK_LE_I32(InFmt_SOPK *)
Definition: instructions.cc:1533
Gcn3ISA::Inst_VOP2__V_MUL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6806
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U64::~Inst_DS__DS_RSUB_RTN_U64
~Inst_DS__DS_RSUB_RTN_U64()
Definition: instructions.cc:33149
Gcn3ISA::InFmt_VOP_DPP::BANK_MASK
unsigned int BANK_MASK
Definition: gpu_decoder.hh:1591
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U64::~Inst_DS__DS_MIN_SRC2_U64
~Inst_DS__DS_MIN_SRC2_U64()
Definition: instructions.cc:34273
Gcn3ISA::findFirstZero
ScalarRegI32 findFirstZero(T val)
Definition: inst_util.hh:131
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36305
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGUSER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4335
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F64::~Inst_VOPC__V_CMPX_EQ_F64
~Inst_VOPC__V_CMPX_EQ_F64()
Definition: instructions.cc:12075
Gcn3ISA::Inst_VOP3__V_CMPX_T_U32::Inst_VOP3__V_CMPX_T_U32
Inst_VOP3__V_CMPX_T_U32(InFmt_VOP3 *)
Definition: instructions.cc:21827
Gcn3ISA::Inst_VOP2__V_SUBREV_F16::~Inst_VOP2__V_SUBREV_F16
~Inst_VOP2__V_SUBREV_F16()
Definition: instructions.cc:6782
Gcn3ISA::Inst_VOPC__V_CMPX_T_I16::~Inst_VOPC__V_CMPX_T_I16
~Inst_VOPC__V_CMPX_T_I16()
Definition: instructions.cc:13232
Gcn3ISA::Inst_VOP2::extData
InstFormat extData
Definition: op_encodings.hh:287
Gcn3ISA::Inst_SOP1__S_NOT_B32::Inst_SOP1__S_NOT_B32
Inst_SOP1__S_NOT_B32(InFmt_SOP1 *)
Definition: instructions.cc:1972
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34420
Gcn3ISA::Inst_DS__DS_MIN_RTN_U32::~Inst_DS__DS_MIN_RTN_U32
~Inst_DS__DS_MIN_RTN_U32()
Definition: instructions.cc:31760
Gcn3ISA::Inst_VOP3__V_MBCNT_LO_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30611
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::~Inst_MUBUF__BUFFER_STORE_DWORDX2
~Inst_MUBUF__BUFFER_STORE_DWORDX2()
Definition: instructions.cc:35995
Gcn3ISA::Inst_VOP1__V_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7301
Gcn3ISA::Inst_VOP3__V_CVT_F32_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25557
Gcn3ISA::Inst_SOP1__S_QUADMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2964
Gcn3ISA::Inst_VOP3__V_CNDMASK_B32::Inst_VOP3__V_CNDMASK_B32
Inst_VOP3__V_CNDMASK_B32(InFmt_VOP3 *)
Definition: instructions.cc:23101
Gcn3ISA::Inst_DS__DS_CONSUME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34099
Gcn3ISA::Inst_VOP3__V_CVT_F32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25671
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F32::~Inst_VOP3__V_DIV_FMAS_F32
~Inst_VOP3__V_DIV_FMAS_F32()
Definition: instructions.cc:29288
Gcn3ISA::Inst_DS__DS_WRITE_B64::~Inst_DS__DS_WRITE_B64
~Inst_DS__DS_WRITE_B64()
Definition: instructions.cc:32889
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::~Inst_FLAT__FLAT_ATOMIC_SUB_X2
~Inst_FLAT__FLAT_ATOMIC_SUB_X2()
Definition: instructions.cc:41380
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33933
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32206
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F64::~Inst_VOPC__V_CMP_NGE_F64
~Inst_VOPC__V_CMP_NGE_F64()
Definition: instructions.cc:11794
Gcn3ISA::Inst_VOP3__V_MSAD_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29421
Gcn3ISA::Inst_VOP3__V_MOV_B32::Inst_VOP3__V_MOV_B32
Inst_VOP3__V_MOV_B32(InFmt_VOP3 *)
Definition: instructions.cc:25196
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F32::~Inst_VOPC__V_CMPX_GE_F32
~Inst_VOPC__V_CMPX_GE_F32()
Definition: instructions.cc:11179
Gcn3ISA::Inst_DS__DS_READ_B96::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34476
Gcn3ISA::Inst_VOP3__V_CMPX_T_I32::~Inst_VOP3__V_CMPX_T_I32
~Inst_VOP3__V_CMPX_T_I32()
Definition: instructions.cc:21520
Gcn3ISA::Inst_VOP1__V_CVT_F16_I16::Inst_VOP1__V_CVT_F16_I16
Inst_VOP1__V_CVT_F16_I16(InFmt_VOP1 *)
Definition: instructions.cc:8992
Gcn3ISA::Inst_SOP2__S_ABSDIFF_I32::Inst_SOP2__S_ABSDIFF_I32
Inst_SOP2__S_ABSDIFF_I32(InFmt_SOP2 *)
Definition: instructions.cc:1312
Gcn3ISA::Inst_VOP2__V_ASHRREV_I32::Inst_VOP2__V_ASHRREV_I32
Inst_VOP2__V_ASHRREV_I32(InFmt_VOP2 *)
Definition: instructions.cc:6078
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16065
Gcn3ISA::Inst_VOP2__V_MADAK_F16::Inst_VOP2__V_MADAK_F16
Inst_VOP2__V_MADAK_F16(InFmt_VOP2 *)
Definition: instructions.cc:6852
GPUStaticInst::setFlag
void setFlag(Flags flag)
Definition: gpu_static_inst.hh:238
Gcn3ISA::Inst_VOP3__V_RSQ_F32::~Inst_VOP3__V_RSQ_F32
~Inst_VOP3__V_RSQ_F32()
Definition: instructions.cc:26504
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U32::Inst_VOP3__V_CMPX_EQ_U32
Inst_VOP3__V_CMPX_EQ_U32(InFmt_VOP3 *)
Definition: instructions.cc:21612
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::Inst_MUBUF__BUFFER_ATOMIC_XOR
Inst_MUBUF__BUFFER_ATOMIC_XOR(InFmt_MUBUF *)
Definition: instructions.cc:36690
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10303
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2()
Definition: instructions.cc:37057
Gcn3ISA::ScalarRegU64
uint64_t ScalarRegU64
Definition: registers.hh:157
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11388
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15356
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW()
Definition: instructions.cc:37347
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL::Inst_MIMG__IMAGE_GATHER4_C_CL
Inst_MIMG__IMAGE_GATHER4_C_CL(InFmt_MIMG *)
Definition: instructions.cc:38933
Gcn3ISA::Inst_VOP1__V_CVT_F16_F32::Inst_VOP1__V_CVT_F16_F32
Inst_VOP1__V_CVT_F16_F32(InFmt_VOP1 *)
Definition: instructions.cc:7625
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5194
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F16::Inst_VOPC__V_CMP_NLG_F16
Inst_VOPC__V_CMP_NLG_F16(InFmt_VOPC *)
Definition: instructions.cc:10074
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U32::~Inst_DS__DS_SUB_SRC2_U32
~Inst_DS__DS_SUB_SRC2_U32()
Definition: instructions.cc:33711
Gcn3ISA::Inst_VOP3__V_RSQ_F32::Inst_VOP3__V_RSQ_F32
Inst_VOP3__V_RSQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:26497
Gcn3ISA::Inst_VOP1__V_READFIRSTLANE_B32::Inst_VOP1__V_READFIRSTLANE_B32
Inst_VOP1__V_READFIRSTLANE_B32(InFmt_VOP1 *)
Definition: instructions.cc:7348
Gcn3ISA::Inst_VOP3__V_CVT_I32_F32::Inst_VOP3__V_CVT_I32_F32
Inst_VOP3__V_CVT_I32_F32(InFmt_VOP3 *)
Definition: instructions.cc:25448
Gcn3ISA::Inst_VOPC__V_CMP_NE_I16::~Inst_VOPC__V_CMP_NE_I16
~Inst_VOPC__V_CMP_NE_I16()
Definition: instructions.cc:12687
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34832
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30360
Gcn3ISA::Inst_SMEM__S_ATC_PROBE_BUFFER::~Inst_SMEM__S_ATC_PROBE_BUFFER
~Inst_SMEM__S_ATC_PROBE_BUFFER()
Definition: instructions.cc:5405
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11800
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39721
Gcn3ISA::Inst_VOPC__V_CMPX_O_F32::~Inst_VOPC__V_CMPX_O_F32
~Inst_VOPC__V_CMPX_O_F32()
Definition: instructions.cc:11212
Gcn3ISA::Inst_VOP2__V_LSHLREV_B32::~Inst_VOP2__V_LSHLREV_B32
~Inst_VOP2__V_LSHLREV_B32()
Definition: instructions.cc:6116
Gcn3ISA::Inst_DS__DS_AND_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34320
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F16::~Inst_VOP3__V_CMP_NLT_F16
~Inst_VOP3__V_CMP_NLT_F16()
Definition: instructions.cc:16285
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::~Inst_FLAT__FLAT_ATOMIC_ADD
~Inst_FLAT__FLAT_ATOMIC_ADD()
Definition: instructions.cc:40579
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F16::Inst_VOPC__V_CMPX_NEQ_F16
Inst_VOPC__V_CMPX_NEQ_F16(InFmt_VOPC *)
Definition: instructions.cc:10418
Gcn3ISA::Inst_VOPC__V_CMPX_O_F16::Inst_VOPC__V_CMPX_O_F16
Inst_VOPC__V_CMPX_O_F16(InFmt_VOPC *)
Definition: instructions.cc:10308
Gcn3ISA::Inst_SOPC__S_BITCMP1_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3547
Gcn3ISA::Inst_VOP3__V_TRUNC_F64::~Inst_VOP3__V_TRUNC_F64
~Inst_VOP3__V_TRUNC_F64()
Definition: instructions.cc:26001
Gcn3ISA::Inst_SOP1__S_BITSET1_B64::Inst_SOP1__S_BITSET1_B64
Inst_SOP1__S_BITSET1_B64(InFmt_SOP1 *)
Definition: instructions.cc:2579
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F32::Inst_VOPC__V_CMPX_GT_F32
Inst_VOPC__V_CMPX_GT_F32(InFmt_VOPC *)
Definition: instructions.cc:11105
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34525
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F64::Inst_VOP3__V_CMP_NLT_F64
Inst_VOP3__V_CMP_NLT_F64(InFmt_VOP3 *)
Definition: instructions.cc:18451
Gcn3ISA::Inst_DS__DS_READ_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32080
Gcn3ISA::Inst_SOP1__S_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3174
Gcn3ISA::Inst_VOP3__V_CMPX_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16501
Gcn3ISA::Inst_VOPC__V_CMP_T_I64::Inst_VOPC__V_CMP_T_I64
Inst_VOPC__V_CMP_T_I64(InFmt_VOPC *)
Definition: instructions.cc:14679
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38928
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10395
ComputeUnit::cu_id
int cu_id
Definition: compute_unit.hh:289
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41724
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17210
Gcn3ISA::Inst_SOP2__S_OR_B64::~Inst_SOP2__S_OR_B64
~Inst_SOP2__S_OR_B64()
Definition: instructions.cc:511
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41289
Gcn3ISA::Inst_VOPC__V_CMP_GE_I32::Inst_VOPC__V_CMP_GE_I32
Inst_VOPC__V_CMP_GE_I32(InFmt_VOPC *)
Definition: instructions.cc:13680
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2()
Definition: instructions.cc:36812
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F64::Inst_VOPC__V_CMPX_LE_F64
Inst_VOPC__V_CMPX_LE_F64(InFmt_VOPC *)
Definition: instructions.cc:12101
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5011
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38781
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35962
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17556
Gcn3ISA::Inst_DS__DS_PERMUTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32521
Gcn3ISA::Inst_VOP3__V_CMP_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16027
Gcn3ISA::Inst_DS__DS_WRITE_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31249
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41830
Gcn3ISA::Inst_VOP3__V_NOT_B32::~Inst_VOP3__V_NOT_B32
~Inst_VOP3__V_NOT_B32()
Definition: instructions.cc:26795
Gcn3ISA::Inst_VOPC__V_CMPX_T_I16::Inst_VOPC__V_CMPX_T_I16
Inst_VOPC__V_CMPX_T_I16(InFmt_VOPC *)
Definition: instructions.cc:13226
Gcn3ISA::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:39170
Gcn3ISA::Inst_VOP2__V_MAC_F16::Inst_VOP2__V_MAC_F16
Inst_VOP2__V_MAC_F16(InFmt_VOP2 *)
Definition: instructions.cc:6811
Gcn3ISA::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:39287
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::~Inst_MUBUF__BUFFER_STORE_BYTE
~Inst_MUBUF__BUFFER_STORE_BYTE()
Definition: instructions.cc:35707
GPUDispatcher::isReachingKernelEnd
bool isReachingKernelEnd(Wavefront *wf)
Definition: dispatcher.cc:232
Gcn3ISA::Inst_VOP1__V_LOG_F16::~Inst_VOP1__V_LOG_F16
~Inst_VOP1__V_LOG_F16()
Definition: instructions.cc:9116
Gcn3ISA::Inst_SOP2__S_ANDN2_B32::Inst_SOP2__S_ANDN2_B32
Inst_SOP2__S_ANDN2_B32(InFmt_SOP2 *)
Definition: instructions.cc:595
Gcn3ISA::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:34871
Gcn3ISA::ScalarRegI16
int16_t ScalarRegI16
Definition: registers.hh:153
Gcn3ISA::Inst_VOP1__V_BFREV_B32::Inst_VOP1__V_BFREV_B32
Inst_VOP1__V_BFREV_B32(InFmt_VOP1 *)
Definition: instructions.cc:8663
Gcn3ISA::Inst_VOP1__V_NOT_B32::Inst_VOP1__V_NOT_B32
Inst_VOP1__V_NOT_B32(InFmt_VOP1 *)
Definition: instructions.cc:8633
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::~Inst_MUBUF__BUFFER_LOAD_SSHORT
~Inst_MUBUF__BUFFER_LOAD_SSHORT()
Definition: instructions.cc:35243
Gcn3ISA::Inst_SOP1__S_CMOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1928
Gcn3ISA::Inst_SOP2__S_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:342
Gcn3ISA::Inst_SOPP__S_SLEEP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4177
Gcn3ISA::Inst_VOPC__V_CMP_GE_I64::~Inst_VOPC__V_CMP_GE_I64
~Inst_VOPC__V_CMP_GE_I64()
Definition: instructions.cc:14654
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38318
Gcn3ISA::Inst_VOP3__V_CVT_F32_U32::Inst_VOP3__V_CVT_F32_U32
Inst_VOP3__V_CVT_F32_U32(InFmt_VOP3 *)
Definition: instructions.cc:25356
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32_U24::~Inst_VOP3__V_MUL_HI_U32_U24
~Inst_VOP3__V_MUL_HI_U32_U24()
Definition: instructions.cc:23642
Gcn3ISA::Inst_VOPC__V_CMPX_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15201
Gcn3ISA::Inst_VOP3__V_MAD_U32_U24::Inst_VOP3__V_MAD_U32_U24
Inst_VOP3__V_MAD_U32_U24(InFmt_VOP3 *)
Definition: instructions.cc:27771
Gcn3ISA::Inst_VOP3__V_CUBEMA_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27879
Gcn3ISA::InFmt_MUBUF_1::VDATA
unsigned int VDATA
Definition: gpu_decoder.hh:1470
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_O::~Inst_MIMG__IMAGE_GATHER4_B_O
~Inst_MIMG__IMAGE_GATHER4_B_O()
Definition: instructions.cc:39075
Gcn3ISA::Inst_VINTRP__V_INTERP_P2_F32::~Inst_VINTRP__V_INTERP_P2_F32
~Inst_VINTRP__V_INTERP_P2_F32()
Definition: instructions.cc:15462
Gcn3ISA::Inst_DS__DS_MIN_RTN_F64::~Inst_DS__DS_MIN_RTN_F64
~Inst_DS__DS_MIN_RTN_F64()
Definition: instructions.cc:33445
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35340
Gcn3ISA::Inst_VOP3__V_CEIL_F16::~Inst_VOP3__V_CEIL_F16
~Inst_VOP3__V_CEIL_F16()
Definition: instructions.cc:27431
Gcn3ISA::Inst_VOPC__V_CMPX_T_U16::~Inst_VOPC__V_CMPX_T_U16
~Inst_VOPC__V_CMPX_T_U16()
Definition: instructions.cc:13478
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37854
Gcn3ISA::Inst_VOP3__V_BFI_B32::~Inst_VOP3__V_BFI_B32
~Inst_VOP3__V_BFI_B32()
Definition: instructions.cc:27980
Gcn3ISA::Inst_VOP3__V_FFBL_B32::Inst_VOP3__V_FFBL_B32
Inst_VOP3__V_FFBL_B32(InFmt_VOP3 *)
Definition: instructions.cc:26887
Gcn3ISA::Inst_DS__DS_GWS_SEMA_P::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34069
Gcn3ISA::Inst_FLAT::extData
InFmt_FLAT_1 extData
Definition: op_encodings.hh:833
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I32::~Inst_VOP3__V_CMPX_GT_I32
~Inst_VOP3__V_CMPX_GT_I32()
Definition: instructions.cc:21391
Gcn3ISA::Inst_SOP1__S_MOVRELS_B32::Inst_SOP1__S_MOVRELS_B32
Inst_SOP1__S_MOVRELS_B32(InFmt_SOP1 *)
Definition: instructions.cc:3008
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::Inst_MIMG__IMAGE_STORE_PCK
Inst_MIMG__IMAGE_STORE_PCK(InFmt_MIMG *)
Definition: instructions.cc:37869
Gcn3ISA::Inst_VOP3__V_QSAD_PK_U16_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29439
Gcn3ISA::Inst_DS__DS_BPERMUTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32592
Gcn3ISA::Inst_SOP1__S_GETPC_B64::Inst_SOP1__S_GETPC_B64
Inst_SOP1__S_GETPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2603
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::~Inst_DS__DS_READ2ST64_B32
~Inst_DS__DS_READ2ST64_B32()
Definition: instructions.cc:32166
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F32::Inst_VOPC__V_CMPX_EQ_F32
Inst_VOPC__V_CMPX_EQ_F32(InFmt_VOPC *)
Definition: instructions.cc:11039
Gcn3ISA::Inst_VOP3__V_LSHLREV_B32::~Inst_VOP3__V_LSHLREV_B32
~Inst_VOP3__V_LSHLREV_B32()
Definition: instructions.cc:24041
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::Inst_MUBUF__BUFFER_LOAD_DWORD
Inst_MUBUF__BUFFER_LOAD_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:35265
Gcn3ISA::Inst_SOP2__S_NAND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:728
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18745
Gcn3ISA::Inst_VOPC__V_CMP_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9925
Gcn3ISA::Inst_VOP2__V_LDEXP_F16::Inst_VOP2__V_LDEXP_F16
Inst_VOP2__V_LDEXP_F16(InFmt_VOP2 *)
Definition: instructions.cc:7253
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::~Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
~Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN()
Definition: instructions.cc:37791
Gcn3ISA::Inst_VOP3__V_READLANE_B32::Inst_VOP3__V_READLANE_B32
Inst_VOP3__V_READLANE_B32(InFmt_VOP3 *)
Definition: instructions.cc:30476
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F64::Inst_VOPC__V_CMPX_NLT_F64
Inst_VOPC__V_CMPX_NLT_F64(InFmt_VOPC *)
Definition: instructions.cc:12470
Gcn3ISA::Inst_SOPC__S_CMP_LG_U64::~Inst_SOPC__S_CMP_LG_U64
~Inst_SOPC__S_CMP_LG_U64()
Definition: instructions.cc:3689
Gcn3ISA::Inst_VOP2__V_OR_B32::~Inst_VOP2__V_OR_B32
~Inst_VOP2__V_OR_B32()
Definition: instructions.cc:6220
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33973
Gcn3ISA::Inst_VOP2__V_SUBREV_U16::~Inst_VOP2__V_SUBREV_U16
~Inst_VOP2__V_SUBREV_U16()
Definition: instructions.cc:6942
Gcn3ISA::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:39085
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::Inst_MTBUF__TBUFFER_STORE_FORMAT_X
Inst_MTBUF__TBUFFER_STORE_FORMAT_X(InFmt_MTBUF *)
Definition: instructions.cc:37247
Gcn3ISA::Inst_VOP3__V_RCP_IFLAG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26472
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U16::Inst_VOP3__V_CMP_EQ_U16
Inst_VOP3__V_CMP_EQ_U16(InFmt_VOP3 *)
Definition: instructions.cc:19754
ComputeUnit::registerManager
RegisterManager * registerManager
Definition: compute_unit.hh:275
Gcn3ISA::Inst_VOP3__V_MAC_F16::~Inst_VOP3__V_MAC_F16
~Inst_VOP3__V_MAC_F16()
Definition: instructions.cc:24631
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I32_F32::Inst_VOP3__V_FREXP_EXP_I32_F32
Inst_VOP3__V_FREXP_EXP_I32_F32(InFmt_VOP3 *)
Definition: instructions.cc:27084
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::~Inst_SMEM__S_BUFFER_LOAD_DWORDX8
~Inst_SMEM__S_BUFFER_LOAD_DWORDX8()
Definition: instructions.cc:4908
Gcn3ISA::Inst_VOPC__V_CMPX_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13484
Gcn3ISA::Inst_VOP1__V_CVT_U32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7532
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11185
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::Inst_FLAT__FLAT_LOAD_SSHORT
Inst_FLAT__FLAT_LOAD_SSHORT(InFmt_FLAT *)
Definition: instructions.cc:39561
Gcn3ISA::VecElemI8
int8_t VecElemI8
Definition: registers.hh:163
Gcn3ISA::Inst_VOP3__V_FMA_F64::~Inst_VOP3__V_FMA_F64
~Inst_VOP3__V_FMA_F64()
Definition: instructions.cc:28085
Gcn3ISA::Inst_VOP3__V_MQSAD_U32_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29476
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::Inst_FLAT__FLAT_ATOMIC_DEC
Inst_FLAT__FLAT_ATOMIC_DEC(InFmt_FLAT *)
Definition: instructions.cc:41032
Gcn3ISA::Inst_VOP1__V_CVT_F64_U32::~Inst_VOP1__V_CVT_F64_U32
~Inst_VOP1__V_CVT_F64_U32()
Definition: instructions.cc:7974
Gcn3ISA::Inst_DS__DS_READ_I8::~Inst_DS__DS_READ_I8
~Inst_DS__DS_READ_I8()
Definition: instructions.cc:32232
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGUSER::~Inst_SOPP__S_CBRANCH_CDBGUSER
~Inst_SOPP__S_CBRANCH_CDBGUSER()
Definition: instructions.cc:4330
Gcn3ISA::Inst_VOP3__V_CMP_T_U32::Inst_VOP3__V_CMP_T_U32
Inst_VOP3__V_CMP_T_U32(InFmt_VOP3 *)
Definition: instructions.cc:21201
Gcn3ISA::InFmt_VOP_SDWA::SRC1_ABS
unsigned int SRC1_ABS
Definition: gpu_decoder.hh:1609
Gcn3ISA::InFmt_DS::OFFSET0
unsigned int OFFSET0
Definition: gpu_decoder.hh:1358
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F64::~Inst_VOP3__V_CMPX_LE_F64
~Inst_VOP3__V_CMPX_LE_F64()
Definition: instructions.cc:18683
Gcn3ISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::Inst_SOP1__S_NOR_SAVEEXEC_B64
Inst_SOP1__S_NOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2886
Wavefront::pc
Addr pc() const
Definition: wavefront.cc:1386
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F32::~Inst_VOPC__V_CMP_NEQ_F32
~Inst_VOPC__V_CMP_NEQ_F32()
Definition: instructions.cc:10894
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B32::~Inst_DS__DS_XOR_SRC2_B32
~Inst_DS__DS_XOR_SRC2_B32()
Definition: instructions.cc:33902
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F16::~Inst_VOPC__V_CMP_CLASS_F16
~Inst_VOPC__V_CMP_CLASS_F16()
Definition: instructions.cc:9840
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3365
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15110
Gcn3ISA::Inst_VOP3__V_SUB_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23214
Gcn3ISA::Inst_VOP1__V_FRACT_F16::Inst_VOP1__V_FRACT_F16
Inst_VOP1__V_FRACT_F16(InFmt_VOP1 *)
Definition: instructions.cc:9267
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18465
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::~Inst_MIMG__IMAGE_LOAD_PCK
~Inst_MIMG__IMAGE_LOAD_PCK()
Definition: instructions.cc:37702
Gcn3ISA::Inst_VOP3__V_MIN_I16::Inst_VOP3__V_MIN_I16
Inst_VOP3__V_MIN_I16(InFmt_VOP3 *)
Definition: instructions.cc:25114
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39715
Gcn3ISA::Inst_VOP3__V_CMP_LE_F64::Inst_VOP3__V_CMP_LE_F64
Inst_VOP3__V_CMP_LE_F64(InFmt_VOP3 *)
Definition: instructions.cc:17844
Gcn3ISA::Inst_VOP3__V_MUL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24618
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::Inst_MUBUF__BUFFER_STORE_FORMAT_XY
Inst_MUBUF__BUFFER_STORE_FORMAT_XY(InFmt_MUBUF *)
Definition: instructions.cc:34650
Gcn3ISA::Inst_VOPC__V_CMP_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10705
Gcn3ISA::Inst_VOP3__V_CMP_LE_F32::~Inst_VOP3__V_CMP_LE_F32
~Inst_VOP3__V_CMP_LE_F32()
Definition: instructions.cc:16750
Gcn3ISA::Inst_DS__DS_SUB_U32::~Inst_DS__DS_SUB_U32
~Inst_DS__DS_SUB_U32()
Definition: instructions.cc:30991
Gcn3ISA::Inst_VOP1__V_RNDNE_F16::~Inst_VOP1__V_RNDNE_F16
~Inst_VOP1__V_RNDNE_F16()
Definition: instructions.cc:9256
Gcn3ISA::Inst_DS__DS_MAX_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32769
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR::~Inst_FLAT__FLAT_ATOMIC_XOR
~Inst_FLAT__FLAT_ATOMIC_XOR()
Definition: instructions.cc:40922
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21354
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U16::~Inst_VOP3__V_CMP_EQ_U16
~Inst_VOP3__V_CMP_EQ_U16()
Definition: instructions.cc:19761
Gcn3ISA::Inst_VOPC__V_CMP_U_F32::Inst_VOPC__V_CMP_U_F32
Inst_VOPC__V_CMP_U_F32(InFmt_VOPC *)
Definition: instructions.cc:10725
Gcn3ISA::Inst_VOP3__V_MIN3_I32::Inst_VOP3__V_MIN3_I32
Inst_VOP3__V_MIN3_I32(InFmt_VOP3 *)
Definition: instructions.cc:28344
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37651
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10249
Gcn3ISA::Inst_VOP1__V_NOP::~Inst_VOP1__V_NOP
~Inst_VOP1__V_NOP()
Definition: instructions.cc:7278
Gcn3ISA::Inst_VOPC__V_CMP_NE_U32::~Inst_VOPC__V_CMP_NE_U32
~Inst_VOPC__V_CMP_NE_U32()
Definition: instructions.cc:13893
Gcn3ISA::Inst_DS__DS_OR_B64::Inst_DS__DS_OR_B64
Inst_DS__DS_OR_B64(InFmt_DS *)
Definition: instructions.cc:32828
Gcn3ISA::Inst_VOP3__V_MAD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27681
Gcn3ISA::Inst_DS__DS_DEC_RTN_U32::Inst_DS__DS_DEC_RTN_U32
Inst_DS__DS_DEC_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31701
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I16_F16::Inst_VOP3__V_FREXP_EXP_I16_F16
Inst_VOP3__V_FREXP_EXP_I16_F16(InFmt_VOP3 *)
Definition: instructions.cc:27388
Gcn3ISA::Inst_VOP3__V_SAD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28885
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36792
Gcn3ISA::Inst_SOPP__S_SETHALT::Inst_SOPP__S_SETHALT
Inst_SOPP__S_SETHALT(InFmt_SOPP *)
Definition: instructions.cc:4151
Gcn3ISA::Inst_VOP3__V_CMPX_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17416
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L_O::Inst_MIMG__IMAGE_SAMPLE_L_O
Inst_MIMG__IMAGE_SAMPLE_L_O(InFmt_MIMG *)
Definition: instructions.cc:38619
Gcn3ISA::Inst_VOP2__V_MAX_U16::Inst_VOP2__V_MAX_U16
Inst_VOP2__V_MAX_U16(InFmt_VOP2 *)
Definition: instructions.cc:7129
Gcn3ISA::Inst_DS__DS_MAX_RTN_U32::~Inst_DS__DS_MAX_RTN_U32
~Inst_DS__DS_MAX_RTN_U32()
Definition: instructions.cc:31778
Gcn3ISA::Inst_MIMG__IMAGE_GET_RESINFO::Inst_MIMG__IMAGE_GET_RESINFO
Inst_MIMG__IMAGE_GET_RESINFO(InFmt_MIMG *)
Definition: instructions.cc:37928
Gcn3ISA::Inst_DS__DS_CMPST_F64::Inst_DS__DS_CMPST_F64
Inst_DS__DS_CMPST_F64(InFmt_DS *)
Definition: instructions.cc:33047
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36180
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U64::~Inst_DS__DS_RSUB_SRC2_U64
~Inst_DS__DS_RSUB_SRC2_U64()
Definition: instructions.cc:34177
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC1::Inst_SOPP__S_CBRANCH_SCC1
Inst_SOPP__S_CBRANCH_SCC1(InFmt_SOPP *)
Definition: instructions.cc:3934
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F64::~Inst_VOPC__V_CMP_CLASS_F64
~Inst_VOPC__V_CMP_CLASS_F64()
Definition: instructions.cc:9613
Gcn3ISA::Inst_VOP3__V_SUBREV_U16::~Inst_VOP3__V_SUBREV_U16
~Inst_VOP3__V_SUBREV_U16()
Definition: instructions.cc:24730
Gcn3ISA::Inst_VOPC__V_CMP_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9979
Gcn3ISA::Inst_VOP1__V_CVT_U16_F16::~Inst_VOP1__V_CVT_U16_F16
~Inst_VOP1__V_CVT_U16_F16()
Definition: instructions.cc:9017
Gcn3ISA::Inst_SOPC__S_SET_GPR_IDX_ON::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3652
Gcn3ISA::Inst_VOP3__V_MUL_U32_U24::~Inst_VOP3__V_MUL_U32_U24
~Inst_VOP3__V_MUL_U32_U24()
Definition: instructions.cc:23601
Gcn3ISA::Inst_SOPC__S_CMP_LG_I32::~Inst_SOPC__S_CMP_LG_I32
~Inst_SOPC__S_CMP_LG_I32()
Definition: instructions.cc:3229
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37619
Gcn3ISA::Inst_SOP1__S_MOVRELD_B32::Inst_SOP1__S_MOVRELD_B32
Inst_SOP1__S_MOVRELD_B32(InFmt_SOP1 *)
Definition: instructions.cc:3061
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21440
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F16::Inst_VOPC__V_CMPX_NLE_F16
Inst_VOPC__V_CMPX_NLE_F16(InFmt_VOPC *)
Definition: instructions.cc:10400
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22818
Gcn3ISA::Inst_VOP3__V_CEIL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27437
Gcn3ISA::Inst_VOP1__V_MOV_FED_B32::~Inst_VOP1__V_MOV_FED_B32
~Inst_VOP1__V_MOV_FED_B32()
Definition: instructions.cc:7613
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F32::~Inst_VOPC__V_CMP_NGT_F32
~Inst_VOPC__V_CMP_NGT_F32()
Definition: instructions.cc:10830
Gcn3ISA::Inst_SOP2__S_ADD_U32::~Inst_SOP2__S_ADD_U32
~Inst_SOP2__S_ADD_U32()
Definition: instructions.cc:54
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::Inst_MUBUF__BUFFER_WBINVL1
Inst_MUBUF__BUFFER_WBINVL1(InFmt_MUBUF *)
Definition: instructions.cc:36310
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F32::Inst_VOP3__V_CMPX_NGT_F32
Inst_VOP3__V_CMPX_NGT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17542
Gcn3ISA::Inst_VOP1__V_TRUNC_F16::~Inst_VOP1__V_TRUNC_F16
~Inst_VOP1__V_TRUNC_F16()
Definition: instructions.cc:9238
Gcn3ISA::Inst_VOP3__V_CVT_F32_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25329
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F32::~Inst_VOP3__V_CMP_EQ_F32
~Inst_VOP3__V_CMP_EQ_F32()
Definition: instructions.cc:16717
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::~Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
~Inst_MUBUF__BUFFER_ATOMIC_ADD_X2()
Definition: instructions.cc:36841
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37302
Gcn3ISA::Inst_VOP3__V_TRUNC_F32::~Inst_VOP3__V_TRUNC_F32
~Inst_VOP3__V_TRUNC_F32()
Definition: instructions.cc:26192
Gcn3ISA::Inst_VOP3__V_CMP_LG_F64::Inst_VOP3__V_CMP_LG_F64
Inst_VOP3__V_CMP_LG_F64(InFmt_VOP3 *)
Definition: instructions.cc:17954
Gcn3ISA::InFmt_VOP_DPP::SRC0_ABS
unsigned int SRC0_ABS
Definition: gpu_decoder.hh:1588
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4717
Gcn3ISA::Inst_SOPK__S_MOVK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1370
Gcn3ISA::Inst_DS__DS_WRITE_B8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31522
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37181
Gcn3ISA::Inst_VOP3__V_TRUNC_F16::~Inst_VOP3__V_TRUNC_F16
~Inst_VOP3__V_TRUNC_F16()
Definition: instructions.cc:27449
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F32::Inst_VOP3__V_DIV_FIXUP_F32
Inst_VOP3__V_DIV_FIXUP_F32(InFmt_VOP3 *)
Definition: instructions.cc:28972
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20074
Gcn3ISA::Inst_DS__DS_MIN_RTN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33213
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::~Inst_FLAT__FLAT_ATOMIC_SUB
~Inst_FLAT__FLAT_ATOMIC_SUB()
Definition: instructions.cc:40676
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U32::~Inst_VOP3__V_CMPX_LE_U32
~Inst_VOP3__V_CMPX_LE_U32()
Definition: instructions.cc:21662
Gcn3ISA::Inst_DS__DS_GWS_SEMA_V::~Inst_DS__DS_GWS_SEMA_V
~Inst_DS__DS_GWS_SEMA_V()
Definition: instructions.cc:34034
Gcn3ISA::Inst_VOP3__V_CMP_GE_I64::Inst_VOP3__V_CMP_GE_I64
Inst_VOP3__V_CMP_GE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22091
Gcn3ISA::Inst_VOPC__V_CMP_O_F64::~Inst_VOPC__V_CMP_O_F64
~Inst_VOPC__V_CMP_O_F64()
Definition: instructions.cc:11728
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25763
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B32::~Inst_SOP1__S_BCNT1_I32_B32
~Inst_SOP1__S_BCNT1_I32_B32()
Definition: instructions.cc:2197
Gcn3ISA::Inst_VOP3__V_MED3_I32::Inst_VOP3__V_MED3_I32
Inst_VOP3__V_MED3_I32(InFmt_VOP3 *)
Definition: instructions.cc:28637
Wavefront::scalarWrGmReqsInPipe
int scalarWrGmReqsInPipe
Definition: wavefront.hh:181
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U16::~Inst_VOP3__V_CMPX_NE_U16
~Inst_VOP3__V_CMPX_NE_U16()
Definition: instructions.cc:20511
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I64::~Inst_DS__DS_MIN_SRC2_I64
~Inst_DS__DS_MIN_SRC2_I64()
Definition: instructions.cc:34235
Gcn3ISA::Inst_VOP3__V_CMP_GE_F16::Inst_VOP3__V_CMP_GE_F16
Inst_VOP3__V_CMP_GE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16127
Gcn3ISA::Inst_DS__DS_READ2_B64::Inst_DS__DS_READ2_B64
Inst_DS__DS_READ2_B64(InFmt_DS *)
Definition: instructions.cc:33540
Gcn3ISA::REG_VCC_LO
@ REG_VCC_LO
Definition: registers.hh:57
Gcn3ISA::Inst_VOP3__V_ALIGNBIT_B32::Inst_VOP3__V_ALIGNBIT_B32
Inst_VOP3__V_ALIGNBIT_B32(InFmt_VOP3 *)
Definition: instructions.cc:28192
Gcn3ISA::Inst_VOP3__V_WRITELANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30531
Gcn3ISA::Inst_VOP3__V_MIN_I32::Inst_VOP3__V_MIN_I32
Inst_VOP3__V_MIN_I32(InFmt_VOP3 *)
Definition: instructions.cc:23787
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11118
Gcn3ISA::Inst_VOP3__V_MAD_U32_U24::~Inst_VOP3__V_MAD_U32_U24
~Inst_VOP3__V_MAD_U32_U24()
Definition: instructions.cc:27778
Gcn3ISA::Inst_VOP1__V_CVT_RPI_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7675
Gcn3ISA::Inst_VOPC__V_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13837
Gcn3ISA::Inst_VOP3__V_MQSAD_PK_U16_U8::~Inst_VOP3__V_MQSAD_PK_U16_U8
~Inst_VOP3__V_MQSAD_PK_U16_U8()
Definition: instructions.cc:29451
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F16::~Inst_VOP3__V_CMP_CLASS_F16
~Inst_VOP3__V_CMP_CLASS_F16()
Definition: instructions.cc:15959
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10359
Gcn3ISA::Inst_VOP3__V_CMP_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22408
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U32::~Inst_DS__DS_MIN_SRC2_U32
~Inst_DS__DS_MIN_SRC2_U32()
Definition: instructions.cc:33826
Gcn3ISA::Inst_SOPC__S_SET_GPR_IDX_ON::~Inst_SOPC__S_SET_GPR_IDX_ON
~Inst_SOPC__S_SET_GPR_IDX_ON()
Definition: instructions.cc:3638
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37748
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F64::Inst_VOPC__V_CMP_TRU_F64
Inst_VOPC__V_CMP_TRU_F64(InFmt_VOPC *)
Definition: instructions.cc:11980
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20560
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I32_F64::~Inst_VOP1__V_FREXP_EXP_I32_F64
~Inst_VOP1__V_FREXP_EXP_I32_F64()
Definition: instructions.cc:8791
Gcn3ISA::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:33998
Gcn3ISA::firstOppositeSignBit
ScalarRegI32 firstOppositeSignBit(ScalarRegI32 val)
Definition: inst_util.hh:174
Gcn3ISA::Inst_VOPC__V_CMPX_T_U64::Inst_VOPC__V_CMPX_T_U64
Inst_VOPC__V_CMPX_T_U64(InFmt_VOPC *)
Definition: instructions.cc:15408
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B64::~Inst_SOP1__S_FLBIT_I32_B64
~Inst_SOP1__S_FLBIT_I32_B64()
Definition: instructions.cc:2383
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::Inst_FLAT__FLAT_STORE_DWORDX3
Inst_FLAT__FLAT_STORE_DWORDX3(InFmt_FLAT *)
Definition: instructions.cc:40184
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37632
Gcn3ISA::Inst_DS__DS_READ2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32109
Gcn3ISA::Inst_VOP3__V_CMP_NE_U32::~Inst_VOP3__V_CMP_NE_U32
~Inst_VOP3__V_CMP_NE_U32()
Definition: instructions.cc:21124
Gcn3ISA::Inst_SOP2__S_BFE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1241
Gcn3ISA::Inst_VOP1__V_FLOOR_F64::Inst_VOP1__V_FLOOR_F64
Inst_VOP1__V_FLOOR_F64(InFmt_VOP1 *)
Definition: instructions.cc:8087
Gcn3ISA::Inst_VOP1__V_CVT_RPI_I32_F32::~Inst_VOP1__V_CVT_RPI_I32_F32
~Inst_VOP1__V_CVT_RPI_I32_F32()
Definition: instructions.cc:7669
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9190
Gcn3ISA::Inst_VOP2__V_MADAK_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6430
Gcn3ISA::Inst_VOP3__V_FLOOR_F16::~Inst_VOP3__V_FLOOR_F16
~Inst_VOP3__V_FLOOR_F16()
Definition: instructions.cc:27413
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_I32::~Inst_SOPK__S_CMPK_EQ_I32
~Inst_SOPK__S_CMPK_EQ_I32()
Definition: instructions.cc:1414
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I64::Inst_VOP3__V_CMPX_GT_I64
Inst_VOP3__V_CMPX_GT_I64(InFmt_VOP3 *)
Definition: instructions.cc:22620
Gcn3ISA::Inst_DS__DS_READ_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32070
Gcn3ISA::Inst_VOP3__V_MIN_F32::Inst_VOP3__V_MIN_F32
Inst_VOP3__V_MIN_F32(InFmt_VOP3 *)
Definition: instructions.cc:23679
Gcn3ISA::Inst_SOPC__S_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3261
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::~Inst_MUBUF__BUFFER_LOAD_UBYTE
~Inst_MUBUF__BUFFER_LOAD_UBYTE()
Definition: instructions.cc:35015
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F32::~Inst_DS__DS_MAX_SRC2_F32
~Inst_DS__DS_MAX_SRC2_F32()
Definition: instructions.cc:33964
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37386
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F64::~Inst_VOP3__V_CMP_NLT_F64
~Inst_VOP3__V_CMP_NLT_F64()
Definition: instructions.cc:18459
Gcn3ISA::Inst_VOP3__V_CMP_LT_F32::Inst_VOP3__V_CMP_LT_F32
Inst_VOP3__V_CMP_LT_F32(InFmt_VOP3 *)
Definition: instructions.cc:16676
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I64::Inst_DS__DS_MAX_SRC2_I64
Inst_DS__DS_MAX_SRC2_I64(InFmt_DS *)
Definition: instructions.cc:34249
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36657
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::Inst_FLAT__FLAT_LOAD_DWORD
Inst_FLAT__FLAT_LOAD_DWORD(InFmt_FLAT *)
Definition: instructions.cc:39589
Gcn3ISA::Inst_VOP3__V_CVT_PK_U16_U32::Inst_VOP3__V_CVT_PK_U16_U32
Inst_VOP3__V_CVT_PK_U16_U32(InFmt_VOP3 *)
Definition: instructions.cc:30934
Gcn3ISA::Inst_VOP3__V_MAD_U16::~Inst_VOP3__V_MAD_U16
~Inst_VOP3__V_MAD_U16()
Definition: instructions.cc:29601
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F16::Inst_VOPC__V_CMPX_NLT_F16
Inst_VOPC__V_CMPX_NLT_F16(InFmt_VOPC *)
Definition: instructions.cc:10436
Gcn3ISA::Inst_VOP1__V_EXP_F16::~Inst_VOP1__V_EXP_F16
~Inst_VOP1__V_EXP_F16()
Definition: instructions.cc:9137
Gcn3ISA::InFmt_VOP_DPP::SRC1_ABS
unsigned int SRC1_ABS
Definition: gpu_decoder.hh:1590
instructions.hh
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ()
Definition: instructions.cc:37447
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I16::Inst_SOP1__S_SEXT_I32_I16
Inst_SOP1__S_SEXT_I32_I16(InFmt_SOP1 *)
Definition: instructions.cc:2482
Gcn3ISA::Inst_VOP3__V_SUBREV_F16::~Inst_VOP3__V_SUBREV_F16
~Inst_VOP3__V_SUBREV_F16()
Definition: instructions.cc:24594
Gcn3ISA::Inst_VOP3__V_AND_B32::Inst_VOP3__V_AND_B32
Inst_VOP3__V_AND_B32(InFmt_VOP3 *)
Definition: instructions.cc:24076
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F64::~Inst_VOP3__V_FREXP_MANT_F64
~Inst_VOP3__V_FREXP_MANT_F64()
Definition: instructions.cc:27015
Gcn3ISA::Inst_VOP3__V_CMP_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17720
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37272
Gcn3ISA::Inst_DS__DS_WRITE2_B64::~Inst_DS__DS_WRITE2_B64
~Inst_DS__DS_WRITE2_B64()
Definition: instructions.cc:32949
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I64::~Inst_DS__DS_MAX_SRC2_I64
~Inst_DS__DS_MAX_SRC2_I64()
Definition: instructions.cc:34254
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U16::~Inst_VOPC__V_CMPX_GE_U16
~Inst_VOPC__V_CMPX_GE_U16()
Definition: instructions.cc:13446
Gcn3ISA::Inst_VOP3__V_MUL_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23519
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37419
Gcn3ISA::Inst_VOP3_SDST_ENC
Definition: op_encodings.hh:389
Gcn3ISA::Inst_SOPK__S_CMPK_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1495
Gcn3ISA::Inst_DS__DS_CMPST_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33042
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39165
Gcn3ISA::InFmt_SOP2::SSRC1
unsigned int SSRC1
Definition: gpu_decoder.hh:1500
Gcn3ISA::Inst_VOP1__V_FRACT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8865
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39484
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F16::~Inst_VOPC__V_CMP_NGE_F16
~Inst_VOPC__V_CMP_NGE_F16()
Definition: instructions.cc:10063
Gcn3ISA::Inst_DS__DS_DEC_RTN_U64::Inst_DS__DS_DEC_RTN_U64
Inst_DS__DS_DEC_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33181
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22719
Gcn3ISA::Inst_VOPC__V_CMP_LE_F16::~Inst_VOPC__V_CMP_LE_F16
~Inst_VOPC__V_CMP_LE_F16()
Definition: instructions.cc:9955
Gcn3ISA::Inst_DS__DS_BPERMUTE_B32::~Inst_DS__DS_BPERMUTE_B32
~Inst_DS__DS_BPERMUTE_B32()
Definition: instructions.cc:32586
Gcn3ISA::Inst_VOP3__V_CVT_PKACCUM_U8_F32::~Inst_VOP3__V_CVT_PKACCUM_U8_F32
~Inst_VOP3__V_CVT_PKACCUM_U8_F32()
Definition: instructions.cc:29818
Gcn3ISA::Inst_VOP3__V_CEIL_F32::~Inst_VOP3__V_CEIL_F32
~Inst_VOP3__V_CEIL_F32()
Definition: instructions.cc:26230
Gcn3ISA::Inst_SOPC__S_CMP_GE_U32::Inst_SOPC__S_CMP_GE_U32
Inst_SOPC__S_CMP_GE_U32(InFmt_SOPC *)
Definition: instructions.cc:3431
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38383
Gcn3ISA::Inst_DS__DS_INC_RTN_U64::~Inst_DS__DS_INC_RTN_U64
~Inst_DS__DS_INC_RTN_U64()
Definition: instructions.cc:33168
Gcn3ISA::Inst_SOP1__S_RFE_B64::~Inst_SOP1__S_RFE_B64
~Inst_SOP1__S_RFE_B64()
Definition: instructions.cc:2683
Gcn3ISA::Inst_SMEM__S_ATC_PROBE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5394
Gcn3ISA::roundNearestEven
T roundNearestEven(T val)
Definition: inst_util.hh:259
Gcn3ISA::Inst_SMEM__S_DCACHE_WB::~Inst_SMEM__S_DCACHE_WB
~Inst_SMEM__S_DCACHE_WB()
Definition: instructions.cc:5309
Gcn3ISA::Inst_VOP3__V_XOR_B32::Inst_VOP3__V_XOR_B32
Inst_VOP3__V_XOR_B32(InFmt_VOP3 *)
Definition: instructions.cc:24160
Gcn3ISA::Inst_VOP3__V_CMP_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22171
Gcn3ISA::Inst_VOP3__V_CMP_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20909
Gcn3ISA::Inst_VOP3__V_NOP::~Inst_VOP3__V_NOP
~Inst_VOP3__V_NOP()
Definition: instructions.cc:25186
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14046
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW()
Definition: instructions.cc:34719
Gcn3ISA::Inst_VOP2__V_SUBREV_F16::Inst_VOP2__V_SUBREV_F16
Inst_VOP2__V_SUBREV_F16(InFmt_VOP2 *)
Definition: instructions.cc:6775
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34886
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::~Inst_FLAT__FLAT_STORE_DWORD
~Inst_FLAT__FLAT_STORE_DWORD()
Definition: instructions.cc:40050
Gcn3ISA::Inst_VOP3__V_MAX3_F32::Inst_VOP3__V_MAX3_F32
Inst_VOP3__V_MAX3_F32(InFmt_VOP3 *)
Definition: instructions.cc:28432
Gcn3ISA::Inst_VOPC__V_CMP_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11605
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2148
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U32::~Inst_DS__DS_DEC_SRC2_U32
~Inst_DS__DS_DEC_SRC2_U32()
Definition: instructions.cc:33768
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::Inst_SMEM__S_BUFFER_LOAD_DWORDX2
Inst_SMEM__S_BUFFER_LOAD_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:4782
Gcn3ISA::InFmt_SOPC::SSRC1
unsigned int SSRC1
Definition: gpu_decoder.hh:1508
Gcn3ISA::Inst_SOPP__S_DECPERFLEVEL::~Inst_SOPP__S_DECPERFLEVEL
~Inst_SOPP__S_DECPERFLEVEL()
Definition: instructions.cc:4281
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34731
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND::~Inst_MUBUF__BUFFER_ATOMIC_AND
~Inst_MUBUF__BUFFER_ATOMIC_AND()
Definition: instructions.cc:36649
Gcn3ISA::Inst_VOP3__V_EXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26350
Gcn3ISA::Inst_VOP2__V_MAX_U32::Inst_VOP2__V_MAX_U32
Inst_VOP2__V_MAX_U32(InFmt_VOP2 *)
Definition: instructions.cc:6015
Gcn3ISA::Inst_SOP1__S_BREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2099
Gcn3ISA::Inst_DS__DS_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30999
Gcn3ISA::Inst_DS__DS_WRITE_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31582
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U32::Inst_VOPC__V_CMPX_EQ_U32
Inst_VOPC__V_CMPX_EQ_U32(InFmt_VOPC *)
Definition: instructions.cc:14280
Gcn3ISA::Inst_SOPP__S_ICACHE_INV::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4256
Gcn3ISA::Inst_VOP3__V_MAX_U32::Inst_VOP3__V_MAX_U32
Inst_VOP3__V_MAX_U32(InFmt_VOP3 *)
Definition: instructions.cc:23910
Gcn3ISA::VecElemU32
uint32_t VecElemU32
Definition: registers.hh:166
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20203
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I32::Inst_DS__DS_MAX_SRC2_I32
Inst_DS__DS_MAX_SRC2_I32(InFmt_DS *)
Definition: instructions.cc:33802
Gcn3ISA::Inst_VOP3__V_CMP_T_I32::Inst_VOP3__V_CMP_T_I32
Inst_VOP3__V_CMP_T_I32(InFmt_VOP3 *)
Definition: instructions.cc:20897
Gcn3ISA::Inst_VOP3__V_CVT_PK_U16_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30946
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER::~Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
~Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER()
Definition: instructions.cc:4366
Gcn3ISA::Inst_VOP3__V_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25521
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U16::Inst_VOPC__V_CMPX_LT_U16
Inst_VOPC__V_CMPX_LT_U16(InFmt_VOPC *)
Definition: instructions.cc:13280
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::~Inst_FLAT__FLAT_ATOMIC_XOR_X2
~Inst_FLAT__FLAT_ATOMIC_XOR_X2()
Definition: instructions.cc:41635
Gcn3ISA::Inst_DS__DS_WRITE_B96::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34439
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F64::Inst_VOP3__V_CMPX_CLASS_F64
Inst_VOP3__V_CMPX_CLASS_F64(InFmt_VOP3 *)
Definition: instructions.cc:15835
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21668
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::~Inst_DS__DS_WRXCHG2ST64_RTN_B64
~Inst_DS__DS_WRXCHG2ST64_RTN_B64()
Definition: instructions.cc:33386
Gcn3ISA::Inst_VOP3__V_CMP_LT_F32::~Inst_VOP3__V_CMP_LT_F32
~Inst_VOP3__V_CMP_LT_F32()
Definition: instructions.cc:16684
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32174
Gcn3ISA::findFirstOne
ScalarRegI32 findFirstOne(T val)
Definition: inst_util.hh:142
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L::Inst_MIMG__IMAGE_SAMPLE_L
Inst_MIMG__IMAGE_SAMPLE_L(InFmt_MIMG *)
Definition: instructions.cc:38356
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U32::Inst_VOPC__V_CMPX_LT_U32
Inst_VOPC__V_CMPX_LT_U32(InFmt_VOPC *)
Definition: instructions.cc:14248
Gcn3ISA::Inst_VOP3__V_SUBB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24466
Gcn3ISA::Inst_DS__DS_SWIZZLE_B32::~Inst_DS__DS_SWIZZLE_B32
~Inst_DS__DS_SWIZZLE_B32()
Definition: instructions.cc:32392
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECZ::Inst_SOPP__S_CBRANCH_EXECZ
Inst_SOPP__S_CBRANCH_EXECZ(InFmt_SOPP *)
Definition: instructions.cc:4022
Gcn3ISA::Inst_VOP2__V_LSHLREV_B32::Inst_VOP2__V_LSHLREV_B32
Inst_VOP2__V_LSHLREV_B32(InFmt_VOP2 *)
Definition: instructions.cc:6110
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37170
ComputeUnit::getLds
LdsState & getLds() const
Definition: compute_unit.hh:615
Gcn3ISA::Inst_VOP3__V_LDEXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30449
Gcn3ISA::Inst_VOP2__V_SUBREV_U16::Inst_VOP2__V_SUBREV_U16
Inst_VOP2__V_SUBREV_U16(InFmt_VOP2 *)
Definition: instructions.cc:6936
Wavefront::S_BARRIER
@ S_BARRIER
WF is stalled at a barrier.
Definition: wavefront.hh:85
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F16::Inst_VOPC__V_CMPX_EQ_F16
Inst_VOPC__V_CMPX_EQ_F16(InFmt_VOPC *)
Definition: instructions.cc:10218
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECZ::~Inst_SOPP__S_CBRANCH_EXECZ
~Inst_SOPP__S_CBRANCH_EXECZ()
Definition: instructions.cc:4028
Gcn3ISA::Inst_VOP3__V_MAD_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29653
Gcn3ISA::Inst_SOPC__S_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3287
Wavefront::dropFetch
bool dropFetch
Definition: wavefront.hh:105
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I8::Inst_SOP1__S_SEXT_I32_I8
Inst_SOP1__S_SEXT_I32_I8(InFmt_SOP1 *)
Definition: instructions.cc:2457
Gcn3ISA::Inst_VOP1__V_FFBH_U32::Inst_VOP1__V_FFBH_U32
Inst_VOP1__V_FFBH_U32(InFmt_VOP1 *)
Definition: instructions.cc:8693
Gcn3ISA::Inst_VOPC__V_CMPX_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15174
Gcn3ISA::Inst_VOP3__V_CMP_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21867
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39199
Gcn3ISA::Inst_VOP2__V_MAX_F32::Inst_VOP2__V_MAX_F32
Inst_VOP2__V_MAX_F32(InFmt_VOP2 *)
Definition: instructions.cc:5890
Gcn3ISA::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:5825
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38075
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10285
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7904
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I16::~Inst_SOP1__S_SEXT_I32_I16
~Inst_SOP1__S_SEXT_I32_I16()
Definition: instructions.cc:2488
Gcn3ISA::Inst_VOP3__V_FMA_F32::~Inst_VOP3__V_FMA_F32
~Inst_VOP3__V_FMA_F32()
Definition: instructions.cc:28026
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::~Inst_FLAT__FLAT_ATOMIC_INC_X2
~Inst_FLAT__FLAT_ATOMIC_INC_X2()
Definition: instructions.cc:41661
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37553
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN::Inst_FLAT__FLAT_ATOMIC_SMIN
Inst_FLAT__FLAT_ATOMIC_SMIN(InFmt_FLAT *)
Definition: instructions.cc:40760
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39248
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36413
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F16::~Inst_VOP3__V_DIV_FIXUP_F16
~Inst_VOP3__V_DIV_FIXUP_F16()
Definition: instructions.cc:29771
Gcn3ISA::Inst_EXP__EXP::~Inst_EXP__EXP
~Inst_EXP__EXP()
Definition: instructions.cc:39377
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5094
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16310
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41669
Gcn3ISA::Inst_VOPC__V_CMP_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10015
Gcn3ISA::Inst_VOP3__V_MAD_U16::Inst_VOP3__V_MAD_U16
Inst_VOP3__V_MAD_U16(InFmt_VOP3 *)
Definition: instructions.cc:29594
Gcn3ISA::Inst_SOP1__S_BITSET0_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2543
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39013
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10267
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F32::Inst_VOPC__V_CMPX_GE_F32
Inst_VOPC__V_CMPX_GE_F32(InFmt_VOPC *)
Definition: instructions.cc:11172
Gcn3ISA::Inst_SOP2__S_LSHL_B64::~Inst_SOP2__S_LSHL_B64
~Inst_SOP2__S_LSHL_B64()
Definition: instructions.cc:931
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36957
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::Inst_FLAT__FLAT_ATOMIC_AND_X2
Inst_FLAT__FLAT_ATOMIC_AND_X2(InFmt_FLAT *)
Definition: instructions.cc:41570
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16291
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I32::~Inst_VOP3__V_CMPX_LE_I32
~Inst_VOP3__V_CMPX_LE_I32()
Definition: instructions.cc:21348
Gcn3ISA::Inst_SOP2__S_SUBB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:221
Gcn3ISA::Inst_VOP3__V_CMP_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18078
Gcn3ISA::Inst_VOP3__V_CVT_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25463
Gcn3ISA::Inst_MUBUF::oobMask
VectorMask oobMask
Definition: op_encodings.hh:719
Gcn3ISA::Inst_VOP1__V_CVT_I32_F32::Inst_VOP1__V_CVT_I32_F32
Inst_VOP1__V_CVT_I32_F32(InFmt_VOP1 *)
Definition: instructions.cc:7563
Gcn3ISA::Inst_DS__DS_MIN_I64::~Inst_DS__DS_MIN_I64
~Inst_DS__DS_MIN_I64()
Definition: instructions.cc:32743
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::Inst_FLAT__FLAT_LOAD_USHORT
Inst_FLAT__FLAT_LOAD_USHORT(InFmt_FLAT *)
Definition: instructions.cc:39488
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17381
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F16::Inst_VOP3__V_FREXP_MANT_F16
Inst_VOP3__V_FREXP_MANT_F16(InFmt_VOP3 *)
Definition: instructions.cc:27367
Gcn3ISA::Inst_VOPC__V_CMP_GT_F16::~Inst_VOPC__V_CMP_GT_F16
~Inst_VOPC__V_CMP_GT_F16()
Definition: instructions.cc:9973
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F64::Inst_VOP3__V_CMPX_NEQ_F64
Inst_VOP3__V_CMPX_NEQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:19241
Gcn3ISA::Inst_SOPC__S_CMP_LG_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3695
Gcn3ISA::Inst_VOP3__V_WRITELANE_B32::~Inst_VOP3__V_WRITELANE_B32
~Inst_VOP3__V_WRITELANE_B32()
Definition: instructions.cc:30522
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L_O::~Inst_MIMG__IMAGE_SAMPLE_C_L_O
~Inst_MIMG__IMAGE_SAMPLE_C_L_O()
Definition: instructions.cc:38759
Gcn3ISA::Inst_SOP2__S_ANDN2_B32::~Inst_SOP2__S_ANDN2_B32
~Inst_SOP2__S_ANDN2_B32()
Definition: instructions.cc:601
Gcn3ISA::Inst_DS__DS_CMPST_F32::~Inst_DS__DS_CMPST_F32
~Inst_DS__DS_CMPST_F32()
Definition: instructions.cc:31419
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::~Inst_MUBUF__BUFFER_STORE_SHORT
~Inst_MUBUF__BUFFER_STORE_SHORT()
Definition: instructions.cc:35803
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_O::~Inst_MIMG__IMAGE_SAMPLE_D_O
~Inst_MIMG__IMAGE_SAMPLE_D_O()
Definition: instructions.cc:38592
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F64::Inst_VOPC__V_CMPX_NLG_F64
Inst_VOPC__V_CMPX_NLG_F64(InFmt_VOPC *)
Definition: instructions.cc:12337
Gcn3ISA::Inst_SOPK__S_CBRANCH_I_FORK::~Inst_SOPK__S_CBRANCH_I_FORK
~Inst_SOPK__S_CBRANCH_I_FORK()
Definition: instructions.cc:1768
Gcn3ISA::Inst_VOP3__V_LSHRREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23964
Gcn3ISA::Inst_VOP3__V_CMP_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16084
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F64::Inst_VOP3__V_DIV_FMAS_F64
Inst_VOP3__V_DIV_FMAS_F64(InFmt_VOP3 *)
Definition: instructions.cc:29341
Gcn3ISA::Inst_SOP2__S_XOR_B64::Inst_SOP2__S_XOR_B64
Inst_SOP2__S_XOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:565
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I32::Inst_VOPC__V_CMPX_GT_I32
Inst_VOPC__V_CMPX_GT_I32(InFmt_VOPC *)
Definition: instructions.cc:14098
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
Inst_MIMG__IMAGE_ATOMIC_CMPSWAP(InFmt_MIMG *)
Definition: instructions.cc:37972
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC0::~Inst_SOPP__S_CBRANCH_SCC0
~Inst_SOPP__S_CBRANCH_SCC0()
Definition: instructions.cc:3911
Gcn3ISA::Inst_SOPC__S_CMP_LT_U32::Inst_SOPC__S_CMP_LT_U32
Inst_SOPC__S_CMP_LT_U32(InFmt_SOPC *)
Definition: instructions.cc:3457
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F16::~Inst_VOPC__V_CMP_TRU_F16
~Inst_VOPC__V_CMP_TRU_F16()
Definition: instructions.cc:10171
Gcn3ISA::Inst_VOP3__V_QSAD_PK_U16_U8::~Inst_VOP3__V_QSAD_PK_U16_U8
~Inst_VOP3__V_QSAD_PK_U16_U8()
Definition: instructions.cc:29432
Gcn3ISA::Inst_SOP2__S_SUBB_U32::~Inst_SOP2__S_SUBB_U32
~Inst_SOP2__S_SUBB_U32()
Definition: instructions.cc:214
Gcn3ISA::Inst_VOPC__V_CMP_O_F16::Inst_VOPC__V_CMP_O_F16
Inst_VOPC__V_CMP_O_F16(InFmt_VOPC *)
Definition: instructions.cc:10020
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39080
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F16::Inst_VOP3__V_CMP_NLT_F16
Inst_VOP3__V_CMP_NLT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16277
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F32::Inst_VOPC__V_CMPX_LE_F32
Inst_VOPC__V_CMPX_LE_F32(InFmt_VOPC *)
Definition: instructions.cc:11072
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15517
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F16::~Inst_VOPC__V_CMPX_NEQ_F16
~Inst_VOPC__V_CMPX_NEQ_F16()
Definition: instructions.cc:10425
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39440
Gcn3ISA::Inst_VOP3__V_CMP_LG_F16::Inst_VOP3__V_CMP_LG_F16
Inst_VOP3__V_CMP_LG_F16(InFmt_VOP3 *)
Definition: instructions.cc:16108
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11052
Gcn3ISA::Inst_VOP3__V_NOP::Inst_VOP3__V_NOP
Inst_VOP3__V_NOP(InFmt_VOP3 *)
Definition: instructions.cc:25179
Gcn3ISA::Inst_VOP1__V_EXP_LEGACY_F32::Inst_VOP1__V_EXP_LEGACY_F32
Inst_VOP1__V_EXP_LEGACY_F32(InFmt_VOP1 *)
Definition: instructions.cc:9321
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F32::Inst_DS__DS_MIN_SRC2_F32
Inst_DS__DS_MIN_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:33938
Gcn3ISA::Inst_VOP3__V_BFM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30848
Gcn3ISA::Inst_VOP3__V_ADD_F64::Inst_VOP3__V_ADD_F64
Inst_VOP3__V_ADD_F64(InFmt_VOP3 *)
Definition: instructions.cc:29942
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::~Inst_MUBUF__BUFFER_ATOMIC_AND_X2
~Inst_MUBUF__BUFFER_ATOMIC_AND_X2()
Definition: instructions.cc:37003
Gcn3ISA::Inst_VOP3__V_ADD_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29955
Gcn3ISA::Inst_VOP2__V_MUL_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5762
Gcn3ISA::Inst_VOP3__V_CMP_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19631
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37176
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F32::Inst_VOP3__V_CMPX_CLASS_F32
Inst_VOP3__V_CMPX_CLASS_F32(InFmt_VOP3 *)
Definition: instructions.cc:15605
Gcn3ISA::Inst_VOP2__V_SUBREV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6788
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY()
Definition: instructions.cc:37413
Gcn3ISA::InFmt_SOPC::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1507
Gcn3ISA::Inst_DS__DS_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31449
Gcn3ISA::Inst_VOP3__V_MAD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29589
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2()
Definition: instructions.cc:36949
Gcn3ISA::Inst_VOP1__V_COS_F32::Inst_VOP1__V_COS_F32
Inst_VOP1__V_COS_F32(InFmt_VOP1 *)
Definition: instructions.cc:8597
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ::~Inst_MIMG__IMAGE_GATHER4_LZ
~Inst_MIMG__IMAGE_GATHER4_LZ()
Definition: instructions.cc:38907
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F32::Inst_VOPC__V_CMP_NLG_F32
Inst_VOPC__V_CMP_NLG_F32(InFmt_VOPC *)
Definition: instructions.cc:10790
Gcn3ISA::Inst_SOP1__S_SETPC_B64::~Inst_SOP1__S_SETPC_B64
~Inst_SOP1__S_SETPC_B64()
Definition: instructions.cc:2633
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F64::~Inst_VOPC__V_CMP_NLE_F64
~Inst_VOPC__V_CMP_NLE_F64()
Definition: instructions.cc:11891
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5135
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW(InFmt_MUBUF *)
Definition: instructions.cc:34710
Gcn3ISA::Inst_VOPC__V_CMP_F_I16::~Inst_VOPC__V_CMP_F_I16
~Inst_VOPC__V_CMP_F_I16()
Definition: instructions.cc:12537
Gcn3ISA::Inst_VOP1__V_COS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9316
Gcn3ISA::Inst_SMEM__S_MEMREALTIME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5379
Gcn3ISA::Inst_SOPP__S_WAITCNT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4140
Gcn3ISA::Inst_SOP2__S_AND_B32::Inst_SOP2__S_AND_B32
Inst_SOP2__S_AND_B32(InFmt_SOP2 *)
Definition: instructions.cc:415
Gcn3ISA::Inst_DS__DS_SUB_RTN_U64::Inst_DS__DS_SUB_RTN_U64
Inst_DS__DS_SUB_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33126
Gcn3ISA::Inst_VOP3__V_LDEXP_F64::Inst_VOP3__V_LDEXP_F64
Inst_VOP3__V_LDEXP_F64(InFmt_VOP3 *)
Definition: instructions.cc:30246
Gcn3ISA::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:38786
Gcn3ISA::Inst_VOP3__V_RSQ_F64::~Inst_VOP3__V_RSQ_F64
~Inst_VOP3__V_RSQ_F64()
Definition: instructions.cc:26592
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11321
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::~Inst_MIMG__IMAGE_LOAD_MIP_PCK
~Inst_MIMG__IMAGE_LOAD_MIP_PCK()
Definition: instructions.cc:37761
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18633
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F64::~Inst_VOPC__V_CMPX_NGE_F64
~Inst_VOPC__V_CMPX_NGE_F64()
Definition: instructions.cc:12311
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_I64::Inst_SOP1__S_FLBIT_I32_I64
Inst_SOP1__S_FLBIT_I32_I64(InFmt_SOP1 *)
Definition: instructions.cc:2430
Gcn3ISA::Inst_VOPC__V_CMP_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10033
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::Inst_MUBUF__BUFFER_ATOMIC_UMAX
Inst_MUBUF__BUFFER_ATOMIC_UMAX(InFmt_MUBUF *)
Definition: instructions.cc:36609
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::Inst_MUBUF__BUFFER_STORE_FORMAT_X
Inst_MUBUF__BUFFER_STORE_FORMAT_X(InFmt_MUBUF *)
Definition: instructions.cc:34620
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36408
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL::~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL()
Definition: instructions.cc:39294
Gcn3ISA::Inst_VOP3__V_SIN_F16::~Inst_VOP3__V_SIN_F16
~Inst_VOP3__V_SIN_F16()
Definition: instructions.cc:27503
Wavefront::scalarOutstandingReqsWrGm
int scalarOutstandingReqsWrGm
Definition: wavefront.hh:175
Gcn3ISA::Inst_VOP3__V_CVT_FLR_I32_F32::Inst_VOP3__V_CVT_FLR_I32_F32
Inst_VOP3__V_CVT_FLR_I32_F32(InFmt_VOP3 *)
Definition: instructions.cc:25601
Gcn3ISA::Inst_VOP1__V_CVT_U32_F32::Inst_VOP1__V_CVT_U32_F32
Inst_VOP1__V_CVT_U32_F32(InFmt_VOP1 *)
Definition: instructions.cc:7517
Gcn3ISA::Inst_DS__DS_MAX_RTN_I32::Inst_DS__DS_MAX_RTN_I32
Inst_DS__DS_MAX_RTN_I32(InFmt_DS *)
Definition: instructions.cc:31737
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ()
Definition: instructions.cc:37316
Gcn3ISA::wholeQuadMode
T wholeQuadMode(T val)
Definition: inst_util.hh:90
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37860
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34585
Gcn3ISA::Inst_SOPK__S_MULK_I32::~Inst_SOPK__S_MULK_I32
~Inst_SOPK__S_MULK_I32()
Definition: instructions.cc:1744
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34580
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I64::~Inst_VOPC__V_CMPX_LE_I64
~Inst_VOPC__V_CMPX_LE_I64()
Definition: instructions.cc:15040
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F64::~Inst_VOP3__V_CMP_NLG_F64
~Inst_VOP3__V_CMP_NLG_F64()
Definition: instructions.cc:18238
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37626
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F64::Inst_DS__DS_MIN_SRC2_F64
Inst_DS__DS_MIN_SRC2_F64(InFmt_DS *)
Definition: instructions.cc:34385
Gcn3ISA::Inst_VOP3__V_RNDNE_F64::~Inst_VOP3__V_RNDNE_F64
~Inst_VOP3__V_RNDNE_F64()
Definition: instructions.cc:26077
Gcn3ISA::Inst_VOP3__V_MED3_U32::Inst_VOP3__V_MED3_U32
Inst_VOP3__V_MED3_U32(InFmt_VOP3 *)
Definition: instructions.cc:28680
Gcn3ISA::Inst_VOP2__V_MIN_U32::~Inst_VOP2__V_MIN_U32
~Inst_VOP2__V_MIN_U32()
Definition: instructions.cc:5990
Gcn3ISA::Inst_VOP3__V_CVT_I32_F64::Inst_VOP3__V_CVT_I32_F64
Inst_VOP3__V_CVT_I32_F64(InFmt_VOP3 *)
Definition: instructions.cc:25226
Gcn3ISA::Inst_SOP2__S_ADD_U32::Inst_SOP2__S_ADD_U32
Inst_SOP2__S_ADD_U32(InFmt_SOP2 *)
Definition: instructions.cc:48
Gcn3ISA::Inst_DS__DS_READ_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:33526
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F64::~Inst_VOP3__V_CMP_NGT_F64
~Inst_VOP3__V_CMP_NGT_F64()
Definition: instructions.cc:18294
Gcn3ISA::Inst_SOP1__S_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1878
Gcn3ISA::Inst_SOPK__S_CBRANCH_I_FORK::Inst_SOPK__S_CBRANCH_I_FORK
Inst_SOPK__S_CBRANCH_I_FORK(InFmt_SOPK *)
Definition: instructions.cc:1762
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2391
Gcn3ISA::Inst_SOP2__S_ADDC_U32::~Inst_SOP2__S_ADDC_U32
~Inst_SOP2__S_ADDC_U32()
Definition: instructions.cc:181
Gcn3ISA::Inst_VOP3__V_CMP_NE_U32::Inst_VOP3__V_CMP_NE_U32
Inst_VOP3__V_CMP_NE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21117
Gcn3ISA::Inst_SOP2__S_ADD_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:124
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::~Inst_MUBUF__BUFFER_STORE_DWORDX4
~Inst_MUBUF__BUFFER_STORE_DWORDX4()
Definition: instructions.cc:36197
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_AND::~Inst_MIMG__IMAGE_ATOMIC_AND
~Inst_MIMG__IMAGE_ATOMIC_AND()
Definition: instructions.cc:38174
Gcn3ISA::Inst_SOP1__S_CMOV_B64::~Inst_SOP1__S_CMOV_B64
~Inst_SOP1__S_CMOV_B64()
Definition: instructions.cc:1949
Gcn3ISA::Inst_VOPC__V_CMP_LE_U64::~Inst_VOPC__V_CMP_LE_U64
~Inst_VOPC__V_CMP_LE_U64()
Definition: instructions.cc:14799
Gcn3ISA::Inst_VOP1__V_EXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8281
Gcn3ISA::Inst_VOP3_SDST_ENC::instData
InFmt_VOP3_SDST_ENC instData
Definition: op_encodings.hh:404
Gcn3ISA::Inst_VOPC__V_CMP_LT_F16::Inst_VOPC__V_CMP_LT_F16
Inst_VOPC__V_CMP_LT_F16(InFmt_VOPC *)
Definition: instructions.cc:9912
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I64::Inst_VOPC__V_CMPX_LT_I64
Inst_VOPC__V_CMPX_LT_I64(InFmt_VOPC *)
Definition: instructions.cc:14970
Gcn3ISA::Inst_VOP3__V_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23160
Gcn3ISA::Inst_VOP3__V_INTERP_P1_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29846
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39952
Gcn3ISA::Inst_VOP3__V_LERP_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28151
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21625
Gcn3ISA::Inst_VOP3__V_CUBESC_F32::~Inst_VOP3__V_CUBESC_F32
~Inst_VOP3__V_CUBESC_F32()
Definition: instructions.cc:27840
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13142
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40642
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::~Inst_SMEM__S_BUFFER_LOAD_DWORDX4
~Inst_SMEM__S_BUFFER_LOAD_DWORDX4()
Definition: instructions.cc:4849
popCount
int popCount(uint64_t val)
Returns the number of set ones in the provided value.
Definition: bitfield.hh:285
Gcn3ISA::Inst_SOP2__S_BFE_U32::Inst_SOP2__S_BFE_U32
Inst_SOP2__S_BFE_U32(InFmt_SOP2 *)
Definition: instructions.cc:1159
Gcn3ISA::Inst_VOP1__V_RNDNE_F32::~Inst_VOP1__V_RNDNE_F32
~Inst_VOP1__V_RNDNE_F32()
Definition: instructions.cc:8215
Gcn3ISA::Inst_DS__DS_READ2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33555
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33158
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE1::~Inst_VOP1__V_CVT_F32_UBYTE1
~Inst_VOP1__V_CVT_F32_UBYTE1()
Definition: instructions.cc:7838
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F64::Inst_VOP3__V_DIV_FIXUP_F64
Inst_VOP3__V_DIV_FIXUP_F64(InFmt_VOP3 *)
Definition: instructions.cc:29048
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34574
Gcn3ISA::Inst_SOP2__S_ORN2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:698
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F64::Inst_VOP3__V_CMP_NLE_F64
Inst_VOP3__V_CMP_NLE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18341
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U16::~Inst_VOP3__V_CMPX_LE_U16
~Inst_VOP3__V_CMPX_LE_U16()
Definition: instructions.cc:20425
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B64::Inst_DS__DS_CMPST_RTN_B64
Inst_DS__DS_CMPST_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33397
Gcn3ISA::Inst_SOP1__S_FF0_I32_B32::~Inst_SOP1__S_FF0_I32_B32
~Inst_SOP1__S_FF0_I32_B32()
Definition: instructions.cc:2253
Gcn3ISA::Inst_DS__DS_MIN_RTN_I32::Inst_DS__DS_MIN_RTN_I32
Inst_DS__DS_MIN_RTN_I32(InFmt_DS *)
Definition: instructions.cc:31719
Gcn3ISA::Inst_VOP3__V_SUBREV_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24736
Gcn3ISA::Inst_SOP1__S_MOV_B64::~Inst_SOP1__S_MOV_B64
~Inst_SOP1__S_MOV_B64()
Definition: instructions.cc:1896
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41388
Gcn3ISA::Inst_DS__DS_MIN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32751
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34520
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39585
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I16::~Inst_VOP3__V_CMPX_NE_I16
~Inst_VOP3__V_CMPX_NE_I16()
Definition: instructions.cc:20197
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L_O::~Inst_MIMG__IMAGE_SAMPLE_L_O
~Inst_MIMG__IMAGE_SAMPLE_L_O()
Definition: instructions.cc:38625
Gcn3ISA::Inst_SOPK__S_CMPK_LE_U32::~Inst_SOPK__S_CMPK_LE_U32
~Inst_SOPK__S_CMPK_LE_U32()
Definition: instructions.cc:1689
Wavefront::wfSlotId
const int wfSlotId
Definition: wavefront.hh:89
Gcn3ISA::Inst_DS__DS_OR_RTN_B32::Inst_DS__DS_OR_RTN_B32
Inst_DS__DS_OR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31809
Gcn3ISA::Inst_VOP3__V_TRUNC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26198
Gcn3ISA::Inst_VOP2__V_MIN_U16::Inst_VOP2__V_MIN_U16
Inst_VOP2__V_MIN_U16(InFmt_VOP2 *)
Definition: instructions.cc:7191
Gcn3ISA::Inst_SOP1__S_MOV_B32::Inst_SOP1__S_MOV_B32
Inst_SOP1__S_MOV_B32(InFmt_SOP1 *)
Definition: instructions.cc:1866
Gcn3ISA::Inst_VOPC__V_CMP_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12900
Gcn3ISA::Inst_VOP1__V_CEIL_F32::Inst_VOP1__V_CEIL_F32
Inst_VOP1__V_CEIL_F32(InFmt_VOP1 *)
Definition: instructions.cc:8178
Gcn3ISA::Inst_DS__DS_RSUB_U32::~Inst_DS__DS_RSUB_U32
~Inst_DS__DS_RSUB_U32()
Definition: instructions.cc:31009
Gcn3ISA::Inst_VOP2__V_LDEXP_F16::~Inst_VOP2__V_LDEXP_F16
~Inst_VOP2__V_LDEXP_F16()
Definition: instructions.cc:7260
Gcn3ISA::Inst_DS__DS_WRITE_B32::~Inst_DS__DS_WRITE_B32
~Inst_DS__DS_WRITE_B32()
Definition: instructions.cc:31210
Gcn3ISA::Inst_VOP1__V_RNDNE_F16::Inst_VOP1__V_RNDNE_F16
Inst_VOP1__V_RNDNE_F16(InFmt_VOP1 *)
Definition: instructions.cc:9249
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F32::~Inst_VOP3__V_CMPX_GE_F32
~Inst_VOP3__V_CMPX_GE_F32()
Definition: instructions.cc:17375
Gcn3ISA::Inst_VOPC__V_CMP_T_U32::~Inst_VOPC__V_CMP_T_U32
~Inst_VOPC__V_CMP_T_U32()
Definition: instructions.cc:13955
Gcn3ISA::InFmt_VOP_SDWA::SRC1_SEXT
unsigned int SRC1_SEXT
Definition: gpu_decoder.hh:1607
Gcn3ISA::Inst_VOP3__V_CMP_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22062
Gcn3ISA::Inst_VOP3__V_LOG_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27591
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F64::Inst_VOPC__V_CMP_CLASS_F64
Inst_VOPC__V_CMP_CLASS_F64(InFmt_VOPC *)
Definition: instructions.cc:9606
Gcn3ISA::Inst_SOP2__S_BFM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1091
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13324
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B32::~Inst_DS__DS_WRXCHG2_RTN_B32
~Inst_DS__DS_WRXCHG2_RTN_B32()
Definition: instructions.cc:31887
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19086
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F32::Inst_VOP3__V_CMP_NLT_F32
Inst_VOP3__V_CMP_NLT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17106
Gcn3ISA::Inst_VOP2__V_MUL_HI_I32_I24::~Inst_VOP2__V_MUL_HI_I32_I24
~Inst_VOP2__V_MUL_HI_I32_I24()
Definition: instructions.cc:5720
Gcn3ISA::Inst_VOP3__V_CMP_LE_U16::Inst_VOP3__V_CMP_LE_U16
Inst_VOP3__V_CMP_LE_U16(InFmt_VOP3 *)
Definition: instructions.cc:19796
Gcn3ISA::Inst_VOP3__V_CMP_GT_I16::Inst_VOP3__V_CMP_GT_I16
Inst_VOP3__V_CMP_GT_I16(InFmt_VOP3 *)
Definition: instructions.cc:19534
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41449
Gcn3ISA::Inst_VOP3__V_MUL_LO_U32::~Inst_VOP3__V_MUL_LO_U32
~Inst_VOP3__V_MUL_LO_U32()
Definition: instructions.cc:30311
Gcn3ISA::Inst_VOPC__V_CMP_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13723
Gcn3ISA::Inst_SOP2__S_NOR_B64::~Inst_SOP2__S_NOR_B64
~Inst_SOP2__S_NOR_B64()
Definition: instructions.cc:811
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECNZ::~Inst_SOPP__S_CBRANCH_EXECNZ
~Inst_SOPP__S_CBRANCH_EXECNZ()
Definition: instructions.cc:4053
Gcn3ISA::Inst_SOP2__S_ADDC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:189
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40830
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4946
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F32::~Inst_VOP3__V_CMP_NLT_F32
~Inst_VOP3__V_CMP_NLT_F32()
Definition: instructions.cc:17114
Gcn3ISA::Inst_VOPC__V_CMP_NE_U64::Inst_VOPC__V_CMP_NE_U64
Inst_VOPC__V_CMP_NE_U64(InFmt_VOPC *)
Definition: instructions.cc:14855
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29805
Gcn3ISA::Inst_VOP3__V_RCP_IFLAG_F32::Inst_VOP3__V_RCP_IFLAG_F32
Inst_VOP3__V_RCP_IFLAG_F32(InFmt_VOP3 *)
Definition: instructions.cc:26459
Gcn3ISA::Inst_VOP2__V_LSHRREV_B32::~Inst_VOP2__V_LSHRREV_B32
~Inst_VOP2__V_LSHRREV_B32()
Definition: instructions.cc:6052
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37431
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F32::~Inst_DS__DS_CMPST_RTN_F32
~Inst_DS__DS_CMPST_RTN_F32()
Definition: instructions.cc:31942
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I64::Inst_VOPC__V_CMPX_NE_I64
Inst_VOPC__V_CMPX_NE_I64(InFmt_VOPC *)
Definition: instructions.cc:15098
Gcn3ISA::Inst_SOP2__S_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:428
Gcn3ISA::Inst_SOP2__S_ORN2_B32::Inst_SOP2__S_ORN2_B32
Inst_SOP2__S_ORN2_B32(InFmt_SOP2 *)
Definition: instructions.cc:655
Gcn3ISA::Inst_VOP3__V_LERP_U8::Inst_VOP3__V_LERP_U8
Inst_VOP3__V_LERP_U8(InFmt_VOP3 *)
Definition: instructions.cc:28136
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F32::~Inst_VOPC__V_CMPX_LE_F32
~Inst_VOPC__V_CMPX_LE_F32()
Definition: instructions.cc:11079
Gcn3ISA::Inst_DS__DS_WRITE_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32928
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3977
Gcn3ISA::Inst_VOP3__V_CMP_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22020
Gcn3ISA::Inst_VOP2__V_MAX_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7172
Gcn3ISA::Inst_DS__DS_WRITE_B128::~Inst_DS__DS_WRITE_B128
~Inst_DS__DS_WRITE_B128()
Definition: instructions.cc:34451
Gcn3ISA::Inst_VOP3__V_LSHLREV_B64::Inst_VOP3__V_LSHLREV_B64
Inst_VOP3__V_LSHLREV_B64(InFmt_VOP3 *)
Definition: instructions.cc:30693
Gcn3ISA::Inst_VOP1__V_CVT_I16_F16::Inst_VOP1__V_CVT_I16_F16
Inst_VOP1__V_CVT_I16_F16(InFmt_VOP1 *)
Definition: instructions.cc:9028
Gcn3ISA::Inst_SOP1__S_MOVRELS_B64::~Inst_SOP1__S_MOVRELS_B64
~Inst_SOP1__S_MOVRELS_B64()
Definition: instructions.cc:3040
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ::~Inst_MIMG__IMAGE_SAMPLE_LZ
~Inst_MIMG__IMAGE_SAMPLE_LZ()
Definition: instructions.cc:38411
Gcn3ISA::Inst_VOP3__V_TRIG_PREOP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30831
Gcn3ISA::Inst_DS__DS_READ2_B32::Inst_DS__DS_READ2_B32
Inst_DS__DS_READ2_B32(InFmt_DS *)
Definition: instructions.cc:32094
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U64::Inst_VOP3__V_CMPX_EQ_U64
Inst_VOP3__V_CMPX_EQ_U64(InFmt_VOP3 *)
Definition: instructions.cc:22848
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F32::~Inst_VOP3__V_CMPX_EQ_F32
~Inst_VOP3__V_CMPX_EQ_F32()
Definition: instructions.cc:17238
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL::~Inst_MIMG__IMAGE_GATHER4_C_CL
~Inst_MIMG__IMAGE_GATHER4_C_CL()
Definition: instructions.cc:38940
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::Inst_MUBUF__BUFFER_ATOMIC_UMIN
Inst_MUBUF__BUFFER_ATOMIC_UMIN(InFmt_MUBUF *)
Definition: instructions.cc:36555
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F64::Inst_VOP3__V_CMPX_NLT_F64
Inst_VOP3__V_CMPX_NLT_F64(InFmt_VOP3 *)
Definition: instructions.cc:19297
Gcn3ISA::Inst_MUBUF::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, VOFF v_off, VIDX v_idx, SRSRC s_rsrc_desc, SOFF s_offset, int inst_offset)
MUBUF insructions calculate their addresses as follows:
Definition: op_encodings.hh:616
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13568
Gcn3ISA::Inst_VOP3__V_SUB_U32::Inst_VOP3__V_SUB_U32
Inst_VOP3__V_SUB_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24304
Gcn3ISA::Inst_SOP2__S_BFM_B32::Inst_SOP2__S_BFM_B32
Inst_SOP2__S_BFM_B32(InFmt_SOP2 *)
Definition: instructions.cc:1079
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F16::~Inst_VOP3__V_CMPX_LE_F16
~Inst_VOP3__V_CMPX_LE_F16()
Definition: instructions.cc:16398
Gcn3ISA::Inst_SOPK__S_MOVK_I32::Inst_SOPK__S_MOVK_I32
Inst_SOPK__S_MOVK_I32(InFmt_SOPK *)
Definition: instructions.cc:1358
Nop
def format Nop(code, *opt_flags)
Definition: nop.cc:82
Gcn3ISA::InFmt_DS::OFFSET1
unsigned int OFFSET1
Definition: gpu_decoder.hh:1359
Gcn3ISA::Inst_VOPC__V_CMP_LT_I16::~Inst_VOPC__V_CMP_LT_I16
~Inst_VOPC__V_CMP_LT_I16()
Definition: instructions.cc:12563
Gcn3ISA::Inst_VOP3__V_INTERP_P1LV_F16::~Inst_VOP3__V_INTERP_P1LV_F16
~Inst_VOP3__V_INTERP_P1LV_F16()
Definition: instructions.cc:29914
Gcn3ISA::Inst_VOPC__V_CMP_LE_U16::~Inst_VOPC__V_CMP_LE_U16
~Inst_VOPC__V_CMP_LE_U16()
Definition: instructions.cc:12863
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F32::~Inst_VOPC__V_CMP_NGE_F32
~Inst_VOPC__V_CMP_NGE_F32()
Definition: instructions.cc:10765
Gcn3ISA::Inst_VOP3__V_CMPX_F_F32::~Inst_VOP3__V_CMPX_F_F32
~Inst_VOP3__V_CMPX_F_F32()
Definition: instructions.cc:17175
Gcn3ISA::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:37604
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::~Inst_DS__DS_WRXCHG2ST64_RTN_B32
~Inst_DS__DS_WRXCHG2ST64_RTN_B32()
Definition: instructions.cc:31904
Gcn3ISA::Inst_VOP3__V_LSHLREV_B64::~Inst_VOP3__V_LSHLREV_B64
~Inst_VOP3__V_LSHLREV_B64()
Definition: instructions.cc:30699
Gcn3ISA::Inst_VOP3__V_ADD_U32::~Inst_VOP3__V_ADD_U32
~Inst_VOP3__V_ADD_U32()
Definition: instructions.cc:24265
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F16::Inst_VOPC__V_CMP_TRU_F16
Inst_VOPC__V_CMP_TRU_F16(InFmt_VOPC *)
Definition: instructions.cc:10164
Gcn3ISA::Inst_VOP3__V_SIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27509
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::~Inst_MIMG__IMAGE_STORE_MIP_PCK
~Inst_MIMG__IMAGE_STORE_MIP_PCK()
Definition: instructions.cc:37907
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::Inst_MIMG__IMAGE_SAMPLE_B_CL
Inst_MIMG__IMAGE_SAMPLE_B_CL(InFmt_MIMG *)
Definition: instructions.cc:38388
Gcn3ISA::InFmt_FLAT
Definition: gpu_decoder.hh:1390
Gcn3ISA::Inst_VOP3__V_CUBEID_F32::Inst_VOP3__V_CUBEID_F32
Inst_VOP3__V_CUBEID_F32(InFmt_VOP3 *)
Definition: instructions.cc:27816
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36738
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38432
Gcn3ISA::Inst_VOP3__V_CMP_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17968
Gcn3ISA::Inst_SOPP__S_INCPERFLEVEL::~Inst_SOPP__S_INCPERFLEVEL
~Inst_SOPP__S_INCPERFLEVEL()
Definition: instructions.cc:4266
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F16::~Inst_VOPC__V_CMPX_TRU_F16
~Inst_VOPC__V_CMPX_TRU_F16()
Definition: instructions.cc:10461
Wavefront::setStatus
void setStatus(status_e newStatus)
Definition: wavefront.cc:591
Gcn3ISA::Inst_VOPC__V_CMP_F_F64::~Inst_VOPC__V_CMP_F_F64
~Inst_VOPC__V_CMP_F_F64()
Definition: instructions.cc:11508
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38129
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS::~Inst_SOPP__S_CBRANCH_CDBGSYS
~Inst_SOPP__S_CBRANCH_CDBGSYS()
Definition: instructions.cc:4313
Gcn3ISA::Inst_DS__DS_READ_I8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32239
Gcn3ISA::Inst_SOPK__S_CMPK_LT_I32::~Inst_SOPK__S_CMPK_LT_I32
~Inst_SOPK__S_CMPK_LT_I32()
Definition: instructions.cc:1514
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::Inst_SMEM__S_LOAD_DWORDX2
Inst_SMEM__S_LOAD_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:4493
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F32::Inst_VOPC__V_CMP_NGT_F32
Inst_VOPC__V_CMP_NGT_F32(InFmt_VOPC *)
Definition: instructions.cc:10823
Gcn3ISA::Inst_VOP3__V_SQRT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26646
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39642
Gcn3ISA::Inst_DS__DS_OR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31822
Gcn3ISA::Inst_VOP3__V_CMP_F_I16::~Inst_VOP3__V_CMP_F_I16
~Inst_VOP3__V_CMP_F_I16()
Definition: instructions.cc:19388
Gcn3ISA::InFmt_VOP2
Definition: gpu_decoder.hh:1542
Gcn3ISA::Inst_VOP3__V_MAX_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24950
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC::Inst_MUBUF__BUFFER_ATOMIC_INC
Inst_MUBUF__BUFFER_ATOMIC_INC(InFmt_MUBUF *)
Definition: instructions.cc:36717
Gcn3ISA::Inst_DS__DS_INC_U32::Inst_DS__DS_INC_U32
Inst_DS__DS_INC_U32(InFmt_DS *)
Definition: instructions.cc:31023
Gcn3ISA::Inst_VOP2__V_MUL_F16::Inst_VOP2__V_MUL_F16
Inst_VOP2__V_MUL_F16(InFmt_VOP2 *)
Definition: instructions.cc:6793
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33620
Gcn3ISA::Inst_VOP3__V_CEIL_F32::Inst_VOP3__V_CEIL_F32
Inst_VOP3__V_CEIL_F32(InFmt_VOP3 *)
Definition: instructions.cc:26223
Gcn3ISA::Inst_VOP1__V_COS_F32::~Inst_VOP1__V_COS_F32
~Inst_VOP1__V_COS_F32()
Definition: instructions.cc:8604
Gcn3ISA::Inst_VOP3__V_LSHRREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30747
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I32::Inst_VOPC__V_CMPX_NE_I32
Inst_VOPC__V_CMPX_NE_I32(InFmt_VOPC *)
Definition: instructions.cc:14130
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE2::Inst_VOP1__V_CVT_F32_UBYTE2
Inst_VOP1__V_CVT_F32_UBYTE2(InFmt_VOP1 *)
Definition: instructions.cc:7861
Gcn3ISA::Inst_VOP1__V_LOG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8311
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I32::Inst_VOP3__V_CMPX_LE_I32
Inst_VOP3__V_CMPX_LE_I32(InFmt_VOP3 *)
Definition: instructions.cc:21341
Gcn3ISA::Inst_VOP3__V_BCNT_U32_B32::Inst_VOP3__V_BCNT_U32_B32
Inst_VOP3__V_BCNT_U32_B32(InFmt_VOP3 *)
Definition: instructions.cc:30556
Gcn3ISA::Inst_VOP3__V_MOV_FED_B32::Inst_VOP3__V_MOV_FED_B32
Inst_VOP3__V_MOV_FED_B32(InFmt_VOP3 *)
Definition: instructions.cc:25508
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36522
Gcn3ISA::Inst_DS__DS_MIN_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33454
Gcn3ISA::Inst_SOPP__S_ICACHE_INV::Inst_SOPP__S_ICACHE_INV
Inst_SOPP__S_ICACHE_INV(InFmt_SOPP *)
Definition: instructions.cc:4245
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::Inst_FLAT__FLAT_ATOMIC_DEC_X2
Inst_FLAT__FLAT_ATOMIC_DEC_X2(InFmt_FLAT *)
Definition: instructions.cc:41747
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::Inst_MUBUF__BUFFER_ATOMIC_SMAX
Inst_MUBUF__BUFFER_ATOMIC_SMAX(InFmt_MUBUF *)
Definition: instructions.cc:36582
Gcn3ISA::Inst_VOPC__V_CMP_O_F32::~Inst_VOPC__V_CMP_O_F32
~Inst_VOPC__V_CMP_O_F32()
Definition: instructions.cc:10699
Gcn3ISA::Inst_VOP3__V_CUBEID_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27828
Gcn3ISA::Inst_SOP1__S_CBRANCH_JOIN::~Inst_SOP1__S_CBRANCH_JOIN
~Inst_SOP1__S_CBRANCH_JOIN()
Definition: instructions.cc:3120
Gcn3ISA::Inst_VOP2__V_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5464
Gcn3ISA::Inst_VOP3__V_CMP_GT_U16::Inst_VOP3__V_CMP_GT_U16
Inst_VOP3__V_CMP_GT_U16(InFmt_VOP3 *)
Definition: instructions.cc:19838
Gcn3ISA::Inst_VOP3__V_CMP_LT_I64::Inst_VOP3__V_CMP_LT_I64
Inst_VOP3__V_CMP_LT_I64(InFmt_VOP3 *)
Definition: instructions.cc:21881
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35598
Gcn3ISA::Inst_VOP1__V_CVT_OFF_F32_I4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7736
Gcn3ISA::InFmt_DS
Definition: gpu_decoder.hh:1357
Gcn3ISA::Inst_VOP1__V_RSQ_F32::~Inst_VOP1__V_RSQ_F32
~Inst_VOP1__V_RSQ_F32()
Definition: instructions.cc:8395
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20031
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::~Inst_MIMG__IMAGE_LOAD_PCK_SGN
~Inst_MIMG__IMAGE_LOAD_PCK_SGN()
Definition: instructions.cc:37731
Gcn3ISA::Inst_SOP1__S_BITSET1_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2567
Wavefront::wrLmReqsInPipe
int wrLmReqsInPipe
Definition: wavefront.hh:178
Gcn3ISA::Inst_VOP1__V_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8646
GPUStaticInst::isDPPInst
bool isDPPInst() const
Definition: gpu_static_inst.hh:112
Gcn3ISA::Inst_VOP3__V_CMP_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17913
Gcn3ISA::Inst_VOP1__V_SQRT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9083
Gcn3ISA::Inst_MIMG__IMAGE_STORE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37837
Gcn3ISA::Inst_VOP3__V_BFE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27942
Gcn3ISA::Inst_VOP3__V_CVT_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25539
Gcn3ISA::Inst_VOP2__V_SUB_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6917
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15046
Gcn3ISA::Inst_VOP3__V_MIN3_F32::Inst_VOP3__V_MIN3_F32
Inst_VOP3__V_MIN3_F32(InFmt_VOP3 *)
Definition: instructions.cc:28285
ComputeUnit
Definition: compute_unit.hh:198
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37425
Gcn3ISA::Inst_VOP3__V_CMPX_F_F64::~Inst_VOP3__V_CMPX_F_F64
~Inst_VOP3__V_CMPX_F_F64()
Definition: instructions.cc:18542
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11897
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F16::~Inst_VOP3__V_FREXP_MANT_F16
~Inst_VOP3__V_FREXP_MANT_F16()
Definition: instructions.cc:27374
Gcn3ISA::Inst_VOP3__V_ADDC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24413
Gcn3ISA::Inst_SOP2__S_LSHR_B32::Inst_SOP2__S_LSHR_B32
Inst_SOP2__S_LSHR_B32(InFmt_SOP2 *)
Definition: instructions.cc:955
Gcn3ISA::Inst_SOP2__S_ABSDIFF_I32::~Inst_SOP2__S_ABSDIFF_I32
~Inst_SOP2__S_ABSDIFF_I32()
Definition: instructions.cc:1318
Gcn3ISA::Inst_VOP3__V_CMPX_F_I64::~Inst_VOP3__V_CMPX_F_I64
~Inst_VOP3__V_CMPX_F_I64()
Definition: instructions.cc:22470
Gcn3ISA::Inst_DS__DS_INC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31036
Gcn3ISA::Inst_VOP3__V_COS_F32::Inst_VOP3__V_COS_F32
Inst_VOP3__V_COS_F32(InFmt_VOP3 *)
Definition: instructions.cc:26749
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::Inst_FLAT__FLAT_ATOMIC_XOR_X2
Inst_FLAT__FLAT_ATOMIC_XOR_X2(InFmt_FLAT *)
Definition: instructions.cc:41622
Gcn3ISA::Inst_VOP3__V_CMPX_F_F16::Inst_VOP3__V_CMPX_F_F16
Inst_VOP3__V_CMPX_F_F16(InFmt_VOP3 *)
Definition: instructions.cc:16324
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::Inst_MUBUF__BUFFER_LOAD_SBYTE
Inst_MUBUF__BUFFER_LOAD_SBYTE(InFmt_MUBUF *)
Definition: instructions.cc:35104
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_AND::Inst_MIMG__IMAGE_ATOMIC_AND
Inst_MIMG__IMAGE_ATOMIC_AND(InFmt_MIMG *)
Definition: instructions.cc:38161
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29155
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U16::~Inst_VOP3__V_CMPX_GE_U16
~Inst_VOP3__V_CMPX_GE_U16()
Definition: instructions.cc:20554
Gcn3ISA::Inst_VOPC__V_CMP_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12724
Gcn3ISA::Inst_SOPC__S_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3469
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I32::Inst_VOP3__V_CMP_EQ_I32
Inst_VOP3__V_CMP_EQ_I32(InFmt_VOP3 *)
Definition: instructions.cc:20687
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4::Inst_MIMG__IMAGE_GATHER4
Inst_MIMG__IMAGE_GATHER4(InFmt_MIMG *)
Definition: instructions.cc:38820
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20700
Gcn3ISA::Inst_VOP2__V_MUL_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5586
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29211
Gcn3ISA::InFmt_VOP_SDWA::DST_UNUSED
unsigned int DST_UNUSED
Definition: gpu_decoder.hh:1598
Gcn3ISA::Inst_VOP2__V_MUL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5618
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35446
Gcn3ISA::Inst_VOP1__V_LOG_F16::Inst_VOP1__V_LOG_F16
Inst_VOP1__V_LOG_F16(InFmt_VOP1 *)
Definition: instructions.cc:9109
Gcn3ISA::Inst_DS__DS_ORDERED_COUNT::Inst_DS__DS_ORDERED_COUNT
Inst_DS__DS_ORDERED_COUNT(InFmt_DS *)
Definition: instructions.cc:34119
Gcn3ISA::Inst_VOP3__V_ADD_F64::~Inst_VOP3__V_ADD_F64
~Inst_VOP3__V_ADD_F64()
Definition: instructions.cc:29949
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F16::Inst_VOP3__V_DIV_FIXUP_F16
Inst_VOP3__V_DIV_FIXUP_F16(InFmt_VOP3 *)
Definition: instructions.cc:29764
Gcn3ISA::Inst_VOP3__V_LOG_F32::Inst_VOP3__V_LOG_F32
Inst_VOP3__V_LOG_F32(InFmt_VOP3 *)
Definition: instructions.cc:26375
Gcn3ISA::Inst_VOP3__V_MAX3_U32::Inst_VOP3__V_MAX3_U32
Inst_VOP3__V_MAX3_U32(InFmt_VOP3 *)
Definition: instructions.cc:28535
Gcn3ISA::Inst_VOP3__V_FMA_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28032
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21397
Gcn3ISA::Inst_VOP3__V_ALIGNBIT_B32::~Inst_VOP3__V_ALIGNBIT_B32
~Inst_VOP3__V_ALIGNBIT_B32()
Definition: instructions.cc:28198
Gcn3ISA::Inst_VOP1__V_CVT_F64_F32::Inst_VOP1__V_CVT_F64_F32
Inst_VOP1__V_CVT_F64_F32(InFmt_VOP1 *)
Definition: instructions.cc:7771
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12147
Gcn3ISA::Inst_DS__DS_READ_B64::Inst_DS__DS_READ_B64
Inst_DS__DS_READ_B64(InFmt_DS *)
Definition: instructions.cc:33479
Gcn3ISA::Inst_SOP1__S_FF0_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2287
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I64::Inst_VOP3__V_CMPX_NE_I64
Inst_VOP3__V_CMPX_NE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22663
Gcn3ISA::Inst_DS__DS_MSKOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31198
Gcn3ISA::Inst_VOP1__V_RSQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9104
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4566
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16253
Gcn3ISA::Inst_SOP1__S_FF0_I32_B64::Inst_SOP1__S_FF0_I32_B64
Inst_SOP1__S_FF0_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2273
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31678
Gcn3ISA::Inst_VOP3__V_BFE_I32::~Inst_VOP3__V_BFE_I32
~Inst_VOP3__V_BFE_I32()
Definition: instructions.cc:27935
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F16::Inst_VOP3__V_CMPX_LG_F16
Inst_VOP3__V_CMPX_LG_F16(InFmt_VOP3 *)
Definition: instructions.cc:16428
Gcn3ISA::Inst_DS__DS_ADD_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33121
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29357
Gcn3ISA::Inst_VOP3__V_FLOOR_F32::Inst_VOP3__V_FLOOR_F32
Inst_VOP3__V_FLOOR_F32(InFmt_VOP3 *)
Definition: instructions.cc:26299
Wavefront::getStatus
status_e getStatus()
Definition: wavefront.hh:130
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10231
Gcn3ISA::Inst_VINTRP__V_INTERP_P1_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15449
Gcn3ISA::Inst_VOPC__V_CMPX_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12020
Gcn3ISA::Inst_DS__DS_MIN_RTN_F32::Inst_DS__DS_MIN_RTN_F32
Inst_DS__DS_MIN_RTN_F32(InFmt_DS *)
Definition: instructions.cc:31957
Gcn3ISA::Inst_VOPC__V_CMP_GE_F64::Inst_VOPC__V_CMP_GE_F64
Inst_VOPC__V_CMP_GE_F64(InFmt_VOPC *)
Definition: instructions.cc:11689
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::Inst_MUBUF__BUFFER_WBINVL1_VOL
Inst_MUBUF__BUFFER_WBINVL1_VOL(InFmt_MUBUF *)
Definition: instructions.cc:36362
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F16::~Inst_VOP3__V_CMPX_LT_F16
~Inst_VOP3__V_CMPX_LT_F16()
Definition: instructions.cc:16360
Gcn3ISA::Inst_VOP2__V_ADDC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6626
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40093
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::~Inst_MUBUF__BUFFER_STORE_LDS_DWORD
~Inst_MUBUF__BUFFER_STORE_LDS_DWORD()
Definition: instructions.cc:36298
Gcn3ISA::Inst_VOP2__V_SUBREV_U32::~Inst_VOP2__V_SUBREV_U32
~Inst_VOP2__V_SUBREV_U32()
Definition: instructions.cc:6577
Gcn3ISA::Inst_VOPC__V_CMPX_U_F16::~Inst_VOPC__V_CMPX_U_F16
~Inst_VOPC__V_CMPX_U_F16()
Definition: instructions.cc:10334
Gcn3ISA::Inst_VOP1__V_CVT_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7578
Gcn3ISA::Inst_VOP3__V_MAX3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28547
Gcn3ISA::Inst_EXP__EXP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39382
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41252
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE::~Inst_MIMG__IMAGE_SAMPLE
~Inst_MIMG__IMAGE_SAMPLE()
Definition: instructions.cc:38297
Gcn3ISA::Inst_SOPC__S_CMP_EQ_I32::Inst_SOPC__S_CMP_EQ_I32
Inst_SOPC__S_CMP_EQ_I32(InFmt_SOPC *)
Definition: instructions.cc:3197
Gcn3ISA::Inst_VOPC__V_CMPX_F_I16::~Inst_VOPC__V_CMPX_F_I16
~Inst_VOPC__V_CMPX_F_I16()
Definition: instructions.cc:13013
Gcn3ISA::Inst_VOP3__V_LSHRREV_B32::~Inst_VOP3__V_LSHRREV_B32
~Inst_VOP3__V_LSHRREV_B32()
Definition: instructions.cc:23957
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I16::Inst_VOPC__V_CMPX_LT_I16
Inst_VOPC__V_CMPX_LT_I16(InFmt_VOPC *)
Definition: instructions.cc:13034
ComputeUnit::completedWfs
Stats::Scalar completedWfs
Definition: compute_unit.hh:604
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34787
Gcn3ISA::Inst_SOP1__S_BREV_B64::Inst_SOP1__S_BREV_B64
Inst_SOP1__S_BREV_B64(InFmt_SOP1 *)
Definition: instructions.cc:2111
Gcn3ISA::Inst_VOP3__V_CMP_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17748
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F64::~Inst_VOP3__V_CMPX_LT_F64
~Inst_VOP3__V_CMPX_LT_F64()
Definition: instructions.cc:18571
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::Inst_MIMG__IMAGE_SAMPLE_CL_O
Inst_MIMG__IMAGE_SAMPLE_CL_O(InFmt_MIMG *)
Definition: instructions.cc:38569
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17521
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F16::Inst_VOP3__V_CMP_NGT_F16
Inst_VOP3__V_CMP_NGT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16220
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35209
Gcn3ISA::Inst_VOP3
Definition: op_encodings.hh:355
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:301
Gcn3ISA::Inst_SOPC__S_CMP_EQ_I32::~Inst_SOPC__S_CMP_EQ_I32
~Inst_SOPC__S_CMP_EQ_I32()
Definition: instructions.cc:3203
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::~Inst_MUBUF__BUFFER_ATOMIC_DEC
~Inst_MUBUF__BUFFER_ATOMIC_DEC()
Definition: instructions.cc:36757
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP()
Definition: instructions.cc:36458
Shader::dispatcher
GPUDispatcher & dispatcher()
Definition: shader.cc:96
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_O::~Inst_MIMG__IMAGE_GATHER4_C_O
~Inst_MIMG__IMAGE_GATHER4_C_O()
Definition: instructions.cc:39126
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U32::Inst_DS__DS_SUB_SRC2_U32
Inst_DS__DS_SUB_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33706
Gcn3ISA::InFmt_SOP2
Definition: gpu_decoder.hh:1498
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U32::Inst_VOP3__V_CMPX_NE_U32
Inst_VOP3__V_CMPX_NE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21741
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38564
Gcn3ISA::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:34741
Gcn3ISA::Inst_VOP3__V_CMP_O_F16::~Inst_VOP3__V_CMP_O_F16
~Inst_VOP3__V_CMP_O_F16()
Definition: instructions.cc:16153
Gcn3ISA::Inst_VOP1__V_CVT_F32_F64::Inst_VOP1__V_CVT_F32_F64
Inst_VOP1__V_CVT_F32_F64(InFmt_VOP1 *)
Definition: instructions.cc:7741
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38614
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW()
Definition: instructions.cc:34598
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21483
Gcn3ISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::Inst_SOP1__S_XOR_SAVEEXEC_B64
Inst_SOP1__S_XOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2758
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C::Inst_MIMG__IMAGE_GATHER4_C
Inst_MIMG__IMAGE_GATHER4_C(InFmt_MIMG *)
Definition: instructions.cc:38917
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37065
Gcn3ISA::Inst_VOP3__V_MIN3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28356
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41769
Gcn3ISA::Inst_VOP3__V_CMP_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16756
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE2::~Inst_VOP1__V_CVT_F32_UBYTE2
~Inst_VOP1__V_CVT_F32_UBYTE2()
Definition: instructions.cc:7868
Gcn3ISA::Inst_VOP3__V_CMP_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19672
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F16::~Inst_VOP3__V_CMP_EQ_F16
~Inst_VOP3__V_CMP_EQ_F16()
Definition: instructions.cc:16059
Gcn3ISA::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:39204
Gcn3ISA::InFmt_MUBUF::IDXEN
unsigned int IDXEN
Definition: gpu_decoder.hh:1458
Gcn3ISA::Inst_DS__DS_GWS_SEMA_BR::~Inst_DS__DS_GWS_SEMA_BR
~Inst_DS__DS_GWS_SEMA_BR()
Definition: instructions.cc:34049
Gcn3ISA::Inst_VOP3__V_MAD_I64_I32::~Inst_VOP3__V_MAD_I64_I32
~Inst_VOP3__V_MAD_I64_I32()
Definition: instructions.cc:29537
Gcn3ISA::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:37571
Gcn3ISA::Inst_VOP3__V_CVT_OFF_F32_I4::Inst_VOP3__V_CVT_OFF_F32_I4
Inst_VOP3__V_CVT_OFF_F32_I4(InFmt_VOP3 *)
Definition: instructions.cc:25640
Gcn3ISA::Inst_VOP3__V_CNDMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23115
Gcn3ISA::Inst_VOP2__V_MAX_F16::~Inst_VOP2__V_MAX_F16
~Inst_VOP2__V_MAX_F16()
Definition: instructions.cc:7100
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39580
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B32::Inst_SOP1__S_BCNT1_I32_B32
Inst_SOP1__S_BCNT1_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2191
Gcn3ISA::InFmt_MUBUF::LDS
unsigned int LDS
Definition: gpu_decoder.hh:1461
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39876
Gcn3ISA::Inst_DS__DS_READ_I16::Inst_DS__DS_READ_I16
Inst_DS__DS_READ_I16(InFmt_DS *)
Definition: instructions.cc:32306
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U32::~Inst_VOP3__V_CMPX_GE_U32
~Inst_VOP3__V_CMPX_GE_U32()
Definition: instructions.cc:21791
Gcn3ISA::Inst_VOP3__V_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24131
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34610
FetchUnit::flushBuf
void flushBuf(int wfSlotId)
Definition: fetch_unit.cc:305
Gcn3ISA::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:38470
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12350
Gcn3ISA::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:38735
Gcn3ISA::Inst_VOP3__V_MAD_I16::~Inst_VOP3__V_MAD_I16
~Inst_VOP3__V_MAD_I16()
Definition: instructions.cc:29646
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_O::Inst_MIMG__IMAGE_SAMPLE_D_O
Inst_MIMG__IMAGE_SAMPLE_D_O(InFmt_MIMG *)
Definition: instructions.cc:38586
Gcn3ISA::Inst_VOP3__V_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24320
Gcn3ISA::Inst_DS__DS_CONDXCHG32_RTN_B64::~Inst_DS__DS_CONDXCHG32_RTN_B64
~Inst_DS__DS_CONDXCHG32_RTN_B64()
Definition: instructions.cc:33676
Gcn3ISA::Inst_VOP3__V_CMP_LT_U16::~Inst_VOP3__V_CMP_LT_U16
~Inst_VOP3__V_CMP_LT_U16()
Definition: instructions.cc:19719
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F16::~Inst_VOPC__V_CMPX_NLE_F16
~Inst_VOPC__V_CMPX_NLE_F16()
Definition: instructions.cc:10407
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34282
Gcn3ISA::Inst_VOPC__V_CMP_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12631
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31378
Gcn3ISA::Inst_VOP3__V_FLOOR_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26312
Gcn3ISA::Inst_VOP1__V_CVT_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9041
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::Inst_DS__DS_WRXCHG2ST64_RTN_B32
Inst_DS__DS_WRXCHG2ST64_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31898
Gcn3ISA::Inst_VOP3__V_CMP_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18133
Gcn3ISA::Inst_SOP2__S_XNOR_B32::Inst_SOP2__S_XNOR_B32
Inst_SOP2__S_XNOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:835
Gcn3ISA::Inst_VOP3__V_EXP_F32::Inst_VOP3__V_EXP_F32
Inst_VOP3__V_EXP_F32(InFmt_VOP3 *)
Definition: instructions.cc:26337
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::Inst_FLAT__FLAT_STORE_SHORT
Inst_FLAT__FLAT_STORE_SHORT(InFmt_FLAT *)
Definition: instructions.cc:39972
Gcn3ISA::Inst_VOP3__V_CVT_U16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27239
Gcn3ISA::Inst_VOPC__V_CMP_GT_F32::~Inst_VOPC__V_CMP_GT_F32
~Inst_VOPC__V_CMP_GT_F32()
Definition: instructions.cc:10602
Gcn3ISA::Inst_VOPC__V_CMPX_F_F64::Inst_VOPC__V_CMPX_F_F64
Inst_VOPC__V_CMPX_F_F64(InFmt_VOPC *)
Definition: instructions.cc:12007
Gcn3ISA::Inst_VOP3__V_CMP_F_U64::Inst_VOP3__V_CMP_F_U64
Inst_VOP3__V_CMP_F_U64(InFmt_VOP3 *)
Definition: instructions.cc:22159
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40684
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B32::Inst_DS__DS_CMPST_RTN_B32
Inst_DS__DS_CMPST_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31915
Gcn3ISA::Inst_VOP3__V_LSHRREV_B32::Inst_VOP3__V_LSHRREV_B32
Inst_VOP3__V_LSHRREV_B32(InFmt_VOP3 *)
Definition: instructions.cc:23951
Gcn3ISA::Inst_FLAT::instData
InFmt_FLAT instData
Definition: op_encodings.hh:831
Gcn3ISA::Inst_VOP3__V_FRACT_F64::~Inst_VOP3__V_FRACT_F64
~Inst_VOP3__V_FRACT_F64()
Definition: instructions.cc:27053
Wavefront::outstandingReqs
int outstandingReqs
Definition: wavefront.hh:163
Wavefront::computeUnit
ComputeUnit * computeUnit
Definition: wavefront.hh:99
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40905
Gcn3ISA::Inst_SOPC__S_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3443
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16987
Gcn3ISA::Inst_VOP3__V_MAC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24637
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL_O::~Inst_MIMG__IMAGE_GATHER4_B_CL_O
~Inst_MIMG__IMAGE_GATHER4_B_CL_O()
Definition: instructions.cc:39092
Gcn3ISA::Inst_VOP1__V_TRUNC_F32::Inst_VOP1__V_TRUNC_F32
Inst_VOP1__V_TRUNC_F32(InFmt_VOP1 *)
Definition: instructions.cc:8148
Gcn3ISA::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:4392
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17487
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F64::Inst_VOPC__V_CMPX_LT_F64
Inst_VOPC__V_CMPX_LT_F64(InFmt_VOPC *)
Definition: instructions.cc:12035
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U64::~Inst_SOPC__S_CMP_EQ_U64
~Inst_SOPC__S_CMP_EQ_U64()
Definition: instructions.cc:3663
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::Inst_DS__DS_READ2ST64_B32
Inst_DS__DS_READ2ST64_B32(InFmt_DS *)
Definition: instructions.cc:32159
Gcn3ISA::Inst_VOP3__V_ADDC_U32::Inst_VOP3__V_ADDC_U32
Inst_VOP3__V_ADDC_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24395
Gcn3ISA::Inst_VOP3__V_CMP_NE_U64::Inst_VOP3__V_CMP_NE_U64
Inst_VOP3__V_CMP_NE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22353
ComputeUnit::decMaxBarrierCnt
void decMaxBarrierCnt(int bar_id)
Definition: compute_unit.cc:673
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11993
Gcn3ISA::Inst_VOPC__V_CMP_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12781
Gcn3ISA::Inst_VOP2__V_MAC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6333
Gcn3ISA::Inst_VOP2__V_ADD_U32::~Inst_VOP2__V_ADD_U32
~Inst_VOP2__V_ADD_U32()
Definition: instructions.cc:6457
Gcn3ISA::Inst_SOP2__S_CSELECT_B32::~Inst_SOP2__S_CSELECT_B32
~Inst_SOP2__S_CSELECT_B32()
Definition: instructions.cc:365
Gcn3ISA::Inst_VOP3__V_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25192
Gcn3ISA::Inst_VOP3__V_MIN3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28298
Gcn3ISA::Inst_VOP1__V_LOG_LEGACY_F32::Inst_VOP1__V_LOG_LEGACY_F32
Inst_VOP1__V_LOG_LEGACY_F32(InFmt_VOP1 *)
Definition: instructions.cc:9351
Gcn3ISA::Inst_SOPP__S_ICACHE_INV::~Inst_SOPP__S_ICACHE_INV
~Inst_SOPP__S_ICACHE_INV()
Definition: instructions.cc:4250
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38260
Gcn3ISA::Inst_VOP3__V_FRACT_F16::Inst_VOP3__V_FRACT_F16
Inst_VOP3__V_FRACT_F16(InFmt_VOP3 *)
Definition: instructions.cc:27478
Gcn3ISA::Inst_VOP1__V_RCP_IFLAG_F32::~Inst_VOP1__V_RCP_IFLAG_F32
~Inst_VOP1__V_RCP_IFLAG_F32()
Definition: instructions.cc:8365
Gcn3ISA::Inst_VOPC__V_CMPX_T_I64::Inst_VOPC__V_CMPX_T_I64
Inst_VOPC__V_CMPX_T_I64(InFmt_VOPC *)
Definition: instructions.cc:15162
Gcn3ISA::Inst_VOP2::instData
InFmt_VOP2 instData
Definition: op_encodings.hh:285
Gcn3ISA::Inst_VOP2__V_LSHLREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6122
Wavefront::S_RETURNING
@ S_RETURNING
Definition: wavefront.hh:64
Gcn3ISA::Inst_DS__DS_MIN_RTN_U64::Inst_DS__DS_MIN_RTN_U64
Inst_DS__DS_MIN_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33236
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::~Inst_FLAT__FLAT_LOAD_DWORDX2
~Inst_FLAT__FLAT_LOAD_DWORDX2()
Definition: instructions.cc:39669
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U16::~Inst_VOPC__V_CMPX_EQ_U16
~Inst_VOPC__V_CMPX_EQ_U16()
Definition: instructions.cc:13318
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19367
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F64::Inst_VOPC__V_CMPX_GT_F64
Inst_VOPC__V_CMPX_GT_F64(InFmt_VOPC *)
Definition: instructions.cc:12134
Gcn3ISA::Inst_VOPC__V_CMP_F_U32::~Inst_VOPC__V_CMP_F_U32
~Inst_VOPC__V_CMP_F_U32()
Definition: instructions.cc:13743
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16577
Gcn3ISA::Inst_VOP3__V_CMP_U_F64::Inst_VOP3__V_CMP_U_F64
Inst_VOP3__V_CMP_U_F64(InFmt_VOP3 *)
Definition: instructions.cc:18120
Gcn3ISA::Inst_VOP3__V_CMPX_O_F16::Inst_VOP3__V_CMPX_O_F16
Inst_VOP3__V_CMPX_O_F16(InFmt_VOP3 *)
Definition: instructions.cc:16466
Gcn3ISA::Inst_SOP1::instData
InFmt_SOP1 instData
Definition: op_encodings.hh:136
Gcn3ISA::Inst_VOP2__V_MAC_F32::~Inst_VOP2__V_MAC_F32
~Inst_VOP2__V_MAC_F32()
Definition: instructions.cc:6327
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F32::Inst_VOPC__V_CMP_NLT_F32
Inst_VOPC__V_CMP_NLT_F32(InFmt_VOPC *)
Definition: instructions.cc:10919
Gcn3ISA::Inst_VOPC__V_CMP_GT_F64::~Inst_VOPC__V_CMP_GT_F64
~Inst_VOPC__V_CMP_GT_F64()
Definition: instructions.cc:11631
Gcn3ISA::VecElemF64
double VecElemF64
Definition: registers.hh:171
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11019
Gcn3ISA::Inst_VOPC__V_CMPX_O_F32::Inst_VOPC__V_CMPX_O_F32
Inst_VOPC__V_CMPX_O_F32(InFmt_VOPC *)
Definition: instructions.cc:11205
Gcn3ISA::Inst_VOP2__V_LSHLREV_B16::Inst_VOP2__V_LSHLREV_B16
Inst_VOP2__V_LSHLREV_B16(InFmt_VOP2 *)
Definition: instructions.cc:6998
Gcn3ISA::Inst_VOP1__V_CEIL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8040
Gcn3ISA::Inst_DS__DS_INC_U32::~Inst_DS__DS_INC_U32
~Inst_DS__DS_INC_U32()
Definition: instructions.cc:31028
Gcn3ISA::Inst_VOP3__V_MUL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23421
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE2::~Inst_VOP3__V_CVT_F32_UBYTE2
~Inst_VOP3__V_CVT_F32_UBYTE2()
Definition: instructions.cc:25833
Gcn3ISA::Inst_VOP3__V_SUBREV_U16::Inst_VOP3__V_SUBREV_U16
Inst_VOP3__V_SUBREV_U16(InFmt_VOP3 *)
Definition: instructions.cc:24724
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5125
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I16::Inst_VOPC__V_CMPX_LE_I16
Inst_VOPC__V_CMPX_LE_I16(InFmt_VOPC *)
Definition: instructions.cc:13098
Gcn3ISA::Inst_VOP3__V_CMP_GE_U64::~Inst_VOP3__V_CMP_GE_U64
~Inst_VOP3__V_CMP_GE_U64()
Definition: instructions.cc:22402
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F32::~Inst_VOP3__V_CMPX_LE_F32
~Inst_VOP3__V_CMPX_LE_F32()
Definition: instructions.cc:17272
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE3::~Inst_VOP1__V_CVT_F32_UBYTE3
~Inst_VOP1__V_CVT_F32_UBYTE3()
Definition: instructions.cc:7898
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F32::Inst_VOP3__V_CMP_CLASS_F32
Inst_VOP3__V_CMP_CLASS_F32(InFmt_VOP3 *)
Definition: instructions.cc:15491
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F32::Inst_VOPC__V_CMP_CLASS_F32
Inst_VOPC__V_CMP_CLASS_F32(InFmt_VOPC *)
Definition: instructions.cc:9381
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::Inst_MUBUF__BUFFER_ATOMIC_AND_X2
Inst_MUBUF__BUFFER_ATOMIC_AND_X2(InFmt_MUBUF *)
Definition: instructions.cc:36990
Gcn3ISA::Inst_DS__DS_MAX_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31786
Gcn3ISA::Inst_VOP3__V_TRUNC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27455
Gcn3ISA::Inst_VOP3__V_SAD_HI_U8::~Inst_VOP3__V_SAD_HI_U8
~Inst_VOP3__V_SAD_HI_U8()
Definition: instructions.cc:28782
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4834
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34767
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F32::Inst_VOP3__V_CMPX_NLG_F32
Inst_VOP3__V_CMPX_NLG_F32(InFmt_VOP3 *)
Definition: instructions.cc:17507
Gcn3ISA::Inst_DS__DS_NOP::~Inst_DS__DS_NOP
~Inst_DS__DS_NOP()
Definition: instructions.cc:31480
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18801
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::~Inst_FLAT__FLAT_ATOMIC_SMIN_X2
~Inst_FLAT__FLAT_ATOMIC_SMIN_X2()
Definition: instructions.cc:41479
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U64::Inst_VOP3__V_CMP_EQ_U64
Inst_VOP3__V_CMP_EQ_U64(InFmt_VOP3 *)
Definition: instructions.cc:22227
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::Inst_SMEM__S_LOAD_DWORDX4
Inst_SMEM__S_LOAD_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:4552
Gcn3ISA::Inst_VOP2__V_CNDMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5429
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9518
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE1::Inst_VOP1__V_CVT_F32_UBYTE1
Inst_VOP1__V_CVT_F32_UBYTE1(InFmt_VOP1 *)
Definition: instructions.cc:7831
Gcn3ISA::Inst_VOP2__V_LSHRREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6059
Gcn3ISA::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:39187
Gcn3ISA::Inst_VOP1__V_FLOOR_F64::~Inst_VOP1__V_FLOOR_F64
~Inst_VOP1__V_FLOOR_F64()
Definition: instructions.cc:8094
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B::~Inst_MIMG__IMAGE_SAMPLE_B
~Inst_MIMG__IMAGE_SAMPLE_B()
Definition: instructions.cc:38378
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U64::~Inst_DS__DS_DEC_SRC2_U64
~Inst_DS__DS_DEC_SRC2_U64()
Definition: instructions.cc:34215
Gcn3ISA::Inst_DS__DS_GWS_SEMA_P::Inst_DS__DS_GWS_SEMA_P
Inst_DS__DS_GWS_SEMA_P(InFmt_DS *)
Definition: instructions.cc:34059
Gcn3ISA::Inst_VOPC__V_CMP_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10576
Gcn3ISA::Inst_VOP3__V_CVT_PKRTZ_F16_F32::Inst_VOP3__V_CVT_PKRTZ_F16_F32
Inst_VOP3__V_CVT_PKRTZ_F16_F32(InFmt_VOP3 *)
Definition: instructions.cc:30916
Gcn3ISA::Inst_VOPC__V_CMP_F_U64::~Inst_VOPC__V_CMP_F_U64
~Inst_VOPC__V_CMP_F_U64()
Definition: instructions.cc:14711
Gcn3ISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::~Inst_SOP1__S_XNOR_SAVEEXEC_B64
~Inst_SOP1__S_XNOR_SAVEEXEC_B64()
Definition: instructions.cc:2925
Gcn3ISA::Inst_SOP2
Definition: op_encodings.hh:74
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22904
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I32::~Inst_VOPC__V_CMP_EQ_I32
~Inst_VOPC__V_CMP_EQ_I32()
Definition: instructions.cc:13562
Gcn3ISA::Inst_SOPK__S_CMPK_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1670
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4481
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Read 1 dword from scalar data cache.
Definition: instructions.cc:4450
Gcn3ISA::Inst_VOP3__V_RNDNE_F64::Inst_VOP3__V_RNDNE_F64
Inst_VOP3__V_RNDNE_F64(InFmt_VOP3 *)
Definition: instructions.cc:26070
Gcn3ISA::Inst_VOP1__V_CVT_FLR_I32_F32::~Inst_VOP1__V_CVT_FLR_I32_F32
~Inst_VOP1__V_CVT_FLR_I32_F32()
Definition: instructions.cc:7700
Wavefront::scalarOutstandingReqsRdGm
int scalarOutstandingReqsRdGm
Definition: wavefront.hh:173
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5219
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::Inst_FLAT__FLAT_ATOMIC_SWAP_X2
Inst_FLAT__FLAT_ATOMIC_SWAP_X2(InFmt_FLAT *)
Definition: instructions.cc:41129
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39333
Gcn3ISA::Inst_SOP2__S_ASHR_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1031
Gcn3ISA::Inst_DS__DS_APPEND::~Inst_DS__DS_APPEND
~Inst_DS__DS_APPEND()
Definition: instructions.cc:34109
Gcn3ISA::Inst_SOP2__S_ADD_I32::~Inst_SOP2__S_ADD_I32
~Inst_SOP2__S_ADD_I32()
Definition: instructions.cc:116
Gcn3ISA::Inst_DS__DS_WRITE2_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32993
Gcn3ISA::Inst_VOP1__V_RCP_F16::~Inst_VOP1__V_RCP_F16
~Inst_VOP1__V_RCP_F16()
Definition: instructions.cc:9053
MipsISA::k
Bitfield< 23 > k
Definition: dt_constants.hh:78
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U64::~Inst_VOP3__V_CMPX_GT_U64
~Inst_VOP3__V_CMPX_GT_U64()
Definition: instructions.cc:22941
Gcn3ISA::InFmt_SMEM::IMM
unsigned int IMM
Definition: gpu_decoder.hh:1482
Gcn3ISA::Inst_VOP3__V_MUL_F64::~Inst_VOP3__V_MUL_F64
~Inst_VOP3__V_MUL_F64()
Definition: instructions.cc:30046
Gcn3ISA::Inst_VOPC__V_CMP_U_F64::Inst_VOPC__V_CMP_U_F64
Inst_VOPC__V_CMP_U_F64(InFmt_VOPC *)
Definition: instructions.cc:11754
Gcn3ISA::Inst_VOP1__V_SQRT_F16::Inst_VOP1__V_SQRT_F16
Inst_VOP1__V_SQRT_F16(InFmt_VOP1 *)
Definition: instructions.cc:9067
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37291
Gcn3ISA::Inst_VOP2__V_ASHRREV_I32::~Inst_VOP2__V_ASHRREV_I32
~Inst_VOP2__V_ASHRREV_I32()
Definition: instructions.cc:6084
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::Inst_FLAT__FLAT_STORE_DWORD
Inst_FLAT__FLAT_STORE_DWORD(InFmt_FLAT *)
Definition: instructions.cc:40043
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31893
Gcn3ISA::Inst_VOP3__V_CMP_U_F16::~Inst_VOP3__V_CMP_U_F16
~Inst_VOP3__V_CMP_U_F16()
Definition: instructions.cc:16171
Gcn3ISA::Inst_VOPC__V_CMPX_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13019
Gcn3ISA::Inst_VOP3__V_XOR_B32::~Inst_VOP3__V_XOR_B32
~Inst_VOP3__V_XOR_B32()
Definition: instructions.cc:24166
Gcn3ISA::Inst_SOP2__S_OR_B32::~Inst_SOP2__S_OR_B32
~Inst_SOP2__S_OR_B32()
Definition: instructions.cc:481
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37328
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ::Inst_MIMG__IMAGE_SAMPLE_LZ
Inst_MIMG__IMAGE_SAMPLE_LZ(InFmt_MIMG *)
Definition: instructions.cc:38405
Gcn3ISA::Inst_VOPC__V_CMP_LE_F32::~Inst_VOPC__V_CMP_LE_F32
~Inst_VOPC__V_CMP_LE_F32()
Definition: instructions.cc:10570
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38713
Gcn3ISA::Inst_DS__DS_RSUB_U64::~Inst_DS__DS_RSUB_U64
~Inst_DS__DS_RSUB_U64()
Definition: instructions.cc:32687
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29295
Gcn3ISA::Inst_VOP3__V_MIN_I16::~Inst_VOP3__V_MIN_I16
~Inst_VOP3__V_MIN_I16()
Definition: instructions.cc:25120
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U64::~Inst_VOP3__V_CMPX_EQ_U64
~Inst_VOP3__V_CMPX_EQ_U64()
Definition: instructions.cc:22855
Gcn3ISA::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:39321
Gcn3ISA::Inst_VOP1__V_CEIL_F16::~Inst_VOP1__V_CEIL_F16
~Inst_VOP1__V_CEIL_F16()
Definition: instructions.cc:9220
Gcn3ISA::Inst_DS__DS_OR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33303
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29062
Gcn3ISA::Inst_VOP3__V_CUBEMA_F32::~Inst_VOP3__V_CUBEMA_F32
~Inst_VOP3__V_CUBEMA_F32()
Definition: instructions.cc:27874
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::Inst_MUBUF__BUFFER_STORE_LDS_DWORD
Inst_MUBUF__BUFFER_STORE_LDS_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:36292
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F32::~Inst_DS__DS_MIN_SRC2_F32
~Inst_DS__DS_MIN_SRC2_F32()
Definition: instructions.cc:33944
Gcn3ISA::Inst_VOP3__V_CMPX_U_F16::Inst_VOP3__V_CMPX_U_F16
Inst_VOP3__V_CMPX_U_F16(InFmt_VOP3 *)
Definition: instructions.cc:16486
Gcn3ISA::ScalarRegI32
int32_t ScalarRegI32
Definition: registers.hh:155
Gcn3ISA::Inst_VOP3__V_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24173
Gcn3ISA::InFmt_VOPC
Definition: gpu_decoder.hh:1575
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4711
Gcn3ISA::Inst_VOP3__V_CMP_F_F64::Inst_VOP3__V_CMP_F_F64
Inst_VOP3__V_CMP_F_F64(InFmt_VOP3 *)
Definition: instructions.cc:17707
Gcn3ISA::Inst_VOP3__V_CMP_NE_U16::Inst_VOP3__V_CMP_NE_U16
Inst_VOP3__V_CMP_NE_U16(InFmt_VOP3 *)
Definition: instructions.cc:19880
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F64::Inst_VOP3__V_CMPX_GT_F64
Inst_VOP3__V_CMPX_GT_F64(InFmt_VOP3 *)
Definition: instructions.cc:18731
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37718
Gcn3ISA::Inst_DS__DS_SUB_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31660
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35488
Gcn3ISA::Inst_SOP2__S_CBRANCH_G_FORK::Inst_SOP2__S_CBRANCH_G_FORK
Inst_SOP2__S_CBRANCH_G_FORK(InFmt_SOP2 *)
Definition: instructions.cc:1293
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37242
Gcn3ISA::Inst_DS__DS_WRITE2_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:33002
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4353
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33340
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_O::Inst_MIMG__IMAGE_SAMPLE_O
Inst_MIMG__IMAGE_SAMPLE_O(InFmt_MIMG *)
Definition: instructions.cc:38553
Gcn3ISA::Inst_VOPC__V_CMP_LT_F32::~Inst_VOPC__V_CMP_LT_F32
~Inst_VOPC__V_CMP_LT_F32()
Definition: instructions.cc:10506
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2(InFmt_MUBUF *)
Definition: instructions.cc:36909
Gcn3ISA::Inst_VOP3__V_CMP_T_U16::~Inst_VOP3__V_CMP_T_U16
~Inst_VOP3__V_CMP_T_U16()
Definition: instructions.cc:19970
Gcn3ISA::Inst_SOPP__S_WAITCNT::~Inst_SOPP__S_WAITCNT
~Inst_SOPP__S_WAITCNT()
Definition: instructions.cc:4130
Gcn3ISA::Inst_SOPK__S_CMPK_GE_U32::~Inst_SOPK__S_CMPK_GE_U32
~Inst_SOPK__S_CMPK_GE_U32()
Definition: instructions.cc:1639
Gcn3ISA::Inst_SOPC__S_SETVSKIP::Inst_SOPC__S_SETVSKIP
Inst_SOPC__S_SETVSKIP(InFmt_SOPC *)
Definition: instructions.cc:3613
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL::Inst_MIMG__IMAGE_GATHER4_B_CL
Inst_MIMG__IMAGE_GATHER4_B_CL(InFmt_MIMG *)
Definition: instructions.cc:38884
Gcn3ISA::Inst_MUBUF::instData
InFmt_MUBUF instData
Definition: op_encodings.hh:713
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F16::~Inst_VOP3__V_CMPX_NLE_F16
~Inst_VOP3__V_CMPX_NLE_F16()
Definition: instructions.cc:16571
Gcn3ISA::Inst_SOP1__S_ABS_I32::Inst_SOP1__S_ABS_I32
Inst_SOP1__S_ABS_I32(InFmt_SOP1 *)
Definition: instructions.cc:3131
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11573
Gcn3ISA::Inst_VOP3__V_FFBL_B32::~Inst_VOP3__V_FFBL_B32
~Inst_VOP3__V_FFBL_B32()
Definition: instructions.cc:26893
Gcn3ISA::Inst_VOPC__V_CMP_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14479
Gcn3ISA::Inst_SOPC__S_CMP_GT_U32::Inst_SOPC__S_CMP_GT_U32
Inst_SOPC__S_CMP_GT_U32(InFmt_SOPC *)
Definition: instructions.cc:3405
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F64::~Inst_VOP3__V_CMPX_CLASS_F64
~Inst_VOP3__V_CMPX_CLASS_F64()
Definition: instructions.cc:15843
Gcn3ISA::Inst_VOP3__V_SQRT_F32::Inst_VOP3__V_SQRT_F32
Inst_VOP3__V_SQRT_F32(InFmt_VOP3 *)
Definition: instructions.cc:26633
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13110
Gcn3ISA::Inst_VOP3__V_CMP_LE_U32::Inst_VOP3__V_CMP_LE_U32
Inst_VOP3__V_CMP_LE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21033
Gcn3ISA::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:34970
Gcn3ISA::Inst_VOP2__V_LSHLREV_B16::~Inst_VOP2__V_LSHLREV_B16
~Inst_VOP2__V_LSHLREV_B16()
Definition: instructions.cc:7004
Gcn3ISA::Inst_SOPK__S_GETREG_B32::~Inst_SOPK__S_GETREG_B32
~Inst_SOPK__S_GETREG_B32()
Definition: instructions.cc:1786
Gcn3ISA::Inst_VOP3__V_FMA_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29759
Gcn3ISA::Inst_VOP3__V_CMP_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19421
Gcn3ISA::Inst_DS__DS_READ_B32::Inst_DS__DS_READ_B32
Inst_DS__DS_READ_B32(InFmt_DS *)
Definition: instructions.cc:32033
Gcn3ISA
classes that represnt vector/scalar operands in GCN3 ISA.
Definition: decoder.cc:44
Gcn3ISA::Inst_VOP3__V_CEIL_F16::Inst_VOP3__V_CEIL_F16
Inst_VOP3__V_CEIL_F16(InFmt_VOP3 *)
Definition: instructions.cc:27424
Gcn3ISA::Inst_VOP1__V_TRUNC_F64::~Inst_VOP1__V_TRUNC_F64
~Inst_VOP1__V_TRUNC_F64()
Definition: instructions.cc:8004
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ(InFmt_MUBUF *)
Definition: instructions.cc:34680
Gcn3ISA::Inst_VOP3__V_MBCNT_LO_U32_B32::~Inst_VOP3__V_MBCNT_LO_U32_B32
~Inst_VOP3__V_MBCNT_LO_U32_B32()
Definition: instructions.cc:30604
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37713
Gcn3ISA::Inst_SOP2__S_MAX_U32::Inst_SOP2__S_MAX_U32
Inst_SOP2__S_MAX_U32(InFmt_SOP2 *)
Definition: instructions.cc:329
Gcn3ISA::Inst_VOP3__V_MED3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28649
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34186
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F64::Inst_VOPC__V_CMPX_TRU_F64
Inst_VOPC__V_CMPX_TRU_F64(InFmt_VOPC *)
Definition: instructions.cc:12503
GPUStaticInst::isAtomicRet
bool isAtomicRet() const
Definition: gpu_static_inst.hh:137
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F64::~Inst_VOP3__V_CMP_TRU_F64
~Inst_VOP3__V_CMP_TRU_F64()
Definition: instructions.cc:18514
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW(InFmt_MUBUF *)
Definition: instructions.cc:34590
Gcn3ISA::Inst_VOP3__V_CMP_NE_I32::Inst_VOP3__V_CMP_NE_I32
Inst_VOP3__V_CMP_NE_I32(InFmt_VOP3 *)
Definition: instructions.cc:20813
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12450
Gcn3ISA::Inst_VOP3__V_MAD_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27739
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::Inst_MUBUF__BUFFER_ATOMIC_SWAP
Inst_MUBUF__BUFFER_ATOMIC_SWAP(InFmt_MUBUF *)
Definition: instructions.cc:36418
Gcn3ISA::Inst_VOP3__V_MED3_I32::~Inst_VOP3__V_MED3_I32
~Inst_VOP3__V_MED3_I32()
Definition: instructions.cc:28643
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34670
Gcn3ISA::Inst_DS__DS_READ_U8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32281
Gcn3ISA::Inst_VOPC__V_CMP_NE_I32::Inst_VOPC__V_CMP_NE_I32
Inst_VOPC__V_CMP_NE_I32(InFmt_VOPC *)
Definition: instructions.cc:13649
Gcn3ISA::ConstVecOperandU32
VecOperand< VecElemU32, true > ConstVecOperandU32
Definition: operand.hh:740
Gcn3ISA::Inst_DS__DS_READ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32320
Gcn3ISA::Inst_VOPC__V_CMP_O_F16::~Inst_VOPC__V_CMP_O_F16
~Inst_VOPC__V_CMP_O_F16()
Definition: instructions.cc:10027
Gcn3ISA::Inst_VOP1__V_SQRT_F64::~Inst_VOP1__V_SQRT_F64
~Inst_VOP1__V_SQRT_F64()
Definition: instructions.cc:8538
Gcn3ISA::Inst_VOP2__V_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5871
Gcn3ISA::Inst_DS__DS_MAX_RTN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33231
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::~Inst_FLAT__FLAT_LOAD_SBYTE
~Inst_FLAT__FLAT_LOAD_SBYTE()
Definition: instructions.cc:39467
Gcn3ISA::Inst_VOPC__V_CMP_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13899
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F32::~Inst_VOP3__V_CMP_NLG_F32
~Inst_VOP3__V_CMP_NLG_F32()
Definition: instructions.cc:16981
Gcn3ISA::Inst_DS__DS_ADD_U64::~Inst_DS__DS_ADD_U64
~Inst_DS__DS_ADD_U64()
Definition: instructions.cc:32651
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F64::~Inst_VOP3__V_CMPX_NGE_F64
~Inst_VOP3__V_CMPX_NGE_F64()
Definition: instructions.cc:19024
Gcn3ISA::Inst_SOP2__S_AND_B32::~Inst_SOP2__S_AND_B32
~Inst_SOP2__S_AND_B32()
Definition: instructions.cc:421
Gcn3ISA::Inst_VOP3__V_COS_F32::~Inst_VOP3__V_COS_F32
~Inst_VOP3__V_COS_F32()
Definition: instructions.cc:26756
Gcn3ISA::Inst_VOP2__V_MIN_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7203
Gcn3ISA::Inst_SOP1__S_QUADMASK_B32::Inst_SOP1__S_QUADMASK_B32
Inst_SOP1__S_QUADMASK_B32(InFmt_SOP1 *)
Definition: instructions.cc:2950
Gcn3ISA::VecOperand
Definition: operand.hh:102
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2()
Definition: instructions.cc:41168
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38048
Gcn3ISA::Inst_VOP3__V_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24089
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR::~Inst_MUBUF__BUFFER_ATOMIC_OR
~Inst_MUBUF__BUFFER_ATOMIC_OR()
Definition: instructions.cc:36676
Wavefront::releaseBarrier
void releaseBarrier()
Definition: wavefront.cc:1457
Gcn3ISA::Inst_DS__DS_WRITE_B32::Inst_DS__DS_WRITE_B32
Inst_DS__DS_WRITE_B32(InFmt_DS *)
Definition: instructions.cc:31203
Gcn3ISA::Inst_VOP1__V_READFIRSTLANE_B32::~Inst_VOP1__V_READFIRSTLANE_B32
~Inst_VOP1__V_READFIRSTLANE_B32()
Definition: instructions.cc:7355
Gcn3ISA::Inst_VOP3__V_LSHRREV_B64::~Inst_VOP3__V_LSHRREV_B64
~Inst_VOP3__V_LSHRREV_B64()
Definition: instructions.cc:30740
DPRINTF
#define DPRINTF(x,...)
Definition: trace.hh:234
Gcn3ISA::InFmt_MTBUF
Definition: gpu_decoder.hh:1434
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I64::Inst_VOP3__V_CMPX_LE_I64
Inst_VOP3__V_CMPX_LE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22577
Gcn3ISA::Inst_VOP3__V_CMPX_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18548
Gcn3ISA::Inst_VOP3__V_CMP_GT_I64::~Inst_VOP3__V_CMP_GT_I64
~Inst_VOP3__V_CMP_GT_I64()
Definition: instructions.cc:22014
Gcn3ISA::Inst_SOP1__S_MOV_B64::Inst_SOP1__S_MOV_B64
Inst_SOP1__S_MOV_B64(InFmt_SOP1 *)
Definition: instructions.cc:1890
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33392
Gcn3ISA::Inst_VOP3__V_ALIGNBIT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28204
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I32_F32::~Inst_VOP1__V_FREXP_EXP_I32_F32
~Inst_VOP1__V_FREXP_EXP_I32_F32()
Definition: instructions.cc:8891
Gcn3ISA::Inst_DS__DS_MAX_U64::~Inst_DS__DS_MAX_U64
~Inst_DS__DS_MAX_U64()
Definition: instructions.cc:32797
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36326
Gcn3ISA::Inst_SOPK__S_CMPK_LG_I32::Inst_SOPK__S_CMPK_LG_I32
Inst_SOPK__S_CMPK_LG_I32(InFmt_SOPK *)
Definition: instructions.cc:1433
Gcn3ISA::Inst_VOP3__V_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21088
ComputeUnit::maxBarrierCnt
int maxBarrierCnt(int bar_id)
Definition: compute_unit.cc:659
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F64::~Inst_VOPC__V_CMP_NEQ_F64
~Inst_VOPC__V_CMP_NEQ_F64()
Definition: instructions.cc:11923
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37919
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33413
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37803
Gcn3ISA::Inst_DS__DS_OR_SRC2_B32::~Inst_DS__DS_OR_SRC2_B32
~Inst_DS__DS_OR_SRC2_B32()
Definition: instructions.cc:33883
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15862
Gcn3ISA::InFmt_SOPC
Definition: gpu_decoder.hh:1506
Gcn3ISA::Inst_DS__DS_GWS_BARRIER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34084
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F64::Inst_VOP3__V_CMPX_NGE_F64
Inst_VOP3__V_CMPX_NGE_F64(InFmt_VOP3 *)
Definition: instructions.cc:19016
Gcn3ISA::InFmt_VOP_DPP::ROW_MASK
unsigned int ROW_MASK
Definition: gpu_decoder.hh:1592
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38815
Gcn3ISA::Inst_VOPC__V_CMPX_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10341
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL_O::~Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
~Inst_MIMG__IMAGE_SAMPLE_CD_CL_O()
Definition: instructions.cc:39328
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14260
Gcn3ISA::Inst_DS__DS_WRITE2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31278
Gcn3ISA::Inst_VOP3__V_MUL_I32_I24::~Inst_VOP3__V_MUL_I32_I24
~Inst_VOP3__V_MUL_I32_I24()
Definition: instructions.cc:23513
Gcn3ISA::Inst_DS__DS_READ_B128::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34494
Gcn3ISA::Inst_VOP3__V_ASHRREV_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24006
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39148
Gcn3ISA::Inst_DS__DS_XOR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31840
Gcn3ISA::Inst_VOPC__V_CMP_GE_F16::Inst_VOPC__V_CMP_GE_F16
Inst_VOPC__V_CMP_GE_F16(InFmt_VOPC *)
Definition: instructions.cc:10002
Gcn3ISA::Inst_VOPC__V_CMP_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14929
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U16::~Inst_VOPC__V_CMPX_LE_U16
~Inst_VOPC__V_CMPX_LE_U16()
Definition: instructions.cc:13350
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::~Inst_FLAT__FLAT_STORE_DWORDX4
~Inst_FLAT__FLAT_STORE_DWORDX4()
Definition: instructions.cc:40272
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40022
Gcn3ISA::Inst_SOPK__S_CMPK_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1545
Gcn3ISA::quadMask
T quadMask(T val)
Definition: inst_util.hh:104
Gcn3ISA::Inst_VOP3__V_MAX_U16::Inst_VOP3__V_MAX_U16
Inst_VOP3__V_MAX_U16(InFmt_VOP3 *)
Definition: instructions.cc:24973
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_XOR::~Inst_MIMG__IMAGE_ATOMIC_XOR
~Inst_MIMG__IMAGE_ATOMIC_XOR()
Definition: instructions.cc:38226
Gcn3ISA::Inst_VOP1__V_SQRT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8514
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17312
Gcn3ISA::Inst_SOPC
Definition: op_encodings.hh:145
Gcn3ISA::Inst_DS__DS_INC_U64::~Inst_DS__DS_INC_U64
~Inst_DS__DS_INC_U64()
Definition: instructions.cc:32706
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39446
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35661
Gcn3ISA::findFirstOneMsb
ScalarRegI32 findFirstOneMsb(T val)
Definition: inst_util.hh:153
Gcn3ISA::Inst_DS__DS_READ_U8::~Inst_DS__DS_READ_U8
~Inst_DS__DS_READ_U8()
Definition: instructions.cc:32251
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17590
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40855
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L::~Inst_MIMG__IMAGE_GATHER4_L
~Inst_MIMG__IMAGE_GATHER4_L()
Definition: instructions.cc:38858
Gcn3ISA::Inst_VOP3__V_FLOOR_F64::Inst_VOP3__V_FLOOR_F64
Inst_VOP3__V_FLOOR_F64(InFmt_VOP3 *)
Definition: instructions.cc:26108
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10449
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U32::Inst_DS__DS_ADD_SRC2_U32
Inst_DS__DS_ADD_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33687
Gcn3ISA::Inst_VOP2__V_MUL_F32::Inst_VOP2__V_MUL_F32
Inst_VOP2__V_MUL_F32(InFmt_VOP2 *)
Definition: instructions.cc:5605
Gcn3ISA::Inst_SOPC__S_CMP_LG_U32::Inst_SOPC__S_CMP_LG_U32
Inst_SOPC__S_CMP_LG_U32(InFmt_SOPC *)
Definition: instructions.cc:3379
Gcn3ISA::Inst_DS__DS_WRITE_B128::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34458
Gcn3ISA::InFmt_SOPP::SIMM16
unsigned int SIMM16
Definition: gpu_decoder.hh:1521
Gcn3ISA::Inst_VOPC__V_CMPX_F_I64::~Inst_VOPC__V_CMPX_F_I64
~Inst_VOPC__V_CMPX_F_I64()
Definition: instructions.cc:14949
Gcn3ISA::Inst_SOPK__S_CMPK_GE_U32::Inst_SOPK__S_CMPK_GE_U32
Inst_SOPK__S_CMPK_GE_U32(InFmt_SOPK *)
Definition: instructions.cc:1633
Gcn3ISA::Inst_SOP2__S_BFE_U64::Inst_SOP2__S_BFE_U64
Inst_SOP2__S_BFE_U64(InFmt_SOP2 *)
Definition: instructions.cc:1226
Gcn3ISA::Inst_SMEM::extData
InFmt_SMEM_1 extData
Definition: op_encodings.hh:267
Gcn3ISA::Inst_DS__DS_WRAP_RTN_B32::~Inst_DS__DS_WRAP_RTN_B32
~Inst_DS__DS_WRAP_RTN_B32()
Definition: instructions.cc:32002
Gcn3ISA::InFmt_VOP1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1538
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F64::Inst_VOP3__V_CMPX_LG_F64
Inst_VOP3__V_CMPX_LG_F64(InFmt_VOP3 *)
Definition: instructions.cc:18787
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F32::~Inst_VOP3__V_CMPX_CLASS_F32
~Inst_VOP3__V_CMPX_CLASS_F32()
Definition: instructions.cc:15613
Gcn3ISA::Inst_SOP1__S_AND_SAVEEXEC_B64::~Inst_SOP1__S_AND_SAVEEXEC_B64
~Inst_SOP1__S_AND_SAVEEXEC_B64()
Definition: instructions.cc:2701
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::Inst_MIMG__IMAGE_LOAD_PCK_SGN
Inst_MIMG__IMAGE_LOAD_PCK_SGN(InFmt_MIMG *)
Definition: instructions.cc:37722
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39830
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38514
Gcn3ISA::REG_SCC
@ REG_SCC
Definition: registers.hh:129
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12114
Gcn3ISA::Inst_SOPC::instData
InFmt_SOPC instData
Definition: op_encodings.hh:160
Gcn3ISA::Inst_SOP2__S_MIN_U32::~Inst_SOP2__S_MIN_U32
~Inst_SOP2__S_MIN_U32()
Definition: instructions.cc:275
Gcn3ISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::~Inst_SOP1__S_ANDN2_SAVEEXEC_B64
~Inst_SOP1__S_ANDN2_SAVEEXEC_B64()
Definition: instructions.cc:2797
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U64::~Inst_VOP3__V_CMPX_LE_U64
~Inst_VOP3__V_CMPX_LE_U64()
Definition: instructions.cc:22898
Gcn3ISA::Inst_VOPC__V_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13537
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_O::Inst_MIMG__IMAGE_SAMPLE_C_O
Inst_MIMG__IMAGE_SAMPLE_C_O(InFmt_MIMG *)
Definition: instructions.cc:38685
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2(InFmt_MUBUF *)
Definition: instructions.cc:36882
Gcn3ISA::Inst_VOP2__V_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5996
Gcn3ISA::Inst_VOP1__V_CVT_F32_U32::~Inst_VOP1__V_CVT_F32_U32
~Inst_VOP1__V_CVT_F32_U32()
Definition: instructions.cc:7494
MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:240
Gcn3ISA::Inst_VOP3__V_CUBETC_F32::Inst_VOP3__V_CUBETC_F32
Inst_VOP3__V_CUBETC_F32(InFmt_VOP3 *)
Definition: instructions.cc:27850
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND::Inst_FLAT__FLAT_ATOMIC_AND
Inst_FLAT__FLAT_ATOMIC_AND(InFmt_FLAT *)
Definition: instructions.cc:40860
Gcn3ISA::Inst_VOP1__V_RCP_F64::Inst_VOP1__V_RCP_F64
Inst_VOP1__V_RCP_F64(InFmt_VOP1 *)
Definition: instructions.cc:8418
Gcn3ISA::Inst_VOP1__V_RCP_IFLAG_F32::Inst_VOP1__V_RCP_IFLAG_F32
Inst_VOP1__V_RCP_IFLAG_F32(InFmt_VOP1 *)
Definition: instructions.cc:8358
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F16::Inst_VOP3__V_CMPX_NEQ_F16
Inst_VOP3__V_CMPX_NEQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:16582
Gcn3ISA::Inst_VOP1__V_FLOOR_F16::~Inst_VOP1__V_FLOOR_F16
~Inst_VOP1__V_FLOOR_F16()
Definition: instructions.cc:9202
Gcn3ISA::Inst_VINTRP
Definition: op_encodings.hh:342
Gcn3ISA::Inst_VOP3__V_MAD_I16::Inst_VOP3__V_MAD_I16
Inst_VOP3__V_MAD_I16(InFmt_VOP3 *)
Definition: instructions.cc:29639
Gcn3ISA::Inst_DS__DS_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31469
Gcn3ISA::Inst_SOP1__S_FLBIT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2418
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12417
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::Inst_MIMG__IMAGE_ATOMIC_UMAX
Inst_MIMG__IMAGE_ATOMIC_UMAX(InFmt_MIMG *)
Definition: instructions.cc:38134
Gcn3ISA::Inst_SOP2__S_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:93
Gcn3ISA::Inst_VOPC__V_CMP_LE_U64::Inst_VOPC__V_CMP_LE_U64
Inst_VOPC__V_CMP_LE_U64(InFmt_VOPC *)
Definition: instructions.cc:14793
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F16::Inst_VOPC__V_CMP_EQ_F16
Inst_VOPC__V_CMP_EQ_F16(InFmt_VOPC *)
Definition: instructions.cc:9930
Gcn3ISA::Inst_DS__DS_MSKOR_B64::Inst_DS__DS_MSKOR_B64
Inst_DS__DS_MSKOR_B64(InFmt_DS *)
Definition: instructions.cc:32864
Gcn3ISA::Inst_VOP3__V_CVT_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27257
Gcn3ISA::Inst_DS__DS_INC_RTN_U32::~Inst_DS__DS_INC_RTN_U32
~Inst_DS__DS_INC_RTN_U32()
Definition: instructions.cc:31688
Gcn3ISA::Inst_SOPP__S_SLEEP::~Inst_SOPP__S_SLEEP
~Inst_SOPP__S_SLEEP()
Definition: instructions.cc:4171
Gcn3ISA::Inst_VOP3__V_MIN_F16::Inst_VOP3__V_MIN_F16
Inst_VOP3__V_MIN_F16(InFmt_VOP3 *)
Definition: instructions.cc:24955
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2(InFmt_MUBUF *)
Definition: instructions.cc:36771
Gcn3ISA::Inst_VOP1__V_EXP_F32::Inst_VOP1__V_EXP_F32
Inst_VOP1__V_EXP_F32(InFmt_VOP1 *)
Definition: instructions.cc:8268
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I32::~Inst_VOPC__V_CMPX_LT_I32
~Inst_VOPC__V_CMPX_LT_I32()
Definition: instructions.cc:14008
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::Inst_FLAT__FLAT_ATOMIC_CMPSWAP
Inst_FLAT__FLAT_ATOMIC_CMPSWAP(InFmt_FLAT *)
Definition: instructions.cc:40455
Gcn3ISA::InFmt_MUBUF
Definition: gpu_decoder.hh:1455
Gcn3ISA::Inst_VOP2__V_ADD_U16::~Inst_VOP2__V_ADD_U16
~Inst_VOP2__V_ADD_U16()
Definition: instructions.cc:6880
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B32::~Inst_DS__DS_CMPST_RTN_B32
~Inst_DS__DS_CMPST_RTN_B32()
Definition: instructions.cc:31920
Gcn3ISA::Inst_SOP1__S_NOT_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2016
Gcn3ISA::Inst_VOP1__V_CVT_F32_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7500
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40780
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::~Inst_MUBUF__BUFFER_WBINVL1
~Inst_MUBUF__BUFFER_WBINVL1()
Definition: instructions.cc:36319
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38400
Gcn3ISA::Inst_VOP3__V_CVT_PKACCUM_U8_F32::Inst_VOP3__V_CVT_PKACCUM_U8_F32
Inst_VOP3__V_CVT_PKACCUM_U8_F32(InFmt_VOP3 *)
Definition: instructions.cc:29810
Gcn3ISA::Inst_SOP1__S_BITSET1_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2591
Gcn3ISA::Inst_VOP1__V_SQRT_F16::~Inst_VOP1__V_SQRT_F16
~Inst_VOP1__V_SQRT_F16()
Definition: instructions.cc:9074
Gcn3ISA::Inst_DS__DS_MAX_I32::Inst_DS__DS_MAX_I32
Inst_DS__DS_MAX_I32(InFmt_DS *)
Definition: instructions.cc:31077
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14420
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40738
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I16::~Inst_VOP3__V_CMPX_GT_I16
~Inst_VOP3__V_CMPX_GT_I16()
Definition: instructions.cc:20154
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11085
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36822
Gcn3ISA::Inst_VOP3__V_CVT_OFF_F32_I4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25653
Gcn3ISA::Inst_VOP3__V_CVT_F64_F32::Inst_VOP3__V_CVT_F64_F32
Inst_VOP3__V_CVT_F64_F32(InFmt_VOP3 *)
Definition: instructions.cc:25704
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F64::Inst_VOPC__V_CMP_NLE_F64
Inst_VOPC__V_CMP_NLE_F64(InFmt_VOPC *)
Definition: instructions.cc:11884
Gcn3ISA::Inst_VOP3__V_PERM_B32::permute
uint8_t permute(uint64_t in_dword2x, uint32_t sel)
Definition: instructions.hh:56274
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F32::~Inst_VOPC__V_CMPX_LT_F32
~Inst_VOPC__V_CMPX_LT_F32()
Definition: instructions.cc:11013
Gcn3ISA::Inst_VOP3__V_CMP_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22366
Gcn3ISA::Inst_VOP3__V_CMP_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19893
Gcn3ISA::Inst_SOP1__S_RFE_B64::Inst_SOP1__S_RFE_B64
Inst_SOP1__S_RFE_B64(InFmt_SOP1 *)
Definition: instructions.cc:2678
Gcn3ISA::Inst_VOP3__V_MAD_LEGACY_F32::~Inst_VOP3__V_MAD_LEGACY_F32
~Inst_VOP3__V_MAD_LEGACY_F32()
Definition: instructions.cc:27616
Gcn3ISA::Inst_VOP3__V_BCNT_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30568
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_OR::~Inst_MIMG__IMAGE_ATOMIC_OR
~Inst_MIMG__IMAGE_ATOMIC_OR()
Definition: instructions.cc:38200
Gcn3ISA::Inst_VOP3__V_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23799
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16234
Gcn3ISA::Inst_VOP3__V_PERM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29708
Gcn3ISA::Inst_DS__DS_READ_U16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32371
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37967
Gcn3ISA::Inst_VOP1__V_TRUNC_F16::Inst_VOP1__V_TRUNC_F16
Inst_VOP1__V_TRUNC_F16(InFmt_VOP1 *)
Definition: instructions.cc:9231
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41730
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38482
Gcn3ISA::Inst_VOP3__V_MAX3_I32::~Inst_VOP3__V_MAX3_I32
~Inst_VOP3__V_MAX3_I32()
Definition: instructions.cc:28497
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38831
Gcn3ISA::Inst_VOP3__V_MIN_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25126
Gcn3ISA::Inst_VOP3__V_CMP_NE_I32::~Inst_VOP3__V_CMP_NE_I32
~Inst_VOP3__V_CMP_NE_I32()
Definition: instructions.cc:20820
Gcn3ISA::Inst_VOP3__V_CMP_GE_F64::Inst_VOP3__V_CMP_GE_F64
Inst_VOP3__V_CMP_GE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18010
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F16::Inst_VOPC__V_CMP_NEQ_F16
Inst_VOPC__V_CMP_NEQ_F16(InFmt_VOPC *)
Definition: instructions.cc:10128
Gcn3ISA::Inst_VOP2__V_MAX_I32::Inst_VOP2__V_MAX_I32
Inst_VOP2__V_MAX_I32(InFmt_VOP2 *)
Definition: instructions.cc:5953
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36439
Gcn3ISA::Inst_DS__DS_MAX_RTN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31750
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F64::Inst_VOP3__V_CMPX_GE_F64
Inst_VOP3__V_CMPX_GE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18844
Gcn3ISA::Inst_VOP3__V_ASHRREV_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24908
Gcn3ISA::Inst_VOP3__V_CMP_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22104
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U64::Inst_DS__DS_DEC_SRC2_U64
Inst_DS__DS_DEC_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34210
ComputeUnit::vrf
std::vector< VectorRegisterFile * > vrf
Definition: compute_unit.hh:292
Gcn3ISA::Inst_VOP3__V_MAX_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30205
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F64::~Inst_VOP3__V_CMPX_EQ_F64
~Inst_VOP3__V_CMPX_EQ_F64()
Definition: instructions.cc:18627
Gcn3ISA::Inst_DS__DS_READ2_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:33587
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4952
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17021
Gcn3ISA::Inst_VOP3__V_TRIG_PREOP_F64::Inst_VOP3__V_TRIG_PREOP_F64
Inst_VOP3__V_TRIG_PREOP_F64(InFmt_VOP3 *)
Definition: instructions.cc:30819
Gcn3ISA::Inst_VOP3__V_CEIL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26045
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP()
Definition: instructions.cc:37986
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37737
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22990
Gcn3ISA::Inst_VOP3__V_SQRT_F16::Inst_VOP3__V_SQRT_F16
Inst_VOP3__V_SQRT_F16(InFmt_VOP3 *)
Definition: instructions.cc:27283
Gcn3ISA::Inst_VOPC__V_CMP_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9907
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L_O::~Inst_MIMG__IMAGE_GATHER4_L_O
~Inst_MIMG__IMAGE_GATHER4_L_O()
Definition: instructions.cc:39058
Gcn3ISA::Inst_VOP3__V_LSHLREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30705
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L_O::Inst_MIMG__IMAGE_GATHER4_L_O
Inst_MIMG__IMAGE_GATHER4_L_O(InFmt_MIMG *)
Definition: instructions.cc:39051
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40477
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21936
Gcn3ISA::Inst_VOP3__V_BFREV_B32::Inst_VOP3__V_BFREV_B32
Inst_VOP3__V_BFREV_B32(InFmt_VOP3 *)
Definition: instructions.cc:26819
Gcn3ISA::Inst_DS__DS_OR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32841
Gcn3ISA::Inst_SOPP__S_SETKILL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4118
Gcn3ISA::Inst_SOPK__S_SETREG_B32::Inst_SOPK__S_SETREG_B32
Inst_SOPK__S_SETREG_B32(InFmt_SOPK *)
Definition: instructions.cc:1800
Gcn3ISA::Inst_SOP1__S_BITSET0_B32::~Inst_SOP1__S_BITSET0_B32
~Inst_SOP1__S_BITSET0_B32()
Definition: instructions.cc:2513
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I16::~Inst_VOPC__V_CMPX_NE_I16
~Inst_VOPC__V_CMPX_NE_I16()
Definition: instructions.cc:13168
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U64::~Inst_VOPC__V_CMPX_LE_U64
~Inst_VOPC__V_CMPX_LE_U64()
Definition: instructions.cc:15286
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F16::Inst_VOPC__V_CMP_NGE_F16
Inst_VOPC__V_CMP_NGE_F16(InFmt_VOPC *)
Definition: instructions.cc:10056
Gcn3ISA::Inst_DS__DS_APPEND::Inst_DS__DS_APPEND
Inst_DS__DS_APPEND(InFmt_DS *)
Definition: instructions.cc:34104
Gcn3ISA::Inst_SMEM__S_DCACHE_INV_VOL::Inst_SMEM__S_DCACHE_INV_VOL
Inst_SMEM__S_DCACHE_INV_VOL(InFmt_SMEM *)
Definition: instructions.cc:5320
Gcn3ISA::Inst_VOP2__V_MUL_F16::~Inst_VOP2__V_MUL_F16
~Inst_VOP2__V_MUL_F16()
Definition: instructions.cc:6800
Gcn3ISA::ScalarOperand::write
void write() override
Definition: operand.hh:431
Gcn3ISA::Inst_VOP3__V_CMPX_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22790
Gcn3ISA::Inst_VOP1__V_FFBH_U32::~Inst_VOP1__V_FFBH_U32
~Inst_VOP1__V_FFBH_U32()
Definition: instructions.cc:8699
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::Inst_MIMG__IMAGE_LOAD
Inst_MIMG__IMAGE_LOAD(InFmt_MIMG *)
Definition: instructions.cc:37637
Gcn3ISA::Inst_VINTRP__V_INTERP_P2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15468
Gcn3ISA::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:37471
Gcn3ISA::Inst_VOPC__V_CMP_NE_U64::~Inst_VOPC__V_CMP_NE_U64
~Inst_VOPC__V_CMP_NE_U64()
Definition: instructions.cc:14861
Gcn3ISA::Inst_VOP3__V_CVT_I32_F64::~Inst_VOP3__V_CVT_I32_F64
~Inst_VOP3__V_CVT_I32_F64()
Definition: instructions.cc:25233
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::~Inst_FLAT__FLAT_LOAD_DWORD
~Inst_FLAT__FLAT_LOAD_DWORD()
Definition: instructions.cc:39596
Gcn3ISA::Inst_SOP1__S_AND_SAVEEXEC_B64::Inst_SOP1__S_AND_SAVEEXEC_B64
Inst_SOP1__S_AND_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2694
Gcn3ISA::Inst_SOP1__S_SET_GPR_IDX_IDX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3192
Gcn3ISA::Inst_DS__DS_MAX_RTN_F64::Inst_DS__DS_MAX_RTN_F64
Inst_DS__DS_MAX_RTN_F64(InFmt_DS *)
Definition: instructions.cc:33459
Gcn3ISA::Inst_VOP1__V_CEIL_F64::Inst_VOP1__V_CEIL_F64
Inst_VOP1__V_CEIL_F64(InFmt_VOP1 *)
Definition: instructions.cc:8027
Gcn3ISA::Inst_DS__DS_ORDERED_COUNT::~Inst_DS__DS_ORDERED_COUNT
~Inst_DS__DS_ORDERED_COUNT()
Definition: instructions.cc:34124
Gcn3ISA::Inst_VOPC__V_CMP_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10738
Gcn3ISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::Inst_SOP1__S_ANDN2_SAVEEXEC_B64
Inst_SOP1__S_ANDN2_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2790
Gcn3ISA::Inst_DS__DS_ADD_RTN_F32::Inst_DS__DS_ADD_RTN_F32
Inst_DS__DS_ADD_RTN_F32(InFmt_DS *)
Definition: instructions.cc:32015
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U64::Inst_VOPC__V_CMPX_GT_U64
Inst_VOPC__V_CMPX_GT_U64(InFmt_VOPC *)
Definition: instructions.cc:15312
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE0::~Inst_VOP3__V_CVT_F32_UBYTE0
~Inst_VOP3__V_CVT_F32_UBYTE0()
Definition: instructions.cc:25757
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X()
Definition: instructions.cc:37514
Gcn3ISA::Inst_VOP3__V_MAX3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28503
Gcn3ISA::Inst_VOPC__V_CMP_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12807
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F64::~Inst_VOPC__V_CMPX_LT_F64
~Inst_VOPC__V_CMPX_LT_F64()
Definition: instructions.cc:12042
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39182
Gcn3ISA::Inst_VOP3__V_MAX3_U32::~Inst_VOP3__V_MAX3_U32
~Inst_VOP3__V_MAX3_U32()
Definition: instructions.cc:28541
Gcn3ISA::Inst_DS__DS_DEC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31054
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40344
Gcn3ISA::Inst_VOPC__V_CMP_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14898
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND::~Inst_FLAT__FLAT_ATOMIC_AND
~Inst_FLAT__FLAT_ATOMIC_AND()
Definition: instructions.cc:40872
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38912
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F64::~Inst_VOPC__V_CMPX_NGT_F64
~Inst_VOPC__V_CMPX_NGT_F64()
Definition: instructions.cc:12378
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34148
Gcn3ISA::Inst_VOP3__V_INTERP_P1LL_F16::Inst_VOP3__V_INTERP_P1LL_F16
Inst_VOP3__V_INTERP_P1LL_F16(InFmt_VOP3 *)
Definition: instructions.cc:29887
Gcn3ISA::Inst_VOP1__V_CVT_F32_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7656
Gcn3ISA::Inst_VOP2__V_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6300
Gcn3ISA::InFmt_VOP_DPP::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1583
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39046
Gcn3ISA::Inst_VOP3__V_FRACT_F16::~Inst_VOP3__V_FRACT_F16
~Inst_VOP3__V_FRACT_F16()
Definition: instructions.cc:27485
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F64::~Inst_VOP3__V_CMPX_NEQ_F64
~Inst_VOP3__V_CMPX_NEQ_F64()
Definition: instructions.cc:19249
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::Inst_MIMG__IMAGE_SAMPLE_C_CD
Inst_MIMG__IMAGE_SAMPLE_C_CD(InFmt_MIMG *)
Definition: instructions.cc:39270
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::Inst_FLAT__FLAT_LOAD_UBYTE
Inst_FLAT__FLAT_LOAD_UBYTE(InFmt_FLAT *)
Definition: instructions.cc:39387
Gcn3ISA::Inst_SMEM__S_DCACHE_WB_VOL::~Inst_SMEM__S_DCACHE_WB_VOL
~Inst_SMEM__S_DCACHE_WB_VOL()
Definition: instructions.cc:5341
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F64::Inst_VOPC__V_CMPX_NEQ_F64
Inst_VOPC__V_CMPX_NEQ_F64(InFmt_VOPC *)
Definition: instructions.cc:12437
Gcn3ISA::Inst_SOPK__S_ADDK_I32::~Inst_SOPK__S_ADDK_I32
~Inst_SOPK__S_ADDK_I32()
Definition: instructions.cc:1714
Gcn3ISA::Inst_SOPK__S_CMPK_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1620
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F64::~Inst_DS__DS_MAX_SRC2_F64
~Inst_DS__DS_MAX_SRC2_F64()
Definition: instructions.cc:34411
Gcn3ISA::Inst_VOP3__V_OR_B32::Inst_VOP3__V_OR_B32
Inst_VOP3__V_OR_B32(InFmt_VOP3 *)
Definition: instructions.cc:24118
Gcn3ISA::InFmt_VOP_SDWA::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1596
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37038
Gcn3ISA::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:39194
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I32::~Inst_DS__DS_MIN_SRC2_I32
~Inst_DS__DS_MIN_SRC2_I32()
Definition: instructions.cc:33788
Gcn3ISA::Inst_SOP2__S_AND_B64::~Inst_SOP2__S_AND_B64
~Inst_SOP2__S_AND_B64()
Definition: instructions.cc:451
Gcn3ISA::Inst_VOP1__V_CVT_U32_F64::~Inst_VOP1__V_CVT_U32_F64
~Inst_VOP1__V_CVT_U32_F64()
Definition: instructions.cc:7928
Gcn3ISA::Inst_SOP2__S_NAND_B32::~Inst_SOP2__S_NAND_B32
~Inst_SOP2__S_NAND_B32()
Definition: instructions.cc:721
Gcn3ISA::Inst_SOP2__S_XOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:578
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_O::~Inst_MIMG__IMAGE_SAMPLE_O
~Inst_MIMG__IMAGE_SAMPLE_O()
Definition: instructions.cc:38559
Gcn3ISA::InFmt_SOPK
Definition: gpu_decoder.hh:1513
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2()
Definition: instructions.cc:37111
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::~Inst_SMEM__S_BUFFER_LOAD_DWORD
~Inst_SMEM__S_BUFFER_LOAD_DWORD()
Definition: instructions.cc:4731
Gcn3ISA::Inst_VOP3__V_CMPX_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18915
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17087
Gcn3ISA::Inst_VOP1__V_FFBL_B32::Inst_VOP1__V_FFBL_B32
Inst_VOP1__V_FFBL_B32(InFmt_VOP1 *)
Definition: instructions.cc:8723
GPUDispatcher::scheduleDispatch
void scheduleDispatch()
Definition: dispatcher.cc:357
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F16::Inst_VOP3__V_CMPX_NLG_F16
Inst_VOP3__V_CMPX_NLG_F16(InFmt_VOP3 *)
Definition: instructions.cc:16525
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2365
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36357
Gcn3ISA::Inst_VOP3__V_CVT_PKNORM_U16_F32::Inst_VOP3__V_CVT_PKNORM_U16_F32
Inst_VOP3__V_CVT_PKNORM_U16_F32(InFmt_VOP3 *)
Definition: instructions.cc:30897
Gcn3ISA::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:38701
Gcn3ISA::Inst_VOP3__V_CMP_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16159
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F16::Inst_VOP3__V_CMP_NEQ_F16
Inst_VOP3__V_CMP_NEQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:16258
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U64::Inst_DS__DS_RSUB_RTN_U64
Inst_DS__DS_RSUB_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33144
Gcn3ISA::Inst_SOPP__S_BARRIER::~Inst_SOPP__S_BARRIER
~Inst_SOPP__S_BARRIER()
Definition: instructions.cc:4078
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4915
Gcn3ISA::InFmt_VINTRP
Definition: gpu_decoder.hh:1526
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36930
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34859
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17120
Gcn3ISA::Inst_SOPC__S_CMP_LG_I32::Inst_SOPC__S_CMP_LG_I32
Inst_SOPC__S_CMP_LG_I32(InFmt_SOPC *)
Definition: instructions.cc:3223
Gcn3ISA::Inst_VOP3__V_MAX_U16::~Inst_VOP3__V_MAX_U16
~Inst_VOP3__V_MAX_U16()
Definition: instructions.cc:24979
Gcn3ISA::Inst_VOP3__V_CMP_LE_F64::~Inst_VOP3__V_CMP_LE_F64
~Inst_VOP3__V_CMP_LE_F64()
Definition: instructions.cc:17852
Gcn3ISA::Inst_VOPC__V_CMPX_U_F32::Inst_VOPC__V_CMPX_U_F32
Inst_VOPC__V_CMPX_U_F32(InFmt_VOPC *)
Definition: instructions.cc:11240
Gcn3ISA::Inst_VOP2__V_MADAK_F16::~Inst_VOP2__V_MADAK_F16
~Inst_VOP2__V_MADAK_F16()
Definition: instructions.cc:6860
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41487
Gcn3ISA::Inst_VOP1__V_RCP_F16::Inst_VOP1__V_RCP_F16
Inst_VOP1__V_RCP_F16(InFmt_VOP1 *)
Definition: instructions.cc:9046
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35152
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31387
Gcn3ISA::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:34838
Gcn3ISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::~Inst_SOP1__S_ORN2_SAVEEXEC_B64
~Inst_SOP1__S_ORN2_SAVEEXEC_B64()
Definition: instructions.cc:2829
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38896
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35551
Gcn3ISA::Inst_VOP3__V_CMP_T_I16::Inst_VOP3__V_CMP_T_I16
Inst_VOP3__V_CMP_T_I16(InFmt_VOP3 *)
Definition: instructions.cc:19660
Gcn3ISA::Inst_SOPP__S_ENDPGM_SAVED::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4387
Gcn3ISA::Inst_VOPC__V_CMP_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13749
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F64::Inst_VOPC__V_CMPX_NGE_F64
Inst_VOPC__V_CMPX_NGE_F64(InFmt_VOPC *)
Definition: instructions.cc:12304
Gcn3ISA::InFmt_MUBUF_1::SOFFSET
unsigned int SOFFSET
Definition: gpu_decoder.hh:1474
Gcn3ISA::Inst_VOP3__V_CMP_LG_F16::~Inst_VOP3__V_CMP_LG_F16
~Inst_VOP3__V_CMP_LG_F16()
Definition: instructions.cc:16116
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_I32::Inst_SOPK__S_CMPK_EQ_I32
Inst_SOPK__S_CMPK_EQ_I32(InFmt_SOPK *)
Definition: instructions.cc:1408
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::Inst_FLAT__FLAT_ATOMIC_SMAX_X2
Inst_FLAT__FLAT_ATOMIC_SMAX_X2(InFmt_FLAT *)
Definition: instructions.cc:41518
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L::Inst_MIMG__IMAGE_GATHER4_C_L
Inst_MIMG__IMAGE_GATHER4_C_L(InFmt_MIMG *)
Definition: instructions.cc:38950
Gcn3ISA::Inst_VOP3__V_CMPX_F_U64::Inst_VOP3__V_CMPX_F_U64
Inst_VOP3__V_CMPX_F_U64(InFmt_VOP3 *)
Definition: instructions.cc:22777
Gcn3ISA::Inst_DS__DS_OR_SRC2_B64::~Inst_DS__DS_OR_SRC2_B64
~Inst_DS__DS_OR_SRC2_B64()
Definition: instructions.cc:34330
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::~Inst_FLAT__FLAT_ATOMIC_CMPSWAP
~Inst_FLAT__FLAT_ATOMIC_CMPSWAP()
Definition: instructions.cc:40467
Gcn3ISA::Inst_SOP2__S_BFM_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1118
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F32::Inst_VOP3__V_FREXP_MANT_F32
Inst_VOP3__V_FREXP_MANT_F32(InFmt_VOP3 *)
Definition: instructions.cc:27131
Gcn3ISA::Inst_VOP3__V_CMPX_F_U16::~Inst_VOP3__V_CMPX_F_U16
~Inst_VOP3__V_CMPX_F_U16()
Definition: instructions.cc:20311
Gcn3ISA::Inst_DS__DS_INC_SRC2_U32::~Inst_DS__DS_INC_SRC2_U32
~Inst_DS__DS_INC_SRC2_U32()
Definition: instructions.cc:33749
Gcn3ISA::Inst_VOP2__V_SUB_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6770
Gcn3ISA::Inst_SOP1__S_FF1_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2313
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2494
Gcn3ISA::Inst_VOP3__V_SUB_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24582
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5284
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19767
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B64::Inst_SOP1__S_FLBIT_I32_B64
Inst_SOP1__S_FLBIT_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2377
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F32::~Inst_VOP3__V_CMP_TRU_F32
~Inst_VOP3__V_CMP_TRU_F32()
Definition: instructions.cc:17147
Gcn3ISA::Inst_VOP3__V_CVT_F64_F32::~Inst_VOP3__V_CVT_F64_F32
~Inst_VOP3__V_CVT_F64_F32()
Definition: instructions.cc:25711
Gcn3ISA::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:34904
Gcn3ISA::Inst_VOP3::extData
InFmt_VOP3_1 extData
Definition: op_encodings.hh:372
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35786
Gcn3ISA::Inst_VOP3__V_INTERP_MOV_F32::~Inst_VOP3__V_INTERP_MOV_F32
~Inst_VOP3__V_INTERP_MOV_F32()
Definition: instructions.cc:29876
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18520
Gcn3ISA::Inst_DS__DS_ADD_U64::Inst_DS__DS_ADD_U64
Inst_DS__DS_ADD_U64(InFmt_DS *)
Definition: instructions.cc:32646
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F32::Inst_VOP3__V_CMP_NLG_F32
Inst_VOP3__V_CMP_NLG_F32(InFmt_VOP3 *)
Definition: instructions.cc:16973
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::Inst_FLAT__FLAT_ATOMIC_SUB
Inst_FLAT__FLAT_ATOMIC_SUB(InFmt_FLAT *)
Definition: instructions.cc:40664
Gcn3ISA::Inst_VOP3__V_CMPX_T_I64::~Inst_VOP3__V_CMPX_T_I64
~Inst_VOP3__V_CMPX_T_I64()
Definition: instructions.cc:22756
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::Inst_MUBUF__BUFFER_STORE_DWORDX2
Inst_MUBUF__BUFFER_STORE_DWORDX2(InFmt_MUBUF *)
Definition: instructions.cc:35983
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4738
Gcn3ISA::Inst_VOP2__V_ASHRREV_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7074
Gcn3ISA::Inst_VOP3__V_MIN_F64::Inst_VOP3__V_MIN_F64
Inst_VOP3__V_MIN_F64(InFmt_VOP3 *)
Definition: instructions.cc:30138
Gcn3ISA::Inst_VOP3__V_MED3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28592
Gcn3ISA::Inst_DS__DS_READ_B96::~Inst_DS__DS_READ_B96
~Inst_DS__DS_READ_B96()
Definition: instructions.cc:34470
Gcn3ISA::Inst_DS__DS_READ_B32::~Inst_DS__DS_READ_B32
~Inst_DS__DS_READ_B32()
Definition: instructions.cc:32040
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F16::~Inst_VOPC__V_CMPX_NGE_F16
~Inst_VOPC__V_CMPX_NGE_F16()
Definition: instructions.cc:10353
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16366
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::~Inst_FLAT__FLAT_STORE_SHORT
~Inst_FLAT__FLAT_STORE_SHORT()
Definition: instructions.cc:39979
Gcn3ISA::Inst_VOP1__V_LOG_F32::Inst_VOP1__V_LOG_F32
Inst_VOP1__V_LOG_F32(InFmt_VOP1 *)
Definition: instructions.cc:8298
Gcn3ISA::Inst_VOP3__V_MAX3_I32::Inst_VOP3__V_MAX3_I32
Inst_VOP3__V_MAX3_I32(InFmt_VOP3 *)
Definition: instructions.cc:28491
Gcn3ISA::Inst_SOP2__S_CBRANCH_G_FORK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1307
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37520
Gcn3ISA::Inst_VOP3__V_CMP_GE_I32::~Inst_VOP3__V_CMP_GE_I32
~Inst_VOP3__V_CMP_GE_I32()
Definition: instructions.cc:20862
Gcn3ISA::Inst_DS__DS_GWS_SEMA_P::~Inst_DS__DS_GWS_SEMA_P
~Inst_DS__DS_GWS_SEMA_P()
Definition: instructions.cc:34064
Gcn3ISA::Inst_DS__DS_XOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32859
Gcn3ISA::Inst_VOP2__V_SUBREV_F32::Inst_VOP2__V_SUBREV_F32
Inst_VOP2__V_SUBREV_F32(InFmt_VOP2 *)
Definition: instructions.cc:5541
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::Inst_MIMG__IMAGE_GATHER4_C_LZ
Inst_MIMG__IMAGE_GATHER4_C_LZ(InFmt_MIMG *)
Definition: instructions.cc:39001
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F16::Inst_VOPC__V_CMPX_NLG_F16
Inst_VOPC__V_CMPX_NLG_F16(InFmt_VOPC *)
Definition: instructions.cc:10364
Gcn3ISA::Inst_VOP3__V_CVT_PKNORM_U16_F32::~Inst_VOP3__V_CVT_PKNORM_U16_F32
~Inst_VOP3__V_CVT_PKNORM_U16_F32()
Definition: instructions.cc:30905
Gcn3ISA::Inst_VOP1__V_RNDNE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9262
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27100
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34756
Gcn3ISA::Inst_DS__DS_WRITE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31217
Gcn3ISA::Inst_SMEM__S_DCACHE_INV_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5331
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33701
Gcn3ISA::Inst_SOPC__S_BITCMP0_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3573
Gcn3ISA::Inst_SOP1__S_OR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2741
Gcn3ISA::Inst_MIMG__IMAGE_STORE::Inst_MIMG__IMAGE_STORE
Inst_MIMG__IMAGE_STORE(InFmt_MIMG *)
Definition: instructions.cc:37812
Gcn3ISA::Inst_VOP3__V_CMP_GE_U64::Inst_VOP3__V_CMP_GE_U64
Inst_VOP3__V_CMP_GE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22395
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F64::~Inst_VOP3__V_CMPX_NGT_F64
~Inst_VOP3__V_CMPX_NGT_F64()
Definition: instructions.cc:19137
Gcn3ISA::Inst_VOPC__V_CMP_LE_I16::Inst_VOPC__V_CMP_LE_I16
Inst_VOPC__V_CMP_LE_I16(InFmt_VOPC *)
Definition: instructions.cc:12619
Gcn3ISA::Inst_VOP3__V_CMP_LT_I64::~Inst_VOP3__V_CMP_LT_I64
~Inst_VOP3__V_CMP_LT_I64()
Definition: instructions.cc:21888
Gcn3ISA::Inst_SOP1__S_NOT_B64::Inst_SOP1__S_NOT_B64
Inst_SOP1__S_NOT_B64(InFmt_SOP1 *)
Definition: instructions.cc:2002
Gcn3ISA::Inst_DS__DS_OR_B64::~Inst_DS__DS_OR_B64
~Inst_DS__DS_OR_B64()
Definition: instructions.cc:32833
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B64::~Inst_DS__DS_WRITE2ST64_B64
~Inst_DS__DS_WRITE2ST64_B64()
Definition: instructions.cc:33013
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::~Inst_MUBUF__BUFFER_STORE_FORMAT_X
~Inst_MUBUF__BUFFER_STORE_FORMAT_X()
Definition: instructions.cc:34628
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::Inst_SMEM__S_LOAD_DWORDX8
Inst_SMEM__S_LOAD_DWORDX8(InFmt_SMEM *)
Definition: instructions.cc:4609
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12600
Wavefront::outstandingReqsRdGm
int outstandingReqsRdGm
Definition: wavefront.hh:169
Gcn3ISA::Inst_VOP3__V_MIN_U16::Inst_VOP3__V_MIN_U16
Inst_VOP3__V_MIN_U16(InFmt_VOP3 *)
Definition: instructions.cc:25067
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38597
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37237
Gcn3ISA::Inst_SOPP::instData
InFmt_SOPP instData
Definition: op_encodings.hh:184
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I32::Inst_VOP3__V_CMPX_EQ_I32
Inst_VOP3__V_CMPX_EQ_I32(InFmt_VOP3 *)
Definition: instructions.cc:21298
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I16::~Inst_VOPC__V_CMPX_LE_I16
~Inst_VOPC__V_CMPX_LE_I16()
Definition: instructions.cc:13104
Gcn3ISA::Inst_VOP3__V_CVT_U32_F64::~Inst_VOP3__V_CVT_U32_F64
~Inst_VOP3__V_CVT_U32_F64()
Definition: instructions.cc:25909
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34167
Gcn3ISA::Inst_SOP2__S_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:312
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::~Inst_DS__DS_WRITE2ST64_B32
~Inst_DS__DS_WRITE2ST64_B32()
Definition: instructions.cc:31334
Gcn3ISA::Inst_VOP3__V_MIN_F32::~Inst_VOP3__V_MIN_F32
~Inst_VOP3__V_MIN_F32()
Definition: instructions.cc:23686
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16272
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5279
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13078
Gcn3ISA::Inst_VOP3__V_SUBREV_F32::Inst_VOP3__V_SUBREV_F32
Inst_VOP3__V_SUBREV_F32(InFmt_VOP3 *)
Definition: instructions.cc:23255
Gcn3ISA::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:38984
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U16::Inst_VOPC__V_CMPX_GE_U16
Inst_VOPC__V_CMPX_GE_U16(InFmt_VOPC *)
Definition: instructions.cc:13440
Gcn3ISA::Inst_VOP3__V_MQSAD_U32_U8::Inst_VOP3__V_MQSAD_U32_U8
Inst_VOP3__V_MQSAD_U32_U8(InFmt_VOP3 *)
Definition: instructions.cc:29463
Gcn3ISA::Inst_SOPC__S_BITCMP0_B64::~Inst_SOPC__S_BITCMP0_B64
~Inst_SOPC__S_BITCMP0_B64()
Definition: instructions.cc:3567
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F32::~Inst_VOP3__V_CMP_NLE_F32
~Inst_VOP3__V_CMP_NLE_F32()
Definition: instructions.cc:17048
Gcn3ISA::Inst_VOP1__V_CLREXCP::Inst_VOP1__V_CLREXCP
Inst_VOP1__V_CLREXCP(InFmt_VOP1 *)
Definition: instructions.cc:8958
Gcn3ISA::Inst_VOP3__V_CMP_GT_I32::~Inst_VOP3__V_CMP_GT_I32
~Inst_VOP3__V_CMP_GT_I32()
Definition: instructions.cc:20778
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38945
Gcn3ISA::Inst_VOP3__V_CMPX_O_F64::Inst_VOP3__V_CMPX_O_F64
Inst_VOP3__V_CMPX_O_F64(InFmt_VOP3 *)
Definition: instructions.cc:18900
Gcn3ISA::Inst_SOP1__S_SETPC_B64::Inst_SOP1__S_SETPC_B64
Inst_SOP1__S_SETPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2627
Gcn3ISA::InFmt_VOP_DPP::SRC1_NEG
unsigned int SRC1_NEG
Definition: gpu_decoder.hh:1589
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::~Inst_MUBUF__BUFFER_LOAD_DWORDX3
~Inst_MUBUF__BUFFER_LOAD_DWORDX3()
Definition: instructions.cc:35482
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F16::Inst_VOPC__V_CMPX_NGE_F16
Inst_VOPC__V_CMPX_NGE_F16(InFmt_VOPC *)
Definition: instructions.cc:10346
Gcn3ISA::Inst_MIMG__IMAGE_GET_LOD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39232
Gcn3ISA::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:4340
Gcn3ISA::VecElemI64
int64_t VecElemI64
Definition: registers.hh:170
Gcn3ISA::REG_M0
@ REG_M0
Definition: registers.hh:75
Gcn3ISA::Inst_VOP3__V_SAD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28838
Gcn3ISA::Inst_SOP2__S_BFE_I64::~Inst_SOP2__S_BFE_I64
~Inst_SOP2__S_BFE_I64()
Definition: instructions.cc:1265
Gcn3ISA::Inst_SOP2__S_BFM_B64::Inst_SOP2__S_BFM_B64
Inst_SOP2__S_BFM_B64(InFmt_SOP2 *)
Definition: instructions.cc:1106
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39473
Gcn3ISA::Inst_VOP3__V_CMPX_U_F32::~Inst_VOP3__V_CMPX_U_F32
~Inst_VOP3__V_CMPX_U_F32()
Definition: instructions.cc:17445
Gcn3ISA::Inst_SOP1__S_ABS_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3146
Gcn3ISA::InFmt_SMEM::SBASE
unsigned int SBASE
Definition: gpu_decoder.hh:1478
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B64::Inst_DS__DS_WRITE2ST64_B64
Inst_DS__DS_WRITE2ST64_B64(InFmt_DS *)
Definition: instructions.cc:33006
Gcn3ISA::Inst_VOP3__V_CMP_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16662
Gcn3ISA::Inst_VOPC__V_CMP_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12755
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F64::~Inst_VOP3__V_CMP_EQ_F64
~Inst_VOP3__V_CMP_EQ_F64()
Definition: instructions.cc:17797
Gcn3ISA::Inst_VINTRP__V_INTERP_MOV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15486
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35118
ComputeUnit::releaseBarrier
void releaseBarrier(int bar_id)
Definition: compute_unit.cc:680
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37767
Gcn3ISA::Inst_VOPC__V_CMP_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13961
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I16::Inst_VOPC__V_CMPX_GE_I16
Inst_VOPC__V_CMPX_GE_I16(InFmt_VOPC *)
Definition: instructions.cc:13194
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::Inst_DS__DS_READ2ST64_B64
Inst_DS__DS_READ2ST64_B64(InFmt_DS *)
Definition: instructions.cc:33605
Gcn3ISA::Inst_VOP2__V_SUBBREV_U32::~Inst_VOP2__V_SUBBREV_U32
~Inst_VOP2__V_SUBBREV_U32()
Definition: instructions.cc:6704
Gcn3ISA::Inst_VOP1__V_RNDNE_F32::Inst_VOP1__V_RNDNE_F32
Inst_VOP1__V_RNDNE_F32(InFmt_VOP1 *)
Definition: instructions.cc:8208
Gcn3ISA::Inst_SOP1__S_NOT_B32::~Inst_SOP1__S_NOT_B32
~Inst_SOP1__S_NOT_B32()
Definition: instructions.cc:1978
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F64::~Inst_VOPC__V_CMPX_GT_F64
~Inst_VOPC__V_CMPX_GT_F64()
Definition: instructions.cc:12141
Gcn3ISA::Inst_VOP1__V_MOV_FED_B32::Inst_VOP1__V_MOV_FED_B32
Inst_VOP1__V_MOV_FED_B32(InFmt_VOP1 *)
Definition: instructions.cc:7607
Gcn3ISA::Inst_VOPC__V_CMPX_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10991
Gcn3ISA::Inst_DS__DS_INC_U64::Inst_DS__DS_INC_U64
Inst_DS__DS_INC_U64(InFmt_DS *)
Definition: instructions.cc:32701
Gcn3ISA::Inst_VOP3__V_CUBESC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27845
Gcn3ISA::Inst_VOP3__V_CMP_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16122
Gcn3ISA::Inst_DS__DS_MAX_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32805
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34964
Gcn3ISA::InFmt_VOP3::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1551
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U64::Inst_VOP3__V_CMPX_NE_U64
Inst_VOP3__V_CMPX_NE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22977
Gcn3ISA::Inst_VOP1__V_RSQ_F16::~Inst_VOP1__V_RSQ_F16
~Inst_VOP1__V_RSQ_F16()
Definition: instructions.cc:9095
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37453
Gcn3ISA::Inst_VOP3__V_MIN_F64::~Inst_VOP3__V_MIN_F64
~Inst_VOP3__V_MIN_F64()
Definition: instructions.cc:30145
Gcn3ISA::Inst_VOP2__V_SUBBREV_U32::Inst_VOP2__V_SUBBREV_U32
Inst_VOP2__V_SUBBREV_U32(InFmt_VOP2 *)
Definition: instructions.cc:6696
Gcn3ISA::Inst_DS__DS_MAX_RTN_U32::Inst_DS__DS_MAX_RTN_U32
Inst_DS__DS_MAX_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31773
Gcn3ISA::InFmt_SOP2::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1501
Gcn3ISA::InFmt_MUBUF::OFFSET
unsigned int OFFSET
Definition: gpu_decoder.hh:1456
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F16::~Inst_VOP3__V_CMPX_LG_F16
~Inst_VOP3__V_CMPX_LG_F16()
Definition: instructions.cc:16436
Gcn3ISA::Inst_VOP3__V_RCP_F64::~Inst_VOP3__V_RCP_F64
~Inst_VOP3__V_RCP_F64()
Definition: instructions.cc:26542
Gcn3ISA::Inst_VOPC__V_CMP_LE_F32::Inst_VOPC__V_CMP_LE_F32
Inst_VOPC__V_CMP_LE_F32(InFmt_VOPC *)
Definition: instructions.cc:10563
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECNZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4060
Gcn3ISA::Inst_VOPC__V_CMP_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11702
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4797
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36984
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I64::~Inst_VOP3__V_CMPX_EQ_I64
~Inst_VOP3__V_CMPX_EQ_I64()
Definition: instructions.cc:22541
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX::Inst_FLAT__FLAT_ATOMIC_SMAX
Inst_FLAT__FLAT_ATOMIC_SMAX(InFmt_FLAT *)
Definition: instructions.cc:40810
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U16::Inst_VOP3__V_CMPX_LE_U16
Inst_VOP3__V_CMPX_LE_U16(InFmt_VOP3 *)
Definition: instructions.cc:20418
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B64::~Inst_SOP1__S_BCNT0_I32_B64
~Inst_SOP1__S_BCNT0_I32_B64()
Definition: instructions.cc:2169
Gcn3ISA::Inst_DS__DS_MSKOR_B32::~Inst_DS__DS_MSKOR_B32
~Inst_DS__DS_MSKOR_B32()
Definition: instructions.cc:31190
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5184
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F16::~Inst_VOP3__V_CMPX_NGT_F16
~Inst_VOP3__V_CMPX_NGT_F16()
Definition: instructions.cc:16552
Gcn3ISA::Inst_SOP2__S_NAND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:758
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37707
Gcn3ISA::Inst_VOP3__V_LSHLREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24047
Gcn3ISA::Inst_VOP3__V_RSQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27320
Gcn3ISA::Inst_VOP3__V_CMP_NE_I16::~Inst_VOP3__V_CMP_NE_I16
~Inst_VOP3__V_CMP_NE_I16()
Definition: instructions.cc:19583
Gcn3ISA::Inst_VOPC__V_CMPX_O_F64::~Inst_VOPC__V_CMPX_O_F64
~Inst_VOPC__V_CMPX_O_F64()
Definition: instructions.cc:12241
FetchStage::fetchUnit
FetchUnit & fetchUnit(int simdId)
Definition: fetch_stage.hh:65
Gcn3ISA::InFmt_SOP1::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1492
Gcn3ISA::Inst_DS__DS_READ2_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:33578
Gcn3ISA::Inst_VOPC__V_CMP_GT_U32::Inst_VOPC__V_CMP_GT_U32
Inst_VOPC__V_CMP_GT_U32(InFmt_VOPC *)
Definition: instructions.cc:13856
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13388
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL::~Inst_MIMG__IMAGE_GATHER4_B_CL
~Inst_MIMG__IMAGE_GATHER4_B_CL()
Definition: instructions.cc:38891
Gcn3ISA::Inst_VOP3__V_RSQ_F16::~Inst_VOP3__V_RSQ_F16
~Inst_VOP3__V_RSQ_F16()
Definition: instructions.cc:27311
Gcn3ISA::Inst_VOP3__V_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23840
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::Inst_DS__DS_WRITE2ST64_B32
Inst_DS__DS_WRITE2ST64_B32(InFmt_DS *)
Definition: instructions.cc:31327
Gcn3ISA::Inst_VOP3__V_CMP_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19698
Gcn3ISA::Inst_DS__DS_INC_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31696
Gcn3ISA::Inst_DS__DS_MIN_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31768
Gcn3ISA::Inst_VOP3__V_CMP_F_U16::~Inst_VOP3__V_CMP_F_U16
~Inst_VOP3__V_CMP_F_U16()
Definition: instructions.cc:19692
Gcn3ISA::Inst_DS__DS_READ_I16::~Inst_DS__DS_READ_I16
~Inst_DS__DS_READ_I16()
Definition: instructions.cc:32313
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21004
Gcn3ISA::Inst_VOP3__V_CMP_LT_U16::Inst_VOP3__V_CMP_LT_U16
Inst_VOP3__V_CMP_LT_U16(InFmt_VOP3 *)
Definition: instructions.cc:19712
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
Inst_MTBUF__TBUFFER_STORE_FORMAT_XY(InFmt_MTBUF *)
Definition: instructions.cc:37277
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F16::~Inst_VOP3__V_CMPX_NEQ_F16
~Inst_VOP3__V_CMPX_NEQ_F16()
Definition: instructions.cc:16590
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F32::Inst_VOPC__V_CMPX_NGT_F32
Inst_VOPC__V_CMPX_NGT_F32(InFmt_VOPC *)
Definition: instructions.cc:11342
Gcn3ISA::Inst_SMEM
Definition: op_encodings.hh:187
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B::~Inst_MIMG__IMAGE_GATHER4_B
~Inst_MIMG__IMAGE_GATHER4_B()
Definition: instructions.cc:38874
Gcn3ISA::Inst_SOP2__S_ADD_I32::Inst_SOP2__S_ADD_I32
Inst_SOP2__S_ADD_I32(InFmt_SOP2 *)
Definition: instructions.cc:110
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F32::~Inst_VOP3__V_CMPX_NLG_F32
~Inst_VOP3__V_CMPX_NLG_F32()
Definition: instructions.cc:17515
Gcn3ISA::Inst_VOPC__V_CMP_O_F32::Inst_VOPC__V_CMP_O_F32
Inst_VOPC__V_CMP_O_F32(InFmt_VOPC *)
Definition: instructions.cc:10692
Gcn3ISA::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:34805
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::~Inst_MIMG__IMAGE_ATOMIC_SMAX
~Inst_MIMG__IMAGE_ATOMIC_SMAX()
Definition: instructions.cc:38121
Gcn3ISA::Inst_SMEM__S_DCACHE_INV::Inst_SMEM__S_DCACHE_INV
Inst_SMEM__S_DCACHE_INV(InFmt_SMEM *)
Definition: instructions.cc:5288
Wavefront::validateRequestCounters
void validateRequestCounters()
Definition: wavefront.cc:805
Gcn3ISA::Inst_VOP1__V_CVT_F64_I32::Inst_VOP1__V_CVT_F64_I32
Inst_VOP1__V_CVT_F64_I32(InFmt_VOP1 *)
Definition: instructions.cc:7427
Gcn3ISA::Inst_SOP1__S_QUADMASK_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2993
Gcn3ISA::Inst_VOP3__V_RNDNE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27473
Gcn3ISA::Inst_DS__DS_DEC_U32::Inst_DS__DS_DEC_U32
Inst_DS__DS_DEC_U32(InFmt_DS *)
Definition: instructions.cc:31041
Gcn3ISA::Inst_DS__DS_ADD_RTN_F32::~Inst_DS__DS_ADD_RTN_F32
~Inst_DS__DS_ADD_RTN_F32()
Definition: instructions.cc:32021
Gcn3ISA::Inst_DS__DS_MIN_U32::~Inst_DS__DS_MIN_U32
~Inst_DS__DS_MIN_U32()
Definition: instructions.cc:31100
Gcn3ISA::Inst_SOPP__S_SENDMSGHALT::~Inst_SOPP__S_SENDMSGHALT
~Inst_SOPP__S_SENDMSGHALT()
Definition: instructions.cc:4219
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F16::Inst_VOPC__V_CMPX_LT_F16
Inst_VOPC__V_CMPX_LT_F16(InFmt_VOPC *)
Definition: instructions.cc:10200
Gcn3ISA::Inst_VOP3__V_SUBBREV_U32::~Inst_VOP3__V_SUBBREV_U32
~Inst_VOP3__V_SUBBREV_U32()
Definition: instructions.cc:24508
Gcn3ISA::Inst_VOPC__V_CMP_LE_I64::~Inst_VOPC__V_CMP_LE_I64
~Inst_VOPC__V_CMP_LE_I64()
Definition: instructions.cc:14561
Gcn3ISA::Inst_SOPP
Definition: op_encodings.hh:169
Gcn3ISA::Inst_VOPC__V_CMPX_F_U32::~Inst_VOPC__V_CMPX_F_U32
~Inst_VOPC__V_CMPX_F_U32()
Definition: instructions.cc:14227
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34550
Gcn3ISA::Inst_VOP3__V_CVT_PK_U8_F32::~Inst_VOP3__V_CVT_PK_U8_F32
~Inst_VOP3__V_CVT_PK_U8_F32()
Definition: instructions.cc:28923
Gcn3ISA::InFmt_VOP_DPP::BOUND_CTRL
unsigned int BOUND_CTRL
Definition: gpu_decoder.hh:1586
Gcn3ISA::Inst_SOPC__S_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3417
Gcn3ISA::Inst_VOP3__V_MAX_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24985
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39097
Gcn3ISA::Inst_VOP1__V_EXP_LEGACY_F32::~Inst_VOP1__V_EXP_LEGACY_F32
~Inst_VOP1__V_EXP_LEGACY_F32()
Definition: instructions.cc:9328
Gcn3ISA::Inst_VOPC__V_CMP_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12993
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39316
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B64::~Inst_SOP1__S_BCNT1_I32_B64
~Inst_SOP1__S_BCNT1_I32_B64()
Definition: instructions.cc:2225
Gcn3ISA::Inst_VOPC__V_CMP_T_U32::Inst_VOPC__V_CMP_T_U32
Inst_VOPC__V_CMP_T_U32(InFmt_VOPC *)
Definition: instructions.cc:13949
Gcn3ISA::Inst_VOPC__V_CMP_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11767
Gcn3ISA::Inst_VOP2__V_MIN_U16::~Inst_VOP2__V_MIN_U16
~Inst_VOP2__V_MIN_U16()
Definition: instructions.cc:7197
Gcn3ISA::Inst_DS__DS_OR_B32::Inst_DS__DS_OR_B32
Inst_DS__DS_OR_B32(InFmt_DS *)
Definition: instructions.cc:31149
ComputeUnit::fetchStage
FetchStage fetchStage
Definition: compute_unit.hh:277
Gcn3ISA::Inst_SOPK__S_CMPK_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1695
Gcn3ISA::Inst_VOP3__V_CMP_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17858
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F64::~Inst_VOP3__V_CMP_CLASS_F64
~Inst_VOP3__V_CMP_CLASS_F64()
Definition: instructions.cc:15729
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::Inst_DS__DS_WRXCHG2ST64_RTN_B64
Inst_DS__DS_WRXCHG2ST64_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33380
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40880
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F16::Inst_VOP3__V_CMPX_NGE_F16
Inst_VOP3__V_CMPX_NGE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16506
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F32::Inst_VOPC__V_CMPX_NLG_F32
Inst_VOPC__V_CMPX_NLG_F32(InFmt_VOPC *)
Definition: instructions.cc:11308
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12081
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F64::Inst_VOPC__V_CMP_NLT_F64
Inst_VOPC__V_CMP_NLT_F64(InFmt_VOPC *)
Definition: instructions.cc:11948
Gcn3ISA::Inst_DS__DS_WRITE_B96::Inst_DS__DS_WRITE_B96
Inst_DS__DS_WRITE_B96(InFmt_DS *)
Definition: instructions.cc:34425
Gcn3ISA::Inst_VOP3__V_FRACT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27491
Gcn3ISA::Inst_VOP3__V_LSHLREV_B16::~Inst_VOP3__V_LSHLREV_B16
~Inst_VOP3__V_LSHLREV_B16()
Definition: instructions.cc:24812
Gcn3ISA::Inst_SMEM__S_ATC_PROBE_BUFFER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5410
Gcn3ISA::Inst_DS__DS_AND_RTN_B32::~Inst_DS__DS_AND_RTN_B32
~Inst_DS__DS_AND_RTN_B32()
Definition: instructions.cc:31796
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::Inst_FLAT__FLAT_ATOMIC_SUB_X2
Inst_FLAT__FLAT_ATOMIC_SUB_X2(InFmt_FLAT *)
Definition: instructions.cc:41367
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::~Inst_FLAT__FLAT_LOAD_SSHORT
~Inst_FLAT__FLAT_LOAD_SSHORT()
Definition: instructions.cc:39568
Gcn3ISA::Inst_VOP3__V_CMP_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16103
Gcn3ISA::Inst_VOP1__V_LOG_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9364
Gcn3ISA::Inst_SOP2__S_NAND_B64::Inst_SOP2__S_NAND_B64
Inst_SOP2__S_NAND_B64(InFmt_SOP2 *)
Definition: instructions.cc:745
Gcn3ISA::Inst_VOP3__V_MUL_F16::~Inst_VOP3__V_MUL_F16
~Inst_VOP3__V_MUL_F16()
Definition: instructions.cc:24612
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F32::Inst_DS__DS_CMPST_RTN_F32
Inst_DS__DS_CMPST_RTN_F32(InFmt_DS *)
Definition: instructions.cc:31936
Gcn3ISA::InFmt_VOP1
Definition: gpu_decoder.hh:1535
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4828
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD::~Inst_MIMG__IMAGE_SAMPLE_CD
~Inst_MIMG__IMAGE_SAMPLE_CD()
Definition: instructions.cc:39243
Gcn3ISA::Inst_VOP3__V_MIN_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25079
Gcn3ISA::Inst_VOPC__V_CMP_GE_U64::Inst_VOPC__V_CMP_GE_U64
Inst_VOPC__V_CMP_GE_U64(InFmt_VOPC *)
Definition: instructions.cc:14886
Gcn3ISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::~Inst_SOP1__S_XOR_SAVEEXEC_B64
~Inst_SOP1__S_XOR_SAVEEXEC_B64()
Definition: instructions.cc:2765
Gcn3ISA::Inst_DS__DS_MIN_I64::Inst_DS__DS_MIN_I64
Inst_DS__DS_MIN_I64(InFmt_DS *)
Definition: instructions.cc:32738
Gcn3ISA::Inst_VOP3__V_CMP_U_F64::~Inst_VOP3__V_CMP_U_F64
~Inst_VOP3__V_CMP_U_F64()
Definition: instructions.cc:18127
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F64::~Inst_VOPC__V_CMPX_TRU_F64
~Inst_VOPC__V_CMPX_TRU_F64()
Definition: instructions.cc:12510
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I64::~Inst_VOP3__V_CMPX_GE_I64
~Inst_VOP3__V_CMPX_GE_I64()
Definition: instructions.cc:22713
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38630
Gcn3ISA::Inst_VOPC__V_CMP_LT_F32::Inst_VOPC__V_CMP_LT_F32
Inst_VOPC__V_CMP_LT_F32(InFmt_VOPC *)
Definition: instructions.cc:10499
Gcn3ISA::Inst_DS__DS_READ_U16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32361
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::Inst_SMEM__S_BUFFER_STORE_DWORDX4
Inst_SMEM__S_BUFFER_STORE_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:5258
Gcn3ISA::Inst_VOPC__V_CMP_GE_U32::Inst_VOPC__V_CMP_GE_U32
Inst_VOPC__V_CMP_GE_U32(InFmt_VOPC *)
Definition: instructions.cc:13918
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F16::~Inst_VOPC__V_CMPX_NLG_F16
~Inst_VOPC__V_CMPX_NLG_F16()
Definition: instructions.cc:10371
Gcn3ISA::Inst_SOPK__S_SETREG_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1815
Gcn3ISA::Inst_VOP2__V_CNDMASK_B32::~Inst_VOP2__V_CNDMASK_B32
~Inst_VOP2__V_CNDMASK_B32()
Definition: instructions.cc:5422
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F64::~Inst_VOPC__V_CMPX_NLE_F64
~Inst_VOPC__V_CMPX_NLE_F64()
Definition: instructions.cc:12411
Gcn3ISA::Inst_VOPC__V_CMPX_F_I16::Inst_VOPC__V_CMPX_F_I16
Inst_VOPC__V_CMPX_F_I16(InFmt_VOPC *)
Definition: instructions.cc:13007
Gcn3ISA::Inst_SOP2__S_BFE_I32::Inst_SOP2__S_BFE_I32
Inst_SOP2__S_BFE_I32(InFmt_SOP2 *)
Definition: instructions.cc:1192
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F16::~Inst_VOP3__V_CMPX_NLT_F16
~Inst_VOP3__V_CMPX_NLT_F16()
Definition: instructions.cc:16609
Gcn3ISA::Inst_VOPC__V_CMP_T_U16::~Inst_VOPC__V_CMP_T_U16
~Inst_VOPC__V_CMP_T_U16()
Definition: instructions.cc:12987
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F16::~Inst_VOPC__V_CMPX_LT_F16
~Inst_VOPC__V_CMPX_LT_F16()
Definition: instructions.cc:10207
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3947
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37894
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F64::~Inst_VOP3__V_CMP_NEQ_F64
~Inst_VOP3__V_CMP_NEQ_F64()
Definition: instructions.cc:18404
Gcn3ISA::Inst_VOP3__V_SIN_F16::Inst_VOP3__V_SIN_F16
Inst_VOP3__V_SIN_F16(InFmt_VOP3 *)
Definition: instructions.cc:27496
Gcn3ISA::Inst_SOPK__S_CMPK_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1520
Gcn3ISA::Inst_DS__DS_READ2_B64::~Inst_DS__DS_READ2_B64
~Inst_DS__DS_READ2_B64()
Definition: instructions.cc:33547
Gcn3ISA::Inst_VOPC__V_CMPX_T_I64::~Inst_VOPC__V_CMPX_T_I64
~Inst_VOPC__V_CMPX_T_I64()
Definition: instructions.cc:15168
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F32::Inst_VOPC__V_CMPX_NGE_F32
Inst_VOPC__V_CMPX_NGE_F32(InFmt_VOPC *)
Definition: instructions.cc:11275
Gcn3ISA::Inst_SOPP__S_WAKEUP::Inst_SOPP__S_WAKEUP
Inst_SOPP__S_WAKEUP(InFmt_SOPP *)
Definition: instructions.cc:3887
Gcn3ISA::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:37437
Gcn3ISA::InFmt_MUBUF_1::VADDR
unsigned int VADDR
Definition: gpu_decoder.hh:1469
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33911
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F16::~Inst_VOPC__V_CMP_NLG_F16
~Inst_VOPC__V_CMP_NLG_F16()
Definition: instructions.cc:10081
Gcn3ISA::Inst_VOP3__V_LSHRREV_B16::~Inst_VOP3__V_LSHRREV_B16
~Inst_VOP3__V_LSHRREV_B16()
Definition: instructions.cc:24853
Gcn3ISA::Inst_VOP1__V_CVT_I32_F32::~Inst_VOP1__V_CVT_I32_F32
~Inst_VOP1__V_CVT_I32_F32()
Definition: instructions.cc:7570
Gcn3ISA::Inst_VOPC__V_CMP_T_I16::~Inst_VOPC__V_CMP_T_I16
~Inst_VOPC__V_CMP_T_I16()
Definition: instructions.cc:12749
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F64::~Inst_VOPC__V_CMP_NLT_F64
~Inst_VOPC__V_CMP_NLT_F64()
Definition: instructions.cc:11955
Gcn3ISA::Inst_VOP3__V_CNDMASK_B32::~Inst_VOP3__V_CNDMASK_B32
~Inst_VOP3__V_CNDMASK_B32()
Definition: instructions.cc:23108
Gcn3ISA::Inst_VOP1__V_CVT_F16_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9005
Gcn3ISA::Inst_DS__DS_MSKOR_B32::Inst_DS__DS_MSKOR_B32
Inst_DS__DS_MSKOR_B32(InFmt_DS *)
Definition: instructions.cc:31185
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12384
Gcn3ISA::Inst_VOP2__V_MAX_F16::Inst_VOP2__V_MAX_F16
Inst_VOP2__V_MAX_F16(InFmt_VOP2 *)
Definition: instructions.cc:7093
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37797
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F64::Inst_VOP3__V_DIV_SCALE_F64
Inst_VOP3__V_DIV_SCALE_F64(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:29192
Gcn3ISA::Inst_VOP3__V_ADD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24654
Gcn3ISA::Inst_VOP3__V_CMP_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19851
Gcn3ISA::Inst_VOP2__V_SUBBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6714
Gcn3ISA::Inst_VOP2__V_MIN_F16::Inst_VOP2__V_MIN_F16
Inst_VOP2__V_MIN_F16(InFmt_VOP2 *)
Definition: instructions.cc:7111
Gcn3ISA::Inst_VOP2__V_SUBB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6671
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I16::Inst_VOP3__V_CMPX_GE_I16
Inst_VOP3__V_CMPX_GE_I16(InFmt_VOP3 *)
Definition: instructions.cc:20233
Gcn3ISA::Inst_SOP2__S_RFE_RESTORE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1353
Gcn3ISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2837
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2176
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
Inst_MTBUF__TBUFFER_LOAD_FORMAT_X(InFmt_MTBUF *)
Definition: instructions.cc:37126
Gcn3ISA::Inst_VOP3__V_CMP_F_U64::~Inst_VOP3__V_CMP_F_U64
~Inst_VOP3__V_CMP_F_U64()
Definition: instructions.cc:22165
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U64::~Inst_VOP3__V_CMPX_LT_U64
~Inst_VOP3__V_CMPX_LT_U64()
Definition: instructions.cc:22812
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U64::Inst_DS__DS_MAX_SRC2_U64
Inst_DS__DS_MAX_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34287
Gcn3ISA::Inst_VOP3__V_CMPX_F_F64::Inst_VOP3__V_CMPX_F_F64
Inst_VOP3__V_CMPX_F_F64(InFmt_VOP3 *)
Definition: instructions.cc:18534
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U16::~Inst_VOP3__V_CMPX_EQ_U16
~Inst_VOP3__V_CMPX_EQ_U16()
Definition: instructions.cc:20382
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34736
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U16::Inst_VOP3__V_CMPX_EQ_U16
Inst_VOP3__V_CMPX_EQ_U16(InFmt_VOP3 *)
Definition: instructions.cc:20375
Gcn3ISA::Inst_VOP1__V_COS_F16::Inst_VOP1__V_COS_F16
Inst_VOP1__V_COS_F16(InFmt_VOP1 *)
Definition: instructions.cc:9303
Gcn3ISA::Inst_DS__DS_XOR_B32::~Inst_DS__DS_XOR_B32
~Inst_DS__DS_XOR_B32()
Definition: instructions.cc:31172
Gcn3ISA::Inst_VOP3__V_FFBL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26900
Gcn3ISA::Inst_VOP3__V_CMP_GE_I16::~Inst_VOP3__V_CMP_GE_I16
~Inst_VOP3__V_CMP_GE_I16()
Definition: instructions.cc:19625
Gcn3ISA::Inst_VOPC__V_CMP_F_U32::Inst_VOPC__V_CMP_F_U32
Inst_VOPC__V_CMP_F_U32(InFmt_VOPC *)
Definition: instructions.cc:13737
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8831
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I16::Inst_VOP3__V_CMPX_LE_I16
Inst_VOP3__V_CMPX_LE_I16(InFmt_VOP3 *)
Definition: instructions.cc:20104
Gcn3ISA::Inst_SOP2__S_XNOR_B32::~Inst_SOP2__S_XNOR_B32
~Inst_SOP2__S_XNOR_B32()
Definition: instructions.cc:841
Gcn3ISA::Inst_VOP3__V_MAD_I32_I24::Inst_VOP3__V_MAD_I32_I24
Inst_VOP3__V_MAD_I32_I24(InFmt_VOP3 *)
Definition: instructions.cc:27726
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F16::~Inst_VOP3__V_CMPX_CLASS_F16
~Inst_VOP3__V_CMPX_CLASS_F16()
Definition: instructions.cc:15990
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35713
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F16::~Inst_VOPC__V_CMP_NEQ_F16
~Inst_VOPC__V_CMP_NEQ_F16()
Definition: instructions.cc:10135
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16009
Gcn3ISA::Inst_VOPC__V_CMP_U_F64::~Inst_VOPC__V_CMP_U_F64
~Inst_VOPC__V_CMP_U_F64()
Definition: instructions.cc:11761
Gcn3ISA::Inst_VOP1__V_SQRT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8544
Gcn3ISA::Inst_VOP3__V_LDEXP_F32::Inst_VOP3__V_LDEXP_F32
Inst_VOP3__V_LDEXP_F32(InFmt_VOP3 *)
Definition: instructions.cc:30436
Gcn3ISA::Inst_VOP3__V_CMP_F_F64::~Inst_VOP3__V_CMP_F_F64
~Inst_VOP3__V_CMP_F_F64()
Definition: instructions.cc:17714
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::~Inst_SMEM__S_LOAD_DWORDX8
~Inst_SMEM__S_LOAD_DWORDX8()
Definition: instructions.cc:4616
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F32::~Inst_VOPC__V_CMP_NLG_F32
~Inst_VOPC__V_CMP_NLG_F32()
Definition: instructions.cc:10797
Gcn3ISA::InFmt_VOP3
Definition: gpu_decoder.hh:1550
Gcn3ISA::Inst_VOP3__V_ADD_F16::Inst_VOP3__V_ADD_F16
Inst_VOP3__V_ADD_F16(InFmt_VOP3 *)
Definition: instructions.cc:24551
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::~Inst_MUBUF__BUFFER_LOAD_DWORDX2
~Inst_MUBUF__BUFFER_LOAD_DWORDX2()
Definition: instructions.cc:35377
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B32::~Inst_DS__DS_MSKOR_RTN_B32
~Inst_DS__DS_MSKOR_RTN_B32()
Definition: instructions.cc:31850
Gcn3ISA::Inst_VOPC__V_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13868
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Read 2 dwords from scalar data cache.
Definition: instructions.cc:4509
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::~Inst_MIMG__IMAGE_STORE_MIP
~Inst_MIMG__IMAGE_STORE_MIP()
Definition: instructions.cc:37849
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::Inst_SMEM__S_BUFFER_LOAD_DWORDX16
Inst_SMEM__S_BUFFER_LOAD_DWORDX16(InFmt_SMEM *)
Definition: instructions.cc:4959
Gcn3ISA::Inst_VOP3__V_EXP_F32::~Inst_VOP3__V_EXP_F32
~Inst_VOP3__V_EXP_F32()
Definition: instructions.cc:26344
Gcn3ISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::Inst_SOP1__S_XNOR_SAVEEXEC_B64
Inst_SOP1__S_XNOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2918
Gcn3ISA::Inst_SOP2__S_NOR_B64::Inst_SOP2__S_NOR_B64
Inst_SOP2__S_NOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:805
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38979
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38208
Gcn3ISA::Inst_VOP3__V_CVT_FLR_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25615
Gcn3ISA::Inst_SOPC__S_SETVSKIP::~Inst_SOPC__S_SETVSKIP
~Inst_SOPC__S_SETVSKIP()
Definition: instructions.cc:3619
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30404
Gcn3ISA::Inst_VOP2__V_ADD_F32::Inst_VOP2__V_ADD_F32
Inst_VOP2__V_ADD_F32(InFmt_VOP2 *)
Definition: instructions.cc:5451
Gcn3ISA::Inst_VOP3__V_MIN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30151
Wavefront::simdId
const int simdId
Definition: wavefront.hh:92
Gcn3ISA::Inst_DS__DS_ADD_F32::Inst_DS__DS_ADD_F32
Inst_DS__DS_ADD_F32(InFmt_DS *)
Definition: instructions.cc:31490
Gcn3ISA::Inst_VOP2
Definition: op_encodings.hh:270
Gcn3ISA::Inst_SOPP__S_SENDMSGHALT::Inst_SOPP__S_SENDMSGHALT
Inst_SOPP__S_SENDMSGHALT(InFmt_SOPP *)
Definition: instructions.cc:4214
Gcn3ISA::Inst_VOP3__V_SUB_F16::~Inst_VOP3__V_SUB_F16
~Inst_VOP3__V_SUB_F16()
Definition: instructions.cc:24576
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38747
Gcn3ISA::InFmt_SOP1
Definition: gpu_decoder.hh:1491
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
Inst_MUBUF__BUFFER_ATOMIC_SUB_X2(InFmt_MUBUF *)
Definition: instructions.cc:36855
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27383
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F32::Inst_DS__DS_MAX_SRC2_F32
Inst_DS__DS_MAX_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:33958
Gcn3ISA::Inst_VOP3__V_MBCNT_LO_U32_B32::Inst_VOP3__V_MBCNT_LO_U32_B32
Inst_VOP3__V_MBCNT_LO_U32_B32(InFmt_VOP3 *)
Definition: instructions.cc:30597
Gcn3ISA::Inst_VOP3__V_CMPX_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20603
Gcn3ISA::Inst_VOP2__V_MUL_I32_I24::Inst_VOP2__V_MUL_I32_I24
Inst_VOP2__V_MUL_I32_I24(InFmt_VOP2 *)
Definition: instructions.cc:5682
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I16::~Inst_VOP3__V_CMPX_LE_I16
~Inst_VOP3__V_CMPX_LE_I16()
Definition: instructions.cc:20111
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4775
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39675
Gcn3ISA::Inst_VOP3__V_OR_B32::~Inst_VOP3__V_OR_B32
~Inst_VOP3__V_OR_B32()
Definition: instructions.cc:24124
Gcn3ISA::Inst_VOPC__V_CMP_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13511
Gcn3ISA::Inst_VOP3__V_SAD_U16::Inst_VOP3__V_SAD_U16
Inst_VOP3__V_SAD_U16(InFmt_VOP3 *)
Definition: instructions.cc:28824
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7844
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31858
Gcn3ISA::Inst_VOP3__V_CMPX_T_U64::Inst_VOP3__V_CMPX_T_U64
Inst_VOP3__V_CMPX_T_U64(InFmt_VOP3 *)
Definition: instructions.cc:23063
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41539
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I16_F16::~Inst_VOP1__V_FREXP_EXP_I16_F16
~Inst_VOP1__V_FREXP_EXP_I16_F16()
Definition: instructions.cc:9180
Gcn3ISA::Inst_SOPP__S_BRANCH::Inst_SOPP__S_BRANCH
Inst_SOPP__S_BRANCH(InFmt_SOPP *)
Definition: instructions.cc:3864
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U64::Inst_VOPC__V_CMPX_LE_U64
Inst_VOPC__V_CMPX_LE_U64(InFmt_VOPC *)
Definition: instructions.cc:15280
Gcn3ISA::Inst_VOP2__V_ADDC_U32::Inst_VOP2__V_ADDC_U32
Inst_VOP2__V_ADDC_U32(InFmt_VOP2 *)
Definition: instructions.cc:6608
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U32::~Inst_SOPC__S_CMP_EQ_U32
~Inst_SOPC__S_CMP_EQ_U32()
Definition: instructions.cc:3359
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F64::Inst_VOPC__V_CMPX_NGT_F64
Inst_VOPC__V_CMPX_NGT_F64(InFmt_VOPC *)
Definition: instructions.cc:12371
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F64::~Inst_VOP3__V_CMPX_NLE_F64
~Inst_VOP3__V_CMPX_NLE_F64()
Definition: instructions.cc:19193
Gcn3ISA::Inst_DS__DS_OR_RTN_B64::~Inst_DS__DS_OR_RTN_B64
~Inst_DS__DS_OR_RTN_B64()
Definition: instructions.cc:33295
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR_X2::Inst_FLAT__FLAT_ATOMIC_OR_X2
Inst_FLAT__FLAT_ATOMIC_OR_X2(InFmt_FLAT *)
Definition: instructions.cc:41596
Gcn3ISA::Inst_VOPC__V_CMP_NE_U32::Inst_VOPC__V_CMP_NE_U32
Inst_VOPC__V_CMP_NE_U32(InFmt_VOPC *)
Definition: instructions.cc:13887
Gcn3ISA::Inst_VOP3__V_PERM_B32::~Inst_VOP3__V_PERM_B32
~Inst_VOP3__V_PERM_B32()
Definition: instructions.cc:29690
Gcn3ISA::Inst_VOP1__V_CVT_F32_U32::Inst_VOP1__V_CVT_F32_U32
Inst_VOP1__V_CVT_F32_U32(InFmt_VOP1 *)
Definition: instructions.cc:7487
Gcn3ISA::Inst_SOP2__S_BFE_U64::~Inst_SOP2__S_BFE_U64
~Inst_SOP2__S_BFE_U64()
Definition: instructions.cc:1232
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::Inst_MUBUF__BUFFER_LOAD_SSHORT
Inst_MUBUF__BUFFER_LOAD_SSHORT(InFmt_MUBUF *)
Definition: instructions.cc:35235
Gcn3ISA::Inst_VOP3__V_CMPX_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20317
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39794
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9631
Gcn3ISA::Inst_SOPP__S_SET_GPR_IDX_MODE::~Inst_SOPP__S_SET_GPR_IDX_MODE
~Inst_SOPP__S_SET_GPR_IDX_MODE()
Definition: instructions.cc:4417
Gcn3ISA::Inst_VOP3__V_MIN3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28400
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17346
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F32::Inst_VOP3__V_CMPX_LT_F32
Inst_VOP3__V_CMPX_LT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17196
Gcn3ISA::Inst_VOP3__V_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23746
Gcn3ISA::Inst_SOPP__S_ENDPGM::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3737
Gcn3ISA::Inst_VOPC__V_CMP_F_I64::Inst_VOPC__V_CMP_F_I64
Inst_VOPC__V_CMP_F_I64(InFmt_VOPC *)
Definition: instructions.cc:14467
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11288
Gcn3ISA::Inst_DS__DS_OR_RTN_B64::Inst_DS__DS_OR_RTN_B64
Inst_DS__DS_OR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33290
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13806
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::~Inst_SMEM__S_STORE_DWORD
~Inst_SMEM__S_STORE_DWORD()
Definition: instructions.cc:5025
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::~Inst_MIMG__IMAGE_LOAD
~Inst_MIMG__IMAGE_LOAD()
Definition: instructions.cc:37645
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37092
Gcn3ISA::Inst_DS__DS_CMPST_B64::~Inst_DS__DS_CMPST_B64
~Inst_DS__DS_CMPST_B64()
Definition: instructions.cc:33031
Gcn3ISA::Inst_VOP3__V_CMPX_U_F64::~Inst_VOP3__V_CMPX_U_F64
~Inst_VOP3__V_CMPX_U_F64()
Definition: instructions.cc:18966
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I16::Inst_VOPC__V_CMPX_EQ_I16
Inst_VOPC__V_CMPX_EQ_I16(InFmt_VOPC *)
Definition: instructions.cc:13066
Gcn3ISA::Inst_VOP3__V_CVT_I16_F16::~Inst_VOP3__V_CVT_I16_F16
~Inst_VOP3__V_CVT_I16_F16()
Definition: instructions.cc:27251
Wavefront::lastInstExec
uint64_t lastInstExec
Definition: wavefront.hh:254
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I16::Inst_VOP3__V_CMPX_GT_I16
Inst_VOP3__V_CMPX_GT_I16(InFmt_VOP3 *)
Definition: instructions.cc:20147
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38581
Gcn3ISA::Inst_VOP3__V_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23692
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37889
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::~Inst_MIMG__IMAGE_LOAD_MIP
~Inst_MIMG__IMAGE_LOAD_MIP()
Definition: instructions.cc:37674
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F32::Inst_VOP3__V_CMPX_TRU_F32
Inst_VOP3__V_CMPX_TRU_F32(InFmt_VOP3 *)
Definition: instructions.cc:17678
Gcn3ISA::Inst_VOP3__V_MUL_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23607
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL::~Inst_MIMG__IMAGE_SAMPLE_C_B_CL
~Inst_MIMG__IMAGE_SAMPLE_C_B_CL()
Definition: instructions.cc:38526
Gcn3ISA::Inst_VOP3__V_CMPX_O_F32::Inst_VOP3__V_CMPX_O_F32
Inst_VOP3__V_CMPX_O_F32(InFmt_VOP3 *)
Definition: instructions.cc:17401
Gcn3ISA::Inst_VOPC__V_CMP_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12869
Gcn3ISA::Inst_VOP1__V_SIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8574
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B64::Inst_DS__DS_XOR_SRC2_B64
Inst_DS__DS_XOR_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:34344
Gcn3ISA::Inst_VOP2__V_MADMK_F16::Inst_VOP2__V_MADMK_F16
Inst_VOP2__V_MADMK_F16(InFmt_VOP2 *)
Definition: instructions.cc:6830
Gcn3ISA::Inst_DS__DS_DEC_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31714
Gcn3ISA::Inst_VOP3__V_CMP_F_I16::Inst_VOP3__V_CMP_F_I16
Inst_VOP3__V_CMP_F_I16(InFmt_VOP3 *)
Definition: instructions.cc:19382
Gcn3ISA::Inst_VOP2__V_MIN_F32::~Inst_VOP2__V_MIN_F32
~Inst_VOP2__V_MIN_F32()
Definition: instructions.cc:5865
Gcn3ISA::Inst_SOP2__S_BFE_I64::Inst_SOP2__S_BFE_I64
Inst_SOP2__S_BFE_I64(InFmt_SOP2 *)
Definition: instructions.cc:1259
Gcn3ISA::Inst_VOPC__V_CMP_GT_U64::Inst_VOPC__V_CMP_GT_U64
Inst_VOPC__V_CMP_GT_U64(InFmt_VOPC *)
Definition: instructions.cc:14824
Gcn3ISA::Inst_VOP3__V_CVT_F64_U32::~Inst_VOP3__V_CVT_F64_U32
~Inst_VOP3__V_CVT_F64_U32()
Definition: instructions.cc:25963
Gcn3ISA::Inst_VOPC__V_CMP_LT_U64::~Inst_VOPC__V_CMP_LT_U64
~Inst_VOPC__V_CMP_LT_U64()
Definition: instructions.cc:14737
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCNZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4007
Gcn3ISA::Inst_SOPC__S_CMP_LT_U32::~Inst_SOPC__S_CMP_LT_U32
~Inst_SOPC__S_CMP_LT_U32()
Definition: instructions.cc:3463
Gcn3ISA::Inst_SOP2__S_ASHR_I64::Inst_SOP2__S_ASHR_I64
Inst_SOP2__S_ASHR_I64(InFmt_SOP2 *)
Definition: instructions.cc:1048
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::~Inst_MUBUF__BUFFER_ATOMIC_UMAX
~Inst_MUBUF__BUFFER_ATOMIC_UMAX()
Definition: instructions.cc:36622
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SUB::Inst_MIMG__IMAGE_ATOMIC_SUB
Inst_MIMG__IMAGE_ATOMIC_SUB(InFmt_MIMG *)
Definition: instructions.cc:38027
Wavefront::rdLmReqsInPipe
int rdLmReqsInPipe
Definition: wavefront.hh:176
Gcn3ISA::Inst_VOP1__V_FRACT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9280
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::~Inst_MIMG__IMAGE_SAMPLE_LZ_O
~Inst_MIMG__IMAGE_SAMPLE_LZ_O()
Definition: instructions.cc:38675
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U32::~Inst_VOP3__V_CMPX_GT_U32
~Inst_VOP3__V_CMPX_GT_U32()
Definition: instructions.cc:21705
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U32::Inst_VOPC__V_CMP_EQ_U32
Inst_VOPC__V_CMP_EQ_U32(InFmt_VOPC *)
Definition: instructions.cc:13794
Gcn3ISA::Inst_DS__DS_INC_RTN_U32::Inst_DS__DS_INC_RTN_U32
Inst_DS__DS_INC_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31683
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4769
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U64::Inst_DS__DS_SUB_SRC2_U64
Inst_DS__DS_SUB_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34153
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15388
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U16::Inst_VOPC__V_CMPX_EQ_U16
Inst_VOPC__V_CMPX_EQ_U16(InFmt_VOPC *)
Definition: instructions.cc:13312
Gcn3ISA::Inst_VOPC__V_CMP_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14629
Gcn3ISA::Inst_VOPC__V_CMP_GT_I64::Inst_VOPC__V_CMP_GT_I64
Inst_VOPC__V_CMP_GT_I64(InFmt_VOPC *)
Definition: instructions.cc:14586
Gcn3ISA::Inst_SOPP__S_SENDMSG::Inst_SOPP__S_SENDMSG
Inst_SOPP__S_SENDMSG(InFmt_SOPP *)
Definition: instructions.cc:4199
Gcn3ISA::Inst_SOP1__S_WQM_B64::~Inst_SOP1__S_WQM_B64
~Inst_SOP1__S_WQM_B64()
Definition: instructions.cc:2065
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::Inst_MIMG__IMAGE_ATOMIC_SMAX
Inst_MIMG__IMAGE_ATOMIC_SMAX(InFmt_MIMG *)
Definition: instructions.cc:38107
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::~Inst_MUBUF__BUFFER_ATOMIC_SWAP
~Inst_MUBUF__BUFFER_ATOMIC_SWAP()
Definition: instructions.cc:36431
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::Inst_FLAT__FLAT_STORE_BYTE
Inst_FLAT__FLAT_STORE_BYTE(InFmt_FLAT *)
Definition: instructions.cc:39902
Gcn3ISA::Inst_VOP1__V_FLOOR_F16::Inst_VOP1__V_FLOOR_F16
Inst_VOP1__V_FLOOR_F16(InFmt_VOP1 *)
Definition: instructions.cc:9195
Gcn3ISA::Inst_VOP3__V_MAX_F16::~Inst_VOP3__V_MAX_F16
~Inst_VOP3__V_MAX_F16()
Definition: instructions.cc:24944
Gcn3ISA::Inst_VOP3__V_MAX_I16::~Inst_VOP3__V_MAX_I16
~Inst_VOP3__V_MAX_I16()
Definition: instructions.cc:25026
Wavefront::S_STOPPED
@ S_STOPPED
Definition: wavefront.hh:62
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_O::Inst_MIMG__IMAGE_SAMPLE_B_O
Inst_MIMG__IMAGE_SAMPLE_B_O(InFmt_MIMG *)
Definition: instructions.cc:38635
Gcn3ISA::Inst_VOP3__V_CMP_LE_F32::Inst_VOP3__V_CMP_LE_F32
Inst_VOP3__V_CMP_LE_F32(InFmt_VOP3 *)
Definition: instructions.cc:16742
inst_util.hh
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B64::~Inst_DS__DS_WRXCHG2_RTN_B64
~Inst_DS__DS_WRXCHG2_RTN_B64()
Definition: instructions.cc:33369
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::Inst_MUBUF__BUFFER_STORE_DWORDX3
Inst_MUBUF__BUFFER_STORE_DWORDX3(InFmt_MUBUF *)
Definition: instructions.cc:36082
Wavefront::hasBarrier
bool hasBarrier() const
Definition: wavefront.cc:1451
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35255
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27145
Gcn3ISA::Inst_VOP3__V_FLOOR_F16::Inst_VOP3__V_FLOOR_F16
Inst_VOP3__V_FLOOR_F16(InFmt_VOP3 *)
Definition: instructions.cc:27406
Gcn3ISA::Inst_VOP3__V_MAX3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28445
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I64::~Inst_VOPC__V_CMPX_NE_I64
~Inst_VOPC__V_CMPX_NE_I64()
Definition: instructions.cc:15104
Gcn3ISA::countZeroBitsMsb
ScalarRegI32 countZeroBitsMsb(T val)
Definition: inst_util.hh:164
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4680
Gcn3ISA::Inst_DS__DS_MAX_RTN_I64::~Inst_DS__DS_MAX_RTN_I64
~Inst_DS__DS_MAX_RTN_I64()
Definition: instructions.cc:33223
Gcn3ISA::Inst_VOP3__V_MAX_F64::Inst_VOP3__V_MAX_F64
Inst_VOP3__V_MAX_F64(InFmt_VOP3 *)
Definition: instructions.cc:30192
Gcn3ISA::Inst_VOPC__V_CMP_LE_I32::Inst_VOPC__V_CMP_LE_I32
Inst_VOPC__V_CMP_LE_I32(InFmt_VOPC *)
Definition: instructions.cc:13587
Gcn3ISA::VecOperand::readSrc
void readSrc()
certain vector operands can read from the vrf/srf or constants.
Definition: operand.hh:131
Gcn3ISA::Inst_VOP3__V_CMP_LE_F16::Inst_VOP3__V_CMP_LE_F16
Inst_VOP3__V_CMP_LE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16070
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::~Inst_FLAT__FLAT_ATOMIC_SMAX_X2
~Inst_FLAT__FLAT_ATOMIC_SMAX_X2()
Definition: instructions.cc:41531
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40315
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35124
Gcn3ISA::InFmt_VOP2::VSRC1
unsigned int VSRC1
Definition: gpu_decoder.hh:1544
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::Inst_SMEM__S_LOAD_DWORDX16
Inst_SMEM__S_LOAD_DWORDX16(InFmt_SMEM *)
Definition: instructions.cc:4666
Gcn3ISA::Inst_MIMG__IMAGE_STORE::~Inst_MIMG__IMAGE_STORE
~Inst_MIMG__IMAGE_STORE()
Definition: instructions.cc:37820
Gcn3ISA::Inst_VOP3__V_CMPX_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22762
Gcn3ISA::Inst_VOP3__V_ADD_F32::Inst_VOP3__V_ADD_F32
Inst_VOP3__V_ADD_F32(InFmt_VOP3 *)
Definition: instructions.cc:23147
Gcn3ISA::Inst_DS__DS_MIN_RTN_U32::Inst_DS__DS_MIN_RTN_U32
Inst_DS__DS_MIN_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31755
Gcn3ISA::InFmt_FLAT_1::DATA
unsigned int DATA
Definition: gpu_decoder.hh:1401
Gcn3ISA::Inst_VOP3__V_MUL_LO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30317
Gcn3ISA::Inst_SOP2__S_ANDN2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:638
Gcn3ISA::Inst_SOPP__S_BARRIER::execute
void execute(GPUDynInstPtr) override
Synchronize waves within a workgroup.
Definition: instructions.cc:4089
Gcn3ISA::Inst_VOP3__V_SUBREV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23268
Gcn3ISA::Inst_VOP3__V_MAC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24216
Gcn3ISA::Inst_VOP3__V_CVT_F64_I32::Inst_VOP3__V_CVT_F64_I32
Inst_VOP3__V_CVT_F64_I32(InFmt_VOP3 *)
Definition: instructions.cc:25278
Gcn3ISA::Inst_VOP3__V_CMP_GE_I32::Inst_VOP3__V_CMP_GE_I32
Inst_VOP3__V_CMP_GE_I32(InFmt_VOP3 *)
Definition: instructions.cc:20855
Gcn3ISA::Inst_SOP1
Definition: op_encodings.hh:121
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34380
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23033
Gcn3ISA::InFmt_VOP_SDWA::SRC0_SEL
unsigned int SRC0_SEL
Definition: gpu_decoder.hh:1601
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14324
Gcn3ISA::Inst_SMEM__S_DCACHE_INV::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5299
Gcn3ISA::Inst_VOPC__V_CMP_LT_I64::Inst_VOPC__V_CMP_LT_I64
Inst_VOPC__V_CMP_LT_I64(InFmt_VOPC *)
Definition: instructions.cc:14493
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE0::Inst_VOP1__V_CVT_F32_UBYTE0
Inst_VOP1__V_CVT_F32_UBYTE0(InFmt_VOP1 *)
Definition: instructions.cc:7801
Gcn3ISA::Inst_SOP2__S_XNOR_B64::~Inst_SOP2__S_XNOR_B64
~Inst_SOP2__S_XNOR_B64()
Definition: instructions.cc:871
Gcn3ISA::Inst_SOPC__S_CMP_GT_I32::Inst_SOPC__S_CMP_GT_I32
Inst_SOPC__S_CMP_GT_I32(InFmt_SOPC *)
Definition: instructions.cc:3249
Gcn3ISA::Inst_VOP1__V_SQRT_F32::~Inst_VOP1__V_SQRT_F32
~Inst_VOP1__V_SQRT_F32()
Definition: instructions.cc:8508
Gcn3ISA::Inst_VOP3__V_MAD_I32_I24::~Inst_VOP3__V_MAD_I32_I24
~Inst_VOP3__V_MAD_I32_I24()
Definition: instructions.cc:27733
Gcn3ISA::Inst_DS__DS_ADD_F32::~Inst_DS__DS_ADD_F32
~Inst_DS__DS_ADD_F32()
Definition: instructions.cc:31496
Gcn3ISA::Inst_VOP3__V_CMP_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16855
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16723
Gcn3ISA::Inst_VOPC__V_CMP_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12693
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20474
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F16::~Inst_VOPC__V_CMPX_GT_F16
~Inst_VOPC__V_CMPX_GT_F16()
Definition: instructions.cc:10261
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27020
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::~Inst_SMEM__S_LOAD_DWORDX16
~Inst_SMEM__S_LOAD_DWORDX16()
Definition: instructions.cc:4673
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY()
Definition: instructions.cc:37547
Gcn3ISA::Inst_VOP3__V_ADDC_U32::~Inst_VOP3__V_ADDC_U32
~Inst_VOP3__V_ADDC_U32()
Definition: instructions.cc:24403
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22861
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F32::Inst_VOP3__V_CMP_NGT_F32
Inst_VOP3__V_CMP_NGT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17007
Gcn3ISA::Inst_VOPC__V_CMP_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11734
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34664
Gcn3ISA::Inst_VOPC__V_CMP_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14743
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35249
Gcn3ISA::Inst_VOP2__V_MAC_F32::Inst_VOP2__V_MAC_F32
Inst_VOP2__V_MAC_F32(InFmt_VOP2 *)
Definition: instructions.cc:6319
Gcn3ISA::Inst_VOP2__V_MUL_LEGACY_F32::~Inst_VOP2__V_MUL_LEGACY_F32
~Inst_VOP2__V_MUL_LEGACY_F32()
Definition: instructions.cc:5580
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F64::~Inst_VOPC__V_CMPX_NLT_F64
~Inst_VOPC__V_CMPX_NLT_F64()
Definition: instructions.cc:12477
Gcn3ISA::Inst_VOPC__V_CMP_O_F64::Inst_VOPC__V_CMP_O_F64
Inst_VOPC__V_CMP_O_F64(InFmt_VOPC *)
Definition: instructions.cc:11721
Gcn3ISA::Inst_VOP1__V_RCP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8341
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F64::Inst_VOP3__V_CMPX_NGT_F64
Inst_VOP3__V_CMPX_NGT_F64(InFmt_VOP3 *)
Definition: instructions.cc:19129
Gcn3ISA::Inst_VOPC
Definition: op_encodings.hh:318
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4540
Gcn3ISA::Inst_VOP3__V_CVT_RPI_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25576
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL::~Inst_MIMG__IMAGE_GATHER4_CL
~Inst_MIMG__IMAGE_GATHER4_CL()
Definition: instructions.cc:38842
Gcn3ISA::Inst_VOPC__V_CMP_GT_I16::~Inst_VOPC__V_CMP_GT_I16
~Inst_VOPC__V_CMP_GT_I16()
Definition: instructions.cc:12656
Gcn3ISA::Inst_VOPC__V_CMP_LT_F16::~Inst_VOPC__V_CMP_LT_F16
~Inst_VOPC__V_CMP_LT_F16()
Definition: instructions.cc:9919
Gcn3ISA::Inst_SOP1__S_BITSET0_B64::Inst_SOP1__S_BITSET0_B64
Inst_SOP1__S_BITSET0_B64(InFmt_SOP1 *)
Definition: instructions.cc:2531
Gcn3ISA::Inst_VOP3__V_RCP_F64::Inst_VOP3__V_RCP_F64
Inst_VOP3__V_RCP_F64(InFmt_VOP3 *)
Definition: instructions.cc:26535
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35084
Gcn3ISA::Inst_VOPC__V_CMP_LT_U64::Inst_VOPC__V_CMP_LT_U64
Inst_VOPC__V_CMP_LT_U64(InFmt_VOPC *)
Definition: instructions.cc:14731
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F16::Inst_VOPC__V_CMPX_LG_F16
Inst_VOPC__V_CMPX_LG_F16(InFmt_VOPC *)
Definition: instructions.cc:10272
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U32::Inst_DS__DS_RSUB_SRC2_U32
Inst_DS__DS_RSUB_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33725
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B64::Inst_DS__DS_WRXCHG_RTN_B64
Inst_DS__DS_WRXCHG_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33345
Gcn3ISA::Inst_VOP3__V_EXP_F16::Inst_VOP3__V_EXP_F16
Inst_VOP3__V_EXP_F16(InFmt_VOP3 *)
Definition: instructions.cc:27346
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F32::~Inst_VOP3__V_DIV_FIXUP_F32
~Inst_VOP3__V_DIV_FIXUP_F32()
Definition: instructions.cc:28979
Gcn3ISA::Inst_VOPC__V_CMPX_F_U16::~Inst_VOPC__V_CMPX_F_U16
~Inst_VOPC__V_CMPX_F_U16()
Definition: instructions.cc:13259
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13046
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I32::~Inst_VOP3__V_CMPX_LT_I32
~Inst_VOP3__V_CMPX_LT_I32()
Definition: instructions.cc:21262
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F64::Inst_VOPC__V_CMP_NEQ_F64
Inst_VOPC__V_CMP_NEQ_F64(InFmt_VOPC *)
Definition: instructions.cc:11916
Gcn3ISA::Inst_VOP1__V_RSQ_F64::Inst_VOP1__V_RSQ_F64
Inst_VOP1__V_RSQ_F64(InFmt_VOP1 *)
Definition: instructions.cc:8460
Gcn3ISA::Inst_VOP2__V_SUBREV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5554
Wavefront::rawDist
std::unordered_map< int, uint64_t > rawDist
Definition: wavefront.hh:261
Gcn3ISA::Inst_SOP2__S_CSELECT_B64::~Inst_SOP2__S_CSELECT_B64
~Inst_SOP2__S_CSELECT_B64()
Definition: instructions.cc:393
Gcn3ISA::Inst_VOP3__V_SAD_U8::Inst_VOP3__V_SAD_U8
Inst_VOP3__V_SAD_U8(InFmt_VOP3 *)
Definition: instructions.cc:28723
Gcn3ISA::InFmt_VOP1::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1536
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41591
Gcn3ISA::Inst_DS__DS_MIN_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33249
Wavefront::decLGKMInstsIssued
void decLGKMInstsIssued()
Definition: wavefront.cc:1380
Gcn3ISA::InFmt_VOP_DPP::DPP_CTRL
unsigned int DPP_CTRL
Definition: gpu_decoder.hh:1584
ComputeUnit::numAtBarrier
int numAtBarrier(int bar_id)
Definition: compute_unit.cc:652
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B64::Inst_DS__DS_WRXCHG2_RTN_B64
Inst_DS__DS_WRXCHG2_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33364
Gcn3ISA::Inst_VOP3__V_LDEXP_F16::~Inst_VOP3__V_LDEXP_F16
~Inst_VOP3__V_LDEXP_F16()
Definition: instructions.cc:25168
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17692
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L_O::~Inst_MIMG__IMAGE_GATHER4_C_L_O
~Inst_MIMG__IMAGE_GATHER4_C_L_O()
Definition: instructions.cc:39160
Gcn3ISA::Inst_SMEM__S_MEMTIME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5363
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41443
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B64::~Inst_DS__DS_MSKOR_RTN_B64
~Inst_DS__DS_MSKOR_RTN_B64()
Definition: instructions.cc:33331
Wavefront::pendingFetch
bool pendingFetch
Definition: wavefront.hh:104
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34925
Gcn3ISA::Inst_DS__DS_MIN_RTN_I64::~Inst_DS__DS_MIN_RTN_I64
~Inst_DS__DS_MIN_RTN_I64()
Definition: instructions.cc:33205
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B32::Inst_SOP1__S_BCNT0_I32_B32
Inst_SOP1__S_BCNT0_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2135
Wavefront::outstandingReqsRdLm
int outstandingReqsRdLm
Definition: wavefront.hh:171
Gcn3ISA::InstFormat::iFmt_VOP_DPP
InFmt_VOP_DPP iFmt_VOP_DPP
Definition: gpu_decoder.hh:1640
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE3::~Inst_VOP3__V_CVT_F32_UBYTE3
~Inst_VOP3__V_CVT_F32_UBYTE3()
Definition: instructions.cc:25871
Gcn3ISA::Inst_DS__DS_ADD_RTN_U64::Inst_DS__DS_ADD_RTN_U64
Inst_DS__DS_ADD_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33108
Gcn3ISA::Inst_DS__DS_NOP::Inst_DS__DS_NOP
Inst_DS__DS_NOP(InFmt_DS *)
Definition: instructions.cc:31474
Gcn3ISA::Inst_VOPC__V_CMPX_O_F16::~Inst_VOPC__V_CMPX_O_F16
~Inst_VOPC__V_CMPX_O_F16()
Definition: instructions.cc:10315
Gcn3ISA::Inst_VOP3__V_CMPX_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20003
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I32::~Inst_VOPC__V_CMPX_NE_I32
~Inst_VOPC__V_CMPX_NE_I32()
Definition: instructions.cc:14136
Gcn3ISA::Inst_VOPC__V_CMP_F_I64::~Inst_VOPC__V_CMP_F_I64
~Inst_VOPC__V_CMP_F_I64()
Definition: instructions.cc:14473
Gcn3ISA::InFmt_VOP_SDWA::SRC0_SEXT
unsigned int SRC0_SEXT
Definition: gpu_decoder.hh:1602
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31342
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37526
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36765
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37365
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I32::Inst_VOP3__V_CMPX_GE_I32
Inst_VOP3__V_CMPX_GE_I32(InFmt_VOP3 *)
Definition: instructions.cc:21470
Gcn3ISA::Inst_SOPP__S_BRANCH::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3876
Gcn3ISA::Inst_VOPC__V_CMP_LT_I32::Inst_VOPC__V_CMP_LT_I32
Inst_VOPC__V_CMP_LT_I32(InFmt_VOPC *)
Definition: instructions.cc:13525
Gcn3ISA::Inst_SOPK__S_SETREG_IMM32_B32::~Inst_SOPK__S_SETREG_IMM32_B32
~Inst_SOPK__S_SETREG_IMM32_B32()
Definition: instructions.cc:1852
Gcn3ISA::Inst_SOPP__S_SETPRIO::~Inst_SOPP__S_SETPRIO
~Inst_SOPP__S_SETPRIO()
Definition: instructions.cc:4187
Gcn3ISA::Inst_SOP1__S_MOV_FED_B32::Inst_SOP1__S_MOV_FED_B32
Inst_SOP1__S_MOV_FED_B32(InFmt_SOP1 *)
Definition: instructions.cc:3162
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39602
Gcn3ISA::Inst_VOP3__V_CMP_T_I64::~Inst_VOP3__V_CMP_T_I64
~Inst_VOP3__V_CMP_T_I64()
Definition: instructions.cc:22139
Gcn3ISA::Inst_VOP3__V_CEIL_F64::Inst_VOP3__V_CEIL_F64
Inst_VOP3__V_CEIL_F64(InFmt_VOP3 *)
Definition: instructions.cc:26032
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F32::Inst_VOP3__V_CMPX_NLE_F32
Inst_VOP3__V_CMPX_NLE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17576
Gcn3ISA::Inst_VOP2__V_AND_B32::~Inst_VOP2__V_AND_B32
~Inst_VOP2__V_AND_B32()
Definition: instructions.cc:6188
Gcn3ISA::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:5714
Gcn3ISA::Inst_VOP1__V_CVT_F32_F16::Inst_VOP1__V_CVT_F32_F16
Inst_VOP1__V_CVT_F32_F16(InFmt_VOP1 *)
Definition: instructions.cc:7643
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::Inst_MIMG__IMAGE_GATHER4_LZ_O
Inst_MIMG__IMAGE_GATHER4_LZ_O(InFmt_MIMG *)
Definition: instructions.cc:39102
Gcn3ISA::Inst_VOP3__V_CMP_GT_I64::Inst_VOP3__V_CMP_GT_I64
Inst_VOP3__V_CMP_GT_I64(InFmt_VOP3 *)
Definition: instructions.cc:22007
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32::Inst_VOP3__V_MUL_HI_U32
Inst_VOP3__V_MUL_HI_U32(InFmt_VOP3 *)
Definition: instructions.cc:30348
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U64::Inst_VOPC__V_CMPX_LT_U64
Inst_VOPC__V_CMPX_LT_U64(InFmt_VOPC *)
Definition: instructions.cc:15216
Gcn3ISA::Inst_SOPK__S_CMPK_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1645
Gcn3ISA::Inst_VOP1__V_FFBH_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8766
Gcn3ISA::Inst_VOP3__V_CUBEMA_F32::Inst_VOP3__V_CUBEMA_F32
Inst_VOP3__V_CUBEMA_F32(InFmt_VOP3 *)
Definition: instructions.cc:27867
Gcn3ISA::Inst_VOP3__V_COS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27527
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16520
Gcn3ISA::Inst_DS__DS_GWS_SEMA_RELEASE_ALL::~Inst_DS__DS_GWS_SEMA_RELEASE_ALL
~Inst_DS__DS_GWS_SEMA_RELEASE_ALL()
Definition: instructions.cc:34004
Gcn3ISA::InFmt_DS_1::DATA0
unsigned int DATA0
Definition: gpu_decoder.hh:1368
Gcn3ISA::Inst_VOP3__V_LDEXP_F64::~Inst_VOP3__V_LDEXP_F64
~Inst_VOP3__V_LDEXP_F64()
Definition: instructions.cc:30253
Gcn3ISA::Inst_SOP1__S_FF1_I32_B64::Inst_SOP1__S_FF1_I32_B64
Inst_SOP1__S_FF1_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2325
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L::~Inst_MIMG__IMAGE_SAMPLE_C_L
~Inst_MIMG__IMAGE_SAMPLE_C_L()
Definition: instructions.cc:38493
Gcn3ISA::Inst_VOP3__V_CMP_NE_U64::~Inst_VOP3__V_CMP_NE_U64
~Inst_VOP3__V_CMP_NE_U64()
Definition: instructions.cc:22360
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U64::Inst_DS__DS_MIN_SRC2_U64
Inst_DS__DS_MIN_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34268
Gcn3ISA::Inst_VOP3__V_CVT_PKRTZ_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30929
Gcn3ISA::Inst_MIMG__IMAGE_STORE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37826
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::~Inst_MIMG__IMAGE_ATOMIC_SWAP
~Inst_MIMG__IMAGE_ATOMIC_SWAP()
Definition: instructions.cc:37959
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I32::Inst_DS__DS_MIN_SRC2_I32
Inst_DS__DS_MIN_SRC2_I32(InFmt_DS *)
Definition: instructions.cc:33783
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I32_F64::Inst_VOP3__V_FREXP_EXP_I32_F64
Inst_VOP3__V_FREXP_EXP_I32_F64(InFmt_VOP3 *)
Definition: instructions.cc:26963
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B32::Inst_DS__DS_WRXCHG_RTN_B32
Inst_DS__DS_WRXCHG_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31863
Wavefront::execUnitId
int execUnitId
Definition: wavefront.hh:95
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9744
Gcn3ISA::Inst_SOPK__S_CMPK_LG_U32::Inst_SOPK__S_CMPK_LG_U32
Inst_SOPK__S_CMPK_LG_U32(InFmt_SOPK *)
Definition: instructions.cc:1583
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38646
Gcn3ISA::Inst_SOPK__S_CMOVK_I32::~Inst_SOPK__S_CMOVK_I32
~Inst_SOPK__S_CMOVK_I32()
Definition: instructions.cc:1386
Gcn3ISA::Inst_VOP3__V_CMP_T_U64::Inst_VOP3__V_CMP_T_U64
Inst_VOP3__V_CMP_T_U64(InFmt_VOP3 *)
Definition: instructions.cc:22437
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4597
Gcn3ISA::Inst_VOP3__V_CMP_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22145
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F64::Inst_VOP3__V_CMPX_NLE_F64
Inst_VOP3__V_CMPX_NLE_F64(InFmt_VOP3 *)
Definition: instructions.cc:19185
Gcn3ISA::Inst_VOP3__V_BFI_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27986
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1420
Gcn3ISA::Inst_VOPC__V_CMP_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10051
Gcn3ISA::Inst_VOP3__V_RNDNE_F32::Inst_VOP3__V_RNDNE_F32
Inst_VOP3__V_RNDNE_F32(InFmt_VOP3 *)
Definition: instructions.cc:26261
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U16::Inst_VOPC__V_CMPX_GT_U16
Inst_VOPC__V_CMPX_GT_U16(InFmt_VOPC *)
Definition: instructions.cc:13376
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::Inst_FLAT__FLAT_LOAD_DWORDX3
Inst_FLAT__FLAT_LOAD_DWORDX3(InFmt_FLAT *)
Definition: instructions.cc:39734
Gcn3ISA::Inst_VOP3__V_SUBB_U32::Inst_VOP3__V_SUBB_U32
Inst_VOP3__V_SUBB_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24448
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11961
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ::Inst_MIMG__IMAGE_GATHER4_LZ
Inst_MIMG__IMAGE_GATHER4_LZ(InFmt_MIMG *)
Definition: instructions.cc:38901
Gcn3ISA::Inst_DS__DS_ADD_RTN_U32::Inst_DS__DS_ADD_RTN_U32
Inst_DS__DS_ADD_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31629
Gcn3ISA::Inst_VOPC__V_CMP_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10640
Gcn3ISA::Inst_DS__DS_PERMUTE_B32::~Inst_DS__DS_PERMUTE_B32
~Inst_DS__DS_PERMUTE_B32()
Definition: instructions.cc:32515
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34826
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::Inst_MUBUF__BUFFER_STORE_DWORD
Inst_MUBUF__BUFFER_STORE_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:35887
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U64::~Inst_VOPC__V_CMPX_NE_U64
~Inst_VOPC__V_CMPX_NE_U64()
Definition: instructions.cc:15350
Gcn3ISA::Inst_VOP1__V_TRUNC_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8010
Gcn3ISA::Inst_VOP2__V_MAX_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7106
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F64::~Inst_VOPC__V_CMPX_GE_F64
~Inst_VOPC__V_CMPX_GE_F64()
Definition: instructions.cc:12208
Gcn3ISA::Inst_VOP3__V_LERP_U8::~Inst_VOP3__V_LERP_U8
~Inst_VOP3__V_LERP_U8()
Definition: instructions.cc:28142
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::Inst_MUBUF__BUFFER_LOAD_DWORDX3
Inst_MUBUF__BUFFER_LOAD_DWORDX3(InFmt_MUBUF *)
Definition: instructions.cc:35470
Gcn3ISA::Inst_VOP3__V_MIN_U32::Inst_VOP3__V_MIN_U32
Inst_VOP3__V_MIN_U32(InFmt_VOP3 *)
Definition: instructions.cc:23869
Gcn3ISA::Inst_SOPK__S_CMPK_GT_U32::Inst_SOPK__S_CMPK_GT_U32
Inst_SOPK__S_CMPK_GT_U32(InFmt_SOPK *)
Definition: instructions.cc:1608
Gcn3ISA::Inst_VOP3__V_CMP_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19809
Gcn3ISA::Inst_VOP3__V_CMPX_T_U64::~Inst_VOP3__V_CMPX_T_U64
~Inst_VOP3__V_CMPX_T_U64()
Definition: instructions.cc:23070
Gcn3ISA::Inst_VOP3__V_CVT_F16_I16::~Inst_VOP3__V_CVT_F16_I16
~Inst_VOP3__V_CVT_F16_I16()
Definition: instructions.cc:27215
Gcn3ISA::Inst_VOP2__V_MADAK_F32::~Inst_VOP2__V_MADAK_F32
~Inst_VOP2__V_MADAK_F32()
Definition: instructions.cc:6423
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F32::Inst_VOP3__V_DIV_FMAS_F32
Inst_VOP3__V_DIV_FMAS_F32(InFmt_VOP3 *)
Definition: instructions.cc:29279
Gcn3ISA::Inst_VOP3__V_ASHRREV_I16::Inst_VOP3__V_ASHRREV_I16
Inst_VOP3__V_ASHRREV_I16(InFmt_VOP3 *)
Definition: instructions.cc:24895
Gcn3ISA::Inst_VOP2__V_OR_B32::Inst_VOP2__V_OR_B32
Inst_VOP2__V_OR_B32(InFmt_VOP2 *)
Definition: instructions.cc:6214
Gcn3ISA::Inst_VOP3__V_LSHRREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24860
Gcn3ISA::Inst_SOP2__S_ANDN2_B64::~Inst_SOP2__S_ANDN2_B64
~Inst_SOP2__S_ANDN2_B64()
Definition: instructions.cc:631
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37200
Gcn3ISA::Inst_DS__DS_MSKOR_B64::~Inst_DS__DS_MSKOR_B64
~Inst_DS__DS_MSKOR_B64()
Definition: instructions.cc:32869
Gcn3ISA::Inst_SOP2__S_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:62
Gcn3ISA::Inst_DS__DS_MAX_U64::Inst_DS__DS_MAX_U64
Inst_DS__DS_MAX_U64(InFmt_DS *)
Definition: instructions.cc:32792
Gcn3ISA::Inst_DS__DS_READ_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32047
Gcn3ISA::Inst_DS__DS_GWS_INIT::~Inst_DS__DS_GWS_INIT
~Inst_DS__DS_GWS_INIT()
Definition: instructions.cc:34019
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2()
Definition: instructions.cc:36922
Gcn3ISA::Inst_SOPC__S_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3209
Gcn3ISA::Inst_VOPC__V_CMPX_U_F64::~Inst_VOPC__V_CMPX_U_F64
~Inst_VOPC__V_CMPX_U_F64()
Definition: instructions.cc:12276
Gcn3ISA::Inst_VINTRP__V_INTERP_P2_F32::Inst_VINTRP__V_INTERP_P2_F32
Inst_VINTRP__V_INTERP_P2_F32(InFmt_VINTRP *)
Definition: instructions.cc:15454
Gcn3ISA::Inst_VOPC__V_CMP_LG_F16::Inst_VOPC__V_CMP_LG_F16
Inst_VOPC__V_CMP_LG_F16(InFmt_VOPC *)
Definition: instructions.cc:9984
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::~Inst_FLAT__FLAT_ATOMIC_INC
~Inst_FLAT__FLAT_ATOMIC_INC()
Definition: instructions.cc:40947
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18300
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U16::~Inst_VOPC__V_CMPX_GT_U16
~Inst_VOPC__V_CMPX_GT_U16()
Definition: instructions.cc:13382
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::Inst_MUBUF__BUFFER_ATOMIC_OR_X2
Inst_MUBUF__BUFFER_ATOMIC_OR_X2(InFmt_MUBUF *)
Definition: instructions.cc:37017
Gcn3ISA::Inst_VOPC__V_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13930
Gcn3ISA::Inst_VOP3__V_MAD_F32::~Inst_VOP3__V_MAD_F32
~Inst_VOP3__V_MAD_F32()
Definition: instructions.cc:27675
Gcn3ISA::Inst_VOP3__V_CVT_F64_I32::~Inst_VOP3__V_CVT_F64_I32
~Inst_VOP3__V_CVT_F64_I32()
Definition: instructions.cc:25285
Gcn3ISA::Inst_VOPC__V_CMP_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14717
Gcn3ISA::Inst_VOPC__V_CMP_NE_I32::~Inst_VOPC__V_CMP_NE_I32
~Inst_VOPC__V_CMP_NE_I32()
Definition: instructions.cc:13655
Gcn3ISA::Inst_DS__DS_CMPST_B32::~Inst_DS__DS_CMPST_B32
~Inst_DS__DS_CMPST_B32()
Definition: instructions.cc:31397
Gcn3ISA::Inst_VOP3__V_CVT_U32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25917
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39131
Gcn3ISA::Inst_VOP3__V_BFM_B32::Inst_VOP3__V_BFM_B32
Inst_VOP3__V_BFM_B32(InFmt_VOP3 *)
Definition: instructions.cc:30836
Gcn3ISA::Inst_VOP1__V_FRACT_F64::Inst_VOP1__V_FRACT_F64
Inst_VOP1__V_FRACT_F64(InFmt_VOP1 *)
Definition: instructions.cc:8853
Gcn3ISA::Inst_VOP3__V_LSHRREV_B64::Inst_VOP3__V_LSHRREV_B64
Inst_VOP3__V_LSHRREV_B64(InFmt_VOP3 *)
Definition: instructions.cc:30734
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31931
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37151
Gcn3ISA::Inst_SOPK__S_ADDK_I32::Inst_SOPK__S_ADDK_I32
Inst_SOPK__S_ADDK_I32(InFmt_SOPK *)
Definition: instructions.cc:1708
Gcn3ISA::Inst_SOP2__S_CSELECT_B32::Inst_SOP2__S_CSELECT_B32
Inst_SOP2__S_CSELECT_B32(InFmt_SOP2 *)
Definition: instructions.cc:359
Gcn3ISA::Inst_SOPC__S_CMP_GE_I32::~Inst_SOPC__S_CMP_GE_I32
~Inst_SOPC__S_CMP_GE_I32()
Definition: instructions.cc:3281
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I16_F16::~Inst_VOP3__V_FREXP_EXP_I16_F16
~Inst_VOP3__V_FREXP_EXP_I16_F16()
Definition: instructions.cc:27396
Gcn3ISA::Inst_DS__DS_DEC_RTN_U32::~Inst_DS__DS_DEC_RTN_U32
~Inst_DS__DS_DEC_RTN_U32()
Definition: instructions.cc:31706
Gcn3ISA::Inst_VOP3__V_READLANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30491
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F16::~Inst_VOPC__V_CMPX_LG_F16
~Inst_VOPC__V_CMPX_LG_F16()
Definition: instructions.cc:10279
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4318
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::~Inst_MUBUF__BUFFER_ATOMIC_SMIN
~Inst_MUBUF__BUFFER_ATOMIC_SMIN()
Definition: instructions.cc:36541
Gcn3ISA::Inst_SOP1__S_MOVRELS_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3020
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F32::~Inst_VOP3__V_CMP_NEQ_F32
~Inst_VOP3__V_CMP_NEQ_F32()
Definition: instructions.cc:17081
Gcn3ISA::Inst_VOP3__V_CMP_GT_F16::Inst_VOP3__V_CMP_GT_F16
Inst_VOP3__V_CMP_GT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16089
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37996
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17054
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36071
Gcn3ISA::Inst_VOP3__V_CMPX_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21240
Gcn3ISA::Inst_SOP2__S_MUL_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1145
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::~Inst_MIMG__IMAGE_ATOMIC_UMAX
~Inst_MIMG__IMAGE_ATOMIC_UMAX()
Definition: instructions.cc:38148
Gcn3ISA::Inst_VOP3__V_EXP_LEGACY_F32::Inst_VOP3__V_EXP_LEGACY_F32
Inst_VOP3__V_EXP_LEGACY_F32(InFmt_VOP3 *)
Definition: instructions.cc:27532
Gcn3ISA::Inst_DS__DS_SUB_U64::Inst_DS__DS_SUB_U64
Inst_DS__DS_SUB_U64(InFmt_DS *)
Definition: instructions.cc:32664
Gcn3ISA::Inst_DS__DS_GWS_SEMA_BR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34054
Gcn3ISA::Inst_VOP3__V_CEIL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26236
Wavefront::readsPerWrite
Stats::Distribution readsPerWrite
Definition: wavefront.hh:265
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL_O::~Inst_MIMG__IMAGE_SAMPLE_C_CL_O
~Inst_MIMG__IMAGE_SAMPLE_C_CL_O()
Definition: instructions.cc:38708
Gcn3ISA::Inst_VOP3__V_CMP_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19976
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I64::~Inst_VOPC__V_CMPX_EQ_I64
~Inst_VOPC__V_CMPX_EQ_I64()
Definition: instructions.cc:15008
Gcn3ISA::Inst_VOP3__V_SUB_U16::Inst_VOP3__V_SUB_U16
Inst_VOP3__V_SUB_U16(InFmt_VOP3 *)
Definition: instructions.cc:24683
Gcn3ISA::Inst_VOP3__V_AND_B32::~Inst_VOP3__V_AND_B32
~Inst_VOP3__V_AND_B32()
Definition: instructions.cc:24082
Gcn3ISA::Inst_VOP3__V_MAC_F32::~Inst_VOP3__V_MAC_F32
~Inst_VOP3__V_MAC_F32()
Definition: instructions.cc:24210
Gcn3ISA::Inst_VOP3__V_RNDNE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26274
Gcn3ISA::Inst_VOPC__V_CMP_U_F32::~Inst_VOPC__V_CMP_U_F32
~Inst_VOPC__V_CMP_U_F32()
Definition: instructions.cc:10732
Gcn3ISA::Inst_VOP1__V_RCP_IFLAG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8371
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::Inst_SMEM__S_LOAD_DWORD
Inst_SMEM__S_LOAD_DWORD(InFmt_SMEM *)
Definition: instructions.cc:4432
Gcn3ISA::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:39136
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F16::Inst_VOP3__V_INTERP_P2_F16
Inst_VOP3__V_INTERP_P2_F16(InFmt_VOP3 *)
Definition: instructions.cc:29924
Gcn3ISA::Inst_VOP2__V_MADAK_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6869
Gcn3ISA::Inst_DS__DS_WRITE_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32938
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16423
Gcn3ISA::muladd
VecElemU32 muladd(VecElemU64 &dst, VecElemU32 val_0, VecElemU32 val_1, VecElemU64 val_2)
Definition: inst_util.hh:272
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19143
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13452
Gcn3ISA::Inst_VOP3__V_COS_F16::~Inst_VOP3__V_COS_F16
~Inst_VOP3__V_COS_F16()
Definition: instructions.cc:27521
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_O::~Inst_MIMG__IMAGE_SAMPLE_C_O
~Inst_MIMG__IMAGE_SAMPLE_C_O()
Definition: instructions.cc:38691
Gcn3ISA::Inst_VOP3__V_LOG_LEGACY_F32::Inst_VOP3__V_LOG_LEGACY_F32
Inst_VOP3__V_LOG_LEGACY_F32(InFmt_VOP3 *)
Definition: instructions.cc:27578
Gcn3ISA::Inst_VOP3__V_SIN_F32::Inst_VOP3__V_SIN_F32
Inst_VOP3__V_SIN_F32(InFmt_VOP3 *)
Definition: instructions.cc:26709
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::Inst_MUBUF__BUFFER_STORE_BYTE
Inst_MUBUF__BUFFER_STORE_BYTE(InFmt_MUBUF *)
Definition: instructions.cc:35695
Gcn3ISA::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:8783
Gcn3ISA::Inst_VOP3__V_CMP_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22324
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U64::~Inst_VOPC__V_CMPX_GT_U64
~Inst_VOPC__V_CMPX_GT_U64()
Definition: instructions.cc:15318
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7874
Gcn3ISA::Inst_VOP2__V_MUL_U32_U24::Inst_VOP2__V_MUL_U32_U24
Inst_VOP2__V_MUL_U32_U24(InFmt_VOP2 *)
Definition: instructions.cc:5750
Gcn3ISA::Inst_VOP3__V_INTERP_P1LV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29919
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36174
Gcn3ISA::Inst_VOPC__V_CMPX_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10195
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F32::~Inst_VOPC__V_CMP_NLT_F32
~Inst_VOPC__V_CMP_NLT_F32()
Definition: instructions.cc:10926
Gcn3ISA::Inst_DS__DS_AND_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33873
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40109
Gcn3ISA::Inst_VOP3__V_CMP_O_F16::Inst_VOP3__V_CMP_O_F16
Inst_VOP3__V_CMP_O_F16(InFmt_VOP3 *)
Definition: instructions.cc:16146
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41052
Gcn3ISA::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:39153
Gcn3ISA::Inst_VOP3__V_CMP_T_I32::~Inst_VOP3__V_CMP_T_I32
~Inst_VOP3__V_CMP_T_I32()
Definition: instructions.cc:20903
Gcn3ISA::Inst_VOP2__V_SUB_U32::Inst_VOP2__V_SUB_U32
Inst_VOP2__V_SUB_U32(InFmt_VOP2 *)
Definition: instructions.cc:6532
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F32::~Inst_VOP3__V_CMP_NGE_F32
~Inst_VOP3__V_CMP_NGE_F32()
Definition: instructions.cc:16948
Gcn3ISA::Inst_DS__DS_CMPST_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33063
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40039
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U32::~Inst_VOPC__V_CMPX_GE_U32
~Inst_VOPC__V_CMPX_GE_U32()
Definition: instructions.cc:14414
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::~Inst_FLAT__FLAT_LOAD_DWORDX4
~Inst_FLAT__FLAT_LOAD_DWORDX4()
Definition: instructions.cc:39824
Gcn3ISA::Inst_SOP2__S_ANDN2_B64::Inst_SOP2__S_ANDN2_B64
Inst_SOP2__S_ANDN2_B64(InFmt_SOP2 *)
Definition: instructions.cc:625
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38102
Gcn3ISA::Inst_SOPK__S_SETREG_IMM32_B32::Inst_SOPK__S_SETREG_IMM32_B32
Inst_SOPK__S_SETREG_IMM32_B32(InFmt_SOPK *)
Definition: instructions.cc:1846
Gcn3ISA::Inst_VOP2__V_MIN_I32::~Inst_VOP2__V_MIN_I32
~Inst_VOP2__V_MIN_I32()
Definition: instructions.cc:5928
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F64::~Inst_VOPC__V_CMPX_NEQ_F64
~Inst_VOPC__V_CMPX_NEQ_F64()
Definition: instructions.cc:12444
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3669
Gcn3ISA::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:39338
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36287
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_DEC::Inst_MIMG__IMAGE_ATOMIC_DEC
Inst_MIMG__IMAGE_ATOMIC_DEC(InFmt_MIMG *)
Definition: instructions.cc:38265
Gcn3ISA::Inst_VOP3__V_CMP_LT_I16::~Inst_VOP3__V_CMP_LT_I16
~Inst_VOP3__V_CMP_LT_I16()
Definition: instructions.cc:19415
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:197
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41617
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41246
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23648
Gcn3ISA::Inst_VOP2__V_MIN_F16::~Inst_VOP2__V_MIN_F16
~Inst_VOP2__V_MIN_F16()
Definition: instructions.cc:7118
Gcn3ISA::Inst_SOPP__S_NOP::Inst_SOPP__S_NOP
Inst_SOPP__S_NOP(InFmt_SOPP *)
Definition: instructions.cc:3709
Gcn3ISA::Inst_VOP3__V_CUBESC_F32::Inst_VOP3__V_CUBESC_F32
Inst_VOP3__V_CUBESC_F32(InFmt_VOP3 *)
Definition: instructions.cc:27833
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38764
Gcn3ISA::Inst_DS__DS_MAX_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33474
Gcn3ISA::Inst_DS__DS_WRITE2_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31323
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7814
Gcn3ISA::Inst_SOP2__S_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:282
Gcn3ISA::Inst_VOP1__V_SQRT_F32::Inst_VOP1__V_SQRT_F32
Inst_VOP1__V_SQRT_F32(InFmt_VOP1 *)
Definition: instructions.cc:8501
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F16::~Inst_VOP3__V_CMPX_NGE_F16
~Inst_VOP3__V_CMPX_NGE_F16()
Definition: instructions.cc:16514
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4623
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B64::Inst_SOP1__S_BCNT1_I32_B64
Inst_SOP1__S_BCNT1_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2219
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36495
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19030
Gcn3ISA::Inst_SOP1__S_QUADMASK_B64::~Inst_SOP1__S_QUADMASK_B64
~Inst_SOP1__S_QUADMASK_B64()
Definition: instructions.cc:2985
Gcn3ISA::Inst_VOP3__V_MAX_I32::~Inst_VOP3__V_MAX_I32
~Inst_VOP3__V_MAX_I32()
Definition: instructions.cc:23834
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I64::~Inst_VOPC__V_CMPX_GE_I64
~Inst_VOPC__V_CMPX_GE_I64()
Definition: instructions.cc:15136
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::~Inst_MUBUF__BUFFER_ATOMIC_SUB
~Inst_MUBUF__BUFFER_ATOMIC_SUB()
Definition: instructions.cc:36514
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U64::Inst_VOPC__V_CMPX_GE_U64
Inst_VOPC__V_CMPX_GE_U64(InFmt_VOPC *)
Definition: instructions.cc:15376
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L::~Inst_MIMG__IMAGE_GATHER4_C_L
~Inst_MIMG__IMAGE_GATHER4_C_L()
Definition: instructions.cc:38957
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41643
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F16::~Inst_VOP3__V_CMP_NGE_F16
~Inst_VOP3__V_CMP_NGE_F16()
Definition: instructions.cc:16190
Gcn3ISA::Inst_VOP3__V_FMA_F64::Inst_VOP3__V_FMA_F64
Inst_VOP3__V_FMA_F64(InFmt_VOP3 *)
Definition: instructions.cc:28077
Gcn3ISA::Inst_VOPC__V_CMP_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14505
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36281
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_O::~Inst_MIMG__IMAGE_SAMPLE_B_O
~Inst_MIMG__IMAGE_SAMPLE_B_O()
Definition: instructions.cc:38641
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35809
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:313
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38847
Gcn3ISA::Inst_VOP3__V_CMPX_F_I16::~Inst_VOP3__V_CMPX_F_I16
~Inst_VOP3__V_CMPX_F_I16()
Definition: instructions.cc:19997
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U64::~Inst_VOPC__V_CMPX_EQ_U64
~Inst_VOPC__V_CMPX_EQ_U64()
Definition: instructions.cc:15254
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F64::Inst_VOP1__V_FREXP_MANT_F64
Inst_VOP1__V_FREXP_MANT_F64(InFmt_VOP1 *)
Definition: instructions.cc:8819
Gcn3ISA::Inst_SOP2::instData
InFmt_SOP2 instData
Definition: op_encodings.hh:88
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B::~Inst_MIMG__IMAGE_GATHER4_C_B
~Inst_MIMG__IMAGE_GATHER4_C_B()
Definition: instructions.cc:38974
Gcn3ISA::Inst_DS__DS_WRITE2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32957
Gcn3ISA::Inst_VOP1__V_RSQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8473
Gcn3ISA::Inst_VOPC__V_CMP_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14598
Gcn3ISA::Inst_VOP3__V_FFBH_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26938
Gcn3ISA::Inst_VOP3__V_CMP_U_F16::Inst_VOP3__V_CMP_U_F16
Inst_VOP3__V_CMP_U_F16(InFmt_VOP3 *)
Definition: instructions.cc:16164
Gcn3ISA::Inst_SMEM__S_DCACHE_WB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5315
Gcn3ISA::Inst_VOP1__V_EXP_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9334
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15260
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U32::Inst_VOPC__V_CMPX_GT_U32
Inst_VOPC__V_CMPX_GT_U32(InFmt_VOPC *)
Definition: instructions.cc:14344
Gcn3ISA::Inst_VOP3__V_CMPX_F_U16::Inst_VOP3__V_CMPX_F_U16
Inst_VOP3__V_CMPX_F_U16(InFmt_VOP3 *)
Definition: instructions.cc:20304
Gcn3ISA::Inst_VOP3__V_FMA_F16::~Inst_VOP3__V_FMA_F16
~Inst_VOP3__V_FMA_F16()
Definition: instructions.cc:29752
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::Inst_SMEM__S_BUFFER_STORE_DWORD
Inst_SMEM__S_BUFFER_STORE_DWORD(InFmt_SMEM *)
Definition: instructions.cc:5198
Gcn3ISA::Inst_SOPP__S_SETHALT::~Inst_SOPP__S_SETHALT
~Inst_SOPP__S_SETHALT()
Definition: instructions.cc:4156
Gcn3ISA::Inst_SOP1__S_FF0_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2261
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ(InFmt_MUBUF *)
Definition: instructions.cc:34560
Gcn3ISA::Inst_VOP3__V_FFBH_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26862
Gcn3ISA::Inst_VOP3__V_CMP_GE_F32::~Inst_VOP3__V_CMP_GE_F32
~Inst_VOP3__V_CMP_GE_F32()
Definition: instructions.cc:16849
Gcn3ISA::Inst_VOP2__V_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5903
Gcn3ISA::Inst_VOP1__V_FRACT_F64::~Inst_VOP1__V_FRACT_F64
~Inst_VOP1__V_FRACT_F64()
Definition: instructions.cc:8860
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_U32::Inst_SOPK__S_CMPK_EQ_U32
Inst_SOPK__S_CMPK_EQ_U32(InFmt_SOPK *)
Definition: instructions.cc:1558
Gcn3ISA::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:38602
Gcn3ISA::Inst_VOP3__V_SUBREV_F32::~Inst_VOP3__V_SUBREV_F32
~Inst_VOP3__V_SUBREV_F32()
Definition: instructions.cc:23262
Gcn3ISA::Inst_VOP2__V_SUBREV_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6948
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::~Inst_MIMG__IMAGE_SAMPLE_CD_O
~Inst_MIMG__IMAGE_SAMPLE_CD_O()
Definition: instructions.cc:39311
Gcn3ISA::Inst_VOP3__V_INTERP_MOV_F32::Inst_VOP3__V_INTERP_MOV_F32
Inst_VOP3__V_INTERP_MOV_F32(InFmt_VOP3 *)
Definition: instructions.cc:29869
Gcn3ISA::Inst_VOP3__V_CVT_FLR_I32_F32::~Inst_VOP3__V_CVT_FLR_I32_F32
~Inst_VOP3__V_CVT_FLR_I32_F32()
Definition: instructions.cc:25609
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F64::Inst_VOP3__V_FREXP_MANT_F64
Inst_VOP3__V_FREXP_MANT_F64(InFmt_VOP3 *)
Definition: instructions.cc:27008
Gcn3ISA::Inst_VOP3__V_CMP_LT_F64::Inst_VOP3__V_CMP_LT_F64
Inst_VOP3__V_CMP_LT_F64(InFmt_VOP3 *)
Definition: instructions.cc:17734
Gcn3ISA::Inst_VOP1__V_CLREXCP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8969
Gcn3ISA::Inst_VOP3__V_CVT_I32_F32::~Inst_VOP3__V_CVT_I32_F32
~Inst_VOP3__V_CVT_I32_F32()
Definition: instructions.cc:25455
Gcn3ISA::Inst_VOP3__V_CMPX_F_U32::Inst_VOP3__V_CMPX_F_U32
Inst_VOP3__V_CMPX_F_U32(InFmt_VOP3 *)
Definition: instructions.cc:21541
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34634
Gcn3ISA::Inst_DS__DS_WRITE_B16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31624
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U32::~Inst_DS__DS_RSUB_RTN_U32
~Inst_DS__DS_RSUB_RTN_U32()
Definition: instructions.cc:31670
Gcn3ISA::Inst_SOPP__S_SET_GPR_IDX_OFF::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4406
Gcn3ISA::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:39355
Gcn3ISA::Inst_VOPC__V_CMPX_F_I32::Inst_VOPC__V_CMPX_F_I32
Inst_VOPC__V_CMPX_F_I32(InFmt_VOPC *)
Definition: instructions.cc:13975
Gcn3ISA::Inst_SOP1__S_SWAPPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2663
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U32::Inst_VOPC__V_CMPX_LE_U32
Inst_VOPC__V_CMPX_LE_U32(InFmt_VOPC *)
Definition: instructions.cc:14312
Gcn3ISA::Inst_SOP1__S_WQM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2044
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F16::~Inst_VOP3__V_CMP_NLE_F16
~Inst_VOP3__V_CMP_NLE_F16()
Definition: instructions.cc:16247
Gcn3ISA::Inst_SOP1__S_MOVRELD_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3073
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F16::~Inst_VOP3__V_CMPX_NLG_F16
~Inst_VOP3__V_CMPX_NLG_F16()
Definition: instructions.cc:16533
Gcn3ISA::Inst_VOP3__V_CMPX_F_I64::Inst_VOP3__V_CMPX_F_I64
Inst_VOP3__V_CMPX_F_I64(InFmt_VOP3 *)
Definition: instructions.cc:22463
Gcn3ISA::Inst_SOP1__S_SWAPPC_B64::~Inst_SOP1__S_SWAPPC_B64
~Inst_SOP1__S_SWAPPC_B64()
Definition: instructions.cc:2656
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F16::Inst_VOPC__V_CMPX_CLASS_F16
Inst_VOPC__V_CMPX_CLASS_F16(InFmt_VOPC *)
Definition: instructions.cc:9863
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10141
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B32::Inst_DS__DS_MSKOR_RTN_B32
Inst_DS__DS_MSKOR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31845
Gcn3ISA::Inst_VOP3__V_CMP_U_F32::Inst_VOP3__V_CMP_U_F32
Inst_VOP3__V_CMP_U_F32(InFmt_VOP3 *)
Definition: instructions.cc:16907
Gcn3ISA::Inst_SOP1__S_ABS_I32::~Inst_SOP1__S_ABS_I32
~Inst_SOP1__S_ABS_I32()
Definition: instructions.cc:3137
Gcn3ISA::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:824
Gcn3ISA::Inst_SOPC__S_CMP_LG_U64::Inst_SOPC__S_CMP_LG_U64
Inst_SOPC__S_CMP_LG_U64(InFmt_SOPC *)
Definition: instructions.cc:3683
Gcn3ISA::Inst_SOPP__S_WAITCNT::Inst_SOPP__S_WAITCNT
Inst_SOPP__S_WAITCNT(InFmt_SOPP *)
Definition: instructions.cc:4123
Gcn3ISA::Inst_VOP3__V_CVT_F32_F16::~Inst_VOP3__V_CVT_F32_F16
~Inst_VOP3__V_CVT_F32_F16()
Definition: instructions.cc:25551
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16442
Gcn3ISA::InFmt_VOP_SDWA::SRC1_NEG
unsigned int SRC1_NEG
Definition: gpu_decoder.hh:1608
Gcn3ISA::Inst_SOPC__S_BITCMP0_B32::Inst_SOPC__S_BITCMP0_B32
Inst_SOPC__S_BITCMP0_B32(InFmt_SOPC *)
Definition: instructions.cc:3509
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38696
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::~Inst_MUBUF__BUFFER_ATOMIC_XOR
~Inst_MUBUF__BUFFER_ATOMIC_XOR()
Definition: instructions.cc:36703
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F16::Inst_VOPC__V_CMP_NGT_F16
Inst_VOPC__V_CMP_NGT_F16(InFmt_VOPC *)
Definition: instructions.cc:10092
Gcn3ISA::InFmt_VOP_SDWA::SRC0_ABS
unsigned int SRC0_ABS
Definition: gpu_decoder.hh:1604
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22947
Gcn3ISA::Inst_SOPP__S_SENDMSG::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4209
Gcn3ISA::Inst_SOPK__S_CMPK_LG_U32::~Inst_SOPK__S_CMPK_LG_U32
~Inst_SOPK__S_CMPK_LG_U32()
Definition: instructions.cc:1589
Gcn3ISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2869
Gcn3ISA::Inst_DS__DS_AND_B32::~Inst_DS__DS_AND_B32
~Inst_DS__DS_AND_B32()
Definition: instructions.cc:31136
Gcn3ISA::Inst_VOP3__V_MUL_I32_I24::Inst_VOP3__V_MUL_I32_I24
Inst_VOP3__V_MUL_I32_I24(InFmt_VOP3 *)
Definition: instructions.cc:23507
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::Inst_FLAT__FLAT_ATOMIC_INC_X2
Inst_FLAT__FLAT_ATOMIC_INC_X2(InFmt_FLAT *)
Definition: instructions.cc:41648
Gcn3ISA::Inst_VOP3__V_CMP_F_F32::Inst_VOP3__V_CMP_F_F32
Inst_VOP3__V_CMP_F_F32(InFmt_VOP3 *)
Definition: instructions.cc:16649
Gcn3ISA::Inst_VOP3__V_MAX_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25032
Gcn3ISA::Inst_VOP3__V_MUL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30052
Gcn3ISA::Inst_DS__DS_MAX_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33267
Gcn3ISA::Inst_SOPP__S_SETPRIO::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4194
Gcn3ISA::Inst_VOP3__V_CMPX_F_U32::~Inst_VOP3__V_CMPX_F_U32
~Inst_VOP3__V_CMPX_F_U32()
Definition: instructions.cc:21548
Gcn3ISA::InFmt_SMEM
Definition: gpu_decoder.hh:1477
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40056
Gcn3ISA::Inst_VOP3__V_CMP_GT_F16::~Inst_VOP3__V_CMP_GT_F16
~Inst_VOP3__V_CMP_GT_F16()
Definition: instructions.cc:16097
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I32::Inst_VOPC__V_CMPX_GE_I32
Inst_VOPC__V_CMPX_GE_I32(InFmt_VOPC *)
Definition: instructions.cc:14162
Gcn3ISA::Inst_DS__DS_DEC_U64::Inst_DS__DS_DEC_U64
Inst_DS__DS_DEC_U64(InFmt_DS *)
Definition: instructions.cc:32719
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5213
Gcn3ISA::Inst_DS__DS_SUB_RTN_U32::~Inst_DS__DS_SUB_RTN_U32
~Inst_DS__DS_SUB_RTN_U32()
Definition: instructions.cc:31652
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::~Inst_FLAT__FLAT_ATOMIC_DEC
~Inst_FLAT__FLAT_ATOMIC_DEC()
Definition: instructions.cc:41044
Gcn3ISA::Inst_DS__DS_MIN_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31972
Gcn3ISA::Inst_DS__DS_WRITE_B8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31564
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::Inst_MUBUF__BUFFER_ATOMIC_INC_X2
Inst_MUBUF__BUFFER_ATOMIC_INC_X2(InFmt_MUBUF *)
Definition: instructions.cc:37071
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::Inst_MIMG__IMAGE_SAMPLE_CD_CL
Inst_MIMG__IMAGE_SAMPLE_CD_CL(InFmt_MIMG *)
Definition: instructions.cc:39253
Gcn3ISA::Inst_DS__DS_ADD_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32659
Gcn3ISA::Inst_VOP1__V_FFBH_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8706
Gcn3ISA::Inst_VOP3__V_MAX_F32::Inst_VOP3__V_MAX_F32
Inst_VOP3__V_MAX_F32(InFmt_VOP3 *)
Definition: instructions.cc:23733
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18689
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U64::~Inst_VOP3__V_CMPX_NE_U64
~Inst_VOP3__V_CMPX_NE_U64()
Definition: instructions.cc:22984
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35978
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I64::Inst_VOP3__V_CMP_EQ_I64
Inst_VOP3__V_CMP_EQ_I64(InFmt_VOP3 *)
Definition: instructions.cc:21923
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40368
Gcn3ISA::Inst_SOP2__S_ORN2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:668
Gcn3ISA::Inst_VOPC__V_CMP_LG_F64::Inst_VOPC__V_CMP_LG_F64
Inst_VOPC__V_CMP_LG_F64(InFmt_VOPC *)
Definition: instructions.cc:11656
Gcn3ISA::Inst_VOP3__V_LSHLREV_B16::Inst_VOP3__V_LSHLREV_B16
Inst_VOP3__V_LSHLREV_B16(InFmt_VOP3 *)
Definition: instructions.cc:24806
Gcn3ISA::Inst_VOP3_SDST_ENC::extData
InFmt_VOP3_1 extData
Definition: op_encodings.hh:406
Gcn3ISA::Inst_SOP1__S_CMOV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1957
Gcn3ISA::Inst_VOP3__V_CMP_NE_I16::Inst_VOP3__V_CMP_NE_I16
Inst_VOP3__V_CMP_NE_I16(InFmt_VOP3 *)
Definition: instructions.cc:19576
Gcn3ISA::Inst_VOPC__V_CMP_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14836
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5243
Gcn3ISA::Inst_VOP3__V_MAD_U64_U32::~Inst_VOP3__V_MAD_U64_U32
~Inst_VOP3__V_MAD_U64_U32()
Definition: instructions.cc:29490
Gcn3ISA::Inst_SOP1__S_BITSET0_B32::Inst_SOP1__S_BITSET0_B32
Inst_SOP1__S_BITSET0_B32(InFmt_SOP1 *)
Definition: instructions.cc:2507
Gcn3ISA::Inst_VOP3__V_CMP_F_F16::~Inst_VOP3__V_CMP_F_F16
~Inst_VOP3__V_CMP_F_F16()
Definition: instructions.cc:16021
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10467
Gcn3ISA::Inst_DS__DS_WRAP_RTN_B32::Inst_DS__DS_WRAP_RTN_B32
Inst_DS__DS_WRAP_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31997
Gcn3ISA::Inst_VOPC__V_CMP_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10608
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U32::Inst_DS__DS_MAX_SRC2_U32
Inst_DS__DS_MAX_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33840
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F32::~Inst_VOPC__V_CMPX_NEQ_F32
~Inst_VOPC__V_CMPX_NEQ_F32()
Definition: instructions.cc:11415
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29864
Gcn3ISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::Inst_SOP1__S_NAND_SAVEEXEC_B64
Inst_SOP1__S_NAND_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2854
Gcn3ISA::Inst_VOP3__V_MAD_F16::~Inst_VOP3__V_MAD_F16
~Inst_VOP3__V_MAD_F16()
Definition: instructions.cc:29582
Gcn3ISA::Inst_VOP2__V_SUBREV_U32::Inst_VOP2__V_SUBREV_U32
Inst_VOP2__V_SUBREV_U32(InFmt_VOP2 *)
Definition: instructions.cc:6570
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F64::Inst_DS__DS_CMPST_RTN_F64
Inst_DS__DS_CMPST_RTN_F64(InFmt_DS *)
Definition: instructions.cc:33418
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33359
Gcn3ISA::Inst_VOP3__V_CEIL_F64::~Inst_VOP3__V_CEIL_F64
~Inst_VOP3__V_CEIL_F64()
Definition: instructions.cc:26039
Gcn3ISA::Inst_SOP2__S_LSHL_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:938
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16385
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F64::~Inst_VOP3__V_CMPX_NLG_F64
~Inst_VOP3__V_CMPX_NLG_F64()
Definition: instructions.cc:19080
Gcn3ISA::Inst_SOPK
Definition: op_encodings.hh:97
Gcn3ISA::Inst_VOPC__V_CMPX_F_F64::~Inst_VOPC__V_CMPX_F_F64
~Inst_VOPC__V_CMPX_F_F64()
Definition: instructions.cc:12014
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2(InFmt_MUBUF *)
Definition: instructions.cc:36963
Gcn3ISA::Inst_VOPC__V_CMPX_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14233
Gcn3ISA::VecElemI16
int16_t VecElemI16
Definition: registers.hh:165
Gcn3ISA::Inst_VOP3__V_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21046
Gcn3ISA::Inst_DS__DS_CMPST_F64::~Inst_DS__DS_CMPST_F64
~Inst_DS__DS_CMPST_F64()
Definition: instructions.cc:33053
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I16::~Inst_VOPC__V_CMPX_LT_I16
~Inst_VOPC__V_CMPX_LT_I16()
Definition: instructions.cc:13040
Gcn3ISA::Inst_DS__DS_MAX_U32::~Inst_DS__DS_MAX_U32
~Inst_DS__DS_MAX_U32()
Definition: instructions.cc:31118
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41113
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38449
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15142
Gcn3ISA::Inst_VOPC__V_CMP_T_I32::Inst_VOPC__V_CMP_T_I32
Inst_VOPC__V_CMP_T_I32(InFmt_VOPC *)
Definition: instructions.cc:13711
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F64::~Inst_VOPC__V_CMP_TRU_F64
~Inst_VOPC__V_CMP_TRU_F64()
Definition: instructions.cc:11987
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F32::~Inst_VOP3__V_CMPX_NGT_F32
~Inst_VOP3__V_CMPX_NGT_F32()
Definition: instructions.cc:17550
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32::Inst_VOP3__V_MUL_HI_I32
Inst_VOP3__V_MUL_HI_I32(InFmt_VOP3 *)
Definition: instructions.cc:30392
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F64::~Inst_VOP3__V_CMP_NLE_F64
~Inst_VOP3__V_CMP_NLE_F64()
Definition: instructions.cc:18349
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U64::Inst_VOP3__V_CMPX_GT_U64
Inst_VOP3__V_CMPX_GT_U64(InFmt_VOP3 *)
Definition: instructions.cc:22934
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F64::Inst_VOPC__V_CMPX_GE_F64
Inst_VOPC__V_CMPX_GE_F64(InFmt_VOPC *)
Definition: instructions.cc:12201
Gcn3ISA::Inst_VOP1__V_CVT_OFF_F32_I4::~Inst_VOP1__V_CVT_OFF_F32_I4
~Inst_VOP1__V_CVT_OFF_F32_I4()
Definition: instructions.cc:7730
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F32::Inst_VOPC__V_CMPX_CLASS_F32
Inst_VOPC__V_CMPX_CLASS_F32(InFmt_VOPC *)
Definition: instructions.cc:9493
Gcn3ISA::Inst_SOPK__S_CMPK_LG_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1445
Gcn3ISA::Inst_SOP2__S_SUB_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:157
Gcn3ISA::Inst_DS__DS_INC_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33758
Gcn3ISA::Inst_SOP2__S_OR_B32::Inst_SOP2__S_OR_B32
Inst_SOP2__S_OR_B32(InFmt_SOP2 *)
Definition: instructions.cc:475
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_INC::Inst_MIMG__IMAGE_ATOMIC_INC
Inst_MIMG__IMAGE_ATOMIC_INC(InFmt_MIMG *)
Definition: instructions.cc:38239
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12516
Gcn3ISA::Inst_VOP3__V_CMP_GE_I16::Inst_VOP3__V_CMP_GE_I16
Inst_VOP3__V_CMP_GE_I16(InFmt_VOP3 *)
Definition: instructions.cc:19618
Gcn3ISA::Inst_FLAT
Definition: op_encodings.hh:770
Gcn3ISA::Inst_VOP3__V_CMP_F_I32::~Inst_VOP3__V_CMP_F_I32
~Inst_VOP3__V_CMP_F_I32()
Definition: instructions.cc:20624
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19255
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F32::~Inst_VOP1__V_FREXP_MANT_F32
~Inst_VOP1__V_FREXP_MANT_F32()
Definition: instructions.cc:8929
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34544
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I16::~Inst_VOPC__V_CMP_EQ_I16
~Inst_VOPC__V_CMP_EQ_I16()
Definition: instructions.cc:12594
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37120
Gcn3ISA::Inst_VOPC__V_CMPX_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11219
Gcn3ISA::Inst_VOP3__V_CVT_F16_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27221
Gcn3ISA::Inst_SOPP__S_INCPERFLEVEL::Inst_SOPP__S_INCPERFLEVEL
Inst_SOPP__S_INCPERFLEVEL(InFmt_SOPP *)
Definition: instructions.cc:4261
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY()
Definition: instructions.cc:34781
Gcn3ISA::Inst_DS__DS_WRITE_B16::Inst_DS__DS_WRITE_B16
Inst_DS__DS_WRITE_B16(InFmt_DS *)
Definition: instructions.cc:31569
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I64::Inst_VOP3__V_CMPX_EQ_I64
Inst_VOP3__V_CMPX_EQ_I64(InFmt_VOP3 *)
Definition: instructions.cc:22534
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40278
Gcn3ISA::Inst_VOP3__V_LDEXP_F16::Inst_VOP3__V_LDEXP_F16
Inst_VOP3__V_LDEXP_F16(InFmt_VOP3 *)
Definition: instructions.cc:25161
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20160
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41016
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34865
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL_O::Inst_MIMG__IMAGE_GATHER4_CL_O
Inst_MIMG__IMAGE_GATHER4_CL_O(InFmt_MIMG *)
Definition: instructions.cc:39034
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW()
Definition: instructions.cc:37613
Gcn3ISA::VecOperand::negModifier
void negModifier()
Definition: operand.hh:250
Gcn3ISA::Inst_VOP3__V_MUL_F64::Inst_VOP3__V_MUL_F64
Inst_VOP3__V_MUL_F64(InFmt_VOP3 *)
Definition: instructions.cc:30039
Gcn3ISA::Inst_DS__DS_GWS_INIT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34024
Gcn3ISA::Inst_VOP3__V_SAD_U32::~Inst_VOP3__V_SAD_U32
~Inst_VOP3__V_SAD_U32()
Definition: instructions.cc:28878
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40930
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38680
Gcn3ISA::Inst_SOP2__S_NOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:818
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F32::Inst_VOP3__V_CMP_TRU_F32
Inst_VOP3__V_CMP_TRU_F32(InFmt_VOP3 *)
Definition: instructions.cc:17139
Gcn3ISA::Inst_SOP1__S_OR_SAVEEXEC_B64::~Inst_SOP1__S_OR_SAVEEXEC_B64
~Inst_SOP1__S_OR_SAVEEXEC_B64()
Definition: instructions.cc:2733
Gcn3ISA::Inst_VOP3__V_FRACT_F32::Inst_VOP3__V_FRACT_F32
Inst_VOP3__V_FRACT_F32(InFmt_VOP3 *)
Definition: instructions.cc:26146
Wavefront
Definition: wavefront.hh:57
Gcn3ISA::Inst_SOP2__S_MUL_I32::~Inst_SOP2__S_MUL_I32
~Inst_SOP2__S_MUL_I32()
Definition: instructions.cc:1139
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37146
Gcn3ISA::Inst_DS__DS_AND_SRC2_B32::~Inst_DS__DS_AND_SRC2_B32
~Inst_DS__DS_AND_SRC2_B32()
Definition: instructions.cc:33864
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F64::Inst_VOP3__V_CMPX_EQ_F64
Inst_VOP3__V_CMPX_EQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:18619
Gcn3ISA::Inst_VOP3__V_CMP_O_F64::Inst_VOP3__V_CMP_O_F64
Inst_VOP3__V_CMP_O_F64(InFmt_VOP3 *)
Definition: instructions.cc:18065
Gcn3ISA::Inst_VOP3__V_CVT_F32_F64::Inst_VOP3__V_CVT_F32_F64
Inst_VOP3__V_CVT_F32_F64(InFmt_VOP3 *)
Definition: instructions.cc:25658
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35866
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18189
Gcn3ISA::Inst_DS__DS_ADD_RTN_U64::~Inst_DS__DS_ADD_RTN_U64
~Inst_DS__DS_ADD_RTN_U64()
Definition: instructions.cc:33113
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I32::~Inst_VOPC__V_CMPX_GE_I32
~Inst_VOPC__V_CMPX_GE_I32()
Definition: instructions.cc:14168
Gcn3ISA::Inst_VOPC__V_CMPX_T_U64::~Inst_VOPC__V_CMPX_T_U64
~Inst_VOPC__V_CMPX_T_U64()
Definition: instructions.cc:15414
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F64::Inst_VOPC__V_CMP_NGT_F64
Inst_VOPC__V_CMP_NGT_F64(InFmt_VOPC *)
Definition: instructions.cc:11852
Gcn3ISA::Inst_VOP2__V_SUB_F16::~Inst_VOP2__V_SUB_F16
~Inst_VOP2__V_SUB_F16()
Definition: instructions.cc:6764
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38022
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F16::Inst_VOP3__V_CMPX_NLT_F16
Inst_VOP3__V_CMPX_NLT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16601
Gcn3ISA::Inst_VOP3__V_FRACT_F64::Inst_VOP3__V_FRACT_F64
Inst_VOP3__V_FRACT_F64(InFmt_VOP3 *)
Definition: instructions.cc:27046
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2()
Definition: instructions.cc:36784
Gcn3ISA::Inst_VOP3__V_CVT_U32_F32::~Inst_VOP3__V_CVT_U32_F32
~Inst_VOP3__V_CVT_U32_F32()
Definition: instructions.cc:25401
Gcn3ISA::Inst_VOP3__V_CMP_LE_I16::Inst_VOP3__V_CMP_LE_I16
Inst_VOP3__V_CMP_LE_I16(InFmt_VOP3 *)
Definition: instructions.cc:19492
Gcn3ISA::ScalarOperand
Definition: operand.hh:98
Gcn3ISA::Inst_VOP2__V_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6548
Gcn3ISA::Inst_SOP1__S_BREV_B32::~Inst_SOP1__S_BREV_B32
~Inst_SOP1__S_BREV_B32()
Definition: instructions.cc:2093
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36001
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31877
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38156
Gcn3ISA::Inst_VOP3__V_EXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27362
Gcn3ISA::Inst_VOPC__V_CMP_NE_I64::~Inst_VOPC__V_CMP_NE_I64
~Inst_VOPC__V_CMP_NE_I64()
Definition: instructions.cc:14623
Gcn3ISA::Inst_VOP1__V_CVT_F16_I16::~Inst_VOP1__V_CVT_F16_I16
~Inst_VOP1__V_CVT_F16_I16()
Definition: instructions.cc:8999
Gcn3ISA::Inst_DS__DS_MIN_RTN_U64::~Inst_DS__DS_MIN_RTN_U64
~Inst_DS__DS_MIN_RTN_U64()
Definition: instructions.cc:33241
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::~Inst_MUBUF__BUFFER_LOAD_SBYTE
~Inst_MUBUF__BUFFER_LOAD_SBYTE()
Definition: instructions.cc:35112
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U64::Inst_SOPC__S_CMP_EQ_U64
Inst_SOPC__S_CMP_EQ_U64(InFmt_SOPC *)
Definition: instructions.cc:3657
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38798
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F32::~Inst_VOP3__V_DIV_SCALE_F32
~Inst_VOP3__V_DIV_SCALE_F32()
Definition: instructions.cc:29145
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::Inst_MIMG__IMAGE_SAMPLE_D_CL
Inst_MIMG__IMAGE_SAMPLE_D_CL(InFmt_MIMG *)
Definition: instructions.cc:38339
Gcn3ISA::InFmt_VOPC::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1576
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38302
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::Inst_MUBUF__BUFFER_ATOMIC_DEC
Inst_MUBUF__BUFFER_ATOMIC_DEC(InFmt_MUBUF *)
Definition: instructions.cc:36744
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10803
Gcn3ISA::Inst_VOP3__V_RCP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26434
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22240
Gcn3ISA::Inst_VOP1__V_CVT_U16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9023
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X()
Definition: instructions.cc:37134
Gcn3ISA::Inst_VOP3__V_CMP_LE_I16::~Inst_VOP3__V_CMP_LE_I16
~Inst_VOP3__V_CMP_LE_I16()
Definition: instructions.cc:19499
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38996
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20246
Gcn3ISA::Inst_VOP3__V_CMPX_O_F64::~Inst_VOP3__V_CMPX_O_F64
~Inst_VOP3__V_CMPX_O_F64()
Definition: instructions.cc:18908
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F32::Inst_VOP3__V_CMP_EQ_F32
Inst_VOP3__V_CMP_EQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:16709
Gcn3ISA::Inst_SMEM__S_MEMREALTIME::~Inst_SMEM__S_MEMREALTIME
~Inst_SMEM__S_MEMREALTIME()
Definition: instructions.cc:5373
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37586
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F32::Inst_VOP3__V_CMP_NLE_F32
Inst_VOP3__V_CMP_NLE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17040
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C::Inst_MIMG__IMAGE_SAMPLE_C
Inst_MIMG__IMAGE_SAMPLE_C(InFmt_MIMG *)
Definition: instructions.cc:38421
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY(InFmt_MTBUF *)
Definition: instructions.cc:37156
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::Inst_FLAT__FLAT_ATOMIC_ADD
Inst_FLAT__FLAT_ATOMIC_ADD(InFmt_FLAT *)
Definition: instructions.cc:40567
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I64::~Inst_VOP3__V_CMPX_NE_I64
~Inst_VOP3__V_CMPX_NE_I64()
Definition: instructions.cc:22670
GPUStaticInst::isLocalMem
bool isLocalMem() const
Definition: gpu_static_inst.hh:179
Gcn3ISA::Inst_VOP3__V_CMPX_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21840
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41344
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36549
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F16::~Inst_VOP3__V_CMPX_GT_F16
~Inst_VOP3__V_CMPX_GT_F16()
Definition: instructions.cc:16417
Gcn3ISA::Inst_DS__DS_MIN_F32::~Inst_DS__DS_MIN_F32
~Inst_DS__DS_MIN_F32()
Definition: instructions.cc:31440
Gcn3ISA::InFmt_SOP2::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1499
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33953
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::Inst_MIMG__IMAGE_SAMPLE_C_LZ
Inst_MIMG__IMAGE_SAMPLE_C_LZ(InFmt_MIMG *)
Definition: instructions.cc:38536
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I32::Inst_VOPC__V_CMPX_LE_I32
Inst_VOPC__V_CMPX_LE_I32(InFmt_VOPC *)
Definition: instructions.cc:14066
Gcn3ISA::Inst_DS__DS_ADD_RTN_U32::~Inst_DS__DS_ADD_RTN_U32
~Inst_DS__DS_ADD_RTN_U32()
Definition: instructions.cc:31634
Gcn3ISA::Inst_VOP3__V_EXP_LEGACY_F32::~Inst_VOP3__V_EXP_LEGACY_F32
~Inst_VOP3__V_EXP_LEGACY_F32()
Definition: instructions.cc:27539
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::~Inst_FLAT__FLAT_STORE_BYTE
~Inst_FLAT__FLAT_STORE_BYTE()
Definition: instructions.cc:39909
Gcn3ISA::Inst_VOP3__V_MQSAD_PK_U16_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29458
Gcn3ISA::Inst_VOP1__V_FRACT_F16::~Inst_VOP1__V_FRACT_F16
~Inst_VOP1__V_FRACT_F16()
Definition: instructions.cc:9274
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ()
Definition: instructions.cc:34814
Gcn3ISA::Inst_DS__DS_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31126
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U64::Inst_VOP3__V_CMPX_LE_U64
Inst_VOP3__V_CMPX_LE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22891
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::~Inst_SMEM__S_BUFFER_STORE_DWORDX2
~Inst_SMEM__S_BUFFER_STORE_DWORDX2()
Definition: instructions.cc:5236
Gcn3ISA::Inst_SOPC__S_CMP_LT_I32::Inst_SOPC__S_CMP_LT_I32
Inst_SOPC__S_CMP_LT_I32(InFmt_SOPC *)
Definition: instructions.cc:3301
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20388
Gcn3ISA::Inst_DS__DS_RSUB_U32::Inst_DS__DS_RSUB_U32
Inst_DS__DS_RSUB_U32(InFmt_DS *)
Definition: instructions.cc:31004
Gcn3ISA::Inst_VOP3__V_CMP_LT_U32::Inst_VOP3__V_CMP_LT_U32
Inst_VOP3__V_CMP_LT_U32(InFmt_VOP3 *)
Definition: instructions.cc:20949
Gcn3ISA::Inst_SOP2__S_RFE_RESTORE_B64::~Inst_SOP2__S_RFE_RESTORE_B64
~Inst_SOP2__S_RFE_RESTORE_B64()
Definition: instructions.cc:1347
Gcn3ISA::Inst_DS__DS_AND_SRC2_B32::Inst_DS__DS_AND_SRC2_B32
Inst_DS__DS_AND_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:33859
Gcn3ISA::Inst_DS::extData
InFmt_DS_1 extData
Definition: op_encodings.hh:509
Gcn3ISA::Inst_VOP3__V_CVT_F32_I32::Inst_VOP3__V_CVT_F32_I32
Inst_VOP3__V_CVT_F32_I32(InFmt_VOP3 *)
Definition: instructions.cc:25316
Gcn3ISA::Inst_VOP3__V_READLANE_B32::~Inst_VOP3__V_READLANE_B32
~Inst_VOP3__V_READLANE_B32()
Definition: instructions.cc:30483
Gcn3ISA::Inst_VOP3__V_ASHRREV_I64::Inst_VOP3__V_ASHRREV_I64
Inst_VOP3__V_ASHRREV_I64(InFmt_VOP3 *)
Definition: instructions.cc:30776
Gcn3ISA::Inst_VOP3__V_SUBREV_U32::~Inst_VOP3__V_SUBREV_U32
~Inst_VOP3__V_SUBREV_U32()
Definition: instructions.cc:24357
Gcn3ISA::Inst_SOPK__S_CMPK_LE_U32::Inst_SOPK__S_CMPK_LE_U32
Inst_SOPK__S_CMPK_LE_U32(InFmt_SOPK *)
Definition: instructions.cc:1683
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I32::~Inst_VOPC__V_CMPX_GT_I32
~Inst_VOPC__V_CMPX_GT_I32()
Definition: instructions.cc:14104
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10377
Gcn3ISA::Inst_VOP3__V_MUL_F16::Inst_VOP3__V_MUL_F16
Inst_VOP3__V_MUL_F16(InFmt_VOP3 *)
Definition: instructions.cc:24605
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I32::Inst_VOP3__V_CMPX_LT_I32
Inst_VOP3__V_CMPX_LT_I32(InFmt_VOP3 *)
Definition: instructions.cc:21255
Gcn3ISA::Inst_SOP2__S_NOR_B32::Inst_SOP2__S_NOR_B32
Inst_SOP2__S_NOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:775
Gcn3ISA::Inst_VOP1__V_CVT_F32_F64::~Inst_VOP1__V_CVT_F32_F64
~Inst_VOP1__V_CVT_F32_F64()
Definition: instructions.cc:7748
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW()
Definition: instructions.cc:37481
Gcn3ISA::Inst_VOP3__V_CVT_F64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25969
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I64::~Inst_VOP3__V_CMPX_GT_I64
~Inst_VOP3__V_CMPX_GT_I64()
Definition: instructions.cc:22627
Gcn3ISA::Inst_VOP3__V_CVT_PKRTZ_F16_F32::~Inst_VOP3__V_CVT_PKRTZ_F16_F32
~Inst_VOP3__V_CVT_PKRTZ_F16_F32()
Definition: instructions.cc:30924
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15078
Gcn3ISA::Inst_VOP3__V_CMPX_T_U16::Inst_VOP3__V_CMPX_T_U16
Inst_VOP3__V_CMPX_T_U16(InFmt_VOP3 *)
Definition: instructions.cc:20590
Gcn3ISA::Inst_VOP3__V_SUBBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24518
Gcn3ISA::Inst_VOP1__V_LOG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9125
Gcn3ISA::Inst_VOP1::instData
InFmt_VOP1 instData
Definition: op_encodings.hh:309
Wavefront::execMask
VectorMask & execMask()
Definition: wavefront.cc:1398
Gcn3ISA::Inst_SOPK__S_MOVK_I32::~Inst_SOPK__S_MOVK_I32
~Inst_SOPK__S_MOVK_I32()
Definition: instructions.cc:1364
reverseBits
T reverseBits(T val, std::size_t size=sizeof(T))
Takes a variable lenght word and returns the mirrored version (Bit by bit, LSB=>MSB).
Definition: bitfield.hh:213
Gcn3ISA::Inst_VOPC__V_CMP_F_I16::Inst_VOPC__V_CMP_F_I16
Inst_VOPC__V_CMP_F_I16(InFmt_VOPC *)
Definition: instructions.cc:12531
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26977
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B32::~Inst_DS__DS_WRXCHG_RTN_B32
~Inst_DS__DS_WRXCHG_RTN_B32()
Definition: instructions.cc:31868
Wavefront::wgId
uint32_t wgId
Definition: wavefront.hh:152
Gcn3ISA::Inst_VOPC__V_CMP_F_F64::Inst_VOPC__V_CMP_F_F64
Inst_VOPC__V_CMP_F_F64(InFmt_VOPC *)
Definition: instructions.cc:11501
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36630
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U32::~Inst_DS__DS_ADD_SRC2_U32
~Inst_DS__DS_ADD_SRC2_U32()
Definition: instructions.cc:33692
Gcn3ISA::Inst_VOP3__V_CVT_F64_U32::Inst_VOP3__V_CVT_F64_U32
Inst_VOP3__V_CVT_F64_U32(InFmt_VOP3 *)
Definition: instructions.cc:25956
Gcn3ISA::Inst_VOP2__V_MUL_HI_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5837
Gcn3ISA::Inst_VOP3__V_CVT_F16_I16::Inst_VOP3__V_CVT_F16_I16
Inst_VOP3__V_CVT_F16_I16(InFmt_VOP3 *)
Definition: instructions.cc:27208
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38416
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F32::Inst_VOPC__V_CMP_NEQ_F32
Inst_VOPC__V_CMP_NEQ_F32(InFmt_VOPC *)
Definition: instructions.cc:10887
Gcn3ISA::Inst_SOPP__S_BARRIER::Inst_SOPP__S_BARRIER
Inst_SOPP__S_BARRIER(InFmt_SOPP *)
Definition: instructions.cc:4072
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36684
Gcn3ISA::Inst_VOPC__V_CMPX_U_F32::~Inst_VOPC__V_CMPX_U_F32
~Inst_VOPC__V_CMPX_U_F32()
Definition: instructions.cc:11247
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F64::Inst_VOPC__V_CMPX_LG_F64
Inst_VOPC__V_CMPX_LG_F64(InFmt_VOPC *)
Definition: instructions.cc:12167
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F32::~Inst_VOPC__V_CMPX_GT_F32
~Inst_VOPC__V_CMPX_GT_F32()
Definition: instructions.cc:11112
Gcn3ISA::InFmt_DS_1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1370
Gcn3ISA::Inst_VOP3__V_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20658
Gcn3ISA::Inst_MIMG__IMAGE_GET_LOD::Inst_MIMG__IMAGE_GET_LOD
Inst_MIMG__IMAGE_GET_LOD(InFmt_MIMG *)
Definition: instructions.cc:39221
Gcn3ISA::Inst_SOP2__S_BFE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1208
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22547
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5249
Gcn3ISA::ScalarOperand::setBit
std::enable_if< Condition, void >::type setBit(int bit, int bit_val)
bit access to scalar data.
Definition: operand.hh:495
Gcn3ISA::Inst_DS__DS_AND_SRC2_B64::~Inst_DS__DS_AND_SRC2_B64
~Inst_DS__DS_AND_SRC2_B64()
Definition: instructions.cc:34311
Gcn3ISA::Inst_VOP3__V_MAD_LEGACY_F32::Inst_VOP3__V_MAD_LEGACY_F32
Inst_VOP3__V_MAD_LEGACY_F32(InFmt_VOP3 *)
Definition: instructions.cc:27608
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X()
Definition: instructions.cc:34880
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F64::Inst_VOPC__V_CMPX_NLE_F64
Inst_VOPC__V_CMPX_NLE_F64(InFmt_VOPC *)
Definition: instructions.cc:12404
Gcn3ISA::Inst_VOPC__V_CMPX_F_F32::Inst_VOPC__V_CMPX_F_F32
Inst_VOPC__V_CMPX_F_F32(InFmt_VOPC *)
Definition: instructions.cc:10978
Gcn3ISA::InFmt_VOPC::VSRC1
unsigned int VSRC1
Definition: gpu_decoder.hh:1577
ComputeUnit::activeWaves
int activeWaves
Definition: compute_unit.hh:530
Gcn3ISA::Inst_DS__DS_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31180
Gcn3ISA::Inst_VOP3__V_CMPX_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16337
Gcn3ISA::Inst_VOPC__V_CMP_GT_U64::~Inst_VOPC__V_CMP_GT_U64
~Inst_VOPC__V_CMP_GT_U64()
Definition: instructions.cc:14830
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34301
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F16::Inst_VOP3__V_CMPX_LT_F16
Inst_VOP3__V_CMPX_LT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16352
Gcn3ISA::Inst_VOP3__V_CMPX_T_U32::~Inst_VOP3__V_CMPX_T_U32
~Inst_VOP3__V_CMPX_T_U32()
Definition: instructions.cc:21834
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::~Inst_MUBUF__BUFFER_ATOMIC_UMIN
~Inst_MUBUF__BUFFER_ATOMIC_UMIN()
Definition: instructions.cc:36568
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I64::~Inst_VOPC__V_CMPX_LT_I64
~Inst_VOPC__V_CMPX_LT_I64()
Definition: instructions.cc:14976
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::~Inst_SMEM__S_BUFFER_STORE_DWORD
~Inst_SMEM__S_BUFFER_STORE_DWORD()
Definition: instructions.cc:5206
Gcn3ISA::Inst_VOP1__V_CEIL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8191
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18410
Gcn3ISA::Inst_DS__DS_AND_B64::~Inst_DS__DS_AND_B64
~Inst_DS__DS_AND_B64()
Definition: instructions.cc:32815
Gcn3ISA::Inst_VOPC__V_CMP_LT_U32::~Inst_VOPC__V_CMP_LT_U32
~Inst_VOPC__V_CMP_LT_U32()
Definition: instructions.cc:13769
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37493
addr
ip6_addr_t addr
Definition: inet.hh:423
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B_O::~Inst_MIMG__IMAGE_GATHER4_C_B_O
~Inst_MIMG__IMAGE_GATHER4_C_B_O()
Definition: instructions.cc:39177
Gcn3ISA::Inst_VOPC__V_CMPX_F_I32::~Inst_VOPC__V_CMPX_F_I32
~Inst_VOPC__V_CMPX_F_I32()
Definition: instructions.cc:13981
Gcn3ISA::Inst_SOPP__S_SLEEP::Inst_SOPP__S_SLEEP
Inst_SOPP__S_SLEEP(InFmt_SOPP *)
Definition: instructions.cc:4166
Gcn3ISA::Inst_VOPC__V_CMPX_T_U16::Inst_VOPC__V_CMPX_T_U16
Inst_VOPC__V_CMPX_T_U16(InFmt_VOPC *)
Definition: instructions.cc:13472
Gcn3ISA::Inst_VOPC__V_CMP_F_F16::~Inst_VOPC__V_CMP_F_F16
~Inst_VOPC__V_CMP_F_F16()
Definition: instructions.cc:9901
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F16::Inst_VOPC__V_CMP_CLASS_F16
Inst_VOPC__V_CMP_CLASS_F16(InFmt_VOPC *)
Definition: instructions.cc:9833
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39968
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::~Inst_MIMG__IMAGE_SAMPLE_CL_O
~Inst_MIMG__IMAGE_SAMPLE_CL_O()
Definition: instructions.cc:38576
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::~Inst_FLAT__FLAT_ATOMIC_ADD_X2
~Inst_FLAT__FLAT_ATOMIC_ADD_X2()
Definition: instructions.cc:41281
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37598
GPUStaticInst::isSDWAInst
bool isSDWAInst() const
Definition: gpu_static_inst.hh:111
Gcn3ISA::Inst_SOP2__S_ASHR_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1062
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F64::~Inst_VOPC__V_CMPX_CLASS_F64
~Inst_VOPC__V_CMPX_CLASS_F64()
Definition: instructions.cc:9726
Gcn3ISA::Inst_VOP1__V_CVT_U16_F16::Inst_VOP1__V_CVT_U16_F16
Inst_VOP1__V_CVT_U16_F16(InFmt_VOP1 *)
Definition: instructions.cc:9010
Gcn3ISA::Inst_VOP3__V_BFE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27897
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39501
Gcn3ISA::Inst_VOP1__V_RNDNE_F64::Inst_VOP1__V_RNDNE_F64
Inst_VOP1__V_RNDNE_F64(InFmt_VOP1 *)
Definition: instructions.cc:8057
Gcn3ISA::Inst_SOP1__S_MOVRELD_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3100
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39114
Gcn3ISA::Inst_VOP3__V_CMP_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22282
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ(InFmt_MTBUF *)
Definition: instructions.cc:37307
Gcn3ISA::Inst_DS__DS_READ_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:33516
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D::~Inst_MIMG__IMAGE_SAMPLE_C_D
~Inst_MIMG__IMAGE_SAMPLE_C_D()
Definition: instructions.cc:38460
Gcn3ISA::Inst_VOP3__V_INTERP_P1LL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29901
Gcn3ISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2901
Gcn3ISA::Inst_VOP3__V_EXP_F16::~Inst_VOP3__V_EXP_F16
~Inst_VOP3__V_EXP_F16()
Definition: instructions.cc:27353
Gcn3ISA::Inst_SOPK__S_CMOVK_I32::Inst_SOPK__S_CMOVK_I32
Inst_SOPK__S_CMOVK_I32(InFmt_SOPK *)
Definition: instructions.cc:1380
Gcn3ISA::Inst_VOP3__V_CMP_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21894
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41565
Gcn3ISA::Inst_VOP3__V_ADD_U32::Inst_VOP3__V_ADD_U32
Inst_VOP3__V_ADD_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24258
Gcn3ISA::Inst_SOPP__S_DECPERFLEVEL::Inst_SOPP__S_DECPERFLEVEL
Inst_SOPP__S_DECPERFLEVEL(InFmt_SOPP *)
Definition: instructions.cc:4276
Gcn3ISA::Inst_DS__DS_XOR_B64::~Inst_DS__DS_XOR_B64
~Inst_DS__DS_XOR_B64()
Definition: instructions.cc:32851
Gcn3ISA::Inst_VOPC__V_CMP_GE_U16::Inst_VOPC__V_CMP_GE_U16
Inst_VOPC__V_CMP_GE_U16(InFmt_VOPC *)
Definition: instructions.cc:12950
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U32::~Inst_DS__DS_MAX_SRC2_U32
~Inst_DS__DS_MAX_SRC2_U32()
Definition: instructions.cc:33845
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER::~Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
~Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER()
Definition: instructions.cc:4348
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL::~Inst_MIMG__IMAGE_SAMPLE_C_D_CL
~Inst_MIMG__IMAGE_SAMPLE_C_D_CL()
Definition: instructions.cc:38477
Gcn3ISA::Inst_DS__DS_GWS_INIT::Inst_DS__DS_GWS_INIT
Inst_DS__DS_GWS_INIT(InFmt_DS *)
Definition: instructions.cc:34014
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F32::~Inst_VOPC__V_CMP_EQ_F32
~Inst_VOPC__V_CMP_EQ_F32()
Definition: instructions.cc:10538
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F16::Inst_VOP3__V_CMPX_GT_F16
Inst_VOP3__V_CMPX_GT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16409
Gcn3ISA::Inst_SOPC__S_CMP_LE_U32::Inst_SOPC__S_CMP_LE_U32
Inst_SOPC__S_CMP_LE_U32(InFmt_SOPC *)
Definition: instructions.cc:3483
Gcn3ISA::Inst_SOPP__S_WAKEUP::~Inst_SOPP__S_WAKEUP
~Inst_SOPP__S_WAKEUP()
Definition: instructions.cc:3892
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F16::Inst_VOPC__V_CMP_NLT_F16
Inst_VOPC__V_CMP_NLT_F16(InFmt_VOPC *)
Definition: instructions.cc:10146
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::~Inst_FLAT__FLAT_STORE_DWORDX2
~Inst_FLAT__FLAT_STORE_DWORDX2()
Definition: instructions.cc:40121
Gcn3ISA::Inst_VOPC__V_CMP_T_U16::Inst_VOPC__V_CMP_T_U16
Inst_VOPC__V_CMP_T_U16(InFmt_VOPC *)
Definition: instructions.cc:12981
Gcn3ISA::InFmt_SOPK::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1515
Gcn3ISA::Inst_DS__DS_ADD_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32029
GPUDynInstPtr
std::shared_ptr< GPUDynInst > GPUDynInstPtr
Definition: misc.hh:48
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::Inst_MUBUF__BUFFER_LOAD_UBYTE
Inst_MUBUF__BUFFER_LOAD_UBYTE(InFmt_MUBUF *)
Definition: instructions.cc:35003
Gcn3ISA::Inst_SOP1__S_MOVRELD_B64::~Inst_SOP1__S_MOVRELD_B64
~Inst_SOP1__S_MOVRELD_B64()
Definition: instructions.cc:3093
Gcn3ISA::Inst_VOP1__V_CVT_U32_F64::Inst_VOP1__V_CVT_U32_F64
Inst_VOP1__V_CVT_U32_F64(InFmt_VOP1 *)
Definition: instructions.cc:7921
Gcn3ISA::Inst_VOP1__V_CEIL_F16::Inst_VOP1__V_CEIL_F16
Inst_VOP1__V_CEIL_F16(InFmt_VOP1 *)
Definition: instructions.cc:9213
Gcn3ISA::Inst_VOPC__V_CMP_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10673
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I64::~Inst_VOP3__V_CMPX_LE_I64
~Inst_VOP3__V_CMPX_LE_I64()
Definition: instructions.cc:22584
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35346
Gcn3ISA::Inst_SOPP__S_DECPERFLEVEL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4286
Gcn3ISA::Inst_VOP3__V_CMPX_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17452
Gcn3ISA::Inst_VOPC__V_CMP_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12543
Gcn3ISA::Inst_VOPC__V_CMP_T_I64::~Inst_VOPC__V_CMP_T_I64
~Inst_VOPC__V_CMP_T_I64()
Definition: instructions.cc:14685
Gcn3ISA::Inst_VOPC__V_CMP_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14660
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::~Inst_FLAT__FLAT_ATOMIC_SWAP
~Inst_FLAT__FLAT_ATOMIC_SWAP()
Definition: instructions.cc:40360
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39648
Gcn3ISA::Inst_VOPC__V_CMP_F_I32::~Inst_VOPC__V_CMP_F_I32
~Inst_VOPC__V_CMP_F_I32()
Definition: instructions.cc:13505
Gcn3ISA::Inst_DS__DS_OR_SRC2_B32::Inst_DS__DS_OR_SRC2_B32
Inst_DS__DS_OR_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:33878
Gcn3ISA::Inst_VOP3__V_CMPX_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17181
Gcn3ISA::Inst_VOP3__V_RSQ_F16::Inst_VOP3__V_RSQ_F16
Inst_VOP3__V_RSQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:27304
Gcn3ISA::Inst_VOP3__V_CVT_PK_I16_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30963
Gcn3ISA::Inst_VOPC__V_CMPX_F_I64::Inst_VOPC__V_CMPX_F_I64
Inst_VOPC__V_CMPX_F_I64(InFmt_VOPC *)
Definition: instructions.cc:14943
Gcn3ISA::Inst_SOPP__S_WAKEUP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3900
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39282
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34919
Gcn3ISA::Inst_VOP2__V_MAX_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7141
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16954
Gcn3ISA::Inst_VOPC__V_CMPX_U_F64::Inst_VOPC__V_CMPX_U_F64
Inst_VOPC__V_CMPX_U_F64(InFmt_VOPC *)
Definition: instructions.cc:12269
Gcn3ISA::Inst_SOPC__S_CMP_LE_U32::~Inst_SOPC__S_CMP_LE_U32
~Inst_SOPC__S_CMP_LE_U32()
Definition: instructions.cc:3489
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F32::~Inst_VOPC__V_CMPX_NGT_F32
~Inst_VOPC__V_CMPX_NGT_F32()
Definition: instructions.cc:11349
Stats::DistBase::sample
void sample(const U &v, int n=1)
Add a value to the distribtion n times.
Definition: statistics.hh:1924
Gcn3ISA::Inst_DS__DS_XOR_B64::Inst_DS__DS_XOR_B64
Inst_DS__DS_XOR_B64(InFmt_DS *)
Definition: instructions.cc:32846
Gcn3ISA::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:3633
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39574
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28986
Cycles
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:83
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_O::Inst_MIMG__IMAGE_GATHER4_B_O
Inst_MIMG__IMAGE_GATHER4_B_O(InFmt_MIMG *)
Definition: instructions.cc:39068
Gcn3ISA::Inst_VOPC__V_CMP_T_U64::Inst_VOPC__V_CMP_T_U64
Inst_VOPC__V_CMP_T_U64(InFmt_VOPC *)
Definition: instructions.cc:14917
Gcn3ISA::Inst_VOP3__V_CMPX_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22476
Gcn3ISA::Inst_SOP2__S_AND_B64::Inst_SOP2__S_AND_B64
Inst_SOP2__S_AND_B64(InFmt_SOP2 *)
Definition: instructions.cc:445
Gcn3ISA::Inst_VOP2__V_MIN_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7234
Gcn3ISA::Inst_VOP1__V_FRACT_F32::Inst_VOP1__V_FRACT_F32
Inst_VOP1__V_FRACT_F32(InFmt_VOP1 *)
Definition: instructions.cc:8117
Gcn3ISA::Inst_VOPC__V_CMP_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12662
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9943
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5005
Gcn3ISA::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:38752
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::~Inst_MIMG__IMAGE_STORE_PCK
~Inst_MIMG__IMAGE_STORE_PCK()
Definition: instructions.cc:37877
Gcn3ISA::Inst_SOPK__S_SETREG_IMM32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1861
Gcn3ISA::Inst_VOPC__V_CMPX_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14452
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F16::Inst_VOP1__V_FREXP_MANT_F16
Inst_VOP1__V_FREXP_MANT_F16(InFmt_VOP1 *)
Definition: instructions.cc:9151
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38367
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U64::~Inst_VOP3__V_CMPX_GE_U64
~Inst_VOP3__V_CMPX_GE_U64()
Definition: instructions.cc:23027
Gcn3ISA::ScalarRegU32
uint32_t ScalarRegU32
Definition: registers.hh:154
Gcn3ISA::Inst_SOP1__S_CMOV_B64::Inst_SOP1__S_CMOV_B64
Inst_SOP1__S_CMOV_B64(InFmt_SOP1 *)
Definition: instructions.cc:1943
X86ISA::selector
Bitfield< 31, 16 > selector
Definition: misc.hh:1003
Gcn3ISA::Inst_SOP1__S_FF1_I32_B32::~Inst_SOP1__S_FF1_I32_B32
~Inst_SOP1__S_FF1_I32_B32()
Definition: instructions.cc:2305
Gcn3ISA::Inst_VOP3__V_CMPX_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21526
Gcn3ISA::Inst_VOP2__V_XOR_B32::Inst_VOP2__V_XOR_B32
Inst_VOP2__V_XOR_B32(InFmt_VOP2 *)
Definition: instructions.cc:6287
Gcn3ISA::Inst_SOPP__S_SET_GPR_IDX_MODE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4427
Gcn3ISA::Inst_SOPC__S_CMP_GT_U32::~Inst_SOPC__S_CMP_GT_U32
~Inst_SOPC__S_CMP_GT_U32()
Definition: instructions.cc:3411
Gcn3ISA::Inst_MUBUF::injectGlobalMemFence
void injectGlobalMemFence(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:580
Gcn3ISA::Inst_VOP3__V_RCP_F16::~Inst_VOP3__V_RCP_F16
~Inst_VOP3__V_RCP_F16()
Definition: instructions.cc:27269
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::Inst_FLAT__FLAT_ATOMIC_UMIN_X2
Inst_FLAT__FLAT_ATOMIC_UMIN_X2(InFmt_FLAT *)
Definition: instructions.cc:41492
Gcn3ISA::Inst_VOP3__V_COS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26762
Gcn3ISA::Inst_VOP3__V_FMA_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28091
Gcn3ISA::Inst_VOP3__V_CMP_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16141
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U64::~Inst_VOPC__V_CMPX_GE_U64
~Inst_VOPC__V_CMPX_GE_U64()
Definition: instructions.cc:15382
Gcn3ISA::Inst_SMEM__S_MEMTIME::~Inst_SMEM__S_MEMTIME
~Inst_SMEM__S_MEMTIME()
Definition: instructions.cc:5357
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9406
Gcn3ISA::Inst_VOP2__V_MAC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6825
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::Inst_SMEM__S_STORE_DWORDX2
Inst_SMEM__S_STORE_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:5080
Gcn3ISA::Inst_VOP1
Definition: op_encodings.hh:294
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15014
Gcn3ISA::Inst_VOP1__V_FFBH_I32::~Inst_VOP1__V_FFBH_I32
~Inst_VOP1__V_FFBH_I32()
Definition: instructions.cc:8759
Gcn3ISA::Inst_VOPC__V_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13692
Gcn3ISA::Inst_SOP1__S_AND_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2709
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_O::~Inst_MIMG__IMAGE_SAMPLE_C_CD_O
~Inst_MIMG__IMAGE_SAMPLE_C_CD_O()
Definition: instructions.cc:39345
Gcn3ISA::Inst_VOP3__V_CMP_LT_U32::~Inst_VOP3__V_CMP_LT_U32
~Inst_VOP3__V_CMP_LT_U32()
Definition: instructions.cc:20956
Gcn3ISA::Inst_VOPC__V_CMP_NE_U16::Inst_VOPC__V_CMP_NE_U16
Inst_VOPC__V_CMP_NE_U16(InFmt_VOPC *)
Definition: instructions.cc:12919
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F64::~Inst_VOP3__V_CMPX_GT_F64
~Inst_VOP3__V_CMPX_GT_F64()
Definition: instructions.cc:18739
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8936
Gcn3ISA::Inst_VOP3__V_CMPX_F_F32::Inst_VOP3__V_CMPX_F_F32
Inst_VOP3__V_CMPX_F_F32(InFmt_VOP3 *)
Definition: instructions.cc:17167
Gcn3ISA::Inst_EXP
Definition: op_encodings.hh:755
Gcn3ISA::Inst_SOPK__S_CMPK_LG_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1595
Wavefront::instructionBuffer
std::deque< GPUDynInstPtr > instructionBuffer
Definition: wavefront.hh:102
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U16::~Inst_VOP3__V_CMPX_LT_U16
~Inst_VOP3__V_CMPX_LT_U16()
Definition: instructions.cc:20339
Gcn3ISA::Inst_VOP3__V_FLOOR_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26121
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCZ::Inst_SOPP__S_CBRANCH_VCCZ
Inst_SOPP__S_CBRANCH_VCCZ(InFmt_SOPP *)
Definition: instructions.cc:3963
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F64::~Inst_VOP3__V_CMPX_NLT_F64
~Inst_VOP3__V_CMPX_NLT_F64()
Definition: instructions.cc:19305
Gcn3ISA::Inst_SOP1__S_CMOV_B32::Inst_SOP1__S_CMOV_B32
Inst_SOP1__S_CMOV_B32(InFmt_SOP1 *)
Definition: instructions.cc:1914
Gcn3ISA::Inst_VOP3__V_MAD_U64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29496
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34694
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::~Inst_MIMG__IMAGE_SAMPLE_C_CD
~Inst_MIMG__IMAGE_SAMPLE_C_CD()
Definition: instructions.cc:39277
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36468
Gcn3ISA::Inst_DS__DS_AND_RTN_B64::~Inst_DS__DS_AND_RTN_B64
~Inst_DS__DS_AND_RTN_B64()
Definition: instructions.cc:33277
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32_U24::Inst_VOP3__V_MUL_HI_U32_U24
Inst_VOP3__V_MUL_HI_U32_U24(InFmt_VOP3 *)
Definition: instructions.cc:23636
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F32::Inst_VOP3__V_CMPX_EQ_F32
Inst_VOP3__V_CMPX_EQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:17230
Gcn3ISA::Inst_SOPP__S_TTRACEDATA::Inst_SOPP__S_TTRACEDATA
Inst_SOPP__S_TTRACEDATA(InFmt_SOPP *)
Definition: instructions.cc:4291
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F32::Inst_VOP1__V_FREXP_MANT_F32
Inst_VOP1__V_FREXP_MANT_F32(InFmt_VOP1 *)
Definition: instructions.cc:8922
Gcn3ISA::Inst_SOPC__S_BITCMP0_B32::~Inst_SOPC__S_BITCMP0_B32
~Inst_SOPC__S_BITCMP0_B32()
Definition: instructions.cc:3515
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B::Inst_MIMG__IMAGE_GATHER4_B
Inst_MIMG__IMAGE_GATHER4_B(InFmt_MIMG *)
Definition: instructions.cc:38868
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I16::~Inst_VOPC__V_CMPX_GT_I16
~Inst_VOPC__V_CMPX_GT_I16()
Definition: instructions.cc:13136
Gcn3ISA::Inst_DS__DS_WRITE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32896
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW(InFmt_MTBUF *)
Definition: instructions.cc:37216
Gcn3ISA::Inst_VOP1__V_CEIL_F64::~Inst_VOP1__V_CEIL_F64
~Inst_VOP1__V_CEIL_F64()
Definition: instructions.cc:8034
Gcn3ISA::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:880
Gcn3ISA::Inst_VOP3__V_INTERP_P1_F32::~Inst_VOP3__V_INTERP_P1_F32
~Inst_VOP3__V_INTERP_P1_F32()
Definition: instructions.cc:29840
Gcn3ISA::Inst_SOP2__S_MAX_I32::Inst_SOP2__S_MAX_I32
Inst_SOP2__S_MAX_I32(InFmt_SOP2 *)
Definition: instructions.cc:299
Gcn3ISA::Inst_VOP3__V_CMP_LE_I32::Inst_VOP3__V_CMP_LE_I32
Inst_VOP3__V_CMP_LE_I32(InFmt_VOP3 *)
Definition: instructions.cc:20729
Gcn3ISA::Inst_VOP3__V_CMPX_U_F64::Inst_VOP3__V_CMPX_U_F64
Inst_VOP3__V_CMPX_U_F64(InFmt_VOP3 *)
Definition: instructions.cc:18958
Gcn3ISA::Inst_SMEM__S_ATC_PROBE_BUFFER::Inst_SMEM__S_ATC_PROBE_BUFFER
Inst_SMEM__S_ATC_PROBE_BUFFER(InFmt_SMEM *)
Definition: instructions.cc:5399
Gcn3ISA::Inst_SOPK__S_GETREG_B32::Inst_SOPK__S_GETREG_B32
Inst_SOPK__S_GETREG_B32(InFmt_SOPK *)
Definition: instructions.cc:1781
Gcn3ISA::Inst_SOP2__S_BFM_B32::~Inst_SOP2__S_BFM_B32
~Inst_SOP2__S_BFM_B32()
Definition: instructions.cc:1085
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_ADD::~Inst_MIMG__IMAGE_ATOMIC_ADD
~Inst_MIMG__IMAGE_ATOMIC_ADD()
Definition: instructions.cc:38014
Gcn3ISA::Inst_VOP3__V_CMP_GE_I64::~Inst_VOP3__V_CMP_GE_I64
~Inst_VOP3__V_CMP_GE_I64()
Definition: instructions.cc:22098
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40127
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13356
Gcn3ISA::Inst_VOP3__V_MUL_LEGACY_F32::~Inst_VOP3__V_MUL_LEGACY_F32
~Inst_VOP3__V_MUL_LEGACY_F32()
Definition: instructions.cc:23316
Gcn3ISA::Inst_DS__DS_READ_U8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32291
Gcn3ISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::~Inst_SOP1__S_NAND_SAVEEXEC_B64
~Inst_SOP1__S_NAND_SAVEEXEC_B64()
Definition: instructions.cc:2861
Gcn3ISA::VecElemU8
uint8_t VecElemU8
Definition: registers.hh:162
Gcn3ISA::Inst_VOP3__V_MIN3_I32::~Inst_VOP3__V_MIN3_I32
~Inst_VOP3__V_MIN3_I32()
Definition: instructions.cc:28350
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U64::Inst_VOP3__V_CMPX_LT_U64
Inst_VOP3__V_CMPX_LT_U64(InFmt_VOP3 *)
Definition: instructions.cc:22805
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15747
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36903
Gcn3ISA::Inst_SOP2__S_ADDC_U32::Inst_SOP2__S_ADDC_U32
Inst_SOP2__S_ADDC_U32(InFmt_SOP2 *)
Definition: instructions.cc:175
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::Inst_MIMG__IMAGE_STORE_MIP_PCK
Inst_MIMG__IMAGE_STORE_MIP_PCK(InFmt_MIMG *)
Definition: instructions.cc:37898
Gcn3ISA::Inst_SOP2__S_NOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:788
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U32::Inst_VOP3__V_CMP_EQ_U32
Inst_VOP3__V_CMP_EQ_U32(InFmt_VOP3 *)
Definition: instructions.cc:20991
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35021
Gcn3ISA::Inst_DS__DS_GWS_SEMA_V::Inst_DS__DS_GWS_SEMA_V
Inst_DS__DS_GWS_SEMA_V(InFmt_DS *)
Definition: instructions.cc:34029
Gcn3ISA::Inst_VOP3__V_INTERP_MOV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29882
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25877
Gcn3ISA::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:7692
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_XOR::Inst_MIMG__IMAGE_ATOMIC_XOR
Inst_MIMG__IMAGE_ATOMIC_XOR(InFmt_MIMG *)
Definition: instructions.cc:38213
Gcn3ISA::Inst_VOP1__V_EXP_F16::Inst_VOP1__V_EXP_F16
Inst_VOP1__V_EXP_F16(InFmt_VOP1 *)
Definition: instructions.cc:9130
Gcn3ISA::Inst_DS__DS_MAX_RTN_F64::~Inst_DS__DS_MAX_RTN_F64
~Inst_DS__DS_MAX_RTN_F64()
Definition: instructions.cc:33465
Gcn3ISA::Inst_DS__DS_ADD_U32::Inst_DS__DS_ADD_U32
Inst_DS__DS_ADD_U32(InFmt_DS *)
Definition: instructions.cc:30968
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38663
Gcn3ISA::Inst_VOP3__V_CMP_U_F32::~Inst_VOP3__V_CMP_U_F32
~Inst_VOP3__V_CMP_U_F32()
Definition: instructions.cc:16914
Gcn3ISA::Inst_SOP1__S_FF0_I32_B32::Inst_SOP1__S_FF0_I32_B32
Inst_SOP1__S_FF0_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2247
Gcn3ISA::Inst_DS__DS_BPERMUTE_B32::Inst_DS__DS_BPERMUTE_B32
Inst_DS__DS_BPERMUTE_B32(InFmt_DS *)
Definition: instructions.cc:32574
Gcn3ISA::Inst_VOPC__V_CMP_LT_I32::~Inst_VOPC__V_CMP_LT_I32
~Inst_VOPC__V_CMP_LT_I32()
Definition: instructions.cc:13531
Gcn3ISA::Inst_DS__DS_SUB_U64::~Inst_DS__DS_SUB_U64
~Inst_DS__DS_SUB_U64()
Definition: instructions.cc:32669
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U16::~Inst_VOP3__V_CMPX_GT_U16
~Inst_VOP3__V_CMPX_GT_U16()
Definition: instructions.cc:20468
Gcn3ISA::Inst_VOP3__V_CMP_GE_F32::Inst_VOP3__V_CMP_GE_F32
Inst_VOP3__V_CMP_GE_F32(InFmt_VOP3 *)
Definition: instructions.cc:16841
Gcn3ISA::Inst_SOP1__S_MOVRELS_B32::~Inst_SOP1__S_MOVRELS_B32
~Inst_SOP1__S_MOVRELS_B32()
Definition: instructions.cc:3014
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I32::~Inst_VOP3__V_CMPX_EQ_I32
~Inst_VOP3__V_CMPX_EQ_I32()
Definition: instructions.cc:21305
Gcn3ISA::Inst_VOP3__V_TRIG_PREOP_F64::~Inst_VOP3__V_TRIG_PREOP_F64
~Inst_VOP3__V_TRIG_PREOP_F64()
Definition: instructions.cc:30826
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5254
Gcn3ISA::Inst_VOPC__V_CMP_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11541
Gcn3ISA::Inst_VOP2__V_MIN_I16::~Inst_VOP2__V_MIN_I16
~Inst_VOP2__V_MIN_I16()
Definition: instructions.cc:7228
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I16::~Inst_VOP3__V_CMPX_LT_I16
~Inst_VOP3__V_CMPX_LT_I16()
Definition: instructions.cc:20025
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::Inst_SMEM__S_BUFFER_LOAD_DWORDX8
Inst_SMEM__S_BUFFER_LOAD_DWORDX8(InFmt_SMEM *)
Definition: instructions.cc:4900
Gcn3ISA::Inst_VOP3__V_CMP_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20630
Gcn3ISA::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:38742
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::Inst_MUBUF__BUFFER_ATOMIC_SMIN
Inst_MUBUF__BUFFER_ATOMIC_SMIN(InFmt_MUBUF *)
Definition: instructions.cc:36528
Gcn3ISA::Inst_DS__DS_MAX_F64::~Inst_DS__DS_MAX_F64
~Inst_DS__DS_MAX_F64()
Definition: instructions.cc:33094
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20345
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34615
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::~Inst_MIMG__IMAGE_GATHER4_LZ_O
~Inst_MIMG__IMAGE_GATHER4_LZ_O()
Definition: instructions.cc:39109
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U16::Inst_VOP3__V_CMPX_NE_U16
Inst_VOP3__V_CMPX_NE_U16(InFmt_VOP3 *)
Definition: instructions.cc:20504
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I32::Inst_VOPC__V_CMP_EQ_I32
Inst_VOPC__V_CMP_EQ_I32(InFmt_VOPC *)
Definition: instructions.cc:13556
Gcn3ISA::Inst_VOP1__V_RSQ_F64::~Inst_VOP1__V_RSQ_F64
~Inst_VOP1__V_RSQ_F64()
Definition: instructions.cc:8467
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW()
Definition: instructions.cc:34979
Gcn3ISA::Inst_VOP2__V_MAX_I32::~Inst_VOP2__V_MAX_I32
~Inst_VOP2__V_MAX_I32()
Definition: instructions.cc:5959
Gcn3ISA::Inst_VOP3__V_RNDNE_F16::Inst_VOP3__V_RNDNE_F16
Inst_VOP3__V_RNDNE_F16(InFmt_VOP3 *)
Definition: instructions.cc:27460
Gcn3ISA::Inst_SOP2__S_ORN2_B32::~Inst_SOP2__S_ORN2_B32
~Inst_SOP2__S_ORN2_B32()
Definition: instructions.cc:661
Gcn3ISA::Inst_VOP3__V_FMA_F16::Inst_VOP3__V_FMA_F16
Inst_VOP3__V_FMA_F16(InFmt_VOP3 *)
Definition: instructions.cc:29744
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B32::Inst_SOP1__S_FLBIT_I32_B32
Inst_SOP1__S_FLBIT_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2351
Gcn3ISA::Inst_VOP3__V_MED3_F32::Inst_VOP3__V_MED3_F32
Inst_VOP3__V_MED3_F32(InFmt_VOP3 *)
Definition: instructions.cc:28579
Gcn3ISA::Inst_VOP1__V_SIN_F32::~Inst_VOP1__V_SIN_F32
~Inst_VOP1__V_SIN_F32()
Definition: instructions.cc:8568
Gcn3ISA::VecElemI32
int32_t VecElemI32
Definition: registers.hh:167
Gcn3ISA::Inst_VOP3__V_MIN3_U32::Inst_VOP3__V_MIN3_U32
Inst_VOP3__V_MIN3_U32(InFmt_VOP3 *)
Definition: instructions.cc:28388
Gcn3ISA::Inst_VOP3__V_RSQ_F64::Inst_VOP3__V_RSQ_F64
Inst_VOP3__V_RSQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:26585
Gcn3ISA::Inst_DS__DS_WRITE2_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31314
Gcn3ISA::Inst_VOP3__V_LOG_F16::Inst_VOP3__V_LOG_F16
Inst_VOP3__V_LOG_F16(InFmt_VOP3 *)
Definition: instructions.cc:27325
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L::Inst_MIMG__IMAGE_GATHER4_L
Inst_MIMG__IMAGE_GATHER4_L(InFmt_MIMG *)
Definition: instructions.cc:38852
Gcn3ISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2933
Gcn3ISA::Inst_VOP3__V_CVT_RPI_I32_F32::~Inst_VOP3__V_CVT_RPI_I32_F32
~Inst_VOP3__V_CVT_RPI_I32_F32()
Definition: instructions.cc:25570
Gcn3ISA::Inst_VOP3__V_MUL_LEGACY_F32::Inst_VOP3__V_MUL_LEGACY_F32
Inst_VOP3__V_MUL_LEGACY_F32(InFmt_VOP3 *)
Definition: instructions.cc:23309
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36077
Gcn3ISA::Inst_DS__DS_MAX_RTN_U64::~Inst_DS__DS_MAX_RTN_U64
~Inst_DS__DS_MAX_RTN_U64()
Definition: instructions.cc:33259
Gcn3ISA::Inst_VOP3__V_LSHLREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24818
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34244
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B32::Inst_DS__DS_WRITE_SRC2_B32
Inst_DS__DS_WRITE_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:33916
Gcn3ISA::Inst_VOP3__V_MBCNT_HI_U32_B32::Inst_VOP3__V_MBCNT_HI_U32_B32
Inst_VOP3__V_MBCNT_HI_U32_B32(InFmt_VOP3 *)
Definition: instructions.cc:30644
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I32::~Inst_VOP3__V_CMP_EQ_I32
~Inst_VOP3__V_CMP_EQ_I32()
Definition: instructions.cc:20694
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::Inst_FLAT__FLAT_ATOMIC_SWAP
Inst_FLAT__FLAT_ATOMIC_SWAP(InFmt_FLAT *)
Definition: instructions.cc:40348
Gcn3ISA::Inst_VOP2__V_ADD_F16::~Inst_VOP2__V_ADD_F16
~Inst_VOP2__V_ADD_F16()
Definition: instructions.cc:6746
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F32::Inst_VOP3__V_CMPX_GT_F32
Inst_VOP3__V_CMPX_GT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17298
Gcn3ISA::Inst_VOP1__V_CVT_I32_F64::Inst_VOP1__V_CVT_I32_F64
Inst_VOP1__V_CVT_I32_F64(InFmt_VOP1 *)
Definition: instructions.cc:7383
Gcn3ISA::Inst_VOP1__V_COS_F16::~Inst_VOP1__V_COS_F16
~Inst_VOP1__V_COS_F16()
Definition: instructions.cc:9310
Gcn3ISA::Inst_VOP2__V_XOR_B32::~Inst_VOP2__V_XOR_B32
~Inst_VOP2__V_XOR_B32()
Definition: instructions.cc:6293
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37297
Gcn3ISA::Inst_VOP1__V_FLOOR_F32::Inst_VOP1__V_FLOOR_F32
Inst_VOP1__V_FLOOR_F32(InFmt_VOP1 *)
Definition: instructions.cc:8238
Gcn3ISA::Inst_VOP3__V_FMA_F32::Inst_VOP3__V_FMA_F32
Inst_VOP3__V_FMA_F32(InFmt_VOP3 *)
Definition: instructions.cc:28018
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8899
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22504
Gcn3ISA::Inst_SOP1__S_FF1_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2339
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14142
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::~Inst_FLAT__FLAT_STORE_DWORDX3
~Inst_FLAT__FLAT_STORE_DWORDX3()
Definition: instructions.cc:40192
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE1::Inst_VOP3__V_CVT_F32_UBYTE1
Inst_VOP3__V_CVT_F32_UBYTE1(InFmt_VOP3 *)
Definition: instructions.cc:25788
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP(InFmt_MUBUF *)
Definition: instructions.cc:36445
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR::~Inst_FLAT__FLAT_ATOMIC_OR
~Inst_FLAT__FLAT_ATOMIC_OR()
Definition: instructions.cc:40897
Gcn3ISA::Inst_VOP3__V_CMP_GT_F32::~Inst_VOP3__V_CMP_GT_F32
~Inst_VOP3__V_CMP_GT_F32()
Definition: instructions.cc:16783
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12483
Gcn3ISA::InstFormat::iFmt_VOP_SDWA
InFmt_VOP_SDWA iFmt_VOP_SDWA
Definition: gpu_decoder.hh:1641
Gcn3ISA::Inst_DS__DS_CONSUME::Inst_DS__DS_CONSUME
Inst_DS__DS_CONSUME(InFmt_DS *)
Definition: instructions.cc:34089
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33720
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::Inst_FLAT__FLAT_ATOMIC_SMIN_X2
Inst_FLAT__FLAT_ATOMIC_SMIN_X2(InFmt_FLAT *)
Definition: instructions.cc:41466
Gcn3ISA::Inst_VOPC__V_CMPX_T_U32::~Inst_VOPC__V_CMPX_T_U32
~Inst_VOPC__V_CMPX_T_U32()
Definition: instructions.cc:14446
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F32::Inst_VOPC__V_CMPX_LT_F32
Inst_VOPC__V_CMPX_LT_F32(InFmt_VOPC *)
Definition: instructions.cc:11006
Gcn3ISA::Inst_SOP1__S_CBRANCH_JOIN::Inst_SOP1__S_CBRANCH_JOIN
Inst_SOP1__S_CBRANCH_JOIN(InFmt_SOP1 *)
Definition: instructions.cc:3114
Gcn3ISA::Inst_VOP3__V_FFBH_U32::Inst_VOP3__V_FFBH_U32
Inst_VOP3__V_FFBH_U32(InFmt_VOP3 *)
Definition: instructions.cc:26849
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F32::Inst_VOP3__V_CMPX_NGE_F32
Inst_VOP3__V_CMPX_NGE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17473
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I64::~Inst_VOP3__V_CMP_EQ_I64
~Inst_VOP3__V_CMP_EQ_I64()
Definition: instructions.cc:21930
findLsbSet
int findLsbSet(uint64_t val)
Returns the bit position of the LSB that is set in the input.
Definition: bitfield.hh:253
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U64::~Inst_DS__DS_SUB_SRC2_U64
~Inst_DS__DS_SUB_SRC2_U64()
Definition: instructions.cc:34158
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4371
Gcn3ISA::Inst_SOP2__S_XOR_B32::~Inst_SOP2__S_XOR_B32
~Inst_SOP2__S_XOR_B32()
Definition: instructions.cc:541
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCNZ::~Inst_SOPP__S_CBRANCH_VCCNZ
~Inst_SOPP__S_CBRANCH_VCCNZ()
Definition: instructions.cc:4000
Gcn3ISA::Inst_VOP3__V_CMP_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16822
Gcn3ISA::Inst_VOP3__V_SUB_U32::~Inst_VOP3__V_SUB_U32
~Inst_VOP3__V_SUB_U32()
Definition: instructions.cc:24311
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F16::~Inst_VOP1__V_FREXP_MANT_F16
~Inst_VOP1__V_FREXP_MANT_F16()
Definition: instructions.cc:9158
Gcn3ISA::Inst_SOPK__S_CMOVK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1394
Gcn3ISA::Inst_SOPC__S_BITCMP1_B64::~Inst_SOPC__S_BITCMP1_B64
~Inst_SOPC__S_BITCMP1_B64()
Definition: instructions.cc:3593
Gcn3ISA::Inst_SOP1__S_BREV_B64::~Inst_SOP1__S_BREV_B64
~Inst_SOP1__S_BREV_B64()
Definition: instructions.cc:2117
Gcn3ISA::Inst_VOP3__V_CVT_PK_I16_I32::~Inst_VOP3__V_CVT_PK_I16_I32
~Inst_VOP3__V_CVT_PK_I16_I32()
Definition: instructions.cc:30957
Gcn3ISA::Inst_VOP2__V_ASHRREV_I16::~Inst_VOP2__V_ASHRREV_I16
~Inst_VOP2__V_ASHRREV_I16()
Definition: instructions.cc:7067
Gcn3ISA::Inst_SOP2__S_LSHL_B64::Inst_SOP2__S_LSHL_B64
Inst_SOP2__S_LSHL_B64(InFmt_SOP2 *)
Definition: instructions.cc:925
Gcn3ISA::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:38651
Gcn3ISA::InFmt_VOP_SDWA::SRC1_SEL
unsigned int SRC1_SEL
Definition: gpu_decoder.hh:1606
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4660
Gcn3ISA::Inst_DS::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, ConstVecOperandU32 &addr)
Definition: op_encodings.hh:495
Gcn3ISA::Inst_DS__DS_MIN_RTN_I32::~Inst_DS__DS_MIN_RTN_I32
~Inst_DS__DS_MIN_RTN_I32()
Definition: instructions.cc:31724
Gcn3ISA::Inst_VOP3__V_CVT_PK_U8_F32::Inst_VOP3__V_CVT_PK_U8_F32
Inst_VOP3__V_CVT_PK_U8_F32(InFmt_VOP3 *)
Definition: instructions.cc:28916
Gcn3ISA::Inst_VOP3__V_CMP_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16177
Wavefront::outstandingReqsWrLm
int outstandingReqsWrLm
Definition: wavefront.hh:167
Gcn3ISA::Inst_VOPC__V_CMP_NE_U16::~Inst_VOPC__V_CMP_NE_U16
~Inst_VOPC__V_CMP_NE_U16()
Definition: instructions.cc:12925
Gcn3ISA::Inst_VOP3__V_ADD_F32::~Inst_VOP3__V_ADD_F32
~Inst_VOP3__V_ADD_F32()
Definition: instructions.cc:23154
Gcn3ISA::Inst_SOP2__S_OR_B64::Inst_SOP2__S_OR_B64
Inst_SOP2__S_OR_B64(InFmt_SOP2 *)
Definition: instructions.cc:505
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2204
Gcn3ISA::Inst_VOPC__V_CMP_NE_I64::Inst_VOPC__V_CMP_NE_I64
Inst_VOPC__V_CMP_NE_I64(InFmt_VOPC *)
Definition: instructions.cc:14617
Gcn3ISA::Inst_VOP1__V_FFBH_I32::Inst_VOP1__V_FFBH_I32
Inst_VOP1__V_FFBH_I32(InFmt_VOP1 *)
Definition: instructions.cc:8753
Gcn3ISA::Inst_DS__DS_READ_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33493
Gcn3ISA::Inst_SOP1__S_NOT_B64::~Inst_SOP1__S_NOT_B64
~Inst_SOP1__S_NOT_B64()
Definition: instructions.cc:2008
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U64::Inst_VOP3__V_CMPX_GE_U64
Inst_VOP3__V_CMPX_GE_U64(InFmt_VOP3 *)
Definition: instructions.cc:23020
Gcn3ISA::Inst_VOP1__V_EXP_F32::~Inst_VOP1__V_EXP_F32
~Inst_VOP1__V_EXP_F32()
Definition: instructions.cc:8275
Gcn3ISA::Inst_VOP2__V_ADD_F32::~Inst_VOP2__V_ADD_F32
~Inst_VOP2__V_ADD_F32()
Definition: instructions.cc:5458
Gcn3ISA::Inst_SOP2__S_ORN2_B64::Inst_SOP2__S_ORN2_B64
Inst_SOP2__S_ORN2_B64(InFmt_SOP2 *)
Definition: instructions.cc:685
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2()
Definition: instructions.cc:36976
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F64::~Inst_VOP3__V_CMP_NGE_F64
~Inst_VOP3__V_CMP_NGE_F64()
Definition: instructions.cc:18183
Gcn3ISA::Inst_VOPC__V_CMPX_F_F16::Inst_VOPC__V_CMPX_F_F16
Inst_VOPC__V_CMPX_F_F16(InFmt_VOPC *)
Definition: instructions.cc:10182
Gcn3ISA::Inst_SOP2__S_BFM_B64::~Inst_SOP2__S_BFM_B64
~Inst_SOP2__S_BFM_B64()
Definition: instructions.cc:1112
Gcn3ISA::Inst_VOP3__V_MBCNT_HI_U32_B32::~Inst_VOP3__V_MBCNT_HI_U32_B32
~Inst_VOP3__V_MBCNT_HI_U32_B32()
Definition: instructions.cc:30651
Gcn3ISA::Inst_VOP2__V_MUL_I32_I24::~Inst_VOP2__V_MUL_I32_I24
~Inst_VOP2__V_MUL_I32_I24()
Definition: instructions.cc:5688
Gcn3ISA::Inst_VOP3__V_CMP_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16690
Gcn3ISA::Inst_SOPP__S_ENDPGM::Inst_SOPP__S_ENDPGM
Inst_SOPP__S_ENDPGM(InFmt_SOPP *)
Definition: instructions.cc:3725
Gcn3ISA::Inst_VOP1__V_CVT_F16_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8987
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::Inst_FLAT__FLAT_LOAD_DWORDX2
Inst_FLAT__FLAT_LOAD_DWORDX2(InFmt_FLAT *)
Definition: instructions.cc:39661
Gcn3ISA::Inst_VOP3__V_CVT_OFF_F32_I4::~Inst_VOP3__V_CVT_OFF_F32_I4
~Inst_VOP3__V_CVT_OFF_F32_I4()
Definition: instructions.cc:25647
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::~Inst_SMEM__S_LOAD_DWORD
~Inst_SMEM__S_LOAD_DWORD()
Definition: instructions.cc:4439
Gcn3ISA::Inst_VOP3__V_ASHRREV_I16::~Inst_VOP3__V_ASHRREV_I16
~Inst_VOP3__V_ASHRREV_I16()
Definition: instructions.cc:24901
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35655
Gcn3ISA::Inst_SOPP__S_ENDPGM::~Inst_SOPP__S_ENDPGM
~Inst_SOPP__S_ENDPGM()
Definition: instructions.cc:3731
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33854
Gcn3ISA::Inst_VOPC__V_CMP_LT_F64::~Inst_VOPC__V_CMP_LT_F64
~Inst_VOPC__V_CMP_LT_F64()
Definition: instructions.cc:11535
Gcn3ISA::Inst_VOP3__V_CMPX_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20289
Gcn3ISA::Inst_VOP1__V_FRACT_F32::~Inst_VOP1__V_FRACT_F32
~Inst_VOP1__V_FRACT_F32()
Definition: instructions.cc:8124
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::Inst_MIMG__IMAGE_LOAD_PCK
Inst_MIMG__IMAGE_LOAD_PCK(InFmt_MIMG *)
Definition: instructions.cc:37694
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12838
Gcn3ISA::Inst_DS__DS_WRITE_B96::~Inst_DS__DS_WRITE_B96
~Inst_DS__DS_WRITE_B96()
Definition: instructions.cc:34432
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35383
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38498
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37743
Gcn3ISA::Inst_VOP3__V_SAD_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28738
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F64::Inst_DS__DS_MAX_SRC2_F64
Inst_DS__DS_MAX_SRC2_F64(InFmt_DS *)
Definition: instructions.cc:34405
Gcn3ISA::Inst_VOP3__V_CVT_F32_U32::~Inst_VOP3__V_CVT_F32_U32
~Inst_VOP3__V_CVT_F32_U32()
Definition: instructions.cc:25363
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22676
Gcn3ISA::Inst_VOP2__V_MAX_U32::~Inst_VOP2__V_MAX_U32
~Inst_VOP2__V_MAX_U32()
Definition: instructions.cc:6021
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F64::Inst_VOP3__V_CMP_NGE_F64
Inst_VOP3__V_CMP_NGE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18175
Gcn3ISA::Inst_DS__DS_OR_RTN_B32::~Inst_DS__DS_OR_RTN_B32
~Inst_DS__DS_OR_RTN_B32()
Definition: instructions.cc:31814
Gcn3ISA::Inst_VOP3__V_CMP_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18024
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW(InFmt_MTBUF *)
Definition: instructions.cc:37338
Gcn3ISA::Inst_VOP3__V_RNDNE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26083
Gcn3ISA::Inst_VOP3__V_MUL_LO_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24777
Gcn3ISA::Inst_VOPC__V_CMPX_T_U32::Inst_VOPC__V_CMPX_T_U32
Inst_VOPC__V_CMPX_T_U32(InFmt_VOPC *)
Definition: instructions.cc:14440
Gcn3ISA::Inst_VOPC__V_CMPX_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14955
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::~Inst_MUBUF__BUFFER_LOAD_FORMAT_X
~Inst_MUBUF__BUFFER_LOAD_FORMAT_X()
Definition: instructions.cc:34508
Gcn3ISA::Inst_VOP3__V_CMP_F_I64::Inst_VOP3__V_CMP_F_I64
Inst_VOP3__V_CMP_F_I64(InFmt_VOP3 *)
Definition: instructions.cc:21855
Gcn3ISA::Inst_VOP1__V_RNDNE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8221
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D_O::~Inst_MIMG__IMAGE_SAMPLE_C_D_O
~Inst_MIMG__IMAGE_SAMPLE_C_D_O()
Definition: instructions.cc:38725
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35283
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::Inst_MUBUF__BUFFER_STORE_DWORDX4
Inst_MUBUF__BUFFER_STORE_DWORDX4(InFmt_MUBUF *)
Definition: instructions.cc:36185
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F32::Inst_VOP3__V_CMPX_NLT_F32
Inst_VOP3__V_CMPX_NLT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17644
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::Inst_SMEM__S_STORE_DWORDX4
Inst_SMEM__S_STORE_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:5139
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SUB::~Inst_MIMG__IMAGE_ATOMIC_SUB
~Inst_MIMG__IMAGE_ATOMIC_SUB()
Definition: instructions.cc:38040
RegisterManager::freeRegisters
void freeRegisters(Wavefront *w)
Definition: register_manager.cc:128
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_ADD::Inst_MIMG__IMAGE_ATOMIC_ADD
Inst_MIMG__IMAGE_ATOMIC_ADD(InFmt_MIMG *)
Definition: instructions.cc:38001
Gcn3ISA::Inst_DS__DS_WRITE_B64::Inst_DS__DS_WRITE_B64
Inst_DS__DS_WRITE_B64(InFmt_DS *)
Definition: instructions.cc:32882
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE3::Inst_VOP3__V_CVT_F32_UBYTE3
Inst_VOP3__V_CVT_F32_UBYTE3(InFmt_VOP3 *)
Definition: instructions.cc:25864
Gcn3ISA::Inst_VOPC__V_CMP_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11637
Gcn3ISA::Inst_VOPC__V_CMPX_F_U16::Inst_VOPC__V_CMPX_F_U16
Inst_VOPC__V_CMPX_F_U16(InFmt_VOPC *)
Definition: instructions.cc:13253
Gcn3ISA::Inst_SOP2__S_ASHR_I32::~Inst_SOP2__S_ASHR_I32
~Inst_SOP2__S_ASHR_I32()
Definition: instructions.cc:1023
Gcn3ISA::Inst_VOPC__V_CMPX_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14206
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23561
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37499
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U64::~Inst_VOP3__V_CMP_EQ_U64
~Inst_VOP3__V_CMP_EQ_U64()
Definition: instructions.cc:22234
Gcn3ISA::Inst_SOP2__S_MAX_U32::~Inst_SOP2__S_MAX_U32
~Inst_SOP2__S_MAX_U32()
Definition: instructions.cc:335
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U32::Inst_DS__DS_MIN_SRC2_U32
Inst_DS__DS_MIN_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33821
Gcn3ISA::Inst_SOP2__S_NOR_B32::~Inst_SOP2__S_NOR_B32
~Inst_SOP2__S_NOR_B32()
Definition: instructions.cc:781
Wavefront::rdGmReqsInPipe
int rdGmReqsInPipe
Definition: wavefront.hh:177
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U32::~Inst_VOPC__V_CMPX_NE_U32
~Inst_VOPC__V_CMPX_NE_U32()
Definition: instructions.cc:14382
Gcn3ISA::Inst_SOPC__S_CMP_LG_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3391
Gcn3ISA::Inst_SOP2__S_BFE_U32::~Inst_SOP2__S_BFE_U32
~Inst_SOP2__S_BFE_U32()
Definition: instructions.cc:1165
Gcn3ISA::Inst_VOP1__V_RCP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8431
Gcn3ISA::VecOperand::read
void read() override
read from the vrf.
Definition: operand.hh:147
Gcn3ISA::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:37404
Gcn3ISA::Inst_DS__DS_GWS_BARRIER::Inst_DS__DS_GWS_BARRIER
Inst_DS__DS_GWS_BARRIER(InFmt_DS *)
Definition: instructions.cc:34074
Gcn3ISA::Inst_VOP3__V_TRUNC_F32::Inst_VOP3__V_TRUNC_F32
Inst_VOP3__V_TRUNC_F32(InFmt_VOP3 *)
Definition: instructions.cc:26185
Gcn3ISA::Inst_VOP3__V_FFBH_U32::~Inst_VOP3__V_FFBH_U32
~Inst_VOP3__V_FFBH_U32()
Definition: instructions.cc:26855
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCZ::~Inst_SOPP__S_CBRANCH_VCCZ
~Inst_SOPP__S_CBRANCH_VCCZ()
Definition: instructions.cc:3970
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39479
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37773
Gcn3ISA::Inst_VOP3__V_CMP_LG_F32::Inst_VOP3__V_CMP_LG_F32
Inst_VOP3__V_CMP_LG_F32(InFmt_VOP3 *)
Definition: instructions.cc:16808
Gcn3ISA::VecElemU64
uint64_t VecElemU64
Definition: registers.hh:169
Gcn3ISA::Inst_MUBUF::extData
InFmt_MUBUF_1 extData
Definition: op_encodings.hh:715
Gcn3ISA::Inst_VOP3__V_CMPX_U_F32::Inst_VOP3__V_CMPX_U_F32
Inst_VOP3__V_CMPX_U_F32(InFmt_VOP3 *)
Definition: instructions.cc:17437
Gcn3ISA::Inst_SOPK__S_CMPK_LT_U32::Inst_SOPK__S_CMPK_LT_U32
Inst_SOPK__S_CMPK_LT_U32(InFmt_SOPK *)
Definition: instructions.cc:1658
Gcn3ISA::Inst_SMEM__S_MEMREALTIME::Inst_SMEM__S_MEMREALTIME
Inst_SMEM__S_MEMREALTIME(InFmt_SMEM *)
Definition: instructions.cc:5368
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::~Inst_SMEM__S_BUFFER_STORE_DWORDX4
~Inst_SMEM__S_BUFFER_STORE_DWORDX4()
Definition: instructions.cc:5266
Gcn3ISA::Inst_DS__DS_MAX_RTN_F32::Inst_DS__DS_MAX_RTN_F32
Inst_DS__DS_MAX_RTN_F32(InFmt_DS *)
Definition: instructions.cc:31977
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B64::Inst_DS__DS_WRITE_SRC2_B64
Inst_DS__DS_WRITE_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:34363
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I16::Inst_VOPC__V_CMP_EQ_I16
Inst_VOPC__V_CMP_EQ_I16(InFmt_VOPC *)
Definition: instructions.cc:12588
Gcn3ISA::Inst_DS__DS_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31486
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::~Inst_MUBUF__BUFFER_LOAD_USHORT
~Inst_MUBUF__BUFFER_LOAD_USHORT()
Definition: instructions.cc:35146
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37662
Gcn3ISA::Inst_DS__DS_MIN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32787
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40430
Gcn3ISA::Inst_SOP2__S_MUL_I32::Inst_SOP2__S_MUL_I32
Inst_SOP2__S_MUL_I32(InFmt_SOP2 *)
Definition: instructions.cc:1133
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11151
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37392
Gcn3ISA::Inst_VOP3__V_SQRT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26684
Gcn3ISA::Inst_VOP3__V_MIN_U16::~Inst_VOP3__V_MIN_U16
~Inst_VOP3__V_MIN_U16()
Definition: instructions.cc:25073
Gcn3ISA::Inst_VOP3__V_RNDNE_F16::~Inst_VOP3__V_RNDNE_F16
~Inst_VOP3__V_RNDNE_F16()
Definition: instructions.cc:27467
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I32::~Inst_VOP3__V_CMPX_GE_I32
~Inst_VOP3__V_CMPX_GE_I32()
Definition: instructions.cc:21477
Gcn3ISA::Inst_VOP3__V_MOV_FED_B32::~Inst_VOP3__V_MOV_FED_B32
~Inst_VOP3__V_MOV_FED_B32()
Definition: instructions.cc:25514
Gcn3ISA::Inst_VOP1__V_CVT_F64_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7784
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35440
Gcn3ISA::Inst_VOP3__V_CMP_F_F16::Inst_VOP3__V_CMP_F_F16
Inst_VOP3__V_CMP_F_F16(InFmt_VOP3 *)
Definition: instructions.cc:16014
Gcn3ISA::Inst_VOP2__V_LSHRREV_B16::~Inst_VOP2__V_LSHRREV_B16
~Inst_VOP2__V_LSHRREV_B16()
Definition: instructions.cc:7035
Gcn3ISA::Inst_VOP3__V_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26802
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41010
Gcn3ISA::Inst_SOPC__S_CMP_LG_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3235
Gcn3ISA::Inst_DS__DS_RSUB_U64::Inst_DS__DS_RSUB_U64
Inst_DS__DS_RSUB_U64(InFmt_DS *)
Definition: instructions.cc:32682
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B32::~Inst_DS__DS_WRITE_SRC2_B32
~Inst_DS__DS_WRITE_SRC2_B32()
Definition: instructions.cc:33923
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F32::Inst_VOP3__V_CMPX_GE_F32
Inst_VOP3__V_CMPX_GE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17367
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
Inst_MUBUF__BUFFER_LOAD_FORMAT_XY(InFmt_MUBUF *)
Definition: instructions.cc:34530
Gcn3ISA::Inst_DS__DS_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30981
Gcn3ISA::Inst_VOP3__V_MQSAD_PK_U16_U8::Inst_VOP3__V_MQSAD_PK_U16_U8
Inst_VOP3__V_MQSAD_PK_U16_U8(InFmt_VOP3 *)
Definition: instructions.cc:29444
Gcn3ISA::Inst_VOP3__V_CMP_LG_F32::~Inst_VOP3__V_CMP_LG_F32
~Inst_VOP3__V_CMP_LG_F32()
Definition: instructions.cc:16816
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::~Inst_SMEM__S_BUFFER_LOAD_DWORDX2
~Inst_SMEM__S_BUFFER_LOAD_DWORDX2()
Definition: instructions.cc:4790
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14356
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36576
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15977
Gcn3ISA::Inst_SOP2__S_XNOR_B64::Inst_SOP2__S_XNOR_B64
Inst_SOP2__S_XNOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:865
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U16::Inst_VOP3__V_CMPX_GT_U16
Inst_VOP3__V_CMPX_GT_U16(InFmt_VOP3 *)
Definition: instructions.cc:20461
NAN
#define NAN
Define Not a number.
Definition: text.cc:74
Gcn3ISA::Inst_VOP3__V_LDEXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25174
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F16::~Inst_VOPC__V_CMPX_GE_F16
~Inst_VOPC__V_CMPX_GE_F16()
Definition: instructions.cc:10297
Gcn3ISA::Inst_VOP3__V_CVT_U32_F64::Inst_VOP3__V_CVT_U32_F64
Inst_VOP3__V_CVT_U32_F64(InFmt_VOP3 *)
Definition: instructions.cc:25902
Gcn3ISA::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:7661
Gcn3ISA::Inst_VOP2__V_ADD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6752
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F64::Inst_VOP3__V_CMPX_LE_F64
Inst_VOP3__V_CMPX_LE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18675
Gcn3ISA::Inst_VOP3__V_LOG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27341
Gcn3ISA::Inst_DS__DS_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31108
Gcn3ISA::Inst_VOP3__V_MAX_U32::~Inst_VOP3__V_MAX_U32
~Inst_VOP3__V_MAX_U32()
Definition: instructions.cc:23916
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8796
Gcn3ISA::Inst_VOP1__V_BFREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8676
Gcn3ISA::Inst_VOP3__V_MQSAD_U32_U8::~Inst_VOP3__V_MQSAD_U32_U8
~Inst_VOP3__V_MQSAD_U32_U8()
Definition: instructions.cc:29469
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2()
Definition: instructions.cc:36868
Gcn3ISA::Inst_DS__DS_OR_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33892
Gcn3ISA::Inst_SOP2__S_ABSDIFF_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1327
Gcn3ISA::Inst_VOPC__V_CMP_LE_I64::Inst_VOPC__V_CMP_LE_I64
Inst_VOPC__V_CMP_LE_I64(InFmt_VOPC *)
Definition: instructions.cc:14555
Gcn3ISA::Inst_VOP1__V_MOV_B32::~Inst_VOP1__V_MOV_B32
~Inst_VOP1__V_MOV_B32()
Definition: instructions.cc:7294
Gcn3ISA::Inst_VOP3__V_SUB_F16::Inst_VOP3__V_SUB_F16
Inst_VOP3__V_SUB_F16(InFmt_VOP3 *)
Definition: instructions.cc:24569
Gcn3ISA::Inst_DS__DS_INC_SRC2_U32::Inst_DS__DS_INC_SRC2_U32
Inst_DS__DS_INC_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33744
Gcn3ISA::Inst_SOP2__S_BFE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1174
Gcn3ISA::Inst_VOP3__V_MSAD_U8::~Inst_VOP3__V_MSAD_U8
~Inst_VOP3__V_MSAD_U8()
Definition: instructions.cc:29415
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U64::Inst_VOPC__V_CMP_EQ_U64
Inst_VOPC__V_CMP_EQ_U64(InFmt_VOPC *)
Definition: instructions.cc:14762
Gcn3ISA::Inst_VOP3__V_CVT_PKNORM_I16_F32::Inst_VOP3__V_CVT_PKNORM_I16_F32
Inst_VOP3__V_CVT_PKNORM_I16_F32(InFmt_VOP3 *)
Definition: instructions.cc:30878
Gcn3ISA::Inst_SOP2__S_MIN_I32::~Inst_SOP2__S_MIN_I32
~Inst_SOP2__S_MIN_I32()
Definition: instructions.cc:245
Gcn3ISA::Inst_VOP3__V_CMPX_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21554
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::~Inst_MIMG__IMAGE_GATHER4_C_LZ
~Inst_MIMG__IMAGE_GATHER4_C_LZ()
Definition: instructions.cc:39008
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10177
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11355
Gcn3ISA::Inst_VOP1__V_NOP::Inst_VOP1__V_NOP
Inst_VOP1__V_NOP(InFmt_VOP1 *)
Definition: instructions.cc:7271
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F32::Inst_VOP3__V_CMP_NGE_F32
Inst_VOP3__V_CMP_NGE_F32(InFmt_VOP3 *)
Definition: instructions.cc:16940
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE2::Inst_VOP3__V_CVT_F32_UBYTE2
Inst_VOP3__V_CVT_F32_UBYTE2(InFmt_VOP3 *)
Definition: instructions.cc:25826
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C::~Inst_MIMG__IMAGE_SAMPLE_C
~Inst_MIMG__IMAGE_SAMPLE_C()
Definition: instructions.cc:38427
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34514
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_U32::~Inst_SOPK__S_CMPK_EQ_U32
~Inst_SOPK__S_CMPK_EQ_U32()
Definition: instructions.cc:1564
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F32::~Inst_VOPC__V_CMP_CLASS_F32
~Inst_VOPC__V_CMP_CLASS_F32()
Definition: instructions.cc:9388
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I16::Inst_VOP3__V_CMP_EQ_I16
Inst_VOP3__V_CMP_EQ_I16(InFmt_VOP3 *)
Definition: instructions.cc:19450
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F16::Inst_VOPC__V_CMPX_LE_F16
Inst_VOPC__V_CMPX_LE_F16(InFmt_VOPC *)
Definition: instructions.cc:10236
Gcn3ISA::Inst_VOP1__V_CVT_F32_F16::~Inst_VOP1__V_CVT_F32_F16
~Inst_VOP1__V_CVT_F32_F16()
Definition: instructions.cc:7650
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9889
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B::Inst_MIMG__IMAGE_SAMPLE_C_B
Inst_MIMG__IMAGE_SAMPLE_C_B(InFmt_MIMG *)
Definition: instructions.cc:38503
Gcn3ISA::Inst_DS__DS_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31504
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2(InFmt_MUBUF *)
Definition: instructions.cc:36936
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34604
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34853
Gcn3ISA::Inst_VOP3__V_MAD_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27622
Gcn3ISA::InFmt_SMEM::SDATA
unsigned int SDATA
Definition: gpu_decoder.hh:1479
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37565
Gcn3ISA::Inst_VOP3__V_MAD_I64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29543
Gcn3ISA::Inst_SOP2__S_BFE_I32::~Inst_SOP2__S_BFE_I32
~Inst_SOP2__S_BFE_I32()
Definition: instructions.cc:1198
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::Inst_FLAT__FLAT_LOAD_SBYTE
Inst_FLAT__FLAT_LOAD_SBYTE(InFmt_FLAT *)
Definition: instructions.cc:39460
Gcn3ISA::REG_PI
@ REG_PI
Definition: registers.hh:123
Gcn3ISA::Inst_VOP2__V_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5965
Gcn3ISA::Inst_VOP3__V_CMPX_F_I16::Inst_VOP3__V_CMPX_F_I16
Inst_VOP3__V_CMPX_F_I16(InFmt_VOP3 *)
Definition: instructions.cc:19990
Gcn3ISA::Inst_FLAT::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, ConstVecOperandU64 &addr)
Definition: op_encodings.hh:820
Gcn3ISA::Inst_VOP2__V_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6195
Gcn3ISA::Inst_VOP2__V_LSHLREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7010
Gcn3ISA::Inst_SOPK::instData
InFmt_SOPK instData
Definition: op_encodings.hh:112
Gcn3ISA::Inst_SOP2__S_XNOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:878
Gcn3ISA::Inst_SMEM__S_MEMTIME::Inst_SMEM__S_MEMTIME
Inst_SMEM__S_MEMTIME(InFmt_SMEM *)
Definition: instructions.cc:5352
Gcn3ISA::Inst_SOP1__S_BREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2123
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14388
Gcn3ISA::Inst_DS__DS_READ2_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32141
Gcn3ISA::Inst_DS__DS_INC_SRC2_U64::~Inst_DS__DS_INC_SRC2_U64
~Inst_DS__DS_INC_SRC2_U64()
Definition: instructions.cc:34196
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL::Inst_MIMG__IMAGE_GATHER4_CL
Inst_MIMG__IMAGE_GATHER4_CL(InFmt_MIMG *)
Definition: instructions.cc:38836
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41824
Gcn3ISA::InFmt_VOP_DPP::SRC0_NEG
unsigned int SRC0_NEG
Definition: gpu_decoder.hh:1587
Gcn3ISA::Inst_SOPP__S_TRAP::Inst_SOPP__S_TRAP
Inst_SOPP__S_TRAP(InFmt_SOPP *)
Definition: instructions.cc:4229
Gcn3ISA::Inst_VOP3__V_SUB_F32::Inst_VOP3__V_SUB_F32
Inst_VOP3__V_SUB_F32(InFmt_VOP3 *)
Definition: instructions.cc:23201
Gcn3ISA::Inst_VOP3__V_CMP_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19589
Gcn3ISA::Inst_VOP2__V_ADDC_U32::~Inst_VOP2__V_ADDC_U32
~Inst_VOP2__V_ADDC_U32()
Definition: instructions.cc:6616
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::~Inst_SMEM__S_STORE_DWORDX4
~Inst_SMEM__S_STORE_DWORDX4()
Definition: instructions.cc:5146
Wavefront::dispatchId
uint32_t dispatchId
Definition: wavefront.hh:161
Gcn3ISA::Inst_SMEM__S_ATC_PROBE::Inst_SMEM__S_ATC_PROBE
Inst_SMEM__S_ATC_PROBE(InFmt_SMEM *)
Definition: instructions.cc:5384
Gcn3ISA::Inst_VOP1__V_TRUNC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8161
Gcn3ISA::VecElemF32
float VecElemF32
Definition: registers.hh:168
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F64::~Inst_VOPC__V_CMP_NGT_F64
~Inst_VOPC__V_CMP_NGT_F64()
Definition: instructions.cc:11859
Gcn3ISA::Inst_VOPC__V_CMP_T_I32::~Inst_VOPC__V_CMP_T_I32
~Inst_VOPC__V_CMP_T_I32()
Definition: instructions.cc:13717
Gcn3ISA::Inst_VOP1__V_CVT_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7638
Gcn3ISA::Inst_DS__DS_APPEND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34114
Gcn3ISA::Inst_VOP1__V_RCP_F32::Inst_VOP1__V_RCP_F32
Inst_VOP1__V_RCP_F32(InFmt_VOP1 *)
Definition: instructions.cc:8328
Gcn3ISA::Inst_DS__DS_INC_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34205
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15632
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20431
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U64::Inst_VOPC__V_CMPX_EQ_U64
Inst_VOPC__V_CMPX_EQ_U64(InFmt_VOPC *)
Definition: instructions.cc:15248
Gcn3ISA::ScalarOperand::read
void read() override
Definition: operand.hh:413
Gcn3ISA::Inst_VOPC__V_CMPX_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12283
Gcn3ISA::InFmt_MIMG
Definition: gpu_decoder.hh:1411
Gcn3ISA::Inst_VOPC__V_CMP_LE_F64::~Inst_VOPC__V_CMP_LE_F64
~Inst_VOPC__V_CMP_LE_F64()
Definition: instructions.cc:11599
Gcn3ISA::Inst_VOP3__V_FLOOR_F64::~Inst_VOP3__V_FLOOR_F64
~Inst_VOP3__V_FLOOR_F64()
Definition: instructions.cc:26115
Gcn3ISA::Inst_VOPC__V_CMPX_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15420
Gcn3ISA::Inst_VOPC__V_CMP_LT_U16::~Inst_VOPC__V_CMP_LT_U16
~Inst_VOPC__V_CMP_LT_U16()
Definition: instructions.cc:12801
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECNZ::Inst_SOPP__S_CBRANCH_EXECNZ
Inst_SOPP__S_CBRANCH_EXECNZ(InFmt_SOPP *)
Definition: instructions.cc:4047
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ()
Definition: instructions.cc:37580
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D::Inst_MIMG__IMAGE_SAMPLE_C_D
Inst_MIMG__IMAGE_SAMPLE_C_D(InFmt_MIMG *)
Definition: instructions.cc:38454
Gcn3ISA::Inst_VOPC__V_CMP_LT_I16::Inst_VOPC__V_CMP_LT_I16
Inst_VOPC__V_CMP_LT_I16(InFmt_VOPC *)
Definition: instructions.cc:12557
Gcn3ISA::Inst_VOP3__V_CVT_F16_F32::Inst_VOP3__V_CVT_F16_F32
Inst_VOP3__V_CVT_F16_F32(InFmt_VOP3 *)
Definition: instructions.cc:25526
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F16::~Inst_VOPC__V_CMP_NGT_F16
~Inst_VOPC__V_CMP_NGT_F16()
Definition: instructions.cc:10099
Gcn3ISA::Inst_VOPC__V_CMP_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12569
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_DEC::~Inst_MIMG__IMAGE_ATOMIC_DEC
~Inst_MIMG__IMAGE_ATOMIC_DEC()
Definition: instructions.cc:38278
Gcn3ISA::Inst_DS__DS_AND_SRC2_B64::Inst_DS__DS_AND_SRC2_B64
Inst_DS__DS_AND_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:34306
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19311
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14110
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F16::~Inst_VOP3__V_INTERP_P2_F16
~Inst_VOP3__V_INTERP_P2_F16()
Definition: instructions.cc:29931
Gcn3ISA::Inst_DS__DS_MIN_U64::~Inst_DS__DS_MIN_U64
~Inst_DS__DS_MIN_U64()
Definition: instructions.cc:32779
Gcn3ISA::Inst_VOP3__V_CMP_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19394
Gcn3ISA::Inst_DS__DS_MIN_F64::~Inst_DS__DS_MIN_F64
~Inst_DS__DS_MIN_F64()
Definition: instructions.cc:33074
Gcn3ISA::Inst_VOP3__V_CMP_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21213
Gcn3ISA::Inst_SOP2__S_LSHR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1000
Gcn3ISA::Inst_VOPC__V_CMP_F_I32::Inst_VOPC__V_CMP_F_I32
Inst_VOPC__V_CMP_F_I32(InFmt_VOPC *)
Definition: instructions.cc:13499
Gcn3ISA::Inst_SMEM__S_DCACHE_WB::Inst_SMEM__S_DCACHE_WB
Inst_SMEM__S_DCACHE_WB(InFmt_SMEM *)
Definition: instructions.cc:5304
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I32::~Inst_VOPC__V_CMPX_LE_I32
~Inst_VOPC__V_CMPX_LE_I32()
Definition: instructions.cc:14072
Gcn3ISA::Inst_SOPK__S_CMPK_LG_I32::~Inst_SOPK__S_CMPK_LG_I32
~Inst_SOPK__S_CMPK_LG_I32()
Definition: instructions.cc:1439
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X()
Definition: instructions.cc:34750
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B64::~Inst_DS__DS_WRITE_SRC2_B64
~Inst_DS__DS_WRITE_SRC2_B64()
Definition: instructions.cc:34370
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F16::~Inst_VOPC__V_CMPX_LE_F16
~Inst_VOPC__V_CMPX_LE_F16()
Definition: instructions.cc:10243
Gcn3ISA::Inst_VOP2__V_LSHRREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7042
Gcn3ISA::Inst_VOP3__V_CMP_GT_F32::Inst_VOP3__V_CMP_GT_F32
Inst_VOP3__V_CMP_GT_F32(InFmt_VOP3 *)
Definition: instructions.cc:16775
Gcn3ISA::InFmt_VOP3_SDST_ENC
Definition: gpu_decoder.hh:1567
Gcn3ISA::Inst_VOP3__V_MSAD_U8::Inst_VOP3__V_MSAD_U8
Inst_VOP3__V_MSAD_U8(InFmt_VOP3 *)
Definition: instructions.cc:29409
Gcn3ISA::Inst_VOP1__V_TRUNC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9244
Gcn3ISA::Inst_SOP2__S_LSHL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:908
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I32::~Inst_DS__DS_MAX_SRC2_I32
~Inst_DS__DS_MAX_SRC2_I32()
Definition: instructions.cc:33807
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::Inst_SMEM__S_BUFFER_LOAD_DWORD
Inst_SMEM__S_BUFFER_LOAD_DWORD(InFmt_SMEM *)
Definition: instructions.cc:4723
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F64::~Inst_VOP3__V_CMPX_GE_F64
~Inst_VOP3__V_CMPX_GE_F64()
Definition: instructions.cc:18852
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37808
Gcn3ISA::Inst_VOP3__V_RCP_F32::~Inst_VOP3__V_RCP_F32
~Inst_VOP3__V_RCP_F32()
Definition: instructions.cc:26428
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD::Inst_MIMG__IMAGE_SAMPLE_CD
Inst_MIMG__IMAGE_SAMPLE_CD(InFmt_MIMG *)
Definition: instructions.cc:39237
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F32::~Inst_VOP3__V_CMPX_NGE_F32
~Inst_VOP3__V_CMPX_NGE_F32()
Definition: instructions.cc:17481
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F32::~Inst_VOP3__V_CMPX_GT_F32
~Inst_VOP3__V_CMPX_GT_F32()
Definition: instructions.cc:17306
Gcn3ISA::Inst_DS__DS_XOR_B32::Inst_DS__DS_XOR_B32
Inst_DS__DS_XOR_B32(InFmt_DS *)
Definition: instructions.cc:31167
Gcn3ISA::Inst_DS__DS_GWS_SEMA_RELEASE_ALL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34009
Gcn3ISA::Inst_VOP3__V_ALIGNBYTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28250
Gcn3ISA::Inst_SOPP__S_SETHALT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4161
Gcn3ISA::Inst_VOP3__V_CVT_RPI_I32_F32::Inst_VOP3__V_CVT_RPI_I32_F32
Inst_VOP3__V_CVT_RPI_I32_F32(InFmt_VOP3 *)
Definition: instructions.cc:25562
Gcn3ISA::Inst_SOP2__S_CBRANCH_G_FORK::~Inst_SOP2__S_CBRANCH_G_FORK
~Inst_SOP2__S_CBRANCH_G_FORK()
Definition: instructions.cc:1299
Gcn3ISA::Inst_VOP3__V_MED3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28692
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40436
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37679
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U32::~Inst_VOP3__V_CMPX_NE_U32
~Inst_VOP3__V_CMPX_NE_U32()
Definition: instructions.cc:21748
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U32::Inst_VOP3__V_CMPX_GE_U32
Inst_VOP3__V_CMPX_GE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21784
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37532
Gcn3ISA::Inst_DS__DS_READ_U16::~Inst_DS__DS_READ_U16
~Inst_DS__DS_READ_U16()
Definition: instructions.cc:32332
Gcn3ISA::Inst_SOPP__S_TRAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4240
Gcn3ISA::Inst_VOP3__V_MBCNT_HI_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30660
Gcn3ISA::InFmt_VOP2::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1543
Gcn3ISA::Inst_VOP3__V_RNDNE_F32::~Inst_VOP3__V_RNDNE_F32
~Inst_VOP3__V_RNDNE_F32()
Definition: instructions.cc:26268
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F32::~Inst_VOP3__V_CMPX_TRU_F32
~Inst_VOP3__V_CMPX_TRU_F32()
Definition: instructions.cc:17686
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F16::~Inst_VOP3__V_CMP_TRU_F16
~Inst_VOP3__V_CMP_TRU_F16()
Definition: instructions.cc:16304
Gcn3ISA::Inst_VOP1__V_EXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9146
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE0::Inst_VOP3__V_CVT_F32_UBYTE0
Inst_VOP3__V_CVT_F32_UBYTE0(InFmt_VOP3 *)
Definition: instructions.cc:25750
Gcn3ISA::Inst_VOP1__V_LOG_F32::~Inst_VOP1__V_LOG_F32
~Inst_VOP1__V_LOG_F32()
Definition: instructions.cc:8305
Gcn3ISA::Inst_SOP1__S_WQM_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2072
Gcn3ISA::Inst_VOP2__V_SUB_F16::Inst_VOP2__V_SUB_F16
Inst_VOP2__V_SUB_F16(InFmt_VOP2 *)
Definition: instructions.cc:6757
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5076
Gcn3ISA::Inst_VOP3__V_TRUNC_F64::Inst_VOP3__V_TRUNC_F64
Inst_VOP3__V_TRUNC_F64(InFmt_VOP3 *)
Definition: instructions.cc:25994
Gcn3ISA::Inst_VOP3__V_SAD_HI_U8::Inst_VOP3__V_SAD_HI_U8
Inst_VOP3__V_SAD_HI_U8(InFmt_VOP3 *)
Definition: instructions.cc:28776
Gcn3ISA::Inst_VOP3__V_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24274
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39915
Gcn3ISA::Inst_VOP2__V_LSHRREV_B32::Inst_VOP2__V_LSHRREV_B32
Inst_VOP2__V_LSHRREV_B32(InFmt_VOP2 *)
Definition: instructions.cc:6046
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31952
Gcn3ISA::Inst_DS__DS_MIN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33083
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F64::~Inst_VOP1__V_FREXP_MANT_F64
~Inst_VOP1__V_FREXP_MANT_F64()
Definition: instructions.cc:8826
Gcn3ISA::Inst_SOPC__S_CMP_GE_U32::~Inst_SOPC__S_CMP_GE_U32
~Inst_SOPC__S_CMP_GE_U32()
Definition: instructions.cc:3437
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U64::~Inst_DS__DS_MAX_SRC2_U64
~Inst_DS__DS_MAX_SRC2_U64()
Definition: instructions.cc:34292
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B::~Inst_MIMG__IMAGE_SAMPLE_C_B
~Inst_MIMG__IMAGE_SAMPLE_C_B()
Definition: instructions.cc:38509
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I64::Inst_VOPC__V_CMP_EQ_I64
Inst_VOPC__V_CMP_EQ_I64(InFmt_VOPC *)
Definition: instructions.cc:14524
Gcn3ISA::Inst_VOPC__V_CMP_F_U16::~Inst_VOPC__V_CMP_F_U16
~Inst_VOPC__V_CMP_F_U16()
Definition: instructions.cc:12775
Gcn3ISA::Inst_VOP3__V_SUB_U16::~Inst_VOP3__V_SUB_U16
~Inst_VOP3__V_SUB_U16()
Definition: instructions.cc:24689
Gcn3ISA::Inst_VOP3__V_CMP_GT_I32::Inst_VOP3__V_CMP_GT_I32
Inst_VOP3__V_CMP_GT_I32(InFmt_VOP3 *)
Definition: instructions.cc:20771
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY()
Definition: instructions.cc:34538
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F64::~Inst_DS__DS_CMPST_RTN_F64
~Inst_DS__DS_CMPST_RTN_F64()
Definition: instructions.cc:33424
Gcn3ISA::Inst_DS__DS_OR_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34339
Gcn3ISA::Inst_DS__DS_WRITE_B8::Inst_DS__DS_WRITE_B8
Inst_DS__DS_WRITE_B8(InFmt_DS *)
Definition: instructions.cc:31509
Gcn3ISA::Inst_VOPC__V_CMP_LE_U32::Inst_VOPC__V_CMP_LE_U32
Inst_VOPC__V_CMP_LE_U32(InFmt_VOPC *)
Definition: instructions.cc:13825
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16461
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40805
Gcn3ISA::Inst_VOP3__V_ADD_F16::~Inst_VOP3__V_ADD_F16
~Inst_VOP3__V_ADD_F16()
Definition: instructions.cc:24558
Gcn3ISA::Inst_VOPC__V_CMPX_T_I32::~Inst_VOPC__V_CMPX_T_I32
~Inst_VOPC__V_CMPX_T_I32()
Definition: instructions.cc:14200
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_I64::~Inst_SOP1__S_FLBIT_I32_I64
~Inst_SOP1__S_FLBIT_I32_I64()
Definition: instructions.cc:2436
Gcn3ISA::Inst_VOP3__V_SAD_U32::Inst_VOP3__V_SAD_U32
Inst_VOP3__V_SAD_U32(InFmt_VOP3 *)
Definition: instructions.cc:28872
Gcn3ISA::Inst_VOP3__V_CVT_PKNORM_U16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30911
Gcn3ISA::Inst_SOPK__S_CMPK_GT_U32::~Inst_SOPK__S_CMPK_GT_U32
~Inst_SOPK__S_CMPK_GT_U32()
Definition: instructions.cc:1614
Gcn3ISA::Inst_VOP3__V_CMP_LT_F16::Inst_VOP3__V_CMP_LT_F16
Inst_VOP3__V_CMP_LT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16032
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F16::~Inst_VOPC__V_CMP_NLT_F16
~Inst_VOPC__V_CMP_NLT_F16()
Definition: instructions.cc:10153
Gcn3ISA::Inst_VOP3__V_LOG_LEGACY_F32::~Inst_VOP3__V_LOG_LEGACY_F32
~Inst_VOP3__V_LOG_LEGACY_F32()
Definition: instructions.cc:27585
Gcn3ISA::Inst_VOP3__V_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23922
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::Inst_FLAT__FLAT_STORE_DWORDX2
Inst_FLAT__FLAT_STORE_DWORDX2(InFmt_FLAT *)
Definition: instructions.cc:40113
Gcn3ISA::Inst_VOPC__V_CMP_GT_I64::~Inst_VOPC__V_CMP_GT_I64
~Inst_VOPC__V_CMP_GT_I64()
Definition: instructions.cc:14592
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F32::~Inst_VOP3__V_CMP_CLASS_F32
~Inst_VOP3__V_CMP_CLASS_F32()
Definition: instructions.cc:15499
Gcn3ISA::Inst_VOP2__V_MUL_U32_U24::~Inst_VOP2__V_MUL_U32_U24
~Inst_VOP2__V_MUL_U32_U24()
Definition: instructions.cc:5756
Gcn3ISA::Inst_DS__DS_MAX_I32::~Inst_DS__DS_MAX_I32
~Inst_DS__DS_MAX_I32()
Definition: instructions.cc:31082
Gcn3ISA::Inst_VOP3__V_COS_F16::Inst_VOP3__V_COS_F16
Inst_VOP3__V_COS_F16(InFmt_VOP3 *)
Definition: instructions.cc:27514
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L::~Inst_MIMG__IMAGE_SAMPLE_L
~Inst_MIMG__IMAGE_SAMPLE_L()
Definition: instructions.cc:38362
Gcn3ISA::Inst_VOP1__V_CVT_I16_F16::~Inst_VOP1__V_CVT_I16_F16
~Inst_VOP1__V_CVT_I16_F16()
Definition: instructions.cc:9035
Gcn3ISA::InFmt_SOPK::SIMM16
unsigned int SIMM16
Definition: gpu_decoder.hh:1514
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39400
Gcn3ISA::Inst_DS__DS_CMPST_B64::Inst_DS__DS_CMPST_B64
Inst_DS__DS_CMPST_B64(InFmt_DS *)
Definition: instructions.cc:33026
Gcn3ISA::Inst_SOPC__S_CMP_LT_I32::~Inst_SOPC__S_CMP_LT_I32
~Inst_SOPC__S_CMP_LT_I32()
Definition: instructions.cc:3307
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX::~Inst_FLAT__FLAT_ATOMIC_UMAX
~Inst_FLAT__FLAT_ATOMIC_UMAX()
Definition: instructions.cc:40847
Gcn3ISA::Inst_SOP1__S_SETPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2640
Gcn3ISA::Inst_SOPC__S_SETVSKIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3628
Gcn3ISA::Inst_VOP3__V_CMP_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19505
Gcn3ISA::Inst_VOPC__V_CMPX_U_F16::Inst_VOPC__V_CMPX_U_F16
Inst_VOPC__V_CMPX_U_F16(InFmt_VOPC *)
Definition: instructions.cc:10327
Gcn3ISA::Inst_SOPK__S_ADDK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1721
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32_I24::~Inst_VOP3__V_MUL_HI_I32_I24
~Inst_VOP3__V_MUL_HI_I32_I24()
Definition: instructions.cc:23555
Gcn3ISA::Inst_VOP3__V_BFE_I32::Inst_VOP3__V_BFE_I32
Inst_VOP3__V_BFE_I32(InFmt_VOP3 *)
Definition: instructions.cc:27929
Gcn3ISA::Inst_SOPC__S_CMP_LG_U32::~Inst_SOPC__S_CMP_LG_U32
~Inst_SOPC__S_CMP_LG_U32()
Definition: instructions.cc:3385
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I32::Inst_VOPC__V_CMPX_LT_I32
Inst_VOPC__V_CMPX_LT_I32(InFmt_VOPC *)
Definition: instructions.cc:14002
Gcn3ISA::Inst_VOP3__V_CMP_GE_U32::Inst_VOP3__V_CMP_GE_U32
Inst_VOP3__V_CMP_GE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21159
Gcn3ISA::Inst_DS__DS_AND_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33285
Gcn3ISA::Inst_VOP1__V_CVT_F64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7980
Gcn3ISA::Inst_SOPP__S_SET_GPR_IDX_OFF::~Inst_SOPP__S_SET_GPR_IDX_OFF
~Inst_SOPP__S_SET_GPR_IDX_OFF()
Definition: instructions.cc:4398
Gcn3ISA::Inst_DS__DS_MAX_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31992
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F32::~Inst_VOPC__V_CMP_NLE_F32
~Inst_VOPC__V_CMP_NLE_F32()
Definition: instructions.cc:10862
Gcn3ISA::Inst_VOP3__V_MAC_F16::Inst_VOP3__V_MAC_F16
Inst_VOP3__V_MAC_F16(InFmt_VOP3 *)
Definition: instructions.cc:24623
Gcn3ISA::Inst_SOP1__S_GETPC_B64::~Inst_SOP1__S_GETPC_B64
~Inst_SOP1__S_GETPC_B64()
Definition: instructions.cc:2609
Gcn3ISA::Inst_DS__DS_AND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32823
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U32::Inst_VOP3__V_CMPX_GT_U32
Inst_VOP3__V_CMPX_GT_U32(InFmt_VOP3 *)
Definition: instructions.cc:21698
Gcn3ISA::Inst_VOPC__V_CMP_T_U64::~Inst_VOPC__V_CMP_T_U64
~Inst_VOPC__V_CMP_T_U64()
Definition: instructions.cc:14923
Gcn3ISA::Inst_SOPK__S_CMPK_LT_I32::Inst_SOPK__S_CMPK_LT_I32
Inst_SOPK__S_CMPK_LT_I32(InFmt_SOPK *)
Definition: instructions.cc:1508
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17278
Gcn3ISA::Inst_VOPC__V_CMP_F_F16::Inst_VOPC__V_CMP_F_F16
Inst_VOPC__V_CMP_F_F16(InFmt_VOPC *)
Definition: instructions.cc:9894
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC0::Inst_SOPP__S_CBRANCH_SCC0
Inst_SOPP__S_CBRANCH_SCC0(InFmt_SOPP *)
Definition: instructions.cc:3905
Gcn3ISA::Inst_VOP3__V_CMP_LT_U64::~Inst_VOP3__V_CMP_LT_U64
~Inst_VOP3__V_CMP_LT_U64()
Definition: instructions.cc:22192
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U32::Inst_VOPC__V_CMPX_NE_U32
Inst_VOPC__V_CMPX_NE_U32(InFmt_VOPC *)
Definition: instructions.cc:14376
Gcn3ISA::Inst_DS__DS_READ_B128::~Inst_DS__DS_READ_B128
~Inst_DS__DS_READ_B128()
Definition: instructions.cc:34488
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37487
Gcn3ISA::Inst_VOP1__V_SQRT_F64::Inst_VOP1__V_SQRT_F64
Inst_VOP1__V_SQRT_F64(InFmt_VOP1 *)
Definition: instructions.cc:8531
Gcn3ISA::Inst_VOP3__V_RCP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27278
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36203
Gcn3ISA::Inst_VOP1__V_RSQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8401
Gcn3ISA::Inst_SOP2__S_MAX_I32::~Inst_SOP2__S_MAX_I32
~Inst_SOP2__S_MAX_I32()
Definition: instructions.cc:305
Gcn3ISA::Inst_VOP3__V_ADD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24564
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY()
Definition: instructions.cc:37285
Gcn3ISA::Inst_VOP3__V_BFE_U32::~Inst_VOP3__V_BFE_U32
~Inst_VOP3__V_BFE_U32()
Definition: instructions.cc:27890
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15324
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U32::~Inst_DS__DS_RSUB_SRC2_U32
~Inst_DS__DS_RSUB_SRC2_U32()
Definition: instructions.cc:33730
Gcn3ISA::Inst_VOPC__V_CMP_NE_I16::Inst_VOPC__V_CMP_NE_I16
Inst_VOPC__V_CMP_NE_I16(InFmt_VOPC *)
Definition: instructions.cc:12681
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::~Inst_MUBUF__BUFFER_ATOMIC_OR_X2
~Inst_MUBUF__BUFFER_ATOMIC_OR_X2()
Definition: instructions.cc:37030
Gcn3ISA::Inst_VOPC__V_CMP_F_U64::Inst_VOPC__V_CMP_F_U64
Inst_VOPC__V_CMP_F_U64(InFmt_VOPC *)
Definition: instructions.cc:14705
Gcn3ISA::Inst_DS__DS_INC_RTN_U64::Inst_DS__DS_INC_RTN_U64
Inst_DS__DS_INC_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33163
Gcn3ISA::Inst_DS__DS_MAX_I64::~Inst_DS__DS_MAX_I64
~Inst_DS__DS_MAX_I64()
Definition: instructions.cc:32761
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U64::~Inst_DS__DS_ADD_SRC2_U64
~Inst_DS__DS_ADD_SRC2_U64()
Definition: instructions.cc:34139
Gcn3ISA::Inst_VOPC__V_CMPX_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10322
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17624
Gcn3ISA::Inst_SOP1__S_WQM_B32::~Inst_SOP1__S_WQM_B32
~Inst_SOP1__S_WQM_B32()
Definition: instructions.cc:2037
Gcn3ISA::Inst_VOP1__V_RSQ_F16::Inst_VOP1__V_RSQ_F16
Inst_VOP1__V_RSQ_F16(InFmt_VOP1 *)
Definition: instructions.cc:9088
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::~Inst_DS__DS_READ2ST64_B64
~Inst_DS__DS_READ2ST64_B64()
Definition: instructions.cc:33612
Gcn3ISA::Inst_VOPC__V_CMPX_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13265
Gcn3ISA::Inst_VOP1__V_CLREXCP::~Inst_VOP1__V_CLREXCP
~Inst_VOP1__V_CLREXCP()
Definition: instructions.cc:8964
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE0::~Inst_VOP1__V_CVT_F32_UBYTE0
~Inst_VOP1__V_CVT_F32_UBYTE0()
Definition: instructions.cc:7808
Gcn3ISA::Inst_SOPP__S_NOP::~Inst_SOPP__S_NOP
~Inst_SOPP__S_NOP()
Definition: instructions.cc:3715
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18858
Gcn3ISA::Inst_SOP1__S_CBRANCH_JOIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3126
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36849
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY()
Definition: instructions.cc:34913
Gcn3ISA::Inst_VOP3__V_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20868
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F32::Inst_VOP3__V_DIV_SCALE_F32
Inst_VOP3__V_DIV_SCALE_F32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:29136
Gcn3ISA::Inst_VOP3__V_MIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24968
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39541
Gcn3ISA::Inst_DS__DS_ADD_U32::~Inst_DS__DS_ADD_U32
~Inst_DS__DS_ADD_U32()
Definition: instructions.cc:30973
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34799
Gcn3ISA::Inst_SOPP__S_TTRACEDATA::~Inst_SOPP__S_TTRACEDATA
~Inst_SOPP__S_TTRACEDATA()
Definition: instructions.cc:4296
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::~Inst_MUBUF__BUFFER_ATOMIC_INC_X2
~Inst_MUBUF__BUFFER_ATOMIC_INC_X2()
Definition: instructions.cc:37084
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5224
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39029
Gcn3ISA::Inst_VOP3__V_CMP_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20826
Gcn3ISA::Inst_SOPC__S_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3313
Gcn3ISA::Inst_VOPC__V_CMP_LE_U32::~Inst_VOPC__V_CMP_LE_U32
~Inst_VOPC__V_CMP_LE_U32()
Definition: instructions.cc:13831
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41107
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34958
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5273
Gcn3ISA::Inst_VOP3__V_FLOOR_F32::~Inst_VOP3__V_FLOOR_F32
~Inst_VOP3__V_FLOOR_F32()
Definition: instructions.cc:26306
Gcn3ISA::Inst_DS__DS_READ_B64::~Inst_DS__DS_READ_B64
~Inst_DS__DS_READ_B64()
Definition: instructions.cc:33486
Gcn3ISA::Inst_VOP1__V_CVT_FLR_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7706
Gcn3ISA::Inst_DS__DS_GWS_BARRIER::~Inst_DS__DS_GWS_BARRIER
~Inst_DS__DS_GWS_BARRIER()
Definition: instructions.cc:34079
Gcn3ISA::Inst_VOP2__V_MUL_LO_U16::Inst_VOP2__V_MUL_LO_U16
Inst_VOP2__V_MUL_LO_U16(InFmt_VOP2 *)
Definition: instructions.cc:6967
Gcn3ISA::Inst_DS__DS_MAX_RTN_I32::~Inst_DS__DS_MAX_RTN_I32
~Inst_DS__DS_MAX_RTN_I32()
Definition: instructions.cc:31742
Gcn3ISA::Inst_VOP3__V_CMP_LE_F16::~Inst_VOP3__V_CMP_LE_F16
~Inst_VOP3__V_CMP_LE_F16()
Definition: instructions.cc:16078
Gcn3ISA::Inst_VOP3__V_MAD_F32::Inst_VOP3__V_MAD_F32
Inst_VOP3__V_MAD_F32(InFmt_VOP3 *)
Definition: instructions.cc:27667
Gcn3ISA::Inst_DS__DS_SUB_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33139
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37322
Gcn3ISA::Inst_VOP3__V_CVT_F32_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25369
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10431
Gcn3ISA::Inst_VOPC__V_CMP_GT_F16::Inst_VOPC__V_CMP_GT_F16
Inst_VOPC__V_CMP_GT_F16(InFmt_VOPC *)
Definition: instructions.cc:9966
Gcn3ISA::Inst_VOP2__V_MUL_HI_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5726
Gcn3ISA::Inst_SOP2__S_SUB_U32::Inst_SOP2__S_SUB_U32
Inst_SOP2__S_SUB_U32(InFmt_SOP2 *)
Definition: instructions.cc:80
Gcn3ISA::Inst_VOP1__V_RCP_F64::~Inst_VOP1__V_RCP_F64
~Inst_VOP1__V_RCP_F64()
Definition: instructions.cc:8425
ComputeUnit::shader
Shader * shader
Definition: compute_unit.hh:356
Gcn3ISA::Inst_VOP3__V_CMP_GT_U64::Inst_VOP3__V_CMP_GT_U64
Inst_VOP3__V_CMP_GT_U64(InFmt_VOP3 *)
Definition: instructions.cc:22311
WFBarrier::InvalidID
static const int InvalidID
Definition: compute_unit.hh:94
Gcn3ISA::InFmt_VOP_SDWA::SRC0_NEG
unsigned int SRC0_NEG
Definition: gpu_decoder.hh:1603
Gcn3ISA::Inst_SOP2__S_SUBB_U32::Inst_SOP2__S_SUBB_U32
Inst_SOP2__S_SUBB_U32(InFmt_SOP2 *)
Definition: instructions.cc:208
Gcn3ISA::Inst_MTBUF
Definition: op_encodings.hh:722
Gcn3ISA::InFmt_SOP1::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1494
ULL
#define ULL(N)
uint64_t constant
Definition: types.hh:50
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::Inst_MIMG__IMAGE_SAMPLE_LZ_O
Inst_MIMG__IMAGE_SAMPLE_LZ_O(InFmt_MIMG *)
Definition: instructions.cc:38668
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F32::~Inst_VOPC__V_CMP_TRU_F32
~Inst_VOPC__V_CMP_TRU_F32()
Definition: instructions.cc:10958
Gcn3ISA::Inst_SMEM__S_DCACHE_WB_VOL::Inst_SMEM__S_DCACHE_WB_VOL
Inst_SMEM__S_DCACHE_WB_VOL(InFmt_SMEM *)
Definition: instructions.cc:5336
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F16::Inst_VOPC__V_CMPX_TRU_F16
Inst_VOPC__V_CMPX_TRU_F16(InFmt_VOPC *)
Definition: instructions.cc:10454
Gcn3ISA::Inst_VOP2__V_MADAK_F32::Inst_VOP2__V_MADAK_F32
Inst_VOP2__V_MADAK_F32(InFmt_VOP2 *)
Definition: instructions.cc:6415
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36876
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::Inst_MUBUF__BUFFER_ATOMIC_SUB
Inst_MUBUF__BUFFER_ATOMIC_SUB(InFmt_MUBUF *)
Definition: instructions.cc:36501
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11832
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::~Inst_FLAT__FLAT_ATOMIC_UMAX_X2
~Inst_FLAT__FLAT_ATOMIC_UMAX_X2()
Definition: instructions.cc:41557
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::Inst_MUBUF__BUFFER_LOAD_USHORT
Inst_MUBUF__BUFFER_LOAD_USHORT(InFmt_MUBUF *)
Definition: instructions.cc:35134
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F32::~Inst_VOPC__V_CMPX_NLE_F32
~Inst_VOPC__V_CMPX_NLE_F32()
Definition: instructions.cc:11382
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::~Inst_MIMG__IMAGE_SAMPLE_B_CL
~Inst_MIMG__IMAGE_SAMPLE_B_CL()
Definition: instructions.cc:38395
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10213
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F16::Inst_VOP3__V_CMP_NLE_F16
Inst_VOP3__V_CMP_NLE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16239
Gcn3ISA::Inst_SOP2__S_OR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:518
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F16::Inst_VOPC__V_CMPX_GE_F16
Inst_VOPC__V_CMPX_GE_F16(InFmt_VOPC *)
Definition: instructions.cc:10290
Gcn3ISA::Inst_VOP1__V_MOV_B32::Inst_VOP1__V_MOV_B32
Inst_VOP1__V_MOV_B32(InFmt_VOP1 *)
Definition: instructions.cc:7288
Gcn3ISA::Inst_DS__DS_XOR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33321
Gcn3ISA::Inst_VOP3__V_LDEXP_F32::~Inst_VOP3__V_LDEXP_F32
~Inst_VOP3__V_LDEXP_F32()
Definition: instructions.cc:30443
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33739
Gcn3ISA::Inst_VOP3__V_MAD_F16::Inst_VOP3__V_MAD_F16
Inst_VOP3__V_MAD_F16(InFmt_VOP3 *)
Definition: instructions.cc:29574
Gcn3ISA::Inst_VOP3__V_CMP_LT_F64::~Inst_VOP3__V_CMP_LT_F64
~Inst_VOP3__V_CMP_LT_F64()
Definition: instructions.cc:17742
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4893
Gcn3ISA::Inst_VOP3__V_MED3_F32::~Inst_VOP3__V_MED3_F32
~Inst_VOP3__V_MED3_F32()
Definition: instructions.cc:28586
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F16::~Inst_VOP3__V_CMP_NLG_F16
~Inst_VOP3__V_CMP_NLG_F16()
Definition: instructions.cc:16209
Gcn3ISA::Inst_DS__DS_WRITE_B16::~Inst_DS__DS_WRITE_B16
~Inst_DS__DS_WRITE_B16()
Definition: instructions.cc:31576
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34400
Gcn3ISA::Inst_MIMG::instData
InFmt_MIMG instData
Definition: op_encodings.hh:750
Gcn3ISA::Inst_VOP3__V_CVT_PKNORM_I16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30892
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10900
Gcn3ISA::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:37538
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38351
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33816
Gcn3ISA::Inst_VOP3__V_CMP_F_I32::Inst_VOP3__V_CMP_F_I32
Inst_VOP3__V_CMP_F_I32(InFmt_VOP3 *)
Definition: instructions.cc:20618
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC1::~Inst_SOPP__S_CBRANCH_SCC1
~Inst_SOPP__S_CBRANCH_SCC1()
Definition: instructions.cc:3940
Gcn3ISA::Inst_VOP1__V_CVT_U32_F32::~Inst_VOP1__V_CVT_U32_F32
~Inst_VOP1__V_CVT_U32_F32()
Definition: instructions.cc:7524
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U32::~Inst_VOP3__V_CMPX_EQ_U32
~Inst_VOP3__V_CMPX_EQ_U32()
Definition: instructions.cc:21619
Gcn3ISA::Inst_SOP1__S_BITSET1_B64::~Inst_SOP1__S_BITSET1_B64
~Inst_SOP1__S_BITSET1_B64()
Definition: instructions.cc:2585
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I16::Inst_VOPC__V_CMPX_NE_I16
Inst_VOPC__V_CMPX_NE_I16(InFmt_VOPC *)
Definition: instructions.cc:13162
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F32::Inst_VOPC__V_CMPX_NEQ_F32
Inst_VOPC__V_CMPX_NEQ_F32(InFmt_VOPC *)
Definition: instructions.cc:11408
Gcn3ISA::Inst_DS__DS_PERMUTE_B32::Inst_DS__DS_PERMUTE_B32
Inst_DS__DS_PERMUTE_B32(InFmt_DS *)
Definition: instructions.cc:32503
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32197
Gcn3ISA::Inst_VOP3__V_ALIGNBYTE_B32::~Inst_VOP3__V_ALIGNBYTE_B32
~Inst_VOP3__V_ALIGNBYTE_B32()
Definition: instructions.cc:28244
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW()
Definition: instructions.cc:34847
Gcn3ISA::Inst_VOP3__V_MED3_U32::~Inst_VOP3__V_MED3_U32
~Inst_VOP3__V_MED3_U32()
Definition: instructions.cc:28686
ArmISA::mask
Bitfield< 28, 24 > mask
Definition: miscregs_types.hh:711
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U32::~Inst_VOP3__V_CMP_EQ_U32
~Inst_VOP3__V_CMP_EQ_U32()
Definition: instructions.cc:20998
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::~Inst_MUBUF__BUFFER_ATOMIC_ADD
~Inst_MUBUF__BUFFER_ATOMIC_ADD()
Definition: instructions.cc:36487
Gcn3ISA::Inst_VOP3::instData
InFmt_VOP3 instData
Definition: op_encodings.hh:370
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U64::~Inst_VOPC__V_CMP_EQ_U64
~Inst_VOPC__V_CMP_EQ_U64()
Definition: instructions.cc:14768
Gcn3ISA::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:416
Gcn3ISA::Inst_DS__DS_MAX_F64::Inst_DS__DS_MAX_F64
Inst_DS__DS_MAX_F64(InFmt_DS *)
Definition: instructions.cc:33088
Gcn3ISA::Inst_DS__DS_CMPST_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31408
Gcn3ISA::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:7723
Gcn3ISA::Inst_DS__DS_MIN_RTN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31732
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I64::~Inst_VOP3__V_CMPX_LT_I64
~Inst_VOP3__V_CMPX_LT_I64()
Definition: instructions.cc:22498
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37206
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F32::~Inst_VOPC__V_CMPX_TRU_F32
~Inst_VOPC__V_CMPX_TRU_F32()
Definition: instructions.cc:11480
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34640
Gcn3ISA::Inst_DS__DS_WRITE2_B32::Inst_DS__DS_WRITE2_B32
Inst_DS__DS_WRITE2_B32(InFmt_DS *)
Definition: instructions.cc:31263
Gcn3ISA::Inst_VOPC__V_CMP_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9961
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40235
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F16::~Inst_VOP3__V_CMP_NGT_F16
~Inst_VOP3__V_CMP_NGT_F16()
Definition: instructions.cc:16228
Gcn3ISA::Inst_SOPC__S_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3339
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F64::Inst_VOP3__V_CMP_CLASS_F64
Inst_VOP3__V_CMP_CLASS_F64(InFmt_VOP3 *)
Definition: instructions.cc:15721
Gcn3ISA::Inst_VOP1__V_RCP_F32::~Inst_VOP1__V_RCP_F32
~Inst_VOP1__V_RCP_F32()
Definition: instructions.cc:8335
Gcn3ISA::Inst_VOP3__V_MAC_F32::Inst_VOP3__V_MAC_F32
Inst_VOP3__V_MAC_F32(InFmt_VOP3 *)
Definition: instructions.cc:24202
Gcn3ISA::Inst_SOPK__S_SETREG_B32::~Inst_SOPK__S_SETREG_B32
~Inst_SOPK__S_SETREG_B32()
Definition: instructions.cc:1806
Gcn3ISA::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:38718
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40955
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F64::Inst_VOP3__V_CMPX_NLG_F64
Inst_VOP3__V_CMPX_NLG_F64(InFmt_VOP3 *)
Definition: instructions.cc:19072
Gcn3ISA::Inst_SOPP__S_SETKILL::~Inst_SOPP__S_SETKILL
~Inst_SOPP__S_SETKILL()
Definition: instructions.cc:4113
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_INC::~Inst_MIMG__IMAGE_ATOMIC_INC
~Inst_MIMG__IMAGE_ATOMIC_INC()
Definition: instructions.cc:38252
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B64::~Inst_DS__DS_XOR_SRC2_B64
~Inst_DS__DS_XOR_SRC2_B64()
Definition: instructions.cc:34349
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR::Inst_FLAT__FLAT_ATOMIC_XOR
Inst_FLAT__FLAT_ATOMIC_XOR(InFmt_FLAT *)
Definition: instructions.cc:40910
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B32::~Inst_SOP1__S_FLBIT_I32_B32
~Inst_SOP1__S_FLBIT_I32_B32()
Definition: instructions.cc:2357
Gcn3ISA::Inst_DS__DS_ADD_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33993
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE1::~Inst_VOP3__V_CVT_F32_UBYTE1
~Inst_VOP3__V_CVT_F32_UBYTE1()
Definition: instructions.cc:25795
Gcn3ISA::Inst_VOP3__V_CMPX_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16481
Gcn3ISA::Inst_SOPK__S_MULK_I32::Inst_SOPK__S_MULK_I32
Inst_SOPK__S_MULK_I32(InFmt_SOPK *)
Definition: instructions.cc:1738
Wavefront::outstandingReqsWrGm
int outstandingReqsWrGm
Definition: wavefront.hh:165
Gcn3ISA::Inst_DS__DS_SUB_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32677
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F64::Inst_VOP3__V_CMP_EQ_F64
Inst_VOP3__V_CMP_EQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:17789
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
Inst_MUBUF__BUFFER_ATOMIC_ADD_X2(InFmt_MUBUF *)
Definition: instructions.cc:36828
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21754
Gcn3ISA::Inst_SOPC__S_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3495
Gcn3ISA::Inst_SOP1__S_MOVRELS_B64::Inst_SOP1__S_MOVRELS_B64
Inst_SOP1__S_MOVRELS_B64(InFmt_SOP1 *)
Definition: instructions.cc:3034
Gcn3ISA::Inst_VOPC__V_CMP_GT_I16::Inst_VOPC__V_CMP_GT_I16
Inst_VOPC__V_CMP_GT_I16(InFmt_VOPC *)
Definition: instructions.cc:12650
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C::~Inst_MIMG__IMAGE_GATHER4_C
~Inst_MIMG__IMAGE_GATHER4_C()
Definition: instructions.cc:38923
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::~Inst_SMEM__S_BUFFER_LOAD_DWORDX16
~Inst_SMEM__S_BUFFER_LOAD_DWORDX16()
Definition: instructions.cc:4967
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::~Inst_MIMG__IMAGE_ATOMIC_UMIN
~Inst_MIMG__IMAGE_ATOMIC_UMIN()
Definition: instructions.cc:38094
Gcn3ISA::Inst_VOP3__V_CVT_F64_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25717
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F32::Inst_VOPC__V_CMPX_NLT_F32
Inst_VOPC__V_CMPX_NLT_F32(InFmt_VOPC *)
Definition: instructions.cc:11440
Wavefront::wfDynId
uint64_t wfDynId
Definition: wavefront.hh:218
Gcn3ISA::Inst_MIMG
Definition: op_encodings.hh:740
Gcn3ISA::Inst_VOPC__V_CMP_GE_I16::~Inst_VOPC__V_CMP_GE_I16
~Inst_VOPC__V_CMP_GE_I16()
Definition: instructions.cc:12718
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F32::~Inst_VOPC__V_CMPX_CLASS_F32
~Inst_VOPC__V_CMPX_CLASS_F32()
Definition: instructions.cc:9500
Gcn3ISA::Inst_SOP2__S_CSELECT_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:399
Gcn3ISA::VecOperand::write
void write() override
write to the vrf.
Definition: operand.hh:199
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F32::~Inst_VOPC__V_CMPX_EQ_F32
~Inst_VOPC__V_CMPX_EQ_F32()
Definition: instructions.cc:11046
Gcn3ISA::Inst_VOP3__V_CMP_F_U32::Inst_VOP3__V_CMP_F_U32
Inst_VOP3__V_CMP_F_U32(InFmt_VOP3 *)
Definition: instructions.cc:20923
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F64::~Inst_VOPC__V_CMP_NLG_F64
~Inst_VOPC__V_CMP_NLG_F64()
Definition: instructions.cc:11826
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::Inst_SMEM__S_BUFFER_LOAD_DWORDX4
Inst_SMEM__S_BUFFER_LOAD_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:4841
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY()
Definition: instructions.cc:37164
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37267
Gcn3ISA::Inst_VOPC__V_CMP_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9997
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::Inst_MIMG__IMAGE_LOAD_MIP_PCK
Inst_MIMG__IMAGE_LOAD_MIP_PCK(InFmt_MIMG *)
Definition: instructions.cc:37752
Gcn3ISA::Inst_VOP2__V_ASHRREV_I16::Inst_VOP2__V_ASHRREV_I16
Inst_VOP2__V_ASHRREV_I16(InFmt_VOP2 *)
Definition: instructions.cc:7061
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::Inst_MIMG__IMAGE_LOAD_MIP
Inst_MIMG__IMAGE_LOAD_MIP(InFmt_MIMG *)
Definition: instructions.cc:37666
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F16::~Inst_VOP3__V_CMPX_GE_F16
~Inst_VOP3__V_CMPX_GE_F16()
Definition: instructions.cc:16455
Gcn3ISA::Inst_MUBUF
Definition: op_encodings.hh:512
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2469
Gcn3ISA::Inst_VOP1__V_CVT_F32_I32::~Inst_VOP1__V_CVT_F32_I32
~Inst_VOP1__V_CVT_F32_I32()
Definition: instructions.cc:7464
Gcn3ISA::Inst_DS__DS_SWIZZLE_B32::Inst_DS__DS_SWIZZLE_B32
Inst_DS__DS_SWIZZLE_B32(InFmt_DS *)
Definition: instructions.cc:32386
Gcn3ISA::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:37782
Gcn3ISA::Inst_VOP3__V_CMP_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19547
Gcn3ISA::Inst_SOP2__S_XOR_B64::~Inst_SOP2__S_XOR_B64
~Inst_SOP2__S_XOR_B64()
Definition: instructions.cc:571
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38182
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F16::~Inst_VOPC__V_CMPX_EQ_F16
~Inst_VOPC__V_CMPX_EQ_F16()
Definition: instructions.cc:10225
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL::~Inst_MIMG__IMAGE_SAMPLE_CL
~Inst_MIMG__IMAGE_SAMPLE_CL()
Definition: instructions.cc:38313
Gcn3ISA::Inst_VOP3__V_MUL_F32::~Inst_VOP3__V_MUL_F32
~Inst_VOP3__V_MUL_F32()
Definition: instructions.cc:23415
Gcn3ISA::Inst_DS__DS_MAX_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33103
Gcn3ISA::Inst_VOP3__V_CMP_LT_I32::Inst_VOP3__V_CMP_LT_I32
Inst_VOP3__V_CMP_LT_I32(InFmt_VOP3 *)
Definition: instructions.cc:20645
Gcn3ISA::InFmt_FLAT_1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1404
Gcn3ISA::Inst_VOP3__V_CVT_PK_I16_I32::Inst_VOP3__V_CVT_PK_I16_I32
Inst_VOP3__V_CVT_PK_I16_I32(InFmt_VOP3 *)
Definition: instructions.cc:30951
Gcn3ISA::Inst_VOPC__V_CMP_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13661
Gcn3ISA::InFmt_MIMG::GLC
unsigned int GLC
Definition: gpu_decoder.hh:1415
Gcn3ISA::Inst_VOPC__V_CMPX_F_F32::~Inst_VOPC__V_CMPX_F_F32
~Inst_VOPC__V_CMPX_F_F32()
Definition: instructions.cc:10985
Gcn3ISA::Inst_VOP3__V_CMP_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22449
Gcn3ISA::Inst_SOPP__S_TTRACEDATA::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4301
Gcn3ISA::InFmt_VOP3_SDST_ENC::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1568
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F16::Inst_VOP3__V_CMP_EQ_F16
Inst_VOP3__V_CMP_EQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:16051
Gcn3ISA::Inst_VOP2__V_AND_B32::Inst_VOP2__V_AND_B32
Inst_VOP2__V_AND_B32(InFmt_VOP2 *)
Definition: instructions.cc:6182
Gcn3ISA::Inst_SOP2__S_ASHR_I32::Inst_SOP2__S_ASHR_I32
Inst_SOP2__S_ASHR_I32(InFmt_SOP2 *)
Definition: instructions.cc:1017
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14014
Gcn3ISA::Inst_VOPC__V_CMP_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12962
Gcn3ISA::Inst_VOP3__V_CMP_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20935
Gcn3ISA::Inst_VOP1__V_COS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8610
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U32::Inst_SOPC__S_CMP_EQ_U32
Inst_SOPC__S_CMP_EQ_U32(InFmt_SOPC *)
Definition: instructions.cc:3353
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I64::Inst_VOPC__V_CMPX_EQ_I64
Inst_VOPC__V_CMPX_EQ_I64(InFmt_VOPC *)
Definition: instructions.cc:15002
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D::Inst_MIMG__IMAGE_SAMPLE_D
Inst_MIMG__IMAGE_SAMPLE_D(InFmt_MIMG *)
Definition: instructions.cc:38323
Gcn3ISA::Inst_DS
Definition: op_encodings.hh:412
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38286
Gcn3ISA::Inst_DS__DS_WRITE_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31259
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L::Inst_MIMG__IMAGE_SAMPLE_C_L
Inst_MIMG__IMAGE_SAMPLE_C_L(InFmt_MIMG *)
Definition: instructions.cc:38487
Gcn3ISA::Inst_DS__DS_MAX_F32::Inst_DS__DS_MAX_F32
Inst_DS__DS_MAX_F32(InFmt_DS *)
Definition: instructions.cc:31454
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21311
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE3::Inst_VOP1__V_CVT_F32_UBYTE3
Inst_VOP1__V_CVT_F32_UBYTE3(InFmt_VOP1 *)
Definition: instructions.cc:7891
Gcn3ISA::Inst_VOP2__V_ADD_U16::Inst_VOP2__V_ADD_U16
Inst_VOP2__V_ADD_U16(InFmt_VOP2 *)
Definition: instructions.cc:6874
Gcn3ISA::Inst_SOPP__S_SETKILL::Inst_SOPP__S_SETKILL
Inst_SOPP__S_SETKILL(InFmt_SOPP *)
Definition: instructions.cc:4108
Gcn3ISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2773
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25801
Gcn3ISA::Inst_VOPC__V_CMP_LG_F32::~Inst_VOPC__V_CMP_LG_F32
~Inst_VOPC__V_CMP_LG_F32()
Definition: instructions.cc:10634
Gcn3ISA::Inst_VOP3__V_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20962
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19463
Gcn3ISA::Inst_VOPC__V_CMP_GT_U16::Inst_VOPC__V_CMP_GT_U16
Inst_VOPC__V_CMP_GT_U16(InFmt_VOPC *)
Definition: instructions.cc:12888
Gcn3ISA::Inst_SOP1__S_MOV_B32::~Inst_SOP1__S_MOV_B32
~Inst_SOP1__S_MOV_B32()
Definition: instructions.cc:1872
Gcn3ISA::Inst_VOP3__V_CMP_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16789
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32_I24::Inst_VOP3__V_MUL_HI_I32_I24
Inst_VOP3__V_MUL_HI_I32_I24(InFmt_VOP3 *)
Definition: instructions.cc:23549
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U32::~Inst_VOPC__V_CMPX_LT_U32
~Inst_VOPC__V_CMPX_LT_U32()
Definition: instructions.cc:14254
ArmISA::offset
Bitfield< 23, 0 > offset
Definition: types.hh:153
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B32::Inst_DS__DS_WRXCHG2_RTN_B32
Inst_DS__DS_WRXCHG2_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31882
Gcn3ISA::Inst_VOPC__V_CMP_GE_F32::Inst_VOPC__V_CMP_GE_F32
Inst_VOPC__V_CMP_GE_F32(InFmt_VOPC *)
Definition: instructions.cc:10660
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F32::~Inst_VOP3__V_FREXP_MANT_F32
~Inst_VOP3__V_FREXP_MANT_F32()
Definition: instructions.cc:27138
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F64::Inst_VOPC__V_CMPX_EQ_F64
Inst_VOPC__V_CMPX_EQ_F64(InFmt_VOPC *)
Definition: instructions.cc:12068
Gcn3ISA::Inst_VOP3__V_FFBH_I32::Inst_VOP3__V_FFBH_I32
Inst_VOP3__V_FFBH_I32(InFmt_VOP3 *)
Definition: instructions.cc:26925
Gcn3ISA::Inst_VOPC__V_CMPX_T_I32::Inst_VOPC__V_CMPX_T_I32
Inst_VOPC__V_CMPX_T_I32(InFmt_VOPC *)
Definition: instructions.cc:14194
bits
T bits(T val, int first, int last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
Definition: bitfield.hh:75
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL_O::~Inst_MIMG__IMAGE_SAMPLE_D_CL_O
~Inst_MIMG__IMAGE_SAMPLE_D_CL_O()
Definition: instructions.cc:38609
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34931
Gcn3ISA::Inst_VOP3__V_FRACT_F32::~Inst_VOP3__V_FRACT_F32
~Inst_VOP3__V_FRACT_F32()
Definition: instructions.cc:26153
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U16::Inst_VOPC__V_CMPX_LE_U16
Inst_VOPC__V_CMPX_LE_U16(InFmt_VOPC *)
Definition: instructions.cc:13344
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B64::~Inst_DS__DS_CMPST_RTN_B64
~Inst_DS__DS_CMPST_RTN_B64()
Definition: instructions.cc:33402
Gcn3ISA::Inst_DS__DS_ADD_SRC2_F32::~Inst_DS__DS_ADD_SRC2_F32
~Inst_DS__DS_ADD_SRC2_F32()
Definition: instructions.cc:33984
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F16::Inst_VOP3__V_CMPX_EQ_F16
Inst_VOP3__V_CMPX_EQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:16371
Gcn3ISA::Inst_VOPC__V_CMP_GE_F64::~Inst_VOPC__V_CMP_GE_F64
~Inst_VOPC__V_CMP_GE_F64()
Definition: instructions.cc:11696
Gcn3ISA::Inst_SOPP__S_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3721
Gcn3ISA::Inst_VOPC__V_CMP_GT_U16::~Inst_VOPC__V_CMP_GT_U16
~Inst_VOPC__V_CMP_GT_U16()
Definition: instructions.cc:12894
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36711
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR::Inst_FLAT__FLAT_ATOMIC_OR
Inst_FLAT__FLAT_ATOMIC_OR(InFmt_FLAT *)
Definition: instructions.cc:40885
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39748
Gcn3ISA::Inst_VOP3__V_SQRT_F64::~Inst_VOP3__V_SQRT_F64
~Inst_VOP3__V_SQRT_F64()
Definition: instructions.cc:26678
Gcn3ISA::Inst_VOP3__V_CMP_O_F64::~Inst_VOP3__V_CMP_O_F64
~Inst_VOP3__V_CMP_O_F64()
Definition: instructions.cc:18072
Gcn3ISA::Inst_SOPK__S_CMPK_GT_I32::~Inst_SOPK__S_CMPK_GT_I32
~Inst_SOPK__S_CMPK_GT_I32()
Definition: instructions.cc:1464

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